diff --git a/README.md b/README.md new file mode 100644 index 0000000..f8601b3 --- /dev/null +++ b/README.md @@ -0,0 +1,5 @@ +# Distill Templates + +## Testing + +Run `yarn test`. That's it. diff --git a/dist/template.js b/dist/template.js new file mode 100644 index 0000000..6a42a66 --- /dev/null +++ b/dist/template.js @@ -0,0 +1,6625 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : + typeof define === 'function' && define.amd ? define(['exports'], factory) : + (factory((global.dl = global.dl || {}))); +}(this, (function (exports) { 'use strict'; + +var html = function(dom) { + if (!dom.querySelector("html").getAttribute("lang")) { + dom.querySelector("html").setAttribute("lang", "en"); + } + + var head = dom.querySelector("head"); + + if (!dom.querySelector("meta[charset]")) { + var meta = dom.createElement("meta"); + meta.setAttribute("charset", "utf-8"); + head.appendChild(meta); + } + if (!dom.querySelector("meta[name=viewport]")) { + var meta$1 = dom.createElement("meta"); + meta$1.setAttribute("name", "viewport"); + meta$1.setAttribute("content", "width=device-width, initial-scale=1"); + head.appendChild(meta$1); + } +}; + +var base = "html {\n font: 400 15px/1.55em -apple-system, BlinkMacSystemFont, \"Roboto\", sans-serif;\n}\n\nhtml {\n -ms-text-size-adjust: 100%;\n -webkit-text-size-adjust: 100%;\n text-size-adjust: 100%;\n}\nbody {\n margin: 0;\n}\n\n/*\nhtml, body, div, span, applet, object, iframe,\nh1, h2, h3, h4, h5, h6, p, blockquote, pre,\na, abbr, acronym, address, big, cite, code,\ndel, dfn, em, img, ins, kbd, q, s, samp,\nsmall, strike, strong, sub, sup, tt, var,\nb, u, i, center,\ndl, dt, dd, ol, ul, li,\nfieldset, form, label, legend,\ntable, caption, tbody, tfoot, thead, tr, th, td,\narticle, aside, canvas, details, embed,\nfigure, figcaption, footer, header, hgroup,\nmenu, nav, output, ruby, section, summary,\ntime, mark, audio, video {\n\tmargin: 0;\n\tpadding: 0;\n\tborder: 0;\n\tfont-size: 100%;\n\tfont: inherit;\n\tvertical-align: baseline;\n}\narticle, aside, details, figcaption, figure,\nfooter, header, hgroup, menu, nav, section {\n\tdisplay: block;\n}\nbody {\n\tline-height: 1;\n}\nol, ul {\n\tlist-style: none;\n}\nblockquote, q {\n\tquotes: none;\n}\nblockquote:before, blockquote:after,\nq:before, q:after {\n\tcontent: '';\n\tcontent: none;\n}\ntable {\n\tborder-collapse: collapse;\n\tborder-spacing: 0;\n}*/\n"; + +var layout = ".l-body,\n.l-page,\ndt-article > * {\n margin-left: 24px;\n margin-right: 24px;\n box-sizing: border-box;\n}\n\n@media(min-width: 768px) {\n .l-body,\n .l-page,\n dt-article > * {\n margin-left: 72px;\n margin-right: 72px;\n }\n}\n\n@media(min-width: 1080px) {\n .l-body,\n dt-article > * {\n margin-left: calc(50% - 984px / 2);\n width: 648px;\n }\n .l-body-outset,\n dt-article .l-body-outset {\n margin-left: calc(50% - 984px / 2 - 24px);\n width: calc(648px + 48px);\n }\n .l-middle,\n dt-article .l-middle {\n width: 816px;\n margin-left: calc(50% - 984px / 2);\n }\n .l-page,\n dt-article .l-page {\n width: 984px;\n margin-left: auto;\n margin-right: auto;\n }\n .l-page-outset,\n dt-article .l-page-outset {\n width: 1080px;\n margin-left: auto;\n margin-right: auto;\n }\n .l-screen,\n dt-article .l-screen {\n margin-left: auto;\n margin-right: auto;\n width: auto;\n }\n .l-screen-inset,\n dt-article .l-screen-inset {\n margin-left: 24px;\n margin-right: 24px;\n width: auto;\n }\n .l-gutter,\n dt-article .l-gutter {\n clear: both;\n float: right;\n margin-top: 0;\n margin-left: 24px;\n margin-right: calc((100vw - 960px) / 2);\n width: calc((984px - 648px) / 2 - 24px);\n }\n /* Side */\n .side.l-body,\n dt-article .side.l-body {\n clear: both;\n float: right;\n margin-top: 0;\n margin-left: 48px;\n margin-right: calc((100vw - 984px + 648px) / 2);\n width: calc(648px / 2 - 24px);\n }\n .side.l-body-outset,\n dt-article .side.l-body-outset {\n clear: both;\n float: right;\n margin-top: 0;\n margin-left: 48px;\n margin-right: calc((100vw - 984px + 648px - 48px) / 2);\n width: calc(648px / 2 - 48px + 24px);\n }\n .side.l-page,\n dt-article .side.l-page {\n clear: both;\n float: right;\n margin-top: 0;\n margin-left: 48px;\n margin-right: calc((100vw - 984px) / 2);\n width: calc(960px / 2 - 48px);\n }\n}\n"; + +var article = "dt-article {\n color: rgba(0, 0, 0, 0.8);\n font: 15px/1.55em -apple-system, BlinkMacSystemFont, \"Roboto\", sans-serif;\n}\n\n@media(min-width: 1024px) {\n dt-article {\n font-size: 20px;\n }\n}\n\ndt-article h1 {\n font-weight: 700;\n font-size: 32px;\n line-height: 1.1em;\n /*-webkit-font-smoothing: antialiased;*/\n}\n\n@media(min-width: 1024px) {\n dt-article h1 {\n font-size: 50px;\n margin-bottom: 12px;\n letter-spacing: -0.025em;\n }\n}\n\n@media(min-width: 1024px) {\n dt-article > h1:first-of-type {\n margin-top: 100px;\n }\n}\n\ndt-article h2 {\n font-weight: 400;\n font-size: 28px;\n line-height: 1.25em;\n margin-top: 12px;\n margin-bottom: 24px;\n}\n\ndt-article h1 + h2 {\n padding-bottom: 48px;\n margin-bottom: 48px;\n border-bottom: 1px solid rgba(0, 0, 0, 0.1);\n}\n\ndt-article h3 {\n font-weight: 700;\n font-size: 20px;\n line-height: 1.4em;\n margin-top: 24px;\n margin-bottom: 24px;\n}\n\ndt-article h4 {\n font-weight: 600;\n text-transform: uppercase;\n font-size: 14px;\n line-height: 1.4em;\n}\n\ndt-article a {\n color: inherit;\n}\n\ndt-article p {\n margin-bottom: 24px;\n -webkit-font-smoothing: antialiased;\n /*font-family: Georgia, serif;*/\n}\n\ndt-article p a {\n /*text-decoration: none;*/\n /*background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.25) 50%, rgba(0, 0, 0, 0) 50%);*/\n /*background-repeat: repeat-x;*/\n /*background-size: 2px 1em;*/\n /*background-position: 0 1.25em;*/\n}\n\ndt-article p .link {\n text-decoration: underline;\n cursor: pointer;\n}\n\n\n\ndt-article ul {\n padding-left: 20px;\n}\n\ndt-article li {\n /*margin-bottom: 24px;*/\n}\n\ndt-article pre {\n font-size: 14px;\n margin-bottom: 20px;\n}\n\n\ndt-article hr {\n border: none;\n border-bottom: 1px solid rgba(0, 0, 0, 0.2);\n margin-top: 60px;\n margin-bottom: 60px;\n}\n\ndt-article section {\n margin-top: 60px;\n margin-bottom: 60px;\n}\n\n\n/* Figure */\n\ndt-article figure {\n position: relative;\n margin-top: 30px;\n margin-bottom: 30px;\n}\n\n@media(min-width: 1024px) {\n dt-article figure {\n margin-top: 48px;\n margin-bottom: 48px;\n }\n}\n\ndt-article figure img {\n width: 100%;\n}\n\ndt-article figure svg text,\ndt-article figure svg tspan {\n}\n\ndt-article figure figcaption {\n color: rgba(0, 0, 0, 0.6);\n font-size: 12px;\n line-height: 1.5em;\n}\n@media(min-width: 1024px) {\n dt-article figure figcaption {\n font-size: 13px;\n }\n}\n\ndt-article figure.external img {\n background: white;\n border: 1px solid rgba(0, 0, 0, 0.1);\n box-shadow: 0 1px 8px rgba(0, 0, 0, 0.1);\n padding: 18px;\n box-sizing: border-box;\n}\n\ndt-article figure figcaption a {\n color: rgba(0, 0, 0, 0.6);\n}\n\n/*dt-article figure figcaption::before {\n position: relative;\n display: block;\n top: -20px;\n content: \"\";\n width: 25px;\n border-top: 1px solid rgba(0, 0, 0, 0.3);\n}*/\n\ndt-article span.equation-mimic {\n font-family: georgia;\n font-size: 115%;\n font-style: italic;\n}\n\ndt-article figure figcaption b {\n font-weight: 600;\n color: rgba(0, 0, 0, 1.0);\n}\n\ndt-article > dt-code {\n display: block;\n}\n"; + +var code = "/**\n * prism.js default theme for JavaScript, CSS and HTML\n * Based on dabblet (http://dabblet.com)\n * @author Lea Verou\n */\n\n code {\n white-space:pre-wrap;\n background: rgba(0, 0, 0, 0.04);\n border-radius: 2px;\n padding: 4px 7px;\n font-size: 15px;\n color: rgba(0, 0, 0, 0.6);\n }\n\n pre code {\n display: block;\n background: white;\n border: 1px solid rgba(0, 0, 0, 0.08);\n box-shadow: 0 1px 4px rgba(0, 0, 0, 0.05);\n }\n\n\ncode[class*=\"language-\"],\npre[class*=\"language-\"] {\n\tcolor: black;\n\ttext-shadow: 0 1px white;\n\tfont-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;\n\ttext-align: left;\n\twhite-space: pre;\n\tword-spacing: normal;\n\tword-break: normal;\n\tword-wrap: normal;\n\tline-height: 1.5;\n\n\t-moz-tab-size: 4;\n\t-o-tab-size: 4;\n\ttab-size: 4;\n\n\t-webkit-hyphens: none;\n\t-moz-hyphens: none;\n\t-ms-hyphens: none;\n\thyphens: none;\n}\n\npre[class*=\"language-\"]::-moz-selection, pre[class*=\"language-\"] ::-moz-selection,\ncode[class*=\"language-\"]::-moz-selection, code[class*=\"language-\"] ::-moz-selection {\n\ttext-shadow: none;\n\tbackground: #b3d4fc;\n}\n\npre[class*=\"language-\"]::selection, pre[class*=\"language-\"] ::selection,\ncode[class*=\"language-\"]::selection, code[class*=\"language-\"] ::selection {\n\ttext-shadow: none;\n\tbackground: #b3d4fc;\n}\n\n@media print {\n\tcode[class*=\"language-\"],\n\tpre[class*=\"language-\"] {\n\t\ttext-shadow: none;\n\t}\n}\n\n/* Code blocks */\npre[class*=\"language-\"] {\n\toverflow: auto;\n}\n\n:not(pre) > code[class*=\"language-\"],\npre[class*=\"language-\"] {\n}\n\n/* Inline code */\n:not(pre) > code[class*=\"language-\"] {\n\twhite-space: normal;\n}\n\n.token.comment,\n.token.prolog,\n.token.doctype,\n.token.cdata {\n\tcolor: slategray;\n}\n\n.token.punctuation {\n\tcolor: #999;\n}\n\n.namespace {\n\topacity: .7;\n}\n\n.token.property,\n.token.tag,\n.token.boolean,\n.token.number,\n.token.constant,\n.token.symbol,\n.token.deleted {\n\tcolor: #905;\n}\n\n.token.selector,\n.token.attr-name,\n.token.string,\n.token.char,\n.token.builtin,\n.token.inserted {\n\tcolor: #690;\n}\n\n.token.operator,\n.token.entity,\n.token.url,\n.language-css .token.string,\n.style .token.string {\n\tcolor: #a67f59;\n\tbackground: hsla(0, 0%, 100%, .5);\n}\n\n.token.atrule,\n.token.attr-value,\n.token.keyword {\n\tcolor: #07a;\n}\n\n.token.function {\n\tcolor: #DD4A68;\n}\n\n.token.regex,\n.token.important,\n.token.variable {\n\tcolor: #e90;\n}\n\n.token.important,\n.token.bold {\n\tfont-weight: bold;\n}\n.token.italic {\n\tfont-style: italic;\n}\n\n.token.entity {\n\tcursor: help;\n}\n"; + +var styles = function(dom) { + var s = dom.createElement("style"); + s.textContent = base + layout + article + code; + dom.querySelector("head").appendChild(s); +}; + +function isNothing(subject) { + return (typeof subject === 'undefined') || (subject === null); +} + + +function isObject(subject) { + return (typeof subject === 'object') && (subject !== null); +} + + +function toArray(sequence) { + if (Array.isArray(sequence)) { return sequence; } + else if (isNothing(sequence)) { return []; } + + return [ sequence ]; +} + + +function extend(target, source) { + var index, length, key, sourceKeys; + + if (source) { + sourceKeys = Object.keys(source); + + for (index = 0, length = sourceKeys.length; index < length; index += 1) { + key = sourceKeys[index]; + target[key] = source[key]; + } + } + + return target; +} + + +function repeat(string, count) { + var result = '', cycle; + + for (cycle = 0; cycle < count; cycle += 1) { + result += string; + } + + return result; +} + + +function isNegativeZero(number) { + return (number === 0) && (Number.NEGATIVE_INFINITY === 1 / number); +} + + +var isNothing_1 = isNothing; +var isObject_1 = isObject; +var toArray_1 = toArray; +var repeat_1 = repeat; +var isNegativeZero_1 = isNegativeZero; +var extend_1 = extend; + +var common$1 = { + isNothing: isNothing_1, + isObject: isObject_1, + toArray: toArray_1, + repeat: repeat_1, + isNegativeZero: isNegativeZero_1, + extend: extend_1 +}; + +// YAML error class. http://stackoverflow.com/questions/8458984 +// +function YAMLException$2(reason, mark) { + // Super constructor + Error.call(this); + + // Include stack trace in error object + if (Error.captureStackTrace) { + // Chrome and NodeJS + Error.captureStackTrace(this, this.constructor); + } else { + // FF, IE 10+ and Safari 6+. Fallback for others + this.stack = (new Error()).stack || ''; + } + + this.name = 'YAMLException'; + this.reason = reason; + this.mark = mark; + this.message = (this.reason || '(unknown reason)') + (this.mark ? ' ' + this.mark.toString() : ''); +} + + +// Inherit from Error +YAMLException$2.prototype = Object.create(Error.prototype); +YAMLException$2.prototype.constructor = YAMLException$2; + + +YAMLException$2.prototype.toString = function toString(compact) { + var result = this.name + ': '; + + result += this.reason || '(unknown reason)'; + + if (!compact && this.mark) { + result += ' ' + this.mark.toString(); + } + + return result; +}; + + +var exception = YAMLException$2; + +var common$3 = common$1; + + +function Mark$1(name, buffer, position, line, column) { + this.name = name; + this.buffer = buffer; + this.position = position; + this.line = line; + this.column = column; +} + + +Mark$1.prototype.getSnippet = function getSnippet(indent, maxLength) { + var this$1 = this; + + var head, start, tail, end, snippet; + + if (!this.buffer) { return null; } + + indent = indent || 4; + maxLength = maxLength || 75; + + head = ''; + start = this.position; + + while (start > 0 && '\x00\r\n\x85\u2028\u2029'.indexOf(this.buffer.charAt(start - 1)) === -1) { + start -= 1; + if (this$1.position - start > (maxLength / 2 - 1)) { + head = ' ... '; + start += 5; + break; + } + } + + tail = ''; + end = this.position; + + while (end < this.buffer.length && '\x00\r\n\x85\u2028\u2029'.indexOf(this.buffer.charAt(end)) === -1) { + end += 1; + if (end - this$1.position > (maxLength / 2 - 1)) { + tail = ' ... '; + end -= 5; + break; + } + } + + snippet = this.buffer.slice(start, end); + + return common$3.repeat(' ', indent) + head + snippet + tail + '\n' + + common$3.repeat(' ', indent + this.position - start + head.length) + '^'; +}; + + +Mark$1.prototype.toString = function toString(compact) { + var snippet, where = ''; + + if (this.name) { + where += 'in "' + this.name + '" '; + } + + where += 'at line ' + (this.line + 1) + ', column ' + (this.column + 1); + + if (!compact) { + snippet = this.getSnippet(); + + if (snippet) { + where += ':\n' + snippet; + } + } + + return where; +}; + + +var mark = Mark$1; + +var YAMLException$4 = exception; + +var TYPE_CONSTRUCTOR_OPTIONS = [ + 'kind', + 'resolve', + 'construct', + 'instanceOf', + 'predicate', + 'represent', + 'defaultStyle', + 'styleAliases' +]; + +var YAML_NODE_KINDS = [ + 'scalar', + 'sequence', + 'mapping' +]; + +function compileStyleAliases(map) { + var result = {}; + + if (map !== null) { + Object.keys(map).forEach(function (style) { + map[style].forEach(function (alias) { + result[String(alias)] = style; + }); + }); + } + + return result; +} + +function Type$2(tag, options) { + options = options || {}; + + Object.keys(options).forEach(function (name) { + if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) { + throw new YAMLException$4('Unknown option "' + name + '" is met in definition of "' + tag + '" YAML type.'); + } + }); + + // TODO: Add tag format check. + this.tag = tag; + this.kind = options['kind'] || null; + this.resolve = options['resolve'] || function () { return true; }; + this.construct = options['construct'] || function (data) { return data; }; + this.instanceOf = options['instanceOf'] || null; + this.predicate = options['predicate'] || null; + this.represent = options['represent'] || null; + this.defaultStyle = options['defaultStyle'] || null; + this.styleAliases = compileStyleAliases(options['styleAliases'] || null); + + if (YAML_NODE_KINDS.indexOf(this.kind) === -1) { + throw new YAMLException$4('Unknown kind "' + this.kind + '" is specified for "' + tag + '" YAML type.'); + } +} + +var type = Type$2; + +var common$4 = common$1; +var YAMLException$3 = exception; +var Type$1 = type; + + +function compileList(schema, name, result) { + var exclude = []; + + schema.include.forEach(function (includedSchema) { + result = compileList(includedSchema, name, result); + }); + + schema[name].forEach(function (currentType) { + result.forEach(function (previousType, previousIndex) { + if (previousType.tag === currentType.tag && previousType.kind === currentType.kind) { + exclude.push(previousIndex); + } + }); + + result.push(currentType); + }); + + return result.filter(function (type$$1, index) { + return exclude.indexOf(index) === -1; + }); +} + + +function compileMap(/* lists... */) { + var arguments$1 = arguments; + + var result = { + scalar: {}, + sequence: {}, + mapping: {}, + fallback: {} + }, index, length; + + function collectType(type$$1) { + result[type$$1.kind][type$$1.tag] = result['fallback'][type$$1.tag] = type$$1; + } + + for (index = 0, length = arguments.length; index < length; index += 1) { + arguments$1[index].forEach(collectType); + } + return result; +} + + +function Schema$2(definition) { + this.include = definition.include || []; + this.implicit = definition.implicit || []; + this.explicit = definition.explicit || []; + + this.implicit.forEach(function (type$$1) { + if (type$$1.loadKind && type$$1.loadKind !== 'scalar') { + throw new YAMLException$3('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.'); + } + }); + + this.compiledImplicit = compileList(this, 'implicit', []); + this.compiledExplicit = compileList(this, 'explicit', []); + this.compiledTypeMap = compileMap(this.compiledImplicit, this.compiledExplicit); +} + + +Schema$2.DEFAULT = null; + + +Schema$2.create = function createSchema() { + var schemas, types; + + switch (arguments.length) { + case 1: + schemas = Schema$2.DEFAULT; + types = arguments[0]; + break; + + case 2: + schemas = arguments[0]; + types = arguments[1]; + break; + + default: + throw new YAMLException$3('Wrong number of arguments for Schema.create function'); + } + + schemas = common$4.toArray(schemas); + types = common$4.toArray(types); + + if (!schemas.every(function (schema) { return schema instanceof Schema$2; })) { + throw new YAMLException$3('Specified list of super schemas (or a single Schema object) contains a non-Schema object.'); + } + + if (!types.every(function (type$$1) { return type$$1 instanceof Type$1; })) { + throw new YAMLException$3('Specified list of YAML types (or a single Type object) contains a non-Type object.'); + } + + return new Schema$2({ + include: schemas, + explicit: types + }); +}; + + +var schema = Schema$2; + +var Type$3 = type; + +var str = new Type$3('tag:yaml.org,2002:str', { + kind: 'scalar', + construct: function (data) { return data !== null ? data : ''; } +}); + +var Type$4 = type; + +var seq = new Type$4('tag:yaml.org,2002:seq', { + kind: 'sequence', + construct: function (data) { return data !== null ? data : []; } +}); + +var Type$5 = type; + +var map = new Type$5('tag:yaml.org,2002:map', { + kind: 'mapping', + construct: function (data) { return data !== null ? data : {}; } +}); + +var Schema$5 = schema; + + +var failsafe = new Schema$5({ + explicit: [ + str, + seq, + map + ] +}); + +var Type$6 = type; + +function resolveYamlNull(data) { + if (data === null) { return true; } + + var max = data.length; + + return (max === 1 && data === '~') || + (max === 4 && (data === 'null' || data === 'Null' || data === 'NULL')); +} + +function constructYamlNull() { + return null; +} + +function isNull(object) { + return object === null; +} + +var _null = new Type$6('tag:yaml.org,2002:null', { + kind: 'scalar', + resolve: resolveYamlNull, + construct: constructYamlNull, + predicate: isNull, + represent: { + canonical: function () { return '~'; }, + lowercase: function () { return 'null'; }, + uppercase: function () { return 'NULL'; }, + camelcase: function () { return 'Null'; } + }, + defaultStyle: 'lowercase' +}); + +var Type$7 = type; + +function resolveYamlBoolean(data) { + if (data === null) { return false; } + + var max = data.length; + + return (max === 4 && (data === 'true' || data === 'True' || data === 'TRUE')) || + (max === 5 && (data === 'false' || data === 'False' || data === 'FALSE')); +} + +function constructYamlBoolean(data) { + return data === 'true' || + data === 'True' || + data === 'TRUE'; +} + +function isBoolean(object) { + return Object.prototype.toString.call(object) === '[object Boolean]'; +} + +var bool = new Type$7('tag:yaml.org,2002:bool', { + kind: 'scalar', + resolve: resolveYamlBoolean, + construct: constructYamlBoolean, + predicate: isBoolean, + represent: { + lowercase: function (object) { return object ? 'true' : 'false'; }, + uppercase: function (object) { return object ? 'TRUE' : 'FALSE'; }, + camelcase: function (object) { return object ? 'True' : 'False'; } + }, + defaultStyle: 'lowercase' +}); + +var common$5 = common$1; +var Type$8 = type; + +function isHexCode(c) { + return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) || + ((0x41/* A */ <= c) && (c <= 0x46/* F */)) || + ((0x61/* a */ <= c) && (c <= 0x66/* f */)); +} + +function isOctCode(c) { + return ((0x30/* 0 */ <= c) && (c <= 0x37/* 7 */)); +} + +function isDecCode(c) { + return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)); +} + +function resolveYamlInteger(data) { + if (data === null) { return false; } + + var max = data.length, + index = 0, + hasDigits = false, + ch; + + if (!max) { return false; } + + ch = data[index]; + + // sign + if (ch === '-' || ch === '+') { + ch = data[++index]; + } + + if (ch === '0') { + // 0 + if (index + 1 === max) { return true; } + ch = data[++index]; + + // base 2, base 8, base 16 + + if (ch === 'b') { + // base 2 + index++; + + for (; index < max; index++) { + ch = data[index]; + if (ch === '_') { continue; } + if (ch !== '0' && ch !== '1') { return false; } + hasDigits = true; + } + return hasDigits; + } + + + if (ch === 'x') { + // base 16 + index++; + + for (; index < max; index++) { + ch = data[index]; + if (ch === '_') { continue; } + if (!isHexCode(data.charCodeAt(index))) { return false; } + hasDigits = true; + } + return hasDigits; + } + + // base 8 + for (; index < max; index++) { + ch = data[index]; + if (ch === '_') { continue; } + if (!isOctCode(data.charCodeAt(index))) { return false; } + hasDigits = true; + } + return hasDigits; + } + + // base 10 (except 0) or base 60 + + for (; index < max; index++) { + ch = data[index]; + if (ch === '_') { continue; } + if (ch === ':') { break; } + if (!isDecCode(data.charCodeAt(index))) { + return false; + } + hasDigits = true; + } + + if (!hasDigits) { return false; } + + // if !base60 - done; + if (ch !== ':') { return true; } + + // base60 almost not used, no needs to optimize + return /^(:[0-5]?[0-9])+$/.test(data.slice(index)); +} + +function constructYamlInteger(data) { + var value = data, sign = 1, ch, base, digits = []; + + if (value.indexOf('_') !== -1) { + value = value.replace(/_/g, ''); + } + + ch = value[0]; + + if (ch === '-' || ch === '+') { + if (ch === '-') { sign = -1; } + value = value.slice(1); + ch = value[0]; + } + + if (value === '0') { return 0; } + + if (ch === '0') { + if (value[1] === 'b') { return sign * parseInt(value.slice(2), 2); } + if (value[1] === 'x') { return sign * parseInt(value, 16); } + return sign * parseInt(value, 8); + } + + if (value.indexOf(':') !== -1) { + value.split(':').forEach(function (v) { + digits.unshift(parseInt(v, 10)); + }); + + value = 0; + base = 1; + + digits.forEach(function (d) { + value += (d * base); + base *= 60; + }); + + return sign * value; + + } + + return sign * parseInt(value, 10); +} + +function isInteger(object) { + return (Object.prototype.toString.call(object)) === '[object Number]' && + (object % 1 === 0 && !common$5.isNegativeZero(object)); +} + +var int_1 = new Type$8('tag:yaml.org,2002:int', { + kind: 'scalar', + resolve: resolveYamlInteger, + construct: constructYamlInteger, + predicate: isInteger, + represent: { + binary: function (object) { return '0b' + object.toString(2); }, + octal: function (object) { return '0' + object.toString(8); }, + decimal: function (object) { return object.toString(10); }, + hexadecimal: function (object) { return '0x' + object.toString(16).toUpperCase(); } + }, + defaultStyle: 'decimal', + styleAliases: { + binary: [ 2, 'bin' ], + octal: [ 8, 'oct' ], + decimal: [ 10, 'dec' ], + hexadecimal: [ 16, 'hex' ] + } +}); + +var common$6 = common$1; +var Type$9 = type; + +var YAML_FLOAT_PATTERN = new RegExp( + '^(?:[-+]?(?:[0-9][0-9_]*)\\.[0-9_]*(?:[eE][-+][0-9]+)?' + + '|\\.[0-9_]+(?:[eE][-+][0-9]+)?' + + '|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*' + + '|[-+]?\\.(?:inf|Inf|INF)' + + '|\\.(?:nan|NaN|NAN))$'); + +function resolveYamlFloat(data) { + if (data === null) { return false; } + + if (!YAML_FLOAT_PATTERN.test(data)) { return false; } + + return true; +} + +function constructYamlFloat(data) { + var value, sign, base, digits; + + value = data.replace(/_/g, '').toLowerCase(); + sign = value[0] === '-' ? -1 : 1; + digits = []; + + if ('+-'.indexOf(value[0]) >= 0) { + value = value.slice(1); + } + + if (value === '.inf') { + return (sign === 1) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY; + + } else if (value === '.nan') { + return NaN; + + } else if (value.indexOf(':') >= 0) { + value.split(':').forEach(function (v) { + digits.unshift(parseFloat(v, 10)); + }); + + value = 0.0; + base = 1; + + digits.forEach(function (d) { + value += d * base; + base *= 60; + }); + + return sign * value; + + } + return sign * parseFloat(value, 10); +} + + +var SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/; + +function representYamlFloat(object, style) { + var res; + + if (isNaN(object)) { + switch (style) { + case 'lowercase': return '.nan'; + case 'uppercase': return '.NAN'; + case 'camelcase': return '.NaN'; + } + } else if (Number.POSITIVE_INFINITY === object) { + switch (style) { + case 'lowercase': return '.inf'; + case 'uppercase': return '.INF'; + case 'camelcase': return '.Inf'; + } + } else if (Number.NEGATIVE_INFINITY === object) { + switch (style) { + case 'lowercase': return '-.inf'; + case 'uppercase': return '-.INF'; + case 'camelcase': return '-.Inf'; + } + } else if (common$6.isNegativeZero(object)) { + return '-0.0'; + } + + res = object.toString(10); + + // JS stringifier can build scientific format without dots: 5e-100, + // while YAML requres dot: 5.e-100. Fix it with simple hack + + return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res; +} + +function isFloat(object) { + return (Object.prototype.toString.call(object) === '[object Number]') && + (object % 1 !== 0 || common$6.isNegativeZero(object)); +} + +var float_1 = new Type$9('tag:yaml.org,2002:float', { + kind: 'scalar', + resolve: resolveYamlFloat, + construct: constructYamlFloat, + predicate: isFloat, + represent: representYamlFloat, + defaultStyle: 'lowercase' +}); + +var Schema$4 = schema; + + +var json = new Schema$4({ + include: [ + failsafe + ], + implicit: [ + _null, + bool, + int_1, + float_1 + ] +}); + +var Schema$3 = schema; + + +var core = new Schema$3({ + include: [ + json + ] +}); + +var Type$10 = type; + +var YAML_DATE_REGEXP = new RegExp( + '^([0-9][0-9][0-9][0-9])' + // [1] year + '-([0-9][0-9])' + // [2] month + '-([0-9][0-9])$'); // [3] day + +var YAML_TIMESTAMP_REGEXP = new RegExp( + '^([0-9][0-9][0-9][0-9])' + // [1] year + '-([0-9][0-9]?)' + // [2] month + '-([0-9][0-9]?)' + // [3] day + '(?:[Tt]|[ \\t]+)' + // ... + '([0-9][0-9]?)' + // [4] hour + ':([0-9][0-9])' + // [5] minute + ':([0-9][0-9])' + // [6] second + '(?:\\.([0-9]*))?' + // [7] fraction + '(?:[ \\t]*(Z|([-+])([0-9][0-9]?)' + // [8] tz [9] tz_sign [10] tz_hour + '(?::([0-9][0-9]))?))?$'); // [11] tz_minute + +function resolveYamlTimestamp(data) { + if (data === null) { return false; } + if (YAML_DATE_REGEXP.exec(data) !== null) { return true; } + if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) { return true; } + return false; +} + +function constructYamlTimestamp(data) { + var match, year, month, day, hour, minute, second, fraction = 0, + delta = null, tz_hour, tz_minute, date; + + match = YAML_DATE_REGEXP.exec(data); + if (match === null) { match = YAML_TIMESTAMP_REGEXP.exec(data); } + + if (match === null) { throw new Error('Date resolve error'); } + + // match: [1] year [2] month [3] day + + year = +(match[1]); + month = +(match[2]) - 1; // JS month starts with 0 + day = +(match[3]); + + if (!match[4]) { // no hour + return new Date(Date.UTC(year, month, day)); + } + + // match: [4] hour [5] minute [6] second [7] fraction + + hour = +(match[4]); + minute = +(match[5]); + second = +(match[6]); + + if (match[7]) { + fraction = match[7].slice(0, 3); + while (fraction.length < 3) { // milli-seconds + fraction += '0'; + } + fraction = +fraction; + } + + // match: [8] tz [9] tz_sign [10] tz_hour [11] tz_minute + + if (match[9]) { + tz_hour = +(match[10]); + tz_minute = +(match[11] || 0); + delta = (tz_hour * 60 + tz_minute) * 60000; // delta in mili-seconds + if (match[9] === '-') { delta = -delta; } + } + + date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction)); + + if (delta) { date.setTime(date.getTime() - delta); } + + return date; +} + +function representYamlTimestamp(object /*, style*/) { + return object.toISOString(); +} + +var timestamp = new Type$10('tag:yaml.org,2002:timestamp', { + kind: 'scalar', + resolve: resolveYamlTimestamp, + construct: constructYamlTimestamp, + instanceOf: Date, + represent: representYamlTimestamp +}); + +var Type$11 = type; + +function resolveYamlMerge(data) { + return data === '<<' || data === null; +} + +var merge = new Type$11('tag:yaml.org,2002:merge', { + kind: 'scalar', + resolve: resolveYamlMerge +}); + +var commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +function commonjsRequire () { + throw new Error('Dynamic requires are not currently supported by rollup-plugin-commonjs'); +} + + + +function createCommonjsModule(fn, module) { + return module = { exports: {} }, fn(module, module.exports), module.exports; +} + +var NodeBuffer; + +try { + // A trick for browserified version, to not include `Buffer` shim + var _require = commonjsRequire; + NodeBuffer = _require('buffer').Buffer; +} catch (__) {} + +var Type$12 = type; + + +// [ 64, 65, 66 ] -> [ padding, CR, LF ] +var BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r'; + + +function resolveYamlBinary(data) { + if (data === null) { return false; } + + var code, idx, bitlen = 0, max = data.length, map = BASE64_MAP; + + // Convert one by one. + for (idx = 0; idx < max; idx++) { + code = map.indexOf(data.charAt(idx)); + + // Skip CR/LF + if (code > 64) { continue; } + + // Fail on illegal characters + if (code < 0) { return false; } + + bitlen += 6; + } + + // If there are any bits left, source was corrupted + return (bitlen % 8) === 0; +} + +function constructYamlBinary(data) { + var idx, tailbits, + input = data.replace(/[\r\n=]/g, ''), // remove CR/LF & padding to simplify scan + max = input.length, + map = BASE64_MAP, + bits = 0, + result = []; + + // Collect by 6*4 bits (3 bytes) + + for (idx = 0; idx < max; idx++) { + if ((idx % 4 === 0) && idx) { + result.push((bits >> 16) & 0xFF); + result.push((bits >> 8) & 0xFF); + result.push(bits & 0xFF); + } + + bits = (bits << 6) | map.indexOf(input.charAt(idx)); + } + + // Dump tail + + tailbits = (max % 4) * 6; + + if (tailbits === 0) { + result.push((bits >> 16) & 0xFF); + result.push((bits >> 8) & 0xFF); + result.push(bits & 0xFF); + } else if (tailbits === 18) { + result.push((bits >> 10) & 0xFF); + result.push((bits >> 2) & 0xFF); + } else if (tailbits === 12) { + result.push((bits >> 4) & 0xFF); + } + + // Wrap into Buffer for NodeJS and leave Array for browser + if (NodeBuffer) { return new NodeBuffer(result); } + + return result; +} + +function representYamlBinary(object /*, style*/) { + var result = '', bits = 0, idx, tail, + max = object.length, + map = BASE64_MAP; + + // Convert every three bytes to 4 ASCII characters. + + for (idx = 0; idx < max; idx++) { + if ((idx % 3 === 0) && idx) { + result += map[(bits >> 18) & 0x3F]; + result += map[(bits >> 12) & 0x3F]; + result += map[(bits >> 6) & 0x3F]; + result += map[bits & 0x3F]; + } + + bits = (bits << 8) + object[idx]; + } + + // Dump tail + + tail = max % 3; + + if (tail === 0) { + result += map[(bits >> 18) & 0x3F]; + result += map[(bits >> 12) & 0x3F]; + result += map[(bits >> 6) & 0x3F]; + result += map[bits & 0x3F]; + } else if (tail === 2) { + result += map[(bits >> 10) & 0x3F]; + result += map[(bits >> 4) & 0x3F]; + result += map[(bits << 2) & 0x3F]; + result += map[64]; + } else if (tail === 1) { + result += map[(bits >> 2) & 0x3F]; + result += map[(bits << 4) & 0x3F]; + result += map[64]; + result += map[64]; + } + + return result; +} + +function isBinary(object) { + return NodeBuffer && NodeBuffer.isBuffer(object); +} + +var binary = new Type$12('tag:yaml.org,2002:binary', { + kind: 'scalar', + resolve: resolveYamlBinary, + construct: constructYamlBinary, + predicate: isBinary, + represent: representYamlBinary +}); + +var Type$13 = type; + +var _hasOwnProperty$1 = Object.prototype.hasOwnProperty; +var _toString = Object.prototype.toString; + +function resolveYamlOmap(data) { + if (data === null) { return true; } + + var objectKeys = [], index, length, pair, pairKey, pairHasKey, + object = data; + + for (index = 0, length = object.length; index < length; index += 1) { + pair = object[index]; + pairHasKey = false; + + if (_toString.call(pair) !== '[object Object]') { return false; } + + for (pairKey in pair) { + if (_hasOwnProperty$1.call(pair, pairKey)) { + if (!pairHasKey) { pairHasKey = true; } + else { return false; } + } + } + + if (!pairHasKey) { return false; } + + if (objectKeys.indexOf(pairKey) === -1) { objectKeys.push(pairKey); } + else { return false; } + } + + return true; +} + +function constructYamlOmap(data) { + return data !== null ? data : []; +} + +var omap = new Type$13('tag:yaml.org,2002:omap', { + kind: 'sequence', + resolve: resolveYamlOmap, + construct: constructYamlOmap +}); + +var Type$14 = type; + +var _toString$1 = Object.prototype.toString; + +function resolveYamlPairs(data) { + if (data === null) { return true; } + + var index, length, pair, keys, result, + object = data; + + result = new Array(object.length); + + for (index = 0, length = object.length; index < length; index += 1) { + pair = object[index]; + + if (_toString$1.call(pair) !== '[object Object]') { return false; } + + keys = Object.keys(pair); + + if (keys.length !== 1) { return false; } + + result[index] = [ keys[0], pair[keys[0]] ]; + } + + return true; +} + +function constructYamlPairs(data) { + if (data === null) { return []; } + + var index, length, pair, keys, result, + object = data; + + result = new Array(object.length); + + for (index = 0, length = object.length; index < length; index += 1) { + pair = object[index]; + + keys = Object.keys(pair); + + result[index] = [ keys[0], pair[keys[0]] ]; + } + + return result; +} + +var pairs = new Type$14('tag:yaml.org,2002:pairs', { + kind: 'sequence', + resolve: resolveYamlPairs, + construct: constructYamlPairs +}); + +var Type$15 = type; + +var _hasOwnProperty$2 = Object.prototype.hasOwnProperty; + +function resolveYamlSet(data) { + if (data === null) { return true; } + + var key, object = data; + + for (key in object) { + if (_hasOwnProperty$2.call(object, key)) { + if (object[key] !== null) { return false; } + } + } + + return true; +} + +function constructYamlSet(data) { + return data !== null ? data : {}; +} + +var set = new Type$15('tag:yaml.org,2002:set', { + kind: 'mapping', + resolve: resolveYamlSet, + construct: constructYamlSet +}); + +var Schema$1 = schema; + + +var default_safe = new Schema$1({ + include: [ + core + ], + implicit: [ + timestamp, + merge + ], + explicit: [ + binary, + omap, + pairs, + set + ] +}); + +var Type$16 = type; + +function resolveJavascriptUndefined() { + return true; +} + +function constructJavascriptUndefined() { + /*eslint-disable no-undefined*/ + return undefined; +} + +function representJavascriptUndefined() { + return ''; +} + +function isUndefined(object) { + return typeof object === 'undefined'; +} + +var _undefined = new Type$16('tag:yaml.org,2002:js/undefined', { + kind: 'scalar', + resolve: resolveJavascriptUndefined, + construct: constructJavascriptUndefined, + predicate: isUndefined, + represent: representJavascriptUndefined +}); + +var Type$17 = type; + +function resolveJavascriptRegExp(data) { + if (data === null) { return false; } + if (data.length === 0) { return false; } + + var regexp = data, + tail = /\/([gim]*)$/.exec(data), + modifiers = ''; + + // if regexp starts with '/' it can have modifiers and must be properly closed + // `/foo/gim` - modifiers tail can be maximum 3 chars + if (regexp[0] === '/') { + if (tail) { modifiers = tail[1]; } + + if (modifiers.length > 3) { return false; } + // if expression starts with /, is should be properly terminated + if (regexp[regexp.length - modifiers.length - 1] !== '/') { return false; } + } + + return true; +} + +function constructJavascriptRegExp(data) { + var regexp = data, + tail = /\/([gim]*)$/.exec(data), + modifiers = ''; + + // `/foo/gim` - tail can be maximum 4 chars + if (regexp[0] === '/') { + if (tail) { modifiers = tail[1]; } + regexp = regexp.slice(1, regexp.length - modifiers.length - 1); + } + + return new RegExp(regexp, modifiers); +} + +function representJavascriptRegExp(object /*, style*/) { + var result = '/' + object.source + '/'; + + if (object.global) { result += 'g'; } + if (object.multiline) { result += 'm'; } + if (object.ignoreCase) { result += 'i'; } + + return result; +} + +function isRegExp(object) { + return Object.prototype.toString.call(object) === '[object RegExp]'; +} + +var regexp = new Type$17('tag:yaml.org,2002:js/regexp', { + kind: 'scalar', + resolve: resolveJavascriptRegExp, + construct: constructJavascriptRegExp, + predicate: isRegExp, + represent: representJavascriptRegExp +}); + +var esprima; + +// Browserified version does not have esprima +// +// 1. For node.js just require module as deps +// 2. For browser try to require mudule via external AMD system. +// If not found - try to fallback to window.esprima. If not +// found too - then fail to parse. +// +try { + // workaround to exclude package from browserify list. + var _require$1 = commonjsRequire; + esprima = _require$1('esprima'); +} catch (_) { + /*global window */ + if (typeof window !== 'undefined') { esprima = window.esprima; } +} + +var Type$18 = type; + +function resolveJavascriptFunction(data) { + if (data === null) { return false; } + + try { + var source = '(' + data + ')', + ast = esprima.parse(source, { range: true }); + + if (ast.type !== 'Program' || + ast.body.length !== 1 || + ast.body[0].type !== 'ExpressionStatement' || + ast.body[0].expression.type !== 'FunctionExpression') { + return false; + } + + return true; + } catch (err) { + return false; + } +} + +function constructJavascriptFunction(data) { + /*jslint evil:true*/ + + var source = '(' + data + ')', + ast = esprima.parse(source, { range: true }), + params = [], + body; + + if (ast.type !== 'Program' || + ast.body.length !== 1 || + ast.body[0].type !== 'ExpressionStatement' || + ast.body[0].expression.type !== 'FunctionExpression') { + throw new Error('Failed to resolve function'); + } + + ast.body[0].expression.params.forEach(function (param) { + params.push(param.name); + }); + + body = ast.body[0].expression.body.range; + + // Esprima's ranges include the first '{' and the last '}' characters on + // function expressions. So cut them out. + /*eslint-disable no-new-func*/ + return new Function(params, source.slice(body[0] + 1, body[1] - 1)); +} + +function representJavascriptFunction(object /*, style*/) { + return object.toString(); +} + +function isFunction(object) { + return Object.prototype.toString.call(object) === '[object Function]'; +} + +var _function = new Type$18('tag:yaml.org,2002:js/function', { + kind: 'scalar', + resolve: resolveJavascriptFunction, + construct: constructJavascriptFunction, + predicate: isFunction, + represent: representJavascriptFunction +}); + +var Schema$6 = schema; + + +var default_full = Schema$6.DEFAULT = new Schema$6({ + include: [ + default_safe + ], + explicit: [ + _undefined, + regexp, + _function + ] +}); + +var common = common$1; +var YAMLException$1 = exception; +var Mark = mark; +var DEFAULT_SAFE_SCHEMA$1 = default_safe; +var DEFAULT_FULL_SCHEMA$1 = default_full; + + +var _hasOwnProperty = Object.prototype.hasOwnProperty; + + +var CONTEXT_FLOW_IN = 1; +var CONTEXT_FLOW_OUT = 2; +var CONTEXT_BLOCK_IN = 3; +var CONTEXT_BLOCK_OUT = 4; + + +var CHOMPING_CLIP = 1; +var CHOMPING_STRIP = 2; +var CHOMPING_KEEP = 3; + + +var PATTERN_NON_PRINTABLE = /[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/; +var PATTERN_NON_ASCII_LINE_BREAKS = /[\x85\u2028\u2029]/; +var PATTERN_FLOW_INDICATORS = /[,\[\]\{\}]/; +var PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\-]+!)$/i; +var PATTERN_TAG_URI = /^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i; + + +function is_EOL(c) { + return (c === 0x0A/* LF */) || (c === 0x0D/* CR */); +} + +function is_WHITE_SPACE(c) { + return (c === 0x09/* Tab */) || (c === 0x20/* Space */); +} + +function is_WS_OR_EOL(c) { + return (c === 0x09/* Tab */) || + (c === 0x20/* Space */) || + (c === 0x0A/* LF */) || + (c === 0x0D/* CR */); +} + +function is_FLOW_INDICATOR(c) { + return c === 0x2C/* , */ || + c === 0x5B/* [ */ || + c === 0x5D/* ] */ || + c === 0x7B/* { */ || + c === 0x7D/* } */; +} + +function fromHexCode(c) { + var lc; + + if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) { + return c - 0x30; + } + + /*eslint-disable no-bitwise*/ + lc = c | 0x20; + + if ((0x61/* a */ <= lc) && (lc <= 0x66/* f */)) { + return lc - 0x61 + 10; + } + + return -1; +} + +function escapedHexLen(c) { + if (c === 0x78/* x */) { return 2; } + if (c === 0x75/* u */) { return 4; } + if (c === 0x55/* U */) { return 8; } + return 0; +} + +function fromDecimalCode(c) { + if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) { + return c - 0x30; + } + + return -1; +} + +function simpleEscapeSequence(c) { + return (c === 0x30/* 0 */) ? '\x00' : + (c === 0x61/* a */) ? '\x07' : + (c === 0x62/* b */) ? '\x08' : + (c === 0x74/* t */) ? '\x09' : + (c === 0x09/* Tab */) ? '\x09' : + (c === 0x6E/* n */) ? '\x0A' : + (c === 0x76/* v */) ? '\x0B' : + (c === 0x66/* f */) ? '\x0C' : + (c === 0x72/* r */) ? '\x0D' : + (c === 0x65/* e */) ? '\x1B' : + (c === 0x20/* Space */) ? ' ' : + (c === 0x22/* " */) ? '\x22' : + (c === 0x2F/* / */) ? '/' : + (c === 0x5C/* \ */) ? '\x5C' : + (c === 0x4E/* N */) ? '\x85' : + (c === 0x5F/* _ */) ? '\xA0' : + (c === 0x4C/* L */) ? '\u2028' : + (c === 0x50/* P */) ? '\u2029' : ''; +} + +function charFromCodepoint(c) { + if (c <= 0xFFFF) { + return String.fromCharCode(c); + } + // Encode UTF-16 surrogate pair + // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF + return String.fromCharCode(((c - 0x010000) >> 10) + 0xD800, + ((c - 0x010000) & 0x03FF) + 0xDC00); +} + +var simpleEscapeCheck = new Array(256); // integer, for fast access +var simpleEscapeMap = new Array(256); +for (var i = 0; i < 256; i++) { + simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0; + simpleEscapeMap[i] = simpleEscapeSequence(i); +} + + +function State(input, options) { + this.input = input; + + this.filename = options['filename'] || null; + this.schema = options['schema'] || DEFAULT_FULL_SCHEMA$1; + this.onWarning = options['onWarning'] || null; + this.legacy = options['legacy'] || false; + this.json = options['json'] || false; + this.listener = options['listener'] || null; + + this.implicitTypes = this.schema.compiledImplicit; + this.typeMap = this.schema.compiledTypeMap; + + this.length = input.length; + this.position = 0; + this.line = 0; + this.lineStart = 0; + this.lineIndent = 0; + + this.documents = []; + + /* + this.version; + this.checkLineBreaks; + this.tagMap; + this.anchorMap; + this.tag; + this.anchor; + this.kind; + this.result;*/ + +} + + +function generateError(state, message) { + return new YAMLException$1( + message, + new Mark(state.filename, state.input, state.position, state.line, (state.position - state.lineStart))); +} + +function throwError(state, message) { + throw generateError(state, message); +} + +function throwWarning(state, message) { + if (state.onWarning) { + state.onWarning.call(null, generateError(state, message)); + } +} + + +var directiveHandlers = { + + YAML: function handleYamlDirective(state, name, args) { + + var match, major, minor; + + if (state.version !== null) { + throwError(state, 'duplication of %YAML directive'); + } + + if (args.length !== 1) { + throwError(state, 'YAML directive accepts exactly one argument'); + } + + match = /^([0-9]+)\.([0-9]+)$/.exec(args[0]); + + if (match === null) { + throwError(state, 'ill-formed argument of the YAML directive'); + } + + major = parseInt(match[1], 10); + minor = parseInt(match[2], 10); + + if (major !== 1) { + throwError(state, 'unacceptable YAML version of the document'); + } + + state.version = args[0]; + state.checkLineBreaks = (minor < 2); + + if (minor !== 1 && minor !== 2) { + throwWarning(state, 'unsupported YAML version of the document'); + } + }, + + TAG: function handleTagDirective(state, name, args) { + + var handle, prefix; + + if (args.length !== 2) { + throwError(state, 'TAG directive accepts exactly two arguments'); + } + + handle = args[0]; + prefix = args[1]; + + if (!PATTERN_TAG_HANDLE.test(handle)) { + throwError(state, 'ill-formed tag handle (first argument) of the TAG directive'); + } + + if (_hasOwnProperty.call(state.tagMap, handle)) { + throwError(state, 'there is a previously declared suffix for "' + handle + '" tag handle'); + } + + if (!PATTERN_TAG_URI.test(prefix)) { + throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive'); + } + + state.tagMap[handle] = prefix; + } +}; + + +function captureSegment(state, start, end, checkJson) { + var _position, _length, _character, _result; + + if (start < end) { + _result = state.input.slice(start, end); + + if (checkJson) { + for (_position = 0, _length = _result.length; + _position < _length; + _position += 1) { + _character = _result.charCodeAt(_position); + if (!(_character === 0x09 || + (0x20 <= _character && _character <= 0x10FFFF))) { + throwError(state, 'expected valid JSON character'); + } + } + } else if (PATTERN_NON_PRINTABLE.test(_result)) { + throwError(state, 'the stream contains non-printable characters'); + } + + state.result += _result; + } +} + +function mergeMappings(state, destination, source, overridableKeys) { + var sourceKeys, key, index, quantity; + + if (!common.isObject(source)) { + throwError(state, 'cannot merge mappings; the provided source object is unacceptable'); + } + + sourceKeys = Object.keys(source); + + for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) { + key = sourceKeys[index]; + + if (!_hasOwnProperty.call(destination, key)) { + destination[key] = source[key]; + overridableKeys[key] = true; + } + } +} + +function storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode) { + var index, quantity; + + keyNode = String(keyNode); + + if (_result === null) { + _result = {}; + } + + if (keyTag === 'tag:yaml.org,2002:merge') { + if (Array.isArray(valueNode)) { + for (index = 0, quantity = valueNode.length; index < quantity; index += 1) { + mergeMappings(state, _result, valueNode[index], overridableKeys); + } + } else { + mergeMappings(state, _result, valueNode, overridableKeys); + } + } else { + if (!state.json && + !_hasOwnProperty.call(overridableKeys, keyNode) && + _hasOwnProperty.call(_result, keyNode)) { + throwError(state, 'duplicated mapping key'); + } + _result[keyNode] = valueNode; + delete overridableKeys[keyNode]; + } + + return _result; +} + +function readLineBreak(state) { + var ch; + + ch = state.input.charCodeAt(state.position); + + if (ch === 0x0A/* LF */) { + state.position++; + } else if (ch === 0x0D/* CR */) { + state.position++; + if (state.input.charCodeAt(state.position) === 0x0A/* LF */) { + state.position++; + } + } else { + throwError(state, 'a line break is expected'); + } + + state.line += 1; + state.lineStart = state.position; +} + +function skipSeparationSpace(state, allowComments, checkIndent) { + var lineBreaks = 0, + ch = state.input.charCodeAt(state.position); + + while (ch !== 0) { + while (is_WHITE_SPACE(ch)) { + ch = state.input.charCodeAt(++state.position); + } + + if (allowComments && ch === 0x23/* # */) { + do { + ch = state.input.charCodeAt(++state.position); + } while (ch !== 0x0A/* LF */ && ch !== 0x0D/* CR */ && ch !== 0); + } + + if (is_EOL(ch)) { + readLineBreak(state); + + ch = state.input.charCodeAt(state.position); + lineBreaks++; + state.lineIndent = 0; + + while (ch === 0x20/* Space */) { + state.lineIndent++; + ch = state.input.charCodeAt(++state.position); + } + } else { + break; + } + } + + if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) { + throwWarning(state, 'deficient indentation'); + } + + return lineBreaks; +} + +function testDocumentSeparator(state) { + var _position = state.position, + ch; + + ch = state.input.charCodeAt(_position); + + // Condition state.position === state.lineStart is tested + // in parent on each call, for efficiency. No needs to test here again. + if ((ch === 0x2D/* - */ || ch === 0x2E/* . */) && + ch === state.input.charCodeAt(_position + 1) && + ch === state.input.charCodeAt(_position + 2)) { + + _position += 3; + + ch = state.input.charCodeAt(_position); + + if (ch === 0 || is_WS_OR_EOL(ch)) { + return true; + } + } + + return false; +} + +function writeFoldedLines(state, count) { + if (count === 1) { + state.result += ' '; + } else if (count > 1) { + state.result += common.repeat('\n', count - 1); + } +} + + +function readPlainScalar(state, nodeIndent, withinFlowCollection) { + var preceding, + following, + captureStart, + captureEnd, + hasPendingContent, + _line, + _lineStart, + _lineIndent, + _kind = state.kind, + _result = state.result, + ch; + + ch = state.input.charCodeAt(state.position); + + if (is_WS_OR_EOL(ch) || + is_FLOW_INDICATOR(ch) || + ch === 0x23/* # */ || + ch === 0x26/* & */ || + ch === 0x2A/* * */ || + ch === 0x21/* ! */ || + ch === 0x7C/* | */ || + ch === 0x3E/* > */ || + ch === 0x27/* ' */ || + ch === 0x22/* " */ || + ch === 0x25/* % */ || + ch === 0x40/* @ */ || + ch === 0x60/* ` */) { + return false; + } + + if (ch === 0x3F/* ? */ || ch === 0x2D/* - */) { + following = state.input.charCodeAt(state.position + 1); + + if (is_WS_OR_EOL(following) || + withinFlowCollection && is_FLOW_INDICATOR(following)) { + return false; + } + } + + state.kind = 'scalar'; + state.result = ''; + captureStart = captureEnd = state.position; + hasPendingContent = false; + + while (ch !== 0) { + if (ch === 0x3A/* : */) { + following = state.input.charCodeAt(state.position + 1); + + if (is_WS_OR_EOL(following) || + withinFlowCollection && is_FLOW_INDICATOR(following)) { + break; + } + + } else if (ch === 0x23/* # */) { + preceding = state.input.charCodeAt(state.position - 1); + + if (is_WS_OR_EOL(preceding)) { + break; + } + + } else if ((state.position === state.lineStart && testDocumentSeparator(state)) || + withinFlowCollection && is_FLOW_INDICATOR(ch)) { + break; + + } else if (is_EOL(ch)) { + _line = state.line; + _lineStart = state.lineStart; + _lineIndent = state.lineIndent; + skipSeparationSpace(state, false, -1); + + if (state.lineIndent >= nodeIndent) { + hasPendingContent = true; + ch = state.input.charCodeAt(state.position); + continue; + } else { + state.position = captureEnd; + state.line = _line; + state.lineStart = _lineStart; + state.lineIndent = _lineIndent; + break; + } + } + + if (hasPendingContent) { + captureSegment(state, captureStart, captureEnd, false); + writeFoldedLines(state, state.line - _line); + captureStart = captureEnd = state.position; + hasPendingContent = false; + } + + if (!is_WHITE_SPACE(ch)) { + captureEnd = state.position + 1; + } + + ch = state.input.charCodeAt(++state.position); + } + + captureSegment(state, captureStart, captureEnd, false); + + if (state.result) { + return true; + } + + state.kind = _kind; + state.result = _result; + return false; +} + +function readSingleQuotedScalar(state, nodeIndent) { + var ch, + captureStart, captureEnd; + + ch = state.input.charCodeAt(state.position); + + if (ch !== 0x27/* ' */) { + return false; + } + + state.kind = 'scalar'; + state.result = ''; + state.position++; + captureStart = captureEnd = state.position; + + while ((ch = state.input.charCodeAt(state.position)) !== 0) { + if (ch === 0x27/* ' */) { + captureSegment(state, captureStart, state.position, true); + ch = state.input.charCodeAt(++state.position); + + if (ch === 0x27/* ' */) { + captureStart = state.position; + state.position++; + captureEnd = state.position; + } else { + return true; + } + + } else if (is_EOL(ch)) { + captureSegment(state, captureStart, captureEnd, true); + writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent)); + captureStart = captureEnd = state.position; + + } else if (state.position === state.lineStart && testDocumentSeparator(state)) { + throwError(state, 'unexpected end of the document within a single quoted scalar'); + + } else { + state.position++; + captureEnd = state.position; + } + } + + throwError(state, 'unexpected end of the stream within a single quoted scalar'); +} + +function readDoubleQuotedScalar(state, nodeIndent) { + var captureStart, + captureEnd, + hexLength, + hexResult, + tmp, + ch; + + ch = state.input.charCodeAt(state.position); + + if (ch !== 0x22/* " */) { + return false; + } + + state.kind = 'scalar'; + state.result = ''; + state.position++; + captureStart = captureEnd = state.position; + + while ((ch = state.input.charCodeAt(state.position)) !== 0) { + if (ch === 0x22/* " */) { + captureSegment(state, captureStart, state.position, true); + state.position++; + return true; + + } else if (ch === 0x5C/* \ */) { + captureSegment(state, captureStart, state.position, true); + ch = state.input.charCodeAt(++state.position); + + if (is_EOL(ch)) { + skipSeparationSpace(state, false, nodeIndent); + + // TODO: rework to inline fn with no type cast? + } else if (ch < 256 && simpleEscapeCheck[ch]) { + state.result += simpleEscapeMap[ch]; + state.position++; + + } else if ((tmp = escapedHexLen(ch)) > 0) { + hexLength = tmp; + hexResult = 0; + + for (; hexLength > 0; hexLength--) { + ch = state.input.charCodeAt(++state.position); + + if ((tmp = fromHexCode(ch)) >= 0) { + hexResult = (hexResult << 4) + tmp; + + } else { + throwError(state, 'expected hexadecimal character'); + } + } + + state.result += charFromCodepoint(hexResult); + + state.position++; + + } else { + throwError(state, 'unknown escape sequence'); + } + + captureStart = captureEnd = state.position; + + } else if (is_EOL(ch)) { + captureSegment(state, captureStart, captureEnd, true); + writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent)); + captureStart = captureEnd = state.position; + + } else if (state.position === state.lineStart && testDocumentSeparator(state)) { + throwError(state, 'unexpected end of the document within a double quoted scalar'); + + } else { + state.position++; + captureEnd = state.position; + } + } + + throwError(state, 'unexpected end of the stream within a double quoted scalar'); +} + +function readFlowCollection(state, nodeIndent) { + var readNext = true, + _line, + _tag = state.tag, + _result, + _anchor = state.anchor, + following, + terminator, + isPair, + isExplicitPair, + isMapping, + overridableKeys = {}, + keyNode, + keyTag, + valueNode, + ch; + + ch = state.input.charCodeAt(state.position); + + if (ch === 0x5B/* [ */) { + terminator = 0x5D;/* ] */ + isMapping = false; + _result = []; + } else if (ch === 0x7B/* { */) { + terminator = 0x7D;/* } */ + isMapping = true; + _result = {}; + } else { + return false; + } + + if (state.anchor !== null) { + state.anchorMap[state.anchor] = _result; + } + + ch = state.input.charCodeAt(++state.position); + + while (ch !== 0) { + skipSeparationSpace(state, true, nodeIndent); + + ch = state.input.charCodeAt(state.position); + + if (ch === terminator) { + state.position++; + state.tag = _tag; + state.anchor = _anchor; + state.kind = isMapping ? 'mapping' : 'sequence'; + state.result = _result; + return true; + } else if (!readNext) { + throwError(state, 'missed comma between flow collection entries'); + } + + keyTag = keyNode = valueNode = null; + isPair = isExplicitPair = false; + + if (ch === 0x3F/* ? */) { + following = state.input.charCodeAt(state.position + 1); + + if (is_WS_OR_EOL(following)) { + isPair = isExplicitPair = true; + state.position++; + skipSeparationSpace(state, true, nodeIndent); + } + } + + _line = state.line; + composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true); + keyTag = state.tag; + keyNode = state.result; + skipSeparationSpace(state, true, nodeIndent); + + ch = state.input.charCodeAt(state.position); + + if ((isExplicitPair || state.line === _line) && ch === 0x3A/* : */) { + isPair = true; + ch = state.input.charCodeAt(++state.position); + skipSeparationSpace(state, true, nodeIndent); + composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true); + valueNode = state.result; + } + + if (isMapping) { + storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode); + } else if (isPair) { + _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode)); + } else { + _result.push(keyNode); + } + + skipSeparationSpace(state, true, nodeIndent); + + ch = state.input.charCodeAt(state.position); + + if (ch === 0x2C/* , */) { + readNext = true; + ch = state.input.charCodeAt(++state.position); + } else { + readNext = false; + } + } + + throwError(state, 'unexpected end of the stream within a flow collection'); +} + +function readBlockScalar(state, nodeIndent) { + var captureStart, + folding, + chomping = CHOMPING_CLIP, + didReadContent = false, + detectedIndent = false, + textIndent = nodeIndent, + emptyLines = 0, + atMoreIndented = false, + tmp, + ch; + + ch = state.input.charCodeAt(state.position); + + if (ch === 0x7C/* | */) { + folding = false; + } else if (ch === 0x3E/* > */) { + folding = true; + } else { + return false; + } + + state.kind = 'scalar'; + state.result = ''; + + while (ch !== 0) { + ch = state.input.charCodeAt(++state.position); + + if (ch === 0x2B/* + */ || ch === 0x2D/* - */) { + if (CHOMPING_CLIP === chomping) { + chomping = (ch === 0x2B/* + */) ? CHOMPING_KEEP : CHOMPING_STRIP; + } else { + throwError(state, 'repeat of a chomping mode identifier'); + } + + } else if ((tmp = fromDecimalCode(ch)) >= 0) { + if (tmp === 0) { + throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one'); + } else if (!detectedIndent) { + textIndent = nodeIndent + tmp - 1; + detectedIndent = true; + } else { + throwError(state, 'repeat of an indentation width identifier'); + } + + } else { + break; + } + } + + if (is_WHITE_SPACE(ch)) { + do { ch = state.input.charCodeAt(++state.position); } + while (is_WHITE_SPACE(ch)); + + if (ch === 0x23/* # */) { + do { ch = state.input.charCodeAt(++state.position); } + while (!is_EOL(ch) && (ch !== 0)); + } + } + + while (ch !== 0) { + readLineBreak(state); + state.lineIndent = 0; + + ch = state.input.charCodeAt(state.position); + + while ((!detectedIndent || state.lineIndent < textIndent) && + (ch === 0x20/* Space */)) { + state.lineIndent++; + ch = state.input.charCodeAt(++state.position); + } + + if (!detectedIndent && state.lineIndent > textIndent) { + textIndent = state.lineIndent; + } + + if (is_EOL(ch)) { + emptyLines++; + continue; + } + + // End of the scalar. + if (state.lineIndent < textIndent) { + + // Perform the chomping. + if (chomping === CHOMPING_KEEP) { + state.result += common.repeat('\n', didReadContent ? 1 + emptyLines : emptyLines); + } else if (chomping === CHOMPING_CLIP) { + if (didReadContent) { // i.e. only if the scalar is not empty. + state.result += '\n'; + } + } + + // Break this `while` cycle and go to the funciton's epilogue. + break; + } + + // Folded style: use fancy rules to handle line breaks. + if (folding) { + + // Lines starting with white space characters (more-indented lines) are not folded. + if (is_WHITE_SPACE(ch)) { + atMoreIndented = true; + // except for the first content line (cf. Example 8.1) + state.result += common.repeat('\n', didReadContent ? 1 + emptyLines : emptyLines); + + // End of more-indented block. + } else if (atMoreIndented) { + atMoreIndented = false; + state.result += common.repeat('\n', emptyLines + 1); + + // Just one line break - perceive as the same line. + } else if (emptyLines === 0) { + if (didReadContent) { // i.e. only if we have already read some scalar content. + state.result += ' '; + } + + // Several line breaks - perceive as different lines. + } else { + state.result += common.repeat('\n', emptyLines); + } + + // Literal style: just add exact number of line breaks between content lines. + } else { + // Keep all line breaks except the header line break. + state.result += common.repeat('\n', didReadContent ? 1 + emptyLines : emptyLines); + } + + didReadContent = true; + detectedIndent = true; + emptyLines = 0; + captureStart = state.position; + + while (!is_EOL(ch) && (ch !== 0)) { + ch = state.input.charCodeAt(++state.position); + } + + captureSegment(state, captureStart, state.position, false); + } + + return true; +} + +function readBlockSequence(state, nodeIndent) { + var _line, + _tag = state.tag, + _anchor = state.anchor, + _result = [], + following, + detected = false, + ch; + + if (state.anchor !== null) { + state.anchorMap[state.anchor] = _result; + } + + ch = state.input.charCodeAt(state.position); + + while (ch !== 0) { + + if (ch !== 0x2D/* - */) { + break; + } + + following = state.input.charCodeAt(state.position + 1); + + if (!is_WS_OR_EOL(following)) { + break; + } + + detected = true; + state.position++; + + if (skipSeparationSpace(state, true, -1)) { + if (state.lineIndent <= nodeIndent) { + _result.push(null); + ch = state.input.charCodeAt(state.position); + continue; + } + } + + _line = state.line; + composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true); + _result.push(state.result); + skipSeparationSpace(state, true, -1); + + ch = state.input.charCodeAt(state.position); + + if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) { + throwError(state, 'bad indentation of a sequence entry'); + } else if (state.lineIndent < nodeIndent) { + break; + } + } + + if (detected) { + state.tag = _tag; + state.anchor = _anchor; + state.kind = 'sequence'; + state.result = _result; + return true; + } + return false; +} + +function readBlockMapping(state, nodeIndent, flowIndent) { + var following, + allowCompact, + _line, + _tag = state.tag, + _anchor = state.anchor, + _result = {}, + overridableKeys = {}, + keyTag = null, + keyNode = null, + valueNode = null, + atExplicitKey = false, + detected = false, + ch; + + if (state.anchor !== null) { + state.anchorMap[state.anchor] = _result; + } + + ch = state.input.charCodeAt(state.position); + + while (ch !== 0) { + following = state.input.charCodeAt(state.position + 1); + _line = state.line; // Save the current line. + + // + // Explicit notation case. There are two separate blocks: + // first for the key (denoted by "?") and second for the value (denoted by ":") + // + if ((ch === 0x3F/* ? */ || ch === 0x3A/* : */) && is_WS_OR_EOL(following)) { + + if (ch === 0x3F/* ? */) { + if (atExplicitKey) { + storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null); + keyTag = keyNode = valueNode = null; + } + + detected = true; + atExplicitKey = true; + allowCompact = true; + + } else if (atExplicitKey) { + // i.e. 0x3A/* : */ === character after the explicit key. + atExplicitKey = false; + allowCompact = true; + + } else { + throwError(state, 'incomplete explicit mapping pair; a key node is missed'); + } + + state.position += 1; + ch = following; + + // + // Implicit notation case. Flow-style node as the key first, then ":", and the value. + // + } else if (composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) { + + if (state.line === _line) { + ch = state.input.charCodeAt(state.position); + + while (is_WHITE_SPACE(ch)) { + ch = state.input.charCodeAt(++state.position); + } + + if (ch === 0x3A/* : */) { + ch = state.input.charCodeAt(++state.position); + + if (!is_WS_OR_EOL(ch)) { + throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping'); + } + + if (atExplicitKey) { + storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null); + keyTag = keyNode = valueNode = null; + } + + detected = true; + atExplicitKey = false; + allowCompact = false; + keyTag = state.tag; + keyNode = state.result; + + } else if (detected) { + throwError(state, 'can not read an implicit mapping pair; a colon is missed'); + + } else { + state.tag = _tag; + state.anchor = _anchor; + return true; // Keep the result of `composeNode`. + } + + } else if (detected) { + throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key'); + + } else { + state.tag = _tag; + state.anchor = _anchor; + return true; // Keep the result of `composeNode`. + } + + } else { + break; // Reading is done. Go to the epilogue. + } + + // + // Common reading code for both explicit and implicit notations. + // + if (state.line === _line || state.lineIndent > nodeIndent) { + if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) { + if (atExplicitKey) { + keyNode = state.result; + } else { + valueNode = state.result; + } + } + + if (!atExplicitKey) { + storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode); + keyTag = keyNode = valueNode = null; + } + + skipSeparationSpace(state, true, -1); + ch = state.input.charCodeAt(state.position); + } + + if (state.lineIndent > nodeIndent && (ch !== 0)) { + throwError(state, 'bad indentation of a mapping entry'); + } else if (state.lineIndent < nodeIndent) { + break; + } + } + + // + // Epilogue. + // + + // Special case: last mapping's node contains only the key in explicit notation. + if (atExplicitKey) { + storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null); + } + + // Expose the resulting mapping. + if (detected) { + state.tag = _tag; + state.anchor = _anchor; + state.kind = 'mapping'; + state.result = _result; + } + + return detected; +} + +function readTagProperty(state) { + var _position, + isVerbatim = false, + isNamed = false, + tagHandle, + tagName, + ch; + + ch = state.input.charCodeAt(state.position); + + if (ch !== 0x21/* ! */) { return false; } + + if (state.tag !== null) { + throwError(state, 'duplication of a tag property'); + } + + ch = state.input.charCodeAt(++state.position); + + if (ch === 0x3C/* < */) { + isVerbatim = true; + ch = state.input.charCodeAt(++state.position); + + } else if (ch === 0x21/* ! */) { + isNamed = true; + tagHandle = '!!'; + ch = state.input.charCodeAt(++state.position); + + } else { + tagHandle = '!'; + } + + _position = state.position; + + if (isVerbatim) { + do { ch = state.input.charCodeAt(++state.position); } + while (ch !== 0 && ch !== 0x3E/* > */); + + if (state.position < state.length) { + tagName = state.input.slice(_position, state.position); + ch = state.input.charCodeAt(++state.position); + } else { + throwError(state, 'unexpected end of the stream within a verbatim tag'); + } + } else { + while (ch !== 0 && !is_WS_OR_EOL(ch)) { + + if (ch === 0x21/* ! */) { + if (!isNamed) { + tagHandle = state.input.slice(_position - 1, state.position + 1); + + if (!PATTERN_TAG_HANDLE.test(tagHandle)) { + throwError(state, 'named tag handle cannot contain such characters'); + } + + isNamed = true; + _position = state.position + 1; + } else { + throwError(state, 'tag suffix cannot contain exclamation marks'); + } + } + + ch = state.input.charCodeAt(++state.position); + } + + tagName = state.input.slice(_position, state.position); + + if (PATTERN_FLOW_INDICATORS.test(tagName)) { + throwError(state, 'tag suffix cannot contain flow indicator characters'); + } + } + + if (tagName && !PATTERN_TAG_URI.test(tagName)) { + throwError(state, 'tag name cannot contain such characters: ' + tagName); + } + + if (isVerbatim) { + state.tag = tagName; + + } else if (_hasOwnProperty.call(state.tagMap, tagHandle)) { + state.tag = state.tagMap[tagHandle] + tagName; + + } else if (tagHandle === '!') { + state.tag = '!' + tagName; + + } else if (tagHandle === '!!') { + state.tag = 'tag:yaml.org,2002:' + tagName; + + } else { + throwError(state, 'undeclared tag handle "' + tagHandle + '"'); + } + + return true; +} + +function readAnchorProperty(state) { + var _position, + ch; + + ch = state.input.charCodeAt(state.position); + + if (ch !== 0x26/* & */) { return false; } + + if (state.anchor !== null) { + throwError(state, 'duplication of an anchor property'); + } + + ch = state.input.charCodeAt(++state.position); + _position = state.position; + + while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) { + ch = state.input.charCodeAt(++state.position); + } + + if (state.position === _position) { + throwError(state, 'name of an anchor node must contain at least one character'); + } + + state.anchor = state.input.slice(_position, state.position); + return true; +} + +function readAlias(state) { + var _position, alias, + ch; + + ch = state.input.charCodeAt(state.position); + + if (ch !== 0x2A/* * */) { return false; } + + ch = state.input.charCodeAt(++state.position); + _position = state.position; + + while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) { + ch = state.input.charCodeAt(++state.position); + } + + if (state.position === _position) { + throwError(state, 'name of an alias node must contain at least one character'); + } + + alias = state.input.slice(_position, state.position); + + if (!state.anchorMap.hasOwnProperty(alias)) { + throwError(state, 'unidentified alias "' + alias + '"'); + } + + state.result = state.anchorMap[alias]; + skipSeparationSpace(state, true, -1); + return true; +} + +function composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) { + var allowBlockStyles, + allowBlockScalars, + allowBlockCollections, + indentStatus = 1, // 1: this>parent, 0: this=parent, -1: this parentIndent) { + indentStatus = 1; + } else if (state.lineIndent === parentIndent) { + indentStatus = 0; + } else if (state.lineIndent < parentIndent) { + indentStatus = -1; + } + } + } + + if (indentStatus === 1) { + while (readTagProperty(state) || readAnchorProperty(state)) { + if (skipSeparationSpace(state, true, -1)) { + atNewLine = true; + allowBlockCollections = allowBlockStyles; + + if (state.lineIndent > parentIndent) { + indentStatus = 1; + } else if (state.lineIndent === parentIndent) { + indentStatus = 0; + } else if (state.lineIndent < parentIndent) { + indentStatus = -1; + } + } else { + allowBlockCollections = false; + } + } + } + + if (allowBlockCollections) { + allowBlockCollections = atNewLine || allowCompact; + } + + if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) { + if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) { + flowIndent = parentIndent; + } else { + flowIndent = parentIndent + 1; + } + + blockIndent = state.position - state.lineStart; + + if (indentStatus === 1) { + if (allowBlockCollections && + (readBlockSequence(state, blockIndent) || + readBlockMapping(state, blockIndent, flowIndent)) || + readFlowCollection(state, flowIndent)) { + hasContent = true; + } else { + if ((allowBlockScalars && readBlockScalar(state, flowIndent)) || + readSingleQuotedScalar(state, flowIndent) || + readDoubleQuotedScalar(state, flowIndent)) { + hasContent = true; + + } else if (readAlias(state)) { + hasContent = true; + + if (state.tag !== null || state.anchor !== null) { + throwError(state, 'alias node should not have any properties'); + } + + } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) { + hasContent = true; + + if (state.tag === null) { + state.tag = '?'; + } + } + + if (state.anchor !== null) { + state.anchorMap[state.anchor] = state.result; + } + } + } else if (indentStatus === 0) { + // Special case: block sequences are allowed to have same indentation level as the parent. + // http://www.yaml.org/spec/1.2/spec.html#id2799784 + hasContent = allowBlockCollections && readBlockSequence(state, blockIndent); + } + } + + if (state.tag !== null && state.tag !== '!') { + if (state.tag === '?') { + for (typeIndex = 0, typeQuantity = state.implicitTypes.length; + typeIndex < typeQuantity; + typeIndex += 1) { + type = state.implicitTypes[typeIndex]; + + // Implicit resolving is not allowed for non-scalar types, and '?' + // non-specific tag is only assigned to plain scalars. So, it isn't + // needed to check for 'kind' conformity. + + if (type.resolve(state.result)) { // `state.result` updated in resolver if matched + state.result = type.construct(state.result); + state.tag = type.tag; + if (state.anchor !== null) { + state.anchorMap[state.anchor] = state.result; + } + break; + } + } + } else if (_hasOwnProperty.call(state.typeMap[state.kind || 'fallback'], state.tag)) { + type = state.typeMap[state.kind || 'fallback'][state.tag]; + + if (state.result !== null && type.kind !== state.kind) { + throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be "' + type.kind + '", not "' + state.kind + '"'); + } + + if (!type.resolve(state.result)) { // `state.result` updated in resolver if matched + throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag'); + } else { + state.result = type.construct(state.result); + if (state.anchor !== null) { + state.anchorMap[state.anchor] = state.result; + } + } + } else { + throwError(state, 'unknown tag !<' + state.tag + '>'); + } + } + + if (state.listener !== null) { + state.listener('close', state); + } + return state.tag !== null || state.anchor !== null || hasContent; +} + +function readDocument(state) { + var documentStart = state.position, + _position, + directiveName, + directiveArgs, + hasDirectives = false, + ch; + + state.version = null; + state.checkLineBreaks = state.legacy; + state.tagMap = {}; + state.anchorMap = {}; + + while ((ch = state.input.charCodeAt(state.position)) !== 0) { + skipSeparationSpace(state, true, -1); + + ch = state.input.charCodeAt(state.position); + + if (state.lineIndent > 0 || ch !== 0x25/* % */) { + break; + } + + hasDirectives = true; + ch = state.input.charCodeAt(++state.position); + _position = state.position; + + while (ch !== 0 && !is_WS_OR_EOL(ch)) { + ch = state.input.charCodeAt(++state.position); + } + + directiveName = state.input.slice(_position, state.position); + directiveArgs = []; + + if (directiveName.length < 1) { + throwError(state, 'directive name must not be less than one character in length'); + } + + while (ch !== 0) { + while (is_WHITE_SPACE(ch)) { + ch = state.input.charCodeAt(++state.position); + } + + if (ch === 0x23/* # */) { + do { ch = state.input.charCodeAt(++state.position); } + while (ch !== 0 && !is_EOL(ch)); + break; + } + + if (is_EOL(ch)) { break; } + + _position = state.position; + + while (ch !== 0 && !is_WS_OR_EOL(ch)) { + ch = state.input.charCodeAt(++state.position); + } + + directiveArgs.push(state.input.slice(_position, state.position)); + } + + if (ch !== 0) { readLineBreak(state); } + + if (_hasOwnProperty.call(directiveHandlers, directiveName)) { + directiveHandlers[directiveName](state, directiveName, directiveArgs); + } else { + throwWarning(state, 'unknown document directive "' + directiveName + '"'); + } + } + + skipSeparationSpace(state, true, -1); + + if (state.lineIndent === 0 && + state.input.charCodeAt(state.position) === 0x2D/* - */ && + state.input.charCodeAt(state.position + 1) === 0x2D/* - */ && + state.input.charCodeAt(state.position + 2) === 0x2D/* - */) { + state.position += 3; + skipSeparationSpace(state, true, -1); + + } else if (hasDirectives) { + throwError(state, 'directives end mark is expected'); + } + + composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true); + skipSeparationSpace(state, true, -1); + + if (state.checkLineBreaks && + PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) { + throwWarning(state, 'non-ASCII line breaks are interpreted as content'); + } + + state.documents.push(state.result); + + if (state.position === state.lineStart && testDocumentSeparator(state)) { + + if (state.input.charCodeAt(state.position) === 0x2E/* . */) { + state.position += 3; + skipSeparationSpace(state, true, -1); + } + return; + } + + if (state.position < (state.length - 1)) { + throwError(state, 'end of the stream or a document separator is expected'); + } else { + return; + } +} + + +function loadDocuments(input, options) { + input = String(input); + options = options || {}; + + if (input.length !== 0) { + + // Add tailing `\n` if not exists + if (input.charCodeAt(input.length - 1) !== 0x0A/* LF */ && + input.charCodeAt(input.length - 1) !== 0x0D/* CR */) { + input += '\n'; + } + + // Strip BOM + if (input.charCodeAt(0) === 0xFEFF) { + input = input.slice(1); + } + } + + var state = new State(input, options); + + // Use 0 as string terminator. That significantly simplifies bounds check. + state.input += '\0'; + + while (state.input.charCodeAt(state.position) === 0x20/* Space */) { + state.lineIndent += 1; + state.position += 1; + } + + while (state.position < (state.length - 1)) { + readDocument(state); + } + + return state.documents; +} + + +function loadAll$1(input, iterator, options) { + var documents = loadDocuments(input, options), index, length; + + for (index = 0, length = documents.length; index < length; index += 1) { + iterator(documents[index]); + } +} + + +function load$1(input, options) { + var documents = loadDocuments(input, options); + + if (documents.length === 0) { + /*eslint-disable no-undefined*/ + return undefined; + } else if (documents.length === 1) { + return documents[0]; + } + throw new YAMLException$1('expected a single document in the stream, but found more'); +} + + +function safeLoadAll$1(input, output, options) { + loadAll$1(input, output, common.extend({ schema: DEFAULT_SAFE_SCHEMA$1 }, options)); +} + + +function safeLoad$1(input, options) { + return load$1(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA$1 }, options)); +} + + +var loadAll_1 = loadAll$1; +var load_1 = load$1; +var safeLoadAll_1 = safeLoadAll$1; +var safeLoad_1 = safeLoad$1; + +var loader$1 = { + loadAll: loadAll_1, + load: load_1, + safeLoadAll: safeLoadAll_1, + safeLoad: safeLoad_1 +}; + +var common$7 = common$1; +var YAMLException$5 = exception; +var DEFAULT_FULL_SCHEMA$2 = default_full; +var DEFAULT_SAFE_SCHEMA$2 = default_safe; + +var _toString$2 = Object.prototype.toString; +var _hasOwnProperty$3 = Object.prototype.hasOwnProperty; + +var CHAR_TAB = 0x09; /* Tab */ +var CHAR_LINE_FEED = 0x0A; /* LF */ +var CHAR_SPACE = 0x20; /* Space */ +var CHAR_EXCLAMATION = 0x21; /* ! */ +var CHAR_DOUBLE_QUOTE = 0x22; /* " */ +var CHAR_SHARP = 0x23; /* # */ +var CHAR_PERCENT = 0x25; /* % */ +var CHAR_AMPERSAND = 0x26; /* & */ +var CHAR_SINGLE_QUOTE = 0x27; /* ' */ +var CHAR_ASTERISK = 0x2A; /* * */ +var CHAR_COMMA = 0x2C; /* , */ +var CHAR_MINUS = 0x2D; /* - */ +var CHAR_COLON = 0x3A; /* : */ +var CHAR_GREATER_THAN = 0x3E; /* > */ +var CHAR_QUESTION = 0x3F; /* ? */ +var CHAR_COMMERCIAL_AT = 0x40; /* @ */ +var CHAR_LEFT_SQUARE_BRACKET = 0x5B; /* [ */ +var CHAR_RIGHT_SQUARE_BRACKET = 0x5D; /* ] */ +var CHAR_GRAVE_ACCENT = 0x60; /* ` */ +var CHAR_LEFT_CURLY_BRACKET = 0x7B; /* { */ +var CHAR_VERTICAL_LINE = 0x7C; /* | */ +var CHAR_RIGHT_CURLY_BRACKET = 0x7D; /* } */ + +var ESCAPE_SEQUENCES = {}; + +ESCAPE_SEQUENCES[0x00] = '\\0'; +ESCAPE_SEQUENCES[0x07] = '\\a'; +ESCAPE_SEQUENCES[0x08] = '\\b'; +ESCAPE_SEQUENCES[0x09] = '\\t'; +ESCAPE_SEQUENCES[0x0A] = '\\n'; +ESCAPE_SEQUENCES[0x0B] = '\\v'; +ESCAPE_SEQUENCES[0x0C] = '\\f'; +ESCAPE_SEQUENCES[0x0D] = '\\r'; +ESCAPE_SEQUENCES[0x1B] = '\\e'; +ESCAPE_SEQUENCES[0x22] = '\\"'; +ESCAPE_SEQUENCES[0x5C] = '\\\\'; +ESCAPE_SEQUENCES[0x85] = '\\N'; +ESCAPE_SEQUENCES[0xA0] = '\\_'; +ESCAPE_SEQUENCES[0x2028] = '\\L'; +ESCAPE_SEQUENCES[0x2029] = '\\P'; + +var DEPRECATED_BOOLEANS_SYNTAX = [ + 'y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON', + 'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF' +]; + +function compileStyleMap(schema, map) { + var result, keys, index, length, tag, style, type; + + if (map === null) { return {}; } + + result = {}; + keys = Object.keys(map); + + for (index = 0, length = keys.length; index < length; index += 1) { + tag = keys[index]; + style = String(map[tag]); + + if (tag.slice(0, 2) === '!!') { + tag = 'tag:yaml.org,2002:' + tag.slice(2); + } + type = schema.compiledTypeMap['fallback'][tag]; + + if (type && _hasOwnProperty$3.call(type.styleAliases, style)) { + style = type.styleAliases[style]; + } + + result[tag] = style; + } + + return result; +} + +function encodeHex(character) { + var string, handle, length; + + string = character.toString(16).toUpperCase(); + + if (character <= 0xFF) { + handle = 'x'; + length = 2; + } else if (character <= 0xFFFF) { + handle = 'u'; + length = 4; + } else if (character <= 0xFFFFFFFF) { + handle = 'U'; + length = 8; + } else { + throw new YAMLException$5('code point within a string may not be greater than 0xFFFFFFFF'); + } + + return '\\' + handle + common$7.repeat('0', length - string.length) + string; +} + +function State$1(options) { + this.schema = options['schema'] || DEFAULT_FULL_SCHEMA$2; + this.indent = Math.max(1, (options['indent'] || 2)); + this.skipInvalid = options['skipInvalid'] || false; + this.flowLevel = (common$7.isNothing(options['flowLevel']) ? -1 : options['flowLevel']); + this.styleMap = compileStyleMap(this.schema, options['styles'] || null); + this.sortKeys = options['sortKeys'] || false; + this.lineWidth = options['lineWidth'] || 80; + this.noRefs = options['noRefs'] || false; + this.noCompatMode = options['noCompatMode'] || false; + + this.implicitTypes = this.schema.compiledImplicit; + this.explicitTypes = this.schema.compiledExplicit; + + this.tag = null; + this.result = ''; + + this.duplicates = []; + this.usedDuplicates = null; +} + +// Indents every line in a string. Empty lines (\n only) are not indented. +function indentString(string, spaces) { + var ind = common$7.repeat(' ', spaces), + position = 0, + next = -1, + result = '', + line, + length = string.length; + + while (position < length) { + next = string.indexOf('\n', position); + if (next === -1) { + line = string.slice(position); + position = length; + } else { + line = string.slice(position, next + 1); + position = next + 1; + } + + if (line.length && line !== '\n') { result += ind; } + + result += line; + } + + return result; +} + +function generateNextLine(state, level) { + return '\n' + common$7.repeat(' ', state.indent * level); +} + +function testImplicitResolving(state, str) { + var index, length, type; + + for (index = 0, length = state.implicitTypes.length; index < length; index += 1) { + type = state.implicitTypes[index]; + + if (type.resolve(str)) { + return true; + } + } + + return false; +} + +// [33] s-white ::= s-space | s-tab +function isWhitespace(c) { + return c === CHAR_SPACE || c === CHAR_TAB; +} + +// Returns true if the character can be printed without escaping. +// From YAML 1.2: "any allowed characters known to be non-printable +// should also be escaped. [However,] This isn’t mandatory" +// Derived from nb-char - \t - #x85 - #xA0 - #x2028 - #x2029. +function isPrintable(c) { + return (0x00020 <= c && c <= 0x00007E) + || ((0x000A1 <= c && c <= 0x00D7FF) && c !== 0x2028 && c !== 0x2029) + || ((0x0E000 <= c && c <= 0x00FFFD) && c !== 0xFEFF /* BOM */) + || (0x10000 <= c && c <= 0x10FFFF); +} + +// Simplified test for values allowed after the first character in plain style. +function isPlainSafe(c) { + // Uses a subset of nb-char - c-flow-indicator - ":" - "#" + // where nb-char ::= c-printable - b-char - c-byte-order-mark. + return isPrintable(c) && c !== 0xFEFF + // - c-flow-indicator + && c !== CHAR_COMMA + && c !== CHAR_LEFT_SQUARE_BRACKET + && c !== CHAR_RIGHT_SQUARE_BRACKET + && c !== CHAR_LEFT_CURLY_BRACKET + && c !== CHAR_RIGHT_CURLY_BRACKET + // - ":" - "#" + && c !== CHAR_COLON + && c !== CHAR_SHARP; +} + +// Simplified test for values allowed as the first character in plain style. +function isPlainSafeFirst(c) { + // Uses a subset of ns-char - c-indicator + // where ns-char = nb-char - s-white. + return isPrintable(c) && c !== 0xFEFF + && !isWhitespace(c) // - s-white + // - (c-indicator ::= + // “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}” + && c !== CHAR_MINUS + && c !== CHAR_QUESTION + && c !== CHAR_COLON + && c !== CHAR_COMMA + && c !== CHAR_LEFT_SQUARE_BRACKET + && c !== CHAR_RIGHT_SQUARE_BRACKET + && c !== CHAR_LEFT_CURLY_BRACKET + && c !== CHAR_RIGHT_CURLY_BRACKET + // | “#” | “&” | “*” | “!” | “|” | “>” | “'” | “"” + && c !== CHAR_SHARP + && c !== CHAR_AMPERSAND + && c !== CHAR_ASTERISK + && c !== CHAR_EXCLAMATION + && c !== CHAR_VERTICAL_LINE + && c !== CHAR_GREATER_THAN + && c !== CHAR_SINGLE_QUOTE + && c !== CHAR_DOUBLE_QUOTE + // | “%” | “@” | “`”) + && c !== CHAR_PERCENT + && c !== CHAR_COMMERCIAL_AT + && c !== CHAR_GRAVE_ACCENT; +} + +var STYLE_PLAIN = 1; +var STYLE_SINGLE = 2; +var STYLE_LITERAL = 3; +var STYLE_FOLDED = 4; +var STYLE_DOUBLE = 5; + +// Determines which scalar styles are possible and returns the preferred style. +// lineWidth = -1 => no limit. +// Pre-conditions: str.length > 0. +// Post-conditions: +// STYLE_PLAIN or STYLE_SINGLE => no \n are in the string. +// STYLE_LITERAL => no lines are suitable for folding (or lineWidth is -1). +// STYLE_FOLDED => a line > lineWidth and can be folded (and lineWidth != -1). +function chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth, testAmbiguousType) { + var i; + var char; + var hasLineBreak = false; + var hasFoldableLine = false; // only checked if shouldTrackWidth + var shouldTrackWidth = lineWidth !== -1; + var previousLineBreak = -1; // count the first line correctly + var plain = isPlainSafeFirst(string.charCodeAt(0)) + && !isWhitespace(string.charCodeAt(string.length - 1)); + + if (singleLineOnly) { + // Case: no block styles. + // Check for disallowed characters to rule out plain and single. + for (i = 0; i < string.length; i++) { + char = string.charCodeAt(i); + if (!isPrintable(char)) { + return STYLE_DOUBLE; + } + plain = plain && isPlainSafe(char); + } + } else { + // Case: block styles permitted. + for (i = 0; i < string.length; i++) { + char = string.charCodeAt(i); + if (char === CHAR_LINE_FEED) { + hasLineBreak = true; + // Check if any line can be folded. + if (shouldTrackWidth) { + hasFoldableLine = hasFoldableLine || + // Foldable line = too long, and not more-indented. + (i - previousLineBreak - 1 > lineWidth && + string[previousLineBreak + 1] !== ' '); + previousLineBreak = i; + } + } else if (!isPrintable(char)) { + return STYLE_DOUBLE; + } + plain = plain && isPlainSafe(char); + } + // in case the end is missing a \n + hasFoldableLine = hasFoldableLine || (shouldTrackWidth && + (i - previousLineBreak - 1 > lineWidth && + string[previousLineBreak + 1] !== ' ')); + } + // Although every style can represent \n without escaping, prefer block styles + // for multiline, since they're more readable and they don't add empty lines. + // Also prefer folding a super-long line. + if (!hasLineBreak && !hasFoldableLine) { + // Strings interpretable as another type have to be quoted; + // e.g. the string 'true' vs. the boolean true. + return plain && !testAmbiguousType(string) + ? STYLE_PLAIN : STYLE_SINGLE; + } + // Edge case: block indentation indicator can only have one digit. + if (string[0] === ' ' && indentPerLevel > 9) { + return STYLE_DOUBLE; + } + // At this point we know block styles are valid. + // Prefer literal style unless we want to fold. + return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL; +} + +// Note: line breaking/folding is implemented for only the folded style. +// NB. We drop the last trailing newline (if any) of a returned block scalar +// since the dumper adds its own newline. This always works: +// • No ending newline => unaffected; already using strip "-" chomping. +// • Ending newline => removed then restored. +// Importantly, this keeps the "+" chomp indicator from gaining an extra line. +function writeScalar(state, string, level, iskey) { + state.dump = (function () { + if (string.length === 0) { + return "''"; + } + if (!state.noCompatMode && + DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1) { + return "'" + string + "'"; + } + + var indent = state.indent * Math.max(1, level); // no 0-indent scalars + // As indentation gets deeper, let the width decrease monotonically + // to the lower bound min(state.lineWidth, 40). + // Note that this implies + // state.lineWidth ≤ 40 + state.indent: width is fixed at the lower bound. + // state.lineWidth > 40 + state.indent: width decreases until the lower bound. + // This behaves better than a constant minimum width which disallows narrower options, + // or an indent threshold which causes the width to suddenly increase. + var lineWidth = state.lineWidth === -1 + ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent); + + // Without knowing if keys are implicit/explicit, assume implicit for safety. + var singleLineOnly = iskey + // No block styles in flow mode. + || (state.flowLevel > -1 && level >= state.flowLevel); + function testAmbiguity(string) { + return testImplicitResolving(state, string); + } + + switch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth, testAmbiguity)) { + case STYLE_PLAIN: + return string; + case STYLE_SINGLE: + return "'" + string.replace(/'/g, "''") + "'"; + case STYLE_LITERAL: + return '|' + blockHeader(string, state.indent) + + dropEndingNewline(indentString(string, indent)); + case STYLE_FOLDED: + return '>' + blockHeader(string, state.indent) + + dropEndingNewline(indentString(foldString(string, lineWidth), indent)); + case STYLE_DOUBLE: + return '"' + escapeString(string, lineWidth) + '"'; + default: + throw new YAMLException$5('impossible error: invalid scalar style'); + } + }()); +} + +// Pre-conditions: string is valid for a block scalar, 1 <= indentPerLevel <= 9. +function blockHeader(string, indentPerLevel) { + var indentIndicator = (string[0] === ' ') ? String(indentPerLevel) : ''; + + // note the special case: the string '\n' counts as a "trailing" empty line. + var clip = string[string.length - 1] === '\n'; + var keep = clip && (string[string.length - 2] === '\n' || string === '\n'); + var chomp = keep ? '+' : (clip ? '' : '-'); + + return indentIndicator + chomp + '\n'; +} + +// (See the note for writeScalar.) +function dropEndingNewline(string) { + return string[string.length - 1] === '\n' ? string.slice(0, -1) : string; +} + +// Note: a long line without a suitable break point will exceed the width limit. +// Pre-conditions: every char in str isPrintable, str.length > 0, width > 0. +function foldString(string, width) { + // In folded style, $k$ consecutive newlines output as $k+1$ newlines— + // unless they're before or after a more-indented line, or at the very + // beginning or end, in which case $k$ maps to $k$. + // Therefore, parse each chunk as newline(s) followed by a content line. + var lineRe = /(\n+)([^\n]*)/g; + + // first line (possibly an empty line) + var result = (function () { + var nextLF = string.indexOf('\n'); + nextLF = nextLF !== -1 ? nextLF : string.length; + lineRe.lastIndex = nextLF; + return foldLine(string.slice(0, nextLF), width); + }()); + // If we haven't reached the first content line yet, don't add an extra \n. + var prevMoreIndented = string[0] === '\n' || string[0] === ' '; + var moreIndented; + + // rest of the lines + var match; + while ((match = lineRe.exec(string))) { + var prefix = match[1], line = match[2]; + moreIndented = (line[0] === ' '); + result += prefix + + (!prevMoreIndented && !moreIndented && line !== '' + ? '\n' : '') + + foldLine(line, width); + prevMoreIndented = moreIndented; + } + + return result; +} + +// Greedy line breaking. +// Picks the longest line under the limit each time, +// otherwise settles for the shortest line over the limit. +// NB. More-indented lines *cannot* be folded, as that would add an extra \n. +function foldLine(line, width) { + if (line === '' || line[0] === ' ') { return line; } + + // Since a more-indented line adds a \n, breaks can't be followed by a space. + var breakRe = / [^ ]/g; // note: the match index will always be <= length-2. + var match; + // start is an inclusive index. end, curr, and next are exclusive. + var start = 0, end, curr = 0, next = 0; + var result = ''; + + // Invariants: 0 <= start <= length-1. + // 0 <= curr <= next <= max(0, length-2). curr - start <= width. + // Inside the loop: + // A match implies length >= 2, so curr and next are <= length-2. + while ((match = breakRe.exec(line))) { + next = match.index; + // maintain invariant: curr - start <= width + if (next - start > width) { + end = (curr > start) ? curr : next; // derive end <= length-2 + result += '\n' + line.slice(start, end); + // skip the space that was output as \n + start = end + 1; // derive start <= length-1 + } + curr = next; + } + + // By the invariants, start <= length-1, so there is something left over. + // It is either the whole string or a part starting from non-whitespace. + result += '\n'; + // Insert a break if the remainder is too long and there is a break available. + if (line.length - start > width && curr > start) { + result += line.slice(start, curr) + '\n' + line.slice(curr + 1); + } else { + result += line.slice(start); + } + + return result.slice(1); // drop extra \n joiner +} + +// Escapes a double-quoted string. +function escapeString(string) { + var result = ''; + var char; + var escapeSeq; + + for (var i = 0; i < string.length; i++) { + char = string.charCodeAt(i); + escapeSeq = ESCAPE_SEQUENCES[char]; + result += !escapeSeq && isPrintable(char) + ? string[i] + : escapeSeq || encodeHex(char); + } + + return result; +} + +function writeFlowSequence(state, level, object) { + var _result = '', + _tag = state.tag, + index, + length; + + for (index = 0, length = object.length; index < length; index += 1) { + // Write only valid elements. + if (writeNode(state, level, object[index], false, false)) { + if (index !== 0) { _result += ', '; } + _result += state.dump; + } + } + + state.tag = _tag; + state.dump = '[' + _result + ']'; +} + +function writeBlockSequence(state, level, object, compact) { + var _result = '', + _tag = state.tag, + index, + length; + + for (index = 0, length = object.length; index < length; index += 1) { + // Write only valid elements. + if (writeNode(state, level + 1, object[index], true, true)) { + if (!compact || index !== 0) { + _result += generateNextLine(state, level); + } + _result += '- ' + state.dump; + } + } + + state.tag = _tag; + state.dump = _result || '[]'; // Empty sequence if no valid values. +} + +function writeFlowMapping(state, level, object) { + var _result = '', + _tag = state.tag, + objectKeyList = Object.keys(object), + index, + length, + objectKey, + objectValue, + pairBuffer; + + for (index = 0, length = objectKeyList.length; index < length; index += 1) { + pairBuffer = ''; + + if (index !== 0) { pairBuffer += ', '; } + + objectKey = objectKeyList[index]; + objectValue = object[objectKey]; + + if (!writeNode(state, level, objectKey, false, false)) { + continue; // Skip this pair because of invalid key; + } + + if (state.dump.length > 1024) { pairBuffer += '? '; } + + pairBuffer += state.dump + ': '; + + if (!writeNode(state, level, objectValue, false, false)) { + continue; // Skip this pair because of invalid value. + } + + pairBuffer += state.dump; + + // Both key and value are valid. + _result += pairBuffer; + } + + state.tag = _tag; + state.dump = '{' + _result + '}'; +} + +function writeBlockMapping(state, level, object, compact) { + var _result = '', + _tag = state.tag, + objectKeyList = Object.keys(object), + index, + length, + objectKey, + objectValue, + explicitPair, + pairBuffer; + + // Allow sorting keys so that the output file is deterministic + if (state.sortKeys === true) { + // Default sorting + objectKeyList.sort(); + } else if (typeof state.sortKeys === 'function') { + // Custom sort function + objectKeyList.sort(state.sortKeys); + } else if (state.sortKeys) { + // Something is wrong + throw new YAMLException$5('sortKeys must be a boolean or a function'); + } + + for (index = 0, length = objectKeyList.length; index < length; index += 1) { + pairBuffer = ''; + + if (!compact || index !== 0) { + pairBuffer += generateNextLine(state, level); + } + + objectKey = objectKeyList[index]; + objectValue = object[objectKey]; + + if (!writeNode(state, level + 1, objectKey, true, true, true)) { + continue; // Skip this pair because of invalid key. + } + + explicitPair = (state.tag !== null && state.tag !== '?') || + (state.dump && state.dump.length > 1024); + + if (explicitPair) { + if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) { + pairBuffer += '?'; + } else { + pairBuffer += '? '; + } + } + + pairBuffer += state.dump; + + if (explicitPair) { + pairBuffer += generateNextLine(state, level); + } + + if (!writeNode(state, level + 1, objectValue, true, explicitPair)) { + continue; // Skip this pair because of invalid value. + } + + if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) { + pairBuffer += ':'; + } else { + pairBuffer += ': '; + } + + pairBuffer += state.dump; + + // Both key and value are valid. + _result += pairBuffer; + } + + state.tag = _tag; + state.dump = _result || '{}'; // Empty mapping if no valid pairs. +} + +function detectType(state, object, explicit) { + var _result, typeList, index, length, type, style; + + typeList = explicit ? state.explicitTypes : state.implicitTypes; + + for (index = 0, length = typeList.length; index < length; index += 1) { + type = typeList[index]; + + if ((type.instanceOf || type.predicate) && + (!type.instanceOf || ((typeof object === 'object') && (object instanceof type.instanceOf))) && + (!type.predicate || type.predicate(object))) { + + state.tag = explicit ? type.tag : '?'; + + if (type.represent) { + style = state.styleMap[type.tag] || type.defaultStyle; + + if (_toString$2.call(type.represent) === '[object Function]') { + _result = type.represent(object, style); + } else if (_hasOwnProperty$3.call(type.represent, style)) { + _result = type.represent[style](object, style); + } else { + throw new YAMLException$5('!<' + type.tag + '> tag resolver accepts not "' + style + '" style'); + } + + state.dump = _result; + } + + return true; + } + } + + return false; +} + +// Serializes `object` and writes it to global `result`. +// Returns true on success, or false on invalid object. +// +function writeNode(state, level, object, block, compact, iskey) { + state.tag = null; + state.dump = object; + + if (!detectType(state, object, false)) { + detectType(state, object, true); + } + + var type = _toString$2.call(state.dump); + + if (block) { + block = (state.flowLevel < 0 || state.flowLevel > level); + } + + var objectOrArray = type === '[object Object]' || type === '[object Array]', + duplicateIndex, + duplicate; + + if (objectOrArray) { + duplicateIndex = state.duplicates.indexOf(object); + duplicate = duplicateIndex !== -1; + } + + if ((state.tag !== null && state.tag !== '?') || duplicate || (state.indent !== 2 && level > 0)) { + compact = false; + } + + if (duplicate && state.usedDuplicates[duplicateIndex]) { + state.dump = '*ref_' + duplicateIndex; + } else { + if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) { + state.usedDuplicates[duplicateIndex] = true; + } + if (type === '[object Object]') { + if (block && (Object.keys(state.dump).length !== 0)) { + writeBlockMapping(state, level, state.dump, compact); + if (duplicate) { + state.dump = '&ref_' + duplicateIndex + state.dump; + } + } else { + writeFlowMapping(state, level, state.dump); + if (duplicate) { + state.dump = '&ref_' + duplicateIndex + ' ' + state.dump; + } + } + } else if (type === '[object Array]') { + if (block && (state.dump.length !== 0)) { + writeBlockSequence(state, level, state.dump, compact); + if (duplicate) { + state.dump = '&ref_' + duplicateIndex + state.dump; + } + } else { + writeFlowSequence(state, level, state.dump); + if (duplicate) { + state.dump = '&ref_' + duplicateIndex + ' ' + state.dump; + } + } + } else if (type === '[object String]') { + if (state.tag !== '?') { + writeScalar(state, state.dump, level, iskey); + } + } else { + if (state.skipInvalid) { return false; } + throw new YAMLException$5('unacceptable kind of an object to dump ' + type); + } + + if (state.tag !== null && state.tag !== '?') { + state.dump = '!<' + state.tag + '> ' + state.dump; + } + } + + return true; +} + +function getDuplicateReferences(object, state) { + var objects = [], + duplicatesIndexes = [], + index, + length; + + inspectNode(object, objects, duplicatesIndexes); + + for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) { + state.duplicates.push(objects[duplicatesIndexes[index]]); + } + state.usedDuplicates = new Array(length); +} + +function inspectNode(object, objects, duplicatesIndexes) { + var objectKeyList, + index, + length; + + if (object !== null && typeof object === 'object') { + index = objects.indexOf(object); + if (index !== -1) { + if (duplicatesIndexes.indexOf(index) === -1) { + duplicatesIndexes.push(index); + } + } else { + objects.push(object); + + if (Array.isArray(object)) { + for (index = 0, length = object.length; index < length; index += 1) { + inspectNode(object[index], objects, duplicatesIndexes); + } + } else { + objectKeyList = Object.keys(object); + + for (index = 0, length = objectKeyList.length; index < length; index += 1) { + inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes); + } + } + } + } +} + +function dump$1(input, options) { + options = options || {}; + + var state = new State$1(options); + + if (!state.noRefs) { getDuplicateReferences(input, state); } + + if (writeNode(state, 0, input, true, true)) { return state.dump + '\n'; } + + return ''; +} + +function safeDump$1(input, options) { + return dump$1(input, common$7.extend({ schema: DEFAULT_SAFE_SCHEMA$2 }, options)); +} + +var dump_1 = dump$1; +var safeDump_1 = safeDump$1; + +var dumper$1 = { + dump: dump_1, + safeDump: safeDump_1 +}; + +var loader = loader$1; +var dumper = dumper$1; + + +function deprecated(name) { + return function () { + throw new Error('Function ' + name + ' is deprecated and cannot be used.'); + }; +} + + +var Type = type; +var Schema = schema; +var FAILSAFE_SCHEMA = failsafe; +var JSON_SCHEMA = json; +var CORE_SCHEMA = core; +var DEFAULT_SAFE_SCHEMA = default_safe; +var DEFAULT_FULL_SCHEMA = default_full; +var load = loader.load; +var loadAll = loader.loadAll; +var safeLoad = loader.safeLoad; +var safeLoadAll = loader.safeLoadAll; +var dump = dumper.dump; +var safeDump = dumper.safeDump; +var YAMLException = exception; + +// Deprecated schema names from JS-YAML 2.0.x +var MINIMAL_SCHEMA = failsafe; +var SAFE_SCHEMA = default_safe; +var DEFAULT_SCHEMA = default_full; + +// Deprecated functions from JS-YAML 1.x.x +var scan = deprecated('scan'); +var parse = deprecated('parse'); +var compose = deprecated('compose'); +var addConstructor = deprecated('addConstructor'); + +var jsYaml = { + Type: Type, + Schema: Schema, + FAILSAFE_SCHEMA: FAILSAFE_SCHEMA, + JSON_SCHEMA: JSON_SCHEMA, + CORE_SCHEMA: CORE_SCHEMA, + DEFAULT_SAFE_SCHEMA: DEFAULT_SAFE_SCHEMA, + DEFAULT_FULL_SCHEMA: DEFAULT_FULL_SCHEMA, + load: load, + loadAll: loadAll, + safeLoad: safeLoad, + safeLoadAll: safeLoadAll, + dump: dump, + safeDump: safeDump, + YAMLException: YAMLException, + MINIMAL_SCHEMA: MINIMAL_SCHEMA, + SAFE_SCHEMA: SAFE_SCHEMA, + DEFAULT_SCHEMA: DEFAULT_SCHEMA, + scan: scan, + parse: parse, + compose: compose, + addConstructor: addConstructor +}; + +var yaml = jsYaml; + + +var index = yaml; + +var frontMatter = function(dom, data) { + var el = dom.querySelector('script[type="text/front-matter"]'); + + //TODO If we don't have a local element, make a request for the document. + if (el) { + var text = el.textContent; + var localData = index.safeLoad(text); + + data.title = localData.title; + data.description = localData.description; + data.authors = localData.authors.map(function (author, i) { + var a = {}; + var name = Object.keys(author)[0]; + var names = name.split(" "); + a.firstName = names.slice(0, names.length - 1).join(" "); + a.lastName = names[names.length -1]; + a.personalURL = author[name]; + if(localData.affiliations[i]) { + var affiliation = Object.keys(localData.affiliations[i])[0]; + a.affiliation = affiliation; + a.affiliationURL = localData.affiliations[i][affiliation]; + } + return a; + }); + } + +}; + +var bibtexParse = createCommonjsModule(function (module, exports) { +/* start bibtexParse 0.0.22 */ + +//Original work by Henrik Muehe (c) 2010 +// +//CommonJS port by Mikola Lysenko 2013 +// +//Port to Browser lib by ORCID / RCPETERS +// +//Issues: +//no comment handling within strings +//no string concatenation +//no variable values yet +//Grammar implemented here: +//bibtex -> (string | preamble | comment | entry)*; +//string -> '@STRING' '{' key_equals_value '}'; +//preamble -> '@PREAMBLE' '{' value '}'; +//comment -> '@COMMENT' '{' value '}'; +//entry -> '@' key '{' key ',' key_value_list '}'; +//key_value_list -> key_equals_value (',' key_equals_value)*; +//key_equals_value -> key '=' value; +//value -> value_quotes | value_braces | key; +//value_quotes -> '"' .*? '"'; // not quite +//value_braces -> '{' .*? '"'; // not quite +(function(exports) { + + function BibtexParser() { + + this.months = ["jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sep", "oct", "nov", "dec"]; + this.notKey = [',','{','}',' ','=']; + this.pos = 0; + this.input = ""; + this.entries = new Array(); + + this.currentEntry = ""; + + this.setInput = function(t) { + this.input = t; + }; + + this.getEntries = function() { + return this.entries; + }; + + this.isWhitespace = function(s) { + return (s == ' ' || s == '\r' || s == '\t' || s == '\n'); + }; + + this.match = function(s, canCommentOut) { + if (canCommentOut == undefined || canCommentOut == null) + { canCommentOut = true; } + this.skipWhitespace(canCommentOut); + if (this.input.substring(this.pos, this.pos + s.length) == s) { + this.pos += s.length; + } else { + throw "Token mismatch, expected " + s + ", found " + + this.input.substring(this.pos); + } + this.skipWhitespace(canCommentOut); + }; + + this.tryMatch = function(s, canCommentOut) { + if (canCommentOut == undefined || canCommentOut == null) + { canCommentOut = true; } + this.skipWhitespace(canCommentOut); + if (this.input.substring(this.pos, this.pos + s.length) == s) { + return true; + } else { + return false; + } + this.skipWhitespace(canCommentOut); + }; + + /* when search for a match all text can be ignored, not just white space */ + this.matchAt = function() { + var this$1 = this; + + while (this.input.length > this.pos && this.input[this.pos] != '@') { + this$1.pos++; + } + + if (this.input[this.pos] == '@') { + return true; + } + return false; + }; + + this.skipWhitespace = function(canCommentOut) { + var this$1 = this; + + while (this.isWhitespace(this.input[this.pos])) { + this$1.pos++; + } + if (this.input[this.pos] == "%" && canCommentOut == true) { + while (this.input[this.pos] != "\n") { + this$1.pos++; + } + this.skipWhitespace(canCommentOut); + } + }; + + this.value_braces = function() { + var this$1 = this; + + var bracecount = 0; + this.match("{", false); + var start = this.pos; + var escaped = false; + while (true) { + if (!escaped) { + if (this$1.input[this$1.pos] == '}') { + if (bracecount > 0) { + bracecount--; + } else { + var end = this$1.pos; + this$1.match("}", false); + return this$1.input.substring(start, end); + } + } else if (this$1.input[this$1.pos] == '{') { + bracecount++; + } else if (this$1.pos >= this$1.input.length - 1) { + throw "Unterminated value"; + } + } + if (this$1.input[this$1.pos] == '\\' && escaped == false) + { escaped = true; } + else + { escaped = false; } + this$1.pos++; + } + }; + + this.value_comment = function() { + var this$1 = this; + + var str = ''; + var brcktCnt = 0; + while (!(this.tryMatch("}", false) && brcktCnt == 0)) { + str = str + this$1.input[this$1.pos]; + if (this$1.input[this$1.pos] == '{') + { brcktCnt++; } + if (this$1.input[this$1.pos] == '}') + { brcktCnt--; } + if (this$1.pos >= this$1.input.length - 1) { + throw "Unterminated value:" + this$1.input.substring(start); + } + this$1.pos++; + } + return str; + }; + + this.value_quotes = function() { + var this$1 = this; + + this.match('"', false); + var start = this.pos; + var escaped = false; + while (true) { + if (!escaped) { + if (this$1.input[this$1.pos] == '"') { + var end = this$1.pos; + this$1.match('"', false); + return this$1.input.substring(start, end); + } else if (this$1.pos >= this$1.input.length - 1) { + throw "Unterminated value:" + this$1.input.substring(start); + } + } + if (this$1.input[this$1.pos] == '\\' && escaped == false) + { escaped = true; } + else + { escaped = false; } + this$1.pos++; + } + }; + + this.single_value = function() { + var start = this.pos; + if (this.tryMatch("{")) { + return this.value_braces(); + } else if (this.tryMatch('"')) { + return this.value_quotes(); + } else { + var k = this.key(); + if (k.match("^[0-9]+$")) + { return k; } + else if (this.months.indexOf(k.toLowerCase()) >= 0) + { return k.toLowerCase(); } + else + { throw "Value expected:" + this.input.substring(start) + ' for key: ' + k; } + + } + }; + + this.value = function() { + var this$1 = this; + + var values = []; + values.push(this.single_value()); + while (this.tryMatch("#")) { + this$1.match("#"); + values.push(this$1.single_value()); + } + return values.join(""); + }; + + this.key = function() { + var this$1 = this; + + var start = this.pos; + while (true) { + if (this$1.pos >= this$1.input.length) { + throw "Runaway key"; + } + // а-яА-Я is Cyrillic + //console.log(this.input[this.pos]); + if (this$1.notKey.indexOf(this$1.input[this$1.pos]) >= 0) { + return this$1.input.substring(start, this$1.pos); + } else { + this$1.pos++; + + } + } + }; + + this.key_equals_value = function() { + var key = this.key(); + if (this.tryMatch("=")) { + this.match("="); + var val = this.value(); + return [ key, val ]; + } else { + throw "... = value expected, equals sign missing:" + + this.input.substring(this.pos); + } + }; + + this.key_value_list = function() { + var this$1 = this; + + var kv = this.key_equals_value(); + this.currentEntry['entryTags'] = {}; + this.currentEntry['entryTags'][kv[0]] = kv[1]; + while (this.tryMatch(",")) { + this$1.match(","); + // fixes problems with commas at the end of a list + if (this$1.tryMatch("}")) { + break; + } + + kv = this$1.key_equals_value(); + this$1.currentEntry['entryTags'][kv[0]] = kv[1]; + } + }; + + this.entry_body = function(d) { + this.currentEntry = {}; + this.currentEntry['citationKey'] = this.key(); + this.currentEntry['entryType'] = d.substring(1); + this.match(","); + this.key_value_list(); + this.entries.push(this.currentEntry); + }; + + this.directive = function() { + this.match("@"); + return "@" + this.key(); + }; + + this.preamble = function() { + this.currentEntry = {}; + this.currentEntry['entryType'] = 'PREAMBLE'; + this.currentEntry['entry'] = this.value_comment(); + this.entries.push(this.currentEntry); + }; + + this.comment = function() { + this.currentEntry = {}; + this.currentEntry['entryType'] = 'COMMENT'; + this.currentEntry['entry'] = this.value_comment(); + this.entries.push(this.currentEntry); + }; + + this.entry = function(d) { + this.entry_body(d); + }; + + this.bibtex = function() { + var this$1 = this; + + while (this.matchAt()) { + var d = this$1.directive(); + this$1.match("{"); + if (d == "@STRING") { + this$1.string(); + } else if (d == "@PREAMBLE") { + this$1.preamble(); + } else if (d == "@COMMENT") { + this$1.comment(); + } else { + this$1.entry(d); + } + this$1.match("}"); + } + }; + } + + exports.toJSON = function(bibtex) { + var b = new BibtexParser(); + b.setInput(bibtex); + b.bibtex(); + return b.entries; + }; + + /* added during hackathon don't hate on me */ + exports.toBibtex = function(json) { + var out = ''; + for ( var i in json) { + out += "@" + json[i].entryType; + out += '{'; + if (json[i].citationKey) + { out += json[i].citationKey + ', '; } + if (json[i].entry) + { out += json[i].entry ; } + if (json[i].entryTags) { + var tags = ''; + for (var jdx in json[i].entryTags) { + if (tags.length != 0) + { tags += ', '; } + tags += jdx + '= {' + json[i].entryTags[jdx] + '}'; + } + out += tags; + } + out += '}\n\n'; + } + return out; + + }; + +})(exports); + +/* end bibtexParse */ +}); + +var bibliography = function(dom, data) { + var el = dom.querySelector('script[type="text/bibliography"]'); + + //TODO If we don't have a local element, make a request for the document. + if (el) { + var rawBib = el.textContent; + var bibliography = {}; + bibtexParse.toJSON(rawBib).forEach(function (e) { + bibliography[e.citationKey] = e.entryTags; + bibliography[e.citationKey].type = e.entryType; + }); + + var citations = {}; + var citeTags = [].slice.apply(dom.querySelectorAll("dt-cite")); + citeTags.forEach(function (el) { + var citationKeys = el.getAttribute("key").split(","); + citationKeys.forEach(function (key) { + if (bibliography[key]) { + citations[key] = bibliography[key]; + } else { + console.warn("No bibliography entry found for: " + key); + } + }); + }); + data.citations = citations; + } +}; + +var meta = function(dom, data) { + var head = dom.querySelector("head"); + + appendHtml(head, ("\n \n \n \n \n " + (data.title) + "\n ")); + + appendHtml(head, ("\n \n \n \n ")); + data.authors.forEach(function (a) { + appendHtml(head, ("\n ")); + }); + + appendHtml(head, ("\n \n \n \n \n \n \n \n \n ")); + + appendHtml(head, ("\n \n \n \n \n \n \n \n \n ")); + + appendHtml(head, ("\n \n \n \n \n \n \n \n \n \n \n \n \n ")); + data.authors.forEach(function (a) { + appendHtml(head, ("\n \n \n ")); + }); + + if (data.citations) { + var citationKeys = Object.keys(data.citations); + citationKeys.forEach(function (key) { + console.log(key); + appendHtml(head, ("\n \n ")); + }); + } +}; + + +function appendHtml(el, html) { + el.innerHTML += html; +} + +function citation_meta_content(ref){ + var content = "citation_title=" + (ref.title) + ";"; + ref.author.split(" and ").forEach(function (author) { + content += "citation_author=" + (author.trim()) + ";"; + }); + if ("journal" in ref){ + content += "citation_journal_title=" + (ref.journal) + ";"; + } + if ("volume" in ref) { + content += "citation_volume=" + (ref.volume) + ";"; + } + if ("issue" in ref || "number" in ref){ + content += "citation_number=" + (ref.issue || ref.number) + ";"; + } + /*content += `citation_first_page=${};`; + content += `citation_publication_date=${};`;*/ + return content; +} + +var logo = "\n \n\n"; + +var html$1 = "\n\n\n
\n \n " + logo + "\n Distill\n \n
\n
\n
\n"; + +var header = function(dom, data) { + dom.querySelector('dt-header').innerHTML = html$1; +}; + +var html$2 = "\n\n\n
\n

References

\n \n

Errors, Reuse, and Citation

\n

If you see mistakes or want to suggest changes, please submit a pull request on github.

\n

Diagrams and text are licensed under Creative Commons Attribution CC-BY 2.0, unless noted otherwise, with the source available on available on github. The figures that have been reused from other sources don't fall under this license and can be recognized by a note in their caption: “Figure from …”.

\n

For attribution in academic contexts, please cite this work as

\n
\n  

BibTeX citation

\n
\n
\n"; + +// distill.data().then(function(data) { +// var as = el.querySelectorAll("a.github"); +// [].forEach.call(as, function(a) { +// a.setAttribute("href", data.github); +// }); +// el.querySelector(".citation.short").textContent = data.concatenatedAuthors + ", " + '"' + data.title + '", Distill, ' + data.firstPublishedYear + "."; +// var bibtex = "@article{" + data.slug + ",\n"; +// bibtex += " author = {" + data.bibtexAuthors + "},\n"; +// bibtex += " title = {" + data.title + "},\n"; +// bibtex += " journal = {Distill},\n"; +// bibtex += " year = {" + data.firstPublishedYear + "},\n"; +// bibtex += " note = {" + data.url + "}\n"; +// bibtex += "}"; +// el.querySelector(".citation.long").textContent = bibtex; +// }) + +var appendix = function(dom, data) { + var el = dom.querySelector('dt-appendix'); + if (el) { el.innerHTML = html$2; } +}; + +var html$3 = "\n\n\n
\n \n " + logo + "\n Distill\n is dedicated to clear explanations of machine learning\n
\n"; + +var footer = function(dom, data) { + var el = dom.querySelector("dt-footer"); + if(el) { el.innerHTML = html$3; } +}; + +var citation = function(dom, data) { + var citations = []; + if (data.citations) { + citations = Object.keys(data.citations).map(function (c) { return data.citations[c]; }); + citations.sort(function (a, b) { + return a.author.localeCompare(b.author); + }); + } + + var citeTags = [].slice.apply(dom.querySelectorAll("dt-cite")); + citeTags.forEach(function (el) { + var keys = el.textContent.split(","); + var cite_string = keys.map(inline_cite).join(", "); + el.innerHTML = cite_string; + }); + + var bibEl = dom.querySelector("dt-bibliography"); + if (bibEl) { + var ol = dom.createElement("ol"); + citations.forEach(function (citation) { + var el = dom.createElement("li"); + el.textContent = bibliography_cite(citation); + ol.appendChild(el); + }); + bibEl.appendChild(ol); + } + + function inline_cite(key){ + if (key in data.citations){ + var ent = data.citations[key]; + var names = ent.author.split(" and "); + names = names.map(function (name) { return name.split(",")[0].trim(); }); + var year = ent.year; + if (names.length == 1) { return names[0] + ", " + year; } + if (names.length == 2) { return names[0] + " & " + names[1] + ", " + year; } + if (names.length > 2) { return names[0] + ", et al., " + year; } + } else { + return "?"; + } + } + + function bibliography_cite(ent){ + if (ent){ + var names = ent.author.split(" and "); + var cite = ""; + var name_strings = names.map(function (name) { + var last = name.split(",")[0].trim(); + var firsts = name.split(",")[1]; + if (firsts != undefined) { + var initials = firsts.trim().split(" ").map(function (s) { return s.trim()[0]; }); + return last + ", " + initials.join(".")+"."; + } + return last; + }); + if (names.length > 1) { + cite += name_strings.slice(0, names.length-1).join(", "); + cite += " and " + name_strings[names.length-1]; + } else { + cite += name_strings[0]; + } + cite += ", " + ent.year + ". "; + cite += ent.title + ". "; + cite += (ent.journal || ent.booktitle || ""); + if ("volume" in ent){ + var issue = ent.issue || ent.number; + issue = (issue != undefined)? "("+issue+")" : ""; + cite += ", Vol " + ent.volume + issue; + } + if ("pages" in ent){ + cite += ", pp. " + ent.pages; + } + cite += ". "; + return cite + } else { + return "?"; + } + } + + + //https://scholar.google.com/scholar?q=allintitle%3ADocument+author%3Aolah + function get_URL(ent){ + if (ent){ + var names = ent.author.split(" and "); + names = names.map(function (name) { return name.split(",")[0].trim(); }); + var title = ent.title.split(" ");//.replace(/[,:]/, "") + var url = "http://search.labs.crossref.org/dois?";//""https://scholar.google.com/scholar?" + url += uris({q: names.join(" ") + " " + title.join(" ")}); + } + + } +}; + +var marked = createCommonjsModule(function (module, exports) { +/** + * marked - a markdown parser + * Copyright (c) 2011-2014, Christopher Jeffrey. (MIT Licensed) + * https://github.com/chjj/marked + */ + +(function() { + +/** + * Block-Level Grammar + */ + +var block = { + newline: /^\n+/, + code: /^( {4}[^\n]+\n*)+/, + fences: noop, + hr: /^( *[-*_]){3,} *(?:\n+|$)/, + heading: /^ *(#{1,6}) *([^\n]+?) *#* *(?:\n+|$)/, + nptable: noop, + lheading: /^([^\n]+)\n *(=|-){2,} *(?:\n+|$)/, + blockquote: /^( *>[^\n]+(\n(?!def)[^\n]+)*\n*)+/, + list: /^( *)(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?!\1bull )\n*|\s*$)/, + html: /^ *(?:comment *(?:\n|\s*$)|closed *(?:\n{2,}|\s*$)|closing *(?:\n{2,}|\s*$))/, + def: /^ *\[([^\]]+)\]: *]+)>?(?: +["(]([^\n]+)[")])? *(?:\n+|$)/, + table: noop, + paragraph: /^((?:[^\n]+\n?(?!hr|heading|lheading|blockquote|tag|def))+)\n*/, + text: /^[^\n]+/ +}; + +block.bullet = /(?:[*+-]|\d+\.)/; +block.item = /^( *)(bull) [^\n]*(?:\n(?!\1bull )[^\n]*)*/; +block.item = replace(block.item, 'gm') + (/bull/g, block.bullet) + (); + +block.list = replace(block.list) + (/bull/g, block.bullet) + ('hr', '\\n+(?=\\1?(?:[-*_] *){3,}(?:\\n+|$))') + ('def', '\\n+(?=' + block.def.source + ')') + (); + +block.blockquote = replace(block.blockquote) + ('def', block.def) + (); + +block._tag = '(?!(?:' + + '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'; + +block.html = replace(block.html) + ('comment', //) + ('closed', /<(tag)[\s\S]+?<\/\1>/) + ('closing', /])*?>/) + (/tag/g, block._tag) + (); + +block.paragraph = replace(block.paragraph) + ('hr', block.hr) + ('heading', block.heading) + ('lheading', block.lheading) + ('blockquote', block.blockquote) + ('tag', '<' + block._tag) + ('def', block.def) + (); + +/** + * Normal Block Grammar + */ + +block.normal = merge({}, block); + +/** + * GFM Block Grammar + */ + +block.gfm = merge({}, block.normal, { + fences: /^ *(`{3,}|~{3,})[ \.]*(\S+)? *\n([\s\S]*?)\s*\1 *(?:\n+|$)/, + paragraph: /^/, + heading: /^ *(#{1,6}) +([^\n]+?) *#* *(?:\n+|$)/ +}); + +block.gfm.paragraph = replace(block.paragraph) + ('(?!', '(?!' + + block.gfm.fences.source.replace('\\1', '\\2') + '|' + + block.list.source.replace('\\1', '\\3') + '|') + (); + +/** + * GFM + Tables Block Grammar + */ + +block.tables = merge({}, block.gfm, { + nptable: /^ *(\S.*\|.*)\n *([-:]+ *\|[-| :]*)\n((?:.*\|.*(?:\n|$))*)\n*/, + table: /^ *\|(.+)\n *\|( *[-:]+[-| :]*)\n((?: *\|.*(?:\n|$))*)\n*/ +}); + +/** + * Block Lexer + */ + +function Lexer(options) { + this.tokens = []; + this.tokens.links = {}; + this.options = options || marked.defaults; + this.rules = block.normal; + + if (this.options.gfm) { + if (this.options.tables) { + this.rules = block.tables; + } else { + this.rules = block.gfm; + } + } +} + +/** + * Expose Block Rules + */ + +Lexer.rules = block; + +/** + * Static Lex Method + */ + +Lexer.lex = function(src, options) { + var lexer = new Lexer(options); + return lexer.lex(src); +}; + +/** + * Preprocessing + */ + +Lexer.prototype.lex = function(src) { + src = src + .replace(/\r\n|\r/g, '\n') + .replace(/\t/g, ' ') + .replace(/\u00a0/g, ' ') + .replace(/\u2424/g, '\n'); + + return this.token(src, true); +}; + +/** + * Lexing + */ + +Lexer.prototype.token = function(src, top, bq) { + var this$1 = this; + + var src = src.replace(/^ +$/gm, '') + , next + , loose + , cap + , bull + , b + , item + , space + , i + , l; + + while (src) { + // newline + if (cap = this$1.rules.newline.exec(src)) { + src = src.substring(cap[0].length); + if (cap[0].length > 1) { + this$1.tokens.push({ + type: 'space' + }); + } + } + + // code + if (cap = this$1.rules.code.exec(src)) { + src = src.substring(cap[0].length); + cap = cap[0].replace(/^ {4}/gm, ''); + this$1.tokens.push({ + type: 'code', + text: !this$1.options.pedantic + ? cap.replace(/\n+$/, '') + : cap + }); + continue; + } + + // fences (gfm) + if (cap = this$1.rules.fences.exec(src)) { + src = src.substring(cap[0].length); + this$1.tokens.push({ + type: 'code', + lang: cap[2], + text: cap[3] || '' + }); + continue; + } + + // heading + if (cap = this$1.rules.heading.exec(src)) { + src = src.substring(cap[0].length); + this$1.tokens.push({ + type: 'heading', + depth: cap[1].length, + text: cap[2] + }); + continue; + } + + // table no leading pipe (gfm) + if (top && (cap = this$1.rules.nptable.exec(src))) { + src = src.substring(cap[0].length); + + item = { + type: 'table', + header: cap[1].replace(/^ *| *\| *$/g, '').split(/ *\| */), + align: cap[2].replace(/^ *|\| *$/g, '').split(/ *\| */), + cells: cap[3].replace(/\n$/, '').split('\n') + }; + + for (i = 0; i < item.align.length; i++) { + if (/^ *-+: *$/.test(item.align[i])) { + item.align[i] = 'right'; + } else if (/^ *:-+: *$/.test(item.align[i])) { + item.align[i] = 'center'; + } else if (/^ *:-+ *$/.test(item.align[i])) { + item.align[i] = 'left'; + } else { + item.align[i] = null; + } + } + + for (i = 0; i < item.cells.length; i++) { + item.cells[i] = item.cells[i].split(/ *\| */); + } + + this$1.tokens.push(item); + + continue; + } + + // lheading + if (cap = this$1.rules.lheading.exec(src)) { + src = src.substring(cap[0].length); + this$1.tokens.push({ + type: 'heading', + depth: cap[2] === '=' ? 1 : 2, + text: cap[1] + }); + continue; + } + + // hr + if (cap = this$1.rules.hr.exec(src)) { + src = src.substring(cap[0].length); + this$1.tokens.push({ + type: 'hr' + }); + continue; + } + + // blockquote + if (cap = this$1.rules.blockquote.exec(src)) { + src = src.substring(cap[0].length); + + this$1.tokens.push({ + type: 'blockquote_start' + }); + + cap = cap[0].replace(/^ *> ?/gm, ''); + + // Pass `top` to keep the current + // "toplevel" state. This is exactly + // how markdown.pl works. + this$1.token(cap, top, true); + + this$1.tokens.push({ + type: 'blockquote_end' + }); + + continue; + } + + // list + if (cap = this$1.rules.list.exec(src)) { + src = src.substring(cap[0].length); + bull = cap[2]; + + this$1.tokens.push({ + type: 'list_start', + ordered: bull.length > 1 + }); + + // Get each top-level item. + cap = cap[0].match(this$1.rules.item); + + next = false; + l = cap.length; + i = 0; + + for (; i < l; i++) { + item = cap[i]; + + // Remove the list item's bullet + // so it is seen as the next token. + space = item.length; + item = item.replace(/^ *([*+-]|\d+\.) +/, ''); + + // Outdent whatever the + // list item contains. Hacky. + if (~item.indexOf('\n ')) { + space -= item.length; + item = !this$1.options.pedantic + ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '') + : item.replace(/^ {1,4}/gm, ''); + } + + // Determine whether the next list item belongs here. + // Backpedal if it does not belong in this list. + if (this$1.options.smartLists && i !== l - 1) { + b = block.bullet.exec(cap[i + 1])[0]; + if (bull !== b && !(bull.length > 1 && b.length > 1)) { + src = cap.slice(i + 1).join('\n') + src; + i = l - 1; + } + } + + // Determine whether item is loose or not. + // Use: /(^|\n)(?! )[^\n]+\n\n(?!\s*$)/ + // for discount behavior. + loose = next || /\n\n(?!\s*$)/.test(item); + if (i !== l - 1) { + next = item.charAt(item.length - 1) === '\n'; + if (!loose) { loose = next; } + } + + this$1.tokens.push({ + type: loose + ? 'loose_item_start' + : 'list_item_start' + }); + + // Recurse. + this$1.token(item, false, bq); + + this$1.tokens.push({ + type: 'list_item_end' + }); + } + + this$1.tokens.push({ + type: 'list_end' + }); + + continue; + } + + // html + if (cap = this$1.rules.html.exec(src)) { + src = src.substring(cap[0].length); + this$1.tokens.push({ + type: this$1.options.sanitize + ? 'paragraph' + : 'html', + pre: !this$1.options.sanitizer + && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'), + text: cap[0] + }); + continue; + } + + // def + if ((!bq && top) && (cap = this$1.rules.def.exec(src))) { + src = src.substring(cap[0].length); + this$1.tokens.links[cap[1].toLowerCase()] = { + href: cap[2], + title: cap[3] + }; + continue; + } + + // table (gfm) + if (top && (cap = this$1.rules.table.exec(src))) { + src = src.substring(cap[0].length); + + item = { + type: 'table', + header: cap[1].replace(/^ *| *\| *$/g, '').split(/ *\| */), + align: cap[2].replace(/^ *|\| *$/g, '').split(/ *\| */), + cells: cap[3].replace(/(?: *\| *)?\n$/, '').split('\n') + }; + + for (i = 0; i < item.align.length; i++) { + if (/^ *-+: *$/.test(item.align[i])) { + item.align[i] = 'right'; + } else if (/^ *:-+: *$/.test(item.align[i])) { + item.align[i] = 'center'; + } else if (/^ *:-+ *$/.test(item.align[i])) { + item.align[i] = 'left'; + } else { + item.align[i] = null; + } + } + + for (i = 0; i < item.cells.length; i++) { + item.cells[i] = item.cells[i] + .replace(/^ *\| *| *\| *$/g, '') + .split(/ *\| */); + } + + this$1.tokens.push(item); + + continue; + } + + // top-level paragraph + if (top && (cap = this$1.rules.paragraph.exec(src))) { + src = src.substring(cap[0].length); + this$1.tokens.push({ + type: 'paragraph', + text: cap[1].charAt(cap[1].length - 1) === '\n' + ? cap[1].slice(0, -1) + : cap[1] + }); + continue; + } + + // text + if (cap = this$1.rules.text.exec(src)) { + // Top-level should never reach here. + src = src.substring(cap[0].length); + this$1.tokens.push({ + type: 'text', + text: cap[0] + }); + continue; + } + + if (src) { + throw new + Error('Infinite loop on byte: ' + src.charCodeAt(0)); + } + } + + return this.tokens; +}; + +/** + * Inline-Level Grammar + */ + +var inline = { + escape: /^\\([\\`*{}\[\]()#+\-.!_>])/, + autolink: /^<([^ >]+(@|:\/)[^ >]+)>/, + url: noop, + tag: /^|^<\/?\w+(?:"[^"]*"|'[^']*'|[^'">])*?>/, + link: /^!?\[(inside)\]\(href\)/, + reflink: /^!?\[(inside)\]\s*\[([^\]]*)\]/, + nolink: /^!?\[((?:\[[^\]]*\]|[^\[\]])*)\]/, + strong: /^__([\s\S]+?)__(?!_)|^\*\*([\s\S]+?)\*\*(?!\*)/, + em: /^\b_((?:[^_]|__)+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/, + code: /^(`+)\s*([\s\S]*?[^`])\s*\1(?!`)/, + br: /^ {2,}\n(?!\s*$)/, + del: noop, + text: /^[\s\S]+?(?=[\\?(?:\s+['"]([\s\S]*?)['"])?\s*/; + +inline.link = replace(inline.link) + ('inside', inline._inside) + ('href', inline._href) + (); + +inline.reflink = replace(inline.reflink) + ('inside', inline._inside) + (); + +/** + * Normal Inline Grammar + */ + +inline.normal = merge({}, inline); + +/** + * Pedantic Inline Grammar + */ + +inline.pedantic = merge({}, inline.normal, { + strong: /^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/, + em: /^_(?=\S)([\s\S]*?\S)_(?!_)|^\*(?=\S)([\s\S]*?\S)\*(?!\*)/ +}); + +/** + * GFM Inline Grammar + */ + +inline.gfm = merge({}, inline.normal, { + escape: replace(inline.escape)('])', '~|])')(), + url: /^(https?:\/\/[^\s<]+[^<.,:;"')\]\s])/, + del: /^~~(?=\S)([\s\S]*?\S)~~/, + text: replace(inline.text) + (']|', '~]|') + ('|', '|https?://|') + () +}); + +/** + * GFM + Line Breaks Inline Grammar + */ + +inline.breaks = merge({}, inline.gfm, { + br: replace(inline.br)('{2,}', '*')(), + text: replace(inline.gfm.text)('{2,}', '*')() +}); + +/** + * Inline Lexer & Compiler + */ + +function InlineLexer(links, options) { + this.options = options || marked.defaults; + this.links = links; + this.rules = inline.normal; + this.renderer = this.options.renderer || new Renderer; + this.renderer.options = this.options; + + if (!this.links) { + throw new + Error('Tokens array requires a `links` property.'); + } + + if (this.options.gfm) { + if (this.options.breaks) { + this.rules = inline.breaks; + } else { + this.rules = inline.gfm; + } + } else if (this.options.pedantic) { + this.rules = inline.pedantic; + } +} + +/** + * Expose Inline Rules + */ + +InlineLexer.rules = inline; + +/** + * Static Lexing/Compiling Method + */ + +InlineLexer.output = function(src, links, options) { + var inline = new InlineLexer(links, options); + return inline.output(src); +}; + +/** + * Lexing/Compiling + */ + +InlineLexer.prototype.output = function(src) { + var this$1 = this; + + var out = '' + , link + , text + , href + , cap; + + while (src) { + // escape + if (cap = this$1.rules.escape.exec(src)) { + src = src.substring(cap[0].length); + out += cap[1]; + continue; + } + + // autolink + if (cap = this$1.rules.autolink.exec(src)) { + src = src.substring(cap[0].length); + if (cap[2] === '@') { + text = cap[1].charAt(6) === ':' + ? this$1.mangle(cap[1].substring(7)) + : this$1.mangle(cap[1]); + href = this$1.mangle('mailto:') + text; + } else { + text = escape(cap[1]); + href = text; + } + out += this$1.renderer.link(href, null, text); + continue; + } + + // url (gfm) + if (!this$1.inLink && (cap = this$1.rules.url.exec(src))) { + src = src.substring(cap[0].length); + text = escape(cap[1]); + href = text; + out += this$1.renderer.link(href, null, text); + continue; + } + + // tag + if (cap = this$1.rules.tag.exec(src)) { + if (!this$1.inLink && /^/i.test(cap[0])) { + this$1.inLink = false; + } + src = src.substring(cap[0].length); + out += this$1.options.sanitize + ? this$1.options.sanitizer + ? this$1.options.sanitizer(cap[0]) + : escape(cap[0]) + : cap[0]; + continue; + } + + // link + if (cap = this$1.rules.link.exec(src)) { + src = src.substring(cap[0].length); + this$1.inLink = true; + out += this$1.outputLink(cap, { + href: cap[2], + title: cap[3] + }); + this$1.inLink = false; + continue; + } + + // reflink, nolink + if ((cap = this$1.rules.reflink.exec(src)) + || (cap = this$1.rules.nolink.exec(src))) { + src = src.substring(cap[0].length); + link = (cap[2] || cap[1]).replace(/\s+/g, ' '); + link = this$1.links[link.toLowerCase()]; + if (!link || !link.href) { + out += cap[0].charAt(0); + src = cap[0].substring(1) + src; + continue; + } + this$1.inLink = true; + out += this$1.outputLink(cap, link); + this$1.inLink = false; + continue; + } + + // strong + if (cap = this$1.rules.strong.exec(src)) { + src = src.substring(cap[0].length); + out += this$1.renderer.strong(this$1.output(cap[2] || cap[1])); + continue; + } + + // em + if (cap = this$1.rules.em.exec(src)) { + src = src.substring(cap[0].length); + out += this$1.renderer.em(this$1.output(cap[2] || cap[1])); + continue; + } + + // code + if (cap = this$1.rules.code.exec(src)) { + src = src.substring(cap[0].length); + out += this$1.renderer.codespan(escape(cap[2], true)); + continue; + } + + // br + if (cap = this$1.rules.br.exec(src)) { + src = src.substring(cap[0].length); + out += this$1.renderer.br(); + continue; + } + + // del (gfm) + if (cap = this$1.rules.del.exec(src)) { + src = src.substring(cap[0].length); + out += this$1.renderer.del(this$1.output(cap[1])); + continue; + } + + // text + if (cap = this$1.rules.text.exec(src)) { + src = src.substring(cap[0].length); + out += this$1.renderer.text(escape(this$1.smartypants(cap[0]))); + continue; + } + + if (src) { + throw new + Error('Infinite loop on byte: ' + src.charCodeAt(0)); + } + } + + return out; +}; + +/** + * Compile Link + */ + +InlineLexer.prototype.outputLink = function(cap, link) { + var href = escape(link.href) + , title = link.title ? escape(link.title) : null; + + return cap[0].charAt(0) !== '!' + ? this.renderer.link(href, title, this.output(cap[1])) + : this.renderer.image(href, title, escape(cap[1])); +}; + +/** + * Smartypants Transformations + */ + +InlineLexer.prototype.smartypants = function(text) { + if (!this.options.smartypants) { return text; } + return text + // em-dashes + .replace(/---/g, '\u2014') + // en-dashes + .replace(/--/g, '\u2013') + // opening singles + .replace(/(^|[-\u2014/(\[{"\s])'/g, '$1\u2018') + // closing singles & apostrophes + .replace(/'/g, '\u2019') + // opening doubles + .replace(/(^|[-\u2014/(\[{\u2018\s])"/g, '$1\u201c') + // closing doubles + .replace(/"/g, '\u201d') + // ellipses + .replace(/\.{3}/g, '\u2026'); +}; + +/** + * Mangle Links + */ + +InlineLexer.prototype.mangle = function(text) { + if (!this.options.mangle) { return text; } + var out = '' + , l = text.length + , i = 0 + , ch; + + for (; i < l; i++) { + ch = text.charCodeAt(i); + if (Math.random() > 0.5) { + ch = 'x' + ch.toString(16); + } + out += '&#' + ch + ';'; + } + + return out; +}; + +/** + * Renderer + */ + +function Renderer(options) { + this.options = options || {}; +} + +Renderer.prototype.code = function(code, lang, escaped) { + if (this.options.highlight) { + var out = this.options.highlight(code, lang); + if (out != null && out !== code) { + escaped = true; + code = out; + } + } + + if (!lang) { + return '
'
+      + (escaped ? code : escape(code, true))
+      + '\n
'; + } + + return '
'
+    + (escaped ? code : escape(code, true))
+    + '\n
\n'; +}; + +Renderer.prototype.blockquote = function(quote) { + return '
\n' + quote + '
\n'; +}; + +Renderer.prototype.html = function(html) { + return html; +}; + +Renderer.prototype.heading = function(text, level, raw) { + return '' + + text + + '\n'; +}; + +Renderer.prototype.hr = function() { + return this.options.xhtml ? '
\n' : '
\n'; +}; + +Renderer.prototype.list = function(body, ordered) { + var type = ordered ? 'ol' : 'ul'; + return '<' + type + '>\n' + body + '\n'; +}; + +Renderer.prototype.listitem = function(text) { + return '
  • ' + text + '
  • \n'; +}; + +Renderer.prototype.paragraph = function(text) { + return '

    ' + text + '

    \n'; +}; + +Renderer.prototype.table = function(header, body) { + return '\n' + + '\n' + + header + + '\n' + + '\n' + + body + + '\n' + + '
    \n'; +}; + +Renderer.prototype.tablerow = function(content) { + return '\n' + content + '\n'; +}; + +Renderer.prototype.tablecell = function(content, flags) { + var type = flags.header ? 'th' : 'td'; + var tag = flags.align + ? '<' + type + ' style="text-align:' + flags.align + '">' + : '<' + type + '>'; + return tag + content + '\n'; +}; + +// span level renderer +Renderer.prototype.strong = function(text) { + return '' + text + ''; +}; + +Renderer.prototype.em = function(text) { + return '' + text + ''; +}; + +Renderer.prototype.codespan = function(text) { + return '' + text + ''; +}; + +Renderer.prototype.br = function() { + return this.options.xhtml ? '
    ' : '
    '; +}; + +Renderer.prototype.del = function(text) { + return '' + text + ''; +}; + +Renderer.prototype.link = function(href, title, text) { + if (this.options.sanitize) { + try { + var prot = decodeURIComponent(unescape(href)) + .replace(/[^\w:]/g, '') + .toLowerCase(); + } catch (e) { + return ''; + } + if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0) { + return ''; + } + } + var out = '
    '; + return out; +}; + +Renderer.prototype.image = function(href, title, text) { + var out = '' + text + '' : '>'; + return out; +}; + +Renderer.prototype.text = function(text) { + return text; +}; + +/** + * Parsing & Compiling + */ + +function Parser(options) { + this.tokens = []; + this.token = null; + this.options = options || marked.defaults; + this.options.renderer = this.options.renderer || new Renderer; + this.renderer = this.options.renderer; + this.renderer.options = this.options; +} + +/** + * Static Parse Method + */ + +Parser.parse = function(src, options, renderer) { + var parser = new Parser(options, renderer); + return parser.parse(src); +}; + +/** + * Parse Loop + */ + +Parser.prototype.parse = function(src) { + var this$1 = this; + + this.inline = new InlineLexer(src.links, this.options, this.renderer); + this.tokens = src.reverse(); + + var out = ''; + while (this.next()) { + out += this$1.tok(); + } + + return out; +}; + +/** + * Next Token + */ + +Parser.prototype.next = function() { + return this.token = this.tokens.pop(); +}; + +/** + * Preview Next Token + */ + +Parser.prototype.peek = function() { + return this.tokens[this.tokens.length - 1] || 0; +}; + +/** + * Parse Text Tokens + */ + +Parser.prototype.parseText = function() { + var this$1 = this; + + var body = this.token.text; + + while (this.peek().type === 'text') { + body += '\n' + this$1.next().text; + } + + return this.inline.output(body); +}; + +/** + * Parse Current Token + */ + +Parser.prototype.tok = function() { + var this$1 = this; + + switch (this.token.type) { + case 'space': { + return ''; + } + case 'hr': { + return this.renderer.hr(); + } + case 'heading': { + return this.renderer.heading( + this.inline.output(this.token.text), + this.token.depth, + this.token.text); + } + case 'code': { + return this.renderer.code(this.token.text, + this.token.lang, + this.token.escaped); + } + case 'table': { + var header = '' + , body = '' + , i + , row + , cell + , flags + , j; + + // header + cell = ''; + for (i = 0; i < this.token.header.length; i++) { + flags = { header: true, align: this$1.token.align[i] }; + cell += this$1.renderer.tablecell( + this$1.inline.output(this$1.token.header[i]), + { header: true, align: this$1.token.align[i] } + ); + } + header += this.renderer.tablerow(cell); + + for (i = 0; i < this.token.cells.length; i++) { + row = this$1.token.cells[i]; + + cell = ''; + for (j = 0; j < row.length; j++) { + cell += this$1.renderer.tablecell( + this$1.inline.output(row[j]), + { header: false, align: this$1.token.align[j] } + ); + } + + body += this$1.renderer.tablerow(cell); + } + return this.renderer.table(header, body); + } + case 'blockquote_start': { + var body = ''; + + while (this.next().type !== 'blockquote_end') { + body += this$1.tok(); + } + + return this.renderer.blockquote(body); + } + case 'list_start': { + var body = '' + , ordered = this.token.ordered; + + while (this.next().type !== 'list_end') { + body += this$1.tok(); + } + + return this.renderer.list(body, ordered); + } + case 'list_item_start': { + var body = ''; + + while (this.next().type !== 'list_item_end') { + body += this$1.token.type === 'text' + ? this$1.parseText() + : this$1.tok(); + } + + return this.renderer.listitem(body); + } + case 'loose_item_start': { + var body = ''; + + while (this.next().type !== 'list_item_end') { + body += this$1.tok(); + } + + return this.renderer.listitem(body); + } + case 'html': { + var html = !this.token.pre && !this.options.pedantic + ? this.inline.output(this.token.text) + : this.token.text; + return this.renderer.html(html); + } + case 'paragraph': { + return this.renderer.paragraph(this.inline.output(this.token.text)); + } + case 'text': { + return this.renderer.paragraph(this.parseText()); + } + } +}; + +/** + * Helpers + */ + +function escape(html, encode) { + return html + .replace(!encode ? /&(?!#?\w+;)/g : /&/g, '&') + .replace(//g, '>') + .replace(/"/g, '"') + .replace(/'/g, '''); +} + +function unescape(html) { + // explicitly match decimal, hex, and named HTML entities + return html.replace(/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/g, function(_, n) { + n = n.toLowerCase(); + if (n === 'colon') { return ':'; } + if (n.charAt(0) === '#') { + return n.charAt(1) === 'x' + ? String.fromCharCode(parseInt(n.substring(2), 16)) + : String.fromCharCode(+n.substring(1)); + } + return ''; + }); +} + +function replace(regex, opt) { + regex = regex.source; + opt = opt || ''; + return function self(name, val) { + if (!name) { return new RegExp(regex, opt); } + val = val.source || val; + val = val.replace(/(^|[^\[])\^/g, '$1'); + regex = regex.replace(name, val); + return self; + }; +} + +function noop() {} +noop.exec = noop; + +function merge(obj) { + var arguments$1 = arguments; + + var i = 1 + , target + , key; + + for (; i < arguments.length; i++) { + target = arguments$1[i]; + for (key in target) { + if (Object.prototype.hasOwnProperty.call(target, key)) { + obj[key] = target[key]; + } + } + } + + return obj; +} + + +/** + * Marked + */ + +function marked(src, opt, callback) { + if (callback || typeof opt === 'function') { + if (!callback) { + callback = opt; + opt = null; + } + + opt = merge({}, marked.defaults, opt || {}); + + var highlight = opt.highlight + , tokens + , pending + , i = 0; + + try { + tokens = Lexer.lex(src, opt); + } catch (e) { + return callback(e); + } + + pending = tokens.length; + + var done = function(err) { + if (err) { + opt.highlight = highlight; + return callback(err); + } + + var out; + + try { + out = Parser.parse(tokens, opt); + } catch (e) { + err = e; + } + + opt.highlight = highlight; + + return err + ? callback(err) + : callback(null, out); + }; + + if (!highlight || highlight.length < 3) { + return done(); + } + + delete opt.highlight; + + if (!pending) { return done(); } + + for (; i < tokens.length; i++) { + (function(token) { + if (token.type !== 'code') { + return --pending || done(); + } + return highlight(token.text, token.lang, function(err, code) { + if (err) { return done(err); } + if (code == null || code === token.text) { + return --pending || done(); + } + token.text = code; + token.escaped = true; + --pending || done(); + }); + })(tokens[i]); + } + + return; + } + try { + if (opt) { opt = merge({}, marked.defaults, opt); } + return Parser.parse(Lexer.lex(src, opt), opt); + } catch (e) { + e.message += '\nPlease report this to https://github.com/chjj/marked.'; + if ((opt || marked.defaults).silent) { + return '

    An error occured:

    '
    +        + escape(e.message + '', true)
    +        + '
    '; + } + throw e; + } +} + +/** + * Options + */ + +marked.options = +marked.setOptions = function(opt) { + merge(marked.defaults, opt); + return marked; +}; + +marked.defaults = { + gfm: true, + tables: true, + breaks: false, + pedantic: false, + sanitize: false, + sanitizer: null, + mangle: true, + smartLists: false, + silent: false, + highlight: null, + langPrefix: 'lang-', + smartypants: false, + headerPrefix: '', + renderer: new Renderer, + xhtml: false +}; + +/** + * Expose + */ + +marked.Parser = Parser; +marked.parser = Parser.parse; + +marked.Renderer = Renderer; + +marked.Lexer = Lexer; +marked.lexer = Lexer.lex; + +marked.InlineLexer = InlineLexer; +marked.inlineLexer = InlineLexer.output; + +marked.parse = marked; + +if ('object' !== 'undefined' && 'object' === 'object') { + module.exports = marked; +} else if (typeof undefined === 'function' && undefined.amd) { + undefined(function() { return marked; }); +} else { + this.marked = marked; +} + +}).call(function() { + return this || (typeof window !== 'undefined' ? window : commonjsGlobal); +}()); +}); + +marked.setOptions({ + gfm: true, + smartypants: true +}); + +var markdown = function(dom, data) { + var markdownElements = [].slice.call(dom.querySelectorAll('[markdown]')); + markdownElements.forEach(function (el) { + var content = el.innerHTML; + // Set default indents + content = content.replace(/\n/, ""); + var tabs = content.match(/\s*/); + content = content.replace(new RegExp("\n" + tabs, "g"), "\n"); + content = content.trim(); + + el.innerHTML = marked(content); + }); +}; + +var prism = createCommonjsModule(function (module) { +/* ********************************************** + Begin prism-core.js +********************************************** */ + +var _self = (typeof window !== 'undefined') + ? window // if in browser + : ( + (typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope) + ? self // if in worker + : {} // if in node js + ); + +/** + * Prism: Lightweight, robust, elegant syntax highlighting + * MIT license http://www.opensource.org/licenses/mit-license.php/ + * @author Lea Verou http://lea.verou.me + */ + +var Prism = (function(){ + +// Private helper vars +var lang = /\blang(?:uage)?-(\w+)\b/i; +var uniqueId = 0; + +var _ = _self.Prism = { + util: { + encode: function (tokens) { + if (tokens instanceof Token) { + return new Token(tokens.type, _.util.encode(tokens.content), tokens.alias); + } else if (_.util.type(tokens) === 'Array') { + return tokens.map(_.util.encode); + } else { + return tokens.replace(/&/g, '&').replace(/ text.length) { + // Something went terribly wrong, ABORT, ABORT! + break tokenloop; + } + + if (str instanceof Token) { + continue; + } + + pattern.lastIndex = 0; + + var match = pattern.exec(str), + delNum = 1; + + // Greedy patterns can override/remove up to two previously matched tokens + if (!match && greedy && i != strarr.length - 1) { + pattern.lastIndex = pos; + match = pattern.exec(text); + if (!match) { + break; + } + + var from = match.index + (lookbehind ? match[1].length : 0), + to = match.index + match[0].length, + k = i, + p = pos; + + for (var len = strarr.length; k < len && p < to; ++k) { + p += strarr[k].length; + // Move the index i to the element in strarr that is closest to from + if (from >= p) { + ++i; + pos = p; + } + } + + /* + * If strarr[i] is a Token, then the match starts inside another Token, which is invalid + * If strarr[k - 1] is greedy we are in conflict with another greedy pattern + */ + if (strarr[i] instanceof Token || strarr[k - 1].greedy) { + continue; + } + + // Number of tokens to delete and replace with the new match + delNum = k - i; + str = text.slice(pos, p); + match.index -= pos; + } + + if (!match) { + continue; + } + + if(lookbehind) { + lookbehindLength = match[1].length; + } + + var from = match.index + lookbehindLength, + match = match[0].slice(lookbehindLength), + to = from + match.length, + before = str.slice(0, from), + after = str.slice(to); + + var args = [i, delNum]; + + if (before) { + args.push(before); + } + + var wrapped = new Token(token, inside? _.tokenize(match, inside) : match, alias, match, greedy); + + args.push(wrapped); + + if (after) { + args.push(after); + } + + Array.prototype.splice.apply(strarr, args); + } + } + } + + return strarr; + }, + + hooks: { + all: {}, + + add: function (name, callback) { + var hooks = _.hooks.all; + + hooks[name] = hooks[name] || []; + + hooks[name].push(callback); + }, + + run: function (name, env) { + var callbacks = _.hooks.all[name]; + + if (!callbacks || !callbacks.length) { + return; + } + + for (var i=0, callback; callback = callbacks[i++];) { + callback(env); + } + } + } +}; + +var Token = _.Token = function(type, content, alias, matchedStr, greedy) { + this.type = type; + this.content = content; + this.alias = alias; + // Copy of the full string this token was created from + this.length = (matchedStr || "").length|0; + this.greedy = !!greedy; +}; + +Token.stringify = function(o, language, parent) { + if (typeof o == 'string') { + return o; + } + + if (_.util.type(o) === 'Array') { + return o.map(function(element) { + return Token.stringify(element, language, o); + }).join(''); + } + + var env = { + type: o.type, + content: Token.stringify(o.content, language, parent), + tag: 'span', + classes: ['token', o.type], + attributes: {}, + language: language, + parent: parent + }; + + if (env.type == 'comment') { + env.attributes['spellcheck'] = 'true'; + } + + if (o.alias) { + var aliases = _.util.type(o.alias) === 'Array' ? o.alias : [o.alias]; + Array.prototype.push.apply(env.classes, aliases); + } + + _.hooks.run('wrap', env); + + var attributes = Object.keys(env.attributes).map(function(name) { + return name + '="' + (env.attributes[name] || '').replace(/"/g, '"') + '"'; + }).join(' '); + + return '<' + env.tag + ' class="' + env.classes.join(' ') + '"' + (attributes ? ' ' + attributes : '') + '>' + env.content + ''; + +}; + +if (!_self.document) { + if (!_self.addEventListener) { + // in Node.js + return _self.Prism; + } + // In worker + _self.addEventListener('message', function(evt) { + var message = JSON.parse(evt.data), + lang = message.language, + code = message.code, + immediateClose = message.immediateClose; + + _self.postMessage(_.highlight(code, _.languages[lang], lang)); + if (immediateClose) { + _self.close(); + } + }, false); + + return _self.Prism; +} + +//Get current script and highlight +var script = document.currentScript || [].slice.call(document.getElementsByTagName("script")).pop(); + +if (script) { + _.filename = script.src; + + if (document.addEventListener && !script.hasAttribute('data-manual')) { + if(document.readyState !== "loading") { + if (window.requestAnimationFrame) { + window.requestAnimationFrame(_.highlightAll); + } else { + window.setTimeout(_.highlightAll, 16); + } + } + else { + document.addEventListener('DOMContentLoaded', _.highlightAll); + } + } +} + +return _self.Prism; + +})(); + +if ('object' !== 'undefined' && module.exports) { + module.exports = Prism; +} + +// hack for components to work correctly in node.js +if (typeof commonjsGlobal !== 'undefined') { + commonjsGlobal.Prism = Prism; +} + + +/* ********************************************** + Begin prism-markup.js +********************************************** */ + +Prism.languages.markup = { + 'comment': //, + 'prolog': /<\?[\w\W]+?\?>/, + 'doctype': //i, + 'cdata': //i, + 'tag': { + pattern: /<\/?(?!\d)[^\s>\/=$<]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\\1|\\?(?!\1)[\w\W])*\1|[^\s'">=]+))?)*\s*\/?>/i, + inside: { + 'tag': { + pattern: /^<\/?[^\s>\/]+/i, + inside: { + 'punctuation': /^<\/?/, + 'namespace': /^[^\s>\/:]+:/ + } + }, + 'attr-value': { + pattern: /=(?:('|")[\w\W]*?(\1)|[^\s>]+)/i, + inside: { + 'punctuation': /[=>"']/ + } + }, + 'punctuation': /\/?>/, + 'attr-name': { + pattern: /[^\s>\/]+/, + inside: { + 'namespace': /^[^\s>\/:]+:/ + } + } + + } + }, + 'entity': /&#?[\da-z]{1,8};/i +}; + +// Plugin to make entity title show the real entity, idea by Roman Komarov +Prism.hooks.add('wrap', function(env) { + + if (env.type === 'entity') { + env.attributes['title'] = env.content.replace(/&/, '&'); + } +}); + +Prism.languages.xml = Prism.languages.markup; +Prism.languages.html = Prism.languages.markup; +Prism.languages.mathml = Prism.languages.markup; +Prism.languages.svg = Prism.languages.markup; + + +/* ********************************************** + Begin prism-css.js +********************************************** */ + +Prism.languages.css = { + 'comment': /\/\*[\w\W]*?\*\//, + 'atrule': { + pattern: /@[\w-]+?.*?(;|(?=\s*\{))/i, + inside: { + 'rule': /@[\w-]+/ + // See rest below + } + }, + 'url': /url\((?:(["'])(\\(?:\r\n|[\w\W])|(?!\1)[^\\\r\n])*\1|.*?)\)/i, + 'selector': /[^\{\}\s][^\{\};]*?(?=\s*\{)/, + 'string': { + pattern: /("|')(\\(?:\r\n|[\w\W])|(?!\1)[^\\\r\n])*\1/, + greedy: true + }, + 'property': /(\b|\B)[\w-]+(?=\s*:)/i, + 'important': /\B!important\b/i, + 'function': /[-a-z0-9]+(?=\()/i, + 'punctuation': /[(){};:]/ +}; + +Prism.languages.css['atrule'].inside.rest = Prism.util.clone(Prism.languages.css); + +if (Prism.languages.markup) { + Prism.languages.insertBefore('markup', 'tag', { + 'style': { + pattern: /()[\w\W]*?(?=<\/style>)/i, + lookbehind: true, + inside: Prism.languages.css, + alias: 'language-css' + } + }); + + Prism.languages.insertBefore('inside', 'attr-value', { + 'style-attr': { + pattern: /\s*style=("|').*?\1/i, + inside: { + 'attr-name': { + pattern: /^\s*style/i, + inside: Prism.languages.markup.tag.inside + }, + 'punctuation': /^\s*=\s*['"]|['"]\s*$/, + 'attr-value': { + pattern: /.+/i, + inside: Prism.languages.css + } + }, + alias: 'language-css' + } + }, Prism.languages.markup.tag); +} + +/* ********************************************** + Begin prism-clike.js +********************************************** */ + +Prism.languages.clike = { + 'comment': [ + { + pattern: /(^|[^\\])\/\*[\w\W]*?\*\//, + lookbehind: true + }, + { + pattern: /(^|[^\\:])\/\/.*/, + lookbehind: true + } + ], + 'string': { + pattern: /(["'])(\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/, + greedy: true + }, + 'class-name': { + pattern: /((?:\b(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[a-z0-9_\.\\]+/i, + lookbehind: true, + inside: { + punctuation: /(\.|\\)/ + } + }, + 'keyword': /\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/, + 'boolean': /\b(true|false)\b/, + 'function': /[a-z0-9_]+(?=\()/i, + 'number': /\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i, + 'operator': /--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/, + 'punctuation': /[{}[\];(),.:]/ +}; + + +/* ********************************************** + Begin prism-javascript.js +********************************************** */ + +Prism.languages.javascript = Prism.languages.extend('clike', { + '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/, + 'number': /\b-?(0x[\dA-Fa-f]+|0b[01]+|0o[0-7]+|\d*\.?\d+([Ee][+-]?\d+)?|NaN|Infinity)\b/, + // Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444) + 'function': /[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*(?=\()/i, + 'operator': /--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*\*?|\/|~|\^|%|\.{3}/ +}); + +Prism.languages.insertBefore('javascript', 'keyword', { + 'regex': { + pattern: /(^|[^/])\/(?!\/)(\[.+?]|\\.|[^/\\\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/, + lookbehind: true, + greedy: true + } +}); + +Prism.languages.insertBefore('javascript', 'string', { + 'template-string': { + pattern: /`(?:\\\\|\\?[^\\])*?`/, + greedy: true, + inside: { + 'interpolation': { + pattern: /\$\{[^}]+\}/, + inside: { + 'interpolation-punctuation': { + pattern: /^\$\{|\}$/, + alias: 'punctuation' + }, + rest: Prism.languages.javascript + } + }, + 'string': /[\s\S]+/ + } + } +}); + +if (Prism.languages.markup) { + Prism.languages.insertBefore('markup', 'tag', { + 'script': { + pattern: /()[\w\W]*?(?=<\/script>)/i, + lookbehind: true, + inside: Prism.languages.javascript, + alias: 'language-javascript' + } + }); +} + +Prism.languages.js = Prism.languages.javascript; + +/* ********************************************** + Begin prism-file-highlight.js +********************************************** */ + +(function () { + if (typeof self === 'undefined' || !self.Prism || !self.document || !document.querySelector) { + return; + } + + self.Prism.fileHighlight = function() { + + var Extensions = { + 'js': 'javascript', + 'py': 'python', + 'rb': 'ruby', + 'ps1': 'powershell', + 'psm1': 'powershell', + 'sh': 'bash', + 'bat': 'batch', + 'h': 'c', + 'tex': 'latex' + }; + + if(Array.prototype.forEach) { // Check to prevent error in IE8 + Array.prototype.slice.call(document.querySelectorAll('pre[data-src]')).forEach(function (pre) { + var src = pre.getAttribute('data-src'); + + var language, parent = pre; + var lang = /\blang(?:uage)?-(?!\*)(\w+)\b/i; + while (parent && !lang.test(parent.className)) { + parent = parent.parentNode; + } + + if (parent) { + language = (pre.className.match(lang) || [, ''])[1]; + } + + if (!language) { + var extension = (src.match(/\.(\w+)$/) || [, ''])[1]; + language = Extensions[extension] || extension; + } + + var code = document.createElement('code'); + code.className = 'language-' + language; + + pre.textContent = ''; + + code.textContent = 'Loading…'; + + pre.appendChild(code); + + var xhr = new XMLHttpRequest(); + + xhr.open('GET', src, true); + + xhr.onreadystatechange = function () { + if (xhr.readyState == 4) { + + if (xhr.status < 400 && xhr.responseText) { + code.textContent = xhr.responseText; + + Prism.highlightElement(code); + } + else if (xhr.status >= 400) { + code.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText; + } + else { + code.textContent = '✖ Error: File does not exist or is empty'; + } + } + }; + + xhr.send(null); + }); + } + + }; + + document.addEventListener('DOMContentLoaded', self.Prism.fileHighlight); + +})(); +}); + +var code$1 = function(dom, data) { + var codeElements = [].slice.call(dom.querySelectorAll("dt-code")); + codeElements.forEach(function (el) { + var content = el.textContent; + el.innerHTML = ""; + var language = el.getAttribute("language"); + var c = dom.createElement("code"); + if (el.getAttribute("block") === "") { + // Let's normalize the tab indents + content = content.replace(/\n/, ""); + var tabs = content.match(/\s*/); + content = content.replace(new RegExp("\n" + tabs, "g"), "\n"); + content = content.trim(); + var p = dom.createElement("pre"); + p.appendChild(c); + el.appendChild(p); + } else { + el.appendChild(c); + } + var highlighted = content; + if (prism.languages[language]) { + c.setAttribute("class", "language-" + language); + highlighted = prism.highlight(content, prism.languages[language]); + } + c.innerHTML = highlighted; + }); +}; + +var testData = { + "title": "Experiments in Handwriting with a Neural Network", + "description": "Several interactive visualizations of a generative model of handwriting. Some are fun, some are serious.", + "url": "http://distill.pub/2016/handwriting/", + "github": "https://github.com/distillpub/post--handwriting", + "firstPublished": "Tue Dec 6 2016 21:39:33 GMT-0700 (PDT)", + "lastPublished": "Tue Dec 6 2016 21:39:33 GMT-0700 (PDT)", + "authors": [ + { + "firstName": "Shan", + "lastName": "Carter", + "personalURL": "http://shancarter.com", + "affiliation": "Google Brain", + "affiliationURL": "http://g.co/brain" + }, + { + "firstName": "David", + "lastName": "Ha", + "personalURL": "https://github.com/hardmaru", + "affiliation": "Google Brain", + "affiliationURL": "http://g.co/brain" + }, + { + "firstName": "Ian", + "lastName": "Johnson", + "personalURL": "https://github.com/enjalot", + "affiliation": "Google Cloud", + "affiliationURL": "" + }, + { + "firstName": "Chris", + "lastName": "Olah", + "personalURL": "http://colah.github.io/", + "affiliation": "Google Brain", + "affiliationURL": "http://g.co/brain" + } + ], + journal: { + "title": "Distill", + "full_title": "Distill", + "abbrev_title": "Distill", + "url": "http://distill.pub", + "doi": "00.0000/dstl", + "issn": "0000-0000" + } + }; + +function render(dom, data) { + html(dom); + styles(dom); + dom.addEventListener("DOMContentLoaded", function(event) { + frontMatter(dom, data); + bibliography(dom, data); + meta(dom, data); + header(dom, data); + appendix(dom, data); + footer(dom, data); + markdown(dom, data); + code$1(dom, data); + citation(dom, data); + console.log("final data:"); + for (var k in data) {console.log(" ", k, ": ", data[k]);} + }); +} + +// If we are in a browser, run render automatically. +if(window && window.document) { + render(window.document, testData); +} + +exports.render = render; +exports.html = html; +exports.styles = styles; +exports.frontMatter = frontMatter; +exports.bibliography = bibliography; +exports.meta = meta; +exports.header = header; +exports.appendix = appendix; +exports.footer = footer; +exports.citation = citation; +exports.markdown = markdown; +exports.code = code$1; + +Object.defineProperty(exports, '__esModule', { value: true }); + +}))); +//# sourceMappingURL=template.js.map diff --git a/dist/template.js.map b/dist/template.js.map new file mode 100644 index 0000000..cdbab66 --- /dev/null +++ b/dist/template.js.map @@ -0,0 +1 @@ +{"version":3,"file":null,"sources":["../components/html.js","../components/styles.js","../node_modules/js-yaml/lib/js-yaml/common.js","../node_modules/js-yaml/lib/js-yaml/exception.js","../node_modules/js-yaml/lib/js-yaml/mark.js","../node_modules/js-yaml/lib/js-yaml/type.js","../node_modules/js-yaml/lib/js-yaml/schema.js","../node_modules/js-yaml/lib/js-yaml/type/str.js","../node_modules/js-yaml/lib/js-yaml/type/seq.js","../node_modules/js-yaml/lib/js-yaml/type/map.js","../node_modules/js-yaml/lib/js-yaml/schema/failsafe.js","../node_modules/js-yaml/lib/js-yaml/type/null.js","../node_modules/js-yaml/lib/js-yaml/type/bool.js","../node_modules/js-yaml/lib/js-yaml/type/int.js","../node_modules/js-yaml/lib/js-yaml/type/float.js","../node_modules/js-yaml/lib/js-yaml/schema/json.js","../node_modules/js-yaml/lib/js-yaml/schema/core.js","../node_modules/js-yaml/lib/js-yaml/type/timestamp.js","../node_modules/js-yaml/lib/js-yaml/type/merge.js","../node_modules/js-yaml/lib/js-yaml/type/binary.js","../node_modules/js-yaml/lib/js-yaml/type/omap.js","../node_modules/js-yaml/lib/js-yaml/type/pairs.js","../node_modules/js-yaml/lib/js-yaml/type/set.js","../node_modules/js-yaml/lib/js-yaml/schema/default_safe.js","../node_modules/js-yaml/lib/js-yaml/type/js/undefined.js","../node_modules/js-yaml/lib/js-yaml/type/js/regexp.js","../node_modules/js-yaml/lib/js-yaml/type/js/function.js","../node_modules/js-yaml/lib/js-yaml/schema/default_full.js","../node_modules/js-yaml/lib/js-yaml/loader.js","../node_modules/js-yaml/lib/js-yaml/dumper.js","../node_modules/js-yaml/lib/js-yaml.js","../node_modules/js-yaml/index.js","../components/front-matter.js","../node_modules/bibtex-parse-js/bibtexParse.js","../components/bibliography.js","../components/meta.js","../components/header.js","../components/appendix.js","../components/footer.js","../components/citation.js","../node_modules/marked/lib/marked.js","../components/markdown.js","../node_modules/prismjs/prism.js","../components/code.js","../test-data.js","../index.js"],"sourcesContent":["export default function(dom) {\n if (!dom.querySelector(\"html\").getAttribute(\"lang\")) {\n dom.querySelector(\"html\").setAttribute(\"lang\", \"en\")\n }\n\n let head = dom.querySelector(\"head\");\n\n if (!dom.querySelector(\"meta[charset]\")) {\n let meta = dom.createElement(\"meta\");\n meta.setAttribute(\"charset\", \"utf-8\");\n head.appendChild(meta);\n }\n if (!dom.querySelector(\"meta[name=viewport]\")) {\n let meta = dom.createElement(\"meta\");\n meta.setAttribute(\"name\", \"viewport\");\n meta.setAttribute(\"content\", \"width=device-width, initial-scale=1\");\n head.appendChild(meta);\n }\n}\n","import base from './styles-base.css';\nimport layout from './styles-layout.css';\nimport article from './styles-article.css';\nimport code from './styles-code.css';\n\nexport default function(dom) {\n let s = dom.createElement(\"style\");\n s.textContent = base + layout + article + code;\n dom.querySelector(\"head\").appendChild(s);\n}\n","'use strict';\n\n\nfunction isNothing(subject) {\n return (typeof subject === 'undefined') || (subject === null);\n}\n\n\nfunction isObject(subject) {\n return (typeof subject === 'object') && (subject !== null);\n}\n\n\nfunction toArray(sequence) {\n if (Array.isArray(sequence)) return sequence;\n else if (isNothing(sequence)) return [];\n\n return [ sequence ];\n}\n\n\nfunction extend(target, source) {\n var index, length, key, sourceKeys;\n\n if (source) {\n sourceKeys = Object.keys(source);\n\n for (index = 0, length = sourceKeys.length; index < length; index += 1) {\n key = sourceKeys[index];\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\n\nfunction repeat(string, count) {\n var result = '', cycle;\n\n for (cycle = 0; cycle < count; cycle += 1) {\n result += string;\n }\n\n return result;\n}\n\n\nfunction isNegativeZero(number) {\n return (number === 0) && (Number.NEGATIVE_INFINITY === 1 / number);\n}\n\n\nmodule.exports.isNothing = isNothing;\nmodule.exports.isObject = isObject;\nmodule.exports.toArray = toArray;\nmodule.exports.repeat = repeat;\nmodule.exports.isNegativeZero = isNegativeZero;\nmodule.exports.extend = extend;\n","// YAML error class. http://stackoverflow.com/questions/8458984\n//\n'use strict';\n\nfunction YAMLException(reason, mark) {\n // Super constructor\n Error.call(this);\n\n // Include stack trace in error object\n if (Error.captureStackTrace) {\n // Chrome and NodeJS\n Error.captureStackTrace(this, this.constructor);\n } else {\n // FF, IE 10+ and Safari 6+. Fallback for others\n this.stack = (new Error()).stack || '';\n }\n\n this.name = 'YAMLException';\n this.reason = reason;\n this.mark = mark;\n this.message = (this.reason || '(unknown reason)') + (this.mark ? ' ' + this.mark.toString() : '');\n}\n\n\n// Inherit from Error\nYAMLException.prototype = Object.create(Error.prototype);\nYAMLException.prototype.constructor = YAMLException;\n\n\nYAMLException.prototype.toString = function toString(compact) {\n var result = this.name + ': ';\n\n result += this.reason || '(unknown reason)';\n\n if (!compact && this.mark) {\n result += ' ' + this.mark.toString();\n }\n\n return result;\n};\n\n\nmodule.exports = YAMLException;\n","'use strict';\n\n\nvar common = require('./common');\n\n\nfunction Mark(name, buffer, position, line, column) {\n this.name = name;\n this.buffer = buffer;\n this.position = position;\n this.line = line;\n this.column = column;\n}\n\n\nMark.prototype.getSnippet = function getSnippet(indent, maxLength) {\n var head, start, tail, end, snippet;\n\n if (!this.buffer) return null;\n\n indent = indent || 4;\n maxLength = maxLength || 75;\n\n head = '';\n start = this.position;\n\n while (start > 0 && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(start - 1)) === -1) {\n start -= 1;\n if (this.position - start > (maxLength / 2 - 1)) {\n head = ' ... ';\n start += 5;\n break;\n }\n }\n\n tail = '';\n end = this.position;\n\n while (end < this.buffer.length && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(end)) === -1) {\n end += 1;\n if (end - this.position > (maxLength / 2 - 1)) {\n tail = ' ... ';\n end -= 5;\n break;\n }\n }\n\n snippet = this.buffer.slice(start, end);\n\n return common.repeat(' ', indent) + head + snippet + tail + '\\n' +\n common.repeat(' ', indent + this.position - start + head.length) + '^';\n};\n\n\nMark.prototype.toString = function toString(compact) {\n var snippet, where = '';\n\n if (this.name) {\n where += 'in \"' + this.name + '\" ';\n }\n\n where += 'at line ' + (this.line + 1) + ', column ' + (this.column + 1);\n\n if (!compact) {\n snippet = this.getSnippet();\n\n if (snippet) {\n where += ':\\n' + snippet;\n }\n }\n\n return where;\n};\n\n\nmodule.exports = Mark;\n","'use strict';\n\nvar YAMLException = require('./exception');\n\nvar TYPE_CONSTRUCTOR_OPTIONS = [\n 'kind',\n 'resolve',\n 'construct',\n 'instanceOf',\n 'predicate',\n 'represent',\n 'defaultStyle',\n 'styleAliases'\n];\n\nvar YAML_NODE_KINDS = [\n 'scalar',\n 'sequence',\n 'mapping'\n];\n\nfunction compileStyleAliases(map) {\n var result = {};\n\n if (map !== null) {\n Object.keys(map).forEach(function (style) {\n map[style].forEach(function (alias) {\n result[String(alias)] = style;\n });\n });\n }\n\n return result;\n}\n\nfunction Type(tag, options) {\n options = options || {};\n\n Object.keys(options).forEach(function (name) {\n if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) {\n throw new YAMLException('Unknown option \"' + name + '\" is met in definition of \"' + tag + '\" YAML type.');\n }\n });\n\n // TODO: Add tag format check.\n this.tag = tag;\n this.kind = options['kind'] || null;\n this.resolve = options['resolve'] || function () { return true; };\n this.construct = options['construct'] || function (data) { return data; };\n this.instanceOf = options['instanceOf'] || null;\n this.predicate = options['predicate'] || null;\n this.represent = options['represent'] || null;\n this.defaultStyle = options['defaultStyle'] || null;\n this.styleAliases = compileStyleAliases(options['styleAliases'] || null);\n\n if (YAML_NODE_KINDS.indexOf(this.kind) === -1) {\n throw new YAMLException('Unknown kind \"' + this.kind + '\" is specified for \"' + tag + '\" YAML type.');\n }\n}\n\nmodule.exports = Type;\n","'use strict';\n\n/*eslint-disable max-len*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar Type = require('./type');\n\n\nfunction compileList(schema, name, result) {\n var exclude = [];\n\n schema.include.forEach(function (includedSchema) {\n result = compileList(includedSchema, name, result);\n });\n\n schema[name].forEach(function (currentType) {\n result.forEach(function (previousType, previousIndex) {\n if (previousType.tag === currentType.tag && previousType.kind === currentType.kind) {\n exclude.push(previousIndex);\n }\n });\n\n result.push(currentType);\n });\n\n return result.filter(function (type, index) {\n return exclude.indexOf(index) === -1;\n });\n}\n\n\nfunction compileMap(/* lists... */) {\n var result = {\n scalar: {},\n sequence: {},\n mapping: {},\n fallback: {}\n }, index, length;\n\n function collectType(type) {\n result[type.kind][type.tag] = result['fallback'][type.tag] = type;\n }\n\n for (index = 0, length = arguments.length; index < length; index += 1) {\n arguments[index].forEach(collectType);\n }\n return result;\n}\n\n\nfunction Schema(definition) {\n this.include = definition.include || [];\n this.implicit = definition.implicit || [];\n this.explicit = definition.explicit || [];\n\n this.implicit.forEach(function (type) {\n if (type.loadKind && type.loadKind !== 'scalar') {\n throw new YAMLException('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.');\n }\n });\n\n this.compiledImplicit = compileList(this, 'implicit', []);\n this.compiledExplicit = compileList(this, 'explicit', []);\n this.compiledTypeMap = compileMap(this.compiledImplicit, this.compiledExplicit);\n}\n\n\nSchema.DEFAULT = null;\n\n\nSchema.create = function createSchema() {\n var schemas, types;\n\n switch (arguments.length) {\n case 1:\n schemas = Schema.DEFAULT;\n types = arguments[0];\n break;\n\n case 2:\n schemas = arguments[0];\n types = arguments[1];\n break;\n\n default:\n throw new YAMLException('Wrong number of arguments for Schema.create function');\n }\n\n schemas = common.toArray(schemas);\n types = common.toArray(types);\n\n if (!schemas.every(function (schema) { return schema instanceof Schema; })) {\n throw new YAMLException('Specified list of super schemas (or a single Schema object) contains a non-Schema object.');\n }\n\n if (!types.every(function (type) { return type instanceof Type; })) {\n throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.');\n }\n\n return new Schema({\n include: schemas,\n explicit: types\n });\n};\n\n\nmodule.exports = Schema;\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:str', {\n kind: 'scalar',\n construct: function (data) { return data !== null ? data : ''; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:seq', {\n kind: 'sequence',\n construct: function (data) { return data !== null ? data : []; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:map', {\n kind: 'mapping',\n construct: function (data) { return data !== null ? data : {}; }\n});\n","// Standard YAML's Failsafe schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2802346\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n explicit: [\n require('../type/str'),\n require('../type/seq'),\n require('../type/map')\n ]\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlNull(data) {\n if (data === null) return true;\n\n var max = data.length;\n\n return (max === 1 && data === '~') ||\n (max === 4 && (data === 'null' || data === 'Null' || data === 'NULL'));\n}\n\nfunction constructYamlNull() {\n return null;\n}\n\nfunction isNull(object) {\n return object === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:null', {\n kind: 'scalar',\n resolve: resolveYamlNull,\n construct: constructYamlNull,\n predicate: isNull,\n represent: {\n canonical: function () { return '~'; },\n lowercase: function () { return 'null'; },\n uppercase: function () { return 'NULL'; },\n camelcase: function () { return 'Null'; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlBoolean(data) {\n if (data === null) return false;\n\n var max = data.length;\n\n return (max === 4 && (data === 'true' || data === 'True' || data === 'TRUE')) ||\n (max === 5 && (data === 'false' || data === 'False' || data === 'FALSE'));\n}\n\nfunction constructYamlBoolean(data) {\n return data === 'true' ||\n data === 'True' ||\n data === 'TRUE';\n}\n\nfunction isBoolean(object) {\n return Object.prototype.toString.call(object) === '[object Boolean]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:bool', {\n kind: 'scalar',\n resolve: resolveYamlBoolean,\n construct: constructYamlBoolean,\n predicate: isBoolean,\n represent: {\n lowercase: function (object) { return object ? 'true' : 'false'; },\n uppercase: function (object) { return object ? 'TRUE' : 'FALSE'; },\n camelcase: function (object) { return object ? 'True' : 'False'; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nfunction isHexCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) ||\n ((0x41/* A */ <= c) && (c <= 0x46/* F */)) ||\n ((0x61/* a */ <= c) && (c <= 0x66/* f */));\n}\n\nfunction isOctCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x37/* 7 */));\n}\n\nfunction isDecCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */));\n}\n\nfunction resolveYamlInteger(data) {\n if (data === null) return false;\n\n var max = data.length,\n index = 0,\n hasDigits = false,\n ch;\n\n if (!max) return false;\n\n ch = data[index];\n\n // sign\n if (ch === '-' || ch === '+') {\n ch = data[++index];\n }\n\n if (ch === '0') {\n // 0\n if (index + 1 === max) return true;\n ch = data[++index];\n\n // base 2, base 8, base 16\n\n if (ch === 'b') {\n // base 2\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch !== '0' && ch !== '1') return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n\n if (ch === 'x') {\n // base 16\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isHexCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n // base 8\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isOctCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n // base 10 (except 0) or base 60\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch === ':') break;\n if (!isDecCode(data.charCodeAt(index))) {\n return false;\n }\n hasDigits = true;\n }\n\n if (!hasDigits) return false;\n\n // if !base60 - done;\n if (ch !== ':') return true;\n\n // base60 almost not used, no needs to optimize\n return /^(:[0-5]?[0-9])+$/.test(data.slice(index));\n}\n\nfunction constructYamlInteger(data) {\n var value = data, sign = 1, ch, base, digits = [];\n\n if (value.indexOf('_') !== -1) {\n value = value.replace(/_/g, '');\n }\n\n ch = value[0];\n\n if (ch === '-' || ch === '+') {\n if (ch === '-') sign = -1;\n value = value.slice(1);\n ch = value[0];\n }\n\n if (value === '0') return 0;\n\n if (ch === '0') {\n if (value[1] === 'b') return sign * parseInt(value.slice(2), 2);\n if (value[1] === 'x') return sign * parseInt(value, 16);\n return sign * parseInt(value, 8);\n }\n\n if (value.indexOf(':') !== -1) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseInt(v, 10));\n });\n\n value = 0;\n base = 1;\n\n digits.forEach(function (d) {\n value += (d * base);\n base *= 60;\n });\n\n return sign * value;\n\n }\n\n return sign * parseInt(value, 10);\n}\n\nfunction isInteger(object) {\n return (Object.prototype.toString.call(object)) === '[object Number]' &&\n (object % 1 === 0 && !common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:int', {\n kind: 'scalar',\n resolve: resolveYamlInteger,\n construct: constructYamlInteger,\n predicate: isInteger,\n represent: {\n binary: function (object) { return '0b' + object.toString(2); },\n octal: function (object) { return '0' + object.toString(8); },\n decimal: function (object) { return object.toString(10); },\n hexadecimal: function (object) { return '0x' + object.toString(16).toUpperCase(); }\n },\n defaultStyle: 'decimal',\n styleAliases: {\n binary: [ 2, 'bin' ],\n octal: [ 8, 'oct' ],\n decimal: [ 10, 'dec' ],\n hexadecimal: [ 16, 'hex' ]\n }\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nvar YAML_FLOAT_PATTERN = new RegExp(\n '^(?:[-+]?(?:[0-9][0-9_]*)\\\\.[0-9_]*(?:[eE][-+][0-9]+)?' +\n '|\\\\.[0-9_]+(?:[eE][-+][0-9]+)?' +\n '|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\\\.[0-9_]*' +\n '|[-+]?\\\\.(?:inf|Inf|INF)' +\n '|\\\\.(?:nan|NaN|NAN))$');\n\nfunction resolveYamlFloat(data) {\n if (data === null) return false;\n\n if (!YAML_FLOAT_PATTERN.test(data)) return false;\n\n return true;\n}\n\nfunction constructYamlFloat(data) {\n var value, sign, base, digits;\n\n value = data.replace(/_/g, '').toLowerCase();\n sign = value[0] === '-' ? -1 : 1;\n digits = [];\n\n if ('+-'.indexOf(value[0]) >= 0) {\n value = value.slice(1);\n }\n\n if (value === '.inf') {\n return (sign === 1) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;\n\n } else if (value === '.nan') {\n return NaN;\n\n } else if (value.indexOf(':') >= 0) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseFloat(v, 10));\n });\n\n value = 0.0;\n base = 1;\n\n digits.forEach(function (d) {\n value += d * base;\n base *= 60;\n });\n\n return sign * value;\n\n }\n return sign * parseFloat(value, 10);\n}\n\n\nvar SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/;\n\nfunction representYamlFloat(object, style) {\n var res;\n\n if (isNaN(object)) {\n switch (style) {\n case 'lowercase': return '.nan';\n case 'uppercase': return '.NAN';\n case 'camelcase': return '.NaN';\n }\n } else if (Number.POSITIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '.inf';\n case 'uppercase': return '.INF';\n case 'camelcase': return '.Inf';\n }\n } else if (Number.NEGATIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '-.inf';\n case 'uppercase': return '-.INF';\n case 'camelcase': return '-.Inf';\n }\n } else if (common.isNegativeZero(object)) {\n return '-0.0';\n }\n\n res = object.toString(10);\n\n // JS stringifier can build scientific format without dots: 5e-100,\n // while YAML requres dot: 5.e-100. Fix it with simple hack\n\n return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res;\n}\n\nfunction isFloat(object) {\n return (Object.prototype.toString.call(object) === '[object Number]') &&\n (object % 1 !== 0 || common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:float', {\n kind: 'scalar',\n resolve: resolveYamlFloat,\n construct: constructYamlFloat,\n predicate: isFloat,\n represent: representYamlFloat,\n defaultStyle: 'lowercase'\n});\n","// Standard YAML's JSON schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2803231\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, this schema is not such strict as defined in the YAML specification.\n// It allows numbers in binary notaion, use `Null` and `NULL` as `null`, etc.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./failsafe')\n ],\n implicit: [\n require('../type/null'),\n require('../type/bool'),\n require('../type/int'),\n require('../type/float')\n ]\n});\n","// Standard YAML's Core schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2804923\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, Core schema has no distinctions from JSON schema is JS-YAML.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./json')\n ]\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar YAML_DATE_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9])' + // [2] month\n '-([0-9][0-9])$'); // [3] day\n\nvar YAML_TIMESTAMP_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9]?)' + // [2] month\n '-([0-9][0-9]?)' + // [3] day\n '(?:[Tt]|[ \\\\t]+)' + // ...\n '([0-9][0-9]?)' + // [4] hour\n ':([0-9][0-9])' + // [5] minute\n ':([0-9][0-9])' + // [6] second\n '(?:\\\\.([0-9]*))?' + // [7] fraction\n '(?:[ \\\\t]*(Z|([-+])([0-9][0-9]?)' + // [8] tz [9] tz_sign [10] tz_hour\n '(?::([0-9][0-9]))?))?$'); // [11] tz_minute\n\nfunction resolveYamlTimestamp(data) {\n if (data === null) return false;\n if (YAML_DATE_REGEXP.exec(data) !== null) return true;\n if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true;\n return false;\n}\n\nfunction constructYamlTimestamp(data) {\n var match, year, month, day, hour, minute, second, fraction = 0,\n delta = null, tz_hour, tz_minute, date;\n\n match = YAML_DATE_REGEXP.exec(data);\n if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data);\n\n if (match === null) throw new Error('Date resolve error');\n\n // match: [1] year [2] month [3] day\n\n year = +(match[1]);\n month = +(match[2]) - 1; // JS month starts with 0\n day = +(match[3]);\n\n if (!match[4]) { // no hour\n return new Date(Date.UTC(year, month, day));\n }\n\n // match: [4] hour [5] minute [6] second [7] fraction\n\n hour = +(match[4]);\n minute = +(match[5]);\n second = +(match[6]);\n\n if (match[7]) {\n fraction = match[7].slice(0, 3);\n while (fraction.length < 3) { // milli-seconds\n fraction += '0';\n }\n fraction = +fraction;\n }\n\n // match: [8] tz [9] tz_sign [10] tz_hour [11] tz_minute\n\n if (match[9]) {\n tz_hour = +(match[10]);\n tz_minute = +(match[11] || 0);\n delta = (tz_hour * 60 + tz_minute) * 60000; // delta in mili-seconds\n if (match[9] === '-') delta = -delta;\n }\n\n date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction));\n\n if (delta) date.setTime(date.getTime() - delta);\n\n return date;\n}\n\nfunction representYamlTimestamp(object /*, style*/) {\n return object.toISOString();\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:timestamp', {\n kind: 'scalar',\n resolve: resolveYamlTimestamp,\n construct: constructYamlTimestamp,\n instanceOf: Date,\n represent: representYamlTimestamp\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlMerge(data) {\n return data === '<<' || data === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:merge', {\n kind: 'scalar',\n resolve: resolveYamlMerge\n});\n","'use strict';\n\n/*eslint-disable no-bitwise*/\n\nvar NodeBuffer;\n\ntry {\n // A trick for browserified version, to not include `Buffer` shim\n var _require = require;\n NodeBuffer = _require('buffer').Buffer;\n} catch (__) {}\n\nvar Type = require('../type');\n\n\n// [ 64, 65, 66 ] -> [ padding, CR, LF ]\nvar BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\\n\\r';\n\n\nfunction resolveYamlBinary(data) {\n if (data === null) return false;\n\n var code, idx, bitlen = 0, max = data.length, map = BASE64_MAP;\n\n // Convert one by one.\n for (idx = 0; idx < max; idx++) {\n code = map.indexOf(data.charAt(idx));\n\n // Skip CR/LF\n if (code > 64) continue;\n\n // Fail on illegal characters\n if (code < 0) return false;\n\n bitlen += 6;\n }\n\n // If there are any bits left, source was corrupted\n return (bitlen % 8) === 0;\n}\n\nfunction constructYamlBinary(data) {\n var idx, tailbits,\n input = data.replace(/[\\r\\n=]/g, ''), // remove CR/LF & padding to simplify scan\n max = input.length,\n map = BASE64_MAP,\n bits = 0,\n result = [];\n\n // Collect by 6*4 bits (3 bytes)\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 4 === 0) && idx) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n }\n\n bits = (bits << 6) | map.indexOf(input.charAt(idx));\n }\n\n // Dump tail\n\n tailbits = (max % 4) * 6;\n\n if (tailbits === 0) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n } else if (tailbits === 18) {\n result.push((bits >> 10) & 0xFF);\n result.push((bits >> 2) & 0xFF);\n } else if (tailbits === 12) {\n result.push((bits >> 4) & 0xFF);\n }\n\n // Wrap into Buffer for NodeJS and leave Array for browser\n if (NodeBuffer) return new NodeBuffer(result);\n\n return result;\n}\n\nfunction representYamlBinary(object /*, style*/) {\n var result = '', bits = 0, idx, tail,\n max = object.length,\n map = BASE64_MAP;\n\n // Convert every three bytes to 4 ASCII characters.\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 3 === 0) && idx) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n }\n\n bits = (bits << 8) + object[idx];\n }\n\n // Dump tail\n\n tail = max % 3;\n\n if (tail === 0) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n } else if (tail === 2) {\n result += map[(bits >> 10) & 0x3F];\n result += map[(bits >> 4) & 0x3F];\n result += map[(bits << 2) & 0x3F];\n result += map[64];\n } else if (tail === 1) {\n result += map[(bits >> 2) & 0x3F];\n result += map[(bits << 4) & 0x3F];\n result += map[64];\n result += map[64];\n }\n\n return result;\n}\n\nfunction isBinary(object) {\n return NodeBuffer && NodeBuffer.isBuffer(object);\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:binary', {\n kind: 'scalar',\n resolve: resolveYamlBinary,\n construct: constructYamlBinary,\n predicate: isBinary,\n represent: representYamlBinary\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlOmap(data) {\n if (data === null) return true;\n\n var objectKeys = [], index, length, pair, pairKey, pairHasKey,\n object = data;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n pairHasKey = false;\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n for (pairKey in pair) {\n if (_hasOwnProperty.call(pair, pairKey)) {\n if (!pairHasKey) pairHasKey = true;\n else return false;\n }\n }\n\n if (!pairHasKey) return false;\n\n if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey);\n else return false;\n }\n\n return true;\n}\n\nfunction constructYamlOmap(data) {\n return data !== null ? data : [];\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:omap', {\n kind: 'sequence',\n resolve: resolveYamlOmap,\n construct: constructYamlOmap\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlPairs(data) {\n if (data === null) return true;\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n keys = Object.keys(pair);\n\n if (keys.length !== 1) return false;\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return true;\n}\n\nfunction constructYamlPairs(data) {\n if (data === null) return [];\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n keys = Object.keys(pair);\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return result;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:pairs', {\n kind: 'sequence',\n resolve: resolveYamlPairs,\n construct: constructYamlPairs\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction resolveYamlSet(data) {\n if (data === null) return true;\n\n var key, object = data;\n\n for (key in object) {\n if (_hasOwnProperty.call(object, key)) {\n if (object[key] !== null) return false;\n }\n }\n\n return true;\n}\n\nfunction constructYamlSet(data) {\n return data !== null ? data : {};\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:set', {\n kind: 'mapping',\n resolve: resolveYamlSet,\n construct: constructYamlSet\n});\n","// JS-YAML's default schema for `safeLoad` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on standard YAML's Core schema and includes most of\n// extra types described at YAML tag repository. (http://yaml.org/type/)\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./core')\n ],\n implicit: [\n require('../type/timestamp'),\n require('../type/merge')\n ],\n explicit: [\n require('../type/binary'),\n require('../type/omap'),\n require('../type/pairs'),\n require('../type/set')\n ]\n});\n","'use strict';\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptUndefined() {\n return true;\n}\n\nfunction constructJavascriptUndefined() {\n /*eslint-disable no-undefined*/\n return undefined;\n}\n\nfunction representJavascriptUndefined() {\n return '';\n}\n\nfunction isUndefined(object) {\n return typeof object === 'undefined';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/undefined', {\n kind: 'scalar',\n resolve: resolveJavascriptUndefined,\n construct: constructJavascriptUndefined,\n predicate: isUndefined,\n represent: representJavascriptUndefined\n});\n","'use strict';\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptRegExp(data) {\n if (data === null) return false;\n if (data.length === 0) return false;\n\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n\n // if regexp starts with '/' it can have modifiers and must be properly closed\n // `/foo/gim` - modifiers tail can be maximum 3 chars\n if (regexp[0] === '/') {\n if (tail) modifiers = tail[1];\n\n if (modifiers.length > 3) return false;\n // if expression starts with /, is should be properly terminated\n if (regexp[regexp.length - modifiers.length - 1] !== '/') return false;\n }\n\n return true;\n}\n\nfunction constructJavascriptRegExp(data) {\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n\n // `/foo/gim` - tail can be maximum 4 chars\n if (regexp[0] === '/') {\n if (tail) modifiers = tail[1];\n regexp = regexp.slice(1, regexp.length - modifiers.length - 1);\n }\n\n return new RegExp(regexp, modifiers);\n}\n\nfunction representJavascriptRegExp(object /*, style*/) {\n var result = '/' + object.source + '/';\n\n if (object.global) result += 'g';\n if (object.multiline) result += 'm';\n if (object.ignoreCase) result += 'i';\n\n return result;\n}\n\nfunction isRegExp(object) {\n return Object.prototype.toString.call(object) === '[object RegExp]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/regexp', {\n kind: 'scalar',\n resolve: resolveJavascriptRegExp,\n construct: constructJavascriptRegExp,\n predicate: isRegExp,\n represent: representJavascriptRegExp\n});\n","'use strict';\n\nvar esprima;\n\n// Browserified version does not have esprima\n//\n// 1. For node.js just require module as deps\n// 2. For browser try to require mudule via external AMD system.\n// If not found - try to fallback to window.esprima. If not\n// found too - then fail to parse.\n//\ntry {\n // workaround to exclude package from browserify list.\n var _require = require;\n esprima = _require('esprima');\n} catch (_) {\n /*global window */\n if (typeof window !== 'undefined') esprima = window.esprima;\n}\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptFunction(data) {\n if (data === null) return false;\n\n try {\n var source = '(' + data + ')',\n ast = esprima.parse(source, { range: true });\n\n if (ast.type !== 'Program' ||\n ast.body.length !== 1 ||\n ast.body[0].type !== 'ExpressionStatement' ||\n ast.body[0].expression.type !== 'FunctionExpression') {\n return false;\n }\n\n return true;\n } catch (err) {\n return false;\n }\n}\n\nfunction constructJavascriptFunction(data) {\n /*jslint evil:true*/\n\n var source = '(' + data + ')',\n ast = esprima.parse(source, { range: true }),\n params = [],\n body;\n\n if (ast.type !== 'Program' ||\n ast.body.length !== 1 ||\n ast.body[0].type !== 'ExpressionStatement' ||\n ast.body[0].expression.type !== 'FunctionExpression') {\n throw new Error('Failed to resolve function');\n }\n\n ast.body[0].expression.params.forEach(function (param) {\n params.push(param.name);\n });\n\n body = ast.body[0].expression.body.range;\n\n // Esprima's ranges include the first '{' and the last '}' characters on\n // function expressions. So cut them out.\n /*eslint-disable no-new-func*/\n return new Function(params, source.slice(body[0] + 1, body[1] - 1));\n}\n\nfunction representJavascriptFunction(object /*, style*/) {\n return object.toString();\n}\n\nfunction isFunction(object) {\n return Object.prototype.toString.call(object) === '[object Function]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/function', {\n kind: 'scalar',\n resolve: resolveJavascriptFunction,\n construct: constructJavascriptFunction,\n predicate: isFunction,\n represent: representJavascriptFunction\n});\n","// JS-YAML's default schema for `load` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on JS-YAML's default safe schema and includes\n// JavaScript-specific types: !!js/undefined, !!js/regexp and !!js/function.\n//\n// Also this schema is used as default base schema at `Schema.create` function.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = Schema.DEFAULT = new Schema({\n include: [\n require('./default_safe')\n ],\n explicit: [\n require('../type/js/undefined'),\n require('../type/js/regexp'),\n require('../type/js/function')\n ]\n});\n","'use strict';\n\n/*eslint-disable max-len,no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar Mark = require('./mark');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\n\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\n\nvar CONTEXT_FLOW_IN = 1;\nvar CONTEXT_FLOW_OUT = 2;\nvar CONTEXT_BLOCK_IN = 3;\nvar CONTEXT_BLOCK_OUT = 4;\n\n\nvar CHOMPING_CLIP = 1;\nvar CHOMPING_STRIP = 2;\nvar CHOMPING_KEEP = 3;\n\n\nvar PATTERN_NON_PRINTABLE = /[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x84\\x86-\\x9F\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\nvar PATTERN_NON_ASCII_LINE_BREAKS = /[\\x85\\u2028\\u2029]/;\nvar PATTERN_FLOW_INDICATORS = /[,\\[\\]\\{\\}]/;\nvar PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\\-]+!)$/i;\nvar PATTERN_TAG_URI = /^(?:!|[^,\\[\\]\\{\\}])(?:%[0-9a-f]{2}|[0-9a-z\\-#;\\/\\?:@&=\\+\\$,_\\.!~\\*'\\(\\)\\[\\]])*$/i;\n\n\nfunction is_EOL(c) {\n return (c === 0x0A/* LF */) || (c === 0x0D/* CR */);\n}\n\nfunction is_WHITE_SPACE(c) {\n return (c === 0x09/* Tab */) || (c === 0x20/* Space */);\n}\n\nfunction is_WS_OR_EOL(c) {\n return (c === 0x09/* Tab */) ||\n (c === 0x20/* Space */) ||\n (c === 0x0A/* LF */) ||\n (c === 0x0D/* CR */);\n}\n\nfunction is_FLOW_INDICATOR(c) {\n return c === 0x2C/* , */ ||\n c === 0x5B/* [ */ ||\n c === 0x5D/* ] */ ||\n c === 0x7B/* { */ ||\n c === 0x7D/* } */;\n}\n\nfunction fromHexCode(c) {\n var lc;\n\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n /*eslint-disable no-bitwise*/\n lc = c | 0x20;\n\n if ((0x61/* a */ <= lc) && (lc <= 0x66/* f */)) {\n return lc - 0x61 + 10;\n }\n\n return -1;\n}\n\nfunction escapedHexLen(c) {\n if (c === 0x78/* x */) { return 2; }\n if (c === 0x75/* u */) { return 4; }\n if (c === 0x55/* U */) { return 8; }\n return 0;\n}\n\nfunction fromDecimalCode(c) {\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n return -1;\n}\n\nfunction simpleEscapeSequence(c) {\n return (c === 0x30/* 0 */) ? '\\x00' :\n (c === 0x61/* a */) ? '\\x07' :\n (c === 0x62/* b */) ? '\\x08' :\n (c === 0x74/* t */) ? '\\x09' :\n (c === 0x09/* Tab */) ? '\\x09' :\n (c === 0x6E/* n */) ? '\\x0A' :\n (c === 0x76/* v */) ? '\\x0B' :\n (c === 0x66/* f */) ? '\\x0C' :\n (c === 0x72/* r */) ? '\\x0D' :\n (c === 0x65/* e */) ? '\\x1B' :\n (c === 0x20/* Space */) ? ' ' :\n (c === 0x22/* \" */) ? '\\x22' :\n (c === 0x2F/* / */) ? '/' :\n (c === 0x5C/* \\ */) ? '\\x5C' :\n (c === 0x4E/* N */) ? '\\x85' :\n (c === 0x5F/* _ */) ? '\\xA0' :\n (c === 0x4C/* L */) ? '\\u2028' :\n (c === 0x50/* P */) ? '\\u2029' : '';\n}\n\nfunction charFromCodepoint(c) {\n if (c <= 0xFFFF) {\n return String.fromCharCode(c);\n }\n // Encode UTF-16 surrogate pair\n // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF\n return String.fromCharCode(((c - 0x010000) >> 10) + 0xD800,\n ((c - 0x010000) & 0x03FF) + 0xDC00);\n}\n\nvar simpleEscapeCheck = new Array(256); // integer, for fast access\nvar simpleEscapeMap = new Array(256);\nfor (var i = 0; i < 256; i++) {\n simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0;\n simpleEscapeMap[i] = simpleEscapeSequence(i);\n}\n\n\nfunction State(input, options) {\n this.input = input;\n\n this.filename = options['filename'] || null;\n this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;\n this.onWarning = options['onWarning'] || null;\n this.legacy = options['legacy'] || false;\n this.json = options['json'] || false;\n this.listener = options['listener'] || null;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.typeMap = this.schema.compiledTypeMap;\n\n this.length = input.length;\n this.position = 0;\n this.line = 0;\n this.lineStart = 0;\n this.lineIndent = 0;\n\n this.documents = [];\n\n /*\n this.version;\n this.checkLineBreaks;\n this.tagMap;\n this.anchorMap;\n this.tag;\n this.anchor;\n this.kind;\n this.result;*/\n\n}\n\n\nfunction generateError(state, message) {\n return new YAMLException(\n message,\n new Mark(state.filename, state.input, state.position, state.line, (state.position - state.lineStart)));\n}\n\nfunction throwError(state, message) {\n throw generateError(state, message);\n}\n\nfunction throwWarning(state, message) {\n if (state.onWarning) {\n state.onWarning.call(null, generateError(state, message));\n }\n}\n\n\nvar directiveHandlers = {\n\n YAML: function handleYamlDirective(state, name, args) {\n\n var match, major, minor;\n\n if (state.version !== null) {\n throwError(state, 'duplication of %YAML directive');\n }\n\n if (args.length !== 1) {\n throwError(state, 'YAML directive accepts exactly one argument');\n }\n\n match = /^([0-9]+)\\.([0-9]+)$/.exec(args[0]);\n\n if (match === null) {\n throwError(state, 'ill-formed argument of the YAML directive');\n }\n\n major = parseInt(match[1], 10);\n minor = parseInt(match[2], 10);\n\n if (major !== 1) {\n throwError(state, 'unacceptable YAML version of the document');\n }\n\n state.version = args[0];\n state.checkLineBreaks = (minor < 2);\n\n if (minor !== 1 && minor !== 2) {\n throwWarning(state, 'unsupported YAML version of the document');\n }\n },\n\n TAG: function handleTagDirective(state, name, args) {\n\n var handle, prefix;\n\n if (args.length !== 2) {\n throwError(state, 'TAG directive accepts exactly two arguments');\n }\n\n handle = args[0];\n prefix = args[1];\n\n if (!PATTERN_TAG_HANDLE.test(handle)) {\n throwError(state, 'ill-formed tag handle (first argument) of the TAG directive');\n }\n\n if (_hasOwnProperty.call(state.tagMap, handle)) {\n throwError(state, 'there is a previously declared suffix for \"' + handle + '\" tag handle');\n }\n\n if (!PATTERN_TAG_URI.test(prefix)) {\n throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive');\n }\n\n state.tagMap[handle] = prefix;\n }\n};\n\n\nfunction captureSegment(state, start, end, checkJson) {\n var _position, _length, _character, _result;\n\n if (start < end) {\n _result = state.input.slice(start, end);\n\n if (checkJson) {\n for (_position = 0, _length = _result.length;\n _position < _length;\n _position += 1) {\n _character = _result.charCodeAt(_position);\n if (!(_character === 0x09 ||\n (0x20 <= _character && _character <= 0x10FFFF))) {\n throwError(state, 'expected valid JSON character');\n }\n }\n } else if (PATTERN_NON_PRINTABLE.test(_result)) {\n throwError(state, 'the stream contains non-printable characters');\n }\n\n state.result += _result;\n }\n}\n\nfunction mergeMappings(state, destination, source, overridableKeys) {\n var sourceKeys, key, index, quantity;\n\n if (!common.isObject(source)) {\n throwError(state, 'cannot merge mappings; the provided source object is unacceptable');\n }\n\n sourceKeys = Object.keys(source);\n\n for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) {\n key = sourceKeys[index];\n\n if (!_hasOwnProperty.call(destination, key)) {\n destination[key] = source[key];\n overridableKeys[key] = true;\n }\n }\n}\n\nfunction storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode) {\n var index, quantity;\n\n keyNode = String(keyNode);\n\n if (_result === null) {\n _result = {};\n }\n\n if (keyTag === 'tag:yaml.org,2002:merge') {\n if (Array.isArray(valueNode)) {\n for (index = 0, quantity = valueNode.length; index < quantity; index += 1) {\n mergeMappings(state, _result, valueNode[index], overridableKeys);\n }\n } else {\n mergeMappings(state, _result, valueNode, overridableKeys);\n }\n } else {\n if (!state.json &&\n !_hasOwnProperty.call(overridableKeys, keyNode) &&\n _hasOwnProperty.call(_result, keyNode)) {\n throwError(state, 'duplicated mapping key');\n }\n _result[keyNode] = valueNode;\n delete overridableKeys[keyNode];\n }\n\n return _result;\n}\n\nfunction readLineBreak(state) {\n var ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x0A/* LF */) {\n state.position++;\n } else if (ch === 0x0D/* CR */) {\n state.position++;\n if (state.input.charCodeAt(state.position) === 0x0A/* LF */) {\n state.position++;\n }\n } else {\n throwError(state, 'a line break is expected');\n }\n\n state.line += 1;\n state.lineStart = state.position;\n}\n\nfunction skipSeparationSpace(state, allowComments, checkIndent) {\n var lineBreaks = 0,\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (allowComments && ch === 0x23/* # */) {\n do {\n ch = state.input.charCodeAt(++state.position);\n } while (ch !== 0x0A/* LF */ && ch !== 0x0D/* CR */ && ch !== 0);\n }\n\n if (is_EOL(ch)) {\n readLineBreak(state);\n\n ch = state.input.charCodeAt(state.position);\n lineBreaks++;\n state.lineIndent = 0;\n\n while (ch === 0x20/* Space */) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n } else {\n break;\n }\n }\n\n if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) {\n throwWarning(state, 'deficient indentation');\n }\n\n return lineBreaks;\n}\n\nfunction testDocumentSeparator(state) {\n var _position = state.position,\n ch;\n\n ch = state.input.charCodeAt(_position);\n\n // Condition state.position === state.lineStart is tested\n // in parent on each call, for efficiency. No needs to test here again.\n if ((ch === 0x2D/* - */ || ch === 0x2E/* . */) &&\n ch === state.input.charCodeAt(_position + 1) &&\n ch === state.input.charCodeAt(_position + 2)) {\n\n _position += 3;\n\n ch = state.input.charCodeAt(_position);\n\n if (ch === 0 || is_WS_OR_EOL(ch)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction writeFoldedLines(state, count) {\n if (count === 1) {\n state.result += ' ';\n } else if (count > 1) {\n state.result += common.repeat('\\n', count - 1);\n }\n}\n\n\nfunction readPlainScalar(state, nodeIndent, withinFlowCollection) {\n var preceding,\n following,\n captureStart,\n captureEnd,\n hasPendingContent,\n _line,\n _lineStart,\n _lineIndent,\n _kind = state.kind,\n _result = state.result,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (is_WS_OR_EOL(ch) ||\n is_FLOW_INDICATOR(ch) ||\n ch === 0x23/* # */ ||\n ch === 0x26/* & */ ||\n ch === 0x2A/* * */ ||\n ch === 0x21/* ! */ ||\n ch === 0x7C/* | */ ||\n ch === 0x3E/* > */ ||\n ch === 0x27/* ' */ ||\n ch === 0x22/* \" */ ||\n ch === 0x25/* % */ ||\n ch === 0x40/* @ */ ||\n ch === 0x60/* ` */) {\n return false;\n }\n\n if (ch === 0x3F/* ? */ || ch === 0x2D/* - */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n return false;\n }\n }\n\n state.kind = 'scalar';\n state.result = '';\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n\n while (ch !== 0) {\n if (ch === 0x3A/* : */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n break;\n }\n\n } else if (ch === 0x23/* # */) {\n preceding = state.input.charCodeAt(state.position - 1);\n\n if (is_WS_OR_EOL(preceding)) {\n break;\n }\n\n } else if ((state.position === state.lineStart && testDocumentSeparator(state)) ||\n withinFlowCollection && is_FLOW_INDICATOR(ch)) {\n break;\n\n } else if (is_EOL(ch)) {\n _line = state.line;\n _lineStart = state.lineStart;\n _lineIndent = state.lineIndent;\n skipSeparationSpace(state, false, -1);\n\n if (state.lineIndent >= nodeIndent) {\n hasPendingContent = true;\n ch = state.input.charCodeAt(state.position);\n continue;\n } else {\n state.position = captureEnd;\n state.line = _line;\n state.lineStart = _lineStart;\n state.lineIndent = _lineIndent;\n break;\n }\n }\n\n if (hasPendingContent) {\n captureSegment(state, captureStart, captureEnd, false);\n writeFoldedLines(state, state.line - _line);\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n }\n\n if (!is_WHITE_SPACE(ch)) {\n captureEnd = state.position + 1;\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, captureEnd, false);\n\n if (state.result) {\n return true;\n }\n\n state.kind = _kind;\n state.result = _result;\n return false;\n}\n\nfunction readSingleQuotedScalar(state, nodeIndent) {\n var ch,\n captureStart, captureEnd;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x27/* ' */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x27/* ' */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x27/* ' */) {\n captureStart = state.position;\n state.position++;\n captureEnd = state.position;\n } else {\n return true;\n }\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a single quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a single quoted scalar');\n}\n\nfunction readDoubleQuotedScalar(state, nodeIndent) {\n var captureStart,\n captureEnd,\n hexLength,\n hexResult,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x22/* \" */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x22/* \" */) {\n captureSegment(state, captureStart, state.position, true);\n state.position++;\n return true;\n\n } else if (ch === 0x5C/* \\ */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (is_EOL(ch)) {\n skipSeparationSpace(state, false, nodeIndent);\n\n // TODO: rework to inline fn with no type cast?\n } else if (ch < 256 && simpleEscapeCheck[ch]) {\n state.result += simpleEscapeMap[ch];\n state.position++;\n\n } else if ((tmp = escapedHexLen(ch)) > 0) {\n hexLength = tmp;\n hexResult = 0;\n\n for (; hexLength > 0; hexLength--) {\n ch = state.input.charCodeAt(++state.position);\n\n if ((tmp = fromHexCode(ch)) >= 0) {\n hexResult = (hexResult << 4) + tmp;\n\n } else {\n throwError(state, 'expected hexadecimal character');\n }\n }\n\n state.result += charFromCodepoint(hexResult);\n\n state.position++;\n\n } else {\n throwError(state, 'unknown escape sequence');\n }\n\n captureStart = captureEnd = state.position;\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a double quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a double quoted scalar');\n}\n\nfunction readFlowCollection(state, nodeIndent) {\n var readNext = true,\n _line,\n _tag = state.tag,\n _result,\n _anchor = state.anchor,\n following,\n terminator,\n isPair,\n isExplicitPair,\n isMapping,\n overridableKeys = {},\n keyNode,\n keyTag,\n valueNode,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x5B/* [ */) {\n terminator = 0x5D;/* ] */\n isMapping = false;\n _result = [];\n } else if (ch === 0x7B/* { */) {\n terminator = 0x7D;/* } */\n isMapping = true;\n _result = {};\n } else {\n return false;\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n while (ch !== 0) {\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === terminator) {\n state.position++;\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = isMapping ? 'mapping' : 'sequence';\n state.result = _result;\n return true;\n } else if (!readNext) {\n throwError(state, 'missed comma between flow collection entries');\n }\n\n keyTag = keyNode = valueNode = null;\n isPair = isExplicitPair = false;\n\n if (ch === 0x3F/* ? */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following)) {\n isPair = isExplicitPair = true;\n state.position++;\n skipSeparationSpace(state, true, nodeIndent);\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n keyTag = state.tag;\n keyNode = state.result;\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((isExplicitPair || state.line === _line) && ch === 0x3A/* : */) {\n isPair = true;\n ch = state.input.charCodeAt(++state.position);\n skipSeparationSpace(state, true, nodeIndent);\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n valueNode = state.result;\n }\n\n if (isMapping) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode);\n } else if (isPair) {\n _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode));\n } else {\n _result.push(keyNode);\n }\n\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x2C/* , */) {\n readNext = true;\n ch = state.input.charCodeAt(++state.position);\n } else {\n readNext = false;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a flow collection');\n}\n\nfunction readBlockScalar(state, nodeIndent) {\n var captureStart,\n folding,\n chomping = CHOMPING_CLIP,\n didReadContent = false,\n detectedIndent = false,\n textIndent = nodeIndent,\n emptyLines = 0,\n atMoreIndented = false,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x7C/* | */) {\n folding = false;\n } else if (ch === 0x3E/* > */) {\n folding = true;\n } else {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n\n while (ch !== 0) {\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x2B/* + */ || ch === 0x2D/* - */) {\n if (CHOMPING_CLIP === chomping) {\n chomping = (ch === 0x2B/* + */) ? CHOMPING_KEEP : CHOMPING_STRIP;\n } else {\n throwError(state, 'repeat of a chomping mode identifier');\n }\n\n } else if ((tmp = fromDecimalCode(ch)) >= 0) {\n if (tmp === 0) {\n throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one');\n } else if (!detectedIndent) {\n textIndent = nodeIndent + tmp - 1;\n detectedIndent = true;\n } else {\n throwError(state, 'repeat of an indentation width identifier');\n }\n\n } else {\n break;\n }\n }\n\n if (is_WHITE_SPACE(ch)) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (is_WHITE_SPACE(ch));\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (!is_EOL(ch) && (ch !== 0));\n }\n }\n\n while (ch !== 0) {\n readLineBreak(state);\n state.lineIndent = 0;\n\n ch = state.input.charCodeAt(state.position);\n\n while ((!detectedIndent || state.lineIndent < textIndent) &&\n (ch === 0x20/* Space */)) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (!detectedIndent && state.lineIndent > textIndent) {\n textIndent = state.lineIndent;\n }\n\n if (is_EOL(ch)) {\n emptyLines++;\n continue;\n }\n\n // End of the scalar.\n if (state.lineIndent < textIndent) {\n\n // Perform the chomping.\n if (chomping === CHOMPING_KEEP) {\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n } else if (chomping === CHOMPING_CLIP) {\n if (didReadContent) { // i.e. only if the scalar is not empty.\n state.result += '\\n';\n }\n }\n\n // Break this `while` cycle and go to the funciton's epilogue.\n break;\n }\n\n // Folded style: use fancy rules to handle line breaks.\n if (folding) {\n\n // Lines starting with white space characters (more-indented lines) are not folded.\n if (is_WHITE_SPACE(ch)) {\n atMoreIndented = true;\n // except for the first content line (cf. Example 8.1)\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n\n // End of more-indented block.\n } else if (atMoreIndented) {\n atMoreIndented = false;\n state.result += common.repeat('\\n', emptyLines + 1);\n\n // Just one line break - perceive as the same line.\n } else if (emptyLines === 0) {\n if (didReadContent) { // i.e. only if we have already read some scalar content.\n state.result += ' ';\n }\n\n // Several line breaks - perceive as different lines.\n } else {\n state.result += common.repeat('\\n', emptyLines);\n }\n\n // Literal style: just add exact number of line breaks between content lines.\n } else {\n // Keep all line breaks except the header line break.\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n }\n\n didReadContent = true;\n detectedIndent = true;\n emptyLines = 0;\n captureStart = state.position;\n\n while (!is_EOL(ch) && (ch !== 0)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, state.position, false);\n }\n\n return true;\n}\n\nfunction readBlockSequence(state, nodeIndent) {\n var _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = [],\n following,\n detected = false,\n ch;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n\n if (ch !== 0x2D/* - */) {\n break;\n }\n\n following = state.input.charCodeAt(state.position + 1);\n\n if (!is_WS_OR_EOL(following)) {\n break;\n }\n\n detected = true;\n state.position++;\n\n if (skipSeparationSpace(state, true, -1)) {\n if (state.lineIndent <= nodeIndent) {\n _result.push(null);\n ch = state.input.charCodeAt(state.position);\n continue;\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true);\n _result.push(state.result);\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) {\n throwError(state, 'bad indentation of a sequence entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'sequence';\n state.result = _result;\n return true;\n }\n return false;\n}\n\nfunction readBlockMapping(state, nodeIndent, flowIndent) {\n var following,\n allowCompact,\n _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = {},\n overridableKeys = {},\n keyTag = null,\n keyNode = null,\n valueNode = null,\n atExplicitKey = false,\n detected = false,\n ch;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n following = state.input.charCodeAt(state.position + 1);\n _line = state.line; // Save the current line.\n\n //\n // Explicit notation case. There are two separate blocks:\n // first for the key (denoted by \"?\") and second for the value (denoted by \":\")\n //\n if ((ch === 0x3F/* ? */ || ch === 0x3A/* : */) && is_WS_OR_EOL(following)) {\n\n if (ch === 0x3F/* ? */) {\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = true;\n allowCompact = true;\n\n } else if (atExplicitKey) {\n // i.e. 0x3A/* : */ === character after the explicit key.\n atExplicitKey = false;\n allowCompact = true;\n\n } else {\n throwError(state, 'incomplete explicit mapping pair; a key node is missed');\n }\n\n state.position += 1;\n ch = following;\n\n //\n // Implicit notation case. Flow-style node as the key first, then \":\", and the value.\n //\n } else if (composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) {\n\n if (state.line === _line) {\n ch = state.input.charCodeAt(state.position);\n\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x3A/* : */) {\n ch = state.input.charCodeAt(++state.position);\n\n if (!is_WS_OR_EOL(ch)) {\n throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping');\n }\n\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = false;\n allowCompact = false;\n keyTag = state.tag;\n keyNode = state.result;\n\n } else if (detected) {\n throwError(state, 'can not read an implicit mapping pair; a colon is missed');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else if (detected) {\n throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else {\n break; // Reading is done. Go to the epilogue.\n }\n\n //\n // Common reading code for both explicit and implicit notations.\n //\n if (state.line === _line || state.lineIndent > nodeIndent) {\n if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) {\n if (atExplicitKey) {\n keyNode = state.result;\n } else {\n valueNode = state.result;\n }\n }\n\n if (!atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode);\n keyTag = keyNode = valueNode = null;\n }\n\n skipSeparationSpace(state, true, -1);\n ch = state.input.charCodeAt(state.position);\n }\n\n if (state.lineIndent > nodeIndent && (ch !== 0)) {\n throwError(state, 'bad indentation of a mapping entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n //\n // Epilogue.\n //\n\n // Special case: last mapping's node contains only the key in explicit notation.\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n }\n\n // Expose the resulting mapping.\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'mapping';\n state.result = _result;\n }\n\n return detected;\n}\n\nfunction readTagProperty(state) {\n var _position,\n isVerbatim = false,\n isNamed = false,\n tagHandle,\n tagName,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x21/* ! */) return false;\n\n if (state.tag !== null) {\n throwError(state, 'duplication of a tag property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x3C/* < */) {\n isVerbatim = true;\n ch = state.input.charCodeAt(++state.position);\n\n } else if (ch === 0x21/* ! */) {\n isNamed = true;\n tagHandle = '!!';\n ch = state.input.charCodeAt(++state.position);\n\n } else {\n tagHandle = '!';\n }\n\n _position = state.position;\n\n if (isVerbatim) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && ch !== 0x3E/* > */);\n\n if (state.position < state.length) {\n tagName = state.input.slice(_position, state.position);\n ch = state.input.charCodeAt(++state.position);\n } else {\n throwError(state, 'unexpected end of the stream within a verbatim tag');\n }\n } else {\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n\n if (ch === 0x21/* ! */) {\n if (!isNamed) {\n tagHandle = state.input.slice(_position - 1, state.position + 1);\n\n if (!PATTERN_TAG_HANDLE.test(tagHandle)) {\n throwError(state, 'named tag handle cannot contain such characters');\n }\n\n isNamed = true;\n _position = state.position + 1;\n } else {\n throwError(state, 'tag suffix cannot contain exclamation marks');\n }\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n tagName = state.input.slice(_position, state.position);\n\n if (PATTERN_FLOW_INDICATORS.test(tagName)) {\n throwError(state, 'tag suffix cannot contain flow indicator characters');\n }\n }\n\n if (tagName && !PATTERN_TAG_URI.test(tagName)) {\n throwError(state, 'tag name cannot contain such characters: ' + tagName);\n }\n\n if (isVerbatim) {\n state.tag = tagName;\n\n } else if (_hasOwnProperty.call(state.tagMap, tagHandle)) {\n state.tag = state.tagMap[tagHandle] + tagName;\n\n } else if (tagHandle === '!') {\n state.tag = '!' + tagName;\n\n } else if (tagHandle === '!!') {\n state.tag = 'tag:yaml.org,2002:' + tagName;\n\n } else {\n throwError(state, 'undeclared tag handle \"' + tagHandle + '\"');\n }\n\n return true;\n}\n\nfunction readAnchorProperty(state) {\n var _position,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x26/* & */) return false;\n\n if (state.anchor !== null) {\n throwError(state, 'duplication of an anchor property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an anchor node must contain at least one character');\n }\n\n state.anchor = state.input.slice(_position, state.position);\n return true;\n}\n\nfunction readAlias(state) {\n var _position, alias,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x2A/* * */) return false;\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an alias node must contain at least one character');\n }\n\n alias = state.input.slice(_position, state.position);\n\n if (!state.anchorMap.hasOwnProperty(alias)) {\n throwError(state, 'unidentified alias \"' + alias + '\"');\n }\n\n state.result = state.anchorMap[alias];\n skipSeparationSpace(state, true, -1);\n return true;\n}\n\nfunction composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) {\n var allowBlockStyles,\n allowBlockScalars,\n allowBlockCollections,\n indentStatus = 1, // 1: this>parent, 0: this=parent, -1: this parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n }\n }\n\n if (indentStatus === 1) {\n while (readTagProperty(state) || readAnchorProperty(state)) {\n if (skipSeparationSpace(state, true, -1)) {\n atNewLine = true;\n allowBlockCollections = allowBlockStyles;\n\n if (state.lineIndent > parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n } else {\n allowBlockCollections = false;\n }\n }\n }\n\n if (allowBlockCollections) {\n allowBlockCollections = atNewLine || allowCompact;\n }\n\n if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) {\n if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) {\n flowIndent = parentIndent;\n } else {\n flowIndent = parentIndent + 1;\n }\n\n blockIndent = state.position - state.lineStart;\n\n if (indentStatus === 1) {\n if (allowBlockCollections &&\n (readBlockSequence(state, blockIndent) ||\n readBlockMapping(state, blockIndent, flowIndent)) ||\n readFlowCollection(state, flowIndent)) {\n hasContent = true;\n } else {\n if ((allowBlockScalars && readBlockScalar(state, flowIndent)) ||\n readSingleQuotedScalar(state, flowIndent) ||\n readDoubleQuotedScalar(state, flowIndent)) {\n hasContent = true;\n\n } else if (readAlias(state)) {\n hasContent = true;\n\n if (state.tag !== null || state.anchor !== null) {\n throwError(state, 'alias node should not have any properties');\n }\n\n } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) {\n hasContent = true;\n\n if (state.tag === null) {\n state.tag = '?';\n }\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else if (indentStatus === 0) {\n // Special case: block sequences are allowed to have same indentation level as the parent.\n // http://www.yaml.org/spec/1.2/spec.html#id2799784\n hasContent = allowBlockCollections && readBlockSequence(state, blockIndent);\n }\n }\n\n if (state.tag !== null && state.tag !== '!') {\n if (state.tag === '?') {\n for (typeIndex = 0, typeQuantity = state.implicitTypes.length;\n typeIndex < typeQuantity;\n typeIndex += 1) {\n type = state.implicitTypes[typeIndex];\n\n // Implicit resolving is not allowed for non-scalar types, and '?'\n // non-specific tag is only assigned to plain scalars. So, it isn't\n // needed to check for 'kind' conformity.\n\n if (type.resolve(state.result)) { // `state.result` updated in resolver if matched\n state.result = type.construct(state.result);\n state.tag = type.tag;\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n break;\n }\n }\n } else if (_hasOwnProperty.call(state.typeMap[state.kind || 'fallback'], state.tag)) {\n type = state.typeMap[state.kind || 'fallback'][state.tag];\n\n if (state.result !== null && type.kind !== state.kind) {\n throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be \"' + type.kind + '\", not \"' + state.kind + '\"');\n }\n\n if (!type.resolve(state.result)) { // `state.result` updated in resolver if matched\n throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag');\n } else {\n state.result = type.construct(state.result);\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else {\n throwError(state, 'unknown tag !<' + state.tag + '>');\n }\n }\n\n if (state.listener !== null) {\n state.listener('close', state);\n }\n return state.tag !== null || state.anchor !== null || hasContent;\n}\n\nfunction readDocument(state) {\n var documentStart = state.position,\n _position,\n directiveName,\n directiveArgs,\n hasDirectives = false,\n ch;\n\n state.version = null;\n state.checkLineBreaks = state.legacy;\n state.tagMap = {};\n state.anchorMap = {};\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if (state.lineIndent > 0 || ch !== 0x25/* % */) {\n break;\n }\n\n hasDirectives = true;\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveName = state.input.slice(_position, state.position);\n directiveArgs = [];\n\n if (directiveName.length < 1) {\n throwError(state, 'directive name must not be less than one character in length');\n }\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && !is_EOL(ch));\n break;\n }\n\n if (is_EOL(ch)) break;\n\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveArgs.push(state.input.slice(_position, state.position));\n }\n\n if (ch !== 0) readLineBreak(state);\n\n if (_hasOwnProperty.call(directiveHandlers, directiveName)) {\n directiveHandlers[directiveName](state, directiveName, directiveArgs);\n } else {\n throwWarning(state, 'unknown document directive \"' + directiveName + '\"');\n }\n }\n\n skipSeparationSpace(state, true, -1);\n\n if (state.lineIndent === 0 &&\n state.input.charCodeAt(state.position) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 1) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 2) === 0x2D/* - */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n\n } else if (hasDirectives) {\n throwError(state, 'directives end mark is expected');\n }\n\n composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true);\n skipSeparationSpace(state, true, -1);\n\n if (state.checkLineBreaks &&\n PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) {\n throwWarning(state, 'non-ASCII line breaks are interpreted as content');\n }\n\n state.documents.push(state.result);\n\n if (state.position === state.lineStart && testDocumentSeparator(state)) {\n\n if (state.input.charCodeAt(state.position) === 0x2E/* . */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n }\n return;\n }\n\n if (state.position < (state.length - 1)) {\n throwError(state, 'end of the stream or a document separator is expected');\n } else {\n return;\n }\n}\n\n\nfunction loadDocuments(input, options) {\n input = String(input);\n options = options || {};\n\n if (input.length !== 0) {\n\n // Add tailing `\\n` if not exists\n if (input.charCodeAt(input.length - 1) !== 0x0A/* LF */ &&\n input.charCodeAt(input.length - 1) !== 0x0D/* CR */) {\n input += '\\n';\n }\n\n // Strip BOM\n if (input.charCodeAt(0) === 0xFEFF) {\n input = input.slice(1);\n }\n }\n\n var state = new State(input, options);\n\n // Use 0 as string terminator. That significantly simplifies bounds check.\n state.input += '\\0';\n\n while (state.input.charCodeAt(state.position) === 0x20/* Space */) {\n state.lineIndent += 1;\n state.position += 1;\n }\n\n while (state.position < (state.length - 1)) {\n readDocument(state);\n }\n\n return state.documents;\n}\n\n\nfunction loadAll(input, iterator, options) {\n var documents = loadDocuments(input, options), index, length;\n\n for (index = 0, length = documents.length; index < length; index += 1) {\n iterator(documents[index]);\n }\n}\n\n\nfunction load(input, options) {\n var documents = loadDocuments(input, options);\n\n if (documents.length === 0) {\n /*eslint-disable no-undefined*/\n return undefined;\n } else if (documents.length === 1) {\n return documents[0];\n }\n throw new YAMLException('expected a single document in the stream, but found more');\n}\n\n\nfunction safeLoadAll(input, output, options) {\n loadAll(input, output, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\n\nfunction safeLoad(input, options) {\n return load(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\n\nmodule.exports.loadAll = loadAll;\nmodule.exports.load = load;\nmodule.exports.safeLoadAll = safeLoadAll;\nmodule.exports.safeLoad = safeLoad;\n","'use strict';\n\n/*eslint-disable no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\n\nvar _toString = Object.prototype.toString;\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar CHAR_TAB = 0x09; /* Tab */\nvar CHAR_LINE_FEED = 0x0A; /* LF */\nvar CHAR_SPACE = 0x20; /* Space */\nvar CHAR_EXCLAMATION = 0x21; /* ! */\nvar CHAR_DOUBLE_QUOTE = 0x22; /* \" */\nvar CHAR_SHARP = 0x23; /* # */\nvar CHAR_PERCENT = 0x25; /* % */\nvar CHAR_AMPERSAND = 0x26; /* & */\nvar CHAR_SINGLE_QUOTE = 0x27; /* ' */\nvar CHAR_ASTERISK = 0x2A; /* * */\nvar CHAR_COMMA = 0x2C; /* , */\nvar CHAR_MINUS = 0x2D; /* - */\nvar CHAR_COLON = 0x3A; /* : */\nvar CHAR_GREATER_THAN = 0x3E; /* > */\nvar CHAR_QUESTION = 0x3F; /* ? */\nvar CHAR_COMMERCIAL_AT = 0x40; /* @ */\nvar CHAR_LEFT_SQUARE_BRACKET = 0x5B; /* [ */\nvar CHAR_RIGHT_SQUARE_BRACKET = 0x5D; /* ] */\nvar CHAR_GRAVE_ACCENT = 0x60; /* ` */\nvar CHAR_LEFT_CURLY_BRACKET = 0x7B; /* { */\nvar CHAR_VERTICAL_LINE = 0x7C; /* | */\nvar CHAR_RIGHT_CURLY_BRACKET = 0x7D; /* } */\n\nvar ESCAPE_SEQUENCES = {};\n\nESCAPE_SEQUENCES[0x00] = '\\\\0';\nESCAPE_SEQUENCES[0x07] = '\\\\a';\nESCAPE_SEQUENCES[0x08] = '\\\\b';\nESCAPE_SEQUENCES[0x09] = '\\\\t';\nESCAPE_SEQUENCES[0x0A] = '\\\\n';\nESCAPE_SEQUENCES[0x0B] = '\\\\v';\nESCAPE_SEQUENCES[0x0C] = '\\\\f';\nESCAPE_SEQUENCES[0x0D] = '\\\\r';\nESCAPE_SEQUENCES[0x1B] = '\\\\e';\nESCAPE_SEQUENCES[0x22] = '\\\\\"';\nESCAPE_SEQUENCES[0x5C] = '\\\\\\\\';\nESCAPE_SEQUENCES[0x85] = '\\\\N';\nESCAPE_SEQUENCES[0xA0] = '\\\\_';\nESCAPE_SEQUENCES[0x2028] = '\\\\L';\nESCAPE_SEQUENCES[0x2029] = '\\\\P';\n\nvar DEPRECATED_BOOLEANS_SYNTAX = [\n 'y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON',\n 'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF'\n];\n\nfunction compileStyleMap(schema, map) {\n var result, keys, index, length, tag, style, type;\n\n if (map === null) return {};\n\n result = {};\n keys = Object.keys(map);\n\n for (index = 0, length = keys.length; index < length; index += 1) {\n tag = keys[index];\n style = String(map[tag]);\n\n if (tag.slice(0, 2) === '!!') {\n tag = 'tag:yaml.org,2002:' + tag.slice(2);\n }\n type = schema.compiledTypeMap['fallback'][tag];\n\n if (type && _hasOwnProperty.call(type.styleAliases, style)) {\n style = type.styleAliases[style];\n }\n\n result[tag] = style;\n }\n\n return result;\n}\n\nfunction encodeHex(character) {\n var string, handle, length;\n\n string = character.toString(16).toUpperCase();\n\n if (character <= 0xFF) {\n handle = 'x';\n length = 2;\n } else if (character <= 0xFFFF) {\n handle = 'u';\n length = 4;\n } else if (character <= 0xFFFFFFFF) {\n handle = 'U';\n length = 8;\n } else {\n throw new YAMLException('code point within a string may not be greater than 0xFFFFFFFF');\n }\n\n return '\\\\' + handle + common.repeat('0', length - string.length) + string;\n}\n\nfunction State(options) {\n this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;\n this.indent = Math.max(1, (options['indent'] || 2));\n this.skipInvalid = options['skipInvalid'] || false;\n this.flowLevel = (common.isNothing(options['flowLevel']) ? -1 : options['flowLevel']);\n this.styleMap = compileStyleMap(this.schema, options['styles'] || null);\n this.sortKeys = options['sortKeys'] || false;\n this.lineWidth = options['lineWidth'] || 80;\n this.noRefs = options['noRefs'] || false;\n this.noCompatMode = options['noCompatMode'] || false;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.explicitTypes = this.schema.compiledExplicit;\n\n this.tag = null;\n this.result = '';\n\n this.duplicates = [];\n this.usedDuplicates = null;\n}\n\n// Indents every line in a string. Empty lines (\\n only) are not indented.\nfunction indentString(string, spaces) {\n var ind = common.repeat(' ', spaces),\n position = 0,\n next = -1,\n result = '',\n line,\n length = string.length;\n\n while (position < length) {\n next = string.indexOf('\\n', position);\n if (next === -1) {\n line = string.slice(position);\n position = length;\n } else {\n line = string.slice(position, next + 1);\n position = next + 1;\n }\n\n if (line.length && line !== '\\n') result += ind;\n\n result += line;\n }\n\n return result;\n}\n\nfunction generateNextLine(state, level) {\n return '\\n' + common.repeat(' ', state.indent * level);\n}\n\nfunction testImplicitResolving(state, str) {\n var index, length, type;\n\n for (index = 0, length = state.implicitTypes.length; index < length; index += 1) {\n type = state.implicitTypes[index];\n\n if (type.resolve(str)) {\n return true;\n }\n }\n\n return false;\n}\n\n// [33] s-white ::= s-space | s-tab\nfunction isWhitespace(c) {\n return c === CHAR_SPACE || c === CHAR_TAB;\n}\n\n// Returns true if the character can be printed without escaping.\n// From YAML 1.2: \"any allowed characters known to be non-printable\n// should also be escaped. [However,] This isn’t mandatory\"\n// Derived from nb-char - \\t - #x85 - #xA0 - #x2028 - #x2029.\nfunction isPrintable(c) {\n return (0x00020 <= c && c <= 0x00007E)\n || ((0x000A1 <= c && c <= 0x00D7FF) && c !== 0x2028 && c !== 0x2029)\n || ((0x0E000 <= c && c <= 0x00FFFD) && c !== 0xFEFF /* BOM */)\n || (0x10000 <= c && c <= 0x10FFFF);\n}\n\n// Simplified test for values allowed after the first character in plain style.\nfunction isPlainSafe(c) {\n // Uses a subset of nb-char - c-flow-indicator - \":\" - \"#\"\n // where nb-char ::= c-printable - b-char - c-byte-order-mark.\n return isPrintable(c) && c !== 0xFEFF\n // - c-flow-indicator\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // - \":\" - \"#\"\n && c !== CHAR_COLON\n && c !== CHAR_SHARP;\n}\n\n// Simplified test for values allowed as the first character in plain style.\nfunction isPlainSafeFirst(c) {\n // Uses a subset of ns-char - c-indicator\n // where ns-char = nb-char - s-white.\n return isPrintable(c) && c !== 0xFEFF\n && !isWhitespace(c) // - s-white\n // - (c-indicator ::=\n // “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}”\n && c !== CHAR_MINUS\n && c !== CHAR_QUESTION\n && c !== CHAR_COLON\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // | “#” | “&” | “*” | “!” | “|” | “>” | “'” | “\"”\n && c !== CHAR_SHARP\n && c !== CHAR_AMPERSAND\n && c !== CHAR_ASTERISK\n && c !== CHAR_EXCLAMATION\n && c !== CHAR_VERTICAL_LINE\n && c !== CHAR_GREATER_THAN\n && c !== CHAR_SINGLE_QUOTE\n && c !== CHAR_DOUBLE_QUOTE\n // | “%” | “@” | “`”)\n && c !== CHAR_PERCENT\n && c !== CHAR_COMMERCIAL_AT\n && c !== CHAR_GRAVE_ACCENT;\n}\n\nvar STYLE_PLAIN = 1,\n STYLE_SINGLE = 2,\n STYLE_LITERAL = 3,\n STYLE_FOLDED = 4,\n STYLE_DOUBLE = 5;\n\n// Determines which scalar styles are possible and returns the preferred style.\n// lineWidth = -1 => no limit.\n// Pre-conditions: str.length > 0.\n// Post-conditions:\n// STYLE_PLAIN or STYLE_SINGLE => no \\n are in the string.\n// STYLE_LITERAL => no lines are suitable for folding (or lineWidth is -1).\n// STYLE_FOLDED => a line > lineWidth and can be folded (and lineWidth != -1).\nfunction chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth, testAmbiguousType) {\n var i;\n var char;\n var hasLineBreak = false;\n var hasFoldableLine = false; // only checked if shouldTrackWidth\n var shouldTrackWidth = lineWidth !== -1;\n var previousLineBreak = -1; // count the first line correctly\n var plain = isPlainSafeFirst(string.charCodeAt(0))\n && !isWhitespace(string.charCodeAt(string.length - 1));\n\n if (singleLineOnly) {\n // Case: no block styles.\n // Check for disallowed characters to rule out plain and single.\n for (i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char);\n }\n } else {\n // Case: block styles permitted.\n for (i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n if (char === CHAR_LINE_FEED) {\n hasLineBreak = true;\n // Check if any line can be folded.\n if (shouldTrackWidth) {\n hasFoldableLine = hasFoldableLine ||\n // Foldable line = too long, and not more-indented.\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' ');\n previousLineBreak = i;\n }\n } else if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char);\n }\n // in case the end is missing a \\n\n hasFoldableLine = hasFoldableLine || (shouldTrackWidth &&\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' '));\n }\n // Although every style can represent \\n without escaping, prefer block styles\n // for multiline, since they're more readable and they don't add empty lines.\n // Also prefer folding a super-long line.\n if (!hasLineBreak && !hasFoldableLine) {\n // Strings interpretable as another type have to be quoted;\n // e.g. the string 'true' vs. the boolean true.\n return plain && !testAmbiguousType(string)\n ? STYLE_PLAIN : STYLE_SINGLE;\n }\n // Edge case: block indentation indicator can only have one digit.\n if (string[0] === ' ' && indentPerLevel > 9) {\n return STYLE_DOUBLE;\n }\n // At this point we know block styles are valid.\n // Prefer literal style unless we want to fold.\n return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL;\n}\n\n// Note: line breaking/folding is implemented for only the folded style.\n// NB. We drop the last trailing newline (if any) of a returned block scalar\n// since the dumper adds its own newline. This always works:\n// • No ending newline => unaffected; already using strip \"-\" chomping.\n// • Ending newline => removed then restored.\n// Importantly, this keeps the \"+\" chomp indicator from gaining an extra line.\nfunction writeScalar(state, string, level, iskey) {\n state.dump = (function () {\n if (string.length === 0) {\n return \"''\";\n }\n if (!state.noCompatMode &&\n DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1) {\n return \"'\" + string + \"'\";\n }\n\n var indent = state.indent * Math.max(1, level); // no 0-indent scalars\n // As indentation gets deeper, let the width decrease monotonically\n // to the lower bound min(state.lineWidth, 40).\n // Note that this implies\n // state.lineWidth ≤ 40 + state.indent: width is fixed at the lower bound.\n // state.lineWidth > 40 + state.indent: width decreases until the lower bound.\n // This behaves better than a constant minimum width which disallows narrower options,\n // or an indent threshold which causes the width to suddenly increase.\n var lineWidth = state.lineWidth === -1\n ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent);\n\n // Without knowing if keys are implicit/explicit, assume implicit for safety.\n var singleLineOnly = iskey\n // No block styles in flow mode.\n || (state.flowLevel > -1 && level >= state.flowLevel);\n function testAmbiguity(string) {\n return testImplicitResolving(state, string);\n }\n\n switch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth, testAmbiguity)) {\n case STYLE_PLAIN:\n return string;\n case STYLE_SINGLE:\n return \"'\" + string.replace(/'/g, \"''\") + \"'\";\n case STYLE_LITERAL:\n return '|' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(string, indent));\n case STYLE_FOLDED:\n return '>' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(foldString(string, lineWidth), indent));\n case STYLE_DOUBLE:\n return '\"' + escapeString(string, lineWidth) + '\"';\n default:\n throw new YAMLException('impossible error: invalid scalar style');\n }\n }());\n}\n\n// Pre-conditions: string is valid for a block scalar, 1 <= indentPerLevel <= 9.\nfunction blockHeader(string, indentPerLevel) {\n var indentIndicator = (string[0] === ' ') ? String(indentPerLevel) : '';\n\n // note the special case: the string '\\n' counts as a \"trailing\" empty line.\n var clip = string[string.length - 1] === '\\n';\n var keep = clip && (string[string.length - 2] === '\\n' || string === '\\n');\n var chomp = keep ? '+' : (clip ? '' : '-');\n\n return indentIndicator + chomp + '\\n';\n}\n\n// (See the note for writeScalar.)\nfunction dropEndingNewline(string) {\n return string[string.length - 1] === '\\n' ? string.slice(0, -1) : string;\n}\n\n// Note: a long line without a suitable break point will exceed the width limit.\n// Pre-conditions: every char in str isPrintable, str.length > 0, width > 0.\nfunction foldString(string, width) {\n // In folded style, $k$ consecutive newlines output as $k+1$ newlines—\n // unless they're before or after a more-indented line, or at the very\n // beginning or end, in which case $k$ maps to $k$.\n // Therefore, parse each chunk as newline(s) followed by a content line.\n var lineRe = /(\\n+)([^\\n]*)/g;\n\n // first line (possibly an empty line)\n var result = (function () {\n var nextLF = string.indexOf('\\n');\n nextLF = nextLF !== -1 ? nextLF : string.length;\n lineRe.lastIndex = nextLF;\n return foldLine(string.slice(0, nextLF), width);\n }());\n // If we haven't reached the first content line yet, don't add an extra \\n.\n var prevMoreIndented = string[0] === '\\n' || string[0] === ' ';\n var moreIndented;\n\n // rest of the lines\n var match;\n while ((match = lineRe.exec(string))) {\n var prefix = match[1], line = match[2];\n moreIndented = (line[0] === ' ');\n result += prefix\n + (!prevMoreIndented && !moreIndented && line !== ''\n ? '\\n' : '')\n + foldLine(line, width);\n prevMoreIndented = moreIndented;\n }\n\n return result;\n}\n\n// Greedy line breaking.\n// Picks the longest line under the limit each time,\n// otherwise settles for the shortest line over the limit.\n// NB. More-indented lines *cannot* be folded, as that would add an extra \\n.\nfunction foldLine(line, width) {\n if (line === '' || line[0] === ' ') return line;\n\n // Since a more-indented line adds a \\n, breaks can't be followed by a space.\n var breakRe = / [^ ]/g; // note: the match index will always be <= length-2.\n var match;\n // start is an inclusive index. end, curr, and next are exclusive.\n var start = 0, end, curr = 0, next = 0;\n var result = '';\n\n // Invariants: 0 <= start <= length-1.\n // 0 <= curr <= next <= max(0, length-2). curr - start <= width.\n // Inside the loop:\n // A match implies length >= 2, so curr and next are <= length-2.\n while ((match = breakRe.exec(line))) {\n next = match.index;\n // maintain invariant: curr - start <= width\n if (next - start > width) {\n end = (curr > start) ? curr : next; // derive end <= length-2\n result += '\\n' + line.slice(start, end);\n // skip the space that was output as \\n\n start = end + 1; // derive start <= length-1\n }\n curr = next;\n }\n\n // By the invariants, start <= length-1, so there is something left over.\n // It is either the whole string or a part starting from non-whitespace.\n result += '\\n';\n // Insert a break if the remainder is too long and there is a break available.\n if (line.length - start > width && curr > start) {\n result += line.slice(start, curr) + '\\n' + line.slice(curr + 1);\n } else {\n result += line.slice(start);\n }\n\n return result.slice(1); // drop extra \\n joiner\n}\n\n// Escapes a double-quoted string.\nfunction escapeString(string) {\n var result = '';\n var char;\n var escapeSeq;\n\n for (var i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n escapeSeq = ESCAPE_SEQUENCES[char];\n result += !escapeSeq && isPrintable(char)\n ? string[i]\n : escapeSeq || encodeHex(char);\n }\n\n return result;\n}\n\nfunction writeFlowSequence(state, level, object) {\n var _result = '',\n _tag = state.tag,\n index,\n length;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n // Write only valid elements.\n if (writeNode(state, level, object[index], false, false)) {\n if (index !== 0) _result += ', ';\n _result += state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = '[' + _result + ']';\n}\n\nfunction writeBlockSequence(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n index,\n length;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n // Write only valid elements.\n if (writeNode(state, level + 1, object[index], true, true)) {\n if (!compact || index !== 0) {\n _result += generateNextLine(state, level);\n }\n _result += '- ' + state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = _result || '[]'; // Empty sequence if no valid values.\n}\n\nfunction writeFlowMapping(state, level, object) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n pairBuffer;\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n\n if (index !== 0) pairBuffer += ', ';\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (!writeNode(state, level, objectKey, false, false)) {\n continue; // Skip this pair because of invalid key;\n }\n\n if (state.dump.length > 1024) pairBuffer += '? ';\n\n pairBuffer += state.dump + ': ';\n\n if (!writeNode(state, level, objectValue, false, false)) {\n continue; // Skip this pair because of invalid value.\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = '{' + _result + '}';\n}\n\nfunction writeBlockMapping(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n explicitPair,\n pairBuffer;\n\n // Allow sorting keys so that the output file is deterministic\n if (state.sortKeys === true) {\n // Default sorting\n objectKeyList.sort();\n } else if (typeof state.sortKeys === 'function') {\n // Custom sort function\n objectKeyList.sort(state.sortKeys);\n } else if (state.sortKeys) {\n // Something is wrong\n throw new YAMLException('sortKeys must be a boolean or a function');\n }\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n\n if (!compact || index !== 0) {\n pairBuffer += generateNextLine(state, level);\n }\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (!writeNode(state, level + 1, objectKey, true, true, true)) {\n continue; // Skip this pair because of invalid key.\n }\n\n explicitPair = (state.tag !== null && state.tag !== '?') ||\n (state.dump && state.dump.length > 1024);\n\n if (explicitPair) {\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += '?';\n } else {\n pairBuffer += '? ';\n }\n }\n\n pairBuffer += state.dump;\n\n if (explicitPair) {\n pairBuffer += generateNextLine(state, level);\n }\n\n if (!writeNode(state, level + 1, objectValue, true, explicitPair)) {\n continue; // Skip this pair because of invalid value.\n }\n\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += ':';\n } else {\n pairBuffer += ': ';\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = _result || '{}'; // Empty mapping if no valid pairs.\n}\n\nfunction detectType(state, object, explicit) {\n var _result, typeList, index, length, type, style;\n\n typeList = explicit ? state.explicitTypes : state.implicitTypes;\n\n for (index = 0, length = typeList.length; index < length; index += 1) {\n type = typeList[index];\n\n if ((type.instanceOf || type.predicate) &&\n (!type.instanceOf || ((typeof object === 'object') && (object instanceof type.instanceOf))) &&\n (!type.predicate || type.predicate(object))) {\n\n state.tag = explicit ? type.tag : '?';\n\n if (type.represent) {\n style = state.styleMap[type.tag] || type.defaultStyle;\n\n if (_toString.call(type.represent) === '[object Function]') {\n _result = type.represent(object, style);\n } else if (_hasOwnProperty.call(type.represent, style)) {\n _result = type.represent[style](object, style);\n } else {\n throw new YAMLException('!<' + type.tag + '> tag resolver accepts not \"' + style + '\" style');\n }\n\n state.dump = _result;\n }\n\n return true;\n }\n }\n\n return false;\n}\n\n// Serializes `object` and writes it to global `result`.\n// Returns true on success, or false on invalid object.\n//\nfunction writeNode(state, level, object, block, compact, iskey) {\n state.tag = null;\n state.dump = object;\n\n if (!detectType(state, object, false)) {\n detectType(state, object, true);\n }\n\n var type = _toString.call(state.dump);\n\n if (block) {\n block = (state.flowLevel < 0 || state.flowLevel > level);\n }\n\n var objectOrArray = type === '[object Object]' || type === '[object Array]',\n duplicateIndex,\n duplicate;\n\n if (objectOrArray) {\n duplicateIndex = state.duplicates.indexOf(object);\n duplicate = duplicateIndex !== -1;\n }\n\n if ((state.tag !== null && state.tag !== '?') || duplicate || (state.indent !== 2 && level > 0)) {\n compact = false;\n }\n\n if (duplicate && state.usedDuplicates[duplicateIndex]) {\n state.dump = '*ref_' + duplicateIndex;\n } else {\n if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) {\n state.usedDuplicates[duplicateIndex] = true;\n }\n if (type === '[object Object]') {\n if (block && (Object.keys(state.dump).length !== 0)) {\n writeBlockMapping(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowMapping(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object Array]') {\n if (block && (state.dump.length !== 0)) {\n writeBlockSequence(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowSequence(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object String]') {\n if (state.tag !== '?') {\n writeScalar(state, state.dump, level, iskey);\n }\n } else {\n if (state.skipInvalid) return false;\n throw new YAMLException('unacceptable kind of an object to dump ' + type);\n }\n\n if (state.tag !== null && state.tag !== '?') {\n state.dump = '!<' + state.tag + '> ' + state.dump;\n }\n }\n\n return true;\n}\n\nfunction getDuplicateReferences(object, state) {\n var objects = [],\n duplicatesIndexes = [],\n index,\n length;\n\n inspectNode(object, objects, duplicatesIndexes);\n\n for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) {\n state.duplicates.push(objects[duplicatesIndexes[index]]);\n }\n state.usedDuplicates = new Array(length);\n}\n\nfunction inspectNode(object, objects, duplicatesIndexes) {\n var objectKeyList,\n index,\n length;\n\n if (object !== null && typeof object === 'object') {\n index = objects.indexOf(object);\n if (index !== -1) {\n if (duplicatesIndexes.indexOf(index) === -1) {\n duplicatesIndexes.push(index);\n }\n } else {\n objects.push(object);\n\n if (Array.isArray(object)) {\n for (index = 0, length = object.length; index < length; index += 1) {\n inspectNode(object[index], objects, duplicatesIndexes);\n }\n } else {\n objectKeyList = Object.keys(object);\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes);\n }\n }\n }\n }\n}\n\nfunction dump(input, options) {\n options = options || {};\n\n var state = new State(options);\n\n if (!state.noRefs) getDuplicateReferences(input, state);\n\n if (writeNode(state, 0, input, true, true)) return state.dump + '\\n';\n\n return '';\n}\n\nfunction safeDump(input, options) {\n return dump(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\nmodule.exports.dump = dump;\nmodule.exports.safeDump = safeDump;\n","'use strict';\n\n\nvar loader = require('./js-yaml/loader');\nvar dumper = require('./js-yaml/dumper');\n\n\nfunction deprecated(name) {\n return function () {\n throw new Error('Function ' + name + ' is deprecated and cannot be used.');\n };\n}\n\n\nmodule.exports.Type = require('./js-yaml/type');\nmodule.exports.Schema = require('./js-yaml/schema');\nmodule.exports.FAILSAFE_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.JSON_SCHEMA = require('./js-yaml/schema/json');\nmodule.exports.CORE_SCHEMA = require('./js-yaml/schema/core');\nmodule.exports.DEFAULT_SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_FULL_SCHEMA = require('./js-yaml/schema/default_full');\nmodule.exports.load = loader.load;\nmodule.exports.loadAll = loader.loadAll;\nmodule.exports.safeLoad = loader.safeLoad;\nmodule.exports.safeLoadAll = loader.safeLoadAll;\nmodule.exports.dump = dumper.dump;\nmodule.exports.safeDump = dumper.safeDump;\nmodule.exports.YAMLException = require('./js-yaml/exception');\n\n// Deprecated schema names from JS-YAML 2.0.x\nmodule.exports.MINIMAL_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_SCHEMA = require('./js-yaml/schema/default_full');\n\n// Deprecated functions from JS-YAML 1.x.x\nmodule.exports.scan = deprecated('scan');\nmodule.exports.parse = deprecated('parse');\nmodule.exports.compose = deprecated('compose');\nmodule.exports.addConstructor = deprecated('addConstructor');\n","'use strict';\n\n\nvar yaml = require('./lib/js-yaml.js');\n\n\nmodule.exports = yaml;\n","import ymlParse from \"js-yaml\";\n\nexport default function(dom, data) {\n let el = dom.querySelector('script[type=\"text/front-matter\"]');\n\n //TODO If we don't have a local element, make a request for the document.\n if (el) {\n let text = el.textContent;\n let localData = ymlParse.safeLoad(text);\n\n data.title = localData.title;\n data.description = localData.description;\n data.authors = localData.authors.map((author, i) =>{\n let a = {};\n let name = Object.keys(author)[0];\n let names = name.split(\" \");\n a.firstName = names.slice(0, names.length - 1).join(\" \");\n a.lastName = names[names.length -1];\n a.personalURL = author[name];\n if(localData.affiliations[i]) {\n let affiliation = Object.keys(localData.affiliations[i])[0];\n a.affiliation = affiliation;\n a.affiliationURL = localData.affiliations[i][affiliation];\n }\n return a;\n });\n }\n\n}\n","/* start bibtexParse 0.0.22 */\n\n//Original work by Henrik Muehe (c) 2010\n//\n//CommonJS port by Mikola Lysenko 2013\n//\n//Port to Browser lib by ORCID / RCPETERS\n//\n//Issues:\n//no comment handling within strings\n//no string concatenation\n//no variable values yet\n//Grammar implemented here:\n//bibtex -> (string | preamble | comment | entry)*;\n//string -> '@STRING' '{' key_equals_value '}';\n//preamble -> '@PREAMBLE' '{' value '}';\n//comment -> '@COMMENT' '{' value '}';\n//entry -> '@' key '{' key ',' key_value_list '}';\n//key_value_list -> key_equals_value (',' key_equals_value)*;\n//key_equals_value -> key '=' value;\n//value -> value_quotes | value_braces | key;\n//value_quotes -> '\"' .*? '\"'; // not quite\n//value_braces -> '{' .*? '\"'; // not quite\n(function(exports) {\n\n function BibtexParser() {\n \n this.months = [\"jan\", \"feb\", \"mar\", \"apr\", \"may\", \"jun\", \"jul\", \"aug\", \"sep\", \"oct\", \"nov\", \"dec\"];\n this.notKey = [',','{','}',' ','='];\n this.pos = 0;\n this.input = \"\";\n this.entries = new Array();\n\n this.currentEntry = \"\";\n\n this.setInput = function(t) {\n this.input = t;\n };\n\n this.getEntries = function() {\n return this.entries;\n };\n\n this.isWhitespace = function(s) {\n return (s == ' ' || s == '\\r' || s == '\\t' || s == '\\n');\n };\n\n this.match = function(s, canCommentOut) {\n if (canCommentOut == undefined || canCommentOut == null)\n canCommentOut = true;\n this.skipWhitespace(canCommentOut);\n if (this.input.substring(this.pos, this.pos + s.length) == s) {\n this.pos += s.length;\n } else {\n throw \"Token mismatch, expected \" + s + \", found \"\n + this.input.substring(this.pos);\n };\n this.skipWhitespace(canCommentOut);\n };\n\n this.tryMatch = function(s, canCommentOut) {\n if (canCommentOut == undefined || canCommentOut == null)\n canCommentOut = true;\n this.skipWhitespace(canCommentOut);\n if (this.input.substring(this.pos, this.pos + s.length) == s) {\n return true;\n } else {\n return false;\n };\n this.skipWhitespace(canCommentOut);\n };\n\n /* when search for a match all text can be ignored, not just white space */\n this.matchAt = function() {\n while (this.input.length > this.pos && this.input[this.pos] != '@') {\n this.pos++;\n };\n\n if (this.input[this.pos] == '@') {\n return true;\n };\n return false;\n };\n\n this.skipWhitespace = function(canCommentOut) {\n while (this.isWhitespace(this.input[this.pos])) {\n this.pos++;\n };\n if (this.input[this.pos] == \"%\" && canCommentOut == true) {\n while (this.input[this.pos] != \"\\n\") {\n this.pos++;\n };\n this.skipWhitespace(canCommentOut);\n };\n };\n\n this.value_braces = function() {\n var bracecount = 0;\n this.match(\"{\", false);\n var start = this.pos;\n var escaped = false;\n while (true) {\n if (!escaped) {\n if (this.input[this.pos] == '}') {\n if (bracecount > 0) {\n bracecount--;\n } else {\n var end = this.pos;\n this.match(\"}\", false);\n return this.input.substring(start, end);\n };\n } else if (this.input[this.pos] == '{') {\n bracecount++;\n } else if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value\";\n };\n };\n if (this.input[this.pos] == '\\\\' && escaped == false)\n escaped = true;\n else\n escaped = false;\n this.pos++;\n };\n };\n\n this.value_comment = function() {\n var str = '';\n var brcktCnt = 0;\n while (!(this.tryMatch(\"}\", false) && brcktCnt == 0)) {\n str = str + this.input[this.pos];\n if (this.input[this.pos] == '{')\n brcktCnt++;\n if (this.input[this.pos] == '}')\n brcktCnt--;\n if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value:\" + this.input.substring(start);\n };\n this.pos++;\n };\n return str;\n };\n\n this.value_quotes = function() {\n this.match('\"', false);\n var start = this.pos;\n var escaped = false;\n while (true) {\n if (!escaped) {\n if (this.input[this.pos] == '\"') {\n var end = this.pos;\n this.match('\"', false);\n return this.input.substring(start, end);\n } else if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value:\" + this.input.substring(start);\n };\n }\n if (this.input[this.pos] == '\\\\' && escaped == false)\n escaped = true;\n else\n escaped = false;\n this.pos++;\n };\n };\n\n this.single_value = function() {\n var start = this.pos;\n if (this.tryMatch(\"{\")) {\n return this.value_braces();\n } else if (this.tryMatch('\"')) {\n return this.value_quotes();\n } else {\n var k = this.key();\n if (k.match(\"^[0-9]+$\"))\n return k;\n else if (this.months.indexOf(k.toLowerCase()) >= 0)\n return k.toLowerCase();\n else\n throw \"Value expected:\" + this.input.substring(start) + ' for key: ' + k;\n \n };\n };\n\n this.value = function() {\n var values = [];\n values.push(this.single_value());\n while (this.tryMatch(\"#\")) {\n this.match(\"#\");\n values.push(this.single_value());\n };\n return values.join(\"\");\n };\n\n this.key = function() {\n var start = this.pos;\n while (true) {\n if (this.pos >= this.input.length) {\n throw \"Runaway key\";\n };\n // а-яА-Я is Cyrillic\n //console.log(this.input[this.pos]);\n if (this.notKey.indexOf(this.input[this.pos]) >= 0) {\n return this.input.substring(start, this.pos);\n } else {\n this.pos++;\n \n };\n };\n };\n\n this.key_equals_value = function() {\n var key = this.key();\n if (this.tryMatch(\"=\")) {\n this.match(\"=\");\n var val = this.value();\n return [ key, val ];\n } else {\n throw \"... = value expected, equals sign missing:\"\n + this.input.substring(this.pos);\n };\n };\n\n this.key_value_list = function() {\n var kv = this.key_equals_value();\n this.currentEntry['entryTags'] = {};\n this.currentEntry['entryTags'][kv[0]] = kv[1];\n while (this.tryMatch(\",\")) {\n this.match(\",\");\n // fixes problems with commas at the end of a list\n if (this.tryMatch(\"}\")) {\n break;\n }\n ;\n kv = this.key_equals_value();\n this.currentEntry['entryTags'][kv[0]] = kv[1];\n };\n };\n\n this.entry_body = function(d) {\n this.currentEntry = {};\n this.currentEntry['citationKey'] = this.key();\n this.currentEntry['entryType'] = d.substring(1);\n this.match(\",\");\n this.key_value_list();\n this.entries.push(this.currentEntry);\n };\n\n this.directive = function() {\n this.match(\"@\");\n return \"@\" + this.key();\n };\n\n this.preamble = function() {\n this.currentEntry = {};\n this.currentEntry['entryType'] = 'PREAMBLE';\n this.currentEntry['entry'] = this.value_comment();\n this.entries.push(this.currentEntry);\n };\n\n this.comment = function() {\n this.currentEntry = {};\n this.currentEntry['entryType'] = 'COMMENT';\n this.currentEntry['entry'] = this.value_comment();\n this.entries.push(this.currentEntry);\n };\n\n this.entry = function(d) {\n this.entry_body(d);\n };\n\n this.bibtex = function() {\n while (this.matchAt()) {\n var d = this.directive();\n this.match(\"{\");\n if (d == \"@STRING\") {\n this.string();\n } else if (d == \"@PREAMBLE\") {\n this.preamble();\n } else if (d == \"@COMMENT\") {\n this.comment();\n } else {\n this.entry(d);\n }\n this.match(\"}\");\n };\n };\n };\n \n exports.toJSON = function(bibtex) {\n var b = new BibtexParser();\n b.setInput(bibtex);\n b.bibtex();\n return b.entries;\n };\n\n /* added during hackathon don't hate on me */\n exports.toBibtex = function(json) {\n var out = '';\n for ( var i in json) {\n out += \"@\" + json[i].entryType;\n out += '{';\n if (json[i].citationKey)\n out += json[i].citationKey + ', ';\n if (json[i].entry)\n out += json[i].entry ;\n if (json[i].entryTags) {\n var tags = '';\n for (var jdx in json[i].entryTags) {\n if (tags.length != 0)\n tags += ', ';\n tags += jdx + '= {' + json[i].entryTags[jdx] + '}';\n }\n out += tags;\n }\n out += '}\\n\\n';\n }\n return out;\n \n };\n\n})(typeof exports === 'undefined' ? this['bibtexParse'] = {} : exports);\n\n/* end bibtexParse */\n","import bibtexParse from \"bibtex-parse-js\";\n\nexport default function(dom, data) {\n let el = dom.querySelector('script[type=\"text/bibliography\"]');\n\n //TODO If we don't have a local element, make a request for the document.\n if (el) {\n let rawBib = el.textContent;\n let bibliography = {};\n bibtexParse.toJSON(rawBib).forEach(e => {\n bibliography[e.citationKey] = e.entryTags;\n bibliography[e.citationKey].type = e.entryType;\n });\n\n let citations = {};\n var citeTags = [].slice.apply(dom.querySelectorAll(\"dt-cite\"));\n citeTags.forEach(el => {\n let citationKeys = el.getAttribute(\"key\").split(\",\");\n citationKeys.forEach(key => {\n if (bibliography[key]) {\n citations[key] = bibliography[key];\n } else {\n console.warn(\"No bibliography entry found for: \" + key);\n }\n });\n });\n data.citations = citations;\n }\n}\n","export default function(dom, data) {\n let head = dom.querySelector(\"head\");\n\n appendHtml(head, `\n \n \n \n \n ${data.title}\n `);\n\n appendHtml(head, `\n \n \n \n `);\n data.authors.forEach((a) => {\n appendHtml(head, `\n `)\n });\n\n appendHtml(head, `\n \n \n \n \n \n \n \n \n `);\n\n appendHtml(head, `\n \n \n \n \n \n \n \n \n `);\n\n appendHtml(head, `\n \n \n \n \n \n \n \n \n \n \n \n \n `);\n data.authors.forEach((a) => {\n appendHtml(head, `\n \n \n `)\n });\n\n if (data.citations) {\n let citationKeys = Object.keys(data.citations);\n citationKeys.forEach(key => {\n console.log(key);\n appendHtml(head, `\n \n `);\n });\n }\n}\n\n\nfunction appendHtml(el, html) {\n el.innerHTML += html;\n}\n\nfunction citation_meta_content(ref){\n var content = `citation_title=${ref.title};`;\n ref.author.split(\" and \").forEach(author => {\n content += `citation_author=${author.trim()};`;\n });\n if (\"journal\" in ref){\n content += `citation_journal_title=${ref.journal};`;\n }\n if (\"volume\" in ref) {\n content += `citation_volume=${ref.volume};`;\n }\n if (\"issue\" in ref || \"number\" in ref){\n content += `citation_number=${ref.issue || ref.number};`;\n }\n /*content += `citation_first_page=${};`;\n content += `citation_publication_date=${};`;*/\n return content;\n}\n","import logo from \"./distill-logo.svg\";\n\nconst html = `\n\n\n
    \n`\n\nexport default function(dom, data) {\n dom.querySelector('dt-header').innerHTML = html;\n}\n","const html = `\n\n\n
    \n

    References

    \n \n

    Errors, Reuse, and Citation

    \n

    If you see mistakes or want to suggest changes, please submit a pull request on github.

    \n

    Diagrams and text are licensed under Creative Commons Attribution CC-BY 2.0, unless noted otherwise, with the source available on available on github. The figures that have been reused from other sources don't fall under this license and can be recognized by a note in their caption: “Figure from …”.

    \n

    For attribution in academic contexts, please cite this work as

    \n
    \n  

    BibTeX citation

    \n
    \n
    \n`;\n\n// distill.data().then(function(data) {\n// var as = el.querySelectorAll(\"a.github\");\n// [].forEach.call(as, function(a) {\n// a.setAttribute(\"href\", data.github);\n// });\n// el.querySelector(\".citation.short\").textContent = data.concatenatedAuthors + \", \" + '\"' + data.title + '\", Distill, ' + data.firstPublishedYear + \".\";\n// var bibtex = \"@article{\" + data.slug + \",\\n\";\n// bibtex += \" author = {\" + data.bibtexAuthors + \"},\\n\";\n// bibtex += \" title = {\" + data.title + \"},\\n\";\n// bibtex += \" journal = {Distill},\\n\";\n// bibtex += \" year = {\" + data.firstPublishedYear + \"},\\n\";\n// bibtex += \" note = {\" + data.url + \"}\\n\";\n// bibtex += \"}\";\n// el.querySelector(\".citation.long\").textContent = bibtex;\n// })\n\nexport default function(dom, data) {\n let el = dom.querySelector('dt-appendix')\n if (el) el.innerHTML = html;\n}\n","import logo from \"./distill-logo.svg\";\n\nlet html = `\n\n\n
    \n \n ${logo}\n Distill\n is dedicated to clear explanations of machine learning\n
    \n`;\n\nexport default function(dom, data) {\n let el = dom.querySelector(\"dt-footer\");\n if(el) el.innerHTML = html;\n}\n","export default function(dom, data) {\n let citations = [];\n if (data.citations) {\n citations = Object.keys(data.citations).map(c => data.citations[c]);\n citations.sort((a, b) => {\n return a.author.localeCompare(b.author);\n });\n }\n\n var citeTags = [].slice.apply(dom.querySelectorAll(\"dt-cite\"));\n citeTags.forEach(el => {\n var keys = el.textContent.split(\",\");\n var cite_string = keys.map(inline_cite).join(\", \");\n el.innerHTML = cite_string;\n });\n\n let bibEl = dom.querySelector(\"dt-bibliography\");\n if (bibEl) {\n let ol = dom.createElement(\"ol\");\n citations.forEach(citation => {\n let el = dom.createElement(\"li\");\n el.textContent = bibliography_cite(citation);\n ol.appendChild(el);\n })\n bibEl.appendChild(ol);\n }\n\n function inline_cite(key){\n if (key in data.citations){\n var ent = data.citations[key];\n var names = ent.author.split(\" and \");\n names = names.map(name => name.split(\",\")[0].trim())\n var year = ent.year;\n if (names.length == 1) return names[0] + \", \" + year;\n if (names.length == 2) return names[0] + \" & \" + names[1] + \", \" + year;\n if (names.length > 2) return names[0] + \", et al., \" + year;\n } else {\n return \"?\";\n }\n }\n\n function bibliography_cite(ent){\n if (ent){\n var names = ent.author.split(\" and \");\n var cite = \"\";\n let name_strings = names.map(name => {\n var last = name.split(\",\")[0].trim();\n var firsts = name.split(\",\")[1];\n if (firsts != undefined) {\n var initials = firsts.trim().split(\" \").map(s => s.trim()[0]);\n return last + \", \" + initials.join(\".\")+\".\";\n }\n return last;\n });\n if (names.length > 1) {\n cite += name_strings.slice(0, names.length-1).join(\", \");\n cite += \" and \" + name_strings[names.length-1];\n } else {\n cite += name_strings[0]\n }\n cite += \", \" + ent.year + \". \"\n cite += ent.title + \". \"\n cite += (ent.journal || ent.booktitle || \"\")\n if (\"volume\" in ent){\n var issue = ent.issue || ent.number;\n issue = (issue != undefined)? \"(\"+issue+\")\" : \"\";\n cite += \", Vol \" + ent.volume + issue;\n }\n if (\"pages\" in ent){\n cite += \", pp. \" + ent.pages\n }\n cite += \". \"\n return cite\n } else {\n return \"?\";\n }\n }\n\n\n //https://scholar.google.com/scholar?q=allintitle%3ADocument+author%3Aolah\n function get_URL(ent){\n if (ent){\n var names = ent.author.split(\" and \");\n names = names.map(name => name.split(\",\")[0].trim())\n var title = ent.title.split(\" \")//.replace(/[,:]/, \"\")\n var url = \"http://search.labs.crossref.org/dois?\"//\"\"https://scholar.google.com/scholar?\"\n url += uris({q: names.join(\" \") + \" \" + title.join(\" \")})\n }\n\n }\n}\n","/**\n * marked - a markdown parser\n * Copyright (c) 2011-2014, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/chjj/marked\n */\n\n;(function() {\n\n/**\n * Block-Level Grammar\n */\n\nvar block = {\n newline: /^\\n+/,\n code: /^( {4}[^\\n]+\\n*)+/,\n fences: noop,\n hr: /^( *[-*_]){3,} *(?:\\n+|$)/,\n heading: /^ *(#{1,6}) *([^\\n]+?) *#* *(?:\\n+|$)/,\n nptable: noop,\n lheading: /^([^\\n]+)\\n *(=|-){2,} *(?:\\n+|$)/,\n blockquote: /^( *>[^\\n]+(\\n(?!def)[^\\n]+)*\\n*)+/,\n list: /^( *)(bull) [\\s\\S]+?(?:hr|def|\\n{2,}(?! )(?!\\1bull )\\n*|\\s*$)/,\n html: /^ *(?:comment *(?:\\n|\\s*$)|closed *(?:\\n{2,}|\\s*$)|closing *(?:\\n{2,}|\\s*$))/,\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +[\"(]([^\\n]+)[\")])? *(?:\\n+|$)/,\n table: noop,\n paragraph: /^((?:[^\\n]+\\n?(?!hr|heading|lheading|blockquote|tag|def))+)\\n*/,\n text: /^[^\\n]+/\n};\n\nblock.bullet = /(?:[*+-]|\\d+\\.)/;\nblock.item = /^( *)(bull) [^\\n]*(?:\\n(?!\\1bull )[^\\n]*)*/;\nblock.item = replace(block.item, 'gm')\n (/bull/g, block.bullet)\n ();\n\nblock.list = replace(block.list)\n (/bull/g, block.bullet)\n ('hr', '\\\\n+(?=\\\\1?(?:[-*_] *){3,}(?:\\\\n+|$))')\n ('def', '\\\\n+(?=' + block.def.source + ')')\n ();\n\nblock.blockquote = replace(block.blockquote)\n ('def', block.def)\n ();\n\nblock._tag = '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code'\n + '|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo'\n + '|span|br|wbr|ins|del|img)\\\\b)\\\\w+(?!:/|[^\\\\w\\\\s@]*@)\\\\b';\n\nblock.html = replace(block.html)\n ('comment', //)\n ('closed', /<(tag)[\\s\\S]+?<\\/\\1>/)\n ('closing', /])*?>/)\n (/tag/g, block._tag)\n ();\n\nblock.paragraph = replace(block.paragraph)\n ('hr', block.hr)\n ('heading', block.heading)\n ('lheading', block.lheading)\n ('blockquote', block.blockquote)\n ('tag', '<' + block._tag)\n ('def', block.def)\n ();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = merge({}, block);\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = merge({}, block.normal, {\n fences: /^ *(`{3,}|~{3,})[ \\.]*(\\S+)? *\\n([\\s\\S]*?)\\s*\\1 *(?:\\n+|$)/,\n paragraph: /^/,\n heading: /^ *(#{1,6}) +([^\\n]+?) *#* *(?:\\n+|$)/\n});\n\nblock.gfm.paragraph = replace(block.paragraph)\n ('(?!', '(?!'\n + block.gfm.fences.source.replace('\\\\1', '\\\\2') + '|'\n + block.list.source.replace('\\\\1', '\\\\3') + '|')\n ();\n\n/**\n * GFM + Tables Block Grammar\n */\n\nblock.tables = merge({}, block.gfm, {\n nptable: /^ *(\\S.*\\|.*)\\n *([-:]+ *\\|[-| :]*)\\n((?:.*\\|.*(?:\\n|$))*)\\n*/,\n table: /^ *\\|(.+)\\n *\\|( *[-:]+[-| :]*)\\n((?: *\\|.*(?:\\n|$))*)\\n*/\n});\n\n/**\n * Block Lexer\n */\n\nfunction Lexer(options) {\n this.tokens = [];\n this.tokens.links = {};\n this.options = options || marked.defaults;\n this.rules = block.normal;\n\n if (this.options.gfm) {\n if (this.options.tables) {\n this.rules = block.tables;\n } else {\n this.rules = block.gfm;\n }\n }\n}\n\n/**\n * Expose Block Rules\n */\n\nLexer.rules = block;\n\n/**\n * Static Lex Method\n */\n\nLexer.lex = function(src, options) {\n var lexer = new Lexer(options);\n return lexer.lex(src);\n};\n\n/**\n * Preprocessing\n */\n\nLexer.prototype.lex = function(src) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n')\n .replace(/\\t/g, ' ')\n .replace(/\\u00a0/g, ' ')\n .replace(/\\u2424/g, '\\n');\n\n return this.token(src, true);\n};\n\n/**\n * Lexing\n */\n\nLexer.prototype.token = function(src, top, bq) {\n var src = src.replace(/^ +$/gm, '')\n , next\n , loose\n , cap\n , bull\n , b\n , item\n , space\n , i\n , l;\n\n while (src) {\n // newline\n if (cap = this.rules.newline.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[0].length > 1) {\n this.tokens.push({\n type: 'space'\n });\n }\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n cap = cap[0].replace(/^ {4}/gm, '');\n this.tokens.push({\n type: 'code',\n text: !this.options.pedantic\n ? cap.replace(/\\n+$/, '')\n : cap\n });\n continue;\n }\n\n // fences (gfm)\n if (cap = this.rules.fences.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'code',\n lang: cap[2],\n text: cap[3] || ''\n });\n continue;\n }\n\n // heading\n if (cap = this.rules.heading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[1].length,\n text: cap[2]\n });\n continue;\n }\n\n // table no leading pipe (gfm)\n if (top && (cap = this.rules.nptable.exec(src))) {\n src = src.substring(cap[0].length);\n\n item = {\n type: 'table',\n header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3].replace(/\\n$/, '').split('\\n')\n };\n\n for (i = 0; i < item.align.length; 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 for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i].split(/ *\\| */);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n\n // lheading\n if (cap = this.rules.lheading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[2] === '=' ? 1 : 2,\n text: cap[1]\n });\n continue;\n }\n\n // hr\n if (cap = this.rules.hr.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'hr'\n });\n continue;\n }\n\n // blockquote\n if (cap = this.rules.blockquote.exec(src)) {\n src = src.substring(cap[0].length);\n\n this.tokens.push({\n type: 'blockquote_start'\n });\n\n cap = cap[0].replace(/^ *> ?/gm, '');\n\n // Pass `top` to keep the current\n // \"toplevel\" state. This is exactly\n // how markdown.pl works.\n this.token(cap, top, true);\n\n this.tokens.push({\n type: 'blockquote_end'\n });\n\n continue;\n }\n\n // list\n if (cap = this.rules.list.exec(src)) {\n src = src.substring(cap[0].length);\n bull = cap[2];\n\n this.tokens.push({\n type: 'list_start',\n ordered: bull.length > 1\n });\n\n // Get each top-level item.\n cap = cap[0].match(this.rules.item);\n\n next = false;\n l = cap.length;\n i = 0;\n\n for (; i < l; i++) {\n item = cap[i];\n\n // Remove the list item's bullet\n // so it is seen as the next token.\n space = item.length;\n item = item.replace(/^ *([*+-]|\\d+\\.) +/, '');\n\n // Outdent whatever the\n // list item contains. Hacky.\n if (~item.indexOf('\\n ')) {\n space -= item.length;\n item = !this.options.pedantic\n ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '')\n : item.replace(/^ {1,4}/gm, '');\n }\n\n // Determine whether the next list item belongs here.\n // Backpedal if it does not belong in this list.\n if (this.options.smartLists && i !== l - 1) {\n b = block.bullet.exec(cap[i + 1])[0];\n if (bull !== b && !(bull.length > 1 && b.length > 1)) {\n src = cap.slice(i + 1).join('\\n') + src;\n i = l - 1;\n }\n }\n\n // Determine whether item is loose or not.\n // Use: /(^|\\n)(?! )[^\\n]+\\n\\n(?!\\s*$)/\n // for discount behavior.\n loose = next || /\\n\\n(?!\\s*$)/.test(item);\n if (i !== l - 1) {\n next = item.charAt(item.length - 1) === '\\n';\n if (!loose) loose = next;\n }\n\n this.tokens.push({\n type: loose\n ? 'loose_item_start'\n : 'list_item_start'\n });\n\n // Recurse.\n this.token(item, false, bq);\n\n this.tokens.push({\n type: 'list_item_end'\n });\n }\n\n this.tokens.push({\n type: 'list_end'\n });\n\n continue;\n }\n\n // html\n if (cap = this.rules.html.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: this.options.sanitize\n ? 'paragraph'\n : 'html',\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n });\n continue;\n }\n\n // def\n if ((!bq && top) && (cap = this.rules.def.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.links[cap[1].toLowerCase()] = {\n href: cap[2],\n title: cap[3]\n };\n continue;\n }\n\n // table (gfm)\n if (top && (cap = this.rules.table.exec(src))) {\n src = src.substring(cap[0].length);\n\n item = {\n type: 'table',\n header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3].replace(/(?: *\\| *)?\\n$/, '').split('\\n')\n };\n\n for (i = 0; i < item.align.length; 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 for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i]\n .replace(/^ *\\| *| *\\| *$/g, '')\n .split(/ *\\| */);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n\n // top-level paragraph\n if (top && (cap = this.rules.paragraph.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'paragraph',\n text: cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1]\n });\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n // Top-level should never reach here.\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'text',\n text: cap[0]\n });\n continue;\n }\n\n if (src) {\n throw new\n Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return this.tokens;\n};\n\n/**\n * Inline-Level Grammar\n */\n\nvar inline = {\n escape: /^\\\\([\\\\`*{}\\[\\]()#+\\-.!_>])/,\n autolink: /^<([^ >]+(@|:\\/)[^ >]+)>/,\n url: noop,\n tag: /^|^<\\/?\\w+(?:\"[^\"]*\"|'[^']*'|[^'\">])*?>/,\n link: /^!?\\[(inside)\\]\\(href\\)/,\n reflink: /^!?\\[(inside)\\]\\s*\\[([^\\]]*)\\]/,\n nolink: /^!?\\[((?:\\[[^\\]]*\\]|[^\\[\\]])*)\\]/,\n strong: /^__([\\s\\S]+?)__(?!_)|^\\*\\*([\\s\\S]+?)\\*\\*(?!\\*)/,\n em: /^\\b_((?:[^_]|__)+?)_\\b|^\\*((?:\\*\\*|[\\s\\S])+?)\\*(?!\\*)/,\n code: /^(`+)\\s*([\\s\\S]*?[^`])\\s*\\1(?!`)/,\n br: /^ {2,}\\n(?!\\s*$)/,\n del: noop,\n text: /^[\\s\\S]+?(?=[\\\\?(?:\\s+['\"]([\\s\\S]*?)['\"])?\\s*/;\n\ninline.link = replace(inline.link)\n ('inside', inline._inside)\n ('href', inline._href)\n ();\n\ninline.reflink = replace(inline.reflink)\n ('inside', inline._inside)\n ();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = merge({}, inline);\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = merge({}, inline.normal, {\n strong: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n em: /^_(?=\\S)([\\s\\S]*?\\S)_(?!_)|^\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)/\n});\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = merge({}, inline.normal, {\n escape: replace(inline.escape)('])', '~|])')(),\n url: /^(https?:\\/\\/[^\\s<]+[^<.,:;\"')\\]\\s])/,\n del: /^~~(?=\\S)([\\s\\S]*?\\S)~~/,\n text: replace(inline.text)\n (']|', '~]|')\n ('|', '|https?://|')\n ()\n});\n\n/**\n * GFM + Line Breaks Inline Grammar\n */\n\ninline.breaks = merge({}, inline.gfm, {\n br: replace(inline.br)('{2,}', '*')(),\n text: replace(inline.gfm.text)('{2,}', '*')()\n});\n\n/**\n * Inline Lexer & Compiler\n */\n\nfunction InlineLexer(links, options) {\n this.options = options || marked.defaults;\n this.links = links;\n this.rules = inline.normal;\n this.renderer = this.options.renderer || new Renderer;\n this.renderer.options = this.options;\n\n if (!this.links) {\n throw new\n Error('Tokens array requires a `links` property.');\n }\n\n if (this.options.gfm) {\n if (this.options.breaks) {\n this.rules = inline.breaks;\n } else {\n this.rules = inline.gfm;\n }\n } else if (this.options.pedantic) {\n this.rules = inline.pedantic;\n }\n}\n\n/**\n * Expose Inline Rules\n */\n\nInlineLexer.rules = inline;\n\n/**\n * Static Lexing/Compiling Method\n */\n\nInlineLexer.output = function(src, links, options) {\n var inline = new InlineLexer(links, options);\n return inline.output(src);\n};\n\n/**\n * Lexing/Compiling\n */\n\nInlineLexer.prototype.output = function(src) {\n var out = ''\n , link\n , text\n , href\n , cap;\n\n while (src) {\n // escape\n if (cap = this.rules.escape.exec(src)) {\n src = src.substring(cap[0].length);\n out += cap[1];\n continue;\n }\n\n // autolink\n if (cap = this.rules.autolink.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[2] === '@') {\n text = cap[1].charAt(6) === ':'\n ? this.mangle(cap[1].substring(7))\n : this.mangle(cap[1]);\n href = this.mangle('mailto:') + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // url (gfm)\n if (!this.inLink && (cap = this.rules.url.exec(src))) {\n src = src.substring(cap[0].length);\n text = escape(cap[1]);\n href = text;\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // tag\n if (cap = this.rules.tag.exec(src)) {\n if (!this.inLink && /^/i.test(cap[0])) {\n this.inLink = false;\n }\n src = src.substring(cap[0].length);\n out += this.options.sanitize\n ? this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0])\n : cap[0]\n continue;\n }\n\n // link\n if (cap = this.rules.link.exec(src)) {\n src = src.substring(cap[0].length);\n this.inLink = true;\n out += this.outputLink(cap, {\n href: cap[2],\n title: cap[3]\n });\n this.inLink = false;\n continue;\n }\n\n // reflink, nolink\n if ((cap = this.rules.reflink.exec(src))\n || (cap = this.rules.nolink.exec(src))) {\n src = src.substring(cap[0].length);\n link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = this.links[link.toLowerCase()];\n if (!link || !link.href) {\n out += cap[0].charAt(0);\n src = cap[0].substring(1) + src;\n continue;\n }\n this.inLink = true;\n out += this.outputLink(cap, link);\n this.inLink = false;\n continue;\n }\n\n // strong\n if (cap = this.rules.strong.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.strong(this.output(cap[2] || cap[1]));\n continue;\n }\n\n // em\n if (cap = this.rules.em.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.em(this.output(cap[2] || cap[1]));\n continue;\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.codespan(escape(cap[2], true));\n continue;\n }\n\n // br\n if (cap = this.rules.br.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.br();\n continue;\n }\n\n // del (gfm)\n if (cap = this.rules.del.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.del(this.output(cap[1]));\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.text(escape(this.smartypants(cap[0])));\n continue;\n }\n\n if (src) {\n throw new\n Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return out;\n};\n\n/**\n * Compile Link\n */\n\nInlineLexer.prototype.outputLink = function(cap, link) {\n var href = escape(link.href)\n , title = link.title ? escape(link.title) : null;\n\n return cap[0].charAt(0) !== '!'\n ? this.renderer.link(href, title, this.output(cap[1]))\n : this.renderer.image(href, title, escape(cap[1]));\n};\n\n/**\n * Smartypants Transformations\n */\n\nInlineLexer.prototype.smartypants = function(text) {\n if (!this.options.smartypants) return text;\n return text\n // em-dashes\n .replace(/---/g, '\\u2014')\n // en-dashes\n .replace(/--/g, '\\u2013')\n // opening singles\n .replace(/(^|[-\\u2014/(\\[{\"\\s])'/g, '$1\\u2018')\n // closing singles & apostrophes\n .replace(/'/g, '\\u2019')\n // opening doubles\n .replace(/(^|[-\\u2014/(\\[{\\u2018\\s])\"/g, '$1\\u201c')\n // closing doubles\n .replace(/\"/g, '\\u201d')\n // ellipses\n .replace(/\\.{3}/g, '\\u2026');\n};\n\n/**\n * Mangle Links\n */\n\nInlineLexer.prototype.mangle = function(text) {\n if (!this.options.mangle) return text;\n var out = ''\n , l = text.length\n , i = 0\n , ch;\n\n for (; i < l; i++) {\n ch = text.charCodeAt(i);\n if (Math.random() > 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n\n return out;\n};\n\n/**\n * Renderer\n */\n\nfunction Renderer(options) {\n this.options = options || {};\n}\n\nRenderer.prototype.code = function(code, lang, escaped) {\n if (this.options.highlight) {\n var out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n if (!lang) {\n return '
    '\n      + (escaped ? code : escape(code, true))\n      + '\\n
    ';\n }\n\n return '
    '\n    + (escaped ? code : escape(code, true))\n    + '\\n
    \\n';\n};\n\nRenderer.prototype.blockquote = function(quote) {\n return '
    \\n' + quote + '
    \\n';\n};\n\nRenderer.prototype.html = function(html) {\n return html;\n};\n\nRenderer.prototype.heading = function(text, level, raw) {\n return ''\n + text\n + '\\n';\n};\n\nRenderer.prototype.hr = function() {\n return this.options.xhtml ? '
    \\n' : '
    \\n';\n};\n\nRenderer.prototype.list = function(body, ordered) {\n var type = ordered ? 'ol' : 'ul';\n return '<' + type + '>\\n' + body + '\\n';\n};\n\nRenderer.prototype.listitem = function(text) {\n return '
  • ' + text + '
  • \\n';\n};\n\nRenderer.prototype.paragraph = function(text) {\n return '

    ' + text + '

    \\n';\n};\n\nRenderer.prototype.table = function(header, body) {\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + '\\n'\n + body\n + '\\n'\n + '
    \\n';\n};\n\nRenderer.prototype.tablerow = function(content) {\n return '\\n' + content + '\\n';\n};\n\nRenderer.prototype.tablecell = function(content, flags) {\n var type = flags.header ? 'th' : 'td';\n var tag = flags.align\n ? '<' + type + ' style=\"text-align:' + flags.align + '\">'\n : '<' + type + '>';\n return tag + content + '\\n';\n};\n\n// span level renderer\nRenderer.prototype.strong = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.em = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.codespan = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.br = function() {\n return this.options.xhtml ? '
    ' : '
    ';\n};\n\nRenderer.prototype.del = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.link = function(href, title, text) {\n if (this.options.sanitize) {\n try {\n var prot = decodeURIComponent(unescape(href))\n .replace(/[^\\w:]/g, '')\n .toLowerCase();\n } catch (e) {\n return '';\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0) {\n return '';\n }\n }\n var out = '
    ';\n return out;\n};\n\nRenderer.prototype.image = function(href, title, text) {\n var out = '\"'' : '>';\n return out;\n};\n\nRenderer.prototype.text = function(text) {\n return text;\n};\n\n/**\n * Parsing & Compiling\n */\n\nfunction Parser(options) {\n this.tokens = [];\n this.token = null;\n this.options = options || marked.defaults;\n this.options.renderer = this.options.renderer || new Renderer;\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n}\n\n/**\n * Static Parse Method\n */\n\nParser.parse = function(src, options, renderer) {\n var parser = new Parser(options, renderer);\n return parser.parse(src);\n};\n\n/**\n * Parse Loop\n */\n\nParser.prototype.parse = function(src) {\n this.inline = new InlineLexer(src.links, this.options, this.renderer);\n this.tokens = src.reverse();\n\n var out = '';\n while (this.next()) {\n out += this.tok();\n }\n\n return out;\n};\n\n/**\n * Next Token\n */\n\nParser.prototype.next = function() {\n return this.token = this.tokens.pop();\n};\n\n/**\n * Preview Next Token\n */\n\nParser.prototype.peek = function() {\n return this.tokens[this.tokens.length - 1] || 0;\n};\n\n/**\n * Parse Text Tokens\n */\n\nParser.prototype.parseText = function() {\n var body = this.token.text;\n\n while (this.peek().type === 'text') {\n body += '\\n' + this.next().text;\n }\n\n return this.inline.output(body);\n};\n\n/**\n * Parse Current Token\n */\n\nParser.prototype.tok = function() {\n switch (this.token.type) {\n case 'space': {\n return '';\n }\n case 'hr': {\n return this.renderer.hr();\n }\n case 'heading': {\n return this.renderer.heading(\n this.inline.output(this.token.text),\n this.token.depth,\n this.token.text);\n }\n case 'code': {\n return this.renderer.code(this.token.text,\n this.token.lang,\n this.token.escaped);\n }\n case 'table': {\n var header = ''\n , body = ''\n , i\n , row\n , cell\n , flags\n , j;\n\n // header\n cell = '';\n for (i = 0; i < this.token.header.length; i++) {\n flags = { header: true, align: this.token.align[i] };\n cell += this.renderer.tablecell(\n this.inline.output(this.token.header[i]),\n { header: true, align: this.token.align[i] }\n );\n }\n header += this.renderer.tablerow(cell);\n\n for (i = 0; i < this.token.cells.length; i++) {\n row = this.token.cells[i];\n\n cell = '';\n for (j = 0; j < row.length; j++) {\n cell += this.renderer.tablecell(\n this.inline.output(row[j]),\n { header: false, align: this.token.align[j] }\n );\n }\n\n body += this.renderer.tablerow(cell);\n }\n return this.renderer.table(header, body);\n }\n case 'blockquote_start': {\n var body = '';\n\n while (this.next().type !== 'blockquote_end') {\n body += this.tok();\n }\n\n return this.renderer.blockquote(body);\n }\n case 'list_start': {\n var body = ''\n , ordered = this.token.ordered;\n\n while (this.next().type !== 'list_end') {\n body += this.tok();\n }\n\n return this.renderer.list(body, ordered);\n }\n case 'list_item_start': {\n var body = '';\n\n while (this.next().type !== 'list_item_end') {\n body += this.token.type === 'text'\n ? this.parseText()\n : this.tok();\n }\n\n return this.renderer.listitem(body);\n }\n case 'loose_item_start': {\n var body = '';\n\n while (this.next().type !== 'list_item_end') {\n body += this.tok();\n }\n\n return this.renderer.listitem(body);\n }\n case 'html': {\n var html = !this.token.pre && !this.options.pedantic\n ? this.inline.output(this.token.text)\n : this.token.text;\n return this.renderer.html(html);\n }\n case 'paragraph': {\n return this.renderer.paragraph(this.inline.output(this.token.text));\n }\n case 'text': {\n return this.renderer.paragraph(this.parseText());\n }\n }\n};\n\n/**\n * Helpers\n */\n\nfunction escape(html, encode) {\n return html\n .replace(!encode ? /&(?!#?\\w+;)/g : /&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n}\n\nfunction unescape(html) {\n\t// explicitly match decimal, hex, and named HTML entities \n return html.replace(/&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/g, function(_, n) {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\n\nfunction replace(regex, opt) {\n regex = regex.source;\n opt = opt || '';\n return function self(name, val) {\n if (!name) return new RegExp(regex, opt);\n val = val.source || val;\n val = val.replace(/(^|[^\\[])\\^/g, '$1');\n regex = regex.replace(name, val);\n return self;\n };\n}\n\nfunction noop() {}\nnoop.exec = noop;\n\nfunction merge(obj) {\n var i = 1\n , target\n , key;\n\n for (; i < arguments.length; i++) {\n target = arguments[i];\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\n/**\n * Marked\n */\n\nfunction marked(src, opt, callback) {\n if (callback || typeof opt === 'function') {\n if (!callback) {\n callback = opt;\n opt = null;\n }\n\n opt = merge({}, marked.defaults, opt || {});\n\n var highlight = opt.highlight\n , tokens\n , pending\n , i = 0;\n\n try {\n tokens = Lexer.lex(src, opt)\n } catch (e) {\n return callback(e);\n }\n\n pending = tokens.length;\n\n var done = function(err) {\n if (err) {\n opt.highlight = highlight;\n return callback(err);\n }\n\n var out;\n\n try {\n out = Parser.parse(tokens, opt);\n } catch (e) {\n err = e;\n }\n\n opt.highlight = highlight;\n\n return err\n ? callback(err)\n : callback(null, out);\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n\n if (!pending) return done();\n\n for (; i < tokens.length; i++) {\n (function(token) {\n if (token.type !== 'code') {\n return --pending || done();\n }\n return highlight(token.text, token.lang, function(err, code) {\n if (err) return done(err);\n if (code == null || code === token.text) {\n return --pending || done();\n }\n token.text = code;\n token.escaped = true;\n --pending || done();\n });\n })(tokens[i]);\n }\n\n return;\n }\n try {\n if (opt) opt = merge({}, marked.defaults, opt);\n return Parser.parse(Lexer.lex(src, opt), opt);\n } catch (e) {\n e.message += '\\nPlease report this to https://github.com/chjj/marked.';\n if ((opt || marked.defaults).silent) {\n return '

    An error occured:

    '\n        + escape(e.message + '', true)\n        + '
    ';\n }\n throw e;\n }\n}\n\n/**\n * Options\n */\n\nmarked.options =\nmarked.setOptions = function(opt) {\n merge(marked.defaults, opt);\n return marked;\n};\n\nmarked.defaults = {\n gfm: true,\n tables: true,\n breaks: false,\n pedantic: false,\n sanitize: false,\n sanitizer: null,\n mangle: true,\n smartLists: false,\n silent: false,\n highlight: null,\n langPrefix: 'lang-',\n smartypants: false,\n headerPrefix: '',\n renderer: new Renderer,\n xhtml: false\n};\n\n/**\n * Expose\n */\n\nmarked.Parser = Parser;\nmarked.parser = Parser.parse;\n\nmarked.Renderer = Renderer;\n\nmarked.Lexer = Lexer;\nmarked.lexer = Lexer.lex;\n\nmarked.InlineLexer = InlineLexer;\nmarked.inlineLexer = InlineLexer.output;\n\nmarked.parse = marked;\n\nif (typeof module !== 'undefined' && typeof exports === 'object') {\n module.exports = marked;\n} else if (typeof define === 'function' && define.amd) {\n define(function() { return marked; });\n} else {\n this.marked = marked;\n}\n\n}).call(function() {\n return this || (typeof window !== 'undefined' ? window : global);\n}());\n","import marked from 'marked';\n\nmarked.setOptions({\n gfm: true,\n smartypants: true\n});\n\nexport default function(dom, data) {\n let markdownElements = [].slice.call(dom.querySelectorAll('[markdown]'));\n markdownElements.forEach(el => {\n let content = el.innerHTML;\n // Set default indents\n content = content.replace(/\\n/, \"\");\n let tabs = content.match(/\\s*/);\n content = content.replace(new RegExp(\"\\n\" + tabs, \"g\"), \"\\n\");\n content = content.trim();\n\n el.innerHTML = marked(content);\n });\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, '&').replace(/ 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, '"') + '\"';\n\t}).join(' ');\n\n\treturn '<' + env.tag + ' class=\"' + env.classes.join(' ') + '\"' + (attributes ? ' ' + attributes : '') + '>' + env.content + '';\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': //,\n\t'prolog': /<\\?[\\w\\W]+?\\?>/,\n\t'doctype': //i,\n\t'cdata': //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(/&/, '&');\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: /()[\\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: /()[\\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","import Prism from \"prismjs\";\n\nexport default function(dom, data) {\n let codeElements = [].slice.call(dom.querySelectorAll(\"dt-code\"));\n codeElements.forEach(el => {\n let content = el.textContent;\n el.innerHTML = \"\";\n let language = el.getAttribute(\"language\");\n let c = dom.createElement(\"code\");\n if (el.getAttribute(\"block\") === \"\") {\n // Let's normalize the tab indents\n content = content.replace(/\\n/, \"\");\n let tabs = content.match(/\\s*/);\n content = content.replace(new RegExp(\"\\n\" + tabs, \"g\"), \"\\n\");\n content = content.trim();\n let p = dom.createElement(\"pre\");\n p.appendChild(c);\n el.appendChild(p);\n } else {\n el.appendChild(c);\n }\n let highlighted = content;\n if (Prism.languages[language]) {\n c.setAttribute(\"class\", \"language-\" + language);\n highlighted = Prism.highlight(content, Prism.languages[language]);\n }\n c.innerHTML = highlighted;\n });\n}\n","export default {\n \"title\": \"Experiments in Handwriting with a Neural Network\",\n \"description\": \"Several interactive visualizations of a generative model of handwriting. Some are fun, some are serious.\",\n \"url\": \"http://distill.pub/2016/handwriting/\",\n \"github\": \"https://github.com/distillpub/post--handwriting\",\n \"firstPublished\": \"Tue Dec 6 2016 21:39:33 GMT-0700 (PDT)\",\n \"lastPublished\": \"Tue Dec 6 2016 21:39:33 GMT-0700 (PDT)\",\n \"authors\": [\n {\n \"firstName\": \"Shan\",\n \"lastName\": \"Carter\",\n \"personalURL\": \"http://shancarter.com\",\n \"affiliation\": \"Google Brain\",\n \"affiliationURL\": \"http://g.co/brain\"\n },\n {\n \"firstName\": \"David\",\n \"lastName\": \"Ha\",\n \"personalURL\": \"https://github.com/hardmaru\",\n \"affiliation\": \"Google Brain\",\n \"affiliationURL\": \"http://g.co/brain\"\n },\n {\n \"firstName\": \"Ian\",\n \"lastName\": \"Johnson\",\n \"personalURL\": \"https://github.com/enjalot\",\n \"affiliation\": \"Google Cloud\",\n \"affiliationURL\": \"\"\n },\n {\n \"firstName\": \"Chris\",\n \"lastName\": \"Olah\",\n \"personalURL\": \"http://colah.github.io/\",\n \"affiliation\": \"Google Brain\",\n \"affiliationURL\": \"http://g.co/brain\"\n }\n ],\n journal: {\n \"title\": \"Distill\",\n \"full_title\": \"Distill\",\n \"abbrev_title\": \"Distill\",\n \"url\": \"http://distill.pub\",\n \"doi\": \"00.0000/dstl\",\n \"issn\": \"0000-0000\"\n }\n };\n","import html from \"./components/html\";\nimport styles from \"./components/styles\";\nimport frontMatter from \"./components/front-matter\";\nimport bibliography from \"./components/bibliography\";\nimport meta from \"./components/meta\";\nimport header from \"./components/header\";\nimport appendix from \"./components/appendix\";\nimport footer from \"./components/footer\";\nimport citation from \"./components/citation\";\nimport markdown from \"./components/markdown\";\nimport code from \"./components/code\";\nimport testData from \"./test-data\";\n\nfunction render(dom, data) {\n html(dom);\n styles(dom);\n dom.addEventListener(\"DOMContentLoaded\", function(event) {\n frontMatter(dom, data);\n bibliography(dom, data);\n meta(dom, data);\n header(dom, data);\n appendix(dom, data);\n footer(dom, data);\n markdown(dom, data);\n code(dom, data);\n citation(dom, data);\n console.log(\"final data:\")\n for (var k in data) {console.log(\" \", k, \": \", data[k])}\n });\n}\n\n// If we are in a browser, run render automatically.\nif(window && window.document) {\n render(window.document, testData);\n}\n\nexport {render as render};\nexport {html as html};\nexport {styles as styles};\nexport {frontMatter as frontMatter};\nexport {bibliography as bibliography};\nexport {meta as meta};\nexport {header as header};\nexport {appendix as appendix};\nexport {footer as footer};\nexport {citation as citation};\nexport {markdown as markdown};\nexport {code as code};\n"],"names":["let","meta","YAMLException","common","require$$0","Mark","this","Type","require$$1","require$$2","type","arguments","Schema","require$$3","require$$4","require$$5","require","_hasOwnProperty","_toString","require$$6","require$$7","_require","DEFAULT_SAFE_SCHEMA","DEFAULT_FULL_SCHEMA","loadAll","load","safeLoadAll","safeLoad","State","dump","safeDump","require$$8","require$$9","ymlParse","const","html","define","global","Prism","code"],"mappings":";;;;;;AAAA,WAAe,SAAS,GAAG,EAAE;EAC3B,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE;IACnD,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;GACrD;;EAEDA,IAAI,IAAI,GAAG,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;;EAErC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,eAAe,CAAC,EAAE;IACvCA,IAAI,IAAI,GAAG,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IACrC,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACtC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;GACxB;EACD,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,qBAAqB,CAAC,EAAE;IAC7CA,IAAIC,MAAI,GAAG,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IACrCA,MAAI,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACtCA,MAAI,CAAC,YAAY,CAAC,SAAS,EAAE,qCAAqC,CAAC,CAAC;IACpE,IAAI,CAAC,WAAW,CAACA,MAAI,CAAC,CAAC;GACxB;CACF,CAAA;;;;;;;;;;ACbD,aAAe,SAAS,GAAG,EAAE;EAC3BD,IAAI,CAAC,GAAG,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;EACnC,CAAC,CAAC,WAAW,GAAG,IAAI,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;EAC/C,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;CAC1C,CAAA;;ACND,SAAS,SAAS,CAAC,OAAO,EAAE;EAC1B,OAAO,CAAC,OAAO,OAAO,KAAK,WAAW,MAAM,OAAO,KAAK,IAAI,CAAC,CAAC;CAC/D;;;AAGD,SAAS,QAAQ,CAAC,OAAO,EAAE;EACzB,OAAO,CAAC,OAAO,OAAO,KAAK,QAAQ,MAAM,OAAO,KAAK,IAAI,CAAC,CAAC;CAC5D;;;AAGD,SAAS,OAAO,CAAC,QAAQ,EAAE;EACzB,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAA,OAAO,QAAQ,CAAC,EAAA;OACxC,IAAI,SAAS,CAAC,QAAQ,CAAC,EAAE,EAAA,OAAO,EAAE,CAAC,EAAA;;EAExC,OAAO,EAAE,QAAQ,EAAE,CAAC;CACrB;;;AAGD,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE;EAC9B,IAAI,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,CAAC;;EAEnC,IAAI,MAAM,EAAE;IACV,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;IAEjC,KAAK,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;MACtE,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;MACxB,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;KAC3B;GACF;;EAED,OAAO,MAAM,CAAC;CACf;;;AAGD,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE;EAC7B,IAAI,MAAM,GAAG,EAAE,EAAE,KAAK,CAAC;;EAEvB,KAAK,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,IAAI,CAAC,EAAE;IACzC,MAAM,IAAI,MAAM,CAAC;GAClB;;EAED,OAAO,MAAM,CAAC;CACf;;;AAGD,SAAS,cAAc,CAAC,MAAM,EAAE;EAC9B,OAAO,CAAC,MAAM,KAAK,CAAC,MAAM,MAAM,CAAC,iBAAiB,KAAK,CAAC,GAAG,MAAM,CAAC,CAAC;CACpE;;;AAGD,kBAAgC,SAAS,CAAC;AAC1C,iBAAgC,QAAQ,CAAC;AACzC,gBAAgC,OAAO,CAAC;AACxC,eAAgC,MAAM,CAAC;AACvC,uBAAgC,cAAc,CAAC;AAC/C,eAAgC,MAAM,CAAC;;;;;;;;;;;AC1DvC;;AAEA,AAEA,SAASE,eAAa,CAAC,MAAM,EAAE,IAAI,EAAE;;EAEnC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;;EAGjB,IAAI,KAAK,CAAC,iBAAiB,EAAE;;IAE3B,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;GACjD,MAAM;;IAEL,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,KAAK,EAAE,EAAE,KAAK,IAAI,EAAE,CAAC;GACxC;;EAED,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;EAC5B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;EACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;EACjB,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,kBAAkB,KAAK,IAAI,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;CACpG;;;;AAIDA,eAAa,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AACzDA,eAAa,CAAC,SAAS,CAAC,WAAW,GAAGA,eAAa,CAAC;;;AAGpDA,eAAa,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,CAAC,OAAO,EAAE;EAC5D,IAAI,MAAM,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;;EAE9B,MAAM,IAAI,IAAI,CAAC,MAAM,IAAI,kBAAkB,CAAC;;EAE5C,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE;IACzB,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;GACtC;;EAED,OAAO,MAAM,CAAC;CACf,CAAC;;;AAGF,aAAc,GAAGA,eAAa,CAAC;;ACvC/B,IAAIC,QAAM,GAAGC,QAAmB,CAAC;;;AAGjC,SAASC,MAAI,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE;EAClD,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC;EACrB,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC;EACvB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;EACzB,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC;EACrB,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC;CACxB;;;AAGDA,MAAI,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE;;;EACjE,IAAI,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC;;EAEpC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAA,OAAO,IAAI,CAAC,EAAA;;EAE9B,MAAM,GAAG,MAAM,IAAI,CAAC,CAAC;EACrB,SAAS,GAAG,SAAS,IAAI,EAAE,CAAC;;EAE5B,IAAI,GAAG,EAAE,CAAC;EACV,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC;;EAEtB,OAAO,KAAK,GAAG,CAAC,IAAI,0BAA0B,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;IAC5F,KAAK,IAAI,CAAC,CAAC;IACX,IAAIC,MAAI,CAAC,QAAQ,GAAG,KAAK,IAAI,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE;MAC/C,IAAI,GAAG,OAAO,CAAC;MACf,KAAK,IAAI,CAAC,CAAC;MACX,MAAM;KACP;GACF;;EAED,IAAI,GAAG,EAAE,CAAC;EACV,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC;;EAEpB,OAAO,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,0BAA0B,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;IACrG,GAAG,IAAI,CAAC,CAAC;IACT,IAAI,GAAG,GAAGA,MAAI,CAAC,QAAQ,IAAI,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE;MAC7C,IAAI,GAAG,OAAO,CAAC;MACf,GAAG,IAAI,CAAC,CAAC;MACT,MAAM;KACP;GACF;;EAED,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;;EAExC,OAAOH,QAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,GAAG,OAAO,GAAG,IAAI,GAAG,IAAI;SACzDA,QAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,GAAG,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC;CAC/E,CAAC;;;AAGFE,MAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,CAAC,OAAO,EAAE;EACnD,IAAI,OAAO,EAAE,KAAK,GAAG,EAAE,CAAC;;EAExB,IAAI,IAAI,CAAC,IAAI,EAAE;IACb,KAAK,IAAI,MAAM,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;GACpC;;EAED,KAAK,IAAI,UAAU,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,WAAW,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;;EAExE,IAAI,CAAC,OAAO,EAAE;IACZ,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;;IAE5B,IAAI,OAAO,EAAE;MACX,KAAK,IAAI,KAAK,GAAG,OAAO,CAAC;KAC1B;GACF;;EAED,OAAO,KAAK,CAAC;CACd,CAAC;;;AAGF,QAAc,GAAGA,MAAI,CAAC;;ACzEtB,IAAIH,eAAa,GAAGE,SAAsB,CAAC;;AAE3C,IAAI,wBAAwB,GAAG;EAC7B,MAAM;EACN,SAAS;EACT,WAAW;EACX,YAAY;EACZ,WAAW;EACX,WAAW;EACX,cAAc;EACd,cAAc;CACf,CAAC;;AAEF,IAAI,eAAe,GAAG;EACpB,QAAQ;EACR,UAAU;EACV,SAAS;CACV,CAAC;;AAEF,SAAS,mBAAmB,CAAC,GAAG,EAAE;EAChC,IAAI,MAAM,GAAG,EAAE,CAAC;;EAEhB,IAAI,GAAG,KAAK,IAAI,EAAE;IAChB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,KAAK,EAAE;MACxC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,UAAU,KAAK,EAAE;QAClC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;OAC/B,CAAC,CAAC;KACJ,CAAC,CAAC;GACJ;;EAED,OAAO,MAAM,CAAC;CACf;;AAED,SAASG,MAAI,CAAC,GAAG,EAAE,OAAO,EAAE;EAC1B,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;;EAExB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE;IAC3C,IAAI,wBAAwB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;MACjD,MAAM,IAAIL,eAAa,CAAC,kBAAkB,GAAG,IAAI,GAAG,6BAA6B,GAAG,GAAG,GAAG,cAAc,CAAC,CAAC;KAC3G;GACF,CAAC,CAAC;;;EAGH,IAAI,CAAC,GAAG,YAAY,GAAG,CAAC;EACxB,IAAI,CAAC,IAAI,WAAW,OAAO,CAAC,MAAM,CAAC,YAAY,IAAI,CAAC;EACpD,IAAI,CAAC,OAAO,QAAQ,OAAO,CAAC,SAAS,CAAC,SAAS,YAAY,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC;EAC5E,IAAI,CAAC,SAAS,MAAM,OAAO,CAAC,WAAW,CAAC,OAAO,UAAU,IAAI,EAAE,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC;EAChF,IAAI,CAAC,UAAU,KAAK,OAAO,CAAC,YAAY,CAAC,MAAM,IAAI,CAAC;EACpD,IAAI,CAAC,SAAS,MAAM,OAAO,CAAC,WAAW,CAAC,OAAO,IAAI,CAAC;EACpD,IAAI,CAAC,SAAS,MAAM,OAAO,CAAC,WAAW,CAAC,OAAO,IAAI,CAAC;EACpD,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC;EACpD,IAAI,CAAC,YAAY,GAAG,mBAAmB,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,CAAC;;EAEzE,IAAI,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;IAC7C,MAAM,IAAIA,eAAa,CAAC,gBAAgB,GAAG,IAAI,CAAC,IAAI,GAAG,sBAAsB,GAAG,GAAG,GAAG,cAAc,CAAC,CAAC;GACvG;CACF;;AAED,QAAc,GAAGK,MAAI,CAAC;;ACxDtB,IAAIJ,QAAM,UAAUC,QAAmB,CAAC;AACxC,IAAIF,eAAa,GAAGM,SAAsB,CAAC;AAC3C,IAAID,MAAI,YAAYE,IAAiB,CAAC;;;AAGtC,SAAS,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;EACzC,IAAI,OAAO,GAAG,EAAE,CAAC;;EAEjB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,cAAc,EAAE;IAC/C,MAAM,GAAG,WAAW,CAAC,cAAc,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;GACpD,CAAC,CAAC;;EAEH,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,WAAW,EAAE;IAC1C,MAAM,CAAC,OAAO,CAAC,UAAU,YAAY,EAAE,aAAa,EAAE;MACpD,IAAI,YAAY,CAAC,GAAG,KAAK,WAAW,CAAC,GAAG,IAAI,YAAY,CAAC,IAAI,KAAK,WAAW,CAAC,IAAI,EAAE;QAClF,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;OAC7B;KACF,CAAC,CAAC;;IAEH,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;GAC1B,CAAC,CAAC;;EAEH,OAAO,MAAM,CAAC,MAAM,CAAC,UAAUC,OAAI,EAAE,KAAK,EAAE;IAC1C,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;GACtC,CAAC,CAAC;CACJ;;;AAGD,SAAS,UAAU,iBAAiB;;;EAClC,IAAI,MAAM,GAAG;QACP,MAAM,EAAE,EAAE;QACV,QAAQ,EAAE,EAAE;QACZ,OAAO,EAAE,EAAE;QACX,QAAQ,EAAE,EAAE;OACb,EAAE,KAAK,EAAE,MAAM,CAAC;;EAErB,SAAS,WAAW,CAACA,OAAI,EAAE;IACzB,MAAM,CAACA,OAAI,CAAC,IAAI,CAAC,CAACA,OAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,CAACA,OAAI,CAAC,GAAG,CAAC,GAAGA,OAAI,CAAC;GACnE;;EAED,KAAK,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;IACrEC,WAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;GACvC;EACD,OAAO,MAAM,CAAC;CACf;;;AAGD,SAASC,QAAM,CAAC,UAAU,EAAE;EAC1B,IAAI,CAAC,OAAO,IAAI,UAAU,CAAC,OAAO,KAAK,EAAE,CAAC;EAC1C,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,IAAI,EAAE,CAAC;EAC1C,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,IAAI,EAAE,CAAC;;EAE1C,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAUF,OAAI,EAAE;IACpC,IAAIA,OAAI,CAAC,QAAQ,IAAIA,OAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE;MAC/C,MAAM,IAAIR,eAAa,CAAC,iHAAiH,CAAC,CAAC;KAC5I;GACF,CAAC,CAAC;;EAEH,IAAI,CAAC,gBAAgB,GAAG,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;EAC1D,IAAI,CAAC,gBAAgB,GAAG,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;EAC1D,IAAI,CAAC,eAAe,IAAI,UAAU,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;CAClF;;;AAGDU,QAAM,CAAC,OAAO,GAAG,IAAI,CAAC;;;AAGtBA,QAAM,CAAC,MAAM,GAAG,SAAS,YAAY,GAAG;EACtC,IAAI,OAAO,EAAE,KAAK,CAAC;;EAEnB,QAAQ,SAAS,CAAC,MAAM;IACtB,KAAK,CAAC;MACJ,OAAO,GAAGA,QAAM,CAAC,OAAO,CAAC;MACzB,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;MACrB,MAAM;;IAER,KAAK,CAAC;MACJ,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;MACvB,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;MACrB,MAAM;;IAER;MACE,MAAM,IAAIV,eAAa,CAAC,sDAAsD,CAAC,CAAC;GACnF;;EAED,OAAO,GAAGC,QAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;EAClC,KAAK,GAAGA,QAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;;EAE9B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,MAAM,EAAE,EAAE,OAAO,MAAM,YAAYS,QAAM,CAAC,EAAE,CAAC,EAAE;IAC1E,MAAM,IAAIV,eAAa,CAAC,2FAA2F,CAAC,CAAC;GACtH;;EAED,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAUQ,OAAI,EAAE,EAAE,OAAOA,OAAI,YAAYH,MAAI,CAAC,EAAE,CAAC,EAAE;IAClE,MAAM,IAAIL,eAAa,CAAC,oFAAoF,CAAC,CAAC;GAC/G;;EAED,OAAO,IAAIU,QAAM,CAAC;IAChB,OAAO,EAAE,OAAO;IAChB,QAAQ,EAAE,KAAK;GAChB,CAAC,CAAC;CACJ,CAAC;;;AAGF,UAAc,GAAGA,QAAM,CAAC;;ACzGxB,IAAIL,MAAI,GAAGH,IAAkB,CAAC;;AAE9B,OAAc,GAAG,IAAIG,MAAI,CAAC,uBAAuB,EAAE;EACjD,IAAI,EAAE,QAAQ;EACd,SAAS,EAAE,UAAU,IAAI,EAAE,EAAE,OAAO,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC,EAAE;CACjE,CAAC,CAAC;;ACLH,IAAIA,MAAI,GAAGH,IAAkB,CAAC;;AAE9B,OAAc,GAAG,IAAIG,MAAI,CAAC,uBAAuB,EAAE;EACjD,IAAI,EAAE,UAAU;EAChB,SAAS,EAAE,UAAU,IAAI,EAAE,EAAE,OAAO,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC,EAAE;CACjE,CAAC,CAAC;;ACLH,IAAIA,MAAI,GAAGH,IAAkB,CAAC;;AAE9B,OAAc,GAAG,IAAIG,MAAI,CAAC,uBAAuB,EAAE;EACjD,IAAI,EAAE,SAAS;EACf,SAAS,EAAE,UAAU,IAAI,EAAE,EAAE,OAAO,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC,EAAE;CACjE,CAAC,CAAC;;ACAH,IAAIK,QAAM,GAAGR,MAAoB,CAAC;;;AAGlC,YAAc,GAAG,IAAIQ,QAAM,CAAC;EAC1B,QAAQ,EAAE;IACRJ,GAAsB;IACtBC,GAAsB;IACtBI,GAAsB;GACvB;CACF,CAAC,CAAC;;ACdH,IAAIN,MAAI,GAAGH,IAAkB,CAAC;;AAE9B,SAAS,eAAe,CAAC,IAAI,EAAE;EAC7B,IAAI,IAAI,KAAK,IAAI,EAAE,EAAA,OAAO,IAAI,CAAC,EAAA;;EAE/B,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;;EAEtB,OAAO,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,KAAK,GAAG;UACzB,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC;CAC/E;;AAED,SAAS,iBAAiB,GAAG;EAC3B,OAAO,IAAI,CAAC;CACb;;AAED,SAAS,MAAM,CAAC,MAAM,EAAE;EACtB,OAAO,MAAM,KAAK,IAAI,CAAC;CACxB;;AAED,SAAc,GAAG,IAAIG,MAAI,CAAC,wBAAwB,EAAE;EAClD,IAAI,EAAE,QAAQ;EACd,OAAO,EAAE,eAAe;EACxB,SAAS,EAAE,iBAAiB;EAC5B,SAAS,EAAE,MAAM;EACjB,SAAS,EAAE;IACT,SAAS,EAAE,YAAY,EAAE,OAAO,GAAG,CAAC,KAAK;IACzC,SAAS,EAAE,YAAY,EAAE,OAAO,MAAM,CAAC,EAAE;IACzC,SAAS,EAAE,YAAY,EAAE,OAAO,MAAM,CAAC,EAAE;IACzC,SAAS,EAAE,YAAY,EAAE,OAAO,MAAM,CAAC,EAAE;GAC1C;EACD,YAAY,EAAE,WAAW;CAC1B,CAAC,CAAC;;AC/BH,IAAIA,MAAI,GAAGH,IAAkB,CAAC;;AAE9B,SAAS,kBAAkB,CAAC,IAAI,EAAE;EAChC,IAAI,IAAI,KAAK,IAAI,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;;EAEhC,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;;EAEtB,OAAO,CAAC,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,MAAM,CAAC;UACpE,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC;CAClF;;AAED,SAAS,oBAAoB,CAAC,IAAI,EAAE;EAClC,OAAO,IAAI,KAAK,MAAM;SACf,IAAI,KAAK,MAAM;SACf,IAAI,KAAK,MAAM,CAAC;CACxB;;AAED,SAAS,SAAS,CAAC,MAAM,EAAE;EACzB,OAAO,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,kBAAkB,CAAC;CACtE;;AAED,QAAc,GAAG,IAAIG,MAAI,CAAC,wBAAwB,EAAE;EAClD,IAAI,EAAE,QAAQ;EACd,OAAO,EAAE,kBAAkB;EAC3B,SAAS,EAAE,oBAAoB;EAC/B,SAAS,EAAE,SAAS;EACpB,SAAS,EAAE;IACT,SAAS,EAAE,UAAU,MAAM,EAAE,EAAE,OAAO,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,EAAE;IAClE,SAAS,EAAE,UAAU,MAAM,EAAE,EAAE,OAAO,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,EAAE;IAClE,SAAS,EAAE,UAAU,MAAM,EAAE,EAAE,OAAO,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,EAAE;GACnE;EACD,YAAY,EAAE,WAAW;CAC1B,CAAC,CAAC;;AChCH,IAAIJ,QAAM,GAAGC,QAAoB,CAAC;AAClC,IAAIG,MAAI,KAAKC,IAAkB,CAAC;;AAEhC,SAAS,SAAS,CAAC,CAAC,EAAE;EACpB,OAAO,CAAC,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,IAAI,QAAQ;UACxC,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,IAAI,QAAQ,CAAC;UACzC,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,IAAI,QAAQ,CAAC,CAAC;CACnD;;AAED,SAAS,SAAS,CAAC,CAAC,EAAE;EACpB,QAAQ,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,IAAI,QAAQ,EAAE;CACnD;;AAED,SAAS,SAAS,CAAC,CAAC,EAAE;EACpB,QAAQ,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,IAAI,QAAQ,EAAE;CACnD;;AAED,SAAS,kBAAkB,CAAC,IAAI,EAAE;EAChC,IAAI,IAAI,KAAK,IAAI,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;;EAEhC,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM;MACjB,KAAK,GAAG,CAAC;MACT,SAAS,GAAG,KAAK;MACjB,EAAE,CAAC;;EAEP,IAAI,CAAC,GAAG,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;;EAEvB,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;;;EAGjB,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,GAAG,EAAE;IAC5B,EAAE,GAAG,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;GACpB;;EAED,IAAI,EAAE,KAAK,GAAG,EAAE;;IAEd,IAAI,KAAK,GAAG,CAAC,KAAK,GAAG,EAAE,EAAA,OAAO,IAAI,CAAC,EAAA;IACnC,EAAE,GAAG,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;;;;IAInB,IAAI,EAAE,KAAK,GAAG,EAAE;;MAEd,KAAK,EAAE,CAAC;;MAER,OAAO,KAAK,GAAG,GAAG,EAAE,KAAK,EAAE,EAAE;QAC3B,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QACjB,IAAI,EAAE,KAAK,GAAG,EAAE,EAAA,SAAS,EAAA;QACzB,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,GAAG,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;QAC3C,SAAS,GAAG,IAAI,CAAC;OAClB;MACD,OAAO,SAAS,CAAC;KAClB;;;IAGD,IAAI,EAAE,KAAK,GAAG,EAAE;;MAEd,KAAK,EAAE,CAAC;;MAER,OAAO,KAAK,GAAG,GAAG,EAAE,KAAK,EAAE,EAAE;QAC3B,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QACjB,IAAI,EAAE,KAAK,GAAG,EAAE,EAAA,SAAS,EAAA;QACzB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;QACrD,SAAS,GAAG,IAAI,CAAC;OAClB;MACD,OAAO,SAAS,CAAC;KAClB;;;IAGD,OAAO,KAAK,GAAG,GAAG,EAAE,KAAK,EAAE,EAAE;MAC3B,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;MACjB,IAAI,EAAE,KAAK,GAAG,EAAE,EAAA,SAAS,EAAA;MACzB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;MACrD,SAAS,GAAG,IAAI,CAAC;KAClB;IACD,OAAO,SAAS,CAAC;GAClB;;;;EAID,OAAO,KAAK,GAAG,GAAG,EAAE,KAAK,EAAE,EAAE;IAC3B,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IACjB,IAAI,EAAE,KAAK,GAAG,EAAE,EAAA,SAAS,EAAA;IACzB,IAAI,EAAE,KAAK,GAAG,EAAE,EAAA,MAAM,EAAA;IACtB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE;MACtC,OAAO,KAAK,CAAC;KACd;IACD,SAAS,GAAG,IAAI,CAAC;GAClB;;EAED,IAAI,CAAC,SAAS,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;;;EAG7B,IAAI,EAAE,KAAK,GAAG,EAAE,EAAA,OAAO,IAAI,CAAC,EAAA;;;EAG5B,OAAO,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;CACpD;;AAED,SAAS,oBAAoB,CAAC,IAAI,EAAE;EAClC,IAAI,KAAK,GAAG,IAAI,EAAE,IAAI,GAAG,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,EAAE,CAAC;;EAElD,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;IAC7B,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;GACjC;;EAED,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;;EAEd,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,GAAG,EAAE;IAC5B,IAAI,EAAE,KAAK,GAAG,EAAE,EAAA,IAAI,GAAG,CAAC,CAAC,CAAC,EAAA;IAC1B,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACvB,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;GACf;;EAED,IAAI,KAAK,KAAK,GAAG,EAAE,EAAA,OAAO,CAAC,CAAC,EAAA;;EAE5B,IAAI,EAAE,KAAK,GAAG,EAAE;IACd,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,EAAA,OAAO,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAA;IAChE,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,EAAA,OAAO,IAAI,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAA;IACxD,OAAO,IAAI,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;GAClC;;EAED,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;IAC7B,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;MACpC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;KACjC,CAAC,CAAC;;IAEH,KAAK,GAAG,CAAC,CAAC;IACV,IAAI,GAAG,CAAC,CAAC;;IAET,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;MAC1B,KAAK,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;MACpB,IAAI,IAAI,EAAE,CAAC;KACZ,CAAC,CAAC;;IAEH,OAAO,IAAI,GAAG,KAAK,CAAC;;GAErB;;EAED,OAAO,IAAI,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;CACnC;;AAED,SAAS,SAAS,CAAC,MAAM,EAAE;EACzB,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,iBAAiB;UAC7D,MAAM,GAAG,CAAC,KAAK,CAAC,IAAI,CAACL,QAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;CAC7D;;AAED,SAAc,GAAG,IAAII,MAAI,CAAC,uBAAuB,EAAE;EACjD,IAAI,EAAE,QAAQ;EACd,OAAO,EAAE,kBAAkB;EAC3B,SAAS,EAAE,oBAAoB;EAC/B,SAAS,EAAE,SAAS;EACpB,SAAS,EAAE;IACT,MAAM,OAAO,UAAU,MAAM,EAAE,EAAE,OAAO,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;IACpE,KAAK,QAAQ,UAAU,MAAM,EAAE,EAAE,OAAO,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;IACpE,OAAO,MAAM,UAAU,MAAM,EAAE,EAAE,cAAc,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE;IACrE,WAAW,EAAE,UAAU,MAAM,EAAE,EAAE,OAAO,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,EAAE;GACpF;EACD,YAAY,EAAE,SAAS;EACvB,YAAY,EAAE;IACZ,MAAM,OAAO,EAAE,CAAC,GAAG,KAAK,EAAE;IAC1B,KAAK,QAAQ,EAAE,CAAC,GAAG,KAAK,EAAE;IAC1B,OAAO,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE;IAC1B,WAAW,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE;GAC3B;CACF,CAAC,CAAC;;ACrKH,IAAIJ,QAAM,GAAGC,QAAoB,CAAC;AAClC,IAAIG,MAAI,KAAKC,IAAkB,CAAC;;AAEhC,IAAI,kBAAkB,GAAG,IAAI,MAAM;EACjC,wDAAwD;EACxD,gCAAgC;EAChC,+CAA+C;EAC/C,0BAA0B;EAC1B,uBAAuB,CAAC,CAAC;;AAE3B,SAAS,gBAAgB,CAAC,IAAI,EAAE;EAC9B,IAAI,IAAI,KAAK,IAAI,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;;EAEhC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;;EAEjD,OAAO,IAAI,CAAC;CACb;;AAED,SAAS,kBAAkB,CAAC,IAAI,EAAE;EAChC,IAAI,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC;;EAE9B,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;EAC9C,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;EACnC,MAAM,GAAG,EAAE,CAAC;;EAEZ,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;IAC/B,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;GACxB;;EAED,IAAI,KAAK,KAAK,MAAM,EAAE;IACpB,OAAO,CAAC,IAAI,KAAK,CAAC,IAAI,MAAM,CAAC,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC;;GAE3E,MAAM,IAAI,KAAK,KAAK,MAAM,EAAE;IAC3B,OAAO,GAAG,CAAC;;GAEZ,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;IAClC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;MACpC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;KACnC,CAAC,CAAC;;IAEH,KAAK,GAAG,GAAG,CAAC;IACZ,IAAI,GAAG,CAAC,CAAC;;IAET,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;MAC1B,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC;MAClB,IAAI,IAAI,EAAE,CAAC;KACZ,CAAC,CAAC;;IAEH,OAAO,IAAI,GAAG,KAAK,CAAC;;GAErB;EACD,OAAO,IAAI,GAAG,UAAU,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;CACrC;;;AAGD,IAAI,sBAAsB,GAAG,eAAe,CAAC;;AAE7C,SAAS,kBAAkB,CAAC,MAAM,EAAE,KAAK,EAAE;EACzC,IAAI,GAAG,CAAC;;EAER,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE;IACjB,QAAQ,KAAK;MACX,KAAK,WAAW,EAAE,OAAO,MAAM,CAAC;MAChC,KAAK,WAAW,EAAE,OAAO,MAAM,CAAC;MAChC,KAAK,WAAW,EAAE,OAAO,MAAM,CAAC;KACjC;GACF,MAAM,IAAI,MAAM,CAAC,iBAAiB,KAAK,MAAM,EAAE;IAC9C,QAAQ,KAAK;MACX,KAAK,WAAW,EAAE,OAAO,MAAM,CAAC;MAChC,KAAK,WAAW,EAAE,OAAO,MAAM,CAAC;MAChC,KAAK,WAAW,EAAE,OAAO,MAAM,CAAC;KACjC;GACF,MAAM,IAAI,MAAM,CAAC,iBAAiB,KAAK,MAAM,EAAE;IAC9C,QAAQ,KAAK;MACX,KAAK,WAAW,EAAE,OAAO,OAAO,CAAC;MACjC,KAAK,WAAW,EAAE,OAAO,OAAO,CAAC;MACjC,KAAK,WAAW,EAAE,OAAO,OAAO,CAAC;KAClC;GACF,MAAM,IAAIL,QAAM,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE;IACxC,OAAO,MAAM,CAAC;GACf;;EAED,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;;;;;EAK1B,OAAO,sBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC;CACxE;;AAED,SAAS,OAAO,CAAC,MAAM,EAAE;EACvB,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,iBAAiB;UAC5D,MAAM,GAAG,CAAC,KAAK,CAAC,IAAIA,QAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;CAC5D;;AAED,WAAc,GAAG,IAAII,MAAI,CAAC,yBAAyB,EAAE;EACnD,IAAI,EAAE,QAAQ;EACd,OAAO,EAAE,gBAAgB;EACzB,SAAS,EAAE,kBAAkB;EAC7B,SAAS,EAAE,OAAO;EAClB,SAAS,EAAE,kBAAkB;EAC7B,YAAY,EAAE,WAAW;CAC1B,CAAC,CAAC;;AC7FH,IAAIK,QAAM,GAAGR,MAAoB,CAAC;;;AAGlC,QAAc,GAAG,IAAIQ,QAAM,CAAC;EAC1B,OAAO,EAAE;IACPJ,QAAqB;GACtB;EACD,QAAQ,EAAE;IACRC,KAAuB;IACvBI,IAAuB;IACvBC,KAAsB;IACtBC,OAAwB;GACzB;CACF,CAAC,CAAC;;ACdH,IAAIH,QAAM,GAAGR,MAAoB,CAAC;;;AAGlC,QAAc,GAAG,IAAIQ,QAAM,CAAC;EAC1B,OAAO,EAAE;IACPJ,IAAiB;GAClB;CACF,CAAC,CAAC;;ACfH,IAAID,OAAI,GAAGH,IAAkB,CAAC;;AAE9B,IAAI,gBAAgB,GAAG,IAAI,MAAM;EAC/B,yBAAyB;EACzB,eAAe;EACf,gBAAgB,CAAC,CAAC;;AAEpB,IAAI,qBAAqB,GAAG,IAAI,MAAM;EACpC,yBAAyB;EACzB,gBAAgB;EAChB,gBAAgB;EAChB,kBAAkB;EAClB,eAAe;EACf,eAAe;EACf,eAAe;EACf,kBAAkB;EAClB,kCAAkC;EAClC,wBAAwB,CAAC,CAAC;;AAE5B,SAAS,oBAAoB,CAAC,IAAI,EAAE;EAClC,IAAI,IAAI,KAAK,IAAI,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;EAChC,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,EAAA,OAAO,IAAI,CAAC,EAAA;EACtD,IAAI,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,EAAA,OAAO,IAAI,CAAC,EAAA;EAC3D,OAAO,KAAK,CAAC;CACd;;AAED,SAAS,sBAAsB,CAAC,IAAI,EAAE;EACpC,IAAI,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,CAAC;MAC3D,KAAK,GAAG,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC;;EAE3C,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EACpC,IAAI,KAAK,KAAK,IAAI,EAAE,EAAA,KAAK,GAAG,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAA;;EAE7D,IAAI,KAAK,KAAK,IAAI,EAAE,EAAA,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC,EAAA;;;;EAI1D,IAAI,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;EACnB,KAAK,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;EACxB,GAAG,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;;EAElB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;IACb,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;GAC7C;;;;EAID,IAAI,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;EACnB,MAAM,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;EACrB,MAAM,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;;EAErB,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE;IACZ,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAChC,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;MAC1B,QAAQ,IAAI,GAAG,CAAC;KACjB;IACD,QAAQ,GAAG,CAAC,QAAQ,CAAC;GACtB;;;;EAID,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE;IACZ,OAAO,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IACvB,SAAS,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9B,KAAK,GAAG,CAAC,OAAO,GAAG,EAAE,GAAG,SAAS,IAAI,KAAK,CAAC;IAC3C,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,EAAA,KAAK,GAAG,CAAC,KAAK,CAAC,EAAA;GACtC;;EAED,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;;EAE5E,IAAI,KAAK,EAAE,EAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,CAAC,EAAA;;EAEhD,OAAO,IAAI,CAAC;CACb;;AAED,SAAS,sBAAsB,CAAC,MAAM,cAAc;EAClD,OAAO,MAAM,CAAC,WAAW,EAAE,CAAC;CAC7B;;AAED,aAAc,GAAG,IAAIG,OAAI,CAAC,6BAA6B,EAAE;EACvD,IAAI,EAAE,QAAQ;EACd,OAAO,EAAE,oBAAoB;EAC7B,SAAS,EAAE,sBAAsB;EACjC,UAAU,EAAE,IAAI;EAChB,SAAS,EAAE,sBAAsB;CAClC,CAAC,CAAC;;ACrFH,IAAIA,OAAI,GAAGH,IAAkB,CAAC;;AAE9B,SAAS,gBAAgB,CAAC,IAAI,EAAE;EAC9B,OAAO,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,CAAC;CACvC;;AAED,SAAc,GAAG,IAAIG,OAAI,CAAC,yBAAyB,EAAE;EACnD,IAAI,EAAE,QAAQ;EACd,OAAO,EAAE,gBAAgB;CAC1B,CAAC,CAAC;;;;;;;;;;;;;;ACPH,IAAI,UAAU,CAAC;;AAEf,IAAI;;EAEF,IAAI,QAAQ,GAAGS,eAAO,CAAC;EACvB,UAAU,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;CACxC,CAAC,OAAO,EAAE,EAAE,EAAE;;AAEf,IAAIT,OAAI,SAASH,IAAkB,CAAC;;;;AAIpC,IAAI,UAAU,GAAG,uEAAuE,CAAC;;;AAGzF,SAAS,iBAAiB,CAAC,IAAI,EAAE;EAC/B,IAAI,IAAI,KAAK,IAAI,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;;EAEhC,IAAI,IAAI,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,UAAU,CAAC;;;EAG/D,KAAK,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE;IAC9B,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;;;IAGrC,IAAI,IAAI,GAAG,EAAE,EAAE,EAAA,SAAS,EAAA;;;IAGxB,IAAI,IAAI,GAAG,CAAC,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;;IAE3B,MAAM,IAAI,CAAC,CAAC;GACb;;;EAGD,OAAO,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC;CAC3B;;AAED,SAAS,mBAAmB,CAAC,IAAI,EAAE;EACjC,IAAI,GAAG,EAAE,QAAQ;MACb,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;MACpC,GAAG,GAAG,KAAK,CAAC,MAAM;MAClB,GAAG,GAAG,UAAU;MAChB,IAAI,GAAG,CAAC;MACR,MAAM,GAAG,EAAE,CAAC;;;;EAIhB,KAAK,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE;IAC9B,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE;MAC1B,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;MACjC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;MAChC,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;KAC1B;;IAED,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;GACrD;;;;EAID,QAAQ,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;;EAEzB,IAAI,QAAQ,KAAK,CAAC,EAAE;IAClB,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;IACjC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;IAChC,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;GAC1B,MAAM,IAAI,QAAQ,KAAK,EAAE,EAAE;IAC1B,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;IACjC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;GACjC,MAAM,IAAI,QAAQ,KAAK,EAAE,EAAE;IAC1B,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;GACjC;;;EAGD,IAAI,UAAU,EAAE,EAAA,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,EAAA;;EAE9C,OAAO,MAAM,CAAC;CACf;;AAED,SAAS,mBAAmB,CAAC,MAAM,cAAc;EAC/C,IAAI,MAAM,GAAG,EAAE,EAAE,IAAI,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI;MAChC,GAAG,GAAG,MAAM,CAAC,MAAM;MACnB,GAAG,GAAG,UAAU,CAAC;;;;EAIrB,KAAK,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE;IAC9B,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE;MAC1B,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;MACnC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;MACnC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;MAClC,MAAM,IAAI,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;KAC5B;;IAED,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;GAClC;;;;EAID,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC;;EAEf,IAAI,IAAI,KAAK,CAAC,EAAE;IACd,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;IACnC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;IACnC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;GAC5B,MAAM,IAAI,IAAI,KAAK,CAAC,EAAE;IACrB,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;IACnC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC;GACnB,MAAM,IAAI,IAAI,KAAK,CAAC,EAAE;IACrB,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,MAAM,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC;GACnB;;EAED,OAAO,MAAM,CAAC;CACf;;AAED,SAAS,QAAQ,CAAC,MAAM,EAAE;EACxB,OAAO,UAAU,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;CAClD;;AAED,UAAc,GAAG,IAAIG,OAAI,CAAC,0BAA0B,EAAE;EACpD,IAAI,EAAE,QAAQ;EACd,OAAO,EAAE,iBAAiB;EAC1B,SAAS,EAAE,mBAAmB;EAC9B,SAAS,EAAE,QAAQ;EACnB,SAAS,EAAE,mBAAmB;CAC/B,CAAC,CAAC;;ACpIH,IAAIA,OAAI,GAAGH,IAAkB,CAAC;;AAE9B,IAAIa,iBAAe,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC;AACtD,IAAI,SAAS,SAAS,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC;;AAEhD,SAAS,eAAe,CAAC,IAAI,EAAE;EAC7B,IAAI,IAAI,KAAK,IAAI,EAAE,EAAA,OAAO,IAAI,CAAC,EAAA;;EAE/B,IAAI,UAAU,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU;MACzD,MAAM,GAAG,IAAI,CAAC;;EAElB,KAAK,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;IAClE,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACrB,UAAU,GAAG,KAAK,CAAC;;IAEnB,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,iBAAiB,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;;IAE7D,KAAK,OAAO,IAAI,IAAI,EAAE;MACpB,IAAIA,iBAAe,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE;QACvC,IAAI,CAAC,UAAU,EAAE,EAAA,UAAU,GAAG,IAAI,CAAC,EAAA;aAC9B,EAAA,OAAO,KAAK,CAAC,EAAA;OACnB;KACF;;IAED,IAAI,CAAC,UAAU,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;;IAE9B,IAAI,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAA,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAA;SAC5D,EAAA,OAAO,KAAK,CAAC,EAAA;GACnB;;EAED,OAAO,IAAI,CAAC;CACb;;AAED,SAAS,iBAAiB,CAAC,IAAI,EAAE;EAC/B,OAAO,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;CAClC;;AAED,QAAc,GAAG,IAAIV,OAAI,CAAC,wBAAwB,EAAE;EAClD,IAAI,EAAE,UAAU;EAChB,OAAO,EAAE,eAAe;EACxB,SAAS,EAAE,iBAAiB;CAC7B,CAAC,CAAC;;ACzCH,IAAIA,OAAI,GAAGH,IAAkB,CAAC;;AAE9B,IAAIc,WAAS,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC;;AAE1C,SAAS,gBAAgB,CAAC,IAAI,EAAE;EAC9B,IAAI,IAAI,KAAK,IAAI,EAAE,EAAA,OAAO,IAAI,CAAC,EAAA;;EAE/B,IAAI,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM;MACjC,MAAM,GAAG,IAAI,CAAC;;EAElB,MAAM,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;;EAElC,KAAK,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;IAClE,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;;IAErB,IAAIA,WAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,iBAAiB,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;;IAE7D,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;IAEzB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;;IAEpC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;GAC5C;;EAED,OAAO,IAAI,CAAC;CACb;;AAED,SAAS,kBAAkB,CAAC,IAAI,EAAE;EAChC,IAAI,IAAI,KAAK,IAAI,EAAE,EAAA,OAAO,EAAE,CAAC,EAAA;;EAE7B,IAAI,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM;MACjC,MAAM,GAAG,IAAI,CAAC;;EAElB,MAAM,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;;EAElC,KAAK,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;IAClE,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;;IAErB,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;IAEzB,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;GAC5C;;EAED,OAAO,MAAM,CAAC;CACf;;AAED,SAAc,GAAG,IAAIX,OAAI,CAAC,yBAAyB,EAAE;EACnD,IAAI,EAAE,UAAU;EAChB,OAAO,EAAE,gBAAgB;EACzB,SAAS,EAAE,kBAAkB;CAC9B,CAAC,CAAC;;AClDH,IAAIA,OAAI,GAAGH,IAAkB,CAAC;;AAE9B,IAAIa,iBAAe,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC;;AAEtD,SAAS,cAAc,CAAC,IAAI,EAAE;EAC5B,IAAI,IAAI,KAAK,IAAI,EAAE,EAAA,OAAO,IAAI,CAAC,EAAA;;EAE/B,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;;EAEvB,KAAK,GAAG,IAAI,MAAM,EAAE;IAClB,IAAIA,iBAAe,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE;MACrC,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;KACxC;GACF;;EAED,OAAO,IAAI,CAAC;CACb;;AAED,SAAS,gBAAgB,CAAC,IAAI,EAAE;EAC9B,OAAO,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;CAClC;;AAED,OAAc,GAAG,IAAIV,OAAI,CAAC,uBAAuB,EAAE;EACjD,IAAI,EAAE,SAAS;EACf,OAAO,EAAE,cAAc;EACvB,SAAS,EAAE,gBAAgB;CAC5B,CAAC,CAAC;;AClBH,IAAIK,QAAM,GAAGR,MAAoB,CAAC;;;AAGlC,gBAAc,GAAG,IAAIQ,QAAM,CAAC;EAC1B,OAAO,EAAE;IACPJ,IAAiB;GAClB;EACD,QAAQ,EAAE;IACRC,SAA4B;IAC5BI,KAAwB;GACzB;EACD,QAAQ,EAAE;IACRC,MAAyB;IACzBC,IAAuB;IACvBI,KAAwB;IACxBC,GAAsB;GACvB;CACF,CAAC,CAAC;;ACzBH,IAAIb,OAAI,GAAGH,IAAqB,CAAC;;AAEjC,SAAS,0BAA0B,GAAG;EACpC,OAAO,IAAI,CAAC;CACb;;AAED,SAAS,4BAA4B,GAAG;;EAEtC,OAAO,SAAS,CAAC;CAClB;;AAED,SAAS,4BAA4B,GAAG;EACtC,OAAO,EAAE,CAAC;CACX;;AAED,SAAS,WAAW,CAAC,MAAM,EAAE;EAC3B,OAAO,OAAO,MAAM,KAAK,WAAW,CAAC;CACtC;;AAED,cAAc,GAAG,IAAIG,OAAI,CAAC,gCAAgC,EAAE;EAC1D,IAAI,EAAE,QAAQ;EACd,OAAO,EAAE,0BAA0B;EACnC,SAAS,EAAE,4BAA4B;EACvC,SAAS,EAAE,WAAW;EACtB,SAAS,EAAE,4BAA4B;CACxC,CAAC,CAAC;;ACzBH,IAAIA,OAAI,GAAGH,IAAqB,CAAC;;AAEjC,SAAS,uBAAuB,CAAC,IAAI,EAAE;EACrC,IAAI,IAAI,KAAK,IAAI,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;EAChC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;;EAEpC,IAAI,MAAM,GAAG,IAAI;MACb,IAAI,KAAK,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;MACjC,SAAS,GAAG,EAAE,CAAC;;;;EAInB,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;IACrB,IAAI,IAAI,EAAE,EAAA,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,EAAA;;IAE9B,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;;IAEvC,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;GACxE;;EAED,OAAO,IAAI,CAAC;CACb;;AAED,SAAS,yBAAyB,CAAC,IAAI,EAAE;EACvC,IAAI,MAAM,GAAG,IAAI;MACb,IAAI,KAAK,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;MACjC,SAAS,GAAG,EAAE,CAAC;;;EAGnB,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;IACrB,IAAI,IAAI,EAAE,EAAA,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,EAAA;IAC9B,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;GAChE;;EAED,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;CACtC;;AAED,SAAS,yBAAyB,CAAC,MAAM,cAAc;EACrD,IAAI,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC;;EAEvC,IAAI,MAAM,CAAC,MAAM,EAAE,EAAA,MAAM,IAAI,GAAG,CAAC,EAAA;EACjC,IAAI,MAAM,CAAC,SAAS,EAAE,EAAA,MAAM,IAAI,GAAG,CAAC,EAAA;EACpC,IAAI,MAAM,CAAC,UAAU,EAAE,EAAA,MAAM,IAAI,GAAG,CAAC,EAAA;;EAErC,OAAO,MAAM,CAAC;CACf;;AAED,SAAS,QAAQ,CAAC,MAAM,EAAE;EACxB,OAAO,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,iBAAiB,CAAC;CACrE;;AAED,UAAc,GAAG,IAAIG,OAAI,CAAC,6BAA6B,EAAE;EACvD,IAAI,EAAE,QAAQ;EACd,OAAO,EAAE,uBAAuB;EAChC,SAAS,EAAE,yBAAyB;EACpC,SAAS,EAAE,QAAQ;EACnB,SAAS,EAAE,yBAAyB;CACrC,CAAC,CAAC;;ACzDH,IAAI,OAAO,CAAC;;;;;;;;;AASZ,IAAI;;EAEF,IAAIc,UAAQ,GAAGL,eAAO,CAAC;EACvB,OAAO,GAAGK,UAAQ,CAAC,SAAS,CAAC,CAAC;CAC/B,CAAC,OAAO,CAAC,EAAE;;EAEV,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,EAAA,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,EAAA;CAC7D;;AAED,IAAId,OAAI,GAAGH,IAAqB,CAAC;;AAEjC,SAAS,yBAAyB,CAAC,IAAI,EAAE;EACvC,IAAI,IAAI,KAAK,IAAI,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;;EAEhC,IAAI;IACF,IAAI,MAAM,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG;QACzB,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;;IAEpD,IAAI,GAAG,CAAC,IAAI,wBAAwB,SAAS;QACzC,GAAG,CAAC,IAAI,CAAC,MAAM,iBAAiB,CAAC;QACjC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,gBAAgB,qBAAqB;QACrD,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,KAAK,oBAAoB,EAAE;MACxD,OAAO,KAAK,CAAC;KACd;;IAED,OAAO,IAAI,CAAC;GACb,CAAC,OAAO,GAAG,EAAE;IACZ,OAAO,KAAK,CAAC;GACd;CACF;;AAED,SAAS,2BAA2B,CAAC,IAAI,EAAE;;;EAGzC,IAAI,MAAM,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG;MACzB,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;MAC/C,MAAM,GAAG,EAAE;MACX,IAAI,CAAC;;EAET,IAAI,GAAG,CAAC,IAAI,wBAAwB,SAAS;MACzC,GAAG,CAAC,IAAI,CAAC,MAAM,iBAAiB,CAAC;MACjC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,gBAAgB,qBAAqB;MACrD,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,KAAK,oBAAoB,EAAE;IACxD,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;GAC/C;;EAED,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,KAAK,EAAE;IACrD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;GACzB,CAAC,CAAC;;EAEH,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;;;;;EAKzC,OAAO,IAAI,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACrE;;AAED,SAAS,2BAA2B,CAAC,MAAM,cAAc;EACvD,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;CAC1B;;AAED,SAAS,UAAU,CAAC,MAAM,EAAE;EAC1B,OAAO,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,mBAAmB,CAAC;CACvE;;AAED,aAAc,GAAG,IAAIG,OAAI,CAAC,+BAA+B,EAAE;EACzD,IAAI,EAAE,QAAQ;EACd,OAAO,EAAE,yBAAyB;EAClC,SAAS,EAAE,2BAA2B;EACtC,SAAS,EAAE,UAAU;EACrB,SAAS,EAAE,2BAA2B;CACvC,CAAC,CAAC;;ACvEH,IAAIK,QAAM,GAAGR,MAAoB,CAAC;;;AAGlC,gBAAc,GAAGQ,QAAM,CAAC,OAAO,GAAG,IAAIA,QAAM,CAAC;EAC3C,OAAO,EAAE;IACPJ,YAAyB;GAC1B;EACD,QAAQ,EAAE;IACRC,UAA+B;IAC/BI,MAA4B;IAC5BC,SAA8B;GAC/B;CACF,CAAC,CAAC;;ACpBH,IAAI,MAAM,gBAAgBV,QAAmB,CAAC;AAC9C,IAAIF,eAAa,SAASM,SAAsB,CAAC;AACjD,IAAI,IAAI,kBAAkBC,IAAiB,CAAC;AAC5C,IAAIa,qBAAmB,GAAGT,YAAgC,CAAC;AAC3D,IAAIU,qBAAmB,GAAGT,YAAgC,CAAC;;;AAG3D,IAAI,eAAe,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC;;;AAGtD,IAAI,eAAe,KAAK,CAAC,CAAC;AAC1B,IAAI,gBAAgB,IAAI,CAAC,CAAC;AAC1B,IAAI,gBAAgB,IAAI,CAAC,CAAC;AAC1B,IAAI,iBAAiB,GAAG,CAAC,CAAC;;;AAG1B,IAAI,aAAa,IAAI,CAAC,CAAC;AACvB,IAAI,cAAc,GAAG,CAAC,CAAC;AACvB,IAAI,aAAa,IAAI,CAAC,CAAC;;;AAGvB,IAAI,qBAAqB,WAAW,qIAAqI,CAAC;AAC1K,IAAI,6BAA6B,GAAG,oBAAoB,CAAC;AACzD,IAAI,uBAAuB,SAAS,aAAa,CAAC;AAClD,IAAI,kBAAkB,cAAc,wBAAwB,CAAC;AAC7D,IAAI,eAAe,iBAAiB,kFAAkF,CAAC;;;AAGvH,SAAS,MAAM,CAAC,CAAC,EAAE;EACjB,OAAO,CAAC,CAAC,KAAK,IAAI,cAAc,CAAC,KAAK,IAAI,SAAS,CAAC;CACrD;;AAED,SAAS,cAAc,CAAC,CAAC,EAAE;EACzB,OAAO,CAAC,CAAC,KAAK,IAAI,eAAe,CAAC,KAAK,IAAI,YAAY,CAAC;CACzD;;AAED,SAAS,YAAY,CAAC,CAAC,EAAE;EACvB,OAAO,CAAC,CAAC,KAAK,IAAI;UACV,CAAC,KAAK,IAAI,YAAY;UACtB,CAAC,KAAK,IAAI,SAAS;UACnB,CAAC,KAAK,IAAI,SAAS,CAAC;CAC7B;;AAED,SAAS,iBAAiB,CAAC,CAAC,EAAE;EAC5B,OAAO,CAAC,KAAK,IAAI;SACV,CAAC,KAAK,IAAI;SACV,CAAC,KAAK,IAAI;SACV,CAAC,KAAK,IAAI;SACV,CAAC,KAAK,IAAI,QAAQ;CAC1B;;AAED,SAAS,WAAW,CAAC,CAAC,EAAE;EACtB,IAAI,EAAE,CAAC;;EAEP,IAAI,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,IAAI,QAAQ,EAAE;IAC5C,OAAO,CAAC,GAAG,IAAI,CAAC;GACjB;;;EAGD,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;;EAEd,IAAI,CAAC,IAAI,WAAW,EAAE,MAAM,EAAE,IAAI,IAAI,QAAQ,EAAE;IAC9C,OAAO,EAAE,GAAG,IAAI,GAAG,EAAE,CAAC;GACvB;;EAED,OAAO,CAAC,CAAC,CAAC;CACX;;AAED,SAAS,aAAa,CAAC,CAAC,EAAE;EACxB,IAAI,CAAC,KAAK,IAAI,SAAS,EAAE,OAAO,CAAC,CAAC,EAAE;EACpC,IAAI,CAAC,KAAK,IAAI,SAAS,EAAE,OAAO,CAAC,CAAC,EAAE;EACpC,IAAI,CAAC,KAAK,IAAI,SAAS,EAAE,OAAO,CAAC,CAAC,EAAE;EACpC,OAAO,CAAC,CAAC;CACV;;AAED,SAAS,eAAe,CAAC,CAAC,EAAE;EAC1B,IAAI,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,IAAI,QAAQ,EAAE;IAC5C,OAAO,CAAC,GAAG,IAAI,CAAC;GACjB;;EAED,OAAO,CAAC,CAAC,CAAC;CACX;;AAED,SAAS,oBAAoB,CAAC,CAAC,EAAE;EAC/B,OAAO,CAAC,CAAC,KAAK,IAAI,WAAW,MAAM;QAC7B,CAAC,CAAC,KAAK,IAAI,WAAW,MAAM;QAC5B,CAAC,CAAC,KAAK,IAAI,WAAW,MAAM;QAC5B,CAAC,CAAC,KAAK,IAAI,WAAW,MAAM;QAC5B,CAAC,CAAC,KAAK,IAAI,aAAa,MAAM;QAC9B,CAAC,CAAC,KAAK,IAAI,WAAW,MAAM;QAC5B,CAAC,CAAC,KAAK,IAAI,WAAW,MAAM;QAC5B,CAAC,CAAC,KAAK,IAAI,WAAW,MAAM;QAC5B,CAAC,CAAC,KAAK,IAAI,WAAW,MAAM;QAC5B,CAAC,CAAC,KAAK,IAAI,WAAW,MAAM;QAC5B,CAAC,CAAC,KAAK,IAAI,eAAe,GAAG;QAC7B,CAAC,CAAC,KAAK,IAAI,WAAW,MAAM;QAC5B,CAAC,CAAC,KAAK,IAAI,WAAW,GAAG;QACzB,CAAC,CAAC,KAAK,IAAI,WAAW,MAAM;QAC5B,CAAC,CAAC,KAAK,IAAI,WAAW,MAAM;QAC5B,CAAC,CAAC,KAAK,IAAI,WAAW,MAAM;QAC5B,CAAC,CAAC,KAAK,IAAI,WAAW,QAAQ;QAC9B,CAAC,CAAC,KAAK,IAAI,WAAW,QAAQ,GAAG,EAAE,CAAC;CAC3C;;AAED,SAAS,iBAAiB,CAAC,CAAC,EAAE;EAC5B,IAAI,CAAC,IAAI,MAAM,EAAE;IACf,OAAO,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;GAC/B;;;EAGD,OAAO,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,KAAK,EAAE,IAAI,MAAM;6BAC/B,CAAC,CAAC,CAAC,GAAG,QAAQ,IAAI,MAAM,IAAI,MAAM,CAAC,CAAC;CAChE;;AAED,IAAI,iBAAiB,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;AACvC,IAAI,eAAe,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;AACrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;EAC5B,iBAAiB,CAAC,CAAC,CAAC,GAAG,oBAAoB,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;EACvD,eAAe,CAAC,CAAC,CAAC,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC;CAC9C;;;AAGD,SAAS,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE;EAC7B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;;EAEnB,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC;EAC9C,IAAI,CAAC,MAAM,MAAM,OAAO,CAAC,QAAQ,CAAC,OAAOS,qBAAmB,CAAC;EAC7D,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC;EAC9C,IAAI,CAAC,MAAM,MAAM,OAAO,CAAC,QAAQ,CAAC,OAAO,KAAK,CAAC;EAC/C,IAAI,CAAC,IAAI,QAAQ,OAAO,CAAC,MAAM,CAAC,SAAS,KAAK,CAAC;EAC/C,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC;;EAE9C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC;EAClD,IAAI,CAAC,OAAO,SAAS,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC;;EAEjD,IAAI,CAAC,MAAM,OAAO,KAAK,CAAC,MAAM,CAAC;EAC/B,IAAI,CAAC,QAAQ,KAAK,CAAC,CAAC;EACpB,IAAI,CAAC,IAAI,SAAS,CAAC,CAAC;EACpB,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC;EACpB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;;EAEpB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;;;;;;;;;;;;CAYrB;;;AAGD,SAAS,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE;EACrC,OAAO,IAAIrB,eAAa;IACtB,OAAO;IACP,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;CAC1G;;AAED,SAAS,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE;EAClC,MAAM,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;CACrC;;AAED,SAAS,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE;EACpC,IAAI,KAAK,CAAC,SAAS,EAAE;IACnB,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;GAC3D;CACF;;;AAGD,IAAI,iBAAiB,GAAG;;EAEtB,IAAI,EAAE,SAAS,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE;;IAEpD,IAAI,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;;IAExB,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI,EAAE;MAC1B,UAAU,CAAC,KAAK,EAAE,gCAAgC,CAAC,CAAC;KACrD;;IAED,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;MACrB,UAAU,CAAC,KAAK,EAAE,6CAA6C,CAAC,CAAC;KAClE;;IAED,KAAK,GAAG,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;;IAE7C,IAAI,KAAK,KAAK,IAAI,EAAE;MAClB,UAAU,CAAC,KAAK,EAAE,2CAA2C,CAAC,CAAC;KAChE;;IAED,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC/B,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;;IAE/B,IAAI,KAAK,KAAK,CAAC,EAAE;MACf,UAAU,CAAC,KAAK,EAAE,2CAA2C,CAAC,CAAC;KAChE;;IAED,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACxB,KAAK,CAAC,eAAe,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;;IAEpC,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,EAAE;MAC9B,YAAY,CAAC,KAAK,EAAE,0CAA0C,CAAC,CAAC;KACjE;GACF;;EAED,GAAG,EAAE,SAAS,kBAAkB,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE;;IAElD,IAAI,MAAM,EAAE,MAAM,CAAC;;IAEnB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;MACrB,UAAU,CAAC,KAAK,EAAE,6CAA6C,CAAC,CAAC;KAClE;;IAED,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;;IAEjB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;MACpC,UAAU,CAAC,KAAK,EAAE,6DAA6D,CAAC,CAAC;KAClF;;IAED,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE;MAC9C,UAAU,CAAC,KAAK,EAAE,6CAA6C,GAAG,MAAM,GAAG,cAAc,CAAC,CAAC;KAC5F;;IAED,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;MACjC,UAAU,CAAC,KAAK,EAAE,8DAA8D,CAAC,CAAC;KACnF;;IAED,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;GAC/B;CACF,CAAC;;;AAGF,SAAS,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE;EACpD,IAAI,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC;;EAE5C,IAAI,KAAK,GAAG,GAAG,EAAE;IACf,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;;IAExC,IAAI,SAAS,EAAE;MACb,KAAK,SAAS,GAAG,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM;WACvC,SAAS,GAAG,OAAO;WACnB,SAAS,IAAI,CAAC,EAAE;QACnB,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,EAAE,UAAU,KAAK,IAAI;eAClB,IAAI,IAAI,UAAU,IAAI,UAAU,IAAI,QAAQ,CAAC,CAAC,EAAE;UACrD,UAAU,CAAC,KAAK,EAAE,+BAA+B,CAAC,CAAC;SACpD;OACF;KACF,MAAM,IAAI,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;MAC9C,UAAU,CAAC,KAAK,EAAE,8CAA8C,CAAC,CAAC;KACnE;;IAED,KAAK,CAAC,MAAM,IAAI,OAAO,CAAC;GACzB;CACF;;AAED,SAAS,aAAa,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,eAAe,EAAE;EAClE,IAAI,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAC;;EAErC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;IAC5B,UAAU,CAAC,KAAK,EAAE,mEAAmE,CAAC,CAAC;GACxF;;EAED,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;EAEjC,KAAK,KAAK,GAAG,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC,MAAM,EAAE,KAAK,GAAG,QAAQ,EAAE,KAAK,IAAI,CAAC,EAAE;IAC1E,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;;IAExB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE;MAC3C,WAAW,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;MAC/B,eAAe,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;KAC7B;GACF;CACF;;AAED,SAAS,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE;EACrF,IAAI,KAAK,EAAE,QAAQ,CAAC;;EAEpB,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;;EAE1B,IAAI,OAAO,KAAK,IAAI,EAAE;IACpB,OAAO,GAAG,EAAE,CAAC;GACd;;EAED,IAAI,MAAM,KAAK,yBAAyB,EAAE;IACxC,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;MAC5B,KAAK,KAAK,GAAG,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC,MAAM,EAAE,KAAK,GAAG,QAAQ,EAAE,KAAK,IAAI,CAAC,EAAE;QACzE,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,eAAe,CAAC,CAAC;OAClE;KACF,MAAM;MACL,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;KAC3D;GACF,MAAM;IACL,IAAI,CAAC,KAAK,CAAC,IAAI;QACX,CAAC,eAAe,CAAC,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC;QAC/C,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE;MAC1C,UAAU,CAAC,KAAK,EAAE,wBAAwB,CAAC,CAAC;KAC7C;IACD,OAAO,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;IAC7B,OAAO,eAAe,CAAC,OAAO,CAAC,CAAC;GACjC;;EAED,OAAO,OAAO,CAAC;CAChB;;AAED,SAAS,aAAa,CAAC,KAAK,EAAE;EAC5B,IAAI,EAAE,CAAC;;EAEP,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;;EAE5C,IAAI,EAAE,KAAK,IAAI,UAAU;IACvB,KAAK,CAAC,QAAQ,EAAE,CAAC;GAClB,MAAM,IAAI,EAAE,KAAK,IAAI,UAAU;IAC9B,KAAK,CAAC,QAAQ,EAAE,CAAC;IACjB,IAAI,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,IAAI,UAAU;MAC3D,KAAK,CAAC,QAAQ,EAAE,CAAC;KAClB;GACF,MAAM;IACL,UAAU,CAAC,KAAK,EAAE,0BAA0B,CAAC,CAAC;GAC/C;;EAED,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC;EAChB,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC;CAClC;;AAED,SAAS,mBAAmB,CAAC,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE;EAC9D,IAAI,UAAU,GAAG,CAAC;MACd,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;;EAEhD,OAAO,EAAE,KAAK,CAAC,EAAE;IACf,OAAO,cAAc,CAAC,EAAE,CAAC,EAAE;MACzB,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;KAC/C;;IAED,IAAI,aAAa,IAAI,EAAE,KAAK,IAAI,SAAS;MACvC,GAAG;QACD,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;OAC/C,QAAQ,EAAE,KAAK,IAAI,YAAY,EAAE,KAAK,IAAI,YAAY,EAAE,KAAK,CAAC,EAAE;KAClE;;IAED,IAAI,MAAM,CAAC,EAAE,CAAC,EAAE;MACd,aAAa,CAAC,KAAK,CAAC,CAAC;;MAErB,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;MAC5C,UAAU,EAAE,CAAC;MACb,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC;;MAErB,OAAO,EAAE,KAAK,IAAI,aAAa;QAC7B,KAAK,CAAC,UAAU,EAAE,CAAC;QACnB,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;OAC/C;KACF,MAAM;MACL,MAAM;KACP;GACF;;EAED,IAAI,WAAW,KAAK,CAAC,CAAC,IAAI,UAAU,KAAK,CAAC,IAAI,KAAK,CAAC,UAAU,GAAG,WAAW,EAAE;IAC5E,YAAY,CAAC,KAAK,EAAE,uBAAuB,CAAC,CAAC;GAC9C;;EAED,OAAO,UAAU,CAAC;CACnB;;AAED,SAAS,qBAAqB,CAAC,KAAK,EAAE;EACpC,IAAI,SAAS,GAAG,KAAK,CAAC,QAAQ;MAC1B,EAAE,CAAC;;EAEP,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;;;;EAIvC,IAAI,CAAC,EAAE,KAAK,IAAI,WAAW,EAAE,KAAK,IAAI;MAClC,EAAE,KAAK,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,GAAG,CAAC,CAAC;MAC5C,EAAE,KAAK,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE;;IAEhD,SAAS,IAAI,CAAC,CAAC;;IAEf,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;;IAEvC,IAAI,EAAE,KAAK,CAAC,IAAI,YAAY,CAAC,EAAE,CAAC,EAAE;MAChC,OAAO,IAAI,CAAC;KACb;GACF;;EAED,OAAO,KAAK,CAAC;CACd;;AAED,SAAS,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE;EACtC,IAAI,KAAK,KAAK,CAAC,EAAE;IACf,KAAK,CAAC,MAAM,IAAI,GAAG,CAAC;GACrB,MAAM,IAAI,KAAK,GAAG,CAAC,EAAE;IACpB,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;GAChD;CACF;;;AAGD,SAAS,eAAe,CAAC,KAAK,EAAE,UAAU,EAAE,oBAAoB,EAAE;EAChE,IAAI,SAAS;MACT,SAAS;MACT,YAAY;MACZ,UAAU;MACV,iBAAiB;MACjB,KAAK;MACL,UAAU;MACV,WAAW;MACX,KAAK,GAAG,KAAK,CAAC,IAAI;MAClB,OAAO,GAAG,KAAK,CAAC,MAAM;MACtB,EAAE,CAAC;;EAEP,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;;EAE5C,IAAI,YAAY,CAAC,EAAE,CAAC;MAChB,iBAAiB,CAAC,EAAE,CAAC;MACrB,EAAE,KAAK,IAAI;MACX,EAAE,KAAK,IAAI;MACX,EAAE,KAAK,IAAI;MACX,EAAE,KAAK,IAAI;MACX,EAAE,KAAK,IAAI;MACX,EAAE,KAAK,IAAI;MACX,EAAE,KAAK,IAAI;MACX,EAAE,KAAK,IAAI;MACX,EAAE,KAAK,IAAI;MACX,EAAE,KAAK,IAAI;MACX,EAAE,KAAK,IAAI,SAAS;IACtB,OAAO,KAAK,CAAC;GACd;;EAED,IAAI,EAAE,KAAK,IAAI,WAAW,EAAE,KAAK,IAAI,SAAS;IAC5C,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;;IAEvD,IAAI,YAAY,CAAC,SAAS,CAAC;QACvB,oBAAoB,IAAI,iBAAiB,CAAC,SAAS,CAAC,EAAE;MACxD,OAAO,KAAK,CAAC;KACd;GACF;;EAED,KAAK,CAAC,IAAI,GAAG,QAAQ,CAAC;EACtB,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC;EAClB,YAAY,GAAG,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC;EAC3C,iBAAiB,GAAG,KAAK,CAAC;;EAE1B,OAAO,EAAE,KAAK,CAAC,EAAE;IACf,IAAI,EAAE,KAAK,IAAI,SAAS;MACtB,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;;MAEvD,IAAI,YAAY,CAAC,SAAS,CAAC;UACvB,oBAAoB,IAAI,iBAAiB,CAAC,SAAS,CAAC,EAAE;QACxD,MAAM;OACP;;KAEF,MAAM,IAAI,EAAE,KAAK,IAAI,SAAS;MAC7B,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;;MAEvD,IAAI,YAAY,CAAC,SAAS,CAAC,EAAE;QAC3B,MAAM;OACP;;KAEF,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,KAAK,CAAC,SAAS,IAAI,qBAAqB,CAAC,KAAK,CAAC;eACnE,oBAAoB,IAAI,iBAAiB,CAAC,EAAE,CAAC,EAAE;MACxD,MAAM;;KAEP,MAAM,IAAI,MAAM,CAAC,EAAE,CAAC,EAAE;MACrB,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;MACnB,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC;MAC7B,WAAW,GAAG,KAAK,CAAC,UAAU,CAAC;MAC/B,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;;MAEtC,IAAI,KAAK,CAAC,UAAU,IAAI,UAAU,EAAE;QAClC,iBAAiB,GAAG,IAAI,CAAC;QACzB,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC5C,SAAS;OACV,MAAM;QACL,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;QAC5B,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC;QACnB,KAAK,CAAC,SAAS,GAAG,UAAU,CAAC;QAC7B,KAAK,CAAC,UAAU,GAAG,WAAW,CAAC;QAC/B,MAAM;OACP;KACF;;IAED,IAAI,iBAAiB,EAAE;MACrB,cAAc,CAAC,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;MACvD,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC;MAC5C,YAAY,GAAG,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC;MAC3C,iBAAiB,GAAG,KAAK,CAAC;KAC3B;;IAED,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE;MACvB,UAAU,GAAG,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC;KACjC;;IAED,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;GAC/C;;EAED,cAAc,CAAC,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;;EAEvD,IAAI,KAAK,CAAC,MAAM,EAAE;IAChB,OAAO,IAAI,CAAC;GACb;;EAED,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC;EACnB,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC;EACvB,OAAO,KAAK,CAAC;CACd;;AAED,SAAS,sBAAsB,CAAC,KAAK,EAAE,UAAU,EAAE;EACjD,IAAI,EAAE;MACF,YAAY,EAAE,UAAU,CAAC;;EAE7B,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;;EAE5C,IAAI,EAAE,KAAK,IAAI,SAAS;IACtB,OAAO,KAAK,CAAC;GACd;;EAED,KAAK,CAAC,IAAI,GAAG,QAAQ,CAAC;EACtB,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC;EAClB,KAAK,CAAC,QAAQ,EAAE,CAAC;EACjB,YAAY,GAAG,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC;;EAE3C,OAAO,CAAC,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;IAC1D,IAAI,EAAE,KAAK,IAAI,SAAS;MACtB,cAAc,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;MAC1D,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;;MAE9C,IAAI,EAAE,KAAK,IAAI,SAAS;QACtB,YAAY,GAAG,KAAK,CAAC,QAAQ,CAAC;QAC9B,KAAK,CAAC,QAAQ,EAAE,CAAC;QACjB,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC;OAC7B,MAAM;QACL,OAAO,IAAI,CAAC;OACb;;KAEF,MAAM,IAAI,MAAM,CAAC,EAAE,CAAC,EAAE;MACrB,cAAc,CAAC,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;MACtD,gBAAgB,CAAC,KAAK,EAAE,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;MACvE,YAAY,GAAG,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC;;KAE5C,MAAM,IAAI,KAAK,CAAC,QAAQ,KAAK,KAAK,CAAC,SAAS,IAAI,qBAAqB,CAAC,KAAK,CAAC,EAAE;MAC7E,UAAU,CAAC,KAAK,EAAE,8DAA8D,CAAC,CAAC;;KAEnF,MAAM;MACL,KAAK,CAAC,QAAQ,EAAE,CAAC;MACjB,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC;KAC7B;GACF;;EAED,UAAU,CAAC,KAAK,EAAE,4DAA4D,CAAC,CAAC;CACjF;;AAED,SAAS,sBAAsB,CAAC,KAAK,EAAE,UAAU,EAAE;EACjD,IAAI,YAAY;MACZ,UAAU;MACV,SAAS;MACT,SAAS;MACT,GAAG;MACH,EAAE,CAAC;;EAEP,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;;EAE5C,IAAI,EAAE,KAAK,IAAI,SAAS;IACtB,OAAO,KAAK,CAAC;GACd;;EAED,KAAK,CAAC,IAAI,GAAG,QAAQ,CAAC;EACtB,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC;EAClB,KAAK,CAAC,QAAQ,EAAE,CAAC;EACjB,YAAY,GAAG,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC;;EAE3C,OAAO,CAAC,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;IAC1D,IAAI,EAAE,KAAK,IAAI,SAAS;MACtB,cAAc,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;MAC1D,KAAK,CAAC,QAAQ,EAAE,CAAC;MACjB,OAAO,IAAI,CAAC;;KAEb,MAAM,IAAI,EAAE,KAAK,IAAI,SAAS;MAC7B,cAAc,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;MAC1D,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;;MAE9C,IAAI,MAAM,CAAC,EAAE,CAAC,EAAE;QACd,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;;;OAG/C,MAAM,IAAI,EAAE,GAAG,GAAG,IAAI,iBAAiB,CAAC,EAAE,CAAC,EAAE;QAC5C,KAAK,CAAC,MAAM,IAAI,eAAe,CAAC,EAAE,CAAC,CAAC;QACpC,KAAK,CAAC,QAAQ,EAAE,CAAC;;OAElB,MAAM,IAAI,CAAC,GAAG,GAAG,aAAa,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;QACxC,SAAS,GAAG,GAAG,CAAC;QAChB,SAAS,GAAG,CAAC,CAAC;;QAEd,OAAO,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,EAAE;UACjC,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;;UAE9C,IAAI,CAAC,GAAG,GAAG,WAAW,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE;YAChC,SAAS,GAAG,CAAC,SAAS,IAAI,CAAC,IAAI,GAAG,CAAC;;WAEpC,MAAM;YACL,UAAU,CAAC,KAAK,EAAE,gCAAgC,CAAC,CAAC;WACrD;SACF;;QAED,KAAK,CAAC,MAAM,IAAI,iBAAiB,CAAC,SAAS,CAAC,CAAC;;QAE7C,KAAK,CAAC,QAAQ,EAAE,CAAC;;OAElB,MAAM;QACL,UAAU,CAAC,KAAK,EAAE,yBAAyB,CAAC,CAAC;OAC9C;;MAED,YAAY,GAAG,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC;;KAE5C,MAAM,IAAI,MAAM,CAAC,EAAE,CAAC,EAAE;MACrB,cAAc,CAAC,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;MACtD,gBAAgB,CAAC,KAAK,EAAE,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;MACvE,YAAY,GAAG,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC;;KAE5C,MAAM,IAAI,KAAK,CAAC,QAAQ,KAAK,KAAK,CAAC,SAAS,IAAI,qBAAqB,CAAC,KAAK,CAAC,EAAE;MAC7E,UAAU,CAAC,KAAK,EAAE,8DAA8D,CAAC,CAAC;;KAEnF,MAAM;MACL,KAAK,CAAC,QAAQ,EAAE,CAAC;MACjB,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC;KAC7B;GACF;;EAED,UAAU,CAAC,KAAK,EAAE,4DAA4D,CAAC,CAAC;CACjF;;AAED,SAAS,kBAAkB,CAAC,KAAK,EAAE,UAAU,EAAE;EAC7C,IAAI,QAAQ,GAAG,IAAI;MACf,KAAK;MACL,IAAI,OAAO,KAAK,CAAC,GAAG;MACpB,OAAO;MACP,OAAO,IAAI,KAAK,CAAC,MAAM;MACvB,SAAS;MACT,UAAU;MACV,MAAM;MACN,cAAc;MACd,SAAS;MACT,eAAe,GAAG,EAAE;MACpB,OAAO;MACP,MAAM;MACN,SAAS;MACT,EAAE,CAAC;;EAEP,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;;EAE5C,IAAI,EAAE,KAAK,IAAI,SAAS;IACtB,UAAU,GAAG,IAAI,CAAC;IAClB,SAAS,GAAG,KAAK,CAAC;IAClB,OAAO,GAAG,EAAE,CAAC;GACd,MAAM,IAAI,EAAE,KAAK,IAAI,SAAS;IAC7B,UAAU,GAAG,IAAI,CAAC;IAClB,SAAS,GAAG,IAAI,CAAC;IACjB,OAAO,GAAG,EAAE,CAAC;GACd,MAAM;IACL,OAAO,KAAK,CAAC;GACd;;EAED,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,EAAE;IACzB,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC;GACzC;;EAED,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;;EAE9C,OAAO,EAAE,KAAK,CAAC,EAAE;IACf,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;;IAE7C,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;;IAE5C,IAAI,EAAE,KAAK,UAAU,EAAE;MACrB,KAAK,CAAC,QAAQ,EAAE,CAAC;MACjB,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC;MACjB,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC;MACvB,KAAK,CAAC,IAAI,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,CAAC;MAChD,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC;MACvB,OAAO,IAAI,CAAC;KACb,MAAM,IAAI,CAAC,QAAQ,EAAE;MACpB,UAAU,CAAC,KAAK,EAAE,8CAA8C,CAAC,CAAC;KACnE;;IAED,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC;IACpC,MAAM,GAAG,cAAc,GAAG,KAAK,CAAC;;IAEhC,IAAI,EAAE,KAAK,IAAI,SAAS;MACtB,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;;MAEvD,IAAI,YAAY,CAAC,SAAS,CAAC,EAAE;QAC3B,MAAM,GAAG,cAAc,GAAG,IAAI,CAAC;QAC/B,KAAK,CAAC,QAAQ,EAAE,CAAC;QACjB,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;OAC9C;KACF;;IAED,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;IACnB,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IAC7D,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC;IACnB,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC;IACvB,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;;IAE7C,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;;IAE5C,IAAI,CAAC,cAAc,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,SAAS;MAClE,MAAM,GAAG,IAAI,CAAC;MACd,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;MAC9C,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;MAC7C,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;MAC7D,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC;KAC1B;;IAED,IAAI,SAAS,EAAE;MACb,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;KAC/E,MAAM,IAAI,MAAM,EAAE;MACjB,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;KAC1F,MAAM;MACL,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACvB;;IAED,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;;IAE7C,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;;IAE5C,IAAI,EAAE,KAAK,IAAI,SAAS;MACtB,QAAQ,GAAG,IAAI,CAAC;MAChB,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;KAC/C,MAAM;MACL,QAAQ,GAAG,KAAK,CAAC;KAClB;GACF;;EAED,UAAU,CAAC,KAAK,EAAE,uDAAuD,CAAC,CAAC;CAC5E;;AAED,SAAS,eAAe,CAAC,KAAK,EAAE,UAAU,EAAE;EAC1C,IAAI,YAAY;MACZ,OAAO;MACP,QAAQ,SAAS,aAAa;MAC9B,cAAc,GAAG,KAAK;MACtB,cAAc,GAAG,KAAK;MACtB,UAAU,OAAO,UAAU;MAC3B,UAAU,OAAO,CAAC;MAClB,cAAc,GAAG,KAAK;MACtB,GAAG;MACH,EAAE,CAAC;;EAEP,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;;EAE5C,IAAI,EAAE,KAAK,IAAI,SAAS;IACtB,OAAO,GAAG,KAAK,CAAC;GACjB,MAAM,IAAI,EAAE,KAAK,IAAI,SAAS;IAC7B,OAAO,GAAG,IAAI,CAAC;GAChB,MAAM;IACL,OAAO,KAAK,CAAC;GACd;;EAED,KAAK,CAAC,IAAI,GAAG,QAAQ,CAAC;EACtB,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC;;EAElB,OAAO,EAAE,KAAK,CAAC,EAAE;IACf,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;;IAE9C,IAAI,EAAE,KAAK,IAAI,WAAW,EAAE,KAAK,IAAI,SAAS;MAC5C,IAAI,aAAa,KAAK,QAAQ,EAAE;QAC9B,QAAQ,GAAG,CAAC,EAAE,KAAK,IAAI,WAAW,aAAa,GAAG,cAAc,CAAC;OAClE,MAAM;QACL,UAAU,CAAC,KAAK,EAAE,sCAAsC,CAAC,CAAC;OAC3D;;KAEF,MAAM,IAAI,CAAC,GAAG,GAAG,eAAe,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE;MAC3C,IAAI,GAAG,KAAK,CAAC,EAAE;QACb,UAAU,CAAC,KAAK,EAAE,8EAA8E,CAAC,CAAC;OACnG,MAAM,IAAI,CAAC,cAAc,EAAE;QAC1B,UAAU,GAAG,UAAU,GAAG,GAAG,GAAG,CAAC,CAAC;QAClC,cAAc,GAAG,IAAI,CAAC;OACvB,MAAM;QACL,UAAU,CAAC,KAAK,EAAE,2CAA2C,CAAC,CAAC;OAChE;;KAEF,MAAM;MACL,MAAM;KACP;GACF;;EAED,IAAI,cAAc,CAAC,EAAE,CAAC,EAAE;IACtB,GAAG,EAAE,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE;WAC9C,cAAc,CAAC,EAAE,CAAC,EAAE;;IAE3B,IAAI,EAAE,KAAK,IAAI,SAAS;MACtB,GAAG,EAAE,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE;aAC9C,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE;KACnC;GACF;;EAED,OAAO,EAAE,KAAK,CAAC,EAAE;IACf,aAAa,CAAC,KAAK,CAAC,CAAC;IACrB,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC;;IAErB,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;;IAE5C,OAAO,CAAC,CAAC,cAAc,IAAI,KAAK,CAAC,UAAU,GAAG,UAAU;YAChD,EAAE,KAAK,IAAI,YAAY,EAAE;MAC/B,KAAK,CAAC,UAAU,EAAE,CAAC;MACnB,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;KAC/C;;IAED,IAAI,CAAC,cAAc,IAAI,KAAK,CAAC,UAAU,GAAG,UAAU,EAAE;MACpD,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;KAC/B;;IAED,IAAI,MAAM,CAAC,EAAE,CAAC,EAAE;MACd,UAAU,EAAE,CAAC;MACb,SAAS;KACV;;;IAGD,IAAI,KAAK,CAAC,UAAU,GAAG,UAAU,EAAE;;;MAGjC,IAAI,QAAQ,KAAK,aAAa,EAAE;QAC9B,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,cAAc,GAAG,CAAC,GAAG,UAAU,GAAG,UAAU,CAAC,CAAC;OACnF,MAAM,IAAI,QAAQ,KAAK,aAAa,EAAE;QACrC,IAAI,cAAc,EAAE;UAClB,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC;SACtB;OACF;;;MAGD,MAAM;KACP;;;IAGD,IAAI,OAAO,EAAE;;;MAGX,IAAI,cAAc,CAAC,EAAE,CAAC,EAAE;QACtB,cAAc,GAAG,IAAI,CAAC;;QAEtB,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,cAAc,GAAG,CAAC,GAAG,UAAU,GAAG,UAAU,CAAC,CAAC;;;OAGnF,MAAM,IAAI,cAAc,EAAE;QACzB,cAAc,GAAG,KAAK,CAAC;QACvB,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC;;;OAGrD,MAAM,IAAI,UAAU,KAAK,CAAC,EAAE;QAC3B,IAAI,cAAc,EAAE;UAClB,KAAK,CAAC,MAAM,IAAI,GAAG,CAAC;SACrB;;;OAGF,MAAM;QACL,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;OACjD;;;KAGF,MAAM;;MAEL,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,cAAc,GAAG,CAAC,GAAG,UAAU,GAAG,UAAU,CAAC,CAAC;KACnF;;IAED,cAAc,GAAG,IAAI,CAAC;IACtB,cAAc,GAAG,IAAI,CAAC;IACtB,UAAU,GAAG,CAAC,CAAC;IACf,YAAY,GAAG,KAAK,CAAC,QAAQ,CAAC;;IAE9B,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE;MAChC,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;KAC/C;;IAED,cAAc,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;GAC5D;;EAED,OAAO,IAAI,CAAC;CACb;;AAED,SAAS,iBAAiB,CAAC,KAAK,EAAE,UAAU,EAAE;EAC5C,IAAI,KAAK;MACL,IAAI,QAAQ,KAAK,CAAC,GAAG;MACrB,OAAO,KAAK,KAAK,CAAC,MAAM;MACxB,OAAO,KAAK,EAAE;MACd,SAAS;MACT,QAAQ,IAAI,KAAK;MACjB,EAAE,CAAC;;EAEP,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,EAAE;IACzB,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC;GACzC;;EAED,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;;EAE5C,OAAO,EAAE,KAAK,CAAC,EAAE;;IAEf,IAAI,EAAE,KAAK,IAAI,SAAS;MACtB,MAAM;KACP;;IAED,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;;IAEvD,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE;MAC5B,MAAM;KACP;;IAED,QAAQ,GAAG,IAAI,CAAC;IAChB,KAAK,CAAC,QAAQ,EAAE,CAAC;;IAEjB,IAAI,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE;MACxC,IAAI,KAAK,CAAC,UAAU,IAAI,UAAU,EAAE;QAClC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnB,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC5C,SAAS;OACV;KACF;;IAED,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;IACnB,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IAC9D,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC3B,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;;IAErC,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;;IAE5C,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,IAAI,KAAK,CAAC,UAAU,GAAG,UAAU,MAAM,EAAE,KAAK,CAAC,CAAC,EAAE;MACzE,UAAU,CAAC,KAAK,EAAE,qCAAqC,CAAC,CAAC;KAC1D,MAAM,IAAI,KAAK,CAAC,UAAU,GAAG,UAAU,EAAE;MACxC,MAAM;KACP;GACF;;EAED,IAAI,QAAQ,EAAE;IACZ,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC;IACjB,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC;IACvB,KAAK,CAAC,IAAI,GAAG,UAAU,CAAC;IACxB,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC;IACvB,OAAO,IAAI,CAAC;GACb;EACD,OAAO,KAAK,CAAC;CACd;;AAED,SAAS,gBAAgB,CAAC,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE;EACvD,IAAI,SAAS;MACT,YAAY;MACZ,KAAK;MACL,IAAI,YAAY,KAAK,CAAC,GAAG;MACzB,OAAO,SAAS,KAAK,CAAC,MAAM;MAC5B,OAAO,SAAS,EAAE;MAClB,eAAe,GAAG,EAAE;MACpB,MAAM,UAAU,IAAI;MACpB,OAAO,SAAS,IAAI;MACpB,SAAS,OAAO,IAAI;MACpB,aAAa,GAAG,KAAK;MACrB,QAAQ,QAAQ,KAAK;MACrB,EAAE,CAAC;;EAEP,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,EAAE;IACzB,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC;GACzC;;EAED,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;;EAE5C,OAAO,EAAE,KAAK,CAAC,EAAE;IACf,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;IACvD,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;;;;;;IAMnB,IAAI,CAAC,EAAE,KAAK,IAAI,WAAW,EAAE,KAAK,IAAI,YAAY,YAAY,CAAC,SAAS,CAAC,EAAE;;MAEzE,IAAI,EAAE,KAAK,IAAI,SAAS;QACtB,IAAI,aAAa,EAAE;UACjB,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;UACzE,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC;SACrC;;QAED,QAAQ,GAAG,IAAI,CAAC;QAChB,aAAa,GAAG,IAAI,CAAC;QACrB,YAAY,GAAG,IAAI,CAAC;;OAErB,MAAM,IAAI,aAAa,EAAE;;QAExB,aAAa,GAAG,KAAK,CAAC;QACtB,YAAY,GAAG,IAAI,CAAC;;OAErB,MAAM;QACL,UAAU,CAAC,KAAK,EAAE,wDAAwD,CAAC,CAAC;OAC7E;;MAED,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC;MACpB,EAAE,GAAG,SAAS,CAAC;;;;;KAKhB,MAAM,IAAI,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE;;MAExE,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE;QACxB,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;;QAE5C,OAAO,cAAc,CAAC,EAAE,CAAC,EAAE;UACzB,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;SAC/C;;QAED,IAAI,EAAE,KAAK,IAAI,SAAS;UACtB,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;;UAE9C,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE;YACrB,UAAU,CAAC,KAAK,EAAE,yFAAyF,CAAC,CAAC;WAC9G;;UAED,IAAI,aAAa,EAAE;YACjB,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;YACzE,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC;WACrC;;UAED,QAAQ,GAAG,IAAI,CAAC;UAChB,aAAa,GAAG,KAAK,CAAC;UACtB,YAAY,GAAG,KAAK,CAAC;UACrB,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC;UACnB,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC;;SAExB,MAAM,IAAI,QAAQ,EAAE;UACnB,UAAU,CAAC,KAAK,EAAE,0DAA0D,CAAC,CAAC;;SAE/E,MAAM;UACL,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC;UACjB,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC;UACvB,OAAO,IAAI,CAAC;SACb;;OAEF,MAAM,IAAI,QAAQ,EAAE;QACnB,UAAU,CAAC,KAAK,EAAE,gFAAgF,CAAC,CAAC;;OAErG,MAAM;QACL,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC;QACjB,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC;QACvB,OAAO,IAAI,CAAC;OACb;;KAEF,MAAM;MACL,MAAM;KACP;;;;;IAKD,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,IAAI,KAAK,CAAC,UAAU,GAAG,UAAU,EAAE;MACzD,IAAI,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,IAAI,EAAE,YAAY,CAAC,EAAE;QACzE,IAAI,aAAa,EAAE;UACjB,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC;SACxB,MAAM;UACL,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC;SAC1B;OACF;;MAED,IAAI,CAAC,aAAa,EAAE;QAClB,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;QAC9E,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC;OACrC;;MAED,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;MACrC,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;KAC7C;;IAED,IAAI,KAAK,CAAC,UAAU,GAAG,UAAU,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE;MAC/C,UAAU,CAAC,KAAK,EAAE,oCAAoC,CAAC,CAAC;KACzD,MAAM,IAAI,KAAK,CAAC,UAAU,GAAG,UAAU,EAAE;MACxC,MAAM;KACP;GACF;;;;;;;EAOD,IAAI,aAAa,EAAE;IACjB,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;GAC1E;;;EAGD,IAAI,QAAQ,EAAE;IACZ,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC;IACjB,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC;IACvB,KAAK,CAAC,IAAI,GAAG,SAAS,CAAC;IACvB,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC;GACxB;;EAED,OAAO,QAAQ,CAAC;CACjB;;AAED,SAAS,eAAe,CAAC,KAAK,EAAE;EAC9B,IAAI,SAAS;MACT,UAAU,GAAG,KAAK;MAClB,OAAO,MAAM,KAAK;MAClB,SAAS;MACT,OAAO;MACP,EAAE,CAAC;;EAEP,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;;EAE5C,IAAI,EAAE,KAAK,IAAI,SAAS,EAAA,OAAO,KAAK,CAAC,EAAA;;EAErC,IAAI,KAAK,CAAC,GAAG,KAAK,IAAI,EAAE;IACtB,UAAU,CAAC,KAAK,EAAE,+BAA+B,CAAC,CAAC;GACpD;;EAED,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;;EAE9C,IAAI,EAAE,KAAK,IAAI,SAAS;IACtB,UAAU,GAAG,IAAI,CAAC;IAClB,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;;GAE/C,MAAM,IAAI,EAAE,KAAK,IAAI,SAAS;IAC7B,OAAO,GAAG,IAAI,CAAC;IACf,SAAS,GAAG,IAAI,CAAC;IACjB,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;;GAE/C,MAAM;IACL,SAAS,GAAG,GAAG,CAAC;GACjB;;EAED,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC;;EAE3B,IAAI,UAAU,EAAE;IACd,GAAG,EAAE,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE;WAC9C,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,IAAI,SAAS;;IAEvC,IAAI,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,MAAM,EAAE;MACjC,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;MACvD,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;KAC/C,MAAM;MACL,UAAU,CAAC,KAAK,EAAE,oDAAoD,CAAC,CAAC;KACzE;GACF,MAAM;IACL,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE;;MAEpC,IAAI,EAAE,KAAK,IAAI,SAAS;QACtB,IAAI,CAAC,OAAO,EAAE;UACZ,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,EAAE,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;;UAEjE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;YACvC,UAAU,CAAC,KAAK,EAAE,iDAAiD,CAAC,CAAC;WACtE;;UAED,OAAO,GAAG,IAAI,CAAC;UACf,SAAS,GAAG,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC;SAChC,MAAM;UACL,UAAU,CAAC,KAAK,EAAE,6CAA6C,CAAC,CAAC;SAClE;OACF;;MAED,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;KAC/C;;IAED,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;;IAEvD,IAAI,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;MACzC,UAAU,CAAC,KAAK,EAAE,qDAAqD,CAAC,CAAC;KAC1E;GACF;;EAED,IAAI,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;IAC7C,UAAU,CAAC,KAAK,EAAE,2CAA2C,GAAG,OAAO,CAAC,CAAC;GAC1E;;EAED,IAAI,UAAU,EAAE;IACd,KAAK,CAAC,GAAG,GAAG,OAAO,CAAC;;GAErB,MAAM,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE;IACxD,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC;;GAE/C,MAAM,IAAI,SAAS,KAAK,GAAG,EAAE;IAC5B,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,OAAO,CAAC;;GAE3B,MAAM,IAAI,SAAS,KAAK,IAAI,EAAE;IAC7B,KAAK,CAAC,GAAG,GAAG,oBAAoB,GAAG,OAAO,CAAC;;GAE5C,MAAM;IACL,UAAU,CAAC,KAAK,EAAE,yBAAyB,GAAG,SAAS,GAAG,GAAG,CAAC,CAAC;GAChE;;EAED,OAAO,IAAI,CAAC;CACb;;AAED,SAAS,kBAAkB,CAAC,KAAK,EAAE;EACjC,IAAI,SAAS;MACT,EAAE,CAAC;;EAEP,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;;EAE5C,IAAI,EAAE,KAAK,IAAI,SAAS,EAAA,OAAO,KAAK,CAAC,EAAA;;EAErC,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,EAAE;IACzB,UAAU,CAAC,KAAK,EAAE,mCAAmC,CAAC,CAAC;GACxD;;EAED,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;EAC9C,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC;;EAE3B,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,EAAE;IAC9D,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;GAC/C;;EAED,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,EAAE;IAChC,UAAU,CAAC,KAAK,EAAE,4DAA4D,CAAC,CAAC;GACjF;;EAED,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;EAC5D,OAAO,IAAI,CAAC;CACb;;AAED,SAAS,SAAS,CAAC,KAAK,EAAE;EACxB,IAAI,SAAS,EAAE,KAAK;MAChB,EAAE,CAAC;;EAEP,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;;EAE5C,IAAI,EAAE,KAAK,IAAI,SAAS,EAAA,OAAO,KAAK,CAAC,EAAA;;EAErC,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;EAC9C,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC;;EAE3B,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,EAAE;IAC9D,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;GAC/C;;EAED,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,EAAE;IAChC,UAAU,CAAC,KAAK,EAAE,2DAA2D,CAAC,CAAC;GAChF;;EAED,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;;EAErD,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;IAC1C,UAAU,CAAC,KAAK,EAAE,sBAAsB,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC;GACzD;;EAED,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;EACtC,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;EACrC,OAAO,IAAI,CAAC;CACb;;AAED,SAAS,WAAW,CAAC,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE;EAChF,IAAI,gBAAgB;MAChB,iBAAiB;MACjB,qBAAqB;MACrB,YAAY,GAAG,CAAC;MAChB,SAAS,IAAI,KAAK;MAClB,UAAU,GAAG,KAAK;MAClB,SAAS;MACT,YAAY;MACZ,IAAI;MACJ,UAAU;MACV,WAAW,CAAC;;EAEhB,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,EAAE;IAC3B,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;GAC/B;;EAED,KAAK,CAAC,GAAG,MAAM,IAAI,CAAC;EACpB,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;EACpB,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC;EACpB,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;;EAEpB,gBAAgB,GAAG,iBAAiB,GAAG,qBAAqB;IAC1D,iBAAiB,KAAK,WAAW;IACjC,gBAAgB,MAAM,WAAW,CAAC;;EAEpC,IAAI,WAAW,EAAE;IACf,IAAI,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE;MACxC,SAAS,GAAG,IAAI,CAAC;;MAEjB,IAAI,KAAK,CAAC,UAAU,GAAG,YAAY,EAAE;QACnC,YAAY,GAAG,CAAC,CAAC;OAClB,MAAM,IAAI,KAAK,CAAC,UAAU,KAAK,YAAY,EAAE;QAC5C,YAAY,GAAG,CAAC,CAAC;OAClB,MAAM,IAAI,KAAK,CAAC,UAAU,GAAG,YAAY,EAAE;QAC1C,YAAY,GAAG,CAAC,CAAC,CAAC;OACnB;KACF;GACF;;EAED,IAAI,YAAY,KAAK,CAAC,EAAE;IACtB,OAAO,eAAe,CAAC,KAAK,CAAC,IAAI,kBAAkB,CAAC,KAAK,CAAC,EAAE;MAC1D,IAAI,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE;QACxC,SAAS,GAAG,IAAI,CAAC;QACjB,qBAAqB,GAAG,gBAAgB,CAAC;;QAEzC,IAAI,KAAK,CAAC,UAAU,GAAG,YAAY,EAAE;UACnC,YAAY,GAAG,CAAC,CAAC;SAClB,MAAM,IAAI,KAAK,CAAC,UAAU,KAAK,YAAY,EAAE;UAC5C,YAAY,GAAG,CAAC,CAAC;SAClB,MAAM,IAAI,KAAK,CAAC,UAAU,GAAG,YAAY,EAAE;UAC1C,YAAY,GAAG,CAAC,CAAC,CAAC;SACnB;OACF,MAAM;QACL,qBAAqB,GAAG,KAAK,CAAC;OAC/B;KACF;GACF;;EAED,IAAI,qBAAqB,EAAE;IACzB,qBAAqB,GAAG,SAAS,IAAI,YAAY,CAAC;GACnD;;EAED,IAAI,YAAY,KAAK,CAAC,IAAI,iBAAiB,KAAK,WAAW,EAAE;IAC3D,IAAI,eAAe,KAAK,WAAW,IAAI,gBAAgB,KAAK,WAAW,EAAE;MACvE,UAAU,GAAG,YAAY,CAAC;KAC3B,MAAM;MACL,UAAU,GAAG,YAAY,GAAG,CAAC,CAAC;KAC/B;;IAED,WAAW,GAAG,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC;;IAE/C,IAAI,YAAY,KAAK,CAAC,EAAE;MACtB,IAAI,qBAAqB;WACpB,iBAAiB,CAAC,KAAK,EAAE,WAAW,CAAC;WACrC,gBAAgB,CAAC,KAAK,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;UAClD,kBAAkB,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE;QACzC,UAAU,GAAG,IAAI,CAAC;OACnB,MAAM;QACL,IAAI,CAAC,iBAAiB,IAAI,eAAe,CAAC,KAAK,EAAE,UAAU,CAAC;YACxD,sBAAsB,CAAC,KAAK,EAAE,UAAU,CAAC;YACzC,sBAAsB,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE;UAC7C,UAAU,GAAG,IAAI,CAAC;;SAEnB,MAAM,IAAI,SAAS,CAAC,KAAK,CAAC,EAAE;UAC3B,UAAU,GAAG,IAAI,CAAC;;UAElB,IAAI,KAAK,CAAC,GAAG,KAAK,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,EAAE;YAC/C,UAAU,CAAC,KAAK,EAAE,2CAA2C,CAAC,CAAC;WAChE;;SAEF,MAAM,IAAI,eAAe,CAAC,KAAK,EAAE,UAAU,EAAE,eAAe,KAAK,WAAW,CAAC,EAAE;UAC9E,UAAU,GAAG,IAAI,CAAC;;UAElB,IAAI,KAAK,CAAC,GAAG,KAAK,IAAI,EAAE;YACtB,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC;WACjB;SACF;;QAED,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,EAAE;UACzB,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;SAC9C;OACF;KACF,MAAM,IAAI,YAAY,KAAK,CAAC,EAAE;;;MAG7B,UAAU,GAAG,qBAAqB,IAAI,iBAAiB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;KAC7E;GACF;;EAED,IAAI,KAAK,CAAC,GAAG,KAAK,IAAI,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;IAC3C,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;MACrB,KAAK,SAAS,GAAG,CAAC,EAAE,YAAY,GAAG,KAAK,CAAC,aAAa,CAAC,MAAM;WACxD,SAAS,GAAG,YAAY;WACxB,SAAS,IAAI,CAAC,EAAE;QACnB,IAAI,GAAG,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;;;;;;QAMtC,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;UAC9B,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;UAC5C,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;UACrB,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,EAAE;YACzB,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;WAC9C;UACD,MAAM;SACP;OACF;KACF,MAAM,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,UAAU,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE;MACnF,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;;MAE1D,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,EAAE;QACrD,UAAU,CAAC,KAAK,EAAE,+BAA+B,GAAG,KAAK,CAAC,GAAG,GAAG,uBAAuB,GAAG,IAAI,CAAC,IAAI,GAAG,UAAU,GAAG,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC;OACtI;;MAED,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;QAC/B,UAAU,CAAC,KAAK,EAAE,+BAA+B,GAAG,KAAK,CAAC,GAAG,GAAG,gBAAgB,CAAC,CAAC;OACnF,MAAM;QACL,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,EAAE;UACzB,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;SAC9C;OACF;KACF,MAAM;MACL,UAAU,CAAC,KAAK,EAAE,gBAAgB,GAAG,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;KACvD;GACF;;EAED,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,EAAE;IAC3B,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;GAChC;EACD,OAAO,KAAK,CAAC,GAAG,KAAK,IAAI,KAAK,KAAK,CAAC,MAAM,KAAK,IAAI,IAAI,UAAU,CAAC;CACnE;;AAED,SAAS,YAAY,CAAC,KAAK,EAAE;EAC3B,IAAI,aAAa,GAAG,KAAK,CAAC,QAAQ;MAC9B,SAAS;MACT,aAAa;MACb,aAAa;MACb,aAAa,GAAG,KAAK;MACrB,EAAE,CAAC;;EAEP,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;EACrB,KAAK,CAAC,eAAe,GAAG,KAAK,CAAC,MAAM,CAAC;EACrC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC;EAClB,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC;;EAErB,OAAO,CAAC,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;IAC1D,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;;IAErC,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;;IAE5C,IAAI,KAAK,CAAC,UAAU,GAAG,CAAC,IAAI,EAAE,KAAK,IAAI,SAAS;MAC9C,MAAM;KACP;;IAED,aAAa,GAAG,IAAI,CAAC;IACrB,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC9C,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC;;IAE3B,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE;MACpC,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;KAC/C;;IAED,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC7D,aAAa,GAAG,EAAE,CAAC;;IAEnB,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;MAC5B,UAAU,CAAC,KAAK,EAAE,8DAA8D,CAAC,CAAC;KACnF;;IAED,OAAO,EAAE,KAAK,CAAC,EAAE;MACf,OAAO,cAAc,CAAC,EAAE,CAAC,EAAE;QACzB,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;OAC/C;;MAED,IAAI,EAAE,KAAK,IAAI,SAAS;QACtB,GAAG,EAAE,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE;eAC9C,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;QAChC,MAAM;OACP;;MAED,IAAI,MAAM,CAAC,EAAE,CAAC,EAAE,EAAA,MAAM,EAAA;;MAEtB,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC;;MAE3B,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE;QACpC,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;OAC/C;;MAED,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;KAClE;;IAED,IAAI,EAAE,KAAK,CAAC,EAAE,EAAA,aAAa,CAAC,KAAK,CAAC,CAAC,EAAA;;IAEnC,IAAI,eAAe,CAAC,IAAI,CAAC,iBAAiB,EAAE,aAAa,CAAC,EAAE;MAC1D,iBAAiB,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC;KACvE,MAAM;MACL,YAAY,CAAC,KAAK,EAAE,8BAA8B,GAAG,aAAa,GAAG,GAAG,CAAC,CAAC;KAC3E;GACF;;EAED,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;;EAErC,IAAI,KAAK,CAAC,UAAU,KAAK,CAAC;MACtB,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,IAAI;MACnD,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,KAAK,IAAI;MACnD,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,KAAK,IAAI,SAAS;IAC9D,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC;IACpB,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;;GAEtC,MAAM,IAAI,aAAa,EAAE;IACxB,UAAU,CAAC,KAAK,EAAE,iCAAiC,CAAC,CAAC;GACtD;;EAED,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,GAAG,CAAC,EAAE,iBAAiB,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;EACzE,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;;EAErC,IAAI,KAAK,CAAC,eAAe;MACrB,6BAA6B,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE;IACxF,YAAY,CAAC,KAAK,EAAE,kDAAkD,CAAC,CAAC;GACzE;;EAED,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;;EAEnC,IAAI,KAAK,CAAC,QAAQ,KAAK,KAAK,CAAC,SAAS,IAAI,qBAAqB,CAAC,KAAK,CAAC,EAAE;;IAEtE,IAAI,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,IAAI,SAAS;MAC1D,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC;MACpB,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;KACtC;IACD,OAAO;GACR;;EAED,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;IACvC,UAAU,CAAC,KAAK,EAAE,uDAAuD,CAAC,CAAC;GAC5E,MAAM;IACL,OAAO;GACR;CACF;;;AAGD,SAAS,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE;EACrC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;EACtB,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;;EAExB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;;;IAGtB,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,IAAI;QAC3C,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,IAAI,UAAU;MACvD,KAAK,IAAI,IAAI,CAAC;KACf;;;IAGD,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE;MAClC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KACxB;GACF;;EAED,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;;;EAGtC,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC;;EAEpB,OAAO,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,IAAI,aAAa;IACjE,KAAK,CAAC,UAAU,IAAI,CAAC,CAAC;IACtB,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC;GACrB;;EAED,OAAO,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;IAC1C,YAAY,CAAC,KAAK,CAAC,CAAC;GACrB;;EAED,OAAO,KAAK,CAAC,SAAS,CAAC;CACxB;;;AAGD,SAASsB,SAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE;EACzC,IAAI,SAAS,GAAG,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC;;EAE7D,KAAK,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;IACrE,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;GAC5B;CACF;;;AAGD,SAASC,MAAI,CAAC,KAAK,EAAE,OAAO,EAAE;EAC5B,IAAI,SAAS,GAAG,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;;EAE9C,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;;IAE1B,OAAO,SAAS,CAAC;GAClB,MAAM,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;IACjC,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;GACrB;EACD,MAAM,IAAIvB,eAAa,CAAC,0DAA0D,CAAC,CAAC;CACrF;;;AAGD,SAASwB,aAAW,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE;EAC3CF,SAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAEF,qBAAmB,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;CACjF;;;AAGD,SAASK,UAAQ,CAAC,KAAK,EAAE,OAAO,EAAE;EAChC,OAAOF,MAAI,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAEH,qBAAmB,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;CAC7E;;;AAGD,gBAA6BE,SAAO,CAAC;AACrC,aAA6BC,MAAI,CAAC;AAClC,oBAA6BC,aAAW,CAAC;AACzC,iBAA6BC,UAAQ,CAAC;;;;;;;;;AC9iDtC,IAAIxB,QAAM,gBAAgBC,QAAmB,CAAC;AAC9C,IAAIF,eAAa,SAASM,SAAsB,CAAC;AACjD,IAAIe,qBAAmB,GAAGd,YAAgC,CAAC;AAC3D,IAAIa,qBAAmB,GAAGT,YAAgC,CAAC;;AAE3D,IAAIK,WAAS,SAAS,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC;AAChD,IAAID,iBAAe,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC;;AAEtD,IAAI,QAAQ,oBAAoB,IAAI,CAAC;AACrC,IAAI,cAAc,cAAc,IAAI,CAAC;AACrC,IAAI,UAAU,kBAAkB,IAAI,CAAC;AACrC,IAAI,gBAAgB,YAAY,IAAI,CAAC;AACrC,IAAI,iBAAiB,WAAW,IAAI,CAAC;AACrC,IAAI,UAAU,kBAAkB,IAAI,CAAC;AACrC,IAAI,YAAY,gBAAgB,IAAI,CAAC;AACrC,IAAI,cAAc,cAAc,IAAI,CAAC;AACrC,IAAI,iBAAiB,WAAW,IAAI,CAAC;AACrC,IAAI,aAAa,eAAe,IAAI,CAAC;AACrC,IAAI,UAAU,kBAAkB,IAAI,CAAC;AACrC,IAAI,UAAU,kBAAkB,IAAI,CAAC;AACrC,IAAI,UAAU,kBAAkB,IAAI,CAAC;AACrC,IAAI,iBAAiB,WAAW,IAAI,CAAC;AACrC,IAAI,aAAa,eAAe,IAAI,CAAC;AACrC,IAAI,kBAAkB,UAAU,IAAI,CAAC;AACrC,IAAI,wBAAwB,IAAI,IAAI,CAAC;AACrC,IAAI,yBAAyB,GAAG,IAAI,CAAC;AACrC,IAAI,iBAAiB,WAAW,IAAI,CAAC;AACrC,IAAI,uBAAuB,KAAK,IAAI,CAAC;AACrC,IAAI,kBAAkB,UAAU,IAAI,CAAC;AACrC,IAAI,wBAAwB,IAAI,IAAI,CAAC;;AAErC,IAAI,gBAAgB,GAAG,EAAE,CAAC;;AAE1B,gBAAgB,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC;AACjC,gBAAgB,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC;AACjC,gBAAgB,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC;AACjC,gBAAgB,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC;AACjC,gBAAgB,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC;AACjC,gBAAgB,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC;AACjC,gBAAgB,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC;AACjC,gBAAgB,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC;AACjC,gBAAgB,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC;AACjC,gBAAgB,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC;AACjC,gBAAgB,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC;AAClC,gBAAgB,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC;AACjC,gBAAgB,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC;AACjC,gBAAgB,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC;AACjC,gBAAgB,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC;;AAEjC,IAAI,0BAA0B,GAAG;EAC/B,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;EAC/C,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;CAChD,CAAC;;AAEF,SAAS,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE;EACpC,IAAI,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC;;EAElD,IAAI,GAAG,KAAK,IAAI,EAAE,EAAA,OAAO,EAAE,CAAC,EAAA;;EAE5B,MAAM,GAAG,EAAE,CAAC;EACZ,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;;EAExB,KAAK,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;IAChE,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;;IAEzB,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE;MAC5B,GAAG,GAAG,oBAAoB,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KAC3C;IACD,IAAI,GAAG,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC;;IAE/C,IAAI,IAAI,IAAIA,iBAAe,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,EAAE;MAC1D,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;KAClC;;IAED,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;GACrB;;EAED,OAAO,MAAM,CAAC;CACf;;AAED,SAAS,SAAS,CAAC,SAAS,EAAE;EAC5B,IAAI,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;;EAE3B,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;;EAE9C,IAAI,SAAS,IAAI,IAAI,EAAE;IACrB,MAAM,GAAG,GAAG,CAAC;IACb,MAAM,GAAG,CAAC,CAAC;GACZ,MAAM,IAAI,SAAS,IAAI,MAAM,EAAE;IAC9B,MAAM,GAAG,GAAG,CAAC;IACb,MAAM,GAAG,CAAC,CAAC;GACZ,MAAM,IAAI,SAAS,IAAI,UAAU,EAAE;IAClC,MAAM,GAAG,GAAG,CAAC;IACb,MAAM,GAAG,CAAC,CAAC;GACZ,MAAM;IACL,MAAM,IAAIf,eAAa,CAAC,+DAA+D,CAAC,CAAC;GAC1F;;EAED,OAAO,IAAI,GAAG,MAAM,GAAGC,QAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;CAC5E;;AAED,SAASyB,OAAK,CAAC,OAAO,EAAE;EACtB,IAAI,CAAC,MAAM,SAAS,OAAO,CAAC,QAAQ,CAAC,IAAIL,qBAAmB,CAAC;EAC7D,IAAI,CAAC,MAAM,SAAS,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;EAC1D,IAAI,CAAC,WAAW,IAAI,OAAO,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC;EACpD,IAAI,CAAC,SAAS,OAAOpB,QAAM,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;EACzF,IAAI,CAAC,QAAQ,OAAO,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC;EAC5E,IAAI,CAAC,QAAQ,OAAO,OAAO,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC;EACjD,IAAI,CAAC,SAAS,MAAM,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;EAC/C,IAAI,CAAC,MAAM,SAAS,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC;EAC/C,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC,IAAI,KAAK,CAAC;;EAErD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC;EAClD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC;;EAElD,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;EAChB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;;EAEjB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;EACrB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;CAC5B;;;AAGD,SAAS,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE;EACpC,IAAI,GAAG,GAAGA,QAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC;MAChC,QAAQ,GAAG,CAAC;MACZ,IAAI,GAAG,CAAC,CAAC;MACT,MAAM,GAAG,EAAE;MACX,IAAI;MACJ,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;;EAE3B,OAAO,QAAQ,GAAG,MAAM,EAAE;IACxB,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACtC,IAAI,IAAI,KAAK,CAAC,CAAC,EAAE;MACf,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;MAC9B,QAAQ,GAAG,MAAM,CAAC;KACnB,MAAM;MACL,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC;MACxC,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC;KACrB;;IAED,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,KAAK,IAAI,EAAE,EAAA,MAAM,IAAI,GAAG,CAAC,EAAA;;IAEhD,MAAM,IAAI,IAAI,CAAC;GAChB;;EAED,OAAO,MAAM,CAAC;CACf;;AAED,SAAS,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE;EACtC,OAAO,IAAI,GAAGA,QAAM,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC;CACxD;;AAED,SAAS,qBAAqB,CAAC,KAAK,EAAE,GAAG,EAAE;EACzC,IAAI,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC;;EAExB,KAAK,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;IAC/E,IAAI,GAAG,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;;IAElC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;MACrB,OAAO,IAAI,CAAC;KACb;GACF;;EAED,OAAO,KAAK,CAAC;CACd;;;AAGD,SAAS,YAAY,CAAC,CAAC,EAAE;EACvB,OAAO,CAAC,KAAK,UAAU,IAAI,CAAC,KAAK,QAAQ,CAAC;CAC3C;;;;;;AAMD,SAAS,WAAW,CAAC,CAAC,EAAE;EACtB,QAAQ,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ;UAC9B,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,KAAK,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,MAAM,CAAC;UAChE,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,KAAK,CAAC,KAAK,MAAM,WAAW;WACzD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,CAAC;CACzC;;;AAGD,SAAS,WAAW,CAAC,CAAC,EAAE;;;EAGtB,OAAO,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,MAAM;;OAEhC,CAAC,KAAK,UAAU;OAChB,CAAC,KAAK,wBAAwB;OAC9B,CAAC,KAAK,yBAAyB;OAC/B,CAAC,KAAK,uBAAuB;OAC7B,CAAC,KAAK,wBAAwB;;OAE9B,CAAC,KAAK,UAAU;OAChB,CAAC,KAAK,UAAU,CAAC;CACvB;;;AAGD,SAAS,gBAAgB,CAAC,CAAC,EAAE;;;EAG3B,OAAO,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,MAAM;OAChC,CAAC,YAAY,CAAC,CAAC,CAAC;;;OAGhB,CAAC,KAAK,UAAU;OAChB,CAAC,KAAK,aAAa;OACnB,CAAC,KAAK,UAAU;OAChB,CAAC,KAAK,UAAU;OAChB,CAAC,KAAK,wBAAwB;OAC9B,CAAC,KAAK,yBAAyB;OAC/B,CAAC,KAAK,uBAAuB;OAC7B,CAAC,KAAK,wBAAwB;;OAE9B,CAAC,KAAK,UAAU;OAChB,CAAC,KAAK,cAAc;OACpB,CAAC,KAAK,aAAa;OACnB,CAAC,KAAK,gBAAgB;OACtB,CAAC,KAAK,kBAAkB;OACxB,CAAC,KAAK,iBAAiB;OACvB,CAAC,KAAK,iBAAiB;OACvB,CAAC,KAAK,iBAAiB;;OAEvB,CAAC,KAAK,YAAY;OAClB,CAAC,KAAK,kBAAkB;OACxB,CAAC,KAAK,iBAAiB,CAAC;CAC9B;;AAED,IAAI,WAAW,KAAK,CAAC;IACjB,YAAY,IAAI,CAAC;IACjB,aAAa,GAAG,CAAC;IACjB,YAAY,IAAI,CAAC;IACjB,YAAY,IAAI,CAAC,CAAC;;;;;;;;;AAStB,SAAS,iBAAiB,CAAC,MAAM,EAAE,cAAc,EAAE,cAAc,EAAE,SAAS,EAAE,iBAAiB,EAAE;EAC/F,IAAI,CAAC,CAAC;EACN,IAAI,IAAI,CAAC;EACT,IAAI,YAAY,GAAG,KAAK,CAAC;EACzB,IAAI,eAAe,GAAG,KAAK,CAAC;EAC5B,IAAI,gBAAgB,GAAG,SAAS,KAAK,CAAC,CAAC,CAAC;EACxC,IAAI,iBAAiB,GAAG,CAAC,CAAC,CAAC;EAC3B,IAAI,KAAK,GAAG,gBAAgB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;aACvC,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;;EAE/D,IAAI,cAAc,EAAE;;;IAGlB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;MAClC,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;MAC5B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;QACtB,OAAO,YAAY,CAAC;OACrB;MACD,KAAK,GAAG,KAAK,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;KACpC;GACF,MAAM;;IAEL,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;MAClC,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;MAC5B,IAAI,IAAI,KAAK,cAAc,EAAE;QAC3B,YAAY,GAAG,IAAI,CAAC;;QAEpB,IAAI,gBAAgB,EAAE;UACpB,eAAe,GAAG,eAAe;;aAE9B,CAAC,GAAG,iBAAiB,GAAG,CAAC,GAAG,SAAS;aACrC,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;UAC1C,iBAAiB,GAAG,CAAC,CAAC;SACvB;OACF,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;QAC7B,OAAO,YAAY,CAAC;OACrB;MACD,KAAK,GAAG,KAAK,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;KACpC;;IAED,eAAe,GAAG,eAAe,KAAK,gBAAgB;OACnD,CAAC,GAAG,iBAAiB,GAAG,CAAC,GAAG,SAAS;OACrC,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;GAC5C;;;;EAID,IAAI,CAAC,YAAY,IAAI,CAAC,eAAe,EAAE;;;IAGrC,OAAO,KAAK,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC;QACtC,WAAW,GAAG,YAAY,CAAC;GAChC;;EAED,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,cAAc,GAAG,CAAC,EAAE;IAC3C,OAAO,YAAY,CAAC;GACrB;;;EAGD,OAAO,eAAe,GAAG,YAAY,GAAG,aAAa,CAAC;CACvD;;;;;;;;AAQD,SAAS,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE;EAChD,KAAK,CAAC,IAAI,IAAI,YAAY;IACxB,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;MACvB,OAAO,IAAI,CAAC;KACb;IACD,IAAI,CAAC,KAAK,CAAC,YAAY;QACnB,0BAA0B,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE;MACrD,OAAO,GAAG,GAAG,MAAM,GAAG,GAAG,CAAC;KAC3B;;IAED,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;;;;;;;;IAQ/C,IAAI,SAAS,GAAG,KAAK,CAAC,SAAS,KAAK,CAAC,CAAC;QAClC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC,CAAC;;;IAG3E,IAAI,cAAc,GAAG,KAAK;;UAEpB,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;IACxD,SAAS,aAAa,CAAC,MAAM,EAAE;MAC7B,OAAO,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;KAC7C;;IAED,QAAQ,iBAAiB,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,aAAa,CAAC;MACvF,KAAK,WAAW;QACd,OAAO,MAAM,CAAC;MAChB,KAAK,YAAY;QACf,OAAO,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC;MAChD,KAAK,aAAa;QAChB,OAAO,GAAG,GAAG,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;YAC1C,iBAAiB,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;MACtD,KAAK,YAAY;QACf,OAAO,GAAG,GAAG,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;YAC1C,iBAAiB,CAAC,YAAY,CAAC,UAAU,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;MAC7E,KAAK,YAAY;QACf,OAAO,GAAG,GAAG,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,GAAG,CAAC;MACrD;QACE,MAAM,IAAID,eAAa,CAAC,wCAAwC,CAAC,CAAC;KACrE;GACF,EAAE,CAAC,CAAC;CACN;;;AAGD,SAAS,WAAW,CAAC,MAAM,EAAE,cAAc,EAAE;EAC3C,IAAI,eAAe,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC;;;EAGxE,IAAI,IAAI,YAAY,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC;EACvD,IAAI,IAAI,GAAG,IAAI,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,IAAI,IAAI,MAAM,KAAK,IAAI,CAAC,CAAC;EAC3E,IAAI,KAAK,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC;;EAE3C,OAAO,eAAe,GAAG,KAAK,GAAG,IAAI,CAAC;CACvC;;;AAGD,SAAS,iBAAiB,CAAC,MAAM,EAAE;EACjC,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;CAC1E;;;;AAID,SAAS,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE;;;;;EAKjC,IAAI,MAAM,GAAG,gBAAgB,CAAC;;;EAG9B,IAAI,MAAM,IAAI,YAAY;IACxB,IAAI,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,GAAG,MAAM,KAAK,CAAC,CAAC,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAChD,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC;IAC1B,OAAO,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC;GACjD,EAAE,CAAC,CAAC;;EAEL,IAAI,gBAAgB,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC;EAC/D,IAAI,YAAY,CAAC;;;EAGjB,IAAI,KAAK,CAAC;EACV,QAAQ,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG;IACpC,IAAI,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACvC,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;IACjC,MAAM,IAAI,MAAM;SACX,CAAC,gBAAgB,IAAI,CAAC,YAAY,IAAI,IAAI,KAAK,EAAE;UAChD,IAAI,GAAG,EAAE,CAAC;QACZ,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC1B,gBAAgB,GAAG,YAAY,CAAC;GACjC;;EAED,OAAO,MAAM,CAAC;CACf;;;;;;AAMD,SAAS,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE;EAC7B,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,EAAA,OAAO,IAAI,CAAC,EAAA;;;EAGhD,IAAI,OAAO,GAAG,QAAQ,CAAC;EACvB,IAAI,KAAK,CAAC;;EAEV,IAAI,KAAK,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC;EACvC,IAAI,MAAM,GAAG,EAAE,CAAC;;;;;;EAMhB,QAAQ,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;IACnC,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC;;IAEnB,IAAI,IAAI,GAAG,KAAK,GAAG,KAAK,EAAE;MACxB,GAAG,GAAG,CAAC,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,IAAI,CAAC;MACnC,MAAM,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;;MAExC,KAAK,GAAG,GAAG,GAAG,CAAC,CAAC;KACjB;IACD,IAAI,GAAG,IAAI,CAAC;GACb;;;;EAID,MAAM,IAAI,IAAI,CAAC;;EAEf,IAAI,IAAI,CAAC,MAAM,GAAG,KAAK,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,EAAE;IAC/C,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;GACjE,MAAM;IACL,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;GAC7B;;EAED,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;CACxB;;;AAGD,SAAS,YAAY,CAAC,MAAM,EAAE;EAC5B,IAAI,MAAM,GAAG,EAAE,CAAC;EAChB,IAAI,IAAI,CAAC;EACT,IAAI,SAAS,CAAC;;EAEd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IACtC,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAC5B,SAAS,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,IAAI,CAAC,SAAS,IAAI,WAAW,CAAC,IAAI,CAAC;QACrC,MAAM,CAAC,CAAC,CAAC;QACT,SAAS,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;GAClC;;EAED,OAAO,MAAM,CAAC;CACf;;AAED,SAAS,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE;EAC/C,IAAI,OAAO,GAAG,EAAE;MACZ,IAAI,MAAM,KAAK,CAAC,GAAG;MACnB,KAAK;MACL,MAAM,CAAC;;EAEX,KAAK,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;;IAElE,IAAI,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE;MACxD,IAAI,KAAK,KAAK,CAAC,EAAE,EAAA,OAAO,IAAI,IAAI,CAAC,EAAA;MACjC,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC;KACvB;GACF;;EAED,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC;EACjB,KAAK,CAAC,IAAI,GAAG,GAAG,GAAG,OAAO,GAAG,GAAG,CAAC;CAClC;;AAED,SAAS,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE;EACzD,IAAI,OAAO,GAAG,EAAE;MACZ,IAAI,MAAM,KAAK,CAAC,GAAG;MACnB,KAAK;MACL,MAAM,CAAC;;EAEX,KAAK,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;;IAElE,IAAI,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE;MAC1D,IAAI,CAAC,OAAO,IAAI,KAAK,KAAK,CAAC,EAAE;QAC3B,OAAO,IAAI,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;OAC3C;MACD,OAAO,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;KAC9B;GACF;;EAED,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC;EACjB,KAAK,CAAC,IAAI,GAAG,OAAO,IAAI,IAAI,CAAC;CAC9B;;AAED,SAAS,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE;EAC9C,IAAI,OAAO,SAAS,EAAE;MAClB,IAAI,YAAY,KAAK,CAAC,GAAG;MACzB,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;MACnC,KAAK;MACL,MAAM;MACN,SAAS;MACT,WAAW;MACX,UAAU,CAAC;;EAEf,KAAK,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;IACzE,UAAU,GAAG,EAAE,CAAC;;IAEhB,IAAI,KAAK,KAAK,CAAC,EAAE,EAAA,UAAU,IAAI,IAAI,CAAC,EAAA;;IAEpC,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IACjC,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;;IAEhC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE;MACrD,SAAS;KACV;;IAED,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,EAAE,EAAA,UAAU,IAAI,IAAI,CAAC,EAAA;;IAEjD,UAAU,IAAI,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;;IAEhC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE;MACvD,SAAS;KACV;;IAED,UAAU,IAAI,KAAK,CAAC,IAAI,CAAC;;;IAGzB,OAAO,IAAI,UAAU,CAAC;GACvB;;EAED,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC;EACjB,KAAK,CAAC,IAAI,GAAG,GAAG,GAAG,OAAO,GAAG,GAAG,CAAC;CAClC;;AAED,SAAS,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE;EACxD,IAAI,OAAO,SAAS,EAAE;MAClB,IAAI,YAAY,KAAK,CAAC,GAAG;MACzB,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;MACnC,KAAK;MACL,MAAM;MACN,SAAS;MACT,WAAW;MACX,YAAY;MACZ,UAAU,CAAC;;;EAGf,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,EAAE;;IAE3B,aAAa,CAAC,IAAI,EAAE,CAAC;GACtB,MAAM,IAAI,OAAO,KAAK,CAAC,QAAQ,KAAK,UAAU,EAAE;;IAE/C,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;GACpC,MAAM,IAAI,KAAK,CAAC,QAAQ,EAAE;;IAEzB,MAAM,IAAIA,eAAa,CAAC,0CAA0C,CAAC,CAAC;GACrE;;EAED,KAAK,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;IACzE,UAAU,GAAG,EAAE,CAAC;;IAEhB,IAAI,CAAC,OAAO,IAAI,KAAK,KAAK,CAAC,EAAE;MAC3B,UAAU,IAAI,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;KAC9C;;IAED,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IACjC,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;;IAEhC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE;MAC7D,SAAS;KACV;;IAED,YAAY,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,IAAI,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG;oBACvC,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;;IAExD,IAAI,YAAY,EAAE;MAChB,IAAI,KAAK,CAAC,IAAI,IAAI,cAAc,KAAK,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;QAC7D,UAAU,IAAI,GAAG,CAAC;OACnB,MAAM;QACL,UAAU,IAAI,IAAI,CAAC;OACpB;KACF;;IAED,UAAU,IAAI,KAAK,CAAC,IAAI,CAAC;;IAEzB,IAAI,YAAY,EAAE;MAChB,UAAU,IAAI,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;KAC9C;;IAED,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY,CAAC,EAAE;MACjE,SAAS;KACV;;IAED,IAAI,KAAK,CAAC,IAAI,IAAI,cAAc,KAAK,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;MAC7D,UAAU,IAAI,GAAG,CAAC;KACnB,MAAM;MACL,UAAU,IAAI,IAAI,CAAC;KACpB;;IAED,UAAU,IAAI,KAAK,CAAC,IAAI,CAAC;;;IAGzB,OAAO,IAAI,UAAU,CAAC;GACvB;;EAED,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC;EACjB,KAAK,CAAC,IAAI,GAAG,OAAO,IAAI,IAAI,CAAC;CAC9B;;AAED,SAAS,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE;EAC3C,IAAI,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC;;EAElD,QAAQ,GAAG,QAAQ,GAAG,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC;;EAEhE,KAAK,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;IACpE,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;;IAEvB,IAAI,CAAC,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,SAAS;SAClC,CAAC,IAAI,CAAC,UAAU,KAAK,CAAC,OAAO,MAAM,KAAK,QAAQ,MAAM,MAAM,YAAY,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;SAC1F,CAAC,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE;;MAEhD,KAAK,CAAC,GAAG,GAAG,QAAQ,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;;MAEtC,IAAI,IAAI,CAAC,SAAS,EAAE;QAClB,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC;;QAEtD,IAAIgB,WAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,mBAAmB,EAAE;UAC1D,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;SACzC,MAAM,IAAID,iBAAe,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE;UACtD,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;SAChD,MAAM;UACL,MAAM,IAAIf,eAAa,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG,8BAA8B,GAAG,KAAK,GAAG,SAAS,CAAC,CAAC;SAC/F;;QAED,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC;OACtB;;MAED,OAAO,IAAI,CAAC;KACb;GACF;;EAED,OAAO,KAAK,CAAC;CACd;;;;;AAKD,SAAS,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE;EAC9D,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC;EACjB,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC;;EAEpB,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE;IACrC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;GACjC;;EAED,IAAI,IAAI,GAAGgB,WAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;;EAEtC,IAAI,KAAK,EAAE;IACT,KAAK,IAAI,KAAK,CAAC,SAAS,GAAG,CAAC,IAAI,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC;GAC1D;;EAED,IAAI,aAAa,GAAG,IAAI,KAAK,iBAAiB,IAAI,IAAI,KAAK,gBAAgB;MACvE,cAAc;MACd,SAAS,CAAC;;EAEd,IAAI,aAAa,EAAE;IACjB,cAAc,GAAG,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAClD,SAAS,GAAG,cAAc,KAAK,CAAC,CAAC,CAAC;GACnC;;EAED,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,IAAI,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,KAAK,SAAS,KAAK,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;IAC/F,OAAO,GAAG,KAAK,CAAC;GACjB;;EAED,IAAI,SAAS,IAAI,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE;IACrD,KAAK,CAAC,IAAI,GAAG,OAAO,GAAG,cAAc,CAAC;GACvC,MAAM;IACL,IAAI,aAAa,IAAI,SAAS,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE;MACvE,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC;KAC7C;IACD,IAAI,IAAI,KAAK,iBAAiB,EAAE;MAC9B,IAAI,KAAK,KAAK,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE;QACnD,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACrD,IAAI,SAAS,EAAE;UACb,KAAK,CAAC,IAAI,GAAG,OAAO,GAAG,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC;SACpD;OACF,MAAM;QACL,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,SAAS,EAAE;UACb,KAAK,CAAC,IAAI,GAAG,OAAO,GAAG,cAAc,GAAG,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC;SAC1D;OACF;KACF,MAAM,IAAI,IAAI,KAAK,gBAAgB,EAAE;MACpC,IAAI,KAAK,KAAK,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE;QACtC,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACtD,IAAI,SAAS,EAAE;UACb,KAAK,CAAC,IAAI,GAAG,OAAO,GAAG,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC;SACpD;OACF,MAAM;QACL,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,SAAS,EAAE;UACb,KAAK,CAAC,IAAI,GAAG,OAAO,GAAG,cAAc,GAAG,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC;SAC1D;OACF;KACF,MAAM,IAAI,IAAI,KAAK,iBAAiB,EAAE;MACrC,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;QACrB,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;OAC9C;KACF,MAAM;MACL,IAAI,KAAK,CAAC,WAAW,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;MACpC,MAAM,IAAIhB,eAAa,CAAC,yCAAyC,GAAG,IAAI,CAAC,CAAC;KAC3E;;IAED,IAAI,KAAK,CAAC,GAAG,KAAK,IAAI,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;MAC3C,KAAK,CAAC,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC,GAAG,GAAG,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;KACnD;GACF;;EAED,OAAO,IAAI,CAAC;CACb;;AAED,SAAS,sBAAsB,CAAC,MAAM,EAAE,KAAK,EAAE;EAC7C,IAAI,OAAO,GAAG,EAAE;MACZ,iBAAiB,GAAG,EAAE;MACtB,KAAK;MACL,MAAM,CAAC;;EAEX,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAAC;;EAEhD,KAAK,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,iBAAiB,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;IAC7E,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;GAC1D;EACD,KAAK,CAAC,cAAc,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;CAC1C;;AAED,SAAS,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,iBAAiB,EAAE;EACvD,IAAI,aAAa;MACb,KAAK;MACL,MAAM,CAAC;;EAEX,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;IACjD,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAChC,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;MAChB,IAAI,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE;QAC3C,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;OAC/B;KACF,MAAM;MACL,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;MAErB,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;QACzB,KAAK,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;UAClE,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAAC;SACxD;OACF,MAAM;QACL,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;QAEpC,KAAK,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;UACzE,WAAW,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAAC;SACvE;OACF;KACF;GACF;CACF;;AAED,SAAS2B,MAAI,CAAC,KAAK,EAAE,OAAO,EAAE;EAC5B,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;;EAExB,IAAI,KAAK,GAAG,IAAID,OAAK,CAAC,OAAO,CAAC,CAAC;;EAE/B,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAA,sBAAsB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,EAAA;;EAExD,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAA,OAAO,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,EAAA;;EAErE,OAAO,EAAE,CAAC;CACX;;AAED,SAASE,UAAQ,CAAC,KAAK,EAAE,OAAO,EAAE;EAChC,OAAOD,MAAI,CAAC,KAAK,EAAE1B,QAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAEmB,qBAAmB,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;CAC7E;;AAED,aAA0BO,MAAI,CAAC;AAC/B,iBAA0BC,UAAQ,CAAC;;;;;;;AC7xBnC,IAAI,MAAM,GAAG1B,QAA2B,CAAC;AACzC,IAAI,MAAM,GAAGI,QAA2B,CAAC;;;AAGzC,SAAS,UAAU,CAAC,IAAI,EAAE;EACxB,OAAO,YAAY;IACjB,MAAM,IAAI,KAAK,CAAC,WAAW,GAAG,IAAI,GAAG,oCAAoC,CAAC,CAAC;GAC5E,CAAC;CACH;;;AAGD,WAAqCC,IAAyB,CAAC;AAC/D,aAAqCI,MAA2B,CAAC;AACjE,sBAAqCC,QAAoC,CAAC;AAC1E,kBAAqCC,IAAgC,CAAC;AACtE,kBAAqCI,IAAgC,CAAC;AACtE,0BAAqCC,YAAwC,CAAC;AAC9E,0BAAqCW,YAAwC,CAAC;AAC9E,WAAqC,MAAM,CAAC,IAAI,CAAC;AACjD,cAAqC,MAAM,CAAC,OAAO,CAAC;AACpD,eAAqC,MAAM,CAAC,QAAQ,CAAC;AACrD,kBAAqC,MAAM,CAAC,WAAW,CAAC;AACxD,WAAqC,MAAM,CAAC,IAAI,CAAC;AACjD,eAAqC,MAAM,CAAC,QAAQ,CAAC;AACrD,oBAAqCC,SAA8B,CAAC;;;AAGpE,qBAAgClB,QAAoC,CAAC;AACrE,kBAAgCM,YAAwC,CAAC;AACzE,qBAAgCW,YAAwC,CAAC;;;AAGzE,WAAgC,UAAU,CAAC,MAAM,CAAC,CAAC;AACnD,YAAgC,UAAU,CAAC,OAAO,CAAC,CAAC;AACpD,cAAgC,UAAU,CAAC,SAAS,CAAC,CAAC;AACtD,qBAAgC,UAAU,CAAC,gBAAgB,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;ACnC7D,IAAI,IAAI,GAAG3B,MAA2B,CAAC;;;AAGvC,SAAc,GAAG,IAAI,CAAC;;ACJtB,kBAAe,SAAS,GAAG,EAAE,IAAI,EAAE;EACjCJ,IAAI,EAAE,GAAG,GAAG,CAAC,aAAa,CAAC,kCAAkC,CAAC,CAAC;;;EAG/D,IAAI,EAAE,EAAE;IACNA,IAAI,IAAI,GAAG,EAAE,CAAC,WAAW,CAAC;IAC1BA,IAAI,SAAS,GAAGiC,KAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;IAExC,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;IAC7B,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC;IACzC,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,UAAC,MAAM,EAAE,CAAC,EAAE;MAC/CjC,IAAI,CAAC,GAAG,EAAE,CAAC;MACXA,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;MAClCA,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;MAC5B,CAAC,CAAC,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;MACzD,CAAC,CAAC,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;MACpC,CAAC,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;MAC7B,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE;QAC5BA,IAAI,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5D,CAAC,CAAC,WAAW,GAAG,WAAW,CAAC;QAC5B,CAAC,CAAC,cAAc,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;OAC3D;MACD,OAAO,CAAC,CAAC;KACV,CAAC,CAAC;GACJ;;CAEF,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;ACLD,CAAC,SAAS,OAAO,EAAE;;IAEf,SAAS,YAAY,GAAG;;QAEpB,IAAI,CAAC,MAAM,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QACnG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACpC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;QACb,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,OAAO,GAAG,IAAI,KAAK,EAAE,CAAC;;QAE3B,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;;QAEvB,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,EAAE;YACxB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;SAClB,CAAC;;QAEF,IAAI,CAAC,UAAU,GAAG,WAAW;YACzB,OAAO,IAAI,CAAC,OAAO,CAAC;SACvB,CAAC;;QAEF,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC,EAAE;YAC5B,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE;SAC5D,CAAC;;QAEF,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,EAAE,aAAa,EAAE;YACpC,IAAI,aAAa,IAAI,SAAS,IAAI,aAAa,IAAI,IAAI;gBACnD,EAAA,aAAa,GAAG,IAAI,CAAC,EAAA;YACzB,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;YACnC,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;gBAC1D,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC;aACxB,MAAM;gBACH,MAAM,2BAA2B,GAAG,CAAC,GAAG,UAAU;0BACxC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aAC5C,AAAC;YACF,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;SACtC,CAAC;;QAEF,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,EAAE,aAAa,EAAE;YACvC,IAAI,aAAa,IAAI,SAAS,IAAI,aAAa,IAAI,IAAI;gBACnD,EAAA,aAAa,GAAG,IAAI,CAAC,EAAA;YACzB,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;YACnC,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;gBAC1D,OAAO,IAAI,CAAC;aACf,MAAM;gBACH,OAAO,KAAK,CAAC;aAChB,AAAC;YACF,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;SACtC,CAAC;;;QAGF,IAAI,CAAC,OAAO,GAAG,WAAW;;;YACtB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE;gBAChEM,MAAI,CAAC,GAAG,EAAE,CAAC;aACd,AAAC;;YAEF,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE;gBAC7B,OAAO,IAAI,CAAC;aACf,AAAC;YACF,OAAO,KAAK,CAAC;SAChB,CAAC;;QAEF,IAAI,CAAC,cAAc,GAAG,SAAS,aAAa,EAAE;;;YAC1C,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;gBAC5CA,MAAI,CAAC,GAAG,EAAE,CAAC;aACd,AAAC;YACF,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,aAAa,IAAI,IAAI,EAAE;gBACtD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE;oBACjCA,MAAI,CAAC,GAAG,EAAE,CAAC;iBACd,AAAC;gBACF,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;aACtC,AAAC;SACL,CAAC;;QAEF,IAAI,CAAC,YAAY,GAAG,WAAW;;;YAC3B,IAAI,UAAU,GAAG,CAAC,CAAC;YACnB,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACvB,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;YACrB,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,OAAO,IAAI,EAAE;gBACT,IAAI,CAAC,OAAO,EAAE;oBACV,IAAIA,MAAI,CAAC,KAAK,CAACA,MAAI,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE;wBAC7B,IAAI,UAAU,GAAG,CAAC,EAAE;4BAChB,UAAU,EAAE,CAAC;yBAChB,MAAM;4BACH,IAAI,GAAG,GAAGA,MAAI,CAAC,GAAG,CAAC;4BACnBA,MAAI,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;4BACvB,OAAOA,MAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;yBAC3C,AAAC;qBACL,MAAM,IAAIA,MAAI,CAAC,KAAK,CAACA,MAAI,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE;wBACpC,UAAU,EAAE,CAAC;qBAChB,MAAM,IAAIA,MAAI,CAAC,GAAG,IAAIA,MAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;wBAC1C,MAAM,oBAAoB,CAAC;qBAC9B,AAAC;iBACL,AAAC;gBACF,IAAIA,MAAI,CAAC,KAAK,CAACA,MAAI,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK;oBAChD,EAAA,OAAO,GAAG,IAAI,CAAC,EAAA;;oBAEf,EAAA,OAAO,GAAG,KAAK,CAAC,EAAA;gBACpBA,MAAI,CAAC,GAAG,EAAE,CAAC;aACd,AAAC;SACL,CAAC;;QAEF,IAAI,CAAC,aAAa,GAAG,WAAW;;;YAC5B,IAAI,GAAG,GAAG,EAAE,CAAC;YACb,IAAI,QAAQ,GAAG,CAAC,CAAC;YACjB,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,QAAQ,IAAI,CAAC,CAAC,EAAE;gBAClD,GAAG,GAAG,GAAG,GAAGA,MAAI,CAAC,KAAK,CAACA,MAAI,CAAC,GAAG,CAAC,CAAC;gBACjC,IAAIA,MAAI,CAAC,KAAK,CAACA,MAAI,CAAC,GAAG,CAAC,IAAI,GAAG;oBAC3B,EAAA,QAAQ,EAAE,CAAC,EAAA;gBACf,IAAIA,MAAI,CAAC,KAAK,CAACA,MAAI,CAAC,GAAG,CAAC,IAAI,GAAG;oBAC3B,EAAA,QAAQ,EAAE,CAAC,EAAA;gBACf,IAAIA,MAAI,CAAC,GAAG,IAAIA,MAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;oBACnC,MAAM,qBAAqB,GAAGA,MAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;iBAC7D,AAAC;gBACFA,MAAI,CAAC,GAAG,EAAE,CAAC;aACd,AAAC;YACF,OAAO,GAAG,CAAC;SACd,CAAC;;QAEF,IAAI,CAAC,YAAY,GAAG,WAAW;;;YAC3B,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACvB,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;YACrB,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,OAAO,IAAI,EAAE;gBACT,IAAI,CAAC,OAAO,EAAE;oBACV,IAAIA,MAAI,CAAC,KAAK,CAACA,MAAI,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE;wBAC7B,IAAI,GAAG,GAAGA,MAAI,CAAC,GAAG,CAAC;wBACnBA,MAAI,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;wBACvB,OAAOA,MAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;qBAC3C,MAAM,IAAIA,MAAI,CAAC,GAAG,IAAIA,MAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;wBAC1C,MAAM,qBAAqB,GAAGA,MAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;qBAC7D,AAAC;iBACL;gBACD,IAAIA,MAAI,CAAC,KAAK,CAACA,MAAI,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK;oBAChD,EAAA,OAAO,GAAG,IAAI,CAAC,EAAA;;oBAEf,EAAA,OAAO,GAAG,KAAK,CAAC,EAAA;gBACpBA,MAAI,CAAC,GAAG,EAAE,CAAC;aACd,AAAC;SACL,CAAC;;QAEF,IAAI,CAAC,YAAY,GAAG,WAAW;YAC3B,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;YACrB,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;gBACpB,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;aAC9B,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;gBAC3B,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;aAC9B,MAAM;gBACH,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBACnB,IAAI,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC;oBACnB,EAAA,OAAO,CAAC,CAAC,EAAA;qBACR,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC;oBAC9C,EAAA,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC,EAAA;;oBAEvB,EAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,YAAY,GAAG,CAAC,CAAC,EAAA;;aAEhF,AAAC;SACL,CAAC;;QAEF,IAAI,CAAC,KAAK,GAAG,WAAW;;;YACpB,IAAI,MAAM,GAAG,EAAE,CAAC;YAChB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;YACjC,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;gBACvBA,MAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAChB,MAAM,CAAC,IAAI,CAACA,MAAI,CAAC,YAAY,EAAE,CAAC,CAAC;aACpC,AAAC;YACF,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SAC1B,CAAC;;QAEF,IAAI,CAAC,GAAG,GAAG,WAAW;;;YAClB,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;YACrB,OAAO,IAAI,EAAE;gBACT,IAAIA,MAAI,CAAC,GAAG,IAAIA,MAAI,CAAC,KAAK,CAAC,MAAM,EAAE;oBAC/B,MAAM,aAAa,CAAC;iBACvB,AAAC;;;gBAGF,IAAIA,MAAI,CAAC,MAAM,CAAC,OAAO,CAACA,MAAI,CAAC,KAAK,CAACA,MAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE;oBAChD,OAAOA,MAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,EAAEA,MAAI,CAAC,GAAG,CAAC,CAAC;iBAChD,MAAM;oBACHA,MAAI,CAAC,GAAG,EAAE,CAAC;;iBAEd,AAAC;aACL,AAAC;SACL,CAAC;;QAEF,IAAI,CAAC,gBAAgB,GAAG,WAAW;YAC/B,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACrB,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;gBACpB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAChB,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;gBACvB,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;aACvB,MAAM;gBACH,MAAM,4CAA4C;0BACxC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aAC5C,AAAC;SACL,CAAC;;QAEF,IAAI,CAAC,cAAc,GAAG,WAAW;;;YAC7B,IAAI,EAAE,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACjC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;YACpC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;YAC9C,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;gBACvBA,MAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;;gBAEhB,IAAIA,MAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;oBACpB,MAAM;iBACT;gBACD,AAAC;gBACD,EAAE,GAAGA,MAAI,CAAC,gBAAgB,EAAE,CAAC;gBAC7BA,MAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;aACjD,AAAC;SACL,CAAC;;QAEF,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,EAAE;YAC1B,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;YACvB,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC9C,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAChD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAChB,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SACxC,CAAC;;QAEF,IAAI,CAAC,SAAS,GAAG,WAAW;YACxB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAChB,OAAO,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;SAC3B,CAAC;;QAEF,IAAI,CAAC,QAAQ,GAAG,WAAW;YACvB,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;YACvB,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,GAAG,UAAU,CAAC;YAC5C,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YAClD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SACxC,CAAC;;QAEF,IAAI,CAAC,OAAO,GAAG,WAAW;YACtB,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;YACvB,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,GAAG,SAAS,CAAC;YAC3C,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YAClD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SACxC,CAAC;;QAEF,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,EAAE;YACrB,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;SACtB,CAAC;;QAEF,IAAI,CAAC,MAAM,GAAG,WAAW;;;YACrB,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE;gBACnB,IAAI,CAAC,GAAGA,MAAI,CAAC,SAAS,EAAE,CAAC;gBACzBA,MAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAChB,IAAI,CAAC,IAAI,SAAS,EAAE;oBAChBA,MAAI,CAAC,MAAM,EAAE,CAAC;iBACjB,MAAM,IAAI,CAAC,IAAI,WAAW,EAAE;oBACzBA,MAAI,CAAC,QAAQ,EAAE,CAAC;iBACnB,MAAM,IAAI,CAAC,IAAI,UAAU,EAAE;oBACxBA,MAAI,CAAC,OAAO,EAAE,CAAC;iBAClB,MAAM;oBACHA,MAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;iBACjB;gBACDA,MAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;aACnB,AAAC;SACL,CAAC;KACL,AAAC;;IAEF,OAAO,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE;QAC9B,IAAI,CAAC,GAAG,IAAI,YAAY,EAAE,CAAC;QAC3B,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACnB,CAAC,CAAC,MAAM,EAAE,CAAC;QACX,OAAO,CAAC,CAAC,OAAO,CAAC;KACpB,CAAC;;;IAGF,OAAO,CAAC,QAAQ,GAAG,SAAS,IAAI,EAAE;QAC9B,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,CAAC,IAAI,IAAI,EAAE;YACjB,GAAG,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC/B,GAAG,IAAI,GAAG,CAAC;YACX,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW;gBACnB,EAAA,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG,IAAI,CAAC,EAAA;YACtC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK;gBACb,EAAA,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,EAAA;YAC1B,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE;gBACnB,IAAI,IAAI,GAAG,EAAE,CAAC;gBACd,KAAK,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE;oBAC/B,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC;wBAChB,EAAA,IAAI,IAAI,IAAI,CAAC,EAAA;oBACjB,IAAI,IAAI,GAAG,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;iBACtD;gBACD,GAAG,IAAI,IAAI,CAAC;aACf;YACD,GAAG,IAAI,OAAO,CAAC;SAClB;QACD,OAAO,GAAG,CAAC;;KAEd,CAAC;;CAEL,EAAE,AAA4D,OAAO,CAAC,CAAC;;;;;AC7TxE,mBAAe,SAAS,GAAG,EAAE,IAAI,EAAE;EACjCN,IAAI,EAAE,GAAG,GAAG,CAAC,aAAa,CAAC,kCAAkC,CAAC,CAAC;;;EAG/D,IAAI,EAAE,EAAE;IACNA,IAAI,MAAM,GAAG,EAAE,CAAC,WAAW,CAAC;IAC5BA,IAAI,YAAY,GAAG,EAAE,CAAC;IACtB,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,UAAA,CAAC,EAAC;MACnC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC;MAC1C,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,SAAS,CAAC;KAChD,CAAC,CAAC;;IAEHA,IAAI,SAAS,GAAG,EAAE,CAAC;IACnB,IAAI,QAAQ,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC;IAC/D,QAAQ,CAAC,OAAO,CAAC,UAAA,EAAE,EAAC;MAClBA,IAAI,YAAY,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;MACrD,YAAY,CAAC,OAAO,CAAC,UAAA,GAAG,EAAC;QACvB,IAAI,YAAY,CAAC,GAAG,CAAC,EAAE;UACrB,SAAS,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;SACpC,MAAM;UACL,OAAO,CAAC,IAAI,CAAC,mCAAmC,GAAG,GAAG,CAAC,CAAC;SACzD;OACF,CAAC,CAAC;KACJ,CAAC,CAAC;IACH,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;GAC5B;CACF,CAAA;;AC5BD,WAAe,SAAS,GAAG,EAAE,IAAI,EAAE;EACjCA,IAAI,IAAI,GAAG,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;;EAErC,UAAU,CAAC,IAAI,EAAE,CAAA,8RAIa,IAAE,IAAI,CAAC,GAAG,CAAA,qBAC/B,IAAE,IAAI,CAAC,KAAK,CAAA,iBACrB,CAAC,CAAC,CAAC;;EAEH,UAAU,CAAC,IAAI,EAAE,CAAA,4HAEsD,IAAE,IAAI,CAAC,aAAa,CAAA,wFACtB,IAAE,IAAI,CAAC,WAAW,CAAA,cACvF,CAAC,CAAC,CAAC;EACH,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAC,CAAC,EAAE;IACvB,UAAU,CAAC,IAAI,EAAE,CAAA,sDAC0B,IAAE,CAAC,CAAC,SAAS,CAAA,MAAE,IAAE,CAAC,CAAC,QAAQ,CAAA,UAAK,CAAC,CAAC,CAAA;GAC9E,CAAC,CAAC;;EAEH,UAAU,CAAC,IAAI,EAAE,CAAA,kLAGoB,IAAE,IAAI,CAAC,KAAK,CAAA,2DACN,IAAE,IAAI,CAAC,WAAW,CAAA,kDAC1B,IAAE,IAAI,CAAC,GAAG,CAAA,qDACR,IAAE,IAAI,CAAC,GAAG,CAAA,8IAG/C,CAAC,CAAC,CAAC;;EAEH,UAAU,CAAC,IAAI,EAAE,CAAA,4KAGqB,IAAE,IAAI,CAAC,KAAK,CAAA,2DACN,IAAE,IAAI,CAAC,WAAW,CAAA,mDAC1B,IAAE,IAAI,CAAC,GAAG,CAAA,qDACR,IAAE,IAAI,CAAC,GAAG,CAAA,6IAGhD,CAAC,CAAC,CAAC;;EAEH,UAAU,CAAC,IAAI,EAAE,CAAA,kIAEsB,IAAE,IAAI,CAAC,KAAK,CAAA,iEACD,IAAE,IAAI,CAAC,aAAa,CAAA,MAAE,IAAE,IAAI,CAAC,oBAAoB,CAAA,MAAE,IAAE,IAAI,CAAC,kBAAkB,CAAA,kEAC3E,IAAE,IAAI,CAAC,GAAG,CAAA,uDACrB,IAAE,IAAI,CAAC,MAAM,CAAA,sDACd,IAAE,IAAI,CAAC,KAAK,CAAA,8DACJ,IAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAA,+DAClB,IAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAA,4DAC7B,IAAE,IAAI,CAAC,SAAS,CAAA,qDACvB,IAAE,IAAI,CAAC,GAAG,CAAA,qDACT,IAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAA,0DACd,IAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAA,aACnE,CAAC,CAAC,CAAC;EACH,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAC,CAAC,EAAE;IACvB,UAAU,CAAC,IAAI,EAAE,CAAA,mDACuB,IAAE,CAAC,CAAC,QAAQ,CAAA,OAAG,IAAE,CAAC,CAAC,SAAS,CAAA,uEAChB,IAAE,CAAC,CAAC,WAAW,CAAA,eACnE,CAAC,CAAC,CAAA;GACH,CAAC,CAAC;;EAEH,IAAI,IAAI,CAAC,SAAS,EAAE;IAClBA,IAAI,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC/C,YAAY,CAAC,OAAO,CAAC,UAAA,GAAG,EAAC;MACvB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;MACjB,UAAU,CAAC,IAAI,EAAE,CAAA,wDAC0B,IAAE,qBAAqB,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAA,iBACvF,CAAC,CAAC,CAAC;KACJ,CAAC,CAAC;GACJ;CACF,CAAA;;;AAGD,SAAS,UAAU,CAAC,EAAE,EAAE,IAAI,EAAE;EAC5B,EAAE,CAAC,SAAS,IAAI,IAAI,CAAC;CACtB;;AAED,SAAS,qBAAqB,CAAC,GAAG,CAAC;EACjC,IAAI,OAAO,GAAG,iBAAgB,IAAE,GAAG,CAAC,KAAK,CAAA,MAAE,CAAE;EAC7C,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,UAAA,MAAM,EAAC;IACvC,OAAO,IAAI,kBAAiB,IAAE,MAAM,CAAC,IAAI,EAAE,CAAA,MAAE,CAAE;GAChD,CAAC,CAAC;EACH,IAAI,SAAS,IAAI,GAAG,CAAC;IACnB,OAAO,IAAI,yBAAwB,IAAE,GAAG,CAAC,OAAO,CAAA,MAAE,CAAE;GACrD;EACD,IAAI,QAAQ,IAAI,GAAG,EAAE;MACjB,OAAO,IAAI,kBAAiB,IAAE,GAAG,CAAC,MAAM,CAAA,MAAE,CAAE;GAC/C;EACD,IAAI,OAAO,IAAI,GAAG,IAAI,QAAQ,IAAI,GAAG,CAAC;MAClC,OAAO,IAAI,kBAAiB,IAAE,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,MAAM,CAAA,MAAE,CAAE;GAC5D;;;EAGD,OAAO,OAAO,CAAC;CAChB;;;;AC/FDkC,IAAMC,MAAI,GAAG,s1BAiDT,GAAE,IAAI,qEAMV,CAAA;;AAEA,aAAe,SAAS,GAAG,EAAE,IAAI,EAAE;EACjC,GAAG,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,SAAS,GAAGA,MAAI,CAAC;CACjD,CAAA;;AC7DDD,IAAMC,MAAI,GAAG,k1DAwDb,CAAE;;;;;;;;;;;;;;;;;;AAkBF,eAAe,SAAS,GAAG,EAAE,IAAI,EAAE;EACjCnC,IAAI,EAAE,GAAG,GAAG,CAAC,aAAa,CAAC,aAAa,CAAC,CAAA;EACzC,IAAI,EAAE,EAAE,EAAA,EAAE,CAAC,SAAS,GAAGmC,MAAI,CAAC,EAAA;CAC7B,CAAA;;AC3EDnC,IAAImC,MAAI,GAAG,koBA+BP,GAAE,IAAI,2FAIV,CAAE;;AAEF,aAAe,SAAS,GAAG,EAAE,IAAI,EAAE;EACjCnC,IAAI,EAAE,GAAG,GAAG,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;EACxC,GAAG,EAAE,EAAE,EAAA,EAAE,CAAC,SAAS,GAAGmC,MAAI,CAAC,EAAA;CAC5B,CAAA;;AC1CD,eAAe,SAAS,GAAG,EAAE,IAAI,EAAE;EACjCnC,IAAI,SAAS,GAAG,EAAE,CAAC;EACnB,IAAI,IAAI,CAAC,SAAS,EAAE;IAClB,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,UAAA,CAAC,EAAC,SAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAA,CAAC,CAAC;IACpE,SAAS,CAAC,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC,EAAE;MACpB,OAAO,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;KACzC,CAAC,CAAC;GACJ;;EAED,IAAI,QAAQ,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC;EAC/D,QAAQ,CAAC,OAAO,CAAC,UAAA,EAAE,EAAC;IAClB,IAAI,IAAI,GAAG,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACrC,IAAI,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnD,EAAE,CAAC,SAAS,GAAG,WAAW,CAAC;GAC5B,CAAC,CAAC;;EAEHA,IAAI,KAAK,GAAG,GAAG,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;EACjD,IAAI,KAAK,EAAE;IACTA,IAAI,EAAE,GAAG,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IACjC,SAAS,CAAC,OAAO,CAAC,UAAA,QAAQ,EAAC;MACzBA,IAAI,EAAE,GAAG,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;MACjC,EAAE,CAAC,WAAW,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;MAC7C,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;KACpB,CAAC,CAAA;IACF,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;GACvB;;EAED,SAAS,WAAW,CAAC,GAAG,CAAC;IACvB,IAAI,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC;MACxB,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;MAC9B,IAAI,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;MACtC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,UAAA,IAAI,EAAC,SAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,GAAA,CAAC,CAAA;MACpD,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;MACpB,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,EAAA,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,EAAA;MACrD,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,EAAA,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,EAAA;MACxE,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,EAAA,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,YAAY,GAAG,IAAI,CAAC,EAAA;KAC9D,MAAM;MACL,OAAO,GAAG,CAAC;KACZ;GACF;;EAED,SAAS,iBAAiB,CAAC,GAAG,CAAC;IAC7B,IAAI,GAAG,CAAC;MACN,IAAI,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;MACtC,IAAI,IAAI,GAAG,EAAE,CAAC;MACdA,IAAI,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,UAAA,IAAI,EAAC;QAChC,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACrC,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAChC,IAAI,MAAM,IAAI,SAAS,EAAE;UACvB,IAAI,QAAQ,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,UAAA,CAAC,EAAC,SAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAA,CAAC,CAAC;UAC9D,OAAO,IAAI,GAAG,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;SAC7C;QACD,OAAO,IAAI,CAAC;OACb,CAAC,CAAC;MACH,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;QACpB,IAAI,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzD,IAAI,IAAI,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;OAChD,MAAM;QACL,IAAI,IAAI,YAAY,CAAC,CAAC,CAAC,CAAA;OACxB;MACD,IAAI,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,IAAI,CAAA;MAC9B,IAAI,IAAI,GAAG,CAAC,KAAK,GAAG,IAAI,CAAA;MACxB,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,CAAA;MAC5C,IAAI,QAAQ,IAAI,GAAG,CAAC;QAClB,IAAI,KAAK,GAAG,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,MAAM,CAAC;QACpC,KAAK,GAAG,CAAC,KAAK,IAAI,SAAS,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC;QACjD,IAAI,IAAI,QAAQ,GAAG,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC;OACvC;MACD,IAAI,OAAO,IAAI,GAAG,CAAC;QACjB,IAAI,IAAI,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAA;OAC7B;MACD,IAAI,IAAI,IAAI,CAAA;MACZ,OAAO,IAAI;KACZ,MAAM;MACL,OAAO,GAAG,CAAC;KACZ;GACF;;;;EAID,SAAS,OAAO,CAAC,GAAG,CAAC;IACnB,IAAI,GAAG,CAAC;MACN,IAAI,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;MACtC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,UAAA,IAAI,EAAC,SAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,GAAA,CAAC,CAAA;MACpD,IAAI,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;MAChC,IAAI,GAAG,GAAG,uCAAuC,CAAA;MACjD,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;KAC1D;;GAEF;CACF,CAAA;;;;;;;;;ACpFD,AAAC,CAAC,WAAW;;;;;;AAMb,IAAI,KAAK,GAAG;EACV,OAAO,EAAE,MAAM;EACf,IAAI,EAAE,mBAAmB;EACzB,MAAM,EAAE,IAAI;EACZ,EAAE,EAAE,2BAA2B;EAC/B,OAAO,EAAE,uCAAuC;EAChD,OAAO,EAAE,IAAI;EACb,QAAQ,EAAE,mCAAmC;EAC7C,UAAU,EAAE,oCAAoC;EAChD,IAAI,EAAE,+DAA+D;EACrE,IAAI,EAAE,8EAA8E;EACpF,GAAG,EAAE,mEAAmE;EACxE,KAAK,EAAE,IAAI;EACX,SAAS,EAAE,gEAAgE;EAC3E,IAAI,EAAE,SAAS;CAChB,CAAC;;AAEF,KAAK,CAAC,MAAM,GAAG,iBAAiB,CAAC;AACjC,KAAK,CAAC,IAAI,GAAG,4CAA4C,CAAC;AAC1D,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC;GACnC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC;IACrB,CAAC;;AAEL,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;GAC7B,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC;GACtB,IAAI,EAAE,uCAAuC,CAAC;GAC9C,KAAK,EAAE,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC;IACzC,CAAC;;AAEL,KAAK,CAAC,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC;GACzC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC;IAChB,CAAC;;AAEL,KAAK,CAAC,IAAI,GAAG,QAAQ;IACjB,oDAAoD;IACpD,qDAAqD;IACrD,yDAAyD,CAAC;;AAE9D,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;GAC7B,SAAS,EAAE,iBAAiB,CAAC;GAC7B,QAAQ,EAAE,sBAAsB,CAAC;GACjC,SAAS,EAAE,mCAAmC,CAAC;GAC/C,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC;IAClB,CAAC;;AAEL,KAAK,CAAC,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC;GACvC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;GACf,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC;GACzB,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC;GAC3B,YAAY,EAAE,KAAK,CAAC,UAAU,CAAC;GAC/B,KAAK,EAAE,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC;GACxB,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC;IAChB,CAAC;;;;;;AAML,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;;;;;;AAMhC,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,MAAM,EAAE;EAClC,MAAM,EAAE,4DAA4D;EACpE,SAAS,EAAE,GAAG;EACd,OAAO,EAAE,uCAAuC;CACjD,CAAC,CAAC;;AAEH,KAAK,CAAC,GAAG,CAAC,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC;GAC3C,KAAK,EAAE,KAAK;MACT,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,GAAG;MACnD,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,GAAG,CAAC;IAChD,CAAC;;;;;;AAML,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,EAAE;EAClC,OAAO,EAAE,+DAA+D;EACxE,KAAK,EAAE,2DAA2D;CACnE,CAAC,CAAC;;;;;;AAMH,SAAS,KAAK,CAAC,OAAO,EAAE;EACtB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;EACjB,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC;EACvB,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,MAAM,CAAC,QAAQ,CAAC;EAC1C,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;;EAE1B,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;IACpB,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;MACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;KAC3B,MAAM;MACL,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC;KACxB;GACF;CACF;;;;;;AAMD,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;;;;;;AAMpB,KAAK,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,OAAO,EAAE;EACjC,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;EAC/B,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;CACvB,CAAC;;;;;;AAMF,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE;EAClC,GAAG,GAAG,GAAG;KACN,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC;KACzB,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;KACtB,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;KACvB,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;;EAE5B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;CAC9B,CAAC;;;;;;AAMF,KAAK,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE;;;EAC7C,IAAI,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;MAC/B,IAAI;MACJ,KAAK;MACL,GAAG;MACH,IAAI;MACJ,CAAC;MACD,IAAI;MACJ,KAAK;MACL,CAAC;MACD,CAAC,CAAC;;EAEN,OAAO,GAAG,EAAE;;IAEV,IAAI,GAAG,GAAGM,MAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACtC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;QACrBA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC;UACf,IAAI,EAAE,OAAO;SACd,CAAC,CAAC;OACJ;KACF;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACnC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;MACpCA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,CAACA,MAAI,CAAC,OAAO,CAAC,QAAQ;YACxB,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YACvB,GAAG;OACR,CAAC,CAAC;MACH,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACrC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnCA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;QACZ,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE;OACnB,CAAC,CAAC;MACH,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACtC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnCA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM;QACpB,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;OACb,CAAC,CAAC;MACH,SAAS;KACV;;;IAGD,IAAI,GAAG,KAAK,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;MAC/C,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;;MAEnC,IAAI,GAAG;QACL,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC1D,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC;QACvD,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;OAC7C,CAAC;;MAEF,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACtC,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;UACnC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;SACzB,MAAM,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;UAC3C,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;SAC1B,MAAM,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;UAC1C,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;SACxB,MAAM;UACL,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;SACtB;OACF;;MAED,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACtC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;OAC/C;;MAEDA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;MAEvB,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACvC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnCA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC;QAC7B,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;OACb,CAAC,CAAC;MACH,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACjC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnCA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,IAAI;OACX,CAAC,CAAC;MACH,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACzC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;;MAEnCA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,kBAAkB;OACzB,CAAC,CAAC;;MAEH,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;;;;;MAKrCA,MAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;;MAE3BA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,gBAAgB;OACvB,CAAC,CAAC;;MAEH,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACnC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;;MAEdA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC;OACzB,CAAC,CAAC;;;MAGH,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAACA,MAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;;MAEpC,IAAI,GAAG,KAAK,CAAC;MACb,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC;MACf,CAAC,GAAG,CAAC,CAAC;;MAEN,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;QACjB,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;;;;QAId,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;QACpB,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;;;;QAI9C,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;UACxB,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC;UACrB,IAAI,GAAG,CAACA,MAAI,CAAC,OAAO,CAAC,QAAQ;cACzB,IAAI,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,GAAG,KAAK,GAAG,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;cACzD,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;SACnC;;;;QAID,IAAIA,MAAI,CAAC,OAAO,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;UAC1C,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;UACrC,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;YACpD,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;YACxC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;WACX;SACF;;;;;QAKD,KAAK,GAAG,IAAI,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;UACf,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC;UAC7C,IAAI,CAAC,KAAK,EAAE,EAAA,KAAK,GAAG,IAAI,CAAC,EAAA;SAC1B;;QAEDA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC;UACf,IAAI,EAAE,KAAK;cACP,kBAAkB;cAClB,iBAAiB;SACtB,CAAC,CAAC;;;QAGHA,MAAI,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;;QAE5BA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC;UACf,IAAI,EAAE,eAAe;SACtB,CAAC,CAAC;OACJ;;MAEDA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,UAAU;OACjB,CAAC,CAAC;;MAEH,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACnC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnCA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACf,IAAI,EAAEA,MAAI,CAAC,OAAO,CAAC,QAAQ;YACvB,WAAW;YACX,MAAM;QACV,GAAG,EAAE,CAACA,MAAI,CAAC,OAAO,CAAC,SAAS;cACtB,GAAG,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC;QACpE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;OACb,CAAC,CAAC;MACH,SAAS;KACV;;;IAGD,IAAI,CAAC,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;MACpD,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnCA,MAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,GAAG;QACxC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;QACZ,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;OACd,CAAC;MACF,SAAS;KACV;;;IAGD,IAAI,GAAG,KAAK,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;MAC7C,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;;MAEnC,IAAI,GAAG;QACL,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC1D,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC;QACvD,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;OACxD,CAAC;;MAEF,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACtC,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;UACnC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;SACzB,MAAM,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;UAC3C,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;SAC1B,MAAM,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;UAC1C,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;SACxB,MAAM;UACL,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;SACtB;OACF;;MAED,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACtC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;WAC1B,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;WAC/B,KAAK,CAAC,QAAQ,CAAC,CAAC;OACpB;;MAEDA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;MAEvB,SAAS;KACV;;;IAGD,IAAI,GAAG,KAAK,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;MACjD,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnCA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,IAAI;YAC3C,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACnB,GAAG,CAAC,CAAC,CAAC;OACX,CAAC,CAAC;MACH,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;;MAEnC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnCA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;OACb,CAAC,CAAC;MACH,SAAS;KACV;;IAED,IAAI,GAAG,EAAE;MACP,MAAM;QACJ,KAAK,CAAC,yBAAyB,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;KACxD;GACF;;EAED,OAAO,IAAI,CAAC,MAAM,CAAC;CACpB,CAAC;;;;;;AAMF,IAAI,MAAM,GAAG;EACX,MAAM,EAAE,6BAA6B;EACrC,QAAQ,EAAE,0BAA0B;EACpC,GAAG,EAAE,IAAI;EACT,GAAG,EAAE,wDAAwD;EAC7D,IAAI,EAAE,yBAAyB;EAC/B,OAAO,EAAE,gCAAgC;EACzC,MAAM,EAAE,kCAAkC;EAC1C,MAAM,EAAE,gDAAgD;EACxD,EAAE,EAAE,uDAAuD;EAC3D,IAAI,EAAE,kCAAkC;EACxC,EAAE,EAAE,kBAAkB;EACtB,GAAG,EAAE,IAAI;EACT,IAAI,EAAE,oCAAoC;CAC3C,CAAC;;AAEF,MAAM,CAAC,OAAO,GAAG,wCAAwC,CAAC;AAC1D,MAAM,CAAC,KAAK,GAAG,gDAAgD,CAAC;;AAEhE,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;GAC/B,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC;GACzB,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC;IACpB,CAAC;;AAEL,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;GACrC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC;IACxB,CAAC;;;;;;AAML,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;;;;;;AAMlC,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE;EACzC,MAAM,EAAE,gEAAgE;EACxE,EAAE,EAAE,0DAA0D;CAC/D,CAAC,CAAC;;;;;;AAMH,MAAM,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE;EACpC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE;EAC9C,GAAG,EAAE,sCAAsC;EAC3C,GAAG,EAAE,yBAAyB;EAC9B,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;KACvB,IAAI,EAAE,KAAK,CAAC;KACZ,GAAG,EAAE,aAAa,CAAC;MAClB;CACL,CAAC,CAAC;;;;;;AAMH,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,EAAE;EACpC,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE;EACrC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE;CAC9C,CAAC,CAAC;;;;;;AAMH,SAAS,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE;EACnC,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,MAAM,CAAC,QAAQ,CAAC;EAC1C,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;EACnB,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;EAC3B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,QAAQ,CAAC;EACtD,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;;EAErC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;IACf,MAAM;MACJ,KAAK,CAAC,2CAA2C,CAAC,CAAC;GACtD;;EAED,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;IACpB,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;MACvB,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;KAC5B,MAAM;MACL,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC;KACzB;GACF,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;IAChC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC;GAC9B;CACF;;;;;;AAMD,WAAW,CAAC,KAAK,GAAG,MAAM,CAAC;;;;;;AAM3B,WAAW,CAAC,MAAM,GAAG,SAAS,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE;EACjD,IAAI,MAAM,GAAG,IAAI,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;EAC7C,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;CAC3B,CAAC;;;;;;AAMF,WAAW,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,GAAG,EAAE;;;EAC3C,IAAI,GAAG,GAAG,EAAE;MACR,IAAI;MACJ,IAAI;MACJ,IAAI;MACJ,GAAG,CAAC;;EAER,OAAO,GAAG,EAAE;;IAEV,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACrC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;MACd,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACvC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnC,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;QAClB,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG;YAC3BA,MAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAChCA,MAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,GAAGA,MAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;OACtC,MAAM;QACL,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,GAAG,IAAI,CAAC;OACb;MACD,GAAG,IAAIA,MAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;MAC5C,SAAS;KACV;;;IAGD,IAAI,CAACA,MAAI,CAAC,MAAM,KAAK,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;MACpD,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnC,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;MACtB,IAAI,GAAG,IAAI,CAAC;MACZ,GAAG,IAAIA,MAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;MAC5C,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MAClC,IAAI,CAACA,MAAI,CAAC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;QACxCA,MAAI,CAAC,MAAM,GAAG,IAAI,CAAC;OACpB,MAAM,IAAIA,MAAI,CAAC,MAAM,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;QAChDA,MAAI,CAAC,MAAM,GAAG,KAAK,CAAC;OACrB;MACD,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnC,GAAG,IAAIA,MAAI,CAAC,OAAO,CAAC,QAAQ;UACxBA,MAAI,CAAC,OAAO,CAAC,SAAS;YACpBA,MAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC9B,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;UAChB,GAAG,CAAC,CAAC,CAAC,CAAA;MACV,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACnC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnCA,MAAI,CAAC,MAAM,GAAG,IAAI,CAAC;MACnB,GAAG,IAAIA,MAAI,CAAC,UAAU,CAAC,GAAG,EAAE;QAC1B,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;QACZ,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;OACd,CAAC,CAAC;MACHA,MAAI,CAAC,MAAM,GAAG,KAAK,CAAC;MACpB,SAAS;KACV;;;IAGD,IAAI,CAAC,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;YAC/B,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;MAC1C,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;MAC/C,IAAI,GAAGA,MAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;MACtC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QACvB,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACxB,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;QAChC,SAAS;OACV;MACDA,MAAI,CAAC,MAAM,GAAG,IAAI,CAAC;MACnB,GAAG,IAAIA,MAAI,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;MAClCA,MAAI,CAAC,MAAM,GAAG,KAAK,CAAC;MACpB,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACrC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnC,GAAG,IAAIA,MAAI,CAAC,QAAQ,CAAC,MAAM,CAACA,MAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;MAC3D,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACjC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnC,GAAG,IAAIA,MAAI,CAAC,QAAQ,CAAC,EAAE,CAACA,MAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;MACvD,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACnC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnC,GAAG,IAAIA,MAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;MACpD,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACjC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnC,GAAG,IAAIA,MAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;MAC1B,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MAClC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnC,GAAG,IAAIA,MAAI,CAAC,QAAQ,CAAC,GAAG,CAACA,MAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;MAC9C,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACnC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnC,GAAG,IAAIA,MAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAACA,MAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;MAC5D,SAAS;KACV;;IAED,IAAI,GAAG,EAAE;MACP,MAAM;QACJ,KAAK,CAAC,yBAAyB,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;KACxD;GACF;;EAED,OAAO,GAAG,CAAC;CACZ,CAAC;;;;;;AAMF,WAAW,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,GAAG,EAAE,IAAI,EAAE;EACrD,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;MACxB,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;;EAEnD,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG;MAC3B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;MACpD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACtD,CAAC;;;;;;AAMF,WAAW,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,IAAI,EAAE;EACjD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAA,OAAO,IAAI,CAAC,EAAA;EAC3C,OAAO,IAAI;;KAER,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC;;KAEzB,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC;;KAExB,OAAO,CAAC,yBAAyB,EAAE,UAAU,CAAC;;KAE9C,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;;KAEvB,OAAO,CAAC,8BAA8B,EAAE,UAAU,CAAC;;KAEnD,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;;KAEvB,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;CAChC,CAAC;;;;;;AAMF,WAAW,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,IAAI,EAAE;EAC5C,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAA,OAAO,IAAI,CAAC,EAAA;EACtC,IAAI,GAAG,GAAG,EAAE;MACR,CAAC,GAAG,IAAI,CAAC,MAAM;MACf,CAAC,GAAG,CAAC;MACL,EAAE,CAAC;;EAEP,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;IACjB,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACxB,IAAI,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,EAAE;MACvB,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;KAC5B;IACD,GAAG,IAAI,IAAI,GAAG,EAAE,GAAG,GAAG,CAAC;GACxB;;EAED,OAAO,GAAG,CAAC;CACZ,CAAC;;;;;;AAMF,SAAS,QAAQ,CAAC,OAAO,EAAE;EACzB,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;CAC9B;;AAED,QAAQ,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;EACtD,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;IAC1B,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC7C,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,KAAK,IAAI,EAAE;MAC/B,OAAO,GAAG,IAAI,CAAC;MACf,IAAI,GAAG,GAAG,CAAC;KACZ;GACF;;EAED,IAAI,CAAC,IAAI,EAAE;IACT,OAAO,aAAa;SACf,OAAO,GAAG,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACrC,iBAAiB,CAAC;GACvB;;EAED,OAAO,oBAAoB;MACvB,IAAI,CAAC,OAAO,CAAC,UAAU;MACvB,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC;MAClB,IAAI;OACH,OAAO,GAAG,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;MACrC,mBAAmB,CAAC;CACzB,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,KAAK,EAAE;EAC9C,OAAO,gBAAgB,GAAG,KAAK,GAAG,iBAAiB,CAAC;CACrD,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE;EACvC,OAAO,IAAI,CAAC;CACb,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE;EACtD,OAAO,IAAI;MACP,KAAK;MACL,OAAO;MACP,IAAI,CAAC,OAAO,CAAC,YAAY;MACzB,GAAG,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;MACzC,IAAI;MACJ,IAAI;MACJ,KAAK;MACL,KAAK;MACL,KAAK,CAAC;CACX,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,EAAE,GAAG,WAAW;EACjC,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,SAAS,GAAG,QAAQ,CAAC;CAClD,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,OAAO,EAAE;EAChD,IAAI,IAAI,GAAG,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC;EACjC,OAAO,GAAG,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC;CACxD,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,IAAI,EAAE;EAC3C,OAAO,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;CAClC,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,IAAI,EAAE;EAC5C,OAAO,KAAK,GAAG,IAAI,GAAG,QAAQ,CAAC;CAChC,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,MAAM,EAAE,IAAI,EAAE;EAChD,OAAO,WAAW;MACd,WAAW;MACX,MAAM;MACN,YAAY;MACZ,WAAW;MACX,IAAI;MACJ,YAAY;MACZ,YAAY,CAAC;CAClB,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,OAAO,EAAE;EAC9C,OAAO,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;CACvC,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,OAAO,EAAE,KAAK,EAAE;EACtD,IAAI,IAAI,GAAG,KAAK,CAAC,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;EACtC,IAAI,GAAG,GAAG,KAAK,CAAC,KAAK;MACjB,GAAG,GAAG,IAAI,GAAG,qBAAqB,GAAG,KAAK,CAAC,KAAK,GAAG,IAAI;MACvD,GAAG,GAAG,IAAI,GAAG,GAAG,CAAC;EACrB,OAAO,GAAG,GAAG,OAAO,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC;CAC5C,CAAC;;;AAGF,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,IAAI,EAAE;EACzC,OAAO,UAAU,GAAG,IAAI,GAAG,WAAW,CAAC;CACxC,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,EAAE,GAAG,SAAS,IAAI,EAAE;EACrC,OAAO,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC;CAChC,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,IAAI,EAAE;EAC3C,OAAO,QAAQ,GAAG,IAAI,GAAG,SAAS,CAAC;CACpC,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,EAAE,GAAG,WAAW;EACjC,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,OAAO,GAAG,MAAM,CAAC;CAC9C,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,IAAI,EAAE;EACtC,OAAO,OAAO,GAAG,IAAI,GAAG,QAAQ,CAAC;CAClC,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;EACpD,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;IACzB,IAAI;MACF,IAAI,IAAI,GAAG,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;SAC1C,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;SACtB,WAAW,EAAE,CAAC;KAClB,CAAC,OAAO,CAAC,EAAE;MACV,OAAO,EAAE,CAAC;KACX;IACD,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE;MACxE,OAAO,EAAE,CAAC;KACX;GACF;EACD,IAAI,GAAG,GAAG,WAAW,GAAG,IAAI,GAAG,GAAG,CAAC;EACnC,IAAI,KAAK,EAAE;IACT,GAAG,IAAI,UAAU,GAAG,KAAK,GAAG,GAAG,CAAC;GACjC;EACD,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,MAAM,CAAC;EAC3B,OAAO,GAAG,CAAC;CACZ,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;EACrD,IAAI,GAAG,GAAG,YAAY,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,GAAG,GAAG,CAAC;EACvD,IAAI,KAAK,EAAE;IACT,GAAG,IAAI,UAAU,GAAG,KAAK,GAAG,GAAG,CAAC;GACjC;EACD,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,GAAG,GAAG,CAAC;EACvC,OAAO,GAAG,CAAC;CACZ,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE;EACvC,OAAO,IAAI,CAAC;CACb,CAAC;;;;;;AAMF,SAAS,MAAM,CAAC,OAAO,EAAE;EACvB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;EACjB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;EAClB,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,MAAM,CAAC,QAAQ,CAAC;EAC1C,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,QAAQ,CAAC;EAC9D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;EACtC,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;CACtC;;;;;;AAMD,MAAM,CAAC,KAAK,GAAG,SAAS,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE;EAC9C,IAAI,MAAM,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;EAC3C,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;CAC1B,CAAC;;;;;;AAMF,MAAM,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,GAAG,EAAE;;;EACrC,IAAI,CAAC,MAAM,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;EACtE,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;;EAE5B,IAAI,GAAG,GAAG,EAAE,CAAC;EACb,OAAO,IAAI,CAAC,IAAI,EAAE,EAAE;IAClB,GAAG,IAAIA,MAAI,CAAC,GAAG,EAAE,CAAC;GACnB;;EAED,OAAO,GAAG,CAAC;CACZ,CAAC;;;;;;AAMF,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,WAAW;EACjC,OAAO,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;CACvC,CAAC;;;;;;AAMF,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,WAAW;EACjC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;CACjD,CAAC;;;;;;AAMF,MAAM,CAAC,SAAS,CAAC,SAAS,GAAG,WAAW;;;EACtC,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;;EAE3B,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,MAAM,EAAE;IAClC,IAAI,IAAI,IAAI,GAAGA,MAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC;GACjC;;EAED,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;CACjC,CAAC;;;;;;AAMF,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,WAAW;;;EAChC,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI;IACrB,KAAK,OAAO,EAAE;MACZ,OAAO,EAAE,CAAC;KACX;IACD,KAAK,IAAI,EAAE;MACT,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;KAC3B;IACD,KAAK,SAAS,EAAE;MACd,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO;QAC1B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;QACnC,IAAI,CAAC,KAAK,CAAC,KAAK;QAChB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;KACpB;IACD,KAAK,MAAM,EAAE;MACX,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI;QACvC,IAAI,CAAC,KAAK,CAAC,IAAI;QACf,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;KACvB;IACD,KAAK,OAAO,EAAE;MACZ,IAAI,MAAM,GAAG,EAAE;UACX,IAAI,GAAG,EAAE;UACT,CAAC;UACD,GAAG;UACH,IAAI;UACJ,KAAK;UACL,CAAC,CAAC;;;MAGN,IAAI,GAAG,EAAE,CAAC;MACV,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAC7C,KAAK,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAEA,MAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QACrD,IAAI,IAAIA,MAAI,CAAC,QAAQ,CAAC,SAAS;UAC7BA,MAAI,CAAC,MAAM,CAAC,MAAM,CAACA,MAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;UACxC,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAEA,MAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;SAC7C,CAAC;OACH;MACD,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;MAEvC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAC5C,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;;QAE1B,IAAI,GAAG,EAAE,CAAC;QACV,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;UAC/B,IAAI,IAAIA,MAAI,CAAC,QAAQ,CAAC,SAAS;YAC7BA,MAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC1B,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAEA,MAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;WAC9C,CAAC;SACH;;QAED,IAAI,IAAIA,MAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;OACtC;MACD,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;KAC1C;IACD,KAAK,kBAAkB,EAAE;MACvB,IAAI,IAAI,GAAG,EAAE,CAAC;;MAEd,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,gBAAgB,EAAE;QAC5C,IAAI,IAAIA,MAAI,CAAC,GAAG,EAAE,CAAC;OACpB;;MAED,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;KACvC;IACD,KAAK,YAAY,EAAE;MACjB,IAAI,IAAI,GAAG,EAAE;UACT,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;;MAEjC,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,UAAU,EAAE;QACtC,IAAI,IAAIA,MAAI,CAAC,GAAG,EAAE,CAAC;OACpB;;MAED,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;KAC1C;IACD,KAAK,iBAAiB,EAAE;MACtB,IAAI,IAAI,GAAG,EAAE,CAAC;;MAEd,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,eAAe,EAAE;QAC3C,IAAI,IAAIA,MAAI,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM;YAC9BA,MAAI,CAAC,SAAS,EAAE;YAChBA,MAAI,CAAC,GAAG,EAAE,CAAC;OAChB;;MAED,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;KACrC;IACD,KAAK,kBAAkB,EAAE;MACvB,IAAI,IAAI,GAAG,EAAE,CAAC;;MAEd,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,eAAe,EAAE;QAC3C,IAAI,IAAIA,MAAI,CAAC,GAAG,EAAE,CAAC;OACpB;;MAED,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;KACrC;IACD,KAAK,MAAM,EAAE;MACX,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ;UAChD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;UACnC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;MACpB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACjC;IACD,KAAK,WAAW,EAAE;MAChB,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;KACrE;IACD,KAAK,MAAM,EAAE;MACX,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;KAClD;GACF;CACF,CAAC;;;;;;AAMF,SAAS,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE;EAC5B,OAAO,IAAI;KACR,OAAO,CAAC,CAAC,MAAM,GAAG,cAAc,GAAG,IAAI,EAAE,OAAO,CAAC;KACjD,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;KACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;KACrB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;KACvB,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;CAC3B;;AAED,SAAS,QAAQ,CAAC,IAAI,EAAE;;EAEtB,OAAO,IAAI,CAAC,OAAO,CAAC,2CAA2C,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE;IAC9E,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;IACpB,IAAI,CAAC,KAAK,OAAO,EAAE,EAAA,OAAO,GAAG,CAAC,EAAA;IAC9B,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;MACvB,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG;UACtB,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;UACjD,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;KAC1C;IACD,OAAO,EAAE,CAAC;GACX,CAAC,CAAC;CACJ;;AAED,SAAS,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE;EAC3B,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;EACrB,GAAG,GAAG,GAAG,IAAI,EAAE,CAAC;EAChB,OAAO,SAAS,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE;IAC9B,IAAI,CAAC,IAAI,EAAE,EAAA,OAAO,IAAI,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,EAAA;IACzC,GAAG,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC;IACxB,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;IACxC,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACjC,OAAO,IAAI,CAAC;GACb,CAAC;CACH;;AAED,SAAS,IAAI,GAAG,EAAE;AAClB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;;AAEjB,SAAS,KAAK,CAAC,GAAG,EAAE;;;EAClB,IAAI,CAAC,GAAG,CAAC;MACL,MAAM;MACN,GAAG,CAAC;;EAER,OAAO,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IAChC,MAAM,GAAGK,WAAS,CAAC,CAAC,CAAC,CAAC;IACtB,KAAK,GAAG,IAAI,MAAM,EAAE;MAClB,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE;QACrD,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;OACxB;KACF;GACF;;EAED,OAAO,GAAG,CAAC;CACZ;;;;;;;AAOD,SAAS,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE;EAClC,IAAI,QAAQ,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE;IACzC,IAAI,CAAC,QAAQ,EAAE;MACb,QAAQ,GAAG,GAAG,CAAC;MACf,GAAG,GAAG,IAAI,CAAC;KACZ;;IAED,GAAG,GAAG,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,QAAQ,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;;IAE5C,IAAI,SAAS,GAAG,GAAG,CAAC,SAAS;QACzB,MAAM;QACN,OAAO;QACP,CAAC,GAAG,CAAC,CAAC;;IAEV,IAAI;MACF,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;KAC7B,CAAC,OAAO,CAAC,EAAE;MACV,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;KACpB;;IAED,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;;IAExB,IAAI,IAAI,GAAG,SAAS,GAAG,EAAE;MACvB,IAAI,GAAG,EAAE;QACP,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC;QAC1B,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;OACtB;;MAED,IAAI,GAAG,CAAC;;MAER,IAAI;QACF,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;OACjC,CAAC,OAAO,CAAC,EAAE;QACV,GAAG,GAAG,CAAC,CAAC;OACT;;MAED,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC;;MAE1B,OAAO,GAAG;UACN,QAAQ,CAAC,GAAG,CAAC;UACb,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;KACzB,CAAC;;IAEF,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;MACtC,OAAO,IAAI,EAAE,CAAC;KACf;;IAED,OAAO,GAAG,CAAC,SAAS,CAAC;;IAErB,IAAI,CAAC,OAAO,EAAE,EAAA,OAAO,IAAI,EAAE,CAAC,EAAA;;IAE5B,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;MAC7B,CAAC,SAAS,KAAK,EAAE;QACf,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE;UACzB,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,CAAC;SAC5B;QACD,OAAO,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,SAAS,GAAG,EAAE,IAAI,EAAE;UAC3D,IAAI,GAAG,EAAE,EAAA,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAA;UAC1B,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,CAAC,IAAI,EAAE;YACvC,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,CAAC;WAC5B;UACD,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;UAClB,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;UACrB,EAAE,OAAO,IAAI,IAAI,EAAE,CAAC;SACrB,CAAC,CAAC;OACJ,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;KACf;;IAED,OAAO;GACR;EACD,IAAI;IACF,IAAI,GAAG,EAAE,EAAA,GAAG,GAAG,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,EAAA;IAC/C,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;GAC/C,CAAC,OAAO,CAAC,EAAE;IACV,CAAC,CAAC,OAAO,IAAI,yDAAyD,CAAC;IACvE,IAAI,CAAC,GAAG,IAAI,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE;MACnC,OAAO,+BAA+B;UAClC,MAAM,CAAC,CAAC,CAAC,OAAO,GAAG,EAAE,EAAE,IAAI,CAAC;UAC5B,QAAQ,CAAC;KACd;IACD,MAAM,CAAC,CAAC;GACT;CACF;;;;;;AAMD,MAAM,CAAC,OAAO;AACd,MAAM,CAAC,UAAU,GAAG,SAAS,GAAG,EAAE;EAChC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;EAC5B,OAAO,MAAM,CAAC;CACf,CAAC;;AAEF,MAAM,CAAC,QAAQ,GAAG;EAChB,GAAG,EAAE,IAAI;EACT,MAAM,EAAE,IAAI;EACZ,MAAM,EAAE,KAAK;EACb,QAAQ,EAAE,KAAK;EACf,QAAQ,EAAE,KAAK;EACf,SAAS,EAAE,IAAI;EACf,MAAM,EAAE,IAAI;EACZ,UAAU,EAAE,KAAK;EACjB,MAAM,EAAE,KAAK;EACb,SAAS,EAAE,IAAI;EACf,UAAU,EAAE,OAAO;EACnB,WAAW,EAAE,KAAK;EAClB,YAAY,EAAE,EAAE;EAChB,QAAQ,EAAE,IAAI,QAAQ;EACtB,KAAK,EAAE,KAAK;CACb,CAAC;;;;;;AAMF,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;AACvB,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC;;AAE7B,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;;AAE3B,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;AACrB,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC;;AAEzB,MAAM,CAAC,WAAW,GAAG,WAAW,CAAC;AACjC,MAAM,CAAC,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC;;AAExC,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC;;AAEtB,IAAI,QAAa,KAAK,WAAW,IAAI,QAAc,KAAK,QAAQ,EAAE;EAChE,cAAc,GAAG,MAAM,CAAC;CACzB,MAAM,IAAI,OAAOyB,SAAM,KAAK,UAAU,IAAIA,SAAM,CAAC,GAAG,EAAE;EACrDA,SAAM,CAAC,WAAW,EAAE,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC;CACvC,MAAM;EACL,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;CACtB;;CAEA,EAAE,IAAI,CAAC,WAAW;EACjB,OAAO,IAAI,KAAK,OAAO,MAAM,KAAK,WAAW,GAAG,MAAM,GAAGC,cAAM,CAAC,CAAC;CAClE,EAAE,CAAC,CAAC;;;ACnwCL,MAAM,CAAC,UAAU,CAAC;EAChB,GAAG,EAAE,IAAI;EACT,WAAW,EAAE,IAAI;CAClB,CAAC,CAAC;;AAEH,eAAe,SAAS,GAAG,EAAE,IAAI,EAAE;EACjCrC,IAAI,gBAAgB,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC,CAAC;EACzE,gBAAgB,CAAC,OAAO,CAAC,UAAA,EAAE,EAAC;IAC1BA,IAAI,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC;;IAE3B,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACpCA,IAAI,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAChC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,IAAI,GAAG,IAAI,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;IAC9D,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;;IAEzB,EAAE,CAAC,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;GAChC,CAAC,CAAC;CACJ,CAAA;;;;;;;ACdD,IAAI,KAAK,GAAG,CAAC,OAAO,MAAM,KAAK,WAAW;GACvC,MAAM;;EAEP,CAAC,OAAO,iBAAiB,KAAK,WAAW,IAAI,IAAI,YAAY,iBAAiB;IAC5E,IAAI;IACJ,EAAE;EACJ,CAAC;;;;;;;;AAQH,IAAI,KAAK,GAAG,CAAC,UAAU;;;AAGvB,IAAI,IAAI,GAAG,0BAA0B,CAAC;AACtC,IAAI,QAAQ,GAAG,CAAC,CAAC;;AAEjB,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,GAAG;CACrB,IAAI,EAAE;EACL,MAAM,EAAE,UAAU,MAAM,EAAE;GACzB,IAAI,MAAM,YAAY,KAAK,EAAE;IAC5B,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3E,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,OAAO,EAAE;IAC3C,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACjC,MAAM;IACN,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IACnF;GACD;;EAED,IAAI,EAAE,UAAU,CAAC,EAAE;GAClB,OAAO,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;GACtE;;EAED,KAAK,EAAE,UAAU,GAAG,EAAE;GACrB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;IACjB,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC1D;GACD,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC;GACnB;;;EAGD,KAAK,EAAE,UAAU,CAAC,EAAE;GACnB,IAAI,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;;GAE1B,QAAQ,IAAI;IACX,KAAK,QAAQ;KACZ,IAAI,KAAK,GAAG,EAAE,CAAC;;KAEf,KAAK,IAAI,GAAG,IAAI,CAAC,EAAE;MAClB,IAAI,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;OAC1B,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;OAClC;MACD;;KAED,OAAO,KAAK,CAAC;;IAEd,KAAK,OAAO;;KAEX,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAChE;;GAED,OAAO,CAAC,CAAC;GACT;EACD;;CAED,SAAS,EAAE;EACV,MAAM,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE;GAC5B,IAAI,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;;GAEzC,KAAK,IAAI,GAAG,IAAI,KAAK,EAAE;IACtB,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;IACvB;;GAED,OAAO,IAAI,CAAC;GACZ;;;;;;;;;;;EAWD,YAAY,EAAE,UAAU,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE;GACrD,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,SAAS,CAAC;GAC3B,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;;GAE3B,IAAI,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE;IAC1B,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;;IAEtB,KAAK,IAAI,QAAQ,IAAI,MAAM,EAAE;KAC5B,IAAI,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE;MACpC,OAAO,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;MACrC;KACD;;IAED,OAAO,OAAO,CAAC;IACf;;GAED,IAAI,GAAG,GAAG,EAAE,CAAC;;GAEb,KAAK,IAAI,KAAK,IAAI,OAAO,EAAE;;IAE1B,IAAI,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;;KAElC,IAAI,KAAK,IAAI,MAAM,EAAE;;MAEpB,KAAK,IAAI,QAAQ,IAAI,MAAM,EAAE;;OAE5B,IAAI,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE;QACpC,GAAG,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;QACjC;OACD;MACD;;KAED,GAAG,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;KAC5B;IACD;;;GAGD,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,SAAS,GAAG,EAAE,KAAK,EAAE;IACjD,IAAI,KAAK,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,MAAM,EAAE;KAC5C,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;KAChB;IACD,CAAC,CAAC;;GAEH,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC;GAC1B;;;EAGD,GAAG,EAAE,SAAS,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE;GACzC,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;GACxB,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE;IAChB,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE;KACxB,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC;;KAErC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;MACnE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;MACnC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;MAC/C;UACI,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;MACvE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;MACnC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;MAC5C;KACD;IACD;GACD;EACD;CACD,OAAO,EAAE,EAAE;;CAEX,YAAY,EAAE,SAAS,KAAK,EAAE,QAAQ,EAAE;EACvC,IAAI,GAAG,GAAG;GACT,QAAQ,EAAE,QAAQ;GAClB,QAAQ,EAAE,kGAAkG;GAC5G,CAAC;;EAEF,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC;;EAExC,IAAI,QAAQ,GAAG,GAAG,CAAC,QAAQ,IAAI,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;;EAEvE,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG;GAChD,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,KAAK,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;GAC1D;EACD;;CAED,gBAAgB,EAAE,SAAS,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE;;EAEpD,IAAI,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;;EAExC,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;GAC9C,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC;GAC3B;;EAED,IAAI,MAAM,EAAE;GACX,QAAQ,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;GACpE,OAAO,GAAG,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;GAChC;;;EAGD,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,YAAY,GAAG,QAAQ,CAAC;;;EAGvG,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;;EAE5B,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;GACjC,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,YAAY,GAAG,QAAQ,CAAC;GACrG;;EAED,IAAI,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC;;EAE/B,IAAI,GAAG,GAAG;GACT,OAAO,EAAE,OAAO;GAChB,QAAQ,EAAE,QAAQ;GAClB,OAAO,EAAE,OAAO;GAChB,IAAI,EAAE,IAAI;GACV,CAAC;;EAEF,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC;;EAExC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE;GAC9B,IAAI,GAAG,CAAC,IAAI,EAAE;IACb,GAAG,CAAC,OAAO,CAAC,WAAW,GAAG,GAAG,CAAC,IAAI,CAAC;IACnC;GACD,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;GAC7B,OAAO;GACP;;EAED,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;;EAErC,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE;GAC1B,IAAI,MAAM,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;;GAEpC,MAAM,CAAC,SAAS,GAAG,SAAS,GAAG,EAAE;IAChC,GAAG,CAAC,eAAe,GAAG,GAAG,CAAC,IAAI,CAAC;;IAE/B,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;;IAElC,GAAG,CAAC,OAAO,CAAC,SAAS,GAAG,GAAG,CAAC,eAAe,CAAC;;IAE5C,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;IACpC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;IAC7B,CAAC;;GAEF,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC;IACjC,QAAQ,EAAE,GAAG,CAAC,QAAQ;IACtB,IAAI,EAAE,GAAG,CAAC,IAAI;IACd,cAAc,EAAE,IAAI;IACpB,CAAC,CAAC,CAAC;GACJ;OACI;GACJ,GAAG,CAAC,eAAe,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;;GAEvE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;;GAElC,GAAG,CAAC,OAAO,CAAC,SAAS,GAAG,GAAG,CAAC,eAAe,CAAC;;GAE5C,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;;GAEnC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;GACpC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;GAC7B;EACD;;CAED,SAAS,EAAE,UAAU,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE;EAC7C,IAAI,MAAM,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;EACvC,OAAO,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC;EACxD;;CAED,QAAQ,EAAE,SAAS,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE;EAC3C,IAAI,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;;EAEpB,IAAI,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC;;EAEpB,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;;EAExB,IAAI,IAAI,EAAE;GACT,KAAK,IAAI,KAAK,IAAI,IAAI,EAAE;IACvB,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7B;;GAED,OAAO,OAAO,CAAC,IAAI,CAAC;GACpB;;EAED,SAAS,EAAE,KAAK,IAAI,KAAK,IAAI,OAAO,EAAE;GACrC,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;IACrD,SAAS;IACT;;GAED,IAAI,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;GAC9B,QAAQ,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,OAAO,IAAI,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC;;GAEvE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;IACzC,IAAI,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC;KACxB,MAAM,GAAG,OAAO,CAAC,MAAM;KACvB,UAAU,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU;KACjC,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM;KACzB,gBAAgB,GAAG,CAAC;KACpB,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;;IAEvB,IAAI,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE;;KAEtC,IAAI,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;KAC5D,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,GAAG,GAAG,CAAC,CAAC;KAC9D;;IAED,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC;;;IAGrC,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;;KAErE,IAAI,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;;KAEpB,IAAI,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;;MAEhC,MAAM,SAAS,CAAC;MAChB;;KAED,IAAI,GAAG,YAAY,KAAK,EAAE;MACzB,SAAS;MACT;;KAED,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC;;KAEtB,IAAI,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;SACzB,MAAM,GAAG,CAAC,CAAC;;;KAGf,IAAI,CAAC,KAAK,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;MAC/C,OAAO,CAAC,SAAS,GAAG,GAAG,CAAC;MACxB,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;MAC3B,IAAI,CAAC,KAAK,EAAE;OACX,MAAM;OACN;;MAED,IAAI,IAAI,GAAG,KAAK,CAAC,KAAK,IAAI,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;UACvD,EAAE,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM;UAClC,CAAC,GAAG,CAAC;UACL,CAAC,GAAG,GAAG,CAAC;;MAEZ,KAAK,IAAI,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE;OACrD,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;;OAEtB,IAAI,IAAI,IAAI,CAAC,EAAE;QACd,EAAE,CAAC,CAAC;QACJ,GAAG,GAAG,CAAC,CAAC;QACR;OACD;;;;;;MAMD,IAAI,MAAM,CAAC,CAAC,CAAC,YAAY,KAAK,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE;OACvD,SAAS;OACT;;;MAGD,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;MACf,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;MACzB,KAAK,CAAC,KAAK,IAAI,GAAG,CAAC;MACnB;;KAED,IAAI,CAAC,KAAK,EAAE;MACX,SAAS;MACT;;KAED,GAAG,UAAU,EAAE;MACd,gBAAgB,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;MACnC;;KAED,IAAI,IAAI,GAAG,KAAK,CAAC,KAAK,GAAG,gBAAgB;SACrC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC;SACxC,EAAE,GAAG,IAAI,GAAG,KAAK,CAAC,MAAM;SACxB,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC;SAC3B,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;;KAE1B,IAAI,IAAI,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;;KAEvB,IAAI,MAAM,EAAE;MACX,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;MAClB;;KAED,IAAI,OAAO,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;;KAEhG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;;KAEnB,IAAI,KAAK,EAAE;MACV,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;MACjB;;KAED,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;KAC3C;IACD;GACD;;EAED,OAAO,MAAM,CAAC;EACd;;CAED,KAAK,EAAE;EACN,GAAG,EAAE,EAAE;;EAEP,GAAG,EAAE,UAAU,IAAI,EAAE,QAAQ,EAAE;GAC9B,IAAI,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;;GAExB,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;;GAEhC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;GAC3B;;EAED,GAAG,EAAE,UAAU,IAAI,EAAE,GAAG,EAAE;GACzB,IAAI,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;;GAElC,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;IACpC,OAAO;IACP;;GAED,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,GAAG,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG;IACnD,QAAQ,CAAC,GAAG,CAAC,CAAC;IACd;GACD;EACD;CACD,CAAC;;AAEF,IAAI,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG,SAAS,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE;CACxE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;CACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;CACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;;CAEnB,IAAI,CAAC,MAAM,GAAG,CAAC,UAAU,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;CAC1C,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;CACvB,CAAC;;AAEF,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE;CAC/C,IAAI,OAAO,CAAC,IAAI,QAAQ,EAAE;EACzB,OAAO,CAAC,CAAC;EACT;;CAED,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE;EAC/B,OAAO,CAAC,CAAC,GAAG,CAAC,SAAS,OAAO,EAAE;GAC9B,OAAO,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;GAC7C,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;EACZ;;CAED,IAAI,GAAG,GAAG;EACT,IAAI,EAAE,CAAC,CAAC,IAAI;EACZ,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC;EACrD,GAAG,EAAE,MAAM;EACX,OAAO,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC;EAC1B,UAAU,EAAE,EAAE;EACd,QAAQ,EAAE,QAAQ;EAClB,MAAM,EAAE,MAAM;EACd,CAAC;;CAEF,IAAI,GAAG,CAAC,IAAI,IAAI,SAAS,EAAE;EAC1B,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC;EACtC;;CAED,IAAI,CAAC,CAAC,KAAK,EAAE;EACZ,IAAI,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,OAAO,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;EACrE,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;EACjD;;CAED,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;;CAEzB,IAAI,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE;EAC/D,OAAO,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,GAAG,CAAC;EAChF,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;;CAEb,OAAO,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,UAAU,GAAG,GAAG,GAAG,UAAU,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC;;CAElJ,CAAC;;AAEF,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;CACpB,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE;;EAE5B,OAAO,KAAK,CAAC,KAAK,CAAC;EACnB;;CAED,KAAK,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,GAAG,EAAE;EAC/C,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;MAC9B,IAAI,GAAG,OAAO,CAAC,QAAQ;MACvB,IAAI,GAAG,OAAO,CAAC,IAAI;MACnB,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;;EAE5C,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;EAC9D,IAAI,cAAc,EAAE;GACnB,KAAK,CAAC,KAAK,EAAE,CAAC;GACd;EACD,EAAE,KAAK,CAAC,CAAC;;CAEV,OAAO,KAAK,CAAC,KAAK,CAAC;CACnB;;;AAGD,IAAI,MAAM,GAAG,QAAQ,CAAC,aAAa,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;;AAEpG,IAAI,MAAM,EAAE;CACX,CAAC,CAAC,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC;;CAExB,IAAI,QAAQ,CAAC,gBAAgB,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC,EAAE;EACrE,GAAG,QAAQ,CAAC,UAAU,KAAK,SAAS,EAAE;GACrC,IAAI,MAAM,CAAC,qBAAqB,EAAE;IACjC,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;IAC7C,MAAM;IACN,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;IACtC;GACD;OACI;GACJ,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC;GAC9D;EACD;CACD;;AAED,OAAO,KAAK,CAAC,KAAK,CAAC;;CAElB,GAAG,CAAC;;AAEL,IAAI,QAAa,KAAK,WAAW,IAAI,MAAM,CAAC,OAAO,EAAE;CACpD,cAAc,GAAG,KAAK,CAAC;CACvB;;;AAGD,IAAI,OAAOqC,cAAM,KAAK,WAAW,EAAE;CAClCA,cAAM,CAAC,KAAK,GAAG,KAAK,CAAC;CACrB;;;;;;;AAOD,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG;CACxB,SAAS,EAAE,iBAAiB;CAC5B,QAAQ,EAAE,gBAAgB;CAC1B,SAAS,EAAE,qBAAqB;CAChC,OAAO,EAAE,yBAAyB;CAClC,KAAK,EAAE;EACN,OAAO,EAAE,uGAAuG;EAChH,MAAM,EAAE;GACP,KAAK,EAAE;IACN,OAAO,EAAE,iBAAiB;IAC1B,MAAM,EAAE;KACP,aAAa,EAAE,OAAO;KACtB,WAAW,EAAE,cAAc;KAC3B;IACD;GACD,YAAY,EAAE;IACb,OAAO,EAAE,iCAAiC;IAC1C,MAAM,EAAE;KACP,aAAa,EAAE,QAAQ;KACvB;IACD;GACD,aAAa,EAAE,MAAM;GACrB,WAAW,EAAE;IACZ,OAAO,EAAE,WAAW;IACpB,MAAM,EAAE;KACP,WAAW,EAAE,cAAc;KAC3B;IACD;;GAED;EACD;CACD,QAAQ,EAAE,mBAAmB;CAC7B,CAAC;;;AAGF,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,GAAG,EAAE;;CAErC,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE;EAC1B,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;EAC5D;CACD,CAAC,CAAC;;AAEH,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC;AAC7C,KAAK,CAAC,SAAS,CAAC,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC;AAC9C,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC;AAChD,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC;;;;;;;AAO7C,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG;CACrB,SAAS,EAAE,kBAAkB;CAC7B,QAAQ,EAAE;EACT,OAAO,EAAE,2BAA2B;EACpC,MAAM,EAAE;GACP,MAAM,EAAE,SAAS;;GAEjB;EACD;CACD,KAAK,EAAE,8DAA8D;CACrE,UAAU,EAAE,8BAA8B;CAC1C,QAAQ,EAAE;EACT,OAAO,EAAE,6CAA6C;EACtD,MAAM,EAAE,IAAI;EACZ;CACD,UAAU,EAAE,wBAAwB;CACpC,WAAW,EAAE,iBAAiB;CAC9B,UAAU,EAAE,mBAAmB;CAC/B,aAAa,EAAE,UAAU;CACzB,CAAC;;AAEF,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;;AAElF,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE;CAC3B,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,QAAQ,EAAE,KAAK,EAAE;EAC7C,OAAO,EAAE;GACR,OAAO,EAAE,yCAAyC;GAClD,UAAU,EAAE,IAAI;GAChB,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG;GAC3B,KAAK,EAAE,cAAc;GACrB;EACD,CAAC,CAAC;;CAEH,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,QAAQ,EAAE,YAAY,EAAE;EACpD,YAAY,EAAE;GACb,OAAO,EAAE,sBAAsB;GAC/B,MAAM,EAAE;IACP,WAAW,EAAE;KACZ,OAAO,EAAE,YAAY;KACrB,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM;KACzC;IACD,aAAa,EAAE,uBAAuB;IACtC,YAAY,EAAE;KACb,OAAO,EAAE,KAAK;KACd,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG;KAC3B;IACD;GACD,KAAK,EAAE,cAAc;GACrB;EACD,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;CAC/B;;;;;;AAMD,KAAK,CAAC,SAAS,CAAC,KAAK,GAAG;CACvB,SAAS,EAAE;EACV;GACC,OAAO,EAAE,2BAA2B;GACpC,UAAU,EAAE,IAAI;GAChB;EACD;GACC,OAAO,EAAE,kBAAkB;GAC3B,UAAU,EAAE,IAAI;GAChB;EACD;CACD,QAAQ,EAAE;EACT,OAAO,EAAE,8CAA8C;EACvD,MAAM,EAAE,IAAI;EACZ;CACD,YAAY,EAAE;EACb,OAAO,EAAE,sGAAsG;EAC/G,UAAU,EAAE,IAAI;EAChB,MAAM,EAAE;GACP,WAAW,EAAE,SAAS;GACtB;EACD;CACD,SAAS,EAAE,0GAA0G;CACrH,SAAS,EAAE,kBAAkB;CAC7B,UAAU,EAAE,mBAAmB;CAC/B,QAAQ,EAAE,+CAA+C;CACzD,UAAU,EAAE,yDAAyD;CACrE,aAAa,EAAE,eAAe;CAC9B,CAAC;;;;;;;AAOF,KAAK,CAAC,SAAS,CAAC,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE;CAC5D,SAAS,EAAE,2TAA2T;CACtU,QAAQ,EAAE,8EAA8E;;CAExF,UAAU,EAAE,uDAAuD;CACnE,UAAU,EAAE,kEAAkE;CAC9E,CAAC,CAAC;;AAEH,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,YAAY,EAAE,SAAS,EAAE;CACrD,OAAO,EAAE;EACR,OAAO,EAAE,8EAA8E;EACvF,UAAU,EAAE,IAAI;EAChB,MAAM,EAAE,IAAI;EACZ;CACD,CAAC,CAAC;;AAEH,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,YAAY,EAAE,QAAQ,EAAE;CACpD,iBAAiB,EAAE;EAClB,OAAO,EAAE,uBAAuB;EAChC,MAAM,EAAE,IAAI;EACZ,MAAM,EAAE;GACP,eAAe,EAAE;IAChB,OAAO,EAAE,aAAa;IACtB,MAAM,EAAE;KACP,2BAA2B,EAAE;MAC5B,OAAO,EAAE,WAAW;MACpB,KAAK,EAAE,aAAa;MACpB;KACD,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,UAAU;KAChC;IACD;GACD,QAAQ,EAAE,SAAS;GACnB;EACD;CACD,CAAC,CAAC;;AAEH,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE;CAC3B,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,QAAQ,EAAE,KAAK,EAAE;EAC7C,QAAQ,EAAE;GACT,OAAO,EAAE,2CAA2C;GACpD,UAAU,EAAE,IAAI;GAChB,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,UAAU;GAClC,KAAK,EAAE,qBAAqB;GAC5B;EACD,CAAC,CAAC;CACH;;AAED,KAAK,CAAC,SAAS,CAAC,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC;;;;;;AAMhD,CAAC,YAAY;CACZ,IAAI,OAAO,IAAI,KAAK,WAAW,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE;EAC5F,OAAO;EACP;;CAED,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,WAAW;;EAErC,IAAI,UAAU,GAAG;GAChB,IAAI,EAAE,YAAY;GAClB,IAAI,EAAE,QAAQ;GACd,IAAI,EAAE,MAAM;GACZ,KAAK,EAAE,YAAY;GACnB,MAAM,EAAE,YAAY;GACpB,IAAI,EAAE,MAAM;GACZ,KAAK,EAAE,OAAO;GACd,GAAG,EAAE,GAAG;GACR,KAAK,EAAE,OAAO;GACd,CAAC;;EAEF,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE;GAC3B,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,GAAG,EAAE;IAC7F,IAAI,GAAG,GAAG,GAAG,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;;IAEvC,IAAI,QAAQ,EAAE,MAAM,GAAG,GAAG,CAAC;IAC3B,IAAI,IAAI,GAAG,gCAAgC,CAAC;IAC5C,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;KAC9C,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC;KAC3B;;IAED,IAAI,MAAM,EAAE;KACX,QAAQ,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;KACpD;;IAED,IAAI,CAAC,QAAQ,EAAE;KACd,IAAI,SAAS,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;KACrD,QAAQ,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC;KAC9C;;IAED,IAAI,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAC1C,IAAI,CAAC,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;;IAExC,GAAG,CAAC,WAAW,GAAG,EAAE,CAAC;;IAErB,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;;IAE9B,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;;IAEtB,IAAI,GAAG,GAAG,IAAI,cAAc,EAAE,CAAC;;IAE/B,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;;IAE3B,GAAG,CAAC,kBAAkB,GAAG,YAAY;KACpC,IAAI,GAAG,CAAC,UAAU,IAAI,CAAC,EAAE;;MAExB,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,YAAY,EAAE;OACzC,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,YAAY,CAAC;;OAEpC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;OAC7B;WACI,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,EAAE;OAC3B,IAAI,CAAC,WAAW,GAAG,UAAU,GAAG,GAAG,CAAC,MAAM,GAAG,wBAAwB,GAAG,GAAG,CAAC,UAAU,CAAC;OACvF;WACI;OACJ,IAAI,CAAC,WAAW,GAAG,0CAA0C,CAAC;OAC9D;MACD;KACD,CAAC;;IAEF,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC,CAAC;GACH;;EAED,CAAC;;CAEF,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;;CAExE,GAAG,CAAC;;;ACxxBL,aAAe,SAAS,GAAG,EAAE,IAAI,EAAE;EACjCrC,IAAI,YAAY,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC;EAClE,YAAY,CAAC,OAAO,CAAC,UAAA,EAAE,EAAC;IACtBA,IAAI,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC;IAC7B,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC;IAClBA,IAAI,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;IAC3CA,IAAI,CAAC,GAAG,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAClC,IAAI,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE;;MAEnC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;MACpCA,IAAI,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;MAChC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,IAAI,GAAG,IAAI,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;MAC9D,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;MACzBA,IAAI,CAAC,GAAG,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;MACjC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;MACjB,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;KACnB,MAAM;MACL,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;KACnB;IACDA,IAAI,WAAW,GAAG,OAAO,CAAC;IAC1B,IAAIsC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;MAC7B,CAAC,CAAC,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,QAAQ,CAAC,CAAC;MAChD,WAAW,GAAGA,KAAK,CAAC,SAAS,CAAC,OAAO,EAAEA,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;KACnE;IACD,CAAC,CAAC,SAAS,GAAG,WAAW,CAAC;GAC3B,CAAC,CAAC;CACJ,CAAA;;AC5BD,eAAe;IACX,OAAO,EAAE,kDAAkD;IAC3D,aAAa,EAAE,0GAA0G;IACzH,KAAK,EAAE,sCAAsC;IAC7C,QAAQ,EAAE,iDAAiD;IAC3D,gBAAgB,EAAE,wCAAwC;IAC1D,eAAe,EAAE,wCAAwC;IACzD,SAAS,EAAE;MACT;QACE,WAAW,EAAE,MAAM;QACnB,UAAU,EAAE,QAAQ;QACpB,aAAa,EAAE,uBAAuB;QACtC,aAAa,EAAE,cAAc;QAC7B,gBAAgB,EAAE,mBAAmB;OACtC;MACD;QACE,WAAW,EAAE,OAAO;QACpB,UAAU,EAAE,IAAI;QAChB,aAAa,EAAE,6BAA6B;QAC5C,aAAa,EAAE,cAAc;QAC7B,gBAAgB,EAAE,mBAAmB;OACtC;MACD;QACE,WAAW,EAAE,KAAK;QAClB,UAAU,EAAE,SAAS;QACrB,aAAa,EAAE,4BAA4B;QAC3C,aAAa,EAAE,cAAc;QAC7B,gBAAgB,EAAE,EAAE;OACrB;MACD;QACE,WAAW,EAAE,OAAO;QACpB,UAAU,EAAE,MAAM;QAClB,aAAa,EAAE,yBAAyB;QACxC,aAAa,EAAE,cAAc;QAC7B,gBAAgB,EAAE,mBAAmB;OACtC;KACF;IACD,OAAO,EAAE;MACP,OAAO,EAAE,SAAS;MAClB,YAAY,EAAE,SAAS;MACvB,cAAc,EAAE,SAAS;MACzB,KAAK,EAAE,oBAAoB;MAC3B,KAAK,EAAE,cAAc;MACrB,MAAM,EAAE,WAAW;KACpB;GACF,CAAC;;AChCJ,SAAS,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE;EACzB,IAAI,CAAC,GAAG,CAAC,CAAC;EACV,MAAM,CAAC,GAAG,CAAC,CAAC;EACZ,GAAG,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,SAAS,KAAK,EAAE;IACvD,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACvB,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACxB,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAChB,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAClB,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACpB,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAClB,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACpBC,MAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAChB,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACpB,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;IAC1B,KAAK,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA,CAAC;GAC3D,CAAC,CAAC;CACJ;;;AAGD,GAAG,MAAM,IAAI,MAAM,CAAC,QAAQ,EAAE;EAC5B,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;CACnC,AAED,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AACA,AAAsB;;;;;;;;;;;;;;;;;"} \ No newline at end of file diff --git a/dist/template.min.js b/dist/template.min.js deleted file mode 100644 index f90c108..0000000 --- a/dist/template.min.js +++ /dev/null @@ -1,4 +0,0 @@ -var dl=function(){"use strict";function t(t){return"undefined"==typeof t||null===t}function e(t){return"object"==typeof t&&null!==t}function n(e){return Array.isArray(e)?e:t(e)?[]:[e]}function i(t,e){var n,i,r,o;if(e)for(o=Object.keys(e),n=0,i=o.length;n=0&&(e=e.slice(1)),".inf"===e?1===n?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:".nan"===e?NaN:e.indexOf(":")>=0?(e.split(":").forEach(function(t){r.unshift(parseFloat(t,10))}),e=0,i=1,r.forEach(function(t){e+=t*i,i*=60}),n*e):n*parseFloat(e,10)}function E(t,e){var n;if(isNaN(t))switch(e){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===t)switch(e){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===t)switch(e){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(rn.isNegativeZero(t))return"-0.0";return n=t.toString(10),sn.test(n)?n.replace("e",".e"):n}function j(t){return"[object Number]"===Object.prototype.toString.call(t)&&(t%1!==0||rn.isNegativeZero(t))}function L(t){return null!==t&&(null!==fn.exec(t)||null!==gn.exec(t))}function O(t){var e,n,i,r,o,a,s,l,c,u,p=0,h=null;if(e=fn.exec(t),null===e&&(e=gn.exec(t)),null===e)throw new Error("Date resolve error");if(n=+e[1],i=+e[2]-1,r=+e[3],!e[4])return new Date(Date.UTC(n,i,r));if(o=+e[4],a=+e[5],s=+e[6],e[7]){for(p=e[7].slice(0,3);p.length<3;)p+="0";p=+p}return e[9]&&(l=+e[10],c=+(e[11]||0),h=6e4*(60*l+c),"-"===e[9]&&(h=-h)),u=new Date(Date.UTC(n,i,r,o,a,s,p)),h&&u.setTime(u.getTime()-h),u}function I(t){return t.toISOString()}function T(t){return"<<"===t||null===t}function M(){throw new Error("Dynamic requires are not currently supported by rollup-plugin-commonjs")}function N(t,e){return e={exports:{}},t(e,e.exports),e.exports}function F(t){if(null===t)return!1;var e,n,i=0,r=t.length,o=An;for(n=0;n64)){if(e<0)return!1;i+=6}return i%8===0}function q(t){var e,n,i=t.replace(/[\r\n=]/g,""),r=i.length,o=An,a=0,s=[];for(e=0;e>16&255),s.push(a>>8&255),s.push(255&a)),a=a<<6|o.indexOf(i.charAt(e));return n=r%4*6,0===n?(s.push(a>>16&255),s.push(a>>8&255),s.push(255&a)):18===n?(s.push(a>>10&255),s.push(a>>2&255)):12===n&&s.push(a>>4&255),Pe?new Pe(s):s}function z(t){var e,n,i="",r=0,o=t.length,a=An;for(e=0;e>18&63],i+=a[r>>12&63],i+=a[r>>6&63],i+=a[63&r]),r=(r<<8)+t[e];return n=o%3,0===n?(i+=a[r>>18&63],i+=a[r>>12&63],i+=a[r>>6&63],i+=a[63&r]):2===n?(i+=a[r>>10&63],i+=a[r>>4&63],i+=a[r<<2&63],i+=a[64]):1===n&&(i+=a[r>>2&63],i+=a[r<<4&63],i+=a[64],i+=a[64]),i}function D(t){return Pe&&Pe.isBuffer(t)}function $(t){if(null===t)return!0;var e,n,i,r,o,a=[],s=t;for(e=0,n=s.length;e3)return!1;if("/"!==e[e.length-i.length-1])return!1}return!0}function V(t){var e=t,n=/\/([gim]*)$/.exec(t),i="";return"/"===e[0]&&(n&&(i=n[1]),e=e.slice(1,e.length-i.length-1)),new RegExp(e,i)}function Z(t){var e="/"+t.source+"/";return t.global&&(e+="g"),t.multiline&&(e+="m"),t.ignoreCase&&(e+="i"),e}function X(t){return"[object RegExp]"===Object.prototype.toString.call(t)}function Q(t){if(null===t)return!1;try{var e="("+t+")",n=kn.parse(e,{range:!0});return"Program"===n.type&&1===n.body.length&&"ExpressionStatement"===n.body[0].type&&"FunctionExpression"===n.body[0].expression.type}catch(t){return!1}}function tt(t){var e,n="("+t+")",i=kn.parse(n,{range:!0}),r=[];if("Program"!==i.type||1!==i.body.length||"ExpressionStatement"!==i.body[0].type||"FunctionExpression"!==i.body[0].expression.type)throw new Error("Failed to resolve function");return i.body[0].expression.params.forEach(function(t){r.push(t.name)}),e=i.body[0].expression.body.range,new Function(r,n.slice(e[0]+1,e[1]-1))}function et(t){return t.toString()}function nt(t){return"[object Function]"===Object.prototype.toString.call(t)}function it(t){return 10===t||13===t}function rt(t){return 9===t||32===t}function ot(t){return 9===t||32===t||10===t||13===t}function at(t){return 44===t||91===t||93===t||123===t||125===t}function st(t){var e;return 48<=t&&t<=57?t-48:(e=32|t,97<=e&&e<=102?e-97+10:-1)}function lt(t){return 120===t?2:117===t?4:85===t?8:0}function ct(t){return 48<=t&&t<=57?t-48:-1}function ut(t){return 48===t?"\0":97===t?"":98===t?"\b":116===t?"\t":9===t?"\t":110===t?"\n":118===t?"\v":102===t?"\f":114===t?"\r":101===t?"":32===t?" ":34===t?'"':47===t?"/":92===t?"\\":78===t?"…":95===t?" ":76===t?"\u2028":80===t?"\u2029":""}function pt(t){return t<=65535?String.fromCharCode(t):String.fromCharCode((t-65536>>10)+55296,(t-65536&1023)+56320)}function ht(t,e){this.input=t,this.filename=e.filename||null,this.schema=e.schema||Vn,this.onWarning=e.onWarning||null,this.legacy=e.legacy||!1,this.json=e.json||!1,this.listener=e.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=t.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.documents=[]}function dt(t,e){return new Gn(e,new Kn(t.filename,t.input,t.position,t.line,t.position-t.lineStart))}function ft(t,e){throw dt(t,e)}function gt(t,e){t.onWarning&&t.onWarning.call(null,dt(t,e))}function mt(t,e,n,i){var r,o,a,s;if(e1&&(t.result+=Yn.repeat("\n",e-1))}function At(t,e,n){var i,r,o,a,s,l,c,u,p,h=t.kind,d=t.result;if(p=t.input.charCodeAt(t.position),ot(p)||at(p)||35===p||38===p||42===p||33===p||124===p||62===p||39===p||34===p||37===p||64===p||96===p)return!1;if((63===p||45===p)&&(r=t.input.charCodeAt(t.position+1),ot(r)||n&&at(r)))return!1;for(t.kind="scalar",t.result="",o=a=t.position,s=!1;0!==p;){if(58===p){if(r=t.input.charCodeAt(t.position+1),ot(r)||n&&at(r))break}else if(35===p){if(i=t.input.charCodeAt(t.position-1),ot(i))break}else{if(t.position===t.lineStart&&kt(t)||n&&at(p))break;if(it(p)){if(l=t.line,c=t.lineStart,u=t.lineIndent,vt(t,!1,-1),t.lineIndent>=e){s=!0,p=t.input.charCodeAt(t.position);continue}t.position=a,t.line=l,t.lineStart=c,t.lineIndent=u;break}}s&&(mt(t,o,a,!1),wt(t,t.line-l),o=a=t.position,s=!1),rt(p)||(a=t.position+1),p=t.input.charCodeAt(++t.position)}return mt(t,o,a,!1),!!t.result||(t.kind=h,t.result=d,!1)}function Ct(t,e){var n,i,r;if(n=t.input.charCodeAt(t.position),39!==n)return!1;for(t.kind="scalar",t.result="",t.position++,i=r=t.position;0!==(n=t.input.charCodeAt(t.position));)if(39===n){if(mt(t,i,t.position,!0),n=t.input.charCodeAt(++t.position),39!==n)return!0;i=t.position,t.position++,r=t.position}else it(n)?(mt(t,i,r,!0),wt(t,vt(t,!1,e)),i=r=t.position):t.position===t.lineStart&&kt(t)?ft(t,"unexpected end of the document within a single quoted scalar"):(t.position++,r=t.position);ft(t,"unexpected end of the stream within a single quoted scalar")}function St(t,e){var n,i,r,o,a,s;if(s=t.input.charCodeAt(t.position),34!==s)return!1;for(t.kind="scalar",t.result="",t.position++,n=i=t.position;0!==(s=t.input.charCodeAt(t.position));){if(34===s)return mt(t,n,t.position,!0),t.position++,!0;if(92===s){if(mt(t,n,t.position,!0),s=t.input.charCodeAt(++t.position),it(s))vt(t,!1,e);else if(s<256&&ui[s])t.result+=pi[s],t.position++;else if((a=lt(s))>0){for(r=a,o=0;r>0;r--)s=t.input.charCodeAt(++t.position),(a=st(s))>=0?o=(o<<4)+a:ft(t,"expected hexadecimal character");t.result+=pt(o),t.position++}else ft(t,"unknown escape sequence");n=i=t.position}else it(s)?(mt(t,n,i,!0),wt(t,vt(t,!1,e)),n=i=t.position):t.position===t.lineStart&&kt(t)?ft(t,"unexpected end of the document within a double quoted scalar"):(t.position++,i=t.position)}ft(t,"unexpected end of the stream within a double quoted scalar")}function _t(t,e){var n,i,r,o,a,s,l,c,u,p,h,d=!0,f=t.tag,g=t.anchor,m={};if(h=t.input.charCodeAt(t.position),91===h)o=93,l=!1,i=[];else{if(123!==h)return!1;o=125,l=!0,i={}}for(null!==t.anchor&&(t.anchorMap[t.anchor]=i),h=t.input.charCodeAt(++t.position);0!==h;){if(vt(t,!0,e),h=t.input.charCodeAt(t.position),h===o)return t.position++,t.tag=f,t.anchor=g,t.kind=l?"mapping":"sequence",t.result=i,!0;d||ft(t,"missed comma between flow collection entries"),u=c=p=null,a=s=!1,63===h&&(r=t.input.charCodeAt(t.position+1),ot(r)&&(a=s=!0,t.position++,vt(t,!0,e))),n=t.line,Mt(t,e,Xn,!1,!0),u=t.tag,c=t.result,vt(t,!0,e),h=t.input.charCodeAt(t.position),!s&&t.line!==n||58!==h||(a=!0,h=t.input.charCodeAt(++t.position),vt(t,!0,e),Mt(t,e,Xn,!1,!0),p=t.result),l?yt(t,i,m,u,c,p):a?i.push(yt(t,null,m,u,c,p)):i.push(c),vt(t,!0,e),h=t.input.charCodeAt(t.position),44===h?(d=!0,h=t.input.charCodeAt(++t.position)):d=!1}ft(t,"unexpected end of the stream within a flow collection")}function Et(t,e){var n,i,r,o,a=ni,s=!1,l=!1,c=e,u=0,p=!1;if(o=t.input.charCodeAt(t.position),124===o)i=!1;else{if(62!==o)return!1;i=!0}for(t.kind="scalar",t.result="";0!==o;)if(o=t.input.charCodeAt(++t.position),43===o||45===o)ni===a?a=43===o?ri:ii:ft(t,"repeat of a chomping mode identifier");else{if(!((r=ct(o))>=0))break;0===r?ft(t,"bad explicit indentation width of a block scalar; it cannot be less than one"):l?ft(t,"repeat of an indentation width identifier"):(c=e+r-1,l=!0)}if(rt(o)){do o=t.input.charCodeAt(++t.position);while(rt(o));if(35===o)do o=t.input.charCodeAt(++t.position);while(!it(o)&&0!==o)}for(;0!==o;){for(xt(t),t.lineIndent=0,o=t.input.charCodeAt(t.position);(!l||t.lineIndentc&&(c=t.lineIndent),it(o))u++;else{if(t.lineIndente)&&0!==r)ft(t,"bad indentation of a sequence entry");else if(t.lineIndente)&&(Mt(t,e,ei,!0,r)&&(f?h=t.result:d=t.result),f||(yt(t,c,u,p,h,d),p=h=d=null),vt(t,!0,-1),a=t.input.charCodeAt(t.position)),t.lineIndent>e&&0!==a)ft(t,"bad indentation of a mapping entry");else if(t.lineIndente?d=1:t.lineIndent===e?d=0:t.lineIndente?d=1:t.lineIndent===e?d=0:t.lineIndent tag; it should be "'+u.kind+'", not "'+t.kind+'"'),u.resolve(t.result)?(t.result=u.construct(t.result),null!==t.anchor&&(t.anchorMap[t.anchor]=t.result)):ft(t,"cannot resolve a node with !<"+t.tag+"> explicit tag")):ft(t,"unknown tag !<"+t.tag+">");return null!==t.listener&&t.listener("close",t),null!==t.tag||null!==t.anchor||g}function Nt(t){var e,n,i,r,o=t.position,a=!1;for(t.version=null,t.checkLineBreaks=t.legacy,t.tagMap={},t.anchorMap={};0!==(r=t.input.charCodeAt(t.position))&&(vt(t,!0,-1),r=t.input.charCodeAt(t.position),!(t.lineIndent>0||37!==r));){for(a=!0,r=t.input.charCodeAt(++t.position),e=t.position;0!==r&&!ot(r);)r=t.input.charCodeAt(++t.position);for(n=t.input.slice(e,t.position),i=[],n.length<1&&ft(t,"directive name must not be less than one character in length");0!==r;){for(;rt(r);)r=t.input.charCodeAt(++t.position);if(35===r){do r=t.input.charCodeAt(++t.position);while(0!==r&&!it(r));break}if(it(r))break;for(e=t.position;0!==r&&!ot(r);)r=t.input.charCodeAt(++t.position);i.push(t.input.slice(e,t.position))}0!==r&&xt(t),Zn.call(di,n)?di[n](t,n,i):gt(t,'unknown document directive "'+n+'"')}return vt(t,!0,-1),0===t.lineIndent&&45===t.input.charCodeAt(t.position)&&45===t.input.charCodeAt(t.position+1)&&45===t.input.charCodeAt(t.position+2)?(t.position+=3,vt(t,!0,-1)):a&&ft(t,"directives end mark is expected"),Mt(t,t.lineIndent-1,ei,!1,!0),vt(t,!0,-1),t.checkLineBreaks&&ai.test(t.input.slice(o,t.position))&>(t,"non-ASCII line breaks are interpreted as content"),t.documents.push(t.result),t.position===t.lineStart&&kt(t)?void(46===t.input.charCodeAt(t.position)&&(t.position+=3,vt(t,!0,-1))):void(t.positioni&&" "!==t[u+1],u=o);else if(!Gt(a))return Qi;p=p&&Kt(a)}l=l||c&&o-u-1>i&&" "!==t[u+1]}return s||l?" "===t[0]&&n>9?Qi:l?Xi:Zi:p&&!r(t)?Ji:Vi}function Zt(t,e,n,i){t.dump=function(){function r(e){return Ht(t,e)}if(0===e.length)return"''";if(!t.noCompatMode&&Ki.indexOf(e)!==-1)return"'"+e+"'";var o=t.indent*Math.max(1,n),a=t.lineWidth===-1?-1:Math.max(Math.min(t.lineWidth,40),t.lineWidth-o),s=i||t.flowLevel>-1&&n>=t.flowLevel;switch(Vt(e,s,t.indent,a,r)){case Ji:return e;case Vi:return"'"+e.replace(/'/g,"''")+"'";case Zi:return"|"+Xt(e,t.indent)+Qt(Wt(e,o));case Xi:return">"+Xt(e,t.indent)+Qt(Wt(te(e,a),o));case Qi:return'"'+ne(e,a)+'"';default:throw new vi("impossible error: invalid scalar style")}}()}function Xt(t,e){var n=" "===t[0]?String(e):"",i="\n"===t[t.length-1],r=i&&("\n"===t[t.length-2]||"\n"===t),o=r?"+":i?"":"-";return n+o+"\n"}function Qt(t){return"\n"===t[t.length-1]?t.slice(0,-1):t}function te(t,e){for(var n,i,r=/(\n+)([^\n]*)/g,o=function(){var n=t.indexOf("\n");return n=n!==-1?n:t.length,r.lastIndex=n,ee(t.slice(0,n),e)}(),a="\n"===t[0]||" "===t[0];i=r.exec(t);){var s=i[1],l=i[2];n=" "===l[0],o+=s+(a||n||""===l?"":"\n")+ee(l,e),a=n}return o}function ee(t,e){if(""===t||" "===t[0])return t;for(var n,i,r=/ [^ ]/g,o=0,a=0,s=0,l="";n=r.exec(t);)s=n.index,s-o>e&&(i=a>o?a:s,l+="\n"+t.slice(o,i),o=i+1),a=s;return l+="\n",l+=t.length-o>e&&a>o?t.slice(o,a)+"\n"+t.slice(a+1):t.slice(o),l.slice(1)}function ne(t){for(var e,n,i="",r=0;r1024&&(s+="? "),s+=t.dump+": ",le(t,e,a,!1,!1)&&(s+=t.dump,l+=s));t.tag=c,t.dump="{"+l+"}"}function ae(t,e,n,i){var r,o,a,s,l,c,u="",p=t.tag,h=Object.keys(n);if(t.sortKeys===!0)h.sort();else if("function"==typeof t.sortKeys)h.sort(t.sortKeys);else if(t.sortKeys)throw new vi("sortKeys must be a boolean or a function");for(r=0,o=h.length;r1024,l&&(c+=t.dump&&_i===t.dump.charCodeAt(0)?"?":"? "),c+=t.dump,l&&(c+=Bt(t,e)),le(t,e+1,s,!0,l)&&(c+=t.dump&&_i===t.dump.charCodeAt(0)?":":": ",c+=t.dump,u+=c));t.tag=p,t.dump=u||"{}"}function se(t,e,n){var i,r,o,a,s,l;for(r=n?t.explicitTypes:t.implicitTypes,o=0,a=r.length;o tag resolver accepts not "'+l+'" style');i=s.represent[l](e,l)}t.dump=i}return!0}return!1}function le(t,e,n,i,r,o){t.tag=null,t.dump=n,se(t,n,!1)||se(t,n,!0);var a=Ai.call(t.dump);i&&(i=t.flowLevel<0||t.flowLevel>e);var s,l,c="[object Object]"===a||"[object Array]"===a;if(c&&(s=t.duplicates.indexOf(n),l=s!==-1),(null!==t.tag&&"?"!==t.tag||l||2!==t.indent&&e>0)&&(r=!1),l&&t.usedDuplicates[s])t.dump="*ref_"+s;else{if(c&&l&&!t.usedDuplicates[s]&&(t.usedDuplicates[s]=!0),"[object Object]"===a)i&&0!==Object.keys(t.dump).length?(ae(t,e,t.dump,r),l&&(t.dump="&ref_"+s+t.dump)):(oe(t,e,t.dump),l&&(t.dump="&ref_"+s+" "+t.dump));else if("[object Array]"===a)i&&0!==t.dump.length?(re(t,e,t.dump,r),l&&(t.dump="&ref_"+s+t.dump)):(ie(t,e,t.dump),l&&(t.dump="&ref_"+s+" "+t.dump));else{if("[object String]"!==a){if(t.skipInvalid)return!1;throw new vi("unacceptable kind of an object to dump "+a)}"?"!==t.tag&&Zt(t,t.dump,e,o)}null!==t.tag&&"?"!==t.tag&&(t.dump="!<"+t.tag+"> "+t.dump)}return!0}function ce(t,e){var n,i,r=[],o=[];for(ue(t,r,o),n=0,i=o.length;n code[class*="language-"],\npre[class*="language-"] {\n}\n\n/* Inline code */\n:not(pre) > code[class*="language-"] {\n\twhite-space: normal;\n}\n\n.token.comment,\n.token.prolog,\n.token.doctype,\n.token.cdata {\n\tcolor: slategray;\n}\n\n.token.punctuation {\n\tcolor: #999;\n}\n\n.namespace {\n\topacity: .7;\n}\n\n.token.property,\n.token.tag,\n.token.boolean,\n.token.number,\n.token.constant,\n.token.symbol,\n.token.deleted {\n\tcolor: #905;\n}\n\n.token.selector,\n.token.attr-name,\n.token.string,\n.token.char,\n.token.builtin,\n.token.inserted {\n\tcolor: #690;\n}\n\n.token.operator,\n.token.entity,\n.token.url,\n.language-css .token.string,\n.style .token.string {\n\tcolor: #a67f59;\n\tbackground: hsla(0, 0%, 100%, .5);\n}\n\n.token.atrule,\n.token.attr-value,\n.token.keyword {\n\tcolor: #07a;\n}\n\n.token.function {\n\tcolor: #DD4A68;\n}\n\n.token.regex,\n.token.important,\n.token.variable {\n\tcolor: #e90;\n}\n\n.token.important,\n.token.bold {\n\tfont-weight: bold;\n}\n.token.italic {\n\tfont-style: italic;\n}\n\n.token.entity {\n\tcursor: help;\n}\n',we=function(t){ -var e=t.createElement("style");e.textContent=ye+xe+ve+ke,t.querySelector("head").appendChild(e)},Ae=t,Ce=e,Se=n,_e=r,Ee=o,je=i,Le={isNothing:Ae,isObject:Ce,toArray:Se,repeat:_e,isNegativeZero:Ee,extend:je};a.prototype=Object.create(Error.prototype),a.prototype.constructor=a,a.prototype.toString=function(t){var e=this.name+": ";return e+=this.reason||"(unknown reason)",!t&&this.mark&&(e+=" "+this.mark.toString()),e};var Oe=a,Ie=Le;s.prototype.getSnippet=function(t,e){var n,i,r,o,a,s=this;if(!this.buffer)return null;for(t=t||4,e=e||75,n="",i=this.position;i>0&&"\0\r\n…\u2028\u2029".indexOf(this.buffer.charAt(i-1))===-1;)if(i-=1,s.position-i>e/2-1){n=" ... ",i+=5;break}for(r="",o=this.position;oe/2-1){r=" ... ",o-=5;break}return a=this.buffer.slice(i,o),Ie.repeat(" ",t)+n+a+r+"\n"+Ie.repeat(" ",t+this.position-i+n.length)+"^"},s.prototype.toString=function(t){var e,n="";return this.name&&(n+='in "'+this.name+'" '),n+="at line "+(this.line+1)+", column "+(this.column+1),t||(e=this.getSnippet(),e&&(n+=":\n"+e)),n};var Te=s,Me=Oe,Ne=["kind","resolve","construct","instanceOf","predicate","represent","defaultStyle","styleAliases"],Fe=["scalar","sequence","mapping"],qe=c,ze=Le,De=Oe,$e=qe;h.DEFAULT=null,h.create=function(){var t,e;switch(arguments.length){case 1:t=h.DEFAULT,e=arguments[0];break;case 2:t=arguments[0],e=arguments[1];break;default:throw new De("Wrong number of arguments for Schema.create function")}if(t=ze.toArray(t),e=ze.toArray(e),!t.every(function(t){return t instanceof h}))throw new De("Specified list of super schemas (or a single Schema object) contains a non-Schema object.");if(!e.every(function(t){return t instanceof $e}))throw new De("Specified list of YAML types (or a single Type object) contains a non-Type object.");return new h({include:t,explicit:e})};var Pe,Re=h,Ue=qe,We=new Ue("tag:yaml.org,2002:str",{kind:"scalar",construct:function(t){return null!==t?t:""}}),Be=qe,He=new Be("tag:yaml.org,2002:seq",{kind:"sequence",construct:function(t){return null!==t?t:[]}}),Ye=qe,Ge=new Ye("tag:yaml.org,2002:map",{kind:"mapping",construct:function(t){return null!==t?t:{}}}),Ke=Re,Je=new Ke({explicit:[We,He,Ge]}),Ve=qe,Ze=new Ve("tag:yaml.org,2002:null",{kind:"scalar",resolve:d,construct:f,predicate:g,represent:{canonical:function(){return"~"},lowercase:function(){return"null"},uppercase:function(){return"NULL"},camelcase:function(){return"Null"}},defaultStyle:"lowercase"}),Xe=qe,Qe=new Xe("tag:yaml.org,2002:bool",{kind:"scalar",resolve:m,construct:b,predicate:y,represent:{lowercase:function(t){return t?"true":"false"},uppercase:function(t){return t?"TRUE":"FALSE"},camelcase:function(t){return t?"True":"False"}},defaultStyle:"lowercase"}),tn=Le,en=qe,nn=new en("tag:yaml.org,2002:int",{kind:"scalar",resolve:w,construct:A,predicate:C,represent:{binary:function(t){return"0b"+t.toString(2)},octal:function(t){return"0"+t.toString(8)},decimal:function(t){return t.toString(10)},hexadecimal:function(t){return"0x"+t.toString(16).toUpperCase()}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}}),rn=Le,on=qe,an=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)\\.[0-9_]*(?:[eE][-+][0-9]+)?|\\.[0-9_]+(?:[eE][-+][0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$"),sn=/^[-+]?[0-9]+e/,ln=new on("tag:yaml.org,2002:float",{kind:"scalar",resolve:S,construct:_,predicate:j,represent:E,defaultStyle:"lowercase"}),cn=Re,un=new cn({include:[Je],implicit:[Ze,Qe,nn,ln]}),pn=Re,hn=new pn({include:[un]}),dn=qe,fn=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),gn=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$"),mn=new dn("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:L,construct:O,instanceOf:Date,represent:I}),bn=qe,yn=new bn("tag:yaml.org,2002:merge",{kind:"scalar",resolve:T}),xn="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};try{var vn=M;Pe=vn("buffer").Buffer}catch(t){}var kn,wn=qe,An="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r",Cn=new wn("tag:yaml.org,2002:binary",{kind:"scalar",resolve:F,construct:q,predicate:D,represent:z}),Sn=qe,_n=Object.prototype.hasOwnProperty,En=Object.prototype.toString,jn=new Sn("tag:yaml.org,2002:omap",{kind:"sequence",resolve:$,construct:P}),Ln=qe,On=Object.prototype.toString,In=new Ln("tag:yaml.org,2002:pairs",{kind:"sequence",resolve:R,construct:U}),Tn=qe,Mn=Object.prototype.hasOwnProperty,Nn=new Tn("tag:yaml.org,2002:set",{kind:"mapping",resolve:W,construct:B}),Fn=Re,qn=new Fn({include:[hn],implicit:[mn,yn],explicit:[Cn,jn,In,Nn]}),zn=qe,Dn=new zn("tag:yaml.org,2002:js/undefined",{kind:"scalar",resolve:H,construct:Y,predicate:K,represent:G}),$n=qe,Pn=new $n("tag:yaml.org,2002:js/regexp",{kind:"scalar",resolve:J,construct:V,predicate:X,represent:Z});try{var Rn=M;kn=Rn("esprima")}catch(t){"undefined"!=typeof window&&(kn=window.esprima)}for(var Un=qe,Wn=new Un("tag:yaml.org,2002:js/function",{kind:"scalar",resolve:Q,construct:tt,predicate:nt,represent:et}),Bn=Re,Hn=Bn.DEFAULT=new Bn({include:[qn],explicit:[Dn,Pn,Wn]}),Yn=Le,Gn=Oe,Kn=Te,Jn=qn,Vn=Hn,Zn=Object.prototype.hasOwnProperty,Xn=1,Qn=2,ti=3,ei=4,ni=1,ii=2,ri=3,oi=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,ai=/[\x85\u2028\u2029]/,si=/[,\[\]\{\}]/,li=/^(?:!|!!|![a-z\-]+!)$/i,ci=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i,ui=new Array(256),pi=new Array(256),hi=0;hi<256;hi++)ui[hi]=ut(hi)?1:0,pi[hi]=ut(hi);var di={YAML:function(t,e,n){var i,r,o;null!==t.version&&ft(t,"duplication of %YAML directive"),1!==n.length&&ft(t,"YAML directive accepts exactly one argument"),i=/^([0-9]+)\.([0-9]+)$/.exec(n[0]),null===i&&ft(t,"ill-formed argument of the YAML directive"),r=parseInt(i[1],10),o=parseInt(i[2],10),1!==r&&ft(t,"unacceptable YAML version of the document"),t.version=n[0],t.checkLineBreaks=o<2,1!==o&&2!==o&>(t,"unsupported YAML version of the document")},TAG:function(t,e,n){var i,r;2!==n.length&&ft(t,"TAG directive accepts exactly two arguments"),i=n[0],r=n[1],li.test(i)||ft(t,"ill-formed tag handle (first argument) of the TAG directive"),Zn.call(t.tagMap,i)&&ft(t,'there is a previously declared suffix for "'+i+'" tag handle'),ci.test(r)||ft(t,"ill-formed tag prefix (second argument) of the TAG directive"),t.tagMap[i]=r}},fi=qt,gi=zt,mi=Dt,bi=$t,yi={loadAll:fi,load:gi,safeLoadAll:mi,safeLoad:bi},xi=Le,vi=Oe,ki=Hn,wi=qn,Ai=Object.prototype.toString,Ci=Object.prototype.hasOwnProperty,Si=9,_i=10,Ei=32,ji=33,Li=34,Oi=35,Ii=37,Ti=38,Mi=39,Ni=42,Fi=44,qi=45,zi=58,Di=62,$i=63,Pi=64,Ri=91,Ui=93,Wi=96,Bi=123,Hi=124,Yi=125,Gi={};Gi[0]="\\0",Gi[7]="\\a",Gi[8]="\\b",Gi[9]="\\t",Gi[10]="\\n",Gi[11]="\\v",Gi[12]="\\f",Gi[13]="\\r",Gi[27]="\\e",Gi[34]='\\"',Gi[92]="\\\\",Gi[133]="\\N",Gi[160]="\\_",Gi[8232]="\\L",Gi[8233]="\\P";var Ki=["y","Y","yes","Yes","YES","on","On","ON","n","N","no","No","NO","off","Off","OFF"],Ji=1,Vi=2,Zi=3,Xi=4,Qi=5,tr=pe,er=he,nr={dump:tr,safeDump:er},ir=yi,rr=nr,or=qe,ar=Re,sr=Je,lr=un,cr=hn,ur=qn,pr=Hn,hr=ir.load,dr=ir.loadAll,fr=ir.safeLoad,gr=ir.safeLoadAll,mr=rr.dump,br=rr.safeDump,yr=Oe,xr=Je,vr=qn,kr=Hn,wr=de("scan"),Ar=de("parse"),Cr=de("compose"),Sr=de("addConstructor"),_r={Type:or,Schema:ar,FAILSAFE_SCHEMA:sr,JSON_SCHEMA:lr,CORE_SCHEMA:cr,DEFAULT_SAFE_SCHEMA:ur,DEFAULT_FULL_SCHEMA:pr,load:hr,loadAll:dr,safeLoad:fr,safeLoadAll:gr,dump:mr,safeDump:br,YAMLException:yr,MINIMAL_SCHEMA:xr,SAFE_SCHEMA:vr,DEFAULT_SCHEMA:kr,scan:wr,parse:Ar,compose:Cr,addConstructor:Sr},Er=_r,jr=Er,Lr=function(t,e){var n=t.querySelector('script[type="text/front-matter"]');if(n){var i=n.textContent,r=jr.safeLoad(i);e.title=r.title,e.description=r.description,e.authors=r.authors.map(function(t,e){var n={},i=Object.keys(t)[0],o=i.split(" ");if(n.firstName=o.slice(0,o.length-1).join(" "),n.lastName=o[o.length-1],n.personalURL=t[i],r.affiliations[e]){var a=Object.keys(r.affiliations[e])[0];n.affiliation=a,n.affiliationURL=r.affiliations[e][a]}return n})}},Or=N(function(t,e){!function(t){function e(){this.months=["jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec"],this.notKey=[",","{","}"," ","="],this.pos=0,this.input="",this.entries=new Array,this.currentEntry="",this.setInput=function(t){this.input=t},this.getEntries=function(){return this.entries},this.isWhitespace=function(t){return" "==t||"\r"==t||"\t"==t||"\n"==t},this.match=function(t,e){if(void 0!=e&&null!=e||(e=!0),this.skipWhitespace(e),this.input.substring(this.pos,this.pos+t.length)!=t)throw"Token mismatch, expected "+t+", found "+this.input.substring(this.pos);this.pos+=t.length,this.skipWhitespace(e)},this.tryMatch=function(t,e){return void 0!=e&&null!=e||(e=!0),this.skipWhitespace(e),this.input.substring(this.pos,this.pos+t.length)==t},this.matchAt=function(){for(var t=this;this.input.length>this.pos&&"@"!=this.input[this.pos];)t.pos++;return"@"==this.input[this.pos]},this.skipWhitespace=function(t){for(var e=this;this.isWhitespace(this.input[this.pos]);)e.pos++;if("%"==this.input[this.pos]&&1==t){for(;"\n"!=this.input[this.pos];)e.pos++;this.skipWhitespace(t)}},this.value_braces=function(){var t=this,e=0;this.match("{",!1);for(var n=this.pos,i=!1;;){if(!i)if("}"==t.input[t.pos]){if(!(e>0)){var r=t.pos;return t.match("}",!1),t.input.substring(n,r)}e--}else if("{"==t.input[t.pos])e++;else if(t.pos>=t.input.length-1)throw"Unterminated value";i="\\"==t.input[t.pos]&&0==i,t.pos++}},this.value_comment=function(){for(var t=this,e="",n=0;!this.tryMatch("}",!1)||0!=n;){if(e+=t.input[t.pos],"{"==t.input[t.pos]&&n++,"}"==t.input[t.pos]&&n--,t.pos>=t.input.length-1)throw"Unterminated value:"+t.input.substring(start);t.pos++}return e},this.value_quotes=function(){var t=this;this.match('"',!1);for(var e=this.pos,n=!1;;){if(!n){if('"'==t.input[t.pos]){var i=t.pos;return t.match('"',!1),t.input.substring(e,i)}if(t.pos>=t.input.length-1)throw"Unterminated value:"+t.input.substring(e)}n="\\"==t.input[t.pos]&&0==n,t.pos++}},this.single_value=function(){var t=this.pos;if(this.tryMatch("{"))return this.value_braces();if(this.tryMatch('"'))return this.value_quotes();var e=this.key();if(e.match("^[0-9]+$"))return e;if(this.months.indexOf(e.toLowerCase())>=0)return e.toLowerCase();throw"Value expected:"+this.input.substring(t)+" for key: "+e},this.value=function(){var t=this,e=[];for(e.push(this.single_value());this.tryMatch("#");)t.match("#"),e.push(t.single_value());return e.join("")},this.key=function(){for(var t=this,e=this.pos;;){if(t.pos>=t.input.length)throw"Runaway key";if(t.notKey.indexOf(t.input[t.pos])>=0)return t.input.substring(e,t.pos);t.pos++}},this.key_equals_value=function(){var t=this.key();if(this.tryMatch("=")){this.match("=");var e=this.value();return[t,e]}throw"... = value expected, equals sign missing:"+this.input.substring(this.pos)},this.key_value_list=function(){var t=this,e=this.key_equals_value();for(this.currentEntry.entryTags={},this.currentEntry.entryTags[e[0]]=e[1];this.tryMatch(",")&&(t.match(","),!t.tryMatch("}"));)e=t.key_equals_value(),t.currentEntry.entryTags[e[0]]=e[1]},this.entry_body=function(t){this.currentEntry={},this.currentEntry.citationKey=this.key(),this.currentEntry.entryType=t.substring(1),this.match(","),this.key_value_list(),this.entries.push(this.currentEntry)},this.directive=function(){return this.match("@"),"@"+this.key()},this.preamble=function(){this.currentEntry={},this.currentEntry.entryType="PREAMBLE",this.currentEntry.entry=this.value_comment(),this.entries.push(this.currentEntry)},this.comment=function(){this.currentEntry={},this.currentEntry.entryType="COMMENT",this.currentEntry.entry=this.value_comment(),this.entries.push(this.currentEntry)},this.entry=function(t){this.entry_body(t)},this.bibtex=function(){for(var t=this;this.matchAt();){var e=t.directive();t.match("{"),"@STRING"==e?t.string():"@PREAMBLE"==e?t.preamble():"@COMMENT"==e?t.comment():t.entry(e),t.match("}")}}}t.toJSON=function(t){var n=new e;return n.setInput(t),n.bibtex(),n.entries},t.toBibtex=function(t){var e="";for(var n in t){if(e+="@"+t[n].entryType,e+="{",t[n].citationKey&&(e+=t[n].citationKey+", "),t[n].entry&&(e+=t[n].entry),t[n].entryTags){var i="";for(var r in t[n].entryTags)0!=i.length&&(i+=", "),i+=r+"= {"+t[n].entryTags[r]+"}";e+=i}e+="}\n\n"}return e}}(e)}),Ir=function(t,e){var n=t.querySelector('script[type="text/bibliography"]');if(n){var i=n.textContent,r={};Or.toJSON(i).forEach(function(t){r[t.citationKey]=t.entryTags,r[t.citationKey].type=t.entryType});var o={},a=[].slice.apply(t.querySelectorAll("dt-cite"));a.forEach(function(t){var e=t.getAttribute("key").split(",");e.forEach(function(t){r[t]?o[t]=r[t]:console.warn("No bibliography entry found for: "+t)})}),e.citations=o}},Tr=function(t,e){var n=t.querySelector("head");if(fe(n,'\n \n \n \n \n '+e.title+"\n "),fe(n,'\n \n \n \n '),e.authors.forEach(function(t){fe(n,'\n ')}),fe(n,'\n \n \n \n \n \n \n \n \n '),fe(n,'\n \n \n \n \n \n \n \n \n '),fe(n,'\n \n \n \n \n \n \n \n \n \n \n \n \n '),e.authors.forEach(function(t){fe(n,'\n \n \n ')}),e.citations){var i=Object.keys(e.citations);i.forEach(function(t){console.log(t),fe(n,'\n \n ')})}},Mr='\n \n\n',Nr='\n\n\n
    \n',Fr=function(t,e){t.querySelector("dt-header").innerHTML=Nr},qr='\n\n\n
    \n

    References

    \n \n

    Errors, Reuse, and Citation

    \n

    If you see mistakes or want to suggest changes, please submit a pull request on github.

    \n

    Diagrams and text are licensed under Creative Commons Attribution CC-BY 2.0, unless noted otherwise, with the source available on available on github. The figures that have been reused from other sources don\'t fall under this license and can be recognized by a note in their caption: “Figure from …”.

    \n

    For attribution in academic contexts, please cite this work as

    \n
    \n  

    BibTeX citation

    \n
    \n
    \n',zr=function(t,e){var n=t.querySelector("dt-appendix");n&&(n.innerHTML=qr)},Dr='\n\n\n
    \n is dedicated to clear explanations of machine learning\n
    \n",$r=function(t,e){var n=t.querySelector("dt-footer");n&&(n.innerHTML=Dr)},Pr=function(t,e){function n(t){if(!(t in e.citations))return"?";var n=e.citations[t],i=n.author.split(" and ");i=i.map(function(t){return t.split(",")[0].trim()});var r=n.year;return 1==i.length?i[0]+", "+r:2==i.length?i[0]+" & "+i[1]+", "+r:i.length>2?i[0]+", et al., "+r:void 0}function i(t){if(t){var e=t.author.split(" and "),n="",i=e.map(function(t){var e=t.split(",")[0].trim(),n=t.split(",")[1];if(void 0!=n){var i=n.trim().split(" ").map(function(t){return t.trim()[0]});return e+", "+i.join(".")+"."}return e});if(e.length>1?(n+=i.slice(0,e.length-1).join(", "),n+=" and "+i[e.length-1]):n+=i[0],n+=", "+t.year+". ",n+=t.title+". ",n+=t.journal||t.booktitle||"","volume"in t){var r=t.issue||t.number;r=void 0!=r?"("+r+")":"",n+=", Vol "+t.volume+r}return"pages"in t&&(n+=", pp. "+t.pages),n+=". "}return"?"}var r=[];e.citations&&(r=Object.keys(e.citations).map(function(t){return e.citations[t]}),r.sort(function(t,e){return t.author.localeCompare(e.author)}));var o=[].slice.apply(t.querySelectorAll("dt-cite"));o.forEach(function(t){var e=t.textContent.split(","),i=e.map(n).join(", ");t.innerHTML=i});var a=t.querySelector("dt-bibliography");if(a){var s=t.createElement("ol");r.forEach(function(e){var n=t.createElement("li");n.textContent=i(e),s.appendChild(n)}),a.appendChild(s)}},Rr=N(function(t,e){(function(){function e(t){this.tokens=[],this.tokens.links={},this.options=t||u.defaults,this.rules=p.normal,this.options.gfm&&(this.options.tables?this.rules=p.tables:this.rules=p.gfm)}function n(t,e){if(this.options=e||u.defaults,this.links=t,this.rules=h.normal,this.renderer=this.options.renderer||new i,this.renderer.options=this.options,!this.links)throw new Error("Tokens array requires a `links` property.");this.options.gfm?this.options.breaks?this.rules=h.breaks:this.rules=h.gfm:this.options.pedantic&&(this.rules=h.pedantic)}function i(t){this.options=t||{}}function r(t){this.tokens=[],this.token=null,this.options=t||u.defaults,this.options.renderer=this.options.renderer||new i,this.renderer=this.options.renderer,this.renderer.options=this.options}function o(t,e){return t.replace(e?/&/g:/&(?!#?\w+;)/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}function a(t){return t.replace(/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/g,function(t,e){return e=e.toLowerCase(),"colon"===e?":":"#"===e.charAt(0)?"x"===e.charAt(1)?String.fromCharCode(parseInt(e.substring(2),16)):String.fromCharCode(+e.substring(1)):""})}function s(t,e){return t=t.source,e=e||"",function n(i,r){return i?(r=r.source||r,r=r.replace(/(^|[^\[])\^/g,"$1"),t=t.replace(i,r),n):new RegExp(t,e)}}function l(){}function c(t){for(var e,n,i=arguments,r=1;rAn error occured:

    "+o(t.message+"",!0)+"
    ";throw t}}var p={newline:/^\n+/,code:/^( {4}[^\n]+\n*)+/,fences:l,hr:/^( *[-*_]){3,} *(?:\n+|$)/,heading:/^ *(#{1,6}) *([^\n]+?) *#* *(?:\n+|$)/,nptable:l,lheading:/^([^\n]+)\n *(=|-){2,} *(?:\n+|$)/,blockquote:/^( *>[^\n]+(\n(?!def)[^\n]+)*\n*)+/,list:/^( *)(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?!\1bull )\n*|\s*$)/,html:/^ *(?:comment *(?:\n|\s*$)|closed *(?:\n{2,}|\s*$)|closing *(?:\n{2,}|\s*$))/,def:/^ *\[([^\]]+)\]: *]+)>?(?: +["(]([^\n]+)[")])? *(?:\n+|$)/,table:l,paragraph:/^((?:[^\n]+\n?(?!hr|heading|lheading|blockquote|tag|def))+)\n*/,text:/^[^\n]+/};p.bullet=/(?:[*+-]|\d+\.)/,p.item=/^( *)(bull) [^\n]*(?:\n(?!\1bull )[^\n]*)*/,p.item=s(p.item,"gm")(/bull/g,p.bullet)(),p.list=s(p.list)(/bull/g,p.bullet)("hr","\\n+(?=\\1?(?:[-*_] *){3,}(?:\\n+|$))")("def","\\n+(?="+p.def.source+")")(),p.blockquote=s(p.blockquote)("def",p.def)(),p._tag="(?!(?: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",p.html=s(p.html)("comment",//)("closed",/<(tag)[\s\S]+?<\/\1>/)("closing",/])*?>/)(/tag/g,p._tag)(),p.paragraph=s(p.paragraph)("hr",p.hr)("heading",p.heading)("lheading",p.lheading)("blockquote",p.blockquote)("tag","<"+p._tag)("def",p.def)(),p.normal=c({},p),p.gfm=c({},p.normal,{fences:/^ *(`{3,}|~{3,})[ \.]*(\S+)? *\n([\s\S]*?)\s*\1 *(?:\n+|$)/,paragraph:/^/,heading:/^ *(#{1,6}) +([^\n]+?) *#* *(?:\n+|$)/}),p.gfm.paragraph=s(p.paragraph)("(?!","(?!"+p.gfm.fences.source.replace("\\1","\\2")+"|"+p.list.source.replace("\\1","\\3")+"|")(),p.tables=c({},p.gfm,{nptable:/^ *(\S.*\|.*)\n *([-:]+ *\|[-| :]*)\n((?:.*\|.*(?:\n|$))*)\n*/,table:/^ *\|(.+)\n *\|( *[-:]+[-| :]*)\n((?: *\|.*(?:\n|$))*)\n*/}),e.rules=p,e.lex=function(t,n){var i=new e(n);return i.lex(t)},e.prototype.lex=function(t){return t=t.replace(/\r\n|\r/g,"\n").replace(/\t/g," ").replace(/\u00a0/g," ").replace(/\u2424/g,"\n"),this.token(t,!0)},e.prototype.token=function(t,e,n){for(var i,r,o,a,s,l,c,u,h,d=this,t=t.replace(/^ +$/gm,"");t;)if((o=d.rules.newline.exec(t))&&(t=t.substring(o[0].length),o[0].length>1&&d.tokens.push({type:"space"})),o=d.rules.code.exec(t))t=t.substring(o[0].length),o=o[0].replace(/^ {4}/gm,""),d.tokens.push({type:"code",text:d.options.pedantic?o:o.replace(/\n+$/,"")});else if(o=d.rules.fences.exec(t))t=t.substring(o[0].length),d.tokens.push({type:"code",lang:o[2],text:o[3]||""});else if(o=d.rules.heading.exec(t))t=t.substring(o[0].length),d.tokens.push({type:"heading",depth:o[1].length,text:o[2]});else if(e&&(o=d.rules.nptable.exec(t))){for(t=t.substring(o[0].length),l={type:"table",header:o[1].replace(/^ *| *\| *$/g,"").split(/ *\| */),align:o[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:o[3].replace(/\n$/,"").split("\n")},u=0;u ?/gm,""),d.token(o,e,!0),d.tokens.push({type:"blockquote_end"});else if(o=d.rules.list.exec(t)){for(t=t.substring(o[0].length),a=o[2],d.tokens.push({type:"list_start",ordered:a.length>1}),o=o[0].match(d.rules.item),i=!1,h=o.length,u=0;u1&&s.length>1||(t=o.slice(u+1).join("\n")+t,u=h-1)),r=i||/\n\n(?!\s*$)/.test(l),u!==h-1&&(i="\n"===l.charAt(l.length-1),r||(r=i)),d.tokens.push({type:r?"loose_item_start":"list_item_start"}),d.token(l,!1,n),d.tokens.push({type:"list_item_end"});d.tokens.push({type:"list_end"})}else if(o=d.rules.html.exec(t))t=t.substring(o[0].length),d.tokens.push({type:d.options.sanitize?"paragraph":"html",pre:!d.options.sanitizer&&("pre"===o[1]||"script"===o[1]||"style"===o[1]),text:o[0]});else if(!n&&e&&(o=d.rules.def.exec(t)))t=t.substring(o[0].length),d.tokens.links[o[1].toLowerCase()]={href:o[2],title:o[3]};else if(e&&(o=d.rules.table.exec(t))){for(t=t.substring(o[0].length),l={type:"table",header:o[1].replace(/^ *| *\| *$/g,"").split(/ *\| */),align:o[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:o[3].replace(/(?: *\| *)?\n$/,"").split("\n")},u=0;u])/,autolink:/^<([^ >]+(@|:\/)[^ >]+)>/,url:l,tag:/^|^<\/?\w+(?:"[^"]*"|'[^']*'|[^'">])*?>/,link:/^!?\[(inside)\]\(href\)/,reflink:/^!?\[(inside)\]\s*\[([^\]]*)\]/,nolink:/^!?\[((?:\[[^\]]*\]|[^\[\]])*)\]/,strong:/^__([\s\S]+?)__(?!_)|^\*\*([\s\S]+?)\*\*(?!\*)/,em:/^\b_((?:[^_]|__)+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,code:/^(`+)\s*([\s\S]*?[^`])\s*\1(?!`)/,br:/^ {2,}\n(?!\s*$)/,del:l,text:/^[\s\S]+?(?=[\\?(?:\s+['"]([\s\S]*?)['"])?\s*/,h.link=s(h.link)("inside",h._inside)("href",h._href)(),h.reflink=s(h.reflink)("inside",h._inside)(),h.normal=c({},h),h.pedantic=c({},h.normal,{strong:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,em:/^_(?=\S)([\s\S]*?\S)_(?!_)|^\*(?=\S)([\s\S]*?\S)\*(?!\*)/}),h.gfm=c({},h.normal,{escape:s(h.escape)("])","~|])")(),url:/^(https?:\/\/[^\s<]+[^<.,:;"')\]\s])/,del:/^~~(?=\S)([\s\S]*?\S)~~/,text:s(h.text)("]|","~]|")("|","|https?://|")()}),h.breaks=c({},h.gfm,{br:s(h.br)("{2,}","*")(),text:s(h.gfm.text)("{2,}","*")()}),n.rules=h,n.output=function(t,e,i){var r=new n(e,i);return r.output(t)},n.prototype.output=function(t){for(var e,n,i,r,a=this,s="";t;)if(r=a.rules.escape.exec(t))t=t.substring(r[0].length),s+=r[1];else if(r=a.rules.autolink.exec(t))t=t.substring(r[0].length),"@"===r[2]?(n=":"===r[1].charAt(6)?a.mangle(r[1].substring(7)):a.mangle(r[1]),i=a.mangle("mailto:")+n):(n=o(r[1]),i=n),s+=a.renderer.link(i,null,n);else if(a.inLink||!(r=a.rules.url.exec(t))){if(r=a.rules.tag.exec(t))!a.inLink&&/^/i.test(r[0])&&(a.inLink=!1),t=t.substring(r[0].length),s+=a.options.sanitize?a.options.sanitizer?a.options.sanitizer(r[0]):o(r[0]):r[0];else if(r=a.rules.link.exec(t))t=t.substring(r[0].length),a.inLink=!0,s+=a.outputLink(r,{href:r[2],title:r[3]}),a.inLink=!1;else if((r=a.rules.reflink.exec(t))||(r=a.rules.nolink.exec(t))){if(t=t.substring(r[0].length),e=(r[2]||r[1]).replace(/\s+/g," "),e=a.links[e.toLowerCase()],!e||!e.href){s+=r[0].charAt(0),t=r[0].substring(1)+t;continue}a.inLink=!0,s+=a.outputLink(r,e),a.inLink=!1}else if(r=a.rules.strong.exec(t))t=t.substring(r[0].length),s+=a.renderer.strong(a.output(r[2]||r[1]));else if(r=a.rules.em.exec(t))t=t.substring(r[0].length),s+=a.renderer.em(a.output(r[2]||r[1]));else if(r=a.rules.code.exec(t))t=t.substring(r[0].length),s+=a.renderer.codespan(o(r[2],!0));else if(r=a.rules.br.exec(t))t=t.substring(r[0].length),s+=a.renderer.br();else if(r=a.rules.del.exec(t))t=t.substring(r[0].length),s+=a.renderer.del(a.output(r[1]));else if(r=a.rules.text.exec(t))t=t.substring(r[0].length),s+=a.renderer.text(o(a.smartypants(r[0])));else if(t)throw new Error("Infinite loop on byte: "+t.charCodeAt(0))}else t=t.substring(r[0].length),n=o(r[1]),i=n,s+=a.renderer.link(i,null,n);return s},n.prototype.outputLink=function(t,e){var n=o(e.href),i=e.title?o(e.title):null;return"!"!==t[0].charAt(0)?this.renderer.link(n,i,this.output(t[1])):this.renderer.image(n,i,o(t[1])); -},n.prototype.smartypants=function(t){return this.options.smartypants?t.replace(/---/g,"—").replace(/--/g,"–").replace(/(^|[-\u2014\/(\[{"\s])'/g,"$1‘").replace(/'/g,"’").replace(/(^|[-\u2014\/(\[{\u2018\s])"/g,"$1“").replace(/"/g,"”").replace(/\.{3}/g,"…"):t},n.prototype.mangle=function(t){if(!this.options.mangle)return t;for(var e,n="",i=t.length,r=0;r.5&&(e="x"+e.toString(16)),n+="&#"+e+";";return n},i.prototype.code=function(t,e,n){if(this.options.highlight){var i=this.options.highlight(t,e);null!=i&&i!==t&&(n=!0,t=i)}return e?'
    '+(n?t:o(t,!0))+"\n
    \n":"
    "+(n?t:o(t,!0))+"\n
    "},i.prototype.blockquote=function(t){return"
    \n"+t+"
    \n"},i.prototype.html=function(t){return t},i.prototype.heading=function(t,e,n){return"'+t+"\n"},i.prototype.hr=function(){return this.options.xhtml?"
    \n":"
    \n"},i.prototype.list=function(t,e){var n=e?"ol":"ul";return"<"+n+">\n"+t+"\n"},i.prototype.listitem=function(t){return"
  • "+t+"
  • \n"},i.prototype.paragraph=function(t){return"

    "+t+"

    \n"},i.prototype.table=function(t,e){return"\n\n"+t+"\n\n"+e+"\n
    \n"},i.prototype.tablerow=function(t){return"\n"+t+"\n"},i.prototype.tablecell=function(t,e){var n=e.header?"th":"td",i=e.align?"<"+n+' style="text-align:'+e.align+'">':"<"+n+">";return i+t+"\n"},i.prototype.strong=function(t){return""+t+""},i.prototype.em=function(t){return""+t+""},i.prototype.codespan=function(t){return""+t+""},i.prototype.br=function(){return this.options.xhtml?"
    ":"
    "},i.prototype.del=function(t){return""+t+""},i.prototype.link=function(t,e,n){if(this.options.sanitize){try{var i=decodeURIComponent(a(t)).replace(/[^\w:]/g,"").toLowerCase()}catch(t){return""}if(0===i.indexOf("javascript:")||0===i.indexOf("vbscript:"))return""}var r='
    "},i.prototype.image=function(t,e,n){var i=''+n+'":">"},i.prototype.text=function(t){return t},r.parse=function(t,e,n){var i=new r(e,n);return i.parse(t)},r.prototype.parse=function(t){var e=this;this.inline=new n(t.links,this.options,this.renderer),this.tokens=t.reverse();for(var i="";this.next();)i+=e.tok();return i},r.prototype.next=function(){return this.token=this.tokens.pop()},r.prototype.peek=function(){return this.tokens[this.tokens.length-1]||0},r.prototype.parseText=function(){for(var t=this,e=this.token.text;"text"===this.peek().type;)e+="\n"+t.next().text;return this.inline.output(e)},r.prototype.tok=function(){var t=this;switch(this.token.type){case"space":return"";case"hr":return this.renderer.hr();case"heading":return this.renderer.heading(this.inline.output(this.token.text),this.token.depth,this.token.text);case"code":return this.renderer.code(this.token.text,this.token.lang,this.token.escaped);case"table":var e,n,i,r,o,a="",s="";for(i="",e=0;et.length)break t;if(!(x instanceof r)){u.lastIndex=0;var v=u.exec(x),k=1;if(!v&&d&&b!=o.length-1){if(u.lastIndex=y,v=u.exec(t),!v)break;for(var w=v.index+(h?v[1].length:0),A=v.index+v[0].length,C=b,S=y,_=o.length;C<_&&S=S&&(++b,y=S);if(o[b]instanceof r||o[C-1].greedy)continue;k=C-b,x=t.slice(y,S),v.index-=y}if(v){h&&(f=v[1].length);var w=v.index+f,v=v[0].slice(f),A=w+v.length,E=x.slice(0,w),j=x.slice(A),L=[b,k];E&&L.push(E);var O=new r(s,p?i.tokenize(v,p):v,g,v,d);L.push(O),j&&L.push(j),Array.prototype.splice.apply(o,L)}}}}}return o},hooks:{all:{},add:function(t,e){var n=i.hooks.all;n[t]=n[t]||[],n[t].push(e)},run:function(t,e){var n=i.hooks.all[t];if(n&&n.length)for(var r,o=0;r=n[o++];)r(e)}}},r=i.Token=function(t,e,n,i,r){this.type=t,this.content=e,this.alias=n,this.length=0|(i||"").length,this.greedy=!!r};if(r.stringify=function(t,e,n){if("string"==typeof t)return t;if("Array"===i.util.type(t))return t.map(function(n){return r.stringify(n,e,t)}).join("");var o={type:t.type,content:r.stringify(t.content,e,n),tag:"span",classes:["token",t.type],attributes:{},language:e,parent:n};if("comment"==o.type&&(o.attributes.spellcheck="true"),t.alias){var a="Array"===i.util.type(t.alias)?t.alias:[t.alias];Array.prototype.push.apply(o.classes,a)}i.hooks.run("wrap",o);var s=Object.keys(o.attributes).map(function(t){return t+'="'+(o.attributes[t]||"").replace(/"/g,""")+'"'}).join(" ");return"<"+o.tag+' class="'+o.classes.join(" ")+'"'+(s?" "+s:"")+">"+o.content+""},!e.document)return e.addEventListener?(e.addEventListener("message",function(t){var n=JSON.parse(t.data),r=n.language,o=n.code,a=n.immediateClose;e.postMessage(i.highlight(o,i.languages[r],r)),a&&e.close()},!1),e.Prism):e.Prism;var o=document.currentScript||[].slice.call(document.getElementsByTagName("script")).pop();return o&&(i.filename=o.src,document.addEventListener&&!o.hasAttribute("data-manual")&&("loading"!==document.readyState?window.requestAnimationFrame?window.requestAnimationFrame(i.highlightAll):window.setTimeout(i.highlightAll,16):document.addEventListener("DOMContentLoaded",i.highlightAll))),e.Prism}();t.exports&&(t.exports=n),"undefined"!=typeof xn&&(xn.Prism=n),n.languages.markup={comment://,prolog:/<\?[\w\W]+?\?>/,doctype://i,cdata://i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\\1|\\?(?!\1)[\w\W])*\1|[^\s'">=]+))?)*\s*\/?>/i,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:('|")[\w\W]*?(\1)|[^\s>]+)/i,inside:{punctuation:/[=>"']/}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},n.hooks.add("wrap",function(t){"entity"===t.type&&(t.attributes.title=t.content.replace(/&/,"&"))}),n.languages.xml=n.languages.markup,n.languages.html=n.languages.markup,n.languages.mathml=n.languages.markup,n.languages.svg=n.languages.markup,n.languages.css={comment:/\/\*[\w\W]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(\\(?:\r\n|[\w\W])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^\{\}\s][^\{\};]*?(?=\s*\{)/,string:{pattern:/("|')(\\(?:\r\n|[\w\W])|(?!\1)[^\\\r\n])*\1/,greedy:!0},property:/(\b|\B)[\w-]+(?=\s*:)/i,important:/\B!important\b/i,function:/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},n.languages.css.atrule.inside.rest=n.util.clone(n.languages.css),n.languages.markup&&(n.languages.insertBefore("markup","tag",{style:{pattern:/()[\w\W]*?(?=<\/style>)/i,lookbehind:!0,inside:n.languages.css,alias:"language-css"}}),n.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|').*?\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:n.languages.markup.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:n.languages.css}},alias:"language-css"}},n.languages.markup.tag)),n.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\w\W]*?\*\//,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0}],string:{pattern:/(["'])(\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/((?:\b(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[a-z0-9_\.\\]+/i,lookbehind:!0,inside:{punctuation:/(\.|\\)/}},keyword:/\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/,boolean:/\b(true|false)\b/,function:/[a-z0-9_]+(?=\()/i,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/},n.languages.javascript=n.languages.extend("clike",{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/,number:/\b-?(0x[\dA-Fa-f]+|0b[01]+|0o[0-7]+|\d*\.?\d+([Ee][+-]?\d+)?|NaN|Infinity)\b/,function:/[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*(?=\()/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*\*?|\/|~|\^|%|\.{3}/}),n.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^\/])\/(?!\/)(\[.+?]|\\.|[^\/\\\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0,greedy:!0}}),n.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\\\|\\?[^\\])*?`/,greedy:!0,inside:{interpolation:{pattern:/\$\{[^}]+\}/,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:n.languages.javascript}},string:/[\s\S]+/}}}),n.languages.markup&&n.languages.insertBefore("markup","tag",{script:{pattern:/()[\w\W]*?(?=<\/script>)/i,lookbehind:!0,inside:n.languages.javascript,alias:"language-javascript"}}),n.languages.js=n.languages.javascript,function(){"undefined"!=typeof self&&self.Prism&&self.document&&document.querySelector&&(self.Prism.fileHighlight=function(){var t={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"};Array.prototype.forEach&&Array.prototype.slice.call(document.querySelectorAll("pre[data-src]")).forEach(function(e){for(var i,r=e.getAttribute("data-src"),o=e,a=/\blang(?:uage)?-(?!\*)(\w+)\b/i;o&&!a.test(o.className);)o=o.parentNode;if(o&&(i=(e.className.match(a)||[,""])[1]),!i){var s=(r.match(/\.(\w+)$/)||[,""])[1];i=t[s]||s}var l=document.createElement("code");l.className="language-"+i,e.textContent="",l.textContent="Loading…",e.appendChild(l);var c=new XMLHttpRequest;c.open("GET",r,!0),c.onreadystatechange=function(){4==c.readyState&&(c.status<400&&c.responseText?(l.textContent=c.responseText,n.highlightElement(l)):c.status>=400?l.textContent="✖ Error "+c.status+" while fetching file: "+c.statusText:l.textContent="✖ Error: File does not exist or is empty")},c.send(null)})},document.addEventListener("DOMContentLoaded",self.Prism.fileHighlight))}()}),Br=function(t,e){var n=[].slice.call(t.querySelectorAll("dt-code"));n.forEach(function(e){var n=e.textContent;e.innerHTML="";var i=e.getAttribute("language"),r=t.createElement("code");if(""===e.getAttribute("block")){n=n.replace(/\n/,"");var o=n.match(/\s*/);n=n.replace(new RegExp("\n"+o,"g"),"\n"),n=n.trim();var a=t.createElement("pre");a.appendChild(r),e.appendChild(a)}else e.appendChild(r);var s=n;Wr.languages[i]&&(r.setAttribute("class","language-"+i),s=Wr.highlight(n,Wr.languages[i])),r.innerHTML=s})},Hr={title:"Experiments in Handwriting with a Neural Network",description:"Several interactive visualizations of a generative model of handwriting. Some are fun, some are serious.",url:"http://distill.pub/2016/handwriting/",github:"https://github.com/distillpub/post--handwriting",firstPublished:"Tue Dec 6 2016 21:39:33 GMT-0700 (PDT)",lastPublished:"Tue Dec 6 2016 21:39:33 GMT-0700 (PDT)",authors:[{firstName:"Shan",lastName:"Carter",personalURL:"http://shancarter.com",affiliation:"Google Brain",affiliationURL:"http://g.co/brain"},{firstName:"David",lastName:"Ha",personalURL:"https://github.com/hardmaru",affiliation:"Google Brain",affiliationURL:"http://g.co/brain"},{firstName:"Ian",lastName:"Johnson",personalURL:"https://github.com/enjalot",affiliation:"Google Cloud",affiliationURL:""},{firstName:"Chris",lastName:"Olah",personalURL:"http://colah.github.io/",affiliation:"Google Brain",affiliationURL:"http://g.co/brain"}],journal:{title:"Distill",full_title:"Distill",abbrev_title:"Distill",url:"http://distill.pub",doi:"00.0000/dstl",issn:"0000-0000"}};return window.document&&me(window.document,Hr),me}(); -//# sourceMappingURL=template.min.js.map diff --git a/dist/template.min.js.map b/dist/template.min.js.map deleted file mode 100644 index a4caaf5..0000000 --- a/dist/template.min.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":null,"sources":["../node_modules/js-yaml/lib/js-yaml/common.js","../node_modules/js-yaml/lib/js-yaml/exception.js","../node_modules/js-yaml/lib/js-yaml/mark.js","../node_modules/js-yaml/lib/js-yaml/type.js","../node_modules/js-yaml/lib/js-yaml/schema.js","../node_modules/js-yaml/lib/js-yaml/type/null.js","../node_modules/js-yaml/lib/js-yaml/type/bool.js","../node_modules/js-yaml/lib/js-yaml/type/int.js","../node_modules/js-yaml/lib/js-yaml/type/float.js","../node_modules/js-yaml/lib/js-yaml/type/timestamp.js","../node_modules/js-yaml/lib/js-yaml/type/merge.js","../node_modules/js-yaml/lib/js-yaml/type/binary.js","../node_modules/js-yaml/lib/js-yaml/type/omap.js","../node_modules/js-yaml/lib/js-yaml/type/pairs.js","../node_modules/js-yaml/lib/js-yaml/type/set.js","../node_modules/js-yaml/lib/js-yaml/type/js/undefined.js","../node_modules/js-yaml/lib/js-yaml/type/js/regexp.js","../node_modules/js-yaml/lib/js-yaml/type/js/function.js","../node_modules/js-yaml/lib/js-yaml/loader.js","../node_modules/js-yaml/lib/js-yaml/dumper.js","../node_modules/js-yaml/lib/js-yaml.js","../components/meta.js","../index.js","../components/html.js","../components/styles.js","../node_modules/js-yaml/lib/js-yaml/type/str.js","../node_modules/js-yaml/lib/js-yaml/type/seq.js","../node_modules/js-yaml/lib/js-yaml/type/map.js","../node_modules/js-yaml/lib/js-yaml/schema/failsafe.js","../node_modules/js-yaml/lib/js-yaml/schema/json.js","../node_modules/js-yaml/lib/js-yaml/schema/core.js","../node_modules/js-yaml/lib/js-yaml/schema/default_safe.js","../node_modules/js-yaml/lib/js-yaml/schema/default_full.js","../node_modules/js-yaml/index.js","../components/front-matter.js","../node_modules/bibtex-parse-js/bibtexParse.js","../components/bibliography.js","../components/header.js","../components/appendix.js","../components/footer.js","../components/citation.js","../node_modules/marked/lib/marked.js","../components/markdown.js","../node_modules/prismjs/prism.js","../components/code.js","../test-data.js"],"sourcesContent":["'use strict';\n\n\nfunction isNothing(subject) {\n return (typeof subject === 'undefined') || (subject === null);\n}\n\n\nfunction isObject(subject) {\n return (typeof subject === 'object') && (subject !== null);\n}\n\n\nfunction toArray(sequence) {\n if (Array.isArray(sequence)) return sequence;\n else if (isNothing(sequence)) return [];\n\n return [ sequence ];\n}\n\n\nfunction extend(target, source) {\n var index, length, key, sourceKeys;\n\n if (source) {\n sourceKeys = Object.keys(source);\n\n for (index = 0, length = sourceKeys.length; index < length; index += 1) {\n key = sourceKeys[index];\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\n\nfunction repeat(string, count) {\n var result = '', cycle;\n\n for (cycle = 0; cycle < count; cycle += 1) {\n result += string;\n }\n\n return result;\n}\n\n\nfunction isNegativeZero(number) {\n return (number === 0) && (Number.NEGATIVE_INFINITY === 1 / number);\n}\n\n\nmodule.exports.isNothing = isNothing;\nmodule.exports.isObject = isObject;\nmodule.exports.toArray = toArray;\nmodule.exports.repeat = repeat;\nmodule.exports.isNegativeZero = isNegativeZero;\nmodule.exports.extend = extend;\n","// YAML error class. http://stackoverflow.com/questions/8458984\n//\n'use strict';\n\nfunction YAMLException(reason, mark) {\n // Super constructor\n Error.call(this);\n\n // Include stack trace in error object\n if (Error.captureStackTrace) {\n // Chrome and NodeJS\n Error.captureStackTrace(this, this.constructor);\n } else {\n // FF, IE 10+ and Safari 6+. Fallback for others\n this.stack = (new Error()).stack || '';\n }\n\n this.name = 'YAMLException';\n this.reason = reason;\n this.mark = mark;\n this.message = (this.reason || '(unknown reason)') + (this.mark ? ' ' + this.mark.toString() : '');\n}\n\n\n// Inherit from Error\nYAMLException.prototype = Object.create(Error.prototype);\nYAMLException.prototype.constructor = YAMLException;\n\n\nYAMLException.prototype.toString = function toString(compact) {\n var result = this.name + ': ';\n\n result += this.reason || '(unknown reason)';\n\n if (!compact && this.mark) {\n result += ' ' + this.mark.toString();\n }\n\n return result;\n};\n\n\nmodule.exports = YAMLException;\n","'use strict';\n\n\nvar common = require('./common');\n\n\nfunction Mark(name, buffer, position, line, column) {\n this.name = name;\n this.buffer = buffer;\n this.position = position;\n this.line = line;\n this.column = column;\n}\n\n\nMark.prototype.getSnippet = function getSnippet(indent, maxLength) {\n var head, start, tail, end, snippet;\n\n if (!this.buffer) return null;\n\n indent = indent || 4;\n maxLength = maxLength || 75;\n\n head = '';\n start = this.position;\n\n while (start > 0 && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(start - 1)) === -1) {\n start -= 1;\n if (this.position - start > (maxLength / 2 - 1)) {\n head = ' ... ';\n start += 5;\n break;\n }\n }\n\n tail = '';\n end = this.position;\n\n while (end < this.buffer.length && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(end)) === -1) {\n end += 1;\n if (end - this.position > (maxLength / 2 - 1)) {\n tail = ' ... ';\n end -= 5;\n break;\n }\n }\n\n snippet = this.buffer.slice(start, end);\n\n return common.repeat(' ', indent) + head + snippet + tail + '\\n' +\n common.repeat(' ', indent + this.position - start + head.length) + '^';\n};\n\n\nMark.prototype.toString = function toString(compact) {\n var snippet, where = '';\n\n if (this.name) {\n where += 'in \"' + this.name + '\" ';\n }\n\n where += 'at line ' + (this.line + 1) + ', column ' + (this.column + 1);\n\n if (!compact) {\n snippet = this.getSnippet();\n\n if (snippet) {\n where += ':\\n' + snippet;\n }\n }\n\n return where;\n};\n\n\nmodule.exports = Mark;\n","'use strict';\n\nvar YAMLException = require('./exception');\n\nvar TYPE_CONSTRUCTOR_OPTIONS = [\n 'kind',\n 'resolve',\n 'construct',\n 'instanceOf',\n 'predicate',\n 'represent',\n 'defaultStyle',\n 'styleAliases'\n];\n\nvar YAML_NODE_KINDS = [\n 'scalar',\n 'sequence',\n 'mapping'\n];\n\nfunction compileStyleAliases(map) {\n var result = {};\n\n if (map !== null) {\n Object.keys(map).forEach(function (style) {\n map[style].forEach(function (alias) {\n result[String(alias)] = style;\n });\n });\n }\n\n return result;\n}\n\nfunction Type(tag, options) {\n options = options || {};\n\n Object.keys(options).forEach(function (name) {\n if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) {\n throw new YAMLException('Unknown option \"' + name + '\" is met in definition of \"' + tag + '\" YAML type.');\n }\n });\n\n // TODO: Add tag format check.\n this.tag = tag;\n this.kind = options['kind'] || null;\n this.resolve = options['resolve'] || function () { return true; };\n this.construct = options['construct'] || function (data) { return data; };\n this.instanceOf = options['instanceOf'] || null;\n this.predicate = options['predicate'] || null;\n this.represent = options['represent'] || null;\n this.defaultStyle = options['defaultStyle'] || null;\n this.styleAliases = compileStyleAliases(options['styleAliases'] || null);\n\n if (YAML_NODE_KINDS.indexOf(this.kind) === -1) {\n throw new YAMLException('Unknown kind \"' + this.kind + '\" is specified for \"' + tag + '\" YAML type.');\n }\n}\n\nmodule.exports = Type;\n","'use strict';\n\n/*eslint-disable max-len*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar Type = require('./type');\n\n\nfunction compileList(schema, name, result) {\n var exclude = [];\n\n schema.include.forEach(function (includedSchema) {\n result = compileList(includedSchema, name, result);\n });\n\n schema[name].forEach(function (currentType) {\n result.forEach(function (previousType, previousIndex) {\n if (previousType.tag === currentType.tag && previousType.kind === currentType.kind) {\n exclude.push(previousIndex);\n }\n });\n\n result.push(currentType);\n });\n\n return result.filter(function (type, index) {\n return exclude.indexOf(index) === -1;\n });\n}\n\n\nfunction compileMap(/* lists... */) {\n var result = {\n scalar: {},\n sequence: {},\n mapping: {},\n fallback: {}\n }, index, length;\n\n function collectType(type) {\n result[type.kind][type.tag] = result['fallback'][type.tag] = type;\n }\n\n for (index = 0, length = arguments.length; index < length; index += 1) {\n arguments[index].forEach(collectType);\n }\n return result;\n}\n\n\nfunction Schema(definition) {\n this.include = definition.include || [];\n this.implicit = definition.implicit || [];\n this.explicit = definition.explicit || [];\n\n this.implicit.forEach(function (type) {\n if (type.loadKind && type.loadKind !== 'scalar') {\n throw new YAMLException('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.');\n }\n });\n\n this.compiledImplicit = compileList(this, 'implicit', []);\n this.compiledExplicit = compileList(this, 'explicit', []);\n this.compiledTypeMap = compileMap(this.compiledImplicit, this.compiledExplicit);\n}\n\n\nSchema.DEFAULT = null;\n\n\nSchema.create = function createSchema() {\n var schemas, types;\n\n switch (arguments.length) {\n case 1:\n schemas = Schema.DEFAULT;\n types = arguments[0];\n break;\n\n case 2:\n schemas = arguments[0];\n types = arguments[1];\n break;\n\n default:\n throw new YAMLException('Wrong number of arguments for Schema.create function');\n }\n\n schemas = common.toArray(schemas);\n types = common.toArray(types);\n\n if (!schemas.every(function (schema) { return schema instanceof Schema; })) {\n throw new YAMLException('Specified list of super schemas (or a single Schema object) contains a non-Schema object.');\n }\n\n if (!types.every(function (type) { return type instanceof Type; })) {\n throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.');\n }\n\n return new Schema({\n include: schemas,\n explicit: types\n });\n};\n\n\nmodule.exports = Schema;\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlNull(data) {\n if (data === null) return true;\n\n var max = data.length;\n\n return (max === 1 && data === '~') ||\n (max === 4 && (data === 'null' || data === 'Null' || data === 'NULL'));\n}\n\nfunction constructYamlNull() {\n return null;\n}\n\nfunction isNull(object) {\n return object === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:null', {\n kind: 'scalar',\n resolve: resolveYamlNull,\n construct: constructYamlNull,\n predicate: isNull,\n represent: {\n canonical: function () { return '~'; },\n lowercase: function () { return 'null'; },\n uppercase: function () { return 'NULL'; },\n camelcase: function () { return 'Null'; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlBoolean(data) {\n if (data === null) return false;\n\n var max = data.length;\n\n return (max === 4 && (data === 'true' || data === 'True' || data === 'TRUE')) ||\n (max === 5 && (data === 'false' || data === 'False' || data === 'FALSE'));\n}\n\nfunction constructYamlBoolean(data) {\n return data === 'true' ||\n data === 'True' ||\n data === 'TRUE';\n}\n\nfunction isBoolean(object) {\n return Object.prototype.toString.call(object) === '[object Boolean]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:bool', {\n kind: 'scalar',\n resolve: resolveYamlBoolean,\n construct: constructYamlBoolean,\n predicate: isBoolean,\n represent: {\n lowercase: function (object) { return object ? 'true' : 'false'; },\n uppercase: function (object) { return object ? 'TRUE' : 'FALSE'; },\n camelcase: function (object) { return object ? 'True' : 'False'; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nfunction isHexCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) ||\n ((0x41/* A */ <= c) && (c <= 0x46/* F */)) ||\n ((0x61/* a */ <= c) && (c <= 0x66/* f */));\n}\n\nfunction isOctCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x37/* 7 */));\n}\n\nfunction isDecCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */));\n}\n\nfunction resolveYamlInteger(data) {\n if (data === null) return false;\n\n var max = data.length,\n index = 0,\n hasDigits = false,\n ch;\n\n if (!max) return false;\n\n ch = data[index];\n\n // sign\n if (ch === '-' || ch === '+') {\n ch = data[++index];\n }\n\n if (ch === '0') {\n // 0\n if (index + 1 === max) return true;\n ch = data[++index];\n\n // base 2, base 8, base 16\n\n if (ch === 'b') {\n // base 2\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch !== '0' && ch !== '1') return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n\n if (ch === 'x') {\n // base 16\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isHexCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n // base 8\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isOctCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n // base 10 (except 0) or base 60\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch === ':') break;\n if (!isDecCode(data.charCodeAt(index))) {\n return false;\n }\n hasDigits = true;\n }\n\n if (!hasDigits) return false;\n\n // if !base60 - done;\n if (ch !== ':') return true;\n\n // base60 almost not used, no needs to optimize\n return /^(:[0-5]?[0-9])+$/.test(data.slice(index));\n}\n\nfunction constructYamlInteger(data) {\n var value = data, sign = 1, ch, base, digits = [];\n\n if (value.indexOf('_') !== -1) {\n value = value.replace(/_/g, '');\n }\n\n ch = value[0];\n\n if (ch === '-' || ch === '+') {\n if (ch === '-') sign = -1;\n value = value.slice(1);\n ch = value[0];\n }\n\n if (value === '0') return 0;\n\n if (ch === '0') {\n if (value[1] === 'b') return sign * parseInt(value.slice(2), 2);\n if (value[1] === 'x') return sign * parseInt(value, 16);\n return sign * parseInt(value, 8);\n }\n\n if (value.indexOf(':') !== -1) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseInt(v, 10));\n });\n\n value = 0;\n base = 1;\n\n digits.forEach(function (d) {\n value += (d * base);\n base *= 60;\n });\n\n return sign * value;\n\n }\n\n return sign * parseInt(value, 10);\n}\n\nfunction isInteger(object) {\n return (Object.prototype.toString.call(object)) === '[object Number]' &&\n (object % 1 === 0 && !common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:int', {\n kind: 'scalar',\n resolve: resolveYamlInteger,\n construct: constructYamlInteger,\n predicate: isInteger,\n represent: {\n binary: function (object) { return '0b' + object.toString(2); },\n octal: function (object) { return '0' + object.toString(8); },\n decimal: function (object) { return object.toString(10); },\n hexadecimal: function (object) { return '0x' + object.toString(16).toUpperCase(); }\n },\n defaultStyle: 'decimal',\n styleAliases: {\n binary: [ 2, 'bin' ],\n octal: [ 8, 'oct' ],\n decimal: [ 10, 'dec' ],\n hexadecimal: [ 16, 'hex' ]\n }\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nvar YAML_FLOAT_PATTERN = new RegExp(\n '^(?:[-+]?(?:[0-9][0-9_]*)\\\\.[0-9_]*(?:[eE][-+][0-9]+)?' +\n '|\\\\.[0-9_]+(?:[eE][-+][0-9]+)?' +\n '|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\\\.[0-9_]*' +\n '|[-+]?\\\\.(?:inf|Inf|INF)' +\n '|\\\\.(?:nan|NaN|NAN))$');\n\nfunction resolveYamlFloat(data) {\n if (data === null) return false;\n\n if (!YAML_FLOAT_PATTERN.test(data)) return false;\n\n return true;\n}\n\nfunction constructYamlFloat(data) {\n var value, sign, base, digits;\n\n value = data.replace(/_/g, '').toLowerCase();\n sign = value[0] === '-' ? -1 : 1;\n digits = [];\n\n if ('+-'.indexOf(value[0]) >= 0) {\n value = value.slice(1);\n }\n\n if (value === '.inf') {\n return (sign === 1) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;\n\n } else if (value === '.nan') {\n return NaN;\n\n } else if (value.indexOf(':') >= 0) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseFloat(v, 10));\n });\n\n value = 0.0;\n base = 1;\n\n digits.forEach(function (d) {\n value += d * base;\n base *= 60;\n });\n\n return sign * value;\n\n }\n return sign * parseFloat(value, 10);\n}\n\n\nvar SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/;\n\nfunction representYamlFloat(object, style) {\n var res;\n\n if (isNaN(object)) {\n switch (style) {\n case 'lowercase': return '.nan';\n case 'uppercase': return '.NAN';\n case 'camelcase': return '.NaN';\n }\n } else if (Number.POSITIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '.inf';\n case 'uppercase': return '.INF';\n case 'camelcase': return '.Inf';\n }\n } else if (Number.NEGATIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '-.inf';\n case 'uppercase': return '-.INF';\n case 'camelcase': return '-.Inf';\n }\n } else if (common.isNegativeZero(object)) {\n return '-0.0';\n }\n\n res = object.toString(10);\n\n // JS stringifier can build scientific format without dots: 5e-100,\n // while YAML requres dot: 5.e-100. Fix it with simple hack\n\n return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res;\n}\n\nfunction isFloat(object) {\n return (Object.prototype.toString.call(object) === '[object Number]') &&\n (object % 1 !== 0 || common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:float', {\n kind: 'scalar',\n resolve: resolveYamlFloat,\n construct: constructYamlFloat,\n predicate: isFloat,\n represent: representYamlFloat,\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar YAML_DATE_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9])' + // [2] month\n '-([0-9][0-9])$'); // [3] day\n\nvar YAML_TIMESTAMP_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9]?)' + // [2] month\n '-([0-9][0-9]?)' + // [3] day\n '(?:[Tt]|[ \\\\t]+)' + // ...\n '([0-9][0-9]?)' + // [4] hour\n ':([0-9][0-9])' + // [5] minute\n ':([0-9][0-9])' + // [6] second\n '(?:\\\\.([0-9]*))?' + // [7] fraction\n '(?:[ \\\\t]*(Z|([-+])([0-9][0-9]?)' + // [8] tz [9] tz_sign [10] tz_hour\n '(?::([0-9][0-9]))?))?$'); // [11] tz_minute\n\nfunction resolveYamlTimestamp(data) {\n if (data === null) return false;\n if (YAML_DATE_REGEXP.exec(data) !== null) return true;\n if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true;\n return false;\n}\n\nfunction constructYamlTimestamp(data) {\n var match, year, month, day, hour, minute, second, fraction = 0,\n delta = null, tz_hour, tz_minute, date;\n\n match = YAML_DATE_REGEXP.exec(data);\n if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data);\n\n if (match === null) throw new Error('Date resolve error');\n\n // match: [1] year [2] month [3] day\n\n year = +(match[1]);\n month = +(match[2]) - 1; // JS month starts with 0\n day = +(match[3]);\n\n if (!match[4]) { // no hour\n return new Date(Date.UTC(year, month, day));\n }\n\n // match: [4] hour [5] minute [6] second [7] fraction\n\n hour = +(match[4]);\n minute = +(match[5]);\n second = +(match[6]);\n\n if (match[7]) {\n fraction = match[7].slice(0, 3);\n while (fraction.length < 3) { // milli-seconds\n fraction += '0';\n }\n fraction = +fraction;\n }\n\n // match: [8] tz [9] tz_sign [10] tz_hour [11] tz_minute\n\n if (match[9]) {\n tz_hour = +(match[10]);\n tz_minute = +(match[11] || 0);\n delta = (tz_hour * 60 + tz_minute) * 60000; // delta in mili-seconds\n if (match[9] === '-') delta = -delta;\n }\n\n date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction));\n\n if (delta) date.setTime(date.getTime() - delta);\n\n return date;\n}\n\nfunction representYamlTimestamp(object /*, style*/) {\n return object.toISOString();\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:timestamp', {\n kind: 'scalar',\n resolve: resolveYamlTimestamp,\n construct: constructYamlTimestamp,\n instanceOf: Date,\n represent: representYamlTimestamp\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlMerge(data) {\n return data === '<<' || data === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:merge', {\n kind: 'scalar',\n resolve: resolveYamlMerge\n});\n","'use strict';\n\n/*eslint-disable no-bitwise*/\n\nvar NodeBuffer;\n\ntry {\n // A trick for browserified version, to not include `Buffer` shim\n var _require = require;\n NodeBuffer = _require('buffer').Buffer;\n} catch (__) {}\n\nvar Type = require('../type');\n\n\n// [ 64, 65, 66 ] -> [ padding, CR, LF ]\nvar BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\\n\\r';\n\n\nfunction resolveYamlBinary(data) {\n if (data === null) return false;\n\n var code, idx, bitlen = 0, max = data.length, map = BASE64_MAP;\n\n // Convert one by one.\n for (idx = 0; idx < max; idx++) {\n code = map.indexOf(data.charAt(idx));\n\n // Skip CR/LF\n if (code > 64) continue;\n\n // Fail on illegal characters\n if (code < 0) return false;\n\n bitlen += 6;\n }\n\n // If there are any bits left, source was corrupted\n return (bitlen % 8) === 0;\n}\n\nfunction constructYamlBinary(data) {\n var idx, tailbits,\n input = data.replace(/[\\r\\n=]/g, ''), // remove CR/LF & padding to simplify scan\n max = input.length,\n map = BASE64_MAP,\n bits = 0,\n result = [];\n\n // Collect by 6*4 bits (3 bytes)\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 4 === 0) && idx) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n }\n\n bits = (bits << 6) | map.indexOf(input.charAt(idx));\n }\n\n // Dump tail\n\n tailbits = (max % 4) * 6;\n\n if (tailbits === 0) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n } else if (tailbits === 18) {\n result.push((bits >> 10) & 0xFF);\n result.push((bits >> 2) & 0xFF);\n } else if (tailbits === 12) {\n result.push((bits >> 4) & 0xFF);\n }\n\n // Wrap into Buffer for NodeJS and leave Array for browser\n if (NodeBuffer) return new NodeBuffer(result);\n\n return result;\n}\n\nfunction representYamlBinary(object /*, style*/) {\n var result = '', bits = 0, idx, tail,\n max = object.length,\n map = BASE64_MAP;\n\n // Convert every three bytes to 4 ASCII characters.\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 3 === 0) && idx) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n }\n\n bits = (bits << 8) + object[idx];\n }\n\n // Dump tail\n\n tail = max % 3;\n\n if (tail === 0) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n } else if (tail === 2) {\n result += map[(bits >> 10) & 0x3F];\n result += map[(bits >> 4) & 0x3F];\n result += map[(bits << 2) & 0x3F];\n result += map[64];\n } else if (tail === 1) {\n result += map[(bits >> 2) & 0x3F];\n result += map[(bits << 4) & 0x3F];\n result += map[64];\n result += map[64];\n }\n\n return result;\n}\n\nfunction isBinary(object) {\n return NodeBuffer && NodeBuffer.isBuffer(object);\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:binary', {\n kind: 'scalar',\n resolve: resolveYamlBinary,\n construct: constructYamlBinary,\n predicate: isBinary,\n represent: representYamlBinary\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlOmap(data) {\n if (data === null) return true;\n\n var objectKeys = [], index, length, pair, pairKey, pairHasKey,\n object = data;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n pairHasKey = false;\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n for (pairKey in pair) {\n if (_hasOwnProperty.call(pair, pairKey)) {\n if (!pairHasKey) pairHasKey = true;\n else return false;\n }\n }\n\n if (!pairHasKey) return false;\n\n if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey);\n else return false;\n }\n\n return true;\n}\n\nfunction constructYamlOmap(data) {\n return data !== null ? data : [];\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:omap', {\n kind: 'sequence',\n resolve: resolveYamlOmap,\n construct: constructYamlOmap\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlPairs(data) {\n if (data === null) return true;\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n keys = Object.keys(pair);\n\n if (keys.length !== 1) return false;\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return true;\n}\n\nfunction constructYamlPairs(data) {\n if (data === null) return [];\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n keys = Object.keys(pair);\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return result;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:pairs', {\n kind: 'sequence',\n resolve: resolveYamlPairs,\n construct: constructYamlPairs\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction resolveYamlSet(data) {\n if (data === null) return true;\n\n var key, object = data;\n\n for (key in object) {\n if (_hasOwnProperty.call(object, key)) {\n if (object[key] !== null) return false;\n }\n }\n\n return true;\n}\n\nfunction constructYamlSet(data) {\n return data !== null ? data : {};\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:set', {\n kind: 'mapping',\n resolve: resolveYamlSet,\n construct: constructYamlSet\n});\n","'use strict';\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptUndefined() {\n return true;\n}\n\nfunction constructJavascriptUndefined() {\n /*eslint-disable no-undefined*/\n return undefined;\n}\n\nfunction representJavascriptUndefined() {\n return '';\n}\n\nfunction isUndefined(object) {\n return typeof object === 'undefined';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/undefined', {\n kind: 'scalar',\n resolve: resolveJavascriptUndefined,\n construct: constructJavascriptUndefined,\n predicate: isUndefined,\n represent: representJavascriptUndefined\n});\n","'use strict';\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptRegExp(data) {\n if (data === null) return false;\n if (data.length === 0) return false;\n\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n\n // if regexp starts with '/' it can have modifiers and must be properly closed\n // `/foo/gim` - modifiers tail can be maximum 3 chars\n if (regexp[0] === '/') {\n if (tail) modifiers = tail[1];\n\n if (modifiers.length > 3) return false;\n // if expression starts with /, is should be properly terminated\n if (regexp[regexp.length - modifiers.length - 1] !== '/') return false;\n }\n\n return true;\n}\n\nfunction constructJavascriptRegExp(data) {\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n\n // `/foo/gim` - tail can be maximum 4 chars\n if (regexp[0] === '/') {\n if (tail) modifiers = tail[1];\n regexp = regexp.slice(1, regexp.length - modifiers.length - 1);\n }\n\n return new RegExp(regexp, modifiers);\n}\n\nfunction representJavascriptRegExp(object /*, style*/) {\n var result = '/' + object.source + '/';\n\n if (object.global) result += 'g';\n if (object.multiline) result += 'm';\n if (object.ignoreCase) result += 'i';\n\n return result;\n}\n\nfunction isRegExp(object) {\n return Object.prototype.toString.call(object) === '[object RegExp]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/regexp', {\n kind: 'scalar',\n resolve: resolveJavascriptRegExp,\n construct: constructJavascriptRegExp,\n predicate: isRegExp,\n represent: representJavascriptRegExp\n});\n","'use strict';\n\nvar esprima;\n\n// Browserified version does not have esprima\n//\n// 1. For node.js just require module as deps\n// 2. For browser try to require mudule via external AMD system.\n// If not found - try to fallback to window.esprima. If not\n// found too - then fail to parse.\n//\ntry {\n // workaround to exclude package from browserify list.\n var _require = require;\n esprima = _require('esprima');\n} catch (_) {\n /*global window */\n if (typeof window !== 'undefined') esprima = window.esprima;\n}\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptFunction(data) {\n if (data === null) return false;\n\n try {\n var source = '(' + data + ')',\n ast = esprima.parse(source, { range: true });\n\n if (ast.type !== 'Program' ||\n ast.body.length !== 1 ||\n ast.body[0].type !== 'ExpressionStatement' ||\n ast.body[0].expression.type !== 'FunctionExpression') {\n return false;\n }\n\n return true;\n } catch (err) {\n return false;\n }\n}\n\nfunction constructJavascriptFunction(data) {\n /*jslint evil:true*/\n\n var source = '(' + data + ')',\n ast = esprima.parse(source, { range: true }),\n params = [],\n body;\n\n if (ast.type !== 'Program' ||\n ast.body.length !== 1 ||\n ast.body[0].type !== 'ExpressionStatement' ||\n ast.body[0].expression.type !== 'FunctionExpression') {\n throw new Error('Failed to resolve function');\n }\n\n ast.body[0].expression.params.forEach(function (param) {\n params.push(param.name);\n });\n\n body = ast.body[0].expression.body.range;\n\n // Esprima's ranges include the first '{' and the last '}' characters on\n // function expressions. So cut them out.\n /*eslint-disable no-new-func*/\n return new Function(params, source.slice(body[0] + 1, body[1] - 1));\n}\n\nfunction representJavascriptFunction(object /*, style*/) {\n return object.toString();\n}\n\nfunction isFunction(object) {\n return Object.prototype.toString.call(object) === '[object Function]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/function', {\n kind: 'scalar',\n resolve: resolveJavascriptFunction,\n construct: constructJavascriptFunction,\n predicate: isFunction,\n represent: representJavascriptFunction\n});\n","'use strict';\n\n/*eslint-disable max-len,no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar Mark = require('./mark');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\n\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\n\nvar CONTEXT_FLOW_IN = 1;\nvar CONTEXT_FLOW_OUT = 2;\nvar CONTEXT_BLOCK_IN = 3;\nvar CONTEXT_BLOCK_OUT = 4;\n\n\nvar CHOMPING_CLIP = 1;\nvar CHOMPING_STRIP = 2;\nvar CHOMPING_KEEP = 3;\n\n\nvar PATTERN_NON_PRINTABLE = /[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x84\\x86-\\x9F\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\nvar PATTERN_NON_ASCII_LINE_BREAKS = /[\\x85\\u2028\\u2029]/;\nvar PATTERN_FLOW_INDICATORS = /[,\\[\\]\\{\\}]/;\nvar PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\\-]+!)$/i;\nvar PATTERN_TAG_URI = /^(?:!|[^,\\[\\]\\{\\}])(?:%[0-9a-f]{2}|[0-9a-z\\-#;\\/\\?:@&=\\+\\$,_\\.!~\\*'\\(\\)\\[\\]])*$/i;\n\n\nfunction is_EOL(c) {\n return (c === 0x0A/* LF */) || (c === 0x0D/* CR */);\n}\n\nfunction is_WHITE_SPACE(c) {\n return (c === 0x09/* Tab */) || (c === 0x20/* Space */);\n}\n\nfunction is_WS_OR_EOL(c) {\n return (c === 0x09/* Tab */) ||\n (c === 0x20/* Space */) ||\n (c === 0x0A/* LF */) ||\n (c === 0x0D/* CR */);\n}\n\nfunction is_FLOW_INDICATOR(c) {\n return c === 0x2C/* , */ ||\n c === 0x5B/* [ */ ||\n c === 0x5D/* ] */ ||\n c === 0x7B/* { */ ||\n c === 0x7D/* } */;\n}\n\nfunction fromHexCode(c) {\n var lc;\n\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n /*eslint-disable no-bitwise*/\n lc = c | 0x20;\n\n if ((0x61/* a */ <= lc) && (lc <= 0x66/* f */)) {\n return lc - 0x61 + 10;\n }\n\n return -1;\n}\n\nfunction escapedHexLen(c) {\n if (c === 0x78/* x */) { return 2; }\n if (c === 0x75/* u */) { return 4; }\n if (c === 0x55/* U */) { return 8; }\n return 0;\n}\n\nfunction fromDecimalCode(c) {\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n return -1;\n}\n\nfunction simpleEscapeSequence(c) {\n return (c === 0x30/* 0 */) ? '\\x00' :\n (c === 0x61/* a */) ? '\\x07' :\n (c === 0x62/* b */) ? '\\x08' :\n (c === 0x74/* t */) ? '\\x09' :\n (c === 0x09/* Tab */) ? '\\x09' :\n (c === 0x6E/* n */) ? '\\x0A' :\n (c === 0x76/* v */) ? '\\x0B' :\n (c === 0x66/* f */) ? '\\x0C' :\n (c === 0x72/* r */) ? '\\x0D' :\n (c === 0x65/* e */) ? '\\x1B' :\n (c === 0x20/* Space */) ? ' ' :\n (c === 0x22/* \" */) ? '\\x22' :\n (c === 0x2F/* / */) ? '/' :\n (c === 0x5C/* \\ */) ? '\\x5C' :\n (c === 0x4E/* N */) ? '\\x85' :\n (c === 0x5F/* _ */) ? '\\xA0' :\n (c === 0x4C/* L */) ? '\\u2028' :\n (c === 0x50/* P */) ? '\\u2029' : '';\n}\n\nfunction charFromCodepoint(c) {\n if (c <= 0xFFFF) {\n return String.fromCharCode(c);\n }\n // Encode UTF-16 surrogate pair\n // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF\n return String.fromCharCode(((c - 0x010000) >> 10) + 0xD800,\n ((c - 0x010000) & 0x03FF) + 0xDC00);\n}\n\nvar simpleEscapeCheck = new Array(256); // integer, for fast access\nvar simpleEscapeMap = new Array(256);\nfor (var i = 0; i < 256; i++) {\n simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0;\n simpleEscapeMap[i] = simpleEscapeSequence(i);\n}\n\n\nfunction State(input, options) {\n this.input = input;\n\n this.filename = options['filename'] || null;\n this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;\n this.onWarning = options['onWarning'] || null;\n this.legacy = options['legacy'] || false;\n this.json = options['json'] || false;\n this.listener = options['listener'] || null;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.typeMap = this.schema.compiledTypeMap;\n\n this.length = input.length;\n this.position = 0;\n this.line = 0;\n this.lineStart = 0;\n this.lineIndent = 0;\n\n this.documents = [];\n\n /*\n this.version;\n this.checkLineBreaks;\n this.tagMap;\n this.anchorMap;\n this.tag;\n this.anchor;\n this.kind;\n this.result;*/\n\n}\n\n\nfunction generateError(state, message) {\n return new YAMLException(\n message,\n new Mark(state.filename, state.input, state.position, state.line, (state.position - state.lineStart)));\n}\n\nfunction throwError(state, message) {\n throw generateError(state, message);\n}\n\nfunction throwWarning(state, message) {\n if (state.onWarning) {\n state.onWarning.call(null, generateError(state, message));\n }\n}\n\n\nvar directiveHandlers = {\n\n YAML: function handleYamlDirective(state, name, args) {\n\n var match, major, minor;\n\n if (state.version !== null) {\n throwError(state, 'duplication of %YAML directive');\n }\n\n if (args.length !== 1) {\n throwError(state, 'YAML directive accepts exactly one argument');\n }\n\n match = /^([0-9]+)\\.([0-9]+)$/.exec(args[0]);\n\n if (match === null) {\n throwError(state, 'ill-formed argument of the YAML directive');\n }\n\n major = parseInt(match[1], 10);\n minor = parseInt(match[2], 10);\n\n if (major !== 1) {\n throwError(state, 'unacceptable YAML version of the document');\n }\n\n state.version = args[0];\n state.checkLineBreaks = (minor < 2);\n\n if (minor !== 1 && minor !== 2) {\n throwWarning(state, 'unsupported YAML version of the document');\n }\n },\n\n TAG: function handleTagDirective(state, name, args) {\n\n var handle, prefix;\n\n if (args.length !== 2) {\n throwError(state, 'TAG directive accepts exactly two arguments');\n }\n\n handle = args[0];\n prefix = args[1];\n\n if (!PATTERN_TAG_HANDLE.test(handle)) {\n throwError(state, 'ill-formed tag handle (first argument) of the TAG directive');\n }\n\n if (_hasOwnProperty.call(state.tagMap, handle)) {\n throwError(state, 'there is a previously declared suffix for \"' + handle + '\" tag handle');\n }\n\n if (!PATTERN_TAG_URI.test(prefix)) {\n throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive');\n }\n\n state.tagMap[handle] = prefix;\n }\n};\n\n\nfunction captureSegment(state, start, end, checkJson) {\n var _position, _length, _character, _result;\n\n if (start < end) {\n _result = state.input.slice(start, end);\n\n if (checkJson) {\n for (_position = 0, _length = _result.length;\n _position < _length;\n _position += 1) {\n _character = _result.charCodeAt(_position);\n if (!(_character === 0x09 ||\n (0x20 <= _character && _character <= 0x10FFFF))) {\n throwError(state, 'expected valid JSON character');\n }\n }\n } else if (PATTERN_NON_PRINTABLE.test(_result)) {\n throwError(state, 'the stream contains non-printable characters');\n }\n\n state.result += _result;\n }\n}\n\nfunction mergeMappings(state, destination, source, overridableKeys) {\n var sourceKeys, key, index, quantity;\n\n if (!common.isObject(source)) {\n throwError(state, 'cannot merge mappings; the provided source object is unacceptable');\n }\n\n sourceKeys = Object.keys(source);\n\n for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) {\n key = sourceKeys[index];\n\n if (!_hasOwnProperty.call(destination, key)) {\n destination[key] = source[key];\n overridableKeys[key] = true;\n }\n }\n}\n\nfunction storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode) {\n var index, quantity;\n\n keyNode = String(keyNode);\n\n if (_result === null) {\n _result = {};\n }\n\n if (keyTag === 'tag:yaml.org,2002:merge') {\n if (Array.isArray(valueNode)) {\n for (index = 0, quantity = valueNode.length; index < quantity; index += 1) {\n mergeMappings(state, _result, valueNode[index], overridableKeys);\n }\n } else {\n mergeMappings(state, _result, valueNode, overridableKeys);\n }\n } else {\n if (!state.json &&\n !_hasOwnProperty.call(overridableKeys, keyNode) &&\n _hasOwnProperty.call(_result, keyNode)) {\n throwError(state, 'duplicated mapping key');\n }\n _result[keyNode] = valueNode;\n delete overridableKeys[keyNode];\n }\n\n return _result;\n}\n\nfunction readLineBreak(state) {\n var ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x0A/* LF */) {\n state.position++;\n } else if (ch === 0x0D/* CR */) {\n state.position++;\n if (state.input.charCodeAt(state.position) === 0x0A/* LF */) {\n state.position++;\n }\n } else {\n throwError(state, 'a line break is expected');\n }\n\n state.line += 1;\n state.lineStart = state.position;\n}\n\nfunction skipSeparationSpace(state, allowComments, checkIndent) {\n var lineBreaks = 0,\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (allowComments && ch === 0x23/* # */) {\n do {\n ch = state.input.charCodeAt(++state.position);\n } while (ch !== 0x0A/* LF */ && ch !== 0x0D/* CR */ && ch !== 0);\n }\n\n if (is_EOL(ch)) {\n readLineBreak(state);\n\n ch = state.input.charCodeAt(state.position);\n lineBreaks++;\n state.lineIndent = 0;\n\n while (ch === 0x20/* Space */) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n } else {\n break;\n }\n }\n\n if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) {\n throwWarning(state, 'deficient indentation');\n }\n\n return lineBreaks;\n}\n\nfunction testDocumentSeparator(state) {\n var _position = state.position,\n ch;\n\n ch = state.input.charCodeAt(_position);\n\n // Condition state.position === state.lineStart is tested\n // in parent on each call, for efficiency. No needs to test here again.\n if ((ch === 0x2D/* - */ || ch === 0x2E/* . */) &&\n ch === state.input.charCodeAt(_position + 1) &&\n ch === state.input.charCodeAt(_position + 2)) {\n\n _position += 3;\n\n ch = state.input.charCodeAt(_position);\n\n if (ch === 0 || is_WS_OR_EOL(ch)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction writeFoldedLines(state, count) {\n if (count === 1) {\n state.result += ' ';\n } else if (count > 1) {\n state.result += common.repeat('\\n', count - 1);\n }\n}\n\n\nfunction readPlainScalar(state, nodeIndent, withinFlowCollection) {\n var preceding,\n following,\n captureStart,\n captureEnd,\n hasPendingContent,\n _line,\n _lineStart,\n _lineIndent,\n _kind = state.kind,\n _result = state.result,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (is_WS_OR_EOL(ch) ||\n is_FLOW_INDICATOR(ch) ||\n ch === 0x23/* # */ ||\n ch === 0x26/* & */ ||\n ch === 0x2A/* * */ ||\n ch === 0x21/* ! */ ||\n ch === 0x7C/* | */ ||\n ch === 0x3E/* > */ ||\n ch === 0x27/* ' */ ||\n ch === 0x22/* \" */ ||\n ch === 0x25/* % */ ||\n ch === 0x40/* @ */ ||\n ch === 0x60/* ` */) {\n return false;\n }\n\n if (ch === 0x3F/* ? */ || ch === 0x2D/* - */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n return false;\n }\n }\n\n state.kind = 'scalar';\n state.result = '';\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n\n while (ch !== 0) {\n if (ch === 0x3A/* : */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n break;\n }\n\n } else if (ch === 0x23/* # */) {\n preceding = state.input.charCodeAt(state.position - 1);\n\n if (is_WS_OR_EOL(preceding)) {\n break;\n }\n\n } else if ((state.position === state.lineStart && testDocumentSeparator(state)) ||\n withinFlowCollection && is_FLOW_INDICATOR(ch)) {\n break;\n\n } else if (is_EOL(ch)) {\n _line = state.line;\n _lineStart = state.lineStart;\n _lineIndent = state.lineIndent;\n skipSeparationSpace(state, false, -1);\n\n if (state.lineIndent >= nodeIndent) {\n hasPendingContent = true;\n ch = state.input.charCodeAt(state.position);\n continue;\n } else {\n state.position = captureEnd;\n state.line = _line;\n state.lineStart = _lineStart;\n state.lineIndent = _lineIndent;\n break;\n }\n }\n\n if (hasPendingContent) {\n captureSegment(state, captureStart, captureEnd, false);\n writeFoldedLines(state, state.line - _line);\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n }\n\n if (!is_WHITE_SPACE(ch)) {\n captureEnd = state.position + 1;\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, captureEnd, false);\n\n if (state.result) {\n return true;\n }\n\n state.kind = _kind;\n state.result = _result;\n return false;\n}\n\nfunction readSingleQuotedScalar(state, nodeIndent) {\n var ch,\n captureStart, captureEnd;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x27/* ' */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x27/* ' */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x27/* ' */) {\n captureStart = state.position;\n state.position++;\n captureEnd = state.position;\n } else {\n return true;\n }\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a single quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a single quoted scalar');\n}\n\nfunction readDoubleQuotedScalar(state, nodeIndent) {\n var captureStart,\n captureEnd,\n hexLength,\n hexResult,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x22/* \" */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x22/* \" */) {\n captureSegment(state, captureStart, state.position, true);\n state.position++;\n return true;\n\n } else if (ch === 0x5C/* \\ */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (is_EOL(ch)) {\n skipSeparationSpace(state, false, nodeIndent);\n\n // TODO: rework to inline fn with no type cast?\n } else if (ch < 256 && simpleEscapeCheck[ch]) {\n state.result += simpleEscapeMap[ch];\n state.position++;\n\n } else if ((tmp = escapedHexLen(ch)) > 0) {\n hexLength = tmp;\n hexResult = 0;\n\n for (; hexLength > 0; hexLength--) {\n ch = state.input.charCodeAt(++state.position);\n\n if ((tmp = fromHexCode(ch)) >= 0) {\n hexResult = (hexResult << 4) + tmp;\n\n } else {\n throwError(state, 'expected hexadecimal character');\n }\n }\n\n state.result += charFromCodepoint(hexResult);\n\n state.position++;\n\n } else {\n throwError(state, 'unknown escape sequence');\n }\n\n captureStart = captureEnd = state.position;\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a double quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a double quoted scalar');\n}\n\nfunction readFlowCollection(state, nodeIndent) {\n var readNext = true,\n _line,\n _tag = state.tag,\n _result,\n _anchor = state.anchor,\n following,\n terminator,\n isPair,\n isExplicitPair,\n isMapping,\n overridableKeys = {},\n keyNode,\n keyTag,\n valueNode,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x5B/* [ */) {\n terminator = 0x5D;/* ] */\n isMapping = false;\n _result = [];\n } else if (ch === 0x7B/* { */) {\n terminator = 0x7D;/* } */\n isMapping = true;\n _result = {};\n } else {\n return false;\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n while (ch !== 0) {\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === terminator) {\n state.position++;\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = isMapping ? 'mapping' : 'sequence';\n state.result = _result;\n return true;\n } else if (!readNext) {\n throwError(state, 'missed comma between flow collection entries');\n }\n\n keyTag = keyNode = valueNode = null;\n isPair = isExplicitPair = false;\n\n if (ch === 0x3F/* ? */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following)) {\n isPair = isExplicitPair = true;\n state.position++;\n skipSeparationSpace(state, true, nodeIndent);\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n keyTag = state.tag;\n keyNode = state.result;\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((isExplicitPair || state.line === _line) && ch === 0x3A/* : */) {\n isPair = true;\n ch = state.input.charCodeAt(++state.position);\n skipSeparationSpace(state, true, nodeIndent);\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n valueNode = state.result;\n }\n\n if (isMapping) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode);\n } else if (isPair) {\n _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode));\n } else {\n _result.push(keyNode);\n }\n\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x2C/* , */) {\n readNext = true;\n ch = state.input.charCodeAt(++state.position);\n } else {\n readNext = false;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a flow collection');\n}\n\nfunction readBlockScalar(state, nodeIndent) {\n var captureStart,\n folding,\n chomping = CHOMPING_CLIP,\n didReadContent = false,\n detectedIndent = false,\n textIndent = nodeIndent,\n emptyLines = 0,\n atMoreIndented = false,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x7C/* | */) {\n folding = false;\n } else if (ch === 0x3E/* > */) {\n folding = true;\n } else {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n\n while (ch !== 0) {\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x2B/* + */ || ch === 0x2D/* - */) {\n if (CHOMPING_CLIP === chomping) {\n chomping = (ch === 0x2B/* + */) ? CHOMPING_KEEP : CHOMPING_STRIP;\n } else {\n throwError(state, 'repeat of a chomping mode identifier');\n }\n\n } else if ((tmp = fromDecimalCode(ch)) >= 0) {\n if (tmp === 0) {\n throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one');\n } else if (!detectedIndent) {\n textIndent = nodeIndent + tmp - 1;\n detectedIndent = true;\n } else {\n throwError(state, 'repeat of an indentation width identifier');\n }\n\n } else {\n break;\n }\n }\n\n if (is_WHITE_SPACE(ch)) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (is_WHITE_SPACE(ch));\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (!is_EOL(ch) && (ch !== 0));\n }\n }\n\n while (ch !== 0) {\n readLineBreak(state);\n state.lineIndent = 0;\n\n ch = state.input.charCodeAt(state.position);\n\n while ((!detectedIndent || state.lineIndent < textIndent) &&\n (ch === 0x20/* Space */)) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (!detectedIndent && state.lineIndent > textIndent) {\n textIndent = state.lineIndent;\n }\n\n if (is_EOL(ch)) {\n emptyLines++;\n continue;\n }\n\n // End of the scalar.\n if (state.lineIndent < textIndent) {\n\n // Perform the chomping.\n if (chomping === CHOMPING_KEEP) {\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n } else if (chomping === CHOMPING_CLIP) {\n if (didReadContent) { // i.e. only if the scalar is not empty.\n state.result += '\\n';\n }\n }\n\n // Break this `while` cycle and go to the funciton's epilogue.\n break;\n }\n\n // Folded style: use fancy rules to handle line breaks.\n if (folding) {\n\n // Lines starting with white space characters (more-indented lines) are not folded.\n if (is_WHITE_SPACE(ch)) {\n atMoreIndented = true;\n // except for the first content line (cf. Example 8.1)\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n\n // End of more-indented block.\n } else if (atMoreIndented) {\n atMoreIndented = false;\n state.result += common.repeat('\\n', emptyLines + 1);\n\n // Just one line break - perceive as the same line.\n } else if (emptyLines === 0) {\n if (didReadContent) { // i.e. only if we have already read some scalar content.\n state.result += ' ';\n }\n\n // Several line breaks - perceive as different lines.\n } else {\n state.result += common.repeat('\\n', emptyLines);\n }\n\n // Literal style: just add exact number of line breaks between content lines.\n } else {\n // Keep all line breaks except the header line break.\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n }\n\n didReadContent = true;\n detectedIndent = true;\n emptyLines = 0;\n captureStart = state.position;\n\n while (!is_EOL(ch) && (ch !== 0)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, state.position, false);\n }\n\n return true;\n}\n\nfunction readBlockSequence(state, nodeIndent) {\n var _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = [],\n following,\n detected = false,\n ch;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n\n if (ch !== 0x2D/* - */) {\n break;\n }\n\n following = state.input.charCodeAt(state.position + 1);\n\n if (!is_WS_OR_EOL(following)) {\n break;\n }\n\n detected = true;\n state.position++;\n\n if (skipSeparationSpace(state, true, -1)) {\n if (state.lineIndent <= nodeIndent) {\n _result.push(null);\n ch = state.input.charCodeAt(state.position);\n continue;\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true);\n _result.push(state.result);\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) {\n throwError(state, 'bad indentation of a sequence entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'sequence';\n state.result = _result;\n return true;\n }\n return false;\n}\n\nfunction readBlockMapping(state, nodeIndent, flowIndent) {\n var following,\n allowCompact,\n _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = {},\n overridableKeys = {},\n keyTag = null,\n keyNode = null,\n valueNode = null,\n atExplicitKey = false,\n detected = false,\n ch;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n following = state.input.charCodeAt(state.position + 1);\n _line = state.line; // Save the current line.\n\n //\n // Explicit notation case. There are two separate blocks:\n // first for the key (denoted by \"?\") and second for the value (denoted by \":\")\n //\n if ((ch === 0x3F/* ? */ || ch === 0x3A/* : */) && is_WS_OR_EOL(following)) {\n\n if (ch === 0x3F/* ? */) {\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = true;\n allowCompact = true;\n\n } else if (atExplicitKey) {\n // i.e. 0x3A/* : */ === character after the explicit key.\n atExplicitKey = false;\n allowCompact = true;\n\n } else {\n throwError(state, 'incomplete explicit mapping pair; a key node is missed');\n }\n\n state.position += 1;\n ch = following;\n\n //\n // Implicit notation case. Flow-style node as the key first, then \":\", and the value.\n //\n } else if (composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) {\n\n if (state.line === _line) {\n ch = state.input.charCodeAt(state.position);\n\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x3A/* : */) {\n ch = state.input.charCodeAt(++state.position);\n\n if (!is_WS_OR_EOL(ch)) {\n throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping');\n }\n\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = false;\n allowCompact = false;\n keyTag = state.tag;\n keyNode = state.result;\n\n } else if (detected) {\n throwError(state, 'can not read an implicit mapping pair; a colon is missed');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else if (detected) {\n throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else {\n break; // Reading is done. Go to the epilogue.\n }\n\n //\n // Common reading code for both explicit and implicit notations.\n //\n if (state.line === _line || state.lineIndent > nodeIndent) {\n if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) {\n if (atExplicitKey) {\n keyNode = state.result;\n } else {\n valueNode = state.result;\n }\n }\n\n if (!atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode);\n keyTag = keyNode = valueNode = null;\n }\n\n skipSeparationSpace(state, true, -1);\n ch = state.input.charCodeAt(state.position);\n }\n\n if (state.lineIndent > nodeIndent && (ch !== 0)) {\n throwError(state, 'bad indentation of a mapping entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n //\n // Epilogue.\n //\n\n // Special case: last mapping's node contains only the key in explicit notation.\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n }\n\n // Expose the resulting mapping.\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'mapping';\n state.result = _result;\n }\n\n return detected;\n}\n\nfunction readTagProperty(state) {\n var _position,\n isVerbatim = false,\n isNamed = false,\n tagHandle,\n tagName,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x21/* ! */) return false;\n\n if (state.tag !== null) {\n throwError(state, 'duplication of a tag property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x3C/* < */) {\n isVerbatim = true;\n ch = state.input.charCodeAt(++state.position);\n\n } else if (ch === 0x21/* ! */) {\n isNamed = true;\n tagHandle = '!!';\n ch = state.input.charCodeAt(++state.position);\n\n } else {\n tagHandle = '!';\n }\n\n _position = state.position;\n\n if (isVerbatim) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && ch !== 0x3E/* > */);\n\n if (state.position < state.length) {\n tagName = state.input.slice(_position, state.position);\n ch = state.input.charCodeAt(++state.position);\n } else {\n throwError(state, 'unexpected end of the stream within a verbatim tag');\n }\n } else {\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n\n if (ch === 0x21/* ! */) {\n if (!isNamed) {\n tagHandle = state.input.slice(_position - 1, state.position + 1);\n\n if (!PATTERN_TAG_HANDLE.test(tagHandle)) {\n throwError(state, 'named tag handle cannot contain such characters');\n }\n\n isNamed = true;\n _position = state.position + 1;\n } else {\n throwError(state, 'tag suffix cannot contain exclamation marks');\n }\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n tagName = state.input.slice(_position, state.position);\n\n if (PATTERN_FLOW_INDICATORS.test(tagName)) {\n throwError(state, 'tag suffix cannot contain flow indicator characters');\n }\n }\n\n if (tagName && !PATTERN_TAG_URI.test(tagName)) {\n throwError(state, 'tag name cannot contain such characters: ' + tagName);\n }\n\n if (isVerbatim) {\n state.tag = tagName;\n\n } else if (_hasOwnProperty.call(state.tagMap, tagHandle)) {\n state.tag = state.tagMap[tagHandle] + tagName;\n\n } else if (tagHandle === '!') {\n state.tag = '!' + tagName;\n\n } else if (tagHandle === '!!') {\n state.tag = 'tag:yaml.org,2002:' + tagName;\n\n } else {\n throwError(state, 'undeclared tag handle \"' + tagHandle + '\"');\n }\n\n return true;\n}\n\nfunction readAnchorProperty(state) {\n var _position,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x26/* & */) return false;\n\n if (state.anchor !== null) {\n throwError(state, 'duplication of an anchor property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an anchor node must contain at least one character');\n }\n\n state.anchor = state.input.slice(_position, state.position);\n return true;\n}\n\nfunction readAlias(state) {\n var _position, alias,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x2A/* * */) return false;\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an alias node must contain at least one character');\n }\n\n alias = state.input.slice(_position, state.position);\n\n if (!state.anchorMap.hasOwnProperty(alias)) {\n throwError(state, 'unidentified alias \"' + alias + '\"');\n }\n\n state.result = state.anchorMap[alias];\n skipSeparationSpace(state, true, -1);\n return true;\n}\n\nfunction composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) {\n var allowBlockStyles,\n allowBlockScalars,\n allowBlockCollections,\n indentStatus = 1, // 1: this>parent, 0: this=parent, -1: this parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n }\n }\n\n if (indentStatus === 1) {\n while (readTagProperty(state) || readAnchorProperty(state)) {\n if (skipSeparationSpace(state, true, -1)) {\n atNewLine = true;\n allowBlockCollections = allowBlockStyles;\n\n if (state.lineIndent > parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n } else {\n allowBlockCollections = false;\n }\n }\n }\n\n if (allowBlockCollections) {\n allowBlockCollections = atNewLine || allowCompact;\n }\n\n if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) {\n if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) {\n flowIndent = parentIndent;\n } else {\n flowIndent = parentIndent + 1;\n }\n\n blockIndent = state.position - state.lineStart;\n\n if (indentStatus === 1) {\n if (allowBlockCollections &&\n (readBlockSequence(state, blockIndent) ||\n readBlockMapping(state, blockIndent, flowIndent)) ||\n readFlowCollection(state, flowIndent)) {\n hasContent = true;\n } else {\n if ((allowBlockScalars && readBlockScalar(state, flowIndent)) ||\n readSingleQuotedScalar(state, flowIndent) ||\n readDoubleQuotedScalar(state, flowIndent)) {\n hasContent = true;\n\n } else if (readAlias(state)) {\n hasContent = true;\n\n if (state.tag !== null || state.anchor !== null) {\n throwError(state, 'alias node should not have any properties');\n }\n\n } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) {\n hasContent = true;\n\n if (state.tag === null) {\n state.tag = '?';\n }\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else if (indentStatus === 0) {\n // Special case: block sequences are allowed to have same indentation level as the parent.\n // http://www.yaml.org/spec/1.2/spec.html#id2799784\n hasContent = allowBlockCollections && readBlockSequence(state, blockIndent);\n }\n }\n\n if (state.tag !== null && state.tag !== '!') {\n if (state.tag === '?') {\n for (typeIndex = 0, typeQuantity = state.implicitTypes.length;\n typeIndex < typeQuantity;\n typeIndex += 1) {\n type = state.implicitTypes[typeIndex];\n\n // Implicit resolving is not allowed for non-scalar types, and '?'\n // non-specific tag is only assigned to plain scalars. So, it isn't\n // needed to check for 'kind' conformity.\n\n if (type.resolve(state.result)) { // `state.result` updated in resolver if matched\n state.result = type.construct(state.result);\n state.tag = type.tag;\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n break;\n }\n }\n } else if (_hasOwnProperty.call(state.typeMap[state.kind || 'fallback'], state.tag)) {\n type = state.typeMap[state.kind || 'fallback'][state.tag];\n\n if (state.result !== null && type.kind !== state.kind) {\n throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be \"' + type.kind + '\", not \"' + state.kind + '\"');\n }\n\n if (!type.resolve(state.result)) { // `state.result` updated in resolver if matched\n throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag');\n } else {\n state.result = type.construct(state.result);\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else {\n throwError(state, 'unknown tag !<' + state.tag + '>');\n }\n }\n\n if (state.listener !== null) {\n state.listener('close', state);\n }\n return state.tag !== null || state.anchor !== null || hasContent;\n}\n\nfunction readDocument(state) {\n var documentStart = state.position,\n _position,\n directiveName,\n directiveArgs,\n hasDirectives = false,\n ch;\n\n state.version = null;\n state.checkLineBreaks = state.legacy;\n state.tagMap = {};\n state.anchorMap = {};\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if (state.lineIndent > 0 || ch !== 0x25/* % */) {\n break;\n }\n\n hasDirectives = true;\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveName = state.input.slice(_position, state.position);\n directiveArgs = [];\n\n if (directiveName.length < 1) {\n throwError(state, 'directive name must not be less than one character in length');\n }\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && !is_EOL(ch));\n break;\n }\n\n if (is_EOL(ch)) break;\n\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveArgs.push(state.input.slice(_position, state.position));\n }\n\n if (ch !== 0) readLineBreak(state);\n\n if (_hasOwnProperty.call(directiveHandlers, directiveName)) {\n directiveHandlers[directiveName](state, directiveName, directiveArgs);\n } else {\n throwWarning(state, 'unknown document directive \"' + directiveName + '\"');\n }\n }\n\n skipSeparationSpace(state, true, -1);\n\n if (state.lineIndent === 0 &&\n state.input.charCodeAt(state.position) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 1) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 2) === 0x2D/* - */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n\n } else if (hasDirectives) {\n throwError(state, 'directives end mark is expected');\n }\n\n composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true);\n skipSeparationSpace(state, true, -1);\n\n if (state.checkLineBreaks &&\n PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) {\n throwWarning(state, 'non-ASCII line breaks are interpreted as content');\n }\n\n state.documents.push(state.result);\n\n if (state.position === state.lineStart && testDocumentSeparator(state)) {\n\n if (state.input.charCodeAt(state.position) === 0x2E/* . */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n }\n return;\n }\n\n if (state.position < (state.length - 1)) {\n throwError(state, 'end of the stream or a document separator is expected');\n } else {\n return;\n }\n}\n\n\nfunction loadDocuments(input, options) {\n input = String(input);\n options = options || {};\n\n if (input.length !== 0) {\n\n // Add tailing `\\n` if not exists\n if (input.charCodeAt(input.length - 1) !== 0x0A/* LF */ &&\n input.charCodeAt(input.length - 1) !== 0x0D/* CR */) {\n input += '\\n';\n }\n\n // Strip BOM\n if (input.charCodeAt(0) === 0xFEFF) {\n input = input.slice(1);\n }\n }\n\n var state = new State(input, options);\n\n // Use 0 as string terminator. That significantly simplifies bounds check.\n state.input += '\\0';\n\n while (state.input.charCodeAt(state.position) === 0x20/* Space */) {\n state.lineIndent += 1;\n state.position += 1;\n }\n\n while (state.position < (state.length - 1)) {\n readDocument(state);\n }\n\n return state.documents;\n}\n\n\nfunction loadAll(input, iterator, options) {\n var documents = loadDocuments(input, options), index, length;\n\n for (index = 0, length = documents.length; index < length; index += 1) {\n iterator(documents[index]);\n }\n}\n\n\nfunction load(input, options) {\n var documents = loadDocuments(input, options);\n\n if (documents.length === 0) {\n /*eslint-disable no-undefined*/\n return undefined;\n } else if (documents.length === 1) {\n return documents[0];\n }\n throw new YAMLException('expected a single document in the stream, but found more');\n}\n\n\nfunction safeLoadAll(input, output, options) {\n loadAll(input, output, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\n\nfunction safeLoad(input, options) {\n return load(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\n\nmodule.exports.loadAll = loadAll;\nmodule.exports.load = load;\nmodule.exports.safeLoadAll = safeLoadAll;\nmodule.exports.safeLoad = safeLoad;\n","'use strict';\n\n/*eslint-disable no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\n\nvar _toString = Object.prototype.toString;\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar CHAR_TAB = 0x09; /* Tab */\nvar CHAR_LINE_FEED = 0x0A; /* LF */\nvar CHAR_SPACE = 0x20; /* Space */\nvar CHAR_EXCLAMATION = 0x21; /* ! */\nvar CHAR_DOUBLE_QUOTE = 0x22; /* \" */\nvar CHAR_SHARP = 0x23; /* # */\nvar CHAR_PERCENT = 0x25; /* % */\nvar CHAR_AMPERSAND = 0x26; /* & */\nvar CHAR_SINGLE_QUOTE = 0x27; /* ' */\nvar CHAR_ASTERISK = 0x2A; /* * */\nvar CHAR_COMMA = 0x2C; /* , */\nvar CHAR_MINUS = 0x2D; /* - */\nvar CHAR_COLON = 0x3A; /* : */\nvar CHAR_GREATER_THAN = 0x3E; /* > */\nvar CHAR_QUESTION = 0x3F; /* ? */\nvar CHAR_COMMERCIAL_AT = 0x40; /* @ */\nvar CHAR_LEFT_SQUARE_BRACKET = 0x5B; /* [ */\nvar CHAR_RIGHT_SQUARE_BRACKET = 0x5D; /* ] */\nvar CHAR_GRAVE_ACCENT = 0x60; /* ` */\nvar CHAR_LEFT_CURLY_BRACKET = 0x7B; /* { */\nvar CHAR_VERTICAL_LINE = 0x7C; /* | */\nvar CHAR_RIGHT_CURLY_BRACKET = 0x7D; /* } */\n\nvar ESCAPE_SEQUENCES = {};\n\nESCAPE_SEQUENCES[0x00] = '\\\\0';\nESCAPE_SEQUENCES[0x07] = '\\\\a';\nESCAPE_SEQUENCES[0x08] = '\\\\b';\nESCAPE_SEQUENCES[0x09] = '\\\\t';\nESCAPE_SEQUENCES[0x0A] = '\\\\n';\nESCAPE_SEQUENCES[0x0B] = '\\\\v';\nESCAPE_SEQUENCES[0x0C] = '\\\\f';\nESCAPE_SEQUENCES[0x0D] = '\\\\r';\nESCAPE_SEQUENCES[0x1B] = '\\\\e';\nESCAPE_SEQUENCES[0x22] = '\\\\\"';\nESCAPE_SEQUENCES[0x5C] = '\\\\\\\\';\nESCAPE_SEQUENCES[0x85] = '\\\\N';\nESCAPE_SEQUENCES[0xA0] = '\\\\_';\nESCAPE_SEQUENCES[0x2028] = '\\\\L';\nESCAPE_SEQUENCES[0x2029] = '\\\\P';\n\nvar DEPRECATED_BOOLEANS_SYNTAX = [\n 'y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON',\n 'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF'\n];\n\nfunction compileStyleMap(schema, map) {\n var result, keys, index, length, tag, style, type;\n\n if (map === null) return {};\n\n result = {};\n keys = Object.keys(map);\n\n for (index = 0, length = keys.length; index < length; index += 1) {\n tag = keys[index];\n style = String(map[tag]);\n\n if (tag.slice(0, 2) === '!!') {\n tag = 'tag:yaml.org,2002:' + tag.slice(2);\n }\n type = schema.compiledTypeMap['fallback'][tag];\n\n if (type && _hasOwnProperty.call(type.styleAliases, style)) {\n style = type.styleAliases[style];\n }\n\n result[tag] = style;\n }\n\n return result;\n}\n\nfunction encodeHex(character) {\n var string, handle, length;\n\n string = character.toString(16).toUpperCase();\n\n if (character <= 0xFF) {\n handle = 'x';\n length = 2;\n } else if (character <= 0xFFFF) {\n handle = 'u';\n length = 4;\n } else if (character <= 0xFFFFFFFF) {\n handle = 'U';\n length = 8;\n } else {\n throw new YAMLException('code point within a string may not be greater than 0xFFFFFFFF');\n }\n\n return '\\\\' + handle + common.repeat('0', length - string.length) + string;\n}\n\nfunction State(options) {\n this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;\n this.indent = Math.max(1, (options['indent'] || 2));\n this.skipInvalid = options['skipInvalid'] || false;\n this.flowLevel = (common.isNothing(options['flowLevel']) ? -1 : options['flowLevel']);\n this.styleMap = compileStyleMap(this.schema, options['styles'] || null);\n this.sortKeys = options['sortKeys'] || false;\n this.lineWidth = options['lineWidth'] || 80;\n this.noRefs = options['noRefs'] || false;\n this.noCompatMode = options['noCompatMode'] || false;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.explicitTypes = this.schema.compiledExplicit;\n\n this.tag = null;\n this.result = '';\n\n this.duplicates = [];\n this.usedDuplicates = null;\n}\n\n// Indents every line in a string. Empty lines (\\n only) are not indented.\nfunction indentString(string, spaces) {\n var ind = common.repeat(' ', spaces),\n position = 0,\n next = -1,\n result = '',\n line,\n length = string.length;\n\n while (position < length) {\n next = string.indexOf('\\n', position);\n if (next === -1) {\n line = string.slice(position);\n position = length;\n } else {\n line = string.slice(position, next + 1);\n position = next + 1;\n }\n\n if (line.length && line !== '\\n') result += ind;\n\n result += line;\n }\n\n return result;\n}\n\nfunction generateNextLine(state, level) {\n return '\\n' + common.repeat(' ', state.indent * level);\n}\n\nfunction testImplicitResolving(state, str) {\n var index, length, type;\n\n for (index = 0, length = state.implicitTypes.length; index < length; index += 1) {\n type = state.implicitTypes[index];\n\n if (type.resolve(str)) {\n return true;\n }\n }\n\n return false;\n}\n\n// [33] s-white ::= s-space | s-tab\nfunction isWhitespace(c) {\n return c === CHAR_SPACE || c === CHAR_TAB;\n}\n\n// Returns true if the character can be printed without escaping.\n// From YAML 1.2: \"any allowed characters known to be non-printable\n// should also be escaped. [However,] This isn’t mandatory\"\n// Derived from nb-char - \\t - #x85 - #xA0 - #x2028 - #x2029.\nfunction isPrintable(c) {\n return (0x00020 <= c && c <= 0x00007E)\n || ((0x000A1 <= c && c <= 0x00D7FF) && c !== 0x2028 && c !== 0x2029)\n || ((0x0E000 <= c && c <= 0x00FFFD) && c !== 0xFEFF /* BOM */)\n || (0x10000 <= c && c <= 0x10FFFF);\n}\n\n// Simplified test for values allowed after the first character in plain style.\nfunction isPlainSafe(c) {\n // Uses a subset of nb-char - c-flow-indicator - \":\" - \"#\"\n // where nb-char ::= c-printable - b-char - c-byte-order-mark.\n return isPrintable(c) && c !== 0xFEFF\n // - c-flow-indicator\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // - \":\" - \"#\"\n && c !== CHAR_COLON\n && c !== CHAR_SHARP;\n}\n\n// Simplified test for values allowed as the first character in plain style.\nfunction isPlainSafeFirst(c) {\n // Uses a subset of ns-char - c-indicator\n // where ns-char = nb-char - s-white.\n return isPrintable(c) && c !== 0xFEFF\n && !isWhitespace(c) // - s-white\n // - (c-indicator ::=\n // “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}”\n && c !== CHAR_MINUS\n && c !== CHAR_QUESTION\n && c !== CHAR_COLON\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // | “#” | “&” | “*” | “!” | “|” | “>” | “'” | “\"”\n && c !== CHAR_SHARP\n && c !== CHAR_AMPERSAND\n && c !== CHAR_ASTERISK\n && c !== CHAR_EXCLAMATION\n && c !== CHAR_VERTICAL_LINE\n && c !== CHAR_GREATER_THAN\n && c !== CHAR_SINGLE_QUOTE\n && c !== CHAR_DOUBLE_QUOTE\n // | “%” | “@” | “`”)\n && c !== CHAR_PERCENT\n && c !== CHAR_COMMERCIAL_AT\n && c !== CHAR_GRAVE_ACCENT;\n}\n\nvar STYLE_PLAIN = 1,\n STYLE_SINGLE = 2,\n STYLE_LITERAL = 3,\n STYLE_FOLDED = 4,\n STYLE_DOUBLE = 5;\n\n// Determines which scalar styles are possible and returns the preferred style.\n// lineWidth = -1 => no limit.\n// Pre-conditions: str.length > 0.\n// Post-conditions:\n// STYLE_PLAIN or STYLE_SINGLE => no \\n are in the string.\n// STYLE_LITERAL => no lines are suitable for folding (or lineWidth is -1).\n// STYLE_FOLDED => a line > lineWidth and can be folded (and lineWidth != -1).\nfunction chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth, testAmbiguousType) {\n var i;\n var char;\n var hasLineBreak = false;\n var hasFoldableLine = false; // only checked if shouldTrackWidth\n var shouldTrackWidth = lineWidth !== -1;\n var previousLineBreak = -1; // count the first line correctly\n var plain = isPlainSafeFirst(string.charCodeAt(0))\n && !isWhitespace(string.charCodeAt(string.length - 1));\n\n if (singleLineOnly) {\n // Case: no block styles.\n // Check for disallowed characters to rule out plain and single.\n for (i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char);\n }\n } else {\n // Case: block styles permitted.\n for (i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n if (char === CHAR_LINE_FEED) {\n hasLineBreak = true;\n // Check if any line can be folded.\n if (shouldTrackWidth) {\n hasFoldableLine = hasFoldableLine ||\n // Foldable line = too long, and not more-indented.\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' ');\n previousLineBreak = i;\n }\n } else if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char);\n }\n // in case the end is missing a \\n\n hasFoldableLine = hasFoldableLine || (shouldTrackWidth &&\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' '));\n }\n // Although every style can represent \\n without escaping, prefer block styles\n // for multiline, since they're more readable and they don't add empty lines.\n // Also prefer folding a super-long line.\n if (!hasLineBreak && !hasFoldableLine) {\n // Strings interpretable as another type have to be quoted;\n // e.g. the string 'true' vs. the boolean true.\n return plain && !testAmbiguousType(string)\n ? STYLE_PLAIN : STYLE_SINGLE;\n }\n // Edge case: block indentation indicator can only have one digit.\n if (string[0] === ' ' && indentPerLevel > 9) {\n return STYLE_DOUBLE;\n }\n // At this point we know block styles are valid.\n // Prefer literal style unless we want to fold.\n return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL;\n}\n\n// Note: line breaking/folding is implemented for only the folded style.\n// NB. We drop the last trailing newline (if any) of a returned block scalar\n// since the dumper adds its own newline. This always works:\n// • No ending newline => unaffected; already using strip \"-\" chomping.\n// • Ending newline => removed then restored.\n// Importantly, this keeps the \"+\" chomp indicator from gaining an extra line.\nfunction writeScalar(state, string, level, iskey) {\n state.dump = (function () {\n if (string.length === 0) {\n return \"''\";\n }\n if (!state.noCompatMode &&\n DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1) {\n return \"'\" + string + \"'\";\n }\n\n var indent = state.indent * Math.max(1, level); // no 0-indent scalars\n // As indentation gets deeper, let the width decrease monotonically\n // to the lower bound min(state.lineWidth, 40).\n // Note that this implies\n // state.lineWidth ≤ 40 + state.indent: width is fixed at the lower bound.\n // state.lineWidth > 40 + state.indent: width decreases until the lower bound.\n // This behaves better than a constant minimum width which disallows narrower options,\n // or an indent threshold which causes the width to suddenly increase.\n var lineWidth = state.lineWidth === -1\n ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent);\n\n // Without knowing if keys are implicit/explicit, assume implicit for safety.\n var singleLineOnly = iskey\n // No block styles in flow mode.\n || (state.flowLevel > -1 && level >= state.flowLevel);\n function testAmbiguity(string) {\n return testImplicitResolving(state, string);\n }\n\n switch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth, testAmbiguity)) {\n case STYLE_PLAIN:\n return string;\n case STYLE_SINGLE:\n return \"'\" + string.replace(/'/g, \"''\") + \"'\";\n case STYLE_LITERAL:\n return '|' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(string, indent));\n case STYLE_FOLDED:\n return '>' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(foldString(string, lineWidth), indent));\n case STYLE_DOUBLE:\n return '\"' + escapeString(string, lineWidth) + '\"';\n default:\n throw new YAMLException('impossible error: invalid scalar style');\n }\n }());\n}\n\n// Pre-conditions: string is valid for a block scalar, 1 <= indentPerLevel <= 9.\nfunction blockHeader(string, indentPerLevel) {\n var indentIndicator = (string[0] === ' ') ? String(indentPerLevel) : '';\n\n // note the special case: the string '\\n' counts as a \"trailing\" empty line.\n var clip = string[string.length - 1] === '\\n';\n var keep = clip && (string[string.length - 2] === '\\n' || string === '\\n');\n var chomp = keep ? '+' : (clip ? '' : '-');\n\n return indentIndicator + chomp + '\\n';\n}\n\n// (See the note for writeScalar.)\nfunction dropEndingNewline(string) {\n return string[string.length - 1] === '\\n' ? string.slice(0, -1) : string;\n}\n\n// Note: a long line without a suitable break point will exceed the width limit.\n// Pre-conditions: every char in str isPrintable, str.length > 0, width > 0.\nfunction foldString(string, width) {\n // In folded style, $k$ consecutive newlines output as $k+1$ newlines—\n // unless they're before or after a more-indented line, or at the very\n // beginning or end, in which case $k$ maps to $k$.\n // Therefore, parse each chunk as newline(s) followed by a content line.\n var lineRe = /(\\n+)([^\\n]*)/g;\n\n // first line (possibly an empty line)\n var result = (function () {\n var nextLF = string.indexOf('\\n');\n nextLF = nextLF !== -1 ? nextLF : string.length;\n lineRe.lastIndex = nextLF;\n return foldLine(string.slice(0, nextLF), width);\n }());\n // If we haven't reached the first content line yet, don't add an extra \\n.\n var prevMoreIndented = string[0] === '\\n' || string[0] === ' ';\n var moreIndented;\n\n // rest of the lines\n var match;\n while ((match = lineRe.exec(string))) {\n var prefix = match[1], line = match[2];\n moreIndented = (line[0] === ' ');\n result += prefix\n + (!prevMoreIndented && !moreIndented && line !== ''\n ? '\\n' : '')\n + foldLine(line, width);\n prevMoreIndented = moreIndented;\n }\n\n return result;\n}\n\n// Greedy line breaking.\n// Picks the longest line under the limit each time,\n// otherwise settles for the shortest line over the limit.\n// NB. More-indented lines *cannot* be folded, as that would add an extra \\n.\nfunction foldLine(line, width) {\n if (line === '' || line[0] === ' ') return line;\n\n // Since a more-indented line adds a \\n, breaks can't be followed by a space.\n var breakRe = / [^ ]/g; // note: the match index will always be <= length-2.\n var match;\n // start is an inclusive index. end, curr, and next are exclusive.\n var start = 0, end, curr = 0, next = 0;\n var result = '';\n\n // Invariants: 0 <= start <= length-1.\n // 0 <= curr <= next <= max(0, length-2). curr - start <= width.\n // Inside the loop:\n // A match implies length >= 2, so curr and next are <= length-2.\n while ((match = breakRe.exec(line))) {\n next = match.index;\n // maintain invariant: curr - start <= width\n if (next - start > width) {\n end = (curr > start) ? curr : next; // derive end <= length-2\n result += '\\n' + line.slice(start, end);\n // skip the space that was output as \\n\n start = end + 1; // derive start <= length-1\n }\n curr = next;\n }\n\n // By the invariants, start <= length-1, so there is something left over.\n // It is either the whole string or a part starting from non-whitespace.\n result += '\\n';\n // Insert a break if the remainder is too long and there is a break available.\n if (line.length - start > width && curr > start) {\n result += line.slice(start, curr) + '\\n' + line.slice(curr + 1);\n } else {\n result += line.slice(start);\n }\n\n return result.slice(1); // drop extra \\n joiner\n}\n\n// Escapes a double-quoted string.\nfunction escapeString(string) {\n var result = '';\n var char;\n var escapeSeq;\n\n for (var i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n escapeSeq = ESCAPE_SEQUENCES[char];\n result += !escapeSeq && isPrintable(char)\n ? string[i]\n : escapeSeq || encodeHex(char);\n }\n\n return result;\n}\n\nfunction writeFlowSequence(state, level, object) {\n var _result = '',\n _tag = state.tag,\n index,\n length;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n // Write only valid elements.\n if (writeNode(state, level, object[index], false, false)) {\n if (index !== 0) _result += ', ';\n _result += state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = '[' + _result + ']';\n}\n\nfunction writeBlockSequence(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n index,\n length;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n // Write only valid elements.\n if (writeNode(state, level + 1, object[index], true, true)) {\n if (!compact || index !== 0) {\n _result += generateNextLine(state, level);\n }\n _result += '- ' + state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = _result || '[]'; // Empty sequence if no valid values.\n}\n\nfunction writeFlowMapping(state, level, object) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n pairBuffer;\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n\n if (index !== 0) pairBuffer += ', ';\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (!writeNode(state, level, objectKey, false, false)) {\n continue; // Skip this pair because of invalid key;\n }\n\n if (state.dump.length > 1024) pairBuffer += '? ';\n\n pairBuffer += state.dump + ': ';\n\n if (!writeNode(state, level, objectValue, false, false)) {\n continue; // Skip this pair because of invalid value.\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = '{' + _result + '}';\n}\n\nfunction writeBlockMapping(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n explicitPair,\n pairBuffer;\n\n // Allow sorting keys so that the output file is deterministic\n if (state.sortKeys === true) {\n // Default sorting\n objectKeyList.sort();\n } else if (typeof state.sortKeys === 'function') {\n // Custom sort function\n objectKeyList.sort(state.sortKeys);\n } else if (state.sortKeys) {\n // Something is wrong\n throw new YAMLException('sortKeys must be a boolean or a function');\n }\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n\n if (!compact || index !== 0) {\n pairBuffer += generateNextLine(state, level);\n }\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (!writeNode(state, level + 1, objectKey, true, true, true)) {\n continue; // Skip this pair because of invalid key.\n }\n\n explicitPair = (state.tag !== null && state.tag !== '?') ||\n (state.dump && state.dump.length > 1024);\n\n if (explicitPair) {\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += '?';\n } else {\n pairBuffer += '? ';\n }\n }\n\n pairBuffer += state.dump;\n\n if (explicitPair) {\n pairBuffer += generateNextLine(state, level);\n }\n\n if (!writeNode(state, level + 1, objectValue, true, explicitPair)) {\n continue; // Skip this pair because of invalid value.\n }\n\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += ':';\n } else {\n pairBuffer += ': ';\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = _result || '{}'; // Empty mapping if no valid pairs.\n}\n\nfunction detectType(state, object, explicit) {\n var _result, typeList, index, length, type, style;\n\n typeList = explicit ? state.explicitTypes : state.implicitTypes;\n\n for (index = 0, length = typeList.length; index < length; index += 1) {\n type = typeList[index];\n\n if ((type.instanceOf || type.predicate) &&\n (!type.instanceOf || ((typeof object === 'object') && (object instanceof type.instanceOf))) &&\n (!type.predicate || type.predicate(object))) {\n\n state.tag = explicit ? type.tag : '?';\n\n if (type.represent) {\n style = state.styleMap[type.tag] || type.defaultStyle;\n\n if (_toString.call(type.represent) === '[object Function]') {\n _result = type.represent(object, style);\n } else if (_hasOwnProperty.call(type.represent, style)) {\n _result = type.represent[style](object, style);\n } else {\n throw new YAMLException('!<' + type.tag + '> tag resolver accepts not \"' + style + '\" style');\n }\n\n state.dump = _result;\n }\n\n return true;\n }\n }\n\n return false;\n}\n\n// Serializes `object` and writes it to global `result`.\n// Returns true on success, or false on invalid object.\n//\nfunction writeNode(state, level, object, block, compact, iskey) {\n state.tag = null;\n state.dump = object;\n\n if (!detectType(state, object, false)) {\n detectType(state, object, true);\n }\n\n var type = _toString.call(state.dump);\n\n if (block) {\n block = (state.flowLevel < 0 || state.flowLevel > level);\n }\n\n var objectOrArray = type === '[object Object]' || type === '[object Array]',\n duplicateIndex,\n duplicate;\n\n if (objectOrArray) {\n duplicateIndex = state.duplicates.indexOf(object);\n duplicate = duplicateIndex !== -1;\n }\n\n if ((state.tag !== null && state.tag !== '?') || duplicate || (state.indent !== 2 && level > 0)) {\n compact = false;\n }\n\n if (duplicate && state.usedDuplicates[duplicateIndex]) {\n state.dump = '*ref_' + duplicateIndex;\n } else {\n if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) {\n state.usedDuplicates[duplicateIndex] = true;\n }\n if (type === '[object Object]') {\n if (block && (Object.keys(state.dump).length !== 0)) {\n writeBlockMapping(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowMapping(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object Array]') {\n if (block && (state.dump.length !== 0)) {\n writeBlockSequence(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowSequence(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object String]') {\n if (state.tag !== '?') {\n writeScalar(state, state.dump, level, iskey);\n }\n } else {\n if (state.skipInvalid) return false;\n throw new YAMLException('unacceptable kind of an object to dump ' + type);\n }\n\n if (state.tag !== null && state.tag !== '?') {\n state.dump = '!<' + state.tag + '> ' + state.dump;\n }\n }\n\n return true;\n}\n\nfunction getDuplicateReferences(object, state) {\n var objects = [],\n duplicatesIndexes = [],\n index,\n length;\n\n inspectNode(object, objects, duplicatesIndexes);\n\n for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) {\n state.duplicates.push(objects[duplicatesIndexes[index]]);\n }\n state.usedDuplicates = new Array(length);\n}\n\nfunction inspectNode(object, objects, duplicatesIndexes) {\n var objectKeyList,\n index,\n length;\n\n if (object !== null && typeof object === 'object') {\n index = objects.indexOf(object);\n if (index !== -1) {\n if (duplicatesIndexes.indexOf(index) === -1) {\n duplicatesIndexes.push(index);\n }\n } else {\n objects.push(object);\n\n if (Array.isArray(object)) {\n for (index = 0, length = object.length; index < length; index += 1) {\n inspectNode(object[index], objects, duplicatesIndexes);\n }\n } else {\n objectKeyList = Object.keys(object);\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes);\n }\n }\n }\n }\n}\n\nfunction dump(input, options) {\n options = options || {};\n\n var state = new State(options);\n\n if (!state.noRefs) getDuplicateReferences(input, state);\n\n if (writeNode(state, 0, input, true, true)) return state.dump + '\\n';\n\n return '';\n}\n\nfunction safeDump(input, options) {\n return dump(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\nmodule.exports.dump = dump;\nmodule.exports.safeDump = safeDump;\n","'use strict';\n\n\nvar loader = require('./js-yaml/loader');\nvar dumper = require('./js-yaml/dumper');\n\n\nfunction deprecated(name) {\n return function () {\n throw new Error('Function ' + name + ' is deprecated and cannot be used.');\n };\n}\n\n\nmodule.exports.Type = require('./js-yaml/type');\nmodule.exports.Schema = require('./js-yaml/schema');\nmodule.exports.FAILSAFE_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.JSON_SCHEMA = require('./js-yaml/schema/json');\nmodule.exports.CORE_SCHEMA = require('./js-yaml/schema/core');\nmodule.exports.DEFAULT_SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_FULL_SCHEMA = require('./js-yaml/schema/default_full');\nmodule.exports.load = loader.load;\nmodule.exports.loadAll = loader.loadAll;\nmodule.exports.safeLoad = loader.safeLoad;\nmodule.exports.safeLoadAll = loader.safeLoadAll;\nmodule.exports.dump = dumper.dump;\nmodule.exports.safeDump = dumper.safeDump;\nmodule.exports.YAMLException = require('./js-yaml/exception');\n\n// Deprecated schema names from JS-YAML 2.0.x\nmodule.exports.MINIMAL_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_SCHEMA = require('./js-yaml/schema/default_full');\n\n// Deprecated functions from JS-YAML 1.x.x\nmodule.exports.scan = deprecated('scan');\nmodule.exports.parse = deprecated('parse');\nmodule.exports.compose = deprecated('compose');\nmodule.exports.addConstructor = deprecated('addConstructor');\n","export default function(dom, data) {\n let head = dom.querySelector(\"head\");\n\n appendHtml(head, `\n \n \n \n \n ${data.title}\n `);\n\n appendHtml(head, `\n \n \n \n `);\n data.authors.forEach((a) => {\n appendHtml(head, `\n `)\n });\n\n appendHtml(head, `\n \n \n \n \n \n \n \n \n `);\n\n appendHtml(head, `\n \n \n \n \n \n \n \n \n `);\n\n appendHtml(head, `\n \n \n \n \n \n \n \n \n \n \n \n \n `);\n data.authors.forEach((a) => {\n appendHtml(head, `\n \n \n `)\n });\n\n if (data.citations) {\n let citationKeys = Object.keys(data.citations);\n citationKeys.forEach(key => {\n console.log(key);\n appendHtml(head, `\n \n `);\n });\n }\n}\n\n\nfunction appendHtml(el, html) {\n el.innerHTML += html;\n}\n\nfunction citation_meta_content(ref){\n var content = `citation_title=${ref.title};`;\n ref.author.split(\" and \").forEach(author => {\n content += `citation_author=${author.trim()};`;\n });\n if (\"journal\" in ref){\n content += `citation_journal_title=${ref.journal};`;\n }\n if (\"volume\" in ref) {\n content += `citation_volume=${ref.volume};`;\n }\n if (\"issue\" in ref || \"number\" in ref){\n content += `citation_number=${ref.issue || ref.number};`;\n }\n /*content += `citation_first_page=${};`;\n content += `citation_publication_date=${};`;*/\n return content;\n}\n","import html from \"./components/html\";\nimport styles from \"./components/styles\";\nimport frontMatter from \"./components/front-matter\";\nimport bibliography from \"./components/bibliography\";\nimport meta from \"./components/meta\";\nimport header from \"./components/header\";\nimport appendix from \"./components/appendix\";\nimport footer from \"./components/footer\";\nimport citation from \"./components/citation\";\nimport markdown from \"./components/markdown\";\nimport code from \"./components/code\";\nimport testData from \"./test-data\";\n\n\nfunction render(dom, data) {\n html(dom);\n styles(dom);\n document.addEventListener(\"DOMContentLoaded\", function(event) {\n frontMatter(dom, data);\n bibliography(dom, data);\n meta(dom, data);\n header(dom, data);\n appendix(dom, data);\n footer(dom, data);\n markdown(dom, data);\n code(dom, data);\n citation(dom, data);\n console.log(\"final data:\")\n for (var k in data) {console.log(\" \", k, \": \", data[k])}\n });\n}\n\n\nif(window.document) {\n render(window.document, testData);\n}\n\nexport default render;\n","export default function(dom) {\n if (!dom.querySelector(\"html\").getAttribute(\"lang\")) {\n dom.querySelector(\"html\").setAttribute(\"lang\", \"en\")\n }\n\n let head = dom.querySelector(\"head\");\n\n if (!dom.querySelector(\"meta[charset]\")) {\n let meta = dom.createElement(\"meta\");\n meta.setAttribute(\"charset\", \"utf-8\");\n head.appendChild(meta);\n }\n if (!dom.querySelector(\"meta[name=viewport]\")) {\n let meta = dom.createElement(\"meta\");\n meta.setAttribute(\"name\", \"viewport\");\n meta.setAttribute(\"content\", \"width=device-width, initial-scale=1\");\n head.appendChild(meta);\n }\n}\n","import base from './styles-base.css';\nimport layout from './styles-layout.css';\nimport article from './styles-article.css';\nimport code from './styles-code.css';\n\nexport default function(dom) {\n let s = dom.createElement(\"style\");\n s.textContent = base + layout + article + code;\n dom.querySelector(\"head\").appendChild(s);\n}\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:str', {\n kind: 'scalar',\n construct: function (data) { return data !== null ? data : ''; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:seq', {\n kind: 'sequence',\n construct: function (data) { return data !== null ? data : []; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:map', {\n kind: 'mapping',\n construct: function (data) { return data !== null ? data : {}; }\n});\n","// Standard YAML's Failsafe schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2802346\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n explicit: [\n require('../type/str'),\n require('../type/seq'),\n require('../type/map')\n ]\n});\n","// Standard YAML's JSON schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2803231\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, this schema is not such strict as defined in the YAML specification.\n// It allows numbers in binary notaion, use `Null` and `NULL` as `null`, etc.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./failsafe')\n ],\n implicit: [\n require('../type/null'),\n require('../type/bool'),\n require('../type/int'),\n require('../type/float')\n ]\n});\n","// Standard YAML's Core schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2804923\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, Core schema has no distinctions from JSON schema is JS-YAML.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./json')\n ]\n});\n","// JS-YAML's default schema for `safeLoad` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on standard YAML's Core schema and includes most of\n// extra types described at YAML tag repository. (http://yaml.org/type/)\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./core')\n ],\n implicit: [\n require('../type/timestamp'),\n require('../type/merge')\n ],\n explicit: [\n require('../type/binary'),\n require('../type/omap'),\n require('../type/pairs'),\n require('../type/set')\n ]\n});\n","// JS-YAML's default schema for `load` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on JS-YAML's default safe schema and includes\n// JavaScript-specific types: !!js/undefined, !!js/regexp and !!js/function.\n//\n// Also this schema is used as default base schema at `Schema.create` function.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = Schema.DEFAULT = new Schema({\n include: [\n require('./default_safe')\n ],\n explicit: [\n require('../type/js/undefined'),\n require('../type/js/regexp'),\n require('../type/js/function')\n ]\n});\n","'use strict';\n\n\nvar yaml = require('./lib/js-yaml.js');\n\n\nmodule.exports = yaml;\n","import ymlParse from \"js-yaml\";\n\nexport default function(dom, data) {\n let el = dom.querySelector('script[type=\"text/front-matter\"]');\n\n //TODO If we don't have a local element, make a request for the document.\n if (el) {\n let text = el.textContent;\n let localData = ymlParse.safeLoad(text);\n\n data.title = localData.title;\n data.description = localData.description;\n data.authors = localData.authors.map((author, i) =>{\n let a = {};\n let name = Object.keys(author)[0];\n let names = name.split(\" \");\n a.firstName = names.slice(0, names.length - 1).join(\" \");\n a.lastName = names[names.length -1];\n a.personalURL = author[name];\n if(localData.affiliations[i]) {\n let affiliation = Object.keys(localData.affiliations[i])[0];\n a.affiliation = affiliation;\n a.affiliationURL = localData.affiliations[i][affiliation];\n }\n return a;\n });\n }\n\n}\n","/* start bibtexParse 0.0.22 */\n\n//Original work by Henrik Muehe (c) 2010\n//\n//CommonJS port by Mikola Lysenko 2013\n//\n//Port to Browser lib by ORCID / RCPETERS\n//\n//Issues:\n//no comment handling within strings\n//no string concatenation\n//no variable values yet\n//Grammar implemented here:\n//bibtex -> (string | preamble | comment | entry)*;\n//string -> '@STRING' '{' key_equals_value '}';\n//preamble -> '@PREAMBLE' '{' value '}';\n//comment -> '@COMMENT' '{' value '}';\n//entry -> '@' key '{' key ',' key_value_list '}';\n//key_value_list -> key_equals_value (',' key_equals_value)*;\n//key_equals_value -> key '=' value;\n//value -> value_quotes | value_braces | key;\n//value_quotes -> '\"' .*? '\"'; // not quite\n//value_braces -> '{' .*? '\"'; // not quite\n(function(exports) {\n\n function BibtexParser() {\n \n this.months = [\"jan\", \"feb\", \"mar\", \"apr\", \"may\", \"jun\", \"jul\", \"aug\", \"sep\", \"oct\", \"nov\", \"dec\"];\n this.notKey = [',','{','}',' ','='];\n this.pos = 0;\n this.input = \"\";\n this.entries = new Array();\n\n this.currentEntry = \"\";\n\n this.setInput = function(t) {\n this.input = t;\n };\n\n this.getEntries = function() {\n return this.entries;\n };\n\n this.isWhitespace = function(s) {\n return (s == ' ' || s == '\\r' || s == '\\t' || s == '\\n');\n };\n\n this.match = function(s, canCommentOut) {\n if (canCommentOut == undefined || canCommentOut == null)\n canCommentOut = true;\n this.skipWhitespace(canCommentOut);\n if (this.input.substring(this.pos, this.pos + s.length) == s) {\n this.pos += s.length;\n } else {\n throw \"Token mismatch, expected \" + s + \", found \"\n + this.input.substring(this.pos);\n };\n this.skipWhitespace(canCommentOut);\n };\n\n this.tryMatch = function(s, canCommentOut) {\n if (canCommentOut == undefined || canCommentOut == null)\n canCommentOut = true;\n this.skipWhitespace(canCommentOut);\n if (this.input.substring(this.pos, this.pos + s.length) == s) {\n return true;\n } else {\n return false;\n };\n this.skipWhitespace(canCommentOut);\n };\n\n /* when search for a match all text can be ignored, not just white space */\n this.matchAt = function() {\n while (this.input.length > this.pos && this.input[this.pos] != '@') {\n this.pos++;\n };\n\n if (this.input[this.pos] == '@') {\n return true;\n };\n return false;\n };\n\n this.skipWhitespace = function(canCommentOut) {\n while (this.isWhitespace(this.input[this.pos])) {\n this.pos++;\n };\n if (this.input[this.pos] == \"%\" && canCommentOut == true) {\n while (this.input[this.pos] != \"\\n\") {\n this.pos++;\n };\n this.skipWhitespace(canCommentOut);\n };\n };\n\n this.value_braces = function() {\n var bracecount = 0;\n this.match(\"{\", false);\n var start = this.pos;\n var escaped = false;\n while (true) {\n if (!escaped) {\n if (this.input[this.pos] == '}') {\n if (bracecount > 0) {\n bracecount--;\n } else {\n var end = this.pos;\n this.match(\"}\", false);\n return this.input.substring(start, end);\n };\n } else if (this.input[this.pos] == '{') {\n bracecount++;\n } else if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value\";\n };\n };\n if (this.input[this.pos] == '\\\\' && escaped == false)\n escaped = true;\n else\n escaped = false;\n this.pos++;\n };\n };\n\n this.value_comment = function() {\n var str = '';\n var brcktCnt = 0;\n while (!(this.tryMatch(\"}\", false) && brcktCnt == 0)) {\n str = str + this.input[this.pos];\n if (this.input[this.pos] == '{')\n brcktCnt++;\n if (this.input[this.pos] == '}')\n brcktCnt--;\n if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value:\" + this.input.substring(start);\n };\n this.pos++;\n };\n return str;\n };\n\n this.value_quotes = function() {\n this.match('\"', false);\n var start = this.pos;\n var escaped = false;\n while (true) {\n if (!escaped) {\n if (this.input[this.pos] == '\"') {\n var end = this.pos;\n this.match('\"', false);\n return this.input.substring(start, end);\n } else if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value:\" + this.input.substring(start);\n };\n }\n if (this.input[this.pos] == '\\\\' && escaped == false)\n escaped = true;\n else\n escaped = false;\n this.pos++;\n };\n };\n\n this.single_value = function() {\n var start = this.pos;\n if (this.tryMatch(\"{\")) {\n return this.value_braces();\n } else if (this.tryMatch('\"')) {\n return this.value_quotes();\n } else {\n var k = this.key();\n if (k.match(\"^[0-9]+$\"))\n return k;\n else if (this.months.indexOf(k.toLowerCase()) >= 0)\n return k.toLowerCase();\n else\n throw \"Value expected:\" + this.input.substring(start) + ' for key: ' + k;\n \n };\n };\n\n this.value = function() {\n var values = [];\n values.push(this.single_value());\n while (this.tryMatch(\"#\")) {\n this.match(\"#\");\n values.push(this.single_value());\n };\n return values.join(\"\");\n };\n\n this.key = function() {\n var start = this.pos;\n while (true) {\n if (this.pos >= this.input.length) {\n throw \"Runaway key\";\n };\n // а-яА-Я is Cyrillic\n //console.log(this.input[this.pos]);\n if (this.notKey.indexOf(this.input[this.pos]) >= 0) {\n return this.input.substring(start, this.pos);\n } else {\n this.pos++;\n \n };\n };\n };\n\n this.key_equals_value = function() {\n var key = this.key();\n if (this.tryMatch(\"=\")) {\n this.match(\"=\");\n var val = this.value();\n return [ key, val ];\n } else {\n throw \"... = value expected, equals sign missing:\"\n + this.input.substring(this.pos);\n };\n };\n\n this.key_value_list = function() {\n var kv = this.key_equals_value();\n this.currentEntry['entryTags'] = {};\n this.currentEntry['entryTags'][kv[0]] = kv[1];\n while (this.tryMatch(\",\")) {\n this.match(\",\");\n // fixes problems with commas at the end of a list\n if (this.tryMatch(\"}\")) {\n break;\n }\n ;\n kv = this.key_equals_value();\n this.currentEntry['entryTags'][kv[0]] = kv[1];\n };\n };\n\n this.entry_body = function(d) {\n this.currentEntry = {};\n this.currentEntry['citationKey'] = this.key();\n this.currentEntry['entryType'] = d.substring(1);\n this.match(\",\");\n this.key_value_list();\n this.entries.push(this.currentEntry);\n };\n\n this.directive = function() {\n this.match(\"@\");\n return \"@\" + this.key();\n };\n\n this.preamble = function() {\n this.currentEntry = {};\n this.currentEntry['entryType'] = 'PREAMBLE';\n this.currentEntry['entry'] = this.value_comment();\n this.entries.push(this.currentEntry);\n };\n\n this.comment = function() {\n this.currentEntry = {};\n this.currentEntry['entryType'] = 'COMMENT';\n this.currentEntry['entry'] = this.value_comment();\n this.entries.push(this.currentEntry);\n };\n\n this.entry = function(d) {\n this.entry_body(d);\n };\n\n this.bibtex = function() {\n while (this.matchAt()) {\n var d = this.directive();\n this.match(\"{\");\n if (d == \"@STRING\") {\n this.string();\n } else if (d == \"@PREAMBLE\") {\n this.preamble();\n } else if (d == \"@COMMENT\") {\n this.comment();\n } else {\n this.entry(d);\n }\n this.match(\"}\");\n };\n };\n };\n \n exports.toJSON = function(bibtex) {\n var b = new BibtexParser();\n b.setInput(bibtex);\n b.bibtex();\n return b.entries;\n };\n\n /* added during hackathon don't hate on me */\n exports.toBibtex = function(json) {\n var out = '';\n for ( var i in json) {\n out += \"@\" + json[i].entryType;\n out += '{';\n if (json[i].citationKey)\n out += json[i].citationKey + ', ';\n if (json[i].entry)\n out += json[i].entry ;\n if (json[i].entryTags) {\n var tags = '';\n for (var jdx in json[i].entryTags) {\n if (tags.length != 0)\n tags += ', ';\n tags += jdx + '= {' + json[i].entryTags[jdx] + '}';\n }\n out += tags;\n }\n out += '}\\n\\n';\n }\n return out;\n \n };\n\n})(typeof exports === 'undefined' ? this['bibtexParse'] = {} : exports);\n\n/* end bibtexParse */\n","import bibtexParse from \"bibtex-parse-js\";\n\nexport default function(dom, data) {\n let el = dom.querySelector('script[type=\"text/bibliography\"]');\n\n //TODO If we don't have a local element, make a request for the document.\n if (el) {\n let rawBib = el.textContent;\n let bibliography = {};\n bibtexParse.toJSON(rawBib).forEach(e => {\n bibliography[e.citationKey] = e.entryTags;\n bibliography[e.citationKey].type = e.entryType;\n });\n\n let citations = {};\n var citeTags = [].slice.apply(dom.querySelectorAll(\"dt-cite\"));\n citeTags.forEach(el => {\n let citationKeys = el.getAttribute(\"key\").split(\",\");\n citationKeys.forEach(key => {\n if (bibliography[key]) {\n citations[key] = bibliography[key];\n } else {\n console.warn(\"No bibliography entry found for: \" + key);\n }\n });\n });\n data.citations = citations;\n }\n}\n","import logo from \"./distill-logo.svg\";\n\nconst html = `\n\n\n\n`\n\nexport default function(dom, data) {\n dom.querySelector('dt-header').innerHTML = html;\n}\n","const html = `\n\n\n
    \n

    References

    \n \n

    Errors, Reuse, and Citation

    \n

    If you see mistakes or want to suggest changes, please submit a pull request on github.

    \n

    Diagrams and text are licensed under Creative Commons Attribution CC-BY 2.0, unless noted otherwise, with the source available on available on github. The figures that have been reused from other sources don't fall under this license and can be recognized by a note in their caption: “Figure from …”.

    \n

    For attribution in academic contexts, please cite this work as

    \n
    \n  

    BibTeX citation

    \n
    \n
    \n`;\n\n// distill.data().then(function(data) {\n// var as = el.querySelectorAll(\"a.github\");\n// [].forEach.call(as, function(a) {\n// a.setAttribute(\"href\", data.github);\n// });\n// el.querySelector(\".citation.short\").textContent = data.concatenatedAuthors + \", \" + '\"' + data.title + '\", Distill, ' + data.firstPublishedYear + \".\";\n// var bibtex = \"@article{\" + data.slug + \",\\n\";\n// bibtex += \" author = {\" + data.bibtexAuthors + \"},\\n\";\n// bibtex += \" title = {\" + data.title + \"},\\n\";\n// bibtex += \" journal = {Distill},\\n\";\n// bibtex += \" year = {\" + data.firstPublishedYear + \"},\\n\";\n// bibtex += \" note = {\" + data.url + \"}\\n\";\n// bibtex += \"}\";\n// el.querySelector(\".citation.long\").textContent = bibtex;\n// })\n\nexport default function(dom, data) {\n let el = dom.querySelector('dt-appendix')\n if (el) el.innerHTML = html;\n}\n","import logo from \"./distill-logo.svg\";\n\nlet html = `\n\n\n
    \n \n ${logo}\n Distill\n is dedicated to clear explanations of machine learning\n
    \n`;\n\nexport default function(dom, data) {\n let el = dom.querySelector(\"dt-footer\");\n if(el) el.innerHTML = html;\n}\n","export default function(dom, data) {\n let citations = [];\n if (data.citations) {\n citations = Object.keys(data.citations).map(c => data.citations[c]);\n citations.sort((a, b) => {\n return a.author.localeCompare(b.author);\n });\n }\n\n var citeTags = [].slice.apply(dom.querySelectorAll(\"dt-cite\"));\n citeTags.forEach(el => {\n var keys = el.textContent.split(\",\");\n var cite_string = keys.map(inline_cite).join(\", \");\n el.innerHTML = cite_string;\n });\n\n let bibEl = dom.querySelector(\"dt-bibliography\");\n if (bibEl) {\n let ol = dom.createElement(\"ol\");\n citations.forEach(citation => {\n let el = dom.createElement(\"li\");\n el.textContent = bibliography_cite(citation);\n ol.appendChild(el);\n })\n bibEl.appendChild(ol);\n }\n\n function inline_cite(key){\n if (key in data.citations){\n var ent = data.citations[key];\n var names = ent.author.split(\" and \");\n names = names.map(name => name.split(\",\")[0].trim())\n var year = ent.year;\n if (names.length == 1) return names[0] + \", \" + year;\n if (names.length == 2) return names[0] + \" & \" + names[1] + \", \" + year;\n if (names.length > 2) return names[0] + \", et al., \" + year;\n } else {\n return \"?\";\n }\n }\n\n function bibliography_cite(ent){\n if (ent){\n var names = ent.author.split(\" and \");\n var cite = \"\";\n let name_strings = names.map(name => {\n var last = name.split(\",\")[0].trim();\n var firsts = name.split(\",\")[1];\n if (firsts != undefined) {\n var initials = firsts.trim().split(\" \").map(s => s.trim()[0]);\n return last + \", \" + initials.join(\".\")+\".\";\n }\n return last;\n });\n if (names.length > 1) {\n cite += name_strings.slice(0, names.length-1).join(\", \");\n cite += \" and \" + name_strings[names.length-1];\n } else {\n cite += name_strings[0]\n }\n cite += \", \" + ent.year + \". \"\n cite += ent.title + \". \"\n cite += (ent.journal || ent.booktitle || \"\")\n if (\"volume\" in ent){\n var issue = ent.issue || ent.number;\n issue = (issue != undefined)? \"(\"+issue+\")\" : \"\";\n cite += \", Vol \" + ent.volume + issue;\n }\n if (\"pages\" in ent){\n cite += \", pp. \" + ent.pages\n }\n cite += \". \"\n return cite\n } else {\n return \"?\";\n }\n }\n\n\n //https://scholar.google.com/scholar?q=allintitle%3ADocument+author%3Aolah\n function get_URL(ent){\n if (ent){\n var names = ent.author.split(\" and \");\n names = names.map(name => name.split(\",\")[0].trim())\n var title = ent.title.split(\" \")//.replace(/[,:]/, \"\")\n var url = \"http://search.labs.crossref.org/dois?\"//\"\"https://scholar.google.com/scholar?\"\n url += uris({q: names.join(\" \") + \" \" + title.join(\" \")})\n }\n\n }\n}\n","/**\n * marked - a markdown parser\n * Copyright (c) 2011-2014, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/chjj/marked\n */\n\n;(function() {\n\n/**\n * Block-Level Grammar\n */\n\nvar block = {\n newline: /^\\n+/,\n code: /^( {4}[^\\n]+\\n*)+/,\n fences: noop,\n hr: /^( *[-*_]){3,} *(?:\\n+|$)/,\n heading: /^ *(#{1,6}) *([^\\n]+?) *#* *(?:\\n+|$)/,\n nptable: noop,\n lheading: /^([^\\n]+)\\n *(=|-){2,} *(?:\\n+|$)/,\n blockquote: /^( *>[^\\n]+(\\n(?!def)[^\\n]+)*\\n*)+/,\n list: /^( *)(bull) [\\s\\S]+?(?:hr|def|\\n{2,}(?! )(?!\\1bull )\\n*|\\s*$)/,\n html: /^ *(?:comment *(?:\\n|\\s*$)|closed *(?:\\n{2,}|\\s*$)|closing *(?:\\n{2,}|\\s*$))/,\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +[\"(]([^\\n]+)[\")])? *(?:\\n+|$)/,\n table: noop,\n paragraph: /^((?:[^\\n]+\\n?(?!hr|heading|lheading|blockquote|tag|def))+)\\n*/,\n text: /^[^\\n]+/\n};\n\nblock.bullet = /(?:[*+-]|\\d+\\.)/;\nblock.item = /^( *)(bull) [^\\n]*(?:\\n(?!\\1bull )[^\\n]*)*/;\nblock.item = replace(block.item, 'gm')\n (/bull/g, block.bullet)\n ();\n\nblock.list = replace(block.list)\n (/bull/g, block.bullet)\n ('hr', '\\\\n+(?=\\\\1?(?:[-*_] *){3,}(?:\\\\n+|$))')\n ('def', '\\\\n+(?=' + block.def.source + ')')\n ();\n\nblock.blockquote = replace(block.blockquote)\n ('def', block.def)\n ();\n\nblock._tag = '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code'\n + '|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo'\n + '|span|br|wbr|ins|del|img)\\\\b)\\\\w+(?!:/|[^\\\\w\\\\s@]*@)\\\\b';\n\nblock.html = replace(block.html)\n ('comment', //)\n ('closed', /<(tag)[\\s\\S]+?<\\/\\1>/)\n ('closing', /])*?>/)\n (/tag/g, block._tag)\n ();\n\nblock.paragraph = replace(block.paragraph)\n ('hr', block.hr)\n ('heading', block.heading)\n ('lheading', block.lheading)\n ('blockquote', block.blockquote)\n ('tag', '<' + block._tag)\n ('def', block.def)\n ();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = merge({}, block);\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = merge({}, block.normal, {\n fences: /^ *(`{3,}|~{3,})[ \\.]*(\\S+)? *\\n([\\s\\S]*?)\\s*\\1 *(?:\\n+|$)/,\n paragraph: /^/,\n heading: /^ *(#{1,6}) +([^\\n]+?) *#* *(?:\\n+|$)/\n});\n\nblock.gfm.paragraph = replace(block.paragraph)\n ('(?!', '(?!'\n + block.gfm.fences.source.replace('\\\\1', '\\\\2') + '|'\n + block.list.source.replace('\\\\1', '\\\\3') + '|')\n ();\n\n/**\n * GFM + Tables Block Grammar\n */\n\nblock.tables = merge({}, block.gfm, {\n nptable: /^ *(\\S.*\\|.*)\\n *([-:]+ *\\|[-| :]*)\\n((?:.*\\|.*(?:\\n|$))*)\\n*/,\n table: /^ *\\|(.+)\\n *\\|( *[-:]+[-| :]*)\\n((?: *\\|.*(?:\\n|$))*)\\n*/\n});\n\n/**\n * Block Lexer\n */\n\nfunction Lexer(options) {\n this.tokens = [];\n this.tokens.links = {};\n this.options = options || marked.defaults;\n this.rules = block.normal;\n\n if (this.options.gfm) {\n if (this.options.tables) {\n this.rules = block.tables;\n } else {\n this.rules = block.gfm;\n }\n }\n}\n\n/**\n * Expose Block Rules\n */\n\nLexer.rules = block;\n\n/**\n * Static Lex Method\n */\n\nLexer.lex = function(src, options) {\n var lexer = new Lexer(options);\n return lexer.lex(src);\n};\n\n/**\n * Preprocessing\n */\n\nLexer.prototype.lex = function(src) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n')\n .replace(/\\t/g, ' ')\n .replace(/\\u00a0/g, ' ')\n .replace(/\\u2424/g, '\\n');\n\n return this.token(src, true);\n};\n\n/**\n * Lexing\n */\n\nLexer.prototype.token = function(src, top, bq) {\n var src = src.replace(/^ +$/gm, '')\n , next\n , loose\n , cap\n , bull\n , b\n , item\n , space\n , i\n , l;\n\n while (src) {\n // newline\n if (cap = this.rules.newline.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[0].length > 1) {\n this.tokens.push({\n type: 'space'\n });\n }\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n cap = cap[0].replace(/^ {4}/gm, '');\n this.tokens.push({\n type: 'code',\n text: !this.options.pedantic\n ? cap.replace(/\\n+$/, '')\n : cap\n });\n continue;\n }\n\n // fences (gfm)\n if (cap = this.rules.fences.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'code',\n lang: cap[2],\n text: cap[3] || ''\n });\n continue;\n }\n\n // heading\n if (cap = this.rules.heading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[1].length,\n text: cap[2]\n });\n continue;\n }\n\n // table no leading pipe (gfm)\n if (top && (cap = this.rules.nptable.exec(src))) {\n src = src.substring(cap[0].length);\n\n item = {\n type: 'table',\n header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3].replace(/\\n$/, '').split('\\n')\n };\n\n for (i = 0; i < item.align.length; 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 for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i].split(/ *\\| */);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n\n // lheading\n if (cap = this.rules.lheading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[2] === '=' ? 1 : 2,\n text: cap[1]\n });\n continue;\n }\n\n // hr\n if (cap = this.rules.hr.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'hr'\n });\n continue;\n }\n\n // blockquote\n if (cap = this.rules.blockquote.exec(src)) {\n src = src.substring(cap[0].length);\n\n this.tokens.push({\n type: 'blockquote_start'\n });\n\n cap = cap[0].replace(/^ *> ?/gm, '');\n\n // Pass `top` to keep the current\n // \"toplevel\" state. This is exactly\n // how markdown.pl works.\n this.token(cap, top, true);\n\n this.tokens.push({\n type: 'blockquote_end'\n });\n\n continue;\n }\n\n // list\n if (cap = this.rules.list.exec(src)) {\n src = src.substring(cap[0].length);\n bull = cap[2];\n\n this.tokens.push({\n type: 'list_start',\n ordered: bull.length > 1\n });\n\n // Get each top-level item.\n cap = cap[0].match(this.rules.item);\n\n next = false;\n l = cap.length;\n i = 0;\n\n for (; i < l; i++) {\n item = cap[i];\n\n // Remove the list item's bullet\n // so it is seen as the next token.\n space = item.length;\n item = item.replace(/^ *([*+-]|\\d+\\.) +/, '');\n\n // Outdent whatever the\n // list item contains. Hacky.\n if (~item.indexOf('\\n ')) {\n space -= item.length;\n item = !this.options.pedantic\n ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '')\n : item.replace(/^ {1,4}/gm, '');\n }\n\n // Determine whether the next list item belongs here.\n // Backpedal if it does not belong in this list.\n if (this.options.smartLists && i !== l - 1) {\n b = block.bullet.exec(cap[i + 1])[0];\n if (bull !== b && !(bull.length > 1 && b.length > 1)) {\n src = cap.slice(i + 1).join('\\n') + src;\n i = l - 1;\n }\n }\n\n // Determine whether item is loose or not.\n // Use: /(^|\\n)(?! )[^\\n]+\\n\\n(?!\\s*$)/\n // for discount behavior.\n loose = next || /\\n\\n(?!\\s*$)/.test(item);\n if (i !== l - 1) {\n next = item.charAt(item.length - 1) === '\\n';\n if (!loose) loose = next;\n }\n\n this.tokens.push({\n type: loose\n ? 'loose_item_start'\n : 'list_item_start'\n });\n\n // Recurse.\n this.token(item, false, bq);\n\n this.tokens.push({\n type: 'list_item_end'\n });\n }\n\n this.tokens.push({\n type: 'list_end'\n });\n\n continue;\n }\n\n // html\n if (cap = this.rules.html.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: this.options.sanitize\n ? 'paragraph'\n : 'html',\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n });\n continue;\n }\n\n // def\n if ((!bq && top) && (cap = this.rules.def.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.links[cap[1].toLowerCase()] = {\n href: cap[2],\n title: cap[3]\n };\n continue;\n }\n\n // table (gfm)\n if (top && (cap = this.rules.table.exec(src))) {\n src = src.substring(cap[0].length);\n\n item = {\n type: 'table',\n header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3].replace(/(?: *\\| *)?\\n$/, '').split('\\n')\n };\n\n for (i = 0; i < item.align.length; 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 for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i]\n .replace(/^ *\\| *| *\\| *$/g, '')\n .split(/ *\\| */);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n\n // top-level paragraph\n if (top && (cap = this.rules.paragraph.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'paragraph',\n text: cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1]\n });\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n // Top-level should never reach here.\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'text',\n text: cap[0]\n });\n continue;\n }\n\n if (src) {\n throw new\n Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return this.tokens;\n};\n\n/**\n * Inline-Level Grammar\n */\n\nvar inline = {\n escape: /^\\\\([\\\\`*{}\\[\\]()#+\\-.!_>])/,\n autolink: /^<([^ >]+(@|:\\/)[^ >]+)>/,\n url: noop,\n tag: /^|^<\\/?\\w+(?:\"[^\"]*\"|'[^']*'|[^'\">])*?>/,\n link: /^!?\\[(inside)\\]\\(href\\)/,\n reflink: /^!?\\[(inside)\\]\\s*\\[([^\\]]*)\\]/,\n nolink: /^!?\\[((?:\\[[^\\]]*\\]|[^\\[\\]])*)\\]/,\n strong: /^__([\\s\\S]+?)__(?!_)|^\\*\\*([\\s\\S]+?)\\*\\*(?!\\*)/,\n em: /^\\b_((?:[^_]|__)+?)_\\b|^\\*((?:\\*\\*|[\\s\\S])+?)\\*(?!\\*)/,\n code: /^(`+)\\s*([\\s\\S]*?[^`])\\s*\\1(?!`)/,\n br: /^ {2,}\\n(?!\\s*$)/,\n del: noop,\n text: /^[\\s\\S]+?(?=[\\\\?(?:\\s+['\"]([\\s\\S]*?)['\"])?\\s*/;\n\ninline.link = replace(inline.link)\n ('inside', inline._inside)\n ('href', inline._href)\n ();\n\ninline.reflink = replace(inline.reflink)\n ('inside', inline._inside)\n ();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = merge({}, inline);\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = merge({}, inline.normal, {\n strong: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n em: /^_(?=\\S)([\\s\\S]*?\\S)_(?!_)|^\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)/\n});\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = merge({}, inline.normal, {\n escape: replace(inline.escape)('])', '~|])')(),\n url: /^(https?:\\/\\/[^\\s<]+[^<.,:;\"')\\]\\s])/,\n del: /^~~(?=\\S)([\\s\\S]*?\\S)~~/,\n text: replace(inline.text)\n (']|', '~]|')\n ('|', '|https?://|')\n ()\n});\n\n/**\n * GFM + Line Breaks Inline Grammar\n */\n\ninline.breaks = merge({}, inline.gfm, {\n br: replace(inline.br)('{2,}', '*')(),\n text: replace(inline.gfm.text)('{2,}', '*')()\n});\n\n/**\n * Inline Lexer & Compiler\n */\n\nfunction InlineLexer(links, options) {\n this.options = options || marked.defaults;\n this.links = links;\n this.rules = inline.normal;\n this.renderer = this.options.renderer || new Renderer;\n this.renderer.options = this.options;\n\n if (!this.links) {\n throw new\n Error('Tokens array requires a `links` property.');\n }\n\n if (this.options.gfm) {\n if (this.options.breaks) {\n this.rules = inline.breaks;\n } else {\n this.rules = inline.gfm;\n }\n } else if (this.options.pedantic) {\n this.rules = inline.pedantic;\n }\n}\n\n/**\n * Expose Inline Rules\n */\n\nInlineLexer.rules = inline;\n\n/**\n * Static Lexing/Compiling Method\n */\n\nInlineLexer.output = function(src, links, options) {\n var inline = new InlineLexer(links, options);\n return inline.output(src);\n};\n\n/**\n * Lexing/Compiling\n */\n\nInlineLexer.prototype.output = function(src) {\n var out = ''\n , link\n , text\n , href\n , cap;\n\n while (src) {\n // escape\n if (cap = this.rules.escape.exec(src)) {\n src = src.substring(cap[0].length);\n out += cap[1];\n continue;\n }\n\n // autolink\n if (cap = this.rules.autolink.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[2] === '@') {\n text = cap[1].charAt(6) === ':'\n ? this.mangle(cap[1].substring(7))\n : this.mangle(cap[1]);\n href = this.mangle('mailto:') + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // url (gfm)\n if (!this.inLink && (cap = this.rules.url.exec(src))) {\n src = src.substring(cap[0].length);\n text = escape(cap[1]);\n href = text;\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // tag\n if (cap = this.rules.tag.exec(src)) {\n if (!this.inLink && /^/i.test(cap[0])) {\n this.inLink = false;\n }\n src = src.substring(cap[0].length);\n out += this.options.sanitize\n ? this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0])\n : cap[0]\n continue;\n }\n\n // link\n if (cap = this.rules.link.exec(src)) {\n src = src.substring(cap[0].length);\n this.inLink = true;\n out += this.outputLink(cap, {\n href: cap[2],\n title: cap[3]\n });\n this.inLink = false;\n continue;\n }\n\n // reflink, nolink\n if ((cap = this.rules.reflink.exec(src))\n || (cap = this.rules.nolink.exec(src))) {\n src = src.substring(cap[0].length);\n link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = this.links[link.toLowerCase()];\n if (!link || !link.href) {\n out += cap[0].charAt(0);\n src = cap[0].substring(1) + src;\n continue;\n }\n this.inLink = true;\n out += this.outputLink(cap, link);\n this.inLink = false;\n continue;\n }\n\n // strong\n if (cap = this.rules.strong.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.strong(this.output(cap[2] || cap[1]));\n continue;\n }\n\n // em\n if (cap = this.rules.em.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.em(this.output(cap[2] || cap[1]));\n continue;\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.codespan(escape(cap[2], true));\n continue;\n }\n\n // br\n if (cap = this.rules.br.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.br();\n continue;\n }\n\n // del (gfm)\n if (cap = this.rules.del.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.del(this.output(cap[1]));\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.text(escape(this.smartypants(cap[0])));\n continue;\n }\n\n if (src) {\n throw new\n Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return out;\n};\n\n/**\n * Compile Link\n */\n\nInlineLexer.prototype.outputLink = function(cap, link) {\n var href = escape(link.href)\n , title = link.title ? escape(link.title) : null;\n\n return cap[0].charAt(0) !== '!'\n ? this.renderer.link(href, title, this.output(cap[1]))\n : this.renderer.image(href, title, escape(cap[1]));\n};\n\n/**\n * Smartypants Transformations\n */\n\nInlineLexer.prototype.smartypants = function(text) {\n if (!this.options.smartypants) return text;\n return text\n // em-dashes\n .replace(/---/g, '\\u2014')\n // en-dashes\n .replace(/--/g, '\\u2013')\n // opening singles\n .replace(/(^|[-\\u2014/(\\[{\"\\s])'/g, '$1\\u2018')\n // closing singles & apostrophes\n .replace(/'/g, '\\u2019')\n // opening doubles\n .replace(/(^|[-\\u2014/(\\[{\\u2018\\s])\"/g, '$1\\u201c')\n // closing doubles\n .replace(/\"/g, '\\u201d')\n // ellipses\n .replace(/\\.{3}/g, '\\u2026');\n};\n\n/**\n * Mangle Links\n */\n\nInlineLexer.prototype.mangle = function(text) {\n if (!this.options.mangle) return text;\n var out = ''\n , l = text.length\n , i = 0\n , ch;\n\n for (; i < l; i++) {\n ch = text.charCodeAt(i);\n if (Math.random() > 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n\n return out;\n};\n\n/**\n * Renderer\n */\n\nfunction Renderer(options) {\n this.options = options || {};\n}\n\nRenderer.prototype.code = function(code, lang, escaped) {\n if (this.options.highlight) {\n var out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n if (!lang) {\n return '
    '\n      + (escaped ? code : escape(code, true))\n      + '\\n
    ';\n }\n\n return '
    '\n    + (escaped ? code : escape(code, true))\n    + '\\n
    \\n';\n};\n\nRenderer.prototype.blockquote = function(quote) {\n return '
    \\n' + quote + '
    \\n';\n};\n\nRenderer.prototype.html = function(html) {\n return html;\n};\n\nRenderer.prototype.heading = function(text, level, raw) {\n return ''\n + text\n + '\\n';\n};\n\nRenderer.prototype.hr = function() {\n return this.options.xhtml ? '
    \\n' : '
    \\n';\n};\n\nRenderer.prototype.list = function(body, ordered) {\n var type = ordered ? 'ol' : 'ul';\n return '<' + type + '>\\n' + body + '\\n';\n};\n\nRenderer.prototype.listitem = function(text) {\n return '
  • ' + text + '
  • \\n';\n};\n\nRenderer.prototype.paragraph = function(text) {\n return '

    ' + text + '

    \\n';\n};\n\nRenderer.prototype.table = function(header, body) {\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + '\\n'\n + body\n + '\\n'\n + '
    \\n';\n};\n\nRenderer.prototype.tablerow = function(content) {\n return '\\n' + content + '\\n';\n};\n\nRenderer.prototype.tablecell = function(content, flags) {\n var type = flags.header ? 'th' : 'td';\n var tag = flags.align\n ? '<' + type + ' style=\"text-align:' + flags.align + '\">'\n : '<' + type + '>';\n return tag + content + '\\n';\n};\n\n// span level renderer\nRenderer.prototype.strong = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.em = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.codespan = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.br = function() {\n return this.options.xhtml ? '
    ' : '
    ';\n};\n\nRenderer.prototype.del = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.link = function(href, title, text) {\n if (this.options.sanitize) {\n try {\n var prot = decodeURIComponent(unescape(href))\n .replace(/[^\\w:]/g, '')\n .toLowerCase();\n } catch (e) {\n return '';\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0) {\n return '';\n }\n }\n var out = '
    ';\n return out;\n};\n\nRenderer.prototype.image = function(href, title, text) {\n var out = '\"'' : '>';\n return out;\n};\n\nRenderer.prototype.text = function(text) {\n return text;\n};\n\n/**\n * Parsing & Compiling\n */\n\nfunction Parser(options) {\n this.tokens = [];\n this.token = null;\n this.options = options || marked.defaults;\n this.options.renderer = this.options.renderer || new Renderer;\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n}\n\n/**\n * Static Parse Method\n */\n\nParser.parse = function(src, options, renderer) {\n var parser = new Parser(options, renderer);\n return parser.parse(src);\n};\n\n/**\n * Parse Loop\n */\n\nParser.prototype.parse = function(src) {\n this.inline = new InlineLexer(src.links, this.options, this.renderer);\n this.tokens = src.reverse();\n\n var out = '';\n while (this.next()) {\n out += this.tok();\n }\n\n return out;\n};\n\n/**\n * Next Token\n */\n\nParser.prototype.next = function() {\n return this.token = this.tokens.pop();\n};\n\n/**\n * Preview Next Token\n */\n\nParser.prototype.peek = function() {\n return this.tokens[this.tokens.length - 1] || 0;\n};\n\n/**\n * Parse Text Tokens\n */\n\nParser.prototype.parseText = function() {\n var body = this.token.text;\n\n while (this.peek().type === 'text') {\n body += '\\n' + this.next().text;\n }\n\n return this.inline.output(body);\n};\n\n/**\n * Parse Current Token\n */\n\nParser.prototype.tok = function() {\n switch (this.token.type) {\n case 'space': {\n return '';\n }\n case 'hr': {\n return this.renderer.hr();\n }\n case 'heading': {\n return this.renderer.heading(\n this.inline.output(this.token.text),\n this.token.depth,\n this.token.text);\n }\n case 'code': {\n return this.renderer.code(this.token.text,\n this.token.lang,\n this.token.escaped);\n }\n case 'table': {\n var header = ''\n , body = ''\n , i\n , row\n , cell\n , flags\n , j;\n\n // header\n cell = '';\n for (i = 0; i < this.token.header.length; i++) {\n flags = { header: true, align: this.token.align[i] };\n cell += this.renderer.tablecell(\n this.inline.output(this.token.header[i]),\n { header: true, align: this.token.align[i] }\n );\n }\n header += this.renderer.tablerow(cell);\n\n for (i = 0; i < this.token.cells.length; i++) {\n row = this.token.cells[i];\n\n cell = '';\n for (j = 0; j < row.length; j++) {\n cell += this.renderer.tablecell(\n this.inline.output(row[j]),\n { header: false, align: this.token.align[j] }\n );\n }\n\n body += this.renderer.tablerow(cell);\n }\n return this.renderer.table(header, body);\n }\n case 'blockquote_start': {\n var body = '';\n\n while (this.next().type !== 'blockquote_end') {\n body += this.tok();\n }\n\n return this.renderer.blockquote(body);\n }\n case 'list_start': {\n var body = ''\n , ordered = this.token.ordered;\n\n while (this.next().type !== 'list_end') {\n body += this.tok();\n }\n\n return this.renderer.list(body, ordered);\n }\n case 'list_item_start': {\n var body = '';\n\n while (this.next().type !== 'list_item_end') {\n body += this.token.type === 'text'\n ? this.parseText()\n : this.tok();\n }\n\n return this.renderer.listitem(body);\n }\n case 'loose_item_start': {\n var body = '';\n\n while (this.next().type !== 'list_item_end') {\n body += this.tok();\n }\n\n return this.renderer.listitem(body);\n }\n case 'html': {\n var html = !this.token.pre && !this.options.pedantic\n ? this.inline.output(this.token.text)\n : this.token.text;\n return this.renderer.html(html);\n }\n case 'paragraph': {\n return this.renderer.paragraph(this.inline.output(this.token.text));\n }\n case 'text': {\n return this.renderer.paragraph(this.parseText());\n }\n }\n};\n\n/**\n * Helpers\n */\n\nfunction escape(html, encode) {\n return html\n .replace(!encode ? /&(?!#?\\w+;)/g : /&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n}\n\nfunction unescape(html) {\n\t// explicitly match decimal, hex, and named HTML entities \n return html.replace(/&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/g, function(_, n) {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\n\nfunction replace(regex, opt) {\n regex = regex.source;\n opt = opt || '';\n return function self(name, val) {\n if (!name) return new RegExp(regex, opt);\n val = val.source || val;\n val = val.replace(/(^|[^\\[])\\^/g, '$1');\n regex = regex.replace(name, val);\n return self;\n };\n}\n\nfunction noop() {}\nnoop.exec = noop;\n\nfunction merge(obj) {\n var i = 1\n , target\n , key;\n\n for (; i < arguments.length; i++) {\n target = arguments[i];\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\n/**\n * Marked\n */\n\nfunction marked(src, opt, callback) {\n if (callback || typeof opt === 'function') {\n if (!callback) {\n callback = opt;\n opt = null;\n }\n\n opt = merge({}, marked.defaults, opt || {});\n\n var highlight = opt.highlight\n , tokens\n , pending\n , i = 0;\n\n try {\n tokens = Lexer.lex(src, opt)\n } catch (e) {\n return callback(e);\n }\n\n pending = tokens.length;\n\n var done = function(err) {\n if (err) {\n opt.highlight = highlight;\n return callback(err);\n }\n\n var out;\n\n try {\n out = Parser.parse(tokens, opt);\n } catch (e) {\n err = e;\n }\n\n opt.highlight = highlight;\n\n return err\n ? callback(err)\n : callback(null, out);\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n\n if (!pending) return done();\n\n for (; i < tokens.length; i++) {\n (function(token) {\n if (token.type !== 'code') {\n return --pending || done();\n }\n return highlight(token.text, token.lang, function(err, code) {\n if (err) return done(err);\n if (code == null || code === token.text) {\n return --pending || done();\n }\n token.text = code;\n token.escaped = true;\n --pending || done();\n });\n })(tokens[i]);\n }\n\n return;\n }\n try {\n if (opt) opt = merge({}, marked.defaults, opt);\n return Parser.parse(Lexer.lex(src, opt), opt);\n } catch (e) {\n e.message += '\\nPlease report this to https://github.com/chjj/marked.';\n if ((opt || marked.defaults).silent) {\n return '

    An error occured:

    '\n        + escape(e.message + '', true)\n        + '
    ';\n }\n throw e;\n }\n}\n\n/**\n * Options\n */\n\nmarked.options =\nmarked.setOptions = function(opt) {\n merge(marked.defaults, opt);\n return marked;\n};\n\nmarked.defaults = {\n gfm: true,\n tables: true,\n breaks: false,\n pedantic: false,\n sanitize: false,\n sanitizer: null,\n mangle: true,\n smartLists: false,\n silent: false,\n highlight: null,\n langPrefix: 'lang-',\n smartypants: false,\n headerPrefix: '',\n renderer: new Renderer,\n xhtml: false\n};\n\n/**\n * Expose\n */\n\nmarked.Parser = Parser;\nmarked.parser = Parser.parse;\n\nmarked.Renderer = Renderer;\n\nmarked.Lexer = Lexer;\nmarked.lexer = Lexer.lex;\n\nmarked.InlineLexer = InlineLexer;\nmarked.inlineLexer = InlineLexer.output;\n\nmarked.parse = marked;\n\nif (typeof module !== 'undefined' && typeof exports === 'object') {\n module.exports = marked;\n} else if (typeof define === 'function' && define.amd) {\n define(function() { return marked; });\n} else {\n this.marked = marked;\n}\n\n}).call(function() {\n return this || (typeof window !== 'undefined' ? window : global);\n}());\n","import marked from 'marked';\n\nmarked.setOptions({\n gfm: true,\n smartypants: true\n});\n\nexport default function(dom, data) {\n let markdownElements = [].slice.call(dom.querySelectorAll('[markdown]'));\n markdownElements.forEach(el => {\n let content = el.innerHTML;\n // Set default indents\n content = content.replace(/\\n/, \"\");\n let tabs = content.match(/\\s*/);\n content = content.replace(new RegExp(\"\\n\" + tabs, \"g\"), \"\\n\");\n content = content.trim();\n\n el.innerHTML = marked(content);\n });\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, '&').replace(/ 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, '"') + '\"';\n\t}).join(' ');\n\n\treturn '<' + env.tag + ' class=\"' + env.classes.join(' ') + '\"' + (attributes ? ' ' + attributes : '') + '>' + env.content + '';\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': //,\n\t'prolog': /<\\?[\\w\\W]+?\\?>/,\n\t'doctype': //i,\n\t'cdata': //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(/&/, '&');\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: /()[\\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: /()[\\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","import Prism from \"prismjs\";\n\nexport default function(dom, data) {\n let codeElements = [].slice.call(dom.querySelectorAll(\"dt-code\"));\n codeElements.forEach(el => {\n let content = el.textContent;\n el.innerHTML = \"\";\n let language = el.getAttribute(\"language\");\n let c = dom.createElement(\"code\");\n if (el.getAttribute(\"block\") === \"\") {\n // Let's normalize the tab indents\n content = content.replace(/\\n/, \"\");\n let tabs = content.match(/\\s*/);\n content = content.replace(new RegExp(\"\\n\" + tabs, \"g\"), \"\\n\");\n content = content.trim();\n let p = dom.createElement(\"pre\");\n p.appendChild(c);\n el.appendChild(p);\n } else {\n el.appendChild(c);\n }\n let highlighted = content;\n if (Prism.languages[language]) {\n c.setAttribute(\"class\", \"language-\" + language);\n highlighted = Prism.highlight(content, Prism.languages[language]);\n }\n c.innerHTML = highlighted;\n });\n}\n","export default {\n \"title\": \"Experiments in Handwriting with a Neural Network\",\n \"description\": \"Several interactive visualizations of a generative model of handwriting. Some are fun, some are serious.\",\n \"url\": \"http://distill.pub/2016/handwriting/\",\n \"github\": \"https://github.com/distillpub/post--handwriting\",\n \"firstPublished\": \"Tue Dec 6 2016 21:39:33 GMT-0700 (PDT)\",\n \"lastPublished\": \"Tue Dec 6 2016 21:39:33 GMT-0700 (PDT)\",\n \"authors\": [\n {\n \"firstName\": \"Shan\",\n \"lastName\": \"Carter\",\n \"personalURL\": \"http://shancarter.com\",\n \"affiliation\": \"Google Brain\",\n \"affiliationURL\": \"http://g.co/brain\"\n },\n {\n \"firstName\": \"David\",\n \"lastName\": \"Ha\",\n \"personalURL\": \"https://github.com/hardmaru\",\n \"affiliation\": \"Google Brain\",\n \"affiliationURL\": \"http://g.co/brain\"\n },\n {\n \"firstName\": \"Ian\",\n \"lastName\": \"Johnson\",\n \"personalURL\": \"https://github.com/enjalot\",\n \"affiliation\": \"Google Cloud\",\n \"affiliationURL\": \"\"\n },\n {\n \"firstName\": \"Chris\",\n \"lastName\": \"Olah\",\n \"personalURL\": \"http://colah.github.io/\",\n \"affiliation\": \"Google Brain\",\n \"affiliationURL\": \"http://g.co/brain\"\n }\n ],\n journal: {\n \"title\": \"Distill\",\n \"full_title\": \"Distill\",\n \"abbrev_title\": \"Distill\",\n \"url\": \"http://distill.pub\",\n \"doi\": \"00.0000/dstl\",\n \"issn\": \"0000-0000\"\n }\n };\n"],"names":["isNothing","subject","isObject","toArray","sequence","Array","isArray","extend","target","source","index","length","key","sourceKeys","Object","keys","repeat","string","count","cycle","result","isNegativeZero","number","Number","NEGATIVE_INFINITY","YAMLException","reason","mark","Error","call","this","captureStackTrace","constructor","stack","name","message","toString","Mark","buffer","position","line","column","compileStyleAliases","map","forEach","style","alias","String","Type","tag","options","TYPE_CONSTRUCTOR_OPTIONS","indexOf","kind","resolve","construct","data","instanceOf","predicate","represent","defaultStyle","styleAliases","YAML_NODE_KINDS","compileList","schema","exclude","include","includedSchema","currentType","previousType","previousIndex","push","filter","type","compileMap","collectType","scalar","mapping","fallback","arguments","Schema","definition","implicit","explicit","loadKind","compiledImplicit","compiledExplicit","compiledTypeMap","resolveYamlNull","max","constructYamlNull","isNull","object","resolveYamlBoolean","constructYamlBoolean","isBoolean","prototype","isHexCode","c","isOctCode","isDecCode","resolveYamlInteger","ch","hasDigits","charCodeAt","test","slice","constructYamlInteger","base","value","sign","digits","replace","parseInt","split","v","unshift","d","isInteger","common","resolveYamlFloat","YAML_FLOAT_PATTERN","constructYamlFloat","toLowerCase","POSITIVE_INFINITY","NaN","parseFloat","representYamlFloat","res","isNaN","SCIENTIFIC_WITHOUT_DOT","isFloat","resolveYamlTimestamp","YAML_DATE_REGEXP","exec","YAML_TIMESTAMP_REGEXP","constructYamlTimestamp","match","year","month","day","hour","minute","second","tz_hour","tz_minute","date","fraction","delta","Date","UTC","setTime","getTime","representYamlTimestamp","toISOString","resolveYamlMerge","resolveYamlBinary","code","idx","bitlen","BASE64_MAP","charAt","constructYamlBinary","tailbits","input","bits","NodeBuffer","representYamlBinary","tail","isBinary","isBuffer","resolveYamlOmap","pair","pairKey","pairHasKey","objectKeys","_toString","_hasOwnProperty","constructYamlOmap","resolveYamlPairs","constructYamlPairs","resolveYamlSet","constructYamlSet","resolveJavascriptUndefined","constructJavascriptUndefined","representJavascriptUndefined","isUndefined","resolveJavascriptRegExp","regexp","modifiers","constructJavascriptRegExp","RegExp","representJavascriptRegExp","global","multiline","ignoreCase","isRegExp","resolveJavascriptFunction","ast","esprima","parse","range","body","expression","err","constructJavascriptFunction","params","param","Function","representJavascriptFunction","isFunction","is_EOL","is_WHITE_SPACE","is_WS_OR_EOL","is_FLOW_INDICATOR","fromHexCode","lc","escapedHexLen","fromDecimalCode","simpleEscapeSequence","charFromCodepoint","fromCharCode","State","filename","DEFAULT_FULL_SCHEMA","onWarning","legacy","json","listener","implicitTypes","typeMap","lineStart","lineIndent","documents","generateError","state","throwError","throwWarning","captureSegment","start","end","checkJson","_position","_length","_character","_result","PATTERN_NON_PRINTABLE","mergeMappings","destination","overridableKeys","quantity","storeMappingPair","keyTag","keyNode","valueNode","readLineBreak","skipSeparationSpace","allowComments","checkIndent","lineBreaks","testDocumentSeparator","writeFoldedLines","readPlainScalar","nodeIndent","withinFlowCollection","preceding","following","captureStart","captureEnd","hasPendingContent","_line","_lineStart","_lineIndent","_kind","readSingleQuotedScalar","readDoubleQuotedScalar","hexLength","hexResult","tmp","simpleEscapeCheck","simpleEscapeMap","readFlowCollection","terminator","isPair","isExplicitPair","isMapping","readNext","_tag","_anchor","anchor","anchorMap","composeNode","CONTEXT_FLOW_IN","readBlockScalar","folding","chomping","CHOMPING_CLIP","didReadContent","detectedIndent","textIndent","emptyLines","atMoreIndented","CHOMPING_KEEP","CHOMPING_STRIP","readBlockSequence","detected","CONTEXT_BLOCK_IN","readBlockMapping","flowIndent","allowCompact","atExplicitKey","CONTEXT_FLOW_OUT","CONTEXT_BLOCK_OUT","readTagProperty","tagHandle","tagName","isVerbatim","isNamed","PATTERN_TAG_HANDLE","PATTERN_FLOW_INDICATORS","PATTERN_TAG_URI","tagMap","readAnchorProperty","readAlias","hasOwnProperty","parentIndent","nodeContext","allowToSeek","allowBlockStyles","allowBlockScalars","allowBlockCollections","typeIndex","typeQuantity","blockIndent","indentStatus","atNewLine","hasContent","readDocument","directiveName","directiveArgs","documentStart","hasDirectives","version","checkLineBreaks","directiveHandlers","PATTERN_NON_ASCII_LINE_BREAKS","loadDocuments","loadAll","iterator","load","safeLoadAll","output","DEFAULT_SAFE_SCHEMA","safeLoad","compileStyleMap","encodeHex","character","handle","toUpperCase","indent","Math","skipInvalid","flowLevel","styleMap","sortKeys","lineWidth","noRefs","noCompatMode","explicitTypes","duplicates","usedDuplicates","indentString","spaces","ind","next","generateNextLine","level","testImplicitResolving","str","isWhitespace","CHAR_SPACE","CHAR_TAB","isPrintable","isPlainSafe","CHAR_COMMA","CHAR_LEFT_SQUARE_BRACKET","CHAR_RIGHT_SQUARE_BRACKET","CHAR_LEFT_CURLY_BRACKET","CHAR_RIGHT_CURLY_BRACKET","CHAR_COLON","CHAR_SHARP","isPlainSafeFirst","CHAR_MINUS","CHAR_QUESTION","CHAR_AMPERSAND","CHAR_ASTERISK","CHAR_EXCLAMATION","CHAR_VERTICAL_LINE","CHAR_GREATER_THAN","CHAR_SINGLE_QUOTE","CHAR_DOUBLE_QUOTE","CHAR_PERCENT","CHAR_COMMERCIAL_AT","CHAR_GRAVE_ACCENT","chooseScalarStyle","singleLineOnly","indentPerLevel","testAmbiguousType","i","char","hasLineBreak","hasFoldableLine","shouldTrackWidth","previousLineBreak","plain","STYLE_DOUBLE","CHAR_LINE_FEED","STYLE_FOLDED","STYLE_LITERAL","STYLE_PLAIN","STYLE_SINGLE","writeScalar","iskey","dump","testAmbiguity","DEPRECATED_BOOLEANS_SYNTAX","min","blockHeader","dropEndingNewline","foldString","escapeString","indentIndicator","clip","keep","chomp","width","moreIndented","lineRe","nextLF","lastIndex","foldLine","prevMoreIndented","prefix","breakRe","curr","escapeSeq","ESCAPE_SEQUENCES","writeFlowSequence","writeNode","writeBlockSequence","compact","writeFlowMapping","objectKey","objectValue","pairBuffer","objectKeyList","writeBlockMapping","explicitPair","sort","detectType","typeList","block","duplicateIndex","duplicate","objectOrArray","getDuplicateReferences","objects","duplicatesIndexes","inspectNode","safeDump","deprecated","appendHtml","el","html","innerHTML","citation_meta_content","ref","content","author","trim","issue","render","dom","styles","document","addEventListener","event","frontMatter","bibliography","meta","header","appendix","footer","markdown","citation","console","log","k","querySelector","getAttribute","setAttribute","let","head","createElement","appendChild","s","textContent","layout","article","create","require$$0","getSnippet","maxLength","snippet","where","require$$1","require$$2","DEFAULT","schemas","types","every","require$$3","canonical","lowercase","uppercase","camelcase","binary","octal","decimal","hexadecimal","require$$4","require$$5","_require","require","Buffer","__","require$$6","require$$7","_","window","YAML","args","major","minor","TAG","loader","dumper","require$$8","require$$9","yaml","text","localData","ymlParse","title","description","authors","a","names","firstName","join","lastName","personalURL","affiliations","affiliation","affiliationURL","exports","BibtexParser","months","notKey","pos","entries","currentEntry","setInput","t","getEntries","canCommentOut","undefined","skipWhitespace","substring","tryMatch","matchAt","value_braces","bracecount","escaped","value_comment","brcktCnt","value_quotes","single_value","values","key_equals_value","val","key_value_list","kv","entry_body","directive","preamble","comment","entry","bibtex","toJSON","b","toBibtex","out","entryType","citationKey","entryTags","tags","jdx","rawBib","bibtexParse","e","citations","citeTags","apply","querySelectorAll","citationKeys","warn","journal","logo","inline_cite","ent","bibliography_cite","cite","name_strings","last","firsts","initials","booktitle","volume","pages","localeCompare","cite_string","bibEl","ol","Lexer","tokens","links","marked","defaults","rules","normal","gfm","tables","InlineLexer","inline","renderer","Renderer","breaks","pedantic","Parser","token","escape","encode","unescape","n","regex","opt","self","noop","merge","obj","src","callback","pending","highlight","lex","done","lang","silent","newline","fences","hr","heading","nptable","lheading","blockquote","list","def","table","paragraph","bullet","item","lexer","top","bq","loose","cap","bull","space","l","depth","align","cells","ordered","smartLists","sanitize","pre","sanitizer","href","autolink","url","link","reflink","nolink","strong","em","br","del","_inside","_href","mangle","inLink","outputLink","codespan","smartypants","image","random","langPrefix","quote","raw","headerPrefix","xhtml","listitem","tablerow","tablecell","flags","prot","decodeURIComponent","parser","reverse","tok","pop","peek","parseText","row","cell","j","setOptions","inlineLexer","module","markdownElements","tabs","_self","WorkerGlobalScope","Prism","uniqueId","util","Token","o","objId","defineProperty","clone","languages","id","redef","insertBefore","inside","before","insert","root","grammar","newToken","ret","DFS","visited","plugins","highlightAll","async","env","selector","hooks","run","element","elements","highlightElement","language","parent","className","parentNode","nodeName","Worker","worker","onmessage","evt","highlightedCode","postMessage","JSON","stringify","immediateClose","tokenize","strarr","rest","tokenloop","patterns","pattern","lookbehind","greedy","lookbehindLength","delNum","from","to","p","len","after","wrapped","splice","all","add","callbacks","matchedStr","classes","attributes","aliases","close","script","currentScript","getElementsByTagName","hasAttribute","readyState","requestAnimationFrame","setTimeout","markup","prolog","doctype","cdata","punctuation","namespace","attr-value","attr-name","entity","xml","mathml","svg","css","atrule","rule","property","important","function","style-attr","clike","class-name","keyword","boolean","operator","javascript","template-string","interpolation","interpolation-punctuation","js","fileHighlight","Extensions","py","rb","ps1","psm1","sh","bat","h","tex","extension","xhr","XMLHttpRequest","open","onreadystatechange","status","responseText","statusText","send","codeElements","highlighted","github","firstPublished","lastPublished","full_title","abbrev_title","doi","issn","testData"],"mappings":"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"} \ No newline at end of file diff --git a/examples/article.html b/examples/article.html index ec0fc45..62b80e4 100644 --- a/examples/article.html +++ b/examples/article.html @@ -1,6 +1,6 @@ - + +