{"version":3,"sources":["jsdelivr-header.js","/npm/prismjs-papandreou@1.6.0-patch2/prism.js"],"names":[],"mappings":"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","file":"/npm/prismjs-papandreou@1.6.0-patch2/prism.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/prismjs-papandreou@1.6.0-patch2/prism.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","\n/* **********************************************\n     Begin prism-core.js\n********************************************** */\n\nvar _self = (typeof window !== 'undefined')\n\t? window   // if in browser\n\t: (\n\t\t(typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope)\n\t\t? self // if in worker\n\t\t: {}   // if in node js\n\t);\n\n/**\n * Prism: Lightweight, robust, elegant syntax highlighting\n * MIT license http://www.opensource.org/licenses/mit-license.php/\n * @author Lea Verou http://lea.verou.me\n */\n\nvar Prism = (function(){\n\n// Private helper vars\nvar lang = /\\blang(?:uage)?-(\\w+)\\b/i;\nvar uniqueId = 0;\n\nvar _ = _self.Prism = {\n\tutil: {\n\t\tencode: function (tokens) {\n\t\t\tif (tokens instanceof Token) {\n\t\t\t\treturn new Token(tokens.type, _.util.encode(tokens.content), tokens.alias);\n\t\t\t} else if (_.util.type(tokens) === 'Array') {\n\t\t\t\treturn tokens.map(_.util.encode);\n\t\t\t} else {\n\t\t\t\treturn tokens.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/\\u00a0/g, ' ');\n\t\t\t}\n\t\t},\n\n\t\ttype: function (o) {\n\t\t\treturn Object.prototype.toString.call(o).match(/\\[object (\\w+)\\]/)[1];\n\t\t},\n\n\t\tobjId: function (obj) {\n\t\t\tif (!obj['__id']) {\n\t\t\t\tObject.defineProperty(obj, '__id', { value: ++uniqueId });\n\t\t\t}\n\t\t\treturn obj['__id'];\n\t\t},\n\n\t\t// Deep clone a language definition (e.g. to extend it)\n\t\tclone: function (o) {\n\t\t\tvar type = _.util.type(o);\n\n\t\t\tswitch (type) {\n\t\t\t\tcase 'Object':\n\t\t\t\t\tvar clone = {};\n\n\t\t\t\t\tfor (var key in o) {\n\t\t\t\t\t\tif (o.hasOwnProperty(key)) {\n\t\t\t\t\t\t\tclone[key] = _.util.clone(o[key]);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn clone;\n\n\t\t\t\tcase 'Array':\n\t\t\t\t\t// Check for existence for IE8\n\t\t\t\t\treturn o.map && o.map(function(v) { return _.util.clone(v); });\n\t\t\t}\n\n\t\t\treturn o;\n\t\t}\n\t},\n\n\tlanguages: {\n\t\textend: function (id, redef) {\n\t\t\tvar lang = _.util.clone(_.languages[id]);\n\n\t\t\tfor (var key in redef) {\n\t\t\t\tlang[key] = redef[key];\n\t\t\t}\n\n\t\t\treturn lang;\n\t\t},\n\n\t\t/**\n\t\t * Insert a token before another token in a language literal\n\t\t * As this needs to recreate the object (we cannot actually insert before keys in object literals),\n\t\t * we cannot just provide an object, we need anobject and a key.\n\t\t * @param inside The key (or language id) of the parent\n\t\t * @param before The key to insert before. If not provided, the function appends instead.\n\t\t * @param insert Object with the key/value pairs to insert\n\t\t * @param root The object that contains `inside`. If equal to Prism.languages, it can be omitted.\n\t\t */\n\t\tinsertBefore: function (inside, before, insert, root) {\n\t\t\troot = root || _.languages;\n\t\t\tvar grammar = root[inside];\n\n\t\t\tif (arguments.length == 2) {\n\t\t\t\tinsert = arguments[1];\n\n\t\t\t\tfor (var newToken in insert) {\n\t\t\t\t\tif (insert.hasOwnProperty(newToken)) {\n\t\t\t\t\t\tgrammar[newToken] = insert[newToken];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn grammar;\n\t\t\t}\n\n\t\t\tvar ret = {};\n\n\t\t\tfor (var token in grammar) {\n\n\t\t\t\tif (grammar.hasOwnProperty(token)) {\n\n\t\t\t\t\tif (token == before) {\n\n\t\t\t\t\t\tfor (var newToken in insert) {\n\n\t\t\t\t\t\t\tif (insert.hasOwnProperty(newToken)) {\n\t\t\t\t\t\t\t\tret[newToken] = insert[newToken];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tret[token] = grammar[token];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Update references in other language definitions\n\t\t\t_.languages.DFS(_.languages, function(key, value) {\n\t\t\t\tif (value === root[inside] && key != inside) {\n\t\t\t\t\tthis[key] = ret;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn root[inside] = ret;\n\t\t},\n\n\t\t// Traverse a language definition with Depth First Search\n\t\tDFS: function(o, callback, type, visited) {\n\t\t\tvisited = visited || {};\n\t\t\tfor (var i in o) {\n\t\t\t\tif (o.hasOwnProperty(i)) {\n\t\t\t\t\tcallback.call(o, i, o[i], type || i);\n\n\t\t\t\t\tif (_.util.type(o[i]) === 'Object' && !visited[_.util.objId(o[i])]) {\n\t\t\t\t\t\tvisited[_.util.objId(o[i])] = true;\n\t\t\t\t\t\t_.languages.DFS(o[i], callback, null, visited);\n\t\t\t\t\t}\n\t\t\t\t\telse if (_.util.type(o[i]) === 'Array' && !visited[_.util.objId(o[i])]) {\n\t\t\t\t\t\tvisited[_.util.objId(o[i])] = true;\n\t\t\t\t\t\t_.languages.DFS(o[i], callback, i, visited);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tplugins: {},\n\n\thighlightAll: function(async, callback) {\n\t\tvar env = {\n\t\t\tcallback: callback,\n\t\t\tselector: 'code[class*=\"language-\"], [class*=\"language-\"] code, code[class*=\"lang-\"], [class*=\"lang-\"] code'\n\t\t};\n\n\t\t_.hooks.run(\"before-highlightall\", env);\n\n\t\tvar elements = env.elements || document.querySelectorAll(env.selector);\n\n\t\tfor (var i=0, element; element = elements[i++];) {\n\t\t\t_.highlightElement(element, async === true, env.callback);\n\t\t}\n\t},\n\n\thighlightElement: function(element, async, callback) {\n\t\t// Find language\n\t\tvar language, grammar, parent = element;\n\n\t\twhile (parent && !lang.test(parent.className)) {\n\t\t\tparent = parent.parentNode;\n\t\t}\n\n\t\tif (parent) {\n\t\t\tlanguage = (parent.className.match(lang) || [,''])[1].toLowerCase();\n\t\t\tgrammar = _.languages[language];\n\t\t}\n\n\t\t// Set language on the element, if not present\n\t\telement.className = element.className.replace(lang, '').replace(/\\s+/g, ' ') + ' language-' + language;\n\n\t\t// Set language on the parent, for styling\n\t\tparent = element.parentNode;\n\n\t\tif (/pre/i.test(parent.nodeName)) {\n\t\t\tparent.className = parent.className.replace(lang, '').replace(/\\s+/g, ' ') + ' language-' + language;\n\t\t}\n\n\t\tvar code = element.textContent;\n\n\t\tvar env = {\n\t\t\telement: element,\n\t\t\tlanguage: language,\n\t\t\tgrammar: grammar,\n\t\t\tcode: code\n\t\t};\n\n\t\t_.hooks.run('before-sanity-check', env);\n\n\t\tif (!env.code || !env.grammar) {\n\t\t\tif (env.code) {\n\t\t\t\tenv.element.textContent = env.code;\n\t\t\t}\n\t\t\t_.hooks.run('complete', env);\n\t\t\treturn;\n\t\t}\n\n\t\t_.hooks.run('before-highlight', env);\n\n\t\tif (async && _self.Worker) {\n\t\t\tvar worker = new Worker(_.filename);\n\n\t\t\tworker.onmessage = function(evt) {\n\t\t\t\tenv.highlightedCode = evt.data;\n\n\t\t\t\t_.hooks.run('before-insert', env);\n\n\t\t\t\tenv.element.innerHTML = env.highlightedCode;\n\n\t\t\t\tcallback && callback.call(env.element);\n\t\t\t\t_.hooks.run('after-highlight', env);\n\t\t\t\t_.hooks.run('complete', env);\n\t\t\t};\n\n\t\t\tworker.postMessage(JSON.stringify({\n\t\t\t\tlanguage: env.language,\n\t\t\t\tcode: env.code,\n\t\t\t\timmediateClose: true\n\t\t\t}));\n\t\t}\n\t\telse {\n\t\t\tenv.highlightedCode = _.highlight(env.code, env.grammar, env.language);\n\n\t\t\t_.hooks.run('before-insert', env);\n\n\t\t\tenv.element.innerHTML = env.highlightedCode;\n\n\t\t\tcallback && callback.call(element);\n\n\t\t\t_.hooks.run('after-highlight', env);\n\t\t\t_.hooks.run('complete', env);\n\t\t}\n\t},\n\n\thighlight: function (text, grammar, language) {\n\t\tvar tokens = _.tokenize(text, grammar);\n\t\treturn Token.stringify(_.util.encode(tokens), language);\n\t},\n\n\ttokenize: function(text, grammar, language) {\n\t\tvar Token = _.Token;\n\n\t\tvar strarr = [text];\n\n\t\tvar rest = grammar.rest;\n\n\t\tif (rest) {\n\t\t\tfor (var token in rest) {\n\t\t\t\tgrammar[token] = rest[token];\n\t\t\t}\n\n\t\t\tdelete grammar.rest;\n\t\t}\n\n\t\ttokenloop: for (var token in grammar) {\n\t\t\tif(!grammar.hasOwnProperty(token) || !grammar[token]) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tvar patterns = grammar[token];\n\t\t\tpatterns = (_.util.type(patterns) === \"Array\") ? patterns : [patterns];\n\n\t\t\tfor (var j = 0; j < patterns.length; ++j) {\n\t\t\t\tvar pattern = patterns[j],\n\t\t\t\t\tinside = pattern.inside,\n\t\t\t\t\tlookbehind = !!pattern.lookbehind,\n\t\t\t\t\tgreedy = !!pattern.greedy,\n\t\t\t\t\tlookbehindLength = 0,\n\t\t\t\t\talias = pattern.alias;\n\n\t\t\t\tif (greedy && !pattern.pattern.global) {\n\t\t\t\t\t// Without the global flag, lastIndex won't work\n\t\t\t\t\tvar flags = pattern.pattern.toString().match(/[imuy]*$/)[0];\n\t\t\t\t\tpattern.pattern = RegExp(pattern.pattern.source, flags + \"g\");\n\t\t\t\t}\n\n\t\t\t\tpattern = pattern.pattern || pattern;\n\n\t\t\t\t// Don’t cache length as it changes during the loop\n\t\t\t\tfor (var i=0, pos = 0; i<strarr.length; pos += strarr[i].length, ++i) {\n\n\t\t\t\t\tvar str = strarr[i];\n\n\t\t\t\t\tif (strarr.length > text.length) {\n\t\t\t\t\t\t// Something went terribly wrong, ABORT, ABORT!\n\t\t\t\t\t\tbreak tokenloop;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (str instanceof Token) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tpattern.lastIndex = 0;\n\n\t\t\t\t\tvar match = pattern.exec(str),\n\t\t\t\t\t    delNum = 1;\n\n\t\t\t\t\t// Greedy patterns can override/remove up to two previously matched tokens\n\t\t\t\t\tif (!match && greedy && i != strarr.length - 1) {\n\t\t\t\t\t\tpattern.lastIndex = pos;\n\t\t\t\t\t\tmatch = pattern.exec(text);\n\t\t\t\t\t\tif (!match) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar from = match.index + (lookbehind ? match[1].length : 0),\n\t\t\t\t\t\t    to = match.index + match[0].length,\n\t\t\t\t\t\t    k = i,\n\t\t\t\t\t\t    p = pos;\n\n\t\t\t\t\t\tfor (var len = strarr.length; k < len && p < to; ++k) {\n\t\t\t\t\t\t\tp += strarr[k].length;\n\t\t\t\t\t\t\t// Move the index i to the element in strarr that is closest to from\n\t\t\t\t\t\t\tif (from >= p) {\n\t\t\t\t\t\t\t\t++i;\n\t\t\t\t\t\t\t\tpos = p;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * If strarr[i] is a Token, then the match starts inside another Token, which is invalid\n\t\t\t\t\t\t * If strarr[k - 1] is greedy we are in conflict with another greedy pattern\n\t\t\t\t\t\t */\n\t\t\t\t\t\tif (strarr[i] instanceof Token || strarr[k - 1].greedy) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Number of tokens to delete and replace with the new match\n\t\t\t\t\t\tdelNum = k - i;\n\t\t\t\t\t\tstr = text.slice(pos, p);\n\t\t\t\t\t\tmatch.index -= pos;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!match) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(lookbehind) {\n\t\t\t\t\t\tlookbehindLength = match[1].length;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar from = match.index + lookbehindLength,\n\t\t\t\t\t    match = match[0].slice(lookbehindLength),\n\t\t\t\t\t    to = from + match.length,\n\t\t\t\t\t    before = str.slice(0, from),\n\t\t\t\t\t    after = str.slice(to);\n\n\t\t\t\t\tvar args = [i, delNum];\n\n\t\t\t\t\tif (before) {\n\t\t\t\t\t\targs.push(before);\n\t\t\t\t\t}\n\n\t\t\t\t\tvar wrapped = new Token(token, inside? _.tokenize(match, inside) : match, alias, match, greedy);\n\n\t\t\t\t\targs.push(wrapped);\n\n\t\t\t\t\tif (after) {\n\t\t\t\t\t\targs.push(after);\n\t\t\t\t\t}\n\n\t\t\t\t\tArray.prototype.splice.apply(strarr, args);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn strarr;\n\t},\n\n\thooks: {\n\t\tall: {},\n\n\t\tadd: function (name, callback) {\n\t\t\tvar hooks = _.hooks.all;\n\n\t\t\thooks[name] = hooks[name] || [];\n\n\t\t\thooks[name].push(callback);\n\t\t},\n\n\t\trun: function (name, env) {\n\t\t\tvar callbacks = _.hooks.all[name];\n\n\t\t\tif (!callbacks || !callbacks.length) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (var i=0, callback; callback = callbacks[i++];) {\n\t\t\t\tcallback(env);\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar Token = _.Token = function(type, content, alias, matchedStr, greedy) {\n\tthis.type = type;\n\tthis.content = content;\n\tthis.alias = alias;\n\t// Copy of the full string this token was created from\n\tthis.length = (matchedStr || \"\").length|0;\n\tthis.greedy = !!greedy;\n};\n\nToken.stringify = function(o, language, parent) {\n\tif (typeof o == 'string') {\n\t\treturn o;\n\t}\n\n\tif (_.util.type(o) === 'Array') {\n\t\treturn o.map(function(element) {\n\t\t\treturn Token.stringify(element, language, o);\n\t\t}).join('');\n\t}\n\n\tvar env = {\n\t\ttype: o.type,\n\t\tcontent: Token.stringify(o.content, language, parent),\n\t\ttag: 'span',\n\t\tclasses: ['token', o.type],\n\t\tattributes: {},\n\t\tlanguage: language,\n\t\tparent: parent\n\t};\n\n\tif (env.type == 'comment') {\n\t\tenv.attributes['spellcheck'] = 'true';\n\t}\n\n\tif (o.alias) {\n\t\tvar aliases = _.util.type(o.alias) === 'Array' ? o.alias : [o.alias];\n\t\tArray.prototype.push.apply(env.classes, aliases);\n\t}\n\n\t_.hooks.run('wrap', env);\n\n\tvar attributes = Object.keys(env.attributes).map(function(name) {\n\t\treturn name + '=\"' + (env.attributes[name] || '').replace(/\"/g, '&quot;') + '\"';\n\t}).join(' ');\n\n\treturn '<' + env.tag + ' class=\"' + env.classes.join(' ') + '\"' + (attributes ? ' ' + attributes : '') + '>' + env.content + '</' + env.tag + '>';\n\n};\n\nif (!_self.document) {\n\tif (!_self.addEventListener) {\n\t\t// in Node.js\n\t\treturn _self.Prism;\n\t}\n \t// In worker\n\t_self.addEventListener('message', function(evt) {\n\t\tvar message = JSON.parse(evt.data),\n\t\t    lang = message.language,\n\t\t    code = message.code,\n\t\t    immediateClose = message.immediateClose;\n\n\t\t_self.postMessage(_.highlight(code, _.languages[lang], lang));\n\t\tif (immediateClose) {\n\t\t\t_self.close();\n\t\t}\n\t}, false);\n\n\treturn _self.Prism;\n}\n\n//Get current script and highlight\nvar script = document.currentScript || [].slice.call(document.getElementsByTagName(\"script\")).pop();\n\nif (script) {\n\t_.filename = script.src;\n\n\tif (document.addEventListener && !script.hasAttribute('data-manual')) {\n\t\tif(document.readyState !== \"loading\") {\n\t\t\tif (window.requestAnimationFrame) {\n\t\t\t\twindow.requestAnimationFrame(_.highlightAll);\n\t\t\t} else {\n\t\t\t\twindow.setTimeout(_.highlightAll, 16);\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tdocument.addEventListener('DOMContentLoaded', _.highlightAll);\n\t\t}\n\t}\n}\n\nreturn _self.Prism;\n\n})();\n\nif (typeof module !== 'undefined' && module.exports) {\n\tmodule.exports = Prism;\n}\n\n// hack for components to work correctly in node.js\nif (typeof global !== 'undefined') {\n\tglobal.Prism = Prism;\n}\n\n\n/* **********************************************\n     Begin prism-markup.js\n********************************************** */\n\nPrism.languages.markup = {\n\t'comment': /<!--[\\w\\W]*?-->/,\n\t'prolog': /<\\?[\\w\\W]+?\\?>/,\n\t'doctype': /<!DOCTYPE[\\w\\W]+?>/i,\n\t'cdata': /<!\\[CDATA\\[[\\w\\W]*?]]>/i,\n\t'tag': {\n\t\tpattern: /<\\/?(?!\\d)[^\\s>\\/=$<]+(?:\\s+[^\\s>\\/=]+(?:=(?:(\"|')(?:\\\\\\1|\\\\?(?!\\1)[\\w\\W])*\\1|[^\\s'\">=]+))?)*\\s*\\/?>/i,\n\t\tinside: {\n\t\t\t'tag': {\n\t\t\t\tpattern: /^<\\/?[^\\s>\\/]+/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /^<\\/?/,\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'attr-value': {\n\t\t\t\tpattern: /=(?:('|\")[\\w\\W]*?(\\1)|[^\\s>]+)/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /[=>\"']/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'punctuation': /\\/?>/,\n\t\t\t'attr-name': {\n\t\t\t\tpattern: /[^\\s>\\/]+/,\n\t\t\t\tinside: {\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t},\n\t'entity': /&#?[\\da-z]{1,8};/i\n};\n\n// Plugin to make entity title show the real entity, idea by Roman Komarov\nPrism.hooks.add('wrap', function(env) {\n\n\tif (env.type === 'entity') {\n\t\tenv.attributes['title'] = env.content.replace(/&amp;/, '&');\n\t}\n});\n\nPrism.languages.xml = Prism.languages.markup;\nPrism.languages.html = Prism.languages.markup;\nPrism.languages.mathml = Prism.languages.markup;\nPrism.languages.svg = Prism.languages.markup;\n\n\n/* **********************************************\n     Begin prism-css.js\n********************************************** */\n\nPrism.languages.css = {\n\t'comment': /\\/\\*[\\w\\W]*?\\*\\//,\n\t'atrule': {\n\t\tpattern: /@[\\w-]+?.*?(;|(?=\\s*\\{))/i,\n\t\tinside: {\n\t\t\t'rule': /@[\\w-]+/\n\t\t\t// See rest below\n\t\t}\n\t},\n\t'url': /url\\((?:([\"'])(\\\\(?:\\r\\n|[\\w\\W])|(?!\\1)[^\\\\\\r\\n])*\\1|.*?)\\)/i,\n\t'selector': /[^\\{\\}\\s][^\\{\\};]*?(?=\\s*\\{)/,\n\t'string': {\n\t\tpattern: /(\"|')(\\\\(?:\\r\\n|[\\w\\W])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'property': /(\\b|\\B)[\\w-]+(?=\\s*:)/i,\n\t'important': /\\B!important\\b/i,\n\t'function': /[-a-z0-9]+(?=\\()/i,\n\t'punctuation': /[(){};:]/\n};\n\nPrism.languages.css['atrule'].inside.rest = Prism.util.clone(Prism.languages.css);\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'style': {\n\t\t\tpattern: /(<style[\\w\\W]*?>)[\\w\\W]*?(?=<\\/style>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.css,\n\t\t\talias: 'language-css'\n\t\t}\n\t});\n\t\n\tPrism.languages.insertBefore('inside', 'attr-value', {\n\t\t'style-attr': {\n\t\t\tpattern: /\\s*style=(\"|').*?\\1/i,\n\t\t\tinside: {\n\t\t\t\t'attr-name': {\n\t\t\t\t\tpattern: /^\\s*style/i,\n\t\t\t\t\tinside: Prism.languages.markup.tag.inside\n\t\t\t\t},\n\t\t\t\t'punctuation': /^\\s*=\\s*['\"]|['\"]\\s*$/,\n\t\t\t\t'attr-value': {\n\t\t\t\t\tpattern: /.+/i,\n\t\t\t\t\tinside: Prism.languages.css\n\t\t\t\t}\n\t\t\t},\n\t\t\talias: 'language-css'\n\t\t}\n\t}, Prism.languages.markup.tag);\n}\n\n/* **********************************************\n     Begin prism-clike.js\n********************************************** */\n\nPrism.languages.clike = {\n\t'comment': [\n\t\t{\n\t\t\tpattern: /(^|[^\\\\])\\/\\*[\\w\\W]*?\\*\\//,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^\\\\:])\\/\\/.*/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'string': {\n\t\tpattern: /([\"'])(\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'class-name': {\n\t\tpattern: /((?:\\b(?:class|interface|extends|implements|trait|instanceof|new)\\s+)|(?:catch\\s+\\())[a-z0-9_\\.\\\\]+/i,\n\t\tlookbehind: true,\n\t\tinside: {\n\t\t\tpunctuation: /(\\.|\\\\)/\n\t\t}\n\t},\n\t'keyword': /\\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\\b/,\n\t'boolean': /\\b(true|false)\\b/,\n\t'function': /[a-z0-9_]+(?=\\()/i,\n\t'number': /\\b-?(?:0x[\\da-f]+|\\d*\\.?\\d+(?:e[+-]?\\d+)?)\\b/i,\n\t'operator': /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*|\\/|~|\\^|%/,\n\t'punctuation': /[{}[\\];(),.:]/\n};\n\n\n/* **********************************************\n     Begin prism-javascript.js\n********************************************** */\n\nPrism.languages.javascript = Prism.languages.extend('clike', {\n\t'keyword': /\\b(as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\\b/,\n\t'number': /\\b-?(0x[\\dA-Fa-f]+|0b[01]+|0o[0-7]+|\\d*\\.?\\d+([Ee][+-]?\\d+)?|NaN|Infinity)\\b/,\n\t// Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)\n\t'function': /[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*(?=\\()/i,\n\t'operator': /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*\\*?|\\/|~|\\^|%|\\.{3}/\n});\n\nPrism.languages.insertBefore('javascript', 'keyword', {\n\t'regex': {\n\t\tpattern: /(^|[^/])\\/(?!\\/)(\\[.+?]|\\\\.|[^/\\\\\\r\\n])+\\/[gimyu]{0,5}(?=\\s*($|[\\r\\n,.;})]))/,\n\t\tlookbehind: true,\n\t\tgreedy: true\n\t}\n});\n\nPrism.languages.insertBefore('javascript', 'string', {\n\t'template-string': {\n\t\tpattern: /`(?:\\\\\\\\|\\\\?[^\\\\])*?`/,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'interpolation': {\n\t\t\t\tpattern: /\\$\\{[^}]+\\}/,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation-punctuation': {\n\t\t\t\t\t\tpattern: /^\\$\\{|\\}$/,\n\t\t\t\t\t\talias: 'punctuation'\n\t\t\t\t\t},\n\t\t\t\t\trest: Prism.languages.javascript\n\t\t\t\t}\n\t\t\t},\n\t\t\t'string': /[\\s\\S]+/\n\t\t}\n\t}\n});\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'script': {\n\t\t\tpattern: /(<script[\\w\\W]*?>)[\\w\\W]*?(?=<\\/script>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript,\n\t\t\talias: 'language-javascript'\n\t\t}\n\t});\n}\n\nPrism.languages.js = Prism.languages.javascript;\n\n/* **********************************************\n     Begin prism-file-highlight.js\n********************************************** */\n\n(function () {\n\tif (typeof self === 'undefined' || !self.Prism || !self.document || !document.querySelector) {\n\t\treturn;\n\t}\n\n\tself.Prism.fileHighlight = function() {\n\n\t\tvar Extensions = {\n\t\t\t'js': 'javascript',\n\t\t\t'py': 'python',\n\t\t\t'rb': 'ruby',\n\t\t\t'ps1': 'powershell',\n\t\t\t'psm1': 'powershell',\n\t\t\t'sh': 'bash',\n\t\t\t'bat': 'batch',\n\t\t\t'h': 'c',\n\t\t\t'tex': 'latex'\n\t\t};\n\n\t\tif(Array.prototype.forEach) { // Check to prevent error in IE8\n\t\t\tArray.prototype.slice.call(document.querySelectorAll('pre[data-src]')).forEach(function (pre) {\n\t\t\t\tvar src = pre.getAttribute('data-src');\n\n\t\t\t\tvar language, parent = pre;\n\t\t\t\tvar lang = /\\blang(?:uage)?-(?!\\*)(\\w+)\\b/i;\n\t\t\t\twhile (parent && !lang.test(parent.className)) {\n\t\t\t\t\tparent = parent.parentNode;\n\t\t\t\t}\n\n\t\t\t\tif (parent) {\n\t\t\t\t\tlanguage = (pre.className.match(lang) || [, ''])[1];\n\t\t\t\t}\n\n\t\t\t\tif (!language) {\n\t\t\t\t\tvar extension = (src.match(/\\.(\\w+)$/) || [, ''])[1];\n\t\t\t\t\tlanguage = Extensions[extension] || extension;\n\t\t\t\t}\n\n\t\t\t\tvar code = document.createElement('code');\n\t\t\t\tcode.className = 'language-' + language;\n\n\t\t\t\tpre.textContent = '';\n\n\t\t\t\tcode.textContent = 'Loading…';\n\n\t\t\t\tpre.appendChild(code);\n\n\t\t\t\tvar xhr = new XMLHttpRequest();\n\n\t\t\t\txhr.open('GET', src, true);\n\n\t\t\t\txhr.onreadystatechange = function () {\n\t\t\t\t\tif (xhr.readyState == 4) {\n\n\t\t\t\t\t\tif (xhr.status < 400 && xhr.responseText) {\n\t\t\t\t\t\t\tcode.textContent = xhr.responseText;\n\n\t\t\t\t\t\t\tPrism.highlightElement(code);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (xhr.status >= 400) {\n\t\t\t\t\t\t\tcode.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tcode.textContent = '✖ Error: File does not exist or is empty';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\txhr.send(null);\n\t\t\t});\n\t\t}\n\n\t};\n\n\tdocument.addEventListener('DOMContentLoaded', self.Prism.fileHighlight);\n\n})();\n"]}