{"version":3,"sources":["webpack:///./node_modules/marked/lib/marked.js","webpack:///./src/common/SanitizeHtml.ts","webpack:///./src/common/MarkdownToHTML.ts","webpack:///./node_modules/dompurify/dist/purify.js"],"names":["global","factory","module","exports","this","_defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","_createClass","Constructor","protoProps","staticProps","prototype","_unsupportedIterableToArray","o","minLen","_arrayLikeToArray","n","toString","call","slice","constructor","name","Array","from","test","arr","len","arr2","_createForOfIteratorHelperLoose","Symbol","iterator","isArray","done","value","TypeError","next","bind","createCommonjsModule","fn","defaults","getDefaults","baseUrl","breaks","gfm","headerIds","headerPrefix","highlight","langPrefix","mangle","pedantic","renderer","sanitize","sanitizer","silent","smartLists","smartypants","tokenizer","walkTokens","xhtml","changeDefaults","newDefaults","escapeTest","escapeReplace","escapeTestNoEncode","escapeReplaceNoEncode","escapeReplacements","getEscapeReplacement","ch","escape","html","encode","replace","unescapeTest","unescape","_","toLowerCase","charAt","String","fromCharCode","parseInt","substring","caret","edit","regex","opt","source","obj","val","getRegex","RegExp","nonWordAndColonTest","originIndependentUrl","cleanUrl","base","href","prot","decodeURIComponent","e","indexOf","resolveUrl","encodeURI","baseUrls","justDomain","protocol","domain","rtrim","relativeBase","noopTest","exec","merge","arguments","hasOwnProperty","splitCells","tableRow","count","row","match","offset","str","escaped","curr","cells","split","splice","push","trim","c","invert","l","suffLen","currChar","substr","findClosingBracket","b","level","checkSanitizeDeprecation","console","warn","helpers","defaults$1","rtrim$1","splitCells$1","_escape","findClosingBracket$1","outputLink","cap","link","raw","title","type","text","indentCodeCompensation","matchIndentToCode","indentToCode","map","node","matchIndentInNode","indentInNode","join","Tokenizer_1","Tokenizer","options","_proto","space","src","rules","block","newline","code","tokens","lastToken","trimRight","codeBlockStyle","fences","lang","heading","depth","nptable","item","header","align","hr","blockquote","list","addBack","loose","istask","ischecked","bull","isordered","ordered","start","items","itemMatch","bullet","undefined","task","checked","pre","def","tag","table","lheading","paragraph","inline","inLink","inRawBlock","lastParenIndex","linkLen","token","_escapes","reflink","links","nolink","strong","em","codespan","hasNonSpaceChars","hasSpaceCharsOnBothEnds","startsWith","endsWith","br","del","autolink","url","prevCapZero","_backpedal","inlineText","noopTest$1","edit$1","merge$1","_paragraph","_label","_title","_tag","_comment","normal","_punctuation","_scheme","_email","_attribute","_href","_extended_email","defaults$2","block$1","inline$1","out","charCodeAt","Math","random","Lexer_1","Lexer","create","lex","lexer","blockTokens","top","errMsg","error","Error","j","k","l2","inlineTokens","get","defaults$3","cleanUrl$1","escape$1","Renderer_1","Renderer","_code","infostring","quote","_html","slugger","slug","body","startatt","listitem","checkbox","tablerow","content","tablecell","flags","image","_text","TextRenderer_1","TextRenderer","Slugger_1","Slugger","seen","originalSlug","defaults$4","unescape$1","Parser_1","Parser","textRenderer","parse","parser","l3","cell","itemBody","parseInline","unshift","merge$2","checkSanitizeDeprecation$1","escape$2","defaults$5","marked","callback","err","pending","_tokens","message","setOptions","use","extension","opts","_loop","prop","prevRenderer","_len","args","_key","ret","apply","_loop2","prevTokenizer","_len2","_key2","_step","_iterator","_step2","_iterator2","_step3","_iterator3","_step4","_iterator4","_cell","marked_1","sanitizedHtml","ALLOWED_TAGS","markdown","_toConsumableArray","setPrototypeOf","isFrozen","objectKeys","keys","freeze","seal","_ref","Reflect","construct","fun","thisValue","x","Func","Function","concat","arrayForEach","unapply","forEach","arrayIndexOf","arrayJoin","arrayPop","pop","arrayPush","arraySlice","stringToLowerCase","stringMatch","stringReplace","stringIndexOf","stringTrim","regExpTest","regExpCreate","unconstruct","typeErrorCreate","func","thisArg","addToSet","set","array","element","lcElement","clone","object","newObject","property","svg","svgFilters","mathMl","html$1","svg$1","mathMl$1","xml","MUSTACHE_EXPR","ERB_EXPR","DATA_ATTR","ARIA_ATTR","IS_ALLOWED_URI","IS_SCRIPT_OR_DATA","ATTR_WHITESPACE","_typeof","_toConsumableArray$1","getGlobal","window","_createTrustedTypesPolicy","trustedTypes","document","createPolicy","suffix","ATTR_NAME","currentScript","hasAttribute","getAttribute","policyName","createHTML","html$$1","createDOMPurify","DOMPurify","root","version","removed","nodeType","isSupported","originalDocument","removeTitle","DocumentFragment","HTMLTemplateElement","Node","NodeFilter","_window$NamedNodeMap","NamedNodeMap","MozNamedAttrMap","Text","Comment","DOMParser","template","createElement","ownerDocument","trustedTypesPolicy","emptyHTML","RETURN_TRUSTED_TYPE","_document","implementation","createNodeIterator","getElementsByTagName","createDocumentFragment","importNode","hooks","createHTMLDocument","documentMode","MUSTACHE_EXPR$$1","ERB_EXPR$$1","DATA_ATTR$$1","ARIA_ATTR$$1","IS_SCRIPT_OR_DATA$$1","ATTR_WHITESPACE$$1","IS_ALLOWED_URI$$1","DEFAULT_ALLOWED_TAGS","ALLOWED_ATTR","DEFAULT_ALLOWED_ATTR","FORBID_TAGS","FORBID_ATTR","ALLOW_ARIA_ATTR","ALLOW_DATA_ATTR","ALLOW_UNKNOWN_PROTOCOLS","SAFE_FOR_JQUERY","SAFE_FOR_TEMPLATES","WHOLE_DOCUMENT","SET_CONFIG","FORCE_BODY","RETURN_DOM","RETURN_DOM_FRAGMENT","RETURN_DOM_IMPORT","SANITIZE_DOM","KEEP_CONTENT","IN_PLACE","USE_PROFILES","FORBID_CONTENTS","DATA_URI_TAGS","DEFAULT_DATA_URI_TAGS","URI_SAFE_ATTRIBUTES","DEFAULT_URI_SAFE_ATTRIBUTES","CONFIG","formElement","_parseConfig","cfg","ADD_URI_SAFE_ATTR","ADD_DATA_URI_TAGS","ALLOWED_URI_REGEXP","ADD_TAGS","ADD_ATTR","tbody","_forceRemove","parentNode","removeChild","outerHTML","_removeAttribute","attribute","getAttributeNode","removeAttribute","_initDocument","dirty","doc","leadingWhitespace","matches","dirtyPayload","parseFromString","documentElement","_doc","firstElementChild","insertBefore","createTextNode","childNodes","querySelector","innerHTML","_createIterator","SHOW_ELEMENT","SHOW_COMMENT","SHOW_TEXT","FILTER_ACCEPT","_isClobbered","elm","nodeName","textContent","attributes","setAttribute","namespaceURI","_isNode","_executeHook","entryPoint","currentNode","data","hook","_sanitizeElements","tagName","allowedTags","querySelectorAll","insertAdjacentHTML","htmlToInsert","cloneNode","_isValidAttribute","lcTag","lcName","_sanitizeAttributes","attr","idAttr","hookEvent","attrName","attrValue","keepAttr","allowedAttributes","_attr","forceKeepAttr","id","setAttributeNS","_sanitizeShadowDOM","fragment","shadowNode","shadowIterator","nextNode","importedNode","oldNode","returnNode","toStaticHTML","appendChild","firstChild","nodeIterator","serializedHTML","setConfig","clearConfig","isValidAttribute","addHook","hookFunction","removeHook","removeHooks","removeAllHooks","purify"],"mappings":"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","file":"js/account~exam~exam_main~goods~guest_exam~guest_exam_main~main~test_exam_main.16de6063.js","sourcesContent":["/**\n * marked - a markdown parser\n * Copyright (c) 2011-2020, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/markedjs/marked\n */\n\n/**\n * DO NOT EDIT THIS FILE\n * The code in this file is generated from files in ./src/\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.marked = factory());\n}(this, (function () { 'use strict';\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n\n function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n }\n\n function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n\n function _createForOfIteratorHelperLoose(o) {\n var i = 0;\n\n if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) {\n if (Array.isArray(o) || (o = _unsupportedIterableToArray(o))) return function () {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n };\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n i = o[Symbol.iterator]();\n return i.next.bind(i);\n }\n\n function createCommonjsModule(fn, module) {\n \treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n }\n\n var defaults = createCommonjsModule(function (module) {\n function getDefaults() {\n return {\n baseUrl: null,\n breaks: false,\n gfm: true,\n headerIds: true,\n headerPrefix: '',\n highlight: null,\n langPrefix: 'language-',\n mangle: true,\n pedantic: false,\n renderer: null,\n sanitize: false,\n sanitizer: null,\n silent: false,\n smartLists: false,\n smartypants: false,\n tokenizer: null,\n walkTokens: null,\n xhtml: false\n };\n }\n\n function changeDefaults(newDefaults) {\n module.exports.defaults = newDefaults;\n }\n\n module.exports = {\n defaults: getDefaults(),\n getDefaults: getDefaults,\n changeDefaults: changeDefaults\n };\n });\n var defaults_1 = defaults.defaults;\n var defaults_2 = defaults.getDefaults;\n var defaults_3 = defaults.changeDefaults;\n\n /**\n * Helpers\n */\n var escapeTest = /[&<>\"']/;\n var escapeReplace = /[&<>\"']/g;\n var escapeTestNoEncode = /[<>\"']|&(?!#?\\w+;)/;\n var escapeReplaceNoEncode = /[<>\"']|&(?!#?\\w+;)/g;\n var escapeReplacements = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n\n var getEscapeReplacement = function getEscapeReplacement(ch) {\n return escapeReplacements[ch];\n };\n\n function escape(html, encode) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n } else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n\n return html;\n }\n\n var unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\n\n function unescape(html) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, function (_, n) {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x' ? String.fromCharCode(parseInt(n.substring(2), 16)) : String.fromCharCode(+n.substring(1));\n }\n\n return '';\n });\n }\n\n var caret = /(^|[^\\[])\\^/g;\n\n function edit(regex, opt) {\n regex = regex.source || regex;\n opt = opt || '';\n var obj = {\n replace: function replace(name, val) {\n val = val.source || val;\n val = val.replace(caret, '$1');\n regex = regex.replace(name, val);\n return obj;\n },\n getRegex: function getRegex() {\n return new RegExp(regex, opt);\n }\n };\n return obj;\n }\n\n var nonWordAndColonTest = /[^\\w:]/g;\n var originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\n\n function cleanUrl(sanitize, base, href) {\n if (sanitize) {\n var prot;\n\n try {\n prot = decodeURIComponent(unescape(href)).replace(nonWordAndColonTest, '').toLowerCase();\n } catch (e) {\n return null;\n }\n\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {\n return null;\n }\n }\n\n if (base && !originIndependentUrl.test(href)) {\n href = resolveUrl(base, href);\n }\n\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n } catch (e) {\n return null;\n }\n\n return href;\n }\n\n var baseUrls = {};\n var justDomain = /^[^:]+:\\/*[^/]*$/;\n var protocol = /^([^:]+:)[\\s\\S]*$/;\n var domain = /^([^:]+:\\/*[^/]*)[\\s\\S]*$/;\n\n function resolveUrl(base, href) {\n if (!baseUrls[' ' + base]) {\n // we can ignore everything in base after the last slash of its path component,\n // but we might need to add _that_\n // https://tools.ietf.org/html/rfc3986#section-3\n if (justDomain.test(base)) {\n baseUrls[' ' + base] = base + '/';\n } else {\n baseUrls[' ' + base] = rtrim(base, '/', true);\n }\n }\n\n base = baseUrls[' ' + base];\n var relativeBase = base.indexOf(':') === -1;\n\n if (href.substring(0, 2) === '//') {\n if (relativeBase) {\n return href;\n }\n\n return base.replace(protocol, '$1') + href;\n } else if (href.charAt(0) === '/') {\n if (relativeBase) {\n return href;\n }\n\n return base.replace(domain, '$1') + href;\n } else {\n return base + href;\n }\n }\n\n var noopTest = {\n exec: function noopTest() {}\n };\n\n function merge(obj) {\n var i = 1,\n target,\n key;\n\n for (; i < arguments.length; i++) {\n target = arguments[i];\n\n for (key in target) {\n if (Object.prototype.hasOwnProperty.call(target, key)) {\n obj[key] = target[key];\n }\n }\n }\n\n return obj;\n }\n\n function splitCells(tableRow, count) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n var row = tableRow.replace(/\\|/g, function (match, offset, str) {\n var escaped = false,\n curr = offset;\n\n while (--curr >= 0 && str[curr] === '\\\\') {\n escaped = !escaped;\n }\n\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n } else {\n // add space before unescaped |\n return ' |';\n }\n }),\n cells = row.split(/ \\|/);\n var i = 0;\n\n if (cells.length > count) {\n cells.splice(count);\n } else {\n while (cells.length < count) {\n cells.push('');\n }\n }\n\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n\n return cells;\n } // Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n // /c*$/ is vulnerable to REDOS.\n // invert: Remove suffix of non-c chars instead. Default falsey.\n\n\n function rtrim(str, c, invert) {\n var l = str.length;\n\n if (l === 0) {\n return '';\n } // Length of suffix matching the invert condition.\n\n\n var suffLen = 0; // Step left until we fail to match the invert condition.\n\n while (suffLen < l) {\n var currChar = str.charAt(l - suffLen - 1);\n\n if (currChar === c && !invert) {\n suffLen++;\n } else if (currChar !== c && invert) {\n suffLen++;\n } else {\n break;\n }\n }\n\n return str.substr(0, l - suffLen);\n }\n\n function findClosingBracket(str, b) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n\n var l = str.length;\n var level = 0,\n i = 0;\n\n for (; i < l; i++) {\n if (str[i] === '\\\\') {\n i++;\n } else if (str[i] === b[0]) {\n level++;\n } else if (str[i] === b[1]) {\n level--;\n\n if (level < 0) {\n return i;\n }\n }\n }\n\n return -1;\n }\n\n function checkSanitizeDeprecation(opt) {\n if (opt && opt.sanitize && !opt.silent) {\n console.warn('marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options');\n }\n }\n\n var helpers = {\n escape: escape,\n unescape: unescape,\n edit: edit,\n cleanUrl: cleanUrl,\n resolveUrl: resolveUrl,\n noopTest: noopTest,\n merge: merge,\n splitCells: splitCells,\n rtrim: rtrim,\n findClosingBracket: findClosingBracket,\n checkSanitizeDeprecation: checkSanitizeDeprecation\n };\n\n var defaults$1 = defaults.defaults;\n var rtrim$1 = helpers.rtrim,\n splitCells$1 = helpers.splitCells,\n _escape = helpers.escape,\n findClosingBracket$1 = helpers.findClosingBracket;\n\n function outputLink(cap, link, raw) {\n var href = link.href;\n var title = link.title ? _escape(link.title) : null;\n\n if (cap[0].charAt(0) !== '!') {\n return {\n type: 'link',\n raw: raw,\n href: href,\n title: title,\n text: cap[1]\n };\n } else {\n return {\n type: 'image',\n raw: raw,\n text: _escape(cap[1]),\n href: href,\n title: title\n };\n }\n }\n\n function indentCodeCompensation(raw, text) {\n var matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n\n if (matchIndentToCode === null) {\n return text;\n }\n\n var indentToCode = matchIndentToCode[1];\n return text.split('\\n').map(function (node) {\n var matchIndentInNode = node.match(/^\\s+/);\n\n if (matchIndentInNode === null) {\n return node;\n }\n\n var indentInNode = matchIndentInNode[0];\n\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n\n return node;\n }).join('\\n');\n }\n /**\n * Tokenizer\n */\n\n\n var Tokenizer_1 = /*#__PURE__*/function () {\n function Tokenizer(options) {\n this.options = options || defaults$1;\n }\n\n var _proto = Tokenizer.prototype;\n\n _proto.space = function space(src) {\n var cap = this.rules.block.newline.exec(src);\n\n if (cap) {\n if (cap[0].length > 1) {\n return {\n type: 'space',\n raw: cap[0]\n };\n }\n\n return {\n raw: '\\n'\n };\n }\n };\n\n _proto.code = function code(src, tokens) {\n var cap = this.rules.block.code.exec(src);\n\n if (cap) {\n var lastToken = tokens[tokens.length - 1]; // An indented code block cannot interrupt a paragraph.\n\n if (lastToken && lastToken.type === 'paragraph') {\n return {\n raw: cap[0],\n text: cap[0].trimRight()\n };\n }\n\n var text = cap[0].replace(/^ {4}/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic ? rtrim$1(text, '\\n') : text\n };\n }\n };\n\n _proto.fences = function fences(src) {\n var cap = this.rules.block.fences.exec(src);\n\n if (cap) {\n var raw = cap[0];\n var text = indentCodeCompensation(raw, cap[3] || '');\n return {\n type: 'code',\n raw: raw,\n lang: cap[2] ? cap[2].trim() : cap[2],\n text: text\n };\n }\n };\n\n _proto.heading = function heading(src) {\n var cap = this.rules.block.heading.exec(src);\n\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text: cap[2]\n };\n }\n };\n\n _proto.nptable = function nptable(src) {\n var cap = this.rules.block.nptable.exec(src);\n\n if (cap) {\n var item = {\n type: 'table',\n header: splitCells$1(cap[1].replace(/^ *| *\\| *$/g, '')),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3] ? cap[3].replace(/\\n$/, '').split('\\n') : [],\n raw: cap[0]\n };\n\n if (item.header.length === item.align.length) {\n var l = item.align.length;\n var i;\n\n for (i = 0; i < l; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n l = item.cells.length;\n\n for (i = 0; i < l; i++) {\n item.cells[i] = splitCells$1(item.cells[i], item.header.length);\n }\n\n return item;\n }\n }\n };\n\n _proto.hr = function hr(src) {\n var cap = this.rules.block.hr.exec(src);\n\n if (cap) {\n return {\n type: 'hr',\n raw: cap[0]\n };\n }\n };\n\n _proto.blockquote = function blockquote(src) {\n var cap = this.rules.block.blockquote.exec(src);\n\n if (cap) {\n var text = cap[0].replace(/^ *> ?/gm, '');\n return {\n type: 'blockquote',\n raw: cap[0],\n text: text\n };\n }\n };\n\n _proto.list = function list(src) {\n var cap = this.rules.block.list.exec(src);\n\n if (cap) {\n var raw = cap[0];\n var bull = cap[2];\n var isordered = bull.length > 1;\n var list = {\n type: 'list',\n raw: raw,\n ordered: isordered,\n start: isordered ? +bull : '',\n loose: false,\n items: []\n }; // Get each top-level item.\n\n var itemMatch = cap[0].match(this.rules.block.item);\n var next = false,\n item,\n space,\n b,\n addBack,\n loose,\n istask,\n ischecked;\n var l = itemMatch.length;\n\n for (var i = 0; i < l; i++) {\n item = itemMatch[i];\n raw = item; // Remove the list item's bullet\n // so it is seen as the next token.\n\n space = item.length;\n item = item.replace(/^ *([*+-]|\\d+\\.) */, ''); // Outdent whatever the\n // list item contains. Hacky.\n\n if (~item.indexOf('\\n ')) {\n space -= item.length;\n item = !this.options.pedantic ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '') : item.replace(/^ {1,4}/gm, '');\n } // Determine whether the next list item belongs here.\n // Backpedal if it does not belong in this list.\n\n\n if (i !== l - 1) {\n b = this.rules.block.bullet.exec(itemMatch[i + 1])[0];\n\n if (bull.length > 1 ? b.length === 1 : b.length > 1 || this.options.smartLists && b !== bull) {\n addBack = itemMatch.slice(i + 1).join('\\n');\n list.raw = list.raw.substring(0, list.raw.length - addBack.length);\n i = l - 1;\n }\n } // Determine whether item is loose or not.\n // Use: /(^|\\n)(?! )[^\\n]+\\n\\n(?!\\s*$)/\n // for discount behavior.\n\n\n loose = next || /\\n\\n(?!\\s*$)/.test(item);\n\n if (i !== l - 1) {\n next = item.charAt(item.length - 1) === '\\n';\n if (!loose) loose = next;\n }\n\n if (loose) {\n list.loose = true;\n } // Check for task list items\n\n\n istask = /^\\[[ xX]\\] /.test(item);\n ischecked = undefined;\n\n if (istask) {\n ischecked = item[1] !== ' ';\n item = item.replace(/^\\[[ xX]\\] +/, '');\n }\n\n list.items.push({\n type: 'list_item',\n raw: raw,\n task: istask,\n checked: ischecked,\n loose: loose,\n text: item\n });\n }\n\n return list;\n }\n };\n\n _proto.html = function html(src) {\n var cap = this.rules.block.html.exec(src);\n\n if (cap) {\n return {\n type: this.options.sanitize ? 'paragraph' : 'html',\n raw: cap[0],\n pre: !this.options.sanitizer && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: this.options.sanitize ? this.options.sanitizer ? this.options.sanitizer(cap[0]) : _escape(cap[0]) : cap[0]\n };\n }\n };\n\n _proto.def = function def(src) {\n var cap = this.rules.block.def.exec(src);\n\n if (cap) {\n if (cap[3]) cap[3] = cap[3].substring(1, cap[3].length - 1);\n var tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n return {\n tag: tag,\n raw: cap[0],\n href: cap[2],\n title: cap[3]\n };\n }\n };\n\n _proto.table = function table(src) {\n var cap = this.rules.block.table.exec(src);\n\n if (cap) {\n var item = {\n type: 'table',\n header: splitCells$1(cap[1].replace(/^ *| *\\| *$/g, '')),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3] ? cap[3].replace(/\\n$/, '').split('\\n') : []\n };\n\n if (item.header.length === item.align.length) {\n item.raw = cap[0];\n var l = item.align.length;\n var i;\n\n for (i = 0; i < l; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n l = item.cells.length;\n\n for (i = 0; i < l; i++) {\n item.cells[i] = splitCells$1(item.cells[i].replace(/^ *\\| *| *\\| *$/g, ''), item.header.length);\n }\n\n return item;\n }\n }\n };\n\n _proto.lheading = function lheading(src) {\n var cap = this.rules.block.lheading.exec(src);\n\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1]\n };\n }\n };\n\n _proto.paragraph = function paragraph(src) {\n var cap = this.rules.block.paragraph.exec(src);\n\n if (cap) {\n return {\n type: 'paragraph',\n raw: cap[0],\n text: cap[1].charAt(cap[1].length - 1) === '\\n' ? cap[1].slice(0, -1) : cap[1]\n };\n }\n };\n\n _proto.text = function text(src, tokens) {\n var cap = this.rules.block.text.exec(src);\n\n if (cap) {\n var lastToken = tokens[tokens.length - 1];\n\n if (lastToken && lastToken.type === 'text') {\n return {\n raw: cap[0],\n text: cap[0]\n };\n }\n\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0]\n };\n }\n };\n\n _proto.escape = function escape(src) {\n var cap = this.rules.inline.escape.exec(src);\n\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: _escape(cap[1])\n };\n }\n };\n\n _proto.tag = function tag(src, inLink, inRawBlock) {\n var cap = this.rules.inline.tag.exec(src);\n\n if (cap) {\n if (!inLink && /^/i.test(cap[0])) {\n inLink = false;\n }\n\n if (!inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n inRawBlock = true;\n } else if (inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n inRawBlock = false;\n }\n\n return {\n type: this.options.sanitize ? 'text' : 'html',\n raw: cap[0],\n inLink: inLink,\n inRawBlock: inRawBlock,\n text: this.options.sanitize ? this.options.sanitizer ? this.options.sanitizer(cap[0]) : _escape(cap[0]) : cap[0]\n };\n }\n };\n\n _proto.link = function link(src) {\n var cap = this.rules.inline.link.exec(src);\n\n if (cap) {\n var lastParenIndex = findClosingBracket$1(cap[2], '()');\n\n if (lastParenIndex > -1) {\n var start = cap[0].indexOf('!') === 0 ? 5 : 4;\n var linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n\n var href = cap[2];\n var title = '';\n\n if (this.options.pedantic) {\n var link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n\n if (link) {\n href = link[1];\n title = link[3];\n } else {\n title = '';\n }\n } else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n\n href = href.trim().replace(/^<([\\s\\S]*)>$/, '$1');\n var token = outputLink(cap, {\n href: href ? href.replace(this.rules.inline._escapes, '$1') : href,\n title: title ? title.replace(this.rules.inline._escapes, '$1') : title\n }, cap[0]);\n return token;\n }\n };\n\n _proto.reflink = function reflink(src, links) {\n var cap;\n\n if ((cap = this.rules.inline.reflink.exec(src)) || (cap = this.rules.inline.nolink.exec(src))) {\n var link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = links[link.toLowerCase()];\n\n if (!link || !link.href) {\n var text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text: text\n };\n }\n\n var token = outputLink(cap, link, cap[0]);\n return token;\n }\n };\n\n _proto.strong = function strong(src) {\n var cap = this.rules.inline.strong.exec(src);\n\n if (cap) {\n return {\n type: 'strong',\n raw: cap[0],\n text: cap[4] || cap[3] || cap[2] || cap[1]\n };\n }\n };\n\n _proto.em = function em(src) {\n var cap = this.rules.inline.em.exec(src);\n\n if (cap) {\n return {\n type: 'em',\n raw: cap[0],\n text: cap[6] || cap[5] || cap[4] || cap[3] || cap[2] || cap[1]\n };\n }\n };\n\n _proto.codespan = function codespan(src) {\n var cap = this.rules.inline.code.exec(src);\n\n if (cap) {\n var text = cap[2].replace(/\\n/g, ' ');\n var hasNonSpaceChars = /[^ ]/.test(text);\n var hasSpaceCharsOnBothEnds = text.startsWith(' ') && text.endsWith(' ');\n\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n\n text = _escape(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text: text\n };\n }\n };\n\n _proto.br = function br(src) {\n var cap = this.rules.inline.br.exec(src);\n\n if (cap) {\n return {\n type: 'br',\n raw: cap[0]\n };\n }\n };\n\n _proto.del = function del(src) {\n var cap = this.rules.inline.del.exec(src);\n\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[1]\n };\n }\n };\n\n _proto.autolink = function autolink(src, mangle) {\n var cap = this.rules.inline.autolink.exec(src);\n\n if (cap) {\n var text, href;\n\n if (cap[2] === '@') {\n text = _escape(this.options.mangle ? mangle(cap[1]) : cap[1]);\n href = 'mailto:' + text;\n } else {\n text = _escape(cap[1]);\n href = text;\n }\n\n return {\n type: 'link',\n raw: cap[0],\n text: text,\n href: href,\n tokens: [{\n type: 'text',\n raw: text,\n text: text\n }]\n };\n }\n };\n\n _proto.url = function url(src, mangle) {\n var cap;\n\n if (cap = this.rules.inline.url.exec(src)) {\n var text, href;\n\n if (cap[2] === '@') {\n text = _escape(this.options.mangle ? mangle(cap[0]) : cap[0]);\n href = 'mailto:' + text;\n } else {\n // do extended autolink path validation\n var prevCapZero;\n\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])[0];\n } while (prevCapZero !== cap[0]);\n\n text = _escape(cap[0]);\n\n if (cap[1] === 'www.') {\n href = 'http://' + text;\n } else {\n href = text;\n }\n }\n\n return {\n type: 'link',\n raw: cap[0],\n text: text,\n href: href,\n tokens: [{\n type: 'text',\n raw: text,\n text: text\n }]\n };\n }\n };\n\n _proto.inlineText = function inlineText(src, inRawBlock, smartypants) {\n var cap = this.rules.inline.text.exec(src);\n\n if (cap) {\n var text;\n\n if (inRawBlock) {\n text = this.options.sanitize ? this.options.sanitizer ? this.options.sanitizer(cap[0]) : _escape(cap[0]) : cap[0];\n } else {\n text = _escape(this.options.smartypants ? smartypants(cap[0]) : cap[0]);\n }\n\n return {\n type: 'text',\n raw: cap[0],\n text: text\n };\n }\n };\n\n return Tokenizer;\n }();\n\n var noopTest$1 = helpers.noopTest,\n edit$1 = helpers.edit,\n merge$1 = helpers.merge;\n /**\n * Block-Level Grammar\n */\n\n var block = {\n newline: /^\\n+/,\n code: /^( {4}[^\\n]+\\n*)+/,\n fences: /^ {0,3}(`{3,}(?=[^`\\n]*\\n)|~{3,})([^\\n]*)\\n(?:|([\\s\\S]*?)\\n)(?: {0,3}\\1[~`]* *(?:\\n+|$)|$)/,\n hr: /^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)/,\n heading: /^ {0,3}(#{1,6}) +([^\\n]*?)(?: +#+)? *(?:\\n+|$)/,\n blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n list: /^( {0,3})(bull) [\\s\\S]+?(?:hr|def|\\n{2,}(?! )(?!\\1bull )\\n*|\\s*$)/,\n html: '^ {0,3}(?:' // optional indentation\n + '<(script|pre|style)[\\\\s>][\\\\s\\\\S]*?(?:[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?\\\\?>\\\\n*' // (3)\n + '|\\\\n*' // (4)\n + '|\\\\n*' // (5)\n + '|)[\\\\s\\\\S]*?(?:\\\\n{2,}|$)' // (6)\n + '|<(?!script|pre|style)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:\\\\n{2,}|$)' // (7) open tag\n + '|(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:\\\\n{2,}|$)' // (7) closing tag\n + ')',\n def: /^ {0,3}\\[(label)\\]: *\\n? *]+)>?(?:(?: +\\n? *| *\\n *)(title))? *(?:\\n+|$)/,\n nptable: noopTest$1,\n table: noopTest$1,\n lheading: /^([^\\n]+)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n // regex template, placeholders will be replaced according to different paragraph\n // interruption rules of commonmark and the original markdown spec:\n _paragraph: /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html)[^\\n]+)*)/,\n text: /^[^\\n]+/\n };\n block._label = /(?!\\s*\\])(?:\\\\[\\[\\]]|[^\\[\\]])+/;\n block._title = /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/;\n block.def = edit$1(block.def).replace('label', block._label).replace('title', block._title).getRegex();\n block.bullet = /(?:[*+-]|\\d{1,9}\\.)/;\n block.item = /^( *)(bull) ?[^\\n]*(?:\\n(?!\\1bull ?)[^\\n]*)*/;\n block.item = edit$1(block.item, 'gm').replace(/bull/g, block.bullet).getRegex();\n block.list = edit$1(block.list).replace(/bull/g, block.bullet).replace('hr', '\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))').replace('def', '\\\\n+(?=' + block.def.source + ')').getRegex();\n block._tag = 'address|article|aside|base|basefont|blockquote|body|caption' + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption' + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe' + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option' + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr' + '|track|ul';\n block._comment = //;\n block.html = edit$1(block.html, 'i').replace('comment', block._comment).replace('tag', block._tag).replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/).getRegex();\n block.paragraph = edit$1(block._paragraph).replace('hr', block.hr).replace('heading', ' {0,3}#{1,6} ').replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('blockquote', ' {0,3}>').replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n').replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|!--)').replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n block.blockquote = edit$1(block.blockquote).replace('paragraph', block.paragraph).getRegex();\n /**\n * Normal Block Grammar\n */\n\n block.normal = merge$1({}, block);\n /**\n * GFM Block Grammar\n */\n\n block.gfm = merge$1({}, block.normal, {\n nptable: '^ *([^|\\\\n ].*\\\\|.*)\\\\n' // Header\n + ' *([-:]+ *\\\\|[-| :]*)' // Align\n + '(?:\\\\n((?:(?!\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)',\n // Cells\n table: '^ *\\\\|(.+)\\\\n' // Header\n + ' *\\\\|?( *[-:]+[-| :]*)' // Align\n + '(?:\\\\n *((?:(?!\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)' // Cells\n\n });\n block.gfm.nptable = edit$1(block.gfm.nptable).replace('hr', block.hr).replace('heading', ' {0,3}#{1,6} ').replace('blockquote', ' {0,3}>').replace('code', ' {4}[^\\\\n]').replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n').replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|!--)').replace('tag', block._tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\n block.gfm.table = edit$1(block.gfm.table).replace('hr', block.hr).replace('heading', ' {0,3}#{1,6} ').replace('blockquote', ' {0,3}>').replace('code', ' {4}[^\\\\n]').replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n').replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|!--)').replace('tag', block._tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\n /**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\n\n block.pedantic = merge$1({}, block.normal, {\n html: edit$1('^ *(?:comment *(?:\\\\n|\\\\s*$)' + '|<(tag)[\\\\s\\\\S]+? *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))').replace('comment', block._comment).replace(/tag/g, '(?!(?:' + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub' + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)' + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b').getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^ *(#{1,6}) *([^\\n]+?) *(?:#+ *)?(?:\\n+|$)/,\n fences: noopTest$1,\n // fences not supported\n paragraph: edit$1(block.normal._paragraph).replace('hr', block.hr).replace('heading', ' *#{1,6} *[^\\n]').replace('lheading', block.lheading).replace('blockquote', ' {0,3}>').replace('|fences', '').replace('|list', '').replace('|html', '').getRegex()\n });\n /**\n * Inline-Level Grammar\n */\n\n var inline = {\n escape: /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,\n autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n url: noopTest$1,\n tag: '^comment' + '|^' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. \n + '|^' // declaration, e.g. \n + '|^',\n // CDATA section\n link: /^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/,\n reflink: /^!?\\[(label)\\]\\[(?!\\s*\\])((?:\\\\[\\[\\]]?|[^\\[\\]\\\\])+)\\]/,\n nolink: /^!?\\[(?!\\s*\\])((?:\\[[^\\[\\]]*\\]|\\\\[\\[\\]]|[^\\[\\]])*)\\](?:\\[\\])?/,\n strong: /^__([^\\s_])__(?!_)|^\\*\\*([^\\s*])\\*\\*(?!\\*)|^__([^\\s][\\s\\S]*?[^\\s])__(?!_)|^\\*\\*([^\\s][\\s\\S]*?[^\\s])\\*\\*(?!\\*)/,\n em: /^_([^\\s_])_(?!_)|^_([^\\s_<][\\s\\S]*?[^\\s_])_(?!_|[^\\s,punctuation])|^_([^\\s_<][\\s\\S]*?[^\\s])_(?!_|[^\\s,punctuation])|^\\*([^\\s*<\\[])\\*(?!\\*)|^\\*([^\\s<\"][\\s\\S]*?[^\\s\\[\\*])\\*(?![\\]`punctuation])|^\\*([^\\s*\"<\\[][\\s\\S]*[^\\s])\\*(?!\\*)/,\n code: /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,\n br: /^( {2,}|\\\\)\\n(?!\\s*$)/,\n del: noopTest$1,\n text: /^(`+|[^`])(?:[\\s\\S]*?(?:(?=[\\\\?@\\\\[^_{|}~';\n inline.em = edit$1(inline.em).replace(/punctuation/g, inline._punctuation).getRegex();\n inline._escapes = /\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/g;\n inline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;\n inline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;\n inline.autolink = edit$1(inline.autolink).replace('scheme', inline._scheme).replace('email', inline._email).getRegex();\n inline._attribute = /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/;\n inline.tag = edit$1(inline.tag).replace('comment', block._comment).replace('attribute', inline._attribute).getRegex();\n inline._label = /(?:\\[[^\\[\\]]*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\n inline._href = /<(?:\\\\[<>]?|[^\\s<>\\\\])*>|[^\\s\\x00-\\x1f]*/;\n inline._title = /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/;\n inline.link = edit$1(inline.link).replace('label', inline._label).replace('href', inline._href).replace('title', inline._title).getRegex();\n inline.reflink = edit$1(inline.reflink).replace('label', inline._label).getRegex();\n /**\n * Normal Inline Grammar\n */\n\n inline.normal = merge$1({}, inline);\n /**\n * Pedantic Inline Grammar\n */\n\n inline.pedantic = merge$1({}, inline.normal, {\n strong: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n em: /^_(?=\\S)([\\s\\S]*?\\S)_(?!_)|^\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)/,\n link: edit$1(/^!?\\[(label)\\]\\((.*?)\\)/).replace('label', inline._label).getRegex(),\n reflink: edit$1(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/).replace('label', inline._label).getRegex()\n });\n /**\n * GFM Inline Grammar\n */\n\n inline.gfm = merge$1({}, inline.normal, {\n escape: edit$1(inline.escape).replace('])', '~|])').getRegex(),\n _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,\n url: /^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\n _backpedal: /(?:[^?!.,:;*_~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,\n del: /^~+(?=\\S)([\\s\\S]*?\\S)~+/,\n text: /^(`+|[^`])(?:[\\s\\S]*?(?:(?=[\\\\ 0.5) {\n ch = 'x' + ch.toString(16);\n }\n\n out += '&#' + ch + ';';\n }\n\n return out;\n }\n /**\n * Block Lexer\n */\n\n\n var Lexer_1 = /*#__PURE__*/function () {\n function Lexer(options) {\n this.tokens = [];\n this.tokens.links = Object.create(null);\n this.options = options || defaults$2;\n this.options.tokenizer = this.options.tokenizer || new Tokenizer_1();\n this.tokenizer = this.options.tokenizer;\n this.tokenizer.options = this.options;\n var rules = {\n block: block$1.normal,\n inline: inline$1.normal\n };\n\n if (this.options.pedantic) {\n rules.block = block$1.pedantic;\n rules.inline = inline$1.pedantic;\n } else if (this.options.gfm) {\n rules.block = block$1.gfm;\n\n if (this.options.breaks) {\n rules.inline = inline$1.breaks;\n } else {\n rules.inline = inline$1.gfm;\n }\n }\n\n this.tokenizer.rules = rules;\n }\n /**\n * Expose Rules\n */\n\n\n /**\n * Static Lex Method\n */\n Lexer.lex = function lex(src, options) {\n var lexer = new Lexer(options);\n return lexer.lex(src);\n }\n /**\n * Preprocessing\n */\n ;\n\n var _proto = Lexer.prototype;\n\n _proto.lex = function lex(src) {\n src = src.replace(/\\r\\n|\\r/g, '\\n').replace(/\\t/g, ' ');\n this.blockTokens(src, this.tokens, true);\n this.inline(this.tokens);\n return this.tokens;\n }\n /**\n * Lexing\n */\n ;\n\n _proto.blockTokens = function blockTokens(src, tokens, top) {\n if (tokens === void 0) {\n tokens = [];\n }\n\n if (top === void 0) {\n top = true;\n }\n\n src = src.replace(/^ +$/gm, '');\n var token, i, l, lastToken;\n\n while (src) {\n // newline\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n\n if (token.type) {\n tokens.push(token);\n }\n\n continue;\n } // code\n\n\n if (token = this.tokenizer.code(src, tokens)) {\n src = src.substring(token.raw.length);\n\n if (token.type) {\n tokens.push(token);\n } else {\n lastToken = tokens[tokens.length - 1];\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n }\n\n continue;\n } // fences\n\n\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // heading\n\n\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // table no leading pipe (gfm)\n\n\n if (token = this.tokenizer.nptable(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // hr\n\n\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // blockquote\n\n\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n token.tokens = this.blockTokens(token.text, [], top);\n tokens.push(token);\n continue;\n } // list\n\n\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n l = token.items.length;\n\n for (i = 0; i < l; i++) {\n token.items[i].tokens = this.blockTokens(token.items[i].text, [], false);\n }\n\n tokens.push(token);\n continue;\n } // html\n\n\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // def\n\n\n if (top && (token = this.tokenizer.def(src))) {\n src = src.substring(token.raw.length);\n\n if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title\n };\n }\n\n continue;\n } // table (gfm)\n\n\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // lheading\n\n\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // top-level paragraph\n\n\n if (top && (token = this.tokenizer.paragraph(src))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // text\n\n\n if (token = this.tokenizer.text(src, tokens)) {\n src = src.substring(token.raw.length);\n\n if (token.type) {\n tokens.push(token);\n } else {\n lastToken = tokens[tokens.length - 1];\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n }\n\n continue;\n }\n\n if (src) {\n var errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n return tokens;\n };\n\n _proto.inline = function inline(tokens) {\n var i, j, k, l2, row, token;\n var l = tokens.length;\n\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n switch (token.type) {\n case 'paragraph':\n case 'text':\n case 'heading':\n {\n token.tokens = [];\n this.inlineTokens(token.text, token.tokens);\n break;\n }\n\n case 'table':\n {\n token.tokens = {\n header: [],\n cells: []\n }; // header\n\n l2 = token.header.length;\n\n for (j = 0; j < l2; j++) {\n token.tokens.header[j] = [];\n this.inlineTokens(token.header[j], token.tokens.header[j]);\n } // cells\n\n\n l2 = token.cells.length;\n\n for (j = 0; j < l2; j++) {\n row = token.cells[j];\n token.tokens.cells[j] = [];\n\n for (k = 0; k < row.length; k++) {\n token.tokens.cells[j][k] = [];\n this.inlineTokens(row[k], token.tokens.cells[j][k]);\n }\n }\n\n break;\n }\n\n case 'blockquote':\n {\n this.inline(token.tokens);\n break;\n }\n\n case 'list':\n {\n l2 = token.items.length;\n\n for (j = 0; j < l2; j++) {\n this.inline(token.items[j].tokens);\n }\n\n break;\n }\n }\n }\n\n return tokens;\n }\n /**\n * Lexing/Compiling\n */\n ;\n\n _proto.inlineTokens = function inlineTokens(src, tokens, inLink, inRawBlock) {\n if (tokens === void 0) {\n tokens = [];\n }\n\n if (inLink === void 0) {\n inLink = false;\n }\n\n if (inRawBlock === void 0) {\n inRawBlock = false;\n }\n\n var token;\n\n while (src) {\n // escape\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // tag\n\n\n if (token = this.tokenizer.tag(src, inLink, inRawBlock)) {\n src = src.substring(token.raw.length);\n inLink = token.inLink;\n inRawBlock = token.inRawBlock;\n tokens.push(token);\n continue;\n } // link\n\n\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n\n if (token.type === 'link') {\n token.tokens = this.inlineTokens(token.text, [], true, inRawBlock);\n }\n\n tokens.push(token);\n continue;\n } // reflink, nolink\n\n\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n\n if (token.type === 'link') {\n token.tokens = this.inlineTokens(token.text, [], true, inRawBlock);\n }\n\n tokens.push(token);\n continue;\n } // strong\n\n\n if (token = this.tokenizer.strong(src)) {\n src = src.substring(token.raw.length);\n token.tokens = this.inlineTokens(token.text, [], inLink, inRawBlock);\n tokens.push(token);\n continue;\n } // em\n\n\n if (token = this.tokenizer.em(src)) {\n src = src.substring(token.raw.length);\n token.tokens = this.inlineTokens(token.text, [], inLink, inRawBlock);\n tokens.push(token);\n continue;\n } // code\n\n\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // br\n\n\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // del (gfm)\n\n\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n token.tokens = this.inlineTokens(token.text, [], inLink, inRawBlock);\n tokens.push(token);\n continue;\n } // autolink\n\n\n if (token = this.tokenizer.autolink(src, mangle)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // url (gfm)\n\n\n if (!inLink && (token = this.tokenizer.url(src, mangle))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // text\n\n\n if (token = this.tokenizer.inlineText(src, inRawBlock, smartypants)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n if (src) {\n var errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n return tokens;\n };\n\n _createClass(Lexer, null, [{\n key: \"rules\",\n get: function get() {\n return {\n block: block$1,\n inline: inline$1\n };\n }\n }]);\n\n return Lexer;\n }();\n\n var defaults$3 = defaults.defaults;\n var cleanUrl$1 = helpers.cleanUrl,\n escape$1 = helpers.escape;\n /**\n * Renderer\n */\n\n var Renderer_1 = /*#__PURE__*/function () {\n function Renderer(options) {\n this.options = options || defaults$3;\n }\n\n var _proto = Renderer.prototype;\n\n _proto.code = function code(_code, infostring, escaped) {\n var lang = (infostring || '').match(/\\S*/)[0];\n\n if (this.options.highlight) {\n var out = this.options.highlight(_code, lang);\n\n if (out != null && out !== _code) {\n escaped = true;\n _code = out;\n }\n }\n\n if (!lang) {\n return '
' + (escaped ? _code : escape$1(_code, true)) + '
\\n';\n }\n\n return '
' + (escaped ? _code : escape$1(_code, true)) + '
\\n';\n };\n\n _proto.blockquote = function blockquote(quote) {\n return '
\\n' + quote + '
\\n';\n };\n\n _proto.html = function html(_html) {\n return _html;\n };\n\n _proto.heading = function heading(text, level, raw, slugger) {\n if (this.options.headerIds) {\n return '' + text + '\\n';\n } // ignore IDs\n\n\n return '' + text + '\\n';\n };\n\n _proto.hr = function hr() {\n return this.options.xhtml ? '
\\n' : '
\\n';\n };\n\n _proto.list = function list(body, ordered, start) {\n var type = ordered ? 'ol' : 'ul',\n startatt = ordered && start !== 1 ? ' start=\"' + start + '\"' : '';\n return '<' + type + startatt + '>\\n' + body + '\\n';\n };\n\n _proto.listitem = function listitem(text) {\n return '
  • ' + text + '
  • \\n';\n };\n\n _proto.checkbox = function checkbox(checked) {\n return ' ';\n };\n\n _proto.paragraph = function paragraph(text) {\n return '

    ' + text + '

    \\n';\n };\n\n _proto.table = function table(header, body) {\n if (body) body = '' + body + '';\n return '\\n' + '\\n' + header + '\\n' + body + '
    \\n';\n };\n\n _proto.tablerow = function tablerow(content) {\n return '\\n' + content + '\\n';\n };\n\n _proto.tablecell = function tablecell(content, flags) {\n var type = flags.header ? 'th' : 'td';\n var tag = flags.align ? '<' + type + ' align=\"' + flags.align + '\">' : '<' + type + '>';\n return tag + content + '\\n';\n } // span level renderer\n ;\n\n _proto.strong = function strong(text) {\n return '' + text + '';\n };\n\n _proto.em = function em(text) {\n return '' + text + '';\n };\n\n _proto.codespan = function codespan(text) {\n return '' + text + '';\n };\n\n _proto.br = function br() {\n return this.options.xhtml ? '
    ' : '
    ';\n };\n\n _proto.del = function del(text) {\n return '' + text + '';\n };\n\n _proto.link = function link(href, title, text) {\n href = cleanUrl$1(this.options.sanitize, this.options.baseUrl, href);\n\n if (href === null) {\n return text;\n }\n\n var out = '
    ';\n return out;\n };\n\n _proto.image = function image(href, title, text) {\n href = cleanUrl$1(this.options.sanitize, this.options.baseUrl, href);\n\n if (href === null) {\n return text;\n }\n\n var out = '\"'' : '>';\n return out;\n };\n\n _proto.text = function text(_text) {\n return _text;\n };\n\n return Renderer;\n }();\n\n /**\n * TextRenderer\n * returns only the textual part of the token\n */\n var TextRenderer_1 = /*#__PURE__*/function () {\n function TextRenderer() {}\n\n var _proto = TextRenderer.prototype;\n\n // no need for block level renderers\n _proto.strong = function strong(text) {\n return text;\n };\n\n _proto.em = function em(text) {\n return text;\n };\n\n _proto.codespan = function codespan(text) {\n return text;\n };\n\n _proto.del = function del(text) {\n return text;\n };\n\n _proto.html = function html(text) {\n return text;\n };\n\n _proto.text = function text(_text) {\n return _text;\n };\n\n _proto.link = function link(href, title, text) {\n return '' + text;\n };\n\n _proto.image = function image(href, title, text) {\n return '' + text;\n };\n\n _proto.br = function br() {\n return '';\n };\n\n return TextRenderer;\n }();\n\n /**\n * Slugger generates header id\n */\n var Slugger_1 = /*#__PURE__*/function () {\n function Slugger() {\n this.seen = {};\n }\n /**\n * Convert string to unique id\n */\n\n\n var _proto = Slugger.prototype;\n\n _proto.slug = function slug(value) {\n var slug = value.toLowerCase().trim() // remove html tags\n .replace(/<[!\\/a-z].*?>/ig, '') // remove unwanted chars\n .replace(/[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%&()*+,./:;<=>?@[\\]^`{|}~]/g, '').replace(/\\s/g, '-');\n\n if (this.seen.hasOwnProperty(slug)) {\n var originalSlug = slug;\n\n do {\n this.seen[originalSlug]++;\n slug = originalSlug + '-' + this.seen[originalSlug];\n } while (this.seen.hasOwnProperty(slug));\n }\n\n this.seen[slug] = 0;\n return slug;\n };\n\n return Slugger;\n }();\n\n var defaults$4 = defaults.defaults;\n var unescape$1 = helpers.unescape;\n /**\n * Parsing & Compiling\n */\n\n var Parser_1 = /*#__PURE__*/function () {\n function Parser(options) {\n this.options = options || defaults$4;\n this.options.renderer = this.options.renderer || new Renderer_1();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.textRenderer = new TextRenderer_1();\n this.slugger = new Slugger_1();\n }\n /**\n * Static Parse Method\n */\n\n\n Parser.parse = function parse(tokens, options) {\n var parser = new Parser(options);\n return parser.parse(tokens);\n }\n /**\n * Parse Loop\n */\n ;\n\n var _proto = Parser.prototype;\n\n _proto.parse = function parse(tokens, top) {\n if (top === void 0) {\n top = true;\n }\n\n var out = '',\n i,\n j,\n k,\n l2,\n l3,\n row,\n cell,\n header,\n body,\n token,\n ordered,\n start,\n loose,\n itemBody,\n item,\n checked,\n task,\n checkbox;\n var l = tokens.length;\n\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n switch (token.type) {\n case 'space':\n {\n continue;\n }\n\n case 'hr':\n {\n out += this.renderer.hr();\n continue;\n }\n\n case 'heading':\n {\n out += this.renderer.heading(this.parseInline(token.tokens), token.depth, unescape$1(this.parseInline(token.tokens, this.textRenderer)), this.slugger);\n continue;\n }\n\n case 'code':\n {\n out += this.renderer.code(token.text, token.lang, token.escaped);\n continue;\n }\n\n case 'table':\n {\n header = ''; // header\n\n cell = '';\n l2 = token.header.length;\n\n for (j = 0; j < l2; j++) {\n cell += this.renderer.tablecell(this.parseInline(token.tokens.header[j]), {\n header: true,\n align: token.align[j]\n });\n }\n\n header += this.renderer.tablerow(cell);\n body = '';\n l2 = token.cells.length;\n\n for (j = 0; j < l2; j++) {\n row = token.tokens.cells[j];\n cell = '';\n l3 = row.length;\n\n for (k = 0; k < l3; k++) {\n cell += this.renderer.tablecell(this.parseInline(row[k]), {\n header: false,\n align: token.align[k]\n });\n }\n\n body += this.renderer.tablerow(cell);\n }\n\n out += this.renderer.table(header, body);\n continue;\n }\n\n case 'blockquote':\n {\n body = this.parse(token.tokens);\n out += this.renderer.blockquote(body);\n continue;\n }\n\n case 'list':\n {\n ordered = token.ordered;\n start = token.start;\n loose = token.loose;\n l2 = token.items.length;\n body = '';\n\n for (j = 0; j < l2; j++) {\n item = token.items[j];\n checked = item.checked;\n task = item.task;\n itemBody = '';\n\n if (item.task) {\n checkbox = this.renderer.checkbox(checked);\n\n if (loose) {\n if (item.tokens.length > 0 && item.tokens[0].type === 'text') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n } else {\n item.tokens.unshift({\n type: 'text',\n text: checkbox\n });\n }\n } else {\n itemBody += checkbox;\n }\n }\n\n itemBody += this.parse(item.tokens, loose);\n body += this.renderer.listitem(itemBody, task, checked);\n }\n\n out += this.renderer.list(body, ordered, start);\n continue;\n }\n\n case 'html':\n {\n // TODO parse inline content if parameter markdown=1\n out += this.renderer.html(token.text);\n continue;\n }\n\n case 'paragraph':\n {\n out += this.renderer.paragraph(this.parseInline(token.tokens));\n continue;\n }\n\n case 'text':\n {\n body = token.tokens ? this.parseInline(token.tokens) : token.text;\n\n while (i + 1 < l && tokens[i + 1].type === 'text') {\n token = tokens[++i];\n body += '\\n' + (token.tokens ? this.parseInline(token.tokens) : token.text);\n }\n\n out += top ? this.renderer.paragraph(body) : body;\n continue;\n }\n\n default:\n {\n var errMsg = 'Token with \"' + token.type + '\" type was not found.';\n\n if (this.options.silent) {\n console.error(errMsg);\n return;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n\n return out;\n }\n /**\n * Parse Inline Tokens\n */\n ;\n\n _proto.parseInline = function parseInline(tokens, renderer) {\n renderer = renderer || this.renderer;\n var out = '',\n i,\n token;\n var l = tokens.length;\n\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n switch (token.type) {\n case 'escape':\n {\n out += renderer.text(token.text);\n break;\n }\n\n case 'html':\n {\n out += renderer.html(token.text);\n break;\n }\n\n case 'link':\n {\n out += renderer.link(token.href, token.title, this.parseInline(token.tokens, renderer));\n break;\n }\n\n case 'image':\n {\n out += renderer.image(token.href, token.title, token.text);\n break;\n }\n\n case 'strong':\n {\n out += renderer.strong(this.parseInline(token.tokens, renderer));\n break;\n }\n\n case 'em':\n {\n out += renderer.em(this.parseInline(token.tokens, renderer));\n break;\n }\n\n case 'codespan':\n {\n out += renderer.codespan(token.text);\n break;\n }\n\n case 'br':\n {\n out += renderer.br();\n break;\n }\n\n case 'del':\n {\n out += renderer.del(this.parseInline(token.tokens, renderer));\n break;\n }\n\n case 'text':\n {\n out += renderer.text(token.text);\n break;\n }\n\n default:\n {\n var errMsg = 'Token with \"' + token.type + '\" type was not found.';\n\n if (this.options.silent) {\n console.error(errMsg);\n return;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n\n return out;\n };\n\n return Parser;\n }();\n\n var merge$2 = helpers.merge,\n checkSanitizeDeprecation$1 = helpers.checkSanitizeDeprecation,\n escape$2 = helpers.escape;\n var getDefaults = defaults.getDefaults,\n changeDefaults = defaults.changeDefaults,\n defaults$5 = defaults.defaults;\n /**\n * Marked\n */\n\n function marked(src, opt, callback) {\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n throw new Error('marked(): input parameter is undefined or null');\n }\n\n if (typeof src !== 'string') {\n throw new Error('marked(): input parameter is of type ' + Object.prototype.toString.call(src) + ', string expected');\n }\n\n if (typeof opt === 'function') {\n callback = opt;\n opt = null;\n }\n\n opt = merge$2({}, marked.defaults, opt || {});\n checkSanitizeDeprecation$1(opt);\n\n if (callback) {\n var highlight = opt.highlight;\n var tokens;\n\n try {\n tokens = Lexer_1.lex(src, opt);\n } catch (e) {\n return callback(e);\n }\n\n var done = function done(err) {\n var out;\n\n if (!err) {\n try {\n out = Parser_1.parse(tokens, opt);\n } catch (e) {\n err = e;\n }\n }\n\n opt.highlight = highlight;\n return err ? callback(err) : callback(null, out);\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n if (!tokens.length) return done();\n var pending = 0;\n marked.walkTokens(tokens, function (token) {\n if (token.type === 'code') {\n pending++;\n highlight(token.text, token.lang, function (err, code) {\n if (err) {\n return done(err);\n }\n\n if (code != null && code !== token.text) {\n token.text = code;\n token.escaped = true;\n }\n\n pending--;\n\n if (pending === 0) {\n done();\n }\n });\n }\n });\n\n if (pending === 0) {\n done();\n }\n\n return;\n }\n\n try {\n var _tokens = Lexer_1.lex(src, opt);\n\n if (opt.walkTokens) {\n marked.walkTokens(_tokens, opt.walkTokens);\n }\n\n return Parser_1.parse(_tokens, opt);\n } catch (e) {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n\n if (opt.silent) {\n return '

    An error occurred:

    ' + escape$2(e.message + '', true) + '
    ';\n }\n\n throw e;\n }\n }\n /**\n * Options\n */\n\n\n marked.options = marked.setOptions = function (opt) {\n merge$2(marked.defaults, opt);\n changeDefaults(marked.defaults);\n return marked;\n };\n\n marked.getDefaults = getDefaults;\n marked.defaults = defaults$5;\n /**\n * Use Extension\n */\n\n marked.use = function (extension) {\n var opts = merge$2({}, extension);\n\n if (extension.renderer) {\n (function () {\n var renderer = marked.defaults.renderer || new Renderer_1();\n\n var _loop = function _loop(prop) {\n var prevRenderer = renderer[prop];\n\n renderer[prop] = function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var ret = extension.renderer[prop].apply(renderer, args);\n\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n\n return ret;\n };\n };\n\n for (var prop in extension.renderer) {\n _loop(prop);\n }\n\n opts.renderer = renderer;\n })();\n }\n\n if (extension.tokenizer) {\n (function () {\n var tokenizer = marked.defaults.tokenizer || new Tokenizer_1();\n\n var _loop2 = function _loop2(prop) {\n var prevTokenizer = tokenizer[prop];\n\n tokenizer[prop] = function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n var ret = extension.tokenizer[prop].apply(tokenizer, args);\n\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n\n return ret;\n };\n };\n\n for (var prop in extension.tokenizer) {\n _loop2(prop);\n }\n\n opts.tokenizer = tokenizer;\n })();\n }\n\n if (extension.walkTokens) {\n var walkTokens = marked.defaults.walkTokens;\n\n opts.walkTokens = function (token) {\n extension.walkTokens(token);\n\n if (walkTokens) {\n walkTokens(token);\n }\n };\n }\n\n marked.setOptions(opts);\n };\n /**\n * Run callback for every token\n */\n\n\n marked.walkTokens = function (tokens, callback) {\n for (var _iterator = _createForOfIteratorHelperLoose(tokens), _step; !(_step = _iterator()).done;) {\n var token = _step.value;\n callback(token);\n\n switch (token.type) {\n case 'table':\n {\n for (var _iterator2 = _createForOfIteratorHelperLoose(token.tokens.header), _step2; !(_step2 = _iterator2()).done;) {\n var cell = _step2.value;\n marked.walkTokens(cell, callback);\n }\n\n for (var _iterator3 = _createForOfIteratorHelperLoose(token.tokens.cells), _step3; !(_step3 = _iterator3()).done;) {\n var row = _step3.value;\n\n for (var _iterator4 = _createForOfIteratorHelperLoose(row), _step4; !(_step4 = _iterator4()).done;) {\n var _cell = _step4.value;\n marked.walkTokens(_cell, callback);\n }\n }\n\n break;\n }\n\n case 'list':\n {\n marked.walkTokens(token.items, callback);\n break;\n }\n\n default:\n {\n if (token.tokens) {\n marked.walkTokens(token.tokens, callback);\n }\n }\n }\n }\n };\n /**\n * Expose\n */\n\n\n marked.Parser = Parser_1;\n marked.parser = Parser_1.parse;\n marked.Renderer = Renderer_1;\n marked.TextRenderer = TextRenderer_1;\n marked.Lexer = Lexer_1;\n marked.lexer = Lexer_1.lex;\n marked.Tokenizer = Tokenizer_1;\n marked.Slugger = Slugger_1;\n marked.parse = marked;\n var marked_1 = marked;\n\n return marked_1;\n\n})));\n","import DOMPurify from 'dompurify';\n\nexport default (html: string): string => {\n const sanitizedHtml: string = DOMPurify.sanitize(html, {\n ALLOWED_TAGS: [\n 'div',\n 'span',\n 'b',\n 'li',\n 'ol',\n 'ul',\n 'p',\n 'strong',\n 'em',\n 'del',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'table',\n 'thead',\n 'tbody',\n 'tr',\n 'th',\n 'td',\n 'hr',\n 'br',\n 'ruby',\n 'rt',\n 'dd',\n 'dt',\n 'dl',\n 'a',\n 'video',\n 'audio',\n 'iframe',\n ],\n });\n return sanitizedHtml;\n};\n","import marked from 'marked';\nimport sanitize from './SanitizeHtml';\nimport { isEmpty } from './StringUtil';\n\nmarked.setOptions({\n breaks: true,\n});\n\nexport default (markdown?: string) => {\n if (isEmpty(markdown)) {\n return '';\n }\n return marked(sanitize(String(markdown)));\n};\n","/*! @license DOMPurify | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/2.0.8/LICENSE */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.DOMPurify = factory());\n}(this, function () { 'use strict';\n\n function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\n var hasOwnProperty = Object.hasOwnProperty,\n setPrototypeOf = Object.setPrototypeOf,\n isFrozen = Object.isFrozen,\n objectKeys = Object.keys;\n var freeze = Object.freeze,\n seal = Object.seal; // eslint-disable-line import/no-mutable-exports\n\n var _ref = typeof Reflect !== 'undefined' && Reflect,\n apply = _ref.apply,\n construct = _ref.construct;\n\n if (!apply) {\n apply = function apply(fun, thisValue, args) {\n return fun.apply(thisValue, args);\n };\n }\n\n if (!freeze) {\n freeze = function freeze(x) {\n return x;\n };\n }\n\n if (!seal) {\n seal = function seal(x) {\n return x;\n };\n }\n\n if (!construct) {\n construct = function construct(Func, args) {\n return new (Function.prototype.bind.apply(Func, [null].concat(_toConsumableArray(args))))();\n };\n }\n\n var arrayForEach = unapply(Array.prototype.forEach);\n var arrayIndexOf = unapply(Array.prototype.indexOf);\n var arrayJoin = unapply(Array.prototype.join);\n var arrayPop = unapply(Array.prototype.pop);\n var arrayPush = unapply(Array.prototype.push);\n var arraySlice = unapply(Array.prototype.slice);\n\n var stringToLowerCase = unapply(String.prototype.toLowerCase);\n var stringMatch = unapply(String.prototype.match);\n var stringReplace = unapply(String.prototype.replace);\n var stringIndexOf = unapply(String.prototype.indexOf);\n var stringTrim = unapply(String.prototype.trim);\n\n var regExpTest = unapply(RegExp.prototype.test);\n var regExpCreate = unconstruct(RegExp);\n\n var typeErrorCreate = unconstruct(TypeError);\n\n function unapply(func) {\n return function (thisArg) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return apply(func, thisArg, args);\n };\n }\n\n function unconstruct(func) {\n return function () {\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return construct(func, args);\n };\n }\n\n /* Add properties to a lookup table */\n function addToSet(set, array) {\n if (setPrototypeOf) {\n // Make 'in' and truthy checks like Boolean(set.constructor)\n // independent of any properties defined on Object.prototype.\n // Prevent prototype setters from intercepting set as a this value.\n setPrototypeOf(set, null);\n }\n\n var l = array.length;\n while (l--) {\n var element = array[l];\n if (typeof element === 'string') {\n var lcElement = stringToLowerCase(element);\n if (lcElement !== element) {\n // Config presets (e.g. tags.js, attrs.js) are immutable.\n if (!isFrozen(array)) {\n array[l] = lcElement;\n }\n\n element = lcElement;\n }\n }\n\n set[element] = true;\n }\n\n return set;\n }\n\n /* Shallow clone an object */\n function clone(object) {\n var newObject = {};\n\n var property = void 0;\n for (property in object) {\n if (apply(hasOwnProperty, object, [property])) {\n newObject[property] = object[property];\n }\n }\n\n return newObject;\n }\n\n var html = freeze(['a', 'abbr', 'acronym', 'address', 'area', 'article', 'aside', 'audio', 'b', 'bdi', 'bdo', 'big', 'blink', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'content', 'data', 'datalist', 'dd', 'decorator', 'del', 'details', 'dfn', 'dir', 'div', 'dl', 'dt', 'element', 'em', 'fieldset', 'figcaption', 'figure', 'font', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'img', 'input', 'ins', 'kbd', 'label', 'legend', 'li', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meter', 'nav', 'nobr', 'ol', 'optgroup', 'option', 'output', 'p', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'section', 'select', 'shadow', 'small', 'source', 'spacer', 'span', 'strike', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'tr', 'track', 'tt', 'u', 'ul', 'var', 'video', 'wbr']);\n\n // SVG\n var svg = freeze(['svg', 'a', 'altglyph', 'altglyphdef', 'altglyphitem', 'animatecolor', 'animatemotion', 'animatetransform', 'audio', 'canvas', 'circle', 'clippath', 'defs', 'desc', 'ellipse', 'filter', 'font', 'g', 'glyph', 'glyphref', 'hkern', 'image', 'line', 'lineargradient', 'marker', 'mask', 'metadata', 'mpath', 'path', 'pattern', 'polygon', 'polyline', 'radialgradient', 'rect', 'stop', 'style', 'switch', 'symbol', 'text', 'textpath', 'title', 'tref', 'tspan', 'video', 'view', 'vkern']);\n\n var svgFilters = freeze(['feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence']);\n\n var mathMl = freeze(['math', 'menclose', 'merror', 'mfenced', 'mfrac', 'mglyph', 'mi', 'mlabeledtr', 'mmultiscripts', 'mn', 'mo', 'mover', 'mpadded', 'mphantom', 'mroot', 'mrow', 'ms', 'mspace', 'msqrt', 'mstyle', 'msub', 'msup', 'msubsup', 'mtable', 'mtd', 'mtext', 'mtr', 'munder', 'munderover']);\n\n var text = freeze(['#text']);\n\n var html$1 = freeze(['accept', 'action', 'align', 'alt', 'autocapitalize', 'autocomplete', 'autopictureinpicture', 'autoplay', 'background', 'bgcolor', 'border', 'capture', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'controls', 'controlslist', 'coords', 'crossorigin', 'datetime', 'decoding', 'default', 'dir', 'disabled', 'disablepictureinpicture', 'disableremoteplayback', 'download', 'draggable', 'enctype', 'enterkeyhint', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'inputmode', 'integrity', 'ismap', 'kind', 'label', 'lang', 'list', 'loading', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'minlength', 'multiple', 'muted', 'name', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'pattern', 'placeholder', 'playsinline', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'translate', 'type', 'usemap', 'valign', 'value', 'width', 'xmlns']);\n\n var svg$1 = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseline-shift', 'begin', 'bias', 'by', 'class', 'clip', 'clip-path', 'clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cx', 'cy', 'd', 'dx', 'dy', 'diffuseconstant', 'direction', 'display', 'divisor', 'dur', 'edgemode', 'elevation', 'end', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'filterunits', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform', 'height', 'href', 'id', 'image-rendering', 'in', 'in2', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints', 'keysplines', 'keytimes', 'lang', 'lengthadjust', 'letter-spacing', 'kernelmatrix', 'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid', 'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits', 'maskunits', 'max', 'mask', 'media', 'method', 'mode', 'min', 'name', 'numoctaves', 'offset', 'operator', 'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order', 'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits', 'points', 'preservealpha', 'preserveaspectratio', 'primitiveunits', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount', 'repeatdur', 'restart', 'result', 'rotate', 'scale', 'seed', 'shape-rendering', 'specularconstant', 'specularexponent', 'spreadmethod', 'startoffset', 'stddeviation', 'stitchtiles', 'stop-color', 'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width', 'style', 'surfacescale', 'tabindex', 'targetx', 'targety', 'transform', 'text-anchor', 'text-decoration', 'text-rendering', 'textlength', 'type', 'u1', 'u2', 'unicode', 'values', 'viewbox', 'visibility', 'version', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'width', 'word-spacing', 'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2', 'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan']);\n\n var mathMl$1 = freeze(['accent', 'accentunder', 'align', 'bevelled', 'close', 'columnsalign', 'columnlines', 'columnspan', 'denomalign', 'depth', 'dir', 'display', 'displaystyle', 'encoding', 'fence', 'frame', 'height', 'href', 'id', 'largeop', 'length', 'linethickness', 'lspace', 'lquote', 'mathbackground', 'mathcolor', 'mathsize', 'mathvariant', 'maxsize', 'minsize', 'movablelimits', 'notation', 'numalign', 'open', 'rowalign', 'rowlines', 'rowspacing', 'rowspan', 'rspace', 'rquote', 'scriptlevel', 'scriptminsize', 'scriptsizemultiplier', 'selection', 'separator', 'separators', 'stretchy', 'subscriptshift', 'supscriptshift', 'symmetric', 'voffset', 'width', 'xmlns']);\n\n var xml = freeze(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']);\n\n // eslint-disable-next-line unicorn/better-regex\n var MUSTACHE_EXPR = seal(/\\{\\{[\\s\\S]*|[\\s\\S]*\\}\\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode\n var ERB_EXPR = seal(/<%[\\s\\S]*|[\\s\\S]*%>/gm);\n var DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]/); // eslint-disable-line no-useless-escape\n var ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\n var IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n );\n var IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\n var ATTR_WHITESPACE = seal(/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205f\\u3000]/g // eslint-disable-line no-control-regex\n );\n\n var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n function _toConsumableArray$1(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\n var getGlobal = function getGlobal() {\n return typeof window === 'undefined' ? null : window;\n };\n\n /**\n * Creates a no-op policy for internal use only.\n * Don't export this function outside this module!\n * @param {?TrustedTypePolicyFactory} trustedTypes The policy factory.\n * @param {Document} document The document object (to determine policy name suffix)\n * @return {?TrustedTypePolicy} The policy created (or null, if Trusted Types\n * are not supported).\n */\n var _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, document) {\n if ((typeof trustedTypes === 'undefined' ? 'undefined' : _typeof(trustedTypes)) !== 'object' || typeof trustedTypes.createPolicy !== 'function') {\n return null;\n }\n\n // Allow the callers to control the unique policy name\n // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n // Policy creation with duplicate names throws in Trusted Types.\n var suffix = null;\n var ATTR_NAME = 'data-tt-policy-suffix';\n if (document.currentScript && document.currentScript.hasAttribute(ATTR_NAME)) {\n suffix = document.currentScript.getAttribute(ATTR_NAME);\n }\n\n var policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n\n try {\n return trustedTypes.createPolicy(policyName, {\n createHTML: function createHTML(html$$1) {\n return html$$1;\n }\n });\n } catch (_) {\n // Policy creation failed (most likely another DOMPurify script has\n // already run). Skip creating the policy, as this will only cause errors\n // if TT are enforced.\n console.warn('TrustedTypes policy ' + policyName + ' could not be created.');\n return null;\n }\n };\n\n function createDOMPurify() {\n var window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal();\n\n var DOMPurify = function DOMPurify(root) {\n return createDOMPurify(root);\n };\n\n /**\n * Version label, exposed for easier checks\n * if DOMPurify is up to date or not\n */\n DOMPurify.version = '2.0.12';\n\n /**\n * Array of elements that DOMPurify removed during sanitation.\n * Empty if nothing was removed.\n */\n DOMPurify.removed = [];\n\n if (!window || !window.document || window.document.nodeType !== 9) {\n // Not running in a browser, provide a factory function\n // so that you can pass your own Window\n DOMPurify.isSupported = false;\n\n return DOMPurify;\n }\n\n var originalDocument = window.document;\n var removeTitle = false;\n\n var document = window.document;\n var DocumentFragment = window.DocumentFragment,\n HTMLTemplateElement = window.HTMLTemplateElement,\n Node = window.Node,\n NodeFilter = window.NodeFilter,\n _window$NamedNodeMap = window.NamedNodeMap,\n NamedNodeMap = _window$NamedNodeMap === undefined ? window.NamedNodeMap || window.MozNamedAttrMap : _window$NamedNodeMap,\n Text = window.Text,\n Comment = window.Comment,\n DOMParser = window.DOMParser,\n trustedTypes = window.trustedTypes;\n\n // As per issue #47, the web-components registry is inherited by a\n // new document created via createHTMLDocument. As per the spec\n // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n // a new empty registry is used when creating a template contents owner\n // document, so we use that as our parent document to ensure nothing\n // is inherited.\n\n if (typeof HTMLTemplateElement === 'function') {\n var template = document.createElement('template');\n if (template.content && template.content.ownerDocument) {\n document = template.content.ownerDocument;\n }\n }\n\n var trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, originalDocument);\n var emptyHTML = trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML('') : '';\n\n var _document = document,\n implementation = _document.implementation,\n createNodeIterator = _document.createNodeIterator,\n getElementsByTagName = _document.getElementsByTagName,\n createDocumentFragment = _document.createDocumentFragment;\n var importNode = originalDocument.importNode;\n\n\n var hooks = {};\n\n /**\n * Expose whether this browser supports running the full DOMPurify.\n */\n DOMPurify.isSupported = implementation && typeof implementation.createHTMLDocument !== 'undefined' && document.documentMode !== 9;\n\n var MUSTACHE_EXPR$$1 = MUSTACHE_EXPR,\n ERB_EXPR$$1 = ERB_EXPR,\n DATA_ATTR$$1 = DATA_ATTR,\n ARIA_ATTR$$1 = ARIA_ATTR,\n IS_SCRIPT_OR_DATA$$1 = IS_SCRIPT_OR_DATA,\n ATTR_WHITESPACE$$1 = ATTR_WHITESPACE;\n var IS_ALLOWED_URI$$1 = IS_ALLOWED_URI;\n\n /**\n * We consider the elements and attributes below to be safe. Ideally\n * don't add any new ones but feel free to remove unwanted ones.\n */\n\n /* allowed element names */\n\n var ALLOWED_TAGS = null;\n var DEFAULT_ALLOWED_TAGS = addToSet({}, [].concat(_toConsumableArray$1(html), _toConsumableArray$1(svg), _toConsumableArray$1(svgFilters), _toConsumableArray$1(mathMl), _toConsumableArray$1(text)));\n\n /* Allowed attribute names */\n var ALLOWED_ATTR = null;\n var DEFAULT_ALLOWED_ATTR = addToSet({}, [].concat(_toConsumableArray$1(html$1), _toConsumableArray$1(svg$1), _toConsumableArray$1(mathMl$1), _toConsumableArray$1(xml)));\n\n /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n var FORBID_TAGS = null;\n\n /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n var FORBID_ATTR = null;\n\n /* Decide if ARIA attributes are okay */\n var ALLOW_ARIA_ATTR = true;\n\n /* Decide if custom data attributes are okay */\n var ALLOW_DATA_ATTR = true;\n\n /* Decide if unknown protocols are okay */\n var ALLOW_UNKNOWN_PROTOCOLS = false;\n\n /* Output should be safe for jQuery's $() factory? */\n var SAFE_FOR_JQUERY = false;\n\n /* Output should be safe for common template engines.\n * This means, DOMPurify removes data attributes, mustaches and ERB\n */\n var SAFE_FOR_TEMPLATES = false;\n\n /* Decide if document with ... should be returned */\n var WHOLE_DOCUMENT = false;\n\n /* Track whether config is already set on this instance of DOMPurify. */\n var SET_CONFIG = false;\n\n /* Decide if all elements (e.g. style, script) must be children of\n * document.body. By default, browsers might move them to document.head */\n var FORCE_BODY = false;\n\n /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported).\n * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n */\n var RETURN_DOM = false;\n\n /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported) */\n var RETURN_DOM_FRAGMENT = false;\n\n /* If `RETURN_DOM` or `RETURN_DOM_FRAGMENT` is enabled, decide if the returned DOM\n * `Node` is imported into the current `Document`. If this flag is not enabled the\n * `Node` will belong (its ownerDocument) to a fresh `HTMLDocument`, created by\n * DOMPurify. */\n var RETURN_DOM_IMPORT = false;\n\n /* Try to return a Trusted Type object instead of a string, retrun a string in\n * case Trusted Types are not supported */\n var RETURN_TRUSTED_TYPE = false;\n\n /* Output should be free from DOM clobbering attacks? */\n var SANITIZE_DOM = true;\n\n /* Keep element content when removing element? */\n var KEEP_CONTENT = true;\n\n /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n * of importing it into a new Document and returning a sanitized copy */\n var IN_PLACE = false;\n\n /* Allow usage of profiles like html, svg and mathMl */\n var USE_PROFILES = {};\n\n /* Tags to ignore content of when KEEP_CONTENT is true */\n var FORBID_CONTENTS = addToSet({}, ['annotation-xml', 'audio', 'colgroup', 'desc', 'foreignobject', 'head', 'iframe', 'math', 'mi', 'mn', 'mo', 'ms', 'mtext', 'noembed', 'noframes', 'plaintext', 'script', 'style', 'svg', 'template', 'thead', 'title', 'video', 'xmp']);\n\n /* Tags that are safe for data: URIs */\n var DATA_URI_TAGS = null;\n var DEFAULT_DATA_URI_TAGS = addToSet({}, ['audio', 'video', 'img', 'source', 'image', 'track']);\n\n /* Attributes safe for values like \"javascript:\" */\n var URI_SAFE_ATTRIBUTES = null;\n var DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ['alt', 'class', 'for', 'id', 'label', 'name', 'pattern', 'placeholder', 'summary', 'title', 'value', 'style', 'xmlns']);\n\n /* Keep a reference to config to pass to hooks */\n var CONFIG = null;\n\n /* Ideally, do not touch anything below this line */\n /* ______________________________________________ */\n\n var formElement = document.createElement('form');\n\n /**\n * _parseConfig\n *\n * @param {Object} cfg optional config literal\n */\n // eslint-disable-next-line complexity\n var _parseConfig = function _parseConfig(cfg) {\n if (CONFIG && CONFIG === cfg) {\n return;\n }\n\n /* Shield configuration object from tampering */\n if (!cfg || (typeof cfg === 'undefined' ? 'undefined' : _typeof(cfg)) !== 'object') {\n cfg = {};\n }\n\n /* Set configuration parameters */\n ALLOWED_TAGS = 'ALLOWED_TAGS' in cfg ? addToSet({}, cfg.ALLOWED_TAGS) : DEFAULT_ALLOWED_TAGS;\n ALLOWED_ATTR = 'ALLOWED_ATTR' in cfg ? addToSet({}, cfg.ALLOWED_ATTR) : DEFAULT_ALLOWED_ATTR;\n URI_SAFE_ATTRIBUTES = 'ADD_URI_SAFE_ATTR' in cfg ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES), cfg.ADD_URI_SAFE_ATTR) : DEFAULT_URI_SAFE_ATTRIBUTES;\n DATA_URI_TAGS = 'ADD_DATA_URI_TAGS' in cfg ? addToSet(clone(DEFAULT_DATA_URI_TAGS), cfg.ADD_DATA_URI_TAGS) : DEFAULT_DATA_URI_TAGS;\n FORBID_TAGS = 'FORBID_TAGS' in cfg ? addToSet({}, cfg.FORBID_TAGS) : {};\n FORBID_ATTR = 'FORBID_ATTR' in cfg ? addToSet({}, cfg.FORBID_ATTR) : {};\n USE_PROFILES = 'USE_PROFILES' in cfg ? cfg.USE_PROFILES : false;\n ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n SAFE_FOR_JQUERY = cfg.SAFE_FOR_JQUERY || false; // Default false\n SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n RETURN_DOM_IMPORT = cfg.RETURN_DOM_IMPORT || false; // Default false\n RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\n FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n IN_PLACE = cfg.IN_PLACE || false; // Default false\n IS_ALLOWED_URI$$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI$$1;\n if (SAFE_FOR_TEMPLATES) {\n ALLOW_DATA_ATTR = false;\n }\n\n if (RETURN_DOM_FRAGMENT) {\n RETURN_DOM = true;\n }\n\n /* Parse profile info */\n if (USE_PROFILES) {\n ALLOWED_TAGS = addToSet({}, [].concat(_toConsumableArray$1(text)));\n ALLOWED_ATTR = [];\n if (USE_PROFILES.html === true) {\n addToSet(ALLOWED_TAGS, html);\n addToSet(ALLOWED_ATTR, html$1);\n }\n\n if (USE_PROFILES.svg === true) {\n addToSet(ALLOWED_TAGS, svg);\n addToSet(ALLOWED_ATTR, svg$1);\n addToSet(ALLOWED_ATTR, xml);\n }\n\n if (USE_PROFILES.svgFilters === true) {\n addToSet(ALLOWED_TAGS, svgFilters);\n addToSet(ALLOWED_ATTR, svg$1);\n addToSet(ALLOWED_ATTR, xml);\n }\n\n if (USE_PROFILES.mathMl === true) {\n addToSet(ALLOWED_TAGS, mathMl);\n addToSet(ALLOWED_ATTR, mathMl$1);\n addToSet(ALLOWED_ATTR, xml);\n }\n }\n\n /* Merge configuration parameters */\n if (cfg.ADD_TAGS) {\n if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n ALLOWED_TAGS = clone(ALLOWED_TAGS);\n }\n\n addToSet(ALLOWED_TAGS, cfg.ADD_TAGS);\n }\n\n if (cfg.ADD_ATTR) {\n if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n ALLOWED_ATTR = clone(ALLOWED_ATTR);\n }\n\n addToSet(ALLOWED_ATTR, cfg.ADD_ATTR);\n }\n\n if (cfg.ADD_URI_SAFE_ATTR) {\n addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR);\n }\n\n /* Add #text in case KEEP_CONTENT is set to true */\n if (KEEP_CONTENT) {\n ALLOWED_TAGS['#text'] = true;\n }\n\n /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n if (WHOLE_DOCUMENT) {\n addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n }\n\n /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */\n if (ALLOWED_TAGS.table) {\n addToSet(ALLOWED_TAGS, ['tbody']);\n delete FORBID_TAGS.tbody;\n }\n\n // Prevent further manipulation of configuration.\n // Not available in IE8, Safari 5, etc.\n if (freeze) {\n freeze(cfg);\n }\n\n CONFIG = cfg;\n };\n\n /**\n * _forceRemove\n *\n * @param {Node} node a DOM node\n */\n var _forceRemove = function _forceRemove(node) {\n arrayPush(DOMPurify.removed, { element: node });\n try {\n // eslint-disable-next-line unicorn/prefer-node-remove\n node.parentNode.removeChild(node);\n } catch (_) {\n node.outerHTML = emptyHTML;\n }\n };\n\n /**\n * _removeAttribute\n *\n * @param {String} name an Attribute name\n * @param {Node} node a DOM node\n */\n var _removeAttribute = function _removeAttribute(name, node) {\n try {\n arrayPush(DOMPurify.removed, {\n attribute: node.getAttributeNode(name),\n from: node\n });\n } catch (_) {\n arrayPush(DOMPurify.removed, {\n attribute: null,\n from: node\n });\n }\n\n node.removeAttribute(name);\n };\n\n /**\n * _initDocument\n *\n * @param {String} dirty a string of dirty markup\n * @return {Document} a DOM, filled with the dirty markup\n */\n var _initDocument = function _initDocument(dirty) {\n /* Create a HTML document */\n var doc = void 0;\n var leadingWhitespace = void 0;\n\n if (FORCE_BODY) {\n dirty = '' + dirty;\n } else {\n /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n var matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n leadingWhitespace = matches && matches[0];\n }\n\n var dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;\n /* Use the DOMParser API by default, fallback later if needs be */\n try {\n doc = new DOMParser().parseFromString(dirtyPayload, 'text/html');\n } catch (_) {}\n\n /* Remove title to fix a mXSS bug in older MS Edge */\n if (removeTitle) {\n addToSet(FORBID_TAGS, ['title']);\n }\n\n /* Use createHTMLDocument in case DOMParser is not available */\n if (!doc || !doc.documentElement) {\n doc = implementation.createHTMLDocument('');\n var _doc = doc,\n body = _doc.body;\n\n body.parentNode.removeChild(body.parentNode.firstElementChild);\n body.outerHTML = dirtyPayload;\n }\n\n if (dirty && leadingWhitespace) {\n doc.body.insertBefore(document.createTextNode(leadingWhitespace), doc.body.childNodes[0] || null);\n }\n\n /* Work on whole document or just its body */\n return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? 'html' : 'body')[0];\n };\n\n /* Here we test for a broken feature in Edge that might cause mXSS */\n if (DOMPurify.isSupported) {\n (function () {\n try {\n var doc = _initDocument('</title><img>');\n if (regExpTest(/<\\/title/, doc.querySelector('title').innerHTML)) {\n removeTitle = true;\n }\n } catch (_) {}\n })();\n }\n\n /**\n * _createIterator\n *\n * @param {Document} root document/fragment to create iterator for\n * @return {Iterator} iterator instance\n */\n var _createIterator = function _createIterator(root) {\n return createNodeIterator.call(root.ownerDocument || root, root, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT, function () {\n return NodeFilter.FILTER_ACCEPT;\n }, false);\n };\n\n /**\n * _isClobbered\n *\n * @param {Node} elm element to check for clobbering attacks\n * @return {Boolean} true if clobbered, false if safe\n */\n var _isClobbered = function _isClobbered(elm) {\n if (elm instanceof Text || elm instanceof Comment) {\n return false;\n }\n\n if (typeof elm.nodeName !== 'string' || typeof elm.textContent !== 'string' || typeof elm.removeChild !== 'function' || !(elm.attributes instanceof NamedNodeMap) || typeof elm.removeAttribute !== 'function' || typeof elm.setAttribute !== 'function' || typeof elm.namespaceURI !== 'string') {\n return true;\n }\n\n return false;\n };\n\n /**\n * _isNode\n *\n * @param {Node} obj object to check whether it's a DOM node\n * @return {Boolean} true is object is a DOM node\n */\n var _isNode = function _isNode(object) {\n return (typeof Node === 'undefined' ? 'undefined' : _typeof(Node)) === 'object' ? object instanceof Node : object && (typeof object === 'undefined' ? 'undefined' : _typeof(object)) === 'object' && typeof object.nodeType === 'number' && typeof object.nodeName === 'string';\n };\n\n /**\n * _executeHook\n * Execute user configurable hooks\n *\n * @param {String} entryPoint Name of the hook's entry point\n * @param {Node} currentNode node to work on with the hook\n * @param {Object} data additional hook parameters\n */\n var _executeHook = function _executeHook(entryPoint, currentNode, data) {\n if (!hooks[entryPoint]) {\n return;\n }\n\n arrayForEach(hooks[entryPoint], function (hook) {\n hook.call(DOMPurify, currentNode, data, CONFIG);\n });\n };\n\n /**\n * _sanitizeElements\n *\n * @protect nodeName\n * @protect textContent\n * @protect removeChild\n *\n * @param {Node} currentNode to check for permission to exist\n * @return {Boolean} true if node was killed, false if left alive\n */\n // eslint-disable-next-line complexity\n var _sanitizeElements = function _sanitizeElements(currentNode) {\n var content = void 0;\n\n /* Execute a hook if present */\n _executeHook('beforeSanitizeElements', currentNode, null);\n\n /* Check if element is clobbered or can clobber */\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Now let's check the element's type and name */\n var tagName = stringToLowerCase(currentNode.nodeName);\n\n /* Execute a hook if present */\n _executeHook('uponSanitizeElement', currentNode, {\n tagName: tagName,\n allowedTags: ALLOWED_TAGS\n });\n\n /* Take care of an mXSS pattern using p, br inside svg, math */\n if ((tagName === 'svg' || tagName === 'math') && currentNode.querySelectorAll('p, br').length !== 0) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Remove element if anything forbids its presence */\n if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n /* Keep content except for bad-listed elements */\n if (KEEP_CONTENT && !FORBID_CONTENTS[tagName] && typeof currentNode.insertAdjacentHTML === 'function') {\n try {\n var htmlToInsert = currentNode.innerHTML;\n currentNode.insertAdjacentHTML('AfterEnd', trustedTypesPolicy ? trustedTypesPolicy.createHTML(htmlToInsert) : htmlToInsert);\n } catch (_) {}\n }\n\n _forceRemove(currentNode);\n return true;\n }\n\n /* Remove in case a noscript/noembed XSS is suspected */\n if (tagName === 'noscript' && regExpTest(/<\\/noscript/i, currentNode.innerHTML)) {\n _forceRemove(currentNode);\n return true;\n }\n\n if (tagName === 'noembed' && regExpTest(/<\\/noembed/i, currentNode.innerHTML)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Convert markup to cover jQuery behavior */\n if (SAFE_FOR_JQUERY && !currentNode.firstElementChild && (!currentNode.content || !currentNode.content.firstElementChild) && regExpTest(/</g, currentNode.textContent)) {\n arrayPush(DOMPurify.removed, { element: currentNode.cloneNode() });\n if (currentNode.innerHTML) {\n currentNode.innerHTML = stringReplace(currentNode.innerHTML, /</g, '<');\n } else {\n currentNode.innerHTML = stringReplace(currentNode.textContent, /</g, '<');\n }\n }\n\n /* Sanitize element content to be template-safe */\n if (SAFE_FOR_TEMPLATES && currentNode.nodeType === 3) {\n /* Get the element's text content */\n content = currentNode.textContent;\n content = stringReplace(content, MUSTACHE_EXPR$$1, ' ');\n content = stringReplace(content, ERB_EXPR$$1, ' ');\n if (currentNode.textContent !== content) {\n arrayPush(DOMPurify.removed, { element: currentNode.cloneNode() });\n currentNode.textContent = content;\n }\n }\n\n /* Execute a hook if present */\n _executeHook('afterSanitizeElements', currentNode, null);\n\n return false;\n };\n\n /**\n * _isValidAttribute\n *\n * @param {string} lcTag Lowercase tag name of containing element.\n * @param {string} lcName Lowercase attribute name.\n * @param {string} value Attribute value.\n * @return {Boolean} Returns true if `value` is valid, otherwise false.\n */\n // eslint-disable-next-line complexity\n var _isValidAttribute = function _isValidAttribute(lcTag, lcName, value) {\n /* Make sure attribute cannot clobber */\n if (SANITIZE_DOM && (lcName === 'id' || lcName === 'name') && (value in document || value in formElement)) {\n return false;\n }\n\n /* Allow valid data-* attributes: At least one character after \"-\"\n (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)\n XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)\n We don't need to check the value; it's always URI safe. */\n if (ALLOW_DATA_ATTR && regExpTest(DATA_ATTR$$1, lcName)) ; else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR$$1, lcName)) ; else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {\n return false;\n\n /* Check value is safe. First, is attr inert? If so, is safe */\n } else if (URI_SAFE_ATTRIBUTES[lcName]) ; else if (regExpTest(IS_ALLOWED_URI$$1, stringReplace(value, ATTR_WHITESPACE$$1, ''))) ; else if ((lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') && lcTag !== 'script' && stringIndexOf(value, 'data:') === 0 && DATA_URI_TAGS[lcTag]) ; else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA$$1, stringReplace(value, ATTR_WHITESPACE$$1, ''))) ; else if (!value) ; else {\n return false;\n }\n\n return true;\n };\n\n /**\n * _sanitizeAttributes\n *\n * @protect attributes\n * @protect nodeName\n * @protect removeAttribute\n * @protect setAttribute\n *\n * @param {Node} currentNode to sanitize\n */\n // eslint-disable-next-line complexity\n var _sanitizeAttributes = function _sanitizeAttributes(currentNode) {\n var attr = void 0;\n var value = void 0;\n var lcName = void 0;\n var idAttr = void 0;\n var l = void 0;\n /* Execute a hook if present */\n _executeHook('beforeSanitizeAttributes', currentNode, null);\n\n var attributes = currentNode.attributes;\n\n /* Check if we have attributes; if not we might have a text node */\n\n if (!attributes) {\n return;\n }\n\n var hookEvent = {\n attrName: '',\n attrValue: '',\n keepAttr: true,\n allowedAttributes: ALLOWED_ATTR\n };\n l = attributes.length;\n\n /* Go backwards over all attributes; safely remove bad ones */\n while (l--) {\n attr = attributes[l];\n var _attr = attr,\n name = _attr.name,\n namespaceURI = _attr.namespaceURI;\n\n value = stringTrim(attr.value);\n lcName = stringToLowerCase(name);\n\n /* Execute a hook if present */\n hookEvent.attrName = lcName;\n hookEvent.attrValue = value;\n hookEvent.keepAttr = true;\n hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set\n _executeHook('uponSanitizeAttribute', currentNode, hookEvent);\n value = hookEvent.attrValue;\n /* Did the hooks approve of the attribute? */\n if (hookEvent.forceKeepAttr) {\n continue;\n }\n\n /* Remove attribute */\n // Safari (iOS + Mac), last tested v8.0.5, crashes if you try to\n // remove a \"name\" attribute from an <img> tag that has an \"id\"\n // attribute at the time.\n if (lcName === 'name' && currentNode.nodeName === 'IMG' && attributes.id) {\n idAttr = attributes.id;\n attributes = arraySlice(attributes, []);\n _removeAttribute('id', currentNode);\n _removeAttribute(name, currentNode);\n if (arrayIndexOf(attributes, idAttr) > l) {\n currentNode.setAttribute('id', idAttr.value);\n }\n } else if (\n // This works around a bug in Safari, where input[type=file]\n // cannot be dynamically set after type has been removed\n currentNode.nodeName === 'INPUT' && lcName === 'type' && value === 'file' && hookEvent.keepAttr && (ALLOWED_ATTR[lcName] || !FORBID_ATTR[lcName])) {\n continue;\n } else {\n // This avoids a crash in Safari v9.0 with double-ids.\n // The trick is to first set the id to be empty and then to\n // remove the attribute\n if (name === 'id') {\n currentNode.setAttribute(name, '');\n }\n\n _removeAttribute(name, currentNode);\n }\n\n /* Did the hooks approve of the attribute? */\n if (!hookEvent.keepAttr) {\n continue;\n }\n\n /* Work around a security issue in jQuery 3.0 */\n if (SAFE_FOR_JQUERY && regExpTest(/\\/>/i, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n\n /* Take care of an mXSS pattern using namespace switches */\n if (regExpTest(/svg|math/i, currentNode.namespaceURI) && regExpTest(regExpCreate('</(' + arrayJoin(objectKeys(FORBID_CONTENTS), '|') + ')', 'i'), value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n\n /* Sanitize attribute content to be template-safe */\n if (SAFE_FOR_TEMPLATES) {\n value = stringReplace(value, MUSTACHE_EXPR$$1, ' ');\n value = stringReplace(value, ERB_EXPR$$1, ' ');\n }\n\n /* Is `value` valid for this attribute? */\n var lcTag = currentNode.nodeName.toLowerCase();\n if (!_isValidAttribute(lcTag, lcName, value)) {\n continue;\n }\n\n /* Handle invalid data-* attribute set by try-catching it */\n try {\n if (namespaceURI) {\n currentNode.setAttributeNS(namespaceURI, name, value);\n } else {\n /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. \"x-schema\". */\n currentNode.setAttribute(name, value);\n }\n\n arrayPop(DOMPurify.removed);\n } catch (_) {}\n }\n\n /* Execute a hook if present */\n _executeHook('afterSanitizeAttributes', currentNode, null);\n };\n\n /**\n * _sanitizeShadowDOM\n *\n * @param {DocumentFragment} fragment to iterate over recursively\n */\n var _sanitizeShadowDOM = function _sanitizeShadowDOM(fragment) {\n var shadowNode = void 0;\n var shadowIterator = _createIterator(fragment);\n\n /* Execute a hook if present */\n _executeHook('beforeSanitizeShadowDOM', fragment, null);\n\n while (shadowNode = shadowIterator.nextNode()) {\n /* Execute a hook if present */\n _executeHook('uponSanitizeShadowNode', shadowNode, null);\n\n /* Sanitize tags and elements */\n if (_sanitizeElements(shadowNode)) {\n continue;\n }\n\n /* Deep shadow DOM detected */\n if (shadowNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(shadowNode.content);\n }\n\n /* Check attributes, sanitize if necessary */\n _sanitizeAttributes(shadowNode);\n }\n\n /* Execute a hook if present */\n _executeHook('afterSanitizeShadowDOM', fragment, null);\n };\n\n /**\n * Sanitize\n * Public method providing core sanitation functionality\n *\n * @param {String|Node} dirty string or DOM node\n * @param {Object} configuration object\n */\n // eslint-disable-next-line complexity\n DOMPurify.sanitize = function (dirty, cfg) {\n var body = void 0;\n var importedNode = void 0;\n var currentNode = void 0;\n var oldNode = void 0;\n var returnNode = void 0;\n /* Make sure we have a string to sanitize.\n DO NOT return early, as this will return the wrong type if\n the user has requested a DOM object rather than a string */\n if (!dirty) {\n dirty = '<!-->';\n }\n\n /* Stringify, in case dirty is an object */\n if (typeof dirty !== 'string' && !_isNode(dirty)) {\n // eslint-disable-next-line no-negated-condition\n if (typeof dirty.toString !== 'function') {\n throw typeErrorCreate('toString is not a function');\n } else {\n dirty = dirty.toString();\n if (typeof dirty !== 'string') {\n throw typeErrorCreate('dirty is not a string, aborting');\n }\n }\n }\n\n /* Check we can run. Otherwise fall back or ignore */\n if (!DOMPurify.isSupported) {\n if (_typeof(window.toStaticHTML) === 'object' || typeof window.toStaticHTML === 'function') {\n if (typeof dirty === 'string') {\n return window.toStaticHTML(dirty);\n }\n\n if (_isNode(dirty)) {\n return window.toStaticHTML(dirty.outerHTML);\n }\n }\n\n return dirty;\n }\n\n /* Assign config vars */\n if (!SET_CONFIG) {\n _parseConfig(cfg);\n }\n\n /* Clean up removed elements */\n DOMPurify.removed = [];\n\n /* Check if dirty is correctly typed for IN_PLACE */\n if (typeof dirty === 'string') {\n IN_PLACE = false;\n }\n\n if (IN_PLACE) ; else if (dirty instanceof Node) {\n /* If dirty is a DOM element, append to an empty document to avoid\n elements being stripped by the parser */\n body = _initDocument('<!-->');\n importedNode = body.ownerDocument.importNode(dirty, true);\n if (importedNode.nodeType === 1 && importedNode.nodeName === 'BODY') {\n /* Node is already a body, use as is */\n body = importedNode;\n } else if (importedNode.nodeName === 'HTML') {\n body = importedNode;\n } else {\n // eslint-disable-next-line unicorn/prefer-node-append\n body.appendChild(importedNode);\n }\n } else {\n /* Exit directly if we have nothing to do */\n if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT &&\n // eslint-disable-next-line unicorn/prefer-includes\n dirty.indexOf('<') === -1) {\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(dirty) : dirty;\n }\n\n /* Initialize the document to work on */\n body = _initDocument(dirty);\n\n /* Check we have a DOM node from the data */\n if (!body) {\n return RETURN_DOM ? null : emptyHTML;\n }\n }\n\n /* Remove first element node (ours) if FORCE_BODY is set */\n if (body && FORCE_BODY) {\n _forceRemove(body.firstChild);\n }\n\n /* Get node iterator */\n var nodeIterator = _createIterator(IN_PLACE ? dirty : body);\n\n /* Now start iterating over the created document */\n while (currentNode = nodeIterator.nextNode()) {\n /* Fix IE's strange behavior with manipulated textNodes #89 */\n if (currentNode.nodeType === 3 && currentNode === oldNode) {\n continue;\n }\n\n /* Sanitize tags and elements */\n if (_sanitizeElements(currentNode)) {\n continue;\n }\n\n /* Shadow DOM detected, sanitize it */\n if (currentNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(currentNode.content);\n }\n\n /* Check attributes, sanitize if necessary */\n _sanitizeAttributes(currentNode);\n\n oldNode = currentNode;\n }\n\n oldNode = null;\n\n /* If we sanitized `dirty` in-place, return it. */\n if (IN_PLACE) {\n return dirty;\n }\n\n /* Return sanitized string or DOM */\n if (RETURN_DOM) {\n if (RETURN_DOM_FRAGMENT) {\n returnNode = createDocumentFragment.call(body.ownerDocument);\n\n while (body.firstChild) {\n // eslint-disable-next-line unicorn/prefer-node-append\n returnNode.appendChild(body.firstChild);\n }\n } else {\n returnNode = body;\n }\n\n if (RETURN_DOM_IMPORT) {\n /*\n AdoptNode() is not used because internal state is not reset\n (e.g. the past names map of a HTMLFormElement), this is safe\n in theory but we would rather not risk another attack vector.\n The state that is cloned by importNode() is explicitly defined\n by the specs.\n */\n returnNode = importNode.call(originalDocument, returnNode, true);\n }\n\n return returnNode;\n }\n\n var serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n\n /* Sanitize final string template-safe */\n if (SAFE_FOR_TEMPLATES) {\n serializedHTML = stringReplace(serializedHTML, MUSTACHE_EXPR$$1, ' ');\n serializedHTML = stringReplace(serializedHTML, ERB_EXPR$$1, ' ');\n }\n\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(serializedHTML) : serializedHTML;\n };\n\n /**\n * Public method to set the configuration once\n * setConfig\n *\n * @param {Object} cfg configuration object\n */\n DOMPurify.setConfig = function (cfg) {\n _parseConfig(cfg);\n SET_CONFIG = true;\n };\n\n /**\n * Public method to remove the configuration\n * clearConfig\n *\n */\n DOMPurify.clearConfig = function () {\n CONFIG = null;\n SET_CONFIG = false;\n };\n\n /**\n * Public method to check if an attribute value is valid.\n * Uses last set config, if any. Otherwise, uses config defaults.\n * isValidAttribute\n *\n * @param {string} tag Tag name of containing element.\n * @param {string} attr Attribute name.\n * @param {string} value Attribute value.\n * @return {Boolean} Returns true if `value` is valid. Otherwise, returns false.\n */\n DOMPurify.isValidAttribute = function (tag, attr, value) {\n /* Initialize shared config vars if necessary. */\n if (!CONFIG) {\n _parseConfig({});\n }\n\n var lcTag = stringToLowerCase(tag);\n var lcName = stringToLowerCase(attr);\n return _isValidAttribute(lcTag, lcName, value);\n };\n\n /**\n * AddHook\n * Public method to add DOMPurify hooks\n *\n * @param {String} entryPoint entry point for the hook to add\n * @param {Function} hookFunction function to execute\n */\n DOMPurify.addHook = function (entryPoint, hookFunction) {\n if (typeof hookFunction !== 'function') {\n return;\n }\n\n hooks[entryPoint] = hooks[entryPoint] || [];\n arrayPush(hooks[entryPoint], hookFunction);\n };\n\n /**\n * RemoveHook\n * Public method to remove a DOMPurify hook at a given entryPoint\n * (pops it from the stack of hooks if more are present)\n *\n * @param {String} entryPoint entry point for the hook to remove\n */\n DOMPurify.removeHook = function (entryPoint) {\n if (hooks[entryPoint]) {\n arrayPop(hooks[entryPoint]);\n }\n };\n\n /**\n * RemoveHooks\n * Public method to remove all DOMPurify hooks at a given entryPoint\n *\n * @param {String} entryPoint entry point for the hooks to remove\n */\n DOMPurify.removeHooks = function (entryPoint) {\n if (hooks[entryPoint]) {\n hooks[entryPoint] = [];\n }\n };\n\n /**\n * RemoveAllHooks\n * Public method to remove all DOMPurify hooks\n *\n */\n DOMPurify.removeAllHooks = function () {\n hooks = {};\n };\n\n return DOMPurify;\n }\n\n var purify = createDOMPurify();\n\n return purify;\n\n}));\n//# sourceMappingURL=purify.js.map\n"],"sourceRoot":""}