{"version":3,"sources":["webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/locate/strong.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/util/html.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/decode.js","webpack:///./node_modules/is-alphabetical/index.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/tokenizer.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/table.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/defaults.js","webpack:///./node_modules/path-browserify/index.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/locate/code-inline.js","webpack:///./node_modules/trim-trailing-lines/index.js","webpack:///./node_modules/react-markdown/lib/renderers.js","webpack:///./node_modules/state-toggle/index.js","webpack:///./node_modules/react-markdown/node_modules/replace-ext/index.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/text.js","webpack:///./node_modules/unherit/index.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/footnote-definition.js","webpack:///./node_modules/extend/index.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/parse.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/locate/break.js","webpack:///./node_modules/vfile-location/index.js","webpack:///./node_modules/react-markdown/lib/wrap-table-rows.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/locate/link.js","webpack:///./node_modules/is-buffer/index.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/emphasis.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/url.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/locate/url.js","webpack:///./node_modules/trough/wrap.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/locate/delete.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/locate/escape.js","webpack:///./node_modules/bail/index.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/unescape.js","webpack:///./node_modules/unist-util-remove-position/node_modules/unist-util-is/convert.js","webpack:///./node_modules/react-markdown/node_modules/unist-util-is/convert.js","webpack:///./node_modules/is-whitespace-character/index.js","webpack:///./node_modules/x-is-string/index.js","webpack:///./node_modules/react-markdown/lib/get-definitions.js","webpack:///./node_modules/react-markdown/lib/react-markdown.js","webpack:///./node_modules/is-alphanumerical/index.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/parser.js","webpack:///./node_modules/collapse-white-space/index.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/link.js","webpack:///./node_modules/markdown-escapes/index.js","webpack:///./node_modules/react-markdown/node_modules/unist-util-stringify-position/index.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/locate/tag.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/paragraph.js","webpack:///./node_modules/react-markdown/lib/uri-transformer.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/list.js","webpack:///./node_modules/inherits/inherits_browser.js","webpack:///./node_modules/repeat-string/index.js","webpack:///./node_modules/trim/index.js","webpack:///./node_modules/react-markdown/node_modules/vfile/core.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/auto-link.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/code-fenced.js","webpack:///./node_modules/react-is/index.js","webpack:///./node_modules/xtend/immutable.js","webpack:///./node_modules/react-markdown/lib/ast-to-react.js","webpack:///./node_modules/mdast-add-list-metadata/node_modules/unist-util-visit-parents/index.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/locate/emphasis.js","webpack:///./node_modules/react-markdown/node_modules/parse-entities/index.js","webpack:///./node_modules/react-markdown/node_modules/is-plain-obj/index.js","webpack:///./node_modules/react-markdown/node_modules/unified/index.js","webpack:///./node_modules/is-decimal/index.js","webpack:///./node_modules/unist-util-remove-position/node_modules/unist-util-visit/index.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/newline.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/reference.js","webpack:///./node_modules/unist-util-remove-position/index.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/code-inline.js","webpack:///./node_modules/react-markdown/lib/plugins/naive-html.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/util/interrupt.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/util/normalize.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/delete.js","webpack:///./node_modules/is-hexadecimal/index.js","webpack:///./node_modules/react-markdown/node_modules/unist-util-visit/index.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/html-inline.js","webpack:///./node_modules/react-markdown/node_modules/unist-util-visit-parents/index.js","webpack:///./node_modules/react-markdown/lib/symbols.js","webpack:///./node_modules/unist-util-remove-position/node_modules/unist-util-visit-parents/index.js","webpack:///./node_modules/react-markdown/node_modules/parse-entities/decode-entity.browser.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/heading-atx.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/code-indented.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/heading-setext.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/break.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/escape.js","webpack:///./node_modules/is-word-character/index.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/strong.js","webpack:///./node_modules/react-is/cjs/react-is.production.min.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/set-options.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/thematic-break.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/blockquote.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/html-block.js","webpack:///./node_modules/react-markdown/lib/plugins/disallow-node.js","webpack:///./node_modules/react-markdown/node_modules/vfile-message/index.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/definition.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/index.js","webpack:///./node_modules/react-markdown/node_modules/vfile/index.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/util/get-indentation.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/util/remove-indentation.js","webpack:///./node_modules/mdast-add-list-metadata/index.js","webpack:///./node_modules/trough/index.js"],"names":["module","exports","value","fromIndex","asterisk","indexOf","underscore","openTag","closeTag","openCloseTag","RegExp","tag","xtend","entities","ctx","decoder","raw","position","options","normalize","warning","handleWarning","offsets","offset","line","result","push","start","indent","reason","code","file","message","handler","text","reference","textContext","referenceContext","character","charCodeAt","type","location","index","length","method","name","matched","valueLength","self","this","tokens","methods","tokenizers","column","eat","now","updatePosition","onlyAtStart","atStart","notInList","inList","notInBlock","inBlock","notInLink","inLink","apply","fail","Error","eof","subvalue","lastIndex","pos","toOffset","Position","end","before","indentation","last","getOffset","node","prev","combined","n","l","concat","current","substring","validateEat","reset","test","parent","children","MERGEABLE_NODES","mergeable","call","exitStart","add","arguments","blockquote","commonmark","whitespace","silent","alignments","alignment","row","lines","queue","hasDash","align","cell","preamble","count","opening","lineCount","rows","table","lineIndex","pipeIndex","first","gfm","slice","join","splice","charAt","tokenizeInline","footnotes","pedantic","blocks","normalizeArray","parts","allowAboveRoot","up","i","unshift","filter","xs","f","res","resolve","resolvedPath","resolvedAbsolute","path","process","cwd","TypeError","split","p","isAbsolute","trailingSlash","substr","paths","Array","prototype","relative","from","to","trim","arr","fromParts","toParts","Math","min","samePartsLength","outputParts","sep","delimiter","dirname","hasRoot","matchedSlash","basename","ext","extname","startDot","startPart","preDotState","str","len","String","replace","React","supportsStringRender","parseInt","version","createElement","SimpleRenderer","props","getCoreProps","break","paragraph","emphasis","strong","thematicBreak","delete","link","image","linkReference","imageReference","bind","tableHead","tableBody","tableRow","tableCell","style","textAlign","undefined","coreProps","isHeader","root","useFragment","className","Fragment","list","attrs","toString","ordered","listItem","checkbox","checked","readOnly","definition","heading","level","inlineCode","language","html","skipHtml","isBlock","escapeHtml","comp","nodeProps","dangerouslySetInnerHTML","__html","virtualHtml","parsedHtml","cloneElement","element","key","state","context","npath","nFileName","tokenizer","inlineMethods","inlineTokenizers","locator","decode","content","source","inherits","Super","Of","From","parameters","footnoteDefinition","EXPRESSION_INITIAL_TAB","currentLine","subqueue","identifier","exit","C_BRACKET_OPEN","enterBlock","tokenizeBlock","hasOwn","Object","hasOwnProperty","toStr","defineProperty","gOPD","getOwnPropertyDescriptor","isArray","isPlainObject","obj","hasOwnConstructor","hasIsPrototypeOf","constructor","setProperty","target","enumerable","configurable","newValue","writable","getProperty","extend","src","copy","copyIsArray","clone","deep","removePosition","EXPRESSION_LINE_BREAKS","offsetToPositionFactory","indices","positionToOffsetFactory","isNaN","contents","toPosition","visit","wrap","isBuffer","readFloatLE","isSlowBuffer","_isBuffer","word","locate","marker","url","PROTOCOLS","PROTOCOLS_LENGTH","protocol","match","parenCount","nextCharacter","toLowerCase","enterLink","title","nonTerminated","fn","callback","invoked","params","done","error","then","err","escape","convert","Boolean","typeFactory","ok","anyFactory","matchesFactory","tests","checks","results","convertAll","re","fromCode","fromCharCode","getDefinitions","defs","reduce","definitions","child","href","_toConsumableArray","arr2","_arrayWithoutHoles","iter","Symbol","iterator","_iterableToArray","_nonIterableSpread","unified","parse","PropTypes","addListMetadata","naiveHtml","disallowNode","astToReact","wrapTableRows","uriTransformer","defaultRenderers","symbols","allTypes","keys","ReactMarkdown","parserOptions","allowedTypes","disallowedTypes","renderers","parser","plugins","applyParserPlugin","rawAst","renderProps","astPlugins","removalMethod","unwrapDisallowed","ofType","allowNode","ifNotMatch","renderHtml","hasHtmlParser","some","item","identity","HtmlParser","determineAstPlugins","transformedAst","runSync","ast","plugin","use","defaultProps","sourcePos","rawSourcePos","transformLinkUri","propTypes","string","bool","func","arrayOf","oneOf","oneOfType","linkTarget","transformImageUri","object","array","types","alphabetical","decimal","toggle","vfileLocation","unescape","Parser","doc","setOptions","proto","enterList","interruptParagraph","interruptList","interruptBlockquote","blockTokenizers","newline","indentedCode","fencedCode","atxHeading","setextHeading","footnote","autoLink","deletion","blockMethods","tokenizeFactory","own","LINK_MARKERS","COMMONMARK_LINK_MARKERS","closed","beforeURL","beforeTitle","hasMarker","markers","isImage","depth","alt","escapes","defaults","settings","default","point","trimTrailingLines","interrupt","size","interruptors","left","protocols","uri","colon","repeat","getIndent","removeIndent","nextIndex","startIndex","prefixed","currentMarker","prevEmpty","empty","items","allLines","emptyLines","enterTop","exitBlockquote","isLoose","indented","interuptors","LIST_ORDERED_COMMONMARK_MARKERS","LIST_ORDERED_MARKERS","LIST_UNORDERED_MARKERS","TAB_SIZE","trail","loose","EXPRESSION_LOOSE_LIST_ITEM","EXPRESSION_TASK_ITEM","EXPRESSION_BULLET","EXPRESSION_PEDANTIC_BULLET","EXPRESSION_INITIAL_INDENT","task","pedanticListItem","normalListItem","replacer","$0","max","bullet","rest","trimmedLines","$1","$2","$3","$4","Number","create","ctor","superCtor","super_","TempCtor","cache","num","right","buffer","VFile","encoding","order","prop","data","messages","history","assertPart","part","assertNonEmpty","assertPath","get","set","stem","MAILTO_LENGTH","hasAtCharacter","fenceCount","flag","exdentedContent","closing","exdentedClosing","lang","ReactIs","defaultNodePosition","renderer","isValidElementType","getNodeProps","resolveChildren","map","childNode","opts","isTagRenderer","sourcePosition","includeNodeIndex","parentChildCount","ref","assignDefined","nodeKey","tight","unwrapParagraphs","getListItemChildren","inline","columnAlignment","parsedChildren","el","Children","toArray","mergeNodeChildren","tree","visitor","stack","one","pop","all","legacy","invalid","hexadecimal","alphanumerical","decodeEntity","option","entityCharacters","namedEntity","terminated","characters","following","output","entity","begin","next","diff","additional","handleText","handleReference","warningContext","noop","hexa","attribute","bases","disallowed","flush","Function","x","getPrototypeOf","bail","vfile","trough","plain","attachers","transformers","namespace","frozen","freezeIndex","processor","assertUnfrozen","freeze","addPlugin","addList","addPreset","entry","find","assertParser","newable","stringify","Compiler","assertCompiler","assertNode","compile","run","complete","assertDone","processSync","destination","values","transformer","Infinity","cb","Promise","executor","reject","pipeline","asyncName","visitParents","CONTINUE","SKIP","EXIT","reverse","parents","bracketed","intro","referenceType","hard","soft","force","contentQueue","openingCount","found","tickQueue","selfClosingRe","simpleTagRe","open","currentParent","selfClosing","getSelfClosing","getSimpleTag","matching","matchingTag","findAndPull","fromNode","toNode","toIndex","virtual","interruptor","config","ignore","bools","collapseWhiteSpace","strikethrough","previous","preceding","inlineHTML","EXPRESSION_HTML_LINK_OPEN","EXPRESSION_HTML_LINK_CLOSE","is","subresult","toResult","step","char","document","innerHTML","textContent","blankQueue","subvalueQueue","CODE_INDENT","SETEXT_MARKERS","hardBreak","b","for","c","d","e","g","h","k","m","q","r","t","v","w","y","z","a","u","$$typeof","A","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Element","ForwardRef","Lazy","Memo","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isMemo","isPortal","isProfiler","isStrictMode","isSuspense","typeOf","markerCount","indents","sequence","sequences","untangle","mode","args","forEach","disallow","VMessagePrototype","VMessage","origin","range","parseOrigin","ruleId","fatal","isEnclosedURLCharacter","isUnclosedURLCharacter","unherit","Local","filePath","info","warn","stops","floor","maximum","padding","minIndent","matrix","shift","visitWithParents","listNode","fns","middleware","input"],"mappings":"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","file":"97d590be4b6e081609d07ad81e77227937b3c785-4b0d0cf9575ad5e6d813.js","sourcesContent":["'use strict';\n\nmodule.exports = locate;\n\nfunction locate(value, fromIndex) {\n  var asterisk = value.indexOf('**', fromIndex);\n  var underscore = value.indexOf('__', fromIndex);\n\n  if (underscore === -1) {\n    return asterisk;\n  }\n\n  if (asterisk === -1) {\n    return underscore;\n  }\n\n  return underscore < asterisk ? underscore : asterisk;\n}","'use strict';\n\nvar attributeName = '[a-zA-Z_:][a-zA-Z0-9:._-]*';\nvar unquoted = \"[^\\\"'=<>`\\\\u0000-\\\\u0020]+\";\nvar singleQuoted = '\\'[^\\']*\\'';\nvar doubleQuoted = '\"[^\"]*\"';\nvar attributeValue = '(?:' + unquoted + '|' + singleQuoted + '|' + doubleQuoted + ')';\nvar attribute = '(?:\\\\s+' + attributeName + '(?:\\\\s*=\\\\s*' + attributeValue + ')?)';\nvar openTag = '<[A-Za-z][A-Za-z0-9\\\\-]*' + attribute + '*\\\\s*\\\\/?>';\nvar closeTag = '<\\\\/[A-Za-z][A-Za-z0-9\\\\-]*\\\\s*>';\nvar comment = '<!---->|<!--(?:-?[^>-])(?:-?[^-])*-->';\nvar processing = '<[?].*?[?]>';\nvar declaration = '<![A-Za-z]+\\\\s+[^>]*>';\nvar cdata = '<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>';\nexports.openCloseTag = new RegExp('^(?:' + openTag + '|' + closeTag + ')');\nexports.tag = new RegExp('^(?:' + openTag + '|' + closeTag + '|' + comment + '|' + processing + '|' + declaration + '|' + cdata + ')');","'use strict';\n\nvar xtend = require('xtend');\n\nvar entities = require('parse-entities');\n\nmodule.exports = factory;\n/* Factory to create an entity decoder. */\n\nfunction factory(ctx) {\n  decoder.raw = decodeRaw;\n  return decoder;\n  /* Normalize `position` to add an `indent`. */\n\n  function normalize(position) {\n    var offsets = ctx.offset;\n    var line = position.line;\n    var result = [];\n\n    while (++line) {\n      if (!(line in offsets)) {\n        break;\n      }\n\n      result.push((offsets[line] || 0) + 1);\n    }\n\n    return {\n      start: position,\n      indent: result\n    };\n  }\n  /* Handle a warning.\n   * See https://github.com/wooorm/parse-entities\n   * for the warnings. */\n\n\n  function handleWarning(reason, position, code) {\n    if (code === 3) {\n      return;\n    }\n\n    ctx.file.message(reason, position);\n  }\n  /* Decode `value` (at `position`) into text-nodes. */\n\n\n  function decoder(value, position, handler) {\n    entities(value, {\n      position: normalize(position),\n      warning: handleWarning,\n      text: handler,\n      reference: handler,\n      textContext: ctx,\n      referenceContext: ctx\n    });\n  }\n  /* Decode `value` (at `position`) into a string. */\n\n\n  function decodeRaw(value, position, options) {\n    return entities(value, xtend(options, {\n      position: normalize(position),\n      warning: handleWarning\n    }));\n  }\n}","'use strict';\n\nmodule.exports = alphabetical; // Check if the given character code, or the character code at the first\n// character, is alphabetical.\n\nfunction alphabetical(character) {\n  var code = typeof character === 'string' ? character.charCodeAt(0) : character;\n  return code >= 97 && code <= 122 ||\n  /* a-z */\n  code >= 65 && code <= 90\n  /* A-Z */\n  ;\n}","'use strict';\n\nmodule.exports = factory;\nvar MERGEABLE_NODES = {\n  text: mergeText,\n  blockquote: mergeBlockquote\n};\n/* Check whether a node is mergeable with adjacent nodes. */\n\nfunction mergeable(node) {\n  var start;\n  var end;\n\n  if (node.type !== 'text' || !node.position) {\n    return true;\n  }\n\n  start = node.position.start;\n  end = node.position.end;\n  /* Only merge nodes which occupy the same size as their\n   * `value`. */\n\n  return start.line !== end.line || end.column - start.column === node.value.length;\n}\n/* Merge two text nodes: `node` into `prev`. */\n\n\nfunction mergeText(prev, node) {\n  prev.value += node.value;\n  return prev;\n}\n/* Merge two blockquotes: `node` into `prev`, unless in\n * CommonMark mode. */\n\n\nfunction mergeBlockquote(prev, node) {\n  if (this.options.commonmark) {\n    return node;\n  }\n\n  prev.children = prev.children.concat(node.children);\n  return prev;\n}\n/* Construct a tokenizer.  This creates both\n * `tokenizeInline` and `tokenizeBlock`. */\n\n\nfunction factory(type) {\n  return tokenize;\n  /* Tokenizer for a bound `type`. */\n\n  function tokenize(value, location) {\n    var self = this;\n    var offset = self.offset;\n    var tokens = [];\n    var methods = self[type + 'Methods'];\n    var tokenizers = self[type + 'Tokenizers'];\n    var line = location.line;\n    var column = location.column;\n    var index;\n    var length;\n    var method;\n    var name;\n    var matched;\n    var valueLength;\n    /* Trim white space only lines. */\n\n    if (!value) {\n      return tokens;\n    }\n    /* Expose on `eat`. */\n\n\n    eat.now = now;\n    eat.file = self.file;\n    /* Sync initial offset. */\n\n    updatePosition('');\n    /* Iterate over `value`, and iterate over all\n     * tokenizers.  When one eats something, re-iterate\n     * with the remaining value.  If no tokenizer eats,\n     * something failed (should not happen) and an\n     * exception is thrown. */\n\n    while (value) {\n      index = -1;\n      length = methods.length;\n      matched = false;\n\n      while (++index < length) {\n        name = methods[index];\n        method = tokenizers[name];\n\n        if (method && (\n        /* istanbul ignore next */\n        !method.onlyAtStart || self.atStart) && (!method.notInList || !self.inList) && (!method.notInBlock || !self.inBlock) && (!method.notInLink || !self.inLink)) {\n          valueLength = value.length;\n          method.apply(self, [eat, value]);\n          matched = valueLength !== value.length;\n\n          if (matched) {\n            break;\n          }\n        }\n      }\n      /* istanbul ignore if */\n\n\n      if (!matched) {\n        self.file.fail(new Error('Infinite loop'), eat.now());\n      }\n    }\n\n    self.eof = now();\n    return tokens;\n    /* Update line, column, and offset based on\n     * `value`. */\n\n    function updatePosition(subvalue) {\n      var lastIndex = -1;\n      var index = subvalue.indexOf('\\n');\n\n      while (index !== -1) {\n        line++;\n        lastIndex = index;\n        index = subvalue.indexOf('\\n', index + 1);\n      }\n\n      if (lastIndex === -1) {\n        column += subvalue.length;\n      } else {\n        column = subvalue.length - lastIndex;\n      }\n\n      if (line in offset) {\n        if (lastIndex !== -1) {\n          column += offset[line];\n        } else if (column <= offset[line]) {\n          column = offset[line] + 1;\n        }\n      }\n    }\n    /* Get offset.  Called before the first character is\n     * eaten to retrieve the range's offsets. */\n\n\n    function getOffset() {\n      var indentation = [];\n      var pos = line + 1;\n      /* Done.  Called when the last character is\n       * eaten to retrieve the range’s offsets. */\n\n      return function () {\n        var last = line + 1;\n\n        while (pos < last) {\n          indentation.push((offset[pos] || 0) + 1);\n          pos++;\n        }\n\n        return indentation;\n      };\n    }\n    /* Get the current position. */\n\n\n    function now() {\n      var pos = {\n        line: line,\n        column: column\n      };\n      pos.offset = self.toOffset(pos);\n      return pos;\n    }\n    /* Store position information for a node. */\n\n\n    function Position(start) {\n      this.start = start;\n      this.end = now();\n    }\n    /* Throw when a value is incorrectly eaten.\n     * This shouldn’t happen but will throw on new,\n     * incorrect rules. */\n\n\n    function validateEat(subvalue) {\n      /* istanbul ignore if */\n      if (value.substring(0, subvalue.length) !== subvalue) {\n        /* Capture stack-trace. */\n        self.file.fail(new Error('Incorrectly eaten value: please report this ' + 'warning on http://git.io/vg5Ft'), now());\n      }\n    }\n    /* Mark position and patch `node.position`. */\n\n\n    function position() {\n      var before = now();\n      return update;\n      /* Add the position to a node. */\n\n      function update(node, indent) {\n        var prev = node.position;\n        var start = prev ? prev.start : before;\n        var combined = [];\n        var n = prev && prev.end.line;\n        var l = before.line;\n        node.position = new Position(start);\n        /* If there was already a `position`, this\n         * node was merged.  Fixing `start` wasn’t\n         * hard, but the indent is different.\n         * Especially because some information, the\n         * indent between `n` and `l` wasn’t\n         * tracked.  Luckily, that space is\n         * (should be?) empty, so we can safely\n         * check for it now. */\n\n        if (prev && indent && prev.indent) {\n          combined = prev.indent;\n\n          if (n < l) {\n            while (++n < l) {\n              combined.push((offset[n] || 0) + 1);\n            }\n\n            combined.push(before.column);\n          }\n\n          indent = combined.concat(indent);\n        }\n\n        node.position.indent = indent || [];\n        return node;\n      }\n    }\n    /* Add `node` to `parent`s children or to `tokens`.\n     * Performs merges where possible. */\n\n\n    function add(node, parent) {\n      var children = parent ? parent.children : tokens;\n      var prev = children[children.length - 1];\n\n      if (prev && node.type === prev.type && node.type in MERGEABLE_NODES && mergeable(prev) && mergeable(node)) {\n        node = MERGEABLE_NODES[node.type].call(self, prev, node);\n      }\n\n      if (node !== prev) {\n        children.push(node);\n      }\n\n      if (self.atStart && tokens.length !== 0) {\n        self.exitStart();\n      }\n\n      return node;\n    }\n    /* Remove `subvalue` from `value`.\n     * `subvalue` must be at the start of `value`. */\n\n\n    function eat(subvalue) {\n      var indent = getOffset();\n      var pos = position();\n      var current = now();\n      validateEat(subvalue);\n      apply.reset = reset;\n      reset.test = test;\n      apply.test = test;\n      value = value.substring(subvalue.length);\n      updatePosition(subvalue);\n      indent = indent();\n      return apply;\n      /* Add the given arguments, add `position` to\n       * the returned node, and return the node. */\n\n      function apply(node, parent) {\n        return pos(add(pos(node), parent), indent);\n      }\n      /* Functions just like apply, but resets the\n       * content:  the line and column are reversed,\n       * and the eaten value is re-added.\n       * This is useful for nodes with a single\n       * type of content, such as lists and tables.\n       * See `apply` above for what parameters are\n       * expected. */\n\n\n      function reset() {\n        var node = apply.apply(null, arguments);\n        line = current.line;\n        column = current.column;\n        value = subvalue + value;\n        return node;\n      }\n      /* Test the position, after eating, and reverse\n       * to a not-eaten state. */\n\n\n      function test() {\n        var result = pos({});\n        line = current.line;\n        column = current.column;\n        value = subvalue + value;\n        return result.position;\n      }\n    }\n  }\n}","'use strict';\n\nvar whitespace = require('is-whitespace-character');\n\nmodule.exports = table;\nvar C_BACKSLASH = '\\\\';\nvar C_TICK = '`';\nvar C_DASH = '-';\nvar C_PIPE = '|';\nvar C_COLON = ':';\nvar C_SPACE = ' ';\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\nvar MIN_TABLE_COLUMNS = 1;\nvar MIN_TABLE_ROWS = 2;\nvar TABLE_ALIGN_LEFT = 'left';\nvar TABLE_ALIGN_CENTER = 'center';\nvar TABLE_ALIGN_RIGHT = 'right';\nvar TABLE_ALIGN_NONE = null;\n\nfunction table(eat, value, silent) {\n  var self = this;\n  var index;\n  var alignments;\n  var alignment;\n  var subvalue;\n  var row;\n  var length;\n  var lines;\n  var queue;\n  var character;\n  var hasDash;\n  var align;\n  var cell;\n  var preamble;\n  var count;\n  var opening;\n  var now;\n  var position;\n  var lineCount;\n  var line;\n  var rows;\n  var table;\n  var lineIndex;\n  var pipeIndex;\n  var first;\n  /* Exit when not in gfm-mode. */\n\n  if (!self.options.gfm) {\n    return;\n  }\n  /* Get the rows.\n   * Detecting tables soon is hard, so there are some\n   * checks for performance here, such as the minimum\n   * number of rows, and allowed characters in the\n   * alignment row. */\n\n\n  index = 0;\n  lineCount = 0;\n  length = value.length + 1;\n  lines = [];\n\n  while (index < length) {\n    lineIndex = value.indexOf(C_NEWLINE, index);\n    pipeIndex = value.indexOf(C_PIPE, index + 1);\n\n    if (lineIndex === -1) {\n      lineIndex = value.length;\n    }\n\n    if (pipeIndex === -1 || pipeIndex > lineIndex) {\n      if (lineCount < MIN_TABLE_ROWS) {\n        return;\n      }\n\n      break;\n    }\n\n    lines.push(value.slice(index, lineIndex));\n    lineCount++;\n    index = lineIndex + 1;\n  }\n  /* Parse the alignment row. */\n\n\n  subvalue = lines.join(C_NEWLINE);\n  alignments = lines.splice(1, 1)[0] || [];\n  index = 0;\n  length = alignments.length;\n  lineCount--;\n  alignment = false;\n  align = [];\n\n  while (index < length) {\n    character = alignments.charAt(index);\n\n    if (character === C_PIPE) {\n      hasDash = null;\n\n      if (alignment === false) {\n        if (first === false) {\n          return;\n        }\n      } else {\n        align.push(alignment);\n        alignment = false;\n      }\n\n      first = false;\n    } else if (character === C_DASH) {\n      hasDash = true;\n      alignment = alignment || TABLE_ALIGN_NONE;\n    } else if (character === C_COLON) {\n      if (alignment === TABLE_ALIGN_LEFT) {\n        alignment = TABLE_ALIGN_CENTER;\n      } else if (hasDash && alignment === TABLE_ALIGN_NONE) {\n        alignment = TABLE_ALIGN_RIGHT;\n      } else {\n        alignment = TABLE_ALIGN_LEFT;\n      }\n    } else if (!whitespace(character)) {\n      return;\n    }\n\n    index++;\n  }\n\n  if (alignment !== false) {\n    align.push(alignment);\n  }\n  /* Exit when without enough columns. */\n\n\n  if (align.length < MIN_TABLE_COLUMNS) {\n    return;\n  }\n  /* istanbul ignore if - never used (yet) */\n\n\n  if (silent) {\n    return true;\n  }\n  /* Parse the rows. */\n\n\n  position = -1;\n  rows = [];\n  table = eat(subvalue).reset({\n    type: 'table',\n    align: align,\n    children: rows\n  });\n\n  while (++position < lineCount) {\n    line = lines[position];\n    row = {\n      type: 'tableRow',\n      children: []\n    };\n    /* Eat a newline character when this is not the\n     * first row. */\n\n    if (position) {\n      eat(C_NEWLINE);\n    }\n    /* Eat the row. */\n\n\n    eat(line).reset(row, table);\n    length = line.length + 1;\n    index = 0;\n    queue = '';\n    cell = '';\n    preamble = true;\n    count = null;\n    opening = null;\n\n    while (index < length) {\n      character = line.charAt(index);\n\n      if (character === C_TAB || character === C_SPACE) {\n        if (cell) {\n          queue += character;\n        } else {\n          eat(character);\n        }\n\n        index++;\n        continue;\n      }\n\n      if (character === '' || character === C_PIPE) {\n        if (preamble) {\n          eat(character);\n        } else {\n          if (character && opening) {\n            queue += character;\n            index++;\n            continue;\n          }\n\n          if ((cell || character) && !preamble) {\n            subvalue = cell;\n\n            if (queue.length > 1) {\n              if (character) {\n                subvalue += queue.slice(0, queue.length - 1);\n                queue = queue.charAt(queue.length - 1);\n              } else {\n                subvalue += queue;\n                queue = '';\n              }\n            }\n\n            now = eat.now();\n            eat(subvalue)({\n              type: 'tableCell',\n              children: self.tokenizeInline(cell, now)\n            }, row);\n          }\n\n          eat(queue + character);\n          queue = '';\n          cell = '';\n        }\n      } else {\n        if (queue) {\n          cell += queue;\n          queue = '';\n        }\n\n        cell += character;\n\n        if (character === C_BACKSLASH && index !== length - 2) {\n          cell += line.charAt(index + 1);\n          index++;\n        }\n\n        if (character === C_TICK) {\n          count = 1;\n\n          while (line.charAt(index + 1) === character) {\n            cell += character;\n            index++;\n            count++;\n          }\n\n          if (!opening) {\n            opening = count;\n          } else if (count >= opening) {\n            opening = 0;\n          }\n        }\n      }\n\n      preamble = false;\n      index++;\n    }\n    /* Eat the alignment row. */\n\n\n    if (!position) {\n      eat(C_NEWLINE + alignments);\n    }\n  }\n\n  return table;\n}","'use strict';\n\nmodule.exports = {\n  position: true,\n  gfm: true,\n  commonmark: false,\n  footnotes: false,\n  pedantic: false,\n  blocks: require('./block-elements.json')\n};","// .dirname, .basename, and .extname methods are extracted from Node.js v8.11.1,\n// backported and transplited with Babel, with backwards-compat fixes\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes, empty elements, or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n  // if the path tries to go above the root, `up` ends up > 0\n  var up = 0;\n\n  for (var i = parts.length - 1; i >= 0; i--) {\n    var last = parts[i];\n\n    if (last === '.') {\n      parts.splice(i, 1);\n    } else if (last === '..') {\n      parts.splice(i, 1);\n      up++;\n    } else if (up) {\n      parts.splice(i, 1);\n      up--;\n    }\n  } // if the path is allowed to go above the root, restore leading ..s\n\n\n  if (allowAboveRoot) {\n    for (; up--; up) {\n      parts.unshift('..');\n    }\n  }\n\n  return parts;\n} // path.resolve([from ...], to)\n// posix version\n\n\nexports.resolve = function () {\n  var resolvedPath = '',\n      resolvedAbsolute = false;\n\n  for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n    var path = i >= 0 ? arguments[i] : process.cwd(); // Skip empty and invalid entries\n\n    if (typeof path !== 'string') {\n      throw new TypeError('Arguments to path.resolve must be strings');\n    } else if (!path) {\n      continue;\n    }\n\n    resolvedPath = path + '/' + resolvedPath;\n    resolvedAbsolute = path.charAt(0) === '/';\n  } // At this point the path should be resolved to a full absolute path, but\n  // handle relative paths to be safe (might happen when process.cwd() fails)\n  // Normalize the path\n\n\n  resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function (p) {\n    return !!p;\n  }), !resolvedAbsolute).join('/');\n  return (resolvedAbsolute ? '/' : '') + resolvedPath || '.';\n}; // path.normalize(path)\n// posix version\n\n\nexports.normalize = function (path) {\n  var isAbsolute = exports.isAbsolute(path),\n      trailingSlash = substr(path, -1) === '/'; // Normalize the path\n\n  path = normalizeArray(filter(path.split('/'), function (p) {\n    return !!p;\n  }), !isAbsolute).join('/');\n\n  if (!path && !isAbsolute) {\n    path = '.';\n  }\n\n  if (path && trailingSlash) {\n    path += '/';\n  }\n\n  return (isAbsolute ? '/' : '') + path;\n}; // posix version\n\n\nexports.isAbsolute = function (path) {\n  return path.charAt(0) === '/';\n}; // posix version\n\n\nexports.join = function () {\n  var paths = Array.prototype.slice.call(arguments, 0);\n  return exports.normalize(filter(paths, function (p, index) {\n    if (typeof p !== 'string') {\n      throw new TypeError('Arguments to path.join must be strings');\n    }\n\n    return p;\n  }).join('/'));\n}; // path.relative(from, to)\n// posix version\n\n\nexports.relative = function (from, to) {\n  from = exports.resolve(from).substr(1);\n  to = exports.resolve(to).substr(1);\n\n  function trim(arr) {\n    var start = 0;\n\n    for (; start < arr.length; start++) {\n      if (arr[start] !== '') break;\n    }\n\n    var end = arr.length - 1;\n\n    for (; end >= 0; end--) {\n      if (arr[end] !== '') break;\n    }\n\n    if (start > end) return [];\n    return arr.slice(start, end - start + 1);\n  }\n\n  var fromParts = trim(from.split('/'));\n  var toParts = trim(to.split('/'));\n  var length = Math.min(fromParts.length, toParts.length);\n  var samePartsLength = length;\n\n  for (var i = 0; i < length; i++) {\n    if (fromParts[i] !== toParts[i]) {\n      samePartsLength = i;\n      break;\n    }\n  }\n\n  var outputParts = [];\n\n  for (var i = samePartsLength; i < fromParts.length; i++) {\n    outputParts.push('..');\n  }\n\n  outputParts = outputParts.concat(toParts.slice(samePartsLength));\n  return outputParts.join('/');\n};\n\nexports.sep = '/';\nexports.delimiter = ':';\n\nexports.dirname = function (path) {\n  if (typeof path !== 'string') path = path + '';\n  if (path.length === 0) return '.';\n  var code = path.charCodeAt(0);\n  var hasRoot = code === 47\n  /*/*/\n  ;\n  var end = -1;\n  var matchedSlash = true;\n\n  for (var i = path.length - 1; i >= 1; --i) {\n    code = path.charCodeAt(i);\n\n    if (code === 47\n    /*/*/\n    ) {\n        if (!matchedSlash) {\n          end = i;\n          break;\n        }\n      } else {\n      // We saw the first non-path separator\n      matchedSlash = false;\n    }\n  }\n\n  if (end === -1) return hasRoot ? '/' : '.';\n\n  if (hasRoot && end === 1) {\n    // return '//';\n    // Backwards-compat fix:\n    return '/';\n  }\n\n  return path.slice(0, end);\n};\n\nfunction basename(path) {\n  if (typeof path !== 'string') path = path + '';\n  var start = 0;\n  var end = -1;\n  var matchedSlash = true;\n  var i;\n\n  for (i = path.length - 1; i >= 0; --i) {\n    if (path.charCodeAt(i) === 47\n    /*/*/\n    ) {\n        // If we reached a path separator that was not part of a set of path\n        // separators at the end of the string, stop now\n        if (!matchedSlash) {\n          start = i + 1;\n          break;\n        }\n      } else if (end === -1) {\n      // We saw the first non-path separator, mark this as the end of our\n      // path component\n      matchedSlash = false;\n      end = i + 1;\n    }\n  }\n\n  if (end === -1) return '';\n  return path.slice(start, end);\n} // Uses a mixed approach for backwards-compatibility, as ext behavior changed\n// in new Node.js versions, so only basename() above is backported here\n\n\nexports.basename = function (path, ext) {\n  var f = basename(path);\n\n  if (ext && f.substr(-1 * ext.length) === ext) {\n    f = f.substr(0, f.length - ext.length);\n  }\n\n  return f;\n};\n\nexports.extname = function (path) {\n  if (typeof path !== 'string') path = path + '';\n  var startDot = -1;\n  var startPart = 0;\n  var end = -1;\n  var matchedSlash = true; // Track the state of characters (if any) we see before our first dot and\n  // after any path separator we find\n\n  var preDotState = 0;\n\n  for (var i = path.length - 1; i >= 0; --i) {\n    var code = path.charCodeAt(i);\n\n    if (code === 47\n    /*/*/\n    ) {\n        // If we reached a path separator that was not part of a set of path\n        // separators at the end of the string, stop now\n        if (!matchedSlash) {\n          startPart = i + 1;\n          break;\n        }\n\n        continue;\n      }\n\n    if (end === -1) {\n      // We saw the first non-path separator, mark this as the end of our\n      // extension\n      matchedSlash = false;\n      end = i + 1;\n    }\n\n    if (code === 46\n    /*.*/\n    ) {\n        // If this is our first dot, mark it as the start of our extension\n        if (startDot === -1) startDot = i;else if (preDotState !== 1) preDotState = 1;\n      } else if (startDot !== -1) {\n      // We saw a non-dot and non-path separator before our dot, so we should\n      // have a good chance at having a non-empty extension\n      preDotState = -1;\n    }\n  }\n\n  if (startDot === -1 || end === -1 || // We saw a non-dot character immediately before the dot\n  preDotState === 0 || // The (right-most) trimmed path component is exactly '..'\n  preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n    return '';\n  }\n\n  return path.slice(startDot, end);\n};\n\nfunction filter(xs, f) {\n  if (xs.filter) return xs.filter(f);\n  var res = [];\n\n  for (var i = 0; i < xs.length; i++) {\n    if (f(xs[i], i, xs)) res.push(xs[i]);\n  }\n\n  return res;\n} // String.prototype.substr - negative index don't work in IE8\n\n\nvar substr = 'ab'.substr(-1) === 'b' ? function (str, start, len) {\n  return str.substr(start, len);\n} : function (str, start, len) {\n  if (start < 0) start = str.length + start;\n  return str.substr(start, len);\n};","'use strict';\n\nmodule.exports = locate;\n\nfunction locate(value, fromIndex) {\n  return value.indexOf('`', fromIndex);\n}","'use strict';\n\nmodule.exports = trimTrailingLines; // Remove final newline characters from `value`.\n\nfunction trimTrailingLines(value) {\n  return String(value).replace(/\\n+$/, '');\n}","/* eslint-disable react/prop-types, react/no-multi-comp */\n'use strict';\n\nvar xtend = require('xtend');\n\nvar React = require('react');\n\nvar supportsStringRender = parseInt((React.version || '16').slice(0, 2), 10) >= 16;\nvar createElement = React.createElement;\nmodule.exports = {\n  break: 'br',\n  paragraph: 'p',\n  emphasis: 'em',\n  strong: 'strong',\n  thematicBreak: 'hr',\n  blockquote: 'blockquote',\n  delete: 'del',\n  link: 'a',\n  image: 'img',\n  linkReference: 'a',\n  imageReference: 'img',\n  table: SimpleRenderer.bind(null, 'table'),\n  tableHead: SimpleRenderer.bind(null, 'thead'),\n  tableBody: SimpleRenderer.bind(null, 'tbody'),\n  tableRow: SimpleRenderer.bind(null, 'tr'),\n  tableCell: TableCell,\n  root: Root,\n  text: TextRenderer,\n  list: List,\n  listItem: ListItem,\n  definition: NullRenderer,\n  heading: Heading,\n  inlineCode: InlineCode,\n  code: CodeBlock,\n  html: Html,\n  virtualHtml: VirtualHtml,\n  parsedHtml: ParsedHtml\n};\n\nfunction TextRenderer(props) {\n  return supportsStringRender ? props.children : createElement('span', null, props.children);\n}\n\nfunction Root(props) {\n  var useFragment = !props.className;\n  var root = useFragment ? React.Fragment || 'div' : 'div';\n  return createElement(root, useFragment ? null : props, props.children);\n}\n\nfunction SimpleRenderer(tag, props) {\n  return createElement(tag, getCoreProps(props), props.children);\n}\n\nfunction TableCell(props) {\n  var style = props.align ? {\n    textAlign: props.align\n  } : undefined;\n  var coreProps = getCoreProps(props);\n  return createElement(props.isHeader ? 'th' : 'td', style ? xtend({\n    style: style\n  }, coreProps) : coreProps, props.children);\n}\n\nfunction Heading(props) {\n  return createElement(\"h\".concat(props.level), getCoreProps(props), props.children);\n}\n\nfunction List(props) {\n  var attrs = getCoreProps(props);\n\n  if (props.start !== null && props.start !== 1 && props.start !== undefined) {\n    attrs.start = props.start.toString();\n  }\n\n  return createElement(props.ordered ? 'ol' : 'ul', attrs, props.children);\n}\n\nfunction ListItem(props) {\n  var checkbox = null;\n\n  if (props.checked !== null && props.checked !== undefined) {\n    var checked = props.checked;\n    checkbox = createElement('input', {\n      type: 'checkbox',\n      checked: checked,\n      readOnly: true\n    });\n  }\n\n  return createElement('li', getCoreProps(props), checkbox, props.children);\n}\n\nfunction CodeBlock(props) {\n  var className = props.language && \"language-\".concat(props.language);\n  var code = createElement('code', className ? {\n    className: className\n  } : null, props.value);\n  return createElement('pre', getCoreProps(props), code);\n}\n\nfunction InlineCode(props) {\n  return createElement('code', getCoreProps(props), props.children);\n}\n\nfunction Html(props) {\n  if (props.skipHtml) {\n    return null;\n  }\n\n  var tag = props.isBlock ? 'div' : 'span';\n\n  if (props.escapeHtml) {\n    var comp = React.Fragment || tag;\n    return createElement(comp, null, props.value);\n  }\n\n  var nodeProps = {\n    dangerouslySetInnerHTML: {\n      __html: props.value\n    }\n  };\n  return createElement(tag, nodeProps);\n}\n\nfunction ParsedHtml(props) {\n  return props['data-sourcepos'] ? React.cloneElement(props.element, {\n    'data-sourcepos': props['data-sourcepos']\n  }) : props.element;\n}\n\nfunction VirtualHtml(props) {\n  return createElement(props.tag, getCoreProps(props), props.children);\n}\n\nfunction NullRenderer() {\n  return null;\n}\n\nfunction getCoreProps(props) {\n  return props['data-sourcepos'] ? {\n    'data-sourcepos': props['data-sourcepos']\n  } : {};\n}","'use strict';\n\nmodule.exports = factory; // Construct a state `toggler`: a function which inverses `property` in context\n// based on its current value.\n// The by `toggler` returned function restores that value.\n\nfunction factory(key, state, ctx) {\n  return enter;\n\n  function enter() {\n    var context = ctx || this;\n    var current = context[key];\n    context[key] = !state;\n    return exit;\n\n    function exit() {\n      context[key] = current;\n    }\n  }\n}","'use strict';\n\nvar path = require('path');\n\nfunction replaceExt(npath, ext) {\n  if (typeof npath !== 'string') {\n    return npath;\n  }\n\n  if (npath.length === 0) {\n    return npath;\n  }\n\n  var nFileName = path.basename(npath, path.extname(npath)) + ext;\n  return path.join(path.dirname(npath), nFileName);\n}\n\nmodule.exports = replaceExt;","'use strict';\n\nmodule.exports = text;\n\nfunction text(eat, value, silent) {\n  var self = this;\n  var methods;\n  var tokenizers;\n  var index;\n  var length;\n  var subvalue;\n  var position;\n  var tokenizer;\n  var name;\n  var min;\n  var now;\n  /* istanbul ignore if - never used (yet) */\n\n  if (silent) {\n    return true;\n  }\n\n  methods = self.inlineMethods;\n  length = methods.length;\n  tokenizers = self.inlineTokenizers;\n  index = -1;\n  min = value.length;\n\n  while (++index < length) {\n    name = methods[index];\n\n    if (name === 'text' || !tokenizers[name]) {\n      continue;\n    }\n\n    tokenizer = tokenizers[name].locator;\n\n    if (!tokenizer) {\n      eat.file.fail('Missing locator: `' + name + '`');\n    }\n\n    position = tokenizer.call(self, value, 1);\n\n    if (position !== -1 && position < min) {\n      min = position;\n    }\n  }\n\n  subvalue = value.slice(0, min);\n  now = eat.now();\n  self.decode(subvalue, now, function (content, position, source) {\n    eat(source || content)({\n      type: 'text',\n      value: content\n    });\n  });\n}","'use strict';\n\nvar xtend = require('xtend');\n\nvar inherits = require('inherits');\n\nmodule.exports = unherit; // Create a custom constructor which can be modified without affecting the\n// original class.\n\nfunction unherit(Super) {\n  var result;\n  var key;\n  var value;\n  inherits(Of, Super);\n  inherits(From, Of); // Clone values.\n\n  result = Of.prototype;\n\n  for (key in result) {\n    value = result[key];\n\n    if (value && typeof value === 'object') {\n      result[key] = 'concat' in value ? value.concat() : xtend(value);\n    }\n  }\n\n  return Of; // Constructor accepting a single argument, which itself is an `arguments`\n  // object.\n\n  function From(parameters) {\n    return Super.apply(this, parameters);\n  } // Constructor accepting variadic arguments.\n\n\n  function Of() {\n    if (!(this instanceof Of)) {\n      return new From(arguments);\n    }\n\n    return Super.apply(this, arguments);\n  }\n}","'use strict';\n\nvar whitespace = require('is-whitespace-character');\n\nvar normalize = require('../util/normalize');\n\nmodule.exports = footnoteDefinition;\nfootnoteDefinition.notInList = true;\nfootnoteDefinition.notInBlock = true;\nvar C_BACKSLASH = '\\\\';\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\nvar C_SPACE = ' ';\nvar C_BRACKET_OPEN = '[';\nvar C_BRACKET_CLOSE = ']';\nvar C_CARET = '^';\nvar C_COLON = ':';\nvar EXPRESSION_INITIAL_TAB = /^( {4}|\\t)?/gm;\n\nfunction footnoteDefinition(eat, value, silent) {\n  var self = this;\n  var offsets = self.offset;\n  var index;\n  var length;\n  var subvalue;\n  var now;\n  var currentLine;\n  var content;\n  var queue;\n  var subqueue;\n  var character;\n  var identifier;\n  var add;\n  var exit;\n\n  if (!self.options.footnotes) {\n    return;\n  }\n\n  index = 0;\n  length = value.length;\n  subvalue = '';\n  now = eat.now();\n  currentLine = now.line;\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (!whitespace(character)) {\n      break;\n    }\n\n    subvalue += character;\n    index++;\n  }\n\n  if (value.charAt(index) !== C_BRACKET_OPEN || value.charAt(index + 1) !== C_CARET) {\n    return;\n  }\n\n  subvalue += C_BRACKET_OPEN + C_CARET;\n  index = subvalue.length;\n  queue = '';\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (character === C_BRACKET_CLOSE) {\n      break;\n    } else if (character === C_BACKSLASH) {\n      queue += character;\n      index++;\n      character = value.charAt(index);\n    }\n\n    queue += character;\n    index++;\n  }\n\n  if (!queue || value.charAt(index) !== C_BRACKET_CLOSE || value.charAt(index + 1) !== C_COLON) {\n    return;\n  }\n\n  if (silent) {\n    return true;\n  }\n\n  identifier = normalize(queue);\n  subvalue += queue + C_BRACKET_CLOSE + C_COLON;\n  index = subvalue.length;\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (character !== C_TAB && character !== C_SPACE) {\n      break;\n    }\n\n    subvalue += character;\n    index++;\n  }\n\n  now.column += subvalue.length;\n  now.offset += subvalue.length;\n  queue = '';\n  content = '';\n  subqueue = '';\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (character === C_NEWLINE) {\n      subqueue = character;\n      index++;\n\n      while (index < length) {\n        character = value.charAt(index);\n\n        if (character !== C_NEWLINE) {\n          break;\n        }\n\n        subqueue += character;\n        index++;\n      }\n\n      queue += subqueue;\n      subqueue = '';\n\n      while (index < length) {\n        character = value.charAt(index);\n\n        if (character !== C_SPACE) {\n          break;\n        }\n\n        subqueue += character;\n        index++;\n      }\n\n      if (subqueue.length === 0) {\n        break;\n      }\n\n      queue += subqueue;\n    }\n\n    if (queue) {\n      content += queue;\n      queue = '';\n    }\n\n    content += character;\n    index++;\n  }\n\n  subvalue += content;\n  content = content.replace(EXPRESSION_INITIAL_TAB, function (line) {\n    offsets[currentLine] = (offsets[currentLine] || 0) + line.length;\n    currentLine++;\n    return '';\n  });\n  add = eat(subvalue);\n  exit = self.enterBlock();\n  content = self.tokenizeBlock(content, now);\n  exit();\n  return add({\n    type: 'footnoteDefinition',\n    identifier: identifier,\n    children: content\n  });\n}","'use strict';\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar defineProperty = Object.defineProperty;\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nvar isArray = function isArray(arr) {\n  if (typeof Array.isArray === 'function') {\n    return Array.isArray(arr);\n  }\n\n  return toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n  if (!obj || toStr.call(obj) !== '[object Object]') {\n    return false;\n  }\n\n  var hasOwnConstructor = hasOwn.call(obj, 'constructor');\n  var hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf'); // Not own constructor property must be Object\n\n  if (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n    return false;\n  } // Own properties are enumerated firstly, so to speed up,\n  // if last one is own, then all properties are own.\n\n\n  var key;\n\n  for (key in obj) {\n    /**/\n  }\n\n  return typeof key === 'undefined' || hasOwn.call(obj, key);\n}; // If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target\n\n\nvar setProperty = function setProperty(target, options) {\n  if (defineProperty && options.name === '__proto__') {\n    defineProperty(target, options.name, {\n      enumerable: true,\n      configurable: true,\n      value: options.newValue,\n      writable: true\n    });\n  } else {\n    target[options.name] = options.newValue;\n  }\n}; // Return undefined instead of __proto__ if '__proto__' is not an own property\n\n\nvar getProperty = function getProperty(obj, name) {\n  if (name === '__proto__') {\n    if (!hasOwn.call(obj, name)) {\n      return void 0;\n    } else if (gOPD) {\n      // In early versions of node, obj['__proto__'] is buggy when obj has\n      // __proto__ as an own property. Object.getOwnPropertyDescriptor() works.\n      return gOPD(obj, name).value;\n    }\n  }\n\n  return obj[name];\n};\n\nmodule.exports = function extend() {\n  var options, name, src, copy, copyIsArray, clone;\n  var target = arguments[0];\n  var i = 1;\n  var length = arguments.length;\n  var deep = false; // Handle a deep copy situation\n\n  if (typeof target === 'boolean') {\n    deep = target;\n    target = arguments[1] || {}; // skip the boolean and the target\n\n    i = 2;\n  }\n\n  if (target == null || typeof target !== 'object' && typeof target !== 'function') {\n    target = {};\n  }\n\n  for (; i < length; ++i) {\n    options = arguments[i]; // Only deal with non-null/undefined values\n\n    if (options != null) {\n      // Extend the base object\n      for (name in options) {\n        src = getProperty(target, name);\n        copy = getProperty(options, name); // Prevent never-ending loop\n\n        if (target !== copy) {\n          // Recurse if we're merging plain objects or arrays\n          if (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n            if (copyIsArray) {\n              copyIsArray = false;\n              clone = src && isArray(src) ? src : [];\n            } else {\n              clone = src && isPlainObject(src) ? src : {};\n            } // Never move original objects, clone them\n\n\n            setProperty(target, {\n              name: name,\n              newValue: extend(deep, clone, copy)\n            }); // Don't bring in undefined values\n          } else if (typeof copy !== 'undefined') {\n            setProperty(target, {\n              name: name,\n              newValue: copy\n            });\n          }\n        }\n      }\n    }\n  } // Return the modified object\n\n\n  return target;\n};","'use strict';\n\nvar xtend = require('xtend');\n\nvar removePosition = require('unist-util-remove-position');\n\nmodule.exports = parse;\nvar C_NEWLINE = '\\n';\nvar EXPRESSION_LINE_BREAKS = /\\r\\n|\\r/g;\n/* Parse the bound file. */\n\nfunction parse() {\n  var self = this;\n  var value = String(self.file);\n  var start = {\n    line: 1,\n    column: 1,\n    offset: 0\n  };\n  var content = xtend(start);\n  var node;\n  /* Clean non-unix newlines: `\\r\\n` and `\\r` are all\n   * changed to `\\n`.  This should not affect positional\n   * information. */\n\n  value = value.replace(EXPRESSION_LINE_BREAKS, C_NEWLINE);\n\n  if (value.charCodeAt(0) === 0xFEFF) {\n    value = value.slice(1);\n    content.column++;\n    content.offset++;\n  }\n\n  node = {\n    type: 'root',\n    children: self.tokenizeBlock(value, content),\n    position: {\n      start: start,\n      end: self.eof || xtend(start)\n    }\n  };\n\n  if (!self.options.position) {\n    removePosition(node, true);\n  }\n\n  return node;\n}","'use strict';\n\nmodule.exports = locate;\n\nfunction locate(value, fromIndex) {\n  var index = value.indexOf('\\n', fromIndex);\n\n  while (index > fromIndex) {\n    if (value.charAt(index - 1) !== ' ') {\n      break;\n    }\n\n    index--;\n  }\n\n  return index;\n}","'use strict';\n\nmodule.exports = factory;\n\nfunction factory(file) {\n  var contents = indices(String(file));\n  return {\n    toPosition: offsetToPositionFactory(contents),\n    toOffset: positionToOffsetFactory(contents)\n  };\n} // Factory to get the line and column-based `position` for `offset` in the bound\n// indices.\n\n\nfunction offsetToPositionFactory(indices) {\n  return offsetToPosition; // Get the line and column-based `position` for `offset` in the bound indices.\n\n  function offsetToPosition(offset) {\n    var index = -1;\n    var length = indices.length;\n\n    if (offset < 0) {\n      return {};\n    }\n\n    while (++index < length) {\n      if (indices[index] > offset) {\n        return {\n          line: index + 1,\n          column: offset - (indices[index - 1] || 0) + 1,\n          offset: offset\n        };\n      }\n    }\n\n    return {};\n  }\n} // Factory to get the `offset` for a line and column-based `position` in the\n// bound indices.\n\n\nfunction positionToOffsetFactory(indices) {\n  return positionToOffset; // Get the `offset` for a line and column-based `position` in the bound\n  // indices.\n\n  function positionToOffset(position) {\n    var line = position && position.line;\n    var column = position && position.column;\n\n    if (!isNaN(line) && !isNaN(column) && line - 1 in indices) {\n      return (indices[line - 2] || 0) + column - 1 || 0;\n    }\n\n    return -1;\n  }\n} // Get indices of line-breaks in `value`.\n\n\nfunction indices(value) {\n  var result = [];\n  var index = value.indexOf('\\n');\n\n  while (index !== -1) {\n    result.push(index + 1);\n    index = value.indexOf('\\n', index + 1);\n  }\n\n  result.push(value.length + 1);\n  return result;\n}","'use strict';\n\nvar visit = require('unist-util-visit');\n\nmodule.exports = function (node) {\n  visit(node, 'table', wrap);\n  return node;\n};\n\nfunction wrap(table) {\n  var children = table.children;\n  table.children = [{\n    type: 'tableHead',\n    align: table.align,\n    children: [children[0]],\n    position: children[0].position\n  }];\n\n  if (children.length > 1) {\n    table.children.push({\n      type: 'tableBody',\n      align: table.align,\n      children: children.slice(1),\n      position: {\n        start: children[1].position.start,\n        end: children[children.length - 1].position.end\n      }\n    });\n  }\n}","'use strict';\n\nmodule.exports = locate;\n\nfunction locate(value, fromIndex) {\n  var link = value.indexOf('[', fromIndex);\n  var image = value.indexOf('![', fromIndex);\n\n  if (image === -1) {\n    return link;\n  }\n  /* Link can never be `-1` if an image is found, so we don’t need\n   * to check for that :) */\n\n\n  return link < image ? link : image;\n}","/*!\n * Determine if an object is a Buffer\n *\n * @author   Feross Aboukhadijeh <https://feross.org>\n * @license  MIT\n */\n// The _isBuffer check is for Safari 5-7 support, because it's missing\n// Object.prototype.constructor. Remove this eventually\nmodule.exports = function (obj) {\n  return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer);\n};\n\nfunction isBuffer(obj) {\n  return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj);\n} // For Node v0.10 support. Remove this eventually.\n\n\nfunction isSlowBuffer(obj) {\n  return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0));\n}","'use strict';\n\nvar trim = require('trim');\n\nvar word = require('is-word-character');\n\nvar whitespace = require('is-whitespace-character');\n\nvar locate = require('../locate/emphasis');\n\nmodule.exports = emphasis;\nemphasis.locator = locate;\nvar C_ASTERISK = '*';\nvar C_UNDERSCORE = '_';\n\nfunction emphasis(eat, value, silent) {\n  var self = this;\n  var index = 0;\n  var character = value.charAt(index);\n  var now;\n  var pedantic;\n  var marker;\n  var queue;\n  var subvalue;\n  var length;\n  var prev;\n\n  if (character !== C_ASTERISK && character !== C_UNDERSCORE) {\n    return;\n  }\n\n  pedantic = self.options.pedantic;\n  subvalue = character;\n  marker = character;\n  length = value.length;\n  index++;\n  queue = '';\n  character = '';\n\n  if (pedantic && whitespace(value.charAt(index))) {\n    return;\n  }\n\n  while (index < length) {\n    prev = character;\n    character = value.charAt(index);\n\n    if (character === marker && (!pedantic || !whitespace(prev))) {\n      character = value.charAt(++index);\n\n      if (character !== marker) {\n        if (!trim(queue) || prev === marker) {\n          return;\n        }\n\n        if (!pedantic && marker === C_UNDERSCORE && word(character)) {\n          queue += marker;\n          continue;\n        }\n        /* istanbul ignore if - never used (yet) */\n\n\n        if (silent) {\n          return true;\n        }\n\n        now = eat.now();\n        now.column++;\n        now.offset++;\n        return eat(subvalue + queue + marker)({\n          type: 'emphasis',\n          children: self.tokenizeInline(queue, now)\n        });\n      }\n\n      queue += marker;\n    }\n\n    if (!pedantic && character === '\\\\') {\n      queue += character;\n      character = value.charAt(++index);\n    }\n\n    queue += character;\n    index++;\n  }\n}","'use strict';\n\nvar decode = require('parse-entities');\n\nvar whitespace = require('is-whitespace-character');\n\nvar locate = require('../locate/url');\n\nmodule.exports = url;\nurl.locator = locate;\nurl.notInLink = true;\nvar C_BRACKET_OPEN = '[';\nvar C_BRACKET_CLOSE = ']';\nvar C_PAREN_OPEN = '(';\nvar C_PAREN_CLOSE = ')';\nvar C_LT = '<';\nvar C_AT_SIGN = '@';\nvar HTTP_PROTOCOL = 'http://';\nvar HTTPS_PROTOCOL = 'https://';\nvar MAILTO_PROTOCOL = 'mailto:';\nvar PROTOCOLS = [HTTP_PROTOCOL, HTTPS_PROTOCOL, MAILTO_PROTOCOL];\nvar PROTOCOLS_LENGTH = PROTOCOLS.length;\n\nfunction url(eat, value, silent) {\n  var self = this;\n  var subvalue;\n  var content;\n  var character;\n  var index;\n  var position;\n  var protocol;\n  var match;\n  var length;\n  var queue;\n  var parenCount;\n  var nextCharacter;\n  var exit;\n\n  if (!self.options.gfm) {\n    return;\n  }\n\n  subvalue = '';\n  index = -1;\n  length = PROTOCOLS_LENGTH;\n\n  while (++index < length) {\n    protocol = PROTOCOLS[index];\n    match = value.slice(0, protocol.length);\n\n    if (match.toLowerCase() === protocol) {\n      subvalue = match;\n      break;\n    }\n  }\n\n  if (!subvalue) {\n    return;\n  }\n\n  index = subvalue.length;\n  length = value.length;\n  queue = '';\n  parenCount = 0;\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (whitespace(character) || character === C_LT) {\n      break;\n    }\n\n    if (character === '.' || character === ',' || character === ':' || character === ';' || character === '\"' || character === '\\'' || character === ')' || character === ']') {\n      nextCharacter = value.charAt(index + 1);\n\n      if (!nextCharacter || whitespace(nextCharacter)) {\n        break;\n      }\n    }\n\n    if (character === C_PAREN_OPEN || character === C_BRACKET_OPEN) {\n      parenCount++;\n    }\n\n    if (character === C_PAREN_CLOSE || character === C_BRACKET_CLOSE) {\n      parenCount--;\n\n      if (parenCount < 0) {\n        break;\n      }\n    }\n\n    queue += character;\n    index++;\n  }\n\n  if (!queue) {\n    return;\n  }\n\n  subvalue += queue;\n  content = subvalue;\n\n  if (protocol === MAILTO_PROTOCOL) {\n    position = queue.indexOf(C_AT_SIGN);\n\n    if (position === -1 || position === length - 1) {\n      return;\n    }\n\n    content = content.substr(MAILTO_PROTOCOL.length);\n  }\n  /* istanbul ignore if - never used (yet) */\n\n\n  if (silent) {\n    return true;\n  }\n\n  exit = self.enterLink();\n  content = self.tokenizeInline(content, eat.now());\n  exit();\n  return eat(subvalue)({\n    type: 'link',\n    title: null,\n    url: decode(subvalue, {\n      nonTerminated: false\n    }),\n    children: content\n  });\n}","'use strict';\n\nmodule.exports = locate;\nvar PROTOCOLS = ['https://', 'http://', 'mailto:'];\n\nfunction locate(value, fromIndex) {\n  var length = PROTOCOLS.length;\n  var index = -1;\n  var min = -1;\n  var position;\n\n  if (!this.options.gfm) {\n    return -1;\n  }\n\n  while (++index < length) {\n    position = value.indexOf(PROTOCOLS[index], fromIndex);\n\n    if (position !== -1 && (position < min || min === -1)) {\n      min = position;\n    }\n  }\n\n  return min;\n}","'use strict';\n\nvar slice = [].slice;\nmodule.exports = wrap; // Wrap `fn`.\n// Can be sync or async; return a promise, receive a completion handler, return\n// new values and errors.\n\nfunction wrap(fn, callback) {\n  var invoked;\n  return wrapped;\n\n  function wrapped() {\n    var params = slice.call(arguments, 0);\n    var callback = fn.length > params.length;\n    var result;\n\n    if (callback) {\n      params.push(done);\n    }\n\n    try {\n      result = fn.apply(null, params);\n    } catch (error) {\n      // Well, this is quite the pickle.\n      // `fn` received a callback and invoked it (thus continuing the pipeline),\n      // but later also threw an error.\n      // We’re not about to restart the pipeline again, so the only thing left\n      // to do is to throw the thing instead.\n      if (callback && invoked) {\n        throw error;\n      }\n\n      return done(error);\n    }\n\n    if (!callback) {\n      if (result && typeof result.then === 'function') {\n        result.then(then, done);\n      } else if (result instanceof Error) {\n        done(result);\n      } else {\n        then(result);\n      }\n    }\n  } // Invoke `next`, only once.\n\n\n  function done() {\n    if (!invoked) {\n      invoked = true;\n      callback.apply(null, arguments);\n    }\n  } // Invoke `done` with one value.\n  // Tracks if an error is passed, too.\n\n\n  function then(value) {\n    done(null, value);\n  }\n}","'use strict';\n\nmodule.exports = locate;\n\nfunction locate(value, fromIndex) {\n  return value.indexOf('~~', fromIndex);\n}","'use strict';\n\nmodule.exports = locate;\n\nfunction locate(value, fromIndex) {\n  return value.indexOf('\\\\', fromIndex);\n}","'use strict';\n\nmodule.exports = bail;\n\nfunction bail(err) {\n  if (err) {\n    throw err;\n  }\n}","'use strict';\n\nmodule.exports = factory;\n/* Factory to de-escape a value, based on a list at `key`\n * in `ctx`. */\n\nfunction factory(ctx, key) {\n  return unescape;\n  /* De-escape a string using the expression at `key`\n   * in `ctx`. */\n\n  function unescape(value) {\n    var prev = 0;\n    var index = value.indexOf('\\\\');\n    var escape = ctx[key];\n    var queue = [];\n    var character;\n\n    while (index !== -1) {\n      queue.push(value.slice(prev, index));\n      prev = index + 1;\n      character = value.charAt(prev);\n      /* If the following character is not a valid escape,\n       * add the slash. */\n\n      if (!character || escape.indexOf(character) === -1) {\n        queue.push('\\\\');\n      }\n\n      index = value.indexOf('\\\\', prev);\n    }\n\n    queue.push(value.slice(prev));\n    return queue.join('');\n  }\n}","'use strict';\n\nmodule.exports = convert;\n\nfunction convert(test) {\n  if (typeof test === 'string') {\n    return typeFactory(test);\n  }\n\n  if (test === null || test === undefined) {\n    return ok;\n  }\n\n  if (typeof test === 'object') {\n    return ('length' in test ? anyFactory : matchesFactory)(test);\n  }\n\n  if (typeof test === 'function') {\n    return test;\n  }\n\n  throw new Error('Expected function, string, or object as test');\n}\n\nfunction convertAll(tests) {\n  var results = [];\n  var length = tests.length;\n  var index = -1;\n\n  while (++index < length) {\n    results[index] = convert(tests[index]);\n  }\n\n  return results;\n} // Utility assert each property in `test` is represented in `node`, and each\n// values are strictly equal.\n\n\nfunction matchesFactory(test) {\n  return matches;\n\n  function matches(node) {\n    var key;\n\n    for (key in test) {\n      if (node[key] !== test[key]) {\n        return false;\n      }\n    }\n\n    return true;\n  }\n}\n\nfunction anyFactory(tests) {\n  var checks = convertAll(tests);\n  var length = checks.length;\n  return matches;\n\n  function matches() {\n    var index = -1;\n\n    while (++index < length) {\n      if (checks[index].apply(this, arguments)) {\n        return true;\n      }\n    }\n\n    return false;\n  }\n} // Utility to convert a string into a function which checks a given node’s type\n// for said string.\n\n\nfunction typeFactory(test) {\n  return type;\n\n  function type(node) {\n    return Boolean(node && node.type === test);\n  }\n} // Utility to return true.\n\n\nfunction ok() {\n  return true;\n}","'use strict';\n\nmodule.exports = convert;\n\nfunction convert(test) {\n  if (typeof test === 'string') {\n    return typeFactory(test);\n  }\n\n  if (test === null || test === undefined) {\n    return ok;\n  }\n\n  if (typeof test === 'object') {\n    return ('length' in test ? anyFactory : matchesFactory)(test);\n  }\n\n  if (typeof test === 'function') {\n    return test;\n  }\n\n  throw new Error('Expected function, string, or object as test');\n}\n\nfunction convertAll(tests) {\n  var results = [];\n  var length = tests.length;\n  var index = -1;\n\n  while (++index < length) {\n    results[index] = convert(tests[index]);\n  }\n\n  return results;\n} // Utility assert each property in `test` is represented in `node`, and each\n// values are strictly equal.\n\n\nfunction matchesFactory(test) {\n  return matches;\n\n  function matches(node) {\n    var key;\n\n    for (key in test) {\n      if (node[key] !== test[key]) {\n        return false;\n      }\n    }\n\n    return true;\n  }\n}\n\nfunction anyFactory(tests) {\n  var checks = convertAll(tests);\n  var length = checks.length;\n  return matches;\n\n  function matches() {\n    var index = -1;\n\n    while (++index < length) {\n      if (checks[index].apply(this, arguments)) {\n        return true;\n      }\n    }\n\n    return false;\n  }\n} // Utility to convert a string into a function which checks a given node’s type\n// for said string.\n\n\nfunction typeFactory(test) {\n  return type;\n\n  function type(node) {\n    return Boolean(node && node.type === test);\n  }\n} // Utility to return true.\n\n\nfunction ok() {\n  return true;\n}","'use strict';\n\nmodule.exports = whitespace;\nvar fromCode = String.fromCharCode;\nvar re = /\\s/; // Check if the given character code, or the character code at the first\n// character, is a whitespace character.\n\nfunction whitespace(character) {\n  return re.test(typeof character === 'number' ? fromCode(character) : character.charAt(0));\n}","var toString = Object.prototype.toString;\nmodule.exports = isString;\n\nfunction isString(obj) {\n  return toString.call(obj) === \"[object String]\";\n}","'use strict';\n\nrequire(\"core-js/modules/es.array.reduce.js\");\n\nmodule.exports = function getDefinitions(node) {\n  var defs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  return (node.children || []).reduce(function (definitions, child) {\n    if (child.type === 'definition') {\n      definitions[child.identifier] = {\n        href: child.url,\n        title: child.title\n      };\n    }\n\n    return getDefinitions(child, definitions);\n  }, defs);\n};","'use strict';\n\nrequire(\"core-js/modules/es.array.reduce.js\");\n\nfunction _toConsumableArray(arr) {\n  return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _nonIterableSpread() {\n  throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nfunction _iterableToArray(iter) {\n  if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nfunction _arrayWithoutHoles(arr) {\n  if (Array.isArray(arr)) {\n    for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n      arr2[i] = arr[i];\n    }\n\n    return arr2;\n  }\n}\n\nvar xtend = require('xtend');\n\nvar unified = require('unified');\n\nvar parse = require('remark-parse');\n\nvar PropTypes = require('prop-types');\n\nvar addListMetadata = require('mdast-add-list-metadata');\n\nvar naiveHtml = require('./plugins/naive-html');\n\nvar disallowNode = require('./plugins/disallow-node');\n\nvar astToReact = require('./ast-to-react');\n\nvar wrapTableRows = require('./wrap-table-rows');\n\nvar getDefinitions = require('./get-definitions');\n\nvar uriTransformer = require('./uri-transformer');\n\nvar defaultRenderers = require('./renderers');\n\nvar symbols = require('./symbols');\n\nvar allTypes = Object.keys(defaultRenderers);\n\nvar ReactMarkdown = function ReactMarkdown(props) {\n  var src = props.source || props.children || '';\n  var parserOptions = props.parserOptions;\n\n  if (props.allowedTypes && props.disallowedTypes) {\n    throw new Error('Only one of `allowedTypes` and `disallowedTypes` should be defined');\n  }\n\n  var renderers = xtend(defaultRenderers, props.renderers);\n  var plugins = [[parse, parserOptions]].concat(props.plugins || []);\n  var parser = plugins.reduce(applyParserPlugin, unified());\n  var rawAst = parser.parse(src);\n  var renderProps = xtend(props, {\n    renderers: renderers,\n    definitions: getDefinitions(rawAst)\n  });\n  var astPlugins = determineAstPlugins(props); // eslint-disable-next-line no-sync\n\n  var transformedAst = parser.runSync(rawAst);\n  var ast = astPlugins.reduce(function (node, plugin) {\n    return plugin(node, renderProps);\n  }, transformedAst);\n  return astToReact(ast, renderProps);\n};\n\nfunction applyParserPlugin(parser, plugin) {\n  return Array.isArray(plugin) ? parser.use.apply(parser, _toConsumableArray(plugin)) : parser.use(plugin);\n}\n\nfunction determineAstPlugins(props) {\n  var plugins = [wrapTableRows, addListMetadata()];\n  var disallowedTypes = props.disallowedTypes;\n\n  if (props.allowedTypes) {\n    disallowedTypes = allTypes.filter(function (type) {\n      return type !== 'root' && props.allowedTypes.indexOf(type) === -1;\n    });\n  }\n\n  var removalMethod = props.unwrapDisallowed ? 'unwrap' : 'remove';\n\n  if (disallowedTypes && disallowedTypes.length > 0) {\n    plugins.push(disallowNode.ofType(disallowedTypes, removalMethod));\n  }\n\n  if (props.allowNode) {\n    plugins.push(disallowNode.ifNotMatch(props.allowNode, removalMethod));\n  }\n\n  var renderHtml = !props.escapeHtml && !props.skipHtml;\n  var hasHtmlParser = (props.astPlugins || []).some(function (item) {\n    var plugin = Array.isArray(item) ? item[0] : item;\n    return plugin.identity === symbols.HtmlParser;\n  });\n\n  if (renderHtml && !hasHtmlParser) {\n    plugins.push(naiveHtml);\n  }\n\n  return props.astPlugins ? plugins.concat(props.astPlugins) : plugins;\n}\n\nReactMarkdown.defaultProps = {\n  renderers: {},\n  escapeHtml: true,\n  skipHtml: false,\n  sourcePos: false,\n  rawSourcePos: false,\n  transformLinkUri: uriTransformer,\n  astPlugins: [],\n  plugins: [],\n  parserOptions: {}\n};\nReactMarkdown.propTypes = {\n  className: PropTypes.string,\n  source: PropTypes.string,\n  children: PropTypes.string,\n  sourcePos: PropTypes.bool,\n  rawSourcePos: PropTypes.bool,\n  escapeHtml: PropTypes.bool,\n  skipHtml: PropTypes.bool,\n  allowNode: PropTypes.func,\n  allowedTypes: PropTypes.arrayOf(PropTypes.oneOf(allTypes)),\n  disallowedTypes: PropTypes.arrayOf(PropTypes.oneOf(allTypes)),\n  transformLinkUri: PropTypes.oneOfType([PropTypes.func, PropTypes.bool]),\n  linkTarget: PropTypes.oneOfType([PropTypes.func, PropTypes.string]),\n  transformImageUri: PropTypes.func,\n  astPlugins: PropTypes.arrayOf(PropTypes.func),\n  unwrapDisallowed: PropTypes.bool,\n  renderers: PropTypes.object,\n  plugins: PropTypes.array,\n  parserOptions: PropTypes.object\n};\nReactMarkdown.types = allTypes;\nReactMarkdown.renderers = defaultRenderers;\nReactMarkdown.uriTransformer = uriTransformer;\nmodule.exports = ReactMarkdown;","'use strict';\n\nvar alphabetical = require('is-alphabetical');\n\nvar decimal = require('is-decimal');\n\nmodule.exports = alphanumerical; // Check if the given character code, or the character code at the first\n// character, is alphanumerical.\n\nfunction alphanumerical(character) {\n  return alphabetical(character) || decimal(character);\n}","'use strict';\n\nvar xtend = require('xtend');\n\nvar toggle = require('state-toggle');\n\nvar vfileLocation = require('vfile-location');\n\nvar unescape = require('./unescape');\n\nvar decode = require('./decode');\n\nvar tokenizer = require('./tokenizer');\n\nmodule.exports = Parser;\n\nfunction Parser(doc, file) {\n  this.file = file;\n  this.offset = {};\n  this.options = xtend(this.options);\n  this.setOptions({});\n  this.inList = false;\n  this.inBlock = false;\n  this.inLink = false;\n  this.atStart = true;\n  this.toOffset = vfileLocation(file).toOffset;\n  this.unescape = unescape(this, 'escape');\n  this.decode = decode(this);\n}\n\nvar proto = Parser.prototype;\n/* Expose core. */\n\nproto.setOptions = require('./set-options');\nproto.parse = require('./parse');\n/* Expose `defaults`. */\n\nproto.options = require('./defaults');\n/* Enter and exit helpers. */\n\nproto.exitStart = toggle('atStart', true);\nproto.enterList = toggle('inList', false);\nproto.enterLink = toggle('inLink', false);\nproto.enterBlock = toggle('inBlock', false);\n/* Nodes that can interupt a paragraph:\n *\n * ```markdown\n * A paragraph, followed by a thematic break.\n * ___\n * ```\n *\n * In the above example, the thematic break “interupts”\n * the paragraph. */\n\nproto.interruptParagraph = [['thematicBreak'], ['atxHeading'], ['fencedCode'], ['blockquote'], ['html'], ['setextHeading', {\n  commonmark: false\n}], ['definition', {\n  commonmark: false\n}], ['footnote', {\n  commonmark: false\n}]];\n/* Nodes that can interupt a list:\n *\n * ```markdown\n * - One\n * ___\n * ```\n *\n * In the above example, the thematic break “interupts”\n * the list. */\n\nproto.interruptList = [['atxHeading', {\n  pedantic: false\n}], ['fencedCode', {\n  pedantic: false\n}], ['thematicBreak', {\n  pedantic: false\n}], ['definition', {\n  commonmark: false\n}], ['footnote', {\n  commonmark: false\n}]];\n/* Nodes that can interupt a blockquote:\n *\n * ```markdown\n * > A paragraph.\n * ___\n * ```\n *\n * In the above example, the thematic break “interupts”\n * the blockquote. */\n\nproto.interruptBlockquote = [['indentedCode', {\n  commonmark: true\n}], ['fencedCode', {\n  commonmark: true\n}], ['atxHeading', {\n  commonmark: true\n}], ['setextHeading', {\n  commonmark: true\n}], ['thematicBreak', {\n  commonmark: true\n}], ['html', {\n  commonmark: true\n}], ['list', {\n  commonmark: true\n}], ['definition', {\n  commonmark: false\n}], ['footnote', {\n  commonmark: false\n}]];\n/* Handlers. */\n\nproto.blockTokenizers = {\n  newline: require('./tokenize/newline'),\n  indentedCode: require('./tokenize/code-indented'),\n  fencedCode: require('./tokenize/code-fenced'),\n  blockquote: require('./tokenize/blockquote'),\n  atxHeading: require('./tokenize/heading-atx'),\n  thematicBreak: require('./tokenize/thematic-break'),\n  list: require('./tokenize/list'),\n  setextHeading: require('./tokenize/heading-setext'),\n  html: require('./tokenize/html-block'),\n  footnote: require('./tokenize/footnote-definition'),\n  definition: require('./tokenize/definition'),\n  table: require('./tokenize/table'),\n  paragraph: require('./tokenize/paragraph')\n};\nproto.inlineTokenizers = {\n  escape: require('./tokenize/escape'),\n  autoLink: require('./tokenize/auto-link'),\n  url: require('./tokenize/url'),\n  html: require('./tokenize/html-inline'),\n  link: require('./tokenize/link'),\n  reference: require('./tokenize/reference'),\n  strong: require('./tokenize/strong'),\n  emphasis: require('./tokenize/emphasis'),\n  deletion: require('./tokenize/delete'),\n  code: require('./tokenize/code-inline'),\n  break: require('./tokenize/break'),\n  text: require('./tokenize/text')\n};\n/* Expose precedence. */\n\nproto.blockMethods = keys(proto.blockTokenizers);\nproto.inlineMethods = keys(proto.inlineTokenizers);\n/* Tokenizers. */\n\nproto.tokenizeBlock = tokenizer('block');\nproto.tokenizeInline = tokenizer('inline');\nproto.tokenizeFactory = tokenizer;\n/* Get all keys in `value`. */\n\nfunction keys(value) {\n  var result = [];\n  var key;\n\n  for (key in value) {\n    result.push(key);\n  }\n\n  return result;\n}","'use strict';\n\nmodule.exports = collapse; // `collapse(' \\t\\nbar \\nbaz\\t') // ' bar baz '`\n\nfunction collapse(value) {\n  return String(value).replace(/\\s+/g, ' ');\n}","'use strict';\n\nvar whitespace = require('is-whitespace-character');\n\nvar locate = require('../locate/link');\n\nmodule.exports = link;\nlink.locator = locate;\nvar own = {}.hasOwnProperty;\nvar C_BACKSLASH = '\\\\';\nvar C_BRACKET_OPEN = '[';\nvar C_BRACKET_CLOSE = ']';\nvar C_PAREN_OPEN = '(';\nvar C_PAREN_CLOSE = ')';\nvar C_LT = '<';\nvar C_GT = '>';\nvar C_TICK = '`';\nvar C_DOUBLE_QUOTE = '\"';\nvar C_SINGLE_QUOTE = '\\'';\n/* Map of characters, which can be used to mark link\n * and image titles. */\n\nvar LINK_MARKERS = {};\nLINK_MARKERS[C_DOUBLE_QUOTE] = C_DOUBLE_QUOTE;\nLINK_MARKERS[C_SINGLE_QUOTE] = C_SINGLE_QUOTE;\n/* Map of characters, which can be used to mark link\n * and image titles in commonmark-mode. */\n\nvar COMMONMARK_LINK_MARKERS = {};\nCOMMONMARK_LINK_MARKERS[C_DOUBLE_QUOTE] = C_DOUBLE_QUOTE;\nCOMMONMARK_LINK_MARKERS[C_SINGLE_QUOTE] = C_SINGLE_QUOTE;\nCOMMONMARK_LINK_MARKERS[C_PAREN_OPEN] = C_PAREN_CLOSE;\n\nfunction link(eat, value, silent) {\n  var self = this;\n  var subvalue = '';\n  var index = 0;\n  var character = value.charAt(0);\n  var pedantic = self.options.pedantic;\n  var commonmark = self.options.commonmark;\n  var gfm = self.options.gfm;\n  var closed;\n  var count;\n  var opening;\n  var beforeURL;\n  var beforeTitle;\n  var subqueue;\n  var hasMarker;\n  var markers;\n  var isImage;\n  var content;\n  var marker;\n  var length;\n  var title;\n  var depth;\n  var queue;\n  var url;\n  var now;\n  var exit;\n  var node;\n  /* Detect whether this is an image. */\n\n  if (character === '!') {\n    isImage = true;\n    subvalue = character;\n    character = value.charAt(++index);\n  }\n  /* Eat the opening. */\n\n\n  if (character !== C_BRACKET_OPEN) {\n    return;\n  }\n  /* Exit when this is a link and we’re already inside\n   * a link. */\n\n\n  if (!isImage && self.inLink) {\n    return;\n  }\n\n  subvalue += character;\n  queue = '';\n  index++;\n  /* Eat the content. */\n\n  length = value.length;\n  now = eat.now();\n  depth = 0;\n  now.column += index;\n  now.offset += index;\n\n  while (index < length) {\n    character = value.charAt(index);\n    subqueue = character;\n\n    if (character === C_TICK) {\n      /* Inline-code in link content. */\n      count = 1;\n\n      while (value.charAt(index + 1) === C_TICK) {\n        subqueue += character;\n        index++;\n        count++;\n      }\n\n      if (!opening) {\n        opening = count;\n      } else if (count >= opening) {\n        opening = 0;\n      }\n    } else if (character === C_BACKSLASH) {\n      /* Allow brackets to be escaped. */\n      index++;\n      subqueue += value.charAt(index);\n      /* In GFM mode, brackets in code still count.\n       * In all other modes, they don’t.  This empty\n       * block prevents the next statements are\n       * entered. */\n    } else if ((!opening || gfm) && character === C_BRACKET_OPEN) {\n      depth++;\n    } else if ((!opening || gfm) && character === C_BRACKET_CLOSE) {\n      if (depth) {\n        depth--;\n      } else {\n        /* Allow white-space between content and\n         * url in GFM mode. */\n        if (!pedantic) {\n          while (index < length) {\n            character = value.charAt(index + 1);\n\n            if (!whitespace(character)) {\n              break;\n            }\n\n            subqueue += character;\n            index++;\n          }\n        }\n\n        if (value.charAt(index + 1) !== C_PAREN_OPEN) {\n          return;\n        }\n\n        subqueue += C_PAREN_OPEN;\n        closed = true;\n        index++;\n        break;\n      }\n    }\n\n    queue += subqueue;\n    subqueue = '';\n    index++;\n  }\n  /* Eat the content closing. */\n\n\n  if (!closed) {\n    return;\n  }\n\n  content = queue;\n  subvalue += queue + subqueue;\n  index++;\n  /* Eat white-space. */\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (!whitespace(character)) {\n      break;\n    }\n\n    subvalue += character;\n    index++;\n  }\n  /* Eat the URL. */\n\n\n  character = value.charAt(index);\n  markers = commonmark ? COMMONMARK_LINK_MARKERS : LINK_MARKERS;\n  queue = '';\n  beforeURL = subvalue;\n\n  if (character === C_LT) {\n    index++;\n    beforeURL += C_LT;\n\n    while (index < length) {\n      character = value.charAt(index);\n\n      if (character === C_GT) {\n        break;\n      }\n\n      if (commonmark && character === '\\n') {\n        return;\n      }\n\n      queue += character;\n      index++;\n    }\n\n    if (value.charAt(index) !== C_GT) {\n      return;\n    }\n\n    subvalue += C_LT + queue + C_GT;\n    url = queue;\n    index++;\n  } else {\n    character = null;\n    subqueue = '';\n\n    while (index < length) {\n      character = value.charAt(index);\n\n      if (subqueue && own.call(markers, character)) {\n        break;\n      }\n\n      if (whitespace(character)) {\n        if (!pedantic) {\n          break;\n        }\n\n        subqueue += character;\n      } else {\n        if (character === C_PAREN_OPEN) {\n          depth++;\n        } else if (character === C_PAREN_CLOSE) {\n          if (depth === 0) {\n            break;\n          }\n\n          depth--;\n        }\n\n        queue += subqueue;\n        subqueue = '';\n\n        if (character === C_BACKSLASH) {\n          queue += C_BACKSLASH;\n          character = value.charAt(++index);\n        }\n\n        queue += character;\n      }\n\n      index++;\n    }\n\n    subvalue += queue;\n    url = queue;\n    index = subvalue.length;\n  }\n  /* Eat white-space. */\n\n\n  queue = '';\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (!whitespace(character)) {\n      break;\n    }\n\n    queue += character;\n    index++;\n  }\n\n  character = value.charAt(index);\n  subvalue += queue;\n  /* Eat the title. */\n\n  if (queue && own.call(markers, character)) {\n    index++;\n    subvalue += character;\n    queue = '';\n    marker = markers[character];\n    beforeTitle = subvalue;\n    /* In commonmark-mode, things are pretty easy: the\n     * marker cannot occur inside the title.\n     *\n     * Non-commonmark does, however, support nested\n     * delimiters. */\n\n    if (commonmark) {\n      while (index < length) {\n        character = value.charAt(index);\n\n        if (character === marker) {\n          break;\n        }\n\n        if (character === C_BACKSLASH) {\n          queue += C_BACKSLASH;\n          character = value.charAt(++index);\n        }\n\n        index++;\n        queue += character;\n      }\n\n      character = value.charAt(index);\n\n      if (character !== marker) {\n        return;\n      }\n\n      title = queue;\n      subvalue += queue + character;\n      index++;\n\n      while (index < length) {\n        character = value.charAt(index);\n\n        if (!whitespace(character)) {\n          break;\n        }\n\n        subvalue += character;\n        index++;\n      }\n    } else {\n      subqueue = '';\n\n      while (index < length) {\n        character = value.charAt(index);\n\n        if (character === marker) {\n          if (hasMarker) {\n            queue += marker + subqueue;\n            subqueue = '';\n          }\n\n          hasMarker = true;\n        } else if (!hasMarker) {\n          queue += character;\n        } else if (character === C_PAREN_CLOSE) {\n          subvalue += queue + marker + subqueue;\n          title = queue;\n          break;\n        } else if (whitespace(character)) {\n          subqueue += character;\n        } else {\n          queue += marker + subqueue + character;\n          subqueue = '';\n          hasMarker = false;\n        }\n\n        index++;\n      }\n    }\n  }\n\n  if (value.charAt(index) !== C_PAREN_CLOSE) {\n    return;\n  }\n  /* istanbul ignore if - never used (yet) */\n\n\n  if (silent) {\n    return true;\n  }\n\n  subvalue += C_PAREN_CLOSE;\n  url = self.decode.raw(self.unescape(url), eat(beforeURL).test().end, {\n    nonTerminated: false\n  });\n\n  if (title) {\n    beforeTitle = eat(beforeTitle).test().end;\n    title = self.decode.raw(self.unescape(title), beforeTitle);\n  }\n\n  node = {\n    type: isImage ? 'image' : 'link',\n    title: title || null,\n    url: url\n  };\n\n  if (isImage) {\n    node.alt = self.decode.raw(self.unescape(content), now) || null;\n  } else {\n    exit = self.enterLink();\n    node.children = self.tokenizeInline(content, now);\n    exit();\n  }\n\n  return eat(subvalue)(node);\n}","'use strict';\n\nmodule.exports = escapes;\nvar defaults = ['\\\\', '`', '*', '{', '}', '[', ']', '(', ')', '#', '+', '-', '.', '!', '_', '>'];\nvar gfm = defaults.concat(['~', '|']);\nvar commonmark = gfm.concat(['\\n', '\"', '$', '%', '&', \"'\", ',', '/', ':', ';', '<', '=', '?', '@', '^']);\nescapes.default = defaults;\nescapes.gfm = gfm;\nescapes.commonmark = commonmark; // Get markdown escapes.\n\nfunction escapes(options) {\n  var settings = options || {};\n\n  if (settings.commonmark) {\n    return commonmark;\n  }\n\n  return settings.gfm ? gfm : defaults;\n}","'use strict';\n\nvar own = {}.hasOwnProperty;\nmodule.exports = stringify;\n\nfunction stringify(value) {\n  /* Nothing. */\n  if (!value || typeof value !== 'object') {\n    return null;\n  }\n  /* Node. */\n\n\n  if (own.call(value, 'position') || own.call(value, 'type')) {\n    return position(value.position);\n  }\n  /* Position. */\n\n\n  if (own.call(value, 'start') || own.call(value, 'end')) {\n    return position(value);\n  }\n  /* Point. */\n\n\n  if (own.call(value, 'line') || own.call(value, 'column')) {\n    return point(value);\n  }\n  /* ? */\n\n\n  return null;\n}\n\nfunction point(point) {\n  if (!point || typeof point !== 'object') {\n    point = {};\n  }\n\n  return index(point.line) + ':' + index(point.column);\n}\n\nfunction position(pos) {\n  if (!pos || typeof pos !== 'object') {\n    pos = {};\n  }\n\n  return point(pos.start) + '-' + point(pos.end);\n}\n\nfunction index(value) {\n  return value && typeof value === 'number' ? value : 1;\n}","'use strict';\n\nmodule.exports = locate;\n\nfunction locate(value, fromIndex) {\n  return value.indexOf('<', fromIndex);\n}","'use strict';\n\nvar trim = require('trim');\n\nvar decimal = require('is-decimal');\n\nvar trimTrailingLines = require('trim-trailing-lines');\n\nvar interrupt = require('../util/interrupt');\n\nmodule.exports = paragraph;\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\nvar C_SPACE = ' ';\nvar TAB_SIZE = 4;\n/* Tokenise paragraph. */\n\nfunction paragraph(eat, value, silent) {\n  var self = this;\n  var settings = self.options;\n  var commonmark = settings.commonmark;\n  var gfm = settings.gfm;\n  var tokenizers = self.blockTokenizers;\n  var interruptors = self.interruptParagraph;\n  var index = value.indexOf(C_NEWLINE);\n  var length = value.length;\n  var position;\n  var subvalue;\n  var character;\n  var size;\n  var now;\n\n  while (index < length) {\n    /* Eat everything if there’s no following newline. */\n    if (index === -1) {\n      index = length;\n      break;\n    }\n    /* Stop if the next character is NEWLINE. */\n\n\n    if (value.charAt(index + 1) === C_NEWLINE) {\n      break;\n    }\n    /* In commonmark-mode, following indented lines\n     * are part of the paragraph. */\n\n\n    if (commonmark) {\n      size = 0;\n      position = index + 1;\n\n      while (position < length) {\n        character = value.charAt(position);\n\n        if (character === C_TAB) {\n          size = TAB_SIZE;\n          break;\n        } else if (character === C_SPACE) {\n          size++;\n        } else {\n          break;\n        }\n\n        position++;\n      }\n\n      if (size >= TAB_SIZE) {\n        index = value.indexOf(C_NEWLINE, index + 1);\n        continue;\n      }\n    }\n\n    subvalue = value.slice(index + 1);\n    /* Check if the following code contains a possible\n     * block. */\n\n    if (interrupt(interruptors, tokenizers, self, [eat, subvalue, true])) {\n      break;\n    }\n    /* Break if the following line starts a list, when\n     * already in a list, or when in commonmark, or when\n     * in gfm mode and the bullet is *not* numeric. */\n\n\n    if (tokenizers.list.call(self, eat, subvalue, true) && (self.inList || commonmark || gfm && !decimal(trim.left(subvalue).charAt(0)))) {\n      break;\n    }\n\n    position = index;\n    index = value.indexOf(C_NEWLINE, index + 1);\n\n    if (index !== -1 && trim(value.slice(position, index)) === '') {\n      index = position;\n      break;\n    }\n  }\n\n  subvalue = value.slice(0, index);\n\n  if (trim(subvalue) === '') {\n    eat(subvalue);\n    return null;\n  }\n  /* istanbul ignore if - never used (yet) */\n\n\n  if (silent) {\n    return true;\n  }\n\n  now = eat.now();\n  subvalue = trimTrailingLines(subvalue);\n  return eat(subvalue)({\n    type: 'paragraph',\n    children: self.tokenizeInline(subvalue, now)\n  });\n}","\"use strict\";\n\nvar protocols = ['http', 'https', 'mailto', 'tel'];\n\nmodule.exports = function uriTransformer(uri) {\n  var url = (uri || '').trim();\n  var first = url.charAt(0);\n\n  if (first === '#' || first === '/') {\n    return url;\n  }\n\n  var colon = url.indexOf(':');\n\n  if (colon === -1) {\n    return url;\n  }\n\n  var length = protocols.length;\n  var index = -1;\n\n  while (++index < length) {\n    var protocol = protocols[index];\n\n    if (colon === protocol.length && url.slice(0, protocol.length).toLowerCase() === protocol) {\n      return url;\n    }\n  }\n\n  index = url.indexOf('?');\n\n  if (index !== -1 && colon > index) {\n    return url;\n  }\n\n  index = url.indexOf('#');\n\n  if (index !== -1 && colon > index) {\n    return url;\n  } // eslint-disable-next-line no-script-url\n\n\n  return 'javascript:void(0)';\n};","'use strict';\n/* eslint-disable max-params */\n\nvar trim = require('trim');\n\nvar repeat = require('repeat-string');\n\nvar decimal = require('is-decimal');\n\nvar getIndent = require('../util/get-indentation');\n\nvar removeIndent = require('../util/remove-indentation');\n\nvar interrupt = require('../util/interrupt');\n\nmodule.exports = list;\nvar C_ASTERISK = '*';\nvar C_UNDERSCORE = '_';\nvar C_PLUS = '+';\nvar C_DASH = '-';\nvar C_DOT = '.';\nvar C_SPACE = ' ';\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\nvar C_PAREN_CLOSE = ')';\nvar C_X_LOWER = 'x';\nvar TAB_SIZE = 4;\nvar EXPRESSION_LOOSE_LIST_ITEM = /\\n\\n(?!\\s*$)/;\nvar EXPRESSION_TASK_ITEM = /^\\[([ \\t]|x|X)][ \\t]/;\nvar EXPRESSION_BULLET = /^([ \\t]*)([*+-]|\\d+[.)])( {1,4}(?! )| |\\t|$|(?=\\n))([^\\n]*)/;\nvar EXPRESSION_PEDANTIC_BULLET = /^([ \\t]*)([*+-]|\\d+[.)])([ \\t]+)/;\nvar EXPRESSION_INITIAL_INDENT = /^( {1,4}|\\t)?/gm;\n/* Map of characters which can be used to mark\n * list-items. */\n\nvar LIST_UNORDERED_MARKERS = {};\nLIST_UNORDERED_MARKERS[C_ASTERISK] = true;\nLIST_UNORDERED_MARKERS[C_PLUS] = true;\nLIST_UNORDERED_MARKERS[C_DASH] = true;\n/* Map of characters which can be used to mark\n * list-items after a digit. */\n\nvar LIST_ORDERED_MARKERS = {};\nLIST_ORDERED_MARKERS[C_DOT] = true;\n/* Map of characters which can be used to mark\n * list-items after a digit. */\n\nvar LIST_ORDERED_COMMONMARK_MARKERS = {};\nLIST_ORDERED_COMMONMARK_MARKERS[C_DOT] = true;\nLIST_ORDERED_COMMONMARK_MARKERS[C_PAREN_CLOSE] = true;\n\nfunction list(eat, value, silent) {\n  var self = this;\n  var commonmark = self.options.commonmark;\n  var pedantic = self.options.pedantic;\n  var tokenizers = self.blockTokenizers;\n  var interuptors = self.interruptList;\n  var markers;\n  var index = 0;\n  var length = value.length;\n  var start = null;\n  var size = 0;\n  var queue;\n  var ordered;\n  var character;\n  var marker;\n  var nextIndex;\n  var startIndex;\n  var prefixed;\n  var currentMarker;\n  var content;\n  var line;\n  var prevEmpty;\n  var empty;\n  var items;\n  var allLines;\n  var emptyLines;\n  var item;\n  var enterTop;\n  var exitBlockquote;\n  var isLoose;\n  var node;\n  var now;\n  var end;\n  var indented;\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (character === C_TAB) {\n      size += TAB_SIZE - size % TAB_SIZE;\n    } else if (character === C_SPACE) {\n      size++;\n    } else {\n      break;\n    }\n\n    index++;\n  }\n\n  if (size >= TAB_SIZE) {\n    return;\n  }\n\n  character = value.charAt(index);\n  markers = commonmark ? LIST_ORDERED_COMMONMARK_MARKERS : LIST_ORDERED_MARKERS;\n\n  if (LIST_UNORDERED_MARKERS[character] === true) {\n    marker = character;\n    ordered = false;\n  } else {\n    ordered = true;\n    queue = '';\n\n    while (index < length) {\n      character = value.charAt(index);\n\n      if (!decimal(character)) {\n        break;\n      }\n\n      queue += character;\n      index++;\n    }\n\n    character = value.charAt(index);\n\n    if (!queue || markers[character] !== true) {\n      return;\n    }\n\n    start = parseInt(queue, 10);\n    marker = character;\n  }\n\n  character = value.charAt(++index);\n\n  if (character !== C_SPACE && character !== C_TAB) {\n    return;\n  }\n\n  if (silent) {\n    return true;\n  }\n\n  index = 0;\n  items = [];\n  allLines = [];\n  emptyLines = [];\n\n  while (index < length) {\n    nextIndex = value.indexOf(C_NEWLINE, index);\n    startIndex = index;\n    prefixed = false;\n    indented = false;\n\n    if (nextIndex === -1) {\n      nextIndex = length;\n    }\n\n    end = index + TAB_SIZE;\n    size = 0;\n\n    while (index < length) {\n      character = value.charAt(index);\n\n      if (character === C_TAB) {\n        size += TAB_SIZE - size % TAB_SIZE;\n      } else if (character === C_SPACE) {\n        size++;\n      } else {\n        break;\n      }\n\n      index++;\n    }\n\n    if (size >= TAB_SIZE) {\n      indented = true;\n    }\n\n    if (item && size >= item.indent) {\n      indented = true;\n    }\n\n    character = value.charAt(index);\n    currentMarker = null;\n\n    if (!indented) {\n      if (LIST_UNORDERED_MARKERS[character] === true) {\n        currentMarker = character;\n        index++;\n        size++;\n      } else {\n        queue = '';\n\n        while (index < length) {\n          character = value.charAt(index);\n\n          if (!decimal(character)) {\n            break;\n          }\n\n          queue += character;\n          index++;\n        }\n\n        character = value.charAt(index);\n        index++;\n\n        if (queue && markers[character] === true) {\n          currentMarker = character;\n          size += queue.length + 1;\n        }\n      }\n\n      if (currentMarker) {\n        character = value.charAt(index);\n\n        if (character === C_TAB) {\n          size += TAB_SIZE - size % TAB_SIZE;\n          index++;\n        } else if (character === C_SPACE) {\n          end = index + TAB_SIZE;\n\n          while (index < end) {\n            if (value.charAt(index) !== C_SPACE) {\n              break;\n            }\n\n            index++;\n            size++;\n          }\n\n          if (index === end && value.charAt(index) === C_SPACE) {\n            index -= TAB_SIZE - 1;\n            size -= TAB_SIZE - 1;\n          }\n        } else if (character !== C_NEWLINE && character !== '') {\n          currentMarker = null;\n        }\n      }\n    }\n\n    if (currentMarker) {\n      if (!pedantic && marker !== currentMarker) {\n        break;\n      }\n\n      prefixed = true;\n    } else {\n      if (!commonmark && !indented && value.charAt(startIndex) === C_SPACE) {\n        indented = true;\n      } else if (commonmark && item) {\n        indented = size >= item.indent || size > TAB_SIZE;\n      }\n\n      prefixed = false;\n      index = startIndex;\n    }\n\n    line = value.slice(startIndex, nextIndex);\n    content = startIndex === index ? line : value.slice(index, nextIndex);\n\n    if (currentMarker === C_ASTERISK || currentMarker === C_UNDERSCORE || currentMarker === C_DASH) {\n      if (tokenizers.thematicBreak.call(self, eat, line, true)) {\n        break;\n      }\n    }\n\n    prevEmpty = empty;\n    empty = !trim(content).length;\n\n    if (indented && item) {\n      item.value = item.value.concat(emptyLines, line);\n      allLines = allLines.concat(emptyLines, line);\n      emptyLines = [];\n    } else if (prefixed) {\n      if (emptyLines.length !== 0) {\n        item.value.push('');\n        item.trail = emptyLines.concat();\n      }\n\n      item = {\n        value: [line],\n        indent: size,\n        trail: []\n      };\n      items.push(item);\n      allLines = allLines.concat(emptyLines, line);\n      emptyLines = [];\n    } else if (empty) {\n      if (prevEmpty) {\n        break;\n      }\n\n      emptyLines.push(line);\n    } else {\n      if (prevEmpty) {\n        break;\n      }\n\n      if (interrupt(interuptors, tokenizers, self, [eat, line, true])) {\n        break;\n      }\n\n      item.value = item.value.concat(emptyLines, line);\n      allLines = allLines.concat(emptyLines, line);\n      emptyLines = [];\n    }\n\n    index = nextIndex + 1;\n  }\n\n  node = eat(allLines.join(C_NEWLINE)).reset({\n    type: 'list',\n    ordered: ordered,\n    start: start,\n    loose: null,\n    children: []\n  });\n  enterTop = self.enterList();\n  exitBlockquote = self.enterBlock();\n  isLoose = false;\n  index = -1;\n  length = items.length;\n\n  while (++index < length) {\n    item = items[index].value.join(C_NEWLINE);\n    now = eat.now();\n    item = eat(item)(listItem(self, item, now), node);\n\n    if (item.loose) {\n      isLoose = true;\n    }\n\n    item = items[index].trail.join(C_NEWLINE);\n\n    if (index !== length - 1) {\n      item += C_NEWLINE;\n    }\n\n    eat(item);\n  }\n\n  enterTop();\n  exitBlockquote();\n  node.loose = isLoose;\n  return node;\n}\n\nfunction listItem(ctx, value, position) {\n  var offsets = ctx.offset;\n  var fn = ctx.options.pedantic ? pedanticListItem : normalListItem;\n  var checked = null;\n  var task;\n  var indent;\n  value = fn.apply(null, arguments);\n\n  if (ctx.options.gfm) {\n    task = value.match(EXPRESSION_TASK_ITEM);\n\n    if (task) {\n      indent = task[0].length;\n      checked = task[1].toLowerCase() === C_X_LOWER;\n      offsets[position.line] += indent;\n      value = value.slice(indent);\n    }\n  }\n\n  return {\n    type: 'listItem',\n    loose: EXPRESSION_LOOSE_LIST_ITEM.test(value) || value.charAt(value.length - 1) === C_NEWLINE,\n    checked: checked,\n    children: ctx.tokenizeBlock(value, position)\n  };\n}\n/* Create a list-item using overly simple mechanics. */\n\n\nfunction pedanticListItem(ctx, value, position) {\n  var offsets = ctx.offset;\n  var line = position.line;\n  /* Remove the list-item’s bullet. */\n\n  value = value.replace(EXPRESSION_PEDANTIC_BULLET, replacer);\n  /* The initial line was also matched by the below, so\n   * we reset the `line`. */\n\n  line = position.line;\n  return value.replace(EXPRESSION_INITIAL_INDENT, replacer);\n  /* A simple replacer which removed all matches,\n   * and adds their length to `offset`. */\n\n  function replacer($0) {\n    offsets[line] = (offsets[line] || 0) + $0.length;\n    line++;\n    return '';\n  }\n}\n/* Create a list-item using sane mechanics. */\n\n\nfunction normalListItem(ctx, value, position) {\n  var offsets = ctx.offset;\n  var line = position.line;\n  var max;\n  var bullet;\n  var rest;\n  var lines;\n  var trimmedLines;\n  var index;\n  var length;\n  /* Remove the list-item’s bullet. */\n\n  value = value.replace(EXPRESSION_BULLET, replacer);\n  lines = value.split(C_NEWLINE);\n  trimmedLines = removeIndent(value, getIndent(max).indent).split(C_NEWLINE);\n  /* We replaced the initial bullet with something\n   * else above, which was used to trick\n   * `removeIndentation` into removing some more\n   * characters when possible.  However, that could\n   * result in the initial line to be stripped more\n   * than it should be. */\n\n  trimmedLines[0] = rest;\n  offsets[line] = (offsets[line] || 0) + bullet.length;\n  line++;\n  index = 0;\n  length = lines.length;\n\n  while (++index < length) {\n    offsets[line] = (offsets[line] || 0) + lines[index].length - trimmedLines[index].length;\n    line++;\n  }\n\n  return trimmedLines.join(C_NEWLINE);\n\n  function replacer($0, $1, $2, $3, $4) {\n    bullet = $1 + $2 + $3;\n    rest = $4;\n    /* Make sure that the first nine numbered list items\n     * can indent with an extra space.  That is, when\n     * the bullet did not receive an extra final space. */\n\n    if (Number($2) < 10 && bullet.length % 2 === 1) {\n      $2 = C_SPACE + $2;\n    }\n\n    max = $1 + repeat(C_SPACE, $2.length) + $3;\n    return max + rest;\n  }\n}","if (typeof Object.create === 'function') {\n  // implementation from standard node.js 'util' module\n  module.exports = function inherits(ctor, superCtor) {\n    if (superCtor) {\n      ctor.super_ = superCtor;\n      ctor.prototype = Object.create(superCtor.prototype, {\n        constructor: {\n          value: ctor,\n          enumerable: false,\n          writable: true,\n          configurable: true\n        }\n      });\n    }\n  };\n} else {\n  // old school shim for old browsers\n  module.exports = function inherits(ctor, superCtor) {\n    if (superCtor) {\n      ctor.super_ = superCtor;\n\n      var TempCtor = function TempCtor() {};\n\n      TempCtor.prototype = superCtor.prototype;\n      ctor.prototype = new TempCtor();\n      ctor.prototype.constructor = ctor;\n    }\n  };\n}","/*!\n * repeat-string <https://github.com/jonschlinkert/repeat-string>\n *\n * Copyright (c) 2014-2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n'use strict';\n/**\n * Results cache\n */\n\nvar res = '';\nvar cache;\n/**\n * Expose `repeat`\n */\n\nmodule.exports = repeat;\n/**\n * Repeat the given `string` the specified `number`\n * of times.\n *\n * **Example:**\n *\n * ```js\n * var repeat = require('repeat-string');\n * repeat('A', 5);\n * //=> AAAAA\n * ```\n *\n * @param {String} `string` The string to repeat\n * @param {Number} `number` The number of times to repeat the string\n * @return {String} Repeated string\n * @api public\n */\n\nfunction repeat(str, num) {\n  if (typeof str !== 'string') {\n    throw new TypeError('expected a string');\n  } // cover common, quick use cases\n\n\n  if (num === 1) return str;\n  if (num === 2) return str + str;\n  var max = str.length * num;\n\n  if (cache !== str || typeof cache === 'undefined') {\n    cache = str;\n    res = '';\n  } else if (res.length >= max) {\n    return res.substr(0, max);\n  }\n\n  while (max > res.length && num > 1) {\n    if (num & 1) {\n      res += str;\n    }\n\n    num >>= 1;\n    str += str;\n  }\n\n  res += str;\n  res = res.substr(0, max);\n  return res;\n}","exports = module.exports = trim;\n\nfunction trim(str) {\n  return str.replace(/^\\s*|\\s*$/g, '');\n}\n\nexports.left = function (str) {\n  return str.replace(/^\\s*/, '');\n};\n\nexports.right = function (str) {\n  return str.replace(/\\s*$/, '');\n};","'use strict';\n\nvar path = require('path');\n\nvar replace = require('replace-ext');\n\nvar buffer = require('is-buffer');\n\nmodule.exports = VFile;\nvar own = {}.hasOwnProperty;\nvar proto = VFile.prototype;\nproto.toString = toString;\n/* Order of setting (least specific to most), we need this because\n * otherwise `{stem: 'a', path: '~/b.js'}` would throw, as a path\n * is needed before a stem can be set. */\n\nvar order = ['history', 'path', 'basename', 'stem', 'extname', 'dirname'];\n/* Construct a new file. */\n\nfunction VFile(options) {\n  var prop;\n  var index;\n  var length;\n\n  if (!options) {\n    options = {};\n  } else if (typeof options === 'string' || buffer(options)) {\n    options = {\n      contents: options\n    };\n  } else if ('message' in options && 'messages' in options) {\n    return options;\n  }\n\n  if (!(this instanceof VFile)) {\n    return new VFile(options);\n  }\n\n  this.data = {};\n  this.messages = [];\n  this.history = [];\n  this.cwd = process.cwd();\n  /* Set path related properties in the correct order. */\n\n  index = -1;\n  length = order.length;\n\n  while (++index < length) {\n    prop = order[index];\n\n    if (own.call(options, prop)) {\n      this[prop] = options[prop];\n    }\n  }\n  /* Set non-path related properties. */\n\n\n  for (prop in options) {\n    if (order.indexOf(prop) === -1) {\n      this[prop] = options[prop];\n    }\n  }\n}\n/* Access full path (`~/index.min.js`). */\n\n\nObject.defineProperty(proto, 'path', {\n  get: function get() {\n    return this.history[this.history.length - 1];\n  },\n  set: function set(path) {\n    assertNonEmpty(path, 'path');\n\n    if (path !== this.path) {\n      this.history.push(path);\n    }\n  }\n});\n/* Access parent path (`~`). */\n\nObject.defineProperty(proto, 'dirname', {\n  get: function get() {\n    return typeof this.path === 'string' ? path.dirname(this.path) : undefined;\n  },\n  set: function set(dirname) {\n    assertPath(this.path, 'dirname');\n    this.path = path.join(dirname || '', this.basename);\n  }\n});\n/* Access basename (`index.min.js`). */\n\nObject.defineProperty(proto, 'basename', {\n  get: function get() {\n    return typeof this.path === 'string' ? path.basename(this.path) : undefined;\n  },\n  set: function set(basename) {\n    assertNonEmpty(basename, 'basename');\n    assertPart(basename, 'basename');\n    this.path = path.join(this.dirname || '', basename);\n  }\n});\n/* Access extname (`.js`). */\n\nObject.defineProperty(proto, 'extname', {\n  get: function get() {\n    return typeof this.path === 'string' ? path.extname(this.path) : undefined;\n  },\n  set: function set(extname) {\n    var ext = extname || '';\n    assertPart(ext, 'extname');\n    assertPath(this.path, 'extname');\n\n    if (ext) {\n      if (ext.charAt(0) !== '.') {\n        throw new Error('`extname` must start with `.`');\n      }\n\n      if (ext.indexOf('.', 1) !== -1) {\n        throw new Error('`extname` cannot contain multiple dots');\n      }\n    }\n\n    this.path = replace(this.path, ext);\n  }\n});\n/* Access stem (`index.min`). */\n\nObject.defineProperty(proto, 'stem', {\n  get: function get() {\n    return typeof this.path === 'string' ? path.basename(this.path, this.extname) : undefined;\n  },\n  set: function set(stem) {\n    assertNonEmpty(stem, 'stem');\n    assertPart(stem, 'stem');\n    this.path = path.join(this.dirname || '', stem + (this.extname || ''));\n  }\n});\n/* Get the value of the file. */\n\nfunction toString(encoding) {\n  var value = this.contents || '';\n  return buffer(value) ? value.toString(encoding) : String(value);\n}\n/* Assert that `part` is not a path (i.e., does\n * not contain `path.sep`). */\n\n\nfunction assertPart(part, name) {\n  if (part.indexOf(path.sep) !== -1) {\n    throw new Error('`' + name + '` cannot be a path: did not expect `' + path.sep + '`');\n  }\n}\n/* Assert that `part` is not empty. */\n\n\nfunction assertNonEmpty(part, name) {\n  if (!part) {\n    throw new Error('`' + name + '` cannot be empty');\n  }\n}\n/* Assert `path` exists. */\n\n\nfunction assertPath(path, name) {\n  if (!path) {\n    throw new Error('Setting `' + name + '` requires `path` to be set too');\n  }\n}","'use strict';\n\nvar whitespace = require('is-whitespace-character');\n\nvar decode = require('parse-entities');\n\nvar locate = require('../locate/tag');\n\nmodule.exports = autoLink;\nautoLink.locator = locate;\nautoLink.notInLink = true;\nvar C_LT = '<';\nvar C_GT = '>';\nvar C_AT_SIGN = '@';\nvar C_SLASH = '/';\nvar MAILTO = 'mailto:';\nvar MAILTO_LENGTH = MAILTO.length;\n/* Tokenise a link. */\n\nfunction autoLink(eat, value, silent) {\n  var self;\n  var subvalue;\n  var length;\n  var index;\n  var queue;\n  var character;\n  var hasAtCharacter;\n  var link;\n  var now;\n  var content;\n  var tokenizers;\n  var exit;\n\n  if (value.charAt(0) !== C_LT) {\n    return;\n  }\n\n  self = this;\n  subvalue = '';\n  length = value.length;\n  index = 0;\n  queue = '';\n  hasAtCharacter = false;\n  link = '';\n  index++;\n  subvalue = C_LT;\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (whitespace(character) || character === C_GT || character === C_AT_SIGN || character === ':' && value.charAt(index + 1) === C_SLASH) {\n      break;\n    }\n\n    queue += character;\n    index++;\n  }\n\n  if (!queue) {\n    return;\n  }\n\n  link += queue;\n  queue = '';\n  character = value.charAt(index);\n  link += character;\n  index++;\n\n  if (character === C_AT_SIGN) {\n    hasAtCharacter = true;\n  } else {\n    if (character !== ':' || value.charAt(index + 1) !== C_SLASH) {\n      return;\n    }\n\n    link += C_SLASH;\n    index++;\n  }\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (whitespace(character) || character === C_GT) {\n      break;\n    }\n\n    queue += character;\n    index++;\n  }\n\n  character = value.charAt(index);\n\n  if (!queue || character !== C_GT) {\n    return;\n  }\n  /* istanbul ignore if - never used (yet) */\n\n\n  if (silent) {\n    return true;\n  }\n\n  link += queue;\n  content = link;\n  subvalue += link + character;\n  now = eat.now();\n  now.column++;\n  now.offset++;\n\n  if (hasAtCharacter) {\n    if (link.slice(0, MAILTO_LENGTH).toLowerCase() === MAILTO) {\n      content = content.substr(MAILTO_LENGTH);\n      now.column += MAILTO_LENGTH;\n      now.offset += MAILTO_LENGTH;\n    } else {\n      link = MAILTO + link;\n    }\n  }\n  /* Temporarily remove all tokenizers except text in autolinks. */\n\n\n  tokenizers = self.inlineTokenizers;\n  self.inlineTokenizers = {\n    text: tokenizers.text\n  };\n  exit = self.enterLink();\n  content = self.tokenizeInline(content, now);\n  self.inlineTokenizers = tokenizers;\n  exit();\n  return eat(subvalue)({\n    type: 'link',\n    title: null,\n    url: decode(link, {\n      nonTerminated: false\n    }),\n    children: content\n  });\n}","'use strict';\n\nvar trim = require('trim-trailing-lines');\n\nmodule.exports = fencedCode;\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\nvar C_SPACE = ' ';\nvar C_TILDE = '~';\nvar C_TICK = '`';\nvar MIN_FENCE_COUNT = 3;\nvar CODE_INDENT_COUNT = 4;\n\nfunction fencedCode(eat, value, silent) {\n  var self = this;\n  var settings = self.options;\n  var length = value.length + 1;\n  var index = 0;\n  var subvalue = '';\n  var fenceCount;\n  var marker;\n  var character;\n  var flag;\n  var queue;\n  var content;\n  var exdentedContent;\n  var closing;\n  var exdentedClosing;\n  var indent;\n  var now;\n\n  if (!settings.gfm) {\n    return;\n  }\n  /* Eat initial spacing. */\n\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (character !== C_SPACE && character !== C_TAB) {\n      break;\n    }\n\n    subvalue += character;\n    index++;\n  }\n\n  indent = index;\n  /* Eat the fence. */\n\n  character = value.charAt(index);\n\n  if (character !== C_TILDE && character !== C_TICK) {\n    return;\n  }\n\n  index++;\n  marker = character;\n  fenceCount = 1;\n  subvalue += character;\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (character !== marker) {\n      break;\n    }\n\n    subvalue += character;\n    fenceCount++;\n    index++;\n  }\n\n  if (fenceCount < MIN_FENCE_COUNT) {\n    return;\n  }\n  /* Eat spacing before flag. */\n\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (character !== C_SPACE && character !== C_TAB) {\n      break;\n    }\n\n    subvalue += character;\n    index++;\n  }\n  /* Eat flag. */\n\n\n  flag = '';\n  queue = '';\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (character === C_NEWLINE || character === C_TILDE || character === C_TICK) {\n      break;\n    }\n\n    if (character === C_SPACE || character === C_TAB) {\n      queue += character;\n    } else {\n      flag += queue + character;\n      queue = '';\n    }\n\n    index++;\n  }\n\n  character = value.charAt(index);\n\n  if (character && character !== C_NEWLINE) {\n    return;\n  }\n\n  if (silent) {\n    return true;\n  }\n\n  now = eat.now();\n  now.column += subvalue.length;\n  now.offset += subvalue.length;\n  subvalue += flag;\n  flag = self.decode.raw(self.unescape(flag), now);\n\n  if (queue) {\n    subvalue += queue;\n  }\n\n  queue = '';\n  closing = '';\n  exdentedClosing = '';\n  content = '';\n  exdentedContent = '';\n  /* Eat content. */\n\n  while (index < length) {\n    character = value.charAt(index);\n    content += closing;\n    exdentedContent += exdentedClosing;\n    closing = '';\n    exdentedClosing = '';\n\n    if (character !== C_NEWLINE) {\n      content += character;\n      exdentedClosing += character;\n      index++;\n      continue;\n    }\n    /* Add the newline to `subvalue` if its the first\n     * character.  Otherwise, add it to the `closing`\n     * queue. */\n\n\n    if (content) {\n      closing += character;\n      exdentedClosing += character;\n    } else {\n      subvalue += character;\n    }\n\n    queue = '';\n    index++;\n\n    while (index < length) {\n      character = value.charAt(index);\n\n      if (character !== C_SPACE) {\n        break;\n      }\n\n      queue += character;\n      index++;\n    }\n\n    closing += queue;\n    exdentedClosing += queue.slice(indent);\n\n    if (queue.length >= CODE_INDENT_COUNT) {\n      continue;\n    }\n\n    queue = '';\n\n    while (index < length) {\n      character = value.charAt(index);\n\n      if (character !== marker) {\n        break;\n      }\n\n      queue += character;\n      index++;\n    }\n\n    closing += queue;\n    exdentedClosing += queue;\n\n    if (queue.length < fenceCount) {\n      continue;\n    }\n\n    queue = '';\n\n    while (index < length) {\n      character = value.charAt(index);\n\n      if (character !== C_SPACE && character !== C_TAB) {\n        break;\n      }\n\n      closing += character;\n      exdentedClosing += character;\n      index++;\n    }\n\n    if (!character || character === C_NEWLINE) {\n      break;\n    }\n  }\n\n  subvalue += content + closing;\n  return eat(subvalue)({\n    type: 'code',\n    lang: flag || null,\n    value: trim(exdentedContent)\n  });\n}","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-is.production.min.js');\n} else {\n  module.exports = require('./cjs/react-is.development.js');\n}","module.exports = extend;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n  var target = {};\n\n  for (var i = 0; i < arguments.length; i++) {\n    var source = arguments[i];\n\n    for (var key in source) {\n      if (hasOwnProperty.call(source, key)) {\n        target[key] = source[key];\n      }\n    }\n  }\n\n  return target;\n}","'use strict';\n\nrequire(\"core-js/modules/es.array.reduce.js\");\n\nvar React = require('react');\n\nvar xtend = require('xtend');\n\nvar ReactIs = require('react-is');\n\nvar defaultNodePosition = {\n  start: {\n    line: 1,\n    column: 1,\n    offset: 0\n  },\n  end: {\n    line: 1,\n    column: 1,\n    offset: 0\n  }\n};\n\nfunction astToReact(node, options) {\n  var parent = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n  var index = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n  var renderer = options.renderers[node.type]; // nodes generated by plugins may not have position data\n  // much of the code after this point will attempt to access properties of the node.position\n  // this will set the node position to the parent node's position to prevent errors\n\n  if (node.position === undefined) {\n    node.position = parent.node && parent.node.position || defaultNodePosition;\n  }\n\n  var pos = node.position.start;\n  var key = [node.type, pos.line, pos.column, index].join('-');\n\n  if (!ReactIs.isValidElementType(renderer)) {\n    throw new Error(\"Renderer for type `\".concat(node.type, \"` not defined or is not renderable\"));\n  }\n\n  var nodeProps = getNodeProps(node, key, options, renderer, parent, index);\n  return React.createElement(renderer, nodeProps, nodeProps.children || resolveChildren() || undefined);\n\n  function resolveChildren() {\n    return node.children && node.children.map(function (childNode, i) {\n      return astToReact(childNode, options, {\n        node: node,\n        props: nodeProps\n      }, i);\n    });\n  }\n} // eslint-disable-next-line max-params, complexity\n\n\nfunction getNodeProps(node, key, opts, renderer, parent, index) {\n  var props = {\n    key: key\n  };\n  var isTagRenderer = typeof renderer === 'string'; // `sourcePos` is true if the user wants source information (line/column info from markdown source)\n\n  if (opts.sourcePos && node.position) {\n    props['data-sourcepos'] = flattenPosition(node.position);\n  }\n\n  if (opts.rawSourcePos && !isTagRenderer) {\n    props.sourcePosition = node.position;\n  } // If `includeNodeIndex` is true, pass node index info to all non-tag renderers\n\n\n  if (opts.includeNodeIndex && parent.node && parent.node.children && !isTagRenderer) {\n    props.index = parent.node.children.indexOf(node);\n    props.parentChildCount = parent.node.children.length;\n  }\n\n  var ref = node.identifier !== null && node.identifier !== undefined ? opts.definitions[node.identifier] || {} : null;\n\n  switch (node.type) {\n    case 'root':\n      assignDefined(props, {\n        className: opts.className\n      });\n      break;\n\n    case 'text':\n      props.nodeKey = key;\n      props.children = node.value;\n      break;\n\n    case 'heading':\n      props.level = node.depth;\n      break;\n\n    case 'list':\n      props.start = node.start;\n      props.ordered = node.ordered;\n      props.tight = !node.loose;\n      props.depth = node.depth;\n      break;\n\n    case 'listItem':\n      props.checked = node.checked;\n      props.tight = !node.loose;\n      props.ordered = node.ordered;\n      props.index = node.index;\n      props.children = getListItemChildren(node, parent).map(function (childNode, i) {\n        return astToReact(childNode, opts, {\n          node: node,\n          props: props\n        }, i);\n      });\n      break;\n\n    case 'definition':\n      assignDefined(props, {\n        identifier: node.identifier,\n        title: node.title,\n        url: node.url\n      });\n      break;\n\n    case 'code':\n      assignDefined(props, {\n        language: node.lang && node.lang.split(/\\s/, 1)[0]\n      });\n      break;\n\n    case 'inlineCode':\n      props.children = node.value;\n      props.inline = true;\n      break;\n\n    case 'link':\n      assignDefined(props, {\n        title: node.title || undefined,\n        target: typeof opts.linkTarget === 'function' ? opts.linkTarget(node.url, node.children, node.title) : opts.linkTarget,\n        href: opts.transformLinkUri ? opts.transformLinkUri(node.url, node.children, node.title) : node.url\n      });\n      break;\n\n    case 'image':\n      assignDefined(props, {\n        alt: node.alt || undefined,\n        title: node.title || undefined,\n        src: opts.transformImageUri ? opts.transformImageUri(node.url, node.children, node.title, node.alt) : node.url\n      });\n      break;\n\n    case 'linkReference':\n      assignDefined(props, xtend(ref, {\n        href: opts.transformLinkUri ? opts.transformLinkUri(ref.href) : ref.href\n      }));\n      break;\n\n    case 'imageReference':\n      assignDefined(props, {\n        src: opts.transformImageUri && ref.href ? opts.transformImageUri(ref.href, node.children, ref.title, node.alt) : ref.href,\n        title: ref.title || undefined,\n        alt: node.alt || undefined\n      });\n      break;\n\n    case 'table':\n    case 'tableHead':\n    case 'tableBody':\n      props.columnAlignment = node.align;\n      break;\n\n    case 'tableRow':\n      props.isHeader = parent.node.type === 'tableHead';\n      props.columnAlignment = parent.props.columnAlignment;\n      break;\n\n    case 'tableCell':\n      assignDefined(props, {\n        isHeader: parent.props.isHeader,\n        align: parent.props.columnAlignment[index]\n      });\n      break;\n\n    case 'virtualHtml':\n      props.tag = node.tag;\n      break;\n\n    case 'html':\n      // @todo find a better way than this\n      props.isBlock = node.position.start.line !== node.position.end.line;\n      props.escapeHtml = opts.escapeHtml;\n      props.skipHtml = opts.skipHtml;\n      break;\n\n    case 'parsedHtml':\n      {\n        var parsedChildren;\n\n        if (node.children) {\n          parsedChildren = node.children.map(function (child, i) {\n            return astToReact(child, opts, {\n              node: node,\n              props: props\n            }, i);\n          });\n        }\n\n        props.escapeHtml = opts.escapeHtml;\n        props.skipHtml = opts.skipHtml;\n        props.element = mergeNodeChildren(node, parsedChildren);\n        break;\n      }\n\n    default:\n      assignDefined(props, xtend(node, {\n        type: undefined,\n        position: undefined,\n        children: undefined\n      }));\n  }\n\n  if (!isTagRenderer && node.value) {\n    props.value = node.value;\n  }\n\n  return props;\n}\n\nfunction assignDefined(target, attrs) {\n  for (var key in attrs) {\n    if (typeof attrs[key] !== 'undefined') {\n      target[key] = attrs[key];\n    }\n  }\n}\n\nfunction mergeNodeChildren(node, parsedChildren) {\n  var el = node.element;\n\n  if (Array.isArray(el)) {\n    var Fragment = React.Fragment || 'div';\n    return React.createElement(Fragment, null, el);\n  }\n\n  if (el.props.children || parsedChildren) {\n    var children = React.Children.toArray(el.props.children).concat(parsedChildren);\n    return React.cloneElement(el, null, children);\n  }\n\n  return React.cloneElement(el, null);\n}\n\nfunction flattenPosition(pos) {\n  return [pos.start.line, ':', pos.start.column, '-', pos.end.line, ':', pos.end.column].map(String).join('');\n}\n\nfunction getListItemChildren(node, parent) {\n  if (node.loose) {\n    return node.children;\n  }\n\n  if (parent.node && node.index > 0 && parent.node.children[node.index - 1].loose) {\n    return node.children;\n  }\n\n  return unwrapParagraphs(node);\n}\n\nfunction unwrapParagraphs(node) {\n  return node.children.reduce(function (array, child) {\n    return array.concat(child.type === 'paragraph' ? child.children || [] : [child]);\n  }, []);\n}\n\nmodule.exports = astToReact;","'use strict';\n/* Expose. */\n\nmodule.exports = visitParents;\n/* Visit. */\n\nfunction visitParents(tree, type, visitor) {\n  var stack = [];\n\n  if (typeof type === 'function') {\n    visitor = type;\n    type = null;\n  }\n\n  one(tree);\n  /* Visit a single node. */\n\n  function one(node) {\n    var result;\n\n    if (!type || node.type === type) {\n      result = visitor(node, stack.concat());\n    }\n\n    if (node.children && result !== false) {\n      return all(node.children, node);\n    }\n\n    return result;\n  }\n  /* Visit children in `parent`. */\n\n\n  function all(children, parent) {\n    var length = children.length;\n    var index = -1;\n    var child;\n    stack.push(parent);\n\n    while (++index < length) {\n      child = children[index];\n\n      if (child && one(child) === false) {\n        return false;\n      }\n    }\n\n    stack.pop();\n    return true;\n  }\n}","'use strict';\n\nmodule.exports = locate;\n\nfunction locate(value, fromIndex) {\n  var asterisk = value.indexOf('*', fromIndex);\n  var underscore = value.indexOf('_', fromIndex);\n\n  if (underscore === -1) {\n    return asterisk;\n  }\n\n  if (asterisk === -1) {\n    return underscore;\n  }\n\n  return underscore < asterisk ? underscore : asterisk;\n}","'use strict';\n\nvar legacy = require('character-entities-legacy');\n\nvar invalid = require('character-reference-invalid');\n\nvar decimal = require('is-decimal');\n\nvar hexadecimal = require('is-hexadecimal');\n\nvar alphanumerical = require('is-alphanumerical');\n\nvar decodeEntity = require('./decode-entity');\n\nmodule.exports = parseEntities;\nvar own = {}.hasOwnProperty;\nvar fromCharCode = String.fromCharCode;\nvar noop = Function.prototype; // Default settings.\n\nvar defaults = {\n  warning: null,\n  reference: null,\n  text: null,\n  warningContext: null,\n  referenceContext: null,\n  textContext: null,\n  position: {},\n  additional: null,\n  attribute: false,\n  nonTerminated: true\n}; // Characters.\n\nvar tab = 9; // '\\t'\n\nvar lineFeed = 10; // '\\n'\n\nvar formFeed = 12; //  '\\f'\n\nvar space = 32; // ' '\n\nvar ampersand = 38; //  '&'\n\nvar semicolon = 59; //  ';'\n\nvar lessThan = 60; //  '<'\n\nvar equalsTo = 61; //  '='\n\nvar numberSign = 35; //  '#'\n\nvar uppercaseX = 88; //  'X'\n\nvar lowercaseX = 120; //  'x'\n\nvar replacementCharacter = 65533; // '�'\n// Reference types.\n\nvar name = 'named';\nvar hexa = 'hexadecimal';\nvar deci = 'decimal'; // Map of bases.\n\nvar bases = {};\nbases[hexa] = 16;\nbases[deci] = 10; // Map of types to tests.\n// Each type of character reference accepts different characters.\n// This test is used to detect whether a reference has ended (as the semicolon\n// is not strictly needed).\n\nvar tests = {};\ntests[name] = alphanumerical;\ntests[deci] = decimal;\ntests[hexa] = hexadecimal; // Warning types.\n\nvar namedNotTerminated = 1;\nvar numericNotTerminated = 2;\nvar namedEmpty = 3;\nvar numericEmpty = 4;\nvar namedUnknown = 5;\nvar numericDisallowed = 6;\nvar numericProhibited = 7; // Warning messages.\n\nvar messages = {};\nmessages[namedNotTerminated] = 'Named character references must be terminated by a semicolon';\nmessages[numericNotTerminated] = 'Numeric character references must be terminated by a semicolon';\nmessages[namedEmpty] = 'Named character references cannot be empty';\nmessages[numericEmpty] = 'Numeric character references cannot be empty';\nmessages[namedUnknown] = 'Named character references must be known';\nmessages[numericDisallowed] = 'Numeric character references cannot be disallowed';\nmessages[numericProhibited] = 'Numeric character references cannot be outside the permissible Unicode range'; // Wrap to ensure clean parameters are given to `parse`.\n\nfunction parseEntities(value, options) {\n  var settings = {};\n  var option;\n  var key;\n\n  if (!options) {\n    options = {};\n  }\n\n  for (key in defaults) {\n    option = options[key];\n    settings[key] = option === null || option === undefined ? defaults[key] : option;\n  }\n\n  if (settings.position.indent || settings.position.start) {\n    settings.indent = settings.position.indent || [];\n    settings.position = settings.position.start;\n  }\n\n  return parse(value, settings);\n} // Parse entities.\n// eslint-disable-next-line complexity\n\n\nfunction parse(value, settings) {\n  var additional = settings.additional;\n  var nonTerminated = settings.nonTerminated;\n  var handleText = settings.text;\n  var handleReference = settings.reference;\n  var handleWarning = settings.warning;\n  var textContext = settings.textContext;\n  var referenceContext = settings.referenceContext;\n  var warningContext = settings.warningContext;\n  var pos = settings.position;\n  var indent = settings.indent || [];\n  var length = value.length;\n  var index = 0;\n  var lines = -1;\n  var column = pos.column || 1;\n  var line = pos.line || 1;\n  var queue = '';\n  var result = [];\n  var entityCharacters;\n  var namedEntity;\n  var terminated;\n  var characters;\n  var character;\n  var reference;\n  var following;\n  var warning;\n  var reason;\n  var output;\n  var entity;\n  var begin;\n  var start;\n  var type;\n  var test;\n  var prev;\n  var next;\n  var diff;\n  var end;\n\n  if (typeof additional === 'string') {\n    additional = additional.charCodeAt(0);\n  } // Cache the current point.\n\n\n  prev = now(); // Wrap `handleWarning`.\n\n  warning = handleWarning ? parseError : noop; // Ensure the algorithm walks over the first character and the end (inclusive).\n\n  index--;\n  length++;\n\n  while (++index < length) {\n    // If the previous character was a newline.\n    if (character === lineFeed) {\n      column = indent[lines] || 1;\n    }\n\n    character = value.charCodeAt(index);\n\n    if (character === ampersand) {\n      following = value.charCodeAt(index + 1); // The behaviour depends on the identity of the next character.\n\n      if (following === tab || following === lineFeed || following === formFeed || following === space || following === ampersand || following === lessThan || following !== following || additional && following === additional) {\n        // Not a character reference.\n        // No characters are consumed, and nothing is returned.\n        // This is not an error, either.\n        queue += fromCharCode(character);\n        column++;\n        continue;\n      }\n\n      start = index + 1;\n      begin = start;\n      end = start;\n\n      if (following === numberSign) {\n        // Numerical entity.\n        end = ++begin; // The behaviour further depends on the next character.\n\n        following = value.charCodeAt(end);\n\n        if (following === uppercaseX || following === lowercaseX) {\n          // ASCII hex digits.\n          type = hexa;\n          end = ++begin;\n        } else {\n          // ASCII digits.\n          type = deci;\n        }\n      } else {\n        // Named entity.\n        type = name;\n      }\n\n      entityCharacters = '';\n      entity = '';\n      characters = '';\n      test = tests[type];\n      end--;\n\n      while (++end < length) {\n        following = value.charCodeAt(end);\n\n        if (!test(following)) {\n          break;\n        }\n\n        characters += fromCharCode(following); // Check if we can match a legacy named reference.\n        // If so, we cache that as the last viable named reference.\n        // This ensures we do not need to walk backwards later.\n\n        if (type === name && own.call(legacy, characters)) {\n          entityCharacters = characters;\n          entity = legacy[characters];\n        }\n      }\n\n      terminated = value.charCodeAt(end) === semicolon;\n\n      if (terminated) {\n        end++;\n        namedEntity = type === name ? decodeEntity(characters) : false;\n\n        if (namedEntity) {\n          entityCharacters = characters;\n          entity = namedEntity;\n        }\n      }\n\n      diff = 1 + end - start;\n\n      if (!terminated && !nonTerminated) {// Empty.\n      } else if (!characters) {\n        // An empty (possible) entity is valid, unless it’s numeric (thus an\n        // ampersand followed by an octothorp).\n        if (type !== name) {\n          warning(numericEmpty, diff);\n        }\n      } else if (type === name) {\n        // An ampersand followed by anything unknown, and not terminated, is\n        // invalid.\n        if (terminated && !entity) {\n          warning(namedUnknown, 1);\n        } else {\n          // If theres something after an entity name which is not known, cap\n          // the reference.\n          if (entityCharacters !== characters) {\n            end = begin + entityCharacters.length;\n            diff = 1 + end - begin;\n            terminated = false;\n          } // If the reference is not terminated, warn.\n\n\n          if (!terminated) {\n            reason = entityCharacters ? namedNotTerminated : namedEmpty;\n\n            if (settings.attribute) {\n              following = value.charCodeAt(end);\n\n              if (following === equalsTo) {\n                warning(reason, diff);\n                entity = null;\n              } else if (alphanumerical(following)) {\n                entity = null;\n              } else {\n                warning(reason, diff);\n              }\n            } else {\n              warning(reason, diff);\n            }\n          }\n        }\n\n        reference = entity;\n      } else {\n        if (!terminated) {\n          // All non-terminated numeric entities are not rendered, and trigger a\n          // warning.\n          warning(numericNotTerminated, diff);\n        } // When terminated and number, parse as either hexadecimal or decimal.\n\n\n        reference = parseInt(characters, bases[type]); // Trigger a warning when the parsed number is prohibited, and replace\n        // with replacement character.\n\n        if (prohibited(reference)) {\n          warning(numericProhibited, diff);\n          reference = fromCharCode(replacementCharacter);\n        } else if (reference in invalid) {\n          // Trigger a warning when the parsed number is disallowed, and replace\n          // by an alternative.\n          warning(numericDisallowed, diff);\n          reference = invalid[reference];\n        } else {\n          // Parse the number.\n          output = ''; // Trigger a warning when the parsed number should not be used.\n\n          if (disallowed(reference)) {\n            warning(numericDisallowed, diff);\n          } // Stringify the number.\n\n\n          if (reference > 0xffff) {\n            reference -= 0x10000;\n            output += fromCharCode(reference >>> (10 & 0x3ff) | 0xd800);\n            reference = 0xdc00 | reference & 0x3ff;\n          }\n\n          reference = output + fromCharCode(reference);\n        }\n      } // Found it!\n      // First eat the queued characters as normal text, then eat an entity.\n\n\n      if (reference) {\n        flush();\n        prev = now();\n        index = end - 1;\n        column += end - start + 1;\n        result.push(reference);\n        next = now();\n        next.offset++;\n\n        if (handleReference) {\n          handleReference.call(referenceContext, reference, {\n            start: prev,\n            end: next\n          }, value.slice(start - 1, end));\n        }\n\n        prev = next;\n      } else {\n        // If we could not find a reference, queue the checked characters (as\n        // normal characters), and move the pointer to their end.\n        // This is possible because we can be certain neither newlines nor\n        // ampersands are included.\n        characters = value.slice(start - 1, end);\n        queue += characters;\n        column += characters.length;\n        index = end - 1;\n      }\n    } else {\n      // Handle anything other than an ampersand, including newlines and EOF.\n      if (character === 10 // Line feed\n      ) {\n          line++;\n          lines++;\n          column = 0;\n        }\n\n      if (character === character) {\n        queue += fromCharCode(character);\n        column++;\n      } else {\n        flush();\n      }\n    }\n  } // Return the reduced nodes, and any possible warnings.\n\n\n  return result.join(''); // Get current position.\n\n  function now() {\n    return {\n      line: line,\n      column: column,\n      offset: index + (pos.offset || 0)\n    };\n  } // “Throw” a parse-error: a warning.\n\n\n  function parseError(code, offset) {\n    var position = now();\n    position.column += offset;\n    position.offset += offset;\n    handleWarning.call(warningContext, messages[code], position, code);\n  } // Flush `queue` (normal text).\n  // Macro invoked before each entity and at the end of `value`.\n  // Does nothing when `queue` is empty.\n\n\n  function flush() {\n    if (queue) {\n      result.push(queue);\n\n      if (handleText) {\n        handleText.call(textContext, queue, {\n          start: prev,\n          end: now()\n        });\n      }\n\n      queue = '';\n    }\n  }\n} // Check if `character` is outside the permissible unicode range.\n\n\nfunction prohibited(code) {\n  return code >= 0xd800 && code <= 0xdfff || code > 0x10ffff;\n} // Check if `character` is disallowed.\n\n\nfunction disallowed(code) {\n  return code >= 0x0001 && code <= 0x0008 || code === 0x000b || code >= 0x000d && code <= 0x001f || code >= 0x007f && code <= 0x009f || code >= 0xfdd0 && code <= 0xfdef || (code & 0xffff) === 0xffff || (code & 0xffff) === 0xfffe;\n}","'use strict';\n\nvar toString = Object.prototype.toString;\n\nmodule.exports = function (x) {\n  var prototype;\n  return toString.call(x) === '[object Object]' && (prototype = Object.getPrototypeOf(x), prototype === null || prototype === Object.getPrototypeOf({}));\n};","'use strict';\n/* Dependencies. */\n\nvar extend = require('extend');\n\nvar bail = require('bail');\n\nvar vfile = require('vfile');\n\nvar trough = require('trough');\n\nvar string = require('x-is-string');\n\nvar plain = require('is-plain-obj');\n/* Expose a frozen processor. */\n\n\nmodule.exports = unified().freeze();\nvar slice = [].slice;\nvar own = {}.hasOwnProperty;\n/* Process pipeline. */\n\nvar pipeline = trough().use(pipelineParse).use(pipelineRun).use(pipelineStringify);\n\nfunction pipelineParse(p, ctx) {\n  ctx.tree = p.parse(ctx.file);\n}\n\nfunction pipelineRun(p, ctx, next) {\n  p.run(ctx.tree, ctx.file, done);\n\n  function done(err, tree, file) {\n    if (err) {\n      next(err);\n    } else {\n      ctx.tree = tree;\n      ctx.file = file;\n      next();\n    }\n  }\n}\n\nfunction pipelineStringify(p, ctx) {\n  ctx.file.contents = p.stringify(ctx.tree, ctx.file);\n}\n/* Function to create the first processor. */\n\n\nfunction unified() {\n  var attachers = [];\n  var transformers = trough();\n  var namespace = {};\n  var frozen = false;\n  var freezeIndex = -1;\n  /* Data management. */\n\n  processor.data = data;\n  /* Lock. */\n\n  processor.freeze = freeze;\n  /* Plug-ins. */\n\n  processor.attachers = attachers;\n  processor.use = use;\n  /* API. */\n\n  processor.parse = parse;\n  processor.stringify = stringify;\n  processor.run = run;\n  processor.runSync = runSync;\n  processor.process = process;\n  processor.processSync = processSync;\n  /* Expose. */\n\n  return processor;\n  /* Create a new processor based on the processor\n   * in the current scope. */\n\n  function processor() {\n    var destination = unified();\n    var length = attachers.length;\n    var index = -1;\n\n    while (++index < length) {\n      destination.use.apply(null, attachers[index]);\n    }\n\n    destination.data(extend(true, {}, namespace));\n    return destination;\n  }\n  /* Freeze: used to signal a processor that has finished\n   * configuration.\n   *\n   * For example, take unified itself.  It’s frozen.\n   * Plug-ins should not be added to it.  Rather, it should\n   * be extended, by invoking it, before modifying it.\n   *\n   * In essence, always invoke this when exporting a\n   * processor. */\n\n\n  function freeze() {\n    var values;\n    var plugin;\n    var options;\n    var transformer;\n\n    if (frozen) {\n      return processor;\n    }\n\n    while (++freezeIndex < attachers.length) {\n      values = attachers[freezeIndex];\n      plugin = values[0];\n      options = values[1];\n      transformer = null;\n\n      if (options === false) {\n        continue;\n      }\n\n      if (options === true) {\n        values[1] = undefined;\n      }\n\n      transformer = plugin.apply(processor, values.slice(1));\n\n      if (typeof transformer === 'function') {\n        transformers.use(transformer);\n      }\n    }\n\n    frozen = true;\n    freezeIndex = Infinity;\n    return processor;\n  }\n  /* Data management.\n   * Getter / setter for processor-specific informtion. */\n\n\n  function data(key, value) {\n    if (string(key)) {\n      /* Set `key`. */\n      if (arguments.length === 2) {\n        assertUnfrozen('data', frozen);\n        namespace[key] = value;\n        return processor;\n      }\n      /* Get `key`. */\n\n\n      return own.call(namespace, key) && namespace[key] || null;\n    }\n    /* Set space. */\n\n\n    if (key) {\n      assertUnfrozen('data', frozen);\n      namespace = key;\n      return processor;\n    }\n    /* Get space. */\n\n\n    return namespace;\n  }\n  /* Plug-in management.\n   *\n   * Pass it:\n   * *   an attacher and options,\n   * *   a preset,\n   * *   a list of presets, attachers, and arguments (list\n   *     of attachers and options). */\n\n\n  function use(value) {\n    var settings;\n    assertUnfrozen('use', frozen);\n\n    if (value === null || value === undefined) {\n      /* Empty */\n    } else if (typeof value === 'function') {\n      addPlugin.apply(null, arguments);\n    } else if (typeof value === 'object') {\n      if ('length' in value) {\n        addList(value);\n      } else {\n        addPreset(value);\n      }\n    } else {\n      throw new Error('Expected usable value, not `' + value + '`');\n    }\n\n    if (settings) {\n      namespace.settings = extend(namespace.settings || {}, settings);\n    }\n\n    return processor;\n\n    function addPreset(result) {\n      addList(result.plugins);\n\n      if (result.settings) {\n        settings = extend(settings || {}, result.settings);\n      }\n    }\n\n    function add(value) {\n      if (typeof value === 'function') {\n        addPlugin(value);\n      } else if (typeof value === 'object') {\n        if ('length' in value) {\n          addPlugin.apply(null, value);\n        } else {\n          addPreset(value);\n        }\n      } else {\n        throw new Error('Expected usable value, not `' + value + '`');\n      }\n    }\n\n    function addList(plugins) {\n      var length;\n      var index;\n\n      if (plugins === null || plugins === undefined) {\n        /* Empty */\n      } else if (typeof plugins === 'object' && 'length' in plugins) {\n        length = plugins.length;\n        index = -1;\n\n        while (++index < length) {\n          add(plugins[index]);\n        }\n      } else {\n        throw new Error('Expected a list of plugins, not `' + plugins + '`');\n      }\n    }\n\n    function addPlugin(plugin, value) {\n      var entry = find(plugin);\n\n      if (entry) {\n        if (plain(entry[1]) && plain(value)) {\n          value = extend(entry[1], value);\n        }\n\n        entry[1] = value;\n      } else {\n        attachers.push(slice.call(arguments));\n      }\n    }\n  }\n\n  function find(plugin) {\n    var length = attachers.length;\n    var index = -1;\n    var entry;\n\n    while (++index < length) {\n      entry = attachers[index];\n\n      if (entry[0] === plugin) {\n        return entry;\n      }\n    }\n  }\n  /* Parse a file (in string or VFile representation)\n   * into a Unist node using the `Parser` on the\n   * processor. */\n\n\n  function parse(doc) {\n    var file = vfile(doc);\n    var Parser;\n    freeze();\n    Parser = processor.Parser;\n    assertParser('parse', Parser);\n\n    if (newable(Parser)) {\n      return new Parser(String(file), file).parse();\n    }\n\n    return Parser(String(file), file); // eslint-disable-line new-cap\n  }\n  /* Run transforms on a Unist node representation of a file\n   * (in string or VFile representation), async. */\n\n\n  function run(node, file, cb) {\n    assertNode(node);\n    freeze();\n\n    if (!cb && typeof file === 'function') {\n      cb = file;\n      file = null;\n    }\n\n    if (!cb) {\n      return new Promise(executor);\n    }\n\n    executor(null, cb);\n\n    function executor(resolve, reject) {\n      transformers.run(node, vfile(file), done);\n\n      function done(err, tree, file) {\n        tree = tree || node;\n\n        if (err) {\n          reject(err);\n        } else if (resolve) {\n          resolve(tree);\n        } else {\n          cb(null, tree, file);\n        }\n      }\n    }\n  }\n  /* Run transforms on a Unist node representation of a file\n   * (in string or VFile representation), sync. */\n\n\n  function runSync(node, file) {\n    var complete = false;\n    var result;\n    run(node, file, done);\n    assertDone('runSync', 'run', complete);\n    return result;\n\n    function done(err, tree) {\n      complete = true;\n      bail(err);\n      result = tree;\n    }\n  }\n  /* Stringify a Unist node representation of a file\n   * (in string or VFile representation) into a string\n   * using the `Compiler` on the processor. */\n\n\n  function stringify(node, doc) {\n    var file = vfile(doc);\n    var Compiler;\n    freeze();\n    Compiler = processor.Compiler;\n    assertCompiler('stringify', Compiler);\n    assertNode(node);\n\n    if (newable(Compiler)) {\n      return new Compiler(node, file).compile();\n    }\n\n    return Compiler(node, file); // eslint-disable-line new-cap\n  }\n  /* Parse a file (in string or VFile representation)\n   * into a Unist node using the `Parser` on the processor,\n   * then run transforms on that node, and compile the\n   * resulting node using the `Compiler` on the processor,\n   * and store that result on the VFile. */\n\n\n  function process(doc, cb) {\n    freeze();\n    assertParser('process', processor.Parser);\n    assertCompiler('process', processor.Compiler);\n\n    if (!cb) {\n      return new Promise(executor);\n    }\n\n    executor(null, cb);\n\n    function executor(resolve, reject) {\n      var file = vfile(doc);\n      pipeline.run(processor, {\n        file: file\n      }, done);\n\n      function done(err) {\n        if (err) {\n          reject(err);\n        } else if (resolve) {\n          resolve(file);\n        } else {\n          cb(null, file);\n        }\n      }\n    }\n  }\n  /* Process the given document (in string or VFile\n   * representation), sync. */\n\n\n  function processSync(doc) {\n    var complete = false;\n    var file;\n    freeze();\n    assertParser('processSync', processor.Parser);\n    assertCompiler('processSync', processor.Compiler);\n    file = vfile(doc);\n    process(file, done);\n    assertDone('processSync', 'process', complete);\n    return file;\n\n    function done(err) {\n      complete = true;\n      bail(err);\n    }\n  }\n}\n/* Check if `func` is a constructor. */\n\n\nfunction newable(value) {\n  return typeof value === 'function' && keys(value.prototype);\n}\n/* Check if `value` is an object with keys. */\n\n\nfunction keys(value) {\n  var key;\n\n  for (key in value) {\n    return true;\n  }\n\n  return false;\n}\n/* Assert a parser is available. */\n\n\nfunction assertParser(name, Parser) {\n  if (typeof Parser !== 'function') {\n    throw new Error('Cannot `' + name + '` without `Parser`');\n  }\n}\n/* Assert a compiler is available. */\n\n\nfunction assertCompiler(name, Compiler) {\n  if (typeof Compiler !== 'function') {\n    throw new Error('Cannot `' + name + '` without `Compiler`');\n  }\n}\n/* Assert the processor is not frozen. */\n\n\nfunction assertUnfrozen(name, frozen) {\n  if (frozen) {\n    throw new Error(['Cannot invoke `' + name + '` on a frozen processor.\\nCreate a new ', 'processor first, by invoking it: use `processor()` instead of ', '`processor`.'].join(''));\n  }\n}\n/* Assert `node` is a Unist node. */\n\n\nfunction assertNode(node) {\n  if (!node || !string(node.type)) {\n    throw new Error('Expected node, got `' + node + '`');\n  }\n}\n/* Assert that `complete` is `true`. */\n\n\nfunction assertDone(name, asyncName, complete) {\n  if (!complete) {\n    throw new Error('`' + name + '` finished async. Use `' + asyncName + '` instead');\n  }\n}","'use strict';\n\nmodule.exports = decimal; // Check if the given character code, or the character code at the first\n// character, is decimal.\n\nfunction decimal(character) {\n  var code = typeof character === 'string' ? character.charCodeAt(0) : character;\n  return code >= 48 && code <= 57;\n  /* 0-9 */\n}","'use strict';\n\nmodule.exports = visit;\n\nvar visitParents = require('unist-util-visit-parents');\n\nvar CONTINUE = visitParents.CONTINUE;\nvar SKIP = visitParents.SKIP;\nvar EXIT = visitParents.EXIT;\nvisit.CONTINUE = CONTINUE;\nvisit.SKIP = SKIP;\nvisit.EXIT = EXIT;\n\nfunction visit(tree, test, visitor, reverse) {\n  if (typeof test === 'function' && typeof visitor !== 'function') {\n    reverse = visitor;\n    visitor = test;\n    test = null;\n  }\n\n  visitParents(tree, test, overload, reverse);\n\n  function overload(node, parents) {\n    var parent = parents[parents.length - 1];\n    var index = parent ? parent.children.indexOf(node) : null;\n    return visitor(node, index, parent);\n  }\n}","'use strict';\n\nvar whitespace = require('is-whitespace-character');\n\nmodule.exports = newline;\n/* Tokenise newline. */\n\nfunction newline(eat, value, silent) {\n  var character = value.charAt(0);\n  var length;\n  var subvalue;\n  var queue;\n  var index;\n\n  if (character !== '\\n') {\n    return;\n  }\n  /* istanbul ignore if - never used (yet) */\n\n\n  if (silent) {\n    return true;\n  }\n\n  index = 1;\n  length = value.length;\n  subvalue = character;\n  queue = '';\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (!whitespace(character)) {\n      break;\n    }\n\n    queue += character;\n\n    if (character === '\\n') {\n      subvalue += queue;\n      queue = '';\n    }\n\n    index++;\n  }\n\n  eat(subvalue);\n}","'use strict';\n\nvar whitespace = require('is-whitespace-character');\n\nvar locate = require('../locate/link');\n\nvar normalize = require('../util/normalize');\n\nmodule.exports = reference;\nreference.locator = locate;\nvar T_LINK = 'link';\nvar T_IMAGE = 'image';\nvar T_FOOTNOTE = 'footnote';\nvar REFERENCE_TYPE_SHORTCUT = 'shortcut';\nvar REFERENCE_TYPE_COLLAPSED = 'collapsed';\nvar REFERENCE_TYPE_FULL = 'full';\nvar C_CARET = '^';\nvar C_BACKSLASH = '\\\\';\nvar C_BRACKET_OPEN = '[';\nvar C_BRACKET_CLOSE = ']';\n\nfunction reference(eat, value, silent) {\n  var self = this;\n  var character = value.charAt(0);\n  var index = 0;\n  var length = value.length;\n  var subvalue = '';\n  var intro = '';\n  var type = T_LINK;\n  var referenceType = REFERENCE_TYPE_SHORTCUT;\n  var content;\n  var identifier;\n  var now;\n  var node;\n  var exit;\n  var queue;\n  var bracketed;\n  var depth;\n  /* Check whether we’re eating an image. */\n\n  if (character === '!') {\n    type = T_IMAGE;\n    intro = character;\n    character = value.charAt(++index);\n  }\n\n  if (character !== C_BRACKET_OPEN) {\n    return;\n  }\n\n  index++;\n  intro += character;\n  queue = '';\n  /* Check whether we’re eating a footnote. */\n\n  if (self.options.footnotes && value.charAt(index) === C_CARET) {\n    /* Exit if `![^` is found, so the `!` will be seen as text after this,\n     * and we’ll enter this function again when `[^` is found. */\n    if (type === T_IMAGE) {\n      return;\n    }\n\n    intro += C_CARET;\n    index++;\n    type = T_FOOTNOTE;\n  }\n  /* Eat the text. */\n\n\n  depth = 0;\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (character === C_BRACKET_OPEN) {\n      bracketed = true;\n      depth++;\n    } else if (character === C_BRACKET_CLOSE) {\n      if (!depth) {\n        break;\n      }\n\n      depth--;\n    }\n\n    if (character === C_BACKSLASH) {\n      queue += C_BACKSLASH;\n      character = value.charAt(++index);\n    }\n\n    queue += character;\n    index++;\n  }\n\n  subvalue = queue;\n  content = queue;\n  character = value.charAt(index);\n\n  if (character !== C_BRACKET_CLOSE) {\n    return;\n  }\n\n  index++;\n  subvalue += character;\n  queue = '';\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (!whitespace(character)) {\n      break;\n    }\n\n    queue += character;\n    index++;\n  }\n\n  character = value.charAt(index);\n  /* Inline footnotes cannot have an identifier. */\n\n  if (type !== T_FOOTNOTE && character === C_BRACKET_OPEN) {\n    identifier = '';\n    queue += character;\n    index++;\n\n    while (index < length) {\n      character = value.charAt(index);\n\n      if (character === C_BRACKET_OPEN || character === C_BRACKET_CLOSE) {\n        break;\n      }\n\n      if (character === C_BACKSLASH) {\n        identifier += C_BACKSLASH;\n        character = value.charAt(++index);\n      }\n\n      identifier += character;\n      index++;\n    }\n\n    character = value.charAt(index);\n\n    if (character === C_BRACKET_CLOSE) {\n      referenceType = identifier ? REFERENCE_TYPE_FULL : REFERENCE_TYPE_COLLAPSED;\n      queue += identifier + character;\n      index++;\n    } else {\n      identifier = '';\n    }\n\n    subvalue += queue;\n    queue = '';\n  } else {\n    if (!content) {\n      return;\n    }\n\n    identifier = content;\n  }\n  /* Brackets cannot be inside the identifier. */\n\n\n  if (referenceType !== REFERENCE_TYPE_FULL && bracketed) {\n    return;\n  }\n\n  subvalue = intro + subvalue;\n\n  if (type === T_LINK && self.inLink) {\n    return null;\n  }\n  /* istanbul ignore if - never used (yet) */\n\n\n  if (silent) {\n    return true;\n  }\n\n  if (type === T_FOOTNOTE && content.indexOf(' ') !== -1) {\n    return eat(subvalue)({\n      type: 'footnote',\n      children: this.tokenizeInline(content, eat.now())\n    });\n  }\n\n  now = eat.now();\n  now.column += intro.length;\n  now.offset += intro.length;\n  identifier = referenceType === REFERENCE_TYPE_FULL ? identifier : content;\n  node = {\n    type: type + 'Reference',\n    identifier: normalize(identifier)\n  };\n\n  if (type === T_LINK || type === T_IMAGE) {\n    node.referenceType = referenceType;\n  }\n\n  if (type === T_LINK) {\n    exit = self.enterLink();\n    node.children = self.tokenizeInline(content, now);\n    exit();\n  } else if (type === T_IMAGE) {\n    node.alt = self.decode.raw(self.unescape(content), now) || null;\n  }\n\n  return eat(subvalue)(node);\n}","'use strict';\n\nvar visit = require('unist-util-visit');\n\nmodule.exports = removePosition;\n\nfunction removePosition(node, force) {\n  visit(node, force ? hard : soft);\n  return node;\n}\n\nfunction hard(node) {\n  delete node.position;\n}\n\nfunction soft(node) {\n  node.position = undefined;\n}","'use strict';\n\nvar whitespace = require('is-whitespace-character');\n\nvar locate = require('../locate/code-inline');\n\nmodule.exports = inlineCode;\ninlineCode.locator = locate;\nvar C_TICK = '`';\n/* Tokenise inline code. */\n\nfunction inlineCode(eat, value, silent) {\n  var length = value.length;\n  var index = 0;\n  var queue = '';\n  var tickQueue = '';\n  var contentQueue;\n  var subqueue;\n  var count;\n  var openingCount;\n  var subvalue;\n  var character;\n  var found;\n  var next;\n\n  while (index < length) {\n    if (value.charAt(index) !== C_TICK) {\n      break;\n    }\n\n    queue += C_TICK;\n    index++;\n  }\n\n  if (!queue) {\n    return;\n  }\n\n  subvalue = queue;\n  openingCount = index;\n  queue = '';\n  next = value.charAt(index);\n  count = 0;\n\n  while (index < length) {\n    character = next;\n    next = value.charAt(index + 1);\n\n    if (character === C_TICK) {\n      count++;\n      tickQueue += character;\n    } else {\n      count = 0;\n      queue += character;\n    }\n\n    if (count && next !== C_TICK) {\n      if (count === openingCount) {\n        subvalue += queue + tickQueue;\n        found = true;\n        break;\n      }\n\n      queue += tickQueue;\n      tickQueue = '';\n    }\n\n    index++;\n  }\n\n  if (!found) {\n    if (openingCount % 2 !== 0) {\n      return;\n    }\n\n    queue = '';\n  }\n  /* istanbul ignore if - never used (yet) */\n\n\n  if (silent) {\n    return true;\n  }\n\n  contentQueue = '';\n  subqueue = '';\n  length = queue.length;\n  index = -1;\n\n  while (++index < length) {\n    character = queue.charAt(index);\n\n    if (whitespace(character)) {\n      subqueue += character;\n      continue;\n    }\n\n    if (subqueue) {\n      if (contentQueue) {\n        contentQueue += subqueue;\n      }\n\n      subqueue = '';\n    }\n\n    contentQueue += character;\n  }\n\n  return eat(subvalue)({\n    type: 'inlineCode',\n    value: contentQueue\n  });\n}","\"use strict\";\n/**\n * Naive, simple plugin to match inline nodes without attributes\n * This allows say <strong>foo</strong>, but not <strong class=\"very\">foo</strong>\n * For proper HTML support, you'll want a different plugin\n **/\n\nvar visit = require('unist-util-visit');\n\nvar type = 'virtualHtml';\nvar selfClosingRe = /^<(area|base|br|col|embed|hr|img|input|keygen|link|meta|param|source|track|wbr)\\s*\\/?>$/i;\nvar simpleTagRe = /^<(\\/?)([a-z]+)\\s*>$/;\n\nmodule.exports = function (tree) {\n  var open;\n  var currentParent;\n  visit(tree, 'html', function (node, index, parent) {\n    if (currentParent !== parent) {\n      open = [];\n      currentParent = parent;\n    }\n\n    var selfClosing = getSelfClosing(node);\n\n    if (selfClosing) {\n      parent.children.splice(index, 1, {\n        type: type,\n        tag: selfClosing,\n        position: node.position\n      });\n      return true;\n    }\n\n    var current = getSimpleTag(node, parent);\n\n    if (!current) {\n      return true;\n    }\n\n    var matching = findAndPull(open, current.tag);\n\n    if (matching) {\n      parent.children.splice(index, 0, virtual(current, matching, parent));\n    } else if (!current.opening) {\n      open.push(current);\n    }\n\n    return true;\n  }, true // Iterate in reverse\n  );\n  return tree;\n};\n\nfunction findAndPull(open, matchingTag) {\n  var i = open.length;\n\n  while (i--) {\n    if (open[i].tag === matchingTag) {\n      return open.splice(i, 1)[0];\n    }\n  }\n\n  return false;\n}\n\nfunction getSimpleTag(node, parent) {\n  var match = node.value.match(simpleTagRe);\n  return match ? {\n    tag: match[2],\n    opening: !match[1],\n    node: node\n  } : false;\n}\n\nfunction getSelfClosing(node) {\n  var match = node.value.match(selfClosingRe);\n  return match ? match[1] : false;\n}\n\nfunction virtual(fromNode, toNode, parent) {\n  var fromIndex = parent.children.indexOf(fromNode.node);\n  var toIndex = parent.children.indexOf(toNode.node);\n  var extracted = parent.children.splice(fromIndex, toIndex - fromIndex + 1);\n  var children = extracted.slice(1, -1);\n  return {\n    type: type,\n    children: children,\n    tag: fromNode.tag,\n    position: {\n      start: fromNode.node.position.start,\n      end: toNode.node.position.end,\n      indent: []\n    }\n  };\n}","'use strict';\n\nmodule.exports = interrupt;\n\nfunction interrupt(interruptors, tokenizers, ctx, params) {\n  var bools = ['pedantic', 'commonmark'];\n  var count = bools.length;\n  var length = interruptors.length;\n  var index = -1;\n  var interruptor;\n  var config;\n  var fn;\n  var offset;\n  var bool;\n  var ignore;\n\n  while (++index < length) {\n    interruptor = interruptors[index];\n    config = interruptor[1] || {};\n    fn = interruptor[0];\n    offset = -1;\n    ignore = false;\n\n    while (++offset < count) {\n      bool = bools[offset];\n\n      if (config[bool] !== undefined && config[bool] !== ctx.options[bool]) {\n        ignore = true;\n        break;\n      }\n    }\n\n    if (ignore) {\n      continue;\n    }\n\n    if (tokenizers[fn].apply(ctx, params)) {\n      return true;\n    }\n  }\n\n  return false;\n}","'use strict';\n\nvar collapseWhiteSpace = require('collapse-white-space');\n\nmodule.exports = normalize;\n/* Normalize an identifier.  Collapses multiple white space\n * characters into a single space, and removes casing. */\n\nfunction normalize(value) {\n  return collapseWhiteSpace(value).toLowerCase();\n}","'use strict';\n\nvar whitespace = require('is-whitespace-character');\n\nvar locate = require('../locate/delete');\n\nmodule.exports = strikethrough;\nstrikethrough.locator = locate;\nvar C_TILDE = '~';\nvar DOUBLE = '~~';\n\nfunction strikethrough(eat, value, silent) {\n  var self = this;\n  var character = '';\n  var previous = '';\n  var preceding = '';\n  var subvalue = '';\n  var index;\n  var length;\n  var now;\n\n  if (!self.options.gfm || value.charAt(0) !== C_TILDE || value.charAt(1) !== C_TILDE || whitespace(value.charAt(2))) {\n    return;\n  }\n\n  index = 1;\n  length = value.length;\n  now = eat.now();\n  now.column += 2;\n  now.offset += 2;\n\n  while (++index < length) {\n    character = value.charAt(index);\n\n    if (character === C_TILDE && previous === C_TILDE && (!preceding || !whitespace(preceding))) {\n      /* istanbul ignore if - never used (yet) */\n      if (silent) {\n        return true;\n      }\n\n      return eat(DOUBLE + subvalue + DOUBLE)({\n        type: 'delete',\n        children: self.tokenizeInline(subvalue, now)\n      });\n    }\n\n    subvalue += previous;\n    preceding = previous;\n    previous = character;\n  }\n}","'use strict';\n\nmodule.exports = hexadecimal; // Check if the given character code, or the character code at the first\n// character, is hexadecimal.\n\nfunction hexadecimal(character) {\n  var code = typeof character === 'string' ? character.charCodeAt(0) : character;\n  return code >= 97\n  /* a */\n  && code <= 102 ||\n  /* z */\n  code >= 65\n  /* A */\n  && code <= 70\n  /* Z */\n  || code >= 48\n  /* A */\n  && code <= 57\n  /* Z */\n  ;\n}","'use strict';\n\nmodule.exports = visit;\n\nvar visitParents = require('unist-util-visit-parents');\n\nvar CONTINUE = visitParents.CONTINUE;\nvar SKIP = visitParents.SKIP;\nvar EXIT = visitParents.EXIT;\nvisit.CONTINUE = CONTINUE;\nvisit.SKIP = SKIP;\nvisit.EXIT = EXIT;\n\nfunction visit(tree, test, visitor, reverse) {\n  if (typeof test === 'function' && typeof visitor !== 'function') {\n    reverse = visitor;\n    visitor = test;\n    test = null;\n  }\n\n  visitParents(tree, test, overload, reverse);\n\n  function overload(node, parents) {\n    var parent = parents[parents.length - 1];\n    var index = parent ? parent.children.indexOf(node) : null;\n    return visitor(node, index, parent);\n  }\n}","'use strict';\n\nvar alphabetical = require('is-alphabetical');\n\nvar locate = require('../locate/tag');\n\nvar tag = require('../util/html').tag;\n\nmodule.exports = inlineHTML;\ninlineHTML.locator = locate;\nvar EXPRESSION_HTML_LINK_OPEN = /^<a /i;\nvar EXPRESSION_HTML_LINK_CLOSE = /^<\\/a>/i;\n\nfunction inlineHTML(eat, value, silent) {\n  var self = this;\n  var length = value.length;\n  var character;\n  var subvalue;\n\n  if (value.charAt(0) !== '<' || length < 3) {\n    return;\n  }\n\n  character = value.charAt(1);\n\n  if (!alphabetical(character) && character !== '?' && character !== '!' && character !== '/') {\n    return;\n  }\n\n  subvalue = value.match(tag);\n\n  if (!subvalue) {\n    return;\n  }\n  /* istanbul ignore if - not used yet. */\n\n\n  if (silent) {\n    return true;\n  }\n\n  subvalue = subvalue[0];\n\n  if (!self.inLink && EXPRESSION_HTML_LINK_OPEN.test(subvalue)) {\n    self.inLink = true;\n  } else if (self.inLink && EXPRESSION_HTML_LINK_CLOSE.test(subvalue)) {\n    self.inLink = false;\n  }\n\n  return eat(subvalue)({\n    type: 'html',\n    value: subvalue\n  });\n}","'use strict';\n\nmodule.exports = visitParents;\n\nvar convert = require('unist-util-is/convert');\n\nvar CONTINUE = true;\nvar SKIP = 'skip';\nvar EXIT = false;\nvisitParents.CONTINUE = CONTINUE;\nvisitParents.SKIP = SKIP;\nvisitParents.EXIT = EXIT;\n\nfunction visitParents(tree, test, visitor, reverse) {\n  var is;\n\n  if (typeof test === 'function' && typeof visitor !== 'function') {\n    reverse = visitor;\n    visitor = test;\n    test = null;\n  }\n\n  is = convert(test);\n  one(tree, null, []); // Visit a single node.\n\n  function one(node, index, parents) {\n    var result = [];\n    var subresult;\n\n    if (!test || is(node, index, parents[parents.length - 1] || null)) {\n      result = toResult(visitor(node, parents));\n\n      if (result[0] === EXIT) {\n        return result;\n      }\n    }\n\n    if (node.children && result[0] !== SKIP) {\n      subresult = toResult(all(node.children, parents.concat(node)));\n      return subresult[0] === EXIT ? subresult : result;\n    }\n\n    return result;\n  } // Visit children in `parent`.\n\n\n  function all(children, parents) {\n    var min = -1;\n    var step = reverse ? -1 : 1;\n    var index = (reverse ? children.length : min) + step;\n    var result;\n\n    while (index > min && index < children.length) {\n      result = one(children[index], index, parents);\n\n      if (result[0] === EXIT) {\n        return result;\n      }\n\n      index = typeof result[1] === 'number' ? result[1] : index + step;\n    }\n  }\n}\n\nfunction toResult(value) {\n  if (value !== null && typeof value === 'object' && 'length' in value) {\n    return value;\n  }\n\n  if (typeof value === 'number') {\n    return [CONTINUE, value];\n  }\n\n  return [value];\n}","\"use strict\";\n\nvar HtmlParser = '__RMD_HTML_PARSER__';\nexports.HtmlParser = typeof Symbol === 'undefined' ? HtmlParser : Symbol(HtmlParser);","'use strict';\n\nmodule.exports = visitParents;\n\nvar convert = require('unist-util-is/convert');\n\nvar CONTINUE = true;\nvar SKIP = 'skip';\nvar EXIT = false;\nvisitParents.CONTINUE = CONTINUE;\nvisitParents.SKIP = SKIP;\nvisitParents.EXIT = EXIT;\n\nfunction visitParents(tree, test, visitor, reverse) {\n  var is;\n\n  if (typeof test === 'function' && typeof visitor !== 'function') {\n    reverse = visitor;\n    visitor = test;\n    test = null;\n  }\n\n  is = convert(test);\n  one(tree, null, []); // Visit a single node.\n\n  function one(node, index, parents) {\n    var result = [];\n    var subresult;\n\n    if (!test || is(node, index, parents[parents.length - 1] || null)) {\n      result = toResult(visitor(node, parents));\n\n      if (result[0] === EXIT) {\n        return result;\n      }\n    }\n\n    if (node.children && result[0] !== SKIP) {\n      subresult = toResult(all(node.children, parents.concat(node)));\n      return subresult[0] === EXIT ? subresult : result;\n    }\n\n    return result;\n  } // Visit children in `parent`.\n\n\n  function all(children, parents) {\n    var min = -1;\n    var step = reverse ? -1 : 1;\n    var index = (reverse ? children.length : min) + step;\n    var result;\n\n    while (index > min && index < children.length) {\n      result = one(children[index], index, parents);\n\n      if (result[0] === EXIT) {\n        return result;\n      }\n\n      index = typeof result[1] === 'number' ? result[1] : index + step;\n    }\n  }\n}\n\nfunction toResult(value) {\n  if (value !== null && typeof value === 'object' && 'length' in value) {\n    return value;\n  }\n\n  if (typeof value === 'number') {\n    return [CONTINUE, value];\n  }\n\n  return [value];\n}","'use strict';\n/* eslint-env browser */\n\nvar el;\nvar semicolon = 59; //  ';'\n\nmodule.exports = decodeEntity;\n\nfunction decodeEntity(characters) {\n  var entity = '&' + characters + ';';\n  var char;\n  el = el || document.createElement('i');\n  el.innerHTML = entity;\n  char = el.textContent; // Some entities do not require the closing semicolon (`&not` - for instance),\n  // which leads to situations where parsing the assumed entity of &notit; will\n  // result in the string `¬it;`.  When we encounter a trailing semicolon after\n  // parsing and the entity to decode was not a semicolon (`&semi;`), we can\n  // assume that the matching was incomplete\n\n  if (char.charCodeAt(char.length - 1) === semicolon && characters !== 'semi') {\n    return false;\n  } // If the decoded string is equal to the input, the entity was not valid\n\n\n  return char === entity ? false : char;\n}","'use strict';\n\nmodule.exports = atxHeading;\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\nvar C_SPACE = ' ';\nvar C_HASH = '#';\nvar MAX_ATX_COUNT = 6;\n\nfunction atxHeading(eat, value, silent) {\n  var self = this;\n  var settings = self.options;\n  var length = value.length + 1;\n  var index = -1;\n  var now = eat.now();\n  var subvalue = '';\n  var content = '';\n  var character;\n  var queue;\n  var depth;\n  /* Eat initial spacing. */\n\n  while (++index < length) {\n    character = value.charAt(index);\n\n    if (character !== C_SPACE && character !== C_TAB) {\n      index--;\n      break;\n    }\n\n    subvalue += character;\n  }\n  /* Eat hashes. */\n\n\n  depth = 0;\n\n  while (++index <= length) {\n    character = value.charAt(index);\n\n    if (character !== C_HASH) {\n      index--;\n      break;\n    }\n\n    subvalue += character;\n    depth++;\n  }\n\n  if (depth > MAX_ATX_COUNT) {\n    return;\n  }\n\n  if (!depth || !settings.pedantic && value.charAt(index + 1) === C_HASH) {\n    return;\n  }\n\n  length = value.length + 1;\n  /* Eat intermediate white-space. */\n\n  queue = '';\n\n  while (++index < length) {\n    character = value.charAt(index);\n\n    if (character !== C_SPACE && character !== C_TAB) {\n      index--;\n      break;\n    }\n\n    queue += character;\n  }\n  /* Exit when not in pedantic mode without spacing. */\n\n\n  if (!settings.pedantic && queue.length === 0 && character && character !== C_NEWLINE) {\n    return;\n  }\n\n  if (silent) {\n    return true;\n  }\n  /* Eat content. */\n\n\n  subvalue += queue;\n  queue = '';\n  content = '';\n\n  while (++index < length) {\n    character = value.charAt(index);\n\n    if (!character || character === C_NEWLINE) {\n      break;\n    }\n\n    if (character !== C_SPACE && character !== C_TAB && character !== C_HASH) {\n      content += queue + character;\n      queue = '';\n      continue;\n    }\n\n    while (character === C_SPACE || character === C_TAB) {\n      queue += character;\n      character = value.charAt(++index);\n    }\n\n    while (character === C_HASH) {\n      queue += character;\n      character = value.charAt(++index);\n    }\n\n    while (character === C_SPACE || character === C_TAB) {\n      queue += character;\n      character = value.charAt(++index);\n    }\n\n    index--;\n  }\n\n  now.column += subvalue.length;\n  now.offset += subvalue.length;\n  subvalue += content + queue;\n  return eat(subvalue)({\n    type: 'heading',\n    depth: depth,\n    children: self.tokenizeInline(content, now)\n  });\n}","'use strict';\n\nvar repeat = require('repeat-string');\n\nvar trim = require('trim-trailing-lines');\n\nmodule.exports = indentedCode;\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\nvar C_SPACE = ' ';\nvar CODE_INDENT_COUNT = 4;\nvar CODE_INDENT = repeat(C_SPACE, CODE_INDENT_COUNT);\n/* Tokenise indented code. */\n\nfunction indentedCode(eat, value, silent) {\n  var index = -1;\n  var length = value.length;\n  var subvalue = '';\n  var content = '';\n  var subvalueQueue = '';\n  var contentQueue = '';\n  var character;\n  var blankQueue;\n  var indent;\n\n  while (++index < length) {\n    character = value.charAt(index);\n\n    if (indent) {\n      indent = false;\n      subvalue += subvalueQueue;\n      content += contentQueue;\n      subvalueQueue = '';\n      contentQueue = '';\n\n      if (character === C_NEWLINE) {\n        subvalueQueue = character;\n        contentQueue = character;\n      } else {\n        subvalue += character;\n        content += character;\n\n        while (++index < length) {\n          character = value.charAt(index);\n\n          if (!character || character === C_NEWLINE) {\n            contentQueue = character;\n            subvalueQueue = character;\n            break;\n          }\n\n          subvalue += character;\n          content += character;\n        }\n      }\n    } else if (character === C_SPACE && value.charAt(index + 1) === character && value.charAt(index + 2) === character && value.charAt(index + 3) === character) {\n      subvalueQueue += CODE_INDENT;\n      index += 3;\n      indent = true;\n    } else if (character === C_TAB) {\n      subvalueQueue += character;\n      indent = true;\n    } else {\n      blankQueue = '';\n\n      while (character === C_TAB || character === C_SPACE) {\n        blankQueue += character;\n        character = value.charAt(++index);\n      }\n\n      if (character !== C_NEWLINE) {\n        break;\n      }\n\n      subvalueQueue += blankQueue + character;\n      contentQueue += character;\n    }\n  }\n\n  if (content) {\n    if (silent) {\n      return true;\n    }\n\n    return eat(subvalue)({\n      type: 'code',\n      lang: null,\n      value: trim(content)\n    });\n  }\n}","'use strict';\n\nmodule.exports = setextHeading;\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\nvar C_SPACE = ' ';\nvar C_EQUALS = '=';\nvar C_DASH = '-';\nvar MAX_HEADING_INDENT = 3;\n/* Map of characters which can be used to mark setext\n * headers, mapping to their corresponding depth. */\n\nvar SETEXT_MARKERS = {};\nSETEXT_MARKERS[C_EQUALS] = 1;\nSETEXT_MARKERS[C_DASH] = 2;\n\nfunction setextHeading(eat, value, silent) {\n  var self = this;\n  var now = eat.now();\n  var length = value.length;\n  var index = -1;\n  var subvalue = '';\n  var content;\n  var queue;\n  var character;\n  var marker;\n  var depth;\n  /* Eat initial indentation. */\n\n  while (++index < length) {\n    character = value.charAt(index);\n\n    if (character !== C_SPACE || index >= MAX_HEADING_INDENT) {\n      index--;\n      break;\n    }\n\n    subvalue += character;\n  }\n  /* Eat content. */\n\n\n  content = '';\n  queue = '';\n\n  while (++index < length) {\n    character = value.charAt(index);\n\n    if (character === C_NEWLINE) {\n      index--;\n      break;\n    }\n\n    if (character === C_SPACE || character === C_TAB) {\n      queue += character;\n    } else {\n      content += queue + character;\n      queue = '';\n    }\n  }\n\n  now.column += subvalue.length;\n  now.offset += subvalue.length;\n  subvalue += content + queue;\n  /* Ensure the content is followed by a newline and a\n   * valid marker. */\n\n  character = value.charAt(++index);\n  marker = value.charAt(++index);\n\n  if (character !== C_NEWLINE || !SETEXT_MARKERS[marker]) {\n    return;\n  }\n\n  subvalue += character;\n  /* Eat Setext-line. */\n\n  queue = marker;\n  depth = SETEXT_MARKERS[marker];\n\n  while (++index < length) {\n    character = value.charAt(index);\n\n    if (character !== marker) {\n      if (character !== C_NEWLINE) {\n        return;\n      }\n\n      index--;\n      break;\n    }\n\n    queue += character;\n  }\n\n  if (silent) {\n    return true;\n  }\n\n  return eat(subvalue + queue)({\n    type: 'heading',\n    depth: depth,\n    children: self.tokenizeInline(content, now)\n  });\n}","'use strict';\n\nvar locate = require('../locate/break');\n\nmodule.exports = hardBreak;\nhardBreak.locator = locate;\nvar MIN_BREAK_LENGTH = 2;\n\nfunction hardBreak(eat, value, silent) {\n  var length = value.length;\n  var index = -1;\n  var queue = '';\n  var character;\n\n  while (++index < length) {\n    character = value.charAt(index);\n\n    if (character === '\\n') {\n      if (index < MIN_BREAK_LENGTH) {\n        return;\n      }\n      /* istanbul ignore if - never used (yet) */\n\n\n      if (silent) {\n        return true;\n      }\n\n      queue += character;\n      return eat(queue)({\n        type: 'break'\n      });\n    }\n\n    if (character !== ' ') {\n      return;\n    }\n\n    queue += character;\n  }\n}","'use strict';\n\nvar locate = require('../locate/escape');\n\nmodule.exports = escape;\nescape.locator = locate;\n\nfunction escape(eat, value, silent) {\n  var self = this;\n  var character;\n  var node;\n\n  if (value.charAt(0) === '\\\\') {\n    character = value.charAt(1);\n\n    if (self.escape.indexOf(character) !== -1) {\n      /* istanbul ignore if - never used (yet) */\n      if (silent) {\n        return true;\n      }\n\n      if (character === '\\n') {\n        node = {\n          type: 'break'\n        };\n      } else {\n        node = {\n          type: 'text',\n          value: character\n        };\n      }\n\n      return eat('\\\\' + character)(node);\n    }\n  }\n}","'use strict';\n\nmodule.exports = wordCharacter;\nvar fromCode = String.fromCharCode;\nvar re = /\\w/; // Check if the given character code, or the character code at the first\n// character, is a word character.\n\nfunction wordCharacter(character) {\n  return re.test(typeof character === 'number' ? fromCode(character) : character.charAt(0));\n}","'use strict';\n\nvar trim = require('trim');\n\nvar whitespace = require('is-whitespace-character');\n\nvar locate = require('../locate/strong');\n\nmodule.exports = strong;\nstrong.locator = locate;\nvar C_ASTERISK = '*';\nvar C_UNDERSCORE = '_';\n\nfunction strong(eat, value, silent) {\n  var self = this;\n  var index = 0;\n  var character = value.charAt(index);\n  var now;\n  var pedantic;\n  var marker;\n  var queue;\n  var subvalue;\n  var length;\n  var prev;\n\n  if (character !== C_ASTERISK && character !== C_UNDERSCORE || value.charAt(++index) !== character) {\n    return;\n  }\n\n  pedantic = self.options.pedantic;\n  marker = character;\n  subvalue = marker + marker;\n  length = value.length;\n  index++;\n  queue = '';\n  character = '';\n\n  if (pedantic && whitespace(value.charAt(index))) {\n    return;\n  }\n\n  while (index < length) {\n    prev = character;\n    character = value.charAt(index);\n\n    if (character === marker && value.charAt(index + 1) === marker && (!pedantic || !whitespace(prev))) {\n      character = value.charAt(index + 2);\n\n      if (character !== marker) {\n        if (!trim(queue)) {\n          return;\n        }\n        /* istanbul ignore if - never used (yet) */\n\n\n        if (silent) {\n          return true;\n        }\n\n        now = eat.now();\n        now.column += 2;\n        now.offset += 2;\n        return eat(subvalue + queue + subvalue)({\n          type: 'strong',\n          children: self.tokenizeInline(queue, now)\n        });\n      }\n    }\n\n    if (!pedantic && character === '\\\\') {\n      queue += character;\n      character = value.charAt(++index);\n    }\n\n    queue += character;\n    index++;\n  }\n}","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';\n\nvar b = \"function\" === typeof Symbol && Symbol.for,\n    c = b ? Symbol.for(\"react.element\") : 60103,\n    d = b ? Symbol.for(\"react.portal\") : 60106,\n    e = b ? Symbol.for(\"react.fragment\") : 60107,\n    f = b ? Symbol.for(\"react.strict_mode\") : 60108,\n    g = b ? Symbol.for(\"react.profiler\") : 60114,\n    h = b ? Symbol.for(\"react.provider\") : 60109,\n    k = b ? Symbol.for(\"react.context\") : 60110,\n    l = b ? Symbol.for(\"react.async_mode\") : 60111,\n    m = b ? Symbol.for(\"react.concurrent_mode\") : 60111,\n    n = b ? Symbol.for(\"react.forward_ref\") : 60112,\n    p = b ? Symbol.for(\"react.suspense\") : 60113,\n    q = b ? Symbol.for(\"react.suspense_list\") : 60120,\n    r = b ? Symbol.for(\"react.memo\") : 60115,\n    t = b ? Symbol.for(\"react.lazy\") : 60116,\n    v = b ? Symbol.for(\"react.block\") : 60121,\n    w = b ? Symbol.for(\"react.fundamental\") : 60117,\n    x = b ? Symbol.for(\"react.responder\") : 60118,\n    y = b ? Symbol.for(\"react.scope\") : 60119;\n\nfunction z(a) {\n  if (\"object\" === typeof a && null !== a) {\n    var u = a.$$typeof;\n\n    switch (u) {\n      case c:\n        switch (a = a.type, a) {\n          case l:\n          case m:\n          case e:\n          case g:\n          case f:\n          case p:\n            return a;\n\n          default:\n            switch (a = a && a.$$typeof, a) {\n              case k:\n              case n:\n              case t:\n              case r:\n              case h:\n                return a;\n\n              default:\n                return u;\n            }\n\n        }\n\n      case d:\n        return u;\n    }\n  }\n}\n\nfunction A(a) {\n  return z(a) === m;\n}\n\nexports.AsyncMode = l;\nexports.ConcurrentMode = m;\nexports.ContextConsumer = k;\nexports.ContextProvider = h;\nexports.Element = c;\nexports.ForwardRef = n;\nexports.Fragment = e;\nexports.Lazy = t;\nexports.Memo = r;\nexports.Portal = d;\nexports.Profiler = g;\nexports.StrictMode = f;\nexports.Suspense = p;\n\nexports.isAsyncMode = function (a) {\n  return A(a) || z(a) === l;\n};\n\nexports.isConcurrentMode = A;\n\nexports.isContextConsumer = function (a) {\n  return z(a) === k;\n};\n\nexports.isContextProvider = function (a) {\n  return z(a) === h;\n};\n\nexports.isElement = function (a) {\n  return \"object\" === typeof a && null !== a && a.$$typeof === c;\n};\n\nexports.isForwardRef = function (a) {\n  return z(a) === n;\n};\n\nexports.isFragment = function (a) {\n  return z(a) === e;\n};\n\nexports.isLazy = function (a) {\n  return z(a) === t;\n};\n\nexports.isMemo = function (a) {\n  return z(a) === r;\n};\n\nexports.isPortal = function (a) {\n  return z(a) === d;\n};\n\nexports.isProfiler = function (a) {\n  return z(a) === g;\n};\n\nexports.isStrictMode = function (a) {\n  return z(a) === f;\n};\n\nexports.isSuspense = function (a) {\n  return z(a) === p;\n};\n\nexports.isValidElementType = function (a) {\n  return \"string\" === typeof a || \"function\" === typeof a || a === e || a === m || a === g || a === f || a === p || a === q || \"object\" === typeof a && null !== a && (a.$$typeof === t || a.$$typeof === r || a.$$typeof === h || a.$$typeof === k || a.$$typeof === n || a.$$typeof === w || a.$$typeof === x || a.$$typeof === y || a.$$typeof === v);\n};\n\nexports.typeOf = z;","'use strict';\n\nvar xtend = require('xtend');\n\nvar escapes = require('markdown-escapes');\n\nvar defaults = require('./defaults');\n\nmodule.exports = setOptions;\n\nfunction setOptions(options) {\n  var self = this;\n  var current = self.options;\n  var key;\n  var value;\n\n  if (options == null) {\n    options = {};\n  } else if (typeof options === 'object') {\n    options = xtend(options);\n  } else {\n    throw new Error('Invalid value `' + options + '` ' + 'for setting `options`');\n  }\n\n  for (key in defaults) {\n    value = options[key];\n\n    if (value == null) {\n      value = current[key];\n    }\n\n    if (key !== 'blocks' && typeof value !== 'boolean' || key === 'blocks' && typeof value !== 'object') {\n      throw new Error('Invalid value `' + value + '` for setting `options.' + key + '`');\n    }\n\n    options[key] = value;\n  }\n\n  self.options = options;\n  self.escape = escapes(options);\n  return self;\n}","'use strict';\n\nmodule.exports = thematicBreak;\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\nvar C_SPACE = ' ';\nvar C_ASTERISK = '*';\nvar C_UNDERSCORE = '_';\nvar C_DASH = '-';\nvar THEMATIC_BREAK_MARKER_COUNT = 3;\n\nfunction thematicBreak(eat, value, silent) {\n  var index = -1;\n  var length = value.length + 1;\n  var subvalue = '';\n  var character;\n  var marker;\n  var markerCount;\n  var queue;\n\n  while (++index < length) {\n    character = value.charAt(index);\n\n    if (character !== C_TAB && character !== C_SPACE) {\n      break;\n    }\n\n    subvalue += character;\n  }\n\n  if (character !== C_ASTERISK && character !== C_DASH && character !== C_UNDERSCORE) {\n    return;\n  }\n\n  marker = character;\n  subvalue += character;\n  markerCount = 1;\n  queue = '';\n\n  while (++index < length) {\n    character = value.charAt(index);\n\n    if (character === marker) {\n      markerCount++;\n      subvalue += queue + marker;\n      queue = '';\n    } else if (character === C_SPACE) {\n      queue += character;\n    } else if (markerCount >= THEMATIC_BREAK_MARKER_COUNT && (!character || character === C_NEWLINE)) {\n      subvalue += queue;\n\n      if (silent) {\n        return true;\n      }\n\n      return eat(subvalue)({\n        type: 'thematicBreak'\n      });\n    } else {\n      return;\n    }\n  }\n}","'use strict';\n\nvar trim = require('trim');\n\nvar interrupt = require('../util/interrupt');\n\nmodule.exports = blockquote;\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\nvar C_SPACE = ' ';\nvar C_GT = '>';\n/* Tokenise a blockquote. */\n\nfunction blockquote(eat, value, silent) {\n  var self = this;\n  var offsets = self.offset;\n  var tokenizers = self.blockTokenizers;\n  var interruptors = self.interruptBlockquote;\n  var now = eat.now();\n  var currentLine = now.line;\n  var length = value.length;\n  var values = [];\n  var contents = [];\n  var indents = [];\n  var add;\n  var index = 0;\n  var character;\n  var rest;\n  var nextIndex;\n  var content;\n  var line;\n  var startIndex;\n  var prefixed;\n  var exit;\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (character !== C_SPACE && character !== C_TAB) {\n      break;\n    }\n\n    index++;\n  }\n\n  if (value.charAt(index) !== C_GT) {\n    return;\n  }\n\n  if (silent) {\n    return true;\n  }\n\n  index = 0;\n\n  while (index < length) {\n    nextIndex = value.indexOf(C_NEWLINE, index);\n    startIndex = index;\n    prefixed = false;\n\n    if (nextIndex === -1) {\n      nextIndex = length;\n    }\n\n    while (index < length) {\n      character = value.charAt(index);\n\n      if (character !== C_SPACE && character !== C_TAB) {\n        break;\n      }\n\n      index++;\n    }\n\n    if (value.charAt(index) === C_GT) {\n      index++;\n      prefixed = true;\n\n      if (value.charAt(index) === C_SPACE) {\n        index++;\n      }\n    } else {\n      index = startIndex;\n    }\n\n    content = value.slice(index, nextIndex);\n\n    if (!prefixed && !trim(content)) {\n      index = startIndex;\n      break;\n    }\n\n    if (!prefixed) {\n      rest = value.slice(index);\n      /* Check if the following code contains a possible\n       * block. */\n\n      if (interrupt(interruptors, tokenizers, self, [eat, rest, true])) {\n        break;\n      }\n    }\n\n    line = startIndex === index ? content : value.slice(startIndex, nextIndex);\n    indents.push(index - startIndex);\n    values.push(line);\n    contents.push(content);\n    index = nextIndex + 1;\n  }\n\n  index = -1;\n  length = indents.length;\n  add = eat(values.join(C_NEWLINE));\n\n  while (++index < length) {\n    offsets[currentLine] = (offsets[currentLine] || 0) + indents[index];\n    currentLine++;\n  }\n\n  exit = self.enterBlock();\n  contents = self.tokenizeBlock(contents.join(C_NEWLINE), now);\n  exit();\n  return add({\n    type: 'blockquote',\n    children: contents\n  });\n}","'use strict';\n\nvar openCloseTag = require('../util/html').openCloseTag;\n\nmodule.exports = blockHTML;\nvar C_TAB = '\\t';\nvar C_SPACE = ' ';\nvar C_NEWLINE = '\\n';\nvar C_LT = '<';\n\nfunction blockHTML(eat, value, silent) {\n  var self = this;\n  var blocks = self.options.blocks;\n  var length = value.length;\n  var index = 0;\n  var next;\n  var line;\n  var offset;\n  var character;\n  var count;\n  var sequence;\n  var subvalue;\n  var sequences = [[/^<(script|pre|style)(?=(\\s|>|$))/i, /<\\/(script|pre|style)>/i, true], [/^<!--/, /-->/, true], [/^<\\?/, /\\?>/, true], [/^<![A-Za-z]/, />/, true], [/^<!\\[CDATA\\[/, /\\]\\]>/, true], [new RegExp('^</?(' + blocks.join('|') + ')(?=(\\\\s|/?>|$))', 'i'), /^$/, true], [new RegExp(openCloseTag.source + '\\\\s*$'), /^$/, false]];\n  /* Eat initial spacing. */\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (character !== C_TAB && character !== C_SPACE) {\n      break;\n    }\n\n    index++;\n  }\n\n  if (value.charAt(index) !== C_LT) {\n    return;\n  }\n\n  next = value.indexOf(C_NEWLINE, index + 1);\n  next = next === -1 ? length : next;\n  line = value.slice(index, next);\n  offset = -1;\n  count = sequences.length;\n\n  while (++offset < count) {\n    if (sequences[offset][0].test(line)) {\n      sequence = sequences[offset];\n      break;\n    }\n  }\n\n  if (!sequence) {\n    return;\n  }\n\n  if (silent) {\n    return sequence[2];\n  }\n\n  index = next;\n\n  if (!sequence[1].test(line)) {\n    while (index < length) {\n      next = value.indexOf(C_NEWLINE, index + 1);\n      next = next === -1 ? length : next;\n      line = value.slice(index + 1, next);\n\n      if (sequence[1].test(line)) {\n        if (line) {\n          index = next;\n        }\n\n        break;\n      }\n\n      index = next;\n    }\n  }\n\n  subvalue = value.slice(0, index);\n  return eat(subvalue)({\n    type: 'html',\n    value: subvalue\n  });\n}","\"use strict\";\n\nvar visit = require('unist-util-visit');\n\nexports.ofType = function (types, mode) {\n  return function (node) {\n    types.forEach(function (type) {\n      return visit(node, type, disallow, true);\n    });\n    return node;\n  };\n\n  function disallow(node, index, parent) {\n    if (parent) {\n      untangle(node, index, parent, mode);\n    }\n  }\n};\n\nexports.ifNotMatch = function (allowNode, mode) {\n  return function (node) {\n    visit(node, disallow, true);\n    return node;\n  };\n\n  function disallow(node, index, parent) {\n    if (parent && !allowNode(node, index, parent)) {\n      untangle(node, index, parent, mode);\n    }\n  }\n};\n\nfunction untangle(node, index, parent, mode) {\n  if (mode === 'remove') {\n    parent.children.splice(index, 1);\n  } else if (mode === 'unwrap') {\n    var args = [index, 1];\n\n    if (node.children) {\n      args = args.concat(node.children);\n    }\n\n    Array.prototype.splice.apply(parent.children, args);\n  }\n}","'use strict';\n\nvar stringify = require('unist-util-stringify-position');\n\nmodule.exports = VMessage; // Inherit from `Error#`.\n\nfunction VMessagePrototype() {}\n\nVMessagePrototype.prototype = Error.prototype;\nVMessage.prototype = new VMessagePrototype(); // Message properties.\n\nvar proto = VMessage.prototype;\nproto.file = '';\nproto.name = '';\nproto.reason = '';\nproto.message = '';\nproto.stack = '';\nproto.fatal = null;\nproto.column = null;\nproto.line = null; // Construct a new VMessage.\n//\n// Note: We cannot invoke `Error` on the created context, as that adds readonly\n// `line` and `column` attributes on Safari 9, thus throwing and failing the\n// data.\n\nfunction VMessage(reason, position, origin) {\n  var parts;\n  var range;\n  var location;\n\n  if (typeof position === 'string') {\n    origin = position;\n    position = null;\n  }\n\n  parts = parseOrigin(origin);\n  range = stringify(position) || '1:1';\n  location = {\n    start: {\n      line: null,\n      column: null\n    },\n    end: {\n      line: null,\n      column: null\n    }\n  }; // Node.\n\n  if (position && position.position) {\n    position = position.position;\n  }\n\n  if (position) {\n    // Position.\n    if (position.start) {\n      location = position;\n      position = position.start;\n    } else {\n      // Point.\n      location.start = position;\n    }\n  }\n\n  if (reason.stack) {\n    this.stack = reason.stack;\n    reason = reason.message;\n  }\n\n  this.message = reason;\n  this.name = range;\n  this.reason = reason;\n  this.line = position ? position.line : null;\n  this.column = position ? position.column : null;\n  this.location = location;\n  this.source = parts[0];\n  this.ruleId = parts[1];\n}\n\nfunction parseOrigin(origin) {\n  var result = [null, null];\n  var index;\n\n  if (typeof origin === 'string') {\n    index = origin.indexOf(':');\n\n    if (index === -1) {\n      result[1] = origin;\n    } else {\n      result[0] = origin.slice(0, index);\n      result[1] = origin.slice(index + 1);\n    }\n  }\n\n  return result;\n}","'use strict';\n\nvar whitespace = require('is-whitespace-character');\n\nvar normalize = require('../util/normalize');\n\nmodule.exports = definition;\ndefinition.notInList = true;\ndefinition.notInBlock = true;\nvar C_DOUBLE_QUOTE = '\"';\nvar C_SINGLE_QUOTE = '\\'';\nvar C_BACKSLASH = '\\\\';\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\nvar C_SPACE = ' ';\nvar C_BRACKET_OPEN = '[';\nvar C_BRACKET_CLOSE = ']';\nvar C_PAREN_OPEN = '(';\nvar C_PAREN_CLOSE = ')';\nvar C_COLON = ':';\nvar C_LT = '<';\nvar C_GT = '>';\n\nfunction definition(eat, value, silent) {\n  var self = this;\n  var commonmark = self.options.commonmark;\n  var index = 0;\n  var length = value.length;\n  var subvalue = '';\n  var beforeURL;\n  var beforeTitle;\n  var queue;\n  var character;\n  var test;\n  var identifier;\n  var url;\n  var title;\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (character !== C_SPACE && character !== C_TAB) {\n      break;\n    }\n\n    subvalue += character;\n    index++;\n  }\n\n  character = value.charAt(index);\n\n  if (character !== C_BRACKET_OPEN) {\n    return;\n  }\n\n  index++;\n  subvalue += character;\n  queue = '';\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (character === C_BRACKET_CLOSE) {\n      break;\n    } else if (character === C_BACKSLASH) {\n      queue += character;\n      index++;\n      character = value.charAt(index);\n    }\n\n    queue += character;\n    index++;\n  }\n\n  if (!queue || value.charAt(index) !== C_BRACKET_CLOSE || value.charAt(index + 1) !== C_COLON) {\n    return;\n  }\n\n  identifier = queue;\n  subvalue += queue + C_BRACKET_CLOSE + C_COLON;\n  index = subvalue.length;\n  queue = '';\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (character !== C_TAB && character !== C_SPACE && character !== C_NEWLINE) {\n      break;\n    }\n\n    subvalue += character;\n    index++;\n  }\n\n  character = value.charAt(index);\n  queue = '';\n  beforeURL = subvalue;\n\n  if (character === C_LT) {\n    index++;\n\n    while (index < length) {\n      character = value.charAt(index);\n\n      if (!isEnclosedURLCharacter(character)) {\n        break;\n      }\n\n      queue += character;\n      index++;\n    }\n\n    character = value.charAt(index);\n\n    if (character === isEnclosedURLCharacter.delimiter) {\n      subvalue += C_LT + queue + character;\n      index++;\n    } else {\n      if (commonmark) {\n        return;\n      }\n\n      index -= queue.length + 1;\n      queue = '';\n    }\n  }\n\n  if (!queue) {\n    while (index < length) {\n      character = value.charAt(index);\n\n      if (!isUnclosedURLCharacter(character)) {\n        break;\n      }\n\n      queue += character;\n      index++;\n    }\n\n    subvalue += queue;\n  }\n\n  if (!queue) {\n    return;\n  }\n\n  url = queue;\n  queue = '';\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (character !== C_TAB && character !== C_SPACE && character !== C_NEWLINE) {\n      break;\n    }\n\n    queue += character;\n    index++;\n  }\n\n  character = value.charAt(index);\n  test = null;\n\n  if (character === C_DOUBLE_QUOTE) {\n    test = C_DOUBLE_QUOTE;\n  } else if (character === C_SINGLE_QUOTE) {\n    test = C_SINGLE_QUOTE;\n  } else if (character === C_PAREN_OPEN) {\n    test = C_PAREN_CLOSE;\n  }\n\n  if (!test) {\n    queue = '';\n    index = subvalue.length;\n  } else if (queue) {\n    subvalue += queue + character;\n    index = subvalue.length;\n    queue = '';\n\n    while (index < length) {\n      character = value.charAt(index);\n\n      if (character === test) {\n        break;\n      }\n\n      if (character === C_NEWLINE) {\n        index++;\n        character = value.charAt(index);\n\n        if (character === C_NEWLINE || character === test) {\n          return;\n        }\n\n        queue += C_NEWLINE;\n      }\n\n      queue += character;\n      index++;\n    }\n\n    character = value.charAt(index);\n\n    if (character !== test) {\n      return;\n    }\n\n    beforeTitle = subvalue;\n    subvalue += queue + character;\n    index++;\n    title = queue;\n    queue = '';\n  } else {\n    return;\n  }\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (character !== C_TAB && character !== C_SPACE) {\n      break;\n    }\n\n    subvalue += character;\n    index++;\n  }\n\n  character = value.charAt(index);\n\n  if (!character || character === C_NEWLINE) {\n    if (silent) {\n      return true;\n    }\n\n    beforeURL = eat(beforeURL).test().end;\n    url = self.decode.raw(self.unescape(url), beforeURL, {\n      nonTerminated: false\n    });\n\n    if (title) {\n      beforeTitle = eat(beforeTitle).test().end;\n      title = self.decode.raw(self.unescape(title), beforeTitle);\n    }\n\n    return eat(subvalue)({\n      type: 'definition',\n      identifier: normalize(identifier),\n      title: title || null,\n      url: url\n    });\n  }\n}\n/* Check if `character` can be inside an enclosed URI. */\n\n\nfunction isEnclosedURLCharacter(character) {\n  return character !== C_GT && character !== C_BRACKET_OPEN && character !== C_BRACKET_CLOSE;\n}\n\nisEnclosedURLCharacter.delimiter = C_GT;\n/* Check if `character` can be inside an unclosed URI. */\n\nfunction isUnclosedURLCharacter(character) {\n  return character !== C_BRACKET_OPEN && character !== C_BRACKET_CLOSE && !whitespace(character);\n}","'use strict';\n\nvar unherit = require('unherit');\n\nvar xtend = require('xtend');\n\nvar Parser = require('./lib/parser.js');\n\nmodule.exports = parse;\nparse.Parser = Parser;\n\nfunction parse(options) {\n  var Local = unherit(Parser);\n  Local.prototype.options = xtend(Local.prototype.options, this.data('settings'), options);\n  this.Parser = Local;\n}","'use strict';\n\nvar VMessage = require('vfile-message');\n\nvar VFile = require('./core.js');\n\nmodule.exports = VFile;\nvar proto = VFile.prototype;\nproto.message = message;\nproto.info = info;\nproto.fail = fail;\n/* Slight backwards compatibility.  Remove in the future. */\n\nproto.warn = message;\n/* Create a message with `reason` at `position`.\n * When an error is passed in as `reason`, copies the stack. */\n\nfunction message(reason, position, origin) {\n  var filePath = this.path;\n  var message = new VMessage(reason, position, origin);\n\n  if (filePath) {\n    message.name = filePath + ':' + message.name;\n    message.file = filePath;\n  }\n\n  message.fatal = false;\n  this.messages.push(message);\n  return message;\n}\n/* Fail. Creates a vmessage, associates it with the file,\n * and throws it. */\n\n\nfunction fail() {\n  var message = this.message.apply(this, arguments);\n  message.fatal = true;\n  throw message;\n}\n/* Info. Creates a vmessage, associates it with the file,\n * and marks the fatality as null. */\n\n\nfunction info() {\n  var message = this.message.apply(this, arguments);\n  message.fatal = null;\n  return message;\n}","'use strict';\n\nmodule.exports = indentation;\n/* Map of characters, and their column length,\n * which can be used as indentation. */\n\nvar characters = {\n  ' ': 1,\n  '\\t': 4\n};\n/* Gets indentation information for a line. */\n\nfunction indentation(value) {\n  var index = 0;\n  var indent = 0;\n  var character = value.charAt(index);\n  var stops = {};\n  var size;\n\n  while (character in characters) {\n    size = characters[character];\n    indent += size;\n\n    if (size > 1) {\n      indent = Math.floor(indent / size) * size;\n    }\n\n    stops[indent] = index;\n    character = value.charAt(++index);\n  }\n\n  return {\n    indent: indent,\n    stops: stops\n  };\n}","'use strict';\n\nvar trim = require('trim');\n\nvar repeat = require('repeat-string');\n\nvar getIndent = require('./get-indentation');\n\nmodule.exports = indentation;\nvar C_SPACE = ' ';\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\n/* Remove the minimum indent from every line in `value`.\n * Supports both tab, spaced, and mixed indentation (as\n * well as possible). */\n\nfunction indentation(value, maximum) {\n  var values = value.split(C_NEWLINE);\n  var position = values.length + 1;\n  var minIndent = Infinity;\n  var matrix = [];\n  var index;\n  var indentation;\n  var stops;\n  var padding;\n  values.unshift(repeat(C_SPACE, maximum) + '!');\n\n  while (position--) {\n    indentation = getIndent(values[position]);\n    matrix[position] = indentation.stops;\n\n    if (trim(values[position]).length === 0) {\n      continue;\n    }\n\n    if (indentation.indent) {\n      if (indentation.indent > 0 && indentation.indent < minIndent) {\n        minIndent = indentation.indent;\n      }\n    } else {\n      minIndent = Infinity;\n      break;\n    }\n  }\n\n  if (minIndent !== Infinity) {\n    position = values.length;\n\n    while (position--) {\n      stops = matrix[position];\n      index = minIndent;\n\n      while (index && !(index in stops)) {\n        index--;\n      }\n\n      if (trim(values[position]).length !== 0 && minIndent && index !== minIndent) {\n        padding = C_TAB;\n      } else {\n        padding = '';\n      }\n\n      values[position] = padding + values[position].slice(index in stops ? stops[index] + 1 : 0);\n    }\n  }\n\n  values.shift();\n  return values.join(C_NEWLINE);\n}","var visitWithParents = require('unist-util-visit-parents');\n\nfunction addListMetadata() {\n  return function (ast) {\n    visitWithParents(ast, 'list', function (listNode, parents) {\n      var depth = 0,\n          i,\n          n;\n\n      for (i = 0, n = parents.length; i < n; i++) {\n        if (parents[i].type === 'list') depth += 1;\n      }\n\n      for (i = 0, n = listNode.children.length; i < n; i++) {\n        var child = listNode.children[i];\n        child.index = i;\n        child.ordered = listNode.ordered;\n      }\n\n      listNode.depth = depth;\n    });\n    return ast;\n  };\n}\n\nmodule.exports = addListMetadata;","'use strict';\n\nvar wrap = require('./wrap.js');\n\nmodule.exports = trough;\ntrough.wrap = wrap;\nvar slice = [].slice; // Create new middleware.\n\nfunction trough() {\n  var fns = [];\n  var middleware = {};\n  middleware.run = run;\n  middleware.use = use;\n  return middleware; // Run `fns`.  Last argument must be a completion handler.\n\n  function run() {\n    var index = -1;\n    var input = slice.call(arguments, 0, -1);\n    var done = arguments[arguments.length - 1];\n\n    if (typeof done !== 'function') {\n      throw new Error('Expected function as last argument, not ' + done);\n    }\n\n    next.apply(null, [null].concat(input)); // Run the next `fn`, if any.\n\n    function next(err) {\n      var fn = fns[++index];\n      var params = slice.call(arguments, 0);\n      var values = params.slice(1);\n      var length = input.length;\n      var pos = -1;\n\n      if (err) {\n        done(err);\n        return;\n      } // Copy non-nully input into values.\n\n\n      while (++pos < length) {\n        if (values[pos] === null || values[pos] === undefined) {\n          values[pos] = input[pos];\n        }\n      }\n\n      input = values; // Next or done.\n\n      if (fn) {\n        wrap(fn, next).apply(null, input);\n      } else {\n        done.apply(null, [null].concat(input));\n      }\n    }\n  } // Add `fn` to the list.\n\n\n  function use(fn) {\n    if (typeof fn !== 'function') {\n      throw new Error('Expected `fn` to be a function, not ' + fn);\n    }\n\n    fns.push(fn);\n    return middleware;\n  }\n}"],"sourceRoot":""}