packages feed

cmark-gfm 0.1.4 → 0.1.5

raw patch · 63 files changed

+13203/−20092 lines, 63 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

Files

CMarkGFM.hsc view
@@ -49,16 +49,16 @@ import Data.Text.Encoding (encodeUtf8) import Control.Applicative ((<$>), (<*>)) -#include <cmark.h>-#include <core-extensions.h>+#include <cmark-gfm.h>+#include <cmark-gfm-core-extensions.h>  -- | Ensure core extensions are registered. ensurePluginsRegistered :: IO ()-ensurePluginsRegistered = c_core_extensions_ensure_registered+ensurePluginsRegistered = c_cmark_gfm_core_extensions_ensure_registered  -- | Frees a cmark linked list, produced by extsToLlist. freeLlist :: LlistPtr a -> IO ()-freeLlist = c_cmark_llist_free c_CMARK_DEFAULT_MEM_ALLOCATOR+freeLlist = c_cmark_llist_free c_cmark_mem  -- | Converts a list of resolved extension pointers to a single cmark -- linked list, which can be passed to functions requiring a list of@@ -67,7 +67,7 @@ extsToLlist [] = return nullPtr extsToLlist (h:t) = do   t' <- extsToLlist t-  c_cmark_llist_append c_CMARK_DEFAULT_MEM_ALLOCATOR t' (castPtr h)+  c_cmark_llist_append c_cmark_mem t' (castPtr h)  -- | Resolves CMarkExtensions to pointers. resolveExts :: [CMarkExtension] -> IO [ExtensionPtr]@@ -377,8 +377,8 @@         title     = c_cmark_node_get_title ptr >>= totext         info      = c_cmark_node_get_fence_info ptr >>= totext         alignments = do-          ncols <- c_cmarkextensions_get_table_columns ptr-          cols <- c_cmarkextensions_get_table_alignments ptr+          ncols <- c_cmark_gfm_extensions_get_table_columns ptr+          cols <- c_cmark_gfm_extensions_get_table_alignments ptr           mapM (fmap ucharToAlignment . peekElemOff cols) [0..(fromIntegral ncols) - 1]         ucharToAlignment (CUChar 108) = LeftAligned         ucharToAlignment (CUChar 99)  = CenterAligned@@ -498,145 +498,145 @@ foreign import ccall "string.h strlen"     c_strlen :: CString -> Int -foreign import ccall "cmark.h cmark_node_new"+foreign import ccall "cmark-gfm.h cmark_node_new"     c_cmark_node_new :: Int -> IO NodePtr -foreign import ccall "cmark.h cmark_render_html"+foreign import ccall "cmark-gfm.h cmark_render_html"     c_cmark_render_html :: NodePtr -> CInt -> LlistPtr ExtensionPtr -> IO CString -foreign import ccall "cmark.h cmark_render_xml"+foreign import ccall "cmark-gfm.h cmark_render_xml"     c_cmark_render_xml :: NodePtr -> CInt -> IO CString -foreign import ccall "cmark.h cmark_render_man"+foreign import ccall "cmark-gfm.h cmark_render_man"     c_cmark_render_man :: NodePtr -> CInt -> Int -> IO CString -foreign import ccall "cmark.h cmark_render_latex"+foreign import ccall "cmark-gfm.h cmark_render_latex"     c_cmark_render_latex :: NodePtr -> CInt -> Int -> IO CString -foreign import ccall "cmark.h cmark_render_commonmark"+foreign import ccall "cmark-gfm.h cmark_render_commonmark"     c_cmark_render_commonmark :: NodePtr -> CInt -> Int -> IO CString -foreign import ccall "cmark.h cmark_parser_new"+foreign import ccall "cmark-gfm.h cmark_parser_new"     c_cmark_parser_new :: CInt -> IO ParserPtr -foreign import ccall "cmark.h cmark_parser_feed"+foreign import ccall "cmark-gfm.h cmark_parser_feed"     c_cmark_parser_feed :: ParserPtr -> CString -> Int -> IO () -foreign import ccall "cmark.h cmark_parser_finish"+foreign import ccall "cmark-gfm.h cmark_parser_finish"     c_cmark_parser_finish :: ParserPtr -> IO NodePtr -foreign import ccall "cmark.h cmark_parser_free"+foreign import ccall "cmark-gfm.h cmark_parser_free"     c_cmark_parser_free :: ParserPtr -> IO () -foreign import ccall "cmark.h cmark_node_get_type"+foreign import ccall "cmark-gfm.h cmark_node_get_type"     c_cmark_node_get_type :: NodePtr -> IO Int -foreign import ccall "cmark.h cmark_node_first_child"+foreign import ccall "cmark-gfm.h cmark_node_first_child"     c_cmark_node_first_child :: NodePtr -> IO NodePtr -foreign import ccall "cmark.h cmark_node_next"+foreign import ccall "cmark-gfm.h cmark_node_next"     c_cmark_node_next :: NodePtr -> IO NodePtr -foreign import ccall "cmark.h cmark_node_get_literal"+foreign import ccall "cmark-gfm.h cmark_node_get_literal"     c_cmark_node_get_literal :: NodePtr -> IO CString -foreign import ccall "cmark.h cmark_node_get_url"+foreign import ccall "cmark-gfm.h cmark_node_get_url"     c_cmark_node_get_url :: NodePtr -> IO CString -foreign import ccall "cmark.h cmark_node_get_title"+foreign import ccall "cmark-gfm.h cmark_node_get_title"     c_cmark_node_get_title :: NodePtr -> IO CString -foreign import ccall "cmark.h cmark_node_get_heading_level"+foreign import ccall "cmark-gfm.h cmark_node_get_heading_level"     c_cmark_node_get_heading_level :: NodePtr -> IO Int -foreign import ccall "cmark.h cmark_node_get_list_type"+foreign import ccall "cmark-gfm.h cmark_node_get_list_type"     c_cmark_node_get_list_type :: NodePtr -> IO Int -foreign import ccall "cmark.h cmark_node_get_list_tight"+foreign import ccall "cmark-gfm.h cmark_node_get_list_tight"     c_cmark_node_get_list_tight :: NodePtr -> IO Bool -foreign import ccall "cmark.h cmark_node_get_list_start"+foreign import ccall "cmark-gfm.h cmark_node_get_list_start"     c_cmark_node_get_list_start :: NodePtr -> IO Int -foreign import ccall "cmark.h cmark_node_get_list_delim"+foreign import ccall "cmark-gfm.h cmark_node_get_list_delim"     c_cmark_node_get_list_delim :: NodePtr -> IO Int -foreign import ccall "cmark.h cmark_node_get_fence_info"+foreign import ccall "cmark-gfm.h cmark_node_get_fence_info"     c_cmark_node_get_fence_info :: NodePtr -> IO CString -foreign import ccall "cmark.h cmark_node_get_start_line"+foreign import ccall "cmark-gfm.h cmark_node_get_start_line"     c_cmark_node_get_start_line :: NodePtr -> IO Int -foreign import ccall "cmark.h cmark_node_get_start_column"+foreign import ccall "cmark-gfm.h cmark_node_get_start_column"     c_cmark_node_get_start_column :: NodePtr -> IO Int -foreign import ccall "cmark.h cmark_node_get_end_line"+foreign import ccall "cmark-gfm.h cmark_node_get_end_line"     c_cmark_node_get_end_line :: NodePtr -> IO Int -foreign import ccall "cmark.h cmark_node_get_end_column"+foreign import ccall "cmark-gfm.h cmark_node_get_end_column"     c_cmark_node_get_end_column :: NodePtr -> IO Int -foreign import ccall "cmark.h cmark_node_get_on_enter"+foreign import ccall "cmark-gfm.h cmark_node_get_on_enter"     c_cmark_node_get_on_enter :: NodePtr -> IO CString -foreign import ccall "cmark.h cmark_node_get_on_exit"+foreign import ccall "cmark-gfm.h cmark_node_get_on_exit"     c_cmark_node_get_on_exit :: NodePtr -> IO CString -foreign import ccall "cmark.h cmark_node_append_child"+foreign import ccall "cmark-gfm.h cmark_node_append_child"     c_cmark_node_append_child :: NodePtr -> NodePtr -> IO Int -foreign import ccall "cmark.h cmark_node_set_literal"+foreign import ccall "cmark-gfm.h cmark_node_set_literal"     c_cmark_node_set_literal :: NodePtr -> CString -> IO Int -foreign import ccall "cmark.h cmark_node_set_url"+foreign import ccall "cmark-gfm.h cmark_node_set_url"     c_cmark_node_set_url :: NodePtr -> CString -> IO Int -foreign import ccall "cmark.h cmark_node_set_title"+foreign import ccall "cmark-gfm.h cmark_node_set_title"     c_cmark_node_set_title :: NodePtr -> CString -> IO Int -foreign import ccall "cmark.h cmark_node_set_heading_level"+foreign import ccall "cmark-gfm.h cmark_node_set_heading_level"     c_cmark_node_set_heading_level :: NodePtr -> Int -> IO Int -foreign import ccall "cmark.h cmark_node_set_list_type"+foreign import ccall "cmark-gfm.h cmark_node_set_list_type"     c_cmark_node_set_list_type :: NodePtr -> Int -> IO Int -foreign import ccall "cmark.h cmark_node_set_list_tight"+foreign import ccall "cmark-gfm.h cmark_node_set_list_tight"     c_cmark_node_set_list_tight :: NodePtr -> Bool -> IO Int -foreign import ccall "cmark.h cmark_node_set_list_start"+foreign import ccall "cmark-gfm.h cmark_node_set_list_start"     c_cmark_node_set_list_start :: NodePtr -> Int -> IO Int -foreign import ccall "cmark.h cmark_node_set_list_delim"+foreign import ccall "cmark-gfm.h cmark_node_set_list_delim"     c_cmark_node_set_list_delim :: NodePtr -> Int -> IO Int -foreign import ccall "cmark.h cmark_node_set_fence_info"+foreign import ccall "cmark-gfm.h cmark_node_set_fence_info"     c_cmark_node_set_fence_info :: NodePtr -> CString -> IO Int -foreign import ccall "cmark.h cmark_node_set_on_enter"+foreign import ccall "cmark-gfm.h cmark_node_set_on_enter"     c_cmark_node_set_on_enter :: NodePtr -> CString -> IO Int -foreign import ccall "cmark.h cmark_node_set_on_exit"+foreign import ccall "cmark-gfm.h cmark_node_set_on_exit"     c_cmark_node_set_on_exit :: NodePtr -> CString -> IO Int -foreign import ccall "cmark.h &cmark_node_free"+foreign import ccall "cmark-gfm.h &cmark_node_free"     c_cmark_node_free :: FunPtr (NodePtr -> IO ()) -foreign import ccall "core-extensions.h core_extensions_ensure_registered"-    c_core_extensions_ensure_registered :: IO ()+foreign import ccall "cmark-gfm-core-extensions.h cmark_gfm_core_extensions_ensure_registered"+    c_cmark_gfm_core_extensions_ensure_registered :: IO () -foreign import ccall "cmark_extension_api.h cmark_find_syntax_extension"+foreign import ccall "cmark-gfm-extension_api.h cmark_find_syntax_extension"     c_cmark_find_syntax_extension :: CString -> IO ExtensionPtr -foreign import ccall "cmark.h cmark_llist_append"+foreign import ccall "cmark-gfm.h cmark_llist_append"     c_cmark_llist_append :: MemPtr -> LlistPtr a -> Ptr () -> IO (LlistPtr a) -foreign import ccall "cmark.h cmark_llist_free"+foreign import ccall "cmark-gfm.h cmark_llist_free"     c_cmark_llist_free :: MemPtr -> LlistPtr a -> IO () -foreign import ccall "cmark.h &CMARK_DEFAULT_MEM_ALLOCATOR"-    c_CMARK_DEFAULT_MEM_ALLOCATOR :: MemPtr+foreign import ccall "cmark-gfm.h cmark_get_default_mem_allocator"+    c_cmark_mem :: MemPtr -foreign import ccall "cmark_extension_api.h cmark_parser_attach_syntax_extension"+foreign import ccall "cmark-gfm-extension_api.h cmark_parser_attach_syntax_extension"     c_cmark_parser_attach_syntax_extension :: ParserPtr -> ExtensionPtr -> IO ()  foreign import ccall "strikethrough.h &CMARK_NODE_STRIKETHROUGH"@@ -651,8 +651,8 @@ foreign import ccall "table.h &CMARK_NODE_TABLE_CELL"     c_CMARK_NODE_TABLE_CELL :: Ptr #type cmark_node_type -foreign import ccall "core-extensions.h cmarkextensions_get_table_columns"-    c_cmarkextensions_get_table_columns :: NodePtr -> IO CUShort+foreign import ccall "cmark-gfm-core-extensions.h cmark_gfm_extensions_get_table_columns"+    c_cmark_gfm_extensions_get_table_columns :: NodePtr -> IO CUShort -foreign import ccall "core-extensions.h cmarkextensions_get_table_alignments"-    c_cmarkextensions_get_table_alignments :: NodePtr -> IO (Ptr CUChar)+foreign import ccall "cmark-gfm-core-extensions.h cmark_gfm_extensions_get_table_alignments"+    c_cmark_gfm_extensions_get_table_alignments :: NodePtr -> IO (Ptr CUChar)
bench/bench-cmark.hs view
@@ -20,7 +20,7 @@       mkBench "cheapskate" (T.concat . toChunks . Blaze.renderHtml . CheapskateHtml.renderDoc . Cheapskate.markdown Cheapskate.def) sample     , mkBench "discount" (Discount.parseMarkdownUtf8 []) sample     , mkBench "markdown" (T.concat . toChunks . Blaze.renderHtml . Markdown.markdown Markdown.def . fromChunks . (:[])) sample-    , mkBench "cmark" (CMarkGFM.commonmarkToHtml []) sample+    , mkBench "cmark" (CMarkGFM.commonmarkToHtml [] []) sample      ]  -- Note: when full-sample.md rather than sample.md is used markdown
cbits/arena.c view
@@ -1,8 +1,8 @@ #include <stdlib.h> #include <string.h> #include <stdint.h>-#include "cmark.h"-#include "cmark_extension_api.h"+#include "cmark-gfm.h"+#include "cmark-gfm-extension_api.h"  static struct arena_chunk {   size_t sz, used;
cbits/autolink.c view
@@ -319,7 +319,7 @@      if (c == '@')       nb++;-    else if (c == '.' && link_end < size - 1)+    else if (c == '.' && link_end < size - 1 && cmark_isalnum(data[link_end + 1]))       np++;     else if (c != '-' && c != '_')       break;
cbits/autolink.h view
@@ -1,7 +1,7 @@-#ifndef AUTOLINK_H-#define AUTOLINK_H+#ifndef CMARK_GFM_AUTOLINK_H+#define CMARK_GFM_AUTOLINK_H -#include "core-extensions.h"+#include "cmark-gfm-core-extensions.h"  cmark_syntax_extension *create_autolink_extension(void); 
cbits/blocks.c view
@@ -13,7 +13,7 @@ #include "syntax_extension.h" #include "config.h" #include "parser.h"-#include "cmark.h"+#include "cmark-gfm.h" #include "node.h" #include "references.h" #include "utf8.h"@@ -21,6 +21,7 @@ #include "inlines.h" #include "houdini.h" #include "buffer.h"+#include "footnotes.h"  #define CODE_INDENT 4 #define TAB_STOP 4@@ -97,7 +98,7 @@     cmark_node_free(parser->root);    if (parser->refmap)-    cmark_reference_map_free(parser->refmap);+    cmark_map_free(parser->refmap); }  static void cmark_parser_reset(cmark_parser *parser) {@@ -281,17 +282,21 @@    switch (S_type(b)) {   case CMARK_NODE_PARAGRAPH:-    while (cmark_strbuf_at(node_content, 0) == '[' &&-           (pos = cmark_parse_reference_inline(parser->mem, node_content,-                                               parser->refmap))) {+  {+    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))) { -      cmark_strbuf_drop(node_content, pos);+      chunk.data += pos;+      chunk.len -= pos;     }+    cmark_strbuf_drop(node_content, (node_content->size - chunk.len));     if (is_blank(node_content, 0)) {       // remove blank node (former reference def)       cmark_node_free(b);     }     break;+  }    case CMARK_NODE_CODE_BLOCK:     if (!b->as.code.fenced) { // indented code@@ -385,7 +390,7 @@   return child; } -void cmark_manage_extensions_special_characters(cmark_parser *parser, bool add) {+void cmark_manage_extensions_special_characters(cmark_parser *parser, int add) {   cmark_llist *tmp_ext;    for (tmp_ext = parser->inline_syntax_extensions; tmp_ext; tmp_ext=tmp_ext->next) {@@ -394,9 +399,9 @@     for (tmp_char = ext->special_inline_chars; tmp_char; tmp_char=tmp_char->next) {       unsigned char c = (unsigned char)(size_t)tmp_char->data;       if (add)-        cmark_inlines_add_special_character(c);+        cmark_inlines_add_special_character(c, ext->emphasis);       else-        cmark_inlines_remove_special_character(c);+        cmark_inlines_remove_special_character(c, ext->emphasis);     }   } }@@ -404,7 +409,7 @@ // Walk through node and all children, recursively, parsing // string content into inline content where appropriate. static void process_inlines(cmark_parser *parser,-                            cmark_reference_map *refmap, int options) {+                            cmark_map *refmap, int options) {   cmark_iter *iter = cmark_iter_new(parser->root);   cmark_node *cur;   cmark_event_type ev_type;@@ -425,6 +430,84 @@   cmark_iter_free(iter); } +static int sort_footnote_by_ix(const void *_a, const void *_b) {+  cmark_footnote *a = *(cmark_footnote **)_a;+  cmark_footnote *b = *(cmark_footnote **)_b;+  return (int)a->ix - (int)b->ix;+}++static void process_footnotes(cmark_parser *parser) {+  // * Collect definitions in a map.+  // * Iterate the references in the document in order, assigning indices to+  //   definitions in the order they're seen.+  // * Write out the footnotes at the bottom of the document in index order.++  cmark_map *map = cmark_footnote_map_new(parser->mem);++  cmark_iter *iter = cmark_iter_new(parser->root);+  cmark_node *cur;+  cmark_event_type ev_type;++  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);+    }+  }++  cmark_iter_free(iter);+  iter = cmark_iter_new(parser->root);+  unsigned int ix = 0;++  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_REFERENCE) {+      cmark_footnote *footnote = (cmark_footnote *)cmark_map_lookup(map, &cur->as.literal);+      if (footnote) {+        if (!footnote->ix)+          footnote->ix = ++ix;++        char n[32];+        snprintf(n, sizeof(n), "%d", footnote->ix);+        cmark_chunk_free(parser->mem, &cur->as.literal);+        cmark_strbuf buf = CMARK_BUF_INIT(parser->mem);+        cmark_strbuf_puts(&buf, n);++        cur->as.literal = cmark_chunk_buf_detach(&buf);+      } else {+        cmark_node *text = (cmark_node *)parser->mem->calloc(1, sizeof(*text));+        cmark_strbuf_init(parser->mem, &text->content, 0);+        text->type = (uint16_t) CMARK_NODE_TEXT;++        cmark_strbuf buf = CMARK_BUF_INIT(parser->mem);+        cmark_strbuf_puts(&buf, "[^");+        cmark_strbuf_put(&buf, cur->as.literal.data, cur->as.literal.len);+        cmark_strbuf_putc(&buf, ']');++        text->as.literal = cmark_chunk_buf_detach(&buf);+        cmark_node_insert_after(cur, text);+        cmark_node_free(cur);+      }+    }+  }++  cmark_iter_free(iter);++  if (map->sorted) {+    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)+        continue;+      cmark_node_append_child(parser->root, footnote->node);+      footnote->node = NULL;+    }+  }++  cmark_map_free(map);+}+ // Attempts to parse a list item marker (bullet or enumerated). // On success, returns length of the marker, and populates // data with the details.  On failure, returns 0.@@ -529,6 +612,8 @@    finalize(parser, parser->root);   process_inlines(parser, parser->refmap, parser->options);+  if (parser->options & CMARK_OPT_FOOTNOTES)+    process_footnotes(parser);    return parser->root; }@@ -670,22 +755,24 @@   char c;   int chars_to_tab = TAB_STOP - (parser->column % TAB_STOP); -  parser->first_nonspace = parser->offset;-  parser->first_nonspace_column = parser->column;-  while ((c = peek_at(input, parser->first_nonspace))) {-    if (c == ' ') {-      parser->first_nonspace += 1;-      parser->first_nonspace_column += 1;-      chars_to_tab = chars_to_tab - 1;-      if (chars_to_tab == 0) {+  if (parser->first_nonspace <= parser->offset) {+    parser->first_nonspace = parser->offset;+    parser->first_nonspace_column = parser->column;+    while ((c = peek_at(input, parser->first_nonspace))) {+      if (c == ' ') {+        parser->first_nonspace += 1;+        parser->first_nonspace_column += 1;+        chars_to_tab = chars_to_tab - 1;+        if (chars_to_tab == 0) {+          chars_to_tab = TAB_STOP;+        }+      } else if (c == '\t') {+        parser->first_nonspace += 1;+        parser->first_nonspace_column += chars_to_tab;         chars_to_tab = TAB_STOP;+      } else {+        break;       }-    } else if (c == '\t') {-      parser->first_nonspace += 1;-      parser->first_nonspace_column += chars_to_tab;-      chars_to_tab = TAB_STOP;-    } else {-      break;     }   } @@ -755,6 +842,18 @@   return res; } +static bool parse_footnote_definition_block_prefix(cmark_parser *parser, cmark_chunk *input,+                                                   cmark_node *container) {+  if (parser->indent >= 4) {+    S_advance_offset(parser, input, 4, true);+    return true;+  } else if (input->len > 0 && (input->data[0] == '\n' || (input->data[0] == '\r' && input->data[1] == '\n'))) {+    return true;+  }++  return false;+}+ static bool parse_node_item_prefix(cmark_parser *parser, cmark_chunk *input,                                    cmark_node *container) {   bool res = false;@@ -909,6 +1008,10 @@       if (parser->blank)         goto done;       break;+		case CMARK_NODE_FOOTNOTE_DEFINITION:+			if (!parse_footnote_definition_block_prefix(parser, input, container))+				goto done;+			break;     default:       break;     }@@ -1020,7 +1123,23 @@       *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 &&+               (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;++      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;++      (*container)->internal_offset = matched;     } else if ((!indented || cont_type == CMARK_NODE_LIST) &&+	       parser->indent < 4 &&                (matched = parse_list_marker(                     parser->mem, input, parser->first_nonspace,                     (*container)->type == CMARK_NODE_PARAGRAPH, &data))) {@@ -1256,6 +1375,9 @@    parser->offset = 0;   parser->column = 0;+  parser->first_nonspace = 0;+  parser->first_nonspace_column = 0;+  parser->indent = 0;   parser->blank = false;   parser->partially_consumed_tab = false; 
cbits/buffer.h view
@@ -7,14 +7,12 @@ #include <limits.h> #include <stdint.h> #include "config.h"-#include "cmark.h"+#include "cmark-gfm.h"  #ifdef __cplusplus extern "C" { #endif -typedef int32_t bufsize_t;- typedef struct {   cmark_mem *mem;   unsigned char *ptr;@@ -32,32 +30,32 @@  * For the cases where CMARK_BUF_INIT cannot be used to do static  * initialization.  */-CMARK_EXPORT+CMARK_GFM_EXPORT void cmark_strbuf_init(cmark_mem *mem, cmark_strbuf *buf,                        bufsize_t initial_size);  /**  * Grow the buffer to hold at least `target_size` bytes.  */-CMARK_EXPORT+CMARK_GFM_EXPORT void cmark_strbuf_grow(cmark_strbuf *buf, bufsize_t target_size); -CMARK_EXPORT+CMARK_GFM_EXPORT void cmark_strbuf_free(cmark_strbuf *buf); -CMARK_EXPORT+CMARK_GFM_EXPORT void cmark_strbuf_swap(cmark_strbuf *buf_a, cmark_strbuf *buf_b); -CMARK_EXPORT+CMARK_GFM_EXPORT bufsize_t cmark_strbuf_len(const cmark_strbuf *buf); -CMARK_EXPORT+CMARK_GFM_EXPORT int cmark_strbuf_cmp(const cmark_strbuf *a, const cmark_strbuf *b); -CMARK_EXPORT+CMARK_GFM_EXPORT unsigned char *cmark_strbuf_detach(cmark_strbuf *buf); -CMARK_EXPORT+CMARK_GFM_EXPORT void cmark_strbuf_copy_cstr(char *data, bufsize_t datasize,                             const cmark_strbuf *buf); @@ -67,48 +65,48 @@  #define cmark_strbuf_at(buf, n) ((buf)->ptr[n]) -CMARK_EXPORT+CMARK_GFM_EXPORT void cmark_strbuf_set(cmark_strbuf *buf, const unsigned char *data,                       bufsize_t len); -CMARK_EXPORT+CMARK_GFM_EXPORT void cmark_strbuf_sets(cmark_strbuf *buf, const char *string); -CMARK_EXPORT+CMARK_GFM_EXPORT void cmark_strbuf_putc(cmark_strbuf *buf, int c); -CMARK_EXPORT+CMARK_GFM_EXPORT void cmark_strbuf_put(cmark_strbuf *buf, const unsigned char *data,                       bufsize_t len); -CMARK_EXPORT+CMARK_GFM_EXPORT void cmark_strbuf_puts(cmark_strbuf *buf, const char *string); -CMARK_EXPORT+CMARK_GFM_EXPORT void cmark_strbuf_clear(cmark_strbuf *buf); -CMARK_EXPORT+CMARK_GFM_EXPORT bufsize_t cmark_strbuf_strchr(const cmark_strbuf *buf, int c, bufsize_t pos); -CMARK_EXPORT+CMARK_GFM_EXPORT bufsize_t cmark_strbuf_strrchr(const cmark_strbuf *buf, int c, bufsize_t pos); -CMARK_EXPORT+CMARK_GFM_EXPORT void cmark_strbuf_drop(cmark_strbuf *buf, bufsize_t n); -CMARK_EXPORT+CMARK_GFM_EXPORT void cmark_strbuf_truncate(cmark_strbuf *buf, bufsize_t len); -CMARK_EXPORT+CMARK_GFM_EXPORT void cmark_strbuf_rtrim(cmark_strbuf *buf); -CMARK_EXPORT+CMARK_GFM_EXPORT void cmark_strbuf_trim(cmark_strbuf *buf); -CMARK_EXPORT+CMARK_GFM_EXPORT void cmark_strbuf_normalize_whitespace(cmark_strbuf *s); -CMARK_EXPORT+CMARK_GFM_EXPORT void cmark_strbuf_unescape(cmark_strbuf *s);  #ifdef __cplusplus
cbits/chunk.h view
@@ -4,7 +4,7 @@ #include <string.h> #include <stdlib.h> #include <assert.h>-#include "cmark.h"+#include "cmark-gfm.h" #include "buffer.h" #include "memory.h" #include "cmark_ctype.h"@@ -12,7 +12,7 @@ #define CMARK_CHUNK_EMPTY                                                      \   { NULL, 0, 0 } -typedef struct {+typedef struct cmark_chunk {   unsigned char *data;   bufsize_t len;   bufsize_t alloc; // also implies a NULL-terminated string
+ cbits/cmark-gfm-core-extensions.h view
@@ -0,0 +1,25 @@+#ifndef CMARK_GFM_CORE_EXTENSIONS_H+#define CMARK_GFM_CORE_EXTENSIONS_H++#ifdef __cplusplus+extern "C" {+#endif++#include "cmark-gfm-extension_api.h"+#include "cmark-gfm-extensions_export.h"+#include <stdint.h>++CMARK_GFM_EXTENSIONS_EXPORT+void cmark_gfm_core_extensions_ensure_registered(void);++CMARK_GFM_EXTENSIONS_EXPORT+uint16_t cmark_gfm_extensions_get_table_columns(cmark_node *node);++CMARK_GFM_EXTENSIONS_EXPORT+uint8_t *cmark_gfm_extensions_get_table_alignments(cmark_node *node);++#ifdef __cplusplus+}+#endif++#endif
+ cbits/cmark-gfm-extension_api.h view
@@ -0,0 +1,719 @@+#ifndef CMARK_GFM_EXTENSION_API_H+#define CMARK_GFM_EXTENSION_API_H++#ifdef __cplusplus+extern "C" {+#endif++#include "cmark-gfm.h"++struct cmark_renderer;+struct cmark_html_renderer;+struct cmark_chunk;++/**+ * ## Extension Support+ *+ * While the "core" of libcmark is strictly compliant with the+ * specification, an API is provided for extension writers to+ * hook into the parsing process.+ *+ * It should be noted that the cmark_node API already offers+ * room for customization, with methods offered to traverse and+ * modify the AST, and even define custom blocks.+ * When the desired customization is achievable in an error-proof+ * way using that API, it should be the preferred method.+ *+ * The following API requires a more in-depth understanding+ * of libcmark's parsing strategy, which is exposed+ * [here](http://spec.commonmark.org/0.24/#appendix-a-parsing-strategy).+ *+ * It should be used when "a posteriori" modification of the AST+ * proves to be too difficult / impossible to implement correctly.+ *+ * It can also serve as an intermediary step before extending+ * the specification, as an extension implemented using this API+ * will be trivially integrated in the core if it proves to be+ * desirable.+ */++typedef struct cmark_plugin cmark_plugin;++/** A syntax extension that can be attached to a cmark_parser+ * with cmark_parser_attach_syntax_extension().+ *+ * Extension writers should assign functions matching+ * the signature of the following 'virtual methods' to+ * implement new functionality.+ *+ * Their calling order and expected behaviour match the procedure outlined+ * at <http://spec.commonmark.org/0.24/#phase-1-block-structure>:+ *+ * During step 1, cmark will call the function provided through+ * 'cmark_syntax_extension_set_match_block_func' when it+ * iterates over an open block created by this extension,+ * to determine  whether it could contain the new line.+ * If no function was provided, cmark will close the block.+ *+ * During step 2, if and only if the new line doesn't match any+ * of the standard syntax rules, cmark will call the function+ * provided through 'cmark_syntax_extension_set_open_block_func'+ * to let the extension determine whether that new line matches+ * one of its syntax rules.+ * It is the responsibility of the parser to create and add the+ * new block with cmark_parser_make_block and cmark_parser_add_child.+ * If no function was provided is NULL, the extension will have+ * no effect at all on the final block structure of the AST.+ *+ * #### Inline parsing phase hooks+ *+ * For each character provided by the extension through+ * 'cmark_syntax_extension_set_special_inline_chars',+ * the function provided by the extension through+ * 'cmark_syntax_extension_set_match_inline_func'+ * will get called, it is the responsibility of the extension+ * to scan the characters located at the current inline parsing offset+ * with the cmark_inline_parser API.+ *+ * Depending on the type of the extension, it can either:+ *+ * * Scan forward, determine that the syntax matches and return+ *   a newly-created inline node with the appropriate type.+ *   This is the technique that would be used if inline code+ *   (with backticks) was implemented as an extension.+ * * Scan only the character(s) that its syntax rules require+ *   for opening and closing nodes, push a delimiter on the+ *   delimiter stack, and return a simple text node with its+ *   contents set to the character(s) consumed.+ *   This is the technique that would be used if emphasis+ *   inlines were implemented as an extension.+ *+ * When an extension has pushed delimiters on the stack,+ * the function provided through+ * 'cmark_syntax_extension_set_inline_from_delim_func'+ * will get called in a latter phase,+ * when the inline parser has matched opener and closer delimiters+ * created by the extension together.+ *+ * It is then the responsibility of the extension to modify+ * and populate the opener inline text node, and to remove+ * the necessary delimiters from the delimiter stack.+ *+ * Finally, the extension should return NULL if its scan didn't+ * match its syntax rules.+ *+ * The extension can store whatever private data it might need+ * with 'cmark_syntax_extension_set_private',+ * and optionally define a free function for this data.+ */+typedef struct cmark_syntax_extension cmark_syntax_extension;++typedef struct subject cmark_inline_parser;++/** Exposed raw for now */++typedef struct delimiter {+  struct delimiter *previous;+  struct delimiter *next;+  cmark_node *inl_text;+  bufsize_t length;+  unsigned char delim_char;+  int can_open;+  int can_close;+} delimiter;++/**+ * ### Plugin API.+ *+ * Extensions should be distributed as dynamic libraries,+ * with a single exported function named after the distributed+ * filename.+ *+ * When discovering extensions (see cmark_init), cmark will+ * try to load a symbol named "init_{{filename}}" in all the+ * dynamic libraries it encounters.+ *+ * For example, given a dynamic library named myextension.so+ * (or myextension.dll), cmark will try to load the symbol+ * named "init_myextension". This means that the filename+ * must lend itself to forming a valid C identifier, with+ * the notable exception of dashes, which will be translated+ * to underscores, which means cmark will look for a function+ * named "init_my_extension" if it encounters a dynamic library+ * named "my-extension.so".+ *+ * See the 'cmark_plugin_init_func' typedef for the exact prototype+ * this function should follow.+ *+ * For now the extensibility of cmark is not complete, as+ * it only offers API to hook into the block parsing phase+ * (<http://spec.commonmark.org/0.24/#phase-1-block-structure>).+ *+ * See 'cmark_plugin_register_syntax_extension' for more information.+ */++/** The prototype plugins' init function should follow.+ */+typedef int (*cmark_plugin_init_func)(cmark_plugin *plugin);++/** Register a syntax 'extension' with the 'plugin', it will be made+ * available as an extension and, if attached to a cmark_parser+ * with 'cmark_parser_attach_syntax_extension', it will contribute+ * to the block parsing process.+ *+ * See the documentation for 'cmark_syntax_extension' for information+ * on how to implement one.+ *+ * This function will typically be called from the init function+ * of external modules.+ *+ * This takes ownership of 'extension', one should not call+ * 'cmark_syntax_extension_free' on a registered extension.+ */+CMARK_GFM_EXPORT+int cmark_plugin_register_syntax_extension(cmark_plugin *plugin,+                                            cmark_syntax_extension *extension);++/** This will search for the syntax extension named 'name' among the+ *  registered syntax extensions.+ *+ *  It can then be attached to a cmark_parser+ *  with the cmark_parser_attach_syntax_extension method.+ */+CMARK_GFM_EXPORT+cmark_syntax_extension *cmark_find_syntax_extension(const char *name);++/** Should create and add a new open block to 'parent_container' if+ * 'input' matches a syntax rule for that block type. It is allowed+ * to modify the type of 'parent_container'.+ *+ * Should return the newly created block if there is one, or+ * 'parent_container' if its type was modified, or NULL.+ */+typedef cmark_node * (*cmark_open_block_func) (cmark_syntax_extension *extension,+                                       int indented,+                                       cmark_parser *parser,+                                       cmark_node *parent_container,+                                       unsigned char *input,+                                       int len);++typedef cmark_node *(*cmark_match_inline_func)(cmark_syntax_extension *extension,+                                       cmark_parser *parser,+                                       cmark_node *parent,+                                       unsigned char character,+                                       cmark_inline_parser *inline_parser);++typedef delimiter *(*cmark_inline_from_delim_func)(cmark_syntax_extension *extension,+                                           cmark_parser *parser,+                                           cmark_inline_parser *inline_parser,+                                           delimiter *opener,+                                           delimiter *closer);++/** Should return 'true' if 'input' can be contained in 'container',+ *  'false' otherwise.+ */+typedef int (*cmark_match_block_func)        (cmark_syntax_extension *extension,+                                       cmark_parser *parser,+                                       unsigned char *input,+                                       int len,+                                       cmark_node *container);++typedef const char *(*cmark_get_type_string_func) (cmark_syntax_extension *extension,+                                                   cmark_node *node);++typedef int (*cmark_can_contain_func) (cmark_syntax_extension *extension,+                                       cmark_node *node,+                                       cmark_node_type child);++typedef int (*cmark_contains_inlines_func) (cmark_syntax_extension *extension,+                                            cmark_node *node);++typedef void (*cmark_common_render_func) (cmark_syntax_extension *extension,+                                          struct cmark_renderer *renderer,+                                          cmark_node *node,+                                          cmark_event_type ev_type,+                                          int options);++typedef int (*cmark_commonmark_escape_func) (cmark_syntax_extension *extension,+                                              cmark_node *node,+                                              int c);++typedef void (*cmark_html_render_func) (cmark_syntax_extension *extension,+                                        struct cmark_html_renderer *renderer,+                                        cmark_node *node,+                                        cmark_event_type ev_type,+                                        int options);++typedef int (*cmark_html_filter_func) (cmark_syntax_extension *extension,+                                       const unsigned char *tag,+                                       size_t tag_len);++typedef cmark_node *(*cmark_postprocess_func) (cmark_syntax_extension *extension,+                                               cmark_parser *parser,+                                               cmark_node *root);++typedef int (*cmark_ispunct_func) (char c);++typedef void (*cmark_opaque_free_func) (cmark_syntax_extension *extension,+                                        cmark_mem *mem,+                                        cmark_node *node);++/** Free a cmark_syntax_extension.+ */+CMARK_GFM_EXPORT+void cmark_syntax_extension_free               (cmark_mem *mem, cmark_syntax_extension *extension);++/** Return a newly-constructed cmark_syntax_extension, named 'name'.+ */+CMARK_GFM_EXPORT+cmark_syntax_extension *cmark_syntax_extension_new (const char *name);++CMARK_GFM_EXPORT+cmark_node_type cmark_syntax_extension_add_node(int is_inline);++CMARK_GFM_EXPORT+void cmark_syntax_extension_set_emphasis(cmark_syntax_extension *extension, int emphasis);++/** See the documentation for 'cmark_syntax_extension'+ */+CMARK_GFM_EXPORT+void cmark_syntax_extension_set_open_block_func(cmark_syntax_extension *extension,+                                                cmark_open_block_func func);++/** See the documentation for 'cmark_syntax_extension'+ */+CMARK_GFM_EXPORT+void cmark_syntax_extension_set_match_block_func(cmark_syntax_extension *extension,+                                                 cmark_match_block_func func);++/** See the documentation for 'cmark_syntax_extension'+ */+CMARK_GFM_EXPORT+void cmark_syntax_extension_set_match_inline_func(cmark_syntax_extension *extension,+                                                  cmark_match_inline_func func);++/** See the documentation for 'cmark_syntax_extension'+ */+CMARK_GFM_EXPORT+void cmark_syntax_extension_set_inline_from_delim_func(cmark_syntax_extension *extension,+                                                       cmark_inline_from_delim_func func);++/** See the documentation for 'cmark_syntax_extension'+ */+CMARK_GFM_EXPORT+void cmark_syntax_extension_set_special_inline_chars(cmark_syntax_extension *extension,+                                                     cmark_llist *special_chars);++/** See the documentation for 'cmark_syntax_extension'+ */+CMARK_GFM_EXPORT+void cmark_syntax_extension_set_get_type_string_func(cmark_syntax_extension *extension,+                                                     cmark_get_type_string_func func);++/** See the documentation for 'cmark_syntax_extension'+ */+CMARK_GFM_EXPORT+void cmark_syntax_extension_set_can_contain_func(cmark_syntax_extension *extension,+                                                 cmark_can_contain_func func);++/** See the documentation for 'cmark_syntax_extension'+ */+CMARK_GFM_EXPORT+void cmark_syntax_extension_set_contains_inlines_func(cmark_syntax_extension *extension,+                                                      cmark_contains_inlines_func func);++/** See the documentation for 'cmark_syntax_extension'+ */+CMARK_GFM_EXPORT+void cmark_syntax_extension_set_commonmark_render_func(cmark_syntax_extension *extension,+                                                       cmark_common_render_func func);++/** See the documentation for 'cmark_syntax_extension'+ */+CMARK_GFM_EXPORT+void cmark_syntax_extension_set_plaintext_render_func(cmark_syntax_extension *extension,+                                                      cmark_common_render_func func);++/** See the documentation for 'cmark_syntax_extension'+ */+CMARK_GFM_EXPORT+void cmark_syntax_extension_set_latex_render_func(cmark_syntax_extension *extension,+                                                  cmark_common_render_func func);++/** See the documentation for 'cmark_syntax_extension'+ */+CMARK_GFM_EXPORT+void cmark_syntax_extension_set_man_render_func(cmark_syntax_extension *extension,+                                                cmark_common_render_func func);++/** See the documentation for 'cmark_syntax_extension'+ */+CMARK_GFM_EXPORT+void cmark_syntax_extension_set_html_render_func(cmark_syntax_extension *extension,+                                                 cmark_html_render_func func);++/** See the documentation for 'cmark_syntax_extension'+ */+CMARK_GFM_EXPORT+void cmark_syntax_extension_set_html_filter_func(cmark_syntax_extension *extension,+                                                 cmark_html_filter_func func);++/** See the documentation for 'cmark_syntax_extension'+ */+CMARK_GFM_EXPORT+void cmark_syntax_extension_set_commonmark_escape_func(cmark_syntax_extension *extension,+                                                       cmark_commonmark_escape_func func);++/** See the documentation for 'cmark_syntax_extension'+ */+CMARK_GFM_EXPORT+void cmark_syntax_extension_set_private(cmark_syntax_extension *extension,+                                        void *priv,+                                        cmark_free_func free_func);++/** See the documentation for 'cmark_syntax_extension'+ */+CMARK_GFM_EXPORT+void *cmark_syntax_extension_get_private(cmark_syntax_extension *extension);++/** See the documentation for 'cmark_syntax_extension'+ */+CMARK_GFM_EXPORT+void cmark_syntax_extension_set_postprocess_func(cmark_syntax_extension *extension,+                                                 cmark_postprocess_func func);++/** See the documentation for 'cmark_syntax_extension'+ */+CMARK_GFM_EXPORT+void cmark_syntax_extension_set_opaque_free_func(cmark_syntax_extension *extension,+                                                 cmark_opaque_free_func func);++/** See the documentation for 'cmark_syntax_extension'+ */+CMARK_GFM_EXPORT+void cmark_parser_set_backslash_ispunct_func(cmark_parser *parser,+                                             cmark_ispunct_func func);++/** Return the index of the line currently being parsed, starting with 1.+ */+CMARK_GFM_EXPORT+int cmark_parser_get_line_number(cmark_parser *parser);++/** Return the offset in bytes in the line being processed.+ *+ * Example:+ *+ * ### foo+ *+ * Here, offset will first be 0, then 5 (the index of the 'f' character).+ */+CMARK_GFM_EXPORT+int cmark_parser_get_offset(cmark_parser *parser);++/**+ * Return the offset in 'columns' in the line being processed.+ *+ * This value may differ from the value returned by+ * cmark_parser_get_offset() in that it accounts for tabs,+ * and as such should not be used as an index in the current line's+ * buffer.+ *+ * Example:+ *+ * cmark_parser_advance_offset() can be called to advance the+ * offset by a number of columns, instead of a number of bytes.+ *+ * In that case, if offset falls "in the middle" of a tab+ * character, 'column' and offset will differ.+ *+ * ```+ * foo                 \t bar+ * ^                   ^^+ * offset (0)          20+ * ```+ *+ * If cmark_parser_advance_offset is called here with 'columns'+ * set to 'true' and 'offset' set to 22, cmark_parser_get_offset()+ * will return 20, whereas cmark_parser_get_column() will return+ * 22.+ *+ * Additionally, as tabs expand to the next multiple of 4 column,+ * cmark_parser_has_partially_consumed_tab() will now return+ * 'true'.+ */+CMARK_GFM_EXPORT+int cmark_parser_get_column(cmark_parser *parser);++/** Return the absolute index in bytes of the first nonspace+ * character coming after the offset as returned by+ * cmark_parser_get_offset() in the line currently being processed.+ *+ * Example:+ *+ * ```+ *   foo        bar            baz  \n+ * ^               ^           ^+ * 0            offset (16) first_nonspace (28)+ * ```+ */+CMARK_GFM_EXPORT+int cmark_parser_get_first_nonspace(cmark_parser *parser);++/** Return the absolute index of the first nonspace column coming after 'offset'+ * in the line currently being processed, counting tabs as multiple+ * columns as appropriate.+ *+ * See the documentation for cmark_parser_get_first_nonspace() and+ * cmark_parser_get_column() for more information.+ */+CMARK_GFM_EXPORT+int cmark_parser_get_first_nonspace_column(cmark_parser *parser);++/** Return the difference between the values returned by+ * cmark_parser_get_first_nonspace_column() and+ * cmark_parser_get_column().+ *+ * This is not a byte offset, as it can count one tab as multiple+ * characters.+ */+CMARK_GFM_EXPORT+int cmark_parser_get_indent(cmark_parser *parser);++/** Return 'true' if the line currently being processed has been entirely+ * consumed, 'false' otherwise.+ *+ * Example:+ *+ * ```+ *   foo        bar            baz  \n+ * ^+ * offset+ * ```+ *+ * This function will return 'false' here.+ *+ * ```+ *   foo        bar            baz  \n+ *                 ^+ *              offset+ * ```+ * This function will still return 'false'.+ *+ * ```+ *   foo        bar            baz  \n+ *                                ^+ *                             offset+ * ```+ *+ * At this point, this function will now return 'true'.+ */+CMARK_GFM_EXPORT+int cmark_parser_is_blank(cmark_parser *parser);++/** Return 'true' if the value returned by cmark_parser_get_offset()+ * is 'inside' an expanded tab.+ *+ * See the documentation for cmark_parser_get_column() for more+ * information.+ */+CMARK_GFM_EXPORT+int cmark_parser_has_partially_consumed_tab(cmark_parser *parser);++/** Return the length in bytes of the previously processed line, excluding potential+ * newline (\n) and carriage return (\r) trailing characters.+ */+CMARK_GFM_EXPORT+int cmark_parser_get_last_line_length(cmark_parser *parser);++/** Add a child to 'parent' during the parsing process.+ *+ * If 'parent' isn't the kind of node that can accept this child,+ * this function will back up till it hits a node that can, closing+ * blocks as appropriate.+ */+CMARK_GFM_EXPORT+cmark_node*cmark_parser_add_child(cmark_parser *parser,+                                  cmark_node *parent,+                                  cmark_node_type block_type,+                                  int start_column);++/** Advance the 'offset' of the parser in the current line.+ *+ * See the documentation of cmark_parser_get_offset() and+ * cmark_parser_get_column() for more information.+ */+CMARK_GFM_EXPORT+void cmark_parser_advance_offset(cmark_parser *parser,+                                 const char *input,+                                 int count,+                                 int columns);+++CMARK_GFM_EXPORT+void cmark_parser_feed_reentrant(cmark_parser *parser, const char *buffer, size_t len);++/** Attach the syntax 'extension' to the 'parser', to provide extra syntax+ *  rules.+ *  See the documentation for cmark_syntax_extension for more information.+ *+ *  Returns 'true' if the 'extension' was successfully attached,+ *  'false' otherwise.+ */+CMARK_GFM_EXPORT+int cmark_parser_attach_syntax_extension(cmark_parser *parser, cmark_syntax_extension *extension);++/** Change the type of 'node'.+ *+ * Return 0 if the type could be changed, 1 otherwise.+ */+CMARK_GFM_EXPORT int cmark_node_set_type(cmark_node *node, cmark_node_type type);++/** Return the string content for all types of 'node'.+ *  The pointer stays valid as long as 'node' isn't freed.+ */+CMARK_GFM_EXPORT const char *cmark_node_get_string_content(cmark_node *node);++/** Set the string 'content' for all types of 'node'.+ *  Copies 'content'.+ */+CMARK_GFM_EXPORT int cmark_node_set_string_content(cmark_node *node, const char *content);++/** Get the syntax extension responsible for the creation of 'node'.+ *  Return NULL if 'node' was created because it matched standard syntax rules.+ */+CMARK_GFM_EXPORT cmark_syntax_extension *cmark_node_get_syntax_extension(cmark_node *node);++/** Set the syntax extension responsible for creating 'node'.+ */+CMARK_GFM_EXPORT int cmark_node_set_syntax_extension(cmark_node *node,+                                                  cmark_syntax_extension *extension);++/**+ * ## Inline syntax extension helpers+ *+ * The inline parsing process is described in detail at+ * <http://spec.commonmark.org/0.24/#phase-2-inline-structure>+ */++/** Should return 'true' if the predicate matches 'c', 'false' otherwise+ */+typedef int (*cmark_inline_predicate)(int c);++/** Advance the current inline parsing offset */+CMARK_GFM_EXPORT+void cmark_inline_parser_advance_offset(cmark_inline_parser *parser);++/** Get the current inline parsing offset */+CMARK_GFM_EXPORT+int cmark_inline_parser_get_offset(cmark_inline_parser *parser);++/** Set the offset in bytes in the chunk being processed by the given inline parser.+ */+CMARK_GFM_EXPORT+void cmark_inline_parser_set_offset(cmark_inline_parser *parser, int offset);++/** Gets the cmark_chunk being operated on by the given inline parser.+ * Use cmark_inline_parser_get_offset to get our current position in the chunk.+ */+CMARK_GFM_EXPORT+struct cmark_chunk *cmark_inline_parser_get_chunk(cmark_inline_parser *parser);++/** Returns 1 if the inline parser is currently in a bracket; pass 1 for 'image'+ * if you want to know about an image-type bracket, 0 for link-type. */+CMARK_GFM_EXPORT+int cmark_inline_parser_in_bracket(cmark_inline_parser *parser, int image);++/** Remove the last n characters from the last child of the given node.+ * This only works where all n characters are in the single last child, and the last+ * child is CMARK_NODE_TEXT.+ */+CMARK_GFM_EXPORT+void cmark_node_unput(cmark_node *node, int n);+++/** Get the character located at the current inline parsing offset+ */+CMARK_GFM_EXPORT+unsigned char cmark_inline_parser_peek_char(cmark_inline_parser *parser);++/** Get the character located 'pos' bytes in the current line.+ */+CMARK_GFM_EXPORT+unsigned char cmark_inline_parser_peek_at(cmark_inline_parser *parser, int pos);++/** Whether the inline parser has reached the end of the current line+ */+CMARK_GFM_EXPORT+int cmark_inline_parser_is_eof(cmark_inline_parser *parser);++/** Get the characters located after the current inline parsing offset+ * while 'pred' matches. Free after usage.+ */+CMARK_GFM_EXPORT+char *cmark_inline_parser_take_while(cmark_inline_parser *parser, cmark_inline_predicate pred);++/** Push a delimiter on the delimiter stack.+ * See <<http://spec.commonmark.org/0.24/#phase-2-inline-structure> for+ * more information on the parameters+ */+CMARK_GFM_EXPORT+void cmark_inline_parser_push_delimiter(cmark_inline_parser *parser,+                                  unsigned char c,+                                  int can_open,+                                  int can_close,+                                  cmark_node *inl_text);++/** Remove 'delim' from the delimiter stack+ */+CMARK_GFM_EXPORT+void cmark_inline_parser_remove_delimiter(cmark_inline_parser *parser, delimiter *delim);++CMARK_GFM_EXPORT+delimiter *cmark_inline_parser_get_last_delimiter(cmark_inline_parser *parser);++CMARK_GFM_EXPORT+int cmark_inline_parser_get_line(cmark_inline_parser *parser);++CMARK_GFM_EXPORT+int cmark_inline_parser_get_column(cmark_inline_parser *parser);++/** Convenience function to scan a given delimiter.+ *+ * 'left_flanking' and 'right_flanking' will be set to true if they+ * respectively precede and follow a non-space, non-punctuation+ * character.+ *+ * Additionally, 'punct_before' and 'punct_after' will respectively be set+ * if the preceding or following character is a punctuation character.+ *+ * Note that 'left_flanking' and 'right_flanking' can both be 'true'.+ *+ * Returns the number of delimiters encountered, in the limit+ * of 'max_delims', and advances the inline parsing offset.+ */+CMARK_GFM_EXPORT+int cmark_inline_parser_scan_delimiters(cmark_inline_parser *parser,+                                  int max_delims,+                                  unsigned char c,+                                  int *left_flanking,+                                  int *right_flanking,+                                  int *punct_before,+                                  int *punct_after);++CMARK_GFM_EXPORT+void cmark_manage_extensions_special_characters(cmark_parser *parser, int add);++CMARK_GFM_EXPORT+cmark_llist *cmark_parser_get_syntax_extensions(cmark_parser *parser);++CMARK_GFM_EXPORT+void cmark_arena_push(void);++CMARK_GFM_EXPORT+int cmark_arena_pop(void);++#ifdef __cplusplus+}+#endif++#endif
+ cbits/cmark-gfm-extensions_export.h view
@@ -0,0 +1,42 @@++#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
+ cbits/cmark-gfm.h view
@@ -0,0 +1,803 @@+#ifndef CMARK_GFM_H+#define CMARK_GFM_H++#include <stdio.h>+#include <stdint.h>+#include "cmark-gfm_export.h"+#include "cmark-gfm_version.h"++#ifdef __cplusplus+extern "C" {+#endif++/** # NAME+ *+ * **cmark-gfm** - CommonMark parsing, manipulating, and rendering+ */++/** # DESCRIPTION+ *+ * ## Simple Interface+ */++/** Convert 'text' (assumed to be a UTF-8 encoded string with length+ * 'len') from CommonMark Markdown to HTML, returning a null-terminated,+ * UTF-8-encoded string. It is the caller's responsibility+ * to free the returned buffer.+ */+CMARK_GFM_EXPORT+char *cmark_markdown_to_html(const char *text, size_t len, int options);++/** ## Node Structure+ */++#define CMARK_NODE_TYPE_PRESENT (0x8000)+#define CMARK_NODE_TYPE_BLOCK (CMARK_NODE_TYPE_PRESENT | 0x0000)+#define CMARK_NODE_TYPE_INLINE (CMARK_NODE_TYPE_PRESENT | 0x4000)+#define CMARK_NODE_TYPE_MASK (0xc000)+#define CMARK_NODE_VALUE_MASK (0x3fff)++typedef enum {+  /* Error status */+  CMARK_NODE_NONE = 0x0000,++  /* Block */+  CMARK_NODE_DOCUMENT       = CMARK_NODE_TYPE_BLOCK | 0x0001,+  CMARK_NODE_BLOCK_QUOTE    = CMARK_NODE_TYPE_BLOCK | 0x0002,+  CMARK_NODE_LIST           = CMARK_NODE_TYPE_BLOCK | 0x0003,+  CMARK_NODE_ITEM           = CMARK_NODE_TYPE_BLOCK | 0x0004,+  CMARK_NODE_CODE_BLOCK     = CMARK_NODE_TYPE_BLOCK | 0x0005,+  CMARK_NODE_HTML_BLOCK     = CMARK_NODE_TYPE_BLOCK | 0x0006,+  CMARK_NODE_CUSTOM_BLOCK   = CMARK_NODE_TYPE_BLOCK | 0x0007,+  CMARK_NODE_PARAGRAPH      = CMARK_NODE_TYPE_BLOCK | 0x0008,+  CMARK_NODE_HEADING        = CMARK_NODE_TYPE_BLOCK | 0x0009,+  CMARK_NODE_THEMATIC_BREAK = CMARK_NODE_TYPE_BLOCK | 0x000a,+  CMARK_NODE_FOOTNOTE_DEFINITION = CMARK_NODE_TYPE_BLOCK | 0x000b,++  /* Inline */+  CMARK_NODE_TEXT          = CMARK_NODE_TYPE_INLINE | 0x0001,+  CMARK_NODE_SOFTBREAK     = CMARK_NODE_TYPE_INLINE | 0x0002,+  CMARK_NODE_LINEBREAK     = CMARK_NODE_TYPE_INLINE | 0x0003,+  CMARK_NODE_CODE          = CMARK_NODE_TYPE_INLINE | 0x0004,+  CMARK_NODE_HTML_INLINE   = CMARK_NODE_TYPE_INLINE | 0x0005,+  CMARK_NODE_CUSTOM_INLINE = CMARK_NODE_TYPE_INLINE | 0x0006,+  CMARK_NODE_EMPH          = CMARK_NODE_TYPE_INLINE | 0x0007,+  CMARK_NODE_STRONG        = CMARK_NODE_TYPE_INLINE | 0x0008,+  CMARK_NODE_LINK          = CMARK_NODE_TYPE_INLINE | 0x0009,+  CMARK_NODE_IMAGE         = CMARK_NODE_TYPE_INLINE | 0x000a,+  CMARK_NODE_FOOTNOTE_REFERENCE = CMARK_NODE_TYPE_INLINE | 0x000b,+} cmark_node_type;++extern cmark_node_type CMARK_NODE_LAST_BLOCK;+extern cmark_node_type CMARK_NODE_LAST_INLINE;++/* For backwards compatibility: */+#define CMARK_NODE_HEADER CMARK_NODE_HEADING+#define CMARK_NODE_HRULE CMARK_NODE_THEMATIC_BREAK+#define CMARK_NODE_HTML CMARK_NODE_HTML_BLOCK+#define CMARK_NODE_INLINE_HTML CMARK_NODE_HTML_INLINE++typedef enum {+  CMARK_NO_LIST,+  CMARK_BULLET_LIST,+  CMARK_ORDERED_LIST+} cmark_list_type;++typedef enum {+  CMARK_NO_DELIM,+  CMARK_PERIOD_DELIM,+  CMARK_PAREN_DELIM+} cmark_delim_type;++typedef struct cmark_node cmark_node;+typedef struct cmark_parser cmark_parser;+typedef struct cmark_iter cmark_iter;++/**+ * ## Custom memory allocator support+ */++/** Defines the memory allocation functions to be used by CMark+ * when parsing and allocating a document tree+ */+typedef struct cmark_mem {+  void *(*calloc)(size_t, size_t);+  void *(*realloc)(void *, size_t);+  void (*free)(void *);+} cmark_mem;++/** The default memory allocator; uses the system's calloc,+ * realloc and free.+ */+CMARK_GFM_EXPORT+cmark_mem *cmark_get_default_mem_allocator();++/** 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();++/** Resets the arena allocator, quickly returning all used memory+ * to the operating system.+ */+CMARK_GFM_EXPORT+void cmark_arena_reset(void);++/** Callback for freeing user data with a 'cmark_mem' context.+ */+typedef void (*cmark_free_func) (cmark_mem *mem, void *user_data);+++/*+ * ## Basic data structures+ *+ * To keep dependencies to the strict minimum, libcmark implements+ * its own versions of "classic" data structures.+ */++/**+ * ### Linked list+ */++/** A generic singly linked list.+ */+typedef struct _cmark_llist+{+  struct _cmark_llist *next;+  void         *data;+} cmark_llist;++/** Append an element to the linked list, return the possibly modified+ * head of the list.+ */+CMARK_GFM_EXPORT+cmark_llist * cmark_llist_append    (cmark_mem         * mem,+                                     cmark_llist       * head,+                                     void              * data);++/** Free the list starting with 'head', calling 'free_func' with the+ *  data pointer of each of its elements+ */+CMARK_GFM_EXPORT+void          cmark_llist_free_full (cmark_mem         * mem,+                                     cmark_llist       * head,+                                     cmark_free_func     free_func);++/** Free the list starting with 'head'+ */+CMARK_GFM_EXPORT+void          cmark_llist_free      (cmark_mem         * mem,+                                     cmark_llist       * head);++/**+ * ## Creating and Destroying Nodes+ */++/** Creates a new node of type 'type'.  Note that the node may have+ * other required properties, which it is the caller's responsibility+ * to assign.+ */+CMARK_GFM_EXPORT cmark_node *cmark_node_new(cmark_node_type type);++/** Same as `cmark_node_new`, but explicitly listing the memory+ * allocator used to allocate the node.  Note:  be sure to use the same+ * allocator for every node in a tree, or bad things can happen.+ */+CMARK_GFM_EXPORT cmark_node *cmark_node_new_with_mem(cmark_node_type type,+                                                 cmark_mem *mem);++/** Frees the memory allocated for a node and any children.+ */+CMARK_GFM_EXPORT void cmark_node_free(cmark_node *node);++/**+ * ## Tree Traversal+ */++/** Returns the next node in the sequence after 'node', or NULL if+ * there is none.+ */+CMARK_GFM_EXPORT cmark_node *cmark_node_next(cmark_node *node);++/** Returns the previous node in the sequence after 'node', or NULL if+ * there is none.+ */+CMARK_GFM_EXPORT cmark_node *cmark_node_previous(cmark_node *node);++/** Returns the parent of 'node', or NULL if there is none.+ */+CMARK_GFM_EXPORT cmark_node *cmark_node_parent(cmark_node *node);++/** Returns the first child of 'node', or NULL if 'node' has no children.+ */+CMARK_GFM_EXPORT cmark_node *cmark_node_first_child(cmark_node *node);++/** Returns the last child of 'node', or NULL if 'node' has no children.+ */+CMARK_GFM_EXPORT cmark_node *cmark_node_last_child(cmark_node *node);++/**+ * ## Iterator+ *+ * An iterator will walk through a tree of nodes, starting from a root+ * node, returning one node at a time, together with information about+ * whether the node is being entered or exited.  The iterator will+ * first descend to a child node, if there is one.  When there is no+ * child, the iterator will go to the next sibling.  When there is no+ * next sibling, the iterator will return to the parent (but with+ * a 'cmark_event_type' of `CMARK_EVENT_EXIT`).  The iterator will+ * return `CMARK_EVENT_DONE` when it reaches the root node again.+ * One natural application is an HTML renderer, where an `ENTER` event+ * outputs an open tag and an `EXIT` event outputs a close tag.+ * An iterator might also be used to transform an AST in some systematic+ * way, for example, turning all level-3 headings into regular paragraphs.+ *+ *     void+ *     usage_example(cmark_node *root) {+ *         cmark_event_type ev_type;+ *         cmark_iter *iter = cmark_iter_new(root);+ *+ *         while ((ev_type = cmark_iter_next(iter)) != CMARK_EVENT_DONE) {+ *             cmark_node *cur = cmark_iter_get_node(iter);+ *             // Do something with `cur` and `ev_type`+ *         }+ *+ *         cmark_iter_free(iter);+ *     }+ *+ * Iterators will never return `EXIT` events for leaf nodes, which are nodes+ * of type:+ *+ * * CMARK_NODE_HTML_BLOCK+ * * CMARK_NODE_THEMATIC_BREAK+ * * CMARK_NODE_CODE_BLOCK+ * * CMARK_NODE_TEXT+ * * CMARK_NODE_SOFTBREAK+ * * CMARK_NODE_LINEBREAK+ * * CMARK_NODE_CODE+ * * CMARK_NODE_HTML_INLINE+ *+ * Nodes must only be modified after an `EXIT` event, or an `ENTER` event for+ * leaf nodes.+ */++typedef enum {+  CMARK_EVENT_NONE,+  CMARK_EVENT_DONE,+  CMARK_EVENT_ENTER,+  CMARK_EVENT_EXIT+} cmark_event_type;++/** Creates a new iterator starting at 'root'.  The current node and event+ * type are undefined until 'cmark_iter_next' is called for the first time.+ * The memory allocated for the iterator should be released using+ * 'cmark_iter_free' when it is no longer needed.+ */+CMARK_GFM_EXPORT+cmark_iter *cmark_iter_new(cmark_node *root);++/** Frees the memory allocated for an iterator.+ */+CMARK_GFM_EXPORT+void cmark_iter_free(cmark_iter *iter);++/** Advances to the next node and returns the event type (`CMARK_EVENT_ENTER`,+ * `CMARK_EVENT_EXIT` or `CMARK_EVENT_DONE`).+ */+CMARK_GFM_EXPORT+cmark_event_type cmark_iter_next(cmark_iter *iter);++/** Returns the current node.+ */+CMARK_GFM_EXPORT+cmark_node *cmark_iter_get_node(cmark_iter *iter);++/** Returns the current event type.+ */+CMARK_GFM_EXPORT+cmark_event_type cmark_iter_get_event_type(cmark_iter *iter);++/** Returns the root node.+ */+CMARK_GFM_EXPORT+cmark_node *cmark_iter_get_root(cmark_iter *iter);++/** Resets the iterator so that the current node is 'current' and+ * the event type is 'event_type'.  The new current node must be a+ * descendant of the root node or the root node itself.+ */+CMARK_GFM_EXPORT+void cmark_iter_reset(cmark_iter *iter, cmark_node *current,+                      cmark_event_type event_type);++/**+ * ## Accessors+ */++/** Returns the user data of 'node'.+ */+CMARK_GFM_EXPORT void *cmark_node_get_user_data(cmark_node *node);++/** Sets arbitrary user data for 'node'.  Returns 1 on success,+ * 0 on failure.+ */+CMARK_GFM_EXPORT int cmark_node_set_user_data(cmark_node *node, void *user_data);++/** Set free function for user data */+CMARK_GFM_EXPORT+int cmark_node_set_user_data_free_func(cmark_node *node,+                                        cmark_free_func free_func);++/** Returns the type of 'node', or `CMARK_NODE_NONE` on error.+ */+CMARK_GFM_EXPORT cmark_node_type cmark_node_get_type(cmark_node *node);++/** Like 'cmark_node_get_type', but returns a string representation+    of the type, or `"<unknown>"`.+ */+CMARK_GFM_EXPORT+const char *cmark_node_get_type_string(cmark_node *node);++/** Returns the string contents of 'node', or an empty+    string if none is set.  Returns NULL if called on a+    node that does not have string content.+ */+CMARK_GFM_EXPORT const char *cmark_node_get_literal(cmark_node *node);++/** Sets the string contents of 'node'.  Returns 1 on success,+ * 0 on failure.+ */+CMARK_GFM_EXPORT int cmark_node_set_literal(cmark_node *node, const char *content);++/** Returns the heading level of 'node', or 0 if 'node' is not a heading.+ */+CMARK_GFM_EXPORT int cmark_node_get_heading_level(cmark_node *node);++/* For backwards compatibility */+#define cmark_node_get_header_level cmark_node_get_heading_level+#define cmark_node_set_header_level cmark_node_set_heading_level++/** Sets the heading level of 'node', returning 1 on success and 0 on error.+ */+CMARK_GFM_EXPORT int cmark_node_set_heading_level(cmark_node *node, int level);++/** Returns the list type of 'node', or `CMARK_NO_LIST` if 'node'+ * is not a list.+ */+CMARK_GFM_EXPORT cmark_list_type cmark_node_get_list_type(cmark_node *node);++/** Sets the list type of 'node', returning 1 on success and 0 on error.+ */+CMARK_GFM_EXPORT int cmark_node_set_list_type(cmark_node *node,+                                          cmark_list_type type);++/** Returns the list delimiter type of 'node', or `CMARK_NO_DELIM` if 'node'+ * is not a list.+ */+CMARK_GFM_EXPORT cmark_delim_type cmark_node_get_list_delim(cmark_node *node);++/** Sets the list delimiter type of 'node', returning 1 on success and 0+ * on error.+ */+CMARK_GFM_EXPORT int cmark_node_set_list_delim(cmark_node *node,+                                           cmark_delim_type delim);++/** Returns starting number of 'node', if it is an ordered list, otherwise 0.+ */+CMARK_GFM_EXPORT int cmark_node_get_list_start(cmark_node *node);++/** Sets starting number of 'node', if it is an ordered list. Returns 1+ * on success, 0 on failure.+ */+CMARK_GFM_EXPORT int cmark_node_set_list_start(cmark_node *node, int start);++/** Returns 1 if 'node' is a tight list, 0 otherwise.+ */+CMARK_GFM_EXPORT int cmark_node_get_list_tight(cmark_node *node);++/** Sets the "tightness" of a list.  Returns 1 on success, 0 on failure.+ */+CMARK_GFM_EXPORT int cmark_node_set_list_tight(cmark_node *node, int tight);++/** Returns the info string from a fenced code block.+ */+CMARK_GFM_EXPORT const char *cmark_node_get_fence_info(cmark_node *node);++/** Sets the info string in a fenced code block, returning 1 on+ * success and 0 on failure.+ */+CMARK_GFM_EXPORT int cmark_node_set_fence_info(cmark_node *node, const char *info);++/** Sets code blocks fencing details+ */+CMARK_GFM_EXPORT int cmark_node_set_fenced(cmark_node * node, int fenced,+    int length, int offset, char character);++/** Returns code blocks fencing details+ */+CMARK_GFM_EXPORT int cmark_node_get_fenced(cmark_node *node, int *length, int *offset, char *character);++/** Returns the URL of a link or image 'node', or an empty string+    if no URL is set.  Returns NULL if called on a node that is+    not a link or image.+ */+CMARK_GFM_EXPORT const char *cmark_node_get_url(cmark_node *node);++/** Sets the URL of a link or image 'node'. Returns 1 on success,+ * 0 on failure.+ */+CMARK_GFM_EXPORT int cmark_node_set_url(cmark_node *node, const char *url);++/** Returns the title of a link or image 'node', or an empty+    string if no title is set.  Returns NULL if called on a node+    that is not a link or image.+ */+CMARK_GFM_EXPORT const char *cmark_node_get_title(cmark_node *node);++/** Sets the title of a link or image 'node'. Returns 1 on success,+ * 0 on failure.+ */+CMARK_GFM_EXPORT int cmark_node_set_title(cmark_node *node, const char *title);++/** Returns the literal "on enter" text for a custom 'node', or+    an empty string if no on_enter is set.  Returns NULL if called+    on a non-custom node.+ */+CMARK_GFM_EXPORT const char *cmark_node_get_on_enter(cmark_node *node);++/** Sets the literal text to render "on enter" for a custom 'node'.+    Any children of the node will be rendered after this text.+    Returns 1 on success 0 on failure.+ */+CMARK_GFM_EXPORT int cmark_node_set_on_enter(cmark_node *node,+                                         const char *on_enter);++/** Returns the literal "on exit" text for a custom 'node', or+    an empty string if no on_exit is set.  Returns NULL if+    called on a non-custom node.+ */+CMARK_GFM_EXPORT const char *cmark_node_get_on_exit(cmark_node *node);++/** Sets the literal text to render "on exit" for a custom 'node'.+    Any children of the node will be rendered before this text.+    Returns 1 on success 0 on failure.+ */+CMARK_GFM_EXPORT int cmark_node_set_on_exit(cmark_node *node, const char *on_exit);++/** Returns the line on which 'node' begins.+ */+CMARK_GFM_EXPORT int cmark_node_get_start_line(cmark_node *node);++/** Returns the column at which 'node' begins.+ */+CMARK_GFM_EXPORT int cmark_node_get_start_column(cmark_node *node);++/** Returns the line on which 'node' ends.+ */+CMARK_GFM_EXPORT int cmark_node_get_end_line(cmark_node *node);++/** Returns the column at which 'node' ends.+ */+CMARK_GFM_EXPORT int cmark_node_get_end_column(cmark_node *node);++/**+ * ## Tree Manipulation+ */++/** Unlinks a 'node', removing it from the tree, but not freeing its+ * memory.  (Use 'cmark_node_free' for that.)+ */+CMARK_GFM_EXPORT void cmark_node_unlink(cmark_node *node);++/** Inserts 'sibling' before 'node'.  Returns 1 on success, 0 on failure.+ */+CMARK_GFM_EXPORT int cmark_node_insert_before(cmark_node *node,+                                          cmark_node *sibling);++/** Inserts 'sibling' after 'node'. Returns 1 on success, 0 on failure.+ */+CMARK_GFM_EXPORT int cmark_node_insert_after(cmark_node *node, cmark_node *sibling);++/** Replaces 'oldnode' with 'newnode' and unlinks 'oldnode' (but does+ * not free its memory).+ * Returns 1 on success, 0 on failure.+ */+CMARK_GFM_EXPORT int cmark_node_replace(cmark_node *oldnode, cmark_node *newnode);++/** Adds 'child' to the beginning of the children of 'node'.+ * Returns 1 on success, 0 on failure.+ */+CMARK_GFM_EXPORT int cmark_node_prepend_child(cmark_node *node, cmark_node *child);++/** Adds 'child' to the end of the children of 'node'.+ * Returns 1 on success, 0 on failure.+ */+CMARK_GFM_EXPORT int cmark_node_append_child(cmark_node *node, cmark_node *child);++/** Consolidates adjacent text nodes.+ */+CMARK_GFM_EXPORT void cmark_consolidate_text_nodes(cmark_node *root);++/** Ensures a node and all its children own their own chunk memory.+ */+CMARK_GFM_EXPORT void cmark_node_own(cmark_node *root);++/**+ * ## Parsing+ *+ * Simple interface:+ *+ *     cmark_node *document = cmark_parse_document("Hello *world*", 13,+ *                                                 CMARK_OPT_DEFAULT);+ *+ * Streaming interface:+ *+ *     cmark_parser *parser = cmark_parser_new(CMARK_OPT_DEFAULT);+ *     FILE *fp = fopen("myfile.md", "rb");+ *     while ((bytes = fread(buffer, 1, sizeof(buffer), fp)) > 0) {+ *     	   cmark_parser_feed(parser, buffer, bytes);+ *     	   if (bytes < sizeof(buffer)) {+ *     	       break;+ *     	   }+ *     }+ *     document = cmark_parser_finish(parser);+ *     cmark_parser_free(parser);+ */++/** Creates a new parser object.+ */+CMARK_GFM_EXPORT+cmark_parser *cmark_parser_new(int options);++/** Creates a new parser object with the given memory allocator+ */+CMARK_GFM_EXPORT+cmark_parser *cmark_parser_new_with_mem(int options, cmark_mem *mem);++/** Frees memory allocated for a parser object.+ */+CMARK_GFM_EXPORT+void cmark_parser_free(cmark_parser *parser);++/** Feeds a string of length 'len' to 'parser'.+ */+CMARK_GFM_EXPORT+void cmark_parser_feed(cmark_parser *parser, const char *buffer, size_t len);++/** Finish parsing and return a pointer to a tree of nodes.+ */+CMARK_GFM_EXPORT+cmark_node *cmark_parser_finish(cmark_parser *parser);++/** Parse a CommonMark document in 'buffer' of length 'len'.+ * Returns a pointer to a tree of nodes.  The memory allocated for+ * the node tree should be released using 'cmark_node_free'+ * when it is no longer needed.+ */+CMARK_GFM_EXPORT+cmark_node *cmark_parse_document(const char *buffer, size_t len, int options);++/** Parse a CommonMark document in file 'f', returning a pointer to+ * a tree of nodes.  The memory allocated for the node tree should be+ * released using 'cmark_node_free' when it is no longer needed.+ */+CMARK_GFM_EXPORT+cmark_node *cmark_parse_file(FILE *f, int options);++/**+ * ## Rendering+ */++/** Render a 'node' tree as XML.  It is the caller's responsibility+ * to free the returned buffer.+ */+CMARK_GFM_EXPORT+char *cmark_render_xml(cmark_node *root, int options);++/** As for 'cmark_render_xml', but specifying the allocator to use for+ * the resulting string.+ */+CMARK_GFM_EXPORT+char *cmark_render_xml_with_mem(cmark_node *root, int options, cmark_mem *mem);++/** Render a 'node' tree as an HTML fragment.  It is up to the user+ * to add an appropriate header and footer. It is the caller's+ * responsibility to free the returned buffer.+ */+CMARK_GFM_EXPORT+char *cmark_render_html(cmark_node *root, int options, cmark_llist *extensions);++/** As for 'cmark_render_html', but specifying the allocator to use for+ * the resulting string.+ */+CMARK_GFM_EXPORT+char *cmark_render_html_with_mem(cmark_node *root, int options, cmark_llist *extensions, cmark_mem *mem);++/** Render a 'node' tree as a groff man page, without the header.+ * It is the caller's responsibility to free the returned buffer.+ */+CMARK_GFM_EXPORT+char *cmark_render_man(cmark_node *root, int options, int width);++/** As for 'cmark_render_man', but specifying the allocator to use for+ * the resulting string.+ */+CMARK_GFM_EXPORT+char *cmark_render_man_with_mem(cmark_node *root, int options, int width, cmark_mem *mem);++/** Render a 'node' tree as a commonmark document.+ * It is the caller's responsibility to free the returned buffer.+ */+CMARK_GFM_EXPORT+char *cmark_render_commonmark(cmark_node *root, int options, int width);++/** As for 'cmark_render_commonmark', but specifying the allocator to use for+ * the resulting string.+ */+CMARK_GFM_EXPORT+char *cmark_render_commonmark_with_mem(cmark_node *root, int options, int width, cmark_mem *mem);++/** Render a 'node' tree as a plain text document.+ * It is the caller's responsibility to free the returned buffer.+ */+CMARK_GFM_EXPORT+char *cmark_render_plaintext(cmark_node *root, int options, int width);++/** As for 'cmark_render_plaintext', but specifying the allocator to use for+ * the resulting string.+ */+CMARK_GFM_EXPORT+char *cmark_render_plaintext_with_mem(cmark_node *root, int options, int width, cmark_mem *mem);++/** Render a 'node' tree as a LaTeX document.+ * It is the caller's responsibility to free the returned buffer.+ */+CMARK_GFM_EXPORT+char *cmark_render_latex(cmark_node *root, int options, int width);++/** As for 'cmark_render_latex', but specifying the allocator to use for+ * the resulting string.+ */+CMARK_GFM_EXPORT+char *cmark_render_latex_with_mem(cmark_node *root, int options, int width, cmark_mem *mem);++/**+ * ## Options+ */++/** Default options.+ */+#define CMARK_OPT_DEFAULT 0++/**+ * ### Options affecting rendering+ */++/** Include a `data-sourcepos` attribute on all block elements.+ */+#define CMARK_OPT_SOURCEPOS (1 << 1)++/** Render `softbreak` elements as hard line breaks.+ */+#define CMARK_OPT_HARDBREAKS (1 << 2)++/** Suppress raw HTML and unsafe links (`javascript:`, `vbscript:`,+ * `file:`, and `data:`, except for `image/png`, `image/gif`,+ * `image/jpeg`, or `image/webp` mime types).  Raw HTML is replaced+ * by a placeholder HTML comment. Unsafe links are replaced by+ * empty strings.+ */+#define CMARK_OPT_SAFE (1 << 3)++/** Render `softbreak` elements as spaces.+ */+#define CMARK_OPT_NOBREAKS (1 << 4)++/**+ * ### Options affecting parsing+ */++/** Legacy option (no effect).+ */+#define CMARK_OPT_NORMALIZE (1 << 8)++/** Validate UTF-8 in the input before parsing, replacing illegal+ * sequences with the replacement character U+FFFD.+ */+#define CMARK_OPT_VALIDATE_UTF8 (1 << 9)++/** Convert straight quotes to curly, --- to em dashes, -- to en dashes.+ */+#define CMARK_OPT_SMART (1 << 10)++/** Use GitHub-style <pre lang="x"> tags for code blocks instead of <pre><code+ * class="language-x">.+ */+#define CMARK_OPT_GITHUB_PRE_LANG (1 << 11)++/** Be liberal in interpreting inline HTML tags.+ */+#define CMARK_OPT_LIBERAL_HTML_TAG (1 << 12)++/** Parse footnotes.+ */+#define CMARK_OPT_FOOTNOTES (1 << 13)++/** Only parse strikethroughs if surrounded by exactly 2 tildes.+ * Gives some compatibility with redcarpet.+ */+#define CMARK_OPT_STRIKETHROUGH_DOUBLE_TILDE (1 << 14)++/** Use style attributes to align table cells instead of align attributes.+ */+#define CMARK_OPT_TABLE_PREFER_STYLE_ATTRIBUTES (1 << 15)++/** Include the remainder of the info string in code blocks in+ * a separate attribute.+ */+#define CMARK_OPT_FULL_INFO_STRING (1 << 16)++/**+ * ## Version information+ */++/** The library version as integer for runtime checks. Also available as+ * macro CMARK_VERSION for compile time checks.+ *+ * * Bits 16-23 contain the major version.+ * * Bits 8-15 contain the minor version.+ * * Bits 0-7 contain the patchlevel.+ *+ * In hexadecimal format, the number 0x010203 represents version 1.2.3.+ */+CMARK_GFM_EXPORT+int cmark_version(void);++/** The library version string for runtime checks. Also available as+ * macro CMARK_VERSION_STRING for compile time checks.+ */+CMARK_GFM_EXPORT+const char *cmark_version_string(void);++/** # AUTHORS+ *+ * John MacFarlane, Vicent Marti,  Kārlis Gaņģis, Nick Wellnhofer.+ */++#ifndef CMARK_NO_SHORT_NAMES+#define NODE_DOCUMENT CMARK_NODE_DOCUMENT+#define NODE_BLOCK_QUOTE CMARK_NODE_BLOCK_QUOTE+#define NODE_LIST CMARK_NODE_LIST+#define NODE_ITEM CMARK_NODE_ITEM+#define NODE_CODE_BLOCK CMARK_NODE_CODE_BLOCK+#define NODE_HTML_BLOCK CMARK_NODE_HTML_BLOCK+#define NODE_CUSTOM_BLOCK CMARK_NODE_CUSTOM_BLOCK+#define NODE_PARAGRAPH CMARK_NODE_PARAGRAPH+#define NODE_HEADING CMARK_NODE_HEADING+#define NODE_HEADER CMARK_NODE_HEADER+#define NODE_THEMATIC_BREAK CMARK_NODE_THEMATIC_BREAK+#define NODE_HRULE CMARK_NODE_HRULE+#define NODE_TEXT CMARK_NODE_TEXT+#define NODE_SOFTBREAK CMARK_NODE_SOFTBREAK+#define NODE_LINEBREAK CMARK_NODE_LINEBREAK+#define NODE_CODE CMARK_NODE_CODE+#define NODE_HTML_INLINE CMARK_NODE_HTML_INLINE+#define NODE_CUSTOM_INLINE CMARK_NODE_CUSTOM_INLINE+#define NODE_EMPH CMARK_NODE_EMPH+#define NODE_STRONG CMARK_NODE_STRONG+#define NODE_LINK CMARK_NODE_LINK+#define NODE_IMAGE CMARK_NODE_IMAGE+#define BULLET_LIST CMARK_BULLET_LIST+#define ORDERED_LIST CMARK_ORDERED_LIST+#define PERIOD_DELIM CMARK_PERIOD_DELIM+#define PAREN_DELIM CMARK_PAREN_DELIM+#endif++typedef int32_t bufsize_t;++#ifdef __cplusplus+}+#endif++#endif
+ cbits/cmark-gfm_export.h view
@@ -0,0 +1,42 @@++#ifndef CMARK_GFM_EXPORT_H+#define CMARK_GFM_EXPORT_H++#ifdef CMARK_GFM_STATIC_DEFINE+#  define CMARK_GFM_EXPORT+#  define CMARK_GFM_NO_EXPORT+#else+#  ifndef CMARK_GFM_EXPORT+#    ifdef libcmark_gfm_EXPORTS+        /* We are building this library */+#      define CMARK_GFM_EXPORT __attribute__((visibility("default")))+#    else+        /* We are using this library */+#      define CMARK_GFM_EXPORT __attribute__((visibility("default")))+#    endif+#  endif++#  ifndef CMARK_GFM_NO_EXPORT+#    define CMARK_GFM_NO_EXPORT __attribute__((visibility("hidden")))+#  endif+#endif++#ifndef CMARK_GFM_DEPRECATED+#  define CMARK_GFM_DEPRECATED __attribute__ ((__deprecated__))+#endif++#ifndef CMARK_GFM_DEPRECATED_EXPORT+#  define CMARK_GFM_DEPRECATED_EXPORT CMARK_GFM_EXPORT CMARK_GFM_DEPRECATED+#endif++#ifndef CMARK_GFM_DEPRECATED_NO_EXPORT+#  define CMARK_GFM_DEPRECATED_NO_EXPORT CMARK_GFM_NO_EXPORT CMARK_GFM_DEPRECATED+#endif++#if 0 /* DEFINE_NO_DEPRECATED */+#  ifndef CMARK_GFM_NO_DEPRECATED+#    define CMARK_GFM_NO_DEPRECATED+#  endif+#endif++#endif
+ cbits/cmark-gfm_version.h view
@@ -0,0 +1,7 @@+#ifndef CMARK_GFM_VERSION_H+#define CMARK_GFM_VERSION_H++#define CMARK_GFM_VERSION ((0 << 24) | (28 << 16) | (3 << 8) | 14)+#define CMARK_GFM_VERSION_STRING "0.28.3.gfm.14"++#endif
cbits/cmark.c view
@@ -4,15 +4,15 @@ #include "registry.h" #include "node.h" #include "houdini.h"-#include "cmark.h"+#include "cmark-gfm.h" #include "buffer.h" -cmark_node_type CMARK_NODE_LAST_BLOCK = CMARK_NODE_THEMATIC_BREAK;-cmark_node_type CMARK_NODE_LAST_INLINE = CMARK_NODE_IMAGE;+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_VERSION; }+int cmark_version() { return CMARK_GFM_VERSION; } -const char *cmark_version_string() { return CMARK_VERSION_STRING; }+const char *cmark_version_string() { return CMARK_GFM_VERSION_STRING; }  static void *xcalloc(size_t nmem, size_t size) {   void *ptr = calloc(nmem, size);
− cbits/cmark.h
@@ -1,780 +0,0 @@-#ifndef CMARK_CMARK_H-#define CMARK_CMARK_H--#include <stdio.h>-#include "cmark_export.h"-#include "cmark_version.h"--#ifdef __cplusplus-extern "C" {-#endif--/** # NAME- *- * **cmark-gfm** - CommonMark parsing, manipulating, and rendering- */--/** # DESCRIPTION- *- * ## Simple Interface- */--/** Convert 'text' (assumed to be a UTF-8 encoded string with length- * 'len') from CommonMark Markdown to HTML, returning a null-terminated,- * UTF-8-encoded string. It is the caller's responsibility- * to free the returned buffer.- */-CMARK_EXPORT-char *cmark_markdown_to_html(const char *text, size_t len, int options);--/** ## Node Structure- */--#define CMARK_NODE_TYPE_PRESENT (0x8000)-#define CMARK_NODE_TYPE_BLOCK (CMARK_NODE_TYPE_PRESENT | 0x0000)-#define CMARK_NODE_TYPE_INLINE (CMARK_NODE_TYPE_PRESENT | 0x4000)-#define CMARK_NODE_TYPE_MASK (0xc000)-#define CMARK_NODE_VALUE_MASK (0x3fff)--typedef enum {-  /* Error status */-  CMARK_NODE_NONE = 0x0000,--  /* Block */-  CMARK_NODE_DOCUMENT       = CMARK_NODE_TYPE_BLOCK | 0x0001,-  CMARK_NODE_BLOCK_QUOTE    = CMARK_NODE_TYPE_BLOCK | 0x0002,-  CMARK_NODE_LIST           = CMARK_NODE_TYPE_BLOCK | 0x0003,-  CMARK_NODE_ITEM           = CMARK_NODE_TYPE_BLOCK | 0x0004,-  CMARK_NODE_CODE_BLOCK     = CMARK_NODE_TYPE_BLOCK | 0x0005,-  CMARK_NODE_HTML_BLOCK     = CMARK_NODE_TYPE_BLOCK | 0x0006,-  CMARK_NODE_CUSTOM_BLOCK   = CMARK_NODE_TYPE_BLOCK | 0x0007,-  CMARK_NODE_PARAGRAPH      = CMARK_NODE_TYPE_BLOCK | 0x0008,-  CMARK_NODE_HEADING        = CMARK_NODE_TYPE_BLOCK | 0x0009,-  CMARK_NODE_THEMATIC_BREAK = CMARK_NODE_TYPE_BLOCK | 0x000a,--  /* Inline */-  CMARK_NODE_TEXT          = CMARK_NODE_TYPE_INLINE | 0x0001,-  CMARK_NODE_SOFTBREAK     = CMARK_NODE_TYPE_INLINE | 0x0002,-  CMARK_NODE_LINEBREAK     = CMARK_NODE_TYPE_INLINE | 0x0003,-  CMARK_NODE_CODE          = CMARK_NODE_TYPE_INLINE | 0x0004,-  CMARK_NODE_HTML_INLINE   = CMARK_NODE_TYPE_INLINE | 0x0005,-  CMARK_NODE_CUSTOM_INLINE = CMARK_NODE_TYPE_INLINE | 0x0006,-  CMARK_NODE_EMPH          = CMARK_NODE_TYPE_INLINE | 0x0007,-  CMARK_NODE_STRONG        = CMARK_NODE_TYPE_INLINE | 0x0008,-  CMARK_NODE_LINK          = CMARK_NODE_TYPE_INLINE | 0x0009,-  CMARK_NODE_IMAGE         = CMARK_NODE_TYPE_INLINE | 0x000a,-} cmark_node_type;--extern cmark_node_type CMARK_NODE_LAST_BLOCK;-extern cmark_node_type CMARK_NODE_LAST_INLINE;--/* For backwards compatibility: */-#define CMARK_NODE_HEADER CMARK_NODE_HEADING-#define CMARK_NODE_HRULE CMARK_NODE_THEMATIC_BREAK-#define CMARK_NODE_HTML CMARK_NODE_HTML_BLOCK-#define CMARK_NODE_INLINE_HTML CMARK_NODE_HTML_INLINE--typedef enum {-  CMARK_NO_LIST,-  CMARK_BULLET_LIST,-  CMARK_ORDERED_LIST-} cmark_list_type;--typedef enum {-  CMARK_NO_DELIM,-  CMARK_PERIOD_DELIM,-  CMARK_PAREN_DELIM-} cmark_delim_type;--typedef struct cmark_node cmark_node;-typedef struct cmark_parser cmark_parser;-typedef struct cmark_iter cmark_iter;--/**- * ## Custom memory allocator support- */--/** Defines the memory allocation functions to be used by CMark- * when parsing and allocating a document tree- */-typedef struct cmark_mem {-  void *(*calloc)(size_t, size_t);-  void *(*realloc)(void *, size_t);-  void (*free)(void *);-} cmark_mem;--/** The default memory allocator; uses the system's calloc,- * realloc and free.- */-CMARK_EXPORT-cmark_mem *cmark_get_default_mem_allocator();--/** An arena allocator; uses system calloc to allocate large- * slabs of memory.  Memory in these slabs is not reused at all.- */-CMARK_EXPORT-cmark_mem *cmark_get_arena_mem_allocator();--/** Resets the arena allocator, quickly returning all used memory- * to the operating system.- */-CMARK_EXPORT-void cmark_arena_reset(void);--/** Callback for freeing user data with a 'cmark_mem' context.- */-typedef void (*cmark_free_func) (cmark_mem *mem, void *user_data);---/*- * ## Basic data structures- *- * To keep dependencies to the strict minimum, libcmark implements- * its own versions of "classic" data structures.- */--/**- * ### Linked list- */--/** A generic singly linked list.- */-typedef struct _cmark_llist-{-  struct _cmark_llist *next;-  void         *data;-} cmark_llist;--/** Append an element to the linked list, return the possibly modified- * head of the list.- */-CMARK_EXPORT-cmark_llist * cmark_llist_append    (cmark_mem         * mem,-                                     cmark_llist       * head,-                                     void              * data);--/** Free the list starting with 'head', calling 'free_func' with the- *  data pointer of each of its elements- */-CMARK_EXPORT-void          cmark_llist_free_full (cmark_mem         * mem,-                                     cmark_llist       * head,-                                     cmark_free_func     free_func);--/** Free the list starting with 'head'- */-CMARK_EXPORT-void          cmark_llist_free      (cmark_mem         * mem,-                                     cmark_llist       * head);--/**- * ## Creating and Destroying Nodes- */--/** Creates a new node of type 'type'.  Note that the node may have- * other required properties, which it is the caller's responsibility- * to assign.- */-CMARK_EXPORT cmark_node *cmark_node_new(cmark_node_type type);--/** Same as `cmark_node_new`, but explicitly listing the memory- * allocator used to allocate the node.  Note:  be sure to use the same- * allocator for every node in a tree, or bad things can happen.- */-CMARK_EXPORT cmark_node *cmark_node_new_with_mem(cmark_node_type type,-                                                 cmark_mem *mem);--/** Frees the memory allocated for a node and any children.- */-CMARK_EXPORT void cmark_node_free(cmark_node *node);--/**- * ## Tree Traversal- */--/** Returns the next node in the sequence after 'node', or NULL if- * there is none.- */-CMARK_EXPORT cmark_node *cmark_node_next(cmark_node *node);--/** Returns the previous node in the sequence after 'node', or NULL if- * there is none.- */-CMARK_EXPORT cmark_node *cmark_node_previous(cmark_node *node);--/** Returns the parent of 'node', or NULL if there is none.- */-CMARK_EXPORT cmark_node *cmark_node_parent(cmark_node *node);--/** Returns the first child of 'node', or NULL if 'node' has no children.- */-CMARK_EXPORT cmark_node *cmark_node_first_child(cmark_node *node);--/** Returns the last child of 'node', or NULL if 'node' has no children.- */-CMARK_EXPORT cmark_node *cmark_node_last_child(cmark_node *node);--/**- * ## Iterator- *- * An iterator will walk through a tree of nodes, starting from a root- * node, returning one node at a time, together with information about- * whether the node is being entered or exited.  The iterator will- * first descend to a child node, if there is one.  When there is no- * child, the iterator will go to the next sibling.  When there is no- * next sibling, the iterator will return to the parent (but with- * a 'cmark_event_type' of `CMARK_EVENT_EXIT`).  The iterator will- * return `CMARK_EVENT_DONE` when it reaches the root node again.- * One natural application is an HTML renderer, where an `ENTER` event- * outputs an open tag and an `EXIT` event outputs a close tag.- * An iterator might also be used to transform an AST in some systematic- * way, for example, turning all level-3 headings into regular paragraphs.- *- *     void- *     usage_example(cmark_node *root) {- *         cmark_event_type ev_type;- *         cmark_iter *iter = cmark_iter_new(root);- *- *         while ((ev_type = cmark_iter_next(iter)) != CMARK_EVENT_DONE) {- *             cmark_node *cur = cmark_iter_get_node(iter);- *             // Do something with `cur` and `ev_type`- *         }- *- *         cmark_iter_free(iter);- *     }- *- * Iterators will never return `EXIT` events for leaf nodes, which are nodes- * of type:- *- * * CMARK_NODE_HTML_BLOCK- * * CMARK_NODE_THEMATIC_BREAK- * * CMARK_NODE_CODE_BLOCK- * * CMARK_NODE_TEXT- * * CMARK_NODE_SOFTBREAK- * * CMARK_NODE_LINEBREAK- * * CMARK_NODE_CODE- * * CMARK_NODE_HTML_INLINE- *- * Nodes must only be modified after an `EXIT` event, or an `ENTER` event for- * leaf nodes.- */--typedef enum {-  CMARK_EVENT_NONE,-  CMARK_EVENT_DONE,-  CMARK_EVENT_ENTER,-  CMARK_EVENT_EXIT-} cmark_event_type;--/** Creates a new iterator starting at 'root'.  The current node and event- * type are undefined until 'cmark_iter_next' is called for the first time.- * The memory allocated for the iterator should be released using- * 'cmark_iter_free' when it is no longer needed.- */-CMARK_EXPORT-cmark_iter *cmark_iter_new(cmark_node *root);--/** Frees the memory allocated for an iterator.- */-CMARK_EXPORT-void cmark_iter_free(cmark_iter *iter);--/** Advances to the next node and returns the event type (`CMARK_EVENT_ENTER`,- * `CMARK_EVENT_EXIT` or `CMARK_EVENT_DONE`).- */-CMARK_EXPORT-cmark_event_type cmark_iter_next(cmark_iter *iter);--/** Returns the current node.- */-CMARK_EXPORT-cmark_node *cmark_iter_get_node(cmark_iter *iter);--/** Returns the current event type.- */-CMARK_EXPORT-cmark_event_type cmark_iter_get_event_type(cmark_iter *iter);--/** Returns the root node.- */-CMARK_EXPORT-cmark_node *cmark_iter_get_root(cmark_iter *iter);--/** Resets the iterator so that the current node is 'current' and- * the event type is 'event_type'.  The new current node must be a- * descendant of the root node or the root node itself.- */-CMARK_EXPORT-void cmark_iter_reset(cmark_iter *iter, cmark_node *current,-                      cmark_event_type event_type);--/**- * ## Accessors- */--/** Returns the user data of 'node'.- */-CMARK_EXPORT void *cmark_node_get_user_data(cmark_node *node);--/** Sets arbitrary user data for 'node'.  Returns 1 on success,- * 0 on failure.- */-CMARK_EXPORT int cmark_node_set_user_data(cmark_node *node, void *user_data);--/** Set free function for user data */-CMARK_EXPORT-int cmark_node_set_user_data_free_func(cmark_node *node,-                                        cmark_free_func free_func);--/** Returns the type of 'node', or `CMARK_NODE_NONE` on error.- */-CMARK_EXPORT cmark_node_type cmark_node_get_type(cmark_node *node);--/** Like 'cmark_node_get_type', but returns a string representation-    of the type, or `"<unknown>"`.- */-CMARK_EXPORT-const char *cmark_node_get_type_string(cmark_node *node);--/** Returns the string contents of 'node', or an empty-    string if none is set.  Returns NULL if called on a-    node that does not have string content.- */-CMARK_EXPORT const char *cmark_node_get_literal(cmark_node *node);--/** Sets the string contents of 'node'.  Returns 1 on success,- * 0 on failure.- */-CMARK_EXPORT int cmark_node_set_literal(cmark_node *node, const char *content);--/** Returns the heading level of 'node', or 0 if 'node' is not a heading.- */-CMARK_EXPORT int cmark_node_get_heading_level(cmark_node *node);--/* For backwards compatibility */-#define cmark_node_get_header_level cmark_node_get_heading_level-#define cmark_node_set_header_level cmark_node_set_heading_level--/** Sets the heading level of 'node', returning 1 on success and 0 on error.- */-CMARK_EXPORT int cmark_node_set_heading_level(cmark_node *node, int level);--/** Returns the list type of 'node', or `CMARK_NO_LIST` if 'node'- * is not a list.- */-CMARK_EXPORT cmark_list_type cmark_node_get_list_type(cmark_node *node);--/** Sets the list type of 'node', returning 1 on success and 0 on error.- */-CMARK_EXPORT int cmark_node_set_list_type(cmark_node *node,-                                          cmark_list_type type);--/** Returns the list delimiter type of 'node', or `CMARK_NO_DELIM` if 'node'- * is not a list.- */-CMARK_EXPORT cmark_delim_type cmark_node_get_list_delim(cmark_node *node);--/** Sets the list delimiter type of 'node', returning 1 on success and 0- * on error.- */-CMARK_EXPORT int cmark_node_set_list_delim(cmark_node *node,-                                           cmark_delim_type delim);--/** Returns starting number of 'node', if it is an ordered list, otherwise 0.- */-CMARK_EXPORT int cmark_node_get_list_start(cmark_node *node);--/** Sets starting number of 'node', if it is an ordered list. Returns 1- * on success, 0 on failure.- */-CMARK_EXPORT int cmark_node_set_list_start(cmark_node *node, int start);--/** Returns 1 if 'node' is a tight list, 0 otherwise.- */-CMARK_EXPORT int cmark_node_get_list_tight(cmark_node *node);--/** Sets the "tightness" of a list.  Returns 1 on success, 0 on failure.- */-CMARK_EXPORT int cmark_node_set_list_tight(cmark_node *node, int tight);--/** Returns the info string from a fenced code block.- */-CMARK_EXPORT const char *cmark_node_get_fence_info(cmark_node *node);--/** Sets the info string in a fenced code block, returning 1 on- * success and 0 on failure.- */-CMARK_EXPORT int cmark_node_set_fence_info(cmark_node *node, const char *info);--/** Sets code blocks fencing details- */-CMARK_EXPORT int cmark_node_set_fenced(cmark_node * node, int fenced,-    int length, int offset, char character);--/** Returns code blocks fencing details- */-CMARK_EXPORT int cmark_node_get_fenced(cmark_node *node, int *length, int *offset, char *character);--/** Returns the URL of a link or image 'node', or an empty string-    if no URL is set.  Returns NULL if called on a node that is-    not a link or image.- */-CMARK_EXPORT const char *cmark_node_get_url(cmark_node *node);--/** Sets the URL of a link or image 'node'. Returns 1 on success,- * 0 on failure.- */-CMARK_EXPORT int cmark_node_set_url(cmark_node *node, const char *url);--/** Returns the title of a link or image 'node', or an empty-    string if no title is set.  Returns NULL if called on a node-    that is not a link or image.- */-CMARK_EXPORT const char *cmark_node_get_title(cmark_node *node);--/** Sets the title of a link or image 'node'. Returns 1 on success,- * 0 on failure.- */-CMARK_EXPORT int cmark_node_set_title(cmark_node *node, const char *title);--/** Returns the literal "on enter" text for a custom 'node', or-    an empty string if no on_enter is set.  Returns NULL if called-    on a non-custom node.- */-CMARK_EXPORT const char *cmark_node_get_on_enter(cmark_node *node);--/** Sets the literal text to render "on enter" for a custom 'node'.-    Any children of the node will be rendered after this text.-    Returns 1 on success 0 on failure.- */-CMARK_EXPORT int cmark_node_set_on_enter(cmark_node *node,-                                         const char *on_enter);--/** Returns the literal "on exit" text for a custom 'node', or-    an empty string if no on_exit is set.  Returns NULL if-    called on a non-custom node.- */-CMARK_EXPORT const char *cmark_node_get_on_exit(cmark_node *node);--/** Sets the literal text to render "on exit" for a custom 'node'.-    Any children of the node will be rendered before this text.-    Returns 1 on success 0 on failure.- */-CMARK_EXPORT int cmark_node_set_on_exit(cmark_node *node, const char *on_exit);--/** Returns the line on which 'node' begins.- */-CMARK_EXPORT int cmark_node_get_start_line(cmark_node *node);--/** Returns the column at which 'node' begins.- */-CMARK_EXPORT int cmark_node_get_start_column(cmark_node *node);--/** Returns the line on which 'node' ends.- */-CMARK_EXPORT int cmark_node_get_end_line(cmark_node *node);--/** Returns the column at which 'node' ends.- */-CMARK_EXPORT int cmark_node_get_end_column(cmark_node *node);--/**- * ## Tree Manipulation- */--/** Unlinks a 'node', removing it from the tree, but not freeing its- * memory.  (Use 'cmark_node_free' for that.)- */-CMARK_EXPORT void cmark_node_unlink(cmark_node *node);--/** Inserts 'sibling' before 'node'.  Returns 1 on success, 0 on failure.- */-CMARK_EXPORT int cmark_node_insert_before(cmark_node *node,-                                          cmark_node *sibling);--/** Inserts 'sibling' after 'node'. Returns 1 on success, 0 on failure.- */-CMARK_EXPORT int cmark_node_insert_after(cmark_node *node, cmark_node *sibling);--/** Replaces 'oldnode' with 'newnode' and unlinks 'oldnode' (but does- * not free its memory).- * Returns 1 on success, 0 on failure.- */-CMARK_EXPORT int cmark_node_replace(cmark_node *oldnode, cmark_node *newnode);--/** Adds 'child' to the beginning of the children of 'node'.- * Returns 1 on success, 0 on failure.- */-CMARK_EXPORT int cmark_node_prepend_child(cmark_node *node, cmark_node *child);--/** Adds 'child' to the end of the children of 'node'.- * Returns 1 on success, 0 on failure.- */-CMARK_EXPORT int cmark_node_append_child(cmark_node *node, cmark_node *child);--/** Consolidates adjacent text nodes.- */-CMARK_EXPORT void cmark_consolidate_text_nodes(cmark_node *root);--/** Ensures a node and all its children own their own chunk memory.- */-CMARK_EXPORT void cmark_node_own(cmark_node *root);--/**- * ## Parsing- *- * Simple interface:- *- *     cmark_node *document = cmark_parse_document("Hello *world*", 13,- *                                                 CMARK_OPT_DEFAULT);- *- * Streaming interface:- *- *     cmark_parser *parser = cmark_parser_new(CMARK_OPT_DEFAULT);- *     FILE *fp = fopen("myfile.md", "rb");- *     while ((bytes = fread(buffer, 1, sizeof(buffer), fp)) > 0) {- *     	   cmark_parser_feed(parser, buffer, bytes);- *     	   if (bytes < sizeof(buffer)) {- *     	       break;- *     	   }- *     }- *     document = cmark_parser_finish(parser);- *     cmark_parser_free(parser);- */--/** Creates a new parser object.- */-CMARK_EXPORT-cmark_parser *cmark_parser_new(int options);--/** Creates a new parser object with the given memory allocator- */-CMARK_EXPORT-cmark_parser *cmark_parser_new_with_mem(int options, cmark_mem *mem);--/** Frees memory allocated for a parser object.- */-CMARK_EXPORT-void cmark_parser_free(cmark_parser *parser);--/** Feeds a string of length 'len' to 'parser'.- */-CMARK_EXPORT-void cmark_parser_feed(cmark_parser *parser, const char *buffer, size_t len);--/** Finish parsing and return a pointer to a tree of nodes.- */-CMARK_EXPORT-cmark_node *cmark_parser_finish(cmark_parser *parser);--/** Parse a CommonMark document in 'buffer' of length 'len'.- * Returns a pointer to a tree of nodes.  The memory allocated for- * the node tree should be released using 'cmark_node_free'- * when it is no longer needed.- */-CMARK_EXPORT-cmark_node *cmark_parse_document(const char *buffer, size_t len, int options);--/** Parse a CommonMark document in file 'f', returning a pointer to- * a tree of nodes.  The memory allocated for the node tree should be- * released using 'cmark_node_free' when it is no longer needed.- */-CMARK_EXPORT-cmark_node *cmark_parse_file(FILE *f, int options);--/**- * ## Rendering- */--/** Render a 'node' tree as XML.  It is the caller's responsibility- * to free the returned buffer.- */-CMARK_EXPORT-char *cmark_render_xml(cmark_node *root, int options);--/** As for 'cmark_render_xml', but specifying the allocator to use for- * the resulting string.- */-CMARK_EXPORT-char *cmark_render_xml_with_mem(cmark_node *root, int options, cmark_mem *mem);--/** Render a 'node' tree as an HTML fragment.  It is up to the user- * to add an appropriate header and footer. It is the caller's- * responsibility to free the returned buffer.- */-CMARK_EXPORT-char *cmark_render_html(cmark_node *root, int options, cmark_llist *extensions);--/** As for 'cmark_render_html', but specifying the allocator to use for- * the resulting string.- */-CMARK_EXPORT-char *cmark_render_html_with_mem(cmark_node *root, int options, cmark_llist *extensions, cmark_mem *mem);--/** Render a 'node' tree as a groff man page, without the header.- * It is the caller's responsibility to free the returned buffer.- */-CMARK_EXPORT-char *cmark_render_man(cmark_node *root, int options, int width);--/** As for 'cmark_render_man', but specifying the allocator to use for- * the resulting string.- */-CMARK_EXPORT-char *cmark_render_man_with_mem(cmark_node *root, int options, int width, cmark_mem *mem);--/** Render a 'node' tree as a commonmark document.- * It is the caller's responsibility to free the returned buffer.- */-CMARK_EXPORT-char *cmark_render_commonmark(cmark_node *root, int options, int width);--/** As for 'cmark_render_commonmark', but specifying the allocator to use for- * the resulting string.- */-CMARK_EXPORT-char *cmark_render_commonmark_with_mem(cmark_node *root, int options, int width, cmark_mem *mem);--/** Render a 'node' tree as a plain text document.- * It is the caller's responsibility to free the returned buffer.- */-CMARK_EXPORT-char *cmark_render_plaintext(cmark_node *root, int options, int width);--/** As for 'cmark_render_plaintext', but specifying the allocator to use for- * the resulting string.- */-CMARK_EXPORT-char *cmark_render_plaintext_with_mem(cmark_node *root, int options, int width, cmark_mem *mem);--/** Render a 'node' tree as a LaTeX document.- * It is the caller's responsibility to free the returned buffer.- */-CMARK_EXPORT-char *cmark_render_latex(cmark_node *root, int options, int width);--/** As for 'cmark_render_latex', but specifying the allocator to use for- * the resulting string.- */-CMARK_EXPORT-char *cmark_render_latex_with_mem(cmark_node *root, int options, int width, cmark_mem *mem);--/**- * ## Options- */--/** Default options.- */-#define CMARK_OPT_DEFAULT 0--/**- * ### Options affecting rendering- */--/** Include a `data-sourcepos` attribute on all block elements.- */-#define CMARK_OPT_SOURCEPOS (1 << 1)--/** Render `softbreak` elements as hard line breaks.- */-#define CMARK_OPT_HARDBREAKS (1 << 2)--/** Suppress raw HTML and unsafe links (`javascript:`, `vbscript:`,- * `file:`, and `data:`, except for `image/png`, `image/gif`,- * `image/jpeg`, or `image/webp` mime types).  Raw HTML is replaced- * by a placeholder HTML comment. Unsafe links are replaced by- * empty strings.- */-#define CMARK_OPT_SAFE (1 << 3)--/** Render `softbreak` elements as spaces.- */-#define CMARK_OPT_NOBREAKS (1 << 4)--/**- * ### Options affecting parsing- */--/** Legacy option (no effect).- */-#define CMARK_OPT_NORMALIZE (1 << 8)--/** Validate UTF-8 in the input before parsing, replacing illegal- * sequences with the replacement character U+FFFD.- */-#define CMARK_OPT_VALIDATE_UTF8 (1 << 9)--/** Convert straight quotes to curly, --- to em dashes, -- to en dashes.- */-#define CMARK_OPT_SMART (1 << 10)--/** Use GitHub-style <pre lang="x"> tags for code blocks instead of <pre><code- * class="language-x">.- */-#define CMARK_OPT_GITHUB_PRE_LANG (1 << 11)--/** Be liberal in interpreting inline HTML tags.- */-#define CMARK_OPT_LIBERAL_HTML_TAG (1 << 12)--/**- * ## Version information- */--/** The library version as integer for runtime checks. Also available as- * macro CMARK_VERSION for compile time checks.- *- * * Bits 16-23 contain the major version.- * * Bits 8-15 contain the minor version.- * * Bits 0-7 contain the patchlevel.- *- * In hexadecimal format, the number 0x010203 represents version 1.2.3.- */-CMARK_EXPORT-int cmark_version(void);--/** The library version string for runtime checks. Also available as- * macro CMARK_VERSION_STRING for compile time checks.- */-CMARK_EXPORT-const char *cmark_version_string(void);--/** # AUTHORS- *- * John MacFarlane, Vicent Marti,  Kārlis Gaņģis, Nick Wellnhofer.- */--#ifndef CMARK_NO_SHORT_NAMES-#define NODE_DOCUMENT CMARK_NODE_DOCUMENT-#define NODE_BLOCK_QUOTE CMARK_NODE_BLOCK_QUOTE-#define NODE_LIST CMARK_NODE_LIST-#define NODE_ITEM CMARK_NODE_ITEM-#define NODE_CODE_BLOCK CMARK_NODE_CODE_BLOCK-#define NODE_HTML_BLOCK CMARK_NODE_HTML_BLOCK-#define NODE_CUSTOM_BLOCK CMARK_NODE_CUSTOM_BLOCK-#define NODE_PARAGRAPH CMARK_NODE_PARAGRAPH-#define NODE_HEADING CMARK_NODE_HEADING-#define NODE_HEADER CMARK_NODE_HEADER-#define NODE_THEMATIC_BREAK CMARK_NODE_THEMATIC_BREAK-#define NODE_HRULE CMARK_NODE_HRULE-#define NODE_TEXT CMARK_NODE_TEXT-#define NODE_SOFTBREAK CMARK_NODE_SOFTBREAK-#define NODE_LINEBREAK CMARK_NODE_LINEBREAK-#define NODE_CODE CMARK_NODE_CODE-#define NODE_HTML_INLINE CMARK_NODE_HTML_INLINE-#define NODE_CUSTOM_INLINE CMARK_NODE_CUSTOM_INLINE-#define NODE_EMPH CMARK_NODE_EMPH-#define NODE_STRONG CMARK_NODE_STRONG-#define NODE_LINK CMARK_NODE_LINK-#define NODE_IMAGE CMARK_NODE_IMAGE-#define BULLET_LIST CMARK_BULLET_LIST-#define ORDERED_LIST CMARK_ORDERED_LIST-#define PERIOD_DELIM CMARK_PERIOD_DELIM-#define PAREN_DELIM CMARK_PAREN_DELIM-#endif--#ifdef __cplusplus-}-#endif--#endif
cbits/cmark_ctype.h view
@@ -5,25 +5,25 @@ extern "C" { #endif -#include "cmark_export.h"+#include "cmark-gfm_export.h"  /** Locale-independent versions of functions from ctype.h.  * We want cmark to behave the same no matter what the system locale.  */ -CMARK_EXPORT+CMARK_GFM_EXPORT int cmark_isspace(char c); -CMARK_EXPORT+CMARK_GFM_EXPORT int cmark_ispunct(char c); -CMARK_EXPORT+CMARK_GFM_EXPORT int cmark_isalnum(char c); -CMARK_EXPORT+CMARK_GFM_EXPORT int cmark_isdigit(char c); -CMARK_EXPORT+CMARK_GFM_EXPORT int cmark_isalpha(char c);  #ifdef __cplusplus
− cbits/cmark_export.h
@@ -1,42 +0,0 @@--#ifndef CMARK_EXPORT_H-#define CMARK_EXPORT_H--#ifdef CMARK_STATIC_DEFINE-#  define CMARK_EXPORT-#  define CMARK_NO_EXPORT-#else-#  ifndef CMARK_EXPORT-#    ifdef libcmark_gfm_EXPORTS-        /* We are building this library */-#      define CMARK_EXPORT __attribute__((visibility("default")))-#    else-        /* We are using this library */-#      define CMARK_EXPORT __attribute__((visibility("default")))-#    endif-#  endif--#  ifndef CMARK_NO_EXPORT-#    define CMARK_NO_EXPORT __attribute__((visibility("hidden")))-#  endif-#endif--#ifndef CMARK_DEPRECATED-#  define CMARK_DEPRECATED __attribute__ ((__deprecated__))-#endif--#ifndef CMARK_DEPRECATED_EXPORT-#  define CMARK_DEPRECATED_EXPORT CMARK_EXPORT CMARK_DEPRECATED-#endif--#ifndef CMARK_DEPRECATED_NO_EXPORT-#  define CMARK_DEPRECATED_NO_EXPORT CMARK_NO_EXPORT CMARK_DEPRECATED-#endif--#if 0 /* DEFINE_NO_DEPRECATED */-#  ifndef CMARK_NO_DEPRECATED-#    define CMARK_NO_DEPRECATED-#  endif-#endif--#endif
− cbits/cmark_extension_api.h
@@ -1,714 +0,0 @@-#ifndef CMARK_CMARK_EXTENSION_API_H-#define CMARK_CMARK_EXTENSION_API_H--#ifdef __cplusplus-extern "C" {-#endif--#include <cmark.h>-#include <render.h>-#include <buffer.h>--/**- * ## Extension Support- *- * While the "core" of libcmark is strictly compliant with the- * specification, an API is provided for extension writers to- * hook into the parsing process.- *- * It should be noted that the cmark_node API already offers- * room for customization, with methods offered to traverse and- * modify the AST, and even define custom blocks.- * When the desired customization is achievable in an error-proof- * way using that API, it should be the preferred method.- *- * The following API requires a more in-depth understanding- * of libcmark's parsing strategy, which is exposed- * [here](http://spec.commonmark.org/0.24/#appendix-a-parsing-strategy).- *- * It should be used when "a posteriori" modification of the AST- * proves to be too difficult / impossible to implement correctly.- *- * It can also serve as an intermediary step before extending- * the specification, as an extension implemented using this API- * will be trivially integrated in the core if it proves to be- * desirable.- */--typedef struct cmark_plugin cmark_plugin;--/** A syntax extension that can be attached to a cmark_parser- * with cmark_parser_attach_syntax_extension().- *- * Extension writers should assign functions matching- * the signature of the following 'virtual methods' to- * implement new functionality.- *- * Their calling order and expected behaviour match the procedure outlined- * at <http://spec.commonmark.org/0.24/#phase-1-block-structure>:- *- * During step 1, cmark will call the function provided through- * 'cmark_syntax_extension_set_match_block_func' when it- * iterates over an open block created by this extension,- * to determine  whether it could contain the new line.- * If no function was provided, cmark will close the block.- *- * During step 2, if and only if the new line doesn't match any- * of the standard syntax rules, cmark will call the function- * provided through 'cmark_syntax_extension_set_open_block_func'- * to let the extension determine whether that new line matches- * one of its syntax rules.- * It is the responsibility of the parser to create and add the- * new block with cmark_parser_make_block and cmark_parser_add_child.- * If no function was provided is NULL, the extension will have- * no effect at all on the final block structure of the AST.- *- * #### Inline parsing phase hooks- *- * For each character provided by the extension through- * 'cmark_syntax_extension_set_special_inline_chars',- * the function provided by the extension through- * 'cmark_syntax_extension_set_match_inline_func'- * will get called, it is the responsibility of the extension- * to scan the characters located at the current inline parsing offset- * with the cmark_inline_parser API.- *- * Depending on the type of the extension, it can either:- *- * * Scan forward, determine that the syntax matches and return- *   a newly-created inline node with the appropriate type.- *   This is the technique that would be used if inline code- *   (with backticks) was implemented as an extension.- * * Scan only the character(s) that its syntax rules require- *   for opening and closing nodes, push a delimiter on the- *   delimiter stack, and return a simple text node with its- *   contents set to the character(s) consumed.- *   This is the technique that would be used if emphasis- *   inlines were implemented as an extension.- *- * When an extension has pushed delimiters on the stack,- * the function provided through- * 'cmark_syntax_extension_set_inline_from_delim_func'- * will get called in a latter phase,- * when the inline parser has matched opener and closer delimiters- * created by the extension together.- *- * It is then the responsibility of the extension to modify- * and populate the opener inline text node, and to remove- * the necessary delimiters from the delimiter stack.- *- * Finally, the extension should return NULL if its scan didn't- * match its syntax rules.- *- * The extension can store whatever private data it might need- * with 'cmark_syntax_extension_set_private',- * and optionally define a free function for this data.- */-typedef struct cmark_syntax_extension cmark_syntax_extension;--typedef struct subject cmark_inline_parser;--/** Exposed raw for now */--typedef struct delimiter {-  struct delimiter *previous;-  struct delimiter *next;-  cmark_node *inl_text;-  bufsize_t length;-  unsigned char delim_char;-  int can_open;-  int can_close;-} delimiter;--/**- * ### Plugin API.- *- * Extensions should be distributed as dynamic libraries,- * with a single exported function named after the distributed- * filename.- *- * When discovering extensions (see cmark_init), cmark will- * try to load a symbol named "init_{{filename}}" in all the- * dynamic libraries it encounters.- *- * For example, given a dynamic library named myextension.so- * (or myextension.dll), cmark will try to load the symbol- * named "init_myextension". This means that the filename- * must lend itself to forming a valid C identifier, with- * the notable exception of dashes, which will be translated- * to underscores, which means cmark will look for a function- * named "init_my_extension" if it encounters a dynamic library- * named "my-extension.so".- *- * See the 'cmark_plugin_init_func' typedef for the exact prototype- * this function should follow.- *- * For now the extensibility of cmark is not complete, as- * it only offers API to hook into the block parsing phase- * (<http://spec.commonmark.org/0.24/#phase-1-block-structure>).- *- * See 'cmark_plugin_register_syntax_extension' for more information.- */--/** The prototype plugins' init function should follow.- */-typedef int (*cmark_plugin_init_func)(cmark_plugin *plugin);--/** Register a syntax 'extension' with the 'plugin', it will be made- * available as an extension and, if attached to a cmark_parser- * with 'cmark_parser_attach_syntax_extension', it will contribute- * to the block parsing process.- *- * See the documentation for 'cmark_syntax_extension' for information- * on how to implement one.- *- * This function will typically be called from the init function- * of external modules.- *- * This takes ownership of 'extension', one should not call- * 'cmark_syntax_extension_free' on a registered extension.- */-CMARK_EXPORT-int cmark_plugin_register_syntax_extension(cmark_plugin *plugin,-                                            cmark_syntax_extension *extension);--/** This will search for the syntax extension named 'name' among the- *  registered syntax extensions.- *- *  It can then be attached to a cmark_parser- *  with the cmark_parser_attach_syntax_extension method.- */-CMARK_EXPORT-cmark_syntax_extension *cmark_find_syntax_extension(const char *name);--/** Should create and add a new open block to 'parent_container' if- * 'input' matches a syntax rule for that block type. It is allowed- * to modify the type of 'parent_container'.- *- * Should return the newly created block if there is one, or- * 'parent_container' if its type was modified, or NULL.- */-typedef cmark_node * (*cmark_open_block_func) (cmark_syntax_extension *extension,-                                       int indented,-                                       cmark_parser *parser,-                                       cmark_node *parent_container,-                                       unsigned char *input,-                                       int len);--typedef cmark_node *(*cmark_match_inline_func)(cmark_syntax_extension *extension,-                                       cmark_parser *parser,-                                       cmark_node *parent,-                                       unsigned char character,-                                       cmark_inline_parser *inline_parser);--typedef delimiter *(*cmark_inline_from_delim_func)(cmark_syntax_extension *extension,-                                           cmark_parser *parser,-                                           cmark_inline_parser *inline_parser,-                                           delimiter *opener,-                                           delimiter *closer);--/** Should return 'true' if 'input' can be contained in 'container',- *  'false' otherwise.- */-typedef int (*cmark_match_block_func)        (cmark_syntax_extension *extension,-                                       cmark_parser *parser,-                                       unsigned char *input,-                                       int len,-                                       cmark_node *container);--typedef const char *(*cmark_get_type_string_func) (cmark_syntax_extension *extension,-                                                   cmark_node *node);--typedef int (*cmark_can_contain_func) (cmark_syntax_extension *extension,-                                       cmark_node *node,-                                       cmark_node_type child);--typedef int (*cmark_contains_inlines_func) (cmark_syntax_extension *extension,-                                            cmark_node *node);--typedef void (*cmark_common_render_func) (cmark_syntax_extension *extension,-                                          cmark_renderer *renderer,-                                          cmark_node *node,-                                          cmark_event_type ev_type,-                                          int options);--typedef int (*cmark_commonmark_escape_func) (cmark_syntax_extension *extension,-                                              cmark_node *node,-                                              int c);--typedef void (*cmark_html_render_func) (cmark_syntax_extension *extension,-                                        cmark_html_renderer *renderer,-                                        cmark_node *node,-                                        cmark_event_type ev_type,-                                        int options);--typedef int (*cmark_html_filter_func) (cmark_syntax_extension *extension,-                                       const unsigned char *tag,-                                       size_t tag_len);--typedef cmark_node *(*cmark_postprocess_func) (cmark_syntax_extension *extension,-                                               cmark_parser *parser,-                                               cmark_node *root);--typedef int (*cmark_ispunct_func) (char c);--typedef void (*cmark_opaque_free_func) (cmark_syntax_extension *extension,-                                        cmark_mem *mem,-                                        cmark_node *node);--/** Free a cmark_syntax_extension.- */-CMARK_EXPORT-void cmark_syntax_extension_free               (cmark_mem *mem, cmark_syntax_extension *extension);--/** Return a newly-constructed cmark_syntax_extension, named 'name'.- */-CMARK_EXPORT-cmark_syntax_extension *cmark_syntax_extension_new (const char *name);--CMARK_EXPORT-cmark_node_type cmark_syntax_extension_add_node(int is_inline);--/** See the documentation for 'cmark_syntax_extension'- */-CMARK_EXPORT-void cmark_syntax_extension_set_open_block_func(cmark_syntax_extension *extension,-                                                cmark_open_block_func func);--/** See the documentation for 'cmark_syntax_extension'- */-CMARK_EXPORT-void cmark_syntax_extension_set_match_block_func(cmark_syntax_extension *extension,-                                                 cmark_match_block_func func);--/** See the documentation for 'cmark_syntax_extension'- */-CMARK_EXPORT-void cmark_syntax_extension_set_match_inline_func(cmark_syntax_extension *extension,-                                                  cmark_match_inline_func func);--/** See the documentation for 'cmark_syntax_extension'- */-CMARK_EXPORT-void cmark_syntax_extension_set_inline_from_delim_func(cmark_syntax_extension *extension,-                                                       cmark_inline_from_delim_func func);--/** See the documentation for 'cmark_syntax_extension'- */-CMARK_EXPORT-void cmark_syntax_extension_set_special_inline_chars(cmark_syntax_extension *extension,-                                                     cmark_llist *special_chars);--/** See the documentation for 'cmark_syntax_extension'- */-CMARK_EXPORT-void cmark_syntax_extension_set_get_type_string_func(cmark_syntax_extension *extension,-                                                     cmark_get_type_string_func func);--/** See the documentation for 'cmark_syntax_extension'- */-CMARK_EXPORT-void cmark_syntax_extension_set_can_contain_func(cmark_syntax_extension *extension,-                                                 cmark_can_contain_func func);--/** See the documentation for 'cmark_syntax_extension'- */-CMARK_EXPORT-void cmark_syntax_extension_set_contains_inlines_func(cmark_syntax_extension *extension,-                                                      cmark_contains_inlines_func func);--/** See the documentation for 'cmark_syntax_extension'- */-CMARK_EXPORT-void cmark_syntax_extension_set_commonmark_render_func(cmark_syntax_extension *extension,-                                                       cmark_common_render_func func);--/** See the documentation for 'cmark_syntax_extension'- */-CMARK_EXPORT-void cmark_syntax_extension_set_plaintext_render_func(cmark_syntax_extension *extension,-                                                      cmark_common_render_func func);--/** See the documentation for 'cmark_syntax_extension'- */-CMARK_EXPORT-void cmark_syntax_extension_set_latex_render_func(cmark_syntax_extension *extension,-                                                  cmark_common_render_func func);--/** See the documentation for 'cmark_syntax_extension'- */-CMARK_EXPORT-void cmark_syntax_extension_set_man_render_func(cmark_syntax_extension *extension,-                                                cmark_common_render_func func);--/** See the documentation for 'cmark_syntax_extension'- */-CMARK_EXPORT-void cmark_syntax_extension_set_html_render_func(cmark_syntax_extension *extension,-                                                 cmark_html_render_func func);--/** See the documentation for 'cmark_syntax_extension'- */-CMARK_EXPORT-void cmark_syntax_extension_set_html_filter_func(cmark_syntax_extension *extension,-                                                 cmark_html_filter_func func);--/** See the documentation for 'cmark_syntax_extension'- */-CMARK_EXPORT-void cmark_syntax_extension_set_commonmark_escape_func(cmark_syntax_extension *extension,-                                                       cmark_commonmark_escape_func func);--/** See the documentation for 'cmark_syntax_extension'- */-CMARK_EXPORT-void cmark_syntax_extension_set_private(cmark_syntax_extension *extension,-                                        void *priv,-                                        cmark_free_func free_func);--/** See the documentation for 'cmark_syntax_extension'- */-CMARK_EXPORT-void *cmark_syntax_extension_get_private(cmark_syntax_extension *extension);--/** See the documentation for 'cmark_syntax_extension'- */-CMARK_EXPORT-void cmark_syntax_extension_set_postprocess_func(cmark_syntax_extension *extension,-                                                 cmark_postprocess_func func);--/** See the documentation for 'cmark_syntax_extension'- */-CMARK_EXPORT-void cmark_syntax_extension_set_opaque_free_func(cmark_syntax_extension *extension,-                                                 cmark_opaque_free_func func);--/** See the documentation for 'cmark_syntax_extension'- */-CMARK_EXPORT-void cmark_parser_set_backslash_ispunct_func(cmark_parser *parser,-                                             cmark_ispunct_func func);--/** Return the index of the line currently being parsed, starting with 1.- */-CMARK_EXPORT-int cmark_parser_get_line_number(cmark_parser *parser);--/** Return the offset in bytes in the line being processed.- *- * Example:- *- * ### foo- *- * Here, offset will first be 0, then 5 (the index of the 'f' character).- */-CMARK_EXPORT-int cmark_parser_get_offset(cmark_parser *parser);--/**- * Return the offset in 'columns' in the line being processed.- *- * This value may differ from the value returned by- * cmark_parser_get_offset() in that it accounts for tabs,- * and as such should not be used as an index in the current line's- * buffer.- *- * Example:- *- * cmark_parser_advance_offset() can be called to advance the- * offset by a number of columns, instead of a number of bytes.- *- * In that case, if offset falls "in the middle" of a tab- * character, 'column' and offset will differ.- *- * ```- * foo                 \t bar- * ^                   ^^- * offset (0)          20- * ```- *- * If cmark_parser_advance_offset is called here with 'columns'- * set to 'true' and 'offset' set to 22, cmark_parser_get_offset()- * will return 20, whereas cmark_parser_get_column() will return- * 22.- *- * Additionally, as tabs expand to the next multiple of 4 column,- * cmark_parser_has_partially_consumed_tab() will now return- * 'true'.- */-CMARK_EXPORT-int cmark_parser_get_column(cmark_parser *parser);--/** Return the absolute index in bytes of the first nonspace- * character coming after the offset as returned by- * cmark_parser_get_offset() in the line currently being processed.- *- * Example:- *- * ```- *   foo        bar            baz  \n- * ^               ^           ^- * 0            offset (16) first_nonspace (28)- * ```- */-CMARK_EXPORT-int cmark_parser_get_first_nonspace(cmark_parser *parser);--/** Return the absolute index of the first nonspace column coming after 'offset'- * in the line currently being processed, counting tabs as multiple- * columns as appropriate.- *- * See the documentation for cmark_parser_get_first_nonspace() and- * cmark_parser_get_column() for more information.- */-CMARK_EXPORT-int cmark_parser_get_first_nonspace_column(cmark_parser *parser);--/** Return the difference between the values returned by- * cmark_parser_get_first_nonspace_column() and- * cmark_parser_get_column().- *- * This is not a byte offset, as it can count one tab as multiple- * characters.- */-CMARK_EXPORT-int cmark_parser_get_indent(cmark_parser *parser);--/** Return 'true' if the line currently being processed has been entirely- * consumed, 'false' otherwise.- *- * Example:- *- * ```- *   foo        bar            baz  \n- * ^- * offset- * ```- *- * This function will return 'false' here.- *- * ```- *   foo        bar            baz  \n- *                 ^- *              offset- * ```- * This function will still return 'false'.- *- * ```- *   foo        bar            baz  \n- *                                ^- *                             offset- * ```- *- * At this point, this function will now return 'true'.- */-CMARK_EXPORT-int cmark_parser_is_blank(cmark_parser *parser);--/** Return 'true' if the value returned by cmark_parser_get_offset()- * is 'inside' an expanded tab.- *- * See the documentation for cmark_parser_get_column() for more- * information.- */-CMARK_EXPORT-int cmark_parser_has_partially_consumed_tab(cmark_parser *parser);--/** Return the length in bytes of the previously processed line, excluding potential- * newline (\n) and carriage return (\r) trailing characters.- */-CMARK_EXPORT-int cmark_parser_get_last_line_length(cmark_parser *parser);--/** Add a child to 'parent' during the parsing process.- *- * If 'parent' isn't the kind of node that can accept this child,- * this function will back up till it hits a node that can, closing- * blocks as appropriate.- */-CMARK_EXPORT-cmark_node*cmark_parser_add_child(cmark_parser *parser,-                                  cmark_node *parent,-                                  cmark_node_type block_type,-                                  int start_column);--/** Advance the 'offset' of the parser in the current line.- *- * See the documentation of cmark_parser_get_offset() and- * cmark_parser_get_column() for more information.- */-CMARK_EXPORT-void cmark_parser_advance_offset(cmark_parser *parser,-                                 const char *input,-                                 int count,-                                 int columns);---CMARK_EXPORT-void cmark_parser_feed_reentrant(cmark_parser *parser, const char *buffer, size_t len);--/** Attach the syntax 'extension' to the 'parser', to provide extra syntax- *  rules.- *  See the documentation for cmark_syntax_extension for more information.- *- *  Returns 'true' if the 'extension' was successfully attached,- *  'false' otherwise.- */-CMARK_EXPORT-int cmark_parser_attach_syntax_extension(cmark_parser *parser, cmark_syntax_extension *extension);--/** Change the type of 'node'.- *- * Return 0 if the type could be changed, 1 otherwise.- */-CMARK_EXPORT int cmark_node_set_type(cmark_node *node, cmark_node_type type);--/** Return the string content for all types of 'node'.- *  The pointer stays valid as long as 'node' isn't freed.- */-CMARK_EXPORT const char *cmark_node_get_string_content(cmark_node *node);--/** Set the string 'content' for all types of 'node'.- *  Copies 'content'.- */-CMARK_EXPORT int cmark_node_set_string_content(cmark_node *node, const char *content);--/** Get the syntax extension responsible for the creation of 'node'.- *  Return NULL if 'node' was created because it matched standard syntax rules.- */-CMARK_EXPORT cmark_syntax_extension *cmark_node_get_syntax_extension(cmark_node *node);--/** Set the syntax extension responsible for creating 'node'.- */-CMARK_EXPORT int cmark_node_set_syntax_extension(cmark_node *node,-                                                  cmark_syntax_extension *extension);--/**- * ## Inline syntax extension helpers- *- * The inline parsing process is described in detail at- * <http://spec.commonmark.org/0.24/#phase-2-inline-structure>- */--/** Should return 'true' if the predicate matches 'c', 'false' otherwise- */-typedef int (*cmark_inline_predicate)(int c);--/** Advance the current inline parsing offset */-CMARK_EXPORT-void cmark_inline_parser_advance_offset(cmark_inline_parser *parser);--/** Get the current inline parsing offset */-CMARK_EXPORT-int cmark_inline_parser_get_offset(cmark_inline_parser *parser);--/** Set the offset in bytes in the chunk being processed by the given inline parser.- */-CMARK_EXPORT-void cmark_inline_parser_set_offset(cmark_inline_parser *parser, int offset);--/** Gets the cmark_chunk being operated on by the given inline parser.- * Use cmark_inline_parser_get_offset to get our current position in the chunk.- */-CMARK_EXPORT-cmark_chunk *cmark_inline_parser_get_chunk(cmark_inline_parser *parser);--/** Returns 1 if the inline parser is currently in a bracket; pass 1 for 'image'- * if you want to know about an image-type bracket, 0 for link-type. */-CMARK_EXPORT-int cmark_inline_parser_in_bracket(cmark_inline_parser *parser, int image);--/** Remove the last n characters from the last child of the given node.- * This only works where all n characters are in the single last child, and the last- * child is CMARK_NODE_TEXT.- */-CMARK_EXPORT-void cmark_node_unput(cmark_node *node, int n);---/** Get the character located at the current inline parsing offset- */-CMARK_EXPORT-unsigned char cmark_inline_parser_peek_char(cmark_inline_parser *parser);--/** Get the character located 'pos' bytes in the current line.- */-CMARK_EXPORT-unsigned char cmark_inline_parser_peek_at(cmark_inline_parser *parser, int pos);--/** Whether the inline parser has reached the end of the current line- */-CMARK_EXPORT-int cmark_inline_parser_is_eof(cmark_inline_parser *parser);--/** Get the characters located after the current inline parsing offset- * while 'pred' matches. Free after usage.- */-CMARK_EXPORT-char *cmark_inline_parser_take_while(cmark_inline_parser *parser, cmark_inline_predicate pred);--/** Push a delimiter on the delimiter stack.- * See <<http://spec.commonmark.org/0.24/#phase-2-inline-structure> for- * more information on the parameters- */-CMARK_EXPORT-void cmark_inline_parser_push_delimiter(cmark_inline_parser *parser,-                                  unsigned char c,-                                  int can_open,-                                  int can_close,-                                  cmark_node *inl_text);--/** Remove 'delim' from the delimiter stack- */-CMARK_EXPORT-void cmark_inline_parser_remove_delimiter(cmark_inline_parser *parser, delimiter *delim);--CMARK_EXPORT-delimiter *cmark_inline_parser_get_last_delimiter(cmark_inline_parser *parser);--CMARK_EXPORT-int cmark_inline_parser_get_line(cmark_inline_parser *parser);--CMARK_EXPORT-int cmark_inline_parser_get_column(cmark_inline_parser *parser);--/** Convenience function to scan a given delimiter.- *- * 'left_flanking' and 'right_flanking' will be set to true if they- * respectively precede and follow a non-space, non-punctuation- * character.- *- * Additionally, 'punct_before' and 'punct_after' will respectively be set- * if the preceding or following character is a punctuation character.- *- * Note that 'left_flanking' and 'right_flanking' can both be 'true'.- *- * Returns the number of delimiters encountered, in the limit- * of 'max_delims', and advances the inline parsing offset.- */-CMARK_EXPORT-int cmark_inline_parser_scan_delimiters(cmark_inline_parser *parser,-                                  int max_delims,-                                  unsigned char c,-                                  int *left_flanking,-                                  int *right_flanking,-                                  int *punct_before,-                                  int *punct_after);--CMARK_EXPORT-void cmark_manage_extensions_special_characters(cmark_parser *parser, bool add);--CMARK_EXPORT-cmark_llist *cmark_parser_get_syntax_extensions(cmark_parser *parser);--CMARK_EXPORT-void cmark_arena_push(void);--CMARK_EXPORT-int cmark_arena_pop(void);--#ifdef __cplusplus-}-#endif--#endif
− cbits/cmark_version.h
@@ -1,8 +0,0 @@-#ifndef CMARK_VERSION_H-#define CMARK_VERSION_H--#define CMARK_VERSION ((0 << 24) | (28 << 16) | (0 << 8) | 5)-#define CMARK_VERSION_STRING "0.28.0.gfm.5"-#define CMARK_GFM_VERSION 5--#endif
− cbits/cmarkextensions_export.h
@@ -1,41 +0,0 @@--#ifndef CMARKEXTENSIONS_EXPORT_H-#define CMARKEXTENSIONS_EXPORT_H--#ifdef CMARKEXTENSIONS_STATIC_DEFINE-#  define CMARKEXTENSIONS_EXPORT-#  define CMARKEXTENSIONS_NO_EXPORT-#else-#  ifndef CMARKEXTENSIONS_EXPORT-#    ifdef libcmark_gfmextensions_EXPORTS-        /* We are building this library */-#      define CMARKEXTENSIONS_EXPORT __attribute__((visibility("default")))-#    else-        /* We are using this library */-#      define CMARKEXTENSIONS_EXPORT __attribute__((visibility("default")))-#    endif-#  endif--#  ifndef CMARKEXTENSIONS_NO_EXPORT-#    define CMARKEXTENSIONS_NO_EXPORT __attribute__((visibility("hidden")))-#  endif-#endif--#ifndef CMARKEXTENSIONS_DEPRECATED-#  define CMARKEXTENSIONS_DEPRECATED __attribute__ ((__deprecated__))-#endif--#ifndef CMARKEXTENSIONS_DEPRECATED_EXPORT-#  define CMARKEXTENSIONS_DEPRECATED_EXPORT CMARKEXTENSIONS_EXPORT CMARKEXTENSIONS_DEPRECATED-#endif--#ifndef CMARKEXTENSIONS_DEPRECATED_NO_EXPORT-#  define CMARKEXTENSIONS_DEPRECATED_NO_EXPORT CMARKEXTENSIONS_NO_EXPORT CMARKEXTENSIONS_DEPRECATED-#endif--#define DEFINE_NO_DEPRECATED 0-#if DEFINE_NO_DEPRECATED-# define CMARKEXTENSIONS_NO_DEPRECATED-#endif--#endif
cbits/commonmark.c view
@@ -5,7 +5,7 @@ #include <assert.h>  #include "config.h"-#include "cmark.h"+#include "cmark-gfm.h" #include "node.h" #include "buffer.h" #include "utf8.h"@@ -35,7 +35,7 @@       c < 0x80 && escape != LITERAL &&       ((escape == NORMAL &&         (c == '*' || c == '_' || c == '[' || c == ']' || c == '#' || c == '<' ||-         c == '>' || c == '\\' || c == '`' || c == '!' ||+         c == '>' || c == '\\' || c == '`' || c == '~' || c == '!' ||          (c == '&' && cmark_isalpha(nextc)) || (c == '!' && nextc == '[') ||          (renderer->begin_content && (c == '-' || c == '+' || c == '=') &&           // begin_content doesn't get set to false til we've passed digits@@ -460,6 +460,29 @@         LIT("\"");       }       LIT(")");+    }+    break;++  case CMARK_NODE_FOOTNOTE_REFERENCE:+    if (entering) {+      LIT("[^");+      OUT(cmark_chunk_to_cstr(renderer->mem, &node->as.literal), false, LITERAL);+      LIT("]");+    }+    break;++  case CMARK_NODE_FOOTNOTE_DEFINITION:+    if (entering) {+      renderer->footnote_ix += 1;+      LIT("[^");+      char n[32];+      snprintf(n, sizeof(n), "%d", renderer->footnote_ix);+      OUT(n, false, LITERAL);+      LIT("]:\n");++      cmark_strbuf_puts(renderer->prefix, "    ");+    } else {+      cmark_strbuf_truncate(renderer->prefix, renderer->prefix->size - 4);     }     break; 
cbits/core-extensions.c view
@@ -1,9 +1,10 @@-#include "core-extensions.h"+#include "cmark-gfm-core-extensions.h" #include "autolink.h" #include "strikethrough.h" #include "table.h" #include "tagfilter.h" #include "registry.h"+#include "plugin.h"  static int core_extensions_registration(cmark_plugin *plugin) {   cmark_plugin_register_syntax_extension(plugin, create_table_extension());@@ -14,7 +15,7 @@   return 1; } -void core_extensions_ensure_registered(void) {+void cmark_gfm_core_extensions_ensure_registered(void) {   static int registered = 0;    if (!registered) {
− cbits/core-extensions.h
@@ -1,24 +0,0 @@-#ifndef CORE_EXTENSIONS_H-#define CORE_EXTENSIONS_H--#ifdef __cplusplus-extern "C" {-#endif--#include <cmark_extension_api.h>-#include "cmarkextensions_export.h"--CMARKEXTENSIONS_EXPORT-void core_extensions_ensure_registered(void);--CMARKEXTENSIONS_EXPORT-uint16_t cmarkextensions_get_table_columns(cmark_node *node);--CMARKEXTENSIONS_EXPORT-uint8_t *cmarkextensions_get_table_alignments(cmark_node *node);--#ifdef __cplusplus-}-#endif--#endif
cbits/ext_scanners.h view
@@ -1,5 +1,5 @@ #include "chunk.h"-#include "cmark.h"+#include "cmark-gfm.h"  #ifdef __cplusplus extern "C" {
+ cbits/footnotes.c view
@@ -0,0 +1,40 @@+#include "cmark-gfm.h"+#include "parser.h"+#include "footnotes.h"+#include "inlines.h"+#include "chunk.h"++static void footnote_free(cmark_map *map, cmark_map_entry *_ref) {+  cmark_footnote *ref = (cmark_footnote *)_ref;+  cmark_mem *mem = map->mem;+  if (ref != NULL) {+    mem->free(ref->entry.label);+    if (ref->node)+      cmark_node_free(ref->node);+    mem->free(ref);+  }+}++void cmark_footnote_create(cmark_map *map, cmark_node *node) {+  cmark_footnote *ref;+  unsigned char *reflabel = normalize_map_label(map->mem, &node->as.literal);++  /* empty footnote name, or composed from only whitespace */+  if (reflabel == NULL)+    return;++  assert(map->sorted == NULL);++  ref = (cmark_footnote *)map->mem->calloc(1, sizeof(*ref));+  ref->entry.label = reflabel;+  ref->node = node;+  ref->entry.age = map->size;+  ref->entry.next = map->refs;++  map->refs = (cmark_map_entry *)ref;+  map->size++;+}++cmark_map *cmark_footnote_map_new(cmark_mem *mem) {+  return cmark_map_new(mem, footnote_free);+}
+ cbits/footnotes.h view
@@ -0,0 +1,25 @@+#ifndef CMARK_FOOTNOTES_H+#define CMARK_FOOTNOTES_H++#include "map.h"++#ifdef __cplusplus+extern "C" {+#endif++struct cmark_footnote {+  cmark_map_entry entry;+  cmark_node *node;+  unsigned int ix;+};++typedef struct cmark_footnote cmark_footnote;++void cmark_footnote_create(cmark_map *map, cmark_node *node);+cmark_map *cmark_footnote_map_new(cmark_mem *mem);++#ifdef __cplusplus+}+#endif++#endif
cbits/houdini.h view
@@ -31,22 +31,22 @@ #define HOUDINI_ESCAPED_SIZE(x) (((x)*12) / 10) #define HOUDINI_UNESCAPED_SIZE(x) (x) -CMARK_EXPORT+CMARK_GFM_EXPORT bufsize_t houdini_unescape_ent(cmark_strbuf *ob, const uint8_t *src,                                       bufsize_t size);-CMARK_EXPORT+CMARK_GFM_EXPORT int houdini_escape_html(cmark_strbuf *ob, const uint8_t *src,                                bufsize_t size);-CMARK_EXPORT+CMARK_GFM_EXPORT int houdini_escape_html0(cmark_strbuf *ob, const uint8_t *src,                                 bufsize_t size, int secure);-CMARK_EXPORT+CMARK_GFM_EXPORT int houdini_unescape_html(cmark_strbuf *ob, const uint8_t *src,                                  bufsize_t size);-CMARK_EXPORT+CMARK_GFM_EXPORT void houdini_unescape_html_f(cmark_strbuf *ob, const uint8_t *src,                                     bufsize_t size);-CMARK_EXPORT+CMARK_GFM_EXPORT int houdini_escape_href(cmark_strbuf *ob, const uint8_t *src,                                bufsize_t size); 
cbits/html.c view
@@ -4,11 +4,12 @@ #include <assert.h> #include "cmark_ctype.h" #include "config.h"-#include "cmark.h"+#include "cmark-gfm.h" #include "houdini.h" #include "scanners.h" #include "syntax_extension.h" #include "html.h"+#include "render.h"  // Functions to convert cmark_nodes to HTML strings. @@ -58,6 +59,20 @@     cmark_strbuf_put(html, data, (bufsize_t)len); } +static bool S_put_footnote_backref(cmark_html_renderer *renderer, cmark_strbuf *html) {+  if (renderer->written_footnote_ix >= renderer->footnote_ix)+    return false;+  renderer->written_footnote_ix = renderer->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>");++  return true;+}+ static int S_render_node(cmark_html_renderer *renderer, cmark_node *node,                          cmark_event_type ev_type, int options) {   cmark_node *parent;@@ -188,12 +203,20 @@         cmark_html_render_sourcepos(node, html, options);         cmark_strbuf_puts(html, " lang=\"");         escape_html(html, node->as.code.info.data, first_tag);+        if (first_tag < node->as.code.info.len && (options & CMARK_OPT_FULL_INFO_STRING)) {+          cmark_strbuf_puts(html, "\" data-meta=\"");+          escape_html(html, node->as.code.info.data + first_tag + 1, node->as.code.info.len - first_tag - 1);+        }         cmark_strbuf_puts(html, "\"><code>");       } else {         cmark_strbuf_puts(html, "<pre");         cmark_html_render_sourcepos(node, html, options);         cmark_strbuf_puts(html, "><code class=\"language-");         escape_html(html, node->as.code.info.data, first_tag);+        if (first_tag < node->as.code.info.len && (options & CMARK_OPT_FULL_INFO_STRING)) {+          cmark_strbuf_puts(html, "\" data-meta=\"");+          escape_html(html, node->as.code.info.data + first_tag + 1, node->as.code.info.len - first_tag - 1);+        }         cmark_strbuf_puts(html, "\">");       }     }@@ -248,6 +271,10 @@         cmark_html_render_sourcepos(node, html, options);         cmark_strbuf_putc(html, '>');       } else {+        if (parent->type == CMARK_NODE_FOOTNOTE_DEFINITION && node->next == NULL) {+          cmark_strbuf_putc(html, ' ');+          S_put_footnote_backref(renderer, html);+        }         cmark_strbuf_puts(html, "</p>\n");       }     }@@ -362,6 +389,37 @@     }     break; +  case CMARK_NODE_FOOTNOTE_DEFINITION:+    if (entering) {+      if (renderer->footnote_ix == 0) {+        cmark_strbuf_puts(html, "<section class=\"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, "\">\n");+    } else {+      if (S_put_footnote_backref(renderer, html)) {+        cmark_strbuf_putc(html, '\n');+      }+      cmark_strbuf_puts(html, "</li>\n");+    }+    break;++  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, "</a></sup>");+    }+    break;+   default:     assert(false);     break;@@ -379,7 +437,7 @@   cmark_strbuf html = CMARK_BUF_INIT(mem);   cmark_event_type ev_type;   cmark_node *cur;-  cmark_html_renderer renderer = {&html, NULL, NULL, NULL};+  cmark_html_renderer renderer = {&html, NULL, NULL, 0, 0, NULL};   cmark_iter *iter = cmark_iter_new(root);    for (; extensions; extensions = extensions->next)@@ -393,6 +451,11 @@     cur = cmark_iter_get_node(iter);     S_render_node(&renderer, cur, ev_type, options);   }++  if (renderer.footnote_ix) {+    cmark_strbuf_puts(&html, "</ol>\n</section>\n");+  }+   result = (char *)cmark_strbuf_detach(&html);    cmark_llist_free(mem, renderer.filter_extensions);
cbits/inlines.c view
@@ -7,7 +7,7 @@ #include "node.h" #include "parser.h" #include "references.h"-#include "cmark.h"+#include "cmark-gfm.h" #include "houdini.h" #include "utf8.h" #include "scanners.h"@@ -50,13 +50,16 @@   bufsize_t pos;   int block_offset;   int column_offset;-  cmark_reference_map *refmap;+  cmark_map *refmap;   delimiter *last_delim;   bracket *last_bracket;   bufsize_t backticks[MAXBACKTICKS + 1];   bool scanned_for_backticks; } subject; +// Extensions may populate this.+static int8_t SKIP_CHARS[256];+ static CMARK_INLINE bool S_is_line_end_char(char c) {   return (c == '\n' || c == '\r'); }@@ -67,7 +70,7 @@ static int parse_inline(cmark_parser *parser, subject *subj, cmark_node *parent, int options);  static void subject_from_buf(cmark_mem *mem, int line_number, int block_offset, subject *e,-                             cmark_strbuf *buffer, cmark_reference_map *refmap);+                             cmark_chunk *buffer, cmark_map *refmap); static bufsize_t subject_find_special_char(subject *subj, int options);  // Create an inline with a literal string value.@@ -154,12 +157,10 @@ }  static void subject_from_buf(cmark_mem *mem, int line_number, int block_offset, subject *e,-                             cmark_strbuf *buffer, cmark_reference_map *refmap) {+                             cmark_chunk *chunk, cmark_map *refmap) {   int i;   e->mem = mem;-  e->input.data = buffer->ptr;-  e->input.len = buffer->size;-  e->input.alloc = 0;+  e->input = *chunk;   e->line = line_number;   e->pos = 0;   e->block_offset = block_offset;@@ -175,13 +176,17 @@  static CMARK_INLINE int isbacktick(int c) { return (c == '`'); } -static CMARK_INLINE unsigned char peek_char(subject *subj) {+static CMARK_INLINE unsigned char peek_char_n(subject *subj, bufsize_t n) {   // NULL bytes should have been stripped out by now.  If they're   // present, it's a programming error:-  assert(!(subj->pos < subj->input.len && subj->input.data[subj->pos] == 0));-  return (subj->pos < subj->input.len) ? subj->input.data[subj->pos] : 0;+  assert(!(subj->pos + n < subj->input.len && subj->input.data[subj->pos + n] == 0));+  return (subj->pos + n < subj->input.len) ? subj->input.data[subj->pos + n] : 0; } +static CMARK_INLINE unsigned char peek_char(subject *subj) {+  return peek_char_n(subj, 0);+}+ static CMARK_INLINE unsigned char peek_at(subject *subj, bufsize_t pos) {   return subj->input.data[pos]; }@@ -345,7 +350,7 @@ static int scan_delims(subject *subj, unsigned char c, bool *can_open,                        bool *can_close) {   int numdelims = 0;-  bufsize_t before_char_pos;+  bufsize_t before_char_pos, after_char_pos;   int32_t after_char = 0;   int32_t before_char = 0;   int len;@@ -356,12 +361,12 @@   } else {     before_char_pos = subj->pos - 1;     // walk back to the beginning of the UTF_8 sequence:-    while (peek_at(subj, before_char_pos) >> 6 == 2 && before_char_pos > 0) {+    while ((peek_at(subj, before_char_pos) >> 6 == 2 || SKIP_CHARS[peek_at(subj, before_char_pos)]) && before_char_pos > 0) {       before_char_pos -= 1;     }     len = cmark_utf8proc_iterate(subj->input.data + before_char_pos,                                  subj->pos - before_char_pos, &before_char);-    if (len == -1) {+    if (len == -1 || (before_char < 256 && SKIP_CHARS[(unsigned char) before_char])) {       before_char = 10;     }   }@@ -376,11 +381,20 @@     }   } -  len = cmark_utf8proc_iterate(subj->input.data + subj->pos,-                               subj->input.len - subj->pos, &after_char);-  if (len == -1) {+  if (subj->pos == subj->input.len) {     after_char = 10;+  } else {+    after_char_pos = subj->pos;+    while (SKIP_CHARS[peek_at(subj, after_char_pos)] && after_char_pos < subj->input.len) {+      after_char_pos += 1;+    }+    len = cmark_utf8proc_iterate(subj->input.data + after_char_pos,+                                 subj->input.len - after_char_pos, &after_char);+    if (len == -1 || (after_char < 256 && SKIP_CHARS[(unsigned char) after_char])) {+    after_char = 10;   }+  }+   left_flanking = numdelims > 0 && !cmark_utf8proc_is_space(after_char) &&                   (!cmark_utf8proc_is_punctuation(after_char) ||                    cmark_utf8proc_is_space(before_char) ||@@ -395,7 +409,8 @@     *can_close = right_flanking &&                  (!left_flanking || cmark_utf8proc_is_punctuation(after_char));   } else if (c == '\'' || c == '"') {-    *can_open = left_flanking && !right_flanking;+    *can_open = left_flanking && !right_flanking &&+	         before_char != ']' && before_char != ')';     *can_close = right_flanking;   } else {     *can_open = left_flanking;@@ -686,7 +701,7 @@   cmark_node *tmp, *tmpnext, *emph;    // calculate the actual number of characters used from this closer-  use_delims = (closer_num_chars >= 2 && opener_num_chars >=2) ? 2 : 1;+  use_delims = (closer_num_chars >= 2 && opener_num_chars >= 2) ? 2 : 1;    // remove used characters from associated inlines.   opener_num_chars -= use_delims;@@ -770,8 +785,8 @@   return make_str(subj, subj->pos - 1 - len, subj->pos - 1, cmark_chunk_buf_detach(&ent)); } -// Clean a URL: remove surrounding whitespace and surrounding <>,-// and remove \ that escape punctuation.+// Clean a URL: remove surrounding whitespace, and remove \ that escape+// punctuation. cmark_chunk cmark_clean_url(cmark_mem *mem, cmark_chunk *url) {   cmark_strbuf buf = CMARK_BUF_INIT(mem); @@ -782,11 +797,7 @@     return result;   } -  if (url->data[0] == '<' && url->data[url->len - 1] == '>') {-    houdini_unescape_html_f(&buf, url->data + 1, url->len - 2);-  } else {-    houdini_unescape_html_f(&buf, url->data, url->len);-  }+  houdini_unescape_html_f(&buf, url->data, url->len);    cmark_strbuf_unescape(&buf);   return cmark_chunk_buf_detach(&buf);@@ -912,10 +923,47 @@   subj->pos = startpos; // rewind   return 0; }-static bufsize_t manual_scan_link_url(cmark_chunk *input, bufsize_t offset) {++static bufsize_t manual_scan_link_url_2(cmark_chunk *input, bufsize_t offset,+                                        cmark_chunk *output) {   bufsize_t i = offset;   size_t nb_p = 0; +  while (i < input->len) {+    if (input->data[i] == '\\' &&+        i + 1 < input-> len &&+        cmark_ispunct(input->data[i+1]))+      i += 2;+    else if (input->data[i] == '(') {+      ++nb_p;+      ++i;+        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]))+      break;+    else+      ++i;+  }++  if (i >= input->len)+    return -1;++  {+    cmark_chunk result = {input->data + offset, i - offset, 0};+    *output = result;+  }+  return i - offset;+}++static bufsize_t manual_scan_link_url(cmark_chunk *input, bufsize_t offset,+                                      cmark_chunk *output) {+  bufsize_t i = offset;+   if (i < input->len && input->data[i] == '<') {     ++i;     while (i < input->len) {@@ -924,44 +972,30 @@         break;       } else if (input->data[i] == '\\')         i += 2;-      else if (cmark_isspace(input->data[i]))-        return -1;+      else if (input->data[i] == '\n' || input->data[i] == '<')+        return manual_scan_link_url_2(input, offset, output);       else         ++i;     }   } else {-    while (i < input->len) {-      if (input->data[i] == '\\' &&-	  i + 1 < input-> len &&-          cmark_ispunct(input->data[i+1]))-        i += 2;-      else if (input->data[i] == '(') {-        ++nb_p;-        ++i;-        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]))-        break;-      else-        ++i;-    }+    return manual_scan_link_url_2(input, offset, output);   }    if (i >= input->len)     return -1;++  {+    cmark_chunk result = {input->data + offset + 1, i - 2 - offset, 0};+    *output = result;+  }   return i - offset; }+ // Return a link, an image, or a literal close bracket. static cmark_node *handle_close_bracket(cmark_parser *parser, subject *subj) {   bufsize_t initial_pos, after_link_text_pos;-  bufsize_t starturl, endurl, starttitle, endtitle, endall;-  bufsize_t n;-  bufsize_t sps;+  bufsize_t endurl, starttitle, endtitle, endall;+  bufsize_t sps, n;   cmark_reference *ref = NULL;   cmark_chunk url_chunk, title_chunk;   cmark_chunk url, title;@@ -997,11 +1031,11 @@   // First, look for an inline link.   if (peek_char(subj) == '(' &&       ((sps = scan_spacechars(&subj->input, subj->pos + 1)) > -1) &&-      ((n = manual_scan_link_url(&subj->input, subj->pos + 1 + sps)) > -1)) {+      ((n = manual_scan_link_url(&subj->input, subj->pos + 1 + sps,+                                 &url_chunk)) > -1)) {      // try to parse an explicit link:-    starturl = subj->pos + 1 + sps; // after (-    endurl = starturl + n;+    endurl = subj->pos + 1 + sps + n;     starttitle = endurl + scan_spacechars(&subj->input, endurl);      // ensure there are spaces btw url and title@@ -1014,7 +1048,6 @@     if (peek_at(subj, endall) == ')') {       subj->pos = endall + 1; -      url_chunk = cmark_chunk_dup(&subj->input, starturl, endurl - starturl);       title_chunk =           cmark_chunk_dup(&subj->input, starttitle, endtitle - starttitle);       url = cmark_clean_url(subj->mem, &url_chunk);@@ -1047,7 +1080,7 @@   }    if (found_label) {-    ref = cmark_reference_lookup(subj->refmap, &raw_label);+    ref = (cmark_reference *)cmark_map_lookup(subj->refmap, &raw_label);     cmark_chunk_free(subj->mem, &raw_label);   } @@ -1060,7 +1093,28 @@   }  noMatch:-  // If we fall through to here, it means we didn't match a link:+  // If we fall through to here, it means we didn't match a link.+  // 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) {+    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);+      cmark_node_free(opener->inl_text);+      process_emphasis(parser, subj, opener->previous_delimiter);+      pop_bracket(subj);+      return NULL;+    }+  }+   pop_bracket(subj); // remove this opener from delimiter list   subj->pos = initial_pos;   return make_str(subj, subj->pos - 1, subj->pos - 1, cmark_chunk_literal("]"));@@ -1173,12 +1227,16 @@   return subj->input.len; } -void cmark_inlines_add_special_character(unsigned char c) {+void cmark_inlines_add_special_character(unsigned char c, bool emphasis) {   SPECIAL_CHARS[c] = 1;+  if (emphasis)+    SKIP_CHARS[c] = 1; } -void cmark_inlines_remove_special_character(unsigned char c) {+void cmark_inlines_remove_special_character(unsigned char c, bool emphasis) {   SPECIAL_CHARS[c] = 0;+  if (emphasis)+    SKIP_CHARS[c] = 0; }  static cmark_node *try_extensions(cmark_parser *parser,@@ -1249,7 +1307,7 @@     break;   case '!':     advance(subj);-    if (peek_char(subj) == '[') {+    if (peek_char(subj) == '[' && peek_char_n(subj, 1) != '^') {       advance(subj);       new_inl = make_str(subj, subj->pos - 2, subj->pos - 1, cmark_chunk_literal("!["));       push_bracket(subj, true, new_inl);@@ -1284,10 +1342,11 @@ // Parse inlines from parent's string_content, adding as children of parent. void cmark_parse_inlines(cmark_parser *parser,                          cmark_node *parent,-                         cmark_reference_map *refmap,+                         cmark_map *refmap,                          int options) {   subject subj;-  subject_from_buf(parser->mem, parent->start_line, parent->start_column - 1 + parent->internal_offset, &subj, &parent->content, refmap);+  cmark_chunk content = {parent->content.ptr, parent->content.size, 0};+  subject_from_buf(parser->mem, parent->start_line, parent->start_column - 1 + parent->internal_offset, &subj, &content, refmap);   cmark_chunk_rtrim(&subj.input);    while (!is_eof(&subj) && parse_inline(parser, &subj, parent, options))@@ -1315,8 +1374,8 @@ // Modify refmap if a reference is encountered. // Return 0 if no reference found, otherwise position of subject // after reference is parsed.-bufsize_t cmark_parse_reference_inline(cmark_mem *mem, cmark_strbuf *input,-                                       cmark_reference_map *refmap) {+bufsize_t cmark_parse_reference_inline(cmark_mem *mem, cmark_chunk *input,+                                       cmark_map *refmap) {   subject subj;    cmark_chunk lab;@@ -1341,9 +1400,8 @@    // parse link url:   spnl(&subj);-  matchlen = manual_scan_link_url(&subj.input, subj.pos);-  if (matchlen > 0) {-    url = cmark_chunk_dup(&subj.input, subj.pos, matchlen);+  if ((matchlen = manual_scan_link_url(&subj.input, subj.pos, &url)) > -1 &&+      url.len > 0) {     subj.pos += matchlen;   } else {     return 0;
cbits/inlines.h view
@@ -10,17 +10,17 @@ cmark_chunk cmark_clean_url(cmark_mem *mem, cmark_chunk *url); cmark_chunk cmark_clean_title(cmark_mem *mem, cmark_chunk *title); -CMARK_EXPORT+CMARK_GFM_EXPORT void cmark_parse_inlines(cmark_parser *parser,                          cmark_node *parent,-                         cmark_reference_map *refmap,+                         cmark_map *refmap,                          int options); -bufsize_t cmark_parse_reference_inline(cmark_mem *mem, cmark_strbuf *input,-                                       cmark_reference_map *refmap);+bufsize_t cmark_parse_reference_inline(cmark_mem *mem, cmark_chunk *input,+                                       cmark_map *refmap); -void cmark_inlines_add_special_character(unsigned char c);-void cmark_inlines_remove_special_character(unsigned char c);+void cmark_inlines_add_special_character(unsigned char c, bool emphasis);+void cmark_inlines_remove_special_character(unsigned char c, bool emphasis);  #ifdef __cplusplus }
cbits/iterator.c view
@@ -3,7 +3,7 @@  #include "config.h" #include "node.h"-#include "cmark.h"+#include "cmark-gfm.h" #include "iterator.h"  cmark_iter *cmark_iter_new(cmark_node *root) {
cbits/iterator.h view
@@ -5,7 +5,7 @@ extern "C" { #endif -#include "cmark.h"+#include "cmark-gfm.h" #include "memory.h"  typedef struct {
cbits/latex.c view
@@ -4,7 +4,7 @@ #include <assert.h>  #include "config.h"-#include "cmark.h"+#include "cmark-gfm.h" #include "node.h" #include "buffer.h" #include "utf8.h"@@ -256,24 +256,24 @@       CR();       list_number = cmark_node_get_list_start(node);       if (list_number > 1) {-	enumlevel = S_get_enumlevel(node);-	// latex normally supports only five levels-	if (enumlevel >= 1 && enumlevel <= 5) {+        enumlevel = S_get_enumlevel(node);+        // latex normally supports only five levels+        if (enumlevel >= 1 && enumlevel <= 5) {           snprintf(list_number_string, LIST_NUMBER_STRING_SIZE, "%d",                    list_number);           LIT("\\setcounter{enum");-          switch(enumlevel) {-	  case 1: LIT("i"); break;-	  case 2: LIT("ii"); break;-	  case 3: LIT("iii"); break;-	  case 4: LIT("iv"); break;-	  case 5: LIT("v"); break;-	  default: LIT("i"); break;+          switch (enumlevel) {+          case 1: LIT("i"); break;+          case 2: LIT("ii"); break;+          case 3: LIT("iii"); break;+          case 4: LIT("iv"); break;+          case 5: LIT("v"); break;+          default: LIT("i"); break; 	  }           LIT("}{");           OUT(list_number_string, false, NORMAL);           LIT("}");-	}+        }         CR();       }     } else {@@ -442,6 +442,11 @@       LIT("}");       return 0;     }+    break;++  case CMARK_NODE_FOOTNOTE_DEFINITION:+  case CMARK_NODE_FOOTNOTE_REFERENCE:+    // TODO     break;    default:
cbits/linked_list.c view
@@ -1,6 +1,6 @@ #include <stdlib.h> -#include "cmark.h"+#include "cmark-gfm.h"  cmark_llist *cmark_llist_append(cmark_mem *mem, cmark_llist *head, void *data) {   cmark_llist *tmp;
cbits/man.c view
@@ -4,7 +4,7 @@ #include <assert.h>  #include "config.h"-#include "cmark.h"+#include "cmark-gfm.h" #include "node.h" #include "buffer.h" #include "utf8.h"@@ -254,6 +254,11 @@     } else {       LIT("]");     }+    break;++  case CMARK_NODE_FOOTNOTE_DEFINITION:+  case CMARK_NODE_FOOTNOTE_REFERENCE:+    // TODO     break;    default:
+ cbits/map.c view
@@ -0,0 +1,122 @@+#include "map.h"+#include "utf8.h"+#include "parser.h"++// normalize map label:  collapse internal whitespace to single space,+// remove leading/trailing whitespace, case fold+// Return NULL if the label is actually empty (i.e. composed solely from+// whitespace)+unsigned char *normalize_map_label(cmark_mem *mem, cmark_chunk *ref) {+  cmark_strbuf normalized = CMARK_BUF_INIT(mem);+  unsigned char *result;++  if (ref == NULL)+    return NULL;++  if (ref->len == 0)+    return NULL;++  cmark_utf8proc_case_fold(&normalized, ref->data, ref->len);+  cmark_strbuf_trim(&normalized);+  cmark_strbuf_normalize_whitespace(&normalized);++  result = cmark_strbuf_detach(&normalized);+  assert(result);++  if (result[0] == '\0') {+    mem->free(result);+    return NULL;+  }++  return result;+}++static int+labelcmp(const unsigned char *a, const unsigned char *b) {+  return strcmp((const char *)a, (const char *)b);+}++static int+refcmp(const void *p1, const void *p2) {+  cmark_map_entry *r1 = *(cmark_map_entry **)p1;+  cmark_map_entry *r2 = *(cmark_map_entry **)p2;+  int res = labelcmp(r1->label, r2->label);+  return res ? res : ((int)r1->age - (int)r2->age);+}++static int+refsearch(const void *label, const void *p2) {+  cmark_map_entry *ref = *(cmark_map_entry **)p2;+  return labelcmp((const unsigned char *)label, ref->label);+}++static void sort_map(cmark_map *map) {+  unsigned int 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 *));+  while (r) {+    sorted[i++] = r;+    r = r->next;+  }++  qsort(sorted, size, sizeof(cmark_map_entry *), refcmp);++  for (i = 1; i < size; i++) {+    if (labelcmp(sorted[i]->label, sorted[last]->label) != 0)+      sorted[++last] = sorted[i];+  }++  map->sorted = sorted;+  map->size = last + 1;+}++cmark_map_entry *cmark_map_lookup(cmark_map *map, cmark_chunk *label) {+  cmark_map_entry **ref = NULL;+  unsigned char *norm;++  if (label->len < 1 || label->len > MAX_LINK_LABEL_LENGTH)+    return NULL;++  if (map == NULL || !map->size)+    return NULL;++  norm = normalize_map_label(map->mem, label);+  if (norm == NULL)+    return NULL;++  if (!map->sorted)+    sort_map(map);++  ref = (cmark_map_entry **)bsearch(norm, map->sorted, map->size, sizeof(cmark_map_entry *), refsearch);+  map->mem->free(norm);++  if (!ref)+    return NULL;++  return ref[0];+}++void cmark_map_free(cmark_map *map) {+  cmark_map_entry *ref;++  if (map == NULL)+    return;++  ref = map->refs;+  while (ref) {+    cmark_map_entry *next = ref->next;+    map->free(map, ref);+    ref = next;+  }++  map->mem->free(map->sorted);+  map->mem->free(map);+}++cmark_map *cmark_map_new(cmark_mem *mem, cmark_map_free_f free) {+  cmark_map *map = (cmark_map *)mem->calloc(1, sizeof(cmark_map));+  map->mem = mem;+  map->free = free;+  return map;+}
+ cbits/map.h view
@@ -0,0 +1,42 @@+#ifndef CMARK_MAP_H+#define CMARK_MAP_H++#include "memory.h"+#include "chunk.h"++#ifdef __cplusplus+extern "C" {+#endif++struct cmark_map_entry {+  struct cmark_map_entry *next;+  unsigned char *label;+  unsigned int age;+};++typedef struct cmark_map_entry cmark_map_entry;++struct cmark_map;++typedef void (*cmark_map_free_f)(struct cmark_map *, cmark_map_entry *);++struct cmark_map {+  cmark_mem *mem;+  cmark_map_entry *refs;+  cmark_map_entry **sorted;+  unsigned int size;+  cmark_map_free_f free;+};++typedef struct cmark_map cmark_map;++unsigned char *normalize_map_label(cmark_mem *mem, cmark_chunk *ref);+cmark_map *cmark_map_new(cmark_mem *mem, cmark_map_free_f free);+void cmark_map_free(cmark_map *map);+cmark_map_entry *cmark_map_lookup(cmark_map *map, cmark_chunk *label);++#ifdef __cplusplus+}+#endif++#endif
cbits/node.c view
@@ -21,6 +21,7 @@   switch (node->type) {   case CMARK_NODE_DOCUMENT:   case CMARK_NODE_BLOCK_QUOTE:+  case CMARK_NODE_FOOTNOTE_DEFINITION:   case CMARK_NODE_ITEM:     return CMARK_NODE_TYPE_BLOCK_P(child_type) && child_type != CMARK_NODE_ITEM; @@ -108,6 +109,8 @@     case CMARK_NODE_HTML_INLINE:     case CMARK_NODE_CODE:     case CMARK_NODE_HTML_BLOCK:+    case CMARK_NODE_FOOTNOTE_REFERENCE:+    case CMARK_NODE_FOOTNOTE_DEFINITION:     cmark_chunk_free(NODE_MEM(node), &node->as.literal);       break;     case CMARK_NODE_LINK:@@ -319,6 +322,7 @@   case CMARK_NODE_TEXT:   case CMARK_NODE_HTML_INLINE:   case CMARK_NODE_CODE:+  case CMARK_NODE_FOOTNOTE_REFERENCE:     return cmark_chunk_to_cstr(NODE_MEM(node), &node->as.literal);    case CMARK_NODE_CODE_BLOCK:@@ -341,6 +345,7 @@   case CMARK_NODE_TEXT:   case CMARK_NODE_HTML_INLINE:   case CMARK_NODE_CODE:+  case CMARK_NODE_FOOTNOTE_REFERENCE:     cmark_chunk_set_cstr(NODE_MEM(node), &node->as.literal, content);     return 1; 
cbits/node.h view
@@ -8,8 +8,8 @@ #include <stdio.h> #include <stdint.h> -#include "cmark.h"-#include "cmark_extension_api.h"+#include "cmark-gfm.h"+#include "cmark-gfm-extension_api.h" #include "buffer.h" #include "chunk.h" @@ -89,7 +89,7 @@ static CMARK_INLINE cmark_mem *cmark_node_mem(cmark_node *node) {   return node->content.mem; }-CMARK_EXPORT int cmark_node_check(cmark_node *node, FILE *out);+CMARK_GFM_EXPORT int cmark_node_check(cmark_node *node, FILE *out);  static CMARK_INLINE bool CMARK_NODE_TYPE_BLOCK_P(cmark_node_type node_type) { 	return (node_type & CMARK_NODE_TYPE_MASK) == CMARK_NODE_TYPE_BLOCK;@@ -107,7 +107,7 @@ 	return node != NULL && CMARK_NODE_TYPE_INLINE_P((cmark_node_type) node->type); } -CMARK_EXPORT bool cmark_node_can_contain_type(cmark_node *node, cmark_node_type child_type);+CMARK_GFM_EXPORT bool cmark_node_can_contain_type(cmark_node *node, cmark_node_type child_type);  #ifdef __cplusplus }
cbits/parser.h view
@@ -15,7 +15,7 @@ struct cmark_parser {   struct cmark_mem *mem;   /* A hashtable of urls in the current document for cross-references */-  struct cmark_reference_map *refmap;+  struct cmark_map *refmap;   /* The root node of the parser, always a CMARK_NODE_DOCUMENT */   struct cmark_node *root;   /* The last open block after a line is fully processed */
cbits/plaintext.c view
@@ -1,5 +1,6 @@ #include "node.h" #include "syntax_extension.h"+#include "render.h"  #define OUT(s, wrap, escaping) renderer->out(renderer, node, s, wrap, escaping) #define LIT(s) renderer->out(renderer, node, s, false, LITERAL)
cbits/plugin.h view
@@ -5,8 +5,8 @@ extern "C" { #endif -#include "cmark.h"-#include "cmark_extension_api.h"+#include "cmark-gfm.h"+#include "cmark-gfm-extension_api.h"  /**  * cmark_plugin:
cbits/references.c view
@@ -1,53 +1,24 @@-#include "cmark.h"-#include "utf8.h"+#include "cmark-gfm.h" #include "parser.h" #include "references.h" #include "inlines.h" #include "chunk.h" -static void reference_free(cmark_reference_map *map, cmark_reference *ref) {+static void reference_free(cmark_map *map, cmark_map_entry *_ref) {+  cmark_reference *ref = (cmark_reference *)_ref;   cmark_mem *mem = map->mem;   if (ref != NULL) {-    mem->free(ref->label);+    mem->free(ref->entry.label);     cmark_chunk_free(mem, &ref->url);     cmark_chunk_free(mem, &ref->title);     mem->free(ref);   } } -// normalize reference:  collapse internal whitespace to single space,-// remove leading/trailing whitespace, case fold-// Return NULL if the reference name is actually empty (i.e. composed-// solely from whitespace)-static unsigned char *normalize_reference(cmark_mem *mem, cmark_chunk *ref) {-  cmark_strbuf normalized = CMARK_BUF_INIT(mem);-  unsigned char *result;--  if (ref == NULL)-    return NULL;--  if (ref->len == 0)-    return NULL;--  cmark_utf8proc_case_fold(&normalized, ref->data, ref->len);-  cmark_strbuf_trim(&normalized);-  cmark_strbuf_normalize_whitespace(&normalized);--  result = cmark_strbuf_detach(&normalized);-  assert(result);--  if (result[0] == '\0') {-    mem->free(result);-    return NULL;-  }--  return result;-}--void cmark_reference_create(cmark_reference_map *map, cmark_chunk *label,+void cmark_reference_create(cmark_map *map, cmark_chunk *label,                             cmark_chunk *url, cmark_chunk *title) {   cmark_reference *ref;-  unsigned char *reflabel = normalize_reference(map->mem, label);+  unsigned char *reflabel = normalize_map_label(map->mem, label);    /* empty reference name, or composed from only whitespace */   if (reflabel == NULL)@@ -56,101 +27,16 @@   assert(map->sorted == NULL);    ref = (cmark_reference *)map->mem->calloc(1, sizeof(*ref));-  ref->label = reflabel;+  ref->entry.label = reflabel;   ref->url = cmark_clean_url(map->mem, url);   ref->title = cmark_clean_title(map->mem, title);-  ref->age = map->size;-  ref->next = map->refs;+  ref->entry.age = map->size;+  ref->entry.next = map->refs; -  map->refs = ref;+  map->refs = (cmark_map_entry *)ref;   map->size++; } -static int-labelcmp(const unsigned char *a, const unsigned char *b) {-  return strcmp((const char *)a, (const char *)b);-}--static int-refcmp(const void *p1, const void *p2) {-  cmark_reference *r1 = *(cmark_reference **)p1;-  cmark_reference *r2 = *(cmark_reference **)p2;-  int res = labelcmp(r1->label, r2->label);-  return res ? res : ((int)r1->age - (int)r2->age);-}--static int-refsearch(const void *label, const void *p2) {-  cmark_reference *ref = *(cmark_reference **)p2;-  return labelcmp((const unsigned char *)label, ref->label);-}--static void sort_references(cmark_reference_map *map) {-  unsigned int i = 0, last = 0, size = map->size;-  cmark_reference *r = map->refs, **sorted = NULL;--  sorted = (cmark_reference **)map->mem->calloc(size, sizeof(cmark_reference *));-  while (r) {-    sorted[i++] = r;-    r = r->next;-  }--  qsort(sorted, size, sizeof(cmark_reference *), refcmp);--  for (i = 1; i < size; i++) {-    if (labelcmp(sorted[i]->label, sorted[last]->label) != 0)-      sorted[++last] = sorted[i];-  }--  map->sorted = sorted;-  map->size = last + 1;-}--// Returns reference if refmap contains a reference with matching-// label, otherwise NULL.-cmark_reference *cmark_reference_lookup(cmark_reference_map *map,-                                        cmark_chunk *label) {-  cmark_reference **ref = NULL;-  unsigned char *norm;--  if (label->len < 1 || label->len > MAX_LINK_LABEL_LENGTH)-    return NULL;--  if (map == NULL || !map->size)-    return NULL;--  norm = normalize_reference(map->mem, label);-  if (norm == NULL)-    return NULL;--  if (!map->sorted)-    sort_references(map);--  ref = (cmark_reference **)bsearch(norm, map->sorted, map->size, sizeof(cmark_reference *), refsearch);-  map->mem->free(norm);-  return ref ? ref[0] : NULL;-}--void cmark_reference_map_free(cmark_reference_map *map) {-  cmark_reference *ref;--  if (map == NULL)-    return;--  ref = map->refs;-  while (ref) {-    cmark_reference *next = ref->next;-    reference_free(map, ref);-    ref = next;-  }--  map->mem->free(map->sorted);-  map->mem->free(map);-}--cmark_reference_map *cmark_reference_map_new(cmark_mem *mem) {-  cmark_reference_map *map =-      (cmark_reference_map *)mem->calloc(1, sizeof(cmark_reference_map));-  map->mem = mem;-  return map;+cmark_map *cmark_reference_map_new(cmark_mem *mem) {+  return cmark_map_new(mem, reference_free); }
cbits/references.h view
@@ -1,38 +1,23 @@ #ifndef CMARK_REFERENCES_H #define CMARK_REFERENCES_H -#include "memory.h"-#include "chunk.h"+#include "map.h"  #ifdef __cplusplus extern "C" { #endif  struct cmark_reference {-  struct cmark_reference *next;-  unsigned char *label;+  cmark_map_entry entry;   cmark_chunk url;   cmark_chunk title;-  unsigned int age; };  typedef struct cmark_reference cmark_reference; -struct cmark_reference_map {-  cmark_mem *mem;-  cmark_reference *refs;-  cmark_reference **sorted;-  unsigned int size;-};--typedef struct cmark_reference_map cmark_reference_map;--cmark_reference_map *cmark_reference_map_new(cmark_mem *mem);-void cmark_reference_map_free(cmark_reference_map *map);-cmark_reference *cmark_reference_lookup(cmark_reference_map *map,-                                        cmark_chunk *label);-extern void cmark_reference_create(cmark_reference_map *map, cmark_chunk *label,-                                   cmark_chunk *url, cmark_chunk *title);+void cmark_reference_create(cmark_map *map, cmark_chunk *label,+                            cmark_chunk *url, cmark_chunk *title);+cmark_map *cmark_reference_map_new(cmark_mem *mem);  #ifdef __cplusplus }
cbits/registry.c view
@@ -3,7 +3,7 @@ #include <string.h>  #include "config.h"-#include "cmark.h"+#include "cmark-gfm.h" #include "syntax_extension.h" #include "registry.h" #include "plugin.h"
cbits/registry.h view
@@ -5,16 +5,16 @@ extern "C" { #endif -#include "cmark.h"+#include "cmark-gfm.h" #include "plugin.h" -CMARK_EXPORT+CMARK_GFM_EXPORT void cmark_register_plugin(cmark_plugin_init_func reg_fn); -CMARK_EXPORT+CMARK_GFM_EXPORT void cmark_release_plugins(void); -CMARK_EXPORT+CMARK_GFM_EXPORT cmark_llist *cmark_list_syntax_extensions(cmark_mem *mem);  #ifdef __cplusplus
cbits/render.c view
@@ -1,7 +1,7 @@ #include <stdlib.h> #include "buffer.h" #include "chunk.h"-#include "cmark.h"+#include "cmark-gfm.h" #include "utf8.h" #include "render.h" #include "node.h"@@ -174,7 +174,8 @@    cmark_renderer renderer = {mem,   &buf, &pref, 0,           width,                              0,     0,    true,  true,        false,-                             false, outc, S_cr,  S_blankline, S_out};+                             false, outc, S_cr,  S_blankline, S_out,+                             0};    while ((ev_type = cmark_iter_next(iter)) != CMARK_EVENT_DONE) {     cur = cmark_iter_get_node(iter);
cbits/render.h view
@@ -28,6 +28,7 @@   void (*cr)(struct cmark_renderer *);   void (*blankline)(struct cmark_renderer *);   void (*out)(struct cmark_renderer *, cmark_node *, const char *, bool, cmark_escaping);+  unsigned int footnote_ix; };  typedef struct cmark_renderer cmark_renderer;@@ -36,6 +37,8 @@   cmark_strbuf *html;   cmark_node *plain;   cmark_llist *filter_extensions;+  unsigned int footnote_ix;+  unsigned int written_footnote_ix;   void *opaque; }; 
cbits/scanners.c view
@@ -1,18049 +1,10694 @@-/* Generated by re2c 0.15.3 */-#include <stdlib.h>-#include "chunk.h"-#include "scanners.h"--bufsize_t _scan_at(bufsize_t (*scanner)(const unsigned char *), cmark_chunk *c,-                   bufsize_t offset) {-  bufsize_t res;-  unsigned char *ptr = (unsigned char *)c->data;--  if (ptr == NULL || offset > c->len) {-    return 0;-  } else {-    unsigned char lim = ptr[c->len];--    ptr[c->len] = '\0';-    res = scanner(ptr + offset);-    ptr[c->len] = lim;-  }--  return res;-}--// Try to match a scheme including colon.-bufsize_t _scan_scheme(const unsigned char *p) {-  const unsigned char *marker = NULL;-  const unsigned char *start = p;--  {-    unsigned char yych;-    yych = *p;-    if (yych <= '@')-      goto yy2;-    if (yych <= 'Z')-      goto yy4;-    if (yych <= '`')-      goto yy2;-    if (yych <= 'z')-      goto yy4;-  yy2:-    ++p;-  yy3 : { return 0; }-  yy4:-    yych = *(marker = ++p);-    if (yych <= '/') {-      if (yych <= '+') {-        if (yych <= '*')-          goto yy3;-      } else {-        if (yych <= ',')-          goto yy3;-        if (yych >= '/')-          goto yy3;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '9')-          goto yy5;-        if (yych <= '@')-          goto yy3;-      } else {-        if (yych <= '`')-          goto yy3;-        if (yych >= '{')-          goto yy3;-      }-    }-  yy5:-    yych = *++p;-    if (yych <= '9') {-      if (yych <= ',') {-        if (yych == '+')-          goto yy9;-      } else {-        if (yych != '/')-          goto yy9;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= ':')-          goto yy7;-        if (yych >= 'A')-          goto yy9;-      } else {-        if (yych <= '`')-          goto yy6;-        if (yych <= 'z')-          goto yy9;-      }-    }-  yy6:-    p = marker;-    goto yy3;-  yy7:-    ++p;-    { return (bufsize_t)(p - start); }-  yy9:-    yych = *++p;-    if (yych <= '9') {-      if (yych <= ',') {-        if (yych != '+')-          goto yy6;-      } else {-        if (yych == '/')-          goto yy6;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= ':')-          goto yy7;-        if (yych <= '@')-          goto yy6;-      } else {-        if (yych <= '`')-          goto yy6;-        if (yych >= '{')-          goto yy6;-      }-    }-    yych = *++p;-    if (yych <= '9') {-      if (yych <= ',') {-        if (yych != '+')-          goto yy6;-      } else {-        if (yych == '/')-          goto yy6;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= ':')-          goto yy7;-        if (yych <= '@')-          goto yy6;-      } else {-        if (yych <= '`')-          goto yy6;-        if (yych >= '{')-          goto yy6;-      }-    }-    yych = *++p;-    if (yych <= '9') {-      if (yych <= ',') {-        if (yych != '+')-          goto yy6;-      } else {-        if (yych == '/')-          goto yy6;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= ':')-          goto yy7;-        if (yych <= '@')-          goto yy6;-      } else {-        if (yych <= '`')-          goto yy6;-        if (yych >= '{')-          goto yy6;-      }-    }-    yych = *++p;-    if (yych <= '9') {-      if (yych <= ',') {-        if (yych != '+')-          goto yy6;-      } else {-        if (yych == '/')-          goto yy6;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= ':')-          goto yy7;-        if (yych <= '@')-          goto yy6;-      } else {-        if (yych <= '`')-          goto yy6;-        if (yych >= '{')-          goto yy6;-      }-    }-    yych = *++p;-    if (yych <= '9') {-      if (yych <= ',') {-        if (yych != '+')-          goto yy6;-      } else {-        if (yych == '/')-          goto yy6;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= ':')-          goto yy7;-        if (yych <= '@')-          goto yy6;-      } else {-        if (yych <= '`')-          goto yy6;-        if (yych >= '{')-          goto yy6;-      }-    }-    yych = *++p;-    if (yych <= '9') {-      if (yych <= ',') {-        if (yych != '+')-          goto yy6;-      } else {-        if (yych == '/')-          goto yy6;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= ':')-          goto yy7;-        if (yych <= '@')-          goto yy6;-      } else {-        if (yych <= '`')-          goto yy6;-        if (yych >= '{')-          goto yy6;-      }-    }-    yych = *++p;-    if (yych <= '9') {-      if (yych <= ',') {-        if (yych != '+')-          goto yy6;-      } else {-        if (yych == '/')-          goto yy6;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= ':')-          goto yy7;-        if (yych <= '@')-          goto yy6;-      } else {-        if (yych <= '`')-          goto yy6;-        if (yych >= '{')-          goto yy6;-      }-    }-    yych = *++p;-    if (yych <= '9') {-      if (yych <= ',') {-        if (yych != '+')-          goto yy6;-      } else {-        if (yych == '/')-          goto yy6;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= ':')-          goto yy7;-        if (yych <= '@')-          goto yy6;-      } else {-        if (yych <= '`')-          goto yy6;-        if (yych >= '{')-          goto yy6;-      }-    }-    yych = *++p;-    if (yych <= '9') {-      if (yych <= ',') {-        if (yych != '+')-          goto yy6;-      } else {-        if (yych == '/')-          goto yy6;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= ':')-          goto yy7;-        if (yych <= '@')-          goto yy6;-      } else {-        if (yych <= '`')-          goto yy6;-        if (yych >= '{')-          goto yy6;-      }-    }-    yych = *++p;-    if (yych <= '9') {-      if (yych <= ',') {-        if (yych != '+')-          goto yy6;-      } else {-        if (yych == '/')-          goto yy6;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= ':')-          goto yy7;-        if (yych <= '@')-          goto yy6;-      } else {-        if (yych <= '`')-          goto yy6;-        if (yych >= '{')-          goto yy6;-      }-    }-    yych = *++p;-    if (yych <= '9') {-      if (yych <= ',') {-        if (yych != '+')-          goto yy6;-      } else {-        if (yych == '/')-          goto yy6;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= ':')-          goto yy7;-        if (yych <= '@')-          goto yy6;-      } else {-        if (yych <= '`')-          goto yy6;-        if (yych >= '{')-          goto yy6;-      }-    }-    yych = *++p;-    if (yych <= '9') {-      if (yych <= ',') {-        if (yych != '+')-          goto yy6;-      } else {-        if (yych == '/')-          goto yy6;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= ':')-          goto yy7;-        if (yych <= '@')-          goto yy6;-      } else {-        if (yych <= '`')-          goto yy6;-        if (yych >= '{')-          goto yy6;-      }-    }-    yych = *++p;-    if (yych <= '9') {-      if (yych <= ',') {-        if (yych != '+')-          goto yy6;-      } else {-        if (yych == '/')-          goto yy6;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= ':')-          goto yy7;-        if (yych <= '@')-          goto yy6;-      } else {-        if (yych <= '`')-          goto yy6;-        if (yych >= '{')-          goto yy6;-      }-    }-    yych = *++p;-    if (yych <= '9') {-      if (yych <= ',') {-        if (yych != '+')-          goto yy6;-      } else {-        if (yych == '/')-          goto yy6;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= ':')-          goto yy7;-        if (yych <= '@')-          goto yy6;-      } else {-        if (yych <= '`')-          goto yy6;-        if (yych >= '{')-          goto yy6;-      }-    }-    yych = *++p;-    if (yych <= '9') {-      if (yych <= ',') {-        if (yych != '+')-          goto yy6;-      } else {-        if (yych == '/')-          goto yy6;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= ':')-          goto yy7;-        if (yych <= '@')-          goto yy6;-      } else {-        if (yych <= '`')-          goto yy6;-        if (yych >= '{')-          goto yy6;-      }-    }-    yych = *++p;-    if (yych <= '9') {-      if (yych <= ',') {-        if (yych != '+')-          goto yy6;-      } else {-        if (yych == '/')-          goto yy6;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= ':')-          goto yy7;-        if (yych <= '@')-          goto yy6;-      } else {-        if (yych <= '`')-          goto yy6;-        if (yych >= '{')-          goto yy6;-      }-    }-    yych = *++p;-    if (yych <= '9') {-      if (yych <= ',') {-        if (yych != '+')-          goto yy6;-      } else {-        if (yych == '/')-          goto yy6;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= ':')-          goto yy7;-        if (yych <= '@')-          goto yy6;-      } else {-        if (yych <= '`')-          goto yy6;-        if (yych >= '{')-          goto yy6;-      }-    }-    yych = *++p;-    if (yych <= '9') {-      if (yych <= ',') {-        if (yych != '+')-          goto yy6;-      } else {-        if (yych == '/')-          goto yy6;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= ':')-          goto yy7;-        if (yych <= '@')-          goto yy6;-      } else {-        if (yych <= '`')-          goto yy6;-        if (yych >= '{')-          goto yy6;-      }-    }-    yych = *++p;-    if (yych <= '9') {-      if (yych <= ',') {-        if (yych != '+')-          goto yy6;-      } else {-        if (yych == '/')-          goto yy6;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= ':')-          goto yy7;-        if (yych <= '@')-          goto yy6;-      } else {-        if (yych <= '`')-          goto yy6;-        if (yych >= '{')-          goto yy6;-      }-    }-    yych = *++p;-    if (yych <= '9') {-      if (yych <= ',') {-        if (yych != '+')-          goto yy6;-      } else {-        if (yych == '/')-          goto yy6;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= ':')-          goto yy7;-        if (yych <= '@')-          goto yy6;-      } else {-        if (yych <= '`')-          goto yy6;-        if (yych >= '{')-          goto yy6;-      }-    }-    yych = *++p;-    if (yych <= '9') {-      if (yych <= ',') {-        if (yych != '+')-          goto yy6;-      } else {-        if (yych == '/')-          goto yy6;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= ':')-          goto yy7;-        if (yych <= '@')-          goto yy6;-      } else {-        if (yych <= '`')-          goto yy6;-        if (yych >= '{')-          goto yy6;-      }-    }-    yych = *++p;-    if (yych <= '9') {-      if (yych <= ',') {-        if (yych != '+')-          goto yy6;-      } else {-        if (yych == '/')-          goto yy6;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= ':')-          goto yy7;-        if (yych <= '@')-          goto yy6;-      } else {-        if (yych <= '`')-          goto yy6;-        if (yych >= '{')-          goto yy6;-      }-    }-    yych = *++p;-    if (yych <= '9') {-      if (yych <= ',') {-        if (yych != '+')-          goto yy6;-      } else {-        if (yych == '/')-          goto yy6;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= ':')-          goto yy7;-        if (yych <= '@')-          goto yy6;-      } else {-        if (yych <= '`')-          goto yy6;-        if (yych >= '{')-          goto yy6;-      }-    }-    yych = *++p;-    if (yych <= '9') {-      if (yych <= ',') {-        if (yych != '+')-          goto yy6;-      } else {-        if (yych == '/')-          goto yy6;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= ':')-          goto yy7;-        if (yych <= '@')-          goto yy6;-      } else {-        if (yych <= '`')-          goto yy6;-        if (yych >= '{')-          goto yy6;-      }-    }-    yych = *++p;-    if (yych <= '9') {-      if (yych <= ',') {-        if (yych != '+')-          goto yy6;-      } else {-        if (yych == '/')-          goto yy6;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= ':')-          goto yy7;-        if (yych <= '@')-          goto yy6;-      } else {-        if (yych <= '`')-          goto yy6;-        if (yych >= '{')-          goto yy6;-      }-    }-    yych = *++p;-    if (yych <= '9') {-      if (yych <= ',') {-        if (yych != '+')-          goto yy6;-      } else {-        if (yych == '/')-          goto yy6;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= ':')-          goto yy7;-        if (yych <= '@')-          goto yy6;-      } else {-        if (yych <= '`')-          goto yy6;-        if (yych >= '{')-          goto yy6;-      }-    }-    yych = *++p;-    if (yych <= '9') {-      if (yych <= ',') {-        if (yych != '+')-          goto yy6;-      } else {-        if (yych == '/')-          goto yy6;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= ':')-          goto yy7;-        if (yych <= '@')-          goto yy6;-      } else {-        if (yych <= '`')-          goto yy6;-        if (yych >= '{')-          goto yy6;-      }-    }-    yych = *++p;-    if (yych <= '9') {-      if (yych <= ',') {-        if (yych != '+')-          goto yy6;-      } else {-        if (yych == '/')-          goto yy6;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= ':')-          goto yy7;-        if (yych <= '@')-          goto yy6;-      } else {-        if (yych <= '`')-          goto yy6;-        if (yych >= '{')-          goto yy6;-      }-    }-    yych = *++p;-    if (yych <= '9') {-      if (yych <= ',') {-        if (yych != '+')-          goto yy6;-      } else {-        if (yych == '/')-          goto yy6;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= ':')-          goto yy7;-        if (yych <= '@')-          goto yy6;-      } else {-        if (yych <= '`')-          goto yy6;-        if (yych >= '{')-          goto yy6;-      }-    }-    ++p;-    if ((yych = *p) == ':')-      goto yy7;-    goto yy6;-  }-}--// Try to match URI autolink after first <, returning number of chars matched.-bufsize_t _scan_autolink_uri(const unsigned char *p) {-  const unsigned char *marker = NULL;-  const unsigned char *start = p;--  {-    unsigned char yych;-    static const unsigned char yybm[] = {-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,-        0,   0,   0,   0,   0,   128, 128, 128, 128, 128, 128, 128, 128, 128,-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,-        128, 128, 128, 128, 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, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,-        0,   0,   0,   0,-    };-    yych = *p;-    if (yych <= '@')-      goto yy41;-    if (yych <= 'Z')-      goto yy43;-    if (yych <= '`')-      goto yy41;-    if (yych <= 'z')-      goto yy43;-  yy41:-    ++p;-  yy42 : { return 0; }-  yy43:-    yych = *(marker = ++p);-    if (yych <= '/') {-      if (yych <= '+') {-        if (yych <= '*')-          goto yy42;-      } else {-        if (yych <= ',')-          goto yy42;-        if (yych >= '/')-          goto yy42;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '9')-          goto yy44;-        if (yych <= '@')-          goto yy42;-      } else {-        if (yych <= '`')-          goto yy42;-        if (yych >= '{')-          goto yy42;-      }-    }-  yy44:-    yych = *++p;-    if (yych <= '9') {-      if (yych <= ',') {-        if (yych == '+')-          goto yy48;-      } else {-        if (yych != '/')-          goto yy48;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= ':')-          goto yy46;-        if (yych >= 'A')-          goto yy48;-      } else {-        if (yych <= '`')-          goto yy45;-        if (yych <= 'z')-          goto yy48;-      }-    }-  yy45:-    p = marker;-    goto yy42;-  yy46:-    ++p;-    yych = *p;-    if (yybm[0 + yych] & 128) {-      goto yy46;-    }-    if (yych <= 0xEC) {-      if (yych <= 0xC1) {-        if (yych <= ' ')-          goto yy45;-        if (yych <= '>')-          goto yy85;-        goto yy45;-      } else {-        if (yych <= 0xDF)-          goto yy78;-        if (yych <= 0xE0)-          goto yy79;-        goto yy80;-      }-    } else {-      if (yych <= 0xF0) {-        if (yych <= 0xED)-          goto yy84;-        if (yych <= 0xEF)-          goto yy80;-        goto yy81;-      } else {-        if (yych <= 0xF3)-          goto yy82;-        if (yych <= 0xF4)-          goto yy83;-        goto yy45;-      }-    }-  yy48:-    yych = *++p;-    if (yych <= '9') {-      if (yych <= ',') {-        if (yych != '+')-          goto yy45;-      } else {-        if (yych == '/')-          goto yy45;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= ':')-          goto yy46;-        if (yych <= '@')-          goto yy45;-      } else {-        if (yych <= '`')-          goto yy45;-        if (yych >= '{')-          goto yy45;-      }-    }-    yych = *++p;-    if (yych <= '9') {-      if (yych <= ',') {-        if (yych != '+')-          goto yy45;-      } else {-        if (yych == '/')-          goto yy45;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= ':')-          goto yy46;-        if (yych <= '@')-          goto yy45;-      } else {-        if (yych <= '`')-          goto yy45;-        if (yych >= '{')-          goto yy45;-      }-    }-    yych = *++p;-    if (yych <= '9') {-      if (yych <= ',') {-        if (yych != '+')-          goto yy45;-      } else {-        if (yych == '/')-          goto yy45;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= ':')-          goto yy46;-        if (yych <= '@')-          goto yy45;-      } else {-        if (yych <= '`')-          goto yy45;-        if (yych >= '{')-          goto yy45;-      }-    }-    yych = *++p;-    if (yych <= '9') {-      if (yych <= ',') {-        if (yych != '+')-          goto yy45;-      } else {-        if (yych == '/')-          goto yy45;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= ':')-          goto yy46;-        if (yych <= '@')-          goto yy45;-      } else {-        if (yych <= '`')-          goto yy45;-        if (yych >= '{')-          goto yy45;-      }-    }-    yych = *++p;-    if (yych <= '9') {-      if (yych <= ',') {-        if (yych != '+')-          goto yy45;-      } else {-        if (yych == '/')-          goto yy45;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= ':')-          goto yy46;-        if (yych <= '@')-          goto yy45;-      } else {-        if (yych <= '`')-          goto yy45;-        if (yych >= '{')-          goto yy45;-      }-    }-    yych = *++p;-    if (yych <= '9') {-      if (yych <= ',') {-        if (yych != '+')-          goto yy45;-      } else {-        if (yych == '/')-          goto yy45;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= ':')-          goto yy46;-        if (yych <= '@')-          goto yy45;-      } else {-        if (yych <= '`')-          goto yy45;-        if (yych >= '{')-          goto yy45;-      }-    }-    yych = *++p;-    if (yych <= '9') {-      if (yych <= ',') {-        if (yych != '+')-          goto yy45;-      } else {-        if (yych == '/')-          goto yy45;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= ':')-          goto yy46;-        if (yych <= '@')-          goto yy45;-      } else {-        if (yych <= '`')-          goto yy45;-        if (yych >= '{')-          goto yy45;-      }-    }-    yych = *++p;-    if (yych <= '9') {-      if (yych <= ',') {-        if (yych != '+')-          goto yy45;-      } else {-        if (yych == '/')-          goto yy45;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= ':')-          goto yy46;-        if (yych <= '@')-          goto yy45;-      } else {-        if (yych <= '`')-          goto yy45;-        if (yych >= '{')-          goto yy45;-      }-    }-    yych = *++p;-    if (yych <= '9') {-      if (yych <= ',') {-        if (yych != '+')-          goto yy45;-      } else {-        if (yych == '/')-          goto yy45;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= ':')-          goto yy46;-        if (yych <= '@')-          goto yy45;-      } else {-        if (yych <= '`')-          goto yy45;-        if (yych >= '{')-          goto yy45;-      }-    }-    yych = *++p;-    if (yych <= '9') {-      if (yych <= ',') {-        if (yych != '+')-          goto yy45;-      } else {-        if (yych == '/')-          goto yy45;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= ':')-          goto yy46;-        if (yych <= '@')-          goto yy45;-      } else {-        if (yych <= '`')-          goto yy45;-        if (yych >= '{')-          goto yy45;-      }-    }-    yych = *++p;-    if (yych <= '9') {-      if (yych <= ',') {-        if (yych != '+')-          goto yy45;-      } else {-        if (yych == '/')-          goto yy45;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= ':')-          goto yy46;-        if (yych <= '@')-          goto yy45;-      } else {-        if (yych <= '`')-          goto yy45;-        if (yych >= '{')-          goto yy45;-      }-    }-    yych = *++p;-    if (yych <= '9') {-      if (yych <= ',') {-        if (yych != '+')-          goto yy45;-      } else {-        if (yych == '/')-          goto yy45;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= ':')-          goto yy46;-        if (yych <= '@')-          goto yy45;-      } else {-        if (yych <= '`')-          goto yy45;-        if (yych >= '{')-          goto yy45;-      }-    }-    yych = *++p;-    if (yych <= '9') {-      if (yych <= ',') {-        if (yych != '+')-          goto yy45;-      } else {-        if (yych == '/')-          goto yy45;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= ':')-          goto yy46;-        if (yych <= '@')-          goto yy45;-      } else {-        if (yych <= '`')-          goto yy45;-        if (yych >= '{')-          goto yy45;-      }-    }-    yych = *++p;-    if (yych <= '9') {-      if (yych <= ',') {-        if (yych != '+')-          goto yy45;-      } else {-        if (yych == '/')-          goto yy45;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= ':')-          goto yy46;-        if (yych <= '@')-          goto yy45;-      } else {-        if (yych <= '`')-          goto yy45;-        if (yych >= '{')-          goto yy45;-      }-    }-    yych = *++p;-    if (yych <= '9') {-      if (yych <= ',') {-        if (yych != '+')-          goto yy45;-      } else {-        if (yych == '/')-          goto yy45;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= ':')-          goto yy46;-        if (yych <= '@')-          goto yy45;-      } else {-        if (yych <= '`')-          goto yy45;-        if (yych >= '{')-          goto yy45;-      }-    }-    yych = *++p;-    if (yych <= '9') {-      if (yych <= ',') {-        if (yych != '+')-          goto yy45;-      } else {-        if (yych == '/')-          goto yy45;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= ':')-          goto yy46;-        if (yych <= '@')-          goto yy45;-      } else {-        if (yych <= '`')-          goto yy45;-        if (yych >= '{')-          goto yy45;-      }-    }-    yych = *++p;-    if (yych <= '9') {-      if (yych <= ',') {-        if (yych != '+')-          goto yy45;-      } else {-        if (yych == '/')-          goto yy45;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= ':')-          goto yy46;-        if (yych <= '@')-          goto yy45;-      } else {-        if (yych <= '`')-          goto yy45;-        if (yych >= '{')-          goto yy45;-      }-    }-    yych = *++p;-    if (yych <= '9') {-      if (yych <= ',') {-        if (yych != '+')-          goto yy45;-      } else {-        if (yych == '/')-          goto yy45;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= ':')-          goto yy46;-        if (yych <= '@')-          goto yy45;-      } else {-        if (yych <= '`')-          goto yy45;-        if (yych >= '{')-          goto yy45;-      }-    }-    yych = *++p;-    if (yych <= '9') {-      if (yych <= ',') {-        if (yych != '+')-          goto yy45;-      } else {-        if (yych == '/')-          goto yy45;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= ':')-          goto yy46;-        if (yych <= '@')-          goto yy45;-      } else {-        if (yych <= '`')-          goto yy45;-        if (yych >= '{')-          goto yy45;-      }-    }-    yych = *++p;-    if (yych <= '9') {-      if (yych <= ',') {-        if (yych != '+')-          goto yy45;-      } else {-        if (yych == '/')-          goto yy45;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= ':')-          goto yy46;-        if (yych <= '@')-          goto yy45;-      } else {-        if (yych <= '`')-          goto yy45;-        if (yych >= '{')-          goto yy45;-      }-    }-    yych = *++p;-    if (yych <= '9') {-      if (yych <= ',') {-        if (yych != '+')-          goto yy45;-      } else {-        if (yych == '/')-          goto yy45;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= ':')-          goto yy46;-        if (yych <= '@')-          goto yy45;-      } else {-        if (yych <= '`')-          goto yy45;-        if (yych >= '{')-          goto yy45;-      }-    }-    yych = *++p;-    if (yych <= '9') {-      if (yych <= ',') {-        if (yych != '+')-          goto yy45;-      } else {-        if (yych == '/')-          goto yy45;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= ':')-          goto yy46;-        if (yych <= '@')-          goto yy45;-      } else {-        if (yych <= '`')-          goto yy45;-        if (yych >= '{')-          goto yy45;-      }-    }-    yych = *++p;-    if (yych <= '9') {-      if (yych <= ',') {-        if (yych != '+')-          goto yy45;-      } else {-        if (yych == '/')-          goto yy45;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= ':')-          goto yy46;-        if (yych <= '@')-          goto yy45;-      } else {-        if (yych <= '`')-          goto yy45;-        if (yych >= '{')-          goto yy45;-      }-    }-    yych = *++p;-    if (yych <= '9') {-      if (yych <= ',') {-        if (yych != '+')-          goto yy45;-      } else {-        if (yych == '/')-          goto yy45;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= ':')-          goto yy46;-        if (yych <= '@')-          goto yy45;-      } else {-        if (yych <= '`')-          goto yy45;-        if (yych >= '{')-          goto yy45;-      }-    }-    yych = *++p;-    if (yych <= '9') {-      if (yych <= ',') {-        if (yych != '+')-          goto yy45;-      } else {-        if (yych == '/')-          goto yy45;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= ':')-          goto yy46;-        if (yych <= '@')-          goto yy45;-      } else {-        if (yych <= '`')-          goto yy45;-        if (yych >= '{')-          goto yy45;-      }-    }-    yych = *++p;-    if (yych <= '9') {-      if (yych <= ',') {-        if (yych != '+')-          goto yy45;-      } else {-        if (yych == '/')-          goto yy45;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= ':')-          goto yy46;-        if (yych <= '@')-          goto yy45;-      } else {-        if (yych <= '`')-          goto yy45;-        if (yych >= '{')-          goto yy45;-      }-    }-    yych = *++p;-    if (yych <= '9') {-      if (yych <= ',') {-        if (yych != '+')-          goto yy45;-      } else {-        if (yych == '/')-          goto yy45;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= ':')-          goto yy46;-        if (yych <= '@')-          goto yy45;-      } else {-        if (yych <= '`')-          goto yy45;-        if (yych >= '{')-          goto yy45;-      }-    }-    yych = *++p;-    if (yych <= '9') {-      if (yych <= ',') {-        if (yych != '+')-          goto yy45;-      } else {-        if (yych == '/')-          goto yy45;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= ':')-          goto yy46;-        if (yych <= '@')-          goto yy45;-      } else {-        if (yych <= '`')-          goto yy45;-        if (yych >= '{')-          goto yy45;-      }-    }-    yych = *++p;-    if (yych <= '9') {-      if (yych <= ',') {-        if (yych != '+')-          goto yy45;-      } else {-        if (yych == '/')-          goto yy45;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= ':')-          goto yy46;-        if (yych <= '@')-          goto yy45;-      } else {-        if (yych <= '`')-          goto yy45;-        if (yych >= '{')-          goto yy45;-      }-    }-    yych = *++p;-    if (yych == ':')-      goto yy46;-    goto yy45;-  yy78:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy45;-    if (yych <= 0xBF)-      goto yy46;-    goto yy45;-  yy79:-    ++p;-    yych = *p;-    if (yych <= 0x9F)-      goto yy45;-    if (yych <= 0xBF)-      goto yy78;-    goto yy45;-  yy80:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy45;-    if (yych <= 0xBF)-      goto yy78;-    goto yy45;-  yy81:-    ++p;-    yych = *p;-    if (yych <= 0x8F)-      goto yy45;-    if (yych <= 0xBF)-      goto yy80;-    goto yy45;-  yy82:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy45;-    if (yych <= 0xBF)-      goto yy80;-    goto yy45;-  yy83:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy45;-    if (yych <= 0x8F)-      goto yy80;-    goto yy45;-  yy84:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy45;-    if (yych <= 0x9F)-      goto yy78;-    goto yy45;-  yy85:-    ++p;-    { return (bufsize_t)(p - start); }-  }-}--// Try to match email autolink after first <, returning num of chars matched.-bufsize_t _scan_autolink_email(const unsigned char *p) {-  const unsigned char *marker = NULL;-  const unsigned char *start = p;--  {-    unsigned char yych;-    static const unsigned char yybm[] = {-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,-        0,   0,   0,   0,   0,   128, 0,   128, 128, 128, 128, 128, 0,   0,-        128, 128, 0,   128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,-        128, 128, 0,   0,   0,   128, 0,   128, 0,   128, 128, 128, 128, 128,-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,-        128, 128, 128, 128, 128, 128, 128, 0,   0,   0,   128, 128, 128, 128,-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,-        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,-        128, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,-        0,   0,   0,   0,-    };-    yych = *p;-    if (yych <= '9') {-      if (yych <= '\'') {-        if (yych == '!')-          goto yy91;-        if (yych >= '#')-          goto yy91;-      } else {-        if (yych <= ')')-          goto yy89;-        if (yych != ',')-          goto yy91;-      }-    } else {-      if (yych <= '?') {-        if (yych == '=')-          goto yy91;-        if (yych >= '?')-          goto yy91;-      } else {-        if (yych <= 'Z') {-          if (yych >= 'A')-            goto yy91;-        } else {-          if (yych <= ']')-            goto yy89;-          if (yych <= '~')-            goto yy91;-        }-      }-    }-  yy89:-    ++p;-  yy90 : { return 0; }-  yy91:-    yych = *(marker = ++p);-    if (yych <= ',') {-      if (yych <= '"') {-        if (yych == '!')-          goto yy95;-        goto yy90;-      } else {-        if (yych <= '\'')-          goto yy95;-        if (yych <= ')')-          goto yy90;-        if (yych <= '+')-          goto yy95;-        goto yy90;-      }-    } else {-      if (yych <= '>') {-        if (yych <= '9')-          goto yy95;-        if (yych == '=')-          goto yy95;-        goto yy90;-      } else {-        if (yych <= 'Z')-          goto yy95;-        if (yych <= ']')-          goto yy90;-        if (yych <= '~')-          goto yy95;-        goto yy90;-      }-    }-  yy92:-    yych = *++p;-    if (yych <= '@') {-      if (yych <= '/')-        goto yy93;-      if (yych <= '9')-        goto yy96;-    } else {-      if (yych <= 'Z')-        goto yy96;-      if (yych <= '`')-        goto yy93;-      if (yych <= 'z')-        goto yy96;-    }-  yy93:-    p = marker;-    goto yy90;-  yy94:-    ++p;-    yych = *p;-  yy95:-    if (yybm[0 + yych] & 128) {-      goto yy94;-    }-    if (yych <= '>')-      goto yy93;-    if (yych <= '@')-      goto yy92;-    goto yy93;-  yy96:-    yych = *++p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy98;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych >= ':')-          goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-    yych = *++p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy227;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy226;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy226;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy226;-        goto yy93;-      }-    }-  yy98:-    yych = *++p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy227;-      if (yych <= '/')-        goto yy93;-      goto yy226;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-        goto yy226;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy226;-        goto yy93;-      }-    }-  yy99:-    ++p;-    yych = *p;-    if (yych <= '@') {-      if (yych <= '/')-        goto yy93;-      if (yych <= '9')-        goto yy102;-      goto yy93;-    } else {-      if (yych <= 'Z')-        goto yy102;-      if (yych <= '`')-        goto yy93;-      if (yych <= 'z')-        goto yy102;-      goto yy93;-    }-  yy100:-    ++p;-    { return (bufsize_t)(p - start); }-  yy102:-    ++p;-    yych = *p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy104;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych >= ':')-          goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-    ++p;-    yych = *p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy106;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy105;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy105;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy105;-        goto yy93;-      }-    }-  yy104:-    ++p;-    yych = *p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy106;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy105:-    ++p;-    yych = *p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy108;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy107;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy107;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy107;-        goto yy93;-      }-    }-  yy106:-    ++p;-    yych = *p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy108;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy107:-    ++p;-    yych = *p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy110;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy109;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy109;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy109;-        goto yy93;-      }-    }-  yy108:-    ++p;-    yych = *p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy110;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy109:-    ++p;-    yych = *p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy112;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy111;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy111;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy111;-        goto yy93;-      }-    }-  yy110:-    ++p;-    yych = *p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy112;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy111:-    ++p;-    yych = *p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy114;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy113;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy113;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy113;-        goto yy93;-      }-    }-  yy112:-    ++p;-    yych = *p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy114;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy113:-    ++p;-    yych = *p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy116;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy115;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy115;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy115;-        goto yy93;-      }-    }-  yy114:-    ++p;-    yych = *p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy116;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy115:-    ++p;-    yych = *p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy118;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy117;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy117;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy117;-        goto yy93;-      }-    }-  yy116:-    ++p;-    yych = *p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy118;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy117:-    ++p;-    yych = *p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy120;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy119;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy119;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy119;-        goto yy93;-      }-    }-  yy118:-    ++p;-    yych = *p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy120;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy119:-    ++p;-    yych = *p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy122;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy121;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy121;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy121;-        goto yy93;-      }-    }-  yy120:-    ++p;-    yych = *p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy122;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy121:-    ++p;-    yych = *p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy124;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy123;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy123;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy123;-        goto yy93;-      }-    }-  yy122:-    ++p;-    yych = *p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy124;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy123:-    ++p;-    yych = *p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy126;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy125;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy125;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy125;-        goto yy93;-      }-    }-  yy124:-    ++p;-    yych = *p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy126;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy125:-    ++p;-    yych = *p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy128;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy127;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy127;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy127;-        goto yy93;-      }-    }-  yy126:-    ++p;-    yych = *p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy128;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy127:-    ++p;-    yych = *p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy130;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy129;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy129;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy129;-        goto yy93;-      }-    }-  yy128:-    ++p;-    yych = *p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy130;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy129:-    ++p;-    yych = *p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy132;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy131;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy131;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy131;-        goto yy93;-      }-    }-  yy130:-    ++p;-    yych = *p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy132;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy131:-    ++p;-    yych = *p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy134;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy133;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy133;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy133;-        goto yy93;-      }-    }-  yy132:-    ++p;-    yych = *p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy134;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy133:-    ++p;-    yych = *p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy136;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy135;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy135;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy135;-        goto yy93;-      }-    }-  yy134:-    ++p;-    yych = *p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy136;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy135:-    ++p;-    yych = *p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy138;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy137;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy137;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy137;-        goto yy93;-      }-    }-  yy136:-    ++p;-    yych = *p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy138;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy137:-    ++p;-    yych = *p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy140;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy139;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy139;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy139;-        goto yy93;-      }-    }-  yy138:-    ++p;-    yych = *p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy140;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy139:-    ++p;-    yych = *p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy142;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy141;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy141;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy141;-        goto yy93;-      }-    }-  yy140:-    ++p;-    yych = *p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy142;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy141:-    ++p;-    yych = *p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy144;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy143;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy143;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy143;-        goto yy93;-      }-    }-  yy142:-    ++p;-    yych = *p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy144;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy143:-    ++p;-    yych = *p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy146;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy145;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy145;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy145;-        goto yy93;-      }-    }-  yy144:-    ++p;-    yych = *p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy146;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy145:-    ++p;-    yych = *p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy148;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy147;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy147;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy147;-        goto yy93;-      }-    }-  yy146:-    ++p;-    yych = *p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy148;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy147:-    ++p;-    yych = *p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy150;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy149;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy149;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy149;-        goto yy93;-      }-    }-  yy148:-    ++p;-    yych = *p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy150;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy149:-    ++p;-    yych = *p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy152;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy151;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy151;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy151;-        goto yy93;-      }-    }-  yy150:-    ++p;-    yych = *p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy152;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy151:-    ++p;-    yych = *p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy154;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy153;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy153;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy153;-        goto yy93;-      }-    }-  yy152:-    ++p;-    yych = *p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy154;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy153:-    ++p;-    yych = *p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy156;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy155;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy155;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy155;-        goto yy93;-      }-    }-  yy154:-    ++p;-    yych = *p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy156;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy155:-    ++p;-    yych = *p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy158;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy157;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy157;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy157;-        goto yy93;-      }-    }-  yy156:-    ++p;-    yych = *p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy158;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy157:-    ++p;-    yych = *p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy160;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy159;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy159;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy159;-        goto yy93;-      }-    }-  yy158:-    ++p;-    yych = *p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy160;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy159:-    ++p;-    yych = *p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy162;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy161;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy161;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy161;-        goto yy93;-      }-    }-  yy160:-    ++p;-    yych = *p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy162;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy161:-    ++p;-    yych = *p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy164;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy163;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy163;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy163;-        goto yy93;-      }-    }-  yy162:-    ++p;-    yych = *p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy164;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy163:-    ++p;-    yych = *p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy166;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy165;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy165;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy165;-        goto yy93;-      }-    }-  yy164:-    ++p;-    yych = *p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy166;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy165:-    ++p;-    yych = *p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy168;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy167;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy167;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy167;-        goto yy93;-      }-    }-  yy166:-    ++p;-    yych = *p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy168;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy167:-    ++p;-    yych = *p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy170;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy169;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy169;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy169;-        goto yy93;-      }-    }-  yy168:-    ++p;-    yych = *p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy170;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy169:-    ++p;-    yych = *p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy172;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy171;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy171;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy171;-        goto yy93;-      }-    }-  yy170:-    ++p;-    yych = *p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy172;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy171:-    ++p;-    yych = *p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy174;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy173;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy173;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy173;-        goto yy93;-      }-    }-  yy172:-    ++p;-    yych = *p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy174;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy173:-    ++p;-    yych = *p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy176;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy175;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy175;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy175;-        goto yy93;-      }-    }-  yy174:-    ++p;-    yych = *p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy176;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy175:-    ++p;-    yych = *p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy178;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy177;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy177;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy177;-        goto yy93;-      }-    }-  yy176:-    ++p;-    yych = *p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy178;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy177:-    ++p;-    yych = *p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy180;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy179;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy179;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy179;-        goto yy93;-      }-    }-  yy178:-    ++p;-    yych = *p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy180;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy179:-    ++p;-    yych = *p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy182;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy181;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy181;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy181;-        goto yy93;-      }-    }-  yy180:-    ++p;-    yych = *p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy182;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy181:-    ++p;-    yych = *p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy184;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy183;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy183;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy183;-        goto yy93;-      }-    }-  yy182:-    ++p;-    yych = *p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy184;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy183:-    ++p;-    yych = *p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy186;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy185;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy185;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy185;-        goto yy93;-      }-    }-  yy184:-    ++p;-    yych = *p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy186;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy185:-    ++p;-    yych = *p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy188;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy187;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy187;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy187;-        goto yy93;-      }-    }-  yy186:-    ++p;-    yych = *p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy188;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy187:-    ++p;-    yych = *p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy190;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy189;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy189;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy189;-        goto yy93;-      }-    }-  yy188:-    ++p;-    yych = *p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy190;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy189:-    ++p;-    yych = *p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy192;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy191;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy191;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy191;-        goto yy93;-      }-    }-  yy190:-    ++p;-    yych = *p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy192;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy191:-    ++p;-    yych = *p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy194;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy193;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy193;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy193;-        goto yy93;-      }-    }-  yy192:-    ++p;-    yych = *p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy194;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy193:-    ++p;-    yych = *p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy196;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy195;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy195;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy195;-        goto yy93;-      }-    }-  yy194:-    ++p;-    yych = *p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy196;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy195:-    ++p;-    yych = *p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy198;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy197;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy197;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy197;-        goto yy93;-      }-    }-  yy196:-    ++p;-    yych = *p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy198;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy197:-    ++p;-    yych = *p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy200;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy199;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy199;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy199;-        goto yy93;-      }-    }-  yy198:-    ++p;-    yych = *p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy200;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy199:-    ++p;-    yych = *p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy202;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy201;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy201;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy201;-        goto yy93;-      }-    }-  yy200:-    ++p;-    yych = *p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy202;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy201:-    ++p;-    yych = *p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy204;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy203;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy203;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy203;-        goto yy93;-      }-    }-  yy202:-    ++p;-    yych = *p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy204;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy203:-    ++p;-    yych = *p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy206;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy205;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy205;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy205;-        goto yy93;-      }-    }-  yy204:-    ++p;-    yych = *p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy206;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy205:-    ++p;-    yych = *p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy208;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy207;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy207;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy207;-        goto yy93;-      }-    }-  yy206:-    ++p;-    yych = *p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy208;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy207:-    ++p;-    yych = *p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy210;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy209;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy209;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy209;-        goto yy93;-      }-    }-  yy208:-    ++p;-    yych = *p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy210;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy209:-    ++p;-    yych = *p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy212;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy211;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy211;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy211;-        goto yy93;-      }-    }-  yy210:-    ++p;-    yych = *p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy212;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy211:-    ++p;-    yych = *p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy214;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy213;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy213;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy213;-        goto yy93;-      }-    }-  yy212:-    ++p;-    yych = *p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy214;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy213:-    ++p;-    yych = *p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy216;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy215;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy215;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy215;-        goto yy93;-      }-    }-  yy214:-    ++p;-    yych = *p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy216;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy215:-    ++p;-    yych = *p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy218;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy217;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy217;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy217;-        goto yy93;-      }-    }-  yy216:-    ++p;-    yych = *p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy218;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy217:-    ++p;-    yych = *p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy220;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy219;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy219;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy219;-        goto yy93;-      }-    }-  yy218:-    ++p;-    yych = *p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy220;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy219:-    ++p;-    yych = *p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy222;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy221;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy221;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy221;-        goto yy93;-      }-    }-  yy220:-    ++p;-    yych = *p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy222;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy221:-    ++p;-    yych = *p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy224;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy223;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy223;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy223;-        goto yy93;-      }-    }-  yy222:-    ++p;-    yych = *p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy224;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy223:-    ++p;-    yych = *p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= '-')-          goto yy93;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy225;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy225;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy225;-        goto yy93;-      }-    }-  yy224:-    ++p;-    yych = *p;-    if (yych <= '@') {-      if (yych <= '/')-        goto yy93;-      if (yych >= ':')-        goto yy93;-    } else {-      if (yych <= 'Z')-        goto yy225;-      if (yych <= '`')-        goto yy93;-      if (yych >= '{')-        goto yy93;-    }-  yy225:-    ++p;-    yych = *p;-    if (yych == '.')-      goto yy99;-    if (yych == '>')-      goto yy100;-    goto yy93;-  yy226:-    yych = *++p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy229;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy228;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy228;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy228;-        goto yy93;-      }-    }-  yy227:-    yych = *++p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy229;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy228:-    yych = *++p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy231;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy230;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy230;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy230;-        goto yy93;-      }-    }-  yy229:-    yych = *++p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy231;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy230:-    yych = *++p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy233;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy232;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy232;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy232;-        goto yy93;-      }-    }-  yy231:-    yych = *++p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy233;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy232:-    yych = *++p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy235;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy234;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy234;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy234;-        goto yy93;-      }-    }-  yy233:-    yych = *++p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy235;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy234:-    yych = *++p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy237;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy236;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy236;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy236;-        goto yy93;-      }-    }-  yy235:-    yych = *++p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy237;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy236:-    yych = *++p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy239;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy238;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy238;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy238;-        goto yy93;-      }-    }-  yy237:-    yych = *++p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy239;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy238:-    yych = *++p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy241;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy240;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy240;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy240;-        goto yy93;-      }-    }-  yy239:-    yych = *++p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy241;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy240:-    yych = *++p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy243;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy242;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy242;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy242;-        goto yy93;-      }-    }-  yy241:-    yych = *++p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy243;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy242:-    yych = *++p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy245;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy244;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy244;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy244;-        goto yy93;-      }-    }-  yy243:-    yych = *++p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy245;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy244:-    yych = *++p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy247;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy246;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy246;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy246;-        goto yy93;-      }-    }-  yy245:-    yych = *++p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy247;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy246:-    yych = *++p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy249;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy248;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy248;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy248;-        goto yy93;-      }-    }-  yy247:-    yych = *++p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy249;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy248:-    yych = *++p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy251;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy250;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy250;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy250;-        goto yy93;-      }-    }-  yy249:-    yych = *++p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy251;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy250:-    yych = *++p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy253;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy252;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy252;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy252;-        goto yy93;-      }-    }-  yy251:-    yych = *++p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy253;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy252:-    yych = *++p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy255;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy254;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy254;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy254;-        goto yy93;-      }-    }-  yy253:-    yych = *++p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy255;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy254:-    yych = *++p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy257;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy256;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy256;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy256;-        goto yy93;-      }-    }-  yy255:-    yych = *++p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy257;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy256:-    yych = *++p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy259;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy258;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy258;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy258;-        goto yy93;-      }-    }-  yy257:-    yych = *++p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy259;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy258:-    yych = *++p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy261;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy260;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy260;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy260;-        goto yy93;-      }-    }-  yy259:-    yych = *++p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy261;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy260:-    yych = *++p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy263;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy262;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy262;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy262;-        goto yy93;-      }-    }-  yy261:-    yych = *++p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy263;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy262:-    yych = *++p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy265;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy264;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy264;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy264;-        goto yy93;-      }-    }-  yy263:-    yych = *++p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy265;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy264:-    yych = *++p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy267;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy266;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy266;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy266;-        goto yy93;-      }-    }-  yy265:-    yych = *++p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy267;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy266:-    yych = *++p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy269;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy268;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy268;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy268;-        goto yy93;-      }-    }-  yy267:-    yych = *++p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy269;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy268:-    yych = *++p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy271;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy270;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy270;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy270;-        goto yy93;-      }-    }-  yy269:-    yych = *++p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy271;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy270:-    yych = *++p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy273;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy272;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy272;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy272;-        goto yy93;-      }-    }-  yy271:-    yych = *++p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy273;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy272:-    yych = *++p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy275;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy274;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy274;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy274;-        goto yy93;-      }-    }-  yy273:-    yych = *++p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy275;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy274:-    yych = *++p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy277;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy276;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy276;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy276;-        goto yy93;-      }-    }-  yy275:-    yych = *++p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy277;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy276:-    yych = *++p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy279;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy278;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy278;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy278;-        goto yy93;-      }-    }-  yy277:-    yych = *++p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy279;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy278:-    yych = *++p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy281;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy280;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy280;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy280;-        goto yy93;-      }-    }-  yy279:-    yych = *++p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy281;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy280:-    yych = *++p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy283;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy282;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy282;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy282;-        goto yy93;-      }-    }-  yy281:-    yych = *++p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy283;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy282:-    yych = *++p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy285;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy284;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy284;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy284;-        goto yy93;-      }-    }-  yy283:-    yych = *++p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy285;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy284:-    yych = *++p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy287;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy286;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy286;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy286;-        goto yy93;-      }-    }-  yy285:-    yych = *++p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy287;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy286:-    yych = *++p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy289;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy288;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy288;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy288;-        goto yy93;-      }-    }-  yy287:-    yych = *++p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy289;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy288:-    yych = *++p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy291;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy290;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy290;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy290;-        goto yy93;-      }-    }-  yy289:-    yych = *++p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy291;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy290:-    yych = *++p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy293;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy292;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy292;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy292;-        goto yy93;-      }-    }-  yy291:-    yych = *++p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy293;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy292:-    yych = *++p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy295;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy294;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy294;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy294;-        goto yy93;-      }-    }-  yy293:-    yych = *++p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy295;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy294:-    yych = *++p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy297;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy296;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy296;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy296;-        goto yy93;-      }-    }-  yy295:-    yych = *++p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy297;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy296:-    yych = *++p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy299;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy298;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy298;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy298;-        goto yy93;-      }-    }-  yy297:-    yych = *++p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy299;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy298:-    yych = *++p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy301;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy300;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy300;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy300;-        goto yy93;-      }-    }-  yy299:-    yych = *++p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy301;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy300:-    yych = *++p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy303;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy302;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy302;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy302;-        goto yy93;-      }-    }-  yy301:-    yych = *++p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy303;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy302:-    yych = *++p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy305;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy304;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy304;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy304;-        goto yy93;-      }-    }-  yy303:-    yych = *++p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy305;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy304:-    yych = *++p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy307;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy306;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy306;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy306;-        goto yy93;-      }-    }-  yy305:-    yych = *++p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy307;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy306:-    yych = *++p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy309;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy308;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy308;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy308;-        goto yy93;-      }-    }-  yy307:-    yych = *++p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy309;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy308:-    yych = *++p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy311;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy310;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy310;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy310;-        goto yy93;-      }-    }-  yy309:-    yych = *++p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy311;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy310:-    yych = *++p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy313;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy312;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy312;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy312;-        goto yy93;-      }-    }-  yy311:-    yych = *++p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy313;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy312:-    yych = *++p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy315;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy314;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy314;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy314;-        goto yy93;-      }-    }-  yy313:-    yych = *++p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy315;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy314:-    yych = *++p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy317;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy316;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy316;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy316;-        goto yy93;-      }-    }-  yy315:-    yych = *++p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy317;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy316:-    yych = *++p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy319;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy318;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy318;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy318;-        goto yy93;-      }-    }-  yy317:-    yych = *++p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy319;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy318:-    yych = *++p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy321;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy320;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy320;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy320;-        goto yy93;-      }-    }-  yy319:-    yych = *++p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy321;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy320:-    yych = *++p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy323;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy322;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy322;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy322;-        goto yy93;-      }-    }-  yy321:-    yych = *++p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy323;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy322:-    yych = *++p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy325;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy324;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy324;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy324;-        goto yy93;-      }-    }-  yy323:-    yych = *++p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy325;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy324:-    yych = *++p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy327;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy326;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy326;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy326;-        goto yy93;-      }-    }-  yy325:-    yych = *++p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy327;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy326:-    yych = *++p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy329;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy328;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy328;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy328;-        goto yy93;-      }-    }-  yy327:-    yych = *++p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy329;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy328:-    yych = *++p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy331;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy330;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy330;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy330;-        goto yy93;-      }-    }-  yy329:-    yych = *++p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy331;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy330:-    yych = *++p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy333;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy332;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy332;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy332;-        goto yy93;-      }-    }-  yy331:-    yych = *++p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy333;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy332:-    yych = *++p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy335;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy334;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy334;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy334;-        goto yy93;-      }-    }-  yy333:-    yych = *++p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy335;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy334:-    yych = *++p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy337;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy336;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy336;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy336;-        goto yy93;-      }-    }-  yy335:-    yych = *++p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy337;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy336:-    yych = *++p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy339;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy338;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy338;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy338;-        goto yy93;-      }-    }-  yy337:-    yych = *++p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy339;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy338:-    yych = *++p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy341;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy340;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy340;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy340;-        goto yy93;-      }-    }-  yy339:-    yych = *++p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy341;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy340:-    yych = *++p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy343;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy342;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy342;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy342;-        goto yy93;-      }-    }-  yy341:-    yych = *++p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy343;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy342:-    yych = *++p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= ',')-          goto yy93;-        if (yych <= '-')-          goto yy345;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy344;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy344;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy344;-        goto yy93;-      }-    }-  yy343:-    yych = *++p;-    if (yych <= '9') {-      if (yych == '-')-        goto yy345;-      if (yych <= '/')-        goto yy93;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy93;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych >= '{')-          goto yy93;-      }-    }-  yy344:-    yych = *++p;-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych <= '-')-          goto yy93;-        goto yy99;-      } else {-        if (yych <= '/')-          goto yy93;-        if (yych <= '9')-          goto yy225;-        goto yy93;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy100;-        if (yych <= '@')-          goto yy93;-        goto yy225;-      } else {-        if (yych <= '`')-          goto yy93;-        if (yych <= 'z')-          goto yy225;-        goto yy93;-      }-    }-  yy345:-    ++p;-    if ((yych = *p) <= '@') {-      if (yych <= '/')-        goto yy93;-      if (yych <= '9')-        goto yy225;-      goto yy93;-    } else {-      if (yych <= 'Z')-        goto yy225;-      if (yych <= '`')-        goto yy93;-      if (yych <= 'z')-        goto yy225;-      goto yy93;-    }-  }-}--// Try to match an HTML tag after first <, returning num of chars matched.-bufsize_t _scan_html_tag(const unsigned char *p) {-  const unsigned char *marker = NULL;-  const unsigned char *start = p;--  {-    unsigned char yych;-    static const unsigned char yybm[] = {-        /* table 1 .. 8: 0 */-        0, 239, 239, 239, 239, 239, 239, 239, 239, 238, 238, 238, 238, 238, 239,-        239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239,-        239, 239, 239, 238, 239, 234, 239, 239, 239, 239, 236, 239, 239, 239,-        239, 239, 207, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239,-        239, 239, 239, 238, 238, 174, 231, 239, 255, 255, 255, 255, 255, 255,-        255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,-        255, 255, 255, 255, 255, 255, 239, 239, 111, 239, 239, 238, 239, 239,-        239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239,-        239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239,-        239, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,-        /* table 9 .. 11: 256 */-        0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 64, 64, 0, 0, 0, 0, 0, 0, 0, 0,-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,-        160, 128, 0, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 128, 0,-        0, 0, 0, 0, 0, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,-        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,-        160, 0, 0, 0, 0, 128, 0, 160, 160, 160, 160, 160, 160, 160, 160, 160,-        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,-        160, 160, 160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,-    };-    yych = *p;-    if (yych <= '>') {-      if (yych <= '!') {-        if (yych >= '!')-          goto yy350;-      } else {-        if (yych == '/')-          goto yy351;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '?')-          goto yy352;-        if (yych >= 'A')-          goto yy353;-      } else {-        if (yych <= '`')-          goto yy348;-        if (yych <= 'z')-          goto yy353;-      }-    }-  yy348:-    ++p;-  yy349 : { return 0; }-  yy350:-    yych = *(marker = ++p);-    if (yybm[0 + yych] & 16) {-      goto yy426;-    }-    if (yych == '-')-      goto yy428;-    if (yych <= '@')-      goto yy349;-    if (yych <= '[')-      goto yy425;-    goto yy349;-  yy351:-    yych = *(marker = ++p);-    if (yych <= '@')-      goto yy349;-    if (yych <= 'Z')-      goto yy421;-    if (yych <= '`')-      goto yy349;-    if (yych <= 'z')-      goto yy421;-    goto yy349;-  yy352:-    yych = *(marker = ++p);-    if (yych <= 0x00)-      goto yy349;-    if (yych <= 0x7F)-      goto yy405;-    if (yych <= 0xC1)-      goto yy349;-    if (yych <= 0xF4)-      goto yy405;-    goto yy349;-  yy353:-    yych = *(marker = ++p);-    if (yybm[256 + yych] & 64) {-      goto yy357;-    }-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych != '-')-          goto yy349;-      } else {-        if (yych <= '/')-          goto yy359;-        if (yych >= ':')-          goto yy349;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy360;-        if (yych <= '@')-          goto yy349;-      } else {-        if (yych <= '`')-          goto yy349;-        if (yych >= '{')-          goto yy349;-      }-    }-  yy354:-    ++p;-    yych = *p;-    if (yybm[256 + yych] & 64) {-      goto yy357;-    }-    if (yych <= '=') {-      if (yych <= '.') {-        if (yych == '-')-          goto yy354;-      } else {-        if (yych <= '/')-          goto yy359;-        if (yych <= '9')-          goto yy354;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy360;-        if (yych >= 'A')-          goto yy354;-      } else {-        if (yych <= '`')-          goto yy356;-        if (yych <= 'z')-          goto yy354;-      }-    }-  yy356:-    p = marker;-    goto yy349;-  yy357:-    ++p;-    yych = *p;-    if (yybm[256 + yych] & 64) {-      goto yy357;-    }-    if (yych <= '>') {-      if (yych <= '9') {-        if (yych != '/')-          goto yy356;-      } else {-        if (yych <= ':')-          goto yy362;-        if (yych <= '=')-          goto yy356;-        goto yy360;-      }-    } else {-      if (yych <= '^') {-        if (yych <= '@')-          goto yy356;-        if (yych <= 'Z')-          goto yy362;-        goto yy356;-      } else {-        if (yych == '`')-          goto yy356;-        if (yych <= 'z')-          goto yy362;-        goto yy356;-      }-    }-  yy359:-    yych = *++p;-    if (yych != '>')-      goto yy356;-  yy360:-    ++p;-    { return (bufsize_t)(p - start); }-  yy362:-    ++p;-    yych = *p;-    if (yybm[256 + yych] & 128) {-      goto yy362;-    }-    if (yych <= ',') {-      if (yych <= '\r') {-        if (yych <= 0x08)-          goto yy356;-      } else {-        if (yych != ' ')-          goto yy356;-      }-    } else {-      if (yych <= '<') {-        if (yych <= '/')-          goto yy359;-        goto yy356;-      } else {-        if (yych <= '=')-          goto yy366;-        if (yych <= '>')-          goto yy360;-        goto yy356;-      }-    }-  yy364:-    ++p;-    yych = *p;-    if (yych <= '<') {-      if (yych <= ' ') {-        if (yych <= 0x08)-          goto yy356;-        if (yych <= '\r')-          goto yy364;-        if (yych <= 0x1F)-          goto yy356;-        goto yy364;-      } else {-        if (yych <= '/') {-          if (yych <= '.')-            goto yy356;-          goto yy359;-        } else {-          if (yych == ':')-            goto yy362;-          goto yy356;-        }-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '=')-          goto yy366;-        if (yych <= '>')-          goto yy360;-        if (yych <= '@')-          goto yy356;-        goto yy362;-      } else {-        if (yych <= '_') {-          if (yych <= '^')-            goto yy356;-          goto yy362;-        } else {-          if (yych <= '`')-            goto yy356;-          if (yych <= 'z')-            goto yy362;-          goto yy356;-        }-      }-    }-  yy366:-    ++p;-    yych = *p;-    if (yybm[0 + yych] & 1) {-      goto yy368;-    }-    if (yych <= 0xE0) {-      if (yych <= '"') {-        if (yych <= 0x00)-          goto yy356;-        if (yych >= '!')-          goto yy379;-      } else {-        if (yych <= '\'')-          goto yy377;-        if (yych <= 0xC1)-          goto yy356;-        if (yych <= 0xDF)-          goto yy370;-        goto yy371;-      }-    } else {-      if (yych <= 0xEF) {-        if (yych == 0xED)-          goto yy376;-        goto yy372;-      } else {-        if (yych <= 0xF0)-          goto yy373;-        if (yych <= 0xF3)-          goto yy374;-        if (yych <= 0xF4)-          goto yy375;-        goto yy356;-      }-    }-    ++p;-    yych = *p;-    if (yybm[0 + yych] & 1) {-      goto yy368;-    }-    if (yych <= 0xDF) {-      if (yych <= '\'') {-        if (yych <= 0x00)-          goto yy356;-        if (yych <= ' ')-          goto yy402;-        if (yych <= '"')-          goto yy379;-        goto yy377;-      } else {-        if (yych == '>')-          goto yy360;-        if (yych <= 0xC1)-          goto yy356;-        goto yy370;-      }-    } else {-      if (yych <= 0xEF) {-        if (yych <= 0xE0)-          goto yy371;-        if (yych == 0xED)-          goto yy376;-        goto yy372;-      } else {-        if (yych <= 0xF0)-          goto yy373;-        if (yych <= 0xF3)-          goto yy374;-        if (yych <= 0xF4)-          goto yy375;-        goto yy356;-      }-    }-  yy368:-    ++p;-    yych = *p;-    if (yybm[0 + yych] & 1) {-      goto yy368;-    }-    if (yych <= 0xE0) {-      if (yych <= '=') {-        if (yych <= 0x00)-          goto yy356;-        if (yych <= ' ')-          goto yy396;-        goto yy356;-      } else {-        if (yych <= '>')-          goto yy360;-        if (yych <= 0xC1)-          goto yy356;-        if (yych >= 0xE0)-          goto yy371;-      }-    } else {-      if (yych <= 0xEF) {-        if (yych == 0xED)-          goto yy376;-        goto yy372;-      } else {-        if (yych <= 0xF0)-          goto yy373;-        if (yych <= 0xF3)-          goto yy374;-        if (yych <= 0xF4)-          goto yy375;-        goto yy356;-      }-    }-  yy370:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy356;-    if (yych <= 0xBF)-      goto yy368;-    goto yy356;-  yy371:-    ++p;-    yych = *p;-    if (yych <= 0x9F)-      goto yy356;-    if (yych <= 0xBF)-      goto yy370;-    goto yy356;-  yy372:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy356;-    if (yych <= 0xBF)-      goto yy370;-    goto yy356;-  yy373:-    ++p;-    yych = *p;-    if (yych <= 0x8F)-      goto yy356;-    if (yych <= 0xBF)-      goto yy372;-    goto yy356;-  yy374:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy356;-    if (yych <= 0xBF)-      goto yy372;-    goto yy356;-  yy375:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy356;-    if (yych <= 0x8F)-      goto yy372;-    goto yy356;-  yy376:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy356;-    if (yych <= 0x9F)-      goto yy370;-    goto yy356;-  yy377:-    ++p;-    yych = *p;-    if (yybm[0 + yych] & 2) {-      goto yy377;-    }-    if (yych <= 0xEC) {-      if (yych <= 0xC1) {-        if (yych <= 0x00)-          goto yy356;-        if (yych <= '\'')-          goto yy388;-        goto yy356;-      } else {-        if (yych <= 0xDF)-          goto yy389;-        if (yych <= 0xE0)-          goto yy390;-        goto yy391;-      }-    } else {-      if (yych <= 0xF0) {-        if (yych <= 0xED)-          goto yy395;-        if (yych <= 0xEF)-          goto yy391;-        goto yy392;-      } else {-        if (yych <= 0xF3)-          goto yy393;-        if (yych <= 0xF4)-          goto yy394;-        goto yy356;-      }-    }-  yy379:-    ++p;-    yych = *p;-    if (yybm[0 + yych] & 4) {-      goto yy379;-    }-    if (yych <= 0xEC) {-      if (yych <= 0xC1) {-        if (yych <= 0x00)-          goto yy356;-        if (yych <= '"')-          goto yy388;-        goto yy356;-      } else {-        if (yych <= 0xDF)-          goto yy381;-        if (yych <= 0xE0)-          goto yy382;-        goto yy383;-      }-    } else {-      if (yych <= 0xF0) {-        if (yych <= 0xED)-          goto yy387;-        if (yych <= 0xEF)-          goto yy383;-        goto yy384;-      } else {-        if (yych <= 0xF3)-          goto yy385;-        if (yych <= 0xF4)-          goto yy386;-        goto yy356;-      }-    }-  yy381:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy356;-    if (yych <= 0xBF)-      goto yy379;-    goto yy356;-  yy382:-    ++p;-    yych = *p;-    if (yych <= 0x9F)-      goto yy356;-    if (yych <= 0xBF)-      goto yy381;-    goto yy356;-  yy383:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy356;-    if (yych <= 0xBF)-      goto yy381;-    goto yy356;-  yy384:-    ++p;-    yych = *p;-    if (yych <= 0x8F)-      goto yy356;-    if (yych <= 0xBF)-      goto yy383;-    goto yy356;-  yy385:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy356;-    if (yych <= 0xBF)-      goto yy383;-    goto yy356;-  yy386:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy356;-    if (yych <= 0x8F)-      goto yy383;-    goto yy356;-  yy387:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy356;-    if (yych <= 0x9F)-      goto yy381;-    goto yy356;-  yy388:-    ++p;-    yych = *p;-    if (yybm[256 + yych] & 64) {-      goto yy357;-    }-    if (yych == '/')-      goto yy359;-    if (yych == '>')-      goto yy360;-    goto yy356;-  yy389:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy356;-    if (yych <= 0xBF)-      goto yy377;-    goto yy356;-  yy390:-    ++p;-    yych = *p;-    if (yych <= 0x9F)-      goto yy356;-    if (yych <= 0xBF)-      goto yy389;-    goto yy356;-  yy391:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy356;-    if (yych <= 0xBF)-      goto yy389;-    goto yy356;-  yy392:-    ++p;-    yych = *p;-    if (yych <= 0x8F)-      goto yy356;-    if (yych <= 0xBF)-      goto yy391;-    goto yy356;-  yy393:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy356;-    if (yych <= 0xBF)-      goto yy391;-    goto yy356;-  yy394:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy356;-    if (yych <= 0x8F)-      goto yy391;-    goto yy356;-  yy395:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy356;-    if (yych <= 0x9F)-      goto yy389;-    goto yy356;-  yy396:-    ++p;-    yych = *p;-    if (yych <= '@') {-      if (yych <= '"') {-        if (yych <= '\r') {-          if (yych <= 0x00)-            goto yy356;-          if (yych <= 0x08)-            goto yy368;-          goto yy396;-        } else {-          if (yych == ' ')-            goto yy396;-          if (yych <= '!')-            goto yy368;-          goto yy356;-        }-      } else {-        if (yych <= ':') {-          if (yych == '\'')-            goto yy356;-          if (yych <= '9')-            goto yy368;-        } else {-          if (yych <= ';')-            goto yy368;-          if (yych <= '=')-            goto yy356;-          if (yych <= '>')-            goto yy360;-          goto yy368;-        }-      }-    } else {-      if (yych <= 0xDF) {-        if (yych <= '`') {-          if (yych <= 'Z')-            goto yy398;-          if (yych <= '^')-            goto yy368;-          if (yych >= '`')-            goto yy356;-        } else {-          if (yych <= 'z')-            goto yy398;-          if (yych <= 0x7F)-            goto yy368;-          if (yych <= 0xC1)-            goto yy356;-          goto yy370;-        }-      } else {-        if (yych <= 0xEF) {-          if (yych <= 0xE0)-            goto yy371;-          if (yych == 0xED)-            goto yy376;-          goto yy372;-        } else {-          if (yych <= 0xF0)-            goto yy373;-          if (yych <= 0xF3)-            goto yy374;-          if (yych <= 0xF4)-            goto yy375;-          goto yy356;-        }-      }-    }-  yy398:-    ++p;-    yych = *p;-    if (yych <= '>') {-      if (yych <= '&') {-        if (yych <= 0x1F) {-          if (yych <= 0x00)-            goto yy356;-          if (yych <= 0x08)-            goto yy368;-          if (yych >= 0x0E)-            goto yy368;-        } else {-          if (yych <= ' ')-            goto yy400;-          if (yych == '"')-            goto yy356;-          goto yy368;-        }-      } else {-        if (yych <= '/') {-          if (yych <= '\'')-            goto yy356;-          if (yych <= ',')-            goto yy368;-          if (yych <= '.')-            goto yy398;-          goto yy368;-        } else {-          if (yych <= ';') {-            if (yych <= ':')-              goto yy398;-            goto yy368;-          } else {-            if (yych <= '<')-              goto yy356;-            if (yych <= '=')-              goto yy366;-            goto yy360;-          }-        }-      }-    } else {-      if (yych <= 0xC1) {-        if (yych <= '_') {-          if (yych <= '@')-            goto yy368;-          if (yych <= 'Z')-            goto yy398;-          if (yych <= '^')-            goto yy368;-          goto yy398;-        } else {-          if (yych <= '`')-            goto yy356;-          if (yych <= 'z')-            goto yy398;-          if (yych <= 0x7F)-            goto yy368;-          goto yy356;-        }-      } else {-        if (yych <= 0xED) {-          if (yych <= 0xDF)-            goto yy370;-          if (yych <= 0xE0)-            goto yy371;-          if (yych <= 0xEC)-            goto yy372;-          goto yy376;-        } else {-          if (yych <= 0xF0) {-            if (yych <= 0xEF)-              goto yy372;-            goto yy373;-          } else {-            if (yych <= 0xF3)-              goto yy374;-            if (yych <= 0xF4)-              goto yy375;-            goto yy356;-          }-        }-      }-    }-  yy400:-    ++p;-    yych = *p;-    if (yych <= '@') {-      if (yych <= '&') {-        if (yych <= 0x1F) {-          if (yych <= 0x00)-            goto yy356;-          if (yych <= 0x08)-            goto yy368;-          if (yych <= '\r')-            goto yy400;-          goto yy368;-        } else {-          if (yych <= ' ')-            goto yy400;-          if (yych == '"')-            goto yy356;-          goto yy368;-        }-      } else {-        if (yych <= ';') {-          if (yych <= '\'')-            goto yy356;-          if (yych == ':')-            goto yy398;-          goto yy368;-        } else {-          if (yych <= '<')-            goto yy356;-          if (yych <= '=')-            goto yy366;-          if (yych <= '>')-            goto yy360;-          goto yy368;-        }-      }-    } else {-      if (yych <= 0xDF) {-        if (yych <= '`') {-          if (yych <= 'Z')-            goto yy398;-          if (yych <= '^')-            goto yy368;-          if (yych <= '_')-            goto yy398;-          goto yy356;-        } else {-          if (yych <= 'z')-            goto yy398;-          if (yych <= 0x7F)-            goto yy368;-          if (yych <= 0xC1)-            goto yy356;-          goto yy370;-        }-      } else {-        if (yych <= 0xEF) {-          if (yych <= 0xE0)-            goto yy371;-          if (yych == 0xED)-            goto yy376;-          goto yy372;-        } else {-          if (yych <= 0xF0)-            goto yy373;-          if (yych <= 0xF3)-            goto yy374;-          if (yych <= 0xF4)-            goto yy375;-          goto yy356;-        }-      }-    }-  yy402:-    ++p;-    yych = *p;-    if (yych <= '@') {-      if (yych <= '"') {-        if (yych <= '\r') {-          if (yych <= 0x00)-            goto yy356;-          if (yych <= 0x08)-            goto yy368;-          goto yy402;-        } else {-          if (yych == ' ')-            goto yy402;-          if (yych <= '!')-            goto yy368;-          goto yy379;-        }-      } else {-        if (yych <= ':') {-          if (yych == '\'')-            goto yy377;-          if (yych <= '9')-            goto yy368;-          goto yy398;-        } else {-          if (yych <= ';')-            goto yy368;-          if (yych <= '=')-            goto yy356;-          if (yych <= '>')-            goto yy360;-          goto yy368;-        }-      }-    } else {-      if (yych <= 0xDF) {-        if (yych <= '`') {-          if (yych <= 'Z')-            goto yy398;-          if (yych <= '^')-            goto yy368;-          if (yych <= '_')-            goto yy398;-          goto yy356;-        } else {-          if (yych <= 'z')-            goto yy398;-          if (yych <= 0x7F)-            goto yy368;-          if (yych <= 0xC1)-            goto yy356;-          goto yy370;-        }-      } else {-        if (yych <= 0xEF) {-          if (yych <= 0xE0)-            goto yy371;-          if (yych == 0xED)-            goto yy376;-          goto yy372;-        } else {-          if (yych <= 0xF0)-            goto yy373;-          if (yych <= 0xF3)-            goto yy374;-          if (yych <= 0xF4)-            goto yy375;-          goto yy356;-        }-      }-    }-  yy404:-    ++p;-    yych = *p;-  yy405:-    if (yybm[0 + yych] & 8) {-      goto yy404;-    }-    if (yych <= 0xEC) {-      if (yych <= 0xC1) {-        if (yych <= 0x00)-          goto yy356;-        if (yych <= '?')-          goto yy413;-        goto yy356;-      } else {-        if (yych <= 0xDF)-          goto yy406;-        if (yych <= 0xE0)-          goto yy407;-        goto yy408;-      }-    } else {-      if (yych <= 0xF0) {-        if (yych <= 0xED)-          goto yy412;-        if (yych <= 0xEF)-          goto yy408;-        goto yy409;-      } else {-        if (yych <= 0xF3)-          goto yy410;-        if (yych <= 0xF4)-          goto yy411;-        goto yy356;-      }-    }-  yy406:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy356;-    if (yych <= 0xBF)-      goto yy404;-    goto yy356;-  yy407:-    ++p;-    yych = *p;-    if (yych <= 0x9F)-      goto yy356;-    if (yych <= 0xBF)-      goto yy406;-    goto yy356;-  yy408:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy356;-    if (yych <= 0xBF)-      goto yy406;-    goto yy356;-  yy409:-    ++p;-    yych = *p;-    if (yych <= 0x8F)-      goto yy356;-    if (yych <= 0xBF)-      goto yy408;-    goto yy356;-  yy410:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy356;-    if (yych <= 0xBF)-      goto yy408;-    goto yy356;-  yy411:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy356;-    if (yych <= 0x8F)-      goto yy408;-    goto yy356;-  yy412:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy356;-    if (yych <= 0x9F)-      goto yy406;-    goto yy356;-  yy413:-    ++p;-    yych = *p;-    if (yych <= 0xE0) {-      if (yych <= '>') {-        if (yych <= 0x00)-          goto yy356;-        if (yych <= '=')-          goto yy404;-        goto yy360;-      } else {-        if (yych <= 0x7F)-          goto yy404;-        if (yych <= 0xC1)-          goto yy356;-        if (yych >= 0xE0)-          goto yy415;-      }-    } else {-      if (yych <= 0xEF) {-        if (yych == 0xED)-          goto yy420;-        goto yy416;-      } else {-        if (yych <= 0xF0)-          goto yy417;-        if (yych <= 0xF3)-          goto yy418;-        if (yych <= 0xF4)-          goto yy419;-        goto yy356;-      }-    }-  yy414:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy356;-    if (yych <= 0xBF)-      goto yy404;-    goto yy356;-  yy415:-    ++p;-    yych = *p;-    if (yych <= 0x9F)-      goto yy356;-    if (yych <= 0xBF)-      goto yy414;-    goto yy356;-  yy416:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy356;-    if (yych <= 0xBF)-      goto yy414;-    goto yy356;-  yy417:-    ++p;-    yych = *p;-    if (yych <= 0x8F)-      goto yy356;-    if (yych <= 0xBF)-      goto yy416;-    goto yy356;-  yy418:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy356;-    if (yych <= 0xBF)-      goto yy416;-    goto yy356;-  yy419:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy356;-    if (yych <= 0x8F)-      goto yy416;-    goto yy356;-  yy420:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy356;-    if (yych <= 0x9F)-      goto yy414;-    goto yy356;-  yy421:-    ++p;-    yych = *p;-    if (yych <= '/') {-      if (yych <= 0x1F) {-        if (yych <= 0x08)-          goto yy356;-        if (yych >= 0x0E)-          goto yy356;-      } else {-        if (yych <= ' ')-          goto yy423;-        if (yych == '-')-          goto yy421;-        goto yy356;-      }-    } else {-      if (yych <= '@') {-        if (yych <= '9')-          goto yy421;-        if (yych == '>')-          goto yy360;-        goto yy356;-      } else {-        if (yych <= 'Z')-          goto yy421;-        if (yych <= '`')-          goto yy356;-        if (yych <= 'z')-          goto yy421;-        goto yy356;-      }-    }-  yy423:-    ++p;-    yych = *p;-    if (yych <= 0x1F) {-      if (yych <= 0x08)-        goto yy356;-      if (yych <= '\r')-        goto yy423;-      goto yy356;-    } else {-      if (yych <= ' ')-        goto yy423;-      if (yych == '>')-        goto yy360;-      goto yy356;-    }-  yy425:-    yych = *++p;-    if (yych == 'C')-      goto yy461;-    if (yych == 'c')-      goto yy461;-    goto yy356;-  yy426:-    ++p;-    yych = *p;-    if (yybm[0 + yych] & 16) {-      goto yy426;-    }-    if (yych <= 0x08)-      goto yy356;-    if (yych <= '\r')-      goto yy450;-    if (yych == ' ')-      goto yy450;-    goto yy356;-  yy428:-    yych = *++p;-    if (yych != '-')-      goto yy356;-    yych = *++p;-    if (yych <= 0xE0) {-      if (yych <= '=') {-        if (yych != '-')-          goto yy432;-      } else {-        if (yych <= '>')-          goto yy356;-        if (yych <= 0xC1)-          goto yy432;-        if (yych <= 0xDF)-          goto yy433;-        goto yy434;-      }-    } else {-      if (yych <= 0xEF) {-        if (yych == 0xED)-          goto yy439;-        goto yy435;-      } else {-        if (yych <= 0xF0)-          goto yy436;-        if (yych <= 0xF3)-          goto yy437;-        if (yych <= 0xF4)-          goto yy438;-        goto yy432;-      }-    }-    yych = *++p;-    if (yych <= 0xE0) {-      if (yych <= '=') {-        if (yych == '-')-          goto yy449;-        goto yy432;-      } else {-        if (yych <= '>')-          goto yy356;-        if (yych <= 0xC1)-          goto yy432;-        if (yych <= 0xDF)-          goto yy433;-        goto yy434;-      }-    } else {-      if (yych <= 0xEF) {-        if (yych == 0xED)-          goto yy439;-        goto yy435;-      } else {-        if (yych <= 0xF0)-          goto yy436;-        if (yych <= 0xF3)-          goto yy437;-        if (yych <= 0xF4)-          goto yy438;-        goto yy432;-      }-    }-  yy431:-    ++p;-    yych = *p;-  yy432:-    if (yybm[0 + yych] & 32) {-      goto yy431;-    }-    if (yych <= 0xEC) {-      if (yych <= 0xC1) {-        if (yych <= 0x00)-          goto yy356;-        if (yych <= '-')-          goto yy440;-        goto yy356;-      } else {-        if (yych <= 0xDF)-          goto yy441;-        if (yych <= 0xE0)-          goto yy442;-        goto yy443;-      }-    } else {-      if (yych <= 0xF0) {-        if (yych <= 0xED)-          goto yy447;-        if (yych <= 0xEF)-          goto yy443;-        goto yy444;-      } else {-        if (yych <= 0xF3)-          goto yy445;-        if (yych <= 0xF4)-          goto yy446;-        goto yy356;-      }-    }-  yy433:-    yych = *++p;-    if (yych <= 0x7F)-      goto yy356;-    if (yych <= 0xBF)-      goto yy431;-    goto yy356;-  yy434:-    yych = *++p;-    if (yych <= 0x9F)-      goto yy356;-    if (yych <= 0xBF)-      goto yy433;-    goto yy356;-  yy435:-    yych = *++p;-    if (yych <= 0x7F)-      goto yy356;-    if (yych <= 0xBF)-      goto yy433;-    goto yy356;-  yy436:-    yych = *++p;-    if (yych <= 0x8F)-      goto yy356;-    if (yych <= 0xBF)-      goto yy435;-    goto yy356;-  yy437:-    yych = *++p;-    if (yych <= 0x7F)-      goto yy356;-    if (yych <= 0xBF)-      goto yy435;-    goto yy356;-  yy438:-    yych = *++p;-    if (yych <= 0x7F)-      goto yy356;-    if (yych <= 0x8F)-      goto yy435;-    goto yy356;-  yy439:-    yych = *++p;-    if (yych <= 0x7F)-      goto yy356;-    if (yych <= 0x9F)-      goto yy433;-    goto yy356;-  yy440:-    ++p;-    yych = *p;-    if (yybm[0 + yych] & 32) {-      goto yy431;-    }-    if (yych <= 0xEC) {-      if (yych <= 0xC1) {-        if (yych <= 0x00)-          goto yy356;-        if (yych <= '-')-          goto yy448;-        goto yy356;-      } else {-        if (yych <= 0xDF)-          goto yy441;-        if (yych <= 0xE0)-          goto yy442;-        goto yy443;-      }-    } else {-      if (yych <= 0xF0) {-        if (yych <= 0xED)-          goto yy447;-        if (yych <= 0xEF)-          goto yy443;-        goto yy444;-      } else {-        if (yych <= 0xF3)-          goto yy445;-        if (yych <= 0xF4)-          goto yy446;-        goto yy356;-      }-    }-  yy441:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy356;-    if (yych <= 0xBF)-      goto yy431;-    goto yy356;-  yy442:-    ++p;-    yych = *p;-    if (yych <= 0x9F)-      goto yy356;-    if (yych <= 0xBF)-      goto yy441;-    goto yy356;-  yy443:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy356;-    if (yych <= 0xBF)-      goto yy441;-    goto yy356;-  yy444:-    ++p;-    yych = *p;-    if (yych <= 0x8F)-      goto yy356;-    if (yych <= 0xBF)-      goto yy443;-    goto yy356;-  yy445:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy356;-    if (yych <= 0xBF)-      goto yy443;-    goto yy356;-  yy446:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy356;-    if (yych <= 0x8F)-      goto yy443;-    goto yy356;-  yy447:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy356;-    if (yych <= 0x9F)-      goto yy441;-    goto yy356;-  yy448:-    yych = *++p;-    if (yych == '>')-      goto yy360;-    goto yy356;-  yy449:-    yych = *++p;-    if (yych == '>')-      goto yy360;-    goto yy356;-  yy450:-    ++p;-    yych = *p;-    if (yych <= 0xC1) {-      if (yych <= 0x1F) {-        if (yych <= 0x00)-          goto yy356;-        if (yych <= 0x08)-          goto yy452;-        if (yych <= '\r')-          goto yy450;-      } else {-        if (yych <= '=') {-          if (yych <= ' ')-            goto yy450;-        } else {-          if (yych <= '>')-            goto yy360;-          if (yych >= 0x80)-            goto yy356;-        }-      }-    } else {-      if (yych <= 0xED) {-        if (yych <= 0xDF)-          goto yy454;-        if (yych <= 0xE0)-          goto yy455;-        if (yych <= 0xEC)-          goto yy456;-        goto yy460;-      } else {-        if (yych <= 0xF0) {-          if (yych <= 0xEF)-            goto yy456;-          goto yy457;-        } else {-          if (yych <= 0xF3)-            goto yy458;-          if (yych <= 0xF4)-            goto yy459;-          goto yy356;-        }-      }-    }-  yy452:-    ++p;-    yych = *p;-    if (yybm[0 + yych] & 64) {-      goto yy452;-    }-    if (yych <= 0xEC) {-      if (yych <= 0xC1) {-        if (yych <= 0x00)-          goto yy356;-        if (yych <= '>')-          goto yy360;-        goto yy356;-      } else {-        if (yych <= 0xDF)-          goto yy454;-        if (yych <= 0xE0)-          goto yy455;-        goto yy456;-      }-    } else {-      if (yych <= 0xF0) {-        if (yych <= 0xED)-          goto yy460;-        if (yych <= 0xEF)-          goto yy456;-        goto yy457;-      } else {-        if (yych <= 0xF3)-          goto yy458;-        if (yych <= 0xF4)-          goto yy459;-        goto yy356;-      }-    }-  yy454:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy356;-    if (yych <= 0xBF)-      goto yy452;-    goto yy356;-  yy455:-    ++p;-    yych = *p;-    if (yych <= 0x9F)-      goto yy356;-    if (yych <= 0xBF)-      goto yy454;-    goto yy356;-  yy456:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy356;-    if (yych <= 0xBF)-      goto yy454;-    goto yy356;-  yy457:-    ++p;-    yych = *p;-    if (yych <= 0x8F)-      goto yy356;-    if (yych <= 0xBF)-      goto yy456;-    goto yy356;-  yy458:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy356;-    if (yych <= 0xBF)-      goto yy456;-    goto yy356;-  yy459:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy356;-    if (yych <= 0x8F)-      goto yy456;-    goto yy356;-  yy460:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy356;-    if (yych <= 0x9F)-      goto yy454;-    goto yy356;-  yy461:-    yych = *++p;-    if (yych == 'D')-      goto yy462;-    if (yych != 'd')-      goto yy356;-  yy462:-    yych = *++p;-    if (yych == 'A')-      goto yy463;-    if (yych != 'a')-      goto yy356;-  yy463:-    yych = *++p;-    if (yych == 'T')-      goto yy464;-    if (yych != 't')-      goto yy356;-  yy464:-    yych = *++p;-    if (yych == 'A')-      goto yy465;-    if (yych != 'a')-      goto yy356;-  yy465:-    yych = *++p;-    if (yych != '[')-      goto yy356;-  yy466:-    ++p;-    yych = *p;-    if (yybm[0 + yych] & 128) {-      goto yy466;-    }-    if (yych <= 0xEC) {-      if (yych <= 0xC1) {-        if (yych <= 0x00)-          goto yy356;-        if (yych <= ']')-          goto yy475;-        goto yy356;-      } else {-        if (yych <= 0xDF)-          goto yy468;-        if (yych <= 0xE0)-          goto yy469;-        goto yy470;-      }-    } else {-      if (yych <= 0xF0) {-        if (yych <= 0xED)-          goto yy474;-        if (yych <= 0xEF)-          goto yy470;-        goto yy471;-      } else {-        if (yych <= 0xF3)-          goto yy472;-        if (yych <= 0xF4)-          goto yy473;-        goto yy356;-      }-    }-  yy468:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy356;-    if (yych <= 0xBF)-      goto yy466;-    goto yy356;-  yy469:-    ++p;-    yych = *p;-    if (yych <= 0x9F)-      goto yy356;-    if (yych <= 0xBF)-      goto yy468;-    goto yy356;-  yy470:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy356;-    if (yych <= 0xBF)-      goto yy468;-    goto yy356;-  yy471:-    ++p;-    yych = *p;-    if (yych <= 0x8F)-      goto yy356;-    if (yych <= 0xBF)-      goto yy470;-    goto yy356;-  yy472:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy356;-    if (yych <= 0xBF)-      goto yy470;-    goto yy356;-  yy473:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy356;-    if (yych <= 0x8F)-      goto yy470;-    goto yy356;-  yy474:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy356;-    if (yych <= 0x9F)-      goto yy468;-    goto yy356;-  yy475:-    ++p;-    yych = *p;-    if (yybm[0 + yych] & 128) {-      goto yy466;-    }-    if (yych <= 0xEC) {-      if (yych <= 0xC1) {-        if (yych <= 0x00)-          goto yy356;-        if (yych >= '^')-          goto yy356;-      } else {-        if (yych <= 0xDF)-          goto yy477;-        if (yych <= 0xE0)-          goto yy478;-        goto yy479;-      }-    } else {-      if (yych <= 0xF0) {-        if (yych <= 0xED)-          goto yy483;-        if (yych <= 0xEF)-          goto yy479;-        goto yy480;-      } else {-        if (yych <= 0xF3)-          goto yy481;-        if (yych <= 0xF4)-          goto yy482;-        goto yy356;-      }-    }-    ++p;-    yych = *p;-    if (yych <= 0xE0) {-      if (yych <= '>') {-        if (yych <= 0x00)-          goto yy356;-        if (yych <= '=')-          goto yy466;-        goto yy360;-      } else {-        if (yych <= 0x7F)-          goto yy466;-        if (yych <= 0xC1)-          goto yy356;-        if (yych <= 0xDF)-          goto yy484;-        goto yy485;-      }-    } else {-      if (yych <= 0xEF) {-        if (yych == 0xED)-          goto yy490;-        goto yy486;-      } else {-        if (yych <= 0xF0)-          goto yy487;-        if (yych <= 0xF3)-          goto yy488;-        if (yych <= 0xF4)-          goto yy489;-        goto yy356;-      }-    }-  yy477:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy356;-    if (yych <= 0xBF)-      goto yy466;-    goto yy356;-  yy478:-    ++p;-    yych = *p;-    if (yych <= 0x9F)-      goto yy356;-    if (yych <= 0xBF)-      goto yy477;-    goto yy356;-  yy479:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy356;-    if (yych <= 0xBF)-      goto yy477;-    goto yy356;-  yy480:-    ++p;-    yych = *p;-    if (yych <= 0x8F)-      goto yy356;-    if (yych <= 0xBF)-      goto yy479;-    goto yy356;-  yy481:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy356;-    if (yych <= 0xBF)-      goto yy479;-    goto yy356;-  yy482:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy356;-    if (yych <= 0x8F)-      goto yy479;-    goto yy356;-  yy483:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy356;-    if (yych <= 0x9F)-      goto yy477;-    goto yy356;-  yy484:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy356;-    if (yych <= 0xBF)-      goto yy466;-    goto yy356;-  yy485:-    ++p;-    yych = *p;-    if (yych <= 0x9F)-      goto yy356;-    if (yych <= 0xBF)-      goto yy484;-    goto yy356;-  yy486:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy356;-    if (yych <= 0xBF)-      goto yy484;-    goto yy356;-  yy487:-    ++p;-    yych = *p;-    if (yych <= 0x8F)-      goto yy356;-    if (yych <= 0xBF)-      goto yy486;-    goto yy356;-  yy488:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy356;-    if (yych <= 0xBF)-      goto yy486;-    goto yy356;-  yy489:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy356;-    if (yych <= 0x8F)-      goto yy486;-    goto yy356;-  yy490:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy356;-    if (yych <= 0x9F)-      goto yy484;-    goto yy356;-  }-}--// Try to (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 yy493;-        if (yych <= '\t')-          goto yy495;-      } else {-        if (yych <= 0x7F)-          goto yy495;-        if (yych <= 0xC1)-          goto yy493;-        if (yych <= 0xDF)-          goto yy496;-        goto yy497;-      }-    } else {-      if (yych <= 0xEF) {-        if (yych == 0xED)-          goto yy499;-        goto yy498;-      } else {-        if (yych <= 0xF0)-          goto yy500;-        if (yych <= 0xF3)-          goto yy501;-        if (yych <= 0xF4)-          goto yy502;-      }-    }-  yy493:-    ++p;-  yy494 : { return 0; }-  yy495:-    yyaccept = 0;-    yych = *(marker = ++p);-    if (yych <= '\n') {-      if (yych <= 0x00)-        goto yy494;-      if (yych <= '\t')-        goto yy507;-      goto yy494;-    } else {-      if (yych <= 0x7F)-        goto yy507;-      if (yych <= 0xC1)-        goto yy494;-      if (yych <= 0xF4)-        goto yy507;-      goto yy494;-    }-  yy496:-    yyaccept = 0;-    yych = *(marker = ++p);-    if (yych <= 0x7F)-      goto yy494;-    if (yych <= 0xBF)-      goto yy506;-    goto yy494;-  yy497:-    yyaccept = 0;-    yych = *(marker = ++p);-    if (yych <= 0x9F)-      goto yy494;-    if (yych <= 0xBF)-      goto yy505;-    goto yy494;-  yy498:-    yyaccept = 0;-    yych = *(marker = ++p);-    if (yych <= 0x7F)-      goto yy494;-    if (yych <= 0xBF)-      goto yy505;-    goto yy494;-  yy499:-    yyaccept = 0;-    yych = *(marker = ++p);-    if (yych <= 0x7F)-      goto yy494;-    if (yych <= 0x9F)-      goto yy505;-    goto yy494;-  yy500:-    yyaccept = 0;-    yych = *(marker = ++p);-    if (yych <= 0x8F)-      goto yy494;-    if (yych <= 0xBF)-      goto yy503;-    goto yy494;-  yy501:-    yyaccept = 0;-    yych = *(marker = ++p);-    if (yych <= 0x7F)-      goto yy494;-    if (yych <= 0xBF)-      goto yy503;-    goto yy494;-  yy502:-    yyaccept = 0;-    yych = *(marker = ++p);-    if (yych <= 0x7F)-      goto yy494;-    if (yych >= 0x90)-      goto yy494;-  yy503:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy504;-    if (yych <= 0xBF)-      goto yy505;-  yy504:-    p = marker;-    if (yyaccept == 0) {-      goto yy494;-    } else {-      goto yy510;-    }-  yy505:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy504;-    if (yych >= 0xC0)-      goto yy504;-  yy506:-    ++p;-    yych = *p;-  yy507:-    if (yybm[0 + yych] & 64) {-      goto yy506;-    }-    if (yych <= 0xEC) {-      if (yych <= 0xC1) {-        if (yych <= '\n')-          goto yy504;-        if (yych >= '?')-          goto yy504;-      } else {-        if (yych <= 0xDF)-          goto yy505;-        if (yych <= 0xE0)-          goto yy511;-        goto yy503;-      }-    } else {-      if (yych <= 0xF0) {-        if (yych <= 0xED)-          goto yy515;-        if (yych <= 0xEF)-          goto yy503;-        goto yy512;-      } else {-        if (yych <= 0xF3)-          goto yy513;-        if (yych <= 0xF4)-          goto yy514;-        goto yy504;-      }-    }-  yy508:-    yyaccept = 1;-    marker = ++p;-    yych = *p;-    if (yybm[0 + yych] & 64) {-      goto yy506;-    }-    if (yych <= 0xEC) {-      if (yych <= 0xC1) {-        if (yych <= '\n')-          goto yy510;-        if (yych <= '>')-          goto yy508;-      } else {-        if (yych <= 0xDF)-          goto yy505;-        if (yych <= 0xE0)-          goto yy511;-        goto yy503;-      }-    } else {-      if (yych <= 0xF0) {-        if (yych <= 0xED)-          goto yy515;-        if (yych <= 0xEF)-          goto yy503;-        goto yy512;-      } else {-        if (yych <= 0xF3)-          goto yy513;-        if (yych <= 0xF4)-          goto yy514;-      }-    }-  yy510 : { return (bufsize_t)(p - start); }-  yy511:-    ++p;-    yych = *p;-    if (yych <= 0x9F)-      goto yy504;-    if (yych <= 0xBF)-      goto yy505;-    goto yy504;-  yy512:-    ++p;-    yych = *p;-    if (yych <= 0x8F)-      goto yy504;-    if (yych <= 0xBF)-      goto yy503;-    goto yy504;-  yy513:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy504;-    if (yych <= 0xBF)-      goto yy503;-    goto yy504;-  yy514:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy504;-    if (yych <= 0x8F)-      goto yy503;-    goto yy504;-  yy515:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy504;-    if (yych <= 0x9F)-      goto yy505;-    goto yy504;-  }-}--// 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 yy520;-    ++p;-  yy519 : { return 0; }-  yy520:-    yych = *(marker = ++p);-    switch (yych) {-    case '!':-      goto yy538;-    case '/':-      goto yy521;-    case '?':-      goto yy539;-    case 'A':-    case 'a':-      goto yy524;-    case 'B':-    case 'b':-      goto yy525;-    case 'C':-    case 'c':-      goto yy526;-    case 'D':-    case 'd':-      goto yy527;-    case 'F':-    case 'f':-      goto yy528;-    case 'H':-    case 'h':-      goto yy529;-    case 'I':-    case 'i':-      goto yy530;-    case 'L':-    case 'l':-      goto yy531;-    case 'M':-    case 'm':-      goto yy532;-    case 'N':-    case 'n':-      goto yy533;-    case 'O':-    case 'o':-      goto yy534;-    case 'P':-    case 'p':-      goto yy523;-    case 'S':-    case 's':-      goto yy535;-    case 'T':-    case 't':-      goto yy536;-    case 'U':-    case 'u':-      goto yy537;-    default:-      goto yy519;-    }-  yy521:-    yych = *++p;-    switch (yych) {-    case 'A':-    case 'a':-      goto yy524;-    case 'B':-    case 'b':-      goto yy525;-    case 'C':-    case 'c':-      goto yy526;-    case 'D':-    case 'd':-      goto yy527;-    case 'F':-    case 'f':-      goto yy528;-    case 'H':-    case 'h':-      goto yy529;-    case 'I':-    case 'i':-      goto yy530;-    case 'L':-    case 'l':-      goto yy531;-    case 'M':-    case 'm':-      goto yy532;-    case 'N':-    case 'n':-      goto yy533;-    case 'O':-    case 'o':-      goto yy534;-    case 'P':-    case 'p':-      goto yy723;-    case 'S':-    case 's':-      goto yy724;-    case 'T':-    case 't':-      goto yy536;-    case 'U':-    case 'u':-      goto yy537;-    default:-      goto yy522;-    }-  yy522:-    p = marker;-    goto yy519;-  yy523:-    yych = *++p;-    if (yych <= '>') {-      if (yych <= ' ') {-        if (yych <= 0x08)-          goto yy522;-        if (yych <= '\r')-          goto yy555;-        if (yych <= 0x1F)-          goto yy522;-        goto yy555;-      } else {-        if (yych == '/')-          goto yy557;-        if (yych <= '=')-          goto yy522;-        goto yy555;-      }-    } else {-      if (yych <= 'R') {-        if (yych == 'A')-          goto yy720;-        if (yych <= 'Q')-          goto yy522;-        goto yy719;-      } else {-        if (yych <= 'a') {-          if (yych <= '`')-            goto yy522;-          goto yy720;-        } else {-          if (yych == 'r')-            goto yy719;-          goto yy522;-        }-      }-    }-  yy524:-    yych = *++p;-    if (yych <= 'S') {-      if (yych <= 'D') {-        if (yych <= 'C')-          goto yy522;-        goto yy708;-      } else {-        if (yych <= 'Q')-          goto yy522;-        if (yych <= 'R')-          goto yy707;-        goto yy706;-      }-    } else {-      if (yych <= 'q') {-        if (yych == 'd')-          goto yy708;-        goto yy522;-      } else {-        if (yych <= 'r')-          goto yy707;-        if (yych <= 's')-          goto yy706;-        goto yy522;-      }-    }-  yy525:-    yych = *++p;-    if (yych <= 'O') {-      if (yych <= 'K') {-        if (yych == 'A')-          goto yy692;-        goto yy522;-      } else {-        if (yych <= 'L')-          goto yy691;-        if (yych <= 'N')-          goto yy522;-        goto yy690;-      }-    } else {-      if (yych <= 'k') {-        if (yych == 'a')-          goto yy692;-        goto yy522;-      } else {-        if (yych <= 'l')-          goto yy691;-        if (yych == 'o')-          goto yy690;-        goto yy522;-      }-    }-  yy526:-    yych = *++p;-    if (yych <= 'O') {-      if (yych <= 'D') {-        if (yych == 'A')-          goto yy677;-        goto yy522;-      } else {-        if (yych <= 'E')-          goto yy676;-        if (yych <= 'N')-          goto yy522;-        goto yy675;-      }-    } else {-      if (yych <= 'd') {-        if (yych == 'a')-          goto yy677;-        goto yy522;-      } else {-        if (yych <= 'e')-          goto yy676;-        if (yych == 'o')-          goto yy675;-        goto yy522;-      }-    }-  yy527:-    yych = *++p;-    switch (yych) {-    case 'D':-    case 'L':-    case 'T':-    case 'd':-    case 'l':-    case 't':-      goto yy554;-    case 'E':-    case 'e':-      goto yy667;-    case 'I':-    case 'i':-      goto yy666;-    default:-      goto yy522;-    }-  yy528:-    yych = *++p;-    if (yych <= 'R') {-      if (yych <= 'N') {-        if (yych == 'I')-          goto yy642;-        goto yy522;-      } else {-        if (yych <= 'O')-          goto yy641;-        if (yych <= 'Q')-          goto yy522;-        goto yy640;-      }-    } else {-      if (yych <= 'n') {-        if (yych == 'i')-          goto yy642;-        goto yy522;-      } else {-        if (yych <= 'o')-          goto yy641;-        if (yych == 'r')-          goto yy640;-        goto yy522;-      }-    }-  yy529:-    yych = *++p;-    if (yych <= 'S') {-      if (yych <= 'D') {-        if (yych <= '0')-          goto yy522;-        if (yych <= '6')-          goto yy554;-        goto yy522;-      } else {-        if (yych <= 'E')-          goto yy635;-        if (yych == 'R')-          goto yy554;-        goto yy522;-      }-    } else {-      if (yych <= 'q') {-        if (yych <= 'T')-          goto yy634;-        if (yych == 'e')-          goto yy635;-        goto yy522;-      } else {-        if (yych <= 'r')-          goto yy554;-        if (yych == 't')-          goto yy634;-        goto yy522;-      }-    }-  yy530:-    yych = *++p;-    if (yych == 'F')-      goto yy630;-    if (yych == 'f')-      goto yy630;-    goto yy522;-  yy531:-    yych = *++p;-    if (yych <= 'I') {-      if (yych == 'E')-        goto yy625;-      if (yych <= 'H')-        goto yy522;-      goto yy624;-    } else {-      if (yych <= 'e') {-        if (yych <= 'd')-          goto yy522;-        goto yy625;-      } else {-        if (yych == 'i')-          goto yy624;-        goto yy522;-      }-    }-  yy532:-    yych = *++p;-    if (yych <= 'E') {-      if (yych == 'A')-        goto yy616;-      if (yych <= 'D')-        goto yy522;-      goto yy615;-    } else {-      if (yych <= 'a') {-        if (yych <= '`')-          goto yy522;-        goto yy616;-      } else {-        if (yych == 'e')-          goto yy615;-        goto yy522;-      }-    }-  yy533:-    yych = *++p;-    if (yych <= 'O') {-      if (yych == 'A')-        goto yy609;-      if (yych <= 'N')-        goto yy522;-      goto yy608;-    } else {-      if (yych <= 'a') {-        if (yych <= '`')-          goto yy522;-        goto yy609;-      } else {-        if (yych == 'o')-          goto yy608;-        goto yy522;-      }-    }-  yy534:-    yych = *++p;-    if (yych <= 'P') {-      if (yych == 'L')-        goto yy554;-      if (yych <= 'O')-        goto yy522;-      goto yy600;-    } else {-      if (yych <= 'l') {-        if (yych <= 'k')-          goto yy522;-        goto yy554;-      } else {-        if (yych == 'p')-          goto yy600;-        goto yy522;-      }-    }-  yy535:-    yych = *++p;-    switch (yych) {-    case 'C':-    case 'c':-      goto yy577;-    case 'E':-    case 'e':-      goto yy580;-    case 'O':-    case 'o':-      goto yy579;-    case 'T':-    case 't':-      goto yy576;-    case 'U':-    case 'u':-      goto yy578;-    default:-      goto yy522;-    }-  yy536:-    yych = *++p;-    switch (yych) {-    case 'A':-    case 'a':-      goto yy563;-    case 'B':-    case 'b':-      goto yy562;-    case 'D':-    case 'd':-      goto yy554;-    case 'F':-    case 'f':-      goto yy561;-    case 'H':-    case 'h':-      goto yy560;-    case 'I':-    case 'i':-      goto yy559;-    case 'R':-    case 'r':-      goto yy558;-    default:-      goto yy522;-    }-  yy537:-    yych = *++p;-    if (yych == 'L')-      goto yy554;-    if (yych == 'l')-      goto yy554;-    goto yy522;-  yy538:-    yych = *++p;-    if (yych <= '@') {-      if (yych == '-')-        goto yy541;-      goto yy522;-    } else {-      if (yych <= 'Z')-        goto yy542;-      if (yych <= '[')-        goto yy544;-      goto yy522;-    }-  yy539:-    ++p;-    { return 3; }-  yy541:-    yych = *++p;-    if (yych == '-')-      goto yy552;-    goto yy522;-  yy542:-    ++p;-    { return 4; }-  yy544:-    yych = *++p;-    if (yych == 'C')-      goto yy545;-    if (yych != 'c')-      goto yy522;-  yy545:-    yych = *++p;-    if (yych == 'D')-      goto yy546;-    if (yych != 'd')-      goto yy522;-  yy546:-    yych = *++p;-    if (yych == 'A')-      goto yy547;-    if (yych != 'a')-      goto yy522;-  yy547:-    yych = *++p;-    if (yych == 'T')-      goto yy548;-    if (yych != 't')-      goto yy522;-  yy548:-    yych = *++p;-    if (yych == 'A')-      goto yy549;-    if (yych != 'a')-      goto yy522;-  yy549:-    yych = *++p;-    if (yych != '[')-      goto yy522;-    ++p;-    { return 5; }-  yy552:-    ++p;-    { return 2; }-  yy554:-    yych = *++p;-    if (yych <= ' ') {-      if (yych <= 0x08)-        goto yy522;-      if (yych <= '\r')-        goto yy555;-      if (yych <= 0x1F)-        goto yy522;-    } else {-      if (yych <= '/') {-        if (yych <= '.')-          goto yy522;-        goto yy557;-      } else {-        if (yych != '>')-          goto yy522;-      }-    }-  yy555:-    ++p;-    { return 6; }-  yy557:-    yych = *++p;-    if (yych == '>')-      goto yy555;-    goto yy522;-  yy558:-    yych = *++p;-    if (yych <= '/') {-      if (yych <= 0x1F) {-        if (yych <= 0x08)-          goto yy522;-        if (yych <= '\r')-          goto yy555;-        goto yy522;-      } else {-        if (yych <= ' ')-          goto yy555;-        if (yych <= '.')-          goto yy522;-        goto yy557;-      }-    } else {-      if (yych <= '@') {-        if (yych == '>')-          goto yy555;-        goto yy522;-      } else {-        if (yych <= 'A')-          goto yy574;-        if (yych == 'a')-          goto yy574;-        goto yy522;-      }-    }-  yy559:-    yych = *++p;-    if (yych == 'T')-      goto yy572;-    if (yych == 't')-      goto yy572;-    goto yy522;-  yy560:-    yych = *++p;-    if (yych <= '/') {-      if (yych <= 0x1F) {-        if (yych <= 0x08)-          goto yy522;-        if (yych <= '\r')-          goto yy555;-        goto yy522;-      } else {-        if (yych <= ' ')-          goto yy555;-        if (yych <= '.')-          goto yy522;-        goto yy557;-      }-    } else {-      if (yych <= 'D') {-        if (yych == '>')-          goto yy555;-        goto yy522;-      } else {-        if (yych <= 'E')-          goto yy570;-        if (yych == 'e')-          goto yy570;-        goto yy522;-      }-    }-  yy561:-    yych = *++p;-    if (yych == 'O')-      goto yy568;-    if (yych == 'o')-      goto yy568;-    goto yy522;-  yy562:-    yych = *++p;-    if (yych == 'O')-      goto yy566;-    if (yych == 'o')-      goto yy566;-    goto yy522;-  yy563:-    yych = *++p;-    if (yych == 'B')-      goto yy564;-    if (yych != 'b')-      goto yy522;-  yy564:-    yych = *++p;-    if (yych == 'L')-      goto yy565;-    if (yych != 'l')-      goto yy522;-  yy565:-    yych = *++p;-    if (yych == 'E')-      goto yy554;-    if (yych == 'e')-      goto yy554;-    goto yy522;-  yy566:-    yych = *++p;-    if (yych == 'D')-      goto yy567;-    if (yych != 'd')-      goto yy522;-  yy567:-    yych = *++p;-    if (yych == 'Y')-      goto yy554;-    if (yych == 'y')-      goto yy554;-    goto yy522;-  yy568:-    yych = *++p;-    if (yych == 'O')-      goto yy569;-    if (yych != 'o')-      goto yy522;-  yy569:-    yych = *++p;-    if (yych == 'T')-      goto yy554;-    if (yych == 't')-      goto yy554;-    goto yy522;-  yy570:-    yych = *++p;-    if (yych == 'A')-      goto yy571;-    if (yych != 'a')-      goto yy522;-  yy571:-    yych = *++p;-    if (yych == 'D')-      goto yy554;-    if (yych == 'd')-      goto yy554;-    goto yy522;-  yy572:-    yych = *++p;-    if (yych == 'L')-      goto yy573;-    if (yych != 'l')-      goto yy522;-  yy573:-    yych = *++p;-    if (yych == 'E')-      goto yy554;-    if (yych == 'e')-      goto yy554;-    goto yy522;-  yy574:-    yych = *++p;-    if (yych == 'C')-      goto yy575;-    if (yych != 'c')-      goto yy522;-  yy575:-    yych = *++p;-    if (yych == 'K')-      goto yy554;-    if (yych == 'k')-      goto yy554;-    goto yy522;-  yy576:-    yych = *++p;-    if (yych == 'Y')-      goto yy598;-    if (yych == 'y')-      goto yy598;-    goto yy522;-  yy577:-    yych = *++p;-    if (yych == 'R')-      goto yy592;-    if (yych == 'r')-      goto yy592;-    goto yy522;-  yy578:-    yych = *++p;-    if (yych == 'M')-      goto yy588;-    if (yych == 'm')-      goto yy588;-    goto yy522;-  yy579:-    yych = *++p;-    if (yych == 'U')-      goto yy585;-    if (yych == 'u')-      goto yy585;-    goto yy522;-  yy580:-    yych = *++p;-    if (yych == 'C')-      goto yy581;-    if (yych != 'c')-      goto yy522;-  yy581:-    yych = *++p;-    if (yych == 'T')-      goto yy582;-    if (yych != 't')-      goto yy522;-  yy582:-    yych = *++p;-    if (yych == 'I')-      goto yy583;-    if (yych != 'i')-      goto yy522;-  yy583:-    yych = *++p;-    if (yych == 'O')-      goto yy584;-    if (yych != 'o')-      goto yy522;-  yy584:-    yych = *++p;-    if (yych == 'N')-      goto yy554;-    if (yych == 'n')-      goto yy554;-    goto yy522;-  yy585:-    yych = *++p;-    if (yych == 'R')-      goto yy586;-    if (yych != 'r')-      goto yy522;-  yy586:-    yych = *++p;-    if (yych == 'C')-      goto yy587;-    if (yych != 'c')-      goto yy522;-  yy587:-    yych = *++p;-    if (yych == 'E')-      goto yy554;-    if (yych == 'e')-      goto yy554;-    goto yy522;-  yy588:-    yych = *++p;-    if (yych == 'M')-      goto yy589;-    if (yych != 'm')-      goto yy522;-  yy589:-    yych = *++p;-    if (yych == 'A')-      goto yy590;-    if (yych != 'a')-      goto yy522;-  yy590:-    yych = *++p;-    if (yych == 'R')-      goto yy591;-    if (yych != 'r')-      goto yy522;-  yy591:-    yych = *++p;-    if (yych == 'Y')-      goto yy554;-    if (yych == 'y')-      goto yy554;-    goto yy522;-  yy592:-    yych = *++p;-    if (yych == 'I')-      goto yy593;-    if (yych != 'i')-      goto yy522;-  yy593:-    yych = *++p;-    if (yych == 'P')-      goto yy594;-    if (yych != 'p')-      goto yy522;-  yy594:-    yych = *++p;-    if (yych == 'T')-      goto yy595;-    if (yych != 't')-      goto yy522;-  yy595:-    yych = *++p;-    if (yych <= 0x1F) {-      if (yych <= 0x08)-        goto yy522;-      if (yych >= 0x0E)-        goto yy522;-    } else {-      if (yych <= ' ')-        goto yy596;-      if (yych != '>')-        goto yy522;-    }-  yy596:-    ++p;-    { return 1; }-  yy598:-    yych = *++p;-    if (yych == 'L')-      goto yy599;-    if (yych != 'l')-      goto yy522;-  yy599:-    yych = *++p;-    if (yych == 'E')-      goto yy595;-    if (yych == 'e')-      goto yy595;-    goto yy522;-  yy600:-    yych = *++p;-    if (yych == 'T')-      goto yy601;-    if (yych != 't')-      goto yy522;-  yy601:-    yych = *++p;-    if (yych <= 'I') {-      if (yych == 'G')-        goto yy603;-      if (yych <= 'H')-        goto yy522;-    } else {-      if (yych <= 'g') {-        if (yych <= 'f')-          goto yy522;-        goto yy603;-      } else {-        if (yych != 'i')-          goto yy522;-      }-    }-    yych = *++p;-    if (yych == 'O')-      goto yy607;-    if (yych == 'o')-      goto yy607;-    goto yy522;-  yy603:-    yych = *++p;-    if (yych == 'R')-      goto yy604;-    if (yych != 'r')-      goto yy522;-  yy604:-    yych = *++p;-    if (yych == 'O')-      goto yy605;-    if (yych != 'o')-      goto yy522;-  yy605:-    yych = *++p;-    if (yych == 'U')-      goto yy606;-    if (yych != 'u')-      goto yy522;-  yy606:-    yych = *++p;-    if (yych == 'P')-      goto yy554;-    if (yych == 'p')-      goto yy554;-    goto yy522;-  yy607:-    yych = *++p;-    if (yych == 'N')-      goto yy554;-    if (yych == 'n')-      goto yy554;-    goto yy522;-  yy608:-    yych = *++p;-    if (yych == 'F')-      goto yy610;-    if (yych == 'f')-      goto yy610;-    goto yy522;-  yy609:-    yych = *++p;-    if (yych == 'V')-      goto yy554;-    if (yych == 'v')-      goto yy554;-    goto yy522;-  yy610:-    yych = *++p;-    if (yych == 'R')-      goto yy611;-    if (yych != 'r')-      goto yy522;-  yy611:-    yych = *++p;-    if (yych == 'A')-      goto yy612;-    if (yych != 'a')-      goto yy522;-  yy612:-    yych = *++p;-    if (yych == 'M')-      goto yy613;-    if (yych != 'm')-      goto yy522;-  yy613:-    yych = *++p;-    if (yych == 'E')-      goto yy614;-    if (yych != 'e')-      goto yy522;-  yy614:-    yych = *++p;-    if (yych == 'S')-      goto yy554;-    if (yych == 's')-      goto yy554;-    goto yy522;-  yy615:-    yych = *++p;-    if (yych <= 'T') {-      if (yych == 'N')-        goto yy618;-      if (yych <= 'S')-        goto yy522;-      goto yy619;-    } else {-      if (yych <= 'n') {-        if (yych <= 'm')-          goto yy522;-        goto yy618;-      } else {-        if (yych == 't')-          goto yy619;-        goto yy522;-      }-    }-  yy616:-    yych = *++p;-    if (yych == 'I')-      goto yy617;-    if (yych != 'i')-      goto yy522;-  yy617:-    yych = *++p;-    if (yych == 'N')-      goto yy554;-    if (yych == 'n')-      goto yy554;-    goto yy522;-  yy618:-    yych = *++p;-    if (yych == 'U')-      goto yy620;-    if (yych == 'u')-      goto yy620;-    goto yy522;-  yy619:-    yych = *++p;-    if (yych == 'A')-      goto yy554;-    if (yych == 'a')-      goto yy554;-    goto yy522;-  yy620:-    yych = *++p;-    if (yych <= '/') {-      if (yych <= 0x1F) {-        if (yych <= 0x08)-          goto yy522;-        if (yych <= '\r')-          goto yy555;-        goto yy522;-      } else {-        if (yych <= ' ')-          goto yy555;-        if (yych <= '.')-          goto yy522;-        goto yy557;-      }-    } else {-      if (yych <= 'H') {-        if (yych == '>')-          goto yy555;-        goto yy522;-      } else {-        if (yych <= 'I')-          goto yy621;-        if (yych != 'i')-          goto yy522;-      }-    }-  yy621:-    yych = *++p;-    if (yych == 'T')-      goto yy622;-    if (yych != 't')-      goto yy522;-  yy622:-    yych = *++p;-    if (yych == 'E')-      goto yy623;-    if (yych != 'e')-      goto yy522;-  yy623:-    yych = *++p;-    if (yych == 'M')-      goto yy554;-    if (yych == 'm')-      goto yy554;-    goto yy522;-  yy624:-    yych = *++p;-    if (yych <= '/') {-      if (yych <= 0x1F) {-        if (yych <= 0x08)-          goto yy522;-        if (yych <= '\r')-          goto yy555;-        goto yy522;-      } else {-        if (yych <= ' ')-          goto yy555;-        if (yych <= '.')-          goto yy522;-        goto yy557;-      }-    } else {-      if (yych <= 'M') {-        if (yych == '>')-          goto yy555;-        goto yy522;-      } else {-        if (yych <= 'N')-          goto yy629;-        if (yych == 'n')-          goto yy629;-        goto yy522;-      }-    }-  yy625:-    yych = *++p;-    if (yych == 'G')-      goto yy626;-    if (yych != 'g')-      goto yy522;-  yy626:-    yych = *++p;-    if (yych == 'E')-      goto yy627;-    if (yych != 'e')-      goto yy522;-  yy627:-    yych = *++p;-    if (yych == 'N')-      goto yy628;-    if (yych != 'n')-      goto yy522;-  yy628:-    yych = *++p;-    if (yych == 'D')-      goto yy554;-    if (yych == 'd')-      goto yy554;-    goto yy522;-  yy629:-    yych = *++p;-    if (yych == 'K')-      goto yy554;-    if (yych == 'k')-      goto yy554;-    goto yy522;-  yy630:-    yych = *++p;-    if (yych == 'R')-      goto yy631;-    if (yych != 'r')-      goto yy522;-  yy631:-    yych = *++p;-    if (yych == 'A')-      goto yy632;-    if (yych != 'a')-      goto yy522;-  yy632:-    yych = *++p;-    if (yych == 'M')-      goto yy633;-    if (yych != 'm')-      goto yy522;-  yy633:-    yych = *++p;-    if (yych == 'E')-      goto yy554;-    if (yych == 'e')-      goto yy554;-    goto yy522;-  yy634:-    yych = *++p;-    if (yych == 'M')-      goto yy639;-    if (yych == 'm')-      goto yy639;-    goto yy522;-  yy635:-    yych = *++p;-    if (yych == 'A')-      goto yy636;-    if (yych != 'a')-      goto yy522;-  yy636:-    yych = *++p;-    if (yych == 'D')-      goto yy637;-    if (yych != 'd')-      goto yy522;-  yy637:-    yych = *++p;-    if (yych <= '/') {-      if (yych <= 0x1F) {-        if (yych <= 0x08)-          goto yy522;-        if (yych <= '\r')-          goto yy555;-        goto yy522;-      } else {-        if (yych <= ' ')-          goto yy555;-        if (yych <= '.')-          goto yy522;-        goto yy557;-      }-    } else {-      if (yych <= 'D') {-        if (yych == '>')-          goto yy555;-        goto yy522;-      } else {-        if (yych <= 'E')-          goto yy638;-        if (yych != 'e')-          goto yy522;-      }-    }-  yy638:-    yych = *++p;-    if (yych == 'R')-      goto yy554;-    if (yych == 'r')-      goto yy554;-    goto yy522;-  yy639:-    yych = *++p;-    if (yych == 'L')-      goto yy554;-    if (yych == 'l')-      goto yy554;-    goto yy522;-  yy640:-    yych = *++p;-    if (yych == 'A')-      goto yy661;-    if (yych == 'a')-      goto yy661;-    goto yy522;-  yy641:-    yych = *++p;-    if (yych <= 'R') {-      if (yych == 'O')-        goto yy657;-      if (yych <= 'Q')-        goto yy522;-      goto yy658;-    } else {-      if (yych <= 'o') {-        if (yych <= 'n')-          goto yy522;-        goto yy657;-      } else {-        if (yych == 'r')-          goto yy658;-        goto yy522;-      }-    }-  yy642:-    yych = *++p;-    if (yych <= 'G') {-      if (yych == 'E')-        goto yy643;-      if (yych <= 'F')-        goto yy522;-      goto yy644;-    } else {-      if (yych <= 'e') {-        if (yych <= 'd')-          goto yy522;-      } else {-        if (yych == 'g')-          goto yy644;-        goto yy522;-      }-    }-  yy643:-    yych = *++p;-    if (yych == 'L')-      goto yy653;-    if (yych == 'l')-      goto yy653;-    goto yy522;-  yy644:-    yych = *++p;-    if (yych <= 'U') {-      if (yych == 'C')-        goto yy646;-      if (yych <= 'T')-        goto yy522;-    } else {-      if (yych <= 'c') {-        if (yych <= 'b')-          goto yy522;-        goto yy646;-      } else {-        if (yych != 'u')-          goto yy522;-      }-    }-    yych = *++p;-    if (yych == 'R')-      goto yy652;-    if (yych == 'r')-      goto yy652;-    goto yy522;-  yy646:-    yych = *++p;-    if (yych == 'A')-      goto yy647;-    if (yych != 'a')-      goto yy522;-  yy647:-    yych = *++p;-    if (yych == 'P')-      goto yy648;-    if (yych != 'p')-      goto yy522;-  yy648:-    yych = *++p;-    if (yych == 'T')-      goto yy649;-    if (yych != 't')-      goto yy522;-  yy649:-    yych = *++p;-    if (yych == 'I')-      goto yy650;-    if (yych != 'i')-      goto yy522;-  yy650:-    yych = *++p;-    if (yych == 'O')-      goto yy651;-    if (yych != 'o')-      goto yy522;-  yy651:-    yych = *++p;-    if (yych == 'N')-      goto yy554;-    if (yych == 'n')-      goto yy554;-    goto yy522;-  yy652:-    yych = *++p;-    if (yych == 'E')-      goto yy554;-    if (yych == 'e')-      goto yy554;-    goto yy522;-  yy653:-    yych = *++p;-    if (yych == 'D')-      goto yy654;-    if (yych != 'd')-      goto yy522;-  yy654:-    yych = *++p;-    if (yych == 'S')-      goto yy655;-    if (yych != 's')-      goto yy522;-  yy655:-    yych = *++p;-    if (yych == 'E')-      goto yy656;-    if (yych != 'e')-      goto yy522;-  yy656:-    yych = *++p;-    if (yych == 'T')-      goto yy554;-    if (yych == 't')-      goto yy554;-    goto yy522;-  yy657:-    yych = *++p;-    if (yych == 'T')-      goto yy659;-    if (yych == 't')-      goto yy659;-    goto yy522;-  yy658:-    yych = *++p;-    if (yych == 'M')-      goto yy554;-    if (yych == 'm')-      goto yy554;-    goto yy522;-  yy659:-    yych = *++p;-    if (yych == 'E')-      goto yy660;-    if (yych != 'e')-      goto yy522;-  yy660:-    yych = *++p;-    if (yych == 'R')-      goto yy554;-    if (yych == 'r')-      goto yy554;-    goto yy522;-  yy661:-    yych = *++p;-    if (yych == 'M')-      goto yy662;-    if (yych != 'm')-      goto yy522;-  yy662:-    yych = *++p;-    if (yych == 'E')-      goto yy663;-    if (yych != 'e')-      goto yy522;-  yy663:-    yych = *++p;-    if (yych <= '/') {-      if (yych <= 0x1F) {-        if (yych <= 0x08)-          goto yy522;-        if (yych <= '\r')-          goto yy555;-        goto yy522;-      } else {-        if (yych <= ' ')-          goto yy555;-        if (yych <= '.')-          goto yy522;-        goto yy557;-      }-    } else {-      if (yych <= 'R') {-        if (yych == '>')-          goto yy555;-        goto yy522;-      } else {-        if (yych <= 'S')-          goto yy664;-        if (yych != 's')-          goto yy522;-      }-    }-  yy664:-    yych = *++p;-    if (yych == 'E')-      goto yy665;-    if (yych != 'e')-      goto yy522;-  yy665:-    yych = *++p;-    if (yych == 'T')-      goto yy554;-    if (yych == 't')-      goto yy554;-    goto yy522;-  yy666:-    yych = *++p;-    if (yych <= 'V') {-      if (yych <= 'Q') {-        if (yych == 'A')-          goto yy672;-        goto yy522;-      } else {-        if (yych <= 'R')-          goto yy554;-        if (yych <= 'U')-          goto yy522;-        goto yy554;-      }-    } else {-      if (yych <= 'q') {-        if (yych == 'a')-          goto yy672;-        goto yy522;-      } else {-        if (yych <= 'r')-          goto yy554;-        if (yych == 'v')-          goto yy554;-        goto yy522;-      }-    }-  yy667:-    yych = *++p;-    if (yych == 'T')-      goto yy668;-    if (yych != 't')-      goto yy522;-  yy668:-    yych = *++p;-    if (yych == 'A')-      goto yy669;-    if (yych != 'a')-      goto yy522;-  yy669:-    yych = *++p;-    if (yych == 'I')-      goto yy670;-    if (yych != 'i')-      goto yy522;-  yy670:-    yych = *++p;-    if (yych == 'L')-      goto yy671;-    if (yych != 'l')-      goto yy522;-  yy671:-    yych = *++p;-    if (yych == 'S')-      goto yy554;-    if (yych == 's')-      goto yy554;-    goto yy522;-  yy672:-    yych = *++p;-    if (yych == 'L')-      goto yy673;-    if (yych != 'l')-      goto yy522;-  yy673:-    yych = *++p;-    if (yych == 'O')-      goto yy674;-    if (yych != 'o')-      goto yy522;-  yy674:-    yych = *++p;-    if (yych == 'G')-      goto yy554;-    if (yych == 'g')-      goto yy554;-    goto yy522;-  yy675:-    yych = *++p;-    if (yych == 'L')-      goto yy685;-    if (yych == 'l')-      goto yy685;-    goto yy522;-  yy676:-    yych = *++p;-    if (yych == 'N')-      goto yy682;-    if (yych == 'n')-      goto yy682;-    goto yy522;-  yy677:-    yych = *++p;-    if (yych == 'P')-      goto yy678;-    if (yych != 'p')-      goto yy522;-  yy678:-    yych = *++p;-    if (yych == 'T')-      goto yy679;-    if (yych != 't')-      goto yy522;-  yy679:-    yych = *++p;-    if (yych == 'I')-      goto yy680;-    if (yych != 'i')-      goto yy522;-  yy680:-    yych = *++p;-    if (yych == 'O')-      goto yy681;-    if (yych != 'o')-      goto yy522;-  yy681:-    yych = *++p;-    if (yych == 'N')-      goto yy554;-    if (yych == 'n')-      goto yy554;-    goto yy522;-  yy682:-    yych = *++p;-    if (yych == 'T')-      goto yy683;-    if (yych != 't')-      goto yy522;-  yy683:-    yych = *++p;-    if (yych == 'E')-      goto yy684;-    if (yych != 'e')-      goto yy522;-  yy684:-    yych = *++p;-    if (yych == 'R')-      goto yy554;-    if (yych == 'r')-      goto yy554;-    goto yy522;-  yy685:-    yych = *++p;-    if (yych <= '/') {-      if (yych <= 0x1F) {-        if (yych <= 0x08)-          goto yy522;-        if (yych <= '\r')-          goto yy555;-        goto yy522;-      } else {-        if (yych <= ' ')-          goto yy555;-        if (yych <= '.')-          goto yy522;-        goto yy557;-      }-    } else {-      if (yych <= 'F') {-        if (yych == '>')-          goto yy555;-        goto yy522;-      } else {-        if (yych <= 'G')-          goto yy686;-        if (yych != 'g')-          goto yy522;-      }-    }-  yy686:-    yych = *++p;-    if (yych == 'R')-      goto yy687;-    if (yych != 'r')-      goto yy522;-  yy687:-    yych = *++p;-    if (yych == 'O')-      goto yy688;-    if (yych != 'o')-      goto yy522;-  yy688:-    yych = *++p;-    if (yych == 'U')-      goto yy689;-    if (yych != 'u')-      goto yy522;-  yy689:-    yych = *++p;-    if (yych == 'P')-      goto yy554;-    if (yych == 'p')-      goto yy554;-    goto yy522;-  yy690:-    yych = *++p;-    if (yych == 'D')-      goto yy705;-    if (yych == 'd')-      goto yy705;-    goto yy522;-  yy691:-    yych = *++p;-    if (yych == 'O')-      goto yy698;-    if (yych == 'o')-      goto yy698;-    goto yy522;-  yy692:-    yych = *++p;-    if (yych == 'S')-      goto yy693;-    if (yych != 's')-      goto yy522;-  yy693:-    yych = *++p;-    if (yych == 'E')-      goto yy694;-    if (yych != 'e')-      goto yy522;-  yy694:-    yych = *++p;-    if (yych <= '/') {-      if (yych <= 0x1F) {-        if (yych <= 0x08)-          goto yy522;-        if (yych <= '\r')-          goto yy555;-        goto yy522;-      } else {-        if (yych <= ' ')-          goto yy555;-        if (yych <= '.')-          goto yy522;-        goto yy557;-      }-    } else {-      if (yych <= 'E') {-        if (yych == '>')-          goto yy555;-        goto yy522;-      } else {-        if (yych <= 'F')-          goto yy695;-        if (yych != 'f')-          goto yy522;-      }-    }-  yy695:-    yych = *++p;-    if (yych == 'O')-      goto yy696;-    if (yych != 'o')-      goto yy522;-  yy696:-    yych = *++p;-    if (yych == 'N')-      goto yy697;-    if (yych != 'n')-      goto yy522;-  yy697:-    yych = *++p;-    if (yych == 'T')-      goto yy554;-    if (yych == 't')-      goto yy554;-    goto yy522;-  yy698:-    yych = *++p;-    if (yych == 'C')-      goto yy699;-    if (yych != 'c')-      goto yy522;-  yy699:-    yych = *++p;-    if (yych == 'K')-      goto yy700;-    if (yych != 'k')-      goto yy522;-  yy700:-    yych = *++p;-    if (yych == 'Q')-      goto yy701;-    if (yych != 'q')-      goto yy522;-  yy701:-    yych = *++p;-    if (yych == 'U')-      goto yy702;-    if (yych != 'u')-      goto yy522;-  yy702:-    yych = *++p;-    if (yych == 'O')-      goto yy703;-    if (yych != 'o')-      goto yy522;-  yy703:-    yych = *++p;-    if (yych == 'T')-      goto yy704;-    if (yych != 't')-      goto yy522;-  yy704:-    yych = *++p;-    if (yych == 'E')-      goto yy554;-    if (yych == 'e')-      goto yy554;-    goto yy522;-  yy705:-    yych = *++p;-    if (yych == 'Y')-      goto yy554;-    if (yych == 'y')-      goto yy554;-    goto yy522;-  yy706:-    yych = *++p;-    if (yych == 'I')-      goto yy717;-    if (yych == 'i')-      goto yy717;-    goto yy522;-  yy707:-    yych = *++p;-    if (yych == 'T')-      goto yy713;-    if (yych == 't')-      goto yy713;-    goto yy522;-  yy708:-    yych = *++p;-    if (yych == 'D')-      goto yy709;-    if (yych != 'd')-      goto yy522;-  yy709:-    yych = *++p;-    if (yych == 'R')-      goto yy710;-    if (yych != 'r')-      goto yy522;-  yy710:-    yych = *++p;-    if (yych == 'E')-      goto yy711;-    if (yych != 'e')-      goto yy522;-  yy711:-    yych = *++p;-    if (yych == 'S')-      goto yy712;-    if (yych != 's')-      goto yy522;-  yy712:-    yych = *++p;-    if (yych == 'S')-      goto yy554;-    if (yych == 's')-      goto yy554;-    goto yy522;-  yy713:-    yych = *++p;-    if (yych == 'I')-      goto yy714;-    if (yych != 'i')-      goto yy522;-  yy714:-    yych = *++p;-    if (yych == 'C')-      goto yy715;-    if (yych != 'c')-      goto yy522;-  yy715:-    yych = *++p;-    if (yych == 'L')-      goto yy716;-    if (yych != 'l')-      goto yy522;-  yy716:-    yych = *++p;-    if (yych == 'E')-      goto yy554;-    if (yych == 'e')-      goto yy554;-    goto yy522;-  yy717:-    yych = *++p;-    if (yych == 'D')-      goto yy718;-    if (yych != 'd')-      goto yy522;-  yy718:-    yych = *++p;-    if (yych == 'E')-      goto yy554;-    if (yych == 'e')-      goto yy554;-    goto yy522;-  yy719:-    yych = *++p;-    if (yych == 'E')-      goto yy595;-    if (yych == 'e')-      goto yy595;-    goto yy522;-  yy720:-    yych = *++p;-    if (yych == 'R')-      goto yy721;-    if (yych != 'r')-      goto yy522;-  yy721:-    yych = *++p;-    if (yych == 'A')-      goto yy722;-    if (yych != 'a')-      goto yy522;-  yy722:-    yych = *++p;-    if (yych == 'M')-      goto yy554;-    if (yych == 'm')-      goto yy554;-    goto yy522;-  yy723:-    yych = *++p;-    if (yych <= '/') {-      if (yych <= 0x1F) {-        if (yych <= 0x08)-          goto yy522;-        if (yych <= '\r')-          goto yy555;-        goto yy522;-      } else {-        if (yych <= ' ')-          goto yy555;-        if (yych <= '.')-          goto yy522;-        goto yy557;-      }-    } else {-      if (yych <= '@') {-        if (yych == '>')-          goto yy555;-        goto yy522;-      } else {-        if (yych <= 'A')-          goto yy720;-        if (yych == 'a')-          goto yy720;-        goto yy522;-      }-    }-  yy724:-    ++p;-    if ((yych = *p) <= 'U') {-      if (yych <= 'N') {-        if (yych == 'E')-          goto yy580;-        goto yy522;-      } else {-        if (yych <= 'O')-          goto yy579;-        if (yych <= 'T')-          goto yy522;-        goto yy578;-      }-    } else {-      if (yych <= 'n') {-        if (yych == 'e')-          goto yy580;-        goto yy522;-      } else {-        if (yych <= 'o')-          goto yy579;-        if (yych == 'u')-          goto yy578;-        goto yy522;-      }-    }-  }-}--// Try to match an HTML block tag start line of type 7, returning-// 7 if successful, 0 if not.-bufsize_t _scan_html_block_start_7(const unsigned char *p) {-  const unsigned char *marker = NULL;--  {-    unsigned char yych;-    unsigned int yyaccept = 0;-    static const unsigned char yybm[] = {-        0,   224, 224, 224, 224, 224, 224, 224, 224, 198, 202, 194, 198, 194,-        224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,-        224, 224, 224, 224, 198, 224, 64,  224, 224, 224, 224, 128, 224, 224,-        224, 224, 224, 241, 240, 224, 241, 241, 241, 241, 241, 241, 241, 241,-        241, 241, 240, 224, 192, 192, 192, 224, 224, 241, 241, 241, 241, 241,-        241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241,-        241, 241, 241, 241, 241, 241, 241, 224, 224, 224, 224, 240, 192, 241,-        241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241,-        241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 224, 224, 224,-        224, 224, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,-        0,   0,   0,   0,-    };-    yych = *p;-    if (yych == '<')-      goto yy729;-    ++p;-  yy728 : { return 0; }-  yy729:-    yyaccept = 0;-    yych = *(marker = ++p);-    if (yych <= '@') {-      if (yych == '/')-        goto yy733;-      goto yy728;-    } else {-      if (yych <= 'Z')-        goto yy730;-      if (yych <= '`')-        goto yy728;-      if (yych >= '{')-        goto yy728;-    }-  yy730:-    ++p;-    yych = *p;-    if (yybm[0 + yych] & 1) {-      goto yy730;-    }-    if (yych <= ' ') {-      if (yych <= 0x08)-        goto yy732;-      if (yych <= '\r')-        goto yy744;-      if (yych >= ' ')-        goto yy744;-    } else {-      if (yych <= '/') {-        if (yych >= '/')-          goto yy746;-      } else {-        if (yych == '>')-          goto yy738;-      }-    }-  yy732:-    p = marker;-    if (yyaccept == 0) {-      goto yy728;-    } else {-      goto yy742;-    }-  yy733:-    yych = *++p;-    if (yych <= '@')-      goto yy732;-    if (yych <= 'Z')-      goto yy734;-    if (yych <= '`')-      goto yy732;-    if (yych >= '{')-      goto yy732;-  yy734:-    ++p;-    yych = *p;-    if (yybm[0 + yych] & 2) {-      goto yy736;-    }-    if (yych <= '=') {-      if (yych <= '-') {-        if (yych <= ',')-          goto yy732;-        goto yy734;-      } else {-        if (yych <= '/')-          goto yy732;-        if (yych <= '9')-          goto yy734;-        goto yy732;-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '>')-          goto yy738;-        if (yych <= '@')-          goto yy732;-        goto yy734;-      } else {-        if (yych <= '`')-          goto yy732;-        if (yych <= 'z')-          goto yy734;-        goto yy732;-      }-    }-  yy736:-    ++p;-    yych = *p;-    if (yybm[0 + yych] & 2) {-      goto yy736;-    }-    if (yych != '>')-      goto yy732;-  yy738:-    ++p;-    yych = *p;-    if (yybm[0 + yych] & 4) {-      goto yy738;-    }-    if (yych <= 0x08)-      goto yy732;-    if (yych <= '\n')-      goto yy740;-    if (yych <= '\v')-      goto yy732;-    if (yych <= '\r')-      goto yy743;-    goto yy732;-  yy740:-    yyaccept = 1;-    marker = ++p;-    yych = *p;-    if (yybm[0 + yych] & 4) {-      goto yy738;-    }-    if (yych <= 0x08)-      goto yy742;-    if (yych <= '\n')-      goto yy740;-    if (yych <= '\v')-      goto yy742;-    if (yych <= '\r')-      goto yy743;-  yy742 : { return 7; }-  yy743:-    yych = *++p;-    goto yy742;-  yy744:-    ++p;-    yych = *p;-    if (yych <= ':') {-      if (yych <= ' ') {-        if (yych <= 0x08)-          goto yy732;-        if (yych <= '\r')-          goto yy744;-        if (yych <= 0x1F)-          goto yy732;-        goto yy744;-      } else {-        if (yych == '/')-          goto yy746;-        if (yych <= '9')-          goto yy732;-        goto yy747;-      }-    } else {-      if (yych <= 'Z') {-        if (yych == '>')-          goto yy738;-        if (yych <= '@')-          goto yy732;-        goto yy747;-      } else {-        if (yych <= '_') {-          if (yych <= '^')-            goto yy732;-          goto yy747;-        } else {-          if (yych <= '`')-            goto yy732;-          if (yych <= 'z')-            goto yy747;-          goto yy732;-        }-      }-    }-  yy746:-    yych = *++p;-    if (yych == '>')-      goto yy738;-    goto yy732;-  yy747:-    ++p;-    yych = *p;-    if (yybm[0 + yych] & 16) {-      goto yy747;-    }-    if (yych <= ',') {-      if (yych <= '\r') {-        if (yych <= 0x08)-          goto yy732;-      } else {-        if (yych != ' ')-          goto yy732;-      }-    } else {-      if (yych <= '<') {-        if (yych <= '/')-          goto yy746;-        goto yy732;-      } else {-        if (yych <= '=')-          goto yy751;-        if (yych <= '>')-          goto yy738;-        goto yy732;-      }-    }-  yy749:-    ++p;-    yych = *p;-    if (yych <= '<') {-      if (yych <= ' ') {-        if (yych <= 0x08)-          goto yy732;-        if (yych <= '\r')-          goto yy749;-        if (yych <= 0x1F)-          goto yy732;-        goto yy749;-      } else {-        if (yych <= '/') {-          if (yych <= '.')-            goto yy732;-          goto yy746;-        } else {-          if (yych == ':')-            goto yy747;-          goto yy732;-        }-      }-    } else {-      if (yych <= 'Z') {-        if (yych <= '=')-          goto yy751;-        if (yych <= '>')-          goto yy738;-        if (yych <= '@')-          goto yy732;-        goto yy747;-      } else {-        if (yych <= '_') {-          if (yych <= '^')-            goto yy732;-          goto yy747;-        } else {-          if (yych <= '`')-            goto yy732;-          if (yych <= 'z')-            goto yy747;-          goto yy732;-        }-      }-    }-  yy751:-    ++p;-    yych = *p;-    if (yybm[0 + yych] & 32) {-      goto yy753;-    }-    if (yych <= 0xE0) {-      if (yych <= '"') {-        if (yych <= 0x00)-          goto yy732;-        if (yych >= '!')-          goto yy764;-      } else {-        if (yych <= '\'')-          goto yy762;-        if (yych <= 0xC1)-          goto yy732;-        if (yych <= 0xDF)-          goto yy755;-        goto yy756;-      }-    } else {-      if (yych <= 0xEF) {-        if (yych == 0xED)-          goto yy761;-        goto yy757;-      } else {-        if (yych <= 0xF0)-          goto yy758;-        if (yych <= 0xF3)-          goto yy759;-        if (yych <= 0xF4)-          goto yy760;-        goto yy732;-      }-    }-    ++p;-    yych = *p;-    if (yybm[0 + yych] & 32) {-      goto yy753;-    }-    if (yych <= 0xDF) {-      if (yych <= '\'') {-        if (yych <= 0x00)-          goto yy732;-        if (yych <= ' ')-          goto yy787;-        if (yych <= '"')-          goto yy764;-        goto yy762;-      } else {-        if (yych == '>')-          goto yy738;-        if (yych <= 0xC1)-          goto yy732;-        goto yy755;-      }-    } else {-      if (yych <= 0xEF) {-        if (yych <= 0xE0)-          goto yy756;-        if (yych == 0xED)-          goto yy761;-        goto yy757;-      } else {-        if (yych <= 0xF0)-          goto yy758;-        if (yych <= 0xF3)-          goto yy759;-        if (yych <= 0xF4)-          goto yy760;-        goto yy732;-      }-    }-  yy753:-    ++p;-    yych = *p;-    if (yybm[0 + yych] & 32) {-      goto yy753;-    }-    if (yych <= 0xE0) {-      if (yych <= '=') {-        if (yych <= 0x00)-          goto yy732;-        if (yych <= ' ')-          goto yy781;-        goto yy732;-      } else {-        if (yych <= '>')-          goto yy738;-        if (yych <= 0xC1)-          goto yy732;-        if (yych >= 0xE0)-          goto yy756;-      }-    } else {-      if (yych <= 0xEF) {-        if (yych == 0xED)-          goto yy761;-        goto yy757;-      } else {-        if (yych <= 0xF0)-          goto yy758;-        if (yych <= 0xF3)-          goto yy759;-        if (yych <= 0xF4)-          goto yy760;-        goto yy732;-      }-    }-  yy755:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy732;-    if (yych <= 0xBF)-      goto yy753;-    goto yy732;-  yy756:-    ++p;-    yych = *p;-    if (yych <= 0x9F)-      goto yy732;-    if (yych <= 0xBF)-      goto yy755;-    goto yy732;-  yy757:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy732;-    if (yych <= 0xBF)-      goto yy755;-    goto yy732;-  yy758:-    ++p;-    yych = *p;-    if (yych <= 0x8F)-      goto yy732;-    if (yych <= 0xBF)-      goto yy757;-    goto yy732;-  yy759:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy732;-    if (yych <= 0xBF)-      goto yy757;-    goto yy732;-  yy760:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy732;-    if (yych <= 0x8F)-      goto yy757;-    goto yy732;-  yy761:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy732;-    if (yych <= 0x9F)-      goto yy755;-    goto yy732;-  yy762:-    ++p;-    yych = *p;-    if (yybm[0 + yych] & 64) {-      goto yy762;-    }-    if (yych <= 0xEC) {-      if (yych <= 0xC1) {-        if (yych <= 0x00)-          goto yy732;-        if (yych <= '\'')-          goto yy773;-        goto yy732;-      } else {-        if (yych <= 0xDF)-          goto yy774;-        if (yych <= 0xE0)-          goto yy775;-        goto yy776;-      }-    } else {-      if (yych <= 0xF0) {-        if (yych <= 0xED)-          goto yy780;-        if (yych <= 0xEF)-          goto yy776;-        goto yy777;-      } else {-        if (yych <= 0xF3)-          goto yy778;-        if (yych <= 0xF4)-          goto yy779;-        goto yy732;-      }-    }-  yy764:-    ++p;-    yych = *p;-    if (yybm[0 + yych] & 128) {-      goto yy764;-    }-    if (yych <= 0xEC) {-      if (yych <= 0xC1) {-        if (yych <= 0x00)-          goto yy732;-        if (yych <= '"')-          goto yy773;-        goto yy732;-      } else {-        if (yych <= 0xDF)-          goto yy766;-        if (yych <= 0xE0)-          goto yy767;-        goto yy768;-      }-    } else {-      if (yych <= 0xF0) {-        if (yych <= 0xED)-          goto yy772;-        if (yych <= 0xEF)-          goto yy768;-        goto yy769;-      } else {-        if (yych <= 0xF3)-          goto yy770;-        if (yych <= 0xF4)-          goto yy771;-        goto yy732;-      }-    }-  yy766:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy732;-    if (yych <= 0xBF)-      goto yy764;-    goto yy732;-  yy767:-    ++p;-    yych = *p;-    if (yych <= 0x9F)-      goto yy732;-    if (yych <= 0xBF)-      goto yy766;-    goto yy732;-  yy768:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy732;-    if (yych <= 0xBF)-      goto yy766;-    goto yy732;-  yy769:-    ++p;-    yych = *p;-    if (yych <= 0x8F)-      goto yy732;-    if (yych <= 0xBF)-      goto yy768;-    goto yy732;-  yy770:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy732;-    if (yych <= 0xBF)-      goto yy768;-    goto yy732;-  yy771:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy732;-    if (yych <= 0x8F)-      goto yy768;-    goto yy732;-  yy772:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy732;-    if (yych <= 0x9F)-      goto yy766;-    goto yy732;-  yy773:-    ++p;-    yych = *p;-    if (yych <= ' ') {-      if (yych <= 0x08)-        goto yy732;-      if (yych <= '\r')-        goto yy744;-      if (yych <= 0x1F)-        goto yy732;-      goto yy744;-    } else {-      if (yych <= '/') {-        if (yych <= '.')-          goto yy732;-        goto yy746;-      } else {-        if (yych == '>')-          goto yy738;-        goto yy732;-      }-    }-  yy774:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy732;-    if (yych <= 0xBF)-      goto yy762;-    goto yy732;-  yy775:-    ++p;-    yych = *p;-    if (yych <= 0x9F)-      goto yy732;-    if (yych <= 0xBF)-      goto yy774;-    goto yy732;-  yy776:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy732;-    if (yych <= 0xBF)-      goto yy774;-    goto yy732;-  yy777:-    ++p;-    yych = *p;-    if (yych <= 0x8F)-      goto yy732;-    if (yych <= 0xBF)-      goto yy776;-    goto yy732;-  yy778:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy732;-    if (yych <= 0xBF)-      goto yy776;-    goto yy732;-  yy779:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy732;-    if (yych <= 0x8F)-      goto yy776;-    goto yy732;-  yy780:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy732;-    if (yych <= 0x9F)-      goto yy774;-    goto yy732;-  yy781:-    ++p;-    yych = *p;-    if (yych <= '@') {-      if (yych <= '"') {-        if (yych <= '\r') {-          if (yych <= 0x00)-            goto yy732;-          if (yych <= 0x08)-            goto yy753;-          goto yy781;-        } else {-          if (yych == ' ')-            goto yy781;-          if (yych <= '!')-            goto yy753;-          goto yy732;-        }-      } else {-        if (yych <= ':') {-          if (yych == '\'')-            goto yy732;-          if (yych <= '9')-            goto yy753;-        } else {-          if (yych <= ';')-            goto yy753;-          if (yych <= '=')-            goto yy732;-          if (yych <= '>')-            goto yy738;-          goto yy753;-        }-      }-    } else {-      if (yych <= 0xDF) {-        if (yych <= '`') {-          if (yych <= 'Z')-            goto yy783;-          if (yych <= '^')-            goto yy753;-          if (yych >= '`')-            goto yy732;-        } else {-          if (yych <= 'z')-            goto yy783;-          if (yych <= 0x7F)-            goto yy753;-          if (yych <= 0xC1)-            goto yy732;-          goto yy755;-        }-      } else {-        if (yych <= 0xEF) {-          if (yych <= 0xE0)-            goto yy756;-          if (yych == 0xED)-            goto yy761;-          goto yy757;-        } else {-          if (yych <= 0xF0)-            goto yy758;-          if (yych <= 0xF3)-            goto yy759;-          if (yych <= 0xF4)-            goto yy760;-          goto yy732;-        }-      }-    }-  yy783:-    ++p;-    yych = *p;-    if (yych <= '>') {-      if (yych <= '&') {-        if (yych <= 0x1F) {-          if (yych <= 0x00)-            goto yy732;-          if (yych <= 0x08)-            goto yy753;-          if (yych >= 0x0E)-            goto yy753;-        } else {-          if (yych <= ' ')-            goto yy785;-          if (yych == '"')-            goto yy732;-          goto yy753;-        }-      } else {-        if (yych <= '/') {-          if (yych <= '\'')-            goto yy732;-          if (yych <= ',')-            goto yy753;-          if (yych <= '.')-            goto yy783;-          goto yy753;-        } else {-          if (yych <= ';') {-            if (yych <= ':')-              goto yy783;-            goto yy753;-          } else {-            if (yych <= '<')-              goto yy732;-            if (yych <= '=')-              goto yy751;-            goto yy738;-          }-        }-      }-    } else {-      if (yych <= 0xC1) {-        if (yych <= '_') {-          if (yych <= '@')-            goto yy753;-          if (yych <= 'Z')-            goto yy783;-          if (yych <= '^')-            goto yy753;-          goto yy783;-        } else {-          if (yych <= '`')-            goto yy732;-          if (yych <= 'z')-            goto yy783;-          if (yych <= 0x7F)-            goto yy753;-          goto yy732;-        }-      } else {-        if (yych <= 0xED) {-          if (yych <= 0xDF)-            goto yy755;-          if (yych <= 0xE0)-            goto yy756;-          if (yych <= 0xEC)-            goto yy757;-          goto yy761;-        } else {-          if (yych <= 0xF0) {-            if (yych <= 0xEF)-              goto yy757;-            goto yy758;-          } else {-            if (yych <= 0xF3)-              goto yy759;-            if (yych <= 0xF4)-              goto yy760;-            goto yy732;-          }-        }-      }-    }-  yy785:-    ++p;-    yych = *p;-    if (yych <= '@') {-      if (yych <= '&') {-        if (yych <= 0x1F) {-          if (yych <= 0x00)-            goto yy732;-          if (yych <= 0x08)-            goto yy753;-          if (yych <= '\r')-            goto yy785;-          goto yy753;-        } else {-          if (yych <= ' ')-            goto yy785;-          if (yych == '"')-            goto yy732;-          goto yy753;-        }-      } else {-        if (yych <= ';') {-          if (yych <= '\'')-            goto yy732;-          if (yych == ':')-            goto yy783;-          goto yy753;-        } else {-          if (yych <= '<')-            goto yy732;-          if (yych <= '=')-            goto yy751;-          if (yych <= '>')-            goto yy738;-          goto yy753;-        }-      }-    } else {-      if (yych <= 0xDF) {-        if (yych <= '`') {-          if (yych <= 'Z')-            goto yy783;-          if (yych <= '^')-            goto yy753;-          if (yych <= '_')-            goto yy783;-          goto yy732;-        } else {-          if (yych <= 'z')-            goto yy783;-          if (yych <= 0x7F)-            goto yy753;-          if (yych <= 0xC1)-            goto yy732;-          goto yy755;-        }-      } else {-        if (yych <= 0xEF) {-          if (yych <= 0xE0)-            goto yy756;-          if (yych == 0xED)-            goto yy761;-          goto yy757;-        } else {-          if (yych <= 0xF0)-            goto yy758;-          if (yych <= 0xF3)-            goto yy759;-          if (yych <= 0xF4)-            goto yy760;-          goto yy732;-        }-      }-    }-  yy787:-    ++p;-    yych = *p;-    if (yych <= '@') {-      if (yych <= '"') {-        if (yych <= '\r') {-          if (yych <= 0x00)-            goto yy732;-          if (yych <= 0x08)-            goto yy753;-          goto yy787;-        } else {-          if (yych == ' ')-            goto yy787;-          if (yych <= '!')-            goto yy753;-          goto yy764;-        }-      } else {-        if (yych <= ':') {-          if (yych == '\'')-            goto yy762;-          if (yych <= '9')-            goto yy753;-          goto yy783;-        } else {-          if (yych <= ';')-            goto yy753;-          if (yych <= '=')-            goto yy732;-          if (yych <= '>')-            goto yy738;-          goto yy753;-        }-      }-    } else {-      if (yych <= 0xDF) {-        if (yych <= '`') {-          if (yych <= 'Z')-            goto yy783;-          if (yych <= '^')-            goto yy753;-          if (yych <= '_')-            goto yy783;-          goto yy732;-        } else {-          if (yych <= 'z')-            goto yy783;-          if (yych <= 0x7F)-            goto yy753;-          if (yych <= 0xC1)-            goto yy732;-          goto yy755;-        }-      } else {-        if (yych <= 0xEF) {-          if (yych <= 0xE0)-            goto yy756;-          if (yych == 0xED)-            goto yy761;-          goto yy757;-        } else {-          if (yych <= 0xF0)-            goto yy758;-          if (yych <= 0xF3)-            goto yy759;-          if (yych <= 0xF4)-            goto yy760;-          goto yy732;-        }-      }-    }-  }-}--// 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 yy791;-        if (yych != '\n')-          goto yy793;-      } else {-        if (yych <= '<')-          goto yy794;-        if (yych <= 0x7F)-          goto yy793;-        if (yych >= 0xC2)-          goto yy795;-      }-    } else {-      if (yych <= 0xEF) {-        if (yych <= 0xE0)-          goto yy796;-        if (yych == 0xED)-          goto yy798;-        goto yy797;-      } else {-        if (yych <= 0xF0)-          goto yy799;-        if (yych <= 0xF3)-          goto yy800;-        if (yych <= 0xF4)-          goto yy801;-      }-    }-  yy791:-    ++p;-  yy792 : { return 0; }-  yy793:-    yyaccept = 0;-    yych = *(marker = ++p);-    if (yych <= '\n') {-      if (yych <= 0x00)-        goto yy792;-      if (yych <= '\t')-        goto yy806;-      goto yy792;-    } else {-      if (yych <= 0x7F)-        goto yy806;-      if (yych <= 0xC1)-        goto yy792;-      if (yych <= 0xF4)-        goto yy806;-      goto yy792;-    }-  yy794:-    yyaccept = 0;-    yych = *(marker = ++p);-    if (yych <= '.') {-      if (yych <= 0x00)-        goto yy792;-      if (yych == '\n')-        goto yy792;-      goto yy806;-    } else {-      if (yych <= 0x7F) {-        if (yych <= '/')-          goto yy814;-        goto yy806;-      } else {-        if (yych <= 0xC1)-          goto yy792;-        if (yych <= 0xF4)-          goto yy806;-        goto yy792;-      }-    }-  yy795:-    yyaccept = 0;-    yych = *(marker = ++p);-    if (yych <= 0x7F)-      goto yy792;-    if (yych <= 0xBF)-      goto yy805;-    goto yy792;-  yy796:-    yyaccept = 0;-    yych = *(marker = ++p);-    if (yych <= 0x9F)-      goto yy792;-    if (yych <= 0xBF)-      goto yy804;-    goto yy792;-  yy797:-    yyaccept = 0;-    yych = *(marker = ++p);-    if (yych <= 0x7F)-      goto yy792;-    if (yych <= 0xBF)-      goto yy804;-    goto yy792;-  yy798:-    yyaccept = 0;-    yych = *(marker = ++p);-    if (yych <= 0x7F)-      goto yy792;-    if (yych <= 0x9F)-      goto yy804;-    goto yy792;-  yy799:-    yyaccept = 0;-    yych = *(marker = ++p);-    if (yych <= 0x8F)-      goto yy792;-    if (yych <= 0xBF)-      goto yy802;-    goto yy792;-  yy800:-    yyaccept = 0;-    yych = *(marker = ++p);-    if (yych <= 0x7F)-      goto yy792;-    if (yych <= 0xBF)-      goto yy802;-    goto yy792;-  yy801:-    yyaccept = 0;-    yych = *(marker = ++p);-    if (yych <= 0x7F)-      goto yy792;-    if (yych >= 0x90)-      goto yy792;-  yy802:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy803;-    if (yych <= 0xBF)-      goto yy804;-  yy803:-    p = marker;-    if (yyaccept == 0) {-      goto yy792;-    } else {-      goto yy820;-    }-  yy804:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy803;-    if (yych >= 0xC0)-      goto yy803;-  yy805:-    ++p;-    yych = *p;-  yy806:-    if (yybm[0 + yych] & 64) {-      goto yy805;-    }-    if (yych <= 0xEC) {-      if (yych <= 0xC1) {-        if (yych <= '\n')-          goto yy803;-        if (yych >= '=')-          goto yy803;-      } else {-        if (yych <= 0xDF)-          goto yy804;-        if (yych <= 0xE0)-          goto yy809;-        goto yy802;-      }-    } else {-      if (yych <= 0xF0) {-        if (yych <= 0xED)-          goto yy813;-        if (yych <= 0xEF)-          goto yy802;-        goto yy810;-      } else {-        if (yych <= 0xF3)-          goto yy811;-        if (yych <= 0xF4)-          goto yy812;-        goto yy803;-      }-    }-  yy807:-    ++p;-    yych = *p;-    if (yybm[0 + yych] & 128) {-      goto yy807;-    }-    if (yych <= 0xDF) {-      if (yych <= '.') {-        if (yych <= 0x00)-          goto yy803;-        if (yych == '\n')-          goto yy803;-        goto yy805;-      } else {-        if (yych <= '/')-          goto yy814;-        if (yych <= 0x7F)-          goto yy805;-        if (yych <= 0xC1)-          goto yy803;-        goto yy804;-      }-    } else {-      if (yych <= 0xEF) {-        if (yych <= 0xE0)-          goto yy809;-        if (yych == 0xED)-          goto yy813;-        goto yy802;-      } else {-        if (yych <= 0xF0)-          goto yy810;-        if (yych <= 0xF3)-          goto yy811;-        if (yych <= 0xF4)-          goto yy812;-        goto yy803;-      }-    }-  yy809:-    ++p;-    yych = *p;-    if (yych <= 0x9F)-      goto yy803;-    if (yych <= 0xBF)-      goto yy804;-    goto yy803;-  yy810:-    ++p;-    yych = *p;-    if (yych <= 0x8F)-      goto yy803;-    if (yych <= 0xBF)-      goto yy802;-    goto yy803;-  yy811:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy803;-    if (yych <= 0xBF)-      goto yy802;-    goto yy803;-  yy812:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy803;-    if (yych <= 0x8F)-      goto yy802;-    goto yy803;-  yy813:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy803;-    if (yych <= 0x9F)-      goto yy804;-    goto yy803;-  yy814:-    ++p;-    yych = *p;-    if (yybm[0 + yych] & 128) {-      goto yy807;-    }-    if (yych <= 's') {-      if (yych <= 'P') {-        if (yych <= '\t') {-          if (yych <= 0x00)-            goto yy803;-          goto yy805;-        } else {-          if (yych <= '\n')-            goto yy803;-          if (yych <= 'O')-            goto yy805;-          goto yy816;-        }-      } else {-        if (yych <= 'o') {-          if (yych != 'S')-            goto yy805;-        } else {-          if (yych <= 'p')-            goto yy816;-          if (yych <= 'r')-            goto yy805;-        }-      }-    } else {-      if (yych <= 0xEC) {-        if (yych <= 0xC1) {-          if (yych <= 0x7F)-            goto yy805;-          goto yy803;-        } else {-          if (yych <= 0xDF)-            goto yy804;-          if (yych <= 0xE0)-            goto yy809;-          goto yy802;-        }-      } else {-        if (yych <= 0xF0) {-          if (yych <= 0xED)-            goto yy813;-          if (yych <= 0xEF)-            goto yy802;-          goto yy810;-        } else {-          if (yych <= 0xF3)-            goto yy811;-          if (yych <= 0xF4)-            goto yy812;-          goto yy803;-        }-      }-    }-    ++p;-    yych = *p;-    if (yybm[0 + yych] & 128) {-      goto yy807;-    }-    if (yych <= 't') {-      if (yych <= 'C') {-        if (yych <= '\t') {-          if (yych <= 0x00)-            goto yy803;-          goto yy805;-        } else {-          if (yych <= '\n')-            goto yy803;-          if (yych <= 'B')-            goto yy805;-          goto yy821;-        }-      } else {-        if (yych <= 'b') {-          if (yych == 'T')-            goto yy822;-          goto yy805;-        } else {-          if (yych <= 'c')-            goto yy821;-          if (yych <= 's')-            goto yy805;-          goto yy822;-        }-      }-    } else {-      if (yych <= 0xEC) {-        if (yych <= 0xC1) {-          if (yych <= 0x7F)-            goto yy805;-          goto yy803;-        } else {-          if (yych <= 0xDF)-            goto yy804;-          if (yych <= 0xE0)-            goto yy809;-          goto yy802;-        }-      } else {-        if (yych <= 0xF0) {-          if (yych <= 0xED)-            goto yy813;-          if (yych <= 0xEF)-            goto yy802;-          goto yy810;-        } else {-          if (yych <= 0xF3)-            goto yy811;-          if (yych <= 0xF4)-            goto yy812;-          goto yy803;-        }-      }-    }-  yy816:-    ++p;-    yych = *p;-    if (yybm[0 + yych] & 128) {-      goto yy807;-    }-    if (yych <= 0xC1) {-      if (yych <= 'Q') {-        if (yych <= 0x00)-          goto yy803;-        if (yych == '\n')-          goto yy803;-        goto yy805;-      } else {-        if (yych <= 'q') {-          if (yych >= 'S')-            goto yy805;-        } else {-          if (yych <= 'r')-            goto yy817;-          if (yych <= 0x7F)-            goto yy805;-          goto yy803;-        }-      }-    } else {-      if (yych <= 0xED) {-        if (yych <= 0xDF)-          goto yy804;-        if (yych <= 0xE0)-          goto yy809;-        if (yych <= 0xEC)-          goto yy802;-        goto yy813;-      } else {-        if (yych <= 0xF0) {-          if (yych <= 0xEF)-            goto yy802;-          goto yy810;-        } else {-          if (yych <= 0xF3)-            goto yy811;-          if (yych <= 0xF4)-            goto yy812;-          goto yy803;-        }-      }-    }-  yy817:-    ++p;-    yych = *p;-    if (yybm[0 + yych] & 128) {-      goto yy807;-    }-    if (yych <= 0xC1) {-      if (yych <= 'D') {-        if (yych <= 0x00)-          goto yy803;-        if (yych == '\n')-          goto yy803;-        goto yy805;-      } else {-        if (yych <= 'd') {-          if (yych >= 'F')-            goto yy805;-        } else {-          if (yych <= 'e')-            goto yy818;-          if (yych <= 0x7F)-            goto yy805;-          goto yy803;-        }-      }-    } else {-      if (yych <= 0xED) {-        if (yych <= 0xDF)-          goto yy804;-        if (yych <= 0xE0)-          goto yy809;-        if (yych <= 0xEC)-          goto yy802;-        goto yy813;-      } else {-        if (yych <= 0xF0) {-          if (yych <= 0xEF)-            goto yy802;-          goto yy810;-        } else {-          if (yych <= 0xF3)-            goto yy811;-          if (yych <= 0xF4)-            goto yy812;-          goto yy803;-        }-      }-    }-  yy818:-    ++p;-    yych = *p;-    if (yybm[0 + yych] & 128) {-      goto yy807;-    }-    if (yych <= 0xDF) {-      if (yych <= '=') {-        if (yych <= 0x00)-          goto yy803;-        if (yych == '\n')-          goto yy803;-        goto yy805;-      } else {-        if (yych <= '>')-          goto yy819;-        if (yych <= 0x7F)-          goto yy805;-        if (yych <= 0xC1)-          goto yy803;-        goto yy804;-      }-    } else {-      if (yych <= 0xEF) {-        if (yych <= 0xE0)-          goto yy809;-        if (yych == 0xED)-          goto yy813;-        goto yy802;-      } else {-        if (yych <= 0xF0)-          goto yy810;-        if (yych <= 0xF3)-          goto yy811;-        if (yych <= 0xF4)-          goto yy812;-        goto yy803;-      }-    }-  yy819:-    yyaccept = 1;-    marker = ++p;-    yych = *p;-    if (yybm[0 + yych] & 64) {-      goto yy805;-    }-    if (yych <= 0xEC) {-      if (yych <= 0xC1) {-        if (yych <= '\n')-          goto yy820;-        if (yych <= '<')-          goto yy807;-      } else {-        if (yych <= 0xDF)-          goto yy804;-        if (yych <= 0xE0)-          goto yy809;-        goto yy802;-      }-    } else {-      if (yych <= 0xF0) {-        if (yych <= 0xED)-          goto yy813;-        if (yych <= 0xEF)-          goto yy802;-        goto yy810;-      } else {-        if (yych <= 0xF3)-          goto yy811;-        if (yych <= 0xF4)-          goto yy812;-      }-    }-  yy820 : { return (bufsize_t)(p - start); }-  yy821:-    ++p;-    yych = *p;-    if (yybm[0 + yych] & 128) {-      goto yy807;-    }-    if (yych <= 0xC1) {-      if (yych <= 'Q') {-        if (yych <= 0x00)-          goto yy803;-        if (yych == '\n')-          goto yy803;-        goto yy805;-      } else {-        if (yych <= 'q') {-          if (yych <= 'R')-            goto yy825;-          goto yy805;-        } else {-          if (yych <= 'r')-            goto yy825;-          if (yych <= 0x7F)-            goto yy805;-          goto yy803;-        }-      }-    } else {-      if (yych <= 0xED) {-        if (yych <= 0xDF)-          goto yy804;-        if (yych <= 0xE0)-          goto yy809;-        if (yych <= 0xEC)-          goto yy802;-        goto yy813;-      } else {-        if (yych <= 0xF0) {-          if (yych <= 0xEF)-            goto yy802;-          goto yy810;-        } else {-          if (yych <= 0xF3)-            goto yy811;-          if (yych <= 0xF4)-            goto yy812;-          goto yy803;-        }-      }-    }-  yy822:-    ++p;-    yych = *p;-    if (yybm[0 + yych] & 128) {-      goto yy807;-    }-    if (yych <= 0xC1) {-      if (yych <= 'X') {-        if (yych <= 0x00)-          goto yy803;-        if (yych == '\n')-          goto yy803;-        goto yy805;-      } else {-        if (yych <= 'x') {-          if (yych >= 'Z')-            goto yy805;-        } else {-          if (yych <= 'y')-            goto yy823;-          if (yych <= 0x7F)-            goto yy805;-          goto yy803;-        }-      }-    } else {-      if (yych <= 0xED) {-        if (yych <= 0xDF)-          goto yy804;-        if (yych <= 0xE0)-          goto yy809;-        if (yych <= 0xEC)-          goto yy802;-        goto yy813;-      } else {-        if (yych <= 0xF0) {-          if (yych <= 0xEF)-            goto yy802;-          goto yy810;-        } else {-          if (yych <= 0xF3)-            goto yy811;-          if (yych <= 0xF4)-            goto yy812;-          goto yy803;-        }-      }-    }-  yy823:-    ++p;-    yych = *p;-    if (yybm[0 + yych] & 128) {-      goto yy807;-    }-    if (yych <= 0xC1) {-      if (yych <= 'K') {-        if (yych <= 0x00)-          goto yy803;-        if (yych == '\n')-          goto yy803;-        goto yy805;-      } else {-        if (yych <= 'k') {-          if (yych >= 'M')-            goto yy805;-        } else {-          if (yych <= 'l')-            goto yy824;-          if (yych <= 0x7F)-            goto yy805;-          goto yy803;-        }-      }-    } else {-      if (yych <= 0xED) {-        if (yych <= 0xDF)-          goto yy804;-        if (yych <= 0xE0)-          goto yy809;-        if (yych <= 0xEC)-          goto yy802;-        goto yy813;-      } else {-        if (yych <= 0xF0) {-          if (yych <= 0xEF)-            goto yy802;-          goto yy810;-        } else {-          if (yych <= 0xF3)-            goto yy811;-          if (yych <= 0xF4)-            goto yy812;-          goto yy803;-        }-      }-    }-  yy824:-    ++p;-    yych = *p;-    if (yybm[0 + yych] & 128) {-      goto yy807;-    }-    if (yych <= 0xC1) {-      if (yych <= 'D') {-        if (yych <= 0x00)-          goto yy803;-        if (yych == '\n')-          goto yy803;-        goto yy805;-      } else {-        if (yych <= 'd') {-          if (yych <= 'E')-            goto yy818;-          goto yy805;-        } else {-          if (yych <= 'e')-            goto yy818;-          if (yych <= 0x7F)-            goto yy805;-          goto yy803;-        }-      }-    } else {-      if (yych <= 0xED) {-        if (yych <= 0xDF)-          goto yy804;-        if (yych <= 0xE0)-          goto yy809;-        if (yych <= 0xEC)-          goto yy802;-        goto yy813;-      } else {-        if (yych <= 0xF0) {-          if (yych <= 0xEF)-            goto yy802;-          goto yy810;-        } else {-          if (yych <= 0xF3)-            goto yy811;-          if (yych <= 0xF4)-            goto yy812;-          goto yy803;-        }-      }-    }-  yy825:-    ++p;-    yych = *p;-    if (yybm[0 + yych] & 128) {-      goto yy807;-    }-    if (yych <= 0xC1) {-      if (yych <= 'H') {-        if (yych <= 0x00)-          goto yy803;-        if (yych == '\n')-          goto yy803;-        goto yy805;-      } else {-        if (yych <= 'h') {-          if (yych >= 'J')-            goto yy805;-        } else {-          if (yych <= 'i')-            goto yy826;-          if (yych <= 0x7F)-            goto yy805;-          goto yy803;-        }-      }-    } else {-      if (yych <= 0xED) {-        if (yych <= 0xDF)-          goto yy804;-        if (yych <= 0xE0)-          goto yy809;-        if (yych <= 0xEC)-          goto yy802;-        goto yy813;-      } else {-        if (yych <= 0xF0) {-          if (yych <= 0xEF)-            goto yy802;-          goto yy810;-        } else {-          if (yych <= 0xF3)-            goto yy811;-          if (yych <= 0xF4)-            goto yy812;-          goto yy803;-        }-      }-    }-  yy826:-    ++p;-    yych = *p;-    if (yybm[0 + yych] & 128) {-      goto yy807;-    }-    if (yych <= 0xC1) {-      if (yych <= 'O') {-        if (yych <= 0x00)-          goto yy803;-        if (yych == '\n')-          goto yy803;-        goto yy805;-      } else {-        if (yych <= 'o') {-          if (yych >= 'Q')-            goto yy805;-        } else {-          if (yych <= 'p')-            goto yy827;-          if (yych <= 0x7F)-            goto yy805;-          goto yy803;-        }-      }-    } else {-      if (yych <= 0xED) {-        if (yych <= 0xDF)-          goto yy804;-        if (yych <= 0xE0)-          goto yy809;-        if (yych <= 0xEC)-          goto yy802;-        goto yy813;-      } else {-        if (yych <= 0xF0) {-          if (yych <= 0xEF)-            goto yy802;-          goto yy810;-        } else {-          if (yych <= 0xF3)-            goto yy811;-          if (yych <= 0xF4)-            goto yy812;-          goto yy803;-        }-      }-    }-  yy827:-    ++p;-    yych = *p;-    if (yybm[0 + yych] & 128) {-      goto yy807;-    }-    if (yych <= 0xC1) {-      if (yych <= 'S') {-        if (yych <= 0x00)-          goto yy803;-        if (yych == '\n')-          goto yy803;-        goto yy805;-      } else {-        if (yych <= 's') {-          if (yych <= 'T')-            goto yy818;-          goto yy805;-        } else {-          if (yych <= 't')-            goto yy818;-          if (yych <= 0x7F)-            goto yy805;-          goto yy803;-        }-      }-    } else {-      if (yych <= 0xED) {-        if (yych <= 0xDF)-          goto yy804;-        if (yych <= 0xE0)-          goto yy809;-        if (yych <= 0xEC)-          goto yy802;-        goto yy813;-      } else {-        if (yych <= 0xF0) {-          if (yych <= 0xEF)-            goto yy802;-          goto yy810;-        } else {-          if (yych <= 0xF3)-            goto yy811;-          if (yych <= 0xF4)-            goto yy812;-          goto yy803;-        }-      }-    }-  }-}--// 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 yy830;-        if (yych != '\n')-          goto yy832;-      } else {-        if (yych <= '-')-          goto yy833;-        if (yych <= 0x7F)-          goto yy832;-        if (yych >= 0xC2)-          goto yy834;-      }-    } else {-      if (yych <= 0xEF) {-        if (yych <= 0xE0)-          goto yy835;-        if (yych == 0xED)-          goto yy837;-        goto yy836;-      } else {-        if (yych <= 0xF0)-          goto yy838;-        if (yych <= 0xF3)-          goto yy839;-        if (yych <= 0xF4)-          goto yy840;-      }-    }-  yy830:-    ++p;-  yy831 : { return 0; }-  yy832:-    yyaccept = 0;-    yych = *(marker = ++p);-    if (yych <= '\n') {-      if (yych <= 0x00)-        goto yy831;-      if (yych <= '\t')-        goto yy845;-      goto yy831;-    } else {-      if (yych <= 0x7F)-        goto yy845;-      if (yych <= 0xC1)-        goto yy831;-      if (yych <= 0xF4)-        goto yy845;-      goto yy831;-    }-  yy833:-    yyaccept = 0;-    yych = *(marker = ++p);-    if (yybm[0 + yych] & 128) {-      goto yy852;-    }-    if (yych <= '\n') {-      if (yych <= 0x00)-        goto yy831;-      if (yych <= '\t')-        goto yy845;-      goto yy831;-    } else {-      if (yych <= 0x7F)-        goto yy845;-      if (yych <= 0xC1)-        goto yy831;-      if (yych <= 0xF4)-        goto yy845;-      goto yy831;-    }-  yy834:-    yyaccept = 0;-    yych = *(marker = ++p);-    if (yych <= 0x7F)-      goto yy831;-    if (yych <= 0xBF)-      goto yy844;-    goto yy831;-  yy835:-    yyaccept = 0;-    yych = *(marker = ++p);-    if (yych <= 0x9F)-      goto yy831;-    if (yych <= 0xBF)-      goto yy843;-    goto yy831;-  yy836:-    yyaccept = 0;-    yych = *(marker = ++p);-    if (yych <= 0x7F)-      goto yy831;-    if (yych <= 0xBF)-      goto yy843;-    goto yy831;-  yy837:-    yyaccept = 0;-    yych = *(marker = ++p);-    if (yych <= 0x7F)-      goto yy831;-    if (yych <= 0x9F)-      goto yy843;-    goto yy831;-  yy838:-    yyaccept = 0;-    yych = *(marker = ++p);-    if (yych <= 0x8F)-      goto yy831;-    if (yych <= 0xBF)-      goto yy841;-    goto yy831;-  yy839:-    yyaccept = 0;-    yych = *(marker = ++p);-    if (yych <= 0x7F)-      goto yy831;-    if (yych <= 0xBF)-      goto yy841;-    goto yy831;-  yy840:-    yyaccept = 0;-    yych = *(marker = ++p);-    if (yych <= 0x7F)-      goto yy831;-    if (yych >= 0x90)-      goto yy831;-  yy841:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy842;-    if (yych <= 0xBF)-      goto yy843;-  yy842:-    p = marker;-    if (yyaccept == 0) {-      goto yy831;-    } else {-      goto yy855;-    }-  yy843:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy842;-    if (yych >= 0xC0)-      goto yy842;-  yy844:-    ++p;-    yych = *p;-  yy845:-    if (yybm[0 + yych] & 64) {-      goto yy844;-    }-    if (yych <= 0xEC) {-      if (yych <= 0xC1) {-        if (yych <= '\n')-          goto yy842;-        if (yych >= '.')-          goto yy842;-      } else {-        if (yych <= 0xDF)-          goto yy843;-        if (yych <= 0xE0)-          goto yy847;-        goto yy841;-      }-    } else {-      if (yych <= 0xF0) {-        if (yych <= 0xED)-          goto yy851;-        if (yych <= 0xEF)-          goto yy841;-        goto yy848;-      } else {-        if (yych <= 0xF3)-          goto yy849;-        if (yych <= 0xF4)-          goto yy850;-        goto yy842;-      }-    }-  yy846:-    ++p;-    yych = *p;-    if (yybm[0 + yych] & 64) {-      goto yy844;-    }-    if (yych <= 0xEC) {-      if (yych <= 0xC1) {-        if (yych <= '\n')-          goto yy842;-        if (yych <= '-')-          goto yy852;-        goto yy842;-      } else {-        if (yych <= 0xDF)-          goto yy843;-        if (yych >= 0xE1)-          goto yy841;-      }-    } else {-      if (yych <= 0xF0) {-        if (yych <= 0xED)-          goto yy851;-        if (yych <= 0xEF)-          goto yy841;-        goto yy848;-      } else {-        if (yych <= 0xF3)-          goto yy849;-        if (yych <= 0xF4)-          goto yy850;-        goto yy842;-      }-    }-  yy847:-    ++p;-    yych = *p;-    if (yych <= 0x9F)-      goto yy842;-    if (yych <= 0xBF)-      goto yy843;-    goto yy842;-  yy848:-    ++p;-    yych = *p;-    if (yych <= 0x8F)-      goto yy842;-    if (yych <= 0xBF)-      goto yy841;-    goto yy842;-  yy849:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy842;-    if (yych <= 0xBF)-      goto yy841;-    goto yy842;-  yy850:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy842;-    if (yych <= 0x8F)-      goto yy841;-    goto yy842;-  yy851:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy842;-    if (yych <= 0x9F)-      goto yy843;-    goto yy842;-  yy852:-    ++p;-    yych = *p;-    if (yybm[0 + yych] & 128) {-      goto yy852;-    }-    if (yych <= 0xDF) {-      if (yych <= '=') {-        if (yych <= 0x00)-          goto yy842;-        if (yych == '\n')-          goto yy842;-        goto yy844;-      } else {-        if (yych <= '>')-          goto yy854;-        if (yych <= 0x7F)-          goto yy844;-        if (yych <= 0xC1)-          goto yy842;-        goto yy843;-      }-    } else {-      if (yych <= 0xEF) {-        if (yych <= 0xE0)-          goto yy847;-        if (yych == 0xED)-          goto yy851;-        goto yy841;-      } else {-        if (yych <= 0xF0)-          goto yy848;-        if (yych <= 0xF3)-          goto yy849;-        if (yych <= 0xF4)-          goto yy850;-        goto yy842;-      }-    }-  yy854:-    yyaccept = 1;-    marker = ++p;-    yych = *p;-    if (yybm[0 + yych] & 64) {-      goto yy844;-    }-    if (yych <= 0xEC) {-      if (yych <= 0xC1) {-        if (yych <= '\n')-          goto yy855;-        if (yych <= '-')-          goto yy846;-      } else {-        if (yych <= 0xDF)-          goto yy843;-        if (yych <= 0xE0)-          goto yy847;-        goto yy841;-      }-    } else {-      if (yych <= 0xF0) {-        if (yych <= 0xED)-          goto yy851;-        if (yych <= 0xEF)-          goto yy841;-        goto yy848;-      } else {-        if (yych <= 0xF3)-          goto yy849;-        if (yych <= 0xF4)-          goto yy850;-      }-    }-  yy855 : { 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 yy858;-        if (yych != '\n')-          goto yy860;-      } else {-        if (yych <= '?')-          goto yy861;-        if (yych <= 0x7F)-          goto yy860;-        if (yych >= 0xC2)-          goto yy862;-      }-    } else {-      if (yych <= 0xEF) {-        if (yych <= 0xE0)-          goto yy863;-        if (yych == 0xED)-          goto yy865;-        goto yy864;-      } else {-        if (yych <= 0xF0)-          goto yy866;-        if (yych <= 0xF3)-          goto yy867;-        if (yych <= 0xF4)-          goto yy868;-      }-    }-  yy858:-    ++p;-  yy859 : { return 0; }-  yy860:-    yyaccept = 0;-    yych = *(marker = ++p);-    if (yych <= '\n') {-      if (yych <= 0x00)-        goto yy859;-      if (yych <= '\t')-        goto yy873;-      goto yy859;-    } else {-      if (yych <= 0x7F)-        goto yy873;-      if (yych <= 0xC1)-        goto yy859;-      if (yych <= 0xF4)-        goto yy873;-      goto yy859;-    }-  yy861:-    yyaccept = 0;-    yych = *(marker = ++p);-    if (yych <= '=') {-      if (yych <= 0x00)-        goto yy859;-      if (yych == '\n')-        goto yy859;-      goto yy873;-    } else {-      if (yych <= 0x7F) {-        if (yych <= '>')-          goto yy881;-        goto yy873;-      } else {-        if (yych <= 0xC1)-          goto yy859;-        if (yych <= 0xF4)-          goto yy873;-        goto yy859;-      }-    }-  yy862:-    yyaccept = 0;-    yych = *(marker = ++p);-    if (yych <= 0x7F)-      goto yy859;-    if (yych <= 0xBF)-      goto yy872;-    goto yy859;-  yy863:-    yyaccept = 0;-    yych = *(marker = ++p);-    if (yych <= 0x9F)-      goto yy859;-    if (yych <= 0xBF)-      goto yy871;-    goto yy859;-  yy864:-    yyaccept = 0;-    yych = *(marker = ++p);-    if (yych <= 0x7F)-      goto yy859;-    if (yych <= 0xBF)-      goto yy871;-    goto yy859;-  yy865:-    yyaccept = 0;-    yych = *(marker = ++p);-    if (yych <= 0x7F)-      goto yy859;-    if (yych <= 0x9F)-      goto yy871;-    goto yy859;-  yy866:-    yyaccept = 0;-    yych = *(marker = ++p);-    if (yych <= 0x8F)-      goto yy859;-    if (yych <= 0xBF)-      goto yy869;-    goto yy859;-  yy867:-    yyaccept = 0;-    yych = *(marker = ++p);-    if (yych <= 0x7F)-      goto yy859;-    if (yych <= 0xBF)-      goto yy869;-    goto yy859;-  yy868:-    yyaccept = 0;-    yych = *(marker = ++p);-    if (yych <= 0x7F)-      goto yy859;-    if (yych >= 0x90)-      goto yy859;-  yy869:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy870;-    if (yych <= 0xBF)-      goto yy871;-  yy870:-    p = marker;-    if (yyaccept == 0) {-      goto yy859;-    } else {-      goto yy882;-    }-  yy871:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy870;-    if (yych >= 0xC0)-      goto yy870;-  yy872:-    ++p;-    yych = *p;-  yy873:-    if (yybm[0 + yych] & 64) {-      goto yy872;-    }-    if (yych <= 0xEC) {-      if (yych <= 0xC1) {-        if (yych <= '\n')-          goto yy870;-        if (yych >= '@')-          goto yy870;-      } else {-        if (yych <= 0xDF)-          goto yy871;-        if (yych <= 0xE0)-          goto yy876;-        goto yy869;-      }-    } else {-      if (yych <= 0xF0) {-        if (yych <= 0xED)-          goto yy880;-        if (yych <= 0xEF)-          goto yy869;-        goto yy877;-      } else {-        if (yych <= 0xF3)-          goto yy878;-        if (yych <= 0xF4)-          goto yy879;-        goto yy870;-      }-    }-  yy874:-    ++p;-    yych = *p;-    if (yybm[0 + yych] & 128) {-      goto yy874;-    }-    if (yych <= 0xDF) {-      if (yych <= '=') {-        if (yych <= 0x00)-          goto yy870;-        if (yych == '\n')-          goto yy870;-        goto yy872;-      } else {-        if (yych <= '>')-          goto yy881;-        if (yych <= 0x7F)-          goto yy872;-        if (yych <= 0xC1)-          goto yy870;-        goto yy871;-      }-    } else {-      if (yych <= 0xEF) {-        if (yych <= 0xE0)-          goto yy876;-        if (yych == 0xED)-          goto yy880;-        goto yy869;-      } else {-        if (yych <= 0xF0)-          goto yy877;-        if (yych <= 0xF3)-          goto yy878;-        if (yych <= 0xF4)-          goto yy879;-        goto yy870;-      }-    }-  yy876:-    ++p;-    yych = *p;-    if (yych <= 0x9F)-      goto yy870;-    if (yych <= 0xBF)-      goto yy871;-    goto yy870;-  yy877:-    ++p;-    yych = *p;-    if (yych <= 0x8F)-      goto yy870;-    if (yych <= 0xBF)-      goto yy869;-    goto yy870;-  yy878:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy870;-    if (yych <= 0xBF)-      goto yy869;-    goto yy870;-  yy879:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy870;-    if (yych <= 0x8F)-      goto yy869;-    goto yy870;-  yy880:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy870;-    if (yych <= 0x9F)-      goto yy871;-    goto yy870;-  yy881:-    yyaccept = 1;-    marker = ++p;-    yych = *p;-    if (yybm[0 + yych] & 64) {-      goto yy872;-    }-    if (yych <= 0xEC) {-      if (yych <= 0xC1) {-        if (yych <= '\n')-          goto yy882;-        if (yych <= '?')-          goto yy874;-      } else {-        if (yych <= 0xDF)-          goto yy871;-        if (yych <= 0xE0)-          goto yy876;-        goto yy869;-      }-    } else {-      if (yych <= 0xF0) {-        if (yych <= 0xED)-          goto yy880;-        if (yych <= 0xEF)-          goto yy869;-        goto yy877;-      } else {-        if (yych <= 0xF3)-          goto yy878;-        if (yych <= 0xF4)-          goto yy879;-      }-    }-  yy882 : { return (bufsize_t)(p - start); }-  }-}--// Try to match an HTML block end line of type 4-bufsize_t _scan_html_block_end_4(const unsigned char *p) {-  const unsigned char *marker = NULL;-  const unsigned char *start = p;--  {-    unsigned char yych;-    unsigned int yyaccept = 0;-    static const unsigned char yybm[] = {-        0,  64, 64, 64, 64, 64, 64, 64, 64,  64, 0,  64, 64, 64, 64, 64, 64, 64,-        64, 64, 64, 64, 64, 64, 64, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64, 64,-        64, 64, 64, 64, 64, 64, 64, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64, 64,-        64, 64, 64, 64, 64, 64, 64, 64, 128, 64, 64, 64, 64, 64, 64, 64, 64, 64,-        64, 64, 64, 64, 64, 64, 64, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64, 64,-        64, 64, 64, 64, 64, 64, 64, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64, 64,-        64, 64, 64, 64, 64, 64, 64, 64, 64,  64, 64, 64, 64, 64, 64, 64, 64, 64,-        64, 64, 0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,-        0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,-        0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,-        0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,-        0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,-        0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,-        0,  0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,  0,-        0,  0,  0,  0,-    };-    yych = *p;-    if (yych <= 0xDF) {-      if (yych <= '=') {-        if (yych <= 0x00)-          goto yy885;-        if (yych != '\n')-          goto yy887;-      } else {-        if (yych <= '>')-          goto yy888;-        if (yych <= 0x7F)-          goto yy887;-        if (yych >= 0xC2)-          goto yy890;-      }-    } else {-      if (yych <= 0xEF) {-        if (yych <= 0xE0)-          goto yy891;-        if (yych == 0xED)-          goto yy893;-        goto yy892;-      } else {-        if (yych <= 0xF0)-          goto yy894;-        if (yych <= 0xF3)-          goto yy895;-        if (yych <= 0xF4)-          goto yy896;-      }-    }-  yy885:-    ++p;-  yy886 : { return 0; }-  yy887:-    yyaccept = 0;-    yych = *(marker = ++p);-    if (yych <= '\n') {-      if (yych <= 0x00)-        goto yy886;-      if (yych <= '\t')-        goto yy901;-      goto yy886;-    } else {-      if (yych <= 0x7F)-        goto yy901;-      if (yych <= 0xC1)-        goto yy886;-      if (yych <= 0xF4)-        goto yy901;-      goto yy886;-    }-  yy888:-    yyaccept = 1;-    yych = *(marker = ++p);-    if (yych <= '\n') {-      if (yych <= 0x00)-        goto yy889;-      if (yych <= '\t')-        goto yy901;-    } else {-      if (yych <= 0x7F)-        goto yy901;-      if (yych <= 0xC1)-        goto yy889;-      if (yych <= 0xF4)-        goto yy901;-    }-  yy889 : { return (bufsize_t)(p - start); }-  yy890:-    yyaccept = 0;-    yych = *(marker = ++p);-    if (yych <= 0x7F)-      goto yy886;-    if (yych <= 0xBF)-      goto yy900;-    goto yy886;-  yy891:-    yyaccept = 0;-    yych = *(marker = ++p);-    if (yych <= 0x9F)-      goto yy886;-    if (yych <= 0xBF)-      goto yy899;-    goto yy886;-  yy892:-    yyaccept = 0;-    yych = *(marker = ++p);-    if (yych <= 0x7F)-      goto yy886;-    if (yych <= 0xBF)-      goto yy899;-    goto yy886;-  yy893:-    yyaccept = 0;-    yych = *(marker = ++p);-    if (yych <= 0x7F)-      goto yy886;-    if (yych <= 0x9F)-      goto yy899;-    goto yy886;-  yy894:-    yyaccept = 0;-    yych = *(marker = ++p);-    if (yych <= 0x8F)-      goto yy886;-    if (yych <= 0xBF)-      goto yy897;-    goto yy886;-  yy895:-    yyaccept = 0;-    yych = *(marker = ++p);-    if (yych <= 0x7F)-      goto yy886;-    if (yych <= 0xBF)-      goto yy897;-    goto yy886;-  yy896:-    yyaccept = 0;-    yych = *(marker = ++p);-    if (yych <= 0x7F)-      goto yy886;-    if (yych >= 0x90)-      goto yy886;-  yy897:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy898;-    if (yych <= 0xBF)-      goto yy899;-  yy898:-    p = marker;-    if (yyaccept == 0) {-      goto yy886;-    } else {-      goto yy889;-    }-  yy899:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy898;-    if (yych >= 0xC0)-      goto yy898;-  yy900:-    ++p;-    yych = *p;-  yy901:-    if (yybm[0 + yych] & 64) {-      goto yy900;-    }-    if (yych <= 0xEC) {-      if (yych <= 0xC1) {-        if (yych <= '\n')-          goto yy898;-        if (yych >= '?')-          goto yy898;-      } else {-        if (yych <= 0xDF)-          goto yy899;-        if (yych <= 0xE0)-          goto yy904;-        goto yy897;-      }-    } else {-      if (yych <= 0xF0) {-        if (yych <= 0xED)-          goto yy908;-        if (yych <= 0xEF)-          goto yy897;-        goto yy905;-      } else {-        if (yych <= 0xF3)-          goto yy906;-        if (yych <= 0xF4)-          goto yy907;-        goto yy898;-      }-    }-  yy902:-    yyaccept = 1;-    marker = ++p;-    yych = *p;-    if (yybm[0 + yych] & 64) {-      goto yy900;-    }-    if (yych <= 0xEC) {-      if (yych <= 0xC1) {-        if (yych <= '\n')-          goto yy889;-        if (yych <= '>')-          goto yy902;-        goto yy889;-      } else {-        if (yych <= 0xDF)-          goto yy899;-        if (yych >= 0xE1)-          goto yy897;-      }-    } else {-      if (yych <= 0xF0) {-        if (yych <= 0xED)-          goto yy908;-        if (yych <= 0xEF)-          goto yy897;-        goto yy905;-      } else {-        if (yych <= 0xF3)-          goto yy906;-        if (yych <= 0xF4)-          goto yy907;-        goto yy889;-      }-    }-  yy904:-    ++p;-    yych = *p;-    if (yych <= 0x9F)-      goto yy898;-    if (yych <= 0xBF)-      goto yy899;-    goto yy898;-  yy905:-    ++p;-    yych = *p;-    if (yych <= 0x8F)-      goto yy898;-    if (yych <= 0xBF)-      goto yy897;-    goto yy898;-  yy906:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy898;-    if (yych <= 0xBF)-      goto yy897;-    goto yy898;-  yy907:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy898;-    if (yych <= 0x8F)-      goto yy897;-    goto yy898;-  yy908:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy898;-    if (yych <= 0x9F)-      goto yy899;-    goto yy898;-  }-}--// 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 yy911;-        if (yych != '\n')-          goto yy913;-      } else {-        if (yych <= ']')-          goto yy914;-        if (yych <= 0x7F)-          goto yy913;-        if (yych >= 0xC2)-          goto yy915;-      }-    } else {-      if (yych <= 0xEF) {-        if (yych <= 0xE0)-          goto yy916;-        if (yych == 0xED)-          goto yy918;-        goto yy917;-      } else {-        if (yych <= 0xF0)-          goto yy919;-        if (yych <= 0xF3)-          goto yy920;-        if (yych <= 0xF4)-          goto yy921;-      }-    }-  yy911:-    ++p;-  yy912 : { return 0; }-  yy913:-    yyaccept = 0;-    yych = *(marker = ++p);-    if (yych <= '\n') {-      if (yych <= 0x00)-        goto yy912;-      if (yych <= '\t')-        goto yy926;-      goto yy912;-    } else {-      if (yych <= 0x7F)-        goto yy926;-      if (yych <= 0xC1)-        goto yy912;-      if (yych <= 0xF4)-        goto yy926;-      goto yy912;-    }-  yy914:-    yyaccept = 0;-    yych = *(marker = ++p);-    if (yybm[0 + yych] & 128) {-      goto yy933;-    }-    if (yych <= '\n') {-      if (yych <= 0x00)-        goto yy912;-      if (yych <= '\t')-        goto yy926;-      goto yy912;-    } else {-      if (yych <= 0x7F)-        goto yy926;-      if (yych <= 0xC1)-        goto yy912;-      if (yych <= 0xF4)-        goto yy926;-      goto yy912;-    }-  yy915:-    yyaccept = 0;-    yych = *(marker = ++p);-    if (yych <= 0x7F)-      goto yy912;-    if (yych <= 0xBF)-      goto yy925;-    goto yy912;-  yy916:-    yyaccept = 0;-    yych = *(marker = ++p);-    if (yych <= 0x9F)-      goto yy912;-    if (yych <= 0xBF)-      goto yy924;-    goto yy912;-  yy917:-    yyaccept = 0;-    yych = *(marker = ++p);-    if (yych <= 0x7F)-      goto yy912;-    if (yych <= 0xBF)-      goto yy924;-    goto yy912;-  yy918:-    yyaccept = 0;-    yych = *(marker = ++p);-    if (yych <= 0x7F)-      goto yy912;-    if (yych <= 0x9F)-      goto yy924;-    goto yy912;-  yy919:-    yyaccept = 0;-    yych = *(marker = ++p);-    if (yych <= 0x8F)-      goto yy912;-    if (yych <= 0xBF)-      goto yy922;-    goto yy912;-  yy920:-    yyaccept = 0;-    yych = *(marker = ++p);-    if (yych <= 0x7F)-      goto yy912;-    if (yych <= 0xBF)-      goto yy922;-    goto yy912;-  yy921:-    yyaccept = 0;-    yych = *(marker = ++p);-    if (yych <= 0x7F)-      goto yy912;-    if (yych >= 0x90)-      goto yy912;-  yy922:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy923;-    if (yych <= 0xBF)-      goto yy924;-  yy923:-    p = marker;-    if (yyaccept == 0) {-      goto yy912;-    } else {-      goto yy936;-    }-  yy924:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy923;-    if (yych >= 0xC0)-      goto yy923;-  yy925:-    ++p;-    yych = *p;-  yy926:-    if (yybm[0 + yych] & 64) {-      goto yy925;-    }-    if (yych <= 0xEC) {-      if (yych <= 0xC1) {-        if (yych <= '\n')-          goto yy923;-        if (yych >= '^')-          goto yy923;-      } else {-        if (yych <= 0xDF)-          goto yy924;-        if (yych <= 0xE0)-          goto yy928;-        goto yy922;-      }-    } else {-      if (yych <= 0xF0) {-        if (yych <= 0xED)-          goto yy932;-        if (yych <= 0xEF)-          goto yy922;-        goto yy929;-      } else {-        if (yych <= 0xF3)-          goto yy930;-        if (yych <= 0xF4)-          goto yy931;-        goto yy923;-      }-    }-  yy927:-    ++p;-    yych = *p;-    if (yybm[0 + yych] & 64) {-      goto yy925;-    }-    if (yych <= 0xEC) {-      if (yych <= 0xC1) {-        if (yych <= '\n')-          goto yy923;-        if (yych <= ']')-          goto yy933;-        goto yy923;-      } else {-        if (yych <= 0xDF)-          goto yy924;-        if (yych >= 0xE1)-          goto yy922;-      }-    } else {-      if (yych <= 0xF0) {-        if (yych <= 0xED)-          goto yy932;-        if (yych <= 0xEF)-          goto yy922;-        goto yy929;-      } else {-        if (yych <= 0xF3)-          goto yy930;-        if (yych <= 0xF4)-          goto yy931;-        goto yy923;-      }-    }-  yy928:-    ++p;-    yych = *p;-    if (yych <= 0x9F)-      goto yy923;-    if (yych <= 0xBF)-      goto yy924;-    goto yy923;-  yy929:-    ++p;-    yych = *p;-    if (yych <= 0x8F)-      goto yy923;-    if (yych <= 0xBF)-      goto yy922;-    goto yy923;-  yy930:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy923;-    if (yych <= 0xBF)-      goto yy922;-    goto yy923;-  yy931:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy923;-    if (yych <= 0x8F)-      goto yy922;-    goto yy923;-  yy932:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy923;-    if (yych <= 0x9F)-      goto yy924;-    goto yy923;-  yy933:-    ++p;-    yych = *p;-    if (yybm[0 + yych] & 128) {-      goto yy933;-    }-    if (yych <= 0xDF) {-      if (yych <= '=') {-        if (yych <= 0x00)-          goto yy923;-        if (yych == '\n')-          goto yy923;-        goto yy925;-      } else {-        if (yych <= '>')-          goto yy935;-        if (yych <= 0x7F)-          goto yy925;-        if (yych <= 0xC1)-          goto yy923;-        goto yy924;-      }-    } else {-      if (yych <= 0xEF) {-        if (yych <= 0xE0)-          goto yy928;-        if (yych == 0xED)-          goto yy932;-        goto yy922;-      } else {-        if (yych <= 0xF0)-          goto yy929;-        if (yych <= 0xF3)-          goto yy930;-        if (yych <= 0xF4)-          goto yy931;-        goto yy923;-      }-    }-  yy935:-    yyaccept = 1;-    marker = ++p;-    yych = *p;-    if (yybm[0 + yych] & 64) {-      goto yy925;-    }-    if (yych <= 0xEC) {-      if (yych <= 0xC1) {-        if (yych <= '\n')-          goto yy936;-        if (yych <= ']')-          goto yy927;-      } else {-        if (yych <= 0xDF)-          goto yy924;-        if (yych <= 0xE0)-          goto yy928;-        goto yy922;-      }-    } else {-      if (yych <= 0xF0) {-        if (yych <= 0xED)-          goto yy932;-        if (yych <= 0xEF)-          goto yy922;-        goto yy929;-      } else {-        if (yych <= 0xF3)-          goto yy930;-        if (yych <= 0xF4)-          goto yy931;-      }-    }-  yy936 : { return (bufsize_t)(p - start); }-  }-}--// Try to match a link title (in single quotes, in double quotes, or-// in parentheses), returning number of chars matched.  Allow one-// level of internal nesting (quotes within quotes).-bufsize_t _scan_link_title(const unsigned char *p) {-  const unsigned char *marker = NULL;-  const unsigned char *start = p;--  {-    unsigned char yych;-    unsigned int yyaccept = 0;-    static const unsigned char yybm[] = {-        0,   224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,-        224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,-        224, 224, 224, 224, 224, 224, 96,  224, 224, 224, 224, 160, 224, 192,-        224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,-        224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,-        224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,-        224, 224, 224, 224, 224, 224, 224, 224, 16,  224, 224, 224, 224, 224,-        224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,-        224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,-        224, 224, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,-        0,   0,   0,   0,-    };-    yych = *p;-    if (yych <= '&') {-      if (yych == '"')-        goto yy941;-    } else {-      if (yych <= '\'')-        goto yy942;-      if (yych <= '(')-        goto yy943;-    }-    ++p;-  yy940 : { return 0; }-  yy941:-    yyaccept = 0;-    yych = *(marker = ++p);-    if (yych <= 0x00)-      goto yy940;-    if (yych <= 0x7F)-      goto yy976;-    if (yych <= 0xC1)-      goto yy940;-    if (yych <= 0xF4)-      goto yy976;-    goto yy940;-  yy942:-    yyaccept = 0;-    yych = *(marker = ++p);-    if (yych <= 0x00)-      goto yy940;-    if (yych <= 0x7F)-      goto yy962;-    if (yych <= 0xC1)-      goto yy940;-    if (yych <= 0xF4)-      goto yy962;-    goto yy940;-  yy943:-    yyaccept = 0;-    yych = *(marker = ++p);-    if (yych <= 0x00)-      goto yy940;-    if (yych <= 0x7F)-      goto yy948;-    if (yych <= 0xC1)-      goto yy940;-    if (yych <= 0xF4)-      goto yy948;-    goto yy940;-  yy944:-    ++p;-    yych = *p;-    if (yybm[0 + yych] & 32) {-      goto yy947;-    }-    if (yych <= 0xE0) {-      if (yych <= '\\') {-        if (yych <= 0x00)-          goto yy946;-        if (yych <= ')')-          goto yy958;-        goto yy944;-      } else {-        if (yych <= 0xC1)-          goto yy946;-        if (yych <= 0xDF)-          goto yy949;-        goto yy950;-      }-    } else {-      if (yych <= 0xEF) {-        if (yych == 0xED)-          goto yy955;-        goto yy951;-      } else {-        if (yych <= 0xF0)-          goto yy952;-        if (yych <= 0xF3)-          goto yy953;-        if (yych <= 0xF4)-          goto yy954;-      }-    }-  yy946:-    p = marker;-    if (yyaccept <= 1) {-      if (yyaccept == 0) {-        goto yy940;-      } else {-        goto yy957;-      }-    } else {-      if (yyaccept == 2) {-        goto yy971;-      } else {-        goto yy985;-      }-    }-  yy947:-    ++p;-    yych = *p;-  yy948:-    if (yybm[0 + yych] & 32) {-      goto yy947;-    }-    if (yych <= 0xE0) {-      if (yych <= '\\') {-        if (yych <= 0x00)-          goto yy946;-        if (yych <= ')')-          goto yy956;-        goto yy944;-      } else {-        if (yych <= 0xC1)-          goto yy946;-        if (yych >= 0xE0)-          goto yy950;-      }-    } else {-      if (yych <= 0xEF) {-        if (yych == 0xED)-          goto yy955;-        goto yy951;-      } else {-        if (yych <= 0xF0)-          goto yy952;-        if (yych <= 0xF3)-          goto yy953;-        if (yych <= 0xF4)-          goto yy954;-        goto yy946;-      }-    }-  yy949:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy946;-    if (yych <= 0xBF)-      goto yy947;-    goto yy946;-  yy950:-    ++p;-    yych = *p;-    if (yych <= 0x9F)-      goto yy946;-    if (yych <= 0xBF)-      goto yy949;-    goto yy946;-  yy951:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy946;-    if (yych <= 0xBF)-      goto yy949;-    goto yy946;-  yy952:-    ++p;-    yych = *p;-    if (yych <= 0x8F)-      goto yy946;-    if (yych <= 0xBF)-      goto yy951;-    goto yy946;-  yy953:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy946;-    if (yych <= 0xBF)-      goto yy951;-    goto yy946;-  yy954:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy946;-    if (yych <= 0x8F)-      goto yy951;-    goto yy946;-  yy955:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy946;-    if (yych <= 0x9F)-      goto yy949;-    goto yy946;-  yy956:-    ++p;-  yy957 : { return (bufsize_t)(p - start); }-  yy958:-    yyaccept = 1;-    marker = ++p;-    yych = *p;-    if (yybm[0 + yych] & 32) {-      goto yy947;-    }-    if (yych <= 0xE0) {-      if (yych <= '\\') {-        if (yych <= 0x00)-          goto yy957;-        if (yych <= ')')-          goto yy956;-        goto yy944;-      } else {-        if (yych <= 0xC1)-          goto yy957;-        if (yych <= 0xDF)-          goto yy949;-        goto yy950;-      }-    } else {-      if (yych <= 0xEF) {-        if (yych == 0xED)-          goto yy955;-        goto yy951;-      } else {-        if (yych <= 0xF0)-          goto yy952;-        if (yych <= 0xF3)-          goto yy953;-        if (yych <= 0xF4)-          goto yy954;-        goto yy957;-      }-    }-  yy959:-    ++p;-    yych = *p;-    if (yybm[0 + yych] & 64) {-      goto yy961;-    }-    if (yych <= 0xE0) {-      if (yych <= '\\') {-        if (yych <= 0x00)-          goto yy946;-        if (yych <= '\'')-          goto yy972;-        goto yy959;-      } else {-        if (yych <= 0xC1)-          goto yy946;-        if (yych <= 0xDF)-          goto yy963;-        goto yy964;-      }-    } else {-      if (yych <= 0xEF) {-        if (yych == 0xED)-          goto yy969;-        goto yy965;-      } else {-        if (yych <= 0xF0)-          goto yy966;-        if (yych <= 0xF3)-          goto yy967;-        if (yych <= 0xF4)-          goto yy968;-        goto yy946;-      }-    }-  yy961:-    ++p;-    yych = *p;-  yy962:-    if (yybm[0 + yych] & 64) {-      goto yy961;-    }-    if (yych <= 0xE0) {-      if (yych <= '\\') {-        if (yych <= 0x00)-          goto yy946;-        if (yych <= '\'')-          goto yy970;-        goto yy959;-      } else {-        if (yych <= 0xC1)-          goto yy946;-        if (yych >= 0xE0)-          goto yy964;-      }-    } else {-      if (yych <= 0xEF) {-        if (yych == 0xED)-          goto yy969;-        goto yy965;-      } else {-        if (yych <= 0xF0)-          goto yy966;-        if (yych <= 0xF3)-          goto yy967;-        if (yych <= 0xF4)-          goto yy968;-        goto yy946;-      }-    }-  yy963:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy946;-    if (yych <= 0xBF)-      goto yy961;-    goto yy946;-  yy964:-    ++p;-    yych = *p;-    if (yych <= 0x9F)-      goto yy946;-    if (yych <= 0xBF)-      goto yy963;-    goto yy946;-  yy965:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy946;-    if (yych <= 0xBF)-      goto yy963;-    goto yy946;-  yy966:-    ++p;-    yych = *p;-    if (yych <= 0x8F)-      goto yy946;-    if (yych <= 0xBF)-      goto yy965;-    goto yy946;-  yy967:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy946;-    if (yych <= 0xBF)-      goto yy965;-    goto yy946;-  yy968:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy946;-    if (yych <= 0x8F)-      goto yy965;-    goto yy946;-  yy969:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy946;-    if (yych <= 0x9F)-      goto yy963;-    goto yy946;-  yy970:-    ++p;-  yy971 : { return (bufsize_t)(p - start); }-  yy972:-    yyaccept = 2;-    marker = ++p;-    yych = *p;-    if (yybm[0 + yych] & 64) {-      goto yy961;-    }-    if (yych <= 0xE0) {-      if (yych <= '\\') {-        if (yych <= 0x00)-          goto yy971;-        if (yych <= '\'')-          goto yy970;-        goto yy959;-      } else {-        if (yych <= 0xC1)-          goto yy971;-        if (yych <= 0xDF)-          goto yy963;-        goto yy964;-      }-    } else {-      if (yych <= 0xEF) {-        if (yych == 0xED)-          goto yy969;-        goto yy965;-      } else {-        if (yych <= 0xF0)-          goto yy966;-        if (yych <= 0xF3)-          goto yy967;-        if (yych <= 0xF4)-          goto yy968;-        goto yy971;-      }-    }-  yy973:-    ++p;-    yych = *p;-    if (yybm[0 + yych] & 128) {-      goto yy975;-    }-    if (yych <= 0xE0) {-      if (yych <= '\\') {-        if (yych <= 0x00)-          goto yy946;-        if (yych <= '"')-          goto yy986;-        goto yy973;-      } else {-        if (yych <= 0xC1)-          goto yy946;-        if (yych <= 0xDF)-          goto yy977;-        goto yy978;-      }-    } else {-      if (yych <= 0xEF) {-        if (yych == 0xED)-          goto yy983;-        goto yy979;-      } else {-        if (yych <= 0xF0)-          goto yy980;-        if (yych <= 0xF3)-          goto yy981;-        if (yych <= 0xF4)-          goto yy982;-        goto yy946;-      }-    }-  yy975:-    ++p;-    yych = *p;-  yy976:-    if (yybm[0 + yych] & 128) {-      goto yy975;-    }-    if (yych <= 0xE0) {-      if (yych <= '\\') {-        if (yych <= 0x00)-          goto yy946;-        if (yych <= '"')-          goto yy984;-        goto yy973;-      } else {-        if (yych <= 0xC1)-          goto yy946;-        if (yych >= 0xE0)-          goto yy978;-      }-    } else {-      if (yych <= 0xEF) {-        if (yych == 0xED)-          goto yy983;-        goto yy979;-      } else {-        if (yych <= 0xF0)-          goto yy980;-        if (yych <= 0xF3)-          goto yy981;-        if (yych <= 0xF4)-          goto yy982;-        goto yy946;-      }-    }-  yy977:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy946;-    if (yych <= 0xBF)-      goto yy975;-    goto yy946;-  yy978:-    ++p;-    yych = *p;-    if (yych <= 0x9F)-      goto yy946;-    if (yych <= 0xBF)-      goto yy977;-    goto yy946;-  yy979:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy946;-    if (yych <= 0xBF)-      goto yy977;-    goto yy946;-  yy980:-    ++p;-    yych = *p;-    if (yych <= 0x8F)-      goto yy946;-    if (yych <= 0xBF)-      goto yy979;-    goto yy946;-  yy981:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy946;-    if (yych <= 0xBF)-      goto yy979;-    goto yy946;-  yy982:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy946;-    if (yych <= 0x8F)-      goto yy979;-    goto yy946;-  yy983:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy946;-    if (yych <= 0x9F)-      goto yy977;-    goto yy946;-  yy984:-    ++p;-  yy985 : { return (bufsize_t)(p - start); }-  yy986:-    yyaccept = 3;-    marker = ++p;-    yych = *p;-    if (yybm[0 + yych] & 128) {-      goto yy975;-    }-    if (yych <= 0xE0) {-      if (yych <= '\\') {-        if (yych <= 0x00)-          goto yy985;-        if (yych <= '"')-          goto yy984;-        goto yy973;-      } else {-        if (yych <= 0xC1)-          goto yy985;-        if (yych <= 0xDF)-          goto yy977;-        goto yy978;-      }-    } else {-      if (yych <= 0xEF) {-        if (yych == 0xED)-          goto yy983;-        goto yy979;-      } else {-        if (yych <= 0xF0)-          goto yy980;-        if (yych <= 0xF3)-          goto yy981;-        if (yych <= 0xF4)-          goto yy982;-        goto yy985;-      }-    }-  }-}--// Match space characters, including newlines.-bufsize_t _scan_spacechars(const unsigned char *p) {-  const unsigned char *start = p;--  {-    unsigned char yych;-    static const unsigned char yybm[] = {-        0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, 128, 0, 0, 0, 0, 0, 0,-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   128, 0,   0, 0, 0, 0, 0, 0,-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0,-    };-    yych = *p;-    if (yych <= 0x08)-      goto yy989;-    if (yych <= '\r')-      goto yy991;-    if (yych == ' ')-      goto yy991;-  yy989:-    ++p;-    { return 0; }-  yy991:-    ++p;-    yych = *p;-    goto yy994;-  yy992 : { return (bufsize_t)(p - start); }-  yy993:-    ++p;-    yych = *p;-  yy994:-    if (yybm[0 + yych] & 128) {-      goto yy993;-    }-    goto yy992;-  }-}--// 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 yy999;-    ++p;-  yy998 : { return 0; }-  yy999:-    yych = *(marker = ++p);-    if (yybm[0 + yych] & 128) {-      goto yy1002;-    }-    if (yych <= '\f') {-      if (yych <= 0x08)-        goto yy998;-      if (yych >= '\v')-        goto yy998;-    } else {-      if (yych <= '\r')-        goto yy1000;-      if (yych == '#')-        goto yy1004;-      goto yy998;-    }-  yy1000:-    ++p;-  yy1001 : { return (bufsize_t)(p - start); }-  yy1002:-    ++p;-    yych = *p;-    if (yybm[0 + yych] & 128) {-      goto yy1002;-    }-    goto yy1001;-  yy1004:-    yych = *++p;-    if (yybm[0 + yych] & 128) {-      goto yy1002;-    }-    if (yych <= '\f') {-      if (yych <= 0x08)-        goto yy1005;-      if (yych <= '\n')-        goto yy1000;-    } else {-      if (yych <= '\r')-        goto yy1000;-      if (yych == '#')-        goto yy1006;-    }-  yy1005:-    p = marker;-    goto yy998;-  yy1006:-    yych = *++p;-    if (yybm[0 + yych] & 128) {-      goto yy1002;-    }-    if (yych <= '\f') {-      if (yych <= 0x08)-        goto yy1005;-      if (yych <= '\n')-        goto yy1000;-      goto yy1005;-    } else {-      if (yych <= '\r')-        goto yy1000;-      if (yych != '#')-        goto yy1005;-    }-    yych = *++p;-    if (yybm[0 + yych] & 128) {-      goto yy1002;-    }-    if (yych <= '\f') {-      if (yych <= 0x08)-        goto yy1005;-      if (yych <= '\n')-        goto yy1000;-      goto yy1005;-    } else {-      if (yych <= '\r')-        goto yy1000;-      if (yych != '#')-        goto yy1005;-    }-    yych = *++p;-    if (yybm[0 + yych] & 128) {-      goto yy1002;-    }-    if (yych <= '\f') {-      if (yych <= 0x08)-        goto yy1005;-      if (yych <= '\n')-        goto yy1000;-      goto yy1005;-    } else {-      if (yych <= '\r')-        goto yy1000;-      if (yych != '#')-        goto yy1005;-    }-    ++p;-    if (yybm[0 + (yych = *p)] & 128) {-      goto yy1002;-    }-    if (yych <= 0x08)-      goto yy1005;-    if (yych <= '\n')-      goto yy1000;-    if (yych == '\r')-      goto yy1000;-    goto yy1005;-  }-}--// Match setext heading line.  Return 1 for level-1 heading,-// 2 for level-2, 0 for no match.-bufsize_t _scan_setext_heading_line(const unsigned char *p) {-  const unsigned char *marker = NULL;--  {-    unsigned char yych;-    static const unsigned char yybm[] = {-        0, 0,   0, 0, 0, 0, 0, 0, 0, 32, 0,  0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0,-        0, 0,   0, 0, 0, 0, 0, 0, 0, 0,  32, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0,-        0, 128, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0,-        0, 0,   0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0,-        0, 0,   0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0,-        0, 0,   0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0,-        0, 0,   0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0,-        0, 0,   0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0,-        0, 0,   0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0,-        0, 0,   0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0,-        0, 0,   0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0,-        0, 0,   0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0,-    };-    yych = *p;-    if (yych == '-')-      goto yy1014;-    if (yych == '=')-      goto yy1015;-    ++p;-  yy1013 : { return 0; }-  yy1014:-    yych = *(marker = ++p);-    if (yybm[0 + yych] & 128) {-      goto yy1027;-    }-    if (yych <= '\f') {-      if (yych <= 0x08)-        goto yy1013;-      if (yych <= '\n')-        goto yy1024;-      goto yy1013;-    } else {-      if (yych <= '\r')-        goto yy1024;-      if (yych == ' ')-        goto yy1024;-      goto yy1013;-    }-  yy1015:-    yych = *(marker = ++p);-    if (yybm[0 + yych] & 64) {-      goto yy1021;-    }-    if (yych <= '\f') {-      if (yych <= 0x08)-        goto yy1013;-      if (yych <= '\n')-        goto yy1017;-      goto yy1013;-    } else {-      if (yych <= '\r')-        goto yy1017;-      if (yych == ' ')-        goto yy1017;-      goto yy1013;-    }-  yy1016:-    ++p;-    yych = *p;-  yy1017:-    if (yybm[0 + yych] & 32) {-      goto yy1016;-    }-    if (yych <= 0x08)-      goto yy1018;-    if (yych <= '\n')-      goto yy1019;-    if (yych == '\r')-      goto yy1019;-  yy1018:-    p = marker;-    goto yy1013;-  yy1019:-    ++p;-    { return 1; }-  yy1021:-    ++p;-    yych = *p;-    if (yybm[0 + yych] & 32) {-      goto yy1016;-    }-    if (yych <= '\f') {-      if (yych <= 0x08)-        goto yy1018;-      if (yych <= '\n')-        goto yy1019;-      goto yy1018;-    } else {-      if (yych <= '\r')-        goto yy1019;-      if (yych == '=')-        goto yy1021;-      goto yy1018;-    }-  yy1023:-    ++p;-    yych = *p;-  yy1024:-    if (yych <= '\f') {-      if (yych <= 0x08)-        goto yy1018;-      if (yych <= '\t')-        goto yy1023;-      if (yych >= '\v')-        goto yy1018;-    } else {-      if (yych <= '\r')-        goto yy1025;-      if (yych == ' ')-        goto yy1023;-      goto yy1018;-    }-  yy1025:-    ++p;-    { return 2; }-  yy1027:-    ++p;-    yych = *p;-    if (yybm[0 + yych] & 128) {-      goto yy1027;-    }-    if (yych <= '\f') {-      if (yych <= 0x08)-        goto yy1018;-      if (yych <= '\t')-        goto yy1023;-      if (yych <= '\n')-        goto yy1025;-      goto yy1018;-    } else {-      if (yych <= '\r')-        goto yy1025;-      if (yych == ' ')-        goto yy1023;-      goto yy1018;-    }-  }-}--// Scan a thematic break line: "...three or more hyphens, asterisks,-// or underscores on a line by themselves. If you wish, you may use-// spaces between the hyphens or asterisks."-bufsize_t _scan_thematic_break(const unsigned char *p) {-  const unsigned char *marker = NULL;-  const unsigned char *start = p;--  {-    unsigned char yych;-    static const unsigned char yybm[] = {-        0, 0, 0,   0, 0, 0,  0, 0, 0, 240, 0, 0, 0,   0, 0, 0,  0, 0, 0, 0,-        0, 0, 0,   0, 0, 0,  0, 0, 0, 0,   0, 0, 240, 0, 0, 0,  0, 0, 0, 0,-        0, 0, 128, 0, 0, 64, 0, 0, 0, 0,   0, 0, 0,   0, 0, 0,  0, 0, 0, 0,-        0, 0, 0,   0, 0, 0,  0, 0, 0, 0,   0, 0, 0,   0, 0, 0,  0, 0, 0, 0,-        0, 0, 0,   0, 0, 0,  0, 0, 0, 0,   0, 0, 0,   0, 0, 32, 0, 0, 0, 0,-        0, 0, 0,   0, 0, 0,  0, 0, 0, 0,   0, 0, 0,   0, 0, 0,  0, 0, 0, 0,-        0, 0, 0,   0, 0, 0,  0, 0, 0, 0,   0, 0, 0,   0, 0, 0,  0, 0, 0, 0,-        0, 0, 0,   0, 0, 0,  0, 0, 0, 0,   0, 0, 0,   0, 0, 0,  0, 0, 0, 0,-        0, 0, 0,   0, 0, 0,  0, 0, 0, 0,   0, 0, 0,   0, 0, 0,  0, 0, 0, 0,-        0, 0, 0,   0, 0, 0,  0, 0, 0, 0,   0, 0, 0,   0, 0, 0,  0, 0, 0, 0,-        0, 0, 0,   0, 0, 0,  0, 0, 0, 0,   0, 0, 0,   0, 0, 0,  0, 0, 0, 0,-        0, 0, 0,   0, 0, 0,  0, 0, 0, 0,   0, 0, 0,   0, 0, 0,  0, 0, 0, 0,-        0, 0, 0,   0, 0, 0,  0, 0, 0, 0,   0, 0, 0,   0, 0, 0,-    };-    yych = *p;-    if (yych <= ',') {-      if (yych == '*')-        goto yy1033;-    } else {-      if (yych <= '-')-        goto yy1034;-      if (yych == '_')-        goto yy1035;-    }-    ++p;-  yy1032 : { return 0; }-  yy1033:-    yych = *(marker = ++p);-    if (yych <= 0x1F) {-      if (yych == '\t')-        goto yy1057;-      goto yy1032;-    } else {-      if (yych <= ' ')-        goto yy1057;-      if (yych == '*')-        goto yy1059;-      goto yy1032;-    }-  yy1034:-    yych = *(marker = ++p);-    if (yych <= 0x1F) {-      if (yych == '\t')-        goto yy1047;-      goto yy1032;-    } else {-      if (yych <= ' ')-        goto yy1047;-      if (yych == '-')-        goto yy1049;-      goto yy1032;-    }-  yy1035:-    yych = *(marker = ++p);-    if (yybm[0 + yych] & 16) {-      goto yy1036;-    }-    if (yych == '_')-      goto yy1039;-    goto yy1032;-  yy1036:-    ++p;-    yych = *p;-    if (yybm[0 + yych] & 16) {-      goto yy1036;-    }-    if (yych == '_')-      goto yy1039;-  yy1038:-    p = marker;-    goto yy1032;-  yy1039:-    ++p;-    yych = *p;-    if (yych <= 0x1F) {-      if (yych == '\t')-        goto yy1039;-      goto yy1038;-    } else {-      if (yych <= ' ')-        goto yy1039;-      if (yych != '_')-        goto yy1038;-    }-  yy1041:-    ++p;-    yych = *p;-    if (yych <= '\r') {-      if (yych <= '\t') {-        if (yych <= 0x08)-          goto yy1038;-        goto yy1041;-      } else {-        if (yych <= '\n')-          goto yy1043;-        if (yych <= '\f')-          goto yy1038;-      }-    } else {-      if (yych <= ' ') {-        if (yych <= 0x1F)-          goto yy1038;-        goto yy1041;-      } else {-        if (yych == '_')-          goto yy1045;-        goto yy1038;-      }-    }-  yy1043:-    ++p;-    { return (bufsize_t)(p - start); }-  yy1045:-    ++p;-    yych = *p;-    if (yybm[0 + yych] & 32) {-      goto yy1045;-    }-    if (yych <= 0x08)-      goto yy1038;-    if (yych <= '\n')-      goto yy1043;-    if (yych == '\r')-      goto yy1043;-    goto yy1038;-  yy1047:-    ++p;-    yych = *p;-    if (yych <= 0x1F) {-      if (yych == '\t')-        goto yy1047;-      goto yy1038;-    } else {-      if (yych <= ' ')-        goto yy1047;-      if (yych != '-')-        goto yy1038;-    }-  yy1049:-    ++p;-    yych = *p;-    if (yych <= 0x1F) {-      if (yych == '\t')-        goto yy1049;-      goto yy1038;-    } else {-      if (yych <= ' ')-        goto yy1049;-      if (yych != '-')-        goto yy1038;-    }-  yy1051:-    ++p;-    yych = *p;-    if (yych <= '\r') {-      if (yych <= '\t') {-        if (yych <= 0x08)-          goto yy1038;-        goto yy1051;-      } else {-        if (yych <= '\n')-          goto yy1053;-        if (yych <= '\f')-          goto yy1038;-      }-    } else {-      if (yych <= ' ') {-        if (yych <= 0x1F)-          goto yy1038;-        goto yy1051;-      } else {-        if (yych == '-')-          goto yy1055;-        goto yy1038;-      }-    }-  yy1053:-    ++p;-    { return (bufsize_t)(p - start); }-  yy1055:-    ++p;-    yych = *p;-    if (yybm[0 + yych] & 64) {-      goto yy1055;-    }-    if (yych <= 0x08)-      goto yy1038;-    if (yych <= '\n')-      goto yy1053;-    if (yych == '\r')-      goto yy1053;-    goto yy1038;-  yy1057:-    ++p;-    yych = *p;-    if (yych <= 0x1F) {-      if (yych == '\t')-        goto yy1057;-      goto yy1038;-    } else {-      if (yych <= ' ')-        goto yy1057;-      if (yych != '*')-        goto yy1038;-    }-  yy1059:-    ++p;-    yych = *p;-    if (yych <= 0x1F) {-      if (yych == '\t')-        goto yy1059;-      goto yy1038;-    } else {-      if (yych <= ' ')-        goto yy1059;-      if (yych != '*')-        goto yy1038;-    }-  yy1061:-    ++p;-    yych = *p;-    if (yych <= '\r') {-      if (yych <= '\t') {-        if (yych <= 0x08)-          goto yy1038;-        goto yy1061;-      } else {-        if (yych <= '\n')-          goto yy1063;-        if (yych <= '\f')-          goto yy1038;-      }-    } else {-      if (yych <= ' ') {-        if (yych <= 0x1F)-          goto yy1038;-        goto yy1061;-      } else {-        if (yych == '*')-          goto yy1065;-        goto yy1038;-      }-    }-  yy1063:-    ++p;-    { return (bufsize_t)(p - start); }-  yy1065:-    ++p;-    yych = *p;-    if (yybm[0 + yych] & 128) {-      goto yy1065;-    }-    if (yych <= 0x08)-      goto yy1038;-    if (yych <= '\n')-      goto yy1063;-    if (yych == '\r')-      goto yy1063;-    goto yy1038;-  }-}--// Scan an opening code fence.-bufsize_t _scan_open_code_fence(const unsigned char *p) {-  const unsigned char *marker = NULL;-  const unsigned char *start = p;--  {-    unsigned char yych;-    static const unsigned char yybm[] = {-        0,   160, 160, 160, 160, 160, 160, 160, 160, 160, 0,   160, 160, 0,-        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,-        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,-        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,-        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,-        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,-        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 96,  160,-        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,-        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,-        144, 160, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,-        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,-        0,   0,   0,   0,-    };-    yych = *p;-    if (yych == '`')-      goto yy1071;-    if (yych == '~')-      goto yy1072;-    ++p;-  yy1070 : { return 0; }-  yy1071:-    yych = *(marker = ++p);-    if (yych == '`')-      goto yy1088;-    goto yy1070;-  yy1072:-    yych = *(marker = ++p);-    if (yych != '~')-      goto yy1070;-    yych = *++p;-    if (yybm[0 + yych] & 16) {-      goto yy1075;-    }-  yy1074:-    p = marker;-    goto yy1070;-  yy1075:-    ++p;-    yych = *p;-    marker = p;-    if (yybm[0 + yych] & 32) {-      goto yy1077;-    }-    if (yych <= 0xE0) {-      if (yych <= '~') {-        if (yych <= 0x00)-          goto yy1074;-        if (yych <= '\r')-          goto yy1086;-        goto yy1075;-      } else {-        if (yych <= 0xC1)-          goto yy1074;-        if (yych <= 0xDF)-          goto yy1079;-        goto yy1080;-      }-    } else {-      if (yych <= 0xEF) {-        if (yych == 0xED)-          goto yy1085;-        goto yy1081;-      } else {-        if (yych <= 0xF0)-          goto yy1082;-        if (yych <= 0xF3)-          goto yy1083;-        if (yych <= 0xF4)-          goto yy1084;-        goto yy1074;-      }-    }-  yy1077:-    ++p;-    yych = *p;-    if (yybm[0 + yych] & 32) {-      goto yy1077;-    }-    if (yych <= 0xEC) {-      if (yych <= 0xC1) {-        if (yych <= 0x00)-          goto yy1074;-        if (yych <= '\r')-          goto yy1086;-        goto yy1074;-      } else {-        if (yych <= 0xDF)-          goto yy1079;-        if (yych <= 0xE0)-          goto yy1080;-        goto yy1081;-      }-    } else {-      if (yych <= 0xF0) {-        if (yych <= 0xED)-          goto yy1085;-        if (yych <= 0xEF)-          goto yy1081;-        goto yy1082;-      } else {-        if (yych <= 0xF3)-          goto yy1083;-        if (yych <= 0xF4)-          goto yy1084;-        goto yy1074;-      }-    }-  yy1079:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy1074;-    if (yych <= 0xBF)-      goto yy1077;-    goto yy1074;-  yy1080:-    ++p;-    yych = *p;-    if (yych <= 0x9F)-      goto yy1074;-    if (yych <= 0xBF)-      goto yy1079;-    goto yy1074;-  yy1081:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy1074;-    if (yych <= 0xBF)-      goto yy1079;-    goto yy1074;-  yy1082:-    ++p;-    yych = *p;-    if (yych <= 0x8F)-      goto yy1074;-    if (yych <= 0xBF)-      goto yy1081;-    goto yy1074;-  yy1083:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy1074;-    if (yych <= 0xBF)-      goto yy1081;-    goto yy1074;-  yy1084:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy1074;-    if (yych <= 0x8F)-      goto yy1081;-    goto yy1074;-  yy1085:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy1074;-    if (yych <= 0x9F)-      goto yy1079;-    goto yy1074;-  yy1086:-    ++p;-    p = marker;-    { return (bufsize_t)(p - start); }-  yy1088:-    yych = *++p;-    if (yybm[0 + yych] & 64) {-      goto yy1089;-    }-    goto yy1074;-  yy1089:-    ++p;-    yych = *p;-    marker = p;-    if (yybm[0 + yych] & 128) {-      goto yy1091;-    }-    if (yych <= 0xE0) {-      if (yych <= '`') {-        if (yych <= 0x00)-          goto yy1074;-        if (yych <= '\r')-          goto yy1100;-        goto yy1089;-      } else {-        if (yych <= 0xC1)-          goto yy1074;-        if (yych <= 0xDF)-          goto yy1093;-        goto yy1094;-      }-    } else {-      if (yych <= 0xEF) {-        if (yych == 0xED)-          goto yy1099;-        goto yy1095;-      } else {-        if (yych <= 0xF0)-          goto yy1096;-        if (yych <= 0xF3)-          goto yy1097;-        if (yych <= 0xF4)-          goto yy1098;-        goto yy1074;-      }-    }-  yy1091:-    ++p;-    yych = *p;-    if (yybm[0 + yych] & 128) {-      goto yy1091;-    }-    if (yych <= 0xEC) {-      if (yych <= 0xC1) {-        if (yych <= 0x00)-          goto yy1074;-        if (yych <= '\r')-          goto yy1100;-        goto yy1074;-      } else {-        if (yych <= 0xDF)-          goto yy1093;-        if (yych <= 0xE0)-          goto yy1094;-        goto yy1095;-      }-    } else {-      if (yych <= 0xF0) {-        if (yych <= 0xED)-          goto yy1099;-        if (yych <= 0xEF)-          goto yy1095;-        goto yy1096;-      } else {-        if (yych <= 0xF3)-          goto yy1097;-        if (yych <= 0xF4)-          goto yy1098;-        goto yy1074;-      }-    }-  yy1093:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy1074;-    if (yych <= 0xBF)-      goto yy1091;-    goto yy1074;-  yy1094:-    ++p;-    yych = *p;-    if (yych <= 0x9F)-      goto yy1074;-    if (yych <= 0xBF)-      goto yy1093;-    goto yy1074;-  yy1095:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy1074;-    if (yych <= 0xBF)-      goto yy1093;-    goto yy1074;-  yy1096:-    ++p;-    yych = *p;-    if (yych <= 0x8F)-      goto yy1074;-    if (yych <= 0xBF)-      goto yy1095;-    goto yy1074;-  yy1097:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy1074;-    if (yych <= 0xBF)-      goto yy1095;-    goto yy1074;-  yy1098:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy1074;-    if (yych <= 0x8F)-      goto yy1095;-    goto yy1074;-  yy1099:-    ++p;-    yych = *p;-    if (yych <= 0x7F)-      goto yy1074;-    if (yych <= 0x9F)-      goto yy1093;-    goto yy1074;-  yy1100:-    ++p;-    p = marker;-    { return (bufsize_t)(p - start); }-  }-}--// Scan a closing code fence with length at least len.-bufsize_t _scan_close_code_fence(const unsigned char *p) {-  const unsigned char *marker = NULL;-  const unsigned char *start = p;--  {-    unsigned char yych;-    static const unsigned char yybm[] = {-        0, 0, 0, 0, 0, 0, 0, 0, 0,   64, 0,  0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,-        0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  64, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,-        0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  0,  0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,-        0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  0,  0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,-        0, 0, 0, 0, 0, 0, 0, 0, 128, 0,  0,  0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,-        0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  0,  0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0,-        0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  0,  0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,-        0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  0,  0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,-        0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  0,  0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,-        0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  0,  0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,-        0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  0,  0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,-        0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  0,  0, 0, 0,-    };-    yych = *p;-    if (yych == '`')-      goto yy1106;-    if (yych == '~')-      goto yy1107;-    ++p;-  yy1105 : { return 0; }-  yy1106:-    yych = *(marker = ++p);-    if (yych == '`')-      goto yy1116;-    goto yy1105;-  yy1107:-    yych = *(marker = ++p);-    if (yych != '~')-      goto yy1105;-    yych = *++p;-    if (yybm[0 + yych] & 32) {-      goto yy1110;-    }-  yy1109:-    p = marker;-    goto yy1105;-  yy1110:-    ++p;-    yych = *p;-    marker = p;-    if (yybm[0 + yych] & 64) {-      goto yy1112;-    }-    if (yych <= '\f') {-      if (yych <= 0x08)-        goto yy1109;-      if (yych <= '\n')-        goto yy1114;-      goto yy1109;-    } else {-      if (yych <= '\r')-        goto yy1114;-      if (yych == '~')-        goto yy1110;-      goto yy1109;-    }-  yy1112:-    ++p;-    yych = *p;-    if (yybm[0 + yych] & 64) {-      goto yy1112;-    }-    if (yych <= 0x08)-      goto yy1109;-    if (yych <= '\n')-      goto yy1114;-    if (yych != '\r')-      goto yy1109;-  yy1114:-    ++p;-    p = marker;-    { return (bufsize_t)(p - start); }-  yy1116:-    yych = *++p;-    if (yybm[0 + yych] & 128) {-      goto yy1117;-    }-    goto yy1109;-  yy1117:-    ++p;-    yych = *p;-    marker = p;-    if (yybm[0 + yych] & 128) {-      goto yy1117;-    }-    if (yych <= '\f') {-      if (yych <= 0x08)-        goto yy1109;-      if (yych <= '\t')-        goto yy1119;-      if (yych <= '\n')-        goto yy1121;-      goto yy1109;-    } else {-      if (yych <= '\r')-        goto yy1121;-      if (yych != ' ')-        goto yy1109;-    }-  yy1119:-    ++p;-    yych = *p;-    if (yych <= '\f') {-      if (yych <= 0x08)-        goto yy1109;-      if (yych <= '\t')-        goto yy1119;-      if (yych >= '\v')-        goto yy1109;-    } else {-      if (yych <= '\r')-        goto yy1121;-      if (yych == ' ')-        goto yy1119;-      goto yy1109;-    }-  yy1121:-    ++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 yy1127;-    ++p;-  yy1126 : { return 0; }-  yy1127:-    yych = *(marker = ++p);-    if (yych <= '@') {-      if (yych != '#')-        goto yy1126;-    } else {-      if (yych <= 'Z')-        goto yy1130;-      if (yych <= '`')-        goto yy1126;-      if (yych <= 'z')-        goto yy1130;-      goto yy1126;-    }-    yych = *++p;-    if (yych <= 'W') {-      if (yych <= '/')-        goto yy1129;-      if (yych <= '9')-        goto yy1165;-    } else {-      if (yych <= 'X')-        goto yy1164;-      if (yych == 'x')-        goto yy1164;-    }-  yy1129:-    p = marker;-    goto yy1126;-  yy1130:-    yych = *++p;-    if (yych <= '@') {-      if (yych <= '/')-        goto yy1129;-      if (yych >= ':')-        goto yy1129;-    } else {-      if (yych <= 'Z')-        goto yy1131;-      if (yych <= '`')-        goto yy1129;-      if (yych >= '{')-        goto yy1129;-    }-  yy1131:-    yych = *++p;-    if (yych <= ';') {-      if (yych <= '/')-        goto yy1129;-      if (yych <= '9')-        goto yy1134;-      if (yych <= ':')-        goto yy1129;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy1129;-        goto yy1134;-      } else {-        if (yych <= '`')-          goto yy1129;-        if (yych <= 'z')-          goto yy1134;-        goto yy1129;-      }-    }-  yy1132:-    ++p;-    { return (bufsize_t)(p - start); }-  yy1134:-    yych = *++p;-    if (yych <= ';') {-      if (yych <= '/')-        goto yy1129;-      if (yych <= '9')-        goto yy1135;-      if (yych <= ':')-        goto yy1129;-      goto yy1132;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy1129;-      } else {-        if (yych <= '`')-          goto yy1129;-        if (yych >= '{')-          goto yy1129;-      }-    }-  yy1135:-    yych = *++p;-    if (yych <= ';') {-      if (yych <= '/')-        goto yy1129;-      if (yych <= '9')-        goto yy1136;-      if (yych <= ':')-        goto yy1129;-      goto yy1132;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy1129;-      } else {-        if (yych <= '`')-          goto yy1129;-        if (yych >= '{')-          goto yy1129;-      }-    }-  yy1136:-    yych = *++p;-    if (yych <= ';') {-      if (yych <= '/')-        goto yy1129;-      if (yych <= '9')-        goto yy1137;-      if (yych <= ':')-        goto yy1129;-      goto yy1132;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy1129;-      } else {-        if (yych <= '`')-          goto yy1129;-        if (yych >= '{')-          goto yy1129;-      }-    }-  yy1137:-    yych = *++p;-    if (yych <= ';') {-      if (yych <= '/')-        goto yy1129;-      if (yych <= '9')-        goto yy1138;-      if (yych <= ':')-        goto yy1129;-      goto yy1132;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy1129;-      } else {-        if (yych <= '`')-          goto yy1129;-        if (yych >= '{')-          goto yy1129;-      }-    }-  yy1138:-    yych = *++p;-    if (yych <= ';') {-      if (yych <= '/')-        goto yy1129;-      if (yych <= '9')-        goto yy1139;-      if (yych <= ':')-        goto yy1129;-      goto yy1132;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy1129;-      } else {-        if (yych <= '`')-          goto yy1129;-        if (yych >= '{')-          goto yy1129;-      }-    }-  yy1139:-    yych = *++p;-    if (yych <= ';') {-      if (yych <= '/')-        goto yy1129;-      if (yych <= '9')-        goto yy1140;-      if (yych <= ':')-        goto yy1129;-      goto yy1132;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy1129;-      } else {-        if (yych <= '`')-          goto yy1129;-        if (yych >= '{')-          goto yy1129;-      }-    }-  yy1140:-    yych = *++p;-    if (yych <= ';') {-      if (yych <= '/')-        goto yy1129;-      if (yych <= '9')-        goto yy1141;-      if (yych <= ':')-        goto yy1129;-      goto yy1132;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy1129;-      } else {-        if (yych <= '`')-          goto yy1129;-        if (yych >= '{')-          goto yy1129;-      }-    }-  yy1141:-    yych = *++p;-    if (yych <= ';') {-      if (yych <= '/')-        goto yy1129;-      if (yych <= '9')-        goto yy1142;-      if (yych <= ':')-        goto yy1129;-      goto yy1132;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy1129;-      } else {-        if (yych <= '`')-          goto yy1129;-        if (yych >= '{')-          goto yy1129;-      }-    }-  yy1142:-    yych = *++p;-    if (yych <= ';') {-      if (yych <= '/')-        goto yy1129;-      if (yych <= '9')-        goto yy1143;-      if (yych <= ':')-        goto yy1129;-      goto yy1132;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy1129;-      } else {-        if (yych <= '`')-          goto yy1129;-        if (yych >= '{')-          goto yy1129;-      }-    }-  yy1143:-    yych = *++p;-    if (yych <= ';') {-      if (yych <= '/')-        goto yy1129;-      if (yych <= '9')-        goto yy1144;-      if (yych <= ':')-        goto yy1129;-      goto yy1132;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy1129;-      } else {-        if (yych <= '`')-          goto yy1129;-        if (yych >= '{')-          goto yy1129;-      }-    }-  yy1144:-    yych = *++p;-    if (yych <= ';') {-      if (yych <= '/')-        goto yy1129;-      if (yych <= '9')-        goto yy1145;-      if (yych <= ':')-        goto yy1129;-      goto yy1132;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy1129;-      } else {-        if (yych <= '`')-          goto yy1129;-        if (yych >= '{')-          goto yy1129;-      }-    }-  yy1145:-    yych = *++p;-    if (yych <= ';') {-      if (yych <= '/')-        goto yy1129;-      if (yych <= '9')-        goto yy1146;-      if (yych <= ':')-        goto yy1129;-      goto yy1132;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy1129;-      } else {-        if (yych <= '`')-          goto yy1129;-        if (yych >= '{')-          goto yy1129;-      }-    }-  yy1146:-    yych = *++p;-    if (yych <= ';') {-      if (yych <= '/')-        goto yy1129;-      if (yych <= '9')-        goto yy1147;-      if (yych <= ':')-        goto yy1129;-      goto yy1132;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy1129;-      } else {-        if (yych <= '`')-          goto yy1129;-        if (yych >= '{')-          goto yy1129;-      }-    }-  yy1147:-    yych = *++p;-    if (yych <= ';') {-      if (yych <= '/')-        goto yy1129;-      if (yych <= '9')-        goto yy1148;-      if (yych <= ':')-        goto yy1129;-      goto yy1132;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy1129;-      } else {-        if (yych <= '`')-          goto yy1129;-        if (yych >= '{')-          goto yy1129;-      }-    }-  yy1148:-    yych = *++p;-    if (yych <= ';') {-      if (yych <= '/')-        goto yy1129;-      if (yych <= '9')-        goto yy1149;-      if (yych <= ':')-        goto yy1129;-      goto yy1132;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy1129;-      } else {-        if (yych <= '`')-          goto yy1129;-        if (yych >= '{')-          goto yy1129;-      }-    }-  yy1149:-    yych = *++p;-    if (yych <= ';') {-      if (yych <= '/')-        goto yy1129;-      if (yych <= '9')-        goto yy1150;-      if (yych <= ':')-        goto yy1129;-      goto yy1132;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy1129;-      } else {-        if (yych <= '`')-          goto yy1129;-        if (yych >= '{')-          goto yy1129;-      }-    }-  yy1150:-    yych = *++p;-    if (yych <= ';') {-      if (yych <= '/')-        goto yy1129;-      if (yych <= '9')-        goto yy1151;-      if (yych <= ':')-        goto yy1129;-      goto yy1132;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy1129;-      } else {-        if (yych <= '`')-          goto yy1129;-        if (yych >= '{')-          goto yy1129;-      }-    }-  yy1151:-    yych = *++p;-    if (yych <= ';') {-      if (yych <= '/')-        goto yy1129;-      if (yych <= '9')-        goto yy1152;-      if (yych <= ':')-        goto yy1129;-      goto yy1132;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy1129;-      } else {-        if (yych <= '`')-          goto yy1129;-        if (yych >= '{')-          goto yy1129;-      }-    }-  yy1152:-    yych = *++p;-    if (yych <= ';') {-      if (yych <= '/')-        goto yy1129;-      if (yych <= '9')-        goto yy1153;-      if (yych <= ':')-        goto yy1129;-      goto yy1132;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy1129;-      } else {-        if (yych <= '`')-          goto yy1129;-        if (yych >= '{')-          goto yy1129;-      }-    }-  yy1153:-    yych = *++p;-    if (yych <= ';') {-      if (yych <= '/')-        goto yy1129;-      if (yych <= '9')-        goto yy1154;-      if (yych <= ':')-        goto yy1129;-      goto yy1132;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy1129;-      } else {-        if (yych <= '`')-          goto yy1129;-        if (yych >= '{')-          goto yy1129;-      }-    }-  yy1154:-    yych = *++p;-    if (yych <= ';') {-      if (yych <= '/')-        goto yy1129;-      if (yych <= '9')-        goto yy1155;-      if (yych <= ':')-        goto yy1129;-      goto yy1132;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy1129;-      } else {-        if (yych <= '`')-          goto yy1129;-        if (yych >= '{')-          goto yy1129;-      }-    }-  yy1155:-    yych = *++p;-    if (yych <= ';') {-      if (yych <= '/')-        goto yy1129;-      if (yych <= '9')-        goto yy1156;-      if (yych <= ':')-        goto yy1129;-      goto yy1132;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy1129;-      } else {-        if (yych <= '`')-          goto yy1129;-        if (yych >= '{')-          goto yy1129;-      }-    }-  yy1156:-    yych = *++p;-    if (yych <= ';') {-      if (yych <= '/')-        goto yy1129;-      if (yych <= '9')-        goto yy1157;-      if (yych <= ':')-        goto yy1129;-      goto yy1132;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy1129;-      } else {-        if (yych <= '`')-          goto yy1129;-        if (yych >= '{')-          goto yy1129;-      }-    }-  yy1157:-    yych = *++p;-    if (yych <= ';') {-      if (yych <= '/')-        goto yy1129;-      if (yych <= '9')-        goto yy1158;-      if (yych <= ':')-        goto yy1129;-      goto yy1132;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy1129;-      } else {-        if (yych <= '`')-          goto yy1129;-        if (yych >= '{')-          goto yy1129;-      }-    }-  yy1158:-    yych = *++p;-    if (yych <= ';') {-      if (yych <= '/')-        goto yy1129;-      if (yych <= '9')-        goto yy1159;-      if (yych <= ':')-        goto yy1129;-      goto yy1132;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy1129;-      } else {-        if (yych <= '`')-          goto yy1129;-        if (yych >= '{')-          goto yy1129;-      }-    }-  yy1159:-    yych = *++p;-    if (yych <= ';') {-      if (yych <= '/')-        goto yy1129;-      if (yych <= '9')-        goto yy1160;-      if (yych <= ':')-        goto yy1129;-      goto yy1132;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy1129;-      } else {-        if (yych <= '`')-          goto yy1129;-        if (yych >= '{')-          goto yy1129;-      }-    }-  yy1160:-    yych = *++p;-    if (yych <= ';') {-      if (yych <= '/')-        goto yy1129;-      if (yych <= '9')-        goto yy1161;-      if (yych <= ':')-        goto yy1129;-      goto yy1132;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy1129;-      } else {-        if (yych <= '`')-          goto yy1129;-        if (yych >= '{')-          goto yy1129;-      }-    }-  yy1161:-    yych = *++p;-    if (yych <= ';') {-      if (yych <= '/')-        goto yy1129;-      if (yych <= '9')-        goto yy1162;-      if (yych <= ':')-        goto yy1129;-      goto yy1132;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy1129;-      } else {-        if (yych <= '`')-          goto yy1129;-        if (yych >= '{')-          goto yy1129;-      }-    }-  yy1162:-    yych = *++p;-    if (yych <= ';') {-      if (yych <= '/')-        goto yy1129;-      if (yych <= '9')-        goto yy1163;-      if (yych <= ':')-        goto yy1129;-      goto yy1132;-    } else {-      if (yych <= 'Z') {-        if (yych <= '@')-          goto yy1129;-      } else {-        if (yych <= '`')-          goto yy1129;-        if (yych >= '{')-          goto yy1129;-      }-    }-  yy1163:-    yych = *++p;-    if (yych == ';')-      goto yy1132;-    goto yy1129;-  yy1164:-    yych = *++p;-    if (yych <= '@') {-      if (yych <= '/')-        goto yy1129;-      if (yych <= '9')-        goto yy1172;-      goto yy1129;-    } else {-      if (yych <= 'F')-        goto yy1172;-      if (yych <= '`')-        goto yy1129;-      if (yych <= 'f')-        goto yy1172;-      goto yy1129;-    }-  yy1165:-    yych = *++p;-    if (yych <= '/')-      goto yy1129;-    if (yych <= '9')-      goto yy1166;-    if (yych == ';')-      goto yy1132;-    goto yy1129;-  yy1166:-    yych = *++p;-    if (yych <= '/')-      goto yy1129;-    if (yych <= '9')-      goto yy1167;-    if (yych == ';')-      goto yy1132;-    goto yy1129;-  yy1167:-    yych = *++p;-    if (yych <= '/')-      goto yy1129;-    if (yych <= '9')-      goto yy1168;-    if (yych == ';')-      goto yy1132;-    goto yy1129;-  yy1168:-    yych = *++p;-    if (yych <= '/')-      goto yy1129;-    if (yych <= '9')-      goto yy1169;-    if (yych == ';')-      goto yy1132;-    goto yy1129;-  yy1169:-    yych = *++p;-    if (yych <= '/')-      goto yy1129;-    if (yych <= '9')-      goto yy1170;-    if (yych == ';')-      goto yy1132;-    goto yy1129;-  yy1170:-    yych = *++p;-    if (yych <= '/')-      goto yy1129;-    if (yych <= '9')-      goto yy1171;-    if (yych == ';')-      goto yy1132;-    goto yy1129;-  yy1171:-    yych = *++p;-    if (yych <= '/')-      goto yy1129;-    if (yych <= '9')-      goto yy1163;-    if (yych == ';')-      goto yy1132;-    goto yy1129;-  yy1172:-    yych = *++p;-    if (yych <= ';') {-      if (yych <= '/')-        goto yy1129;-      if (yych <= '9')-        goto yy1173;-      if (yych <= ':')-        goto yy1129;-      goto yy1132;-    } else {-      if (yych <= 'F') {-        if (yych <= '@')-          goto yy1129;-      } else {-        if (yych <= '`')-          goto yy1129;-        if (yych >= 'g')-          goto yy1129;-      }-    }-  yy1173:-    yych = *++p;-    if (yych <= ';') {-      if (yych <= '/')-        goto yy1129;-      if (yych <= '9')-        goto yy1174;-      if (yych <= ':')-        goto yy1129;-      goto yy1132;-    } else {-      if (yych <= 'F') {-        if (yych <= '@')-          goto yy1129;-      } else {-        if (yych <= '`')-          goto yy1129;-        if (yych >= 'g')-          goto yy1129;-      }-    }-  yy1174:-    yych = *++p;-    if (yych <= ';') {-      if (yych <= '/')-        goto yy1129;-      if (yych <= '9')-        goto yy1175;-      if (yych <= ':')-        goto yy1129;-      goto yy1132;-    } else {-      if (yych <= 'F') {-        if (yych <= '@')-          goto yy1129;-      } else {-        if (yych <= '`')-          goto yy1129;-        if (yych >= 'g')-          goto yy1129;-      }-    }-  yy1175:-    yych = *++p;-    if (yych <= ';') {-      if (yych <= '/')-        goto yy1129;-      if (yych <= '9')-        goto yy1176;-      if (yych <= ':')-        goto yy1129;-      goto yy1132;-    } else {-      if (yych <= 'F') {-        if (yych <= '@')-          goto yy1129;-      } else {-        if (yych <= '`')-          goto yy1129;-        if (yych >= 'g')-          goto yy1129;-      }-    }-  yy1176:-    yych = *++p;-    if (yych <= ';') {-      if (yych <= '/')-        goto yy1129;-      if (yych <= '9')-        goto yy1177;-      if (yych <= ':')-        goto yy1129;-      goto yy1132;-    } else {-      if (yych <= 'F') {-        if (yych <= '@')-          goto yy1129;-      } else {-        if (yych <= '`')-          goto yy1129;-        if (yych >= 'g')-          goto yy1129;-      }-    }-  yy1177:-    yych = *++p;-    if (yych <= ';') {-      if (yych <= '/')-        goto yy1129;-      if (yych <= '9')-        goto yy1178;-      if (yych <= ':')-        goto yy1129;-      goto yy1132;-    } else {-      if (yych <= 'F') {-        if (yych <= '@')-          goto yy1129;-      } else {-        if (yych <= '`')-          goto yy1129;-        if (yych >= 'g')-          goto yy1129;-      }-    }-  yy1178:-    ++p;-    if ((yych = *p) <= ';') {-      if (yych <= '/')-        goto yy1129;-      if (yych <= '9')-        goto yy1163;-      if (yych <= ':')-        goto yy1129;-      goto yy1132;-    } else {-      if (yych <= 'F') {-        if (yych <= '@')-          goto yy1129;-        goto yy1163;-      } else {-        if (yych <= '`')-          goto yy1129;-        if (yych <= 'f')-          goto yy1163;-        goto yy1129;-      }-    }-  }-}--// 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 yy1183;-        if (yych >= 'F')-          goto yy1184;-      } else {-        if (yych == 'J')-          goto yy1185;-        if (yych >= 'V')-          goto yy1186;-      }-    } else {-      if (yych <= 'f') {-        if (yych == 'd')-          goto yy1183;-        if (yych >= 'f')-          goto yy1184;-      } else {-        if (yych <= 'j') {-          if (yych >= 'j')-            goto yy1185;-        } else {-          if (yych == 'v')-            goto yy1186;-        }-      }-    }-    ++p;-  yy1182 : { return 0; }-  yy1183:-    yyaccept = 0;-    yych = *(marker = ++p);-    if (yych == 'A')-      goto yy1209;-    if (yych == 'a')-      goto yy1209;-    goto yy1182;-  yy1184:-    yyaccept = 0;-    yych = *(marker = ++p);-    if (yych == 'I')-      goto yy1206;-    if (yych == 'i')-      goto yy1206;-    goto yy1182;-  yy1185:-    yyaccept = 0;-    yych = *(marker = ++p);-    if (yych == 'A')-      goto yy1197;-    if (yych == 'a')-      goto yy1197;-    goto yy1182;-  yy1186:-    yyaccept = 0;-    yych = *(marker = ++p);-    if (yych == 'B')-      goto yy1187;-    if (yych != 'b')-      goto yy1182;-  yy1187:-    yych = *++p;-    if (yych == 'S')-      goto yy1189;-    if (yych == 's')-      goto yy1189;-  yy1188:-    p = marker;-    if (yyaccept == 0) {-      goto yy1182;-    } else {-      goto yy1196;-    }-  yy1189:-    yych = *++p;-    if (yych == 'C')-      goto yy1190;-    if (yych != 'c')-      goto yy1188;-  yy1190:-    yych = *++p;-    if (yych == 'R')-      goto yy1191;-    if (yych != 'r')-      goto yy1188;-  yy1191:-    yych = *++p;-    if (yych == 'I')-      goto yy1192;-    if (yych != 'i')-      goto yy1188;-  yy1192:-    yych = *++p;-    if (yych == 'P')-      goto yy1193;-    if (yych != 'p')-      goto yy1188;-  yy1193:-    yych = *++p;-    if (yych == 'T')-      goto yy1194;-    if (yych != 't')-      goto yy1188;-  yy1194:-    yych = *++p;-    if (yych != ':')-      goto yy1188;-  yy1195:-    ++p;-  yy1196 : { return (bufsize_t)(p - start); }-  yy1197:-    yych = *++p;-    if (yych == 'V')-      goto yy1198;-    if (yych != 'v')-      goto yy1188;-  yy1198:-    yych = *++p;-    if (yych == 'A')-      goto yy1199;-    if (yych != 'a')-      goto yy1188;-  yy1199:-    yych = *++p;-    if (yych == 'S')-      goto yy1200;-    if (yych != 's')-      goto yy1188;-  yy1200:-    yych = *++p;-    if (yych == 'C')-      goto yy1201;-    if (yych != 'c')-      goto yy1188;-  yy1201:-    yych = *++p;-    if (yych == 'R')-      goto yy1202;-    if (yych != 'r')-      goto yy1188;-  yy1202:-    yych = *++p;-    if (yych == 'I')-      goto yy1203;-    if (yych != 'i')-      goto yy1188;-  yy1203:-    yych = *++p;-    if (yych == 'P')-      goto yy1204;-    if (yych != 'p')-      goto yy1188;-  yy1204:-    yych = *++p;-    if (yych == 'T')-      goto yy1205;-    if (yych != 't')-      goto yy1188;-  yy1205:-    yych = *++p;-    if (yych == ':')-      goto yy1195;-    goto yy1188;-  yy1206:-    yych = *++p;-    if (yych == 'L')-      goto yy1207;-    if (yych != 'l')-      goto yy1188;-  yy1207:-    yych = *++p;-    if (yych == 'E')-      goto yy1208;-    if (yych != 'e')-      goto yy1188;-  yy1208:-    yych = *++p;-    if (yych == ':')-      goto yy1195;-    goto yy1188;-  yy1209:-    yych = *++p;-    if (yych == 'T')-      goto yy1210;-    if (yych != 't')-      goto yy1188;-  yy1210:-    yych = *++p;-    if (yych == 'A')-      goto yy1211;-    if (yych != 'a')-      goto yy1188;-  yy1211:-    yych = *++p;-    if (yych != ':')-      goto yy1188;-    yyaccept = 1;-    yych = *(marker = ++p);-    if (yych == 'I')-      goto yy1213;-    if (yych != 'i')-      goto yy1196;-  yy1213:-    yych = *++p;-    if (yych == 'M')-      goto yy1214;-    if (yych != 'm')-      goto yy1188;-  yy1214:-    yych = *++p;-    if (yych == 'A')-      goto yy1215;-    if (yych != 'a')-      goto yy1188;-  yy1215:-    yych = *++p;-    if (yych == 'G')-      goto yy1216;-    if (yych != 'g')-      goto yy1188;-  yy1216:-    yych = *++p;-    if (yych == 'E')-      goto yy1217;-    if (yych != 'e')-      goto yy1188;-  yy1217:-    yych = *++p;-    if (yych != '/')-      goto yy1188;-    yych = *++p;-    if (yych <= 'W') {-      if (yych <= 'J') {-        if (yych == 'G')-          goto yy1220;-        if (yych <= 'I')-          goto yy1188;-        goto yy1221;-      } else {-        if (yych == 'P')-          goto yy1219;-        if (yych <= 'V')-          goto yy1188;-        goto yy1222;-      }-    } else {-      if (yych <= 'j') {-        if (yych == 'g')-          goto yy1220;-        if (yych <= 'i')-          goto yy1188;-        goto yy1221;-      } else {-        if (yych <= 'p') {-          if (yych <= 'o')-            goto yy1188;-        } else {-          if (yych == 'w')-            goto yy1222;-          goto yy1188;-        }-      }-    }-  yy1219:-    yych = *++p;-    if (yych == 'N')-      goto yy1230;-    if (yych == 'n')-      goto yy1230;-    goto yy1188;-  yy1220:-    yych = *++p;-    if (yych == 'I')-      goto yy1229;-    if (yych == 'i')-      goto yy1229;-    goto yy1188;-  yy1221:-    yych = *++p;-    if (yych == 'P')-      goto yy1227;-    if (yych == 'p')-      goto yy1227;-    goto yy1188;-  yy1222:-    yych = *++p;-    if (yych == 'E')-      goto yy1223;-    if (yych != 'e')-      goto yy1188;-  yy1223:-    yych = *++p;-    if (yych == 'B')-      goto yy1224;-    if (yych != 'b')-      goto yy1188;-  yy1224:-    yych = *++p;-    if (yych == 'P')-      goto yy1225;-    if (yych != 'p')-      goto yy1188;-  yy1225:-    ++p;-    { return 0; }-  yy1227:-    yych = *++p;-    if (yych == 'E')-      goto yy1228;-    if (yych != 'e')-      goto yy1188;-  yy1228:-    yych = *++p;-    if (yych == 'G')-      goto yy1225;-    if (yych == 'g')-      goto yy1225;-    goto yy1188;-  yy1229:-    yych = *++p;-    if (yych == 'F')-      goto yy1225;-    if (yych == 'f')-      goto yy1225;-    goto yy1188;-  yy1230:-    ++p;-    if ((yych = *p) == 'G')-      goto yy1225;-    if (yych == 'g')-      goto yy1225;-    goto yy1188;-  }+/* Generated by re2c 1.0.3 */+#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,  96, 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); }+}+ }
cbits/scanners.h view
@@ -1,7 +1,7 @@ #ifndef CMARK_SCANNERS_H #define CMARK_SCANNERS_H -#include "cmark.h"+#include "cmark-gfm.h" #include "chunk.h"  #ifdef __cplusplus@@ -31,6 +31,7 @@ bufsize_t _scan_close_code_fence(const unsigned char *p); bufsize_t _scan_entity(const unsigned char *p); bufsize_t _scan_dangerous_url(const unsigned char *p);+bufsize_t _scan_footnote_definition(const unsigned char *p);  #define scan_scheme(c, n) _scan_at(&_scan_scheme, c, n) #define scan_autolink_uri(c, n) _scan_at(&_scan_autolink_uri, c, n)@@ -54,6 +55,7 @@ #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) #define scan_dangerous_url(c, n) _scan_at(&_scan_dangerous_url, c, n)+#define scan_footnote_definition(c, n) _scan_at(&_scan_footnote_definition, c, n)  #ifdef __cplusplus }
cbits/strikethrough.c view
@@ -1,5 +1,6 @@ #include "strikethrough.h" #include <parser.h>+#include <render.h>  cmark_node_type CMARK_NODE_STRIKETHROUGH; @@ -26,7 +27,8 @@   res->start_line = res->end_line = cmark_inline_parser_get_line(inline_parser);   res->start_column = cmark_inline_parser_get_column(inline_parser) - delims; -  if (left_flanking || right_flanking) {+  if ((left_flanking || right_flanking) &&+      (!(parser->options & CMARK_OPT_STRIKETHROUGH_DOUBLE_TILDE) || delims == 2)) {     cmark_inline_parser_push_delimiter(inline_parser, character, left_flanking,                                        right_flanking, res);   }@@ -49,7 +51,6 @@    cmark_node_set_syntax_extension(strikethrough, self); -  cmark_node_set_string_content(strikethrough, "~");   tmp = cmark_node_next(opener->inl_text);    while (tmp) {@@ -92,7 +93,7 @@ static void commonmark_render(cmark_syntax_extension *extension,                               cmark_renderer *renderer, cmark_node *node,                               cmark_event_type ev_type, int options) {-  renderer->out(renderer, node, cmark_node_get_string_content(node), false, LITERAL);+  renderer->out(renderer, node, "~~", false, LITERAL); }  static void latex_render(cmark_syntax_extension *extension,@@ -131,6 +132,12 @@   } } +static void plaintext_render(cmark_syntax_extension *extension,+                             cmark_renderer *renderer, cmark_node *node,+                             cmark_event_type ev_type, int options) {+  renderer->out(renderer, node, "~", false, LITERAL);+}+ cmark_syntax_extension *create_strikethrough_extension(void) {   cmark_syntax_extension *ext = cmark_syntax_extension_new("strikethrough");   cmark_llist *special_chars = NULL;@@ -141,6 +148,7 @@   cmark_syntax_extension_set_latex_render_func(ext, latex_render);   cmark_syntax_extension_set_man_render_func(ext, man_render);   cmark_syntax_extension_set_html_render_func(ext, html_render);+  cmark_syntax_extension_set_plaintext_render_func(ext, plaintext_render);   CMARK_NODE_STRIKETHROUGH = cmark_syntax_extension_add_node(1);    cmark_syntax_extension_set_match_inline_func(ext, match);@@ -149,6 +157,8 @@   cmark_mem *mem = cmark_get_default_mem_allocator();   special_chars = cmark_llist_append(mem, special_chars, (void *)'~');   cmark_syntax_extension_set_special_inline_chars(ext, special_chars);++  cmark_syntax_extension_set_emphasis(ext, 1);    return ext; }
cbits/strikethrough.h view
@@ -1,7 +1,7 @@-#ifndef STRIKETHROUGH_H-#define STRIKETHROUGH_H+#ifndef CMARK_GFM_STRIKETHROUGH_H+#define CMARK_GFM_STRIKETHROUGH_H -#include "core-extensions.h"+#include "cmark-gfm-core-extensions.h"  extern cmark_node_type CMARK_NODE_STRIKETHROUGH; cmark_syntax_extension *create_strikethrough_extension(void);
cbits/syntax_extension.c view
@@ -1,6 +1,7 @@ #include <stdlib.h>+#include <assert.h> -#include "cmark.h"+#include "cmark-gfm.h" #include "syntax_extension.h" #include "buffer.h" @@ -34,6 +35,11 @@   }    return *ref = (cmark_node_type) ((int) *ref + 1);+}++void cmark_syntax_extension_set_emphasis(cmark_syntax_extension *extension,+                                         int emphasis) {+  extension->emphasis = emphasis == 1; }  void cmark_syntax_extension_set_open_block_func(cmark_syntax_extension *extension,
cbits/syntax_extension.h view
@@ -1,8 +1,9 @@ #ifndef CMARK_SYNTAX_EXTENSION_H #define CMARK_SYNTAX_EXTENSION_H -#include "cmark.h"-#include "cmark_extension_api.h"+#include "cmark-gfm.h"+#include "cmark-gfm-extension_api.h"+#include "config.h"  struct cmark_syntax_extension {   cmark_match_block_func          last_block_matches;@@ -12,6 +13,7 @@   cmark_llist                   * special_inline_chars;   char                          * name;   void                          * priv;+  bool                            emphasis;   cmark_free_func                 free_function;   cmark_get_type_string_func      get_type_string_func;   cmark_can_contain_func          can_contain_func;
cbits/table.c view
@@ -1,9 +1,10 @@-#include <cmark_extension_api.h>+#include <cmark-gfm-extension_api.h> #include <html.h> #include <inlines.h> #include <parser.h> #include <references.h> #include <string.h>+#include <render.h>  #include "ext_scanners.h" #include "strikethrough.h"@@ -541,6 +542,18 @@   } } +static void html_table_add_align(cmark_strbuf* html, const char* align, int options) {+  if (options & CMARK_OPT_TABLE_PREFER_STYLE_ATTRIBUTES) {+    cmark_strbuf_puts(html, " style=\"text-align: ");+    cmark_strbuf_puts(html, align);+    cmark_strbuf_puts(html, "\"");+  } else {+    cmark_strbuf_puts(html, " align=\"");+    cmark_strbuf_puts(html, align);+    cmark_strbuf_puts(html, "\"");+  }+}+ struct html_table_state {   unsigned need_closing_table_body : 1;   unsigned in_table_header : 1;@@ -565,10 +578,15 @@       cmark_strbuf_putc(html, '>');       table_state->need_closing_table_body = false;     } else {-      if (table_state->need_closing_table_body)+      if (table_state->need_closing_table_body) {+        cmark_html_render_cr(html);         cmark_strbuf_puts(html, "</tbody>");+        cmark_html_render_cr(html);+      }       table_state->need_closing_table_body = false;-      cmark_strbuf_puts(html, "</table>\n");+      cmark_html_render_cr(html);+      cmark_strbuf_puts(html, "</table>");+      cmark_html_render_cr(html);     }   } else if (node->type == CMARK_NODE_TABLE_ROW) {     if (entering) {@@ -577,6 +595,10 @@         table_state->in_table_header = 1;         cmark_strbuf_puts(html, "<thead>");         cmark_html_render_cr(html);+      } else if (!table_state->need_closing_table_body) {+        cmark_strbuf_puts(html, "<tbody>");+        cmark_html_render_cr(html);+        table_state->need_closing_table_body = 1;       }       cmark_strbuf_puts(html, "<tr");       cmark_html_render_sourcepos(node, html, options);@@ -587,9 +609,6 @@       if (((node_table_row *)node->as.opaque)->is_header) {         cmark_html_render_cr(html);         cmark_strbuf_puts(html, "</thead>");-        cmark_html_render_cr(html);-        cmark_strbuf_puts(html, "<tbody>");-        table_state->need_closing_table_body = 1;         table_state->in_table_header = false;       }     }@@ -609,9 +628,9 @@           break;        switch (alignments[i]) {-      case 'l': cmark_strbuf_puts(html, " align=\"left\""); break;-      case 'c': cmark_strbuf_puts(html, " align=\"center\""); break;-      case 'r': cmark_strbuf_puts(html, " align=\"right\""); break;+      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;       }        cmark_html_render_sourcepos(node, html, options);@@ -666,14 +685,14 @@   return self; } -uint16_t cmarkextensions_get_table_columns(cmark_node *node) {+uint16_t cmark_gfm_extensions_get_table_columns(cmark_node *node) {   if (node->type != CMARK_NODE_TABLE)     return 0;    return ((node_table *)node->as.opaque)->n_columns; } -uint8_t *cmarkextensions_get_table_alignments(cmark_node *node) {+uint8_t *cmark_gfm_extensions_get_table_alignments(cmark_node *node) {   if (node->type != CMARK_NODE_TABLE)     return 0; 
cbits/table.h view
@@ -1,7 +1,11 @@-#ifndef TABLE_H-#define TABLE_H+#ifndef CMARK_GFM_TABLE_H+#define CMARK_GFM_TABLE_H -#include "core-extensions.h"+#include "cmark-gfm-core-extensions.h"+++extern cmark_node_type CMARK_NODE_TABLE, CMARK_NODE_TABLE_ROW,+    CMARK_NODE_TABLE_CELL;  cmark_syntax_extension *create_table_extension(void); 
cbits/tagfilter.h view
@@ -1,7 +1,7 @@-#ifndef TAGFILTER_H-#define TAGFILTER_H+#ifndef CMARK_GFM_TAGFILTER_H+#define CMARK_GFM_TAGFILTER_H -#include "core-extensions.h"+#include "cmark-gfm-core-extensions.h"  cmark_syntax_extension *create_tagfilter_extension(void); 
cbits/utf8.h view
@@ -8,24 +8,24 @@ extern "C" { #endif -CMARK_EXPORT+CMARK_GFM_EXPORT void cmark_utf8proc_case_fold(cmark_strbuf *dest, const uint8_t *str,                               bufsize_t len); -CMARK_EXPORT+CMARK_GFM_EXPORT void cmark_utf8proc_encode_char(int32_t uc, cmark_strbuf *buf); -CMARK_EXPORT+CMARK_GFM_EXPORT int cmark_utf8proc_iterate(const uint8_t *str, bufsize_t str_len, int32_t *dst); -CMARK_EXPORT+CMARK_GFM_EXPORT void cmark_utf8proc_check(cmark_strbuf *dest, const uint8_t *line,                           bufsize_t size); -CMARK_EXPORT+CMARK_GFM_EXPORT int cmark_utf8proc_is_space(int32_t uc); -CMARK_EXPORT+CMARK_GFM_EXPORT int cmark_utf8proc_is_punctuation(int32_t uc);  #ifdef __cplusplus
cbits/xml.c view
@@ -4,7 +4,7 @@ #include <assert.h>  #include "config.h"-#include "cmark.h"+#include "cmark-gfm.h" #include "node.h" #include "buffer.h" #include "houdini.h"
changelog view
@@ -1,3 +1,8 @@+cmark-gfm 0.1.5 (21 Aug 2018)++  * Update to cmark-gfm 0.28.3.gfm.15.+  * Fix build with system cmark-gfm (Felix Yan, #9).+ cmark-gfm 0.1.4 (2 Jul 2018)    * Extensions work correctly on big-endian systems (Ilias Tsitsimpis).
cmark-gfm.cabal view
@@ -1,5 +1,5 @@ name:                cmark-gfm-version:             0.1.4+version:             0.1.5 synopsis:            Fast, accurate GitHub Flavored Markdown parser and renderer description:   This package provides Haskell bindings for@@ -21,15 +21,15 @@ extra-source-files:  README.md                      changelog                      cbits/chunk.h-                     cbits/cmark_export.h+                     cbits/cmark-gfm_export.h                      cbits/debug.h                      cbits/inlines.h-                     cbits/cmark.h+                     cbits/cmark-gfm.h                      cbits/houdini.h                      cbits/references.h                      cbits/utf8.h                      cbits/parser.h-                     cbits/cmark_version.h+                     cbits/cmark-gfm_version.h                      cbits/html_unescape.h                      cbits/iterator.h                      cbits/node.h@@ -40,18 +40,20 @@                      cbits/scanners.h                      cbits/case_fold_switch.inc                      cbits/entities.inc-                     cbits/cmark_extension_api.h+                     cbits/cmark-gfm-extension_api.h                      cbits/html.h                      cbits/plugin.h                      cbits/registry.h                      cbits/syntax_extension.h                      cbits/autolink.h-                     cbits/core-extensions.h+                     cbits/cmark-gfm-core-extensions.h                      cbits/ext_scanners.h                      cbits/strikethrough.h                      cbits/table.h                      cbits/tagfilter.h-                     cbits/cmarkextensions_export.h+                     cbits/cmark-gfm-extensions_export.h+                     cbits/map.h+                     cbits/footnotes.h                      bench/sample.md                      bench/full-sample.md cabal-version:       >=1.14@@ -74,11 +76,11 @@   default-language:    Haskell2010   ghc-options:         -Wall -fno-warn-unused-do-bind   if flag(pkgconfig)-    pkgconfig-depends: libcmark-gfm+    Extra-Libraries: cmark-gfm cmark-gfmextensions   else     cc-options:        -Wall -std=c99     Include-dirs:      cbits-    Includes:          cmark.h+    Includes:          cmark-gfm.h     c-sources:         cbits/houdini_html_u.c                        cbits/references.c                        cbits/utf8.c@@ -110,6 +112,8 @@                        cbits/strikethrough.c                        cbits/table.c                        cbits/tagfilter.c+                       cbits/footnotes.c+                       cbits/map.c  benchmark bench-cmark-gfm   type:             exitcode-stdio-1.0
test/test-cmark.hs view
@@ -28,7 +28,7 @@   , "<p>www.google.com</p>\n" ~=? commonmarkToHtml [] [] "www.google.com"   , "<p><a href=\"http://www.google.com\">www.google.com</a></p>\n" ~=? commonmarkToHtml [] [extAutolink] "www.google.com"   , "<p>| a |\n| --- |\n| b |</p>\n" ~=? commonmarkToHtml [] [] "| a |\n| --- |\n| b |\n"-  , "<table>\n<thead>\n<tr>\n<th>a</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>b</td>\n</tr></tbody></table>\n" ~=? commonmarkToHtml [] [extTable] "| a |\n| --- |\n| b |\n"+  , "<table>\n<thead>\n<tr>\n<th>a</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>b</td>\n</tr>\n</tbody>\n</table>\n" ~=? commonmarkToHtml [] [extTable] "| a |\n| --- |\n| b |\n"   , 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 [] [] "<xmp>"   , "&lt;xmp>\n" ~=? commonmarkToHtml [] [extTagfilter] "<xmp>"