{"version":3,"file":"e86d544ac7c91df63a69df75340c4785ad2e37ad-32a3050508b341aebb7f.js","mappings":"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","sources":["webpack://gravitywell-website-2019/./node_modules/brace/ext/split.js","webpack://gravitywell-website-2019/./node_modules/brace/mode/css.js","webpack://gravitywell-website-2019/./node_modules/brace/mode/html.js","webpack://gravitywell-website-2019/./node_modules/brace/mode/java.js","webpack://gravitywell-website-2019/./node_modules/brace/mode/javascript.js","webpack://gravitywell-website-2019/./node_modules/brace/mode/json.js","webpack://gravitywell-website-2019/./node_modules/brace/mode/markdown.js","webpack://gravitywell-website-2019/./node_modules/brace/mode/mysql.js","webpack://gravitywell-website-2019/./node_modules/brace/mode/plain_text.js","webpack://gravitywell-website-2019/./node_modules/brace/mode/python.js","webpack://gravitywell-website-2019/./node_modules/brace/mode/ruby.js","webpack://gravitywell-website-2019/./node_modules/brace/mode/sass.js","webpack://gravitywell-website-2019/./node_modules/brace/mode/swift.js","webpack://gravitywell-website-2019/./node_modules/brace/mode/typescript.js","webpack://gravitywell-website-2019/./node_modules/brace/theme/solarized_dark.js","webpack://gravitywell-website-2019/./node_modules/brace/worker/json.js","webpack://gravitywell-website-2019/./node_modules/brace/worker/xml.js","webpack://gravitywell-website-2019/./node_modules/diff-match-patch/index.js","webpack://gravitywell-website-2019/./node_modules/lodash.get/index.js","webpack://gravitywell-website-2019/./node_modules/lodash.isequal/index.js","webpack://gravitywell-website-2019/./node_modules/react-ace/lib/ace.js","webpack://gravitywell-website-2019/./node_modules/react-ace/lib/diff.js","webpack://gravitywell-website-2019/./node_modules/react-ace/lib/editorOptions.js","webpack://gravitywell-website-2019/./node_modules/react-ace/lib/index.js","webpack://gravitywell-website-2019/./node_modules/react-ace/lib/split.js","webpack://gravitywell-website-2019/./src/templates/utils/backgroundColoursCss.ts","webpack://gravitywell-website-2019/./src/components/field-technical-article/paragraph-box-out-image-column-width.tsx","webpack://gravitywell-website-2019/./src/components/field-technical-article/paragraph-box-out-image-half-column-width.tsx","webpack://gravitywell-website-2019/./src/components/field-technical-article/paragraph-box-out-side-by-side-images-column.tsx","webpack://gravitywell-website-2019/./src/components/field-technical-article/paragraph-box-out-stacked-images.tsx","webpack://gravitywell-website-2019/./src/components/field-technical-article/paragraph-box-out-testimonials.tsx","webpack://gravitywell-website-2019/./src/components/field-technical-article/paragraph-box-out-text.tsx","webpack://gravitywell-website-2019/./src/components/dynamic-video/dynamic-video.tsx","webpack://gravitywell-website-2019/./src/components/field-technical-article/paragraph-box-out-video-column-width.tsx","webpack://gravitywell-website-2019/./src/components/field-technical-article/paragraph-box-out-video-half-column-width.tsx","webpack://gravitywell-website-2019/./src/components/field-technical-article/paragraph-code-snippet.tsx","webpack://gravitywell-website-2019/./src/components/field-technical-article/paragraph-image-column-width.tsx","webpack://gravitywell-website-2019/./src/components/field-technical-article/paragraph-image-full-width.tsx","webpack://gravitywell-website-2019/./src/components/field-technical-article/paragraph-images-side-by-side-column.tsx","webpack://gravitywell-website-2019/./src/components/field-technical-article/paragraph-video-column-width.tsx","webpack://gravitywell-website-2019/./src/components/field-technical-article/paragraph-video-half-column-width.tsx","webpack://gravitywell-website-2019/./src/components/field-technical-article/paragraph-wsywig.tsx","webpack://gravitywell-website-2019/./src/components/field-technical-article/read-time.tsx","webpack://gravitywell-website-2019/./src/components/field-technical-article/summary.tsx","webpack://gravitywell-website-2019/./src/components/field-technical-article/field-technical-article.tsx","webpack://gravitywell-website-2019/./src/components/testimonial-carousel/testimonial.tsx","webpack://gravitywell-website-2019/./src/components/testimonial-carousel/testimonial-carousel.tsx"],"sourcesContent":["ace.define(\"ace/split\", [\"require\", \"exports\", \"module\", \"ace/lib/oop\", \"ace/lib/lang\", \"ace/lib/event_emitter\", \"ace/editor\", \"ace/virtual_renderer\", \"ace/edit_session\"], function (acequire, exports, module) {\n \"use strict\";\n\n var oop = acequire(\"./lib/oop\");\n var lang = acequire(\"./lib/lang\");\n var EventEmitter = acequire(\"./lib/event_emitter\").EventEmitter;\n var Editor = acequire(\"./editor\").Editor;\n var Renderer = acequire(\"./virtual_renderer\").VirtualRenderer;\n var EditSession = acequire(\"./edit_session\").EditSession;\n\n var Split = function Split(container, theme, splits) {\n this.BELOW = 1;\n this.BESIDE = 0;\n this.$container = container;\n this.$theme = theme;\n this.$splits = 0;\n this.$editorCSS = \"\";\n this.$editors = [];\n this.$orientation = this.BESIDE;\n this.setSplits(splits || 1);\n this.$cEditor = this.$editors[0];\n this.on(\"focus\", function (editor) {\n this.$cEditor = editor;\n }.bind(this));\n };\n\n (function () {\n oop.implement(this, EventEmitter);\n\n this.$createEditor = function () {\n var el = document.createElement(\"div\");\n el.className = this.$editorCSS;\n el.style.cssText = \"position: absolute; top:0px; bottom:0px\";\n this.$container.appendChild(el);\n var editor = new Editor(new Renderer(el, this.$theme));\n editor.on(\"focus\", function () {\n this._emit(\"focus\", editor);\n }.bind(this));\n this.$editors.push(editor);\n editor.setFontSize(this.$fontSize);\n return editor;\n };\n\n this.setSplits = function (splits) {\n var editor;\n\n if (splits < 1) {\n throw \"The number of splits have to be > 0!\";\n }\n\n if (splits == this.$splits) {\n return;\n } else if (splits > this.$splits) {\n while (this.$splits < this.$editors.length && this.$splits < splits) {\n editor = this.$editors[this.$splits];\n this.$container.appendChild(editor.container);\n editor.setFontSize(this.$fontSize);\n this.$splits++;\n }\n\n while (this.$splits < splits) {\n this.$createEditor();\n this.$splits++;\n }\n } else {\n while (this.$splits > splits) {\n editor = this.$editors[this.$splits - 1];\n this.$container.removeChild(editor.container);\n this.$splits--;\n }\n }\n\n this.resize();\n };\n\n this.getSplits = function () {\n return this.$splits;\n };\n\n this.getEditor = function (idx) {\n return this.$editors[idx];\n };\n\n this.getCurrentEditor = function () {\n return this.$cEditor;\n };\n\n this.focus = function () {\n this.$cEditor.focus();\n };\n\n this.blur = function () {\n this.$cEditor.blur();\n };\n\n this.setTheme = function (theme) {\n this.$editors.forEach(function (editor) {\n editor.setTheme(theme);\n });\n };\n\n this.setKeyboardHandler = function (keybinding) {\n this.$editors.forEach(function (editor) {\n editor.setKeyboardHandler(keybinding);\n });\n };\n\n this.forEach = function (callback, scope) {\n this.$editors.forEach(callback, scope);\n };\n\n this.$fontSize = \"\";\n\n this.setFontSize = function (size) {\n this.$fontSize = size;\n this.forEach(function (editor) {\n editor.setFontSize(size);\n });\n };\n\n this.$cloneSession = function (session) {\n var s = new EditSession(session.getDocument(), session.getMode());\n var undoManager = session.getUndoManager();\n\n if (undoManager) {\n var undoManagerProxy = new UndoManagerProxy(undoManager, s);\n s.setUndoManager(undoManagerProxy);\n }\n\n s.$informUndoManager = lang.delayedCall(function () {\n s.$deltas = [];\n });\n s.setTabSize(session.getTabSize());\n s.setUseSoftTabs(session.getUseSoftTabs());\n s.setOverwrite(session.getOverwrite());\n s.setBreakpoints(session.getBreakpoints());\n s.setUseWrapMode(session.getUseWrapMode());\n s.setUseWorker(session.getUseWorker());\n s.setWrapLimitRange(session.$wrapLimitRange.min, session.$wrapLimitRange.max);\n s.$foldData = session.$cloneFoldData();\n return s;\n };\n\n this.setSession = function (session, idx) {\n var editor;\n\n if (idx == null) {\n editor = this.$cEditor;\n } else {\n editor = this.$editors[idx];\n }\n\n var isUsed = this.$editors.some(function (editor) {\n return editor.session === session;\n });\n\n if (isUsed) {\n session = this.$cloneSession(session);\n }\n\n editor.setSession(session);\n return session;\n };\n\n this.getOrientation = function () {\n return this.$orientation;\n };\n\n this.setOrientation = function (orientation) {\n if (this.$orientation == orientation) {\n return;\n }\n\n this.$orientation = orientation;\n this.resize();\n };\n\n this.resize = function () {\n var width = this.$container.clientWidth;\n var height = this.$container.clientHeight;\n var editor;\n\n if (this.$orientation == this.BESIDE) {\n var editorWidth = width / this.$splits;\n\n for (var i = 0; i < this.$splits; i++) {\n editor = this.$editors[i];\n editor.container.style.width = editorWidth + \"px\";\n editor.container.style.top = \"0px\";\n editor.container.style.left = i * editorWidth + \"px\";\n editor.container.style.height = height + \"px\";\n editor.resize();\n }\n } else {\n var editorHeight = height / this.$splits;\n\n for (var i = 0; i < this.$splits; i++) {\n editor = this.$editors[i];\n editor.container.style.width = width + \"px\";\n editor.container.style.top = i * editorHeight + \"px\";\n editor.container.style.left = \"0px\";\n editor.container.style.height = editorHeight + \"px\";\n editor.resize();\n }\n }\n };\n }).call(Split.prototype);\n\n function UndoManagerProxy(undoManager, session) {\n this.$u = undoManager;\n this.$doc = session;\n }\n\n (function () {\n this.execute = function (options) {\n this.$u.execute(options);\n };\n\n this.undo = function () {\n var selectionRange = this.$u.undo(true);\n\n if (selectionRange) {\n this.$doc.selection.setSelectionRange(selectionRange);\n }\n };\n\n this.redo = function () {\n var selectionRange = this.$u.redo(true);\n\n if (selectionRange) {\n this.$doc.selection.setSelectionRange(selectionRange);\n }\n };\n\n this.reset = function () {\n this.$u.reset();\n };\n\n this.hasUndo = function () {\n return this.$u.hasUndo();\n };\n\n this.hasRedo = function () {\n return this.$u.hasRedo();\n };\n }).call(UndoManagerProxy.prototype);\n exports.Split = Split;\n});\nace.define(\"ace/ext/split\", [\"require\", \"exports\", \"module\", \"ace/split\"], function (acequire, exports, module) {\n \"use strict\";\n\n module.exports = acequire(\"../split\");\n});\n\n(function () {\n ace.acequire([\"ace/ext/split\"], function () {});\n})();","ace.define(\"ace/mode/css_highlight_rules\", [\"require\", \"exports\", \"module\", \"ace/lib/oop\", \"ace/lib/lang\", \"ace/mode/text_highlight_rules\"], function (acequire, exports, module) {\n \"use strict\";\n\n var oop = acequire(\"../lib/oop\");\n var lang = acequire(\"../lib/lang\");\n var TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n var supportType = exports.supportType = \"align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index\";\n var supportFunction = exports.supportFunction = \"rgb|rgba|url|attr|counter|counters\";\n var supportConstant = exports.supportConstant = \"absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero\";\n var supportConstantColor = exports.supportConstantColor = \"aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen\";\n var supportConstantFonts = exports.supportConstantFonts = \"arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace\";\n var numRe = exports.numRe = \"\\\\-?(?:(?:[0-9]+(?:\\\\.[0-9]+)?)|(?:\\\\.[0-9]+))\";\n var pseudoElements = exports.pseudoElements = \"(\\\\:+)\\\\b(after|before|first-letter|first-line|moz-selection|selection)\\\\b\";\n var pseudoClasses = exports.pseudoClasses = \"(:)\\\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|acequired|root|target|valid|visited)\\\\b\";\n\n var CssHighlightRules = function CssHighlightRules() {\n var keywordMapper = this.createKeywordMapper({\n \"support.function\": supportFunction,\n \"support.constant\": supportConstant,\n \"support.type\": supportType,\n \"support.constant.color\": supportConstantColor,\n \"support.constant.fonts\": supportConstantFonts\n }, \"text\", true);\n this.$rules = {\n \"start\": [{\n include: [\"strings\", \"url\", \"comments\"]\n }, {\n token: \"paren.lparen\",\n regex: \"\\\\{\",\n next: \"ruleset\"\n }, {\n token: \"paren.rparen\",\n regex: \"\\\\}\"\n }, {\n token: \"string\",\n regex: \"@\",\n next: \"media\"\n }, {\n token: \"keyword\",\n regex: \"#[a-z0-9-_]+\"\n }, {\n token: \"keyword\",\n regex: \"%\"\n }, {\n token: \"variable\",\n regex: \"\\\\.[a-z0-9-_]+\"\n }, {\n token: \"string\",\n regex: \":[a-z0-9-_]+\"\n }, {\n token: \"constant.numeric\",\n regex: numRe\n }, {\n token: \"constant\",\n regex: \"[a-z0-9-_]+\"\n }, {\n caseInsensitive: true\n }],\n \"media\": [{\n include: [\"strings\", \"url\", \"comments\"]\n }, {\n token: \"paren.lparen\",\n regex: \"\\\\{\",\n next: \"start\"\n }, {\n token: \"paren.rparen\",\n regex: \"\\\\}\",\n next: \"start\"\n }, {\n token: \"string\",\n regex: \";\",\n next: \"start\"\n }, {\n token: \"keyword\",\n regex: \"(?:media|supports|document|charset|import|namespace|media|supports|document\" + \"|page|font|keyframes|viewport|counter-style|font-feature-values\" + \"|swash|ornaments|annotation|stylistic|styleset|character-variant)\"\n }],\n \"comments\": [{\n token: \"comment\",\n // multi line comment\n regex: \"\\\\/\\\\*\",\n push: [{\n token: \"comment\",\n regex: \"\\\\*\\\\/\",\n next: \"pop\"\n }, {\n defaultToken: \"comment\"\n }]\n }],\n \"ruleset\": [{\n regex: \"-(webkit|ms|moz|o)-\",\n token: \"text\"\n }, {\n token: \"paren.rparen\",\n regex: \"\\\\}\",\n next: \"start\"\n }, {\n include: [\"strings\", \"url\", \"comments\"]\n }, {\n token: [\"constant.numeric\", \"keyword\"],\n regex: \"(\" + numRe + \")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)\"\n }, {\n token: \"constant.numeric\",\n regex: numRe\n }, {\n token: \"constant.numeric\",\n // hex6 color\n regex: \"#[a-f0-9]{6}\"\n }, {\n token: \"constant.numeric\",\n // hex3 color\n regex: \"#[a-f0-9]{3}\"\n }, {\n token: [\"punctuation\", \"entity.other.attribute-name.pseudo-element.css\"],\n regex: pseudoElements\n }, {\n token: [\"punctuation\", \"entity.other.attribute-name.pseudo-class.css\"],\n regex: pseudoClasses\n }, {\n include: \"url\"\n }, {\n token: keywordMapper,\n regex: \"\\\\-?[a-zA-Z_][a-zA-Z0-9_\\\\-]*\"\n }, {\n caseInsensitive: true\n }],\n url: [{\n token: \"support.function\",\n regex: \"(?:url(:?-prefix)?|domain|regexp)\\\\(\",\n push: [{\n token: \"support.function\",\n regex: \"\\\\)\",\n next: \"pop\"\n }, {\n defaultToken: \"string\"\n }]\n }],\n strings: [{\n token: \"string.start\",\n regex: \"'\",\n push: [{\n token: \"string.end\",\n regex: \"'|$\",\n next: \"pop\"\n }, {\n include: \"escapes\"\n }, {\n token: \"constant.language.escape\",\n regex: /\\\\$/,\n consumeLineEnd: true\n }, {\n defaultToken: \"string\"\n }]\n }, {\n token: \"string.start\",\n regex: '\"',\n push: [{\n token: \"string.end\",\n regex: '\"|$',\n next: \"pop\"\n }, {\n include: \"escapes\"\n }, {\n token: \"constant.language.escape\",\n regex: /\\\\$/,\n consumeLineEnd: true\n }, {\n defaultToken: \"string\"\n }]\n }],\n escapes: [{\n token: \"constant.language.escape\",\n regex: /\\\\([a-fA-F\\d]{1,6}|[^a-fA-F\\d])/\n }]\n };\n this.normalizeRules();\n };\n\n oop.inherits(CssHighlightRules, TextHighlightRules);\n exports.CssHighlightRules = CssHighlightRules;\n});\nace.define(\"ace/mode/matching_brace_outdent\", [\"require\", \"exports\", \"module\", \"ace/range\"], function (acequire, exports, module) {\n \"use strict\";\n\n var Range = acequire(\"../range\").Range;\n\n var MatchingBraceOutdent = function MatchingBraceOutdent() {};\n\n (function () {\n this.checkOutdent = function (line, input) {\n if (!/^\\s+$/.test(line)) return false;\n return /^\\s*\\}/.test(input);\n };\n\n this.autoOutdent = function (doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n if (!match) return 0;\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({\n row: row,\n column: column\n });\n if (!openBracePos || openBracePos.row == row) return 0;\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column - 1), indent);\n };\n\n this.$getIndent = function (line) {\n return line.match(/^\\s*/)[0];\n };\n }).call(MatchingBraceOutdent.prototype);\n exports.MatchingBraceOutdent = MatchingBraceOutdent;\n});\nace.define(\"ace/mode/css_completions\", [\"require\", \"exports\", \"module\"], function (acequire, exports, module) {\n \"use strict\";\n\n var propertyMap = {\n \"background\": {\n \"#$0\": 1\n },\n \"background-color\": {\n \"#$0\": 1,\n \"transparent\": 1,\n \"fixed\": 1\n },\n \"background-image\": {\n \"url('/$0')\": 1\n },\n \"background-repeat\": {\n \"repeat\": 1,\n \"repeat-x\": 1,\n \"repeat-y\": 1,\n \"no-repeat\": 1,\n \"inherit\": 1\n },\n \"background-position\": {\n \"bottom\": 2,\n \"center\": 2,\n \"left\": 2,\n \"right\": 2,\n \"top\": 2,\n \"inherit\": 2\n },\n \"background-attachment\": {\n \"scroll\": 1,\n \"fixed\": 1\n },\n \"background-size\": {\n \"cover\": 1,\n \"contain\": 1\n },\n \"background-clip\": {\n \"border-box\": 1,\n \"padding-box\": 1,\n \"content-box\": 1\n },\n \"background-origin\": {\n \"border-box\": 1,\n \"padding-box\": 1,\n \"content-box\": 1\n },\n \"border\": {\n \"solid $0\": 1,\n \"dashed $0\": 1,\n \"dotted $0\": 1,\n \"#$0\": 1\n },\n \"border-color\": {\n \"#$0\": 1\n },\n \"border-style\": {\n \"solid\": 2,\n \"dashed\": 2,\n \"dotted\": 2,\n \"double\": 2,\n \"groove\": 2,\n \"hidden\": 2,\n \"inherit\": 2,\n \"inset\": 2,\n \"none\": 2,\n \"outset\": 2,\n \"ridged\": 2\n },\n \"border-collapse\": {\n \"collapse\": 1,\n \"separate\": 1\n },\n \"bottom\": {\n \"px\": 1,\n \"em\": 1,\n \"%\": 1\n },\n \"clear\": {\n \"left\": 1,\n \"right\": 1,\n \"both\": 1,\n \"none\": 1\n },\n \"color\": {\n \"#$0\": 1,\n \"rgb(#$00,0,0)\": 1\n },\n \"cursor\": {\n \"default\": 1,\n \"pointer\": 1,\n \"move\": 1,\n \"text\": 1,\n \"wait\": 1,\n \"help\": 1,\n \"progress\": 1,\n \"n-resize\": 1,\n \"ne-resize\": 1,\n \"e-resize\": 1,\n \"se-resize\": 1,\n \"s-resize\": 1,\n \"sw-resize\": 1,\n \"w-resize\": 1,\n \"nw-resize\": 1\n },\n \"display\": {\n \"none\": 1,\n \"block\": 1,\n \"inline\": 1,\n \"inline-block\": 1,\n \"table-cell\": 1\n },\n \"empty-cells\": {\n \"show\": 1,\n \"hide\": 1\n },\n \"float\": {\n \"left\": 1,\n \"right\": 1,\n \"none\": 1\n },\n \"font-family\": {\n \"Arial\": 2,\n \"Comic Sans MS\": 2,\n \"Consolas\": 2,\n \"Courier New\": 2,\n \"Courier\": 2,\n \"Georgia\": 2,\n \"Monospace\": 2,\n \"Sans-Serif\": 2,\n \"Segoe UI\": 2,\n \"Tahoma\": 2,\n \"Times New Roman\": 2,\n \"Trebuchet MS\": 2,\n \"Verdana\": 1\n },\n \"font-size\": {\n \"px\": 1,\n \"em\": 1,\n \"%\": 1\n },\n \"font-weight\": {\n \"bold\": 1,\n \"normal\": 1\n },\n \"font-style\": {\n \"italic\": 1,\n \"normal\": 1\n },\n \"font-variant\": {\n \"normal\": 1,\n \"small-caps\": 1\n },\n \"height\": {\n \"px\": 1,\n \"em\": 1,\n \"%\": 1\n },\n \"left\": {\n \"px\": 1,\n \"em\": 1,\n \"%\": 1\n },\n \"letter-spacing\": {\n \"normal\": 1\n },\n \"line-height\": {\n \"normal\": 1\n },\n \"list-style-type\": {\n \"none\": 1,\n \"disc\": 1,\n \"circle\": 1,\n \"square\": 1,\n \"decimal\": 1,\n \"decimal-leading-zero\": 1,\n \"lower-roman\": 1,\n \"upper-roman\": 1,\n \"lower-greek\": 1,\n \"lower-latin\": 1,\n \"upper-latin\": 1,\n \"georgian\": 1,\n \"lower-alpha\": 1,\n \"upper-alpha\": 1\n },\n \"margin\": {\n \"px\": 1,\n \"em\": 1,\n \"%\": 1\n },\n \"margin-right\": {\n \"px\": 1,\n \"em\": 1,\n \"%\": 1\n },\n \"margin-left\": {\n \"px\": 1,\n \"em\": 1,\n \"%\": 1\n },\n \"margin-top\": {\n \"px\": 1,\n \"em\": 1,\n \"%\": 1\n },\n \"margin-bottom\": {\n \"px\": 1,\n \"em\": 1,\n \"%\": 1\n },\n \"max-height\": {\n \"px\": 1,\n \"em\": 1,\n \"%\": 1\n },\n \"max-width\": {\n \"px\": 1,\n \"em\": 1,\n \"%\": 1\n },\n \"min-height\": {\n \"px\": 1,\n \"em\": 1,\n \"%\": 1\n },\n \"min-width\": {\n \"px\": 1,\n \"em\": 1,\n \"%\": 1\n },\n \"overflow\": {\n \"hidden\": 1,\n \"visible\": 1,\n \"auto\": 1,\n \"scroll\": 1\n },\n \"overflow-x\": {\n \"hidden\": 1,\n \"visible\": 1,\n \"auto\": 1,\n \"scroll\": 1\n },\n \"overflow-y\": {\n \"hidden\": 1,\n \"visible\": 1,\n \"auto\": 1,\n \"scroll\": 1\n },\n \"padding\": {\n \"px\": 1,\n \"em\": 1,\n \"%\": 1\n },\n \"padding-top\": {\n \"px\": 1,\n \"em\": 1,\n \"%\": 1\n },\n \"padding-right\": {\n \"px\": 1,\n \"em\": 1,\n \"%\": 1\n },\n \"padding-bottom\": {\n \"px\": 1,\n \"em\": 1,\n \"%\": 1\n },\n \"padding-left\": {\n \"px\": 1,\n \"em\": 1,\n \"%\": 1\n },\n \"page-break-after\": {\n \"auto\": 1,\n \"always\": 1,\n \"avoid\": 1,\n \"left\": 1,\n \"right\": 1\n },\n \"page-break-before\": {\n \"auto\": 1,\n \"always\": 1,\n \"avoid\": 1,\n \"left\": 1,\n \"right\": 1\n },\n \"position\": {\n \"absolute\": 1,\n \"relative\": 1,\n \"fixed\": 1,\n \"static\": 1\n },\n \"right\": {\n \"px\": 1,\n \"em\": 1,\n \"%\": 1\n },\n \"table-layout\": {\n \"fixed\": 1,\n \"auto\": 1\n },\n \"text-decoration\": {\n \"none\": 1,\n \"underline\": 1,\n \"line-through\": 1,\n \"blink\": 1\n },\n \"text-align\": {\n \"left\": 1,\n \"right\": 1,\n \"center\": 1,\n \"justify\": 1\n },\n \"text-transform\": {\n \"capitalize\": 1,\n \"uppercase\": 1,\n \"lowercase\": 1,\n \"none\": 1\n },\n \"top\": {\n \"px\": 1,\n \"em\": 1,\n \"%\": 1\n },\n \"vertical-align\": {\n \"top\": 1,\n \"bottom\": 1\n },\n \"visibility\": {\n \"hidden\": 1,\n \"visible\": 1\n },\n \"white-space\": {\n \"nowrap\": 1,\n \"normal\": 1,\n \"pre\": 1,\n \"pre-line\": 1,\n \"pre-wrap\": 1\n },\n \"width\": {\n \"px\": 1,\n \"em\": 1,\n \"%\": 1\n },\n \"word-spacing\": {\n \"normal\": 1\n },\n \"filter\": {\n \"alpha(opacity=$0100)\": 1\n },\n \"text-shadow\": {\n \"$02px 2px 2px #777\": 1\n },\n \"text-overflow\": {\n \"ellipsis-word\": 1,\n \"clip\": 1,\n \"ellipsis\": 1\n },\n \"-moz-border-radius\": 1,\n \"-moz-border-radius-topright\": 1,\n \"-moz-border-radius-bottomright\": 1,\n \"-moz-border-radius-topleft\": 1,\n \"-moz-border-radius-bottomleft\": 1,\n \"-webkit-border-radius\": 1,\n \"-webkit-border-top-right-radius\": 1,\n \"-webkit-border-top-left-radius\": 1,\n \"-webkit-border-bottom-right-radius\": 1,\n \"-webkit-border-bottom-left-radius\": 1,\n \"-moz-box-shadow\": 1,\n \"-webkit-box-shadow\": 1,\n \"transform\": {\n \"rotate($00deg)\": 1,\n \"skew($00deg)\": 1\n },\n \"-moz-transform\": {\n \"rotate($00deg)\": 1,\n \"skew($00deg)\": 1\n },\n \"-webkit-transform\": {\n \"rotate($00deg)\": 1,\n \"skew($00deg)\": 1\n }\n };\n\n var CssCompletions = function CssCompletions() {};\n\n (function () {\n this.completionsDefined = false;\n\n this.defineCompletions = function () {\n if (document) {\n var style = document.createElement('c').style;\n\n for (var i in style) {\n if (typeof style[i] !== 'string') continue;\n var name = i.replace(/[A-Z]/g, function (x) {\n return '-' + x.toLowerCase();\n });\n if (!propertyMap.hasOwnProperty(name)) propertyMap[name] = 1;\n }\n }\n\n this.completionsDefined = true;\n };\n\n this.getCompletions = function (state, session, pos, prefix) {\n if (!this.completionsDefined) {\n this.defineCompletions();\n }\n\n var token = session.getTokenAt(pos.row, pos.column);\n if (!token) return [];\n\n if (state === 'ruleset') {\n var line = session.getLine(pos.row).substr(0, pos.column);\n\n if (/:[^;]+$/.test(line)) {\n /([\\w\\-]+):[^:]*$/.test(line);\n return this.getPropertyValueCompletions(state, session, pos, prefix);\n } else {\n return this.getPropertyCompletions(state, session, pos, prefix);\n }\n }\n\n return [];\n };\n\n this.getPropertyCompletions = function (state, session, pos, prefix) {\n var properties = Object.keys(propertyMap);\n return properties.map(function (property) {\n return {\n caption: property,\n snippet: property + ': $0;',\n meta: \"property\",\n score: Number.MAX_VALUE\n };\n });\n };\n\n this.getPropertyValueCompletions = function (state, session, pos, prefix) {\n var line = session.getLine(pos.row).substr(0, pos.column);\n var property = (/([\\w\\-]+):[^:]*$/.exec(line) || {})[1];\n if (!property) return [];\n var values = [];\n\n if (property in propertyMap && typeof propertyMap[property] === \"object\") {\n values = Object.keys(propertyMap[property]);\n }\n\n return values.map(function (value) {\n return {\n caption: value,\n snippet: value,\n meta: \"property value\",\n score: Number.MAX_VALUE\n };\n });\n };\n }).call(CssCompletions.prototype);\n exports.CssCompletions = CssCompletions;\n});\nace.define(\"ace/mode/behaviour/css\", [\"require\", \"exports\", \"module\", \"ace/lib/oop\", \"ace/mode/behaviour\", \"ace/mode/behaviour/cstyle\", \"ace/token_iterator\"], function (acequire, exports, module) {\n \"use strict\";\n\n var oop = acequire(\"../../lib/oop\");\n var Behaviour = acequire(\"../behaviour\").Behaviour;\n var CstyleBehaviour = acequire(\"./cstyle\").CstyleBehaviour;\n var TokenIterator = acequire(\"../../token_iterator\").TokenIterator;\n\n var CssBehaviour = function CssBehaviour() {\n this.inherit(CstyleBehaviour);\n this.add(\"colon\", \"insertion\", function (state, action, editor, session, text) {\n if (text === ':') {\n var cursor = editor.getCursorPosition();\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n\n if (token && token.value.match(/\\s+/)) {\n token = iterator.stepBackward();\n }\n\n if (token && token.type === 'support.type') {\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n\n if (rightChar === ':') {\n return {\n text: '',\n selection: [1, 1]\n };\n }\n\n if (!line.substring(cursor.column).match(/^\\s*;/)) {\n return {\n text: ':;',\n selection: [1, 1]\n };\n }\n }\n }\n });\n this.add(\"colon\", \"deletion\", function (state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n\n if (!range.isMultiLine() && selected === ':') {\n var cursor = editor.getCursorPosition();\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n\n if (token && token.value.match(/\\s+/)) {\n token = iterator.stepBackward();\n }\n\n if (token && token.type === 'support.type') {\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.end.column, range.end.column + 1);\n\n if (rightChar === ';') {\n range.end.column++;\n return range;\n }\n }\n }\n });\n this.add(\"semicolon\", \"insertion\", function (state, action, editor, session, text) {\n if (text === ';') {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n\n if (rightChar === ';') {\n return {\n text: '',\n selection: [1, 1]\n };\n }\n }\n });\n };\n\n oop.inherits(CssBehaviour, CstyleBehaviour);\n exports.CssBehaviour = CssBehaviour;\n});\nace.define(\"ace/mode/folding/cstyle\", [\"require\", \"exports\", \"module\", \"ace/lib/oop\", \"ace/range\", \"ace/mode/folding/fold_mode\"], function (acequire, exports, module) {\n \"use strict\";\n\n var oop = acequire(\"../../lib/oop\");\n var Range = acequire(\"../../range\").Range;\n var BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\n\n var FoldMode = exports.FoldMode = function (commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start));\n this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end));\n }\n };\n\n oop.inherits(FoldMode, BaseFoldMode);\n (function () {\n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe = /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n\n this.getFoldWidget = function (session, foldStyle, row) {\n var line = session.getLine(row);\n\n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return \"\";\n }\n\n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n\n if (!fw && this.startRegionRe.test(line)) return \"start\"; // lineCommentRegionStart\n\n return fw;\n };\n\n this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row);\n var match = line.match(this.foldingStartMarker);\n\n if (match) {\n var i = match.index;\n if (match[1]) return this.openingBracketBlock(session, match[1], row, i);\n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n\n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n } else if (foldStyle != \"all\") range = null;\n }\n\n return range;\n }\n\n if (foldStyle === \"markbegin\") return;\n var match = line.match(this.foldingStopMarker);\n\n if (match) {\n var i = match.index + match[0].length;\n if (match[1]) return this.closingBracketBlock(session, match[1], row, i);\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n\n this.getSectionRange = function (session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1) continue;\n if (startIndent > indent) break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n\n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n } else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n } else if (startIndent == indent) {\n break;\n }\n }\n\n endRow = row;\n }\n\n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n\n this.getCommentRegionBlock = function (session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m) continue;\n if (m[1]) depth--;else depth++;\n if (!depth) break;\n }\n\n var endRow = row;\n\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n }).call(FoldMode.prototype);\n});\nace.define(\"ace/mode/css\", [\"require\", \"exports\", \"module\", \"ace/lib/oop\", \"ace/mode/text\", \"ace/mode/css_highlight_rules\", \"ace/mode/matching_brace_outdent\", \"ace/worker/worker_client\", \"ace/mode/css_completions\", \"ace/mode/behaviour/css\", \"ace/mode/folding/cstyle\"], function (acequire, exports, module) {\n \"use strict\";\n\n var oop = acequire(\"../lib/oop\");\n var TextMode = acequire(\"./text\").Mode;\n var CssHighlightRules = acequire(\"./css_highlight_rules\").CssHighlightRules;\n var MatchingBraceOutdent = acequire(\"./matching_brace_outdent\").MatchingBraceOutdent;\n var WorkerClient = acequire(\"../worker/worker_client\").WorkerClient;\n var CssCompletions = acequire(\"./css_completions\").CssCompletions;\n var CssBehaviour = acequire(\"./behaviour/css\").CssBehaviour;\n var CStyleFoldMode = acequire(\"./folding/cstyle\").FoldMode;\n\n var Mode = function Mode() {\n this.HighlightRules = CssHighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CssBehaviour();\n this.$completer = new CssCompletions();\n this.foldingRules = new CStyleFoldMode();\n };\n\n oop.inherits(Mode, TextMode);\n (function () {\n this.foldingRules = \"cStyle\";\n this.blockComment = {\n start: \"/*\",\n end: \"*/\"\n };\n\n this.getNextLineIndent = function (state, line, tab) {\n var indent = this.$getIndent(line);\n var tokens = this.getTokenizer().getLineTokens(line, state).tokens;\n\n if (tokens.length && tokens[tokens.length - 1].type == \"comment\") {\n return indent;\n }\n\n var match = line.match(/^.*\\{\\s*$/);\n\n if (match) {\n indent += tab;\n }\n\n return indent;\n };\n\n this.checkOutdent = function (state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n\n this.autoOutdent = function (state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n\n this.getCompletions = function (state, session, pos, prefix) {\n return this.$completer.getCompletions(state, session, pos, prefix);\n };\n\n this.createWorker = function (session) {\n var worker = new WorkerClient([\"ace\"], require(\"../worker/css\"), \"Worker\");\n worker.attachToDocument(session.getDocument());\n worker.on(\"annotate\", function (e) {\n session.setAnnotations(e.data);\n });\n worker.on(\"terminate\", function () {\n session.clearAnnotations();\n });\n return worker;\n };\n\n this.$id = \"ace/mode/css\";\n }).call(Mode.prototype);\n exports.Mode = Mode;\n});","ace.define(\"ace/mode/doc_comment_highlight_rules\", [\"require\", \"exports\", \"module\", \"ace/lib/oop\", \"ace/mode/text_highlight_rules\"], function (acequire, exports, module) {\n \"use strict\";\n\n var oop = acequire(\"../lib/oop\");\n var TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\n var DocCommentHighlightRules = function DocCommentHighlightRules() {\n this.$rules = {\n \"start\": [{\n token: \"comment.doc.tag\",\n regex: \"@[\\\\w\\\\d_]+\" // TODO: fix email addresses\n\n }, DocCommentHighlightRules.getTagRule(), {\n defaultToken: \"comment.doc\",\n caseInsensitive: true\n }]\n };\n };\n\n oop.inherits(DocCommentHighlightRules, TextHighlightRules);\n\n DocCommentHighlightRules.getTagRule = function (start) {\n return {\n token: \"comment.doc.tag.storage.type\",\n regex: \"\\\\b(?:TODO|FIXME|XXX|HACK)\\\\b\"\n };\n };\n\n DocCommentHighlightRules.getStartRule = function (start) {\n return {\n token: \"comment.doc\",\n // doc comment\n regex: \"\\\\/\\\\*(?=\\\\*)\",\n next: start\n };\n };\n\n DocCommentHighlightRules.getEndRule = function (start) {\n return {\n token: \"comment.doc\",\n // closing comment\n regex: \"\\\\*\\\\/\",\n next: start\n };\n };\n\n exports.DocCommentHighlightRules = DocCommentHighlightRules;\n});\nace.define(\"ace/mode/javascript_highlight_rules\", [\"require\", \"exports\", \"module\", \"ace/lib/oop\", \"ace/mode/doc_comment_highlight_rules\", \"ace/mode/text_highlight_rules\"], function (acequire, exports, module) {\n \"use strict\";\n\n var oop = acequire(\"../lib/oop\");\n var DocCommentHighlightRules = acequire(\"./doc_comment_highlight_rules\").DocCommentHighlightRules;\n var TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n var identifierRe = \"[a-zA-Z\\\\$_\\xA1-\\uFFFF][a-zA-Z\\\\d\\\\$_\\xA1-\\uFFFF]*\";\n\n var JavaScriptHighlightRules = function JavaScriptHighlightRules(options) {\n var keywordMapper = this.createKeywordMapper({\n \"variable.language\": \"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|\" + // Constructors\n \"Namespace|QName|XML|XMLList|\" + // E4X\n \"ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|\" + \"Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|\" + \"Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|\" + // Errors\n \"SyntaxError|TypeError|URIError|\" + \"decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|\" + // Non-constructor functions\n \"isNaN|parseFloat|parseInt|\" + \"JSON|Math|\" + // Other\n \"this|arguments|prototype|window|document\",\n // Pseudo\n \"keyword\": \"const|yield|import|get|set|async|await|\" + \"break|case|catch|continue|default|delete|do|else|finally|for|function|\" + \"if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|\" + \"__parent__|__count__|escape|unescape|with|__proto__|\" + \"class|enum|extends|super|export|implements|private|public|interface|package|protected|static\",\n \"storage.type\": \"const|let|var|function\",\n \"constant.language\": \"null|Infinity|NaN|undefined\",\n \"support.function\": \"alert\",\n \"constant.language.boolean\": \"true|false\"\n }, \"identifier\");\n var kwBeforeRe = \"case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void\";\n var escapedRe = \"\\\\\\\\(?:x[0-9a-fA-F]{2}|\" + // hex\n \"u[0-9a-fA-F]{4}|\" + // unicode\n \"u{[0-9a-fA-F]{1,6}}|\" + // es6 unicode\n \"[0-2][0-7]{0,2}|\" + // oct\n \"3[0-7][0-7]?|\" + // oct\n \"[4-7][0-7]?|\" + //oct\n \".)\";\n this.$rules = {\n \"no_regex\": [DocCommentHighlightRules.getStartRule(\"doc-start\"), comments(\"no_regex\"), {\n token: \"string\",\n regex: \"'(?=.)\",\n next: \"qstring\"\n }, {\n token: \"string\",\n regex: '\"(?=.)',\n next: \"qqstring\"\n }, {\n token: \"constant.numeric\",\n // hexadecimal, octal and binary\n regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\\b/\n }, {\n token: \"constant.numeric\",\n // decimal integers and floats\n regex: /(?:\\d\\d*(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+\\b)?/\n }, {\n token: [\"storage.type\", \"punctuation.operator\", \"support.function\", \"punctuation.operator\", \"entity.name.function\", \"text\", \"keyword.operator\"],\n regex: \"(\" + identifierRe + \")(\\\\.)(prototype)(\\\\.)(\" + identifierRe + \")(\\\\s*)(=)\",\n next: \"function_arguments\"\n }, {\n token: [\"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\", \"keyword.operator\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"],\n regex: \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe + \")(\\\\s*)(=)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: [\"entity.name.function\", \"text\", \"keyword.operator\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"],\n regex: \"(\" + identifierRe + \")(\\\\s*)(=)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: [\"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\", \"keyword.operator\", \"text\", \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"],\n regex: \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe + \")(\\\\s*)(=)(\\\\s*)(function)(\\\\s+)(\\\\w+)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: [\"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"],\n regex: \"(function)(\\\\s+)(\" + identifierRe + \")(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: [\"entity.name.function\", \"text\", \"punctuation.operator\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"],\n regex: \"(\" + identifierRe + \")(\\\\s*)(:)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: [\"text\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"],\n regex: \"(:)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: \"keyword\",\n regex: \"from(?=\\\\s*('|\\\"))\"\n }, {\n token: \"keyword\",\n regex: \"(?:\" + kwBeforeRe + \")\\\\b\",\n next: \"start\"\n }, {\n token: [\"support.constant\"],\n regex: /that\\b/\n }, {\n token: [\"storage.type\", \"punctuation.operator\", \"support.function.firebug\"],\n regex: /(console)(\\.)(warn|info|log|error|time|trace|timeEnd|assert)\\b/\n }, {\n token: keywordMapper,\n regex: identifierRe\n }, {\n token: \"punctuation.operator\",\n regex: /[.](?![.])/,\n next: \"property\"\n }, {\n token: \"storage.type\",\n regex: /=>/\n }, {\n token: \"keyword.operator\",\n regex: /--|\\+\\+|\\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\\|\\||\\?:|[!$%&*+\\-~\\/^]=?/,\n next: \"start\"\n }, {\n token: \"punctuation.operator\",\n regex: /[?:,;.]/,\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: /[\\[({]/,\n next: \"start\"\n }, {\n token: \"paren.rparen\",\n regex: /[\\])}]/\n }, {\n token: \"comment\",\n regex: /^#!.*$/\n }],\n property: [{\n token: \"text\",\n regex: \"\\\\s+\"\n }, {\n token: [\"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\", \"keyword.operator\", \"text\", \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"],\n regex: \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe + \")(\\\\s*)(=)(\\\\s*)(function)(?:(\\\\s+)(\\\\w+))?(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: \"punctuation.operator\",\n regex: /[.](?![.])/\n }, {\n token: \"support.function\",\n regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\\b(?=\\()/\n }, {\n token: \"support.function.dom\",\n regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\\b(?=\\()/\n }, {\n token: \"support.constant\",\n regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\\b/\n }, {\n token: \"identifier\",\n regex: identifierRe\n }, {\n regex: \"\",\n token: \"empty\",\n next: \"no_regex\"\n }],\n \"start\": [DocCommentHighlightRules.getStartRule(\"doc-start\"), comments(\"start\"), {\n token: \"string.regexp\",\n regex: \"\\\\/\",\n next: \"regex\"\n }, {\n token: \"text\",\n regex: \"\\\\s+|^$\",\n next: \"start\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }],\n \"regex\": [{\n token: \"regexp.keyword.operator\",\n regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n }, {\n token: \"string.regexp\",\n regex: \"/[sxngimy]*\",\n next: \"no_regex\"\n }, {\n token: \"invalid\",\n regex: /\\{\\d+\\b,?\\d*\\}[+*]|[+*$^?][+*]|[$^][?]|\\?{3,}/\n }, {\n token: \"constant.language.escape\",\n regex: /\\(\\?[:=!]|\\)|\\{\\d+\\b,?\\d*\\}|[+*]\\?|[()$^+*?.]/\n }, {\n token: \"constant.language.delimiter\",\n regex: /\\|/\n }, {\n token: \"constant.language.escape\",\n regex: /\\[\\^?/,\n next: \"regex_character_class\"\n }, {\n token: \"empty\",\n regex: \"$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string.regexp\"\n }],\n \"regex_character_class\": [{\n token: \"regexp.charclass.keyword.operator\",\n regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n }, {\n token: \"constant.language.escape\",\n regex: \"]\",\n next: \"regex\"\n }, {\n token: \"constant.language.escape\",\n regex: \"-\"\n }, {\n token: \"empty\",\n regex: \"$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string.regexp.charachterclass\"\n }],\n \"function_arguments\": [{\n token: \"variable.parameter\",\n regex: identifierRe\n }, {\n token: \"punctuation.operator\",\n regex: \"[, ]+\"\n }, {\n token: \"punctuation.operator\",\n regex: \"$\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }],\n \"qqstring\": [{\n token: \"constant.language.escape\",\n regex: escapedRe\n }, {\n token: \"string\",\n regex: \"\\\\\\\\$\",\n consumeLineEnd: true\n }, {\n token: \"string\",\n regex: '\"|$',\n next: \"no_regex\"\n }, {\n defaultToken: \"string\"\n }],\n \"qstring\": [{\n token: \"constant.language.escape\",\n regex: escapedRe\n }, {\n token: \"string\",\n regex: \"\\\\\\\\$\",\n consumeLineEnd: true\n }, {\n token: \"string\",\n regex: \"'|$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string\"\n }]\n };\n\n if (!options || !options.noES6) {\n this.$rules.no_regex.unshift({\n regex: \"[{}]\",\n onMatch: function onMatch(val, state, stack) {\n this.next = val == \"{\" ? this.nextState : \"\";\n\n if (val == \"{\" && stack.length) {\n stack.unshift(\"start\", state);\n } else if (val == \"}\" && stack.length) {\n stack.shift();\n this.next = stack.shift();\n if (this.next.indexOf(\"string\") != -1 || this.next.indexOf(\"jsx\") != -1) return \"paren.quasi.end\";\n }\n\n return val == \"{\" ? \"paren.lparen\" : \"paren.rparen\";\n },\n nextState: \"start\"\n }, {\n token: \"string.quasi.start\",\n regex: /`/,\n push: [{\n token: \"constant.language.escape\",\n regex: escapedRe\n }, {\n token: \"paren.quasi.start\",\n regex: /\\${/,\n push: \"start\"\n }, {\n token: \"string.quasi.end\",\n regex: /`/,\n next: \"pop\"\n }, {\n defaultToken: \"string.quasi\"\n }]\n });\n if (!options || options.jsx != false) JSX.call(this);\n }\n\n this.embedRules(DocCommentHighlightRules, \"doc-\", [DocCommentHighlightRules.getEndRule(\"no_regex\")]);\n this.normalizeRules();\n };\n\n oop.inherits(JavaScriptHighlightRules, TextHighlightRules);\n\n function JSX() {\n var tagRegex = identifierRe.replace(\"\\\\d\", \"\\\\d\\\\-\");\n var jsxTag = {\n onMatch: function onMatch(val, state, stack) {\n var offset = val.charAt(1) == \"/\" ? 2 : 1;\n\n if (offset == 1) {\n if (state != this.nextState) stack.unshift(this.next, this.nextState, 0);else stack.unshift(this.next);\n stack[2]++;\n } else if (offset == 2) {\n if (state == this.nextState) {\n stack[1]--;\n\n if (!stack[1] || stack[1] < 0) {\n stack.shift();\n stack.shift();\n }\n }\n }\n\n return [{\n type: \"meta.tag.punctuation.\" + (offset == 1 ? \"\" : \"end-\") + \"tag-open.xml\",\n value: val.slice(0, offset)\n }, {\n type: \"meta.tag.tag-name.xml\",\n value: val.substr(offset)\n }];\n },\n regex: \"\",\n onMatch: function onMatch(value, currentState, stack) {\n if (currentState == stack[0]) stack.shift();\n\n if (value.length == 2) {\n if (stack[0] == this.nextState) stack[1]--;\n\n if (!stack[1] || stack[1] < 0) {\n stack.splice(0, 2);\n }\n }\n\n this.next = stack[0] || \"start\";\n return [{\n type: this.token,\n value: value\n }];\n },\n nextState: \"jsx\"\n }, jsxJsRule, comments(\"jsxAttributes\"), {\n token: \"entity.other.attribute-name.xml\",\n regex: tagRegex\n }, {\n token: \"keyword.operator.attribute-equals.xml\",\n regex: \"=\"\n }, {\n token: \"text.tag-whitespace.xml\",\n regex: \"\\\\s+\"\n }, {\n token: \"string.attribute-value.xml\",\n regex: \"'\",\n stateName: \"jsx_attr_q\",\n push: [{\n token: \"string.attribute-value.xml\",\n regex: \"'\",\n next: \"pop\"\n }, {\n include: \"reference\"\n }, {\n defaultToken: \"string.attribute-value.xml\"\n }]\n }, {\n token: \"string.attribute-value.xml\",\n regex: '\"',\n stateName: \"jsx_attr_qq\",\n push: [{\n token: \"string.attribute-value.xml\",\n regex: '\"',\n next: \"pop\"\n }, {\n include: \"reference\"\n }, {\n defaultToken: \"string.attribute-value.xml\"\n }]\n }, jsxTag];\n this.$rules.reference = [{\n token: \"constant.language.escape.reference.xml\",\n regex: \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }];\n }\n\n function comments(next) {\n return [{\n token: \"comment\",\n // multi line comment\n regex: /\\/\\*/,\n next: [DocCommentHighlightRules.getTagRule(), {\n token: \"comment\",\n regex: \"\\\\*\\\\/\",\n next: next || \"pop\"\n }, {\n defaultToken: \"comment\",\n caseInsensitive: true\n }]\n }, {\n token: \"comment\",\n regex: \"\\\\/\\\\/\",\n next: [DocCommentHighlightRules.getTagRule(), {\n token: \"comment\",\n regex: \"$|^\",\n next: next || \"pop\"\n }, {\n defaultToken: \"comment\",\n caseInsensitive: true\n }]\n }];\n }\n\n exports.JavaScriptHighlightRules = JavaScriptHighlightRules;\n});\nace.define(\"ace/mode/matching_brace_outdent\", [\"require\", \"exports\", \"module\", \"ace/range\"], function (acequire, exports, module) {\n \"use strict\";\n\n var Range = acequire(\"../range\").Range;\n\n var MatchingBraceOutdent = function MatchingBraceOutdent() {};\n\n (function () {\n this.checkOutdent = function (line, input) {\n if (!/^\\s+$/.test(line)) return false;\n return /^\\s*\\}/.test(input);\n };\n\n this.autoOutdent = function (doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n if (!match) return 0;\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({\n row: row,\n column: column\n });\n if (!openBracePos || openBracePos.row == row) return 0;\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column - 1), indent);\n };\n\n this.$getIndent = function (line) {\n return line.match(/^\\s*/)[0];\n };\n }).call(MatchingBraceOutdent.prototype);\n exports.MatchingBraceOutdent = MatchingBraceOutdent;\n});\nace.define(\"ace/mode/folding/cstyle\", [\"require\", \"exports\", \"module\", \"ace/lib/oop\", \"ace/range\", \"ace/mode/folding/fold_mode\"], function (acequire, exports, module) {\n \"use strict\";\n\n var oop = acequire(\"../../lib/oop\");\n var Range = acequire(\"../../range\").Range;\n var BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\n\n var FoldMode = exports.FoldMode = function (commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start));\n this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end));\n }\n };\n\n oop.inherits(FoldMode, BaseFoldMode);\n (function () {\n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe = /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n\n this.getFoldWidget = function (session, foldStyle, row) {\n var line = session.getLine(row);\n\n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return \"\";\n }\n\n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n\n if (!fw && this.startRegionRe.test(line)) return \"start\"; // lineCommentRegionStart\n\n return fw;\n };\n\n this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row);\n var match = line.match(this.foldingStartMarker);\n\n if (match) {\n var i = match.index;\n if (match[1]) return this.openingBracketBlock(session, match[1], row, i);\n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n\n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n } else if (foldStyle != \"all\") range = null;\n }\n\n return range;\n }\n\n if (foldStyle === \"markbegin\") return;\n var match = line.match(this.foldingStopMarker);\n\n if (match) {\n var i = match.index + match[0].length;\n if (match[1]) return this.closingBracketBlock(session, match[1], row, i);\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n\n this.getSectionRange = function (session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1) continue;\n if (startIndent > indent) break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n\n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n } else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n } else if (startIndent == indent) {\n break;\n }\n }\n\n endRow = row;\n }\n\n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n\n this.getCommentRegionBlock = function (session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m) continue;\n if (m[1]) depth--;else depth++;\n if (!depth) break;\n }\n\n var endRow = row;\n\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n }).call(FoldMode.prototype);\n});\nace.define(\"ace/mode/javascript\", [\"require\", \"exports\", \"module\", \"ace/lib/oop\", \"ace/mode/text\", \"ace/mode/javascript_highlight_rules\", \"ace/mode/matching_brace_outdent\", \"ace/worker/worker_client\", \"ace/mode/behaviour/cstyle\", \"ace/mode/folding/cstyle\"], function (acequire, exports, module) {\n \"use strict\";\n\n var oop = acequire(\"../lib/oop\");\n var TextMode = acequire(\"./text\").Mode;\n var JavaScriptHighlightRules = acequire(\"./javascript_highlight_rules\").JavaScriptHighlightRules;\n var MatchingBraceOutdent = acequire(\"./matching_brace_outdent\").MatchingBraceOutdent;\n var WorkerClient = acequire(\"../worker/worker_client\").WorkerClient;\n var CstyleBehaviour = acequire(\"./behaviour/cstyle\").CstyleBehaviour;\n var CStyleFoldMode = acequire(\"./folding/cstyle\").FoldMode;\n\n var Mode = function Mode() {\n this.HighlightRules = JavaScriptHighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CstyleBehaviour();\n this.foldingRules = new CStyleFoldMode();\n };\n\n oop.inherits(Mode, TextMode);\n (function () {\n this.lineCommentStart = \"//\";\n this.blockComment = {\n start: \"/*\",\n end: \"*/\"\n };\n this.$quotes = {\n '\"': '\"',\n \"'\": \"'\",\n \"`\": \"`\"\n };\n\n this.getNextLineIndent = function (state, line, tab) {\n var indent = this.$getIndent(line);\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n var endState = tokenizedLine.state;\n\n if (tokens.length && tokens[tokens.length - 1].type == \"comment\") {\n return indent;\n }\n\n if (state == \"start\" || state == \"no_regex\") {\n var match = line.match(/^.*(?:\\bcase\\b.*:|[\\{\\(\\[])\\s*$/);\n\n if (match) {\n indent += tab;\n }\n } else if (state == \"doc-start\") {\n if (endState == \"start\" || endState == \"no_regex\") {\n return \"\";\n }\n\n var match = line.match(/^\\s*(\\/?)\\*/);\n\n if (match) {\n if (match[1]) {\n indent += \" \";\n }\n\n indent += \"* \";\n }\n }\n\n return indent;\n };\n\n this.checkOutdent = function (state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n\n this.autoOutdent = function (state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n\n this.createWorker = function (session) {\n var worker = new WorkerClient([\"ace\"], require(\"../worker/javascript\"), \"JavaScriptWorker\");\n worker.attachToDocument(session.getDocument());\n worker.on(\"annotate\", function (results) {\n session.setAnnotations(results.data);\n });\n worker.on(\"terminate\", function () {\n session.clearAnnotations();\n });\n return worker;\n };\n\n this.$id = \"ace/mode/javascript\";\n }).call(Mode.prototype);\n exports.Mode = Mode;\n});\nace.define(\"ace/mode/css_highlight_rules\", [\"require\", \"exports\", \"module\", \"ace/lib/oop\", \"ace/lib/lang\", \"ace/mode/text_highlight_rules\"], function (acequire, exports, module) {\n \"use strict\";\n\n var oop = acequire(\"../lib/oop\");\n var lang = acequire(\"../lib/lang\");\n var TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n var supportType = exports.supportType = \"align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index\";\n var supportFunction = exports.supportFunction = \"rgb|rgba|url|attr|counter|counters\";\n var supportConstant = exports.supportConstant = \"absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero\";\n var supportConstantColor = exports.supportConstantColor = \"aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen\";\n var supportConstantFonts = exports.supportConstantFonts = \"arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace\";\n var numRe = exports.numRe = \"\\\\-?(?:(?:[0-9]+(?:\\\\.[0-9]+)?)|(?:\\\\.[0-9]+))\";\n var pseudoElements = exports.pseudoElements = \"(\\\\:+)\\\\b(after|before|first-letter|first-line|moz-selection|selection)\\\\b\";\n var pseudoClasses = exports.pseudoClasses = \"(:)\\\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|acequired|root|target|valid|visited)\\\\b\";\n\n var CssHighlightRules = function CssHighlightRules() {\n var keywordMapper = this.createKeywordMapper({\n \"support.function\": supportFunction,\n \"support.constant\": supportConstant,\n \"support.type\": supportType,\n \"support.constant.color\": supportConstantColor,\n \"support.constant.fonts\": supportConstantFonts\n }, \"text\", true);\n this.$rules = {\n \"start\": [{\n include: [\"strings\", \"url\", \"comments\"]\n }, {\n token: \"paren.lparen\",\n regex: \"\\\\{\",\n next: \"ruleset\"\n }, {\n token: \"paren.rparen\",\n regex: \"\\\\}\"\n }, {\n token: \"string\",\n regex: \"@\",\n next: \"media\"\n }, {\n token: \"keyword\",\n regex: \"#[a-z0-9-_]+\"\n }, {\n token: \"keyword\",\n regex: \"%\"\n }, {\n token: \"variable\",\n regex: \"\\\\.[a-z0-9-_]+\"\n }, {\n token: \"string\",\n regex: \":[a-z0-9-_]+\"\n }, {\n token: \"constant.numeric\",\n regex: numRe\n }, {\n token: \"constant\",\n regex: \"[a-z0-9-_]+\"\n }, {\n caseInsensitive: true\n }],\n \"media\": [{\n include: [\"strings\", \"url\", \"comments\"]\n }, {\n token: \"paren.lparen\",\n regex: \"\\\\{\",\n next: \"start\"\n }, {\n token: \"paren.rparen\",\n regex: \"\\\\}\",\n next: \"start\"\n }, {\n token: \"string\",\n regex: \";\",\n next: \"start\"\n }, {\n token: \"keyword\",\n regex: \"(?:media|supports|document|charset|import|namespace|media|supports|document\" + \"|page|font|keyframes|viewport|counter-style|font-feature-values\" + \"|swash|ornaments|annotation|stylistic|styleset|character-variant)\"\n }],\n \"comments\": [{\n token: \"comment\",\n // multi line comment\n regex: \"\\\\/\\\\*\",\n push: [{\n token: \"comment\",\n regex: \"\\\\*\\\\/\",\n next: \"pop\"\n }, {\n defaultToken: \"comment\"\n }]\n }],\n \"ruleset\": [{\n regex: \"-(webkit|ms|moz|o)-\",\n token: \"text\"\n }, {\n token: \"paren.rparen\",\n regex: \"\\\\}\",\n next: \"start\"\n }, {\n include: [\"strings\", \"url\", \"comments\"]\n }, {\n token: [\"constant.numeric\", \"keyword\"],\n regex: \"(\" + numRe + \")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)\"\n }, {\n token: \"constant.numeric\",\n regex: numRe\n }, {\n token: \"constant.numeric\",\n // hex6 color\n regex: \"#[a-f0-9]{6}\"\n }, {\n token: \"constant.numeric\",\n // hex3 color\n regex: \"#[a-f0-9]{3}\"\n }, {\n token: [\"punctuation\", \"entity.other.attribute-name.pseudo-element.css\"],\n regex: pseudoElements\n }, {\n token: [\"punctuation\", \"entity.other.attribute-name.pseudo-class.css\"],\n regex: pseudoClasses\n }, {\n include: \"url\"\n }, {\n token: keywordMapper,\n regex: \"\\\\-?[a-zA-Z_][a-zA-Z0-9_\\\\-]*\"\n }, {\n caseInsensitive: true\n }],\n url: [{\n token: \"support.function\",\n regex: \"(?:url(:?-prefix)?|domain|regexp)\\\\(\",\n push: [{\n token: \"support.function\",\n regex: \"\\\\)\",\n next: \"pop\"\n }, {\n defaultToken: \"string\"\n }]\n }],\n strings: [{\n token: \"string.start\",\n regex: \"'\",\n push: [{\n token: \"string.end\",\n regex: \"'|$\",\n next: \"pop\"\n }, {\n include: \"escapes\"\n }, {\n token: \"constant.language.escape\",\n regex: /\\\\$/,\n consumeLineEnd: true\n }, {\n defaultToken: \"string\"\n }]\n }, {\n token: \"string.start\",\n regex: '\"',\n push: [{\n token: \"string.end\",\n regex: '\"|$',\n next: \"pop\"\n }, {\n include: \"escapes\"\n }, {\n token: \"constant.language.escape\",\n regex: /\\\\$/,\n consumeLineEnd: true\n }, {\n defaultToken: \"string\"\n }]\n }],\n escapes: [{\n token: \"constant.language.escape\",\n regex: /\\\\([a-fA-F\\d]{1,6}|[^a-fA-F\\d])/\n }]\n };\n this.normalizeRules();\n };\n\n oop.inherits(CssHighlightRules, TextHighlightRules);\n exports.CssHighlightRules = CssHighlightRules;\n});\nace.define(\"ace/mode/css_completions\", [\"require\", \"exports\", \"module\"], function (acequire, exports, module) {\n \"use strict\";\n\n var propertyMap = {\n \"background\": {\n \"#$0\": 1\n },\n \"background-color\": {\n \"#$0\": 1,\n \"transparent\": 1,\n \"fixed\": 1\n },\n \"background-image\": {\n \"url('/$0')\": 1\n },\n \"background-repeat\": {\n \"repeat\": 1,\n \"repeat-x\": 1,\n \"repeat-y\": 1,\n \"no-repeat\": 1,\n \"inherit\": 1\n },\n \"background-position\": {\n \"bottom\": 2,\n \"center\": 2,\n \"left\": 2,\n \"right\": 2,\n \"top\": 2,\n \"inherit\": 2\n },\n \"background-attachment\": {\n \"scroll\": 1,\n \"fixed\": 1\n },\n \"background-size\": {\n \"cover\": 1,\n \"contain\": 1\n },\n \"background-clip\": {\n \"border-box\": 1,\n \"padding-box\": 1,\n \"content-box\": 1\n },\n \"background-origin\": {\n \"border-box\": 1,\n \"padding-box\": 1,\n \"content-box\": 1\n },\n \"border\": {\n \"solid $0\": 1,\n \"dashed $0\": 1,\n \"dotted $0\": 1,\n \"#$0\": 1\n },\n \"border-color\": {\n \"#$0\": 1\n },\n \"border-style\": {\n \"solid\": 2,\n \"dashed\": 2,\n \"dotted\": 2,\n \"double\": 2,\n \"groove\": 2,\n \"hidden\": 2,\n \"inherit\": 2,\n \"inset\": 2,\n \"none\": 2,\n \"outset\": 2,\n \"ridged\": 2\n },\n \"border-collapse\": {\n \"collapse\": 1,\n \"separate\": 1\n },\n \"bottom\": {\n \"px\": 1,\n \"em\": 1,\n \"%\": 1\n },\n \"clear\": {\n \"left\": 1,\n \"right\": 1,\n \"both\": 1,\n \"none\": 1\n },\n \"color\": {\n \"#$0\": 1,\n \"rgb(#$00,0,0)\": 1\n },\n \"cursor\": {\n \"default\": 1,\n \"pointer\": 1,\n \"move\": 1,\n \"text\": 1,\n \"wait\": 1,\n \"help\": 1,\n \"progress\": 1,\n \"n-resize\": 1,\n \"ne-resize\": 1,\n \"e-resize\": 1,\n \"se-resize\": 1,\n \"s-resize\": 1,\n \"sw-resize\": 1,\n \"w-resize\": 1,\n \"nw-resize\": 1\n },\n \"display\": {\n \"none\": 1,\n \"block\": 1,\n \"inline\": 1,\n \"inline-block\": 1,\n \"table-cell\": 1\n },\n \"empty-cells\": {\n \"show\": 1,\n \"hide\": 1\n },\n \"float\": {\n \"left\": 1,\n \"right\": 1,\n \"none\": 1\n },\n \"font-family\": {\n \"Arial\": 2,\n \"Comic Sans MS\": 2,\n \"Consolas\": 2,\n \"Courier New\": 2,\n \"Courier\": 2,\n \"Georgia\": 2,\n \"Monospace\": 2,\n \"Sans-Serif\": 2,\n \"Segoe UI\": 2,\n \"Tahoma\": 2,\n \"Times New Roman\": 2,\n \"Trebuchet MS\": 2,\n \"Verdana\": 1\n },\n \"font-size\": {\n \"px\": 1,\n \"em\": 1,\n \"%\": 1\n },\n \"font-weight\": {\n \"bold\": 1,\n \"normal\": 1\n },\n \"font-style\": {\n \"italic\": 1,\n \"normal\": 1\n },\n \"font-variant\": {\n \"normal\": 1,\n \"small-caps\": 1\n },\n \"height\": {\n \"px\": 1,\n \"em\": 1,\n \"%\": 1\n },\n \"left\": {\n \"px\": 1,\n \"em\": 1,\n \"%\": 1\n },\n \"letter-spacing\": {\n \"normal\": 1\n },\n \"line-height\": {\n \"normal\": 1\n },\n \"list-style-type\": {\n \"none\": 1,\n \"disc\": 1,\n \"circle\": 1,\n \"square\": 1,\n \"decimal\": 1,\n \"decimal-leading-zero\": 1,\n \"lower-roman\": 1,\n \"upper-roman\": 1,\n \"lower-greek\": 1,\n \"lower-latin\": 1,\n \"upper-latin\": 1,\n \"georgian\": 1,\n \"lower-alpha\": 1,\n \"upper-alpha\": 1\n },\n \"margin\": {\n \"px\": 1,\n \"em\": 1,\n \"%\": 1\n },\n \"margin-right\": {\n \"px\": 1,\n \"em\": 1,\n \"%\": 1\n },\n \"margin-left\": {\n \"px\": 1,\n \"em\": 1,\n \"%\": 1\n },\n \"margin-top\": {\n \"px\": 1,\n \"em\": 1,\n \"%\": 1\n },\n \"margin-bottom\": {\n \"px\": 1,\n \"em\": 1,\n \"%\": 1\n },\n \"max-height\": {\n \"px\": 1,\n \"em\": 1,\n \"%\": 1\n },\n \"max-width\": {\n \"px\": 1,\n \"em\": 1,\n \"%\": 1\n },\n \"min-height\": {\n \"px\": 1,\n \"em\": 1,\n \"%\": 1\n },\n \"min-width\": {\n \"px\": 1,\n \"em\": 1,\n \"%\": 1\n },\n \"overflow\": {\n \"hidden\": 1,\n \"visible\": 1,\n \"auto\": 1,\n \"scroll\": 1\n },\n \"overflow-x\": {\n \"hidden\": 1,\n \"visible\": 1,\n \"auto\": 1,\n \"scroll\": 1\n },\n \"overflow-y\": {\n \"hidden\": 1,\n \"visible\": 1,\n \"auto\": 1,\n \"scroll\": 1\n },\n \"padding\": {\n \"px\": 1,\n \"em\": 1,\n \"%\": 1\n },\n \"padding-top\": {\n \"px\": 1,\n \"em\": 1,\n \"%\": 1\n },\n \"padding-right\": {\n \"px\": 1,\n \"em\": 1,\n \"%\": 1\n },\n \"padding-bottom\": {\n \"px\": 1,\n \"em\": 1,\n \"%\": 1\n },\n \"padding-left\": {\n \"px\": 1,\n \"em\": 1,\n \"%\": 1\n },\n \"page-break-after\": {\n \"auto\": 1,\n \"always\": 1,\n \"avoid\": 1,\n \"left\": 1,\n \"right\": 1\n },\n \"page-break-before\": {\n \"auto\": 1,\n \"always\": 1,\n \"avoid\": 1,\n \"left\": 1,\n \"right\": 1\n },\n \"position\": {\n \"absolute\": 1,\n \"relative\": 1,\n \"fixed\": 1,\n \"static\": 1\n },\n \"right\": {\n \"px\": 1,\n \"em\": 1,\n \"%\": 1\n },\n \"table-layout\": {\n \"fixed\": 1,\n \"auto\": 1\n },\n \"text-decoration\": {\n \"none\": 1,\n \"underline\": 1,\n \"line-through\": 1,\n \"blink\": 1\n },\n \"text-align\": {\n \"left\": 1,\n \"right\": 1,\n \"center\": 1,\n \"justify\": 1\n },\n \"text-transform\": {\n \"capitalize\": 1,\n \"uppercase\": 1,\n \"lowercase\": 1,\n \"none\": 1\n },\n \"top\": {\n \"px\": 1,\n \"em\": 1,\n \"%\": 1\n },\n \"vertical-align\": {\n \"top\": 1,\n \"bottom\": 1\n },\n \"visibility\": {\n \"hidden\": 1,\n \"visible\": 1\n },\n \"white-space\": {\n \"nowrap\": 1,\n \"normal\": 1,\n \"pre\": 1,\n \"pre-line\": 1,\n \"pre-wrap\": 1\n },\n \"width\": {\n \"px\": 1,\n \"em\": 1,\n \"%\": 1\n },\n \"word-spacing\": {\n \"normal\": 1\n },\n \"filter\": {\n \"alpha(opacity=$0100)\": 1\n },\n \"text-shadow\": {\n \"$02px 2px 2px #777\": 1\n },\n \"text-overflow\": {\n \"ellipsis-word\": 1,\n \"clip\": 1,\n \"ellipsis\": 1\n },\n \"-moz-border-radius\": 1,\n \"-moz-border-radius-topright\": 1,\n \"-moz-border-radius-bottomright\": 1,\n \"-moz-border-radius-topleft\": 1,\n \"-moz-border-radius-bottomleft\": 1,\n \"-webkit-border-radius\": 1,\n \"-webkit-border-top-right-radius\": 1,\n \"-webkit-border-top-left-radius\": 1,\n \"-webkit-border-bottom-right-radius\": 1,\n \"-webkit-border-bottom-left-radius\": 1,\n \"-moz-box-shadow\": 1,\n \"-webkit-box-shadow\": 1,\n \"transform\": {\n \"rotate($00deg)\": 1,\n \"skew($00deg)\": 1\n },\n \"-moz-transform\": {\n \"rotate($00deg)\": 1,\n \"skew($00deg)\": 1\n },\n \"-webkit-transform\": {\n \"rotate($00deg)\": 1,\n \"skew($00deg)\": 1\n }\n };\n\n var CssCompletions = function CssCompletions() {};\n\n (function () {\n this.completionsDefined = false;\n\n this.defineCompletions = function () {\n if (document) {\n var style = document.createElement('c').style;\n\n for (var i in style) {\n if (typeof style[i] !== 'string') continue;\n var name = i.replace(/[A-Z]/g, function (x) {\n return '-' + x.toLowerCase();\n });\n if (!propertyMap.hasOwnProperty(name)) propertyMap[name] = 1;\n }\n }\n\n this.completionsDefined = true;\n };\n\n this.getCompletions = function (state, session, pos, prefix) {\n if (!this.completionsDefined) {\n this.defineCompletions();\n }\n\n var token = session.getTokenAt(pos.row, pos.column);\n if (!token) return [];\n\n if (state === 'ruleset') {\n var line = session.getLine(pos.row).substr(0, pos.column);\n\n if (/:[^;]+$/.test(line)) {\n /([\\w\\-]+):[^:]*$/.test(line);\n return this.getPropertyValueCompletions(state, session, pos, prefix);\n } else {\n return this.getPropertyCompletions(state, session, pos, prefix);\n }\n }\n\n return [];\n };\n\n this.getPropertyCompletions = function (state, session, pos, prefix) {\n var properties = Object.keys(propertyMap);\n return properties.map(function (property) {\n return {\n caption: property,\n snippet: property + ': $0;',\n meta: \"property\",\n score: Number.MAX_VALUE\n };\n });\n };\n\n this.getPropertyValueCompletions = function (state, session, pos, prefix) {\n var line = session.getLine(pos.row).substr(0, pos.column);\n var property = (/([\\w\\-]+):[^:]*$/.exec(line) || {})[1];\n if (!property) return [];\n var values = [];\n\n if (property in propertyMap && typeof propertyMap[property] === \"object\") {\n values = Object.keys(propertyMap[property]);\n }\n\n return values.map(function (value) {\n return {\n caption: value,\n snippet: value,\n meta: \"property value\",\n score: Number.MAX_VALUE\n };\n });\n };\n }).call(CssCompletions.prototype);\n exports.CssCompletions = CssCompletions;\n});\nace.define(\"ace/mode/behaviour/css\", [\"require\", \"exports\", \"module\", \"ace/lib/oop\", \"ace/mode/behaviour\", \"ace/mode/behaviour/cstyle\", \"ace/token_iterator\"], function (acequire, exports, module) {\n \"use strict\";\n\n var oop = acequire(\"../../lib/oop\");\n var Behaviour = acequire(\"../behaviour\").Behaviour;\n var CstyleBehaviour = acequire(\"./cstyle\").CstyleBehaviour;\n var TokenIterator = acequire(\"../../token_iterator\").TokenIterator;\n\n var CssBehaviour = function CssBehaviour() {\n this.inherit(CstyleBehaviour);\n this.add(\"colon\", \"insertion\", function (state, action, editor, session, text) {\n if (text === ':') {\n var cursor = editor.getCursorPosition();\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n\n if (token && token.value.match(/\\s+/)) {\n token = iterator.stepBackward();\n }\n\n if (token && token.type === 'support.type') {\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n\n if (rightChar === ':') {\n return {\n text: '',\n selection: [1, 1]\n };\n }\n\n if (!line.substring(cursor.column).match(/^\\s*;/)) {\n return {\n text: ':;',\n selection: [1, 1]\n };\n }\n }\n }\n });\n this.add(\"colon\", \"deletion\", function (state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n\n if (!range.isMultiLine() && selected === ':') {\n var cursor = editor.getCursorPosition();\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n\n if (token && token.value.match(/\\s+/)) {\n token = iterator.stepBackward();\n }\n\n if (token && token.type === 'support.type') {\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.end.column, range.end.column + 1);\n\n if (rightChar === ';') {\n range.end.column++;\n return range;\n }\n }\n }\n });\n this.add(\"semicolon\", \"insertion\", function (state, action, editor, session, text) {\n if (text === ';') {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n\n if (rightChar === ';') {\n return {\n text: '',\n selection: [1, 1]\n };\n }\n }\n });\n };\n\n oop.inherits(CssBehaviour, CstyleBehaviour);\n exports.CssBehaviour = CssBehaviour;\n});\nace.define(\"ace/mode/css\", [\"require\", \"exports\", \"module\", \"ace/lib/oop\", \"ace/mode/text\", \"ace/mode/css_highlight_rules\", \"ace/mode/matching_brace_outdent\", \"ace/worker/worker_client\", \"ace/mode/css_completions\", \"ace/mode/behaviour/css\", \"ace/mode/folding/cstyle\"], function (acequire, exports, module) {\n \"use strict\";\n\n var oop = acequire(\"../lib/oop\");\n var TextMode = acequire(\"./text\").Mode;\n var CssHighlightRules = acequire(\"./css_highlight_rules\").CssHighlightRules;\n var MatchingBraceOutdent = acequire(\"./matching_brace_outdent\").MatchingBraceOutdent;\n var WorkerClient = acequire(\"../worker/worker_client\").WorkerClient;\n var CssCompletions = acequire(\"./css_completions\").CssCompletions;\n var CssBehaviour = acequire(\"./behaviour/css\").CssBehaviour;\n var CStyleFoldMode = acequire(\"./folding/cstyle\").FoldMode;\n\n var Mode = function Mode() {\n this.HighlightRules = CssHighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CssBehaviour();\n this.$completer = new CssCompletions();\n this.foldingRules = new CStyleFoldMode();\n };\n\n oop.inherits(Mode, TextMode);\n (function () {\n this.foldingRules = \"cStyle\";\n this.blockComment = {\n start: \"/*\",\n end: \"*/\"\n };\n\n this.getNextLineIndent = function (state, line, tab) {\n var indent = this.$getIndent(line);\n var tokens = this.getTokenizer().getLineTokens(line, state).tokens;\n\n if (tokens.length && tokens[tokens.length - 1].type == \"comment\") {\n return indent;\n }\n\n var match = line.match(/^.*\\{\\s*$/);\n\n if (match) {\n indent += tab;\n }\n\n return indent;\n };\n\n this.checkOutdent = function (state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n\n this.autoOutdent = function (state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n\n this.getCompletions = function (state, session, pos, prefix) {\n return this.$completer.getCompletions(state, session, pos, prefix);\n };\n\n this.createWorker = function (session) {\n var worker = new WorkerClient([\"ace\"], require(\"../worker/css\"), \"Worker\");\n worker.attachToDocument(session.getDocument());\n worker.on(\"annotate\", function (e) {\n session.setAnnotations(e.data);\n });\n worker.on(\"terminate\", function () {\n session.clearAnnotations();\n });\n return worker;\n };\n\n this.$id = \"ace/mode/css\";\n }).call(Mode.prototype);\n exports.Mode = Mode;\n});\nace.define(\"ace/mode/xml_highlight_rules\", [\"require\", \"exports\", \"module\", \"ace/lib/oop\", \"ace/mode/text_highlight_rules\"], function (acequire, exports, module) {\n \"use strict\";\n\n var oop = acequire(\"../lib/oop\");\n var TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\n var XmlHighlightRules = function XmlHighlightRules(normalize) {\n var tagRegex = \"[_:a-zA-Z\\xC0-\\uFFFF][-_:.a-zA-Z0-9\\xC0-\\uFFFF]*\";\n this.$rules = {\n start: [{\n token: \"string.cdata.xml\",\n regex: \"<\\\\!\\\\[CDATA\\\\[\",\n next: \"cdata\"\n }, {\n token: [\"punctuation.instruction.xml\", \"keyword.instruction.xml\"],\n regex: \"(<\\\\?)(\" + tagRegex + \")\",\n next: \"processing_instruction\"\n }, {\n token: \"comment.start.xml\",\n regex: \"<\\\\!--\",\n next: \"comment\"\n }, {\n token: [\"xml-pe.doctype.xml\", \"xml-pe.doctype.xml\"],\n regex: \"(<\\\\!)(DOCTYPE)(?=[\\\\s])\",\n next: \"doctype\",\n caseInsensitive: true\n }, {\n include: \"tag\"\n }, {\n token: \"text.end-tag-open.xml\",\n regex: \"\",\n next: \"start\"\n }],\n doctype: [{\n include: \"whitespace\"\n }, {\n include: \"string\"\n }, {\n token: \"xml-pe.doctype.xml\",\n regex: \">\",\n next: \"start\"\n }, {\n token: \"xml-pe.xml\",\n regex: \"[-_a-zA-Z0-9:]+\"\n }, {\n token: \"punctuation.int-subset\",\n regex: \"\\\\[\",\n push: \"int_subset\"\n }],\n int_subset: [{\n token: \"text.xml\",\n regex: \"\\\\s+\"\n }, {\n token: \"punctuation.int-subset.xml\",\n regex: \"]\",\n next: \"pop\"\n }, {\n token: [\"punctuation.markup-decl.xml\", \"keyword.markup-decl.xml\"],\n regex: \"(<\\\\!)(\" + tagRegex + \")\",\n push: [{\n token: \"text\",\n regex: \"\\\\s+\"\n }, {\n token: \"punctuation.markup-decl.xml\",\n regex: \">\",\n next: \"pop\"\n }, {\n include: \"string\"\n }]\n }],\n cdata: [{\n token: \"string.cdata.xml\",\n regex: \"\\\\]\\\\]>\",\n next: \"start\"\n }, {\n token: \"text.xml\",\n regex: \"\\\\s+\"\n }, {\n token: \"text.xml\",\n regex: \"(?:[^\\\\]]|\\\\](?!\\\\]>))+\"\n }],\n comment: [{\n token: \"comment.end.xml\",\n regex: \"-->\",\n next: \"start\"\n }, {\n defaultToken: \"comment.xml\"\n }],\n reference: [{\n token: \"constant.language.escape.reference.xml\",\n regex: \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }],\n attr_reference: [{\n token: \"constant.language.escape.reference.attribute-value.xml\",\n regex: \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }],\n tag: [{\n token: [\"meta.tag.punctuation.tag-open.xml\", \"meta.tag.punctuation.end-tag-open.xml\", \"meta.tag.tag-name.xml\"],\n regex: \"(?:(<)|(\",\n next: \"start\"\n }]\n }],\n tag_whitespace: [{\n token: \"text.tag-whitespace.xml\",\n regex: \"\\\\s+\"\n }],\n whitespace: [{\n token: \"text.whitespace.xml\",\n regex: \"\\\\s+\"\n }],\n string: [{\n token: \"string.xml\",\n regex: \"'\",\n push: [{\n token: \"string.xml\",\n regex: \"'\",\n next: \"pop\"\n }, {\n defaultToken: \"string.xml\"\n }]\n }, {\n token: \"string.xml\",\n regex: '\"',\n push: [{\n token: \"string.xml\",\n regex: '\"',\n next: \"pop\"\n }, {\n defaultToken: \"string.xml\"\n }]\n }],\n attributes: [{\n token: \"entity.other.attribute-name.xml\",\n regex: tagRegex\n }, {\n token: \"keyword.operator.attribute-equals.xml\",\n regex: \"=\"\n }, {\n include: \"tag_whitespace\"\n }, {\n include: \"attribute_value\"\n }],\n attribute_value: [{\n token: \"string.attribute-value.xml\",\n regex: \"'\",\n push: [{\n token: \"string.attribute-value.xml\",\n regex: \"'\",\n next: \"pop\"\n }, {\n include: \"attr_reference\"\n }, {\n defaultToken: \"string.attribute-value.xml\"\n }]\n }, {\n token: \"string.attribute-value.xml\",\n regex: '\"',\n push: [{\n token: \"string.attribute-value.xml\",\n regex: '\"',\n next: \"pop\"\n }, {\n include: \"attr_reference\"\n }, {\n defaultToken: \"string.attribute-value.xml\"\n }]\n }]\n };\n if (this.constructor === XmlHighlightRules) this.normalizeRules();\n };\n\n (function () {\n this.embedTagRules = function (HighlightRules, prefix, tag) {\n this.$rules.tag.unshift({\n token: [\"meta.tag.punctuation.tag-open.xml\", \"meta.tag.\" + tag + \".tag-name.xml\"],\n regex: \"(<)(\" + tag + \"(?=\\\\s|>|$))\",\n next: [{\n include: \"attributes\"\n }, {\n token: \"meta.tag.punctuation.tag-close.xml\",\n regex: \"/?>\",\n next: prefix + \"start\"\n }]\n });\n this.$rules[tag + \"-end\"] = [{\n include: \"attributes\"\n }, {\n token: \"meta.tag.punctuation.tag-close.xml\",\n regex: \"/?>\",\n next: \"start\",\n onMatch: function onMatch(value, currentState, stack) {\n stack.splice(0);\n return this.token;\n }\n }];\n this.embedRules(HighlightRules, prefix, [{\n token: [\"meta.tag.punctuation.end-tag-open.xml\", \"meta.tag.\" + tag + \".tag-name.xml\"],\n regex: \"(|$))\",\n next: tag + \"-end\"\n }, {\n token: \"string.cdata.xml\",\n regex: \"<\\\\!\\\\[CDATA\\\\[\"\n }, {\n token: \"string.cdata.xml\",\n regex: \"\\\\]\\\\]>\"\n }]);\n };\n }).call(TextHighlightRules.prototype);\n oop.inherits(XmlHighlightRules, TextHighlightRules);\n exports.XmlHighlightRules = XmlHighlightRules;\n});\nace.define(\"ace/mode/html_highlight_rules\", [\"require\", \"exports\", \"module\", \"ace/lib/oop\", \"ace/lib/lang\", \"ace/mode/css_highlight_rules\", \"ace/mode/javascript_highlight_rules\", \"ace/mode/xml_highlight_rules\"], function (acequire, exports, module) {\n \"use strict\";\n\n var oop = acequire(\"../lib/oop\");\n var lang = acequire(\"../lib/lang\");\n var CssHighlightRules = acequire(\"./css_highlight_rules\").CssHighlightRules;\n var JavaScriptHighlightRules = acequire(\"./javascript_highlight_rules\").JavaScriptHighlightRules;\n var XmlHighlightRules = acequire(\"./xml_highlight_rules\").XmlHighlightRules;\n var tagMap = lang.createMap({\n a: 'anchor',\n button: 'form',\n form: 'form',\n img: 'image',\n input: 'form',\n label: 'form',\n option: 'form',\n script: 'script',\n select: 'form',\n textarea: 'form',\n style: 'style',\n table: 'table',\n tbody: 'table',\n td: 'table',\n tfoot: 'table',\n th: 'table',\n tr: 'table'\n });\n\n var HtmlHighlightRules = function HtmlHighlightRules() {\n XmlHighlightRules.call(this);\n this.addRules({\n attributes: [{\n include: \"tag_whitespace\"\n }, {\n token: \"entity.other.attribute-name.xml\",\n regex: \"[-_a-zA-Z0-9:.]+\"\n }, {\n token: \"keyword.operator.attribute-equals.xml\",\n regex: \"=\",\n push: [{\n include: \"tag_whitespace\"\n }, {\n token: \"string.unquoted.attribute-value.html\",\n regex: \"[^<>='\\\"`\\\\s]+\",\n next: \"pop\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"pop\"\n }]\n }, {\n include: \"attribute_value\"\n }],\n tag: [{\n token: function token(start, tag) {\n var group = tagMap[tag];\n return [\"meta.tag.punctuation.\" + (start == \"<\" ? \"\" : \"end-\") + \"tag-open.xml\", \"meta.tag\" + (group ? \".\" + group : \"\") + \".tag-name.xml\"];\n },\n regex: \"(\",\n next: \"start\"\n }]\n });\n this.embedTagRules(CssHighlightRules, \"css-\", \"style\");\n this.embedTagRules(new JavaScriptHighlightRules({\n jsx: false\n }).getRules(), \"js-\", \"script\");\n if (this.constructor === HtmlHighlightRules) this.normalizeRules();\n };\n\n oop.inherits(HtmlHighlightRules, XmlHighlightRules);\n exports.HtmlHighlightRules = HtmlHighlightRules;\n});\nace.define(\"ace/mode/behaviour/xml\", [\"require\", \"exports\", \"module\", \"ace/lib/oop\", \"ace/mode/behaviour\", \"ace/token_iterator\", \"ace/lib/lang\"], function (acequire, exports, module) {\n \"use strict\";\n\n var oop = acequire(\"../../lib/oop\");\n var Behaviour = acequire(\"../behaviour\").Behaviour;\n var TokenIterator = acequire(\"../../token_iterator\").TokenIterator;\n var lang = acequire(\"../../lib/lang\");\n\n function is(token, type) {\n return token.type.lastIndexOf(type + \".xml\") > -1;\n }\n\n var XmlBehaviour = function XmlBehaviour() {\n this.add(\"string_dquotes\", \"insertion\", function (state, action, editor, session, text) {\n if (text == '\"' || text == \"'\") {\n var quote = text;\n var selected = session.doc.getTextRange(editor.getSelectionRange());\n\n if (selected !== \"\" && selected !== \"'\" && selected != '\"' && editor.getWrapBehavioursEnabled()) {\n return {\n text: quote + selected + quote,\n selection: false\n };\n }\n\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n\n if (rightChar == quote && (is(token, \"attribute-value\") || is(token, \"string\"))) {\n return {\n text: \"\",\n selection: [1, 1]\n };\n }\n\n if (!token) token = iterator.stepBackward();\n if (!token) return;\n\n while (is(token, \"tag-whitespace\") || is(token, \"whitespace\")) {\n token = iterator.stepBackward();\n }\n\n var rightSpace = !rightChar || rightChar.match(/\\s/);\n\n if (is(token, \"attribute-equals\") && (rightSpace || rightChar == '>') || is(token, \"decl-attribute-equals\") && (rightSpace || rightChar == '?')) {\n return {\n text: quote + quote,\n selection: [1, 1]\n };\n }\n }\n });\n this.add(\"string_dquotes\", \"deletion\", function (state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n\n if (!range.isMultiLine() && (selected == '\"' || selected == \"'\")) {\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n\n if (rightChar == selected) {\n range.end.column++;\n return range;\n }\n }\n });\n this.add(\"autoclosing\", \"insertion\", function (state, action, editor, session, text) {\n if (text == '>') {\n var position = editor.getSelectionRange().start;\n var iterator = new TokenIterator(session, position.row, position.column);\n var token = iterator.getCurrentToken() || iterator.stepBackward();\n if (!token || !(is(token, \"tag-name\") || is(token, \"tag-whitespace\") || is(token, \"attribute-name\") || is(token, \"attribute-equals\") || is(token, \"attribute-value\"))) return;\n if (is(token, \"reference.attribute-value\")) return;\n\n if (is(token, \"attribute-value\")) {\n var firstChar = token.value.charAt(0);\n\n if (firstChar == '\"' || firstChar == \"'\") {\n var lastChar = token.value.charAt(token.value.length - 1);\n var tokenEnd = iterator.getCurrentTokenColumn() + token.value.length;\n if (tokenEnd > position.column || tokenEnd == position.column && firstChar != lastChar) return;\n }\n }\n\n while (!is(token, \"tag-name\")) {\n token = iterator.stepBackward();\n\n if (token.value == \"<\") {\n token = iterator.stepForward();\n break;\n }\n }\n\n var tokenRow = iterator.getCurrentTokenRow();\n var tokenColumn = iterator.getCurrentTokenColumn();\n if (is(iterator.stepBackward(), \"end-tag-open\")) return;\n var element = token.value;\n if (tokenRow == position.row) element = element.substring(0, position.column - tokenColumn);\n if (this.voidElements.hasOwnProperty(element.toLowerCase())) return;\n return {\n text: \">\" + \"\",\n selection: [1, 1]\n };\n }\n });\n this.add(\"autoindent\", \"insertion\", function (state, action, editor, session, text) {\n if (text == \"\\n\") {\n var cursor = editor.getCursorPosition();\n var line = session.getLine(cursor.row);\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n\n if (token && token.type.indexOf(\"tag-close\") !== -1) {\n if (token.value == \"/>\") return;\n\n while (token && token.type.indexOf(\"tag-name\") === -1) {\n token = iterator.stepBackward();\n }\n\n if (!token) {\n return;\n }\n\n var tag = token.value;\n var row = iterator.getCurrentTokenRow();\n token = iterator.stepBackward();\n\n if (!token || token.type.indexOf(\"end-tag\") !== -1) {\n return;\n }\n\n if (this.voidElements && !this.voidElements[tag]) {\n var nextToken = session.getTokenAt(cursor.row, cursor.column + 1);\n var line = session.getLine(row);\n var nextIndent = this.$getIndent(line);\n var indent = nextIndent + session.getTabString();\n\n if (nextToken && nextToken.value === \" -1;\n }\n\n (function () {\n this.getFoldWidget = function (session, foldStyle, row) {\n var tag = this._getFirstTagInLine(session, row);\n\n if (!tag) return this.getCommentFoldWidget(session, row);\n if (tag.closing || !tag.tagName && tag.selfClosing) return foldStyle == \"markbeginend\" ? \"end\" : \"\";\n if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase())) return \"\";\n if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column)) return \"\";\n return \"start\";\n };\n\n this.getCommentFoldWidget = function (session, row) {\n if (/comment/.test(session.getState(row)) && /';\n break;\n }\n }\n\n return tag;\n } else if (is(token, \"tag-close\")) {\n tag.selfClosing = token.value == '/>';\n return tag;\n }\n\n tag.start.column += token.value.length;\n }\n\n return null;\n };\n\n this._findEndTagInLine = function (session, row, tagName, startColumn) {\n var tokens = session.getTokens(row);\n var column = 0;\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n column += token.value.length;\n if (column < startColumn) continue;\n\n if (is(token, \"end-tag-open\")) {\n token = tokens[i + 1];\n if (token && token.value == tagName) return true;\n }\n }\n\n return false;\n };\n\n this._readTagForward = function (iterator) {\n var token = iterator.getCurrentToken();\n if (!token) return null;\n var tag = new Tag();\n\n do {\n if (is(token, \"tag-open\")) {\n tag.closing = is(token, \"end-tag-open\");\n tag.start.row = iterator.getCurrentTokenRow();\n tag.start.column = iterator.getCurrentTokenColumn();\n } else if (is(token, \"tag-name\")) {\n tag.tagName = token.value;\n } else if (is(token, \"tag-close\")) {\n tag.selfClosing = token.value == \"/>\";\n tag.end.row = iterator.getCurrentTokenRow();\n tag.end.column = iterator.getCurrentTokenColumn() + token.value.length;\n iterator.stepForward();\n return tag;\n }\n } while (token = iterator.stepForward());\n\n return null;\n };\n\n this._readTagBackward = function (iterator) {\n var token = iterator.getCurrentToken();\n if (!token) return null;\n var tag = new Tag();\n\n do {\n if (is(token, \"tag-open\")) {\n tag.closing = is(token, \"end-tag-open\");\n tag.start.row = iterator.getCurrentTokenRow();\n tag.start.column = iterator.getCurrentTokenColumn();\n iterator.stepBackward();\n return tag;\n } else if (is(token, \"tag-name\")) {\n tag.tagName = token.value;\n } else if (is(token, \"tag-close\")) {\n tag.selfClosing = token.value == \"/>\";\n tag.end.row = iterator.getCurrentTokenRow();\n tag.end.column = iterator.getCurrentTokenColumn() + token.value.length;\n }\n } while (token = iterator.stepBackward());\n\n return null;\n };\n\n this._pop = function (stack, tag) {\n while (stack.length) {\n var top = stack[stack.length - 1];\n\n if (!tag || top.tagName == tag.tagName) {\n return stack.pop();\n } else if (this.optionalEndTags.hasOwnProperty(top.tagName)) {\n stack.pop();\n continue;\n } else {\n return null;\n }\n }\n };\n\n this.getFoldWidgetRange = function (session, foldStyle, row) {\n var firstTag = this._getFirstTagInLine(session, row);\n\n if (!firstTag) {\n return this.getCommentFoldWidget(session, row) && session.getCommentFoldRange(row, session.getLine(row).length);\n }\n\n var isBackward = firstTag.closing || firstTag.selfClosing;\n var stack = [];\n var tag;\n\n if (!isBackward) {\n var iterator = new TokenIterator(session, row, firstTag.start.column);\n var start = {\n row: row,\n column: firstTag.start.column + firstTag.tagName.length + 2\n };\n if (firstTag.start.row == firstTag.end.row) start.column = firstTag.end.column;\n\n while (tag = this._readTagForward(iterator)) {\n if (tag.selfClosing) {\n if (!stack.length) {\n tag.start.column += tag.tagName.length + 2;\n tag.end.column -= 2;\n return Range.fromPoints(tag.start, tag.end);\n } else continue;\n }\n\n if (tag.closing) {\n this._pop(stack, tag);\n\n if (stack.length == 0) return Range.fromPoints(start, tag.start);\n } else {\n stack.push(tag);\n }\n }\n } else {\n var iterator = new TokenIterator(session, row, firstTag.end.column);\n var end = {\n row: row,\n column: firstTag.start.column\n };\n\n while (tag = this._readTagBackward(iterator)) {\n if (tag.selfClosing) {\n if (!stack.length) {\n tag.start.column += tag.tagName.length + 2;\n tag.end.column -= 2;\n return Range.fromPoints(tag.start, tag.end);\n } else continue;\n }\n\n if (!tag.closing) {\n this._pop(stack, tag);\n\n if (stack.length == 0) {\n tag.start.column += tag.tagName.length + 2;\n if (tag.start.row == tag.end.row && tag.start.column < tag.end.column) tag.start.column = tag.end.column;\n return Range.fromPoints(tag.start, end);\n }\n } else {\n stack.push(tag);\n }\n }\n }\n };\n }).call(FoldMode.prototype);\n});\nace.define(\"ace/mode/folding/html\", [\"require\", \"exports\", \"module\", \"ace/lib/oop\", \"ace/mode/folding/mixed\", \"ace/mode/folding/xml\", \"ace/mode/folding/cstyle\"], function (acequire, exports, module) {\n \"use strict\";\n\n var oop = acequire(\"../../lib/oop\");\n var MixedFoldMode = acequire(\"./mixed\").FoldMode;\n var XmlFoldMode = acequire(\"./xml\").FoldMode;\n var CStyleFoldMode = acequire(\"./cstyle\").FoldMode;\n\n var FoldMode = exports.FoldMode = function (voidElements, optionalTags) {\n MixedFoldMode.call(this, new XmlFoldMode(voidElements, optionalTags), {\n \"js-\": new CStyleFoldMode(),\n \"css-\": new CStyleFoldMode()\n });\n };\n\n oop.inherits(FoldMode, MixedFoldMode);\n});\nace.define(\"ace/mode/html_completions\", [\"require\", \"exports\", \"module\", \"ace/token_iterator\"], function (acequire, exports, module) {\n \"use strict\";\n\n var TokenIterator = acequire(\"../token_iterator\").TokenIterator;\n var commonAttributes = [\"accesskey\", \"class\", \"contenteditable\", \"contextmenu\", \"dir\", \"draggable\", \"dropzone\", \"hidden\", \"id\", \"inert\", \"itemid\", \"itemprop\", \"itemref\", \"itemscope\", \"itemtype\", \"lang\", \"spellcheck\", \"style\", \"tabindex\", \"title\", \"translate\"];\n var eventAttributes = [\"onabort\", \"onblur\", \"oncancel\", \"oncanplay\", \"oncanplaythrough\", \"onchange\", \"onclick\", \"onclose\", \"oncontextmenu\", \"oncuechange\", \"ondblclick\", \"ondrag\", \"ondragend\", \"ondragenter\", \"ondragleave\", \"ondragover\", \"ondragstart\", \"ondrop\", \"ondurationchange\", \"onemptied\", \"onended\", \"onerror\", \"onfocus\", \"oninput\", \"oninvalid\", \"onkeydown\", \"onkeypress\", \"onkeyup\", \"onload\", \"onloadeddata\", \"onloadedmetadata\", \"onloadstart\", \"onmousedown\", \"onmousemove\", \"onmouseout\", \"onmouseover\", \"onmouseup\", \"onmousewheel\", \"onpause\", \"onplay\", \"onplaying\", \"onprogress\", \"onratechange\", \"onreset\", \"onscroll\", \"onseeked\", \"onseeking\", \"onselect\", \"onshow\", \"onstalled\", \"onsubmit\", \"onsuspend\", \"ontimeupdate\", \"onvolumechange\", \"onwaiting\"];\n var globalAttributes = commonAttributes.concat(eventAttributes);\n var attributeMap = {\n \"html\": {\n \"manifest\": 1\n },\n \"head\": {},\n \"title\": {},\n \"base\": {\n \"href\": 1,\n \"target\": 1\n },\n \"link\": {\n \"href\": 1,\n \"hreflang\": 1,\n \"rel\": {\n \"stylesheet\": 1,\n \"icon\": 1\n },\n \"media\": {\n \"all\": 1,\n \"screen\": 1,\n \"print\": 1\n },\n \"type\": {\n \"text/css\": 1,\n \"image/png\": 1,\n \"image/jpeg\": 1,\n \"image/gif\": 1\n },\n \"sizes\": 1\n },\n \"meta\": {\n \"http-equiv\": {\n \"content-type\": 1\n },\n \"name\": {\n \"description\": 1,\n \"keywords\": 1\n },\n \"content\": {\n \"text/html; charset=UTF-8\": 1\n },\n \"charset\": 1\n },\n \"style\": {\n \"type\": 1,\n \"media\": {\n \"all\": 1,\n \"screen\": 1,\n \"print\": 1\n },\n \"scoped\": 1\n },\n \"script\": {\n \"charset\": 1,\n \"type\": {\n \"text/javascript\": 1\n },\n \"src\": 1,\n \"defer\": 1,\n \"async\": 1\n },\n \"noscript\": {\n \"href\": 1\n },\n \"body\": {\n \"onafterprint\": 1,\n \"onbeforeprint\": 1,\n \"onbeforeunload\": 1,\n \"onhashchange\": 1,\n \"onmessage\": 1,\n \"onoffline\": 1,\n \"onpopstate\": 1,\n \"onredo\": 1,\n \"onresize\": 1,\n \"onstorage\": 1,\n \"onundo\": 1,\n \"onunload\": 1\n },\n \"section\": {},\n \"nav\": {},\n \"article\": {\n \"pubdate\": 1\n },\n \"aside\": {},\n \"h1\": {},\n \"h2\": {},\n \"h3\": {},\n \"h4\": {},\n \"h5\": {},\n \"h6\": {},\n \"header\": {},\n \"footer\": {},\n \"address\": {},\n \"main\": {},\n \"p\": {},\n \"hr\": {},\n \"pre\": {},\n \"blockquote\": {\n \"cite\": 1\n },\n \"ol\": {\n \"start\": 1,\n \"reversed\": 1\n },\n \"ul\": {},\n \"li\": {\n \"value\": 1\n },\n \"dl\": {},\n \"dt\": {},\n \"dd\": {},\n \"figure\": {},\n \"figcaption\": {},\n \"div\": {},\n \"a\": {\n \"href\": 1,\n \"target\": {\n \"_blank\": 1,\n \"top\": 1\n },\n \"ping\": 1,\n \"rel\": {\n \"nofollow\": 1,\n \"alternate\": 1,\n \"author\": 1,\n \"bookmark\": 1,\n \"help\": 1,\n \"license\": 1,\n \"next\": 1,\n \"noreferrer\": 1,\n \"prefetch\": 1,\n \"prev\": 1,\n \"search\": 1,\n \"tag\": 1\n },\n \"media\": 1,\n \"hreflang\": 1,\n \"type\": 1\n },\n \"em\": {},\n \"strong\": {},\n \"small\": {},\n \"s\": {},\n \"cite\": {},\n \"q\": {\n \"cite\": 1\n },\n \"dfn\": {},\n \"abbr\": {},\n \"data\": {},\n \"time\": {\n \"datetime\": 1\n },\n \"code\": {},\n \"var\": {},\n \"samp\": {},\n \"kbd\": {},\n \"sub\": {},\n \"sup\": {},\n \"i\": {},\n \"b\": {},\n \"u\": {},\n \"mark\": {},\n \"ruby\": {},\n \"rt\": {},\n \"rp\": {},\n \"bdi\": {},\n \"bdo\": {},\n \"span\": {},\n \"br\": {},\n \"wbr\": {},\n \"ins\": {\n \"cite\": 1,\n \"datetime\": 1\n },\n \"del\": {\n \"cite\": 1,\n \"datetime\": 1\n },\n \"img\": {\n \"alt\": 1,\n \"src\": 1,\n \"height\": 1,\n \"width\": 1,\n \"usemap\": 1,\n \"ismap\": 1\n },\n \"iframe\": {\n \"name\": 1,\n \"src\": 1,\n \"height\": 1,\n \"width\": 1,\n \"sandbox\": {\n \"allow-same-origin\": 1,\n \"allow-top-navigation\": 1,\n \"allow-forms\": 1,\n \"allow-scripts\": 1\n },\n \"seamless\": {\n \"seamless\": 1\n }\n },\n \"embed\": {\n \"src\": 1,\n \"height\": 1,\n \"width\": 1,\n \"type\": 1\n },\n \"object\": {\n \"param\": 1,\n \"data\": 1,\n \"type\": 1,\n \"height\": 1,\n \"width\": 1,\n \"usemap\": 1,\n \"name\": 1,\n \"form\": 1,\n \"classid\": 1\n },\n \"param\": {\n \"name\": 1,\n \"value\": 1\n },\n \"video\": {\n \"src\": 1,\n \"autobuffer\": 1,\n \"autoplay\": {\n \"autoplay\": 1\n },\n \"loop\": {\n \"loop\": 1\n },\n \"controls\": {\n \"controls\": 1\n },\n \"width\": 1,\n \"height\": 1,\n \"poster\": 1,\n \"muted\": {\n \"muted\": 1\n },\n \"preload\": {\n \"auto\": 1,\n \"metadata\": 1,\n \"none\": 1\n }\n },\n \"audio\": {\n \"src\": 1,\n \"autobuffer\": 1,\n \"autoplay\": {\n \"autoplay\": 1\n },\n \"loop\": {\n \"loop\": 1\n },\n \"controls\": {\n \"controls\": 1\n },\n \"muted\": {\n \"muted\": 1\n },\n \"preload\": {\n \"auto\": 1,\n \"metadata\": 1,\n \"none\": 1\n }\n },\n \"source\": {\n \"src\": 1,\n \"type\": 1,\n \"media\": 1\n },\n \"track\": {\n \"kind\": 1,\n \"src\": 1,\n \"srclang\": 1,\n \"label\": 1,\n \"default\": 1\n },\n \"canvas\": {\n \"width\": 1,\n \"height\": 1\n },\n \"map\": {\n \"name\": 1\n },\n \"area\": {\n \"shape\": 1,\n \"coords\": 1,\n \"href\": 1,\n \"hreflang\": 1,\n \"alt\": 1,\n \"target\": 1,\n \"media\": 1,\n \"rel\": 1,\n \"ping\": 1,\n \"type\": 1\n },\n \"svg\": {},\n \"math\": {},\n \"table\": {\n \"summary\": 1\n },\n \"caption\": {},\n \"colgroup\": {\n \"span\": 1\n },\n \"col\": {\n \"span\": 1\n },\n \"tbody\": {},\n \"thead\": {},\n \"tfoot\": {},\n \"tr\": {},\n \"td\": {\n \"headers\": 1,\n \"rowspan\": 1,\n \"colspan\": 1\n },\n \"th\": {\n \"headers\": 1,\n \"rowspan\": 1,\n \"colspan\": 1,\n \"scope\": 1\n },\n \"form\": {\n \"accept-charset\": 1,\n \"action\": 1,\n \"autocomplete\": 1,\n \"enctype\": {\n \"multipart/form-data\": 1,\n \"application/x-www-form-urlencoded\": 1\n },\n \"method\": {\n \"get\": 1,\n \"post\": 1\n },\n \"name\": 1,\n \"novalidate\": 1,\n \"target\": {\n \"_blank\": 1,\n \"top\": 1\n }\n },\n \"fieldset\": {\n \"disabled\": 1,\n \"form\": 1,\n \"name\": 1\n },\n \"legend\": {},\n \"label\": {\n \"form\": 1,\n \"for\": 1\n },\n \"input\": {\n \"type\": {\n \"text\": 1,\n \"password\": 1,\n \"hidden\": 1,\n \"checkbox\": 1,\n \"submit\": 1,\n \"radio\": 1,\n \"file\": 1,\n \"button\": 1,\n \"reset\": 1,\n \"image\": 31,\n \"color\": 1,\n \"date\": 1,\n \"datetime\": 1,\n \"datetime-local\": 1,\n \"email\": 1,\n \"month\": 1,\n \"number\": 1,\n \"range\": 1,\n \"search\": 1,\n \"tel\": 1,\n \"time\": 1,\n \"url\": 1,\n \"week\": 1\n },\n \"accept\": 1,\n \"alt\": 1,\n \"autocomplete\": {\n \"on\": 1,\n \"off\": 1\n },\n \"autofocus\": {\n \"autofocus\": 1\n },\n \"checked\": {\n \"checked\": 1\n },\n \"disabled\": {\n \"disabled\": 1\n },\n \"form\": 1,\n \"formaction\": 1,\n \"formenctype\": {\n \"application/x-www-form-urlencoded\": 1,\n \"multipart/form-data\": 1,\n \"text/plain\": 1\n },\n \"formmethod\": {\n \"get\": 1,\n \"post\": 1\n },\n \"formnovalidate\": {\n \"formnovalidate\": 1\n },\n \"formtarget\": {\n \"_blank\": 1,\n \"_self\": 1,\n \"_parent\": 1,\n \"_top\": 1\n },\n \"height\": 1,\n \"list\": 1,\n \"max\": 1,\n \"maxlength\": 1,\n \"min\": 1,\n \"multiple\": {\n \"multiple\": 1\n },\n \"name\": 1,\n \"pattern\": 1,\n \"placeholder\": 1,\n \"readonly\": {\n \"readonly\": 1\n },\n \"acequired\": {\n \"acequired\": 1\n },\n \"size\": 1,\n \"src\": 1,\n \"step\": 1,\n \"width\": 1,\n \"files\": 1,\n \"value\": 1\n },\n \"button\": {\n \"autofocus\": 1,\n \"disabled\": {\n \"disabled\": 1\n },\n \"form\": 1,\n \"formaction\": 1,\n \"formenctype\": 1,\n \"formmethod\": 1,\n \"formnovalidate\": 1,\n \"formtarget\": 1,\n \"name\": 1,\n \"value\": 1,\n \"type\": {\n \"button\": 1,\n \"submit\": 1\n }\n },\n \"select\": {\n \"autofocus\": 1,\n \"disabled\": 1,\n \"form\": 1,\n \"multiple\": {\n \"multiple\": 1\n },\n \"name\": 1,\n \"size\": 1,\n \"readonly\": {\n \"readonly\": 1\n }\n },\n \"datalist\": {},\n \"optgroup\": {\n \"disabled\": 1,\n \"label\": 1\n },\n \"option\": {\n \"disabled\": 1,\n \"selected\": 1,\n \"label\": 1,\n \"value\": 1\n },\n \"textarea\": {\n \"autofocus\": {\n \"autofocus\": 1\n },\n \"disabled\": {\n \"disabled\": 1\n },\n \"form\": 1,\n \"maxlength\": 1,\n \"name\": 1,\n \"placeholder\": 1,\n \"readonly\": {\n \"readonly\": 1\n },\n \"acequired\": {\n \"acequired\": 1\n },\n \"rows\": 1,\n \"cols\": 1,\n \"wrap\": {\n \"on\": 1,\n \"off\": 1,\n \"hard\": 1,\n \"soft\": 1\n }\n },\n \"keygen\": {\n \"autofocus\": 1,\n \"challenge\": {\n \"challenge\": 1\n },\n \"disabled\": {\n \"disabled\": 1\n },\n \"form\": 1,\n \"keytype\": {\n \"rsa\": 1,\n \"dsa\": 1,\n \"ec\": 1\n },\n \"name\": 1\n },\n \"output\": {\n \"for\": 1,\n \"form\": 1,\n \"name\": 1\n },\n \"progress\": {\n \"value\": 1,\n \"max\": 1\n },\n \"meter\": {\n \"value\": 1,\n \"min\": 1,\n \"max\": 1,\n \"low\": 1,\n \"high\": 1,\n \"optimum\": 1\n },\n \"details\": {\n \"open\": 1\n },\n \"summary\": {},\n \"command\": {\n \"type\": 1,\n \"label\": 1,\n \"icon\": 1,\n \"disabled\": 1,\n \"checked\": 1,\n \"radiogroup\": 1,\n \"command\": 1\n },\n \"menu\": {\n \"type\": 1,\n \"label\": 1\n },\n \"dialog\": {\n \"open\": 1\n }\n };\n var elements = Object.keys(attributeMap);\n\n function is(token, type) {\n return token.type.lastIndexOf(type + \".xml\") > -1;\n }\n\n function findTagName(session, pos) {\n var iterator = new TokenIterator(session, pos.row, pos.column);\n var token = iterator.getCurrentToken();\n\n while (token && !is(token, \"tag-name\")) {\n token = iterator.stepBackward();\n }\n\n if (token) return token.value;\n }\n\n function findAttributeName(session, pos) {\n var iterator = new TokenIterator(session, pos.row, pos.column);\n var token = iterator.getCurrentToken();\n\n while (token && !is(token, \"attribute-name\")) {\n token = iterator.stepBackward();\n }\n\n if (token) return token.value;\n }\n\n var HtmlCompletions = function HtmlCompletions() {};\n\n (function () {\n this.getCompletions = function (state, session, pos, prefix) {\n var token = session.getTokenAt(pos.row, pos.column);\n if (!token) return [];\n if (is(token, \"tag-name\") || is(token, \"tag-open\") || is(token, \"end-tag-open\")) return this.getTagCompletions(state, session, pos, prefix);\n if (is(token, \"tag-whitespace\") || is(token, \"attribute-name\")) return this.getAttributeCompletions(state, session, pos, prefix);\n if (is(token, \"attribute-value\")) return this.getAttributeValueCompletions(state, session, pos, prefix);\n var line = session.getLine(pos.row).substr(0, pos.column);\n if (/&[a-z]*$/i.test(line)) return this.getHTMLEntityCompletions(state, session, pos, prefix);\n return [];\n };\n\n this.getTagCompletions = function (state, session, pos, prefix) {\n return elements.map(function (element) {\n return {\n value: element,\n meta: \"tag\",\n score: Number.MAX_VALUE\n };\n });\n };\n\n this.getAttributeCompletions = function (state, session, pos, prefix) {\n var tagName = findTagName(session, pos);\n if (!tagName) return [];\n var attributes = globalAttributes;\n\n if (tagName in attributeMap) {\n attributes = attributes.concat(Object.keys(attributeMap[tagName]));\n }\n\n return attributes.map(function (attribute) {\n return {\n caption: attribute,\n snippet: attribute + '=\"$0\"',\n meta: \"attribute\",\n score: Number.MAX_VALUE\n };\n });\n };\n\n this.getAttributeValueCompletions = function (state, session, pos, prefix) {\n var tagName = findTagName(session, pos);\n var attributeName = findAttributeName(session, pos);\n if (!tagName) return [];\n var values = [];\n\n if (tagName in attributeMap && attributeName in attributeMap[tagName] && typeof attributeMap[tagName][attributeName] === \"object\") {\n values = Object.keys(attributeMap[tagName][attributeName]);\n }\n\n return values.map(function (value) {\n return {\n caption: value,\n snippet: value,\n meta: \"attribute value\",\n score: Number.MAX_VALUE\n };\n });\n };\n\n this.getHTMLEntityCompletions = function (state, session, pos, prefix) {\n var values = ['Aacute;', 'aacute;', 'Acirc;', 'acirc;', 'acute;', 'AElig;', 'aelig;', 'Agrave;', 'agrave;', 'alefsym;', 'Alpha;', 'alpha;', 'amp;', 'and;', 'ang;', 'Aring;', 'aring;', 'asymp;', 'Atilde;', 'atilde;', 'Auml;', 'auml;', 'bdquo;', 'Beta;', 'beta;', 'brvbar;', 'bull;', 'cap;', 'Ccedil;', 'ccedil;', 'cedil;', 'cent;', 'Chi;', 'chi;', 'circ;', 'clubs;', 'cong;', 'copy;', 'crarr;', 'cup;', 'curren;', 'Dagger;', 'dagger;', 'dArr;', 'darr;', 'deg;', 'Delta;', 'delta;', 'diams;', 'divide;', 'Eacute;', 'eacute;', 'Ecirc;', 'ecirc;', 'Egrave;', 'egrave;', 'empty;', 'emsp;', 'ensp;', 'Epsilon;', 'epsilon;', 'equiv;', 'Eta;', 'eta;', 'ETH;', 'eth;', 'Euml;', 'euml;', 'euro;', 'exist;', 'fnof;', 'forall;', 'frac12;', 'frac14;', 'frac34;', 'frasl;', 'Gamma;', 'gamma;', 'ge;', 'gt;', 'hArr;', 'harr;', 'hearts;', 'hellip;', 'Iacute;', 'iacute;', 'Icirc;', 'icirc;', 'iexcl;', 'Igrave;', 'igrave;', 'image;', 'infin;', 'int;', 'Iota;', 'iota;', 'iquest;', 'isin;', 'Iuml;', 'iuml;', 'Kappa;', 'kappa;', 'Lambda;', 'lambda;', 'lang;', 'laquo;', 'lArr;', 'larr;', 'lceil;', 'ldquo;', 'le;', 'lfloor;', 'lowast;', 'loz;', 'lrm;', 'lsaquo;', 'lsquo;', 'lt;', 'macr;', 'mdash;', 'micro;', 'middot;', 'minus;', 'Mu;', 'mu;', 'nabla;', 'nbsp;', 'ndash;', 'ne;', 'ni;', 'not;', 'notin;', 'nsub;', 'Ntilde;', 'ntilde;', 'Nu;', 'nu;', 'Oacute;', 'oacute;', 'Ocirc;', 'ocirc;', 'OElig;', 'oelig;', 'Ograve;', 'ograve;', 'oline;', 'Omega;', 'omega;', 'Omicron;', 'omicron;', 'oplus;', 'or;', 'ordf;', 'ordm;', 'Oslash;', 'oslash;', 'Otilde;', 'otilde;', 'otimes;', 'Ouml;', 'ouml;', 'para;', 'part;', 'permil;', 'perp;', 'Phi;', 'phi;', 'Pi;', 'pi;', 'piv;', 'plusmn;', 'pound;', 'Prime;', 'prime;', 'prod;', 'prop;', 'Psi;', 'psi;', 'quot;', 'radic;', 'rang;', 'raquo;', 'rArr;', 'rarr;', 'rceil;', 'rdquo;', 'real;', 'reg;', 'rfloor;', 'Rho;', 'rho;', 'rlm;', 'rsaquo;', 'rsquo;', 'sbquo;', 'Scaron;', 'scaron;', 'sdot;', 'sect;', 'shy;', 'Sigma;', 'sigma;', 'sigmaf;', 'sim;', 'spades;', 'sub;', 'sube;', 'sum;', 'sup;', 'sup1;', 'sup2;', 'sup3;', 'supe;', 'szlig;', 'Tau;', 'tau;', 'there4;', 'Theta;', 'theta;', 'thetasym;', 'thinsp;', 'THORN;', 'thorn;', 'tilde;', 'times;', 'trade;', 'Uacute;', 'uacute;', 'uArr;', 'uarr;', 'Ucirc;', 'ucirc;', 'Ugrave;', 'ugrave;', 'uml;', 'upsih;', 'Upsilon;', 'upsilon;', 'Uuml;', 'uuml;', 'weierp;', 'Xi;', 'xi;', 'Yacute;', 'yacute;', 'yen;', 'Yuml;', 'yuml;', 'Zeta;', 'zeta;', 'zwj;', 'zwnj;'];\n return values.map(function (value) {\n return {\n caption: value,\n snippet: value,\n meta: \"html entity\",\n score: Number.MAX_VALUE\n };\n });\n };\n }).call(HtmlCompletions.prototype);\n exports.HtmlCompletions = HtmlCompletions;\n});\nace.define(\"ace/mode/html\", [\"require\", \"exports\", \"module\", \"ace/lib/oop\", \"ace/lib/lang\", \"ace/mode/text\", \"ace/mode/javascript\", \"ace/mode/css\", \"ace/mode/html_highlight_rules\", \"ace/mode/behaviour/xml\", \"ace/mode/folding/html\", \"ace/mode/html_completions\", \"ace/worker/worker_client\"], function (acequire, exports, module) {\n \"use strict\";\n\n var oop = acequire(\"../lib/oop\");\n var lang = acequire(\"../lib/lang\");\n var TextMode = acequire(\"./text\").Mode;\n var JavaScriptMode = acequire(\"./javascript\").Mode;\n var CssMode = acequire(\"./css\").Mode;\n var HtmlHighlightRules = acequire(\"./html_highlight_rules\").HtmlHighlightRules;\n var XmlBehaviour = acequire(\"./behaviour/xml\").XmlBehaviour;\n var HtmlFoldMode = acequire(\"./folding/html\").FoldMode;\n var HtmlCompletions = acequire(\"./html_completions\").HtmlCompletions;\n var WorkerClient = acequire(\"../worker/worker_client\").WorkerClient;\n var voidElements = [\"area\", \"base\", \"br\", \"col\", \"embed\", \"hr\", \"img\", \"input\", \"keygen\", \"link\", \"meta\", \"menuitem\", \"param\", \"source\", \"track\", \"wbr\"];\n var optionalEndTags = [\"li\", \"dt\", \"dd\", \"p\", \"rt\", \"rp\", \"optgroup\", \"option\", \"colgroup\", \"td\", \"th\"];\n\n var Mode = function Mode(options) {\n this.fragmentContext = options && options.fragmentContext;\n this.HighlightRules = HtmlHighlightRules;\n this.$behaviour = new XmlBehaviour();\n this.$completer = new HtmlCompletions();\n this.createModeDelegates({\n \"js-\": JavaScriptMode,\n \"css-\": CssMode\n });\n this.foldingRules = new HtmlFoldMode(this.voidElements, lang.arrayToMap(optionalEndTags));\n };\n\n oop.inherits(Mode, TextMode);\n (function () {\n this.blockComment = {\n start: \"\"\n };\n this.voidElements = lang.arrayToMap(voidElements);\n\n this.getNextLineIndent = function (state, line, tab) {\n return this.$getIndent(line);\n };\n\n this.checkOutdent = function (state, line, input) {\n return false;\n };\n\n this.getCompletions = function (state, session, pos, prefix) {\n return this.$completer.getCompletions(state, session, pos, prefix);\n };\n\n this.createWorker = function (session) {\n if (this.constructor != Mode) return;\n var worker = new WorkerClient([\"ace\"], require(\"../worker/html\"), \"Worker\");\n worker.attachToDocument(session.getDocument());\n if (this.fragmentContext) worker.call(\"setOptions\", [{\n context: this.fragmentContext\n }]);\n worker.on(\"error\", function (e) {\n session.setAnnotations(e.data);\n });\n worker.on(\"terminate\", function () {\n session.clearAnnotations();\n });\n return worker;\n };\n\n this.$id = \"ace/mode/html\";\n }).call(Mode.prototype);\n exports.Mode = Mode;\n});","ace.define(\"ace/mode/doc_comment_highlight_rules\", [\"require\", \"exports\", \"module\", \"ace/lib/oop\", \"ace/mode/text_highlight_rules\"], function (acequire, exports, module) {\n \"use strict\";\n\n var oop = acequire(\"../lib/oop\");\n var TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\n var DocCommentHighlightRules = function DocCommentHighlightRules() {\n this.$rules = {\n \"start\": [{\n token: \"comment.doc.tag\",\n regex: \"@[\\\\w\\\\d_]+\" // TODO: fix email addresses\n\n }, DocCommentHighlightRules.getTagRule(), {\n defaultToken: \"comment.doc\",\n caseInsensitive: true\n }]\n };\n };\n\n oop.inherits(DocCommentHighlightRules, TextHighlightRules);\n\n DocCommentHighlightRules.getTagRule = function (start) {\n return {\n token: \"comment.doc.tag.storage.type\",\n regex: \"\\\\b(?:TODO|FIXME|XXX|HACK)\\\\b\"\n };\n };\n\n DocCommentHighlightRules.getStartRule = function (start) {\n return {\n token: \"comment.doc\",\n // doc comment\n regex: \"\\\\/\\\\*(?=\\\\*)\",\n next: start\n };\n };\n\n DocCommentHighlightRules.getEndRule = function (start) {\n return {\n token: \"comment.doc\",\n // closing comment\n regex: \"\\\\*\\\\/\",\n next: start\n };\n };\n\n exports.DocCommentHighlightRules = DocCommentHighlightRules;\n});\nace.define(\"ace/mode/javascript_highlight_rules\", [\"require\", \"exports\", \"module\", \"ace/lib/oop\", \"ace/mode/doc_comment_highlight_rules\", \"ace/mode/text_highlight_rules\"], function (acequire, exports, module) {\n \"use strict\";\n\n var oop = acequire(\"../lib/oop\");\n var DocCommentHighlightRules = acequire(\"./doc_comment_highlight_rules\").DocCommentHighlightRules;\n var TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n var identifierRe = \"[a-zA-Z\\\\$_\\xA1-\\uFFFF][a-zA-Z\\\\d\\\\$_\\xA1-\\uFFFF]*\";\n\n var JavaScriptHighlightRules = function JavaScriptHighlightRules(options) {\n var keywordMapper = this.createKeywordMapper({\n \"variable.language\": \"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|\" + // Constructors\n \"Namespace|QName|XML|XMLList|\" + // E4X\n \"ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|\" + \"Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|\" + \"Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|\" + // Errors\n \"SyntaxError|TypeError|URIError|\" + \"decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|\" + // Non-constructor functions\n \"isNaN|parseFloat|parseInt|\" + \"JSON|Math|\" + // Other\n \"this|arguments|prototype|window|document\",\n // Pseudo\n \"keyword\": \"const|yield|import|get|set|async|await|\" + \"break|case|catch|continue|default|delete|do|else|finally|for|function|\" + \"if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|\" + \"__parent__|__count__|escape|unescape|with|__proto__|\" + \"class|enum|extends|super|export|implements|private|public|interface|package|protected|static\",\n \"storage.type\": \"const|let|var|function\",\n \"constant.language\": \"null|Infinity|NaN|undefined\",\n \"support.function\": \"alert\",\n \"constant.language.boolean\": \"true|false\"\n }, \"identifier\");\n var kwBeforeRe = \"case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void\";\n var escapedRe = \"\\\\\\\\(?:x[0-9a-fA-F]{2}|\" + // hex\n \"u[0-9a-fA-F]{4}|\" + // unicode\n \"u{[0-9a-fA-F]{1,6}}|\" + // es6 unicode\n \"[0-2][0-7]{0,2}|\" + // oct\n \"3[0-7][0-7]?|\" + // oct\n \"[4-7][0-7]?|\" + //oct\n \".)\";\n this.$rules = {\n \"no_regex\": [DocCommentHighlightRules.getStartRule(\"doc-start\"), comments(\"no_regex\"), {\n token: \"string\",\n regex: \"'(?=.)\",\n next: \"qstring\"\n }, {\n token: \"string\",\n regex: '\"(?=.)',\n next: \"qqstring\"\n }, {\n token: \"constant.numeric\",\n // hexadecimal, octal and binary\n regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\\b/\n }, {\n token: \"constant.numeric\",\n // decimal integers and floats\n regex: /(?:\\d\\d*(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+\\b)?/\n }, {\n token: [\"storage.type\", \"punctuation.operator\", \"support.function\", \"punctuation.operator\", \"entity.name.function\", \"text\", \"keyword.operator\"],\n regex: \"(\" + identifierRe + \")(\\\\.)(prototype)(\\\\.)(\" + identifierRe + \")(\\\\s*)(=)\",\n next: \"function_arguments\"\n }, {\n token: [\"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\", \"keyword.operator\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"],\n regex: \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe + \")(\\\\s*)(=)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: [\"entity.name.function\", \"text\", \"keyword.operator\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"],\n regex: \"(\" + identifierRe + \")(\\\\s*)(=)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: [\"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\", \"keyword.operator\", \"text\", \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"],\n regex: \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe + \")(\\\\s*)(=)(\\\\s*)(function)(\\\\s+)(\\\\w+)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: [\"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"],\n regex: \"(function)(\\\\s+)(\" + identifierRe + \")(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: [\"entity.name.function\", \"text\", \"punctuation.operator\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"],\n regex: \"(\" + identifierRe + \")(\\\\s*)(:)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: [\"text\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"],\n regex: \"(:)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: \"keyword\",\n regex: \"from(?=\\\\s*('|\\\"))\"\n }, {\n token: \"keyword\",\n regex: \"(?:\" + kwBeforeRe + \")\\\\b\",\n next: \"start\"\n }, {\n token: [\"support.constant\"],\n regex: /that\\b/\n }, {\n token: [\"storage.type\", \"punctuation.operator\", \"support.function.firebug\"],\n regex: /(console)(\\.)(warn|info|log|error|time|trace|timeEnd|assert)\\b/\n }, {\n token: keywordMapper,\n regex: identifierRe\n }, {\n token: \"punctuation.operator\",\n regex: /[.](?![.])/,\n next: \"property\"\n }, {\n token: \"storage.type\",\n regex: /=>/\n }, {\n token: \"keyword.operator\",\n regex: /--|\\+\\+|\\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\\|\\||\\?:|[!$%&*+\\-~\\/^]=?/,\n next: \"start\"\n }, {\n token: \"punctuation.operator\",\n regex: /[?:,;.]/,\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: /[\\[({]/,\n next: \"start\"\n }, {\n token: \"paren.rparen\",\n regex: /[\\])}]/\n }, {\n token: \"comment\",\n regex: /^#!.*$/\n }],\n property: [{\n token: \"text\",\n regex: \"\\\\s+\"\n }, {\n token: [\"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\", \"keyword.operator\", \"text\", \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"],\n regex: \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe + \")(\\\\s*)(=)(\\\\s*)(function)(?:(\\\\s+)(\\\\w+))?(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: \"punctuation.operator\",\n regex: /[.](?![.])/\n }, {\n token: \"support.function\",\n regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\\b(?=\\()/\n }, {\n token: \"support.function.dom\",\n regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\\b(?=\\()/\n }, {\n token: \"support.constant\",\n regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\\b/\n }, {\n token: \"identifier\",\n regex: identifierRe\n }, {\n regex: \"\",\n token: \"empty\",\n next: \"no_regex\"\n }],\n \"start\": [DocCommentHighlightRules.getStartRule(\"doc-start\"), comments(\"start\"), {\n token: \"string.regexp\",\n regex: \"\\\\/\",\n next: \"regex\"\n }, {\n token: \"text\",\n regex: \"\\\\s+|^$\",\n next: \"start\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }],\n \"regex\": [{\n token: \"regexp.keyword.operator\",\n regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n }, {\n token: \"string.regexp\",\n regex: \"/[sxngimy]*\",\n next: \"no_regex\"\n }, {\n token: \"invalid\",\n regex: /\\{\\d+\\b,?\\d*\\}[+*]|[+*$^?][+*]|[$^][?]|\\?{3,}/\n }, {\n token: \"constant.language.escape\",\n regex: /\\(\\?[:=!]|\\)|\\{\\d+\\b,?\\d*\\}|[+*]\\?|[()$^+*?.]/\n }, {\n token: \"constant.language.delimiter\",\n regex: /\\|/\n }, {\n token: \"constant.language.escape\",\n regex: /\\[\\^?/,\n next: \"regex_character_class\"\n }, {\n token: \"empty\",\n regex: \"$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string.regexp\"\n }],\n \"regex_character_class\": [{\n token: \"regexp.charclass.keyword.operator\",\n regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n }, {\n token: \"constant.language.escape\",\n regex: \"]\",\n next: \"regex\"\n }, {\n token: \"constant.language.escape\",\n regex: \"-\"\n }, {\n token: \"empty\",\n regex: \"$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string.regexp.charachterclass\"\n }],\n \"function_arguments\": [{\n token: \"variable.parameter\",\n regex: identifierRe\n }, {\n token: \"punctuation.operator\",\n regex: \"[, ]+\"\n }, {\n token: \"punctuation.operator\",\n regex: \"$\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }],\n \"qqstring\": [{\n token: \"constant.language.escape\",\n regex: escapedRe\n }, {\n token: \"string\",\n regex: \"\\\\\\\\$\",\n consumeLineEnd: true\n }, {\n token: \"string\",\n regex: '\"|$',\n next: \"no_regex\"\n }, {\n defaultToken: \"string\"\n }],\n \"qstring\": [{\n token: \"constant.language.escape\",\n regex: escapedRe\n }, {\n token: \"string\",\n regex: \"\\\\\\\\$\",\n consumeLineEnd: true\n }, {\n token: \"string\",\n regex: \"'|$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string\"\n }]\n };\n\n if (!options || !options.noES6) {\n this.$rules.no_regex.unshift({\n regex: \"[{}]\",\n onMatch: function onMatch(val, state, stack) {\n this.next = val == \"{\" ? this.nextState : \"\";\n\n if (val == \"{\" && stack.length) {\n stack.unshift(\"start\", state);\n } else if (val == \"}\" && stack.length) {\n stack.shift();\n this.next = stack.shift();\n if (this.next.indexOf(\"string\") != -1 || this.next.indexOf(\"jsx\") != -1) return \"paren.quasi.end\";\n }\n\n return val == \"{\" ? \"paren.lparen\" : \"paren.rparen\";\n },\n nextState: \"start\"\n }, {\n token: \"string.quasi.start\",\n regex: /`/,\n push: [{\n token: \"constant.language.escape\",\n regex: escapedRe\n }, {\n token: \"paren.quasi.start\",\n regex: /\\${/,\n push: \"start\"\n }, {\n token: \"string.quasi.end\",\n regex: /`/,\n next: \"pop\"\n }, {\n defaultToken: \"string.quasi\"\n }]\n });\n if (!options || options.jsx != false) JSX.call(this);\n }\n\n this.embedRules(DocCommentHighlightRules, \"doc-\", [DocCommentHighlightRules.getEndRule(\"no_regex\")]);\n this.normalizeRules();\n };\n\n oop.inherits(JavaScriptHighlightRules, TextHighlightRules);\n\n function JSX() {\n var tagRegex = identifierRe.replace(\"\\\\d\", \"\\\\d\\\\-\");\n var jsxTag = {\n onMatch: function onMatch(val, state, stack) {\n var offset = val.charAt(1) == \"/\" ? 2 : 1;\n\n if (offset == 1) {\n if (state != this.nextState) stack.unshift(this.next, this.nextState, 0);else stack.unshift(this.next);\n stack[2]++;\n } else if (offset == 2) {\n if (state == this.nextState) {\n stack[1]--;\n\n if (!stack[1] || stack[1] < 0) {\n stack.shift();\n stack.shift();\n }\n }\n }\n\n return [{\n type: \"meta.tag.punctuation.\" + (offset == 1 ? \"\" : \"end-\") + \"tag-open.xml\",\n value: val.slice(0, offset)\n }, {\n type: \"meta.tag.tag-name.xml\",\n value: val.substr(offset)\n }];\n },\n regex: \"\",\n onMatch: function onMatch(value, currentState, stack) {\n if (currentState == stack[0]) stack.shift();\n\n if (value.length == 2) {\n if (stack[0] == this.nextState) stack[1]--;\n\n if (!stack[1] || stack[1] < 0) {\n stack.splice(0, 2);\n }\n }\n\n this.next = stack[0] || \"start\";\n return [{\n type: this.token,\n value: value\n }];\n },\n nextState: \"jsx\"\n }, jsxJsRule, comments(\"jsxAttributes\"), {\n token: \"entity.other.attribute-name.xml\",\n regex: tagRegex\n }, {\n token: \"keyword.operator.attribute-equals.xml\",\n regex: \"=\"\n }, {\n token: \"text.tag-whitespace.xml\",\n regex: \"\\\\s+\"\n }, {\n token: \"string.attribute-value.xml\",\n regex: \"'\",\n stateName: \"jsx_attr_q\",\n push: [{\n token: \"string.attribute-value.xml\",\n regex: \"'\",\n next: \"pop\"\n }, {\n include: \"reference\"\n }, {\n defaultToken: \"string.attribute-value.xml\"\n }]\n }, {\n token: \"string.attribute-value.xml\",\n regex: '\"',\n stateName: \"jsx_attr_qq\",\n push: [{\n token: \"string.attribute-value.xml\",\n regex: '\"',\n next: \"pop\"\n }, {\n include: \"reference\"\n }, {\n defaultToken: \"string.attribute-value.xml\"\n }]\n }, jsxTag];\n this.$rules.reference = [{\n token: \"constant.language.escape.reference.xml\",\n regex: \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }];\n }\n\n function comments(next) {\n return [{\n token: \"comment\",\n // multi line comment\n regex: /\\/\\*/,\n next: [DocCommentHighlightRules.getTagRule(), {\n token: \"comment\",\n regex: \"\\\\*\\\\/\",\n next: next || \"pop\"\n }, {\n defaultToken: \"comment\",\n caseInsensitive: true\n }]\n }, {\n token: \"comment\",\n regex: \"\\\\/\\\\/\",\n next: [DocCommentHighlightRules.getTagRule(), {\n token: \"comment\",\n regex: \"$|^\",\n next: next || \"pop\"\n }, {\n defaultToken: \"comment\",\n caseInsensitive: true\n }]\n }];\n }\n\n exports.JavaScriptHighlightRules = JavaScriptHighlightRules;\n});\nace.define(\"ace/mode/matching_brace_outdent\", [\"require\", \"exports\", \"module\", \"ace/range\"], function (acequire, exports, module) {\n \"use strict\";\n\n var Range = acequire(\"../range\").Range;\n\n var MatchingBraceOutdent = function MatchingBraceOutdent() {};\n\n (function () {\n this.checkOutdent = function (line, input) {\n if (!/^\\s+$/.test(line)) return false;\n return /^\\s*\\}/.test(input);\n };\n\n this.autoOutdent = function (doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n if (!match) return 0;\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({\n row: row,\n column: column\n });\n if (!openBracePos || openBracePos.row == row) return 0;\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column - 1), indent);\n };\n\n this.$getIndent = function (line) {\n return line.match(/^\\s*/)[0];\n };\n }).call(MatchingBraceOutdent.prototype);\n exports.MatchingBraceOutdent = MatchingBraceOutdent;\n});\nace.define(\"ace/mode/folding/cstyle\", [\"require\", \"exports\", \"module\", \"ace/lib/oop\", \"ace/range\", \"ace/mode/folding/fold_mode\"], function (acequire, exports, module) {\n \"use strict\";\n\n var oop = acequire(\"../../lib/oop\");\n var Range = acequire(\"../../range\").Range;\n var BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\n\n var FoldMode = exports.FoldMode = function (commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start));\n this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end));\n }\n };\n\n oop.inherits(FoldMode, BaseFoldMode);\n (function () {\n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe = /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n\n this.getFoldWidget = function (session, foldStyle, row) {\n var line = session.getLine(row);\n\n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return \"\";\n }\n\n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n\n if (!fw && this.startRegionRe.test(line)) return \"start\"; // lineCommentRegionStart\n\n return fw;\n };\n\n this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row);\n var match = line.match(this.foldingStartMarker);\n\n if (match) {\n var i = match.index;\n if (match[1]) return this.openingBracketBlock(session, match[1], row, i);\n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n\n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n } else if (foldStyle != \"all\") range = null;\n }\n\n return range;\n }\n\n if (foldStyle === \"markbegin\") return;\n var match = line.match(this.foldingStopMarker);\n\n if (match) {\n var i = match.index + match[0].length;\n if (match[1]) return this.closingBracketBlock(session, match[1], row, i);\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n\n this.getSectionRange = function (session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1) continue;\n if (startIndent > indent) break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n\n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n } else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n } else if (startIndent == indent) {\n break;\n }\n }\n\n endRow = row;\n }\n\n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n\n this.getCommentRegionBlock = function (session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m) continue;\n if (m[1]) depth--;else depth++;\n if (!depth) break;\n }\n\n var endRow = row;\n\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n }).call(FoldMode.prototype);\n});\nace.define(\"ace/mode/javascript\", [\"require\", \"exports\", \"module\", \"ace/lib/oop\", \"ace/mode/text\", \"ace/mode/javascript_highlight_rules\", \"ace/mode/matching_brace_outdent\", \"ace/worker/worker_client\", \"ace/mode/behaviour/cstyle\", \"ace/mode/folding/cstyle\"], function (acequire, exports, module) {\n \"use strict\";\n\n var oop = acequire(\"../lib/oop\");\n var TextMode = acequire(\"./text\").Mode;\n var JavaScriptHighlightRules = acequire(\"./javascript_highlight_rules\").JavaScriptHighlightRules;\n var MatchingBraceOutdent = acequire(\"./matching_brace_outdent\").MatchingBraceOutdent;\n var WorkerClient = acequire(\"../worker/worker_client\").WorkerClient;\n var CstyleBehaviour = acequire(\"./behaviour/cstyle\").CstyleBehaviour;\n var CStyleFoldMode = acequire(\"./folding/cstyle\").FoldMode;\n\n var Mode = function Mode() {\n this.HighlightRules = JavaScriptHighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CstyleBehaviour();\n this.foldingRules = new CStyleFoldMode();\n };\n\n oop.inherits(Mode, TextMode);\n (function () {\n this.lineCommentStart = \"//\";\n this.blockComment = {\n start: \"/*\",\n end: \"*/\"\n };\n this.$quotes = {\n '\"': '\"',\n \"'\": \"'\",\n \"`\": \"`\"\n };\n\n this.getNextLineIndent = function (state, line, tab) {\n var indent = this.$getIndent(line);\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n var endState = tokenizedLine.state;\n\n if (tokens.length && tokens[tokens.length - 1].type == \"comment\") {\n return indent;\n }\n\n if (state == \"start\" || state == \"no_regex\") {\n var match = line.match(/^.*(?:\\bcase\\b.*:|[\\{\\(\\[])\\s*$/);\n\n if (match) {\n indent += tab;\n }\n } else if (state == \"doc-start\") {\n if (endState == \"start\" || endState == \"no_regex\") {\n return \"\";\n }\n\n var match = line.match(/^\\s*(\\/?)\\*/);\n\n if (match) {\n if (match[1]) {\n indent += \" \";\n }\n\n indent += \"* \";\n }\n }\n\n return indent;\n };\n\n this.checkOutdent = function (state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n\n this.autoOutdent = function (state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n\n this.createWorker = function (session) {\n var worker = new WorkerClient([\"ace\"], require(\"../worker/javascript\"), \"JavaScriptWorker\");\n worker.attachToDocument(session.getDocument());\n worker.on(\"annotate\", function (results) {\n session.setAnnotations(results.data);\n });\n worker.on(\"terminate\", function () {\n session.clearAnnotations();\n });\n return worker;\n };\n\n this.$id = \"ace/mode/javascript\";\n }).call(Mode.prototype);\n exports.Mode = Mode;\n});\nace.define(\"ace/mode/java_highlight_rules\", [\"require\", \"exports\", \"module\", \"ace/lib/oop\", \"ace/mode/doc_comment_highlight_rules\", \"ace/mode/text_highlight_rules\"], function (acequire, exports, module) {\n \"use strict\";\n\n var oop = acequire(\"../lib/oop\");\n var DocCommentHighlightRules = acequire(\"./doc_comment_highlight_rules\").DocCommentHighlightRules;\n var TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\n var JavaHighlightRules = function JavaHighlightRules() {\n var keywords = \"abstract|continue|for|new|switch|\" + \"assert|default|goto|package|synchronized|\" + \"boolean|do|if|private|this|\" + \"break|double|implements|protected|throw|\" + \"byte|else|import|public|throws|\" + \"case|enum|instanceof|return|transient|\" + \"catch|extends|int|short|try|\" + \"char|final|interface|static|void|\" + \"class|finally|long|strictfp|volatile|\" + \"const|float|native|super|while\";\n var buildinConstants = \"null|Infinity|NaN|undefined\";\n var langClasses = \"AbstractMethodError|AssertionError|ClassCircularityError|\" + \"ClassFormatError|Deprecated|EnumConstantNotPresentException|\" + \"ExceptionInInitializerError|IllegalAccessError|\" + \"IllegalThreadStateException|InstantiationError|InternalError|\" + \"NegativeArraySizeException|NoSuchFieldError|Override|Process|\" + \"ProcessBuilder|SecurityManager|StringIndexOutOfBoundsException|\" + \"SuppressWarnings|TypeNotPresentException|UnknownError|\" + \"UnsatisfiedLinkError|UnsupportedClassVersionError|VerifyError|\" + \"InstantiationException|IndexOutOfBoundsException|\" + \"ArrayIndexOutOfBoundsException|CloneNotSupportedException|\" + \"NoSuchFieldException|IllegalArgumentException|NumberFormatException|\" + \"SecurityException|Void|InheritableThreadLocal|IllegalStateException|\" + \"InterruptedException|NoSuchMethodException|IllegalAccessException|\" + \"UnsupportedOperationException|Enum|StrictMath|Package|Compiler|\" + \"Readable|Runtime|StringBuilder|Math|IncompatibleClassChangeError|\" + \"NoSuchMethodError|ThreadLocal|RuntimePermission|ArithmeticException|\" + \"NullPointerException|Long|Integer|Short|Byte|Double|Number|Float|\" + \"Character|Boolean|StackTraceElement|Appendable|StringBuffer|\" + \"Iterable|ThreadGroup|Runnable|Thread|IllegalMonitorStateException|\" + \"StackOverflowError|OutOfMemoryError|VirtualMachineError|\" + \"ArrayStoreException|ClassCastException|LinkageError|\" + \"NoClassDefFoundError|ClassNotFoundException|RuntimeException|\" + \"Exception|ThreadDeath|Error|Throwable|System|ClassLoader|\" + \"Cloneable|Class|CharSequence|Comparable|String|Object\";\n var keywordMapper = this.createKeywordMapper({\n \"variable.language\": \"this\",\n \"keyword\": keywords,\n \"constant.language\": buildinConstants,\n \"support.function\": langClasses\n }, \"identifier\");\n this.$rules = {\n \"start\": [{\n token: \"comment\",\n regex: \"\\\\/\\\\/.*$\"\n }, DocCommentHighlightRules.getStartRule(\"doc-start\"), {\n token: \"comment\",\n // multi line comment\n regex: \"\\\\/\\\\*\",\n next: \"comment\"\n }, {\n token: \"string\",\n // single line\n regex: '[\"](?:(?:\\\\\\\\.)|(?:[^\"\\\\\\\\]))*?[\"]'\n }, {\n token: \"string\",\n // single line\n regex: \"['](?:(?:\\\\\\\\.)|(?:[^'\\\\\\\\]))*?[']\"\n }, {\n token: \"constant.numeric\",\n // hex\n regex: /0(?:[xX][0-9a-fA-F][0-9a-fA-F_]*|[bB][01][01_]*)[LlSsDdFfYy]?\\b/\n }, {\n token: \"constant.numeric\",\n // float\n regex: /[+-]?\\d[\\d_]*(?:(?:\\.[\\d_]*)?(?:[eE][+-]?[\\d_]+)?)?[LlSsDdFfYy]?\\b/\n }, {\n token: \"constant.language.boolean\",\n regex: \"(?:true|false)\\\\b\"\n }, {\n token: keywordMapper,\n regex: \"[a-zA-Z_$][a-zA-Z0-9_$]*\\\\b\"\n }, {\n token: \"keyword.operator\",\n regex: \"!|\\\\$|%|&|\\\\*|\\\\-\\\\-|\\\\-|\\\\+\\\\+|\\\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\\\|\\\\||\\\\?\\\\:|\\\\*=|%=|\\\\+=|\\\\-=|&=|\\\\^=|\\\\b(?:in|instanceof|new|delete|typeof|void)\"\n }, {\n token: \"lparen\",\n regex: \"[[({]\"\n }, {\n token: \"rparen\",\n regex: \"[\\\\])}]\"\n }, {\n token: \"text\",\n regex: \"\\\\s+\"\n }],\n \"comment\": [{\n token: \"comment\",\n // closing comment\n regex: \"\\\\*\\\\/\",\n next: \"start\"\n }, {\n defaultToken: \"comment\"\n }]\n };\n this.embedRules(DocCommentHighlightRules, \"doc-\", [DocCommentHighlightRules.getEndRule(\"start\")]);\n };\n\n oop.inherits(JavaHighlightRules, TextHighlightRules);\n exports.JavaHighlightRules = JavaHighlightRules;\n});\nace.define(\"ace/mode/java\", [\"require\", \"exports\", \"module\", \"ace/lib/oop\", \"ace/mode/javascript\", \"ace/mode/java_highlight_rules\"], function (acequire, exports, module) {\n \"use strict\";\n\n var oop = acequire(\"../lib/oop\");\n var JavaScriptMode = acequire(\"./javascript\").Mode;\n var JavaHighlightRules = acequire(\"./java_highlight_rules\").JavaHighlightRules;\n\n var Mode = function Mode() {\n JavaScriptMode.call(this);\n this.HighlightRules = JavaHighlightRules;\n };\n\n oop.inherits(Mode, JavaScriptMode);\n (function () {\n this.createWorker = function (session) {\n return null;\n };\n\n this.$id = \"ace/mode/java\";\n }).call(Mode.prototype);\n exports.Mode = Mode;\n});","ace.define(\"ace/mode/doc_comment_highlight_rules\", [\"require\", \"exports\", \"module\", \"ace/lib/oop\", \"ace/mode/text_highlight_rules\"], function (acequire, exports, module) {\n \"use strict\";\n\n var oop = acequire(\"../lib/oop\");\n var TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\n var DocCommentHighlightRules = function DocCommentHighlightRules() {\n this.$rules = {\n \"start\": [{\n token: \"comment.doc.tag\",\n regex: \"@[\\\\w\\\\d_]+\" // TODO: fix email addresses\n\n }, DocCommentHighlightRules.getTagRule(), {\n defaultToken: \"comment.doc\",\n caseInsensitive: true\n }]\n };\n };\n\n oop.inherits(DocCommentHighlightRules, TextHighlightRules);\n\n DocCommentHighlightRules.getTagRule = function (start) {\n return {\n token: \"comment.doc.tag.storage.type\",\n regex: \"\\\\b(?:TODO|FIXME|XXX|HACK)\\\\b\"\n };\n };\n\n DocCommentHighlightRules.getStartRule = function (start) {\n return {\n token: \"comment.doc\",\n // doc comment\n regex: \"\\\\/\\\\*(?=\\\\*)\",\n next: start\n };\n };\n\n DocCommentHighlightRules.getEndRule = function (start) {\n return {\n token: \"comment.doc\",\n // closing comment\n regex: \"\\\\*\\\\/\",\n next: start\n };\n };\n\n exports.DocCommentHighlightRules = DocCommentHighlightRules;\n});\nace.define(\"ace/mode/javascript_highlight_rules\", [\"require\", \"exports\", \"module\", \"ace/lib/oop\", \"ace/mode/doc_comment_highlight_rules\", \"ace/mode/text_highlight_rules\"], function (acequire, exports, module) {\n \"use strict\";\n\n var oop = acequire(\"../lib/oop\");\n var DocCommentHighlightRules = acequire(\"./doc_comment_highlight_rules\").DocCommentHighlightRules;\n var TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n var identifierRe = \"[a-zA-Z\\\\$_\\xA1-\\uFFFF][a-zA-Z\\\\d\\\\$_\\xA1-\\uFFFF]*\";\n\n var JavaScriptHighlightRules = function JavaScriptHighlightRules(options) {\n var keywordMapper = this.createKeywordMapper({\n \"variable.language\": \"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|\" + // Constructors\n \"Namespace|QName|XML|XMLList|\" + // E4X\n \"ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|\" + \"Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|\" + \"Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|\" + // Errors\n \"SyntaxError|TypeError|URIError|\" + \"decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|\" + // Non-constructor functions\n \"isNaN|parseFloat|parseInt|\" + \"JSON|Math|\" + // Other\n \"this|arguments|prototype|window|document\",\n // Pseudo\n \"keyword\": \"const|yield|import|get|set|async|await|\" + \"break|case|catch|continue|default|delete|do|else|finally|for|function|\" + \"if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|\" + \"__parent__|__count__|escape|unescape|with|__proto__|\" + \"class|enum|extends|super|export|implements|private|public|interface|package|protected|static\",\n \"storage.type\": \"const|let|var|function\",\n \"constant.language\": \"null|Infinity|NaN|undefined\",\n \"support.function\": \"alert\",\n \"constant.language.boolean\": \"true|false\"\n }, \"identifier\");\n var kwBeforeRe = \"case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void\";\n var escapedRe = \"\\\\\\\\(?:x[0-9a-fA-F]{2}|\" + // hex\n \"u[0-9a-fA-F]{4}|\" + // unicode\n \"u{[0-9a-fA-F]{1,6}}|\" + // es6 unicode\n \"[0-2][0-7]{0,2}|\" + // oct\n \"3[0-7][0-7]?|\" + // oct\n \"[4-7][0-7]?|\" + //oct\n \".)\";\n this.$rules = {\n \"no_regex\": [DocCommentHighlightRules.getStartRule(\"doc-start\"), comments(\"no_regex\"), {\n token: \"string\",\n regex: \"'(?=.)\",\n next: \"qstring\"\n }, {\n token: \"string\",\n regex: '\"(?=.)',\n next: \"qqstring\"\n }, {\n token: \"constant.numeric\",\n // hexadecimal, octal and binary\n regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\\b/\n }, {\n token: \"constant.numeric\",\n // decimal integers and floats\n regex: /(?:\\d\\d*(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+\\b)?/\n }, {\n token: [\"storage.type\", \"punctuation.operator\", \"support.function\", \"punctuation.operator\", \"entity.name.function\", \"text\", \"keyword.operator\"],\n regex: \"(\" + identifierRe + \")(\\\\.)(prototype)(\\\\.)(\" + identifierRe + \")(\\\\s*)(=)\",\n next: \"function_arguments\"\n }, {\n token: [\"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\", \"keyword.operator\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"],\n regex: \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe + \")(\\\\s*)(=)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: [\"entity.name.function\", \"text\", \"keyword.operator\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"],\n regex: \"(\" + identifierRe + \")(\\\\s*)(=)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: [\"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\", \"keyword.operator\", \"text\", \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"],\n regex: \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe + \")(\\\\s*)(=)(\\\\s*)(function)(\\\\s+)(\\\\w+)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: [\"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"],\n regex: \"(function)(\\\\s+)(\" + identifierRe + \")(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: [\"entity.name.function\", \"text\", \"punctuation.operator\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"],\n regex: \"(\" + identifierRe + \")(\\\\s*)(:)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: [\"text\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"],\n regex: \"(:)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: \"keyword\",\n regex: \"from(?=\\\\s*('|\\\"))\"\n }, {\n token: \"keyword\",\n regex: \"(?:\" + kwBeforeRe + \")\\\\b\",\n next: \"start\"\n }, {\n token: [\"support.constant\"],\n regex: /that\\b/\n }, {\n token: [\"storage.type\", \"punctuation.operator\", \"support.function.firebug\"],\n regex: /(console)(\\.)(warn|info|log|error|time|trace|timeEnd|assert)\\b/\n }, {\n token: keywordMapper,\n regex: identifierRe\n }, {\n token: \"punctuation.operator\",\n regex: /[.](?![.])/,\n next: \"property\"\n }, {\n token: \"storage.type\",\n regex: /=>/\n }, {\n token: \"keyword.operator\",\n regex: /--|\\+\\+|\\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\\|\\||\\?:|[!$%&*+\\-~\\/^]=?/,\n next: \"start\"\n }, {\n token: \"punctuation.operator\",\n regex: /[?:,;.]/,\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: /[\\[({]/,\n next: \"start\"\n }, {\n token: \"paren.rparen\",\n regex: /[\\])}]/\n }, {\n token: \"comment\",\n regex: /^#!.*$/\n }],\n property: [{\n token: \"text\",\n regex: \"\\\\s+\"\n }, {\n token: [\"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\", \"keyword.operator\", \"text\", \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"],\n regex: \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe + \")(\\\\s*)(=)(\\\\s*)(function)(?:(\\\\s+)(\\\\w+))?(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: \"punctuation.operator\",\n regex: /[.](?![.])/\n }, {\n token: \"support.function\",\n regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\\b(?=\\()/\n }, {\n token: \"support.function.dom\",\n regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\\b(?=\\()/\n }, {\n token: \"support.constant\",\n regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\\b/\n }, {\n token: \"identifier\",\n regex: identifierRe\n }, {\n regex: \"\",\n token: \"empty\",\n next: \"no_regex\"\n }],\n \"start\": [DocCommentHighlightRules.getStartRule(\"doc-start\"), comments(\"start\"), {\n token: \"string.regexp\",\n regex: \"\\\\/\",\n next: \"regex\"\n }, {\n token: \"text\",\n regex: \"\\\\s+|^$\",\n next: \"start\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }],\n \"regex\": [{\n token: \"regexp.keyword.operator\",\n regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n }, {\n token: \"string.regexp\",\n regex: \"/[sxngimy]*\",\n next: \"no_regex\"\n }, {\n token: \"invalid\",\n regex: /\\{\\d+\\b,?\\d*\\}[+*]|[+*$^?][+*]|[$^][?]|\\?{3,}/\n }, {\n token: \"constant.language.escape\",\n regex: /\\(\\?[:=!]|\\)|\\{\\d+\\b,?\\d*\\}|[+*]\\?|[()$^+*?.]/\n }, {\n token: \"constant.language.delimiter\",\n regex: /\\|/\n }, {\n token: \"constant.language.escape\",\n regex: /\\[\\^?/,\n next: \"regex_character_class\"\n }, {\n token: \"empty\",\n regex: \"$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string.regexp\"\n }],\n \"regex_character_class\": [{\n token: \"regexp.charclass.keyword.operator\",\n regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n }, {\n token: \"constant.language.escape\",\n regex: \"]\",\n next: \"regex\"\n }, {\n token: \"constant.language.escape\",\n regex: \"-\"\n }, {\n token: \"empty\",\n regex: \"$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string.regexp.charachterclass\"\n }],\n \"function_arguments\": [{\n token: \"variable.parameter\",\n regex: identifierRe\n }, {\n token: \"punctuation.operator\",\n regex: \"[, ]+\"\n }, {\n token: \"punctuation.operator\",\n regex: \"$\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }],\n \"qqstring\": [{\n token: \"constant.language.escape\",\n regex: escapedRe\n }, {\n token: \"string\",\n regex: \"\\\\\\\\$\",\n consumeLineEnd: true\n }, {\n token: \"string\",\n regex: '\"|$',\n next: \"no_regex\"\n }, {\n defaultToken: \"string\"\n }],\n \"qstring\": [{\n token: \"constant.language.escape\",\n regex: escapedRe\n }, {\n token: \"string\",\n regex: \"\\\\\\\\$\",\n consumeLineEnd: true\n }, {\n token: \"string\",\n regex: \"'|$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string\"\n }]\n };\n\n if (!options || !options.noES6) {\n this.$rules.no_regex.unshift({\n regex: \"[{}]\",\n onMatch: function onMatch(val, state, stack) {\n this.next = val == \"{\" ? this.nextState : \"\";\n\n if (val == \"{\" && stack.length) {\n stack.unshift(\"start\", state);\n } else if (val == \"}\" && stack.length) {\n stack.shift();\n this.next = stack.shift();\n if (this.next.indexOf(\"string\") != -1 || this.next.indexOf(\"jsx\") != -1) return \"paren.quasi.end\";\n }\n\n return val == \"{\" ? \"paren.lparen\" : \"paren.rparen\";\n },\n nextState: \"start\"\n }, {\n token: \"string.quasi.start\",\n regex: /`/,\n push: [{\n token: \"constant.language.escape\",\n regex: escapedRe\n }, {\n token: \"paren.quasi.start\",\n regex: /\\${/,\n push: \"start\"\n }, {\n token: \"string.quasi.end\",\n regex: /`/,\n next: \"pop\"\n }, {\n defaultToken: \"string.quasi\"\n }]\n });\n if (!options || options.jsx != false) JSX.call(this);\n }\n\n this.embedRules(DocCommentHighlightRules, \"doc-\", [DocCommentHighlightRules.getEndRule(\"no_regex\")]);\n this.normalizeRules();\n };\n\n oop.inherits(JavaScriptHighlightRules, TextHighlightRules);\n\n function JSX() {\n var tagRegex = identifierRe.replace(\"\\\\d\", \"\\\\d\\\\-\");\n var jsxTag = {\n onMatch: function onMatch(val, state, stack) {\n var offset = val.charAt(1) == \"/\" ? 2 : 1;\n\n if (offset == 1) {\n if (state != this.nextState) stack.unshift(this.next, this.nextState, 0);else stack.unshift(this.next);\n stack[2]++;\n } else if (offset == 2) {\n if (state == this.nextState) {\n stack[1]--;\n\n if (!stack[1] || stack[1] < 0) {\n stack.shift();\n stack.shift();\n }\n }\n }\n\n return [{\n type: \"meta.tag.punctuation.\" + (offset == 1 ? \"\" : \"end-\") + \"tag-open.xml\",\n value: val.slice(0, offset)\n }, {\n type: \"meta.tag.tag-name.xml\",\n value: val.substr(offset)\n }];\n },\n regex: \"\",\n onMatch: function onMatch(value, currentState, stack) {\n if (currentState == stack[0]) stack.shift();\n\n if (value.length == 2) {\n if (stack[0] == this.nextState) stack[1]--;\n\n if (!stack[1] || stack[1] < 0) {\n stack.splice(0, 2);\n }\n }\n\n this.next = stack[0] || \"start\";\n return [{\n type: this.token,\n value: value\n }];\n },\n nextState: \"jsx\"\n }, jsxJsRule, comments(\"jsxAttributes\"), {\n token: \"entity.other.attribute-name.xml\",\n regex: tagRegex\n }, {\n token: \"keyword.operator.attribute-equals.xml\",\n regex: \"=\"\n }, {\n token: \"text.tag-whitespace.xml\",\n regex: \"\\\\s+\"\n }, {\n token: \"string.attribute-value.xml\",\n regex: \"'\",\n stateName: \"jsx_attr_q\",\n push: [{\n token: \"string.attribute-value.xml\",\n regex: \"'\",\n next: \"pop\"\n }, {\n include: \"reference\"\n }, {\n defaultToken: \"string.attribute-value.xml\"\n }]\n }, {\n token: \"string.attribute-value.xml\",\n regex: '\"',\n stateName: \"jsx_attr_qq\",\n push: [{\n token: \"string.attribute-value.xml\",\n regex: '\"',\n next: \"pop\"\n }, {\n include: \"reference\"\n }, {\n defaultToken: \"string.attribute-value.xml\"\n }]\n }, jsxTag];\n this.$rules.reference = [{\n token: \"constant.language.escape.reference.xml\",\n regex: \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }];\n }\n\n function comments(next) {\n return [{\n token: \"comment\",\n // multi line comment\n regex: /\\/\\*/,\n next: [DocCommentHighlightRules.getTagRule(), {\n token: \"comment\",\n regex: \"\\\\*\\\\/\",\n next: next || \"pop\"\n }, {\n defaultToken: \"comment\",\n caseInsensitive: true\n }]\n }, {\n token: \"comment\",\n regex: \"\\\\/\\\\/\",\n next: [DocCommentHighlightRules.getTagRule(), {\n token: \"comment\",\n regex: \"$|^\",\n next: next || \"pop\"\n }, {\n defaultToken: \"comment\",\n caseInsensitive: true\n }]\n }];\n }\n\n exports.JavaScriptHighlightRules = JavaScriptHighlightRules;\n});\nace.define(\"ace/mode/matching_brace_outdent\", [\"require\", \"exports\", \"module\", \"ace/range\"], function (acequire, exports, module) {\n \"use strict\";\n\n var Range = acequire(\"../range\").Range;\n\n var MatchingBraceOutdent = function MatchingBraceOutdent() {};\n\n (function () {\n this.checkOutdent = function (line, input) {\n if (!/^\\s+$/.test(line)) return false;\n return /^\\s*\\}/.test(input);\n };\n\n this.autoOutdent = function (doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n if (!match) return 0;\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({\n row: row,\n column: column\n });\n if (!openBracePos || openBracePos.row == row) return 0;\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column - 1), indent);\n };\n\n this.$getIndent = function (line) {\n return line.match(/^\\s*/)[0];\n };\n }).call(MatchingBraceOutdent.prototype);\n exports.MatchingBraceOutdent = MatchingBraceOutdent;\n});\nace.define(\"ace/mode/folding/cstyle\", [\"require\", \"exports\", \"module\", \"ace/lib/oop\", \"ace/range\", \"ace/mode/folding/fold_mode\"], function (acequire, exports, module) {\n \"use strict\";\n\n var oop = acequire(\"../../lib/oop\");\n var Range = acequire(\"../../range\").Range;\n var BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\n\n var FoldMode = exports.FoldMode = function (commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start));\n this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end));\n }\n };\n\n oop.inherits(FoldMode, BaseFoldMode);\n (function () {\n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe = /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n\n this.getFoldWidget = function (session, foldStyle, row) {\n var line = session.getLine(row);\n\n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return \"\";\n }\n\n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n\n if (!fw && this.startRegionRe.test(line)) return \"start\"; // lineCommentRegionStart\n\n return fw;\n };\n\n this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row);\n var match = line.match(this.foldingStartMarker);\n\n if (match) {\n var i = match.index;\n if (match[1]) return this.openingBracketBlock(session, match[1], row, i);\n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n\n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n } else if (foldStyle != \"all\") range = null;\n }\n\n return range;\n }\n\n if (foldStyle === \"markbegin\") return;\n var match = line.match(this.foldingStopMarker);\n\n if (match) {\n var i = match.index + match[0].length;\n if (match[1]) return this.closingBracketBlock(session, match[1], row, i);\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n\n this.getSectionRange = function (session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1) continue;\n if (startIndent > indent) break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n\n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n } else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n } else if (startIndent == indent) {\n break;\n }\n }\n\n endRow = row;\n }\n\n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n\n this.getCommentRegionBlock = function (session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m) continue;\n if (m[1]) depth--;else depth++;\n if (!depth) break;\n }\n\n var endRow = row;\n\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n }).call(FoldMode.prototype);\n});\nace.define(\"ace/mode/javascript\", [\"require\", \"exports\", \"module\", \"ace/lib/oop\", \"ace/mode/text\", \"ace/mode/javascript_highlight_rules\", \"ace/mode/matching_brace_outdent\", \"ace/worker/worker_client\", \"ace/mode/behaviour/cstyle\", \"ace/mode/folding/cstyle\"], function (acequire, exports, module) {\n \"use strict\";\n\n var oop = acequire(\"../lib/oop\");\n var TextMode = acequire(\"./text\").Mode;\n var JavaScriptHighlightRules = acequire(\"./javascript_highlight_rules\").JavaScriptHighlightRules;\n var MatchingBraceOutdent = acequire(\"./matching_brace_outdent\").MatchingBraceOutdent;\n var WorkerClient = acequire(\"../worker/worker_client\").WorkerClient;\n var CstyleBehaviour = acequire(\"./behaviour/cstyle\").CstyleBehaviour;\n var CStyleFoldMode = acequire(\"./folding/cstyle\").FoldMode;\n\n var Mode = function Mode() {\n this.HighlightRules = JavaScriptHighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CstyleBehaviour();\n this.foldingRules = new CStyleFoldMode();\n };\n\n oop.inherits(Mode, TextMode);\n (function () {\n this.lineCommentStart = \"//\";\n this.blockComment = {\n start: \"/*\",\n end: \"*/\"\n };\n this.$quotes = {\n '\"': '\"',\n \"'\": \"'\",\n \"`\": \"`\"\n };\n\n this.getNextLineIndent = function (state, line, tab) {\n var indent = this.$getIndent(line);\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n var endState = tokenizedLine.state;\n\n if (tokens.length && tokens[tokens.length - 1].type == \"comment\") {\n return indent;\n }\n\n if (state == \"start\" || state == \"no_regex\") {\n var match = line.match(/^.*(?:\\bcase\\b.*:|[\\{\\(\\[])\\s*$/);\n\n if (match) {\n indent += tab;\n }\n } else if (state == \"doc-start\") {\n if (endState == \"start\" || endState == \"no_regex\") {\n return \"\";\n }\n\n var match = line.match(/^\\s*(\\/?)\\*/);\n\n if (match) {\n if (match[1]) {\n indent += \" \";\n }\n\n indent += \"* \";\n }\n }\n\n return indent;\n };\n\n this.checkOutdent = function (state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n\n this.autoOutdent = function (state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n\n this.createWorker = function (session) {\n var worker = new WorkerClient([\"ace\"], require(\"../worker/javascript\"), \"JavaScriptWorker\");\n worker.attachToDocument(session.getDocument());\n worker.on(\"annotate\", function (results) {\n session.setAnnotations(results.data);\n });\n worker.on(\"terminate\", function () {\n session.clearAnnotations();\n });\n return worker;\n };\n\n this.$id = \"ace/mode/javascript\";\n }).call(Mode.prototype);\n exports.Mode = Mode;\n});","ace.define(\"ace/mode/json_highlight_rules\", [\"require\", \"exports\", \"module\", \"ace/lib/oop\", \"ace/mode/text_highlight_rules\"], function (acequire, exports, module) {\n \"use strict\";\n\n var oop = acequire(\"../lib/oop\");\n var TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\n var JsonHighlightRules = function JsonHighlightRules() {\n this.$rules = {\n \"start\": [{\n token: \"variable\",\n // single line\n regex: '[\"](?:(?:\\\\\\\\.)|(?:[^\"\\\\\\\\]))*?[\"]\\\\s*(?=:)'\n }, {\n token: \"string\",\n // single line\n regex: '\"',\n next: \"string\"\n }, {\n token: \"constant.numeric\",\n // hex\n regex: \"0[xX][0-9a-fA-F]+\\\\b\"\n }, {\n token: \"constant.numeric\",\n // float\n regex: \"[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?\\\\b\"\n }, {\n token: \"constant.language.boolean\",\n regex: \"(?:true|false)\\\\b\"\n }, {\n token: \"text\",\n // single quoted strings are not allowed\n regex: \"['](?:(?:\\\\\\\\.)|(?:[^'\\\\\\\\]))*?[']\"\n }, {\n token: \"comment\",\n // comments are not allowed, but who cares?\n regex: \"\\\\/\\\\/.*$\"\n }, {\n token: \"comment.start\",\n // comments are not allowed, but who cares?\n regex: \"\\\\/\\\\*\",\n next: \"comment\"\n }, {\n token: \"paren.lparen\",\n regex: \"[[({]\"\n }, {\n token: \"paren.rparen\",\n regex: \"[\\\\])}]\"\n }, {\n token: \"text\",\n regex: \"\\\\s+\"\n }],\n \"string\": [{\n token: \"constant.language.escape\",\n regex: /\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[\"\\\\\\/bfnrt])/\n }, {\n token: \"string\",\n regex: '\"|$',\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }],\n \"comment\": [{\n token: \"comment.end\",\n // comments are not allowed, but who cares?\n regex: \"\\\\*\\\\/\",\n next: \"start\"\n }, {\n defaultToken: \"comment\"\n }]\n };\n };\n\n oop.inherits(JsonHighlightRules, TextHighlightRules);\n exports.JsonHighlightRules = JsonHighlightRules;\n});\nace.define(\"ace/mode/matching_brace_outdent\", [\"require\", \"exports\", \"module\", \"ace/range\"], function (acequire, exports, module) {\n \"use strict\";\n\n var Range = acequire(\"../range\").Range;\n\n var MatchingBraceOutdent = function MatchingBraceOutdent() {};\n\n (function () {\n this.checkOutdent = function (line, input) {\n if (!/^\\s+$/.test(line)) return false;\n return /^\\s*\\}/.test(input);\n };\n\n this.autoOutdent = function (doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n if (!match) return 0;\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({\n row: row,\n column: column\n });\n if (!openBracePos || openBracePos.row == row) return 0;\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column - 1), indent);\n };\n\n this.$getIndent = function (line) {\n return line.match(/^\\s*/)[0];\n };\n }).call(MatchingBraceOutdent.prototype);\n exports.MatchingBraceOutdent = MatchingBraceOutdent;\n});\nace.define(\"ace/mode/folding/cstyle\", [\"require\", \"exports\", \"module\", \"ace/lib/oop\", \"ace/range\", \"ace/mode/folding/fold_mode\"], function (acequire, exports, module) {\n \"use strict\";\n\n var oop = acequire(\"../../lib/oop\");\n var Range = acequire(\"../../range\").Range;\n var BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\n\n var FoldMode = exports.FoldMode = function (commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start));\n this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end));\n }\n };\n\n oop.inherits(FoldMode, BaseFoldMode);\n (function () {\n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe = /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n\n this.getFoldWidget = function (session, foldStyle, row) {\n var line = session.getLine(row);\n\n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return \"\";\n }\n\n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n\n if (!fw && this.startRegionRe.test(line)) return \"start\"; // lineCommentRegionStart\n\n return fw;\n };\n\n this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row);\n var match = line.match(this.foldingStartMarker);\n\n if (match) {\n var i = match.index;\n if (match[1]) return this.openingBracketBlock(session, match[1], row, i);\n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n\n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n } else if (foldStyle != \"all\") range = null;\n }\n\n return range;\n }\n\n if (foldStyle === \"markbegin\") return;\n var match = line.match(this.foldingStopMarker);\n\n if (match) {\n var i = match.index + match[0].length;\n if (match[1]) return this.closingBracketBlock(session, match[1], row, i);\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n\n this.getSectionRange = function (session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1) continue;\n if (startIndent > indent) break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n\n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n } else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n } else if (startIndent == indent) {\n break;\n }\n }\n\n endRow = row;\n }\n\n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n\n this.getCommentRegionBlock = function (session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m) continue;\n if (m[1]) depth--;else depth++;\n if (!depth) break;\n }\n\n var endRow = row;\n\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n }).call(FoldMode.prototype);\n});\nace.define(\"ace/mode/json\", [\"require\", \"exports\", \"module\", \"ace/lib/oop\", \"ace/mode/text\", \"ace/mode/json_highlight_rules\", \"ace/mode/matching_brace_outdent\", \"ace/mode/behaviour/cstyle\", \"ace/mode/folding/cstyle\", \"ace/worker/worker_client\"], function (acequire, exports, module) {\n \"use strict\";\n\n var oop = acequire(\"../lib/oop\");\n var TextMode = acequire(\"./text\").Mode;\n var HighlightRules = acequire(\"./json_highlight_rules\").JsonHighlightRules;\n var MatchingBraceOutdent = acequire(\"./matching_brace_outdent\").MatchingBraceOutdent;\n var CstyleBehaviour = acequire(\"./behaviour/cstyle\").CstyleBehaviour;\n var CStyleFoldMode = acequire(\"./folding/cstyle\").FoldMode;\n var WorkerClient = acequire(\"../worker/worker_client\").WorkerClient;\n\n var Mode = function Mode() {\n this.HighlightRules = HighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CstyleBehaviour();\n this.foldingRules = new CStyleFoldMode();\n };\n\n oop.inherits(Mode, TextMode);\n (function () {\n this.getNextLineIndent = function (state, line, tab) {\n var indent = this.$getIndent(line);\n\n if (state == \"start\") {\n var match = line.match(/^.*[\\{\\(\\[]\\s*$/);\n\n if (match) {\n indent += tab;\n }\n }\n\n return indent;\n };\n\n this.checkOutdent = function (state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n\n this.autoOutdent = function (state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n\n this.createWorker = function (session) {\n var worker = new WorkerClient([\"ace\"], require(\"../worker/json\"), \"JsonWorker\");\n worker.attachToDocument(session.getDocument());\n worker.on(\"annotate\", function (e) {\n session.setAnnotations(e.data);\n });\n worker.on(\"terminate\", function () {\n session.clearAnnotations();\n });\n return worker;\n };\n\n this.$id = \"ace/mode/json\";\n }).call(Mode.prototype);\n exports.Mode = Mode;\n});","ace.define(\"ace/mode/doc_comment_highlight_rules\", [\"require\", \"exports\", \"module\", \"ace/lib/oop\", \"ace/mode/text_highlight_rules\"], function (acequire, exports, module) {\n \"use strict\";\n\n var oop = acequire(\"../lib/oop\");\n var TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\n var DocCommentHighlightRules = function DocCommentHighlightRules() {\n this.$rules = {\n \"start\": [{\n token: \"comment.doc.tag\",\n regex: \"@[\\\\w\\\\d_]+\" // TODO: fix email addresses\n\n }, DocCommentHighlightRules.getTagRule(), {\n defaultToken: \"comment.doc\",\n caseInsensitive: true\n }]\n };\n };\n\n oop.inherits(DocCommentHighlightRules, TextHighlightRules);\n\n DocCommentHighlightRules.getTagRule = function (start) {\n return {\n token: \"comment.doc.tag.storage.type\",\n regex: \"\\\\b(?:TODO|FIXME|XXX|HACK)\\\\b\"\n };\n };\n\n DocCommentHighlightRules.getStartRule = function (start) {\n return {\n token: \"comment.doc\",\n // doc comment\n regex: \"\\\\/\\\\*(?=\\\\*)\",\n next: start\n };\n };\n\n DocCommentHighlightRules.getEndRule = function (start) {\n return {\n token: \"comment.doc\",\n // closing comment\n regex: \"\\\\*\\\\/\",\n next: start\n };\n };\n\n exports.DocCommentHighlightRules = DocCommentHighlightRules;\n});\nace.define(\"ace/mode/javascript_highlight_rules\", [\"require\", \"exports\", \"module\", \"ace/lib/oop\", \"ace/mode/doc_comment_highlight_rules\", \"ace/mode/text_highlight_rules\"], function (acequire, exports, module) {\n \"use strict\";\n\n var oop = acequire(\"../lib/oop\");\n var DocCommentHighlightRules = acequire(\"./doc_comment_highlight_rules\").DocCommentHighlightRules;\n var TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n var identifierRe = \"[a-zA-Z\\\\$_\\xA1-\\uFFFF][a-zA-Z\\\\d\\\\$_\\xA1-\\uFFFF]*\";\n\n var JavaScriptHighlightRules = function JavaScriptHighlightRules(options) {\n var keywordMapper = this.createKeywordMapper({\n \"variable.language\": \"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|\" + // Constructors\n \"Namespace|QName|XML|XMLList|\" + // E4X\n \"ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|\" + \"Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|\" + \"Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|\" + // Errors\n \"SyntaxError|TypeError|URIError|\" + \"decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|\" + // Non-constructor functions\n \"isNaN|parseFloat|parseInt|\" + \"JSON|Math|\" + // Other\n \"this|arguments|prototype|window|document\",\n // Pseudo\n \"keyword\": \"const|yield|import|get|set|async|await|\" + \"break|case|catch|continue|default|delete|do|else|finally|for|function|\" + \"if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|\" + \"__parent__|__count__|escape|unescape|with|__proto__|\" + \"class|enum|extends|super|export|implements|private|public|interface|package|protected|static\",\n \"storage.type\": \"const|let|var|function\",\n \"constant.language\": \"null|Infinity|NaN|undefined\",\n \"support.function\": \"alert\",\n \"constant.language.boolean\": \"true|false\"\n }, \"identifier\");\n var kwBeforeRe = \"case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void\";\n var escapedRe = \"\\\\\\\\(?:x[0-9a-fA-F]{2}|\" + // hex\n \"u[0-9a-fA-F]{4}|\" + // unicode\n \"u{[0-9a-fA-F]{1,6}}|\" + // es6 unicode\n \"[0-2][0-7]{0,2}|\" + // oct\n \"3[0-7][0-7]?|\" + // oct\n \"[4-7][0-7]?|\" + //oct\n \".)\";\n this.$rules = {\n \"no_regex\": [DocCommentHighlightRules.getStartRule(\"doc-start\"), comments(\"no_regex\"), {\n token: \"string\",\n regex: \"'(?=.)\",\n next: \"qstring\"\n }, {\n token: \"string\",\n regex: '\"(?=.)',\n next: \"qqstring\"\n }, {\n token: \"constant.numeric\",\n // hexadecimal, octal and binary\n regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\\b/\n }, {\n token: \"constant.numeric\",\n // decimal integers and floats\n regex: /(?:\\d\\d*(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+\\b)?/\n }, {\n token: [\"storage.type\", \"punctuation.operator\", \"support.function\", \"punctuation.operator\", \"entity.name.function\", \"text\", \"keyword.operator\"],\n regex: \"(\" + identifierRe + \")(\\\\.)(prototype)(\\\\.)(\" + identifierRe + \")(\\\\s*)(=)\",\n next: \"function_arguments\"\n }, {\n token: [\"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\", \"keyword.operator\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"],\n regex: \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe + \")(\\\\s*)(=)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: [\"entity.name.function\", \"text\", \"keyword.operator\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"],\n regex: \"(\" + identifierRe + \")(\\\\s*)(=)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: [\"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\", \"keyword.operator\", \"text\", \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"],\n regex: \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe + \")(\\\\s*)(=)(\\\\s*)(function)(\\\\s+)(\\\\w+)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: [\"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"],\n regex: \"(function)(\\\\s+)(\" + identifierRe + \")(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: [\"entity.name.function\", \"text\", \"punctuation.operator\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"],\n regex: \"(\" + identifierRe + \")(\\\\s*)(:)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: [\"text\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"],\n regex: \"(:)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: \"keyword\",\n regex: \"from(?=\\\\s*('|\\\"))\"\n }, {\n token: \"keyword\",\n regex: \"(?:\" + kwBeforeRe + \")\\\\b\",\n next: \"start\"\n }, {\n token: [\"support.constant\"],\n regex: /that\\b/\n }, {\n token: [\"storage.type\", \"punctuation.operator\", \"support.function.firebug\"],\n regex: /(console)(\\.)(warn|info|log|error|time|trace|timeEnd|assert)\\b/\n }, {\n token: keywordMapper,\n regex: identifierRe\n }, {\n token: \"punctuation.operator\",\n regex: /[.](?![.])/,\n next: \"property\"\n }, {\n token: \"storage.type\",\n regex: /=>/\n }, {\n token: \"keyword.operator\",\n regex: /--|\\+\\+|\\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\\|\\||\\?:|[!$%&*+\\-~\\/^]=?/,\n next: \"start\"\n }, {\n token: \"punctuation.operator\",\n regex: /[?:,;.]/,\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: /[\\[({]/,\n next: \"start\"\n }, {\n token: \"paren.rparen\",\n regex: /[\\])}]/\n }, {\n token: \"comment\",\n regex: /^#!.*$/\n }],\n property: [{\n token: \"text\",\n regex: \"\\\\s+\"\n }, {\n token: [\"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\", \"keyword.operator\", \"text\", \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"],\n regex: \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe + \")(\\\\s*)(=)(\\\\s*)(function)(?:(\\\\s+)(\\\\w+))?(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: \"punctuation.operator\",\n regex: /[.](?![.])/\n }, {\n token: \"support.function\",\n regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\\b(?=\\()/\n }, {\n token: \"support.function.dom\",\n regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\\b(?=\\()/\n }, {\n token: \"support.constant\",\n regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\\b/\n }, {\n token: \"identifier\",\n regex: identifierRe\n }, {\n regex: \"\",\n token: \"empty\",\n next: \"no_regex\"\n }],\n \"start\": [DocCommentHighlightRules.getStartRule(\"doc-start\"), comments(\"start\"), {\n token: \"string.regexp\",\n regex: \"\\\\/\",\n next: \"regex\"\n }, {\n token: \"text\",\n regex: \"\\\\s+|^$\",\n next: \"start\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }],\n \"regex\": [{\n token: \"regexp.keyword.operator\",\n regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n }, {\n token: \"string.regexp\",\n regex: \"/[sxngimy]*\",\n next: \"no_regex\"\n }, {\n token: \"invalid\",\n regex: /\\{\\d+\\b,?\\d*\\}[+*]|[+*$^?][+*]|[$^][?]|\\?{3,}/\n }, {\n token: \"constant.language.escape\",\n regex: /\\(\\?[:=!]|\\)|\\{\\d+\\b,?\\d*\\}|[+*]\\?|[()$^+*?.]/\n }, {\n token: \"constant.language.delimiter\",\n regex: /\\|/\n }, {\n token: \"constant.language.escape\",\n regex: /\\[\\^?/,\n next: \"regex_character_class\"\n }, {\n token: \"empty\",\n regex: \"$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string.regexp\"\n }],\n \"regex_character_class\": [{\n token: \"regexp.charclass.keyword.operator\",\n regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n }, {\n token: \"constant.language.escape\",\n regex: \"]\",\n next: \"regex\"\n }, {\n token: \"constant.language.escape\",\n regex: \"-\"\n }, {\n token: \"empty\",\n regex: \"$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string.regexp.charachterclass\"\n }],\n \"function_arguments\": [{\n token: \"variable.parameter\",\n regex: identifierRe\n }, {\n token: \"punctuation.operator\",\n regex: \"[, ]+\"\n }, {\n token: \"punctuation.operator\",\n regex: \"$\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }],\n \"qqstring\": [{\n token: \"constant.language.escape\",\n regex: escapedRe\n }, {\n token: \"string\",\n regex: \"\\\\\\\\$\",\n consumeLineEnd: true\n }, {\n token: \"string\",\n regex: '\"|$',\n next: \"no_regex\"\n }, {\n defaultToken: \"string\"\n }],\n \"qstring\": [{\n token: \"constant.language.escape\",\n regex: escapedRe\n }, {\n token: \"string\",\n regex: \"\\\\\\\\$\",\n consumeLineEnd: true\n }, {\n token: \"string\",\n regex: \"'|$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string\"\n }]\n };\n\n if (!options || !options.noES6) {\n this.$rules.no_regex.unshift({\n regex: \"[{}]\",\n onMatch: function onMatch(val, state, stack) {\n this.next = val == \"{\" ? this.nextState : \"\";\n\n if (val == \"{\" && stack.length) {\n stack.unshift(\"start\", state);\n } else if (val == \"}\" && stack.length) {\n stack.shift();\n this.next = stack.shift();\n if (this.next.indexOf(\"string\") != -1 || this.next.indexOf(\"jsx\") != -1) return \"paren.quasi.end\";\n }\n\n return val == \"{\" ? \"paren.lparen\" : \"paren.rparen\";\n },\n nextState: \"start\"\n }, {\n token: \"string.quasi.start\",\n regex: /`/,\n push: [{\n token: \"constant.language.escape\",\n regex: escapedRe\n }, {\n token: \"paren.quasi.start\",\n regex: /\\${/,\n push: \"start\"\n }, {\n token: \"string.quasi.end\",\n regex: /`/,\n next: \"pop\"\n }, {\n defaultToken: \"string.quasi\"\n }]\n });\n if (!options || options.jsx != false) JSX.call(this);\n }\n\n this.embedRules(DocCommentHighlightRules, \"doc-\", [DocCommentHighlightRules.getEndRule(\"no_regex\")]);\n this.normalizeRules();\n };\n\n oop.inherits(JavaScriptHighlightRules, TextHighlightRules);\n\n function JSX() {\n var tagRegex = identifierRe.replace(\"\\\\d\", \"\\\\d\\\\-\");\n var jsxTag = {\n onMatch: function onMatch(val, state, stack) {\n var offset = val.charAt(1) == \"/\" ? 2 : 1;\n\n if (offset == 1) {\n if (state != this.nextState) stack.unshift(this.next, this.nextState, 0);else stack.unshift(this.next);\n stack[2]++;\n } else if (offset == 2) {\n if (state == this.nextState) {\n stack[1]--;\n\n if (!stack[1] || stack[1] < 0) {\n stack.shift();\n stack.shift();\n }\n }\n }\n\n return [{\n type: \"meta.tag.punctuation.\" + (offset == 1 ? \"\" : \"end-\") + \"tag-open.xml\",\n value: val.slice(0, offset)\n }, {\n type: \"meta.tag.tag-name.xml\",\n value: val.substr(offset)\n }];\n },\n regex: \"\",\n onMatch: function onMatch(value, currentState, stack) {\n if (currentState == stack[0]) stack.shift();\n\n if (value.length == 2) {\n if (stack[0] == this.nextState) stack[1]--;\n\n if (!stack[1] || stack[1] < 0) {\n stack.splice(0, 2);\n }\n }\n\n this.next = stack[0] || \"start\";\n return [{\n type: this.token,\n value: value\n }];\n },\n nextState: \"jsx\"\n }, jsxJsRule, comments(\"jsxAttributes\"), {\n token: \"entity.other.attribute-name.xml\",\n regex: tagRegex\n }, {\n token: \"keyword.operator.attribute-equals.xml\",\n regex: \"=\"\n }, {\n token: \"text.tag-whitespace.xml\",\n regex: \"\\\\s+\"\n }, {\n token: \"string.attribute-value.xml\",\n regex: \"'\",\n stateName: \"jsx_attr_q\",\n push: [{\n token: \"string.attribute-value.xml\",\n regex: \"'\",\n next: \"pop\"\n }, {\n include: \"reference\"\n }, {\n defaultToken: \"string.attribute-value.xml\"\n }]\n }, {\n token: \"string.attribute-value.xml\",\n regex: '\"',\n stateName: \"jsx_attr_qq\",\n push: [{\n token: \"string.attribute-value.xml\",\n regex: '\"',\n next: \"pop\"\n }, {\n include: \"reference\"\n }, {\n defaultToken: \"string.attribute-value.xml\"\n }]\n }, jsxTag];\n this.$rules.reference = [{\n token: \"constant.language.escape.reference.xml\",\n regex: \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }];\n }\n\n function comments(next) {\n return [{\n token: \"comment\",\n // multi line comment\n regex: /\\/\\*/,\n next: [DocCommentHighlightRules.getTagRule(), {\n token: \"comment\",\n regex: \"\\\\*\\\\/\",\n next: next || \"pop\"\n }, {\n defaultToken: \"comment\",\n caseInsensitive: true\n }]\n }, {\n token: \"comment\",\n regex: \"\\\\/\\\\/\",\n next: [DocCommentHighlightRules.getTagRule(), {\n token: \"comment\",\n regex: \"$|^\",\n next: next || \"pop\"\n }, {\n defaultToken: \"comment\",\n caseInsensitive: true\n }]\n }];\n }\n\n exports.JavaScriptHighlightRules = JavaScriptHighlightRules;\n});\nace.define(\"ace/mode/matching_brace_outdent\", [\"require\", \"exports\", \"module\", \"ace/range\"], function (acequire, exports, module) {\n \"use strict\";\n\n var Range = acequire(\"../range\").Range;\n\n var MatchingBraceOutdent = function MatchingBraceOutdent() {};\n\n (function () {\n this.checkOutdent = function (line, input) {\n if (!/^\\s+$/.test(line)) return false;\n return /^\\s*\\}/.test(input);\n };\n\n this.autoOutdent = function (doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n if (!match) return 0;\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({\n row: row,\n column: column\n });\n if (!openBracePos || openBracePos.row == row) return 0;\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column - 1), indent);\n };\n\n this.$getIndent = function (line) {\n return line.match(/^\\s*/)[0];\n };\n }).call(MatchingBraceOutdent.prototype);\n exports.MatchingBraceOutdent = MatchingBraceOutdent;\n});\nace.define(\"ace/mode/folding/cstyle\", [\"require\", \"exports\", \"module\", \"ace/lib/oop\", \"ace/range\", \"ace/mode/folding/fold_mode\"], function (acequire, exports, module) {\n \"use strict\";\n\n var oop = acequire(\"../../lib/oop\");\n var Range = acequire(\"../../range\").Range;\n var BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\n\n var FoldMode = exports.FoldMode = function (commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start));\n this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end));\n }\n };\n\n oop.inherits(FoldMode, BaseFoldMode);\n (function () {\n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe = /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n\n this.getFoldWidget = function (session, foldStyle, row) {\n var line = session.getLine(row);\n\n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return \"\";\n }\n\n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n\n if (!fw && this.startRegionRe.test(line)) return \"start\"; // lineCommentRegionStart\n\n return fw;\n };\n\n this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row);\n var match = line.match(this.foldingStartMarker);\n\n if (match) {\n var i = match.index;\n if (match[1]) return this.openingBracketBlock(session, match[1], row, i);\n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n\n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n } else if (foldStyle != \"all\") range = null;\n }\n\n return range;\n }\n\n if (foldStyle === \"markbegin\") return;\n var match = line.match(this.foldingStopMarker);\n\n if (match) {\n var i = match.index + match[0].length;\n if (match[1]) return this.closingBracketBlock(session, match[1], row, i);\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n\n this.getSectionRange = function (session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1) continue;\n if (startIndent > indent) break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n\n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n } else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n } else if (startIndent == indent) {\n break;\n }\n }\n\n endRow = row;\n }\n\n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n\n this.getCommentRegionBlock = function (session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m) continue;\n if (m[1]) depth--;else depth++;\n if (!depth) break;\n }\n\n var endRow = row;\n\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n }).call(FoldMode.prototype);\n});\nace.define(\"ace/mode/javascript\", [\"require\", \"exports\", \"module\", \"ace/lib/oop\", \"ace/mode/text\", \"ace/mode/javascript_highlight_rules\", \"ace/mode/matching_brace_outdent\", \"ace/worker/worker_client\", \"ace/mode/behaviour/cstyle\", \"ace/mode/folding/cstyle\"], function (acequire, exports, module) {\n \"use strict\";\n\n var oop = acequire(\"../lib/oop\");\n var TextMode = acequire(\"./text\").Mode;\n var JavaScriptHighlightRules = acequire(\"./javascript_highlight_rules\").JavaScriptHighlightRules;\n var MatchingBraceOutdent = acequire(\"./matching_brace_outdent\").MatchingBraceOutdent;\n var WorkerClient = acequire(\"../worker/worker_client\").WorkerClient;\n var CstyleBehaviour = acequire(\"./behaviour/cstyle\").CstyleBehaviour;\n var CStyleFoldMode = acequire(\"./folding/cstyle\").FoldMode;\n\n var Mode = function Mode() {\n this.HighlightRules = JavaScriptHighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CstyleBehaviour();\n this.foldingRules = new CStyleFoldMode();\n };\n\n oop.inherits(Mode, TextMode);\n (function () {\n this.lineCommentStart = \"//\";\n this.blockComment = {\n start: \"/*\",\n end: \"*/\"\n };\n this.$quotes = {\n '\"': '\"',\n \"'\": \"'\",\n \"`\": \"`\"\n };\n\n this.getNextLineIndent = function (state, line, tab) {\n var indent = this.$getIndent(line);\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n var endState = tokenizedLine.state;\n\n if (tokens.length && tokens[tokens.length - 1].type == \"comment\") {\n return indent;\n }\n\n if (state == \"start\" || state == \"no_regex\") {\n var match = line.match(/^.*(?:\\bcase\\b.*:|[\\{\\(\\[])\\s*$/);\n\n if (match) {\n indent += tab;\n }\n } else if (state == \"doc-start\") {\n if (endState == \"start\" || endState == \"no_regex\") {\n return \"\";\n }\n\n var match = line.match(/^\\s*(\\/?)\\*/);\n\n if (match) {\n if (match[1]) {\n indent += \" \";\n }\n\n indent += \"* \";\n }\n }\n\n return indent;\n };\n\n this.checkOutdent = function (state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n\n this.autoOutdent = function (state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n\n this.createWorker = function (session) {\n var worker = new WorkerClient([\"ace\"], require(\"../worker/javascript\"), \"JavaScriptWorker\");\n worker.attachToDocument(session.getDocument());\n worker.on(\"annotate\", function (results) {\n session.setAnnotations(results.data);\n });\n worker.on(\"terminate\", function () {\n session.clearAnnotations();\n });\n return worker;\n };\n\n this.$id = \"ace/mode/javascript\";\n }).call(Mode.prototype);\n exports.Mode = Mode;\n});\nace.define(\"ace/mode/xml_highlight_rules\", [\"require\", \"exports\", \"module\", \"ace/lib/oop\", \"ace/mode/text_highlight_rules\"], function (acequire, exports, module) {\n \"use strict\";\n\n var oop = acequire(\"../lib/oop\");\n var TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\n var XmlHighlightRules = function XmlHighlightRules(normalize) {\n var tagRegex = \"[_:a-zA-Z\\xC0-\\uFFFF][-_:.a-zA-Z0-9\\xC0-\\uFFFF]*\";\n this.$rules = {\n start: [{\n token: \"string.cdata.xml\",\n regex: \"<\\\\!\\\\[CDATA\\\\[\",\n next: \"cdata\"\n }, {\n token: [\"punctuation.instruction.xml\", \"keyword.instruction.xml\"],\n regex: \"(<\\\\?)(\" + tagRegex + \")\",\n next: \"processing_instruction\"\n }, {\n token: \"comment.start.xml\",\n regex: \"<\\\\!--\",\n next: \"comment\"\n }, {\n token: [\"xml-pe.doctype.xml\", \"xml-pe.doctype.xml\"],\n regex: \"(<\\\\!)(DOCTYPE)(?=[\\\\s])\",\n next: \"doctype\",\n caseInsensitive: true\n }, {\n include: \"tag\"\n }, {\n token: \"text.end-tag-open.xml\",\n regex: \"\",\n next: \"start\"\n }],\n doctype: [{\n include: \"whitespace\"\n }, {\n include: \"string\"\n }, {\n token: \"xml-pe.doctype.xml\",\n regex: \">\",\n next: \"start\"\n }, {\n token: \"xml-pe.xml\",\n regex: \"[-_a-zA-Z0-9:]+\"\n }, {\n token: \"punctuation.int-subset\",\n regex: \"\\\\[\",\n push: \"int_subset\"\n }],\n int_subset: [{\n token: \"text.xml\",\n regex: \"\\\\s+\"\n }, {\n token: \"punctuation.int-subset.xml\",\n regex: \"]\",\n next: \"pop\"\n }, {\n token: [\"punctuation.markup-decl.xml\", \"keyword.markup-decl.xml\"],\n regex: \"(<\\\\!)(\" + tagRegex + \")\",\n push: [{\n token: \"text\",\n regex: \"\\\\s+\"\n }, {\n token: \"punctuation.markup-decl.xml\",\n regex: \">\",\n next: \"pop\"\n }, {\n include: \"string\"\n }]\n }],\n cdata: [{\n token: \"string.cdata.xml\",\n regex: \"\\\\]\\\\]>\",\n next: \"start\"\n }, {\n token: \"text.xml\",\n regex: \"\\\\s+\"\n }, {\n token: \"text.xml\",\n regex: \"(?:[^\\\\]]|\\\\](?!\\\\]>))+\"\n }],\n comment: [{\n token: \"comment.end.xml\",\n regex: \"-->\",\n next: \"start\"\n }, {\n defaultToken: \"comment.xml\"\n }],\n reference: [{\n token: \"constant.language.escape.reference.xml\",\n regex: \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }],\n attr_reference: [{\n token: \"constant.language.escape.reference.attribute-value.xml\",\n regex: \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }],\n tag: [{\n token: [\"meta.tag.punctuation.tag-open.xml\", \"meta.tag.punctuation.end-tag-open.xml\", \"meta.tag.tag-name.xml\"],\n regex: \"(?:(<)|(\",\n next: \"start\"\n }]\n }],\n tag_whitespace: [{\n token: \"text.tag-whitespace.xml\",\n regex: \"\\\\s+\"\n }],\n whitespace: [{\n token: \"text.whitespace.xml\",\n regex: \"\\\\s+\"\n }],\n string: [{\n token: \"string.xml\",\n regex: \"'\",\n push: [{\n token: \"string.xml\",\n regex: \"'\",\n next: \"pop\"\n }, {\n defaultToken: \"string.xml\"\n }]\n }, {\n token: \"string.xml\",\n regex: '\"',\n push: [{\n token: \"string.xml\",\n regex: '\"',\n next: \"pop\"\n }, {\n defaultToken: \"string.xml\"\n }]\n }],\n attributes: [{\n token: \"entity.other.attribute-name.xml\",\n regex: tagRegex\n }, {\n token: \"keyword.operator.attribute-equals.xml\",\n regex: \"=\"\n }, {\n include: \"tag_whitespace\"\n }, {\n include: \"attribute_value\"\n }],\n attribute_value: [{\n token: \"string.attribute-value.xml\",\n regex: \"'\",\n push: [{\n token: \"string.attribute-value.xml\",\n regex: \"'\",\n next: \"pop\"\n }, {\n include: \"attr_reference\"\n }, {\n defaultToken: \"string.attribute-value.xml\"\n }]\n }, {\n token: \"string.attribute-value.xml\",\n regex: '\"',\n push: [{\n token: \"string.attribute-value.xml\",\n regex: '\"',\n next: \"pop\"\n }, {\n include: \"attr_reference\"\n }, {\n defaultToken: \"string.attribute-value.xml\"\n }]\n }]\n };\n if (this.constructor === XmlHighlightRules) this.normalizeRules();\n };\n\n (function () {\n this.embedTagRules = function (HighlightRules, prefix, tag) {\n this.$rules.tag.unshift({\n token: [\"meta.tag.punctuation.tag-open.xml\", \"meta.tag.\" + tag + \".tag-name.xml\"],\n regex: \"(<)(\" + tag + \"(?=\\\\s|>|$))\",\n next: [{\n include: \"attributes\"\n }, {\n token: \"meta.tag.punctuation.tag-close.xml\",\n regex: \"/?>\",\n next: prefix + \"start\"\n }]\n });\n this.$rules[tag + \"-end\"] = [{\n include: \"attributes\"\n }, {\n token: \"meta.tag.punctuation.tag-close.xml\",\n regex: \"/?>\",\n next: \"start\",\n onMatch: function onMatch(value, currentState, stack) {\n stack.splice(0);\n return this.token;\n }\n }];\n this.embedRules(HighlightRules, prefix, [{\n token: [\"meta.tag.punctuation.end-tag-open.xml\", \"meta.tag.\" + tag + \".tag-name.xml\"],\n regex: \"(|$))\",\n next: tag + \"-end\"\n }, {\n token: \"string.cdata.xml\",\n regex: \"<\\\\!\\\\[CDATA\\\\[\"\n }, {\n token: \"string.cdata.xml\",\n regex: \"\\\\]\\\\]>\"\n }]);\n };\n }).call(TextHighlightRules.prototype);\n oop.inherits(XmlHighlightRules, TextHighlightRules);\n exports.XmlHighlightRules = XmlHighlightRules;\n});\nace.define(\"ace/mode/behaviour/xml\", [\"require\", \"exports\", \"module\", \"ace/lib/oop\", \"ace/mode/behaviour\", \"ace/token_iterator\", \"ace/lib/lang\"], function (acequire, exports, module) {\n \"use strict\";\n\n var oop = acequire(\"../../lib/oop\");\n var Behaviour = acequire(\"../behaviour\").Behaviour;\n var TokenIterator = acequire(\"../../token_iterator\").TokenIterator;\n var lang = acequire(\"../../lib/lang\");\n\n function is(token, type) {\n return token.type.lastIndexOf(type + \".xml\") > -1;\n }\n\n var XmlBehaviour = function XmlBehaviour() {\n this.add(\"string_dquotes\", \"insertion\", function (state, action, editor, session, text) {\n if (text == '\"' || text == \"'\") {\n var quote = text;\n var selected = session.doc.getTextRange(editor.getSelectionRange());\n\n if (selected !== \"\" && selected !== \"'\" && selected != '\"' && editor.getWrapBehavioursEnabled()) {\n return {\n text: quote + selected + quote,\n selection: false\n };\n }\n\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n\n if (rightChar == quote && (is(token, \"attribute-value\") || is(token, \"string\"))) {\n return {\n text: \"\",\n selection: [1, 1]\n };\n }\n\n if (!token) token = iterator.stepBackward();\n if (!token) return;\n\n while (is(token, \"tag-whitespace\") || is(token, \"whitespace\")) {\n token = iterator.stepBackward();\n }\n\n var rightSpace = !rightChar || rightChar.match(/\\s/);\n\n if (is(token, \"attribute-equals\") && (rightSpace || rightChar == '>') || is(token, \"decl-attribute-equals\") && (rightSpace || rightChar == '?')) {\n return {\n text: quote + quote,\n selection: [1, 1]\n };\n }\n }\n });\n this.add(\"string_dquotes\", \"deletion\", function (state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n\n if (!range.isMultiLine() && (selected == '\"' || selected == \"'\")) {\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n\n if (rightChar == selected) {\n range.end.column++;\n return range;\n }\n }\n });\n this.add(\"autoclosing\", \"insertion\", function (state, action, editor, session, text) {\n if (text == '>') {\n var position = editor.getSelectionRange().start;\n var iterator = new TokenIterator(session, position.row, position.column);\n var token = iterator.getCurrentToken() || iterator.stepBackward();\n if (!token || !(is(token, \"tag-name\") || is(token, \"tag-whitespace\") || is(token, \"attribute-name\") || is(token, \"attribute-equals\") || is(token, \"attribute-value\"))) return;\n if (is(token, \"reference.attribute-value\")) return;\n\n if (is(token, \"attribute-value\")) {\n var firstChar = token.value.charAt(0);\n\n if (firstChar == '\"' || firstChar == \"'\") {\n var lastChar = token.value.charAt(token.value.length - 1);\n var tokenEnd = iterator.getCurrentTokenColumn() + token.value.length;\n if (tokenEnd > position.column || tokenEnd == position.column && firstChar != lastChar) return;\n }\n }\n\n while (!is(token, \"tag-name\")) {\n token = iterator.stepBackward();\n\n if (token.value == \"<\") {\n token = iterator.stepForward();\n break;\n }\n }\n\n var tokenRow = iterator.getCurrentTokenRow();\n var tokenColumn = iterator.getCurrentTokenColumn();\n if (is(iterator.stepBackward(), \"end-tag-open\")) return;\n var element = token.value;\n if (tokenRow == position.row) element = element.substring(0, position.column - tokenColumn);\n if (this.voidElements.hasOwnProperty(element.toLowerCase())) return;\n return {\n text: \">\" + \"\",\n selection: [1, 1]\n };\n }\n });\n this.add(\"autoindent\", \"insertion\", function (state, action, editor, session, text) {\n if (text == \"\\n\") {\n var cursor = editor.getCursorPosition();\n var line = session.getLine(cursor.row);\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n\n if (token && token.type.indexOf(\"tag-close\") !== -1) {\n if (token.value == \"/>\") return;\n\n while (token && token.type.indexOf(\"tag-name\") === -1) {\n token = iterator.stepBackward();\n }\n\n if (!token) {\n return;\n }\n\n var tag = token.value;\n var row = iterator.getCurrentTokenRow();\n token = iterator.stepBackward();\n\n if (!token || token.type.indexOf(\"end-tag\") !== -1) {\n return;\n }\n\n if (this.voidElements && !this.voidElements[tag]) {\n var nextToken = session.getTokenAt(cursor.row, cursor.column + 1);\n var line = session.getLine(row);\n var nextIndent = this.$getIndent(line);\n var indent = nextIndent + session.getTabString();\n\n if (nextToken && nextToken.value === \" -1;\n }\n\n (function () {\n this.getFoldWidget = function (session, foldStyle, row) {\n var tag = this._getFirstTagInLine(session, row);\n\n if (!tag) return this.getCommentFoldWidget(session, row);\n if (tag.closing || !tag.tagName && tag.selfClosing) return foldStyle == \"markbeginend\" ? \"end\" : \"\";\n if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase())) return \"\";\n if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column)) return \"\";\n return \"start\";\n };\n\n this.getCommentFoldWidget = function (session, row) {\n if (/comment/.test(session.getState(row)) && /';\n break;\n }\n }\n\n return tag;\n } else if (is(token, \"tag-close\")) {\n tag.selfClosing = token.value == '/>';\n return tag;\n }\n\n tag.start.column += token.value.length;\n }\n\n return null;\n };\n\n this._findEndTagInLine = function (session, row, tagName, startColumn) {\n var tokens = session.getTokens(row);\n var column = 0;\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n column += token.value.length;\n if (column < startColumn) continue;\n\n if (is(token, \"end-tag-open\")) {\n token = tokens[i + 1];\n if (token && token.value == tagName) return true;\n }\n }\n\n return false;\n };\n\n this._readTagForward = function (iterator) {\n var token = iterator.getCurrentToken();\n if (!token) return null;\n var tag = new Tag();\n\n do {\n if (is(token, \"tag-open\")) {\n tag.closing = is(token, \"end-tag-open\");\n tag.start.row = iterator.getCurrentTokenRow();\n tag.start.column = iterator.getCurrentTokenColumn();\n } else if (is(token, \"tag-name\")) {\n tag.tagName = token.value;\n } else if (is(token, \"tag-close\")) {\n tag.selfClosing = token.value == \"/>\";\n tag.end.row = iterator.getCurrentTokenRow();\n tag.end.column = iterator.getCurrentTokenColumn() + token.value.length;\n iterator.stepForward();\n return tag;\n }\n } while (token = iterator.stepForward());\n\n return null;\n };\n\n this._readTagBackward = function (iterator) {\n var token = iterator.getCurrentToken();\n if (!token) return null;\n var tag = new Tag();\n\n do {\n if (is(token, \"tag-open\")) {\n tag.closing = is(token, \"end-tag-open\");\n tag.start.row = iterator.getCurrentTokenRow();\n tag.start.column = iterator.getCurrentTokenColumn();\n iterator.stepBackward();\n return tag;\n } else if (is(token, \"tag-name\")) {\n tag.tagName = token.value;\n } else if (is(token, \"tag-close\")) {\n tag.selfClosing = token.value == \"/>\";\n tag.end.row = iterator.getCurrentTokenRow();\n tag.end.column = iterator.getCurrentTokenColumn() + token.value.length;\n }\n } while (token = iterator.stepBackward());\n\n return null;\n };\n\n this._pop = function (stack, tag) {\n while (stack.length) {\n var top = stack[stack.length - 1];\n\n if (!tag || top.tagName == tag.tagName) {\n return stack.pop();\n } else if (this.optionalEndTags.hasOwnProperty(top.tagName)) {\n stack.pop();\n continue;\n } else {\n return null;\n }\n }\n };\n\n this.getFoldWidgetRange = function (session, foldStyle, row) {\n var firstTag = this._getFirstTagInLine(session, row);\n\n if (!firstTag) {\n return this.getCommentFoldWidget(session, row) && session.getCommentFoldRange(row, session.getLine(row).length);\n }\n\n var isBackward = firstTag.closing || firstTag.selfClosing;\n var stack = [];\n var tag;\n\n if (!isBackward) {\n var iterator = new TokenIterator(session, row, firstTag.start.column);\n var start = {\n row: row,\n column: firstTag.start.column + firstTag.tagName.length + 2\n };\n if (firstTag.start.row == firstTag.end.row) start.column = firstTag.end.column;\n\n while (tag = this._readTagForward(iterator)) {\n if (tag.selfClosing) {\n if (!stack.length) {\n tag.start.column += tag.tagName.length + 2;\n tag.end.column -= 2;\n return Range.fromPoints(tag.start, tag.end);\n } else continue;\n }\n\n if (tag.closing) {\n this._pop(stack, tag);\n\n if (stack.length == 0) return Range.fromPoints(start, tag.start);\n } else {\n stack.push(tag);\n }\n }\n } else {\n var iterator = new TokenIterator(session, row, firstTag.end.column);\n var end = {\n row: row,\n column: firstTag.start.column\n };\n\n while (tag = this._readTagBackward(iterator)) {\n if (tag.selfClosing) {\n if (!stack.length) {\n tag.start.column += tag.tagName.length + 2;\n tag.end.column -= 2;\n return Range.fromPoints(tag.start, tag.end);\n } else continue;\n }\n\n if (!tag.closing) {\n this._pop(stack, tag);\n\n if (stack.length == 0) {\n tag.start.column += tag.tagName.length + 2;\n if (tag.start.row == tag.end.row && tag.start.column < tag.end.column) tag.start.column = tag.end.column;\n return Range.fromPoints(tag.start, end);\n }\n } else {\n stack.push(tag);\n }\n }\n }\n };\n }).call(FoldMode.prototype);\n});\nace.define(\"ace/mode/xml\", [\"require\", \"exports\", \"module\", \"ace/lib/oop\", \"ace/lib/lang\", \"ace/mode/text\", \"ace/mode/xml_highlight_rules\", \"ace/mode/behaviour/xml\", \"ace/mode/folding/xml\", \"ace/worker/worker_client\"], function (acequire, exports, module) {\n \"use strict\";\n\n var oop = acequire(\"../lib/oop\");\n var lang = acequire(\"../lib/lang\");\n var TextMode = acequire(\"./text\").Mode;\n var XmlHighlightRules = acequire(\"./xml_highlight_rules\").XmlHighlightRules;\n var XmlBehaviour = acequire(\"./behaviour/xml\").XmlBehaviour;\n var XmlFoldMode = acequire(\"./folding/xml\").FoldMode;\n var WorkerClient = acequire(\"../worker/worker_client\").WorkerClient;\n\n var Mode = function Mode() {\n this.HighlightRules = XmlHighlightRules;\n this.$behaviour = new XmlBehaviour();\n this.foldingRules = new XmlFoldMode();\n };\n\n oop.inherits(Mode, TextMode);\n (function () {\n this.voidElements = lang.arrayToMap([]);\n this.blockComment = {\n start: \"\"\n };\n\n this.createWorker = function (session) {\n var worker = new WorkerClient([\"ace\"], require(\"../worker/xml\"), \"Worker\");\n worker.attachToDocument(session.getDocument());\n worker.on(\"error\", function (e) {\n session.setAnnotations(e.data);\n });\n worker.on(\"terminate\", function () {\n session.clearAnnotations();\n });\n return worker;\n };\n\n this.$id = \"ace/mode/xml\";\n }).call(Mode.prototype);\n exports.Mode = Mode;\n});\nace.define(\"ace/mode/css_highlight_rules\", [\"require\", \"exports\", \"module\", \"ace/lib/oop\", \"ace/lib/lang\", \"ace/mode/text_highlight_rules\"], function (acequire, exports, module) {\n \"use strict\";\n\n var oop = acequire(\"../lib/oop\");\n var lang = acequire(\"../lib/lang\");\n var TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n var supportType = exports.supportType = \"align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index\";\n var supportFunction = exports.supportFunction = \"rgb|rgba|url|attr|counter|counters\";\n var supportConstant = exports.supportConstant = \"absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero\";\n var supportConstantColor = exports.supportConstantColor = \"aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen\";\n var supportConstantFonts = exports.supportConstantFonts = \"arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace\";\n var numRe = exports.numRe = \"\\\\-?(?:(?:[0-9]+(?:\\\\.[0-9]+)?)|(?:\\\\.[0-9]+))\";\n var pseudoElements = exports.pseudoElements = \"(\\\\:+)\\\\b(after|before|first-letter|first-line|moz-selection|selection)\\\\b\";\n var pseudoClasses = exports.pseudoClasses = \"(:)\\\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|acequired|root|target|valid|visited)\\\\b\";\n\n var CssHighlightRules = function CssHighlightRules() {\n var keywordMapper = this.createKeywordMapper({\n \"support.function\": supportFunction,\n \"support.constant\": supportConstant,\n \"support.type\": supportType,\n \"support.constant.color\": supportConstantColor,\n \"support.constant.fonts\": supportConstantFonts\n }, \"text\", true);\n this.$rules = {\n \"start\": [{\n include: [\"strings\", \"url\", \"comments\"]\n }, {\n token: \"paren.lparen\",\n regex: \"\\\\{\",\n next: \"ruleset\"\n }, {\n token: \"paren.rparen\",\n regex: \"\\\\}\"\n }, {\n token: \"string\",\n regex: \"@\",\n next: \"media\"\n }, {\n token: \"keyword\",\n regex: \"#[a-z0-9-_]+\"\n }, {\n token: \"keyword\",\n regex: \"%\"\n }, {\n token: \"variable\",\n regex: \"\\\\.[a-z0-9-_]+\"\n }, {\n token: \"string\",\n regex: \":[a-z0-9-_]+\"\n }, {\n token: \"constant.numeric\",\n regex: numRe\n }, {\n token: \"constant\",\n regex: \"[a-z0-9-_]+\"\n }, {\n caseInsensitive: true\n }],\n \"media\": [{\n include: [\"strings\", \"url\", \"comments\"]\n }, {\n token: \"paren.lparen\",\n regex: \"\\\\{\",\n next: \"start\"\n }, {\n token: \"paren.rparen\",\n regex: \"\\\\}\",\n next: \"start\"\n }, {\n token: \"string\",\n regex: \";\",\n next: \"start\"\n }, {\n token: \"keyword\",\n regex: \"(?:media|supports|document|charset|import|namespace|media|supports|document\" + \"|page|font|keyframes|viewport|counter-style|font-feature-values\" + \"|swash|ornaments|annotation|stylistic|styleset|character-variant)\"\n }],\n \"comments\": [{\n token: \"comment\",\n // multi line comment\n regex: \"\\\\/\\\\*\",\n push: [{\n token: \"comment\",\n regex: \"\\\\*\\\\/\",\n next: \"pop\"\n }, {\n defaultToken: \"comment\"\n }]\n }],\n \"ruleset\": [{\n regex: \"-(webkit|ms|moz|o)-\",\n token: \"text\"\n }, {\n token: \"paren.rparen\",\n regex: \"\\\\}\",\n next: \"start\"\n }, {\n include: [\"strings\", \"url\", \"comments\"]\n }, {\n token: [\"constant.numeric\", \"keyword\"],\n regex: \"(\" + numRe + \")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)\"\n }, {\n token: \"constant.numeric\",\n regex: numRe\n }, {\n token: \"constant.numeric\",\n // hex6 color\n regex: \"#[a-f0-9]{6}\"\n }, {\n token: \"constant.numeric\",\n // hex3 color\n regex: \"#[a-f0-9]{3}\"\n }, {\n token: [\"punctuation\", \"entity.other.attribute-name.pseudo-element.css\"],\n regex: pseudoElements\n }, {\n token: [\"punctuation\", \"entity.other.attribute-name.pseudo-class.css\"],\n regex: pseudoClasses\n }, {\n include: \"url\"\n }, {\n token: keywordMapper,\n regex: \"\\\\-?[a-zA-Z_][a-zA-Z0-9_\\\\-]*\"\n }, {\n caseInsensitive: true\n }],\n url: [{\n token: \"support.function\",\n regex: \"(?:url(:?-prefix)?|domain|regexp)\\\\(\",\n push: [{\n token: \"support.function\",\n regex: \"\\\\)\",\n next: \"pop\"\n }, {\n defaultToken: \"string\"\n }]\n }],\n strings: [{\n token: \"string.start\",\n regex: \"'\",\n push: [{\n token: \"string.end\",\n regex: \"'|$\",\n next: \"pop\"\n }, {\n include: \"escapes\"\n }, {\n token: \"constant.language.escape\",\n regex: /\\\\$/,\n consumeLineEnd: true\n }, {\n defaultToken: \"string\"\n }]\n }, {\n token: \"string.start\",\n regex: '\"',\n push: [{\n token: \"string.end\",\n regex: '\"|$',\n next: \"pop\"\n }, {\n include: \"escapes\"\n }, {\n token: \"constant.language.escape\",\n regex: /\\\\$/,\n consumeLineEnd: true\n }, {\n defaultToken: \"string\"\n }]\n }],\n escapes: [{\n token: \"constant.language.escape\",\n regex: /\\\\([a-fA-F\\d]{1,6}|[^a-fA-F\\d])/\n }]\n };\n this.normalizeRules();\n };\n\n oop.inherits(CssHighlightRules, TextHighlightRules);\n exports.CssHighlightRules = CssHighlightRules;\n});\nace.define(\"ace/mode/css_completions\", [\"require\", \"exports\", \"module\"], function (acequire, exports, module) {\n \"use strict\";\n\n var propertyMap = {\n \"background\": {\n \"#$0\": 1\n },\n \"background-color\": {\n \"#$0\": 1,\n \"transparent\": 1,\n \"fixed\": 1\n },\n \"background-image\": {\n \"url('/$0')\": 1\n },\n \"background-repeat\": {\n \"repeat\": 1,\n \"repeat-x\": 1,\n \"repeat-y\": 1,\n \"no-repeat\": 1,\n \"inherit\": 1\n },\n \"background-position\": {\n \"bottom\": 2,\n \"center\": 2,\n \"left\": 2,\n \"right\": 2,\n \"top\": 2,\n \"inherit\": 2\n },\n \"background-attachment\": {\n \"scroll\": 1,\n \"fixed\": 1\n },\n \"background-size\": {\n \"cover\": 1,\n \"contain\": 1\n },\n \"background-clip\": {\n \"border-box\": 1,\n \"padding-box\": 1,\n \"content-box\": 1\n },\n \"background-origin\": {\n \"border-box\": 1,\n \"padding-box\": 1,\n \"content-box\": 1\n },\n \"border\": {\n \"solid $0\": 1,\n \"dashed $0\": 1,\n \"dotted $0\": 1,\n \"#$0\": 1\n },\n \"border-color\": {\n \"#$0\": 1\n },\n \"border-style\": {\n \"solid\": 2,\n \"dashed\": 2,\n \"dotted\": 2,\n \"double\": 2,\n \"groove\": 2,\n \"hidden\": 2,\n \"inherit\": 2,\n \"inset\": 2,\n \"none\": 2,\n \"outset\": 2,\n \"ridged\": 2\n },\n \"border-collapse\": {\n \"collapse\": 1,\n \"separate\": 1\n },\n \"bottom\": {\n \"px\": 1,\n \"em\": 1,\n \"%\": 1\n },\n \"clear\": {\n \"left\": 1,\n \"right\": 1,\n \"both\": 1,\n \"none\": 1\n },\n \"color\": {\n \"#$0\": 1,\n \"rgb(#$00,0,0)\": 1\n },\n \"cursor\": {\n \"default\": 1,\n \"pointer\": 1,\n \"move\": 1,\n \"text\": 1,\n \"wait\": 1,\n \"help\": 1,\n \"progress\": 1,\n \"n-resize\": 1,\n \"ne-resize\": 1,\n \"e-resize\": 1,\n \"se-resize\": 1,\n \"s-resize\": 1,\n \"sw-resize\": 1,\n \"w-resize\": 1,\n \"nw-resize\": 1\n },\n \"display\": {\n \"none\": 1,\n \"block\": 1,\n \"inline\": 1,\n \"inline-block\": 1,\n \"table-cell\": 1\n },\n \"empty-cells\": {\n \"show\": 1,\n \"hide\": 1\n },\n \"float\": {\n \"left\": 1,\n \"right\": 1,\n \"none\": 1\n },\n \"font-family\": {\n \"Arial\": 2,\n \"Comic Sans MS\": 2,\n \"Consolas\": 2,\n \"Courier New\": 2,\n \"Courier\": 2,\n \"Georgia\": 2,\n \"Monospace\": 2,\n \"Sans-Serif\": 2,\n \"Segoe UI\": 2,\n \"Tahoma\": 2,\n \"Times New Roman\": 2,\n \"Trebuchet MS\": 2,\n \"Verdana\": 1\n },\n \"font-size\": {\n \"px\": 1,\n \"em\": 1,\n \"%\": 1\n },\n \"font-weight\": {\n \"bold\": 1,\n \"normal\": 1\n },\n \"font-style\": {\n \"italic\": 1,\n \"normal\": 1\n },\n \"font-variant\": {\n \"normal\": 1,\n \"small-caps\": 1\n },\n \"height\": {\n \"px\": 1,\n \"em\": 1,\n \"%\": 1\n },\n \"left\": {\n \"px\": 1,\n \"em\": 1,\n \"%\": 1\n },\n \"letter-spacing\": {\n \"normal\": 1\n },\n \"line-height\": {\n \"normal\": 1\n },\n \"list-style-type\": {\n \"none\": 1,\n \"disc\": 1,\n \"circle\": 1,\n \"square\": 1,\n \"decimal\": 1,\n \"decimal-leading-zero\": 1,\n \"lower-roman\": 1,\n \"upper-roman\": 1,\n \"lower-greek\": 1,\n \"lower-latin\": 1,\n \"upper-latin\": 1,\n \"georgian\": 1,\n \"lower-alpha\": 1,\n \"upper-alpha\": 1\n },\n \"margin\": {\n \"px\": 1,\n \"em\": 1,\n \"%\": 1\n },\n \"margin-right\": {\n \"px\": 1,\n \"em\": 1,\n \"%\": 1\n },\n \"margin-left\": {\n \"px\": 1,\n \"em\": 1,\n \"%\": 1\n },\n \"margin-top\": {\n \"px\": 1,\n \"em\": 1,\n \"%\": 1\n },\n \"margin-bottom\": {\n \"px\": 1,\n \"em\": 1,\n \"%\": 1\n },\n \"max-height\": {\n \"px\": 1,\n \"em\": 1,\n \"%\": 1\n },\n \"max-width\": {\n \"px\": 1,\n \"em\": 1,\n \"%\": 1\n },\n \"min-height\": {\n \"px\": 1,\n \"em\": 1,\n \"%\": 1\n },\n \"min-width\": {\n \"px\": 1,\n \"em\": 1,\n \"%\": 1\n },\n \"overflow\": {\n \"hidden\": 1,\n \"visible\": 1,\n \"auto\": 1,\n \"scroll\": 1\n },\n \"overflow-x\": {\n \"hidden\": 1,\n \"visible\": 1,\n \"auto\": 1,\n \"scroll\": 1\n },\n \"overflow-y\": {\n \"hidden\": 1,\n \"visible\": 1,\n \"auto\": 1,\n \"scroll\": 1\n },\n \"padding\": {\n \"px\": 1,\n \"em\": 1,\n \"%\": 1\n },\n \"padding-top\": {\n \"px\": 1,\n \"em\": 1,\n \"%\": 1\n },\n \"padding-right\": {\n \"px\": 1,\n \"em\": 1,\n \"%\": 1\n },\n \"padding-bottom\": {\n \"px\": 1,\n \"em\": 1,\n \"%\": 1\n },\n \"padding-left\": {\n \"px\": 1,\n \"em\": 1,\n \"%\": 1\n },\n \"page-break-after\": {\n \"auto\": 1,\n \"always\": 1,\n \"avoid\": 1,\n \"left\": 1,\n \"right\": 1\n },\n \"page-break-before\": {\n \"auto\": 1,\n \"always\": 1,\n \"avoid\": 1,\n \"left\": 1,\n \"right\": 1\n },\n \"position\": {\n \"absolute\": 1,\n \"relative\": 1,\n \"fixed\": 1,\n \"static\": 1\n },\n \"right\": {\n \"px\": 1,\n \"em\": 1,\n \"%\": 1\n },\n \"table-layout\": {\n \"fixed\": 1,\n \"auto\": 1\n },\n \"text-decoration\": {\n \"none\": 1,\n \"underline\": 1,\n \"line-through\": 1,\n \"blink\": 1\n },\n \"text-align\": {\n \"left\": 1,\n \"right\": 1,\n \"center\": 1,\n \"justify\": 1\n },\n \"text-transform\": {\n \"capitalize\": 1,\n \"uppercase\": 1,\n \"lowercase\": 1,\n \"none\": 1\n },\n \"top\": {\n \"px\": 1,\n \"em\": 1,\n \"%\": 1\n },\n \"vertical-align\": {\n \"top\": 1,\n \"bottom\": 1\n },\n \"visibility\": {\n \"hidden\": 1,\n \"visible\": 1\n },\n \"white-space\": {\n \"nowrap\": 1,\n \"normal\": 1,\n \"pre\": 1,\n \"pre-line\": 1,\n \"pre-wrap\": 1\n },\n \"width\": {\n \"px\": 1,\n \"em\": 1,\n \"%\": 1\n },\n \"word-spacing\": {\n \"normal\": 1\n },\n \"filter\": {\n \"alpha(opacity=$0100)\": 1\n },\n \"text-shadow\": {\n \"$02px 2px 2px #777\": 1\n },\n \"text-overflow\": {\n \"ellipsis-word\": 1,\n \"clip\": 1,\n \"ellipsis\": 1\n },\n \"-moz-border-radius\": 1,\n \"-moz-border-radius-topright\": 1,\n \"-moz-border-radius-bottomright\": 1,\n \"-moz-border-radius-topleft\": 1,\n \"-moz-border-radius-bottomleft\": 1,\n \"-webkit-border-radius\": 1,\n \"-webkit-border-top-right-radius\": 1,\n \"-webkit-border-top-left-radius\": 1,\n \"-webkit-border-bottom-right-radius\": 1,\n \"-webkit-border-bottom-left-radius\": 1,\n \"-moz-box-shadow\": 1,\n \"-webkit-box-shadow\": 1,\n \"transform\": {\n \"rotate($00deg)\": 1,\n \"skew($00deg)\": 1\n },\n \"-moz-transform\": {\n \"rotate($00deg)\": 1,\n \"skew($00deg)\": 1\n },\n \"-webkit-transform\": {\n \"rotate($00deg)\": 1,\n \"skew($00deg)\": 1\n }\n };\n\n var CssCompletions = function CssCompletions() {};\n\n (function () {\n this.completionsDefined = false;\n\n this.defineCompletions = function () {\n if (document) {\n var style = document.createElement('c').style;\n\n for (var i in style) {\n if (typeof style[i] !== 'string') continue;\n var name = i.replace(/[A-Z]/g, function (x) {\n return '-' + x.toLowerCase();\n });\n if (!propertyMap.hasOwnProperty(name)) propertyMap[name] = 1;\n }\n }\n\n this.completionsDefined = true;\n };\n\n this.getCompletions = function (state, session, pos, prefix) {\n if (!this.completionsDefined) {\n this.defineCompletions();\n }\n\n var token = session.getTokenAt(pos.row, pos.column);\n if (!token) return [];\n\n if (state === 'ruleset') {\n var line = session.getLine(pos.row).substr(0, pos.column);\n\n if (/:[^;]+$/.test(line)) {\n /([\\w\\-]+):[^:]*$/.test(line);\n return this.getPropertyValueCompletions(state, session, pos, prefix);\n } else {\n return this.getPropertyCompletions(state, session, pos, prefix);\n }\n }\n\n return [];\n };\n\n this.getPropertyCompletions = function (state, session, pos, prefix) {\n var properties = Object.keys(propertyMap);\n return properties.map(function (property) {\n return {\n caption: property,\n snippet: property + ': $0;',\n meta: \"property\",\n score: Number.MAX_VALUE\n };\n });\n };\n\n this.getPropertyValueCompletions = function (state, session, pos, prefix) {\n var line = session.getLine(pos.row).substr(0, pos.column);\n var property = (/([\\w\\-]+):[^:]*$/.exec(line) || {})[1];\n if (!property) return [];\n var values = [];\n\n if (property in propertyMap && typeof propertyMap[property] === \"object\") {\n values = Object.keys(propertyMap[property]);\n }\n\n return values.map(function (value) {\n return {\n caption: value,\n snippet: value,\n meta: \"property value\",\n score: Number.MAX_VALUE\n };\n });\n };\n }).call(CssCompletions.prototype);\n exports.CssCompletions = CssCompletions;\n});\nace.define(\"ace/mode/behaviour/css\", [\"require\", \"exports\", \"module\", \"ace/lib/oop\", \"ace/mode/behaviour\", \"ace/mode/behaviour/cstyle\", \"ace/token_iterator\"], function (acequire, exports, module) {\n \"use strict\";\n\n var oop = acequire(\"../../lib/oop\");\n var Behaviour = acequire(\"../behaviour\").Behaviour;\n var CstyleBehaviour = acequire(\"./cstyle\").CstyleBehaviour;\n var TokenIterator = acequire(\"../../token_iterator\").TokenIterator;\n\n var CssBehaviour = function CssBehaviour() {\n this.inherit(CstyleBehaviour);\n this.add(\"colon\", \"insertion\", function (state, action, editor, session, text) {\n if (text === ':') {\n var cursor = editor.getCursorPosition();\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n\n if (token && token.value.match(/\\s+/)) {\n token = iterator.stepBackward();\n }\n\n if (token && token.type === 'support.type') {\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n\n if (rightChar === ':') {\n return {\n text: '',\n selection: [1, 1]\n };\n }\n\n if (!line.substring(cursor.column).match(/^\\s*;/)) {\n return {\n text: ':;',\n selection: [1, 1]\n };\n }\n }\n }\n });\n this.add(\"colon\", \"deletion\", function (state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n\n if (!range.isMultiLine() && selected === ':') {\n var cursor = editor.getCursorPosition();\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n\n if (token && token.value.match(/\\s+/)) {\n token = iterator.stepBackward();\n }\n\n if (token && token.type === 'support.type') {\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.end.column, range.end.column + 1);\n\n if (rightChar === ';') {\n range.end.column++;\n return range;\n }\n }\n }\n });\n this.add(\"semicolon\", \"insertion\", function (state, action, editor, session, text) {\n if (text === ';') {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n\n if (rightChar === ';') {\n return {\n text: '',\n selection: [1, 1]\n };\n }\n }\n });\n };\n\n oop.inherits(CssBehaviour, CstyleBehaviour);\n exports.CssBehaviour = CssBehaviour;\n});\nace.define(\"ace/mode/css\", [\"require\", \"exports\", \"module\", \"ace/lib/oop\", \"ace/mode/text\", \"ace/mode/css_highlight_rules\", \"ace/mode/matching_brace_outdent\", \"ace/worker/worker_client\", \"ace/mode/css_completions\", \"ace/mode/behaviour/css\", \"ace/mode/folding/cstyle\"], function (acequire, exports, module) {\n \"use strict\";\n\n var oop = acequire(\"../lib/oop\");\n var TextMode = acequire(\"./text\").Mode;\n var CssHighlightRules = acequire(\"./css_highlight_rules\").CssHighlightRules;\n var MatchingBraceOutdent = acequire(\"./matching_brace_outdent\").MatchingBraceOutdent;\n var WorkerClient = acequire(\"../worker/worker_client\").WorkerClient;\n var CssCompletions = acequire(\"./css_completions\").CssCompletions;\n var CssBehaviour = acequire(\"./behaviour/css\").CssBehaviour;\n var CStyleFoldMode = acequire(\"./folding/cstyle\").FoldMode;\n\n var Mode = function Mode() {\n this.HighlightRules = CssHighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CssBehaviour();\n this.$completer = new CssCompletions();\n this.foldingRules = new CStyleFoldMode();\n };\n\n oop.inherits(Mode, TextMode);\n (function () {\n this.foldingRules = \"cStyle\";\n this.blockComment = {\n start: \"/*\",\n end: \"*/\"\n };\n\n this.getNextLineIndent = function (state, line, tab) {\n var indent = this.$getIndent(line);\n var tokens = this.getTokenizer().getLineTokens(line, state).tokens;\n\n if (tokens.length && tokens[tokens.length - 1].type == \"comment\") {\n return indent;\n }\n\n var match = line.match(/^.*\\{\\s*$/);\n\n if (match) {\n indent += tab;\n }\n\n return indent;\n };\n\n this.checkOutdent = function (state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n\n this.autoOutdent = function (state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n\n this.getCompletions = function (state, session, pos, prefix) {\n return this.$completer.getCompletions(state, session, pos, prefix);\n };\n\n this.createWorker = function (session) {\n var worker = new WorkerClient([\"ace\"], require(\"../worker/css\"), \"Worker\");\n worker.attachToDocument(session.getDocument());\n worker.on(\"annotate\", function (e) {\n session.setAnnotations(e.data);\n });\n worker.on(\"terminate\", function () {\n session.clearAnnotations();\n });\n return worker;\n };\n\n this.$id = \"ace/mode/css\";\n }).call(Mode.prototype);\n exports.Mode = Mode;\n});\nace.define(\"ace/mode/html_highlight_rules\", [\"require\", \"exports\", \"module\", \"ace/lib/oop\", \"ace/lib/lang\", \"ace/mode/css_highlight_rules\", \"ace/mode/javascript_highlight_rules\", \"ace/mode/xml_highlight_rules\"], function (acequire, exports, module) {\n \"use strict\";\n\n var oop = acequire(\"../lib/oop\");\n var lang = acequire(\"../lib/lang\");\n var CssHighlightRules = acequire(\"./css_highlight_rules\").CssHighlightRules;\n var JavaScriptHighlightRules = acequire(\"./javascript_highlight_rules\").JavaScriptHighlightRules;\n var XmlHighlightRules = acequire(\"./xml_highlight_rules\").XmlHighlightRules;\n var tagMap = lang.createMap({\n a: 'anchor',\n button: 'form',\n form: 'form',\n img: 'image',\n input: 'form',\n label: 'form',\n option: 'form',\n script: 'script',\n select: 'form',\n textarea: 'form',\n style: 'style',\n table: 'table',\n tbody: 'table',\n td: 'table',\n tfoot: 'table',\n th: 'table',\n tr: 'table'\n });\n\n var HtmlHighlightRules = function HtmlHighlightRules() {\n XmlHighlightRules.call(this);\n this.addRules({\n attributes: [{\n include: \"tag_whitespace\"\n }, {\n token: \"entity.other.attribute-name.xml\",\n regex: \"[-_a-zA-Z0-9:.]+\"\n }, {\n token: \"keyword.operator.attribute-equals.xml\",\n regex: \"=\",\n push: [{\n include: \"tag_whitespace\"\n }, {\n token: \"string.unquoted.attribute-value.html\",\n regex: \"[^<>='\\\"`\\\\s]+\",\n next: \"pop\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"pop\"\n }]\n }, {\n include: \"attribute_value\"\n }],\n tag: [{\n token: function token(start, tag) {\n var group = tagMap[tag];\n return [\"meta.tag.punctuation.\" + (start == \"<\" ? \"\" : \"end-\") + \"tag-open.xml\", \"meta.tag\" + (group ? \".\" + group : \"\") + \".tag-name.xml\"];\n },\n regex: \"(\",\n next: \"start\"\n }]\n });\n this.embedTagRules(CssHighlightRules, \"css-\", \"style\");\n this.embedTagRules(new JavaScriptHighlightRules({\n jsx: false\n }).getRules(), \"js-\", \"script\");\n if (this.constructor === HtmlHighlightRules) this.normalizeRules();\n };\n\n oop.inherits(HtmlHighlightRules, XmlHighlightRules);\n exports.HtmlHighlightRules = HtmlHighlightRules;\n});\nace.define(\"ace/mode/folding/mixed\", [\"require\", \"exports\", \"module\", \"ace/lib/oop\", \"ace/mode/folding/fold_mode\"], function (acequire, exports, module) {\n \"use strict\";\n\n var oop = acequire(\"../../lib/oop\");\n var BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\n\n var FoldMode = exports.FoldMode = function (defaultMode, subModes) {\n this.defaultMode = defaultMode;\n this.subModes = subModes;\n };\n\n oop.inherits(FoldMode, BaseFoldMode);\n (function () {\n this.$getMode = function (state) {\n if (typeof state != \"string\") state = state[0];\n\n for (var key in this.subModes) {\n if (state.indexOf(key) === 0) return this.subModes[key];\n }\n\n return null;\n };\n\n this.$tryMode = function (state, session, foldStyle, row) {\n var mode = this.$getMode(state);\n return mode ? mode.getFoldWidget(session, foldStyle, row) : \"\";\n };\n\n this.getFoldWidget = function (session, foldStyle, row) {\n return this.$tryMode(session.getState(row - 1), session, foldStyle, row) || this.$tryMode(session.getState(row), session, foldStyle, row) || this.defaultMode.getFoldWidget(session, foldStyle, row);\n };\n\n this.getFoldWidgetRange = function (session, foldStyle, row) {\n var mode = this.$getMode(session.getState(row - 1));\n if (!mode || !mode.getFoldWidget(session, foldStyle, row)) mode = this.$getMode(session.getState(row));\n if (!mode || !mode.getFoldWidget(session, foldStyle, row)) mode = this.defaultMode;\n return mode.getFoldWidgetRange(session, foldStyle, row);\n };\n }).call(FoldMode.prototype);\n});\nace.define(\"ace/mode/folding/html\", [\"require\", \"exports\", \"module\", \"ace/lib/oop\", \"ace/mode/folding/mixed\", \"ace/mode/folding/xml\", \"ace/mode/folding/cstyle\"], function (acequire, exports, module) {\n \"use strict\";\n\n var oop = acequire(\"../../lib/oop\");\n var MixedFoldMode = acequire(\"./mixed\").FoldMode;\n var XmlFoldMode = acequire(\"./xml\").FoldMode;\n var CStyleFoldMode = acequire(\"./cstyle\").FoldMode;\n\n var FoldMode = exports.FoldMode = function (voidElements, optionalTags) {\n MixedFoldMode.call(this, new XmlFoldMode(voidElements, optionalTags), {\n \"js-\": new CStyleFoldMode(),\n \"css-\": new CStyleFoldMode()\n });\n };\n\n oop.inherits(FoldMode, MixedFoldMode);\n});\nace.define(\"ace/mode/html_completions\", [\"require\", \"exports\", \"module\", \"ace/token_iterator\"], function (acequire, exports, module) {\n \"use strict\";\n\n var TokenIterator = acequire(\"../token_iterator\").TokenIterator;\n var commonAttributes = [\"accesskey\", \"class\", \"contenteditable\", \"contextmenu\", \"dir\", \"draggable\", \"dropzone\", \"hidden\", \"id\", \"inert\", \"itemid\", \"itemprop\", \"itemref\", \"itemscope\", \"itemtype\", \"lang\", \"spellcheck\", \"style\", \"tabindex\", \"title\", \"translate\"];\n var eventAttributes = [\"onabort\", \"onblur\", \"oncancel\", \"oncanplay\", \"oncanplaythrough\", \"onchange\", \"onclick\", \"onclose\", \"oncontextmenu\", \"oncuechange\", \"ondblclick\", \"ondrag\", \"ondragend\", \"ondragenter\", \"ondragleave\", \"ondragover\", \"ondragstart\", \"ondrop\", \"ondurationchange\", \"onemptied\", \"onended\", \"onerror\", \"onfocus\", \"oninput\", \"oninvalid\", \"onkeydown\", \"onkeypress\", \"onkeyup\", \"onload\", \"onloadeddata\", \"onloadedmetadata\", \"onloadstart\", \"onmousedown\", \"onmousemove\", \"onmouseout\", \"onmouseover\", \"onmouseup\", \"onmousewheel\", \"onpause\", \"onplay\", \"onplaying\", \"onprogress\", \"onratechange\", \"onreset\", \"onscroll\", \"onseeked\", \"onseeking\", \"onselect\", \"onshow\", \"onstalled\", \"onsubmit\", \"onsuspend\", \"ontimeupdate\", \"onvolumechange\", \"onwaiting\"];\n var globalAttributes = commonAttributes.concat(eventAttributes);\n var attributeMap = {\n \"html\": {\n \"manifest\": 1\n },\n \"head\": {},\n \"title\": {},\n \"base\": {\n \"href\": 1,\n \"target\": 1\n },\n \"link\": {\n \"href\": 1,\n \"hreflang\": 1,\n \"rel\": {\n \"stylesheet\": 1,\n \"icon\": 1\n },\n \"media\": {\n \"all\": 1,\n \"screen\": 1,\n \"print\": 1\n },\n \"type\": {\n \"text/css\": 1,\n \"image/png\": 1,\n \"image/jpeg\": 1,\n \"image/gif\": 1\n },\n \"sizes\": 1\n },\n \"meta\": {\n \"http-equiv\": {\n \"content-type\": 1\n },\n \"name\": {\n \"description\": 1,\n \"keywords\": 1\n },\n \"content\": {\n \"text/html; charset=UTF-8\": 1\n },\n \"charset\": 1\n },\n \"style\": {\n \"type\": 1,\n \"media\": {\n \"all\": 1,\n \"screen\": 1,\n \"print\": 1\n },\n \"scoped\": 1\n },\n \"script\": {\n \"charset\": 1,\n \"type\": {\n \"text/javascript\": 1\n },\n \"src\": 1,\n \"defer\": 1,\n \"async\": 1\n },\n \"noscript\": {\n \"href\": 1\n },\n \"body\": {\n \"onafterprint\": 1,\n \"onbeforeprint\": 1,\n \"onbeforeunload\": 1,\n \"onhashchange\": 1,\n \"onmessage\": 1,\n \"onoffline\": 1,\n \"onpopstate\": 1,\n \"onredo\": 1,\n \"onresize\": 1,\n \"onstorage\": 1,\n \"onundo\": 1,\n \"onunload\": 1\n },\n \"section\": {},\n \"nav\": {},\n \"article\": {\n \"pubdate\": 1\n },\n \"aside\": {},\n \"h1\": {},\n \"h2\": {},\n \"h3\": {},\n \"h4\": {},\n \"h5\": {},\n \"h6\": {},\n \"header\": {},\n \"footer\": {},\n \"address\": {},\n \"main\": {},\n \"p\": {},\n \"hr\": {},\n \"pre\": {},\n \"blockquote\": {\n \"cite\": 1\n },\n \"ol\": {\n \"start\": 1,\n \"reversed\": 1\n },\n \"ul\": {},\n \"li\": {\n \"value\": 1\n },\n \"dl\": {},\n \"dt\": {},\n \"dd\": {},\n \"figure\": {},\n \"figcaption\": {},\n \"div\": {},\n \"a\": {\n \"href\": 1,\n \"target\": {\n \"_blank\": 1,\n \"top\": 1\n },\n \"ping\": 1,\n \"rel\": {\n \"nofollow\": 1,\n \"alternate\": 1,\n \"author\": 1,\n \"bookmark\": 1,\n \"help\": 1,\n \"license\": 1,\n \"next\": 1,\n \"noreferrer\": 1,\n \"prefetch\": 1,\n \"prev\": 1,\n \"search\": 1,\n \"tag\": 1\n },\n \"media\": 1,\n \"hreflang\": 1,\n \"type\": 1\n },\n \"em\": {},\n \"strong\": {},\n \"small\": {},\n \"s\": {},\n \"cite\": {},\n \"q\": {\n \"cite\": 1\n },\n \"dfn\": {},\n \"abbr\": {},\n \"data\": {},\n \"time\": {\n \"datetime\": 1\n },\n \"code\": {},\n \"var\": {},\n \"samp\": {},\n \"kbd\": {},\n \"sub\": {},\n \"sup\": {},\n \"i\": {},\n \"b\": {},\n \"u\": {},\n \"mark\": {},\n \"ruby\": {},\n \"rt\": {},\n \"rp\": {},\n \"bdi\": {},\n \"bdo\": {},\n \"span\": {},\n \"br\": {},\n \"wbr\": {},\n \"ins\": {\n \"cite\": 1,\n \"datetime\": 1\n },\n \"del\": {\n \"cite\": 1,\n \"datetime\": 1\n },\n \"img\": {\n \"alt\": 1,\n \"src\": 1,\n \"height\": 1,\n \"width\": 1,\n \"usemap\": 1,\n \"ismap\": 1\n },\n \"iframe\": {\n \"name\": 1,\n \"src\": 1,\n \"height\": 1,\n \"width\": 1,\n \"sandbox\": {\n \"allow-same-origin\": 1,\n \"allow-top-navigation\": 1,\n \"allow-forms\": 1,\n \"allow-scripts\": 1\n },\n \"seamless\": {\n \"seamless\": 1\n }\n },\n \"embed\": {\n \"src\": 1,\n \"height\": 1,\n \"width\": 1,\n \"type\": 1\n },\n \"object\": {\n \"param\": 1,\n \"data\": 1,\n \"type\": 1,\n \"height\": 1,\n \"width\": 1,\n \"usemap\": 1,\n \"name\": 1,\n \"form\": 1,\n \"classid\": 1\n },\n \"param\": {\n \"name\": 1,\n \"value\": 1\n },\n \"video\": {\n \"src\": 1,\n \"autobuffer\": 1,\n \"autoplay\": {\n \"autoplay\": 1\n },\n \"loop\": {\n \"loop\": 1\n },\n \"controls\": {\n \"controls\": 1\n },\n \"width\": 1,\n \"height\": 1,\n \"poster\": 1,\n \"muted\": {\n \"muted\": 1\n },\n \"preload\": {\n \"auto\": 1,\n \"metadata\": 1,\n \"none\": 1\n }\n },\n \"audio\": {\n \"src\": 1,\n \"autobuffer\": 1,\n \"autoplay\": {\n \"autoplay\": 1\n },\n \"loop\": {\n \"loop\": 1\n },\n \"controls\": {\n \"controls\": 1\n },\n \"muted\": {\n \"muted\": 1\n },\n \"preload\": {\n \"auto\": 1,\n \"metadata\": 1,\n \"none\": 1\n }\n },\n \"source\": {\n \"src\": 1,\n \"type\": 1,\n \"media\": 1\n },\n \"track\": {\n \"kind\": 1,\n \"src\": 1,\n \"srclang\": 1,\n \"label\": 1,\n \"default\": 1\n },\n \"canvas\": {\n \"width\": 1,\n \"height\": 1\n },\n \"map\": {\n \"name\": 1\n },\n \"area\": {\n \"shape\": 1,\n \"coords\": 1,\n \"href\": 1,\n \"hreflang\": 1,\n \"alt\": 1,\n \"target\": 1,\n \"media\": 1,\n \"rel\": 1,\n \"ping\": 1,\n \"type\": 1\n },\n \"svg\": {},\n \"math\": {},\n \"table\": {\n \"summary\": 1\n },\n \"caption\": {},\n \"colgroup\": {\n \"span\": 1\n },\n \"col\": {\n \"span\": 1\n },\n \"tbody\": {},\n \"thead\": {},\n \"tfoot\": {},\n \"tr\": {},\n \"td\": {\n \"headers\": 1,\n \"rowspan\": 1,\n \"colspan\": 1\n },\n \"th\": {\n \"headers\": 1,\n \"rowspan\": 1,\n \"colspan\": 1,\n \"scope\": 1\n },\n \"form\": {\n \"accept-charset\": 1,\n \"action\": 1,\n \"autocomplete\": 1,\n \"enctype\": {\n \"multipart/form-data\": 1,\n \"application/x-www-form-urlencoded\": 1\n },\n \"method\": {\n \"get\": 1,\n \"post\": 1\n },\n \"name\": 1,\n \"novalidate\": 1,\n \"target\": {\n \"_blank\": 1,\n \"top\": 1\n }\n },\n \"fieldset\": {\n \"disabled\": 1,\n \"form\": 1,\n \"name\": 1\n },\n \"legend\": {},\n \"label\": {\n \"form\": 1,\n \"for\": 1\n },\n \"input\": {\n \"type\": {\n \"text\": 1,\n \"password\": 1,\n \"hidden\": 1,\n \"checkbox\": 1,\n \"submit\": 1,\n \"radio\": 1,\n \"file\": 1,\n \"button\": 1,\n \"reset\": 1,\n \"image\": 31,\n \"color\": 1,\n \"date\": 1,\n \"datetime\": 1,\n \"datetime-local\": 1,\n \"email\": 1,\n \"month\": 1,\n \"number\": 1,\n \"range\": 1,\n \"search\": 1,\n \"tel\": 1,\n \"time\": 1,\n \"url\": 1,\n \"week\": 1\n },\n \"accept\": 1,\n \"alt\": 1,\n \"autocomplete\": {\n \"on\": 1,\n \"off\": 1\n },\n \"autofocus\": {\n \"autofocus\": 1\n },\n \"checked\": {\n \"checked\": 1\n },\n \"disabled\": {\n \"disabled\": 1\n },\n \"form\": 1,\n \"formaction\": 1,\n \"formenctype\": {\n \"application/x-www-form-urlencoded\": 1,\n \"multipart/form-data\": 1,\n \"text/plain\": 1\n },\n \"formmethod\": {\n \"get\": 1,\n \"post\": 1\n },\n \"formnovalidate\": {\n \"formnovalidate\": 1\n },\n \"formtarget\": {\n \"_blank\": 1,\n \"_self\": 1,\n \"_parent\": 1,\n \"_top\": 1\n },\n \"height\": 1,\n \"list\": 1,\n \"max\": 1,\n \"maxlength\": 1,\n \"min\": 1,\n \"multiple\": {\n \"multiple\": 1\n },\n \"name\": 1,\n \"pattern\": 1,\n \"placeholder\": 1,\n \"readonly\": {\n \"readonly\": 1\n },\n \"acequired\": {\n \"acequired\": 1\n },\n \"size\": 1,\n \"src\": 1,\n \"step\": 1,\n \"width\": 1,\n \"files\": 1,\n \"value\": 1\n },\n \"button\": {\n \"autofocus\": 1,\n \"disabled\": {\n \"disabled\": 1\n },\n \"form\": 1,\n \"formaction\": 1,\n \"formenctype\": 1,\n \"formmethod\": 1,\n \"formnovalidate\": 1,\n \"formtarget\": 1,\n \"name\": 1,\n \"value\": 1,\n \"type\": {\n \"button\": 1,\n \"submit\": 1\n }\n },\n \"select\": {\n \"autofocus\": 1,\n \"disabled\": 1,\n \"form\": 1,\n \"multiple\": {\n \"multiple\": 1\n },\n \"name\": 1,\n \"size\": 1,\n \"readonly\": {\n \"readonly\": 1\n }\n },\n \"datalist\": {},\n \"optgroup\": {\n \"disabled\": 1,\n \"label\": 1\n },\n \"option\": {\n \"disabled\": 1,\n \"selected\": 1,\n \"label\": 1,\n \"value\": 1\n },\n \"textarea\": {\n \"autofocus\": {\n \"autofocus\": 1\n },\n \"disabled\": {\n \"disabled\": 1\n },\n \"form\": 1,\n \"maxlength\": 1,\n \"name\": 1,\n \"placeholder\": 1,\n \"readonly\": {\n \"readonly\": 1\n },\n \"acequired\": {\n \"acequired\": 1\n },\n \"rows\": 1,\n \"cols\": 1,\n \"wrap\": {\n \"on\": 1,\n \"off\": 1,\n \"hard\": 1,\n \"soft\": 1\n }\n },\n \"keygen\": {\n \"autofocus\": 1,\n \"challenge\": {\n \"challenge\": 1\n },\n \"disabled\": {\n \"disabled\": 1\n },\n \"form\": 1,\n \"keytype\": {\n \"rsa\": 1,\n \"dsa\": 1,\n \"ec\": 1\n },\n \"name\": 1\n },\n \"output\": {\n \"for\": 1,\n \"form\": 1,\n \"name\": 1\n },\n \"progress\": {\n \"value\": 1,\n \"max\": 1\n },\n \"meter\": {\n \"value\": 1,\n \"min\": 1,\n \"max\": 1,\n \"low\": 1,\n \"high\": 1,\n \"optimum\": 1\n },\n \"details\": {\n \"open\": 1\n },\n \"summary\": {},\n \"command\": {\n \"type\": 1,\n \"label\": 1,\n \"icon\": 1,\n \"disabled\": 1,\n \"checked\": 1,\n \"radiogroup\": 1,\n \"command\": 1\n },\n \"menu\": {\n \"type\": 1,\n \"label\": 1\n },\n \"dialog\": {\n \"open\": 1\n }\n };\n var elements = Object.keys(attributeMap);\n\n function is(token, type) {\n return token.type.lastIndexOf(type + \".xml\") > -1;\n }\n\n function findTagName(session, pos) {\n var iterator = new TokenIterator(session, pos.row, pos.column);\n var token = iterator.getCurrentToken();\n\n while (token && !is(token, \"tag-name\")) {\n token = iterator.stepBackward();\n }\n\n if (token) return token.value;\n }\n\n function findAttributeName(session, pos) {\n var iterator = new TokenIterator(session, pos.row, pos.column);\n var token = iterator.getCurrentToken();\n\n while (token && !is(token, \"attribute-name\")) {\n token = iterator.stepBackward();\n }\n\n if (token) return token.value;\n }\n\n var HtmlCompletions = function HtmlCompletions() {};\n\n (function () {\n this.getCompletions = function (state, session, pos, prefix) {\n var token = session.getTokenAt(pos.row, pos.column);\n if (!token) return [];\n if (is(token, \"tag-name\") || is(token, \"tag-open\") || is(token, \"end-tag-open\")) return this.getTagCompletions(state, session, pos, prefix);\n if (is(token, \"tag-whitespace\") || is(token, \"attribute-name\")) return this.getAttributeCompletions(state, session, pos, prefix);\n if (is(token, \"attribute-value\")) return this.getAttributeValueCompletions(state, session, pos, prefix);\n var line = session.getLine(pos.row).substr(0, pos.column);\n if (/&[a-z]*$/i.test(line)) return this.getHTMLEntityCompletions(state, session, pos, prefix);\n return [];\n };\n\n this.getTagCompletions = function (state, session, pos, prefix) {\n return elements.map(function (element) {\n return {\n value: element,\n meta: \"tag\",\n score: Number.MAX_VALUE\n };\n });\n };\n\n this.getAttributeCompletions = function (state, session, pos, prefix) {\n var tagName = findTagName(session, pos);\n if (!tagName) return [];\n var attributes = globalAttributes;\n\n if (tagName in attributeMap) {\n attributes = attributes.concat(Object.keys(attributeMap[tagName]));\n }\n\n return attributes.map(function (attribute) {\n return {\n caption: attribute,\n snippet: attribute + '=\"$0\"',\n meta: \"attribute\",\n score: Number.MAX_VALUE\n };\n });\n };\n\n this.getAttributeValueCompletions = function (state, session, pos, prefix) {\n var tagName = findTagName(session, pos);\n var attributeName = findAttributeName(session, pos);\n if (!tagName) return [];\n var values = [];\n\n if (tagName in attributeMap && attributeName in attributeMap[tagName] && typeof attributeMap[tagName][attributeName] === \"object\") {\n values = Object.keys(attributeMap[tagName][attributeName]);\n }\n\n return values.map(function (value) {\n return {\n caption: value,\n snippet: value,\n meta: \"attribute value\",\n score: Number.MAX_VALUE\n };\n });\n };\n\n this.getHTMLEntityCompletions = function (state, session, pos, prefix) {\n var values = ['Aacute;', 'aacute;', 'Acirc;', 'acirc;', 'acute;', 'AElig;', 'aelig;', 'Agrave;', 'agrave;', 'alefsym;', 'Alpha;', 'alpha;', 'amp;', 'and;', 'ang;', 'Aring;', 'aring;', 'asymp;', 'Atilde;', 'atilde;', 'Auml;', 'auml;', 'bdquo;', 'Beta;', 'beta;', 'brvbar;', 'bull;', 'cap;', 'Ccedil;', 'ccedil;', 'cedil;', 'cent;', 'Chi;', 'chi;', 'circ;', 'clubs;', 'cong;', 'copy;', 'crarr;', 'cup;', 'curren;', 'Dagger;', 'dagger;', 'dArr;', 'darr;', 'deg;', 'Delta;', 'delta;', 'diams;', 'divide;', 'Eacute;', 'eacute;', 'Ecirc;', 'ecirc;', 'Egrave;', 'egrave;', 'empty;', 'emsp;', 'ensp;', 'Epsilon;', 'epsilon;', 'equiv;', 'Eta;', 'eta;', 'ETH;', 'eth;', 'Euml;', 'euml;', 'euro;', 'exist;', 'fnof;', 'forall;', 'frac12;', 'frac14;', 'frac34;', 'frasl;', 'Gamma;', 'gamma;', 'ge;', 'gt;', 'hArr;', 'harr;', 'hearts;', 'hellip;', 'Iacute;', 'iacute;', 'Icirc;', 'icirc;', 'iexcl;', 'Igrave;', 'igrave;', 'image;', 'infin;', 'int;', 'Iota;', 'iota;', 'iquest;', 'isin;', 'Iuml;', 'iuml;', 'Kappa;', 'kappa;', 'Lambda;', 'lambda;', 'lang;', 'laquo;', 'lArr;', 'larr;', 'lceil;', 'ldquo;', 'le;', 'lfloor;', 'lowast;', 'loz;', 'lrm;', 'lsaquo;', 'lsquo;', 'lt;', 'macr;', 'mdash;', 'micro;', 'middot;', 'minus;', 'Mu;', 'mu;', 'nabla;', 'nbsp;', 'ndash;', 'ne;', 'ni;', 'not;', 'notin;', 'nsub;', 'Ntilde;', 'ntilde;', 'Nu;', 'nu;', 'Oacute;', 'oacute;', 'Ocirc;', 'ocirc;', 'OElig;', 'oelig;', 'Ograve;', 'ograve;', 'oline;', 'Omega;', 'omega;', 'Omicron;', 'omicron;', 'oplus;', 'or;', 'ordf;', 'ordm;', 'Oslash;', 'oslash;', 'Otilde;', 'otilde;', 'otimes;', 'Ouml;', 'ouml;', 'para;', 'part;', 'permil;', 'perp;', 'Phi;', 'phi;', 'Pi;', 'pi;', 'piv;', 'plusmn;', 'pound;', 'Prime;', 'prime;', 'prod;', 'prop;', 'Psi;', 'psi;', 'quot;', 'radic;', 'rang;', 'raquo;', 'rArr;', 'rarr;', 'rceil;', 'rdquo;', 'real;', 'reg;', 'rfloor;', 'Rho;', 'rho;', 'rlm;', 'rsaquo;', 'rsquo;', 'sbquo;', 'Scaron;', 'scaron;', 'sdot;', 'sect;', 'shy;', 'Sigma;', 'sigma;', 'sigmaf;', 'sim;', 'spades;', 'sub;', 'sube;', 'sum;', 'sup;', 'sup1;', 'sup2;', 'sup3;', 'supe;', 'szlig;', 'Tau;', 'tau;', 'there4;', 'Theta;', 'theta;', 'thetasym;', 'thinsp;', 'THORN;', 'thorn;', 'tilde;', 'times;', 'trade;', 'Uacute;', 'uacute;', 'uArr;', 'uarr;', 'Ucirc;', 'ucirc;', 'Ugrave;', 'ugrave;', 'uml;', 'upsih;', 'Upsilon;', 'upsilon;', 'Uuml;', 'uuml;', 'weierp;', 'Xi;', 'xi;', 'Yacute;', 'yacute;', 'yen;', 'Yuml;', 'yuml;', 'Zeta;', 'zeta;', 'zwj;', 'zwnj;'];\n return values.map(function (value) {\n return {\n caption: value,\n snippet: value,\n meta: \"html entity\",\n score: Number.MAX_VALUE\n };\n });\n };\n }).call(HtmlCompletions.prototype);\n exports.HtmlCompletions = HtmlCompletions;\n});\nace.define(\"ace/mode/html\", [\"require\", \"exports\", \"module\", \"ace/lib/oop\", \"ace/lib/lang\", \"ace/mode/text\", \"ace/mode/javascript\", \"ace/mode/css\", \"ace/mode/html_highlight_rules\", \"ace/mode/behaviour/xml\", \"ace/mode/folding/html\", \"ace/mode/html_completions\", \"ace/worker/worker_client\"], function (acequire, exports, module) {\n \"use strict\";\n\n var oop = acequire(\"../lib/oop\");\n var lang = acequire(\"../lib/lang\");\n var TextMode = acequire(\"./text\").Mode;\n var JavaScriptMode = acequire(\"./javascript\").Mode;\n var CssMode = acequire(\"./css\").Mode;\n var HtmlHighlightRules = acequire(\"./html_highlight_rules\").HtmlHighlightRules;\n var XmlBehaviour = acequire(\"./behaviour/xml\").XmlBehaviour;\n var HtmlFoldMode = acequire(\"./folding/html\").FoldMode;\n var HtmlCompletions = acequire(\"./html_completions\").HtmlCompletions;\n var WorkerClient = acequire(\"../worker/worker_client\").WorkerClient;\n var voidElements = [\"area\", \"base\", \"br\", \"col\", \"embed\", \"hr\", \"img\", \"input\", \"keygen\", \"link\", \"meta\", \"menuitem\", \"param\", \"source\", \"track\", \"wbr\"];\n var optionalEndTags = [\"li\", \"dt\", \"dd\", \"p\", \"rt\", \"rp\", \"optgroup\", \"option\", \"colgroup\", \"td\", \"th\"];\n\n var Mode = function Mode(options) {\n this.fragmentContext = options && options.fragmentContext;\n this.HighlightRules = HtmlHighlightRules;\n this.$behaviour = new XmlBehaviour();\n this.$completer = new HtmlCompletions();\n this.createModeDelegates({\n \"js-\": JavaScriptMode,\n \"css-\": CssMode\n });\n this.foldingRules = new HtmlFoldMode(this.voidElements, lang.arrayToMap(optionalEndTags));\n };\n\n oop.inherits(Mode, TextMode);\n (function () {\n this.blockComment = {\n start: \"\"\n };\n this.voidElements = lang.arrayToMap(voidElements);\n\n this.getNextLineIndent = function (state, line, tab) {\n return this.$getIndent(line);\n };\n\n this.checkOutdent = function (state, line, input) {\n return false;\n };\n\n this.getCompletions = function (state, session, pos, prefix) {\n return this.$completer.getCompletions(state, session, pos, prefix);\n };\n\n this.createWorker = function (session) {\n if (this.constructor != Mode) return;\n var worker = new WorkerClient([\"ace\"], require(\"../worker/html\"), \"Worker\");\n worker.attachToDocument(session.getDocument());\n if (this.fragmentContext) worker.call(\"setOptions\", [{\n context: this.fragmentContext\n }]);\n worker.on(\"error\", function (e) {\n session.setAnnotations(e.data);\n });\n worker.on(\"terminate\", function () {\n session.clearAnnotations();\n });\n return worker;\n };\n\n this.$id = \"ace/mode/html\";\n }).call(Mode.prototype);\n exports.Mode = Mode;\n});\nace.define(\"ace/mode/markdown_highlight_rules\", [\"require\", \"exports\", \"module\", \"ace/lib/oop\", \"ace/lib/lang\", \"ace/mode/text_highlight_rules\", \"ace/mode/javascript_highlight_rules\", \"ace/mode/xml_highlight_rules\", \"ace/mode/html_highlight_rules\", \"ace/mode/css_highlight_rules\"], function (acequire, exports, module) {\n \"use strict\";\n\n var oop = acequire(\"../lib/oop\");\n var lang = acequire(\"../lib/lang\");\n var TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n var JavaScriptHighlightRules = acequire(\"./javascript_highlight_rules\").JavaScriptHighlightRules;\n var XmlHighlightRules = acequire(\"./xml_highlight_rules\").XmlHighlightRules;\n var HtmlHighlightRules = acequire(\"./html_highlight_rules\").HtmlHighlightRules;\n var CssHighlightRules = acequire(\"./css_highlight_rules\").CssHighlightRules;\n\n var escaped = function escaped(ch) {\n return \"(?:[^\" + lang.escapeRegExp(ch) + \"\\\\\\\\]|\\\\\\\\.)*\";\n };\n\n function github_embed(tag, prefix) {\n return {\n // Github style block\n token: \"support.function\",\n regex: \"^\\\\s*```\" + tag + \"\\\\s*$\",\n push: prefix + \"start\"\n };\n }\n\n var MarkdownHighlightRules = function MarkdownHighlightRules() {\n HtmlHighlightRules.call(this);\n this.$rules[\"start\"].unshift({\n token: \"empty_line\",\n regex: '^$',\n next: \"allowBlock\"\n }, {\n // h1\n token: \"markup.heading.1\",\n regex: \"^=+(?=\\\\s*$)\"\n }, {\n // h2\n token: \"markup.heading.2\",\n regex: \"^\\\\-+(?=\\\\s*$)\"\n }, {\n token: function token(value) {\n return \"markup.heading.\" + value.length;\n },\n regex: /^#{1,6}(?=\\s*[^ #]|\\s+#.)/,\n next: \"header\"\n }, github_embed(\"(?:javascript|js)\", \"jscode-\"), github_embed(\"xml\", \"xmlcode-\"), github_embed(\"html\", \"htmlcode-\"), github_embed(\"css\", \"csscode-\"), {\n // Github style block\n token: \"support.function\",\n regex: \"^\\\\s*```\\\\s*\\\\S*(?:{.*?\\\\})?\\\\s*$\",\n next: \"githubblock\"\n }, {\n // block quote\n token: \"string.blockquote\",\n regex: \"^\\\\s*>\\\\s*(?:[*+-]|\\\\d+\\\\.)?\\\\s+\",\n next: \"blockquote\"\n }, {\n // HR * - _\n token: \"constant\",\n regex: \"^ {0,2}(?:(?: ?\\\\* ?){3,}|(?: ?\\\\- ?){3,}|(?: ?\\\\_ ?){3,})\\\\s*$\",\n next: \"allowBlock\"\n }, {\n // list\n token: \"markup.list\",\n regex: \"^\\\\s{0,3}(?:[*+-]|\\\\d+\\\\.)\\\\s+\",\n next: \"listblock-start\"\n }, {\n include: \"basic\"\n });\n this.addRules({\n \"basic\": [{\n token: \"constant.language.escape\",\n regex: /\\\\[\\\\`*_{}\\[\\]()#+\\-.!]/\n }, {\n // code span `\n token: \"support.function\",\n regex: \"(`+)(.*?[^`])(\\\\1)\"\n }, {\n // reference\n token: [\"text\", \"constant\", \"text\", \"url\", \"string\", \"text\"],\n regex: \"^([ ]{0,3}\\\\[)([^\\\\]]+)(\\\\]:\\\\s*)([^ ]+)(\\\\s*(?:[\\\"][^\\\"]+[\\\"])?(\\\\s*))$\"\n }, {\n // link by reference\n token: [\"text\", \"string\", \"text\", \"constant\", \"text\"],\n regex: \"(\\\\[)(\" + escaped(\"]\") + \")(\\\\]\\\\s*\\\\[)(\" + escaped(\"]\") + \")(\\\\])\"\n }, {\n // link by url\n token: [\"text\", \"string\", \"text\", \"markup.underline\", \"string\", \"text\"],\n regex: \"(\\\\[)(\" + // [\n escaped(\"]\") + // link text\n \")(\\\\]\\\\()\" + // ](\n '((?:[^\\\\)\\\\s\\\\\\\\]|\\\\\\\\.|\\\\s(?=[^\"]))*)' + // href\n '(\\\\s*\"' + escaped('\"') + '\"\\\\s*)?' + // \"title\"\n \"(\\\\))\" // )\n\n }, {\n // strong ** __\n token: \"string.strong\",\n regex: \"([*]{2}|[_]{2}(?=\\\\S))(.*?\\\\S[*_]*)(\\\\1)\"\n }, {\n // emphasis * _\n token: \"string.emphasis\",\n regex: \"([*]|[_](?=\\\\S))(.*?\\\\S[*_]*)(\\\\1)\"\n }, {\n //\n token: [\"text\", \"url\", \"text\"],\n regex: \"(<)(\" + \"(?:https?|ftp|dict):[^'\\\">\\\\s]+\" + \"|\" + \"(?:mailto:)?[-.\\\\w]+\\\\@[-a-z0-9]+(?:\\\\.[-a-z0-9]+)*\\\\.[a-z]+\" + \")(>)\"\n }],\n \"allowBlock\": [{\n token: \"support.function\",\n regex: \"^ {4}.+\",\n next: \"allowBlock\"\n }, {\n token: \"empty_line\",\n regex: '^$',\n next: \"allowBlock\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"start\"\n }],\n \"header\": [{\n regex: \"$\",\n next: \"start\"\n }, {\n include: \"basic\"\n }, {\n defaultToken: \"heading\"\n }],\n \"listblock-start\": [{\n token: \"support.variable\",\n regex: /(?:\\[[ x]\\])?/,\n next: \"listblock\"\n }],\n \"listblock\": [{\n // Lists only escape on completely blank lines.\n token: \"empty_line\",\n regex: \"^$\",\n next: \"start\"\n }, {\n // list\n token: \"markup.list\",\n regex: \"^\\\\s{0,3}(?:[*+-]|\\\\d+\\\\.)\\\\s+\",\n next: \"listblock-start\"\n }, {\n include: \"basic\",\n noEscape: true\n }, {\n // Github style block\n token: \"support.function\",\n regex: \"^\\\\s*```\\\\s*[a-zA-Z]*(?:{.*?\\\\})?\\\\s*$\",\n next: \"githubblock\"\n }, {\n defaultToken: \"list\" //do not use markup.list to allow stling leading `*` differntly\n\n }],\n \"blockquote\": [{\n // Blockquotes only escape on blank lines.\n token: \"empty_line\",\n regex: \"^\\\\s*$\",\n next: \"start\"\n }, {\n // block quote\n token: \"string.blockquote\",\n regex: \"^\\\\s*>\\\\s*(?:[*+-]|\\\\d+\\\\.)?\\\\s+\",\n next: \"blockquote\"\n }, {\n include: \"basic\",\n noEscape: true\n }, {\n defaultToken: \"string.blockquote\"\n }],\n \"githubblock\": [{\n token: \"support.function\",\n regex: \"^\\\\s*```\",\n next: \"start\"\n }, {\n defaultToken: \"support.function\"\n }]\n });\n this.embedRules(JavaScriptHighlightRules, \"jscode-\", [{\n token: \"support.function\",\n regex: \"^\\\\s*```\",\n next: \"pop\"\n }]);\n this.embedRules(HtmlHighlightRules, \"htmlcode-\", [{\n token: \"support.function\",\n regex: \"^\\\\s*```\",\n next: \"pop\"\n }]);\n this.embedRules(CssHighlightRules, \"csscode-\", [{\n token: \"support.function\",\n regex: \"^\\\\s*```\",\n next: \"pop\"\n }]);\n this.embedRules(XmlHighlightRules, \"xmlcode-\", [{\n token: \"support.function\",\n regex: \"^\\\\s*```\",\n next: \"pop\"\n }]);\n this.normalizeRules();\n };\n\n oop.inherits(MarkdownHighlightRules, TextHighlightRules);\n exports.MarkdownHighlightRules = MarkdownHighlightRules;\n});\nace.define(\"ace/mode/folding/markdown\", [\"require\", \"exports\", \"module\", \"ace/lib/oop\", \"ace/mode/folding/fold_mode\", \"ace/range\"], function (acequire, exports, module) {\n \"use strict\";\n\n var oop = acequire(\"../../lib/oop\");\n var BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\n var Range = acequire(\"../../range\").Range;\n\n var FoldMode = exports.FoldMode = function () {};\n\n oop.inherits(FoldMode, BaseFoldMode);\n (function () {\n this.foldingStartMarker = /^(?:[=-]+\\s*$|#{1,6} |`{3})/;\n\n this.getFoldWidget = function (session, foldStyle, row) {\n var line = session.getLine(row);\n if (!this.foldingStartMarker.test(line)) return \"\";\n\n if (line[0] == \"`\") {\n if (session.bgTokenizer.getState(row) == \"start\") return \"end\";\n return \"start\";\n }\n\n return \"start\";\n };\n\n this.getFoldWidgetRange = function (session, foldStyle, row) {\n var line = session.getLine(row);\n var startColumn = line.length;\n var maxRow = session.getLength();\n var startRow = row;\n var endRow = row;\n if (!line.match(this.foldingStartMarker)) return;\n\n if (line[0] == \"`\") {\n if (session.bgTokenizer.getState(row) !== \"start\") {\n while (++row < maxRow) {\n line = session.getLine(row);\n if (line[0] == \"`\" & line.substring(0, 3) == \"```\") break;\n }\n\n return new Range(startRow, startColumn, row, 0);\n } else {\n while (row-- > 0) {\n line = session.getLine(row);\n if (line[0] == \"`\" & line.substring(0, 3) == \"```\") break;\n }\n\n return new Range(row, line.length, startRow, 0);\n }\n }\n\n var token;\n\n function isHeading(row) {\n token = session.getTokens(row)[0];\n return token && token.type.lastIndexOf(heading, 0) === 0;\n }\n\n var heading = \"markup.heading\";\n\n function getLevel() {\n var ch = token.value[0];\n if (ch == \"=\") return 6;\n if (ch == \"-\") return 5;\n return 7 - token.value.search(/[^#]/);\n }\n\n if (isHeading(row)) {\n var startHeadingLevel = getLevel();\n\n while (++row < maxRow) {\n if (!isHeading(row)) continue;\n var level = getLevel();\n if (level >= startHeadingLevel) break;\n }\n\n endRow = row - (!token || [\"=\", \"-\"].indexOf(token.value[0]) == -1 ? 1 : 2);\n\n if (endRow > startRow) {\n while (endRow > startRow && /^\\s*$/.test(session.getLine(endRow))) {\n endRow--;\n }\n }\n\n if (endRow > startRow) {\n var endColumn = session.getLine(endRow).length;\n return new Range(startRow, startColumn, endRow, endColumn);\n }\n }\n };\n }).call(FoldMode.prototype);\n});\nace.define(\"ace/mode/markdown\", [\"require\", \"exports\", \"module\", \"ace/lib/oop\", \"ace/mode/text\", \"ace/mode/javascript\", \"ace/mode/xml\", \"ace/mode/html\", \"ace/mode/markdown_highlight_rules\", \"ace/mode/folding/markdown\"], function (acequire, exports, module) {\n \"use strict\";\n\n var oop = acequire(\"../lib/oop\");\n var TextMode = acequire(\"./text\").Mode;\n var JavaScriptMode = acequire(\"./javascript\").Mode;\n var XmlMode = acequire(\"./xml\").Mode;\n var HtmlMode = acequire(\"./html\").Mode;\n var MarkdownHighlightRules = acequire(\"./markdown_highlight_rules\").MarkdownHighlightRules;\n var MarkdownFoldMode = acequire(\"./folding/markdown\").FoldMode;\n\n var Mode = function Mode() {\n this.HighlightRules = MarkdownHighlightRules;\n this.createModeDelegates({\n \"js-\": JavaScriptMode,\n \"xml-\": XmlMode,\n \"html-\": HtmlMode\n });\n this.foldingRules = new MarkdownFoldMode();\n this.$behaviour = this.$defaultBehaviour;\n };\n\n oop.inherits(Mode, TextMode);\n (function () {\n this.type = \"text\";\n this.blockComment = {\n start: \"\"\n };\n\n this.getNextLineIndent = function (state, line, tab) {\n if (state == \"listblock\") {\n var match = /^(\\s*)(?:([-+*])|(\\d+)\\.)(\\s+)/.exec(line);\n if (!match) return \"\";\n var marker = match[2];\n if (!marker) marker = parseInt(match[3], 10) + 1 + \".\";\n return match[1] + marker + match[4];\n } else {\n return this.$getIndent(line);\n }\n };\n\n this.$id = \"ace/mode/markdown\";\n }).call(Mode.prototype);\n exports.Mode = Mode;\n});","ace.define(\"ace/mode/doc_comment_highlight_rules\", [\"require\", \"exports\", \"module\", \"ace/lib/oop\", \"ace/mode/text_highlight_rules\"], function (acequire, exports, module) {\n \"use strict\";\n\n var oop = acequire(\"../lib/oop\");\n var TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\n var DocCommentHighlightRules = function DocCommentHighlightRules() {\n this.$rules = {\n \"start\": [{\n token: \"comment.doc.tag\",\n regex: \"@[\\\\w\\\\d_]+\" // TODO: fix email addresses\n\n }, DocCommentHighlightRules.getTagRule(), {\n defaultToken: \"comment.doc\",\n caseInsensitive: true\n }]\n };\n };\n\n oop.inherits(DocCommentHighlightRules, TextHighlightRules);\n\n DocCommentHighlightRules.getTagRule = function (start) {\n return {\n token: \"comment.doc.tag.storage.type\",\n regex: \"\\\\b(?:TODO|FIXME|XXX|HACK)\\\\b\"\n };\n };\n\n DocCommentHighlightRules.getStartRule = function (start) {\n return {\n token: \"comment.doc\",\n // doc comment\n regex: \"\\\\/\\\\*(?=\\\\*)\",\n next: start\n };\n };\n\n DocCommentHighlightRules.getEndRule = function (start) {\n return {\n token: \"comment.doc\",\n // closing comment\n regex: \"\\\\*\\\\/\",\n next: start\n };\n };\n\n exports.DocCommentHighlightRules = DocCommentHighlightRules;\n});\nace.define(\"ace/mode/mysql_highlight_rules\", [\"require\", \"exports\", \"module\", \"ace/lib/oop\", \"ace/lib/lang\", \"ace/mode/doc_comment_highlight_rules\", \"ace/mode/text_highlight_rules\"], function (acequire, exports, module) {\n var oop = acequire(\"../lib/oop\");\n var lang = acequire(\"../lib/lang\");\n var DocCommentHighlightRules = acequire(\"./doc_comment_highlight_rules\").DocCommentHighlightRules;\n var TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\n var MysqlHighlightRules = function MysqlHighlightRules() {\n var mySqlKeywords =\n /*sql*/\n \"alter|and|as|asc|between|count|create|delete|desc|distinct|drop|from|having|in|insert|into|is|join|like|not|on|or|order|select|set|table|union|update|values|where\" + \"|accessible|action|add|after|algorithm|all|analyze|asensitive|at|authors|auto_increment|autocommit|avg|avg_row_length|before|binary|binlog|both|btree|cache|call|cascade|cascaded|case|catalog_name|chain|change|changed|character|check|checkpoint|checksum|class_origin|client_statistics|close|coalesce|code|collate|collation|collations|column|columns|comment|commit|committed|completion|concurrent|condition|connection|consistent|constraint|contains|continue|contributors|convert|cross|current_date|current_time|current_timestamp|current_user|cursor|data|database|databases|day_hour|day_microsecond|day_minute|day_second|deallocate|dec|declare|default|delay_key_write|delayed|delimiter|des_key_file|describe|deterministic|dev_pop|dev_samp|deviance|directory|disable|discard|distinctrow|div|dual|dumpfile|each|elseif|enable|enclosed|end|ends|engine|engines|enum|errors|escape|escaped|even|event|events|every|execute|exists|exit|explain|extended|fast|fetch|field|fields|first|flush|for|force|foreign|found_rows|full|fulltext|function|general|global|grant|grants|group|groupby_concat|handler|hash|help|high_priority|hosts|hour_microsecond|hour_minute|hour_second|if|ignore|ignore_server_ids|import|index|index_statistics|infile|inner|innodb|inout|insensitive|insert_method|install|interval|invoker|isolation|iterate|key|keys|kill|language|last|leading|leave|left|level|limit|linear|lines|list|load|local|localtime|localtimestamp|lock|logs|low_priority|master|master_heartbeat_period|master_ssl_verify_server_cert|masters|match|max|max_rows|maxvalue|message_text|middleint|migrate|min|min_rows|minute_microsecond|minute_second|mod|mode|modifies|modify|mutex|mysql_errno|natural|next|no|no_write_to_binlog|offline|offset|one|online|open|optimize|option|optionally|out|outer|outfile|pack_keys|parser|partition|partitions|password|phase|plugin|plugins|prepare|preserve|prev|primary|privileges|procedure|processlist|profile|profiles|purge|query|quick|range|read|read_write|reads|real|rebuild|recover|references|regexp|relaylog|release|remove|rename|reorganize|repair|repeatable|replace|acequire|resignal|restrict|resume|return|returns|revoke|right|rlike|rollback|rollup|row|row_format|rtree|savepoint|schedule|schema|schema_name|schemas|second_microsecond|security|sensitive|separator|serializable|server|session|share|show|signal|slave|slow|smallint|snapshot|soname|spatial|specific|sql|sql_big_result|sql_buffer_result|sql_cache|sql_calc_found_rows|sql_no_cache|sql_small_result|sqlexception|sqlstate|sqlwarning|ssl|start|starting|starts|status|std|stddev|stddev_pop|stddev_samp|storage|straight_join|subclass_origin|sum|suspend|table_name|table_statistics|tables|tablespace|temporary|terminated|to|trailing|transaction|trigger|triggers|truncate|uncommitted|undo|uninstall|unique|unlock|upgrade|usage|use|use_frm|user|user_resources|user_statistics|using|utc_date|utc_time|utc_timestamp|value|variables|varying|view|views|warnings|when|while|with|work|write|xa|xor|year_month|zerofill|begin|do|then|else|loop|repeat\";\n var builtins = \"by|bool|boolean|bit|blob|decimal|double|enum|float|long|longblob|longtext|medium|mediumblob|mediumint|mediumtext|time|timestamp|tinyblob|tinyint|tinytext|text|bigint|int|int1|int2|int3|int4|int8|integer|float|float4|float8|double|char|varbinary|varchar|varcharacter|precision|date|datetime|year|unsigned|signed|numeric|ucase|lcase|mid|len|round|rank|now|format|coalesce|ifnull|isnull|nvl\";\n var variable = \"charset|clear|connect|edit|ego|exit|go|help|nopager|notee|nowarning|pager|print|prompt|quit|rehash|source|status|system|tee\";\n var keywordMapper = this.createKeywordMapper({\n \"support.function\": builtins,\n \"keyword\": mySqlKeywords,\n \"constant\": \"false|true|null|unknown|date|time|timestamp|ODBCdotTable|zerolessFloat\",\n \"variable.language\": variable\n }, \"identifier\", true);\n\n function string(rule) {\n var start = rule.start;\n var escapeSeq = rule.escape;\n return {\n token: \"string.start\",\n regex: start,\n next: [{\n token: \"constant.language.escape\",\n regex: escapeSeq\n }, {\n token: \"string.end\",\n next: \"start\",\n regex: start\n }, {\n defaultToken: \"string\"\n }]\n };\n }\n\n this.$rules = {\n \"start\": [{\n token: \"comment\",\n regex: \"(?:-- |#).*$\"\n }, string({\n start: '\"',\n escape: /\\\\[0'\"bnrtZ\\\\%_]?/\n }), string({\n start: \"'\",\n escape: /\\\\[0'\"bnrtZ\\\\%_]?/\n }), DocCommentHighlightRules.getStartRule(\"doc-start\"), {\n token: \"comment\",\n // multi line comment\n regex: /\\/\\*/,\n next: \"comment\"\n }, {\n token: \"constant.numeric\",\n // hex\n regex: /0[xX][0-9a-fA-F]+|[xX]'[0-9a-fA-F]+'|0[bB][01]+|[bB]'[01]+'/\n }, {\n token: \"constant.numeric\",\n // float\n regex: \"[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?\\\\b\"\n }, {\n token: keywordMapper,\n regex: \"[a-zA-Z_$][a-zA-Z0-9_$]*\\\\b\"\n }, {\n token: \"constant.class\",\n regex: \"@@?[a-zA-Z_$][a-zA-Z0-9_$]*\\\\b\"\n }, {\n token: \"constant.buildin\",\n regex: \"`[^`]*`\"\n }, {\n token: \"keyword.operator\",\n regex: \"\\\\+|\\\\-|\\\\/|\\\\/\\\\/|%|<@>|@>|<@|&|\\\\^|~|<|>|<=|=>|==|!=|<>|=\"\n }, {\n token: \"paren.lparen\",\n regex: \"[\\\\(]\"\n }, {\n token: \"paren.rparen\",\n regex: \"[\\\\)]\"\n }, {\n token: \"text\",\n regex: \"\\\\s+\"\n }],\n \"comment\": [{\n token: \"comment\",\n regex: \"\\\\*\\\\/\",\n next: \"start\"\n }, {\n defaultToken: \"comment\"\n }]\n };\n this.embedRules(DocCommentHighlightRules, \"doc-\", [DocCommentHighlightRules.getEndRule(\"start\")]);\n this.normalizeRules();\n };\n\n oop.inherits(MysqlHighlightRules, TextHighlightRules);\n exports.MysqlHighlightRules = MysqlHighlightRules;\n});\nace.define(\"ace/mode/mysql\", [\"require\", \"exports\", \"module\", \"ace/lib/oop\", \"ace/mode/text\", \"ace/mode/mysql_highlight_rules\"], function (acequire, exports, module) {\n var oop = acequire(\"../lib/oop\");\n var TextMode = acequire(\"../mode/text\").Mode;\n var MysqlHighlightRules = acequire(\"./mysql_highlight_rules\").MysqlHighlightRules;\n\n var Mode = function Mode() {\n this.HighlightRules = MysqlHighlightRules;\n this.$behaviour = this.$defaultBehaviour;\n };\n\n oop.inherits(Mode, TextMode);\n (function () {\n this.lineCommentStart = [\"--\", \"#\"]; // todo space\n\n this.blockComment = {\n start: \"/*\",\n end: \"*/\"\n };\n this.$id = \"ace/mode/mysql\";\n }).call(Mode.prototype);\n exports.Mode = Mode;\n});","ace.define(\"ace/mode/plain_text\", [\"require\", \"exports\", \"module\", \"ace/lib/oop\", \"ace/mode/text\", \"ace/mode/text_highlight_rules\", \"ace/mode/behaviour\"], function (acequire, exports, module) {\n \"use strict\";\n\n var oop = acequire(\"../lib/oop\");\n var TextMode = acequire(\"./text\").Mode;\n var TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n var Behaviour = acequire(\"./behaviour\").Behaviour;\n\n var Mode = function Mode() {\n this.HighlightRules = TextHighlightRules;\n this.$behaviour = new Behaviour();\n };\n\n oop.inherits(Mode, TextMode);\n (function () {\n this.type = \"text\";\n\n this.getNextLineIndent = function (state, line, tab) {\n return '';\n };\n\n this.$id = \"ace/mode/plain_text\";\n }).call(Mode.prototype);\n exports.Mode = Mode;\n});","ace.define(\"ace/mode/python_highlight_rules\", [\"require\", \"exports\", \"module\", \"ace/lib/oop\", \"ace/mode/text_highlight_rules\"], function (acequire, exports, module) {\n \"use strict\";\n\n var oop = acequire(\"../lib/oop\");\n var TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\n var PythonHighlightRules = function PythonHighlightRules() {\n var keywords = \"and|as|assert|break|class|continue|def|del|elif|else|except|exec|\" + \"finally|for|from|global|if|import|in|is|lambda|not|or|pass|print|\" + \"raise|return|try|while|with|yield|async|await\";\n var builtinConstants = \"True|False|None|NotImplemented|Ellipsis|__debug__\";\n var builtinFunctions = \"abs|divmod|input|open|staticmethod|all|enumerate|int|ord|str|any|\" + \"eval|isinstance|pow|sum|basestring|execfile|issubclass|print|super|\" + \"binfile|iter|property|tuple|bool|filter|len|range|type|bytearray|\" + \"float|list|raw_input|unichr|callable|format|locals|reduce|unicode|\" + \"chr|frozenset|long|reload|vars|classmethod|getattr|map|repr|xrange|\" + \"cmp|globals|max|reversed|zip|compile|hasattr|memoryview|round|\" + \"__import__|complex|hash|min|set|apply|delattr|help|next|setattr|\" + \"buffer|dict|hex|object|slice|coerce|dir|id|oct|sorted|intern\";\n var keywordMapper = this.createKeywordMapper({\n \"invalid.deprecated\": \"debugger\",\n \"support.function\": builtinFunctions,\n \"constant.language\": builtinConstants,\n \"keyword\": keywords\n }, \"identifier\");\n var strPre = \"(?:r|u|ur|R|U|UR|Ur|uR)?\";\n var decimalInteger = \"(?:(?:[1-9]\\\\d*)|(?:0))\";\n var octInteger = \"(?:0[oO]?[0-7]+)\";\n var hexInteger = \"(?:0[xX][\\\\dA-Fa-f]+)\";\n var binInteger = \"(?:0[bB][01]+)\";\n var integer = \"(?:\" + decimalInteger + \"|\" + octInteger + \"|\" + hexInteger + \"|\" + binInteger + \")\";\n var exponent = \"(?:[eE][+-]?\\\\d+)\";\n var fraction = \"(?:\\\\.\\\\d+)\";\n var intPart = \"(?:\\\\d+)\";\n var pointFloat = \"(?:(?:\" + intPart + \"?\" + fraction + \")|(?:\" + intPart + \"\\\\.))\";\n var exponentFloat = \"(?:(?:\" + pointFloat + \"|\" + intPart + \")\" + exponent + \")\";\n var floatNumber = \"(?:\" + exponentFloat + \"|\" + pointFloat + \")\";\n var stringEscape = \"\\\\\\\\(x[0-9A-Fa-f]{2}|[0-7]{3}|[\\\\\\\\abfnrtv'\\\"]|U[0-9A-Fa-f]{8}|u[0-9A-Fa-f]{4})\";\n this.$rules = {\n \"start\": [{\n token: \"comment\",\n regex: \"#.*$\"\n }, {\n token: \"string\",\n // multi line \"\"\" string start\n regex: strPre + '\"{3}',\n next: \"qqstring3\"\n }, {\n token: \"string\",\n // \" string\n regex: strPre + '\"(?=.)',\n next: \"qqstring\"\n }, {\n token: \"string\",\n // multi line ''' string start\n regex: strPre + \"'{3}\",\n next: \"qstring3\"\n }, {\n token: \"string\",\n // ' string\n regex: strPre + \"'(?=.)\",\n next: \"qstring\"\n }, {\n token: \"constant.numeric\",\n // imaginary\n regex: \"(?:\" + floatNumber + \"|\\\\d+)[jJ]\\\\b\"\n }, {\n token: \"constant.numeric\",\n // float\n regex: floatNumber\n }, {\n token: \"constant.numeric\",\n // long integer\n regex: integer + \"[lL]\\\\b\"\n }, {\n token: \"constant.numeric\",\n // integer\n regex: integer + \"\\\\b\"\n }, {\n token: keywordMapper,\n regex: \"[a-zA-Z_$][a-zA-Z0-9_$]*\\\\b\"\n }, {\n token: \"keyword.operator\",\n regex: \"\\\\+|\\\\-|\\\\*|\\\\*\\\\*|\\\\/|\\\\/\\\\/|%|<<|>>|&|\\\\||\\\\^|~|<|>|<=|=>|==|!=|<>|=\"\n }, {\n token: \"paren.lparen\",\n regex: \"[\\\\[\\\\(\\\\{]\"\n }, {\n token: \"paren.rparen\",\n regex: \"[\\\\]\\\\)\\\\}]\"\n }, {\n token: \"text\",\n regex: \"\\\\s+\"\n }],\n \"qqstring3\": [{\n token: \"constant.language.escape\",\n regex: stringEscape\n }, {\n token: \"string\",\n // multi line \"\"\" string end\n regex: '\"{3}',\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }],\n \"qstring3\": [{\n token: \"constant.language.escape\",\n regex: stringEscape\n }, {\n token: \"string\",\n // multi line ''' string end\n regex: \"'{3}\",\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }],\n \"qqstring\": [{\n token: \"constant.language.escape\",\n regex: stringEscape\n }, {\n token: \"string\",\n regex: \"\\\\\\\\$\",\n next: \"qqstring\"\n }, {\n token: \"string\",\n regex: '\"|$',\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }],\n \"qstring\": [{\n token: \"constant.language.escape\",\n regex: stringEscape\n }, {\n token: \"string\",\n regex: \"\\\\\\\\$\",\n next: \"qstring\"\n }, {\n token: \"string\",\n regex: \"'|$\",\n next: \"start\"\n }, {\n defaultToken: \"string\"\n }]\n };\n };\n\n oop.inherits(PythonHighlightRules, TextHighlightRules);\n exports.PythonHighlightRules = PythonHighlightRules;\n});\nace.define(\"ace/mode/folding/pythonic\", [\"require\", \"exports\", \"module\", \"ace/lib/oop\", \"ace/mode/folding/fold_mode\"], function (acequire, exports, module) {\n \"use strict\";\n\n var oop = acequire(\"../../lib/oop\");\n var BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\n\n var FoldMode = exports.FoldMode = function (markers) {\n this.foldingStartMarker = new RegExp(\"([\\\\[{])(?:\\\\s*)$|(\" + markers + \")(?:\\\\s*)(?:#.*)?$\");\n };\n\n oop.inherits(FoldMode, BaseFoldMode);\n (function () {\n this.getFoldWidgetRange = function (session, foldStyle, row) {\n var line = session.getLine(row);\n var match = line.match(this.foldingStartMarker);\n\n if (match) {\n if (match[1]) return this.openingBracketBlock(session, match[1], row, match.index);\n if (match[2]) return this.indentationBlock(session, row, match.index + match[2].length);\n return this.indentationBlock(session, row);\n }\n };\n }).call(FoldMode.prototype);\n});\nace.define(\"ace/mode/python\", [\"require\", \"exports\", \"module\", \"ace/lib/oop\", \"ace/mode/text\", \"ace/mode/python_highlight_rules\", \"ace/mode/folding/pythonic\", \"ace/range\"], function (acequire, exports, module) {\n \"use strict\";\n\n var oop = acequire(\"../lib/oop\");\n var TextMode = acequire(\"./text\").Mode;\n var PythonHighlightRules = acequire(\"./python_highlight_rules\").PythonHighlightRules;\n var PythonFoldMode = acequire(\"./folding/pythonic\").FoldMode;\n var Range = acequire(\"../range\").Range;\n\n var Mode = function Mode() {\n this.HighlightRules = PythonHighlightRules;\n this.foldingRules = new PythonFoldMode(\"\\\\:\");\n this.$behaviour = this.$defaultBehaviour;\n };\n\n oop.inherits(Mode, TextMode);\n (function () {\n this.lineCommentStart = \"#\";\n\n this.getNextLineIndent = function (state, line, tab) {\n var indent = this.$getIndent(line);\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n\n if (tokens.length && tokens[tokens.length - 1].type == \"comment\") {\n return indent;\n }\n\n if (state == \"start\") {\n var match = line.match(/^.*[\\{\\(\\[:]\\s*$/);\n\n if (match) {\n indent += tab;\n }\n }\n\n return indent;\n };\n\n var outdents = {\n \"pass\": 1,\n \"return\": 1,\n \"raise\": 1,\n \"break\": 1,\n \"continue\": 1\n };\n\n this.checkOutdent = function (state, line, input) {\n if (input !== \"\\r\\n\" && input !== \"\\r\" && input !== \"\\n\") return false;\n var tokens = this.getTokenizer().getLineTokens(line.trim(), state).tokens;\n if (!tokens) return false;\n\n do {\n var last = tokens.pop();\n } while (last && (last.type == \"comment\" || last.type == \"text\" && last.value.match(/^\\s+$/)));\n\n if (!last) return false;\n return last.type == \"keyword\" && outdents[last.value];\n };\n\n this.autoOutdent = function (state, doc, row) {\n row += 1;\n var indent = this.$getIndent(doc.getLine(row));\n var tab = doc.getTabString();\n if (indent.slice(-tab.length) == tab) doc.remove(new Range(row, indent.length - tab.length, row, indent.length));\n };\n\n this.$id = \"ace/mode/python\";\n }).call(Mode.prototype);\n exports.Mode = Mode;\n});","ace.define(\"ace/mode/ruby_highlight_rules\", [\"require\", \"exports\", \"module\", \"ace/lib/oop\", \"ace/mode/text_highlight_rules\"], function (acequire, exports, module) {\n \"use strict\";\n\n var oop = acequire(\"../lib/oop\");\n var TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n var constantOtherSymbol = exports.constantOtherSymbol = {\n token: \"constant.other.symbol.ruby\",\n // symbol\n regex: \"[:](?:[A-Za-z_]|[@$](?=[a-zA-Z0-9_]))[a-zA-Z0-9_]*[!=?]?\"\n };\n var qString = exports.qString = {\n token: \"string\",\n // single line\n regex: \"['](?:(?:\\\\\\\\.)|(?:[^'\\\\\\\\]))*?[']\"\n };\n var qqString = exports.qqString = {\n token: \"string\",\n // single line\n regex: '[\"](?:(?:\\\\\\\\.)|(?:[^\"\\\\\\\\]))*?[\"]'\n };\n var tString = exports.tString = {\n token: \"string\",\n // backtick string\n regex: \"[`](?:(?:\\\\\\\\.)|(?:[^'\\\\\\\\]))*?[`]\"\n };\n var constantNumericHex = exports.constantNumericHex = {\n token: \"constant.numeric\",\n // hex\n regex: \"0[xX][0-9a-fA-F](?:[0-9a-fA-F]|_(?=[0-9a-fA-F]))*\\\\b\"\n };\n var constantNumericFloat = exports.constantNumericFloat = {\n token: \"constant.numeric\",\n // float\n regex: \"[+-]?\\\\d(?:\\\\d|_(?=\\\\d))*(?:(?:\\\\.\\\\d(?:\\\\d|_(?=\\\\d))*)?(?:[eE][+-]?\\\\d+)?)?\\\\b\"\n };\n var instanceVariable = exports.instanceVariable = {\n token: \"variable.instance\",\n // instance variable\n regex: \"@{1,2}[a-zA-Z_\\\\d]+\"\n };\n\n var RubyHighlightRules = function RubyHighlightRules() {\n var builtinFunctions = \"abort|Array|assert|assert_equal|assert_not_equal|assert_same|assert_not_same|\" + \"assert_nil|assert_not_nil|assert_match|assert_no_match|assert_in_delta|assert_throws|\" + \"assert_raise|assert_nothing_raised|assert_instance_of|assert_kind_of|assert_respond_to|\" + \"assert_operator|assert_send|assert_difference|assert_no_difference|assert_recognizes|\" + \"assert_generates|assert_response|assert_redirected_to|assert_template|assert_select|\" + \"assert_select_email|assert_select_rjs|assert_select_encoded|css_select|at_exit|\" + \"attr|attr_writer|attr_reader|attr_accessor|attr_accessible|autoload|binding|block_given?|callcc|\" + \"caller|catch|chomp|chomp!|chop|chop!|defined?|delete_via_redirect|eval|exec|exit|\" + \"exit!|fail|Float|flunk|follow_redirect!|fork|form_for|form_tag|format|gets|global_variables|gsub|\" + \"gsub!|get_via_redirect|host!|https?|https!|include|Integer|lambda|link_to|\" + \"link_to_unless_current|link_to_function|link_to_remote|load|local_variables|loop|open|open_session|\" + \"p|print|printf|proc|putc|puts|post_via_redirect|put_via_redirect|raise|rand|\" + \"raw|readline|readlines|redirect?|request_via_redirect|acequire|scan|select|\" + \"set_trace_func|sleep|split|sprintf|srand|String|stylesheet_link_tag|syscall|system|sub|sub!|test|\" + \"throw|trace_var|trap|untrace_var|atan2|cos|exp|frexp|ldexp|log|log10|sin|sqrt|tan|\" + \"render|javascript_include_tag|csrf_meta_tag|label_tag|text_field_tag|submit_tag|check_box_tag|\" + \"content_tag|radio_button_tag|text_area_tag|password_field_tag|hidden_field_tag|\" + \"fields_for|select_tag|options_for_select|options_from_collection_for_select|collection_select|\" + \"time_zone_select|select_date|select_time|select_datetime|date_select|time_select|datetime_select|\" + \"select_year|select_month|select_day|select_hour|select_minute|select_second|file_field_tag|\" + \"file_field|respond_to|skip_before_filter|around_filter|after_filter|verify|\" + \"protect_from_forgery|rescue_from|helper_method|redirect_to|before_filter|\" + \"send_data|send_file|validates_presence_of|validates_uniqueness_of|validates_length_of|\" + \"validates_format_of|validates_acceptance_of|validates_associated|validates_exclusion_of|\" + \"validates_inclusion_of|validates_numericality_of|validates_with|validates_each|\" + \"authenticate_or_request_with_http_basic|authenticate_or_request_with_http_digest|\" + \"filter_parameter_logging|match|get|post|resources|redirect|scope|assert_routing|\" + \"translate|localize|extract_locale_from_tld|caches_page|expire_page|caches_action|expire_action|\" + \"cache|expire_fragment|expire_cache_for|observe|cache_sweeper|\" + \"has_many|has_one|belongs_to|has_and_belongs_to_many\";\n var keywords = \"alias|and|BEGIN|begin|break|case|class|def|defined|do|else|elsif|END|end|ensure|\" + \"__FILE__|finally|for|gem|if|in|__LINE__|module|next|not|or|private|protected|public|\" + \"redo|rescue|retry|return|super|then|undef|unless|until|when|while|yield\";\n var buildinConstants = \"true|TRUE|false|FALSE|nil|NIL|ARGF|ARGV|DATA|ENV|RUBY_PLATFORM|RUBY_RELEASE_DATE|\" + \"RUBY_VERSION|STDERR|STDIN|STDOUT|TOPLEVEL_BINDING\";\n var builtinVariables = \"$DEBUG|$defout|$FILENAME|$LOAD_PATH|$SAFE|$stdin|$stdout|$stderr|$VERBOSE|\" + \"$!|root_url|flash|session|cookies|params|request|response|logger|self\";\n var keywordMapper = this.$keywords = this.createKeywordMapper({\n \"keyword\": keywords,\n \"constant.language\": buildinConstants,\n \"variable.language\": builtinVariables,\n \"support.function\": builtinFunctions,\n \"invalid.deprecated\": \"debugger\" // TODO is this a remnant from js mode?\n\n }, \"identifier\");\n this.$rules = {\n \"start\": [{\n token: \"comment\",\n regex: \"#.*$\"\n }, {\n token: \"comment\",\n // multi line comment\n regex: \"^=begin(?:$|\\\\s.*$)\",\n next: \"comment\"\n }, {\n token: \"string.regexp\",\n regex: \"[/](?:(?:\\\\[(?:\\\\\\\\]|[^\\\\]])+\\\\])|(?:\\\\\\\\/|[^\\\\]/]))*[/]\\\\w*\\\\s*(?=[).,;]|$)\"\n }, [{\n regex: \"[{}]\",\n onMatch: function onMatch(val, state, stack) {\n this.next = val == \"{\" ? this.nextState : \"\";\n\n if (val == \"{\" && stack.length) {\n stack.unshift(\"start\", state);\n return \"paren.lparen\";\n }\n\n if (val == \"}\" && stack.length) {\n stack.shift();\n this.next = stack.shift();\n if (this.next.indexOf(\"string\") != -1) return \"paren.end\";\n }\n\n return val == \"{\" ? \"paren.lparen\" : \"paren.rparen\";\n },\n nextState: \"start\"\n }, {\n token: \"string.start\",\n regex: /\"/,\n push: [{\n token: \"constant.language.escape\",\n regex: /\\\\(?:[nsrtvfbae'\"\\\\]|c.|C-.|M-.(?:\\\\C-.)?|[0-7]{3}|x[\\da-fA-F]{2}|u[\\da-fA-F]{4})/\n }, {\n token: \"paren.start\",\n regex: /#{/,\n push: \"start\"\n }, {\n token: \"string.end\",\n regex: /\"/,\n next: \"pop\"\n }, {\n defaultToken: \"string\"\n }]\n }, {\n token: \"string.start\",\n regex: /`/,\n push: [{\n token: \"constant.language.escape\",\n regex: /\\\\(?:[nsrtvfbae'\"\\\\]|c.|C-.|M-.(?:\\\\C-.)?|[0-7]{3}|x[\\da-fA-F]{2}|u[\\da-fA-F]{4})/\n }, {\n token: \"paren.start\",\n regex: /#{/,\n push: \"start\"\n }, {\n token: \"string.end\",\n regex: /`/,\n next: \"pop\"\n }, {\n defaultToken: \"string\"\n }]\n }, {\n token: \"string.start\",\n regex: /'/,\n push: [{\n token: \"constant.language.escape\",\n regex: /\\\\['\\\\]/\n }, {\n token: \"string.end\",\n regex: /'/,\n next: \"pop\"\n }, {\n defaultToken: \"string\"\n }]\n }], {\n token: \"text\",\n // namespaces aren't symbols\n regex: \"::\"\n }, {\n token: \"variable.instance\",\n // instance variable\n regex: \"@{1,2}[a-zA-Z_\\\\d]+\"\n }, {\n token: \"support.class\",\n // class name\n regex: \"[A-Z][a-zA-Z_\\\\d]+\"\n }, constantOtherSymbol, constantNumericHex, constantNumericFloat, {\n token: \"constant.language.boolean\",\n regex: \"(?:true|false)\\\\b\"\n }, {\n token: keywordMapper,\n regex: \"[a-zA-Z_$][a-zA-Z0-9_$]*\\\\b\"\n }, {\n token: \"punctuation.separator.key-value\",\n regex: \"=>\"\n }, {\n stateName: \"heredoc\",\n onMatch: function onMatch(value, currentState, stack) {\n var next = value[2] == '-' ? \"indentedHeredoc\" : \"heredoc\";\n var tokens = value.split(this.splitRegex);\n stack.push(next, tokens[3]);\n return [{\n type: \"constant\",\n value: tokens[1]\n }, {\n type: \"string\",\n value: tokens[2]\n }, {\n type: \"support.class\",\n value: tokens[3]\n }, {\n type: \"string\",\n value: tokens[4]\n }];\n },\n regex: \"(<<-?)(['\\\"`]?)([\\\\w]+)(['\\\"`]?)\",\n rules: {\n heredoc: [{\n onMatch: function onMatch(value, currentState, stack) {\n if (value === stack[1]) {\n stack.shift();\n stack.shift();\n this.next = stack[0] || \"start\";\n return \"support.class\";\n }\n\n this.next = \"\";\n return \"string\";\n },\n regex: \".*$\",\n next: \"start\"\n }],\n indentedHeredoc: [{\n token: \"string\",\n regex: \"^ +\"\n }, {\n onMatch: function onMatch(value, currentState, stack) {\n if (value === stack[1]) {\n stack.shift();\n stack.shift();\n this.next = stack[0] || \"start\";\n return \"support.class\";\n }\n\n this.next = \"\";\n return \"string\";\n },\n regex: \".*$\",\n next: \"start\"\n }]\n }\n }, {\n regex: \"$\",\n token: \"empty\",\n next: function next(currentState, stack) {\n if (stack[0] === \"heredoc\" || stack[0] === \"indentedHeredoc\") return stack[0];\n return currentState;\n }\n }, {\n token: \"string.character\",\n regex: \"\\\\B\\\\?.\"\n }, {\n token: \"keyword.operator\",\n regex: \"!|\\\\$|%|&|\\\\*|\\\\-\\\\-|\\\\-|\\\\+\\\\+|\\\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\\\|\\\\||\\\\?\\\\:|\\\\*=|%=|\\\\+=|\\\\-=|&=|\\\\^=|\\\\b(?:in|instanceof|new|delete|typeof|void)\"\n }, {\n token: \"paren.lparen\",\n regex: \"[[({]\"\n }, {\n token: \"paren.rparen\",\n regex: \"[\\\\])}]\"\n }, {\n token: \"text\",\n regex: \"\\\\s+\"\n }],\n \"comment\": [{\n token: \"comment\",\n // closing comment\n regex: \"^=end(?:$|\\\\s.*$)\",\n next: \"start\"\n }, {\n token: \"comment\",\n // comment spanning whole line\n regex: \".+\"\n }]\n };\n this.normalizeRules();\n };\n\n oop.inherits(RubyHighlightRules, TextHighlightRules);\n exports.RubyHighlightRules = RubyHighlightRules;\n});\nace.define(\"ace/mode/matching_brace_outdent\", [\"require\", \"exports\", \"module\", \"ace/range\"], function (acequire, exports, module) {\n \"use strict\";\n\n var Range = acequire(\"../range\").Range;\n\n var MatchingBraceOutdent = function MatchingBraceOutdent() {};\n\n (function () {\n this.checkOutdent = function (line, input) {\n if (!/^\\s+$/.test(line)) return false;\n return /^\\s*\\}/.test(input);\n };\n\n this.autoOutdent = function (doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n if (!match) return 0;\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({\n row: row,\n column: column\n });\n if (!openBracePos || openBracePos.row == row) return 0;\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column - 1), indent);\n };\n\n this.$getIndent = function (line) {\n return line.match(/^\\s*/)[0];\n };\n }).call(MatchingBraceOutdent.prototype);\n exports.MatchingBraceOutdent = MatchingBraceOutdent;\n});\nace.define(\"ace/mode/folding/coffee\", [\"require\", \"exports\", \"module\", \"ace/lib/oop\", \"ace/mode/folding/fold_mode\", \"ace/range\"], function (acequire, exports, module) {\n \"use strict\";\n\n var oop = acequire(\"../../lib/oop\");\n var BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\n var Range = acequire(\"../../range\").Range;\n\n var FoldMode = exports.FoldMode = function () {};\n\n oop.inherits(FoldMode, BaseFoldMode);\n (function () {\n this.getFoldWidgetRange = function (session, foldStyle, row) {\n var range = this.indentationBlock(session, row);\n if (range) return range;\n var re = /\\S/;\n var line = session.getLine(row);\n var startLevel = line.search(re);\n if (startLevel == -1 || line[startLevel] != \"#\") return;\n var startColumn = line.length;\n var maxRow = session.getLength();\n var startRow = row;\n var endRow = row;\n\n while (++row < maxRow) {\n line = session.getLine(row);\n var level = line.search(re);\n if (level == -1) continue;\n if (line[level] != \"#\") break;\n endRow = row;\n }\n\n if (endRow > startRow) {\n var endColumn = session.getLine(endRow).length;\n return new Range(startRow, startColumn, endRow, endColumn);\n }\n };\n\n this.getFoldWidget = function (session, foldStyle, row) {\n var line = session.getLine(row);\n var indent = line.search(/\\S/);\n var next = session.getLine(row + 1);\n var prev = session.getLine(row - 1);\n var prevIndent = prev.search(/\\S/);\n var nextIndent = next.search(/\\S/);\n\n if (indent == -1) {\n session.foldWidgets[row - 1] = prevIndent != -1 && prevIndent < nextIndent ? \"start\" : \"\";\n return \"\";\n }\n\n if (prevIndent == -1) {\n if (indent == nextIndent && line[indent] == \"#\" && next[indent] == \"#\") {\n session.foldWidgets[row - 1] = \"\";\n session.foldWidgets[row + 1] = \"\";\n return \"start\";\n }\n } else if (prevIndent == indent && line[indent] == \"#\" && prev[indent] == \"#\") {\n if (session.getLine(row - 2).search(/\\S/) == -1) {\n session.foldWidgets[row - 1] = \"start\";\n session.foldWidgets[row + 1] = \"\";\n return \"\";\n }\n }\n\n if (prevIndent != -1 && prevIndent < indent) session.foldWidgets[row - 1] = \"start\";else session.foldWidgets[row - 1] = \"\";\n if (indent < nextIndent) return \"start\";else return \"\";\n };\n }).call(FoldMode.prototype);\n});\nace.define(\"ace/mode/ruby\", [\"require\", \"exports\", \"module\", \"ace/lib/oop\", \"ace/mode/text\", \"ace/mode/ruby_highlight_rules\", \"ace/mode/matching_brace_outdent\", \"ace/range\", \"ace/mode/behaviour/cstyle\", \"ace/mode/folding/coffee\"], function (acequire, exports, module) {\n \"use strict\";\n\n var oop = acequire(\"../lib/oop\");\n var TextMode = acequire(\"./text\").Mode;\n var RubyHighlightRules = acequire(\"./ruby_highlight_rules\").RubyHighlightRules;\n var MatchingBraceOutdent = acequire(\"./matching_brace_outdent\").MatchingBraceOutdent;\n var Range = acequire(\"../range\").Range;\n var CstyleBehaviour = acequire(\"./behaviour/cstyle\").CstyleBehaviour;\n var FoldMode = acequire(\"./folding/coffee\").FoldMode;\n\n var Mode = function Mode() {\n this.HighlightRules = RubyHighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CstyleBehaviour();\n this.foldingRules = new FoldMode();\n };\n\n oop.inherits(Mode, TextMode);\n (function () {\n this.lineCommentStart = \"#\";\n\n this.getNextLineIndent = function (state, line, tab) {\n var indent = this.$getIndent(line);\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n\n if (tokens.length && tokens[tokens.length - 1].type == \"comment\") {\n return indent;\n }\n\n if (state == \"start\") {\n var match = line.match(/^.*[\\{\\(\\[]\\s*$/);\n var startingClassOrMethod = line.match(/^\\s*(class|def|module)\\s.*$/);\n var startingDoBlock = line.match(/.*do(\\s*|\\s+\\|.*\\|\\s*)$/);\n var startingConditional = line.match(/^\\s*(if|else|when)\\s*/);\n\n if (match || startingClassOrMethod || startingDoBlock || startingConditional) {\n indent += tab;\n }\n }\n\n return indent;\n };\n\n this.checkOutdent = function (state, line, input) {\n return /^\\s+(end|else)$/.test(line + input) || this.$outdent.checkOutdent(line, input);\n };\n\n this.autoOutdent = function (state, session, row) {\n var line = session.getLine(row);\n if (/}/.test(line)) return this.$outdent.autoOutdent(session, row);\n var indent = this.$getIndent(line);\n var prevLine = session.getLine(row - 1);\n var prevIndent = this.$getIndent(prevLine);\n var tab = session.getTabString();\n\n if (prevIndent.length <= indent.length) {\n if (indent.slice(-tab.length) == tab) session.remove(new Range(row, indent.length - tab.length, row, indent.length));\n }\n };\n\n this.$id = \"ace/mode/ruby\";\n }).call(Mode.prototype);\n exports.Mode = Mode;\n});","ace.define(\"ace/mode/scss_highlight_rules\", [\"require\", \"exports\", \"module\", \"ace/lib/oop\", \"ace/lib/lang\", \"ace/mode/text_highlight_rules\"], function (acequire, exports, module) {\n \"use strict\";\n\n var oop = acequire(\"../lib/oop\");\n var lang = acequire(\"../lib/lang\");\n var TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\n var ScssHighlightRules = function ScssHighlightRules() {\n var properties = lang.arrayToMap(function () {\n var browserPrefix = \"-webkit-|-moz-|-o-|-ms-|-svg-|-pie-|-khtml-\".split(\"|\");\n var prefixProperties = (\"appearance|background-clip|background-inline-policy|background-origin|\" + \"background-size|binding|border-bottom-colors|border-left-colors|\" + \"border-right-colors|border-top-colors|border-end|border-end-color|\" + \"border-end-style|border-end-width|border-image|border-start|\" + \"border-start-color|border-start-style|border-start-width|box-align|\" + \"box-direction|box-flex|box-flexgroup|box-ordinal-group|box-orient|\" + \"box-pack|box-sizing|column-count|column-gap|column-width|column-rule|\" + \"column-rule-width|column-rule-style|column-rule-color|float-edge|\" + \"font-feature-settings|font-language-override|force-broken-image-icon|\" + \"image-region|margin-end|margin-start|opacity|outline|outline-color|\" + \"outline-offset|outline-radius|outline-radius-bottomleft|\" + \"outline-radius-bottomright|outline-radius-topleft|outline-radius-topright|\" + \"outline-style|outline-width|padding-end|padding-start|stack-sizing|\" + \"tab-size|text-blink|text-decoration-color|text-decoration-line|\" + \"text-decoration-style|transform|transform-origin|transition|\" + \"transition-delay|transition-duration|transition-property|\" + \"transition-timing-function|user-focus|user-input|user-modify|user-select|\" + \"window-shadow|border-radius\").split(\"|\");\n var properties = (\"azimuth|background-attachment|background-color|background-image|\" + \"background-position|background-repeat|background|border-bottom-color|\" + \"border-bottom-style|border-bottom-width|border-bottom|border-collapse|\" + \"border-color|border-left-color|border-left-style|border-left-width|\" + \"border-left|border-right-color|border-right-style|border-right-width|\" + \"border-right|border-spacing|border-style|border-top-color|\" + \"border-top-style|border-top-width|border-top|border-width|border|bottom|\" + \"box-shadow|box-sizing|caption-side|clear|clip|color|content|counter-increment|\" + \"counter-reset|cue-after|cue-before|cue|cursor|direction|display|\" + \"elevation|empty-cells|float|font-family|font-size-adjust|font-size|\" + \"font-stretch|font-style|font-variant|font-weight|font|height|left|\" + \"letter-spacing|line-height|list-style-image|list-style-position|\" + \"list-style-type|list-style|margin-bottom|margin-left|margin-right|\" + \"margin-top|marker-offset|margin|marks|max-height|max-width|min-height|\" + \"min-width|opacity|orphans|outline-color|\" + \"outline-style|outline-width|outline|overflow|overflow-x|overflow-y|padding-bottom|\" + \"padding-left|padding-right|padding-top|padding|page-break-after|\" + \"page-break-before|page-break-inside|page|pause-after|pause-before|\" + \"pause|pitch-range|pitch|play-during|position|quotes|richness|right|\" + \"size|speak-header|speak-numeral|speak-punctuation|speech-rate|speak|\" + \"stress|table-layout|text-align|text-decoration|text-indent|\" + \"text-shadow|text-transform|top|unicode-bidi|vertical-align|\" + \"visibility|voice-family|volume|white-space|widows|width|word-spacing|\" + \"z-index\").split(\"|\");\n var ret = [];\n\n for (var i = 0, ln = browserPrefix.length; i < ln; i++) {\n Array.prototype.push.apply(ret, (browserPrefix[i] + prefixProperties.join(\"|\" + browserPrefix[i])).split(\"|\"));\n }\n\n Array.prototype.push.apply(ret, prefixProperties);\n Array.prototype.push.apply(ret, properties);\n return ret;\n }());\n var functions = lang.arrayToMap((\"hsl|hsla|rgb|rgba|url|attr|counter|counters|abs|adjust_color|adjust_hue|\" + \"alpha|join|blue|ceil|change_color|comparable|complement|darken|desaturate|\" + \"floor|grayscale|green|hue|if|invert|join|length|lighten|lightness|mix|\" + \"nth|opacify|opacity|percentage|quote|red|round|saturate|saturation|\" + \"scale_color|transparentize|type_of|unit|unitless|unquote\").split(\"|\"));\n var constants = lang.arrayToMap((\"absolute|all-scroll|always|armenian|auto|baseline|below|bidi-override|\" + \"block|bold|bolder|border-box|both|bottom|break-all|break-word|capitalize|center|\" + \"char|circle|cjk-ideographic|col-resize|collapse|content-box|crosshair|dashed|\" + \"decimal-leading-zero|decimal|default|disabled|disc|\" + \"distribute-all-lines|distribute-letter|distribute-space|\" + \"distribute|dotted|double|e-resize|ellipsis|fixed|georgian|groove|\" + \"hand|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|\" + \"ideograph-alpha|ideograph-numeric|ideograph-parenthesis|\" + \"ideograph-space|inactive|inherit|inline-block|inline|inset|inside|\" + \"inter-ideograph|inter-word|italic|justify|katakana-iroha|katakana|\" + \"keep-all|left|lighter|line-edge|line-through|line|list-item|loose|\" + \"lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|\" + \"medium|middle|move|n-resize|ne-resize|newspaper|no-drop|no-repeat|\" + \"nw-resize|none|normal|not-allowed|nowrap|oblique|outset|outside|\" + \"overline|pointer|progress|relative|repeat-x|repeat-y|repeat|right|\" + \"ridge|row-resize|rtl|s-resize|scroll|se-resize|separate|small-caps|\" + \"solid|square|static|strict|super|sw-resize|table-footer-group|\" + \"table-header-group|tb-rl|text-bottom|text-top|text|thick|thin|top|\" + \"transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|\" + \"vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|\" + \"zero\").split(\"|\"));\n var colors = lang.arrayToMap((\"aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|\" + \"blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|\" + \"chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|\" + \"darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|\" + \"darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|\" + \"darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|\" + \"darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|\" + \"dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|\" + \"ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|\" + \"hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|\" + \"lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|\" + \"lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|\" + \"lightsalmon|lightseagreen|lightskyblue|lightslategray|\" + \"lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|\" + \"magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|\" + \"mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|\" + \"mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|\" + \"moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|\" + \"orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|\" + \"papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|\" + \"red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|\" + \"seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|\" + \"springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|\" + \"wheat|white|whitesmoke|yellow|yellowgreen\").split(\"|\"));\n var keywords = lang.arrayToMap(\"@mixin|@extend|@include|@import|@media|@debug|@warn|@if|@for|@each|@while|@else|@font-face|@-webkit-keyframes|if|and|!default|module|def|end|declare\".split(\"|\"));\n var tags = lang.arrayToMap((\"a|abbr|acronym|address|applet|area|article|aside|audio|b|base|basefont|bdo|\" + \"big|blockquote|body|br|button|canvas|caption|center|cite|code|col|colgroup|\" + \"command|datalist|dd|del|details|dfn|dir|div|dl|dt|em|embed|fieldset|\" + \"figcaption|figure|font|footer|form|frame|frameset|h1|h2|h3|h4|h5|h6|head|\" + \"header|hgroup|hr|html|i|iframe|img|input|ins|keygen|kbd|label|legend|li|\" + \"link|map|mark|menu|meta|meter|nav|noframes|noscript|object|ol|optgroup|\" + \"option|output|p|param|pre|progress|q|rp|rt|ruby|s|samp|script|section|select|\" + \"small|source|span|strike|strong|style|sub|summary|sup|table|tbody|td|\" + \"textarea|tfoot|th|thead|time|title|tr|tt|u|ul|var|video|wbr|xmp\").split(\"|\"));\n var numRe = \"\\\\-?(?:(?:[0-9]+)|(?:[0-9]*\\\\.[0-9]+))\";\n this.$rules = {\n \"start\": [{\n token: \"comment\",\n regex: \"\\\\/\\\\/.*$\"\n }, {\n token: \"comment\",\n // multi line comment\n regex: \"\\\\/\\\\*\",\n next: \"comment\"\n }, {\n token: \"string\",\n // single line\n regex: '[\"](?:(?:\\\\\\\\.)|(?:[^\"\\\\\\\\]))*?[\"]'\n }, {\n token: \"string\",\n // multi line string start\n regex: '[\"].*\\\\\\\\$',\n next: \"qqstring\"\n }, {\n token: \"string\",\n // single line\n regex: \"['](?:(?:\\\\\\\\.)|(?:[^'\\\\\\\\]))*?[']\"\n }, {\n token: \"string\",\n // multi line string start\n regex: \"['].*\\\\\\\\$\",\n next: \"qstring\"\n }, {\n token: \"constant.numeric\",\n regex: numRe + \"(?:em|ex|px|cm|mm|in|pt|pc|deg|rad|grad|ms|s|hz|khz|%)\"\n }, {\n token: \"constant.numeric\",\n // hex6 color\n regex: \"#[a-f0-9]{6}\"\n }, {\n token: \"constant.numeric\",\n // hex3 color\n regex: \"#[a-f0-9]{3}\"\n }, {\n token: \"constant.numeric\",\n regex: numRe\n }, {\n token: [\"support.function\", \"string\", \"support.function\"],\n regex: \"(url\\\\()(.*)(\\\\))\"\n }, {\n token: function token(value) {\n if (properties.hasOwnProperty(value.toLowerCase())) return \"support.type\";\n if (keywords.hasOwnProperty(value)) return \"keyword\";else if (constants.hasOwnProperty(value)) return \"constant.language\";else if (functions.hasOwnProperty(value)) return \"support.function\";else if (colors.hasOwnProperty(value.toLowerCase())) return \"support.constant.color\";else if (tags.hasOwnProperty(value.toLowerCase())) return \"variable.language\";else return \"text\";\n },\n regex: \"\\\\-?[@a-z_][@a-z0-9_\\\\-]*\"\n }, {\n token: \"variable\",\n regex: \"[a-z_\\\\-$][a-z0-9_\\\\-$]*\\\\b\"\n }, {\n token: \"variable.language\",\n regex: \"#[a-z0-9-_]+\"\n }, {\n token: \"variable.language\",\n regex: \"\\\\.[a-z0-9-_]+\"\n }, {\n token: \"variable.language\",\n regex: \":[a-z0-9-_]+\"\n }, {\n token: \"constant\",\n regex: \"[a-z0-9-_]+\"\n }, {\n token: \"keyword.operator\",\n regex: \"<|>|<=|>=|==|!=|-|%|#|\\\\+|\\\\$|\\\\+|\\\\*\"\n }, {\n token: \"paren.lparen\",\n regex: \"[[({]\"\n }, {\n token: \"paren.rparen\",\n regex: \"[\\\\])}]\"\n }, {\n token: \"text\",\n regex: \"\\\\s+\"\n }, {\n caseInsensitive: true\n }],\n \"comment\": [{\n token: \"comment\",\n // closing comment\n regex: \"\\\\*\\\\/\",\n next: \"start\"\n }, {\n defaultToken: \"comment\"\n }],\n \"qqstring\": [{\n token: \"string\",\n regex: '(?:(?:\\\\\\\\.)|(?:[^\"\\\\\\\\]))*?\"',\n next: \"start\"\n }, {\n token: \"string\",\n regex: '.+'\n }],\n \"qstring\": [{\n token: \"string\",\n regex: \"(?:(?:\\\\\\\\.)|(?:[^'\\\\\\\\]))*?'\",\n next: \"start\"\n }, {\n token: \"string\",\n regex: '.+'\n }]\n };\n };\n\n oop.inherits(ScssHighlightRules, TextHighlightRules);\n exports.ScssHighlightRules = ScssHighlightRules;\n});\nace.define(\"ace/mode/sass_highlight_rules\", [\"require\", \"exports\", \"module\", \"ace/lib/oop\", \"ace/lib/lang\", \"ace/mode/scss_highlight_rules\"], function (acequire, exports, module) {\n \"use strict\";\n\n var oop = acequire(\"../lib/oop\");\n var lang = acequire(\"../lib/lang\");\n var ScssHighlightRules = acequire(\"./scss_highlight_rules\").ScssHighlightRules;\n\n var SassHighlightRules = function SassHighlightRules() {\n ScssHighlightRules.call(this);\n var start = this.$rules.start;\n\n if (start[1].token == \"comment\") {\n start.splice(1, 1, {\n onMatch: function onMatch(value, currentState, stack) {\n stack.unshift(this.next, -1, value.length - 2, currentState);\n return \"comment\";\n },\n regex: /^\\s*\\/\\*/,\n next: \"comment\"\n }, {\n token: \"error.invalid\",\n regex: \"/\\\\*|[{;}]\"\n }, {\n token: \"support.type\",\n regex: /^\\s*:[\\w\\-]+\\s/\n });\n this.$rules.comment = [{\n regex: /^\\s*/,\n onMatch: function onMatch(value, currentState, stack) {\n if (stack[1] === -1) stack[1] = Math.max(stack[2], value.length - 1);\n\n if (value.length <= stack[1]) {\n stack.shift();\n stack.shift();\n stack.shift();\n this.next = stack.shift();\n return \"text\";\n } else {\n this.next = \"\";\n return \"comment\";\n }\n },\n next: \"start\"\n }, {\n defaultToken: \"comment\"\n }];\n }\n };\n\n oop.inherits(SassHighlightRules, ScssHighlightRules);\n exports.SassHighlightRules = SassHighlightRules;\n});\nace.define(\"ace/mode/folding/coffee\", [\"require\", \"exports\", \"module\", \"ace/lib/oop\", \"ace/mode/folding/fold_mode\", \"ace/range\"], function (acequire, exports, module) {\n \"use strict\";\n\n var oop = acequire(\"../../lib/oop\");\n var BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\n var Range = acequire(\"../../range\").Range;\n\n var FoldMode = exports.FoldMode = function () {};\n\n oop.inherits(FoldMode, BaseFoldMode);\n (function () {\n this.getFoldWidgetRange = function (session, foldStyle, row) {\n var range = this.indentationBlock(session, row);\n if (range) return range;\n var re = /\\S/;\n var line = session.getLine(row);\n var startLevel = line.search(re);\n if (startLevel == -1 || line[startLevel] != \"#\") return;\n var startColumn = line.length;\n var maxRow = session.getLength();\n var startRow = row;\n var endRow = row;\n\n while (++row < maxRow) {\n line = session.getLine(row);\n var level = line.search(re);\n if (level == -1) continue;\n if (line[level] != \"#\") break;\n endRow = row;\n }\n\n if (endRow > startRow) {\n var endColumn = session.getLine(endRow).length;\n return new Range(startRow, startColumn, endRow, endColumn);\n }\n };\n\n this.getFoldWidget = function (session, foldStyle, row) {\n var line = session.getLine(row);\n var indent = line.search(/\\S/);\n var next = session.getLine(row + 1);\n var prev = session.getLine(row - 1);\n var prevIndent = prev.search(/\\S/);\n var nextIndent = next.search(/\\S/);\n\n if (indent == -1) {\n session.foldWidgets[row - 1] = prevIndent != -1 && prevIndent < nextIndent ? \"start\" : \"\";\n return \"\";\n }\n\n if (prevIndent == -1) {\n if (indent == nextIndent && line[indent] == \"#\" && next[indent] == \"#\") {\n session.foldWidgets[row - 1] = \"\";\n session.foldWidgets[row + 1] = \"\";\n return \"start\";\n }\n } else if (prevIndent == indent && line[indent] == \"#\" && prev[indent] == \"#\") {\n if (session.getLine(row - 2).search(/\\S/) == -1) {\n session.foldWidgets[row - 1] = \"start\";\n session.foldWidgets[row + 1] = \"\";\n return \"\";\n }\n }\n\n if (prevIndent != -1 && prevIndent < indent) session.foldWidgets[row - 1] = \"start\";else session.foldWidgets[row - 1] = \"\";\n if (indent < nextIndent) return \"start\";else return \"\";\n };\n }).call(FoldMode.prototype);\n});\nace.define(\"ace/mode/sass\", [\"require\", \"exports\", \"module\", \"ace/lib/oop\", \"ace/mode/text\", \"ace/mode/sass_highlight_rules\", \"ace/mode/folding/coffee\"], function (acequire, exports, module) {\n \"use strict\";\n\n var oop = acequire(\"../lib/oop\");\n var TextMode = acequire(\"./text\").Mode;\n var SassHighlightRules = acequire(\"./sass_highlight_rules\").SassHighlightRules;\n var FoldMode = acequire(\"./folding/coffee\").FoldMode;\n\n var Mode = function Mode() {\n this.HighlightRules = SassHighlightRules;\n this.foldingRules = new FoldMode();\n this.$behaviour = this.$defaultBehaviour;\n };\n\n oop.inherits(Mode, TextMode);\n (function () {\n this.lineCommentStart = \"//\";\n this.$id = \"ace/mode/sass\";\n }).call(Mode.prototype);\n exports.Mode = Mode;\n});","ace.define(\"ace/mode/doc_comment_highlight_rules\", [\"require\", \"exports\", \"module\", \"ace/lib/oop\", \"ace/mode/text_highlight_rules\"], function (acequire, exports, module) {\n \"use strict\";\n\n var oop = acequire(\"../lib/oop\");\n var TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\n var DocCommentHighlightRules = function DocCommentHighlightRules() {\n this.$rules = {\n \"start\": [{\n token: \"comment.doc.tag\",\n regex: \"@[\\\\w\\\\d_]+\" // TODO: fix email addresses\n\n }, DocCommentHighlightRules.getTagRule(), {\n defaultToken: \"comment.doc\",\n caseInsensitive: true\n }]\n };\n };\n\n oop.inherits(DocCommentHighlightRules, TextHighlightRules);\n\n DocCommentHighlightRules.getTagRule = function (start) {\n return {\n token: \"comment.doc.tag.storage.type\",\n regex: \"\\\\b(?:TODO|FIXME|XXX|HACK)\\\\b\"\n };\n };\n\n DocCommentHighlightRules.getStartRule = function (start) {\n return {\n token: \"comment.doc\",\n // doc comment\n regex: \"\\\\/\\\\*(?=\\\\*)\",\n next: start\n };\n };\n\n DocCommentHighlightRules.getEndRule = function (start) {\n return {\n token: \"comment.doc\",\n // closing comment\n regex: \"\\\\*\\\\/\",\n next: start\n };\n };\n\n exports.DocCommentHighlightRules = DocCommentHighlightRules;\n});\nace.define(\"ace/mode/swift_highlight_rules\", [\"require\", \"exports\", \"module\", \"ace/lib/oop\", \"ace/lib/lang\", \"ace/mode/doc_comment_highlight_rules\", \"ace/mode/text_highlight_rules\"], function (acequire, exports, module) {\n \"use strict\";\n\n var oop = acequire(\"../lib/oop\");\n var lang = acequire(\"../lib/lang\");\n var DocCommentHighlightRules = acequire(\"./doc_comment_highlight_rules\").DocCommentHighlightRules;\n var TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\n var SwiftHighlightRules = function SwiftHighlightRules() {\n var keywordMapper = this.createKeywordMapper({\n \"variable.language\": \"\",\n \"keyword\": \"__COLUMN__|__FILE__|__FUNCTION__|__LINE__\" + \"|as|associativity|break|case|class|continue|default|deinit|didSet\" + \"|do|dynamicType|else|enum|extension|fallthrough|for|func|get|if|import\" + \"|in|infix|init|inout|is|left|let|let|mutating|new|none|nonmutating\" + \"|operator|override|postfix|precedence|prefix|protocol|return|right\" + \"|safe|Self|self|set|struct|subscript|switch|Type|typealias\" + \"|unowned|unsafe|var|weak|where|while|willSet\" + \"|convenience|dynamic|final|infix|lazy|mutating|nonmutating|optional|override|postfix\" + \"|prefix|acequired|static|guard|defer\",\n \"storage.type\": \"bool|double|Double\" + \"|extension|float|Float|int|Int|private|public|string|String\",\n \"constant.language\": \"false|Infinity|NaN|nil|no|null|null|off|on|super|this|true|undefined|yes\",\n \"support.function\": \"\"\n }, \"identifier\");\n\n function string(start, options) {\n var nestable = options.nestable || options.interpolation;\n var interpStart = options.interpolation && options.interpolation.nextState || \"start\";\n var mainRule = {\n regex: start + (options.multiline ? \"\" : \"(?=.)\"),\n token: \"string.start\"\n };\n var nextState = [options.escape && {\n regex: options.escape,\n token: \"character.escape\"\n }, options.interpolation && {\n token: \"paren.quasi.start\",\n regex: lang.escapeRegExp(options.interpolation.lead + options.interpolation.open),\n push: interpStart\n }, options.error && {\n regex: options.error,\n token: \"error.invalid\"\n }, {\n regex: start + (options.multiline ? \"\" : \"|$\"),\n token: \"string.end\",\n next: nestable ? \"pop\" : \"start\"\n }, {\n defaultToken: \"string\"\n }].filter(Boolean);\n if (nestable) mainRule.push = nextState;else mainRule.next = nextState;\n if (!options.interpolation) return mainRule;\n var open = options.interpolation.open;\n var close = options.interpolation.close;\n var counter = {\n regex: \"[\" + lang.escapeRegExp(open + close) + \"]\",\n onMatch: function onMatch(val, state, stack) {\n this.next = val == open ? this.nextState : \"\";\n\n if (val == open && stack.length) {\n stack.unshift(\"start\", state);\n return \"paren\";\n }\n\n if (val == close && stack.length) {\n stack.shift();\n this.next = stack.shift();\n if (this.next.indexOf(\"string\") != -1) return \"paren.quasi.end\";\n }\n\n return val == open ? \"paren.lparen\" : \"paren.rparen\";\n },\n nextState: interpStart\n };\n return [counter, mainRule];\n }\n\n function comments() {\n return [{\n token: \"comment\",\n regex: \"\\\\/\\\\/(?=.)\",\n next: [DocCommentHighlightRules.getTagRule(), {\n token: \"comment\",\n regex: \"$|^\",\n next: \"start\"\n }, {\n defaultToken: \"comment\",\n caseInsensitive: true\n }]\n }, DocCommentHighlightRules.getStartRule(\"doc-start\"), {\n token: \"comment.start\",\n regex: /\\/\\*/,\n stateName: \"nested_comment\",\n push: [DocCommentHighlightRules.getTagRule(), {\n token: \"comment.start\",\n regex: /\\/\\*/,\n push: \"nested_comment\"\n }, {\n token: \"comment.end\",\n regex: \"\\\\*\\\\/\",\n next: \"pop\"\n }, {\n defaultToken: \"comment\",\n caseInsensitive: true\n }]\n }];\n }\n\n this.$rules = {\n start: [string('\"', {\n escape: /\\\\(?:[0\\\\tnr\"']|u{[a-fA-F1-9]{0,8}})/,\n interpolation: {\n lead: \"\\\\\",\n open: \"(\",\n close: \")\"\n },\n error: /\\\\./,\n multiline: false\n }), comments({\n type: \"c\",\n nestable: true\n }), {\n regex: /@[a-zA-Z_$][a-zA-Z_$\\d\\u0080-\\ufffe]*/,\n token: \"variable.parameter\"\n }, {\n regex: /[a-zA-Z_$][a-zA-Z_$\\d\\u0080-\\ufffe]*/,\n token: keywordMapper\n }, {\n token: \"constant.numeric\",\n regex: /[+-]?(?:0(?:b[01]+|o[0-7]+|x[\\da-fA-F])|\\d+(?:(?:\\.\\d*)?(?:[PpEe][+-]?\\d+)?)\\b)/\n }, {\n token: \"keyword.operator\",\n regex: /--|\\+\\+|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?:|[!$%&*+\\-~\\/^]=?/,\n next: \"start\"\n }, {\n token: \"punctuation.operator\",\n regex: /[?:,;.]/,\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: /[\\[({]/,\n next: \"start\"\n }, {\n token: \"paren.rparen\",\n regex: /[\\])}]/\n }]\n };\n this.embedRules(DocCommentHighlightRules, \"doc-\", [DocCommentHighlightRules.getEndRule(\"start\")]);\n this.normalizeRules();\n };\n\n oop.inherits(SwiftHighlightRules, TextHighlightRules);\n exports.HighlightRules = SwiftHighlightRules;\n});\nace.define(\"ace/mode/folding/cstyle\", [\"require\", \"exports\", \"module\", \"ace/lib/oop\", \"ace/range\", \"ace/mode/folding/fold_mode\"], function (acequire, exports, module) {\n \"use strict\";\n\n var oop = acequire(\"../../lib/oop\");\n var Range = acequire(\"../../range\").Range;\n var BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\n\n var FoldMode = exports.FoldMode = function (commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start));\n this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end));\n }\n };\n\n oop.inherits(FoldMode, BaseFoldMode);\n (function () {\n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe = /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n\n this.getFoldWidget = function (session, foldStyle, row) {\n var line = session.getLine(row);\n\n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return \"\";\n }\n\n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n\n if (!fw && this.startRegionRe.test(line)) return \"start\"; // lineCommentRegionStart\n\n return fw;\n };\n\n this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row);\n var match = line.match(this.foldingStartMarker);\n\n if (match) {\n var i = match.index;\n if (match[1]) return this.openingBracketBlock(session, match[1], row, i);\n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n\n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n } else if (foldStyle != \"all\") range = null;\n }\n\n return range;\n }\n\n if (foldStyle === \"markbegin\") return;\n var match = line.match(this.foldingStopMarker);\n\n if (match) {\n var i = match.index + match[0].length;\n if (match[1]) return this.closingBracketBlock(session, match[1], row, i);\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n\n this.getSectionRange = function (session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1) continue;\n if (startIndent > indent) break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n\n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n } else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n } else if (startIndent == indent) {\n break;\n }\n }\n\n endRow = row;\n }\n\n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n\n this.getCommentRegionBlock = function (session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m) continue;\n if (m[1]) depth--;else depth++;\n if (!depth) break;\n }\n\n var endRow = row;\n\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n }).call(FoldMode.prototype);\n});\nace.define(\"ace/mode/swift\", [\"require\", \"exports\", \"module\", \"ace/lib/oop\", \"ace/mode/text\", \"ace/mode/swift_highlight_rules\", \"ace/mode/behaviour/cstyle\", \"ace/mode/folding/cstyle\"], function (acequire, exports, module) {\n \"use strict\";\n\n var oop = acequire(\"../lib/oop\");\n var TextMode = acequire(\"./text\").Mode;\n var HighlightRules = acequire(\"./swift_highlight_rules\").HighlightRules;\n var CstyleBehaviour = acequire(\"./behaviour/cstyle\").CstyleBehaviour;\n var FoldMode = acequire(\"./folding/cstyle\").FoldMode;\n\n var Mode = function Mode() {\n this.HighlightRules = HighlightRules;\n this.foldingRules = new FoldMode();\n this.$behaviour = new CstyleBehaviour();\n this.$behaviour = this.$defaultBehaviour;\n };\n\n oop.inherits(Mode, TextMode);\n (function () {\n this.lineCommentStart = \"//\";\n this.blockComment = {\n start: \"/*\",\n end: \"*/\",\n nestable: true\n };\n this.$id = \"ace/mode/swift\";\n }).call(Mode.prototype);\n exports.Mode = Mode;\n});","ace.define(\"ace/mode/doc_comment_highlight_rules\", [\"require\", \"exports\", \"module\", \"ace/lib/oop\", \"ace/mode/text_highlight_rules\"], function (acequire, exports, module) {\n \"use strict\";\n\n var oop = acequire(\"../lib/oop\");\n var TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\n var DocCommentHighlightRules = function DocCommentHighlightRules() {\n this.$rules = {\n \"start\": [{\n token: \"comment.doc.tag\",\n regex: \"@[\\\\w\\\\d_]+\" // TODO: fix email addresses\n\n }, DocCommentHighlightRules.getTagRule(), {\n defaultToken: \"comment.doc\",\n caseInsensitive: true\n }]\n };\n };\n\n oop.inherits(DocCommentHighlightRules, TextHighlightRules);\n\n DocCommentHighlightRules.getTagRule = function (start) {\n return {\n token: \"comment.doc.tag.storage.type\",\n regex: \"\\\\b(?:TODO|FIXME|XXX|HACK)\\\\b\"\n };\n };\n\n DocCommentHighlightRules.getStartRule = function (start) {\n return {\n token: \"comment.doc\",\n // doc comment\n regex: \"\\\\/\\\\*(?=\\\\*)\",\n next: start\n };\n };\n\n DocCommentHighlightRules.getEndRule = function (start) {\n return {\n token: \"comment.doc\",\n // closing comment\n regex: \"\\\\*\\\\/\",\n next: start\n };\n };\n\n exports.DocCommentHighlightRules = DocCommentHighlightRules;\n});\nace.define(\"ace/mode/javascript_highlight_rules\", [\"require\", \"exports\", \"module\", \"ace/lib/oop\", \"ace/mode/doc_comment_highlight_rules\", \"ace/mode/text_highlight_rules\"], function (acequire, exports, module) {\n \"use strict\";\n\n var oop = acequire(\"../lib/oop\");\n var DocCommentHighlightRules = acequire(\"./doc_comment_highlight_rules\").DocCommentHighlightRules;\n var TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n var identifierRe = \"[a-zA-Z\\\\$_\\xA1-\\uFFFF][a-zA-Z\\\\d\\\\$_\\xA1-\\uFFFF]*\";\n\n var JavaScriptHighlightRules = function JavaScriptHighlightRules(options) {\n var keywordMapper = this.createKeywordMapper({\n \"variable.language\": \"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|\" + // Constructors\n \"Namespace|QName|XML|XMLList|\" + // E4X\n \"ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|\" + \"Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|\" + \"Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|\" + // Errors\n \"SyntaxError|TypeError|URIError|\" + \"decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|\" + // Non-constructor functions\n \"isNaN|parseFloat|parseInt|\" + \"JSON|Math|\" + // Other\n \"this|arguments|prototype|window|document\",\n // Pseudo\n \"keyword\": \"const|yield|import|get|set|async|await|\" + \"break|case|catch|continue|default|delete|do|else|finally|for|function|\" + \"if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|\" + \"__parent__|__count__|escape|unescape|with|__proto__|\" + \"class|enum|extends|super|export|implements|private|public|interface|package|protected|static\",\n \"storage.type\": \"const|let|var|function\",\n \"constant.language\": \"null|Infinity|NaN|undefined\",\n \"support.function\": \"alert\",\n \"constant.language.boolean\": \"true|false\"\n }, \"identifier\");\n var kwBeforeRe = \"case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void\";\n var escapedRe = \"\\\\\\\\(?:x[0-9a-fA-F]{2}|\" + // hex\n \"u[0-9a-fA-F]{4}|\" + // unicode\n \"u{[0-9a-fA-F]{1,6}}|\" + // es6 unicode\n \"[0-2][0-7]{0,2}|\" + // oct\n \"3[0-7][0-7]?|\" + // oct\n \"[4-7][0-7]?|\" + //oct\n \".)\";\n this.$rules = {\n \"no_regex\": [DocCommentHighlightRules.getStartRule(\"doc-start\"), comments(\"no_regex\"), {\n token: \"string\",\n regex: \"'(?=.)\",\n next: \"qstring\"\n }, {\n token: \"string\",\n regex: '\"(?=.)',\n next: \"qqstring\"\n }, {\n token: \"constant.numeric\",\n // hexadecimal, octal and binary\n regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\\b/\n }, {\n token: \"constant.numeric\",\n // decimal integers and floats\n regex: /(?:\\d\\d*(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+\\b)?/\n }, {\n token: [\"storage.type\", \"punctuation.operator\", \"support.function\", \"punctuation.operator\", \"entity.name.function\", \"text\", \"keyword.operator\"],\n regex: \"(\" + identifierRe + \")(\\\\.)(prototype)(\\\\.)(\" + identifierRe + \")(\\\\s*)(=)\",\n next: \"function_arguments\"\n }, {\n token: [\"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\", \"keyword.operator\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"],\n regex: \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe + \")(\\\\s*)(=)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: [\"entity.name.function\", \"text\", \"keyword.operator\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"],\n regex: \"(\" + identifierRe + \")(\\\\s*)(=)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: [\"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\", \"keyword.operator\", \"text\", \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"],\n regex: \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe + \")(\\\\s*)(=)(\\\\s*)(function)(\\\\s+)(\\\\w+)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: [\"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"],\n regex: \"(function)(\\\\s+)(\" + identifierRe + \")(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: [\"entity.name.function\", \"text\", \"punctuation.operator\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"],\n regex: \"(\" + identifierRe + \")(\\\\s*)(:)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: [\"text\", \"text\", \"storage.type\", \"text\", \"paren.lparen\"],\n regex: \"(:)(\\\\s*)(function)(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: \"keyword\",\n regex: \"from(?=\\\\s*('|\\\"))\"\n }, {\n token: \"keyword\",\n regex: \"(?:\" + kwBeforeRe + \")\\\\b\",\n next: \"start\"\n }, {\n token: [\"support.constant\"],\n regex: /that\\b/\n }, {\n token: [\"storage.type\", \"punctuation.operator\", \"support.function.firebug\"],\n regex: /(console)(\\.)(warn|info|log|error|time|trace|timeEnd|assert)\\b/\n }, {\n token: keywordMapper,\n regex: identifierRe\n }, {\n token: \"punctuation.operator\",\n regex: /[.](?![.])/,\n next: \"property\"\n }, {\n token: \"storage.type\",\n regex: /=>/\n }, {\n token: \"keyword.operator\",\n regex: /--|\\+\\+|\\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\\|\\||\\?:|[!$%&*+\\-~\\/^]=?/,\n next: \"start\"\n }, {\n token: \"punctuation.operator\",\n regex: /[?:,;.]/,\n next: \"start\"\n }, {\n token: \"paren.lparen\",\n regex: /[\\[({]/,\n next: \"start\"\n }, {\n token: \"paren.rparen\",\n regex: /[\\])}]/\n }, {\n token: \"comment\",\n regex: /^#!.*$/\n }],\n property: [{\n token: \"text\",\n regex: \"\\\\s+\"\n }, {\n token: [\"storage.type\", \"punctuation.operator\", \"entity.name.function\", \"text\", \"keyword.operator\", \"text\", \"storage.type\", \"text\", \"entity.name.function\", \"text\", \"paren.lparen\"],\n regex: \"(\" + identifierRe + \")(\\\\.)(\" + identifierRe + \")(\\\\s*)(=)(\\\\s*)(function)(?:(\\\\s+)(\\\\w+))?(\\\\s*)(\\\\()\",\n next: \"function_arguments\"\n }, {\n token: \"punctuation.operator\",\n regex: /[.](?![.])/\n }, {\n token: \"support.function\",\n regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\\b(?=\\()/\n }, {\n token: \"support.function.dom\",\n regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\\b(?=\\()/\n }, {\n token: \"support.constant\",\n regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\\b/\n }, {\n token: \"identifier\",\n regex: identifierRe\n }, {\n regex: \"\",\n token: \"empty\",\n next: \"no_regex\"\n }],\n \"start\": [DocCommentHighlightRules.getStartRule(\"doc-start\"), comments(\"start\"), {\n token: \"string.regexp\",\n regex: \"\\\\/\",\n next: \"regex\"\n }, {\n token: \"text\",\n regex: \"\\\\s+|^$\",\n next: \"start\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }],\n \"regex\": [{\n token: \"regexp.keyword.operator\",\n regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n }, {\n token: \"string.regexp\",\n regex: \"/[sxngimy]*\",\n next: \"no_regex\"\n }, {\n token: \"invalid\",\n regex: /\\{\\d+\\b,?\\d*\\}[+*]|[+*$^?][+*]|[$^][?]|\\?{3,}/\n }, {\n token: \"constant.language.escape\",\n regex: /\\(\\?[:=!]|\\)|\\{\\d+\\b,?\\d*\\}|[+*]\\?|[()$^+*?.]/\n }, {\n token: \"constant.language.delimiter\",\n regex: /\\|/\n }, {\n token: \"constant.language.escape\",\n regex: /\\[\\^?/,\n next: \"regex_character_class\"\n }, {\n token: \"empty\",\n regex: \"$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string.regexp\"\n }],\n \"regex_character_class\": [{\n token: \"regexp.charclass.keyword.operator\",\n regex: \"\\\\\\\\(?:u[\\\\da-fA-F]{4}|x[\\\\da-fA-F]{2}|.)\"\n }, {\n token: \"constant.language.escape\",\n regex: \"]\",\n next: \"regex\"\n }, {\n token: \"constant.language.escape\",\n regex: \"-\"\n }, {\n token: \"empty\",\n regex: \"$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string.regexp.charachterclass\"\n }],\n \"function_arguments\": [{\n token: \"variable.parameter\",\n regex: identifierRe\n }, {\n token: \"punctuation.operator\",\n regex: \"[, ]+\"\n }, {\n token: \"punctuation.operator\",\n regex: \"$\"\n }, {\n token: \"empty\",\n regex: \"\",\n next: \"no_regex\"\n }],\n \"qqstring\": [{\n token: \"constant.language.escape\",\n regex: escapedRe\n }, {\n token: \"string\",\n regex: \"\\\\\\\\$\",\n consumeLineEnd: true\n }, {\n token: \"string\",\n regex: '\"|$',\n next: \"no_regex\"\n }, {\n defaultToken: \"string\"\n }],\n \"qstring\": [{\n token: \"constant.language.escape\",\n regex: escapedRe\n }, {\n token: \"string\",\n regex: \"\\\\\\\\$\",\n consumeLineEnd: true\n }, {\n token: \"string\",\n regex: \"'|$\",\n next: \"no_regex\"\n }, {\n defaultToken: \"string\"\n }]\n };\n\n if (!options || !options.noES6) {\n this.$rules.no_regex.unshift({\n regex: \"[{}]\",\n onMatch: function onMatch(val, state, stack) {\n this.next = val == \"{\" ? this.nextState : \"\";\n\n if (val == \"{\" && stack.length) {\n stack.unshift(\"start\", state);\n } else if (val == \"}\" && stack.length) {\n stack.shift();\n this.next = stack.shift();\n if (this.next.indexOf(\"string\") != -1 || this.next.indexOf(\"jsx\") != -1) return \"paren.quasi.end\";\n }\n\n return val == \"{\" ? \"paren.lparen\" : \"paren.rparen\";\n },\n nextState: \"start\"\n }, {\n token: \"string.quasi.start\",\n regex: /`/,\n push: [{\n token: \"constant.language.escape\",\n regex: escapedRe\n }, {\n token: \"paren.quasi.start\",\n regex: /\\${/,\n push: \"start\"\n }, {\n token: \"string.quasi.end\",\n regex: /`/,\n next: \"pop\"\n }, {\n defaultToken: \"string.quasi\"\n }]\n });\n if (!options || options.jsx != false) JSX.call(this);\n }\n\n this.embedRules(DocCommentHighlightRules, \"doc-\", [DocCommentHighlightRules.getEndRule(\"no_regex\")]);\n this.normalizeRules();\n };\n\n oop.inherits(JavaScriptHighlightRules, TextHighlightRules);\n\n function JSX() {\n var tagRegex = identifierRe.replace(\"\\\\d\", \"\\\\d\\\\-\");\n var jsxTag = {\n onMatch: function onMatch(val, state, stack) {\n var offset = val.charAt(1) == \"/\" ? 2 : 1;\n\n if (offset == 1) {\n if (state != this.nextState) stack.unshift(this.next, this.nextState, 0);else stack.unshift(this.next);\n stack[2]++;\n } else if (offset == 2) {\n if (state == this.nextState) {\n stack[1]--;\n\n if (!stack[1] || stack[1] < 0) {\n stack.shift();\n stack.shift();\n }\n }\n }\n\n return [{\n type: \"meta.tag.punctuation.\" + (offset == 1 ? \"\" : \"end-\") + \"tag-open.xml\",\n value: val.slice(0, offset)\n }, {\n type: \"meta.tag.tag-name.xml\",\n value: val.substr(offset)\n }];\n },\n regex: \"\",\n onMatch: function onMatch(value, currentState, stack) {\n if (currentState == stack[0]) stack.shift();\n\n if (value.length == 2) {\n if (stack[0] == this.nextState) stack[1]--;\n\n if (!stack[1] || stack[1] < 0) {\n stack.splice(0, 2);\n }\n }\n\n this.next = stack[0] || \"start\";\n return [{\n type: this.token,\n value: value\n }];\n },\n nextState: \"jsx\"\n }, jsxJsRule, comments(\"jsxAttributes\"), {\n token: \"entity.other.attribute-name.xml\",\n regex: tagRegex\n }, {\n token: \"keyword.operator.attribute-equals.xml\",\n regex: \"=\"\n }, {\n token: \"text.tag-whitespace.xml\",\n regex: \"\\\\s+\"\n }, {\n token: \"string.attribute-value.xml\",\n regex: \"'\",\n stateName: \"jsx_attr_q\",\n push: [{\n token: \"string.attribute-value.xml\",\n regex: \"'\",\n next: \"pop\"\n }, {\n include: \"reference\"\n }, {\n defaultToken: \"string.attribute-value.xml\"\n }]\n }, {\n token: \"string.attribute-value.xml\",\n regex: '\"',\n stateName: \"jsx_attr_qq\",\n push: [{\n token: \"string.attribute-value.xml\",\n regex: '\"',\n next: \"pop\"\n }, {\n include: \"reference\"\n }, {\n defaultToken: \"string.attribute-value.xml\"\n }]\n }, jsxTag];\n this.$rules.reference = [{\n token: \"constant.language.escape.reference.xml\",\n regex: \"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\\\.-]+;)\"\n }];\n }\n\n function comments(next) {\n return [{\n token: \"comment\",\n // multi line comment\n regex: /\\/\\*/,\n next: [DocCommentHighlightRules.getTagRule(), {\n token: \"comment\",\n regex: \"\\\\*\\\\/\",\n next: next || \"pop\"\n }, {\n defaultToken: \"comment\",\n caseInsensitive: true\n }]\n }, {\n token: \"comment\",\n regex: \"\\\\/\\\\/\",\n next: [DocCommentHighlightRules.getTagRule(), {\n token: \"comment\",\n regex: \"$|^\",\n next: next || \"pop\"\n }, {\n defaultToken: \"comment\",\n caseInsensitive: true\n }]\n }];\n }\n\n exports.JavaScriptHighlightRules = JavaScriptHighlightRules;\n});\nace.define(\"ace/mode/matching_brace_outdent\", [\"require\", \"exports\", \"module\", \"ace/range\"], function (acequire, exports, module) {\n \"use strict\";\n\n var Range = acequire(\"../range\").Range;\n\n var MatchingBraceOutdent = function MatchingBraceOutdent() {};\n\n (function () {\n this.checkOutdent = function (line, input) {\n if (!/^\\s+$/.test(line)) return false;\n return /^\\s*\\}/.test(input);\n };\n\n this.autoOutdent = function (doc, row) {\n var line = doc.getLine(row);\n var match = line.match(/^(\\s*\\})/);\n if (!match) return 0;\n var column = match[1].length;\n var openBracePos = doc.findMatchingBracket({\n row: row,\n column: column\n });\n if (!openBracePos || openBracePos.row == row) return 0;\n var indent = this.$getIndent(doc.getLine(openBracePos.row));\n doc.replace(new Range(row, 0, row, column - 1), indent);\n };\n\n this.$getIndent = function (line) {\n return line.match(/^\\s*/)[0];\n };\n }).call(MatchingBraceOutdent.prototype);\n exports.MatchingBraceOutdent = MatchingBraceOutdent;\n});\nace.define(\"ace/mode/folding/cstyle\", [\"require\", \"exports\", \"module\", \"ace/lib/oop\", \"ace/range\", \"ace/mode/folding/fold_mode\"], function (acequire, exports, module) {\n \"use strict\";\n\n var oop = acequire(\"../../lib/oop\");\n var Range = acequire(\"../../range\").Range;\n var BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\n\n var FoldMode = exports.FoldMode = function (commentRegex) {\n if (commentRegex) {\n this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.start));\n this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\\|[^|]*?$/, \"|\" + commentRegex.end));\n }\n };\n\n oop.inherits(FoldMode, BaseFoldMode);\n (function () {\n this.foldingStartMarker = /([\\{\\[\\(])[^\\}\\]\\)]*$|^\\s*(\\/\\*)/;\n this.foldingStopMarker = /^[^\\[\\{\\(]*([\\}\\]\\)])|^[\\s\\*]*(\\*\\/)/;\n this.singleLineBlockCommentRe = /^\\s*(\\/\\*).*\\*\\/\\s*$/;\n this.tripleStarBlockCommentRe = /^\\s*(\\/\\*\\*\\*).*\\*\\/\\s*$/;\n this.startRegionRe = /^\\s*(\\/\\*|\\/\\/)#?region\\b/;\n this._getFoldWidgetBase = this.getFoldWidget;\n\n this.getFoldWidget = function (session, foldStyle, row) {\n var line = session.getLine(row);\n\n if (this.singleLineBlockCommentRe.test(line)) {\n if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return \"\";\n }\n\n var fw = this._getFoldWidgetBase(session, foldStyle, row);\n\n if (!fw && this.startRegionRe.test(line)) return \"start\"; // lineCommentRegionStart\n\n return fw;\n };\n\n this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) {\n var line = session.getLine(row);\n if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row);\n var match = line.match(this.foldingStartMarker);\n\n if (match) {\n var i = match.index;\n if (match[1]) return this.openingBracketBlock(session, match[1], row, i);\n var range = session.getCommentFoldRange(row, i + match[0].length, 1);\n\n if (range && !range.isMultiLine()) {\n if (forceMultiline) {\n range = this.getSectionRange(session, row);\n } else if (foldStyle != \"all\") range = null;\n }\n\n return range;\n }\n\n if (foldStyle === \"markbegin\") return;\n var match = line.match(this.foldingStopMarker);\n\n if (match) {\n var i = match.index + match[0].length;\n if (match[1]) return this.closingBracketBlock(session, match[1], row, i);\n return session.getCommentFoldRange(row, i, -1);\n }\n };\n\n this.getSectionRange = function (session, row) {\n var line = session.getLine(row);\n var startIndent = line.search(/\\S/);\n var startRow = row;\n var startColumn = line.length;\n row = row + 1;\n var endRow = row;\n var maxRow = session.getLength();\n\n while (++row < maxRow) {\n line = session.getLine(row);\n var indent = line.search(/\\S/);\n if (indent === -1) continue;\n if (startIndent > indent) break;\n var subRange = this.getFoldWidgetRange(session, \"all\", row);\n\n if (subRange) {\n if (subRange.start.row <= startRow) {\n break;\n } else if (subRange.isMultiLine()) {\n row = subRange.end.row;\n } else if (startIndent == indent) {\n break;\n }\n }\n\n endRow = row;\n }\n\n return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);\n };\n\n this.getCommentRegionBlock = function (session, line, row) {\n var startColumn = line.search(/\\s*$/);\n var maxRow = session.getLength();\n var startRow = row;\n var re = /^\\s*(?:\\/\\*|\\/\\/|--)#?(end)?region\\b/;\n var depth = 1;\n\n while (++row < maxRow) {\n line = session.getLine(row);\n var m = re.exec(line);\n if (!m) continue;\n if (m[1]) depth--;else depth++;\n if (!depth) break;\n }\n\n var endRow = row;\n\n if (endRow > startRow) {\n return new Range(startRow, startColumn, endRow, line.length);\n }\n };\n }).call(FoldMode.prototype);\n});\nace.define(\"ace/mode/javascript\", [\"require\", \"exports\", \"module\", \"ace/lib/oop\", \"ace/mode/text\", \"ace/mode/javascript_highlight_rules\", \"ace/mode/matching_brace_outdent\", \"ace/worker/worker_client\", \"ace/mode/behaviour/cstyle\", \"ace/mode/folding/cstyle\"], function (acequire, exports, module) {\n \"use strict\";\n\n var oop = acequire(\"../lib/oop\");\n var TextMode = acequire(\"./text\").Mode;\n var JavaScriptHighlightRules = acequire(\"./javascript_highlight_rules\").JavaScriptHighlightRules;\n var MatchingBraceOutdent = acequire(\"./matching_brace_outdent\").MatchingBraceOutdent;\n var WorkerClient = acequire(\"../worker/worker_client\").WorkerClient;\n var CstyleBehaviour = acequire(\"./behaviour/cstyle\").CstyleBehaviour;\n var CStyleFoldMode = acequire(\"./folding/cstyle\").FoldMode;\n\n var Mode = function Mode() {\n this.HighlightRules = JavaScriptHighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CstyleBehaviour();\n this.foldingRules = new CStyleFoldMode();\n };\n\n oop.inherits(Mode, TextMode);\n (function () {\n this.lineCommentStart = \"//\";\n this.blockComment = {\n start: \"/*\",\n end: \"*/\"\n };\n this.$quotes = {\n '\"': '\"',\n \"'\": \"'\",\n \"`\": \"`\"\n };\n\n this.getNextLineIndent = function (state, line, tab) {\n var indent = this.$getIndent(line);\n var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n var tokens = tokenizedLine.tokens;\n var endState = tokenizedLine.state;\n\n if (tokens.length && tokens[tokens.length - 1].type == \"comment\") {\n return indent;\n }\n\n if (state == \"start\" || state == \"no_regex\") {\n var match = line.match(/^.*(?:\\bcase\\b.*:|[\\{\\(\\[])\\s*$/);\n\n if (match) {\n indent += tab;\n }\n } else if (state == \"doc-start\") {\n if (endState == \"start\" || endState == \"no_regex\") {\n return \"\";\n }\n\n var match = line.match(/^\\s*(\\/?)\\*/);\n\n if (match) {\n if (match[1]) {\n indent += \" \";\n }\n\n indent += \"* \";\n }\n }\n\n return indent;\n };\n\n this.checkOutdent = function (state, line, input) {\n return this.$outdent.checkOutdent(line, input);\n };\n\n this.autoOutdent = function (state, doc, row) {\n this.$outdent.autoOutdent(doc, row);\n };\n\n this.createWorker = function (session) {\n var worker = new WorkerClient([\"ace\"], require(\"../worker/javascript\"), \"JavaScriptWorker\");\n worker.attachToDocument(session.getDocument());\n worker.on(\"annotate\", function (results) {\n session.setAnnotations(results.data);\n });\n worker.on(\"terminate\", function () {\n session.clearAnnotations();\n });\n return worker;\n };\n\n this.$id = \"ace/mode/javascript\";\n }).call(Mode.prototype);\n exports.Mode = Mode;\n});\nace.define(\"ace/mode/typescript_highlight_rules\", [\"require\", \"exports\", \"module\", \"ace/lib/oop\", \"ace/mode/javascript_highlight_rules\"], function (acequire, exports, module) {\n \"use strict\";\n\n var oop = acequire(\"../lib/oop\");\n var JavaScriptHighlightRules = acequire(\"./javascript_highlight_rules\").JavaScriptHighlightRules;\n\n var TypeScriptHighlightRules = function TypeScriptHighlightRules(options) {\n var tsRules = [{\n token: [\"keyword.operator.ts\", \"text\", \"variable.parameter.function.ts\", \"text\"],\n regex: \"\\\\b(module)(\\\\s*)([a-zA-Z0-9_?.$][\\\\w?.$]*)(\\\\s*\\\\{)\"\n }, {\n token: [\"storage.type.variable.ts\", \"text\", \"keyword.other.ts\", \"text\"],\n regex: \"(super)(\\\\s*\\\\()([a-zA-Z0-9,_?.$\\\\s]+\\\\s*)(\\\\))\"\n }, {\n token: [\"entity.name.function.ts\", \"paren.lparen\", \"paren.rparen\"],\n regex: \"([a-zA-Z_?.$][\\\\w?.$]*)(\\\\()(\\\\))\"\n }, {\n token: [\"variable.parameter.function.ts\", \"text\", \"variable.parameter.function.ts\"],\n regex: \"([a-zA-Z0-9_?.$][\\\\w?.$]*)(\\\\s*:\\\\s*)([a-zA-Z0-9_?.$][\\\\w?.$]*)\"\n }, {\n token: [\"keyword.operator.ts\"],\n regex: \"(?:\\\\b(constructor|declare|interface|as|AS|public|private|class|extends|export|super)\\\\b)\"\n }, {\n token: [\"storage.type.variable.ts\"],\n regex: \"(?:\\\\b(this\\\\.|string\\\\b|bool\\\\b|number)\\\\b)\"\n }, {\n token: [\"keyword.operator.ts\", \"storage.type.variable.ts\", \"keyword.operator.ts\", \"storage.type.variable.ts\"],\n regex: \"(class)(\\\\s+[a-zA-Z0-9_?.$][\\\\w?.$]*\\\\s+)(extends)(\\\\s+[a-zA-Z0-9_?.$][\\\\w?.$]*\\\\s+)?\"\n }, {\n token: \"keyword\",\n regex: \"(?:super|export|class|extends|import)\\\\b\"\n }];\n var JSRules = new JavaScriptHighlightRules({\n jsx: (options && options.jsx) == true\n }).getRules();\n JSRules.start = tsRules.concat(JSRules.start);\n this.$rules = JSRules;\n };\n\n oop.inherits(TypeScriptHighlightRules, JavaScriptHighlightRules);\n exports.TypeScriptHighlightRules = TypeScriptHighlightRules;\n});\nace.define(\"ace/mode/typescript\", [\"require\", \"exports\", \"module\", \"ace/lib/oop\", \"ace/mode/javascript\", \"ace/mode/typescript_highlight_rules\", \"ace/mode/behaviour/cstyle\", \"ace/mode/folding/cstyle\", \"ace/mode/matching_brace_outdent\"], function (acequire, exports, module) {\n \"use strict\";\n\n var oop = acequire(\"../lib/oop\");\n var jsMode = acequire(\"./javascript\").Mode;\n var TypeScriptHighlightRules = acequire(\"./typescript_highlight_rules\").TypeScriptHighlightRules;\n var CstyleBehaviour = acequire(\"./behaviour/cstyle\").CstyleBehaviour;\n var CStyleFoldMode = acequire(\"./folding/cstyle\").FoldMode;\n var MatchingBraceOutdent = acequire(\"./matching_brace_outdent\").MatchingBraceOutdent;\n\n var Mode = function Mode() {\n this.HighlightRules = TypeScriptHighlightRules;\n this.$outdent = new MatchingBraceOutdent();\n this.$behaviour = new CstyleBehaviour();\n this.foldingRules = new CStyleFoldMode();\n };\n\n oop.inherits(Mode, jsMode);\n (function () {\n this.createWorker = function (session) {\n return null;\n };\n\n this.$id = \"ace/mode/typescript\";\n }).call(Mode.prototype);\n exports.Mode = Mode;\n});","ace.define(\"ace/theme/solarized_dark\", [\"require\", \"exports\", \"module\", \"ace/lib/dom\"], function (acequire, exports, module) {\n exports.isDark = true;\n exports.cssClass = \"ace-solarized-dark\";\n exports.cssText = \".ace-solarized-dark .ace_gutter {\\\nbackground: #01313f;\\\ncolor: #d0edf7\\\n}\\\n.ace-solarized-dark .ace_print-margin {\\\nwidth: 1px;\\\nbackground: #33555E\\\n}\\\n.ace-solarized-dark {\\\nbackground-color: #002B36;\\\ncolor: #93A1A1\\\n}\\\n.ace-solarized-dark .ace_entity.ace_other.ace_attribute-name,\\\n.ace-solarized-dark .ace_storage {\\\ncolor: #93A1A1\\\n}\\\n.ace-solarized-dark .ace_cursor,\\\n.ace-solarized-dark .ace_string.ace_regexp {\\\ncolor: #D30102\\\n}\\\n.ace-solarized-dark .ace_marker-layer .ace_active-line,\\\n.ace-solarized-dark .ace_marker-layer .ace_selection {\\\nbackground: rgba(255, 255, 255, 0.1)\\\n}\\\n.ace-solarized-dark.ace_multiselect .ace_selection.ace_start {\\\nbox-shadow: 0 0 3px 0px #002B36;\\\n}\\\n.ace-solarized-dark .ace_marker-layer .ace_step {\\\nbackground: rgb(102, 82, 0)\\\n}\\\n.ace-solarized-dark .ace_marker-layer .ace_bracket {\\\nmargin: -1px 0 0 -1px;\\\nborder: 1px solid rgba(147, 161, 161, 0.50)\\\n}\\\n.ace-solarized-dark .ace_gutter-active-line {\\\nbackground-color: #0d3440\\\n}\\\n.ace-solarized-dark .ace_marker-layer .ace_selected-word {\\\nborder: 1px solid #073642\\\n}\\\n.ace-solarized-dark .ace_invisible {\\\ncolor: rgba(147, 161, 161, 0.50)\\\n}\\\n.ace-solarized-dark .ace_keyword,\\\n.ace-solarized-dark .ace_meta,\\\n.ace-solarized-dark .ace_support.ace_class,\\\n.ace-solarized-dark .ace_support.ace_type {\\\ncolor: #859900\\\n}\\\n.ace-solarized-dark .ace_constant.ace_character,\\\n.ace-solarized-dark .ace_constant.ace_other {\\\ncolor: #CB4B16\\\n}\\\n.ace-solarized-dark .ace_constant.ace_language {\\\ncolor: #B58900\\\n}\\\n.ace-solarized-dark .ace_constant.ace_numeric {\\\ncolor: #D33682\\\n}\\\n.ace-solarized-dark .ace_fold {\\\nbackground-color: #268BD2;\\\nborder-color: #93A1A1\\\n}\\\n.ace-solarized-dark .ace_entity.ace_name.ace_function,\\\n.ace-solarized-dark .ace_entity.ace_name.ace_tag,\\\n.ace-solarized-dark .ace_support.ace_function,\\\n.ace-solarized-dark .ace_variable,\\\n.ace-solarized-dark .ace_variable.ace_language {\\\ncolor: #268BD2\\\n}\\\n.ace-solarized-dark .ace_string {\\\ncolor: #2AA198\\\n}\\\n.ace-solarized-dark .ace_comment {\\\nfont-style: italic;\\\ncolor: #657B83\\\n}\\\n.ace-solarized-dark .ace_indent-guide {\\\nbackground: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNg0Db1ZVCxc/sPAAd4AlUHlLenAAAAAElFTkSuQmCC) right repeat-y\\\n}\";\n var dom = acequire(\"../lib/dom\");\n dom.importCssString(exports.cssText, exports.cssClass);\n});","module.exports.id = 'ace/mode/json_worker';\nmodule.exports.src = \"\\\"no use strict\\\";!function(window){function resolveModuleId(id,paths){for(var testPath=id,tail=\\\"\\\";testPath;){var alias=paths[testPath];if(\\\"string\\\"==typeof alias)return alias+tail;if(alias)return alias.location.replace(/\\\\/*$/,\\\"/\\\")+(tail||alias.main||alias.name);if(alias===!1)return\\\"\\\";var i=testPath.lastIndexOf(\\\"/\\\");if(-1===i)break;tail=testPath.substr(i)+tail,testPath=testPath.slice(0,i)}return id}if(!(void 0!==window.window&&window.document||window.acequire&&window.define)){window.console||(window.console=function(){var msgs=Array.prototype.slice.call(arguments,0);postMessage({type:\\\"log\\\",data:msgs})},window.console.error=window.console.warn=window.console.log=window.console.trace=window.console),window.window=window,window.ace=window,window.onerror=function(message,file,line,col,err){postMessage({type:\\\"error\\\",data:{message:message,data:err.data,file:file,line:line,col:col,stack:err.stack}})},window.normalizeModule=function(parentId,moduleName){if(-1!==moduleName.indexOf(\\\"!\\\")){var chunks=moduleName.split(\\\"!\\\");return window.normalizeModule(parentId,chunks[0])+\\\"!\\\"+window.normalizeModule(parentId,chunks[1])}if(\\\".\\\"==moduleName.charAt(0)){var base=parentId.split(\\\"/\\\").slice(0,-1).join(\\\"/\\\");for(moduleName=(base?base+\\\"/\\\":\\\"\\\")+moduleName;-1!==moduleName.indexOf(\\\".\\\")&&previous!=moduleName;){var previous=moduleName;moduleName=moduleName.replace(/^\\\\.\\\\//,\\\"\\\").replace(/\\\\/\\\\.\\\\//,\\\"/\\\").replace(/[^\\\\/]+\\\\/\\\\.\\\\.\\\\//,\\\"\\\")}}return moduleName},window.acequire=function acequire(parentId,id){if(id||(id=parentId,parentId=null),!id.charAt)throw Error(\\\"worker.js acequire() accepts only (parentId, id) as arguments\\\");id=window.normalizeModule(parentId,id);var module=window.acequire.modules[id];if(module)return module.initialized||(module.initialized=!0,module.exports=module.factory().exports),module.exports;if(!window.acequire.tlns)return console.log(\\\"unable to load \\\"+id);var path=resolveModuleId(id,window.acequire.tlns);return\\\".js\\\"!=path.slice(-3)&&(path+=\\\".js\\\"),window.acequire.id=id,window.acequire.modules[id]={},importScripts(path),window.acequire(parentId,id)},window.acequire.modules={},window.acequire.tlns={},window.define=function(id,deps,factory){if(2==arguments.length?(factory=deps,\\\"string\\\"!=typeof id&&(deps=id,id=window.acequire.id)):1==arguments.length&&(factory=id,deps=[],id=window.acequire.id),\\\"function\\\"!=typeof factory)return window.acequire.modules[id]={exports:factory,initialized:!0},void 0;deps.length||(deps=[\\\"require\\\",\\\"exports\\\",\\\"module\\\"]);var req=function(childId){return window.acequire(id,childId)};window.acequire.modules[id]={exports:{},factory:function(){var module=this,returnExports=factory.apply(this,deps.map(function(dep){switch(dep){case\\\"require\\\":return req;case\\\"exports\\\":return module.exports;case\\\"module\\\":return module;default:return req(dep)}}));return returnExports&&(module.exports=returnExports),module}}},window.define.amd={},acequire.tlns={},window.initBaseUrls=function(topLevelNamespaces){for(var i in topLevelNamespaces)acequire.tlns[i]=topLevelNamespaces[i]},window.initSender=function(){var EventEmitter=window.acequire(\\\"ace/lib/event_emitter\\\").EventEmitter,oop=window.acequire(\\\"ace/lib/oop\\\"),Sender=function(){};return function(){oop.implement(this,EventEmitter),this.callback=function(data,callbackId){postMessage({type:\\\"call\\\",id:callbackId,data:data})},this.emit=function(name,data){postMessage({type:\\\"event\\\",name:name,data:data})}}.call(Sender.prototype),new Sender};var main=window.main=null,sender=window.sender=null;window.onmessage=function(e){var msg=e.data;if(msg.event&&sender)sender._signal(msg.event,msg.data);else if(msg.command)if(main[msg.command])main[msg.command].apply(main,msg.args);else{if(!window[msg.command])throw Error(\\\"Unknown command:\\\"+msg.command);window[msg.command].apply(window,msg.args)}else if(msg.init){window.initBaseUrls(msg.tlns),acequire(\\\"ace/lib/es5-shim\\\"),sender=window.sender=window.initSender();var clazz=acequire(msg.module)[msg.classname];main=window.main=new clazz(sender)}}}}(this),ace.define(\\\"ace/lib/oop\\\",[\\\"require\\\",\\\"exports\\\",\\\"module\\\"],function(acequire,exports){\\\"use strict\\\";exports.inherits=function(ctor,superCtor){ctor.super_=superCtor,ctor.prototype=Object.create(superCtor.prototype,{constructor:{value:ctor,enumerable:!1,writable:!0,configurable:!0}})},exports.mixin=function(obj,mixin){for(var key in mixin)obj[key]=mixin[key];return obj},exports.implement=function(proto,mixin){exports.mixin(proto,mixin)}}),ace.define(\\\"ace/range\\\",[\\\"require\\\",\\\"exports\\\",\\\"module\\\"],function(acequire,exports){\\\"use strict\\\";var comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},Range=function(startRow,startColumn,endRow,endColumn){this.start={row:startRow,column:startColumn},this.end={row:endRow,column:endColumn}};(function(){this.isEqual=function(range){return this.start.row===range.start.row&&this.end.row===range.end.row&&this.start.column===range.start.column&&this.end.column===range.end.column},this.toString=function(){return\\\"Range: [\\\"+this.start.row+\\\"/\\\"+this.start.column+\\\"] -> [\\\"+this.end.row+\\\"/\\\"+this.end.column+\\\"]\\\"},this.contains=function(row,column){return 0==this.compare(row,column)},this.compareRange=function(range){var cmp,end=range.end,start=range.start;return cmp=this.compare(end.row,end.column),1==cmp?(cmp=this.compare(start.row,start.column),1==cmp?2:0==cmp?1:0):-1==cmp?-2:(cmp=this.compare(start.row,start.column),-1==cmp?-1:1==cmp?42:0)},this.comparePoint=function(p){return this.compare(p.row,p.column)},this.containsRange=function(range){return 0==this.comparePoint(range.start)&&0==this.comparePoint(range.end)},this.intersects=function(range){var cmp=this.compareRange(range);return-1==cmp||0==cmp||1==cmp},this.isEnd=function(row,column){return this.end.row==row&&this.end.column==column},this.isStart=function(row,column){return this.start.row==row&&this.start.column==column},this.setStart=function(row,column){\\\"object\\\"==typeof row?(this.start.column=row.column,this.start.row=row.row):(this.start.row=row,this.start.column=column)},this.setEnd=function(row,column){\\\"object\\\"==typeof row?(this.end.column=row.column,this.end.row=row.row):(this.end.row=row,this.end.column=column)},this.inside=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)||this.isStart(row,column)?!1:!0:!1},this.insideStart=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)?!1:!0:!1},this.insideEnd=function(row,column){return 0==this.compare(row,column)?this.isStart(row,column)?!1:!0:!1},this.compare=function(row,column){return this.isMultiLine()||row!==this.start.row?this.start.row>row?-1:row>this.end.row?1:this.start.row===row?column>=this.start.column?0:-1:this.end.row===row?this.end.column>=column?0:1:0:this.start.column>column?-1:column>this.end.column?1:0},this.compareStart=function(row,column){return this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.compareEnd=function(row,column){return this.end.row==row&&this.end.column==column?1:this.compare(row,column)},this.compareInside=function(row,column){return this.end.row==row&&this.end.column==column?1:this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.clipRows=function(firstRow,lastRow){if(this.end.row>lastRow)var end={row:lastRow+1,column:0};else if(firstRow>this.end.row)var end={row:firstRow,column:0};if(this.start.row>lastRow)var start={row:lastRow+1,column:0};else if(firstRow>this.start.row)var start={row:firstRow,column:0};return Range.fromPoints(start||this.start,end||this.end)},this.extend=function(row,column){var cmp=this.compare(row,column);if(0==cmp)return this;if(-1==cmp)var start={row:row,column:column};else var end={row:row,column:column};return Range.fromPoints(start||this.start,end||this.end)},this.isEmpty=function(){return this.start.row===this.end.row&&this.start.column===this.end.column},this.isMultiLine=function(){return this.start.row!==this.end.row},this.clone=function(){return Range.fromPoints(this.start,this.end)},this.collapseRows=function(){return 0==this.end.column?new Range(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new Range(this.start.row,0,this.end.row,0)},this.toScreenRange=function(session){var screenPosStart=session.documentToScreenPosition(this.start),screenPosEnd=session.documentToScreenPosition(this.end);return new Range(screenPosStart.row,screenPosStart.column,screenPosEnd.row,screenPosEnd.column)},this.moveBy=function(row,column){this.start.row+=row,this.start.column+=column,this.end.row+=row,this.end.column+=column}}).call(Range.prototype),Range.fromPoints=function(start,end){return new Range(start.row,start.column,end.row,end.column)},Range.comparePoints=comparePoints,Range.comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},exports.Range=Range}),ace.define(\\\"ace/apply_delta\\\",[\\\"require\\\",\\\"exports\\\",\\\"module\\\"],function(acequire,exports){\\\"use strict\\\";exports.applyDelta=function(docLines,delta){var row=delta.start.row,startColumn=delta.start.column,line=docLines[row]||\\\"\\\";switch(delta.action){case\\\"insert\\\":var lines=delta.lines;if(1===lines.length)docLines[row]=line.substring(0,startColumn)+delta.lines[0]+line.substring(startColumn);else{var args=[row,1].concat(delta.lines);docLines.splice.apply(docLines,args),docLines[row]=line.substring(0,startColumn)+docLines[row],docLines[row+delta.lines.length-1]+=line.substring(startColumn)}break;case\\\"remove\\\":var endColumn=delta.end.column,endRow=delta.end.row;row===endRow?docLines[row]=line.substring(0,startColumn)+line.substring(endColumn):docLines.splice(row,endRow-row+1,line.substring(0,startColumn)+docLines[endRow].substring(endColumn))}}}),ace.define(\\\"ace/lib/event_emitter\\\",[\\\"require\\\",\\\"exports\\\",\\\"module\\\"],function(acequire,exports){\\\"use strict\\\";var EventEmitter={},stopPropagation=function(){this.propagationStopped=!0},preventDefault=function(){this.defaultPrevented=!0};EventEmitter._emit=EventEmitter._dispatchEvent=function(eventName,e){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var listeners=this._eventRegistry[eventName]||[],defaultHandler=this._defaultHandlers[eventName];if(listeners.length||defaultHandler){\\\"object\\\"==typeof e&&e||(e={}),e.type||(e.type=eventName),e.stopPropagation||(e.stopPropagation=stopPropagation),e.preventDefault||(e.preventDefault=preventDefault),listeners=listeners.slice();for(var i=0;listeners.length>i&&(listeners[i](e,this),!e.propagationStopped);i++);return defaultHandler&&!e.defaultPrevented?defaultHandler(e,this):void 0}},EventEmitter._signal=function(eventName,e){var listeners=(this._eventRegistry||{})[eventName];if(listeners){listeners=listeners.slice();for(var i=0;listeners.length>i;i++)listeners[i](e,this)}},EventEmitter.once=function(eventName,callback){var _self=this;callback&&this.addEventListener(eventName,function newCallback(){_self.removeEventListener(eventName,newCallback),callback.apply(null,arguments)})},EventEmitter.setDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers||(handlers=this._defaultHandlers={_disabled_:{}}),handlers[eventName]){var old=handlers[eventName],disabled=handlers._disabled_[eventName];disabled||(handlers._disabled_[eventName]=disabled=[]),disabled.push(old);var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}handlers[eventName]=callback},EventEmitter.removeDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers){var disabled=handlers._disabled_[eventName];if(handlers[eventName]==callback)handlers[eventName],disabled&&this.setDefaultHandler(eventName,disabled.pop());else if(disabled){var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}}},EventEmitter.on=EventEmitter.addEventListener=function(eventName,callback,capturing){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];return listeners||(listeners=this._eventRegistry[eventName]=[]),-1==listeners.indexOf(callback)&&listeners[capturing?\\\"unshift\\\":\\\"push\\\"](callback),callback},EventEmitter.off=EventEmitter.removeListener=EventEmitter.removeEventListener=function(eventName,callback){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];if(listeners){var index=listeners.indexOf(callback);-1!==index&&listeners.splice(index,1)}},EventEmitter.removeAllListeners=function(eventName){this._eventRegistry&&(this._eventRegistry[eventName]=[])},exports.EventEmitter=EventEmitter}),ace.define(\\\"ace/anchor\\\",[\\\"require\\\",\\\"exports\\\",\\\"module\\\",\\\"ace/lib/oop\\\",\\\"ace/lib/event_emitter\\\"],function(acequire,exports){\\\"use strict\\\";var oop=acequire(\\\"./lib/oop\\\"),EventEmitter=acequire(\\\"./lib/event_emitter\\\").EventEmitter,Anchor=exports.Anchor=function(doc,row,column){this.$onChange=this.onChange.bind(this),this.attach(doc),column===void 0?this.setPosition(row.row,row.column):this.setPosition(row,column)};(function(){function $pointsInOrder(point1,point2,equalPointsInOrder){var bColIsAfter=equalPointsInOrder?point1.column<=point2.column:point1.columnthis.row)){var point=$getTransformedPoint(delta,{row:this.row,column:this.column},this.$insertRight);this.setPosition(point.row,point.column,!0)}},this.setPosition=function(row,column,noClip){var pos;if(pos=noClip?{row:row,column:column}:this.$clipPositionToDocument(row,column),this.row!=pos.row||this.column!=pos.column){var old={row:this.row,column:this.column};this.row=pos.row,this.column=pos.column,this._signal(\\\"change\\\",{old:old,value:pos})}},this.detach=function(){this.document.removeEventListener(\\\"change\\\",this.$onChange)},this.attach=function(doc){this.document=doc||this.document,this.document.on(\\\"change\\\",this.$onChange)},this.$clipPositionToDocument=function(row,column){var pos={};return row>=this.document.getLength()?(pos.row=Math.max(0,this.document.getLength()-1),pos.column=this.document.getLine(pos.row).length):0>row?(pos.row=0,pos.column=0):(pos.row=row,pos.column=Math.min(this.document.getLine(pos.row).length,Math.max(0,column))),0>column&&(pos.column=0),pos}}).call(Anchor.prototype)}),ace.define(\\\"ace/document\\\",[\\\"require\\\",\\\"exports\\\",\\\"module\\\",\\\"ace/lib/oop\\\",\\\"ace/apply_delta\\\",\\\"ace/lib/event_emitter\\\",\\\"ace/range\\\",\\\"ace/anchor\\\"],function(acequire,exports){\\\"use strict\\\";var oop=acequire(\\\"./lib/oop\\\"),applyDelta=acequire(\\\"./apply_delta\\\").applyDelta,EventEmitter=acequire(\\\"./lib/event_emitter\\\").EventEmitter,Range=acequire(\\\"./range\\\").Range,Anchor=acequire(\\\"./anchor\\\").Anchor,Document=function(textOrLines){this.$lines=[\\\"\\\"],0===textOrLines.length?this.$lines=[\\\"\\\"]:Array.isArray(textOrLines)?this.insertMergedLines({row:0,column:0},textOrLines):this.insert({row:0,column:0},textOrLines)};(function(){oop.implement(this,EventEmitter),this.setValue=function(text){var len=this.getLength()-1;this.remove(new Range(0,0,len,this.getLine(len).length)),this.insert({row:0,column:0},text)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(row,column){return new Anchor(this,row,column)},this.$split=0===\\\"aaa\\\".split(/a/).length?function(text){return text.replace(/\\\\r\\\\n|\\\\r/g,\\\"\\\\n\\\").split(\\\"\\\\n\\\")}:function(text){return text.split(/\\\\r\\\\n|\\\\r|\\\\n/)},this.$detectNewLine=function(text){var match=text.match(/^.*?(\\\\r\\\\n|\\\\r|\\\\n)/m);this.$autoNewLine=match?match[1]:\\\"\\\\n\\\",this._signal(\\\"changeNewLineMode\\\")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case\\\"windows\\\":return\\\"\\\\r\\\\n\\\";case\\\"unix\\\":return\\\"\\\\n\\\";default:return this.$autoNewLine||\\\"\\\\n\\\"}},this.$autoNewLine=\\\"\\\",this.$newLineMode=\\\"auto\\\",this.setNewLineMode=function(newLineMode){this.$newLineMode!==newLineMode&&(this.$newLineMode=newLineMode,this._signal(\\\"changeNewLineMode\\\"))},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(text){return\\\"\\\\r\\\\n\\\"==text||\\\"\\\\r\\\"==text||\\\"\\\\n\\\"==text},this.getLine=function(row){return this.$lines[row]||\\\"\\\"},this.getLines=function(firstRow,lastRow){return this.$lines.slice(firstRow,lastRow+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(range){return this.getLinesForRange(range).join(this.getNewLineCharacter())},this.getLinesForRange=function(range){var lines;if(range.start.row===range.end.row)lines=[this.getLine(range.start.row).substring(range.start.column,range.end.column)];else{lines=this.getLines(range.start.row,range.end.row),lines[0]=(lines[0]||\\\"\\\").substring(range.start.column);var l=lines.length-1;range.end.row-range.start.row==l&&(lines[l]=lines[l].substring(0,range.end.column))}return lines},this.insertLines=function(row,lines){return console.warn(\\\"Use of document.insertLines is deprecated. Use the insertFullLines method instead.\\\"),this.insertFullLines(row,lines)},this.removeLines=function(firstRow,lastRow){return console.warn(\\\"Use of document.removeLines is deprecated. Use the removeFullLines method instead.\\\"),this.removeFullLines(firstRow,lastRow)},this.insertNewLine=function(position){return console.warn(\\\"Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead.\\\"),this.insertMergedLines(position,[\\\"\\\",\\\"\\\"])},this.insert=function(position,text){return 1>=this.getLength()&&this.$detectNewLine(text),this.insertMergedLines(position,this.$split(text))},this.insertInLine=function(position,text){var start=this.clippedPos(position.row,position.column),end=this.pos(position.row,position.column+text.length);return this.applyDelta({start:start,end:end,action:\\\"insert\\\",lines:[text]},!0),this.clonePos(end)},this.clippedPos=function(row,column){var length=this.getLength();void 0===row?row=length:0>row?row=0:row>=length&&(row=length-1,column=void 0);var line=this.getLine(row);return void 0==column&&(column=line.length),column=Math.min(Math.max(column,0),line.length),{row:row,column:column}},this.clonePos=function(pos){return{row:pos.row,column:pos.column}},this.pos=function(row,column){return{row:row,column:column}},this.$clipPosition=function(position){var length=this.getLength();return position.row>=length?(position.row=Math.max(0,length-1),position.column=this.getLine(length-1).length):(position.row=Math.max(0,position.row),position.column=Math.min(Math.max(position.column,0),this.getLine(position.row).length)),position},this.insertFullLines=function(row,lines){row=Math.min(Math.max(row,0),this.getLength());var column=0;this.getLength()>row?(lines=lines.concat([\\\"\\\"]),column=0):(lines=[\\\"\\\"].concat(lines),row--,column=this.$lines[row].length),this.insertMergedLines({row:row,column:column},lines)},this.insertMergedLines=function(position,lines){var start=this.clippedPos(position.row,position.column),end={row:start.row+lines.length-1,column:(1==lines.length?start.column:0)+lines[lines.length-1].length};return this.applyDelta({start:start,end:end,action:\\\"insert\\\",lines:lines}),this.clonePos(end)},this.remove=function(range){var start=this.clippedPos(range.start.row,range.start.column),end=this.clippedPos(range.end.row,range.end.column);return this.applyDelta({start:start,end:end,action:\\\"remove\\\",lines:this.getLinesForRange({start:start,end:end})}),this.clonePos(start)},this.removeInLine=function(row,startColumn,endColumn){var start=this.clippedPos(row,startColumn),end=this.clippedPos(row,endColumn);return this.applyDelta({start:start,end:end,action:\\\"remove\\\",lines:this.getLinesForRange({start:start,end:end})},!0),this.clonePos(start)},this.removeFullLines=function(firstRow,lastRow){firstRow=Math.min(Math.max(0,firstRow),this.getLength()-1),lastRow=Math.min(Math.max(0,lastRow),this.getLength()-1);var deleteFirstNewLine=lastRow==this.getLength()-1&&firstRow>0,deleteLastNewLine=this.getLength()-1>lastRow,startRow=deleteFirstNewLine?firstRow-1:firstRow,startCol=deleteFirstNewLine?this.getLine(startRow).length:0,endRow=deleteLastNewLine?lastRow+1:lastRow,endCol=deleteLastNewLine?0:this.getLine(endRow).length,range=new Range(startRow,startCol,endRow,endCol),deletedLines=this.$lines.slice(firstRow,lastRow+1);return this.applyDelta({start:range.start,end:range.end,action:\\\"remove\\\",lines:this.getLinesForRange(range)}),deletedLines},this.removeNewLine=function(row){this.getLength()-1>row&&row>=0&&this.applyDelta({start:this.pos(row,this.getLine(row).length),end:this.pos(row+1,0),action:\\\"remove\\\",lines:[\\\"\\\",\\\"\\\"]})},this.replace=function(range,text){if(range instanceof Range||(range=Range.fromPoints(range.start,range.end)),0===text.length&&range.isEmpty())return range.start;if(text==this.getTextRange(range))return range.end;this.remove(range);var end;return end=text?this.insert(range.start,text):range.start},this.applyDeltas=function(deltas){for(var i=0;deltas.length>i;i++)this.applyDelta(deltas[i])},this.revertDeltas=function(deltas){for(var i=deltas.length-1;i>=0;i--)this.revertDelta(deltas[i])},this.applyDelta=function(delta,doNotValidate){var isInsert=\\\"insert\\\"==delta.action;(isInsert?1>=delta.lines.length&&!delta.lines[0]:!Range.comparePoints(delta.start,delta.end))||(isInsert&&delta.lines.length>2e4&&this.$splitAndapplyLargeDelta(delta,2e4),applyDelta(this.$lines,delta,doNotValidate),this._signal(\\\"change\\\",delta))},this.$splitAndapplyLargeDelta=function(delta,MAX){for(var lines=delta.lines,l=lines.length,row=delta.start.row,column=delta.start.column,from=0,to=0;;){from=to,to+=MAX-1;var chunk=lines.slice(from,to);if(to>l){delta.lines=chunk,delta.start.row=row+from,delta.start.column=column;break}chunk.push(\\\"\\\"),this.applyDelta({start:this.pos(row+from,column),end:this.pos(row+to,column=0),action:delta.action,lines:chunk},!0)}},this.revertDelta=function(delta){this.applyDelta({start:this.clonePos(delta.start),end:this.clonePos(delta.end),action:\\\"insert\\\"==delta.action?\\\"remove\\\":\\\"insert\\\",lines:delta.lines.slice()})},this.indexToPosition=function(index,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,i=startRow||0,l=lines.length;l>i;i++)if(index-=lines[i].length+newlineLength,0>index)return{row:i,column:index+lines[i].length+newlineLength};return{row:l-1,column:lines[l-1].length}},this.positionToIndex=function(pos,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,index=0,row=Math.min(pos.row,lines.length),i=startRow||0;row>i;++i)index+=lines[i].length+newlineLength;return index+pos.column}}).call(Document.prototype),exports.Document=Document}),ace.define(\\\"ace/lib/lang\\\",[\\\"require\\\",\\\"exports\\\",\\\"module\\\"],function(acequire,exports){\\\"use strict\\\";exports.last=function(a){return a[a.length-1]},exports.stringReverse=function(string){return string.split(\\\"\\\").reverse().join(\\\"\\\")},exports.stringRepeat=function(string,count){for(var result=\\\"\\\";count>0;)1&count&&(result+=string),(count>>=1)&&(string+=string);return result};var trimBeginRegexp=/^\\\\s\\\\s*/,trimEndRegexp=/\\\\s\\\\s*$/;exports.stringTrimLeft=function(string){return string.replace(trimBeginRegexp,\\\"\\\")},exports.stringTrimRight=function(string){return string.replace(trimEndRegexp,\\\"\\\")},exports.copyObject=function(obj){var copy={};for(var key in obj)copy[key]=obj[key];return copy},exports.copyArray=function(array){for(var copy=[],i=0,l=array.length;l>i;i++)copy[i]=array[i]&&\\\"object\\\"==typeof array[i]?this.copyObject(array[i]):array[i];return copy},exports.deepCopy=function deepCopy(obj){if(\\\"object\\\"!=typeof obj||!obj)return obj;var copy;if(Array.isArray(obj)){copy=[];for(var key=0;obj.length>key;key++)copy[key]=deepCopy(obj[key]);return copy}if(\\\"[object Object]\\\"!==Object.prototype.toString.call(obj))return obj;copy={};for(var key in obj)copy[key]=deepCopy(obj[key]);return copy},exports.arrayToMap=function(arr){for(var map={},i=0;arr.length>i;i++)map[arr[i]]=1;return map},exports.createMap=function(props){var map=Object.create(null);for(var i in props)map[i]=props[i];return map},exports.arrayRemove=function(array,value){for(var i=0;array.length>=i;i++)value===array[i]&&array.splice(i,1)},exports.escapeRegExp=function(str){return str.replace(/([.*+?^${}()|[\\\\]\\\\/\\\\\\\\])/g,\\\"\\\\\\\\$1\\\")},exports.escapeHTML=function(str){return str.replace(/&/g,\\\"&\\\").replace(/\\\"/g,\\\""\\\").replace(/'/g,\\\"'\\\").replace(/i;i+=2){if(Array.isArray(data[i+1]))var d={action:\\\"insert\\\",start:data[i],lines:data[i+1]};else var d={action:\\\"remove\\\",start:data[i],end:data[i+1]};doc.applyDelta(d,!0)}return _self.$timeout?deferredUpdate.schedule(_self.$timeout):(_self.onUpdate(),void 0)})};(function(){this.$timeout=500,this.setTimeout=function(timeout){this.$timeout=timeout},this.setValue=function(value){this.doc.setValue(value),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(callbackId){this.sender.callback(this.doc.getValue(),callbackId)},this.onUpdate=function(){},this.isPending=function(){return this.deferredUpdate.isPending()}}).call(Mirror.prototype)}),ace.define(\\\"ace/mode/json/json_parse\\\",[\\\"require\\\",\\\"exports\\\",\\\"module\\\"],function(){\\\"use strict\\\";var at,ch,text,value,escapee={'\\\"':'\\\"',\\\"\\\\\\\\\\\":\\\"\\\\\\\\\\\",\\\"/\\\":\\\"/\\\",b:\\\"\\\\b\\\",f:\\\"\\\\f\\\",n:\\\"\\\\n\\\",r:\\\"\\\\r\\\",t:\\\"\\t\\\"},error=function(m){throw{name:\\\"SyntaxError\\\",message:m,at:at,text:text}},next=function(c){return c&&c!==ch&&error(\\\"Expected '\\\"+c+\\\"' instead of '\\\"+ch+\\\"'\\\"),ch=text.charAt(at),at+=1,ch},number=function(){var number,string=\\\"\\\";for(\\\"-\\\"===ch&&(string=\\\"-\\\",next(\\\"-\\\"));ch>=\\\"0\\\"&&\\\"9\\\">=ch;)string+=ch,next();if(\\\".\\\"===ch)for(string+=\\\".\\\";next()&&ch>=\\\"0\\\"&&\\\"9\\\">=ch;)string+=ch;if(\\\"e\\\"===ch||\\\"E\\\"===ch)for(string+=ch,next(),(\\\"-\\\"===ch||\\\"+\\\"===ch)&&(string+=ch,next());ch>=\\\"0\\\"&&\\\"9\\\">=ch;)string+=ch,next();return number=+string,isNaN(number)?(error(\\\"Bad number\\\"),void 0):number},string=function(){var hex,i,uffff,string=\\\"\\\";if('\\\"'===ch)for(;next();){if('\\\"'===ch)return next(),string;if(\\\"\\\\\\\\\\\"===ch)if(next(),\\\"u\\\"===ch){for(uffff=0,i=0;4>i&&(hex=parseInt(next(),16),isFinite(hex));i+=1)uffff=16*uffff+hex;string+=String.fromCharCode(uffff)}else{if(\\\"string\\\"!=typeof escapee[ch])break;string+=escapee[ch]}else string+=ch}error(\\\"Bad string\\\")},white=function(){for(;ch&&\\\" \\\">=ch;)next()},word=function(){switch(ch){case\\\"t\\\":return next(\\\"t\\\"),next(\\\"r\\\"),next(\\\"u\\\"),next(\\\"e\\\"),!0;case\\\"f\\\":return next(\\\"f\\\"),next(\\\"a\\\"),next(\\\"l\\\"),next(\\\"s\\\"),next(\\\"e\\\"),!1;case\\\"n\\\":return next(\\\"n\\\"),next(\\\"u\\\"),next(\\\"l\\\"),next(\\\"l\\\"),null}error(\\\"Unexpected '\\\"+ch+\\\"'\\\")},array=function(){var array=[];if(\\\"[\\\"===ch){if(next(\\\"[\\\"),white(),\\\"]\\\"===ch)return next(\\\"]\\\"),array;for(;ch;){if(array.push(value()),white(),\\\"]\\\"===ch)return next(\\\"]\\\"),array;next(\\\",\\\"),white()}}error(\\\"Bad array\\\")},object=function(){var key,object={};if(\\\"{\\\"===ch){if(next(\\\"{\\\"),white(),\\\"}\\\"===ch)return next(\\\"}\\\"),object;for(;ch;){if(key=string(),white(),next(\\\":\\\"),Object.hasOwnProperty.call(object,key)&&error('Duplicate key \\\"'+key+'\\\"'),object[key]=value(),white(),\\\"}\\\"===ch)return next(\\\"}\\\"),object;next(\\\",\\\"),white()}}error(\\\"Bad object\\\")};return value=function(){switch(white(),ch){case\\\"{\\\":return object();case\\\"[\\\":return array();case'\\\"':return string();case\\\"-\\\":return number();default:return ch>=\\\"0\\\"&&\\\"9\\\">=ch?number():word()}},function(source,reviver){var result;return text=source,at=0,ch=\\\" \\\",result=value(),white(),ch&&error(\\\"Syntax error\\\"),\\\"function\\\"==typeof reviver?function walk(holder,key){var k,v,value=holder[key];if(value&&\\\"object\\\"==typeof value)for(k in value)Object.hasOwnProperty.call(value,k)&&(v=walk(value,k),void 0!==v?value[k]=v:delete value[k]);return reviver.call(holder,key,value)}({\\\"\\\":result},\\\"\\\"):result}}),ace.define(\\\"ace/mode/json_worker\\\",[\\\"require\\\",\\\"exports\\\",\\\"module\\\",\\\"ace/lib/oop\\\",\\\"ace/worker/mirror\\\",\\\"ace/mode/json/json_parse\\\"],function(acequire,exports){\\\"use strict\\\";var oop=acequire(\\\"../lib/oop\\\"),Mirror=acequire(\\\"../worker/mirror\\\").Mirror,parse=acequire(\\\"./json/json_parse\\\"),JsonWorker=exports.JsonWorker=function(sender){Mirror.call(this,sender),this.setTimeout(200)};oop.inherits(JsonWorker,Mirror),function(){this.onUpdate=function(){var value=this.doc.getValue(),errors=[];try{value&&parse(value)}catch(e){var pos=this.doc.indexToPosition(e.at-1);errors.push({row:pos.row,column:pos.column,text:e.message,type:\\\"error\\\"})}this.sender.emit(\\\"annotate\\\",errors)}}.call(JsonWorker.prototype)}),ace.define(\\\"ace/lib/es5-shim\\\",[\\\"require\\\",\\\"exports\\\",\\\"module\\\"],function(){function Empty(){}function doesDefinePropertyWork(object){try{return Object.defineProperty(object,\\\"sentinel\\\",{}),\\\"sentinel\\\"in object}catch(exception){}}function toInteger(n){return n=+n,n!==n?n=0:0!==n&&n!==1/0&&n!==-(1/0)&&(n=(n>0||-1)*Math.floor(Math.abs(n))),n}Function.prototype.bind||(Function.prototype.bind=function(that){var target=this;if(\\\"function\\\"!=typeof target)throw new TypeError(\\\"Function.prototype.bind called on incompatible \\\"+target);var args=slice.call(arguments,1),bound=function(){if(this instanceof bound){var result=target.apply(this,args.concat(slice.call(arguments)));return Object(result)===result?result:this}return target.apply(that,args.concat(slice.call(arguments)))};return target.prototype&&(Empty.prototype=target.prototype,bound.prototype=new Empty,Empty.prototype=null),bound});var defineGetter,defineSetter,lookupGetter,lookupSetter,supportsAccessors,call=Function.prototype.call,prototypeOfArray=Array.prototype,prototypeOfObject=Object.prototype,slice=prototypeOfArray.slice,_toString=call.bind(prototypeOfObject.toString),owns=call.bind(prototypeOfObject.hasOwnProperty);if((supportsAccessors=owns(prototypeOfObject,\\\"__defineGetter__\\\"))&&(defineGetter=call.bind(prototypeOfObject.__defineGetter__),defineSetter=call.bind(prototypeOfObject.__defineSetter__),lookupGetter=call.bind(prototypeOfObject.__lookupGetter__),lookupSetter=call.bind(prototypeOfObject.__lookupSetter__)),2!=[1,2].splice(0).length)if(function(){function makeArray(l){var a=Array(l+2);return a[0]=a[1]=0,a}var lengthBefore,array=[];return array.splice.apply(array,makeArray(20)),array.splice.apply(array,makeArray(26)),lengthBefore=array.length,array.splice(5,0,\\\"XXX\\\"),lengthBefore+1==array.length,lengthBefore+1==array.length?!0:void 0\\n}()){var array_splice=Array.prototype.splice;Array.prototype.splice=function(start,deleteCount){return arguments.length?array_splice.apply(this,[void 0===start?0:start,void 0===deleteCount?this.length-start:deleteCount].concat(slice.call(arguments,2))):[]}}else Array.prototype.splice=function(pos,removeCount){var length=this.length;pos>0?pos>length&&(pos=length):void 0==pos?pos=0:0>pos&&(pos=Math.max(length+pos,0)),length>pos+removeCount||(removeCount=length-pos);var removed=this.slice(pos,pos+removeCount),insert=slice.call(arguments,2),add=insert.length;if(pos===length)add&&this.push.apply(this,insert);else{var remove=Math.min(removeCount,length-pos),tailOldPos=pos+remove,tailNewPos=tailOldPos+add-remove,tailCount=length-tailOldPos,lengthAfterRemove=length-remove;if(tailOldPos>tailNewPos)for(var i=0;tailCount>i;++i)this[tailNewPos+i]=this[tailOldPos+i];else if(tailNewPos>tailOldPos)for(i=tailCount;i--;)this[tailNewPos+i]=this[tailOldPos+i];if(add&&pos===lengthAfterRemove)this.length=lengthAfterRemove,this.push.apply(this,insert);else for(this.length=lengthAfterRemove+add,i=0;add>i;++i)this[pos+i]=insert[i]}return removed};Array.isArray||(Array.isArray=function(obj){return\\\"[object Array]\\\"==_toString(obj)});var boxedString=Object(\\\"a\\\"),splitString=\\\"a\\\"!=boxedString[0]||!(0 in boxedString);if(Array.prototype.forEach||(Array.prototype.forEach=function(fun){var object=toObject(this),self=splitString&&\\\"[object String]\\\"==_toString(this)?this.split(\\\"\\\"):object,thisp=arguments[1],i=-1,length=self.length>>>0;if(\\\"[object Function]\\\"!=_toString(fun))throw new TypeError;for(;length>++i;)i in self&&fun.call(thisp,self[i],i,object)}),Array.prototype.map||(Array.prototype.map=function(fun){var object=toObject(this),self=splitString&&\\\"[object String]\\\"==_toString(this)?this.split(\\\"\\\"):object,length=self.length>>>0,result=Array(length),thisp=arguments[1];if(\\\"[object Function]\\\"!=_toString(fun))throw new TypeError(fun+\\\" is not a function\\\");for(var i=0;length>i;i++)i in self&&(result[i]=fun.call(thisp,self[i],i,object));return result}),Array.prototype.filter||(Array.prototype.filter=function(fun){var value,object=toObject(this),self=splitString&&\\\"[object String]\\\"==_toString(this)?this.split(\\\"\\\"):object,length=self.length>>>0,result=[],thisp=arguments[1];if(\\\"[object Function]\\\"!=_toString(fun))throw new TypeError(fun+\\\" is not a function\\\");for(var i=0;length>i;i++)i in self&&(value=self[i],fun.call(thisp,value,i,object)&&result.push(value));return result}),Array.prototype.every||(Array.prototype.every=function(fun){var object=toObject(this),self=splitString&&\\\"[object String]\\\"==_toString(this)?this.split(\\\"\\\"):object,length=self.length>>>0,thisp=arguments[1];if(\\\"[object Function]\\\"!=_toString(fun))throw new TypeError(fun+\\\" is not a function\\\");for(var i=0;length>i;i++)if(i in self&&!fun.call(thisp,self[i],i,object))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(fun){var object=toObject(this),self=splitString&&\\\"[object String]\\\"==_toString(this)?this.split(\\\"\\\"):object,length=self.length>>>0,thisp=arguments[1];if(\\\"[object Function]\\\"!=_toString(fun))throw new TypeError(fun+\\\" is not a function\\\");for(var i=0;length>i;i++)if(i in self&&fun.call(thisp,self[i],i,object))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(fun){var object=toObject(this),self=splitString&&\\\"[object String]\\\"==_toString(this)?this.split(\\\"\\\"):object,length=self.length>>>0;if(\\\"[object Function]\\\"!=_toString(fun))throw new TypeError(fun+\\\" is not a function\\\");if(!length&&1==arguments.length)throw new TypeError(\\\"reduce of empty array with no initial value\\\");var result,i=0;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i++];break}if(++i>=length)throw new TypeError(\\\"reduce of empty array with no initial value\\\")}for(;length>i;i++)i in self&&(result=fun.call(void 0,result,self[i],i,object));return result}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(fun){var object=toObject(this),self=splitString&&\\\"[object String]\\\"==_toString(this)?this.split(\\\"\\\"):object,length=self.length>>>0;if(\\\"[object Function]\\\"!=_toString(fun))throw new TypeError(fun+\\\" is not a function\\\");if(!length&&1==arguments.length)throw new TypeError(\\\"reduceRight of empty array with no initial value\\\");var result,i=length-1;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i--];break}if(0>--i)throw new TypeError(\\\"reduceRight of empty array with no initial value\\\")}do i in this&&(result=fun.call(void 0,result,self[i],i,object));while(i--);return result}),Array.prototype.indexOf&&-1==[0,1].indexOf(1,2)||(Array.prototype.indexOf=function(sought){var self=splitString&&\\\"[object String]\\\"==_toString(this)?this.split(\\\"\\\"):toObject(this),length=self.length>>>0;if(!length)return-1;var i=0;for(arguments.length>1&&(i=toInteger(arguments[1])),i=i>=0?i:Math.max(0,length+i);length>i;i++)if(i in self&&self[i]===sought)return i;return-1}),Array.prototype.lastIndexOf&&-1==[0,1].lastIndexOf(0,-3)||(Array.prototype.lastIndexOf=function(sought){var self=splitString&&\\\"[object String]\\\"==_toString(this)?this.split(\\\"\\\"):toObject(this),length=self.length>>>0;if(!length)return-1;var i=length-1;for(arguments.length>1&&(i=Math.min(i,toInteger(arguments[1]))),i=i>=0?i:length-Math.abs(i);i>=0;i--)if(i in self&&sought===self[i])return i;return-1}),Object.getPrototypeOf||(Object.getPrototypeOf=function(object){return object.__proto__||(object.constructor?object.constructor.prototype:prototypeOfObject)}),!Object.getOwnPropertyDescriptor){var ERR_NON_OBJECT=\\\"Object.getOwnPropertyDescriptor called on a non-object: \\\";Object.getOwnPropertyDescriptor=function(object,property){if(\\\"object\\\"!=typeof object&&\\\"function\\\"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT+object);if(owns(object,property)){var descriptor,getter,setter;if(descriptor={enumerable:!0,configurable:!0},supportsAccessors){var prototype=object.__proto__;object.__proto__=prototypeOfObject;var getter=lookupGetter(object,property),setter=lookupSetter(object,property);if(object.__proto__=prototype,getter||setter)return getter&&(descriptor.get=getter),setter&&(descriptor.set=setter),descriptor}return descriptor.value=object[property],descriptor}}}if(Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(object){return Object.keys(object)}),!Object.create){var createEmpty;createEmpty=null===Object.prototype.__proto__?function(){return{__proto__:null}}:function(){var empty={};for(var i in empty)empty[i]=null;return empty.constructor=empty.hasOwnProperty=empty.propertyIsEnumerable=empty.isPrototypeOf=empty.toLocaleString=empty.toString=empty.valueOf=empty.__proto__=null,empty},Object.create=function(prototype,properties){var object;if(null===prototype)object=createEmpty();else{if(\\\"object\\\"!=typeof prototype)throw new TypeError(\\\"typeof prototype[\\\"+typeof prototype+\\\"] != 'object'\\\");var Type=function(){};Type.prototype=prototype,object=new Type,object.__proto__=prototype}return void 0!==properties&&Object.defineProperties(object,properties),object}}if(Object.defineProperty){var definePropertyWorksOnObject=doesDefinePropertyWork({}),definePropertyWorksOnDom=\\\"undefined\\\"==typeof document||doesDefinePropertyWork(document.createElement(\\\"div\\\"));if(!definePropertyWorksOnObject||!definePropertyWorksOnDom)var definePropertyFallback=Object.defineProperty}if(!Object.defineProperty||definePropertyFallback){var ERR_NON_OBJECT_DESCRIPTOR=\\\"Property description must be an object: \\\",ERR_NON_OBJECT_TARGET=\\\"Object.defineProperty called on non-object: \\\",ERR_ACCESSORS_NOT_SUPPORTED=\\\"getters & setters can not be defined on this javascript engine\\\";Object.defineProperty=function(object,property,descriptor){if(\\\"object\\\"!=typeof object&&\\\"function\\\"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT_TARGET+object);if(\\\"object\\\"!=typeof descriptor&&\\\"function\\\"!=typeof descriptor||null===descriptor)throw new TypeError(ERR_NON_OBJECT_DESCRIPTOR+descriptor);if(definePropertyFallback)try{return definePropertyFallback.call(Object,object,property,descriptor)}catch(exception){}if(owns(descriptor,\\\"value\\\"))if(supportsAccessors&&(lookupGetter(object,property)||lookupSetter(object,property))){var prototype=object.__proto__;object.__proto__=prototypeOfObject,delete object[property],object[property]=descriptor.value,object.__proto__=prototype}else object[property]=descriptor.value;else{if(!supportsAccessors)throw new TypeError(ERR_ACCESSORS_NOT_SUPPORTED);owns(descriptor,\\\"get\\\")&&defineGetter(object,property,descriptor.get),owns(descriptor,\\\"set\\\")&&defineSetter(object,property,descriptor.set)}return object}}Object.defineProperties||(Object.defineProperties=function(object,properties){for(var property in properties)owns(properties,property)&&Object.defineProperty(object,property,properties[property]);return object}),Object.seal||(Object.seal=function(object){return object}),Object.freeze||(Object.freeze=function(object){return object});try{Object.freeze(function(){})}catch(exception){Object.freeze=function(freezeObject){return function(object){return\\\"function\\\"==typeof object?object:freezeObject(object)}}(Object.freeze)}if(Object.preventExtensions||(Object.preventExtensions=function(object){return object}),Object.isSealed||(Object.isSealed=function(){return!1}),Object.isFrozen||(Object.isFrozen=function(){return!1}),Object.isExtensible||(Object.isExtensible=function(object){if(Object(object)===object)throw new TypeError;for(var name=\\\"\\\";owns(object,name);)name+=\\\"?\\\";object[name]=!0;var returnValue=owns(object,name);return delete object[name],returnValue}),!Object.keys){var hasDontEnumBug=!0,dontEnums=[\\\"toString\\\",\\\"toLocaleString\\\",\\\"valueOf\\\",\\\"hasOwnProperty\\\",\\\"isPrototypeOf\\\",\\\"propertyIsEnumerable\\\",\\\"constructor\\\"],dontEnumsLength=dontEnums.length;for(var key in{toString:null})hasDontEnumBug=!1;Object.keys=function(object){if(\\\"object\\\"!=typeof object&&\\\"function\\\"!=typeof object||null===object)throw new TypeError(\\\"Object.keys called on a non-object\\\");var keys=[];for(var name in object)owns(object,name)&&keys.push(name);if(hasDontEnumBug)for(var i=0,ii=dontEnumsLength;ii>i;i++){var dontEnum=dontEnums[i];owns(object,dontEnum)&&keys.push(dontEnum)}return keys}}Date.now||(Date.now=function(){return(new Date).getTime()});var ws=\\\"\\t\\\\n\\x0B\\\\f\\\\r \\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\\\u2028\\\\u2029\\uFEFF\\\";if(!String.prototype.trim||ws.trim()){ws=\\\"[\\\"+ws+\\\"]\\\";var trimBeginRegexp=RegExp(\\\"^\\\"+ws+ws+\\\"*\\\"),trimEndRegexp=RegExp(ws+ws+\\\"*$\\\");String.prototype.trim=function(){return(this+\\\"\\\").replace(trimBeginRegexp,\\\"\\\").replace(trimEndRegexp,\\\"\\\")}}var toObject=function(o){if(null==o)throw new TypeError(\\\"can't convert \\\"+o+\\\" to object\\\");return Object(o)}});\";","module.exports.id = 'ace/mode/xml_worker';\nmodule.exports.src = \"\\\"no use strict\\\";!function(window){function resolveModuleId(id,paths){for(var testPath=id,tail=\\\"\\\";testPath;){var alias=paths[testPath];if(\\\"string\\\"==typeof alias)return alias+tail;if(alias)return alias.location.replace(/\\\\/*$/,\\\"/\\\")+(tail||alias.main||alias.name);if(alias===!1)return\\\"\\\";var i=testPath.lastIndexOf(\\\"/\\\");if(-1===i)break;tail=testPath.substr(i)+tail,testPath=testPath.slice(0,i)}return id}if(!(void 0!==window.window&&window.document||window.acequire&&window.define)){window.console||(window.console=function(){var msgs=Array.prototype.slice.call(arguments,0);postMessage({type:\\\"log\\\",data:msgs})},window.console.error=window.console.warn=window.console.log=window.console.trace=window.console),window.window=window,window.ace=window,window.onerror=function(message,file,line,col,err){postMessage({type:\\\"error\\\",data:{message:message,data:err.data,file:file,line:line,col:col,stack:err.stack}})},window.normalizeModule=function(parentId,moduleName){if(-1!==moduleName.indexOf(\\\"!\\\")){var chunks=moduleName.split(\\\"!\\\");return window.normalizeModule(parentId,chunks[0])+\\\"!\\\"+window.normalizeModule(parentId,chunks[1])}if(\\\".\\\"==moduleName.charAt(0)){var base=parentId.split(\\\"/\\\").slice(0,-1).join(\\\"/\\\");for(moduleName=(base?base+\\\"/\\\":\\\"\\\")+moduleName;-1!==moduleName.indexOf(\\\".\\\")&&previous!=moduleName;){var previous=moduleName;moduleName=moduleName.replace(/^\\\\.\\\\//,\\\"\\\").replace(/\\\\/\\\\.\\\\//,\\\"/\\\").replace(/[^\\\\/]+\\\\/\\\\.\\\\.\\\\//,\\\"\\\")}}return moduleName},window.acequire=function acequire(parentId,id){if(id||(id=parentId,parentId=null),!id.charAt)throw Error(\\\"worker.js acequire() accepts only (parentId, id) as arguments\\\");id=window.normalizeModule(parentId,id);var module=window.acequire.modules[id];if(module)return module.initialized||(module.initialized=!0,module.exports=module.factory().exports),module.exports;if(!window.acequire.tlns)return console.log(\\\"unable to load \\\"+id);var path=resolveModuleId(id,window.acequire.tlns);return\\\".js\\\"!=path.slice(-3)&&(path+=\\\".js\\\"),window.acequire.id=id,window.acequire.modules[id]={},importScripts(path),window.acequire(parentId,id)},window.acequire.modules={},window.acequire.tlns={},window.define=function(id,deps,factory){if(2==arguments.length?(factory=deps,\\\"string\\\"!=typeof id&&(deps=id,id=window.acequire.id)):1==arguments.length&&(factory=id,deps=[],id=window.acequire.id),\\\"function\\\"!=typeof factory)return window.acequire.modules[id]={exports:factory,initialized:!0},void 0;deps.length||(deps=[\\\"require\\\",\\\"exports\\\",\\\"module\\\"]);var req=function(childId){return window.acequire(id,childId)};window.acequire.modules[id]={exports:{},factory:function(){var module=this,returnExports=factory.apply(this,deps.map(function(dep){switch(dep){case\\\"require\\\":return req;case\\\"exports\\\":return module.exports;case\\\"module\\\":return module;default:return req(dep)}}));return returnExports&&(module.exports=returnExports),module}}},window.define.amd={},acequire.tlns={},window.initBaseUrls=function(topLevelNamespaces){for(var i in topLevelNamespaces)acequire.tlns[i]=topLevelNamespaces[i]},window.initSender=function(){var EventEmitter=window.acequire(\\\"ace/lib/event_emitter\\\").EventEmitter,oop=window.acequire(\\\"ace/lib/oop\\\"),Sender=function(){};return function(){oop.implement(this,EventEmitter),this.callback=function(data,callbackId){postMessage({type:\\\"call\\\",id:callbackId,data:data})},this.emit=function(name,data){postMessage({type:\\\"event\\\",name:name,data:data})}}.call(Sender.prototype),new Sender};var main=window.main=null,sender=window.sender=null;window.onmessage=function(e){var msg=e.data;if(msg.event&&sender)sender._signal(msg.event,msg.data);else if(msg.command)if(main[msg.command])main[msg.command].apply(main,msg.args);else{if(!window[msg.command])throw Error(\\\"Unknown command:\\\"+msg.command);window[msg.command].apply(window,msg.args)}else if(msg.init){window.initBaseUrls(msg.tlns),acequire(\\\"ace/lib/es5-shim\\\"),sender=window.sender=window.initSender();var clazz=acequire(msg.module)[msg.classname];main=window.main=new clazz(sender)}}}}(this),ace.define(\\\"ace/lib/oop\\\",[\\\"require\\\",\\\"exports\\\",\\\"module\\\"],function(acequire,exports){\\\"use strict\\\";exports.inherits=function(ctor,superCtor){ctor.super_=superCtor,ctor.prototype=Object.create(superCtor.prototype,{constructor:{value:ctor,enumerable:!1,writable:!0,configurable:!0}})},exports.mixin=function(obj,mixin){for(var key in mixin)obj[key]=mixin[key];return obj},exports.implement=function(proto,mixin){exports.mixin(proto,mixin)}}),ace.define(\\\"ace/lib/lang\\\",[\\\"require\\\",\\\"exports\\\",\\\"module\\\"],function(acequire,exports){\\\"use strict\\\";exports.last=function(a){return a[a.length-1]},exports.stringReverse=function(string){return string.split(\\\"\\\").reverse().join(\\\"\\\")},exports.stringRepeat=function(string,count){for(var result=\\\"\\\";count>0;)1&count&&(result+=string),(count>>=1)&&(string+=string);return result};var trimBeginRegexp=/^\\\\s\\\\s*/,trimEndRegexp=/\\\\s\\\\s*$/;exports.stringTrimLeft=function(string){return string.replace(trimBeginRegexp,\\\"\\\")},exports.stringTrimRight=function(string){return string.replace(trimEndRegexp,\\\"\\\")},exports.copyObject=function(obj){var copy={};for(var key in obj)copy[key]=obj[key];return copy},exports.copyArray=function(array){for(var copy=[],i=0,l=array.length;l>i;i++)copy[i]=array[i]&&\\\"object\\\"==typeof array[i]?this.copyObject(array[i]):array[i];return copy},exports.deepCopy=function deepCopy(obj){if(\\\"object\\\"!=typeof obj||!obj)return obj;var copy;if(Array.isArray(obj)){copy=[];for(var key=0;obj.length>key;key++)copy[key]=deepCopy(obj[key]);return copy}if(\\\"[object Object]\\\"!==Object.prototype.toString.call(obj))return obj;copy={};for(var key in obj)copy[key]=deepCopy(obj[key]);return copy},exports.arrayToMap=function(arr){for(var map={},i=0;arr.length>i;i++)map[arr[i]]=1;return map},exports.createMap=function(props){var map=Object.create(null);for(var i in props)map[i]=props[i];return map},exports.arrayRemove=function(array,value){for(var i=0;array.length>=i;i++)value===array[i]&&array.splice(i,1)},exports.escapeRegExp=function(str){return str.replace(/([.*+?^${}()|[\\\\]\\\\/\\\\\\\\])/g,\\\"\\\\\\\\$1\\\")},exports.escapeHTML=function(str){return str.replace(/&/g,\\\"&\\\").replace(/\\\"/g,\\\""\\\").replace(/'/g,\\\"'\\\").replace(/ [\\\"+this.end.row+\\\"/\\\"+this.end.column+\\\"]\\\"},this.contains=function(row,column){return 0==this.compare(row,column)},this.compareRange=function(range){var cmp,end=range.end,start=range.start;return cmp=this.compare(end.row,end.column),1==cmp?(cmp=this.compare(start.row,start.column),1==cmp?2:0==cmp?1:0):-1==cmp?-2:(cmp=this.compare(start.row,start.column),-1==cmp?-1:1==cmp?42:0)},this.comparePoint=function(p){return this.compare(p.row,p.column)},this.containsRange=function(range){return 0==this.comparePoint(range.start)&&0==this.comparePoint(range.end)},this.intersects=function(range){var cmp=this.compareRange(range);return-1==cmp||0==cmp||1==cmp},this.isEnd=function(row,column){return this.end.row==row&&this.end.column==column},this.isStart=function(row,column){return this.start.row==row&&this.start.column==column},this.setStart=function(row,column){\\\"object\\\"==typeof row?(this.start.column=row.column,this.start.row=row.row):(this.start.row=row,this.start.column=column)},this.setEnd=function(row,column){\\\"object\\\"==typeof row?(this.end.column=row.column,this.end.row=row.row):(this.end.row=row,this.end.column=column)},this.inside=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)||this.isStart(row,column)?!1:!0:!1},this.insideStart=function(row,column){return 0==this.compare(row,column)?this.isEnd(row,column)?!1:!0:!1},this.insideEnd=function(row,column){return 0==this.compare(row,column)?this.isStart(row,column)?!1:!0:!1},this.compare=function(row,column){return this.isMultiLine()||row!==this.start.row?this.start.row>row?-1:row>this.end.row?1:this.start.row===row?column>=this.start.column?0:-1:this.end.row===row?this.end.column>=column?0:1:0:this.start.column>column?-1:column>this.end.column?1:0},this.compareStart=function(row,column){return this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.compareEnd=function(row,column){return this.end.row==row&&this.end.column==column?1:this.compare(row,column)},this.compareInside=function(row,column){return this.end.row==row&&this.end.column==column?1:this.start.row==row&&this.start.column==column?-1:this.compare(row,column)},this.clipRows=function(firstRow,lastRow){if(this.end.row>lastRow)var end={row:lastRow+1,column:0};else if(firstRow>this.end.row)var end={row:firstRow,column:0};if(this.start.row>lastRow)var start={row:lastRow+1,column:0};else if(firstRow>this.start.row)var start={row:firstRow,column:0};return Range.fromPoints(start||this.start,end||this.end)},this.extend=function(row,column){var cmp=this.compare(row,column);if(0==cmp)return this;if(-1==cmp)var start={row:row,column:column};else var end={row:row,column:column};return Range.fromPoints(start||this.start,end||this.end)},this.isEmpty=function(){return this.start.row===this.end.row&&this.start.column===this.end.column},this.isMultiLine=function(){return this.start.row!==this.end.row},this.clone=function(){return Range.fromPoints(this.start,this.end)},this.collapseRows=function(){return 0==this.end.column?new Range(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new Range(this.start.row,0,this.end.row,0)},this.toScreenRange=function(session){var screenPosStart=session.documentToScreenPosition(this.start),screenPosEnd=session.documentToScreenPosition(this.end);return new Range(screenPosStart.row,screenPosStart.column,screenPosEnd.row,screenPosEnd.column)},this.moveBy=function(row,column){this.start.row+=row,this.start.column+=column,this.end.row+=row,this.end.column+=column}}).call(Range.prototype),Range.fromPoints=function(start,end){return new Range(start.row,start.column,end.row,end.column)},Range.comparePoints=comparePoints,Range.comparePoints=function(p1,p2){return p1.row-p2.row||p1.column-p2.column},exports.Range=Range}),ace.define(\\\"ace/apply_delta\\\",[\\\"require\\\",\\\"exports\\\",\\\"module\\\"],function(acequire,exports){\\\"use strict\\\";exports.applyDelta=function(docLines,delta){var row=delta.start.row,startColumn=delta.start.column,line=docLines[row]||\\\"\\\";switch(delta.action){case\\\"insert\\\":var lines=delta.lines;if(1===lines.length)docLines[row]=line.substring(0,startColumn)+delta.lines[0]+line.substring(startColumn);else{var args=[row,1].concat(delta.lines);docLines.splice.apply(docLines,args),docLines[row]=line.substring(0,startColumn)+docLines[row],docLines[row+delta.lines.length-1]+=line.substring(startColumn)}break;case\\\"remove\\\":var endColumn=delta.end.column,endRow=delta.end.row;row===endRow?docLines[row]=line.substring(0,startColumn)+line.substring(endColumn):docLines.splice(row,endRow-row+1,line.substring(0,startColumn)+docLines[endRow].substring(endColumn))}}}),ace.define(\\\"ace/lib/event_emitter\\\",[\\\"require\\\",\\\"exports\\\",\\\"module\\\"],function(acequire,exports){\\\"use strict\\\";var EventEmitter={},stopPropagation=function(){this.propagationStopped=!0},preventDefault=function(){this.defaultPrevented=!0};EventEmitter._emit=EventEmitter._dispatchEvent=function(eventName,e){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var listeners=this._eventRegistry[eventName]||[],defaultHandler=this._defaultHandlers[eventName];if(listeners.length||defaultHandler){\\\"object\\\"==typeof e&&e||(e={}),e.type||(e.type=eventName),e.stopPropagation||(e.stopPropagation=stopPropagation),e.preventDefault||(e.preventDefault=preventDefault),listeners=listeners.slice();for(var i=0;listeners.length>i&&(listeners[i](e,this),!e.propagationStopped);i++);return defaultHandler&&!e.defaultPrevented?defaultHandler(e,this):void 0}},EventEmitter._signal=function(eventName,e){var listeners=(this._eventRegistry||{})[eventName];if(listeners){listeners=listeners.slice();for(var i=0;listeners.length>i;i++)listeners[i](e,this)}},EventEmitter.once=function(eventName,callback){var _self=this;callback&&this.addEventListener(eventName,function newCallback(){_self.removeEventListener(eventName,newCallback),callback.apply(null,arguments)})},EventEmitter.setDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers||(handlers=this._defaultHandlers={_disabled_:{}}),handlers[eventName]){var old=handlers[eventName],disabled=handlers._disabled_[eventName];disabled||(handlers._disabled_[eventName]=disabled=[]),disabled.push(old);var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}handlers[eventName]=callback},EventEmitter.removeDefaultHandler=function(eventName,callback){var handlers=this._defaultHandlers;if(handlers){var disabled=handlers._disabled_[eventName];if(handlers[eventName]==callback)handlers[eventName],disabled&&this.setDefaultHandler(eventName,disabled.pop());else if(disabled){var i=disabled.indexOf(callback);-1!=i&&disabled.splice(i,1)}}},EventEmitter.on=EventEmitter.addEventListener=function(eventName,callback,capturing){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];return listeners||(listeners=this._eventRegistry[eventName]=[]),-1==listeners.indexOf(callback)&&listeners[capturing?\\\"unshift\\\":\\\"push\\\"](callback),callback},EventEmitter.off=EventEmitter.removeListener=EventEmitter.removeEventListener=function(eventName,callback){this._eventRegistry=this._eventRegistry||{};var listeners=this._eventRegistry[eventName];if(listeners){var index=listeners.indexOf(callback);-1!==index&&listeners.splice(index,1)}},EventEmitter.removeAllListeners=function(eventName){this._eventRegistry&&(this._eventRegistry[eventName]=[])},exports.EventEmitter=EventEmitter}),ace.define(\\\"ace/anchor\\\",[\\\"require\\\",\\\"exports\\\",\\\"module\\\",\\\"ace/lib/oop\\\",\\\"ace/lib/event_emitter\\\"],function(acequire,exports){\\\"use strict\\\";var oop=acequire(\\\"./lib/oop\\\"),EventEmitter=acequire(\\\"./lib/event_emitter\\\").EventEmitter,Anchor=exports.Anchor=function(doc,row,column){this.$onChange=this.onChange.bind(this),this.attach(doc),column===void 0?this.setPosition(row.row,row.column):this.setPosition(row,column)};(function(){function $pointsInOrder(point1,point2,equalPointsInOrder){var bColIsAfter=equalPointsInOrder?point1.column<=point2.column:point1.columnthis.row)){var point=$getTransformedPoint(delta,{row:this.row,column:this.column},this.$insertRight);this.setPosition(point.row,point.column,!0)}},this.setPosition=function(row,column,noClip){var pos;if(pos=noClip?{row:row,column:column}:this.$clipPositionToDocument(row,column),this.row!=pos.row||this.column!=pos.column){var old={row:this.row,column:this.column};this.row=pos.row,this.column=pos.column,this._signal(\\\"change\\\",{old:old,value:pos})}},this.detach=function(){this.document.removeEventListener(\\\"change\\\",this.$onChange)},this.attach=function(doc){this.document=doc||this.document,this.document.on(\\\"change\\\",this.$onChange)},this.$clipPositionToDocument=function(row,column){var pos={};return row>=this.document.getLength()?(pos.row=Math.max(0,this.document.getLength()-1),pos.column=this.document.getLine(pos.row).length):0>row?(pos.row=0,pos.column=0):(pos.row=row,pos.column=Math.min(this.document.getLine(pos.row).length,Math.max(0,column))),0>column&&(pos.column=0),pos}}).call(Anchor.prototype)}),ace.define(\\\"ace/document\\\",[\\\"require\\\",\\\"exports\\\",\\\"module\\\",\\\"ace/lib/oop\\\",\\\"ace/apply_delta\\\",\\\"ace/lib/event_emitter\\\",\\\"ace/range\\\",\\\"ace/anchor\\\"],function(acequire,exports){\\\"use strict\\\";var oop=acequire(\\\"./lib/oop\\\"),applyDelta=acequire(\\\"./apply_delta\\\").applyDelta,EventEmitter=acequire(\\\"./lib/event_emitter\\\").EventEmitter,Range=acequire(\\\"./range\\\").Range,Anchor=acequire(\\\"./anchor\\\").Anchor,Document=function(textOrLines){this.$lines=[\\\"\\\"],0===textOrLines.length?this.$lines=[\\\"\\\"]:Array.isArray(textOrLines)?this.insertMergedLines({row:0,column:0},textOrLines):this.insert({row:0,column:0},textOrLines)};(function(){oop.implement(this,EventEmitter),this.setValue=function(text){var len=this.getLength()-1;this.remove(new Range(0,0,len,this.getLine(len).length)),this.insert({row:0,column:0},text)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(row,column){return new Anchor(this,row,column)},this.$split=0===\\\"aaa\\\".split(/a/).length?function(text){return text.replace(/\\\\r\\\\n|\\\\r/g,\\\"\\\\n\\\").split(\\\"\\\\n\\\")}:function(text){return text.split(/\\\\r\\\\n|\\\\r|\\\\n/)},this.$detectNewLine=function(text){var match=text.match(/^.*?(\\\\r\\\\n|\\\\r|\\\\n)/m);this.$autoNewLine=match?match[1]:\\\"\\\\n\\\",this._signal(\\\"changeNewLineMode\\\")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case\\\"windows\\\":return\\\"\\\\r\\\\n\\\";case\\\"unix\\\":return\\\"\\\\n\\\";default:return this.$autoNewLine||\\\"\\\\n\\\"}},this.$autoNewLine=\\\"\\\",this.$newLineMode=\\\"auto\\\",this.setNewLineMode=function(newLineMode){this.$newLineMode!==newLineMode&&(this.$newLineMode=newLineMode,this._signal(\\\"changeNewLineMode\\\"))},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(text){return\\\"\\\\r\\\\n\\\"==text||\\\"\\\\r\\\"==text||\\\"\\\\n\\\"==text},this.getLine=function(row){return this.$lines[row]||\\\"\\\"},this.getLines=function(firstRow,lastRow){return this.$lines.slice(firstRow,lastRow+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(range){return this.getLinesForRange(range).join(this.getNewLineCharacter())},this.getLinesForRange=function(range){var lines;if(range.start.row===range.end.row)lines=[this.getLine(range.start.row).substring(range.start.column,range.end.column)];else{lines=this.getLines(range.start.row,range.end.row),lines[0]=(lines[0]||\\\"\\\").substring(range.start.column);var l=lines.length-1;range.end.row-range.start.row==l&&(lines[l]=lines[l].substring(0,range.end.column))}return lines},this.insertLines=function(row,lines){return console.warn(\\\"Use of document.insertLines is deprecated. Use the insertFullLines method instead.\\\"),this.insertFullLines(row,lines)},this.removeLines=function(firstRow,lastRow){return console.warn(\\\"Use of document.removeLines is deprecated. Use the removeFullLines method instead.\\\"),this.removeFullLines(firstRow,lastRow)},this.insertNewLine=function(position){return console.warn(\\\"Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead.\\\"),this.insertMergedLines(position,[\\\"\\\",\\\"\\\"])},this.insert=function(position,text){return 1>=this.getLength()&&this.$detectNewLine(text),this.insertMergedLines(position,this.$split(text))},this.insertInLine=function(position,text){var start=this.clippedPos(position.row,position.column),end=this.pos(position.row,position.column+text.length);return this.applyDelta({start:start,end:end,action:\\\"insert\\\",lines:[text]},!0),this.clonePos(end)},this.clippedPos=function(row,column){var length=this.getLength();void 0===row?row=length:0>row?row=0:row>=length&&(row=length-1,column=void 0);var line=this.getLine(row);return void 0==column&&(column=line.length),column=Math.min(Math.max(column,0),line.length),{row:row,column:column}},this.clonePos=function(pos){return{row:pos.row,column:pos.column}},this.pos=function(row,column){return{row:row,column:column}},this.$clipPosition=function(position){var length=this.getLength();return position.row>=length?(position.row=Math.max(0,length-1),position.column=this.getLine(length-1).length):(position.row=Math.max(0,position.row),position.column=Math.min(Math.max(position.column,0),this.getLine(position.row).length)),position},this.insertFullLines=function(row,lines){row=Math.min(Math.max(row,0),this.getLength());var column=0;this.getLength()>row?(lines=lines.concat([\\\"\\\"]),column=0):(lines=[\\\"\\\"].concat(lines),row--,column=this.$lines[row].length),this.insertMergedLines({row:row,column:column},lines)},this.insertMergedLines=function(position,lines){var start=this.clippedPos(position.row,position.column),end={row:start.row+lines.length-1,column:(1==lines.length?start.column:0)+lines[lines.length-1].length};return this.applyDelta({start:start,end:end,action:\\\"insert\\\",lines:lines}),this.clonePos(end)},this.remove=function(range){var start=this.clippedPos(range.start.row,range.start.column),end=this.clippedPos(range.end.row,range.end.column);return this.applyDelta({start:start,end:end,action:\\\"remove\\\",lines:this.getLinesForRange({start:start,end:end})}),this.clonePos(start)},this.removeInLine=function(row,startColumn,endColumn){var start=this.clippedPos(row,startColumn),end=this.clippedPos(row,endColumn);return this.applyDelta({start:start,end:end,action:\\\"remove\\\",lines:this.getLinesForRange({start:start,end:end})},!0),this.clonePos(start)},this.removeFullLines=function(firstRow,lastRow){firstRow=Math.min(Math.max(0,firstRow),this.getLength()-1),lastRow=Math.min(Math.max(0,lastRow),this.getLength()-1);var deleteFirstNewLine=lastRow==this.getLength()-1&&firstRow>0,deleteLastNewLine=this.getLength()-1>lastRow,startRow=deleteFirstNewLine?firstRow-1:firstRow,startCol=deleteFirstNewLine?this.getLine(startRow).length:0,endRow=deleteLastNewLine?lastRow+1:lastRow,endCol=deleteLastNewLine?0:this.getLine(endRow).length,range=new Range(startRow,startCol,endRow,endCol),deletedLines=this.$lines.slice(firstRow,lastRow+1);return this.applyDelta({start:range.start,end:range.end,action:\\\"remove\\\",lines:this.getLinesForRange(range)}),deletedLines},this.removeNewLine=function(row){this.getLength()-1>row&&row>=0&&this.applyDelta({start:this.pos(row,this.getLine(row).length),end:this.pos(row+1,0),action:\\\"remove\\\",lines:[\\\"\\\",\\\"\\\"]})},this.replace=function(range,text){if(range instanceof Range||(range=Range.fromPoints(range.start,range.end)),0===text.length&&range.isEmpty())return range.start;if(text==this.getTextRange(range))return range.end;this.remove(range);var end;return end=text?this.insert(range.start,text):range.start},this.applyDeltas=function(deltas){for(var i=0;deltas.length>i;i++)this.applyDelta(deltas[i])},this.revertDeltas=function(deltas){for(var i=deltas.length-1;i>=0;i--)this.revertDelta(deltas[i])},this.applyDelta=function(delta,doNotValidate){var isInsert=\\\"insert\\\"==delta.action;(isInsert?1>=delta.lines.length&&!delta.lines[0]:!Range.comparePoints(delta.start,delta.end))||(isInsert&&delta.lines.length>2e4&&this.$splitAndapplyLargeDelta(delta,2e4),applyDelta(this.$lines,delta,doNotValidate),this._signal(\\\"change\\\",delta))},this.$splitAndapplyLargeDelta=function(delta,MAX){for(var lines=delta.lines,l=lines.length,row=delta.start.row,column=delta.start.column,from=0,to=0;;){from=to,to+=MAX-1;var chunk=lines.slice(from,to);if(to>l){delta.lines=chunk,delta.start.row=row+from,delta.start.column=column;break}chunk.push(\\\"\\\"),this.applyDelta({start:this.pos(row+from,column),end:this.pos(row+to,column=0),action:delta.action,lines:chunk},!0)}},this.revertDelta=function(delta){this.applyDelta({start:this.clonePos(delta.start),end:this.clonePos(delta.end),action:\\\"insert\\\"==delta.action?\\\"remove\\\":\\\"insert\\\",lines:delta.lines.slice()})},this.indexToPosition=function(index,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,i=startRow||0,l=lines.length;l>i;i++)if(index-=lines[i].length+newlineLength,0>index)return{row:i,column:index+lines[i].length+newlineLength};return{row:l-1,column:lines[l-1].length}},this.positionToIndex=function(pos,startRow){for(var lines=this.$lines||this.getAllLines(),newlineLength=this.getNewLineCharacter().length,index=0,row=Math.min(pos.row,lines.length),i=startRow||0;row>i;++i)index+=lines[i].length+newlineLength;return index+pos.column}}).call(Document.prototype),exports.Document=Document}),ace.define(\\\"ace/worker/mirror\\\",[\\\"require\\\",\\\"exports\\\",\\\"module\\\",\\\"ace/range\\\",\\\"ace/document\\\",\\\"ace/lib/lang\\\"],function(acequire,exports){\\\"use strict\\\";acequire(\\\"../range\\\").Range;var Document=acequire(\\\"../document\\\").Document,lang=acequire(\\\"../lib/lang\\\"),Mirror=exports.Mirror=function(sender){this.sender=sender;var doc=this.doc=new Document(\\\"\\\"),deferredUpdate=this.deferredUpdate=lang.delayedCall(this.onUpdate.bind(this)),_self=this;sender.on(\\\"change\\\",function(e){var data=e.data;if(data[0].start)doc.applyDeltas(data);else for(var i=0;data.length>i;i+=2){if(Array.isArray(data[i+1]))var d={action:\\\"insert\\\",start:data[i],lines:data[i+1]};else var d={action:\\\"remove\\\",start:data[i],end:data[i+1]};doc.applyDelta(d,!0)}return _self.$timeout?deferredUpdate.schedule(_self.$timeout):(_self.onUpdate(),void 0)})};(function(){this.$timeout=500,this.setTimeout=function(timeout){this.$timeout=timeout},this.setValue=function(value){this.doc.setValue(value),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(callbackId){this.sender.callback(this.doc.getValue(),callbackId)},this.onUpdate=function(){},this.isPending=function(){return this.deferredUpdate.isPending()}}).call(Mirror.prototype)}),ace.define(\\\"ace/mode/xml/sax\\\",[\\\"require\\\",\\\"exports\\\",\\\"module\\\"],function(){function XMLReader(){}function parse(source,defaultNSMapCopy,entityMap,domBuilder,errorHandler){function fixedFromCharCode(code){if(code>65535){code-=65536;var surrogate1=55296+(code>>10),surrogate2=56320+(1023&code);return String.fromCharCode(surrogate1,surrogate2)}return String.fromCharCode(code)}function entityReplacer(a){var k=a.slice(1,-1);return k in entityMap?entityMap[k]:\\\"#\\\"===k.charAt(0)?fixedFromCharCode(parseInt(k.substr(1).replace(\\\"x\\\",\\\"0x\\\"))):(errorHandler.error(\\\"entity not found:\\\"+a),a)}function appendText(end){var xt=source.substring(start,end).replace(/&#?\\\\w+;/g,entityReplacer);locator&&position(start),domBuilder.characters(xt,0,end-start),start=end}function position(start,m){for(;start>=endPos&&(m=linePattern.exec(source));)startPos=m.index,endPos=startPos+m[0].length,locator.lineNumber++;locator.columnNumber=start-startPos+1}for(var startPos=0,endPos=0,linePattern=/.+(?:\\\\r\\\\n?|\\\\n)|.*$/g,locator=domBuilder.locator,parseStack=[{currentNSMap:defaultNSMapCopy}],closeMap={},start=0;;){var i=source.indexOf(\\\"<\\\",start);if(0>i){if(!source.substr(start).match(/^\\\\s*$/)){var doc=domBuilder.document,text=doc.createTextNode(source.substr(start));doc.appendChild(text),domBuilder.currentElement=text}return}switch(i>start&&appendText(i),source.charAt(i+1)){case\\\"/\\\":var config,end=source.indexOf(\\\">\\\",i+3),tagName=source.substring(i+2,end);if(!(parseStack.length>1)){errorHandler.fatalError(\\\"end tag name not found for: \\\"+tagName);break}config=parseStack.pop();var localNSMap=config.localNSMap;if(config.tagName!=tagName&&errorHandler.fatalError(\\\"end tag name: \\\"+tagName+\\\" does not match the current start tagName: \\\"+config.tagName),domBuilder.endElement(config.uri,config.localName,tagName),localNSMap)for(var prefix in localNSMap)domBuilder.endPrefixMapping(prefix);end++;break;case\\\"?\\\":locator&&position(i),end=parseInstruction(source,i,domBuilder);break;case\\\"!\\\":locator&&position(i),end=parseDCC(source,i,domBuilder,errorHandler);break;default:try{locator&&position(i);var el=new ElementAttributes,end=parseElementStartPart(source,i,el,entityReplacer,errorHandler),len=el.length;if(len&&locator){for(var backup=copyLocator(locator,{}),i=0;len>i;i++){var a=el[i];position(a.offset),a.offset=copyLocator(locator,{})}copyLocator(backup,locator)}!el.closed&&fixSelfClosed(source,end,el.tagName,closeMap)&&(el.closed=!0,entityMap.nbsp||errorHandler.warning(\\\"unclosed xml attribute\\\")),appendElement(el,domBuilder,parseStack),\\\"http://www.w3.org/1999/xhtml\\\"!==el.uri||el.closed?end++:end=parseHtmlSpecialContent(source,end,el.tagName,entityReplacer,domBuilder)}catch(e){errorHandler.error(\\\"element parse error: \\\"+e),end=-1}}0>end?appendText(i+1):start=end}}function copyLocator(f,t){return t.lineNumber=f.lineNumber,t.columnNumber=f.columnNumber,t}function parseElementStartPart(source,start,el,entityReplacer,errorHandler){for(var attrName,value,p=++start,s=S_TAG;;){var c=source.charAt(p);switch(c){case\\\"=\\\":if(s===S_ATTR)attrName=source.slice(start,p),s=S_EQ;else{if(s!==S_ATTR_S)throw Error(\\\"attribute equal must after attrName\\\");s=S_EQ}break;case\\\"'\\\":case'\\\"':if(s===S_EQ){if(start=p+1,p=source.indexOf(c,start),!(p>0))throw Error(\\\"attribute value no end '\\\"+c+\\\"' match\\\");value=source.slice(start,p).replace(/&#?\\\\w+;/g,entityReplacer),el.add(attrName,value,start-1),s=S_E}else{if(s!=S_V)throw Error('attribute value must after \\\"=\\\"');value=source.slice(start,p).replace(/&#?\\\\w+;/g,entityReplacer),el.add(attrName,value,start),errorHandler.warning('attribute \\\"'+attrName+'\\\" missed start quot('+c+\\\")!!\\\"),start=p+1,s=S_E}break;case\\\"/\\\":switch(s){case S_TAG:el.setTagName(source.slice(start,p));case S_E:case S_S:case S_C:s=S_C,el.closed=!0;case S_V:case S_ATTR:case S_ATTR_S:break;default:throw Error(\\\"attribute invalid close char('/')\\\")}break;case\\\"\\\":errorHandler.error(\\\"unexpected end of input\\\");case\\\">\\\":switch(s){case S_TAG:el.setTagName(source.slice(start,p));case S_E:case S_S:case S_C:break;case S_V:case S_ATTR:value=source.slice(start,p),\\\"/\\\"===value.slice(-1)&&(el.closed=!0,value=value.slice(0,-1));case S_ATTR_S:s===S_ATTR_S&&(value=attrName),s==S_V?(errorHandler.warning('attribute \\\"'+value+'\\\" missed quot(\\\")!!'),el.add(attrName,value.replace(/&#?\\\\w+;/g,entityReplacer),start)):(errorHandler.warning('attribute \\\"'+value+'\\\" missed value!! \\\"'+value+'\\\" instead!!'),el.add(value,value,start));break;case S_EQ:throw Error(\\\"attribute value missed!!\\\")}return p;case\\\"\\x80\\\":c=\\\" \\\";default:if(\\\" \\\">=c)switch(s){case S_TAG:el.setTagName(source.slice(start,p)),s=S_S;break;case S_ATTR:attrName=source.slice(start,p),s=S_ATTR_S;break;case S_V:var value=source.slice(start,p).replace(/&#?\\\\w+;/g,entityReplacer);errorHandler.warning('attribute \\\"'+value+'\\\" missed quot(\\\")!!'),el.add(attrName,value,start);case S_E:s=S_S}else switch(s){case S_ATTR_S:errorHandler.warning('attribute \\\"'+attrName+'\\\" missed value!! \\\"'+attrName+'\\\" instead!!'),el.add(attrName,attrName,start),start=p,s=S_ATTR;\\nbreak;case S_E:errorHandler.warning('attribute space is acequired\\\"'+attrName+'\\\"!!');case S_S:s=S_ATTR,start=p;break;case S_EQ:s=S_V,start=p;break;case S_C:throw Error(\\\"elements closed character '/' and '>' must be connected to\\\")}}p++}}function appendElement(el,domBuilder,parseStack){for(var tagName=el.tagName,localNSMap=null,currentNSMap=parseStack[parseStack.length-1].currentNSMap,i=el.length;i--;){var a=el[i],qName=a.qName,value=a.value,nsp=qName.indexOf(\\\":\\\");if(nsp>0)var prefix=a.prefix=qName.slice(0,nsp),localName=qName.slice(nsp+1),nsPrefix=\\\"xmlns\\\"===prefix&&localName;else localName=qName,prefix=null,nsPrefix=\\\"xmlns\\\"===qName&&\\\"\\\";a.localName=localName,nsPrefix!==!1&&(null==localNSMap&&(localNSMap={},_copy(currentNSMap,currentNSMap={})),currentNSMap[nsPrefix]=localNSMap[nsPrefix]=value,a.uri=\\\"http://www.w3.org/2000/xmlns/\\\",domBuilder.startPrefixMapping(nsPrefix,value))}for(var i=el.length;i--;){a=el[i];var prefix=a.prefix;prefix&&(\\\"xml\\\"===prefix&&(a.uri=\\\"http://www.w3.org/XML/1998/namespace\\\"),\\\"xmlns\\\"!==prefix&&(a.uri=currentNSMap[prefix]))}var nsp=tagName.indexOf(\\\":\\\");nsp>0?(prefix=el.prefix=tagName.slice(0,nsp),localName=el.localName=tagName.slice(nsp+1)):(prefix=null,localName=el.localName=tagName);var ns=el.uri=currentNSMap[prefix||\\\"\\\"];if(domBuilder.startElement(ns,localName,tagName,el),el.closed){if(domBuilder.endElement(ns,localName,tagName),localNSMap)for(prefix in localNSMap)domBuilder.endPrefixMapping(prefix)}else el.currentNSMap=currentNSMap,el.localNSMap=localNSMap,parseStack.push(el)}function parseHtmlSpecialContent(source,elStartEnd,tagName,entityReplacer,domBuilder){if(/^(?:script|textarea)$/i.test(tagName)){var elEndStart=source.indexOf(\\\"\\\",elStartEnd),text=source.substring(elStartEnd+1,elEndStart);if(/[&<]/.test(text))return/^script$/i.test(tagName)?(domBuilder.characters(text,0,text.length),elEndStart):(text=text.replace(/&#?\\\\w+;/g,entityReplacer),domBuilder.characters(text,0,text.length),elEndStart)}return elStartEnd+1}function fixSelfClosed(source,elStartEnd,tagName,closeMap){var pos=closeMap[tagName];return null==pos&&(pos=closeMap[tagName]=source.lastIndexOf(\\\"\\\")),elStartEnd>pos}function _copy(source,target){for(var n in source)target[n]=source[n]}function parseDCC(source,start,domBuilder,errorHandler){var next=source.charAt(start+2);switch(next){case\\\"-\\\":if(\\\"-\\\"===source.charAt(start+3)){var end=source.indexOf(\\\"-->\\\",start+4);return end>start?(domBuilder.comment(source,start+4,end-start-4),end+3):(errorHandler.error(\\\"Unclosed comment\\\"),-1)}return-1;default:if(\\\"CDATA[\\\"==source.substr(start+3,6)){var end=source.indexOf(\\\"]]>\\\",start+9);return domBuilder.startCDATA(),domBuilder.characters(source,start+9,end-start-9),domBuilder.endCDATA(),end+3}var matchs=split(source,start),len=matchs.length;if(len>1&&/!doctype/i.test(matchs[0][0])){var name=matchs[1][0],pubid=len>3&&/^public$/i.test(matchs[2][0])&&matchs[3][0],sysid=len>4&&matchs[4][0],lastMatch=matchs[len-1];return domBuilder.startDTD(name,pubid&&pubid.replace(/^(['\\\"])(.*?)\\\\1$/,\\\"$2\\\"),sysid&&sysid.replace(/^(['\\\"])(.*?)\\\\1$/,\\\"$2\\\")),domBuilder.endDTD(),lastMatch.index+lastMatch[0].length}}return-1}function parseInstruction(source,start,domBuilder){var end=source.indexOf(\\\"?>\\\",start);if(end){var match=source.substring(start,end).match(/^<\\\\?(\\\\S*)\\\\s*([\\\\s\\\\S]*?)\\\\s*$/);return match?(match[0].length,domBuilder.processingInstruction(match[1],match[2]),end+2):-1}return-1}function ElementAttributes(){}function _set_proto_(thiz,parent){return thiz.__proto__=parent,thiz}function split(source,start){var match,buf=[],reg=/'[^']+'|\\\"[^\\\"]+\\\"|[^\\\\s<>\\\\/=]+=?|(\\\\/?\\\\s*>|<)/g;for(reg.lastIndex=start,reg.exec(source);match=reg.exec(source);)if(buf.push(match),match[1])return buf}var nameStartChar=/[A-Z_a-z\\\\xC0-\\\\xD6\\\\xD8-\\\\xF6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD]/,nameChar=RegExp(\\\"[\\\\\\\\-\\\\\\\\.0-9\\\"+nameStartChar.source.slice(1,-1)+\\\"\\xB7\\u0300-\\u036F\\\\\\\\ux203F-\\u2040]\\\"),tagNamePattern=RegExp(\\\"^\\\"+nameStartChar.source+nameChar.source+\\\"*(?::\\\"+nameStartChar.source+nameChar.source+\\\"*)?$\\\"),S_TAG=0,S_ATTR=1,S_ATTR_S=2,S_EQ=3,S_V=4,S_E=5,S_S=6,S_C=7;return XMLReader.prototype={parse:function(source,defaultNSMap,entityMap){var domBuilder=this.domBuilder;domBuilder.startDocument(),_copy(defaultNSMap,defaultNSMap={}),parse(source,defaultNSMap,entityMap,domBuilder,this.errorHandler),domBuilder.endDocument()}},ElementAttributes.prototype={setTagName:function(tagName){if(!tagNamePattern.test(tagName))throw Error(\\\"invalid tagName:\\\"+tagName);this.tagName=tagName},add:function(qName,value,offset){if(!tagNamePattern.test(qName))throw Error(\\\"invalid attribute:\\\"+qName);this[this.length++]={qName:qName,value:value,offset:offset}},length:0,getLocalName:function(i){return this[i].localName},getOffset:function(i){return this[i].offset},getQName:function(i){return this[i].qName},getURI:function(i){return this[i].uri},getValue:function(i){return this[i].value}},_set_proto_({},_set_proto_.prototype)instanceof _set_proto_||(_set_proto_=function(thiz,parent){function p(){}p.prototype=parent,p=new p;for(parent in thiz)p[parent]=thiz[parent];return p}),XMLReader}),ace.define(\\\"ace/mode/xml/dom\\\",[\\\"require\\\",\\\"exports\\\",\\\"module\\\"],function(){function copy(src,dest){for(var p in src)dest[p]=src[p]}function _extends(Class,Super){function t(){}var pt=Class.prototype;if(Object.create){var ppt=Object.create(Super.prototype);pt.__proto__=ppt}pt instanceof Super||(t.prototype=Super.prototype,t=new t,copy(pt,t),Class.prototype=pt=t),pt.constructor!=Class&&(\\\"function\\\"!=typeof Class&&console.error(\\\"unknow Class:\\\"+Class),pt.constructor=Class)}function DOMException(code,message){if(message instanceof Error)var error=message;else error=this,Error.call(this,ExceptionMessage[code]),this.message=ExceptionMessage[code],Error.captureStackTrace&&Error.captureStackTrace(this,DOMException);return error.code=code,message&&(this.message=this.message+\\\": \\\"+message),error}function NodeList(){}function LiveNodeList(node,refresh){this._node=node,this._refresh=refresh,_updateLiveList(this)}function _updateLiveList(list){var inc=list._node._inc||list._node.ownerDocument._inc;if(list._inc!=inc){var ls=list._refresh(list._node);__set__(list,\\\"length\\\",ls.length),copy(ls,list),list._inc=inc}}function NamedNodeMap(){}function _findNodeIndex(list,node){for(var i=list.length;i--;)if(list[i]===node)return i}function _addNamedNode(el,list,newAttr,oldAttr){if(oldAttr?list[_findNodeIndex(list,oldAttr)]=newAttr:list[list.length++]=newAttr,el){newAttr.ownerElement=el;var doc=el.ownerDocument;doc&&(oldAttr&&_onRemoveAttribute(doc,el,oldAttr),_onAddAttribute(doc,el,newAttr))}}function _removeNamedNode(el,list,attr){var i=_findNodeIndex(list,attr);if(!(i>=0))throw DOMException(NOT_FOUND_ERR,Error());for(var lastIndex=list.length-1;lastIndex>i;)list[i]=list[++i];if(list.length=lastIndex,el){var doc=el.ownerDocument;doc&&(_onRemoveAttribute(doc,el,attr),attr.ownerElement=null)}}function DOMImplementation(features){if(this._features={},features)for(var feature in features)this._features=features[feature]}function Node(){}function _xmlEncoder(c){return\\\"<\\\"==c&&\\\"<\\\"||\\\">\\\"==c&&\\\">\\\"||\\\"&\\\"==c&&\\\"&\\\"||'\\\"'==c&&\\\""\\\"||\\\"&#\\\"+c.charCodeAt()+\\\";\\\"}function _visitNode(node,callback){if(callback(node))return!0;if(node=node.firstChild)do if(_visitNode(node,callback))return!0;while(node=node.nextSibling)}function Document(){}function _onAddAttribute(doc,el,newAttr){doc&&doc._inc++;var ns=newAttr.namespaceURI;\\\"http://www.w3.org/2000/xmlns/\\\"==ns&&(el._nsMap[newAttr.prefix?newAttr.localName:\\\"\\\"]=newAttr.value)}function _onRemoveAttribute(doc,el,newAttr){doc&&doc._inc++;var ns=newAttr.namespaceURI;\\\"http://www.w3.org/2000/xmlns/\\\"==ns&&delete el._nsMap[newAttr.prefix?newAttr.localName:\\\"\\\"]}function _onUpdateChild(doc,el,newChild){if(doc&&doc._inc){doc._inc++;var cs=el.childNodes;if(newChild)cs[cs.length++]=newChild;else{for(var child=el.firstChild,i=0;child;)cs[i++]=child,child=child.nextSibling;cs.length=i}}}function _removeChild(parentNode,child){var previous=child.previousSibling,next=child.nextSibling;return previous?previous.nextSibling=next:parentNode.firstChild=next,next?next.previousSibling=previous:parentNode.lastChild=previous,_onUpdateChild(parentNode.ownerDocument,parentNode),child}function _insertBefore(parentNode,newChild,nextChild){var cp=newChild.parentNode;if(cp&&cp.removeChild(newChild),newChild.nodeType===DOCUMENT_FRAGMENT_NODE){var newFirst=newChild.firstChild;if(null==newFirst)return newChild;var newLast=newChild.lastChild}else newFirst=newLast=newChild;var pre=nextChild?nextChild.previousSibling:parentNode.lastChild;newFirst.previousSibling=pre,newLast.nextSibling=nextChild,pre?pre.nextSibling=newFirst:parentNode.firstChild=newFirst,null==nextChild?parentNode.lastChild=newLast:nextChild.previousSibling=newLast;do newFirst.parentNode=parentNode;while(newFirst!==newLast&&(newFirst=newFirst.nextSibling));return _onUpdateChild(parentNode.ownerDocument||parentNode,parentNode),newChild.nodeType==DOCUMENT_FRAGMENT_NODE&&(newChild.firstChild=newChild.lastChild=null),newChild}function _appendSingleChild(parentNode,newChild){var cp=newChild.parentNode;if(cp){var pre=parentNode.lastChild;cp.removeChild(newChild);var pre=parentNode.lastChild}var pre=parentNode.lastChild;return newChild.parentNode=parentNode,newChild.previousSibling=pre,newChild.nextSibling=null,pre?pre.nextSibling=newChild:parentNode.firstChild=newChild,parentNode.lastChild=newChild,_onUpdateChild(parentNode.ownerDocument,parentNode,newChild),newChild}function Element(){this._nsMap={}}function Attr(){}function CharacterData(){}function Text(){}function Comment(){}function CDATASection(){}function DocumentType(){}function Notation(){}function Entity(){}function EntityReference(){}function DocumentFragment(){}function ProcessingInstruction(){}function XMLSerializer(){}function serializeToString(node,buf){switch(node.nodeType){case ELEMENT_NODE:var attrs=node.attributes,len=attrs.length,child=node.firstChild,nodeName=node.tagName,isHTML=htmlns===node.namespaceURI;buf.push(\\\"<\\\",nodeName);for(var i=0;len>i;i++)serializeToString(attrs.item(i),buf,isHTML);if(child||isHTML&&!/^(?:meta|link|img|br|hr|input|button)$/i.test(nodeName)){if(buf.push(\\\">\\\"),isHTML&&/^script$/i.test(nodeName))child&&buf.push(child.data);else for(;child;)serializeToString(child,buf),child=child.nextSibling;buf.push(\\\"\\\")}else buf.push(\\\"/>\\\");return;case DOCUMENT_NODE:case DOCUMENT_FRAGMENT_NODE:for(var child=node.firstChild;child;)serializeToString(child,buf),child=child.nextSibling;return;case ATTRIBUTE_NODE:return buf.push(\\\" \\\",node.name,'=\\\"',node.value.replace(/[<&\\\"]/g,_xmlEncoder),'\\\"');case TEXT_NODE:return buf.push(node.data.replace(/[<&]/g,_xmlEncoder));case CDATA_SECTION_NODE:return buf.push(\\\"\\\");case COMMENT_NODE:return buf.push(\\\"\\\");case DOCUMENT_TYPE_NODE:var pubid=node.publicId,sysid=node.systemId;if(buf.push(\\\"');else if(sysid&&\\\".\\\"!=sysid)buf.push(' SYSTEM \\\"',sysid,'\\\">');else{var sub=node.internalSubset;sub&&buf.push(\\\" [\\\",sub,\\\"]\\\"),buf.push(\\\">\\\")}return;case PROCESSING_INSTRUCTION_NODE:return buf.push(\\\"\\\");case ENTITY_REFERENCE_NODE:return buf.push(\\\"&\\\",node.nodeName,\\\";\\\");default:buf.push(\\\"??\\\",node.nodeName)}}function importNode(doc,node,deep){var node2;switch(node.nodeType){case ELEMENT_NODE:node2=node.cloneNode(!1),node2.ownerDocument=doc;case DOCUMENT_FRAGMENT_NODE:break;case ATTRIBUTE_NODE:deep=!0}if(node2||(node2=node.cloneNode(!1)),node2.ownerDocument=doc,node2.parentNode=null,deep)for(var child=node.firstChild;child;)node2.appendChild(importNode(doc,child,deep)),child=child.nextSibling;return node2}function cloneNode(doc,node,deep){var node2=new node.constructor;for(var n in node){var v=node[n];\\\"object\\\"!=typeof v&&v!=node2[n]&&(node2[n]=v)}switch(node.childNodes&&(node2.childNodes=new NodeList),node2.ownerDocument=doc,node2.nodeType){case ELEMENT_NODE:var attrs=node.attributes,attrs2=node2.attributes=new NamedNodeMap,len=attrs.length;attrs2._ownerElement=node2;for(var i=0;len>i;i++)node2.setAttributeNode(cloneNode(doc,attrs.item(i),!0));break;case ATTRIBUTE_NODE:deep=!0}if(deep)for(var child=node.firstChild;child;)node2.appendChild(cloneNode(doc,child,deep)),child=child.nextSibling;return node2}function __set__(object,key,value){object[key]=value}function getTextContent(node){switch(node.nodeType){case 1:case 11:var buf=[];for(node=node.firstChild;node;)7!==node.nodeType&&8!==node.nodeType&&buf.push(getTextContent(node)),node=node.nextSibling;return buf.join(\\\"\\\");default:return node.nodeValue}}var htmlns=\\\"http://www.w3.org/1999/xhtml\\\",NodeType={},ELEMENT_NODE=NodeType.ELEMENT_NODE=1,ATTRIBUTE_NODE=NodeType.ATTRIBUTE_NODE=2,TEXT_NODE=NodeType.TEXT_NODE=3,CDATA_SECTION_NODE=NodeType.CDATA_SECTION_NODE=4,ENTITY_REFERENCE_NODE=NodeType.ENTITY_REFERENCE_NODE=5,ENTITY_NODE=NodeType.ENTITY_NODE=6,PROCESSING_INSTRUCTION_NODE=NodeType.PROCESSING_INSTRUCTION_NODE=7,COMMENT_NODE=NodeType.COMMENT_NODE=8,DOCUMENT_NODE=NodeType.DOCUMENT_NODE=9,DOCUMENT_TYPE_NODE=NodeType.DOCUMENT_TYPE_NODE=10,DOCUMENT_FRAGMENT_NODE=NodeType.DOCUMENT_FRAGMENT_NODE=11,NOTATION_NODE=NodeType.NOTATION_NODE=12,ExceptionCode={},ExceptionMessage={};ExceptionCode.INDEX_SIZE_ERR=(ExceptionMessage[1]=\\\"Index size error\\\",1),ExceptionCode.DOMSTRING_SIZE_ERR=(ExceptionMessage[2]=\\\"DOMString size error\\\",2),ExceptionCode.HIERARCHY_REQUEST_ERR=(ExceptionMessage[3]=\\\"Hierarchy request error\\\",3),ExceptionCode.WRONG_DOCUMENT_ERR=(ExceptionMessage[4]=\\\"Wrong document\\\",4),ExceptionCode.INVALID_CHARACTER_ERR=(ExceptionMessage[5]=\\\"Invalid character\\\",5),ExceptionCode.NO_DATA_ALLOWED_ERR=(ExceptionMessage[6]=\\\"No data allowed\\\",6),ExceptionCode.NO_MODIFICATION_ALLOWED_ERR=(ExceptionMessage[7]=\\\"No modification allowed\\\",7);var NOT_FOUND_ERR=ExceptionCode.NOT_FOUND_ERR=(ExceptionMessage[8]=\\\"Not found\\\",8);ExceptionCode.NOT_SUPPORTED_ERR=(ExceptionMessage[9]=\\\"Not supported\\\",9);var INUSE_ATTRIBUTE_ERR=ExceptionCode.INUSE_ATTRIBUTE_ERR=(ExceptionMessage[10]=\\\"Attribute in use\\\",10);ExceptionCode.INVALID_STATE_ERR=(ExceptionMessage[11]=\\\"Invalid state\\\",11),ExceptionCode.SYNTAX_ERR=(ExceptionMessage[12]=\\\"Syntax error\\\",12),ExceptionCode.INVALID_MODIFICATION_ERR=(ExceptionMessage[13]=\\\"Invalid modification\\\",13),ExceptionCode.NAMESPACE_ERR=(ExceptionMessage[14]=\\\"Invalid namespace\\\",14),ExceptionCode.INVALID_ACCESS_ERR=(ExceptionMessage[15]=\\\"Invalid access\\\",15),DOMException.prototype=Error.prototype,copy(ExceptionCode,DOMException),NodeList.prototype={length:0,item:function(index){return this[index]||null}},LiveNodeList.prototype.item=function(i){return _updateLiveList(this),this[i]},_extends(LiveNodeList,NodeList),NamedNodeMap.prototype={length:0,item:NodeList.prototype.item,getNamedItem:function(key){for(var i=this.length;i--;){var attr=this[i];if(attr.nodeName==key)return attr}},setNamedItem:function(attr){var el=attr.ownerElement;if(el&&el!=this._ownerElement)throw new DOMException(INUSE_ATTRIBUTE_ERR);var oldAttr=this.getNamedItem(attr.nodeName);return _addNamedNode(this._ownerElement,this,attr,oldAttr),oldAttr},setNamedItemNS:function(attr){var oldAttr,el=attr.ownerElement;if(el&&el!=this._ownerElement)throw new DOMException(INUSE_ATTRIBUTE_ERR);return oldAttr=this.getNamedItemNS(attr.namespaceURI,attr.localName),_addNamedNode(this._ownerElement,this,attr,oldAttr),oldAttr},removeNamedItem:function(key){var attr=this.getNamedItem(key);return _removeNamedNode(this._ownerElement,this,attr),attr},removeNamedItemNS:function(namespaceURI,localName){var attr=this.getNamedItemNS(namespaceURI,localName);return _removeNamedNode(this._ownerElement,this,attr),attr},getNamedItemNS:function(namespaceURI,localName){for(var i=this.length;i--;){var node=this[i];if(node.localName==localName&&node.namespaceURI==namespaceURI)return node}return null}},DOMImplementation.prototype={hasFeature:function(feature,version){var versions=this._features[feature.toLowerCase()];return versions&&(!version||version in versions)?!0:!1},createDocument:function(namespaceURI,qualifiedName,doctype){var doc=new Document;if(doc.implementation=this,doc.childNodes=new NodeList,doc.doctype=doctype,doctype&&doc.appendChild(doctype),qualifiedName){var root=doc.createElementNS(namespaceURI,qualifiedName);doc.appendChild(root)}return doc},createDocumentType:function(qualifiedName,publicId,systemId){var node=new DocumentType;return node.name=qualifiedName,node.nodeName=qualifiedName,node.publicId=publicId,node.systemId=systemId,node}},Node.prototype={firstChild:null,lastChild:null,previousSibling:null,nextSibling:null,attributes:null,parentNode:null,childNodes:null,ownerDocument:null,nodeValue:null,namespaceURI:null,prefix:null,localName:null,insertBefore:function(newChild,refChild){return _insertBefore(this,newChild,refChild)},replaceChild:function(newChild,oldChild){this.insertBefore(newChild,oldChild),oldChild&&this.removeChild(oldChild)},removeChild:function(oldChild){return _removeChild(this,oldChild)},appendChild:function(newChild){return this.insertBefore(newChild,null)},hasChildNodes:function(){return null!=this.firstChild},cloneNode:function(deep){return cloneNode(this.ownerDocument||this,this,deep)},normalize:function(){for(var child=this.firstChild;child;){var next=child.nextSibling;next&&next.nodeType==TEXT_NODE&&child.nodeType==TEXT_NODE?(this.removeChild(next),child.appendData(next.data)):(child.normalize(),child=next)}},isSupported:function(feature,version){return this.ownerDocument.implementation.hasFeature(feature,version)},hasAttributes:function(){return this.attributes.length>0},lookupPrefix:function(namespaceURI){for(var el=this;el;){var map=el._nsMap;if(map)for(var n in map)if(map[n]==namespaceURI)return n;el=2==el.nodeType?el.ownerDocument:el.parentNode}return null},lookupNamespaceURI:function(prefix){for(var el=this;el;){var map=el._nsMap;if(map&&prefix in map)return map[prefix];el=2==el.nodeType?el.ownerDocument:el.parentNode}return null},isDefaultNamespace:function(namespaceURI){var prefix=this.lookupPrefix(namespaceURI);return null==prefix}},copy(NodeType,Node),copy(NodeType,Node.prototype),Document.prototype={nodeName:\\\"#document\\\",nodeType:DOCUMENT_NODE,doctype:null,documentElement:null,_inc:1,insertBefore:function(newChild,refChild){if(newChild.nodeType==DOCUMENT_FRAGMENT_NODE){for(var child=newChild.firstChild;child;){var next=child.nextSibling;this.insertBefore(child,refChild),child=next}return newChild}return null==this.documentElement&&1==newChild.nodeType&&(this.documentElement=newChild),_insertBefore(this,newChild,refChild),newChild.ownerDocument=this,newChild},removeChild:function(oldChild){return this.documentElement==oldChild&&(this.documentElement=null),_removeChild(this,oldChild)},importNode:function(importedNode,deep){return importNode(this,importedNode,deep)},getElementById:function(id){var rtv=null;return _visitNode(this.documentElement,function(node){return 1==node.nodeType&&node.getAttribute(\\\"id\\\")==id?(rtv=node,!0):void 0}),rtv},createElement:function(tagName){var node=new Element;node.ownerDocument=this,node.nodeName=tagName,node.tagName=tagName,node.childNodes=new NodeList;var attrs=node.attributes=new NamedNodeMap;return attrs._ownerElement=node,node},createDocumentFragment:function(){var node=new DocumentFragment;return node.ownerDocument=this,node.childNodes=new NodeList,node},createTextNode:function(data){var node=new Text;return node.ownerDocument=this,node.appendData(data),node},createComment:function(data){var node=new Comment;return node.ownerDocument=this,node.appendData(data),node},createCDATASection:function(data){var node=new CDATASection;return node.ownerDocument=this,node.appendData(data),node},createProcessingInstruction:function(target,data){var node=new ProcessingInstruction;return node.ownerDocument=this,node.tagName=node.target=target,node.nodeValue=node.data=data,node},createAttribute:function(name){var node=new Attr;return node.ownerDocument=this,node.name=name,node.nodeName=name,node.localName=name,node.specified=!0,node},createEntityReference:function(name){var node=new EntityReference;return node.ownerDocument=this,node.nodeName=name,node},createElementNS:function(namespaceURI,qualifiedName){var node=new Element,pl=qualifiedName.split(\\\":\\\"),attrs=node.attributes=new NamedNodeMap;return node.childNodes=new NodeList,node.ownerDocument=this,node.nodeName=qualifiedName,node.tagName=qualifiedName,node.namespaceURI=namespaceURI,2==pl.length?(node.prefix=pl[0],node.localName=pl[1]):node.localName=qualifiedName,attrs._ownerElement=node,node},createAttributeNS:function(namespaceURI,qualifiedName){var node=new Attr,pl=qualifiedName.split(\\\":\\\");return node.ownerDocument=this,node.nodeName=qualifiedName,node.name=qualifiedName,node.namespaceURI=namespaceURI,node.specified=!0,2==pl.length?(node.prefix=pl[0],node.localName=pl[1]):node.localName=qualifiedName,node}},_extends(Document,Node),Element.prototype={nodeType:ELEMENT_NODE,hasAttribute:function(name){return null!=this.getAttributeNode(name)},getAttribute:function(name){var attr=this.getAttributeNode(name);return attr&&attr.value||\\\"\\\"},getAttributeNode:function(name){return this.attributes.getNamedItem(name)},setAttribute:function(name,value){var attr=this.ownerDocument.createAttribute(name);attr.value=attr.nodeValue=\\\"\\\"+value,this.setAttributeNode(attr)},removeAttribute:function(name){var attr=this.getAttributeNode(name);attr&&this.removeAttributeNode(attr)},appendChild:function(newChild){return newChild.nodeType===DOCUMENT_FRAGMENT_NODE?this.insertBefore(newChild,null):_appendSingleChild(this,newChild)},setAttributeNode:function(newAttr){return this.attributes.setNamedItem(newAttr)},setAttributeNodeNS:function(newAttr){return this.attributes.setNamedItemNS(newAttr)},removeAttributeNode:function(oldAttr){return this.attributes.removeNamedItem(oldAttr.nodeName)},removeAttributeNS:function(namespaceURI,localName){var old=this.getAttributeNodeNS(namespaceURI,localName);old&&this.removeAttributeNode(old)},hasAttributeNS:function(namespaceURI,localName){return null!=this.getAttributeNodeNS(namespaceURI,localName)},getAttributeNS:function(namespaceURI,localName){var attr=this.getAttributeNodeNS(namespaceURI,localName);return attr&&attr.value||\\\"\\\"},setAttributeNS:function(namespaceURI,qualifiedName,value){var attr=this.ownerDocument.createAttributeNS(namespaceURI,qualifiedName);attr.value=attr.nodeValue=\\\"\\\"+value,this.setAttributeNode(attr)},getAttributeNodeNS:function(namespaceURI,localName){return this.attributes.getNamedItemNS(namespaceURI,localName)},getElementsByTagName:function(tagName){return new LiveNodeList(this,function(base){var ls=[];return _visitNode(base,function(node){node===base||node.nodeType!=ELEMENT_NODE||\\\"*\\\"!==tagName&&node.tagName!=tagName||ls.push(node)}),ls})},getElementsByTagNameNS:function(namespaceURI,localName){return new LiveNodeList(this,function(base){var ls=[];return _visitNode(base,function(node){node===base||node.nodeType!==ELEMENT_NODE||\\\"*\\\"!==namespaceURI&&node.namespaceURI!==namespaceURI||\\\"*\\\"!==localName&&node.localName!=localName||ls.push(node)}),ls})}},Document.prototype.getElementsByTagName=Element.prototype.getElementsByTagName,Document.prototype.getElementsByTagNameNS=Element.prototype.getElementsByTagNameNS,_extends(Element,Node),Attr.prototype.nodeType=ATTRIBUTE_NODE,_extends(Attr,Node),CharacterData.prototype={data:\\\"\\\",substringData:function(offset,count){return this.data.substring(offset,offset+count)},appendData:function(text){text=this.data+text,this.nodeValue=this.data=text,this.length=text.length},insertData:function(offset,text){this.replaceData(offset,0,text)},appendChild:function(){throw Error(ExceptionMessage[3])},deleteData:function(offset,count){this.replaceData(offset,count,\\\"\\\")},replaceData:function(offset,count,text){var start=this.data.substring(0,offset),end=this.data.substring(offset+count);text=start+text+end,this.nodeValue=this.data=text,this.length=text.length}},_extends(CharacterData,Node),Text.prototype={nodeName:\\\"#text\\\",nodeType:TEXT_NODE,splitText:function(offset){var text=this.data,newText=text.substring(offset);text=text.substring(0,offset),this.data=this.nodeValue=text,this.length=text.length;var newNode=this.ownerDocument.createTextNode(newText);return this.parentNode&&this.parentNode.insertBefore(newNode,this.nextSibling),newNode}},_extends(Text,CharacterData),Comment.prototype={nodeName:\\\"#comment\\\",nodeType:COMMENT_NODE},_extends(Comment,CharacterData),CDATASection.prototype={nodeName:\\\"#cdata-section\\\",nodeType:CDATA_SECTION_NODE},_extends(CDATASection,CharacterData),DocumentType.prototype.nodeType=DOCUMENT_TYPE_NODE,_extends(DocumentType,Node),Notation.prototype.nodeType=NOTATION_NODE,_extends(Notation,Node),Entity.prototype.nodeType=ENTITY_NODE,_extends(Entity,Node),EntityReference.prototype.nodeType=ENTITY_REFERENCE_NODE,_extends(EntityReference,Node),DocumentFragment.prototype.nodeName=\\\"#document-fragment\\\",DocumentFragment.prototype.nodeType=DOCUMENT_FRAGMENT_NODE,_extends(DocumentFragment,Node),ProcessingInstruction.prototype.nodeType=PROCESSING_INSTRUCTION_NODE,_extends(ProcessingInstruction,Node),XMLSerializer.prototype.serializeToString=function(node){var buf=[];return serializeToString(node,buf),buf.join(\\\"\\\")},Node.prototype.toString=function(){return XMLSerializer.prototype.serializeToString(this)};try{Object.defineProperty&&(Object.defineProperty(LiveNodeList.prototype,\\\"length\\\",{get:function(){return _updateLiveList(this),this.$$length}}),Object.defineProperty(Node.prototype,\\\"textContent\\\",{get:function(){return getTextContent(this)},set:function(data){switch(this.nodeType){case 1:case 11:for(;this.firstChild;)this.removeChild(this.firstChild);(data||data+\\\"\\\")&&this.appendChild(this.ownerDocument.createTextNode(data));break;default:this.data=data,this.value=value,this.nodeValue=data}}}),__set__=function(object,key,value){object[\\\"$$\\\"+key]=value})}catch(e){}return DOMImplementation}),ace.define(\\\"ace/mode/xml/dom-parser\\\",[\\\"require\\\",\\\"exports\\\",\\\"module\\\",\\\"ace/mode/xml/sax\\\",\\\"ace/mode/xml/dom\\\"],function(acequire){\\\"use strict\\\";function DOMParser(options){this.options=options||{locator:{}}}function buildErrorHandler(errorImpl,domBuilder,locator){function build(key){var fn=errorImpl[key];if(!fn)if(isCallback)fn=2==errorImpl.length?function(msg){errorImpl(key,msg)}:errorImpl;else for(var i=arguments.length;--i&&!(fn=errorImpl[arguments[i]]););errorHandler[key]=fn&&function(msg){fn(msg+_locator(locator),msg,locator)}||function(){}}if(!errorImpl){if(domBuilder instanceof DOMHandler)return domBuilder;errorImpl=domBuilder}var errorHandler={},isCallback=errorImpl instanceof Function;return locator=locator||{},build(\\\"warning\\\",\\\"warn\\\"),build(\\\"error\\\",\\\"warn\\\",\\\"warning\\\"),build(\\\"fatalError\\\",\\\"warn\\\",\\\"warning\\\",\\\"error\\\"),errorHandler}function DOMHandler(){this.cdata=!1}function position(locator,node){node.lineNumber=locator.lineNumber,node.columnNumber=locator.columnNumber}function _locator(l){return l?\\\"\\\\n@\\\"+(l.systemId||\\\"\\\")+\\\"#[line:\\\"+l.lineNumber+\\\",col:\\\"+l.columnNumber+\\\"]\\\":void 0}function _toString(chars,start,length){return\\\"string\\\"==typeof chars?chars.substr(start,length):chars.length>=start+length||start?new java.lang.String(chars,start,length)+\\\"\\\":chars}function appendElement(hander,node){hander.currentElement?hander.currentElement.appendChild(node):hander.document.appendChild(node)}var XMLReader=acequire(\\\"./sax\\\"),DOMImplementation=acequire(\\\"./dom\\\");return DOMParser.prototype.parseFromString=function(source,mimeType){var options=this.options,sax=new XMLReader,domBuilder=options.domBuilder||new DOMHandler,errorHandler=options.errorHandler,locator=options.locator,defaultNSMap=options.xmlns||{},entityMap={lt:\\\"<\\\",gt:\\\">\\\",amp:\\\"&\\\",quot:'\\\"',apos:\\\"'\\\"};return locator&&domBuilder.setDocumentLocator(locator),sax.errorHandler=buildErrorHandler(errorHandler,domBuilder,locator),sax.domBuilder=options.domBuilder||domBuilder,/\\\\/x?html?$/.test(mimeType)&&(entityMap.nbsp=\\\"\\xA0\\\",entityMap.copy=\\\"\\xA9\\\",defaultNSMap[\\\"\\\"]=\\\"http://www.w3.org/1999/xhtml\\\"),source?sax.parse(source,defaultNSMap,entityMap):sax.errorHandler.error(\\\"invalid document source\\\"),domBuilder.document},DOMHandler.prototype={startDocument:function(){this.document=(new DOMImplementation).createDocument(null,null,null),this.locator&&(this.document.documentURI=this.locator.systemId)},startElement:function(namespaceURI,localName,qName,attrs){var doc=this.document,el=doc.createElementNS(namespaceURI,qName||localName),len=attrs.length;appendElement(this,el),this.currentElement=el,this.locator&&position(this.locator,el);for(var i=0;len>i;i++){var namespaceURI=attrs.getURI(i),value=attrs.getValue(i),qName=attrs.getQName(i),attr=doc.createAttributeNS(namespaceURI,qName);attr.getOffset&&position(attr.getOffset(1),attr),attr.value=attr.nodeValue=value,el.setAttributeNode(attr)}},endElement:function(){var current=this.currentElement;current.tagName,this.currentElement=current.parentNode},startPrefixMapping:function(){},endPrefixMapping:function(){},processingInstruction:function(target,data){var ins=this.document.createProcessingInstruction(target,data);this.locator&&position(this.locator,ins),appendElement(this,ins)},ignorableWhitespace:function(){},characters:function(chars){if(chars=_toString.apply(this,arguments),this.currentElement&&chars){if(this.cdata){var charNode=this.document.createCDATASection(chars);this.currentElement.appendChild(charNode)}else{var charNode=this.document.createTextNode(chars);this.currentElement.appendChild(charNode)}this.locator&&position(this.locator,charNode)}},skippedEntity:function(){},endDocument:function(){this.document.normalize()},setDocumentLocator:function(locator){(this.locator=locator)&&(locator.lineNumber=0)},comment:function(chars){chars=_toString.apply(this,arguments);var comm=this.document.createComment(chars);this.locator&&position(this.locator,comm),appendElement(this,comm)},startCDATA:function(){this.cdata=!0},endCDATA:function(){this.cdata=!1},startDTD:function(name,publicId,systemId){var impl=this.document.implementation;if(impl&&impl.createDocumentType){var dt=impl.createDocumentType(name,publicId,systemId);this.locator&&position(this.locator,dt),appendElement(this,dt)}},warning:function(error){console.warn(error,_locator(this.locator))},error:function(error){console.error(error,_locator(this.locator))},fatalError:function(error){throw console.error(error,_locator(this.locator)),error}},\\\"endDTD,startEntity,endEntity,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,resolveEntity,getExternalSubset,notationDecl,unparsedEntityDecl\\\".replace(/\\\\w+/g,function(key){DOMHandler.prototype[key]=function(){return null}}),{DOMParser:DOMParser}}),ace.define(\\\"ace/mode/xml_worker\\\",[\\\"require\\\",\\\"exports\\\",\\\"module\\\",\\\"ace/lib/oop\\\",\\\"ace/lib/lang\\\",\\\"ace/worker/mirror\\\",\\\"ace/mode/xml/dom-parser\\\"],function(acequire,exports){\\\"use strict\\\";var oop=acequire(\\\"../lib/oop\\\");acequire(\\\"../lib/lang\\\");var Mirror=acequire(\\\"../worker/mirror\\\").Mirror,DOMParser=acequire(\\\"./xml/dom-parser\\\").DOMParser,Worker=exports.Worker=function(sender){Mirror.call(this,sender),this.setTimeout(400),this.context=null};oop.inherits(Worker,Mirror),function(){this.setOptions=function(options){this.context=options.context},this.onUpdate=function(){var value=this.doc.getValue();if(value){var parser=new DOMParser,errors=[];parser.options.errorHandler={fatalError:function(fullMsg,errorMsg,locator){errors.push({row:locator.lineNumber,column:locator.columnNumber,text:errorMsg,type:\\\"error\\\"})},error:function(fullMsg,errorMsg,locator){errors.push({row:locator.lineNumber,column:locator.columnNumber,text:errorMsg,type:\\\"error\\\"})},warning:function(fullMsg,errorMsg,locator){errors.push({row:locator.lineNumber,column:locator.columnNumber,text:errorMsg,type:\\\"warning\\\"})}},parser.parseFromString(value),this.sender.emit(\\\"error\\\",errors)}}}.call(Worker.prototype)}),ace.define(\\\"ace/lib/es5-shim\\\",[\\\"require\\\",\\\"exports\\\",\\\"module\\\"],function(){function Empty(){}function doesDefinePropertyWork(object){try{return Object.defineProperty(object,\\\"sentinel\\\",{}),\\\"sentinel\\\"in object\\n}catch(exception){}}function toInteger(n){return n=+n,n!==n?n=0:0!==n&&n!==1/0&&n!==-(1/0)&&(n=(n>0||-1)*Math.floor(Math.abs(n))),n}Function.prototype.bind||(Function.prototype.bind=function(that){var target=this;if(\\\"function\\\"!=typeof target)throw new TypeError(\\\"Function.prototype.bind called on incompatible \\\"+target);var args=slice.call(arguments,1),bound=function(){if(this instanceof bound){var result=target.apply(this,args.concat(slice.call(arguments)));return Object(result)===result?result:this}return target.apply(that,args.concat(slice.call(arguments)))};return target.prototype&&(Empty.prototype=target.prototype,bound.prototype=new Empty,Empty.prototype=null),bound});var defineGetter,defineSetter,lookupGetter,lookupSetter,supportsAccessors,call=Function.prototype.call,prototypeOfArray=Array.prototype,prototypeOfObject=Object.prototype,slice=prototypeOfArray.slice,_toString=call.bind(prototypeOfObject.toString),owns=call.bind(prototypeOfObject.hasOwnProperty);if((supportsAccessors=owns(prototypeOfObject,\\\"__defineGetter__\\\"))&&(defineGetter=call.bind(prototypeOfObject.__defineGetter__),defineSetter=call.bind(prototypeOfObject.__defineSetter__),lookupGetter=call.bind(prototypeOfObject.__lookupGetter__),lookupSetter=call.bind(prototypeOfObject.__lookupSetter__)),2!=[1,2].splice(0).length)if(function(){function makeArray(l){var a=Array(l+2);return a[0]=a[1]=0,a}var lengthBefore,array=[];return array.splice.apply(array,makeArray(20)),array.splice.apply(array,makeArray(26)),lengthBefore=array.length,array.splice(5,0,\\\"XXX\\\"),lengthBefore+1==array.length,lengthBefore+1==array.length?!0:void 0}()){var array_splice=Array.prototype.splice;Array.prototype.splice=function(start,deleteCount){return arguments.length?array_splice.apply(this,[void 0===start?0:start,void 0===deleteCount?this.length-start:deleteCount].concat(slice.call(arguments,2))):[]}}else Array.prototype.splice=function(pos,removeCount){var length=this.length;pos>0?pos>length&&(pos=length):void 0==pos?pos=0:0>pos&&(pos=Math.max(length+pos,0)),length>pos+removeCount||(removeCount=length-pos);var removed=this.slice(pos,pos+removeCount),insert=slice.call(arguments,2),add=insert.length;if(pos===length)add&&this.push.apply(this,insert);else{var remove=Math.min(removeCount,length-pos),tailOldPos=pos+remove,tailNewPos=tailOldPos+add-remove,tailCount=length-tailOldPos,lengthAfterRemove=length-remove;if(tailOldPos>tailNewPos)for(var i=0;tailCount>i;++i)this[tailNewPos+i]=this[tailOldPos+i];else if(tailNewPos>tailOldPos)for(i=tailCount;i--;)this[tailNewPos+i]=this[tailOldPos+i];if(add&&pos===lengthAfterRemove)this.length=lengthAfterRemove,this.push.apply(this,insert);else for(this.length=lengthAfterRemove+add,i=0;add>i;++i)this[pos+i]=insert[i]}return removed};Array.isArray||(Array.isArray=function(obj){return\\\"[object Array]\\\"==_toString(obj)});var boxedString=Object(\\\"a\\\"),splitString=\\\"a\\\"!=boxedString[0]||!(0 in boxedString);if(Array.prototype.forEach||(Array.prototype.forEach=function(fun){var object=toObject(this),self=splitString&&\\\"[object String]\\\"==_toString(this)?this.split(\\\"\\\"):object,thisp=arguments[1],i=-1,length=self.length>>>0;if(\\\"[object Function]\\\"!=_toString(fun))throw new TypeError;for(;length>++i;)i in self&&fun.call(thisp,self[i],i,object)}),Array.prototype.map||(Array.prototype.map=function(fun){var object=toObject(this),self=splitString&&\\\"[object String]\\\"==_toString(this)?this.split(\\\"\\\"):object,length=self.length>>>0,result=Array(length),thisp=arguments[1];if(\\\"[object Function]\\\"!=_toString(fun))throw new TypeError(fun+\\\" is not a function\\\");for(var i=0;length>i;i++)i in self&&(result[i]=fun.call(thisp,self[i],i,object));return result}),Array.prototype.filter||(Array.prototype.filter=function(fun){var value,object=toObject(this),self=splitString&&\\\"[object String]\\\"==_toString(this)?this.split(\\\"\\\"):object,length=self.length>>>0,result=[],thisp=arguments[1];if(\\\"[object Function]\\\"!=_toString(fun))throw new TypeError(fun+\\\" is not a function\\\");for(var i=0;length>i;i++)i in self&&(value=self[i],fun.call(thisp,value,i,object)&&result.push(value));return result}),Array.prototype.every||(Array.prototype.every=function(fun){var object=toObject(this),self=splitString&&\\\"[object String]\\\"==_toString(this)?this.split(\\\"\\\"):object,length=self.length>>>0,thisp=arguments[1];if(\\\"[object Function]\\\"!=_toString(fun))throw new TypeError(fun+\\\" is not a function\\\");for(var i=0;length>i;i++)if(i in self&&!fun.call(thisp,self[i],i,object))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(fun){var object=toObject(this),self=splitString&&\\\"[object String]\\\"==_toString(this)?this.split(\\\"\\\"):object,length=self.length>>>0,thisp=arguments[1];if(\\\"[object Function]\\\"!=_toString(fun))throw new TypeError(fun+\\\" is not a function\\\");for(var i=0;length>i;i++)if(i in self&&fun.call(thisp,self[i],i,object))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(fun){var object=toObject(this),self=splitString&&\\\"[object String]\\\"==_toString(this)?this.split(\\\"\\\"):object,length=self.length>>>0;if(\\\"[object Function]\\\"!=_toString(fun))throw new TypeError(fun+\\\" is not a function\\\");if(!length&&1==arguments.length)throw new TypeError(\\\"reduce of empty array with no initial value\\\");var result,i=0;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i++];break}if(++i>=length)throw new TypeError(\\\"reduce of empty array with no initial value\\\")}for(;length>i;i++)i in self&&(result=fun.call(void 0,result,self[i],i,object));return result}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(fun){var object=toObject(this),self=splitString&&\\\"[object String]\\\"==_toString(this)?this.split(\\\"\\\"):object,length=self.length>>>0;if(\\\"[object Function]\\\"!=_toString(fun))throw new TypeError(fun+\\\" is not a function\\\");if(!length&&1==arguments.length)throw new TypeError(\\\"reduceRight of empty array with no initial value\\\");var result,i=length-1;if(arguments.length>=2)result=arguments[1];else for(;;){if(i in self){result=self[i--];break}if(0>--i)throw new TypeError(\\\"reduceRight of empty array with no initial value\\\")}do i in this&&(result=fun.call(void 0,result,self[i],i,object));while(i--);return result}),Array.prototype.indexOf&&-1==[0,1].indexOf(1,2)||(Array.prototype.indexOf=function(sought){var self=splitString&&\\\"[object String]\\\"==_toString(this)?this.split(\\\"\\\"):toObject(this),length=self.length>>>0;if(!length)return-1;var i=0;for(arguments.length>1&&(i=toInteger(arguments[1])),i=i>=0?i:Math.max(0,length+i);length>i;i++)if(i in self&&self[i]===sought)return i;return-1}),Array.prototype.lastIndexOf&&-1==[0,1].lastIndexOf(0,-3)||(Array.prototype.lastIndexOf=function(sought){var self=splitString&&\\\"[object String]\\\"==_toString(this)?this.split(\\\"\\\"):toObject(this),length=self.length>>>0;if(!length)return-1;var i=length-1;for(arguments.length>1&&(i=Math.min(i,toInteger(arguments[1]))),i=i>=0?i:length-Math.abs(i);i>=0;i--)if(i in self&&sought===self[i])return i;return-1}),Object.getPrototypeOf||(Object.getPrototypeOf=function(object){return object.__proto__||(object.constructor?object.constructor.prototype:prototypeOfObject)}),!Object.getOwnPropertyDescriptor){var ERR_NON_OBJECT=\\\"Object.getOwnPropertyDescriptor called on a non-object: \\\";Object.getOwnPropertyDescriptor=function(object,property){if(\\\"object\\\"!=typeof object&&\\\"function\\\"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT+object);if(owns(object,property)){var descriptor,getter,setter;if(descriptor={enumerable:!0,configurable:!0},supportsAccessors){var prototype=object.__proto__;object.__proto__=prototypeOfObject;var getter=lookupGetter(object,property),setter=lookupSetter(object,property);if(object.__proto__=prototype,getter||setter)return getter&&(descriptor.get=getter),setter&&(descriptor.set=setter),descriptor}return descriptor.value=object[property],descriptor}}}if(Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(object){return Object.keys(object)}),!Object.create){var createEmpty;createEmpty=null===Object.prototype.__proto__?function(){return{__proto__:null}}:function(){var empty={};for(var i in empty)empty[i]=null;return empty.constructor=empty.hasOwnProperty=empty.propertyIsEnumerable=empty.isPrototypeOf=empty.toLocaleString=empty.toString=empty.valueOf=empty.__proto__=null,empty},Object.create=function(prototype,properties){var object;if(null===prototype)object=createEmpty();else{if(\\\"object\\\"!=typeof prototype)throw new TypeError(\\\"typeof prototype[\\\"+typeof prototype+\\\"] != 'object'\\\");var Type=function(){};Type.prototype=prototype,object=new Type,object.__proto__=prototype}return void 0!==properties&&Object.defineProperties(object,properties),object}}if(Object.defineProperty){var definePropertyWorksOnObject=doesDefinePropertyWork({}),definePropertyWorksOnDom=\\\"undefined\\\"==typeof document||doesDefinePropertyWork(document.createElement(\\\"div\\\"));if(!definePropertyWorksOnObject||!definePropertyWorksOnDom)var definePropertyFallback=Object.defineProperty}if(!Object.defineProperty||definePropertyFallback){var ERR_NON_OBJECT_DESCRIPTOR=\\\"Property description must be an object: \\\",ERR_NON_OBJECT_TARGET=\\\"Object.defineProperty called on non-object: \\\",ERR_ACCESSORS_NOT_SUPPORTED=\\\"getters & setters can not be defined on this javascript engine\\\";Object.defineProperty=function(object,property,descriptor){if(\\\"object\\\"!=typeof object&&\\\"function\\\"!=typeof object||null===object)throw new TypeError(ERR_NON_OBJECT_TARGET+object);if(\\\"object\\\"!=typeof descriptor&&\\\"function\\\"!=typeof descriptor||null===descriptor)throw new TypeError(ERR_NON_OBJECT_DESCRIPTOR+descriptor);if(definePropertyFallback)try{return definePropertyFallback.call(Object,object,property,descriptor)}catch(exception){}if(owns(descriptor,\\\"value\\\"))if(supportsAccessors&&(lookupGetter(object,property)||lookupSetter(object,property))){var prototype=object.__proto__;object.__proto__=prototypeOfObject,delete object[property],object[property]=descriptor.value,object.__proto__=prototype}else object[property]=descriptor.value;else{if(!supportsAccessors)throw new TypeError(ERR_ACCESSORS_NOT_SUPPORTED);owns(descriptor,\\\"get\\\")&&defineGetter(object,property,descriptor.get),owns(descriptor,\\\"set\\\")&&defineSetter(object,property,descriptor.set)}return object}}Object.defineProperties||(Object.defineProperties=function(object,properties){for(var property in properties)owns(properties,property)&&Object.defineProperty(object,property,properties[property]);return object}),Object.seal||(Object.seal=function(object){return object}),Object.freeze||(Object.freeze=function(object){return object});try{Object.freeze(function(){})}catch(exception){Object.freeze=function(freezeObject){return function(object){return\\\"function\\\"==typeof object?object:freezeObject(object)}}(Object.freeze)}if(Object.preventExtensions||(Object.preventExtensions=function(object){return object}),Object.isSealed||(Object.isSealed=function(){return!1}),Object.isFrozen||(Object.isFrozen=function(){return!1}),Object.isExtensible||(Object.isExtensible=function(object){if(Object(object)===object)throw new TypeError;for(var name=\\\"\\\";owns(object,name);)name+=\\\"?\\\";object[name]=!0;var returnValue=owns(object,name);return delete object[name],returnValue}),!Object.keys){var hasDontEnumBug=!0,dontEnums=[\\\"toString\\\",\\\"toLocaleString\\\",\\\"valueOf\\\",\\\"hasOwnProperty\\\",\\\"isPrototypeOf\\\",\\\"propertyIsEnumerable\\\",\\\"constructor\\\"],dontEnumsLength=dontEnums.length;for(var key in{toString:null})hasDontEnumBug=!1;Object.keys=function(object){if(\\\"object\\\"!=typeof object&&\\\"function\\\"!=typeof object||null===object)throw new TypeError(\\\"Object.keys called on a non-object\\\");var keys=[];for(var name in object)owns(object,name)&&keys.push(name);if(hasDontEnumBug)for(var i=0,ii=dontEnumsLength;ii>i;i++){var dontEnum=dontEnums[i];owns(object,dontEnum)&&keys.push(dontEnum)}return keys}}Date.now||(Date.now=function(){return(new Date).getTime()});var ws=\\\"\\t\\\\n\\x0B\\\\f\\\\r \\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\\\u2028\\\\u2029\\uFEFF\\\";if(!String.prototype.trim||ws.trim()){ws=\\\"[\\\"+ws+\\\"]\\\";var trimBeginRegexp=RegExp(\\\"^\\\"+ws+ws+\\\"*\\\"),trimEndRegexp=RegExp(ws+ws+\\\"*$\\\");String.prototype.trim=function(){return(this+\\\"\\\").replace(trimBeginRegexp,\\\"\\\").replace(trimEndRegexp,\\\"\\\")}}var toObject=function(o){if(null==o)throw new TypeError(\\\"can't convert \\\"+o+\\\" to object\\\");return Object(o)}});\";","/**\n * Diff Match and Patch\n * Copyright 2018 The diff-match-patch Authors.\n * https://github.com/google/diff-match-patch\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @fileoverview Computes the difference between two texts to create a patch.\n * Applies the patch onto another text, allowing for errors.\n * @author fraser@google.com (Neil Fraser)\n */\n\n/**\n * Class containing the diff, match and patch methods.\n * @constructor\n */\nvar diff_match_patch = function diff_match_patch() {\n // Defaults.\n // Redefine these in your program to override the defaults.\n // Number of seconds to map a diff before giving up (0 for infinity).\n this.Diff_Timeout = 1.0; // Cost of an empty edit operation in terms of edit characters.\n\n this.Diff_EditCost = 4; // At what point is no match declared (0.0 = perfection, 1.0 = very loose).\n\n this.Match_Threshold = 0.5; // How far to search for a match (0 = exact location, 1000+ = broad match).\n // A match this many characters away from the expected location will add\n // 1.0 to the score (0.0 is a perfect match).\n\n this.Match_Distance = 1000; // When deleting a large block of text (over ~64 characters), how close do\n // the contents have to be to match the expected contents. (0.0 = perfection,\n // 1.0 = very loose). Note that Match_Threshold controls how closely the\n // end points of a delete need to match.\n\n this.Patch_DeleteThreshold = 0.5; // Chunk size for context length.\n\n this.Patch_Margin = 4; // The number of bits in an int.\n\n this.Match_MaxBits = 32;\n}; // DIFF FUNCTIONS\n\n/**\n * The data structure representing a diff is an array of tuples:\n * [[DIFF_DELETE, 'Hello'], [DIFF_INSERT, 'Goodbye'], [DIFF_EQUAL, ' world.']]\n * which means: delete 'Hello', add 'Goodbye' and keep ' world.'\n */\n\n\nvar DIFF_DELETE = -1;\nvar DIFF_INSERT = 1;\nvar DIFF_EQUAL = 0;\n/**\n * Class representing one diff tuple.\n * ~Attempts to look like a two-element array (which is what this used to be).~\n * Constructor returns an actual two-element array, to allow destructing @JackuB\n * See https://github.com/JackuB/diff-match-patch/issues/14 for details\n * @param {number} op Operation, one of: DIFF_DELETE, DIFF_INSERT, DIFF_EQUAL.\n * @param {string} text Text to be deleted, inserted, or retained.\n * @constructor\n */\n\ndiff_match_patch.Diff = function (op, text) {\n return [op, text];\n};\n/**\n * Find the differences between two texts. Simplifies the problem by stripping\n * any common prefix or suffix off the texts before diffing.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {boolean=} opt_checklines Optional speedup flag. If present and false,\n * then don't run a line-level diff first to identify the changed areas.\n * Defaults to true, which does a faster, slightly less optimal diff.\n * @param {number=} opt_deadline Optional time when the diff should be complete\n * by. Used internally for recursive calls. Users should set DiffTimeout\n * instead.\n * @return {!Array.} Array of diff tuples.\n */\n\n\ndiff_match_patch.prototype.diff_main = function (text1, text2, opt_checklines, opt_deadline) {\n // Set a deadline by which time the diff must be complete.\n if (typeof opt_deadline == 'undefined') {\n if (this.Diff_Timeout <= 0) {\n opt_deadline = Number.MAX_VALUE;\n } else {\n opt_deadline = new Date().getTime() + this.Diff_Timeout * 1000;\n }\n }\n\n var deadline = opt_deadline; // Check for null inputs.\n\n if (text1 == null || text2 == null) {\n throw new Error('Null input. (diff_main)');\n } // Check for equality (speedup).\n\n\n if (text1 == text2) {\n if (text1) {\n return [new diff_match_patch.Diff(DIFF_EQUAL, text1)];\n }\n\n return [];\n }\n\n if (typeof opt_checklines == 'undefined') {\n opt_checklines = true;\n }\n\n var checklines = opt_checklines; // Trim off common prefix (speedup).\n\n var commonlength = this.diff_commonPrefix(text1, text2);\n var commonprefix = text1.substring(0, commonlength);\n text1 = text1.substring(commonlength);\n text2 = text2.substring(commonlength); // Trim off common suffix (speedup).\n\n commonlength = this.diff_commonSuffix(text1, text2);\n var commonsuffix = text1.substring(text1.length - commonlength);\n text1 = text1.substring(0, text1.length - commonlength);\n text2 = text2.substring(0, text2.length - commonlength); // Compute the diff on the middle block.\n\n var diffs = this.diff_compute_(text1, text2, checklines, deadline); // Restore the prefix and suffix.\n\n if (commonprefix) {\n diffs.unshift(new diff_match_patch.Diff(DIFF_EQUAL, commonprefix));\n }\n\n if (commonsuffix) {\n diffs.push(new diff_match_patch.Diff(DIFF_EQUAL, commonsuffix));\n }\n\n this.diff_cleanupMerge(diffs);\n return diffs;\n};\n/**\n * Find the differences between two texts. Assumes that the texts do not\n * have any common prefix or suffix.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {boolean} checklines Speedup flag. If false, then don't run a\n * line-level diff first to identify the changed areas.\n * If true, then run a faster, slightly less optimal diff.\n * @param {number} deadline Time when the diff should be complete by.\n * @return {!Array.} Array of diff tuples.\n * @private\n */\n\n\ndiff_match_patch.prototype.diff_compute_ = function (text1, text2, checklines, deadline) {\n var diffs;\n\n if (!text1) {\n // Just add some text (speedup).\n return [new diff_match_patch.Diff(DIFF_INSERT, text2)];\n }\n\n if (!text2) {\n // Just delete some text (speedup).\n return [new diff_match_patch.Diff(DIFF_DELETE, text1)];\n }\n\n var longtext = text1.length > text2.length ? text1 : text2;\n var shorttext = text1.length > text2.length ? text2 : text1;\n var i = longtext.indexOf(shorttext);\n\n if (i != -1) {\n // Shorter text is inside the longer text (speedup).\n diffs = [new diff_match_patch.Diff(DIFF_INSERT, longtext.substring(0, i)), new diff_match_patch.Diff(DIFF_EQUAL, shorttext), new diff_match_patch.Diff(DIFF_INSERT, longtext.substring(i + shorttext.length))]; // Swap insertions for deletions if diff is reversed.\n\n if (text1.length > text2.length) {\n diffs[0][0] = diffs[2][0] = DIFF_DELETE;\n }\n\n return diffs;\n }\n\n if (shorttext.length == 1) {\n // Single character string.\n // After the previous speedup, the character can't be an equality.\n return [new diff_match_patch.Diff(DIFF_DELETE, text1), new diff_match_patch.Diff(DIFF_INSERT, text2)];\n } // Check to see if the problem can be split in two.\n\n\n var hm = this.diff_halfMatch_(text1, text2);\n\n if (hm) {\n // A half-match was found, sort out the return data.\n var text1_a = hm[0];\n var text1_b = hm[1];\n var text2_a = hm[2];\n var text2_b = hm[3];\n var mid_common = hm[4]; // Send both pairs off for separate processing.\n\n var diffs_a = this.diff_main(text1_a, text2_a, checklines, deadline);\n var diffs_b = this.diff_main(text1_b, text2_b, checklines, deadline); // Merge the results.\n\n return diffs_a.concat([new diff_match_patch.Diff(DIFF_EQUAL, mid_common)], diffs_b);\n }\n\n if (checklines && text1.length > 100 && text2.length > 100) {\n return this.diff_lineMode_(text1, text2, deadline);\n }\n\n return this.diff_bisect_(text1, text2, deadline);\n};\n/**\n * Do a quick line-level diff on both strings, then rediff the parts for\n * greater accuracy.\n * This speedup can produce non-minimal diffs.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {number} deadline Time when the diff should be complete by.\n * @return {!Array.} Array of diff tuples.\n * @private\n */\n\n\ndiff_match_patch.prototype.diff_lineMode_ = function (text1, text2, deadline) {\n // Scan the text on a line-by-line basis first.\n var a = this.diff_linesToChars_(text1, text2);\n text1 = a.chars1;\n text2 = a.chars2;\n var linearray = a.lineArray;\n var diffs = this.diff_main(text1, text2, false, deadline); // Convert the diff back to original text.\n\n this.diff_charsToLines_(diffs, linearray); // Eliminate freak matches (e.g. blank lines)\n\n this.diff_cleanupSemantic(diffs); // Rediff any replacement blocks, this time character-by-character.\n // Add a dummy entry at the end.\n\n diffs.push(new diff_match_patch.Diff(DIFF_EQUAL, ''));\n var pointer = 0;\n var count_delete = 0;\n var count_insert = 0;\n var text_delete = '';\n var text_insert = '';\n\n while (pointer < diffs.length) {\n switch (diffs[pointer][0]) {\n case DIFF_INSERT:\n count_insert++;\n text_insert += diffs[pointer][1];\n break;\n\n case DIFF_DELETE:\n count_delete++;\n text_delete += diffs[pointer][1];\n break;\n\n case DIFF_EQUAL:\n // Upon reaching an equality, check for prior redundancies.\n if (count_delete >= 1 && count_insert >= 1) {\n // Delete the offending records and add the merged ones.\n diffs.splice(pointer - count_delete - count_insert, count_delete + count_insert);\n pointer = pointer - count_delete - count_insert;\n var subDiff = this.diff_main(text_delete, text_insert, false, deadline);\n\n for (var j = subDiff.length - 1; j >= 0; j--) {\n diffs.splice(pointer, 0, subDiff[j]);\n }\n\n pointer = pointer + subDiff.length;\n }\n\n count_insert = 0;\n count_delete = 0;\n text_delete = '';\n text_insert = '';\n break;\n }\n\n pointer++;\n }\n\n diffs.pop(); // Remove the dummy entry at the end.\n\n return diffs;\n};\n/**\n * Find the 'middle snake' of a diff, split the problem in two\n * and return the recursively constructed diff.\n * See Myers 1986 paper: An O(ND) Difference Algorithm and Its Variations.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {number} deadline Time at which to bail if not yet complete.\n * @return {!Array.} Array of diff tuples.\n * @private\n */\n\n\ndiff_match_patch.prototype.diff_bisect_ = function (text1, text2, deadline) {\n // Cache the text lengths to prevent multiple calls.\n var text1_length = text1.length;\n var text2_length = text2.length;\n var max_d = Math.ceil((text1_length + text2_length) / 2);\n var v_offset = max_d;\n var v_length = 2 * max_d;\n var v1 = new Array(v_length);\n var v2 = new Array(v_length); // Setting all elements to -1 is faster in Chrome & Firefox than mixing\n // integers and undefined.\n\n for (var x = 0; x < v_length; x++) {\n v1[x] = -1;\n v2[x] = -1;\n }\n\n v1[v_offset + 1] = 0;\n v2[v_offset + 1] = 0;\n var delta = text1_length - text2_length; // If the total number of characters is odd, then the front path will collide\n // with the reverse path.\n\n var front = delta % 2 != 0; // Offsets for start and end of k loop.\n // Prevents mapping of space beyond the grid.\n\n var k1start = 0;\n var k1end = 0;\n var k2start = 0;\n var k2end = 0;\n\n for (var d = 0; d < max_d; d++) {\n // Bail out if deadline is reached.\n if (new Date().getTime() > deadline) {\n break;\n } // Walk the front path one step.\n\n\n for (var k1 = -d + k1start; k1 <= d - k1end; k1 += 2) {\n var k1_offset = v_offset + k1;\n var x1;\n\n if (k1 == -d || k1 != d && v1[k1_offset - 1] < v1[k1_offset + 1]) {\n x1 = v1[k1_offset + 1];\n } else {\n x1 = v1[k1_offset - 1] + 1;\n }\n\n var y1 = x1 - k1;\n\n while (x1 < text1_length && y1 < text2_length && text1.charAt(x1) == text2.charAt(y1)) {\n x1++;\n y1++;\n }\n\n v1[k1_offset] = x1;\n\n if (x1 > text1_length) {\n // Ran off the right of the graph.\n k1end += 2;\n } else if (y1 > text2_length) {\n // Ran off the bottom of the graph.\n k1start += 2;\n } else if (front) {\n var k2_offset = v_offset + delta - k1;\n\n if (k2_offset >= 0 && k2_offset < v_length && v2[k2_offset] != -1) {\n // Mirror x2 onto top-left coordinate system.\n var x2 = text1_length - v2[k2_offset];\n\n if (x1 >= x2) {\n // Overlap detected.\n return this.diff_bisectSplit_(text1, text2, x1, y1, deadline);\n }\n }\n }\n } // Walk the reverse path one step.\n\n\n for (var k2 = -d + k2start; k2 <= d - k2end; k2 += 2) {\n var k2_offset = v_offset + k2;\n var x2;\n\n if (k2 == -d || k2 != d && v2[k2_offset - 1] < v2[k2_offset + 1]) {\n x2 = v2[k2_offset + 1];\n } else {\n x2 = v2[k2_offset - 1] + 1;\n }\n\n var y2 = x2 - k2;\n\n while (x2 < text1_length && y2 < text2_length && text1.charAt(text1_length - x2 - 1) == text2.charAt(text2_length - y2 - 1)) {\n x2++;\n y2++;\n }\n\n v2[k2_offset] = x2;\n\n if (x2 > text1_length) {\n // Ran off the left of the graph.\n k2end += 2;\n } else if (y2 > text2_length) {\n // Ran off the top of the graph.\n k2start += 2;\n } else if (!front) {\n var k1_offset = v_offset + delta - k2;\n\n if (k1_offset >= 0 && k1_offset < v_length && v1[k1_offset] != -1) {\n var x1 = v1[k1_offset];\n var y1 = v_offset + x1 - k1_offset; // Mirror x2 onto top-left coordinate system.\n\n x2 = text1_length - x2;\n\n if (x1 >= x2) {\n // Overlap detected.\n return this.diff_bisectSplit_(text1, text2, x1, y1, deadline);\n }\n }\n }\n }\n } // Diff took too long and hit the deadline or\n // number of diffs equals number of characters, no commonality at all.\n\n\n return [new diff_match_patch.Diff(DIFF_DELETE, text1), new diff_match_patch.Diff(DIFF_INSERT, text2)];\n};\n/**\n * Given the location of the 'middle snake', split the diff in two parts\n * and recurse.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {number} x Index of split point in text1.\n * @param {number} y Index of split point in text2.\n * @param {number} deadline Time at which to bail if not yet complete.\n * @return {!Array.} Array of diff tuples.\n * @private\n */\n\n\ndiff_match_patch.prototype.diff_bisectSplit_ = function (text1, text2, x, y, deadline) {\n var text1a = text1.substring(0, x);\n var text2a = text2.substring(0, y);\n var text1b = text1.substring(x);\n var text2b = text2.substring(y); // Compute both diffs serially.\n\n var diffs = this.diff_main(text1a, text2a, false, deadline);\n var diffsb = this.diff_main(text1b, text2b, false, deadline);\n return diffs.concat(diffsb);\n};\n/**\n * Split two texts into an array of strings. Reduce the texts to a string of\n * hashes where each Unicode character represents one line.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {{chars1: string, chars2: string, lineArray: !Array.}}\n * An object containing the encoded text1, the encoded text2 and\n * the array of unique strings.\n * The zeroth element of the array of unique strings is intentionally blank.\n * @private\n */\n\n\ndiff_match_patch.prototype.diff_linesToChars_ = function (text1, text2) {\n var lineArray = []; // e.g. lineArray[4] == 'Hello\\n'\n\n var lineHash = {}; // e.g. lineHash['Hello\\n'] == 4\n // '\\x00' is a valid character, but various debuggers don't like it.\n // So we'll insert a junk entry to avoid generating a null character.\n\n lineArray[0] = '';\n /**\n * Split a text into an array of strings. Reduce the texts to a string of\n * hashes where each Unicode character represents one line.\n * Modifies linearray and linehash through being a closure.\n * @param {string} text String to encode.\n * @return {string} Encoded string.\n * @private\n */\n\n function diff_linesToCharsMunge_(text) {\n var chars = ''; // Walk the text, pulling out a substring for each line.\n // text.split('\\n') would would temporarily double our memory footprint.\n // Modifying text would create many large strings to garbage collect.\n\n var lineStart = 0;\n var lineEnd = -1; // Keeping our own length variable is faster than looking it up.\n\n var lineArrayLength = lineArray.length;\n\n while (lineEnd < text.length - 1) {\n lineEnd = text.indexOf('\\n', lineStart);\n\n if (lineEnd == -1) {\n lineEnd = text.length - 1;\n }\n\n var line = text.substring(lineStart, lineEnd + 1);\n\n if (lineHash.hasOwnProperty ? lineHash.hasOwnProperty(line) : lineHash[line] !== undefined) {\n chars += String.fromCharCode(lineHash[line]);\n } else {\n if (lineArrayLength == maxLines) {\n // Bail out at 65535 because\n // String.fromCharCode(65536) == String.fromCharCode(0)\n line = text.substring(lineStart);\n lineEnd = text.length;\n }\n\n chars += String.fromCharCode(lineArrayLength);\n lineHash[line] = lineArrayLength;\n lineArray[lineArrayLength++] = line;\n }\n\n lineStart = lineEnd + 1;\n }\n\n return chars;\n } // Allocate 2/3rds of the space for text1, the rest for text2.\n\n\n var maxLines = 40000;\n var chars1 = diff_linesToCharsMunge_(text1);\n maxLines = 65535;\n var chars2 = diff_linesToCharsMunge_(text2);\n return {\n chars1: chars1,\n chars2: chars2,\n lineArray: lineArray\n };\n};\n/**\n * Rehydrate the text in a diff from a string of line hashes to real lines of\n * text.\n * @param {!Array.} diffs Array of diff tuples.\n * @param {!Array.} lineArray Array of unique strings.\n * @private\n */\n\n\ndiff_match_patch.prototype.diff_charsToLines_ = function (diffs, lineArray) {\n for (var i = 0; i < diffs.length; i++) {\n var chars = diffs[i][1];\n var text = [];\n\n for (var j = 0; j < chars.length; j++) {\n text[j] = lineArray[chars.charCodeAt(j)];\n }\n\n diffs[i][1] = text.join('');\n }\n};\n/**\n * Determine the common prefix of two strings.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the start of each\n * string.\n */\n\n\ndiff_match_patch.prototype.diff_commonPrefix = function (text1, text2) {\n // Quick check for common null cases.\n if (!text1 || !text2 || text1.charAt(0) != text2.charAt(0)) {\n return 0;\n } // Binary search.\n // Performance analysis: https://neil.fraser.name/news/2007/10/09/\n\n\n var pointermin = 0;\n var pointermax = Math.min(text1.length, text2.length);\n var pointermid = pointermax;\n var pointerstart = 0;\n\n while (pointermin < pointermid) {\n if (text1.substring(pointerstart, pointermid) == text2.substring(pointerstart, pointermid)) {\n pointermin = pointermid;\n pointerstart = pointermin;\n } else {\n pointermax = pointermid;\n }\n\n pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n }\n\n return pointermid;\n};\n/**\n * Determine the common suffix of two strings.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the end of each string.\n */\n\n\ndiff_match_patch.prototype.diff_commonSuffix = function (text1, text2) {\n // Quick check for common null cases.\n if (!text1 || !text2 || text1.charAt(text1.length - 1) != text2.charAt(text2.length - 1)) {\n return 0;\n } // Binary search.\n // Performance analysis: https://neil.fraser.name/news/2007/10/09/\n\n\n var pointermin = 0;\n var pointermax = Math.min(text1.length, text2.length);\n var pointermid = pointermax;\n var pointerend = 0;\n\n while (pointermin < pointermid) {\n if (text1.substring(text1.length - pointermid, text1.length - pointerend) == text2.substring(text2.length - pointermid, text2.length - pointerend)) {\n pointermin = pointermid;\n pointerend = pointermin;\n } else {\n pointermax = pointermid;\n }\n\n pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n }\n\n return pointermid;\n};\n/**\n * Determine if the suffix of one string is the prefix of another.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the end of the first\n * string and the start of the second string.\n * @private\n */\n\n\ndiff_match_patch.prototype.diff_commonOverlap_ = function (text1, text2) {\n // Cache the text lengths to prevent multiple calls.\n var text1_length = text1.length;\n var text2_length = text2.length; // Eliminate the null case.\n\n if (text1_length == 0 || text2_length == 0) {\n return 0;\n } // Truncate the longer string.\n\n\n if (text1_length > text2_length) {\n text1 = text1.substring(text1_length - text2_length);\n } else if (text1_length < text2_length) {\n text2 = text2.substring(0, text1_length);\n }\n\n var text_length = Math.min(text1_length, text2_length); // Quick check for the worst case.\n\n if (text1 == text2) {\n return text_length;\n } // Start by looking for a single character match\n // and increase length until no match is found.\n // Performance analysis: https://neil.fraser.name/news/2010/11/04/\n\n\n var best = 0;\n var length = 1;\n\n while (true) {\n var pattern = text1.substring(text_length - length);\n var found = text2.indexOf(pattern);\n\n if (found == -1) {\n return best;\n }\n\n length += found;\n\n if (found == 0 || text1.substring(text_length - length) == text2.substring(0, length)) {\n best = length;\n length++;\n }\n }\n};\n/**\n * Do the two texts share a substring which is at least half the length of the\n * longer text?\n * This speedup can produce non-minimal diffs.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {Array.} Five element Array, containing the prefix of\n * text1, the suffix of text1, the prefix of text2, the suffix of\n * text2 and the common middle. Or null if there was no match.\n * @private\n */\n\n\ndiff_match_patch.prototype.diff_halfMatch_ = function (text1, text2) {\n if (this.Diff_Timeout <= 0) {\n // Don't risk returning a non-optimal diff if we have unlimited time.\n return null;\n }\n\n var longtext = text1.length > text2.length ? text1 : text2;\n var shorttext = text1.length > text2.length ? text2 : text1;\n\n if (longtext.length < 4 || shorttext.length * 2 < longtext.length) {\n return null; // Pointless.\n }\n\n var dmp = this; // 'this' becomes 'window' in a closure.\n\n /**\n * Does a substring of shorttext exist within longtext such that the substring\n * is at least half the length of longtext?\n * Closure, but does not reference any external variables.\n * @param {string} longtext Longer string.\n * @param {string} shorttext Shorter string.\n * @param {number} i Start index of quarter length substring within longtext.\n * @return {Array.} Five element Array, containing the prefix of\n * longtext, the suffix of longtext, the prefix of shorttext, the suffix\n * of shorttext and the common middle. Or null if there was no match.\n * @private\n */\n\n function diff_halfMatchI_(longtext, shorttext, i) {\n // Start with a 1/4 length substring at position i as a seed.\n var seed = longtext.substring(i, i + Math.floor(longtext.length / 4));\n var j = -1;\n var best_common = '';\n var best_longtext_a, best_longtext_b, best_shorttext_a, best_shorttext_b;\n\n while ((j = shorttext.indexOf(seed, j + 1)) != -1) {\n var prefixLength = dmp.diff_commonPrefix(longtext.substring(i), shorttext.substring(j));\n var suffixLength = dmp.diff_commonSuffix(longtext.substring(0, i), shorttext.substring(0, j));\n\n if (best_common.length < suffixLength + prefixLength) {\n best_common = shorttext.substring(j - suffixLength, j) + shorttext.substring(j, j + prefixLength);\n best_longtext_a = longtext.substring(0, i - suffixLength);\n best_longtext_b = longtext.substring(i + prefixLength);\n best_shorttext_a = shorttext.substring(0, j - suffixLength);\n best_shorttext_b = shorttext.substring(j + prefixLength);\n }\n }\n\n if (best_common.length * 2 >= longtext.length) {\n return [best_longtext_a, best_longtext_b, best_shorttext_a, best_shorttext_b, best_common];\n } else {\n return null;\n }\n } // First check if the second quarter is the seed for a half-match.\n\n\n var hm1 = diff_halfMatchI_(longtext, shorttext, Math.ceil(longtext.length / 4)); // Check again based on the third quarter.\n\n var hm2 = diff_halfMatchI_(longtext, shorttext, Math.ceil(longtext.length / 2));\n var hm;\n\n if (!hm1 && !hm2) {\n return null;\n } else if (!hm2) {\n hm = hm1;\n } else if (!hm1) {\n hm = hm2;\n } else {\n // Both matched. Select the longest.\n hm = hm1[4].length > hm2[4].length ? hm1 : hm2;\n } // A half-match was found, sort out the return data.\n\n\n var text1_a, text1_b, text2_a, text2_b;\n\n if (text1.length > text2.length) {\n text1_a = hm[0];\n text1_b = hm[1];\n text2_a = hm[2];\n text2_b = hm[3];\n } else {\n text2_a = hm[0];\n text2_b = hm[1];\n text1_a = hm[2];\n text1_b = hm[3];\n }\n\n var mid_common = hm[4];\n return [text1_a, text1_b, text2_a, text2_b, mid_common];\n};\n/**\n * Reduce the number of edits by eliminating semantically trivial equalities.\n * @param {!Array.} diffs Array of diff tuples.\n */\n\n\ndiff_match_patch.prototype.diff_cleanupSemantic = function (diffs) {\n var changes = false;\n var equalities = []; // Stack of indices where equalities are found.\n\n var equalitiesLength = 0; // Keeping our own length var is faster in JS.\n\n /** @type {?string} */\n\n var lastEquality = null; // Always equal to diffs[equalities[equalitiesLength - 1]][1]\n\n var pointer = 0; // Index of current position.\n // Number of characters that changed prior to the equality.\n\n var length_insertions1 = 0;\n var length_deletions1 = 0; // Number of characters that changed after the equality.\n\n var length_insertions2 = 0;\n var length_deletions2 = 0;\n\n while (pointer < diffs.length) {\n if (diffs[pointer][0] == DIFF_EQUAL) {\n // Equality found.\n equalities[equalitiesLength++] = pointer;\n length_insertions1 = length_insertions2;\n length_deletions1 = length_deletions2;\n length_insertions2 = 0;\n length_deletions2 = 0;\n lastEquality = diffs[pointer][1];\n } else {\n // An insertion or deletion.\n if (diffs[pointer][0] == DIFF_INSERT) {\n length_insertions2 += diffs[pointer][1].length;\n } else {\n length_deletions2 += diffs[pointer][1].length;\n } // Eliminate an equality that is smaller or equal to the edits on both\n // sides of it.\n\n\n if (lastEquality && lastEquality.length <= Math.max(length_insertions1, length_deletions1) && lastEquality.length <= Math.max(length_insertions2, length_deletions2)) {\n // Duplicate record.\n diffs.splice(equalities[equalitiesLength - 1], 0, new diff_match_patch.Diff(DIFF_DELETE, lastEquality)); // Change second copy to insert.\n\n diffs[equalities[equalitiesLength - 1] + 1][0] = DIFF_INSERT; // Throw away the equality we just deleted.\n\n equalitiesLength--; // Throw away the previous equality (it needs to be reevaluated).\n\n equalitiesLength--;\n pointer = equalitiesLength > 0 ? equalities[equalitiesLength - 1] : -1;\n length_insertions1 = 0; // Reset the counters.\n\n length_deletions1 = 0;\n length_insertions2 = 0;\n length_deletions2 = 0;\n lastEquality = null;\n changes = true;\n }\n }\n\n pointer++;\n } // Normalize the diff.\n\n\n if (changes) {\n this.diff_cleanupMerge(diffs);\n }\n\n this.diff_cleanupSemanticLossless(diffs); // Find any overlaps between deletions and insertions.\n // e.g: abcxxxxxxdef\n // -> abcxxxdef\n // e.g: xxxabcdefxxx\n // -> defxxxabc\n // Only extract an overlap if it is as big as the edit ahead or behind it.\n\n pointer = 1;\n\n while (pointer < diffs.length) {\n if (diffs[pointer - 1][0] == DIFF_DELETE && diffs[pointer][0] == DIFF_INSERT) {\n var deletion = diffs[pointer - 1][1];\n var insertion = diffs[pointer][1];\n var overlap_length1 = this.diff_commonOverlap_(deletion, insertion);\n var overlap_length2 = this.diff_commonOverlap_(insertion, deletion);\n\n if (overlap_length1 >= overlap_length2) {\n if (overlap_length1 >= deletion.length / 2 || overlap_length1 >= insertion.length / 2) {\n // Overlap found. Insert an equality and trim the surrounding edits.\n diffs.splice(pointer, 0, new diff_match_patch.Diff(DIFF_EQUAL, insertion.substring(0, overlap_length1)));\n diffs[pointer - 1][1] = deletion.substring(0, deletion.length - overlap_length1);\n diffs[pointer + 1][1] = insertion.substring(overlap_length1);\n pointer++;\n }\n } else {\n if (overlap_length2 >= deletion.length / 2 || overlap_length2 >= insertion.length / 2) {\n // Reverse overlap found.\n // Insert an equality and swap and trim the surrounding edits.\n diffs.splice(pointer, 0, new diff_match_patch.Diff(DIFF_EQUAL, deletion.substring(0, overlap_length2)));\n diffs[pointer - 1][0] = DIFF_INSERT;\n diffs[pointer - 1][1] = insertion.substring(0, insertion.length - overlap_length2);\n diffs[pointer + 1][0] = DIFF_DELETE;\n diffs[pointer + 1][1] = deletion.substring(overlap_length2);\n pointer++;\n }\n }\n\n pointer++;\n }\n\n pointer++;\n }\n};\n/**\n * Look for single edits surrounded on both sides by equalities\n * which can be shifted sideways to align the edit to a word boundary.\n * e.g: The cat came. -> The cat came.\n * @param {!Array.} diffs Array of diff tuples.\n */\n\n\ndiff_match_patch.prototype.diff_cleanupSemanticLossless = function (diffs) {\n /**\n * Given two strings, compute a score representing whether the internal\n * boundary falls on logical boundaries.\n * Scores range from 6 (best) to 0 (worst).\n * Closure, but does not reference any external variables.\n * @param {string} one First string.\n * @param {string} two Second string.\n * @return {number} The score.\n * @private\n */\n function diff_cleanupSemanticScore_(one, two) {\n if (!one || !two) {\n // Edges are the best.\n return 6;\n } // Each port of this function behaves slightly differently due to\n // subtle differences in each language's definition of things like\n // 'whitespace'. Since this function's purpose is largely cosmetic,\n // the choice has been made to use each language's native features\n // rather than force total conformity.\n\n\n var char1 = one.charAt(one.length - 1);\n var char2 = two.charAt(0);\n var nonAlphaNumeric1 = char1.match(diff_match_patch.nonAlphaNumericRegex_);\n var nonAlphaNumeric2 = char2.match(diff_match_patch.nonAlphaNumericRegex_);\n var whitespace1 = nonAlphaNumeric1 && char1.match(diff_match_patch.whitespaceRegex_);\n var whitespace2 = nonAlphaNumeric2 && char2.match(diff_match_patch.whitespaceRegex_);\n var lineBreak1 = whitespace1 && char1.match(diff_match_patch.linebreakRegex_);\n var lineBreak2 = whitespace2 && char2.match(diff_match_patch.linebreakRegex_);\n var blankLine1 = lineBreak1 && one.match(diff_match_patch.blanklineEndRegex_);\n var blankLine2 = lineBreak2 && two.match(diff_match_patch.blanklineStartRegex_);\n\n if (blankLine1 || blankLine2) {\n // Five points for blank lines.\n return 5;\n } else if (lineBreak1 || lineBreak2) {\n // Four points for line breaks.\n return 4;\n } else if (nonAlphaNumeric1 && !whitespace1 && whitespace2) {\n // Three points for end of sentences.\n return 3;\n } else if (whitespace1 || whitespace2) {\n // Two points for whitespace.\n return 2;\n } else if (nonAlphaNumeric1 || nonAlphaNumeric2) {\n // One point for non-alphanumeric.\n return 1;\n }\n\n return 0;\n }\n\n var pointer = 1; // Intentionally ignore the first and last element (don't need checking).\n\n while (pointer < diffs.length - 1) {\n if (diffs[pointer - 1][0] == DIFF_EQUAL && diffs[pointer + 1][0] == DIFF_EQUAL) {\n // This is a single edit surrounded by equalities.\n var equality1 = diffs[pointer - 1][1];\n var edit = diffs[pointer][1];\n var equality2 = diffs[pointer + 1][1]; // First, shift the edit as far left as possible.\n\n var commonOffset = this.diff_commonSuffix(equality1, edit);\n\n if (commonOffset) {\n var commonString = edit.substring(edit.length - commonOffset);\n equality1 = equality1.substring(0, equality1.length - commonOffset);\n edit = commonString + edit.substring(0, edit.length - commonOffset);\n equality2 = commonString + equality2;\n } // Second, step character by character right, looking for the best fit.\n\n\n var bestEquality1 = equality1;\n var bestEdit = edit;\n var bestEquality2 = equality2;\n var bestScore = diff_cleanupSemanticScore_(equality1, edit) + diff_cleanupSemanticScore_(edit, equality2);\n\n while (edit.charAt(0) === equality2.charAt(0)) {\n equality1 += edit.charAt(0);\n edit = edit.substring(1) + equality2.charAt(0);\n equality2 = equality2.substring(1);\n var score = diff_cleanupSemanticScore_(equality1, edit) + diff_cleanupSemanticScore_(edit, equality2); // The >= encourages trailing rather than leading whitespace on edits.\n\n if (score >= bestScore) {\n bestScore = score;\n bestEquality1 = equality1;\n bestEdit = edit;\n bestEquality2 = equality2;\n }\n }\n\n if (diffs[pointer - 1][1] != bestEquality1) {\n // We have an improvement, save it back to the diff.\n if (bestEquality1) {\n diffs[pointer - 1][1] = bestEquality1;\n } else {\n diffs.splice(pointer - 1, 1);\n pointer--;\n }\n\n diffs[pointer][1] = bestEdit;\n\n if (bestEquality2) {\n diffs[pointer + 1][1] = bestEquality2;\n } else {\n diffs.splice(pointer + 1, 1);\n pointer--;\n }\n }\n }\n\n pointer++;\n }\n}; // Define some regex patterns for matching boundaries.\n\n\ndiff_match_patch.nonAlphaNumericRegex_ = /[^a-zA-Z0-9]/;\ndiff_match_patch.whitespaceRegex_ = /\\s/;\ndiff_match_patch.linebreakRegex_ = /[\\r\\n]/;\ndiff_match_patch.blanklineEndRegex_ = /\\n\\r?\\n$/;\ndiff_match_patch.blanklineStartRegex_ = /^\\r?\\n\\r?\\n/;\n/**\n * Reduce the number of edits by eliminating operationally trivial equalities.\n * @param {!Array.} diffs Array of diff tuples.\n */\n\ndiff_match_patch.prototype.diff_cleanupEfficiency = function (diffs) {\n var changes = false;\n var equalities = []; // Stack of indices where equalities are found.\n\n var equalitiesLength = 0; // Keeping our own length var is faster in JS.\n\n /** @type {?string} */\n\n var lastEquality = null; // Always equal to diffs[equalities[equalitiesLength - 1]][1]\n\n var pointer = 0; // Index of current position.\n // Is there an insertion operation before the last equality.\n\n var pre_ins = false; // Is there a deletion operation before the last equality.\n\n var pre_del = false; // Is there an insertion operation after the last equality.\n\n var post_ins = false; // Is there a deletion operation after the last equality.\n\n var post_del = false;\n\n while (pointer < diffs.length) {\n if (diffs[pointer][0] == DIFF_EQUAL) {\n // Equality found.\n if (diffs[pointer][1].length < this.Diff_EditCost && (post_ins || post_del)) {\n // Candidate found.\n equalities[equalitiesLength++] = pointer;\n pre_ins = post_ins;\n pre_del = post_del;\n lastEquality = diffs[pointer][1];\n } else {\n // Not a candidate, and can never become one.\n equalitiesLength = 0;\n lastEquality = null;\n }\n\n post_ins = post_del = false;\n } else {\n // An insertion or deletion.\n if (diffs[pointer][0] == DIFF_DELETE) {\n post_del = true;\n } else {\n post_ins = true;\n }\n /*\n * Five types to be split:\n * ABXYCD\n * AXCD\n * ABXC\n * AXCD\n * ABXC\n */\n\n\n if (lastEquality && (pre_ins && pre_del && post_ins && post_del || lastEquality.length < this.Diff_EditCost / 2 && pre_ins + pre_del + post_ins + post_del == 3)) {\n // Duplicate record.\n diffs.splice(equalities[equalitiesLength - 1], 0, new diff_match_patch.Diff(DIFF_DELETE, lastEquality)); // Change second copy to insert.\n\n diffs[equalities[equalitiesLength - 1] + 1][0] = DIFF_INSERT;\n equalitiesLength--; // Throw away the equality we just deleted;\n\n lastEquality = null;\n\n if (pre_ins && pre_del) {\n // No changes made which could affect previous entry, keep going.\n post_ins = post_del = true;\n equalitiesLength = 0;\n } else {\n equalitiesLength--; // Throw away the previous equality.\n\n pointer = equalitiesLength > 0 ? equalities[equalitiesLength - 1] : -1;\n post_ins = post_del = false;\n }\n\n changes = true;\n }\n }\n\n pointer++;\n }\n\n if (changes) {\n this.diff_cleanupMerge(diffs);\n }\n};\n/**\n * Reorder and merge like edit sections. Merge equalities.\n * Any edit section can move as long as it doesn't cross an equality.\n * @param {!Array.} diffs Array of diff tuples.\n */\n\n\ndiff_match_patch.prototype.diff_cleanupMerge = function (diffs) {\n // Add a dummy entry at the end.\n diffs.push(new diff_match_patch.Diff(DIFF_EQUAL, ''));\n var pointer = 0;\n var count_delete = 0;\n var count_insert = 0;\n var text_delete = '';\n var text_insert = '';\n var commonlength;\n\n while (pointer < diffs.length) {\n switch (diffs[pointer][0]) {\n case DIFF_INSERT:\n count_insert++;\n text_insert += diffs[pointer][1];\n pointer++;\n break;\n\n case DIFF_DELETE:\n count_delete++;\n text_delete += diffs[pointer][1];\n pointer++;\n break;\n\n case DIFF_EQUAL:\n // Upon reaching an equality, check for prior redundancies.\n if (count_delete + count_insert > 1) {\n if (count_delete !== 0 && count_insert !== 0) {\n // Factor out any common prefixies.\n commonlength = this.diff_commonPrefix(text_insert, text_delete);\n\n if (commonlength !== 0) {\n if (pointer - count_delete - count_insert > 0 && diffs[pointer - count_delete - count_insert - 1][0] == DIFF_EQUAL) {\n diffs[pointer - count_delete - count_insert - 1][1] += text_insert.substring(0, commonlength);\n } else {\n diffs.splice(0, 0, new diff_match_patch.Diff(DIFF_EQUAL, text_insert.substring(0, commonlength)));\n pointer++;\n }\n\n text_insert = text_insert.substring(commonlength);\n text_delete = text_delete.substring(commonlength);\n } // Factor out any common suffixies.\n\n\n commonlength = this.diff_commonSuffix(text_insert, text_delete);\n\n if (commonlength !== 0) {\n diffs[pointer][1] = text_insert.substring(text_insert.length - commonlength) + diffs[pointer][1];\n text_insert = text_insert.substring(0, text_insert.length - commonlength);\n text_delete = text_delete.substring(0, text_delete.length - commonlength);\n }\n } // Delete the offending records and add the merged ones.\n\n\n pointer -= count_delete + count_insert;\n diffs.splice(pointer, count_delete + count_insert);\n\n if (text_delete.length) {\n diffs.splice(pointer, 0, new diff_match_patch.Diff(DIFF_DELETE, text_delete));\n pointer++;\n }\n\n if (text_insert.length) {\n diffs.splice(pointer, 0, new diff_match_patch.Diff(DIFF_INSERT, text_insert));\n pointer++;\n }\n\n pointer++;\n } else if (pointer !== 0 && diffs[pointer - 1][0] == DIFF_EQUAL) {\n // Merge this equality with the previous one.\n diffs[pointer - 1][1] += diffs[pointer][1];\n diffs.splice(pointer, 1);\n } else {\n pointer++;\n }\n\n count_insert = 0;\n count_delete = 0;\n text_delete = '';\n text_insert = '';\n break;\n }\n }\n\n if (diffs[diffs.length - 1][1] === '') {\n diffs.pop(); // Remove the dummy entry at the end.\n } // Second pass: look for single edits surrounded on both sides by equalities\n // which can be shifted sideways to eliminate an equality.\n // e.g: ABAC -> ABAC\n\n\n var changes = false;\n pointer = 1; // Intentionally ignore the first and last element (don't need checking).\n\n while (pointer < diffs.length - 1) {\n if (diffs[pointer - 1][0] == DIFF_EQUAL && diffs[pointer + 1][0] == DIFF_EQUAL) {\n // This is a single edit surrounded by equalities.\n if (diffs[pointer][1].substring(diffs[pointer][1].length - diffs[pointer - 1][1].length) == diffs[pointer - 1][1]) {\n // Shift the edit over the previous equality.\n diffs[pointer][1] = diffs[pointer - 1][1] + diffs[pointer][1].substring(0, diffs[pointer][1].length - diffs[pointer - 1][1].length);\n diffs[pointer + 1][1] = diffs[pointer - 1][1] + diffs[pointer + 1][1];\n diffs.splice(pointer - 1, 1);\n changes = true;\n } else if (diffs[pointer][1].substring(0, diffs[pointer + 1][1].length) == diffs[pointer + 1][1]) {\n // Shift the edit over the next equality.\n diffs[pointer - 1][1] += diffs[pointer + 1][1];\n diffs[pointer][1] = diffs[pointer][1].substring(diffs[pointer + 1][1].length) + diffs[pointer + 1][1];\n diffs.splice(pointer + 1, 1);\n changes = true;\n }\n }\n\n pointer++;\n } // If shifts were made, the diff needs reordering and another shift sweep.\n\n\n if (changes) {\n this.diff_cleanupMerge(diffs);\n }\n};\n/**\n * loc is a location in text1, compute and return the equivalent location in\n * text2.\n * e.g. 'The cat' vs 'The big cat', 1->1, 5->8\n * @param {!Array.} diffs Array of diff tuples.\n * @param {number} loc Location within text1.\n * @return {number} Location within text2.\n */\n\n\ndiff_match_patch.prototype.diff_xIndex = function (diffs, loc) {\n var chars1 = 0;\n var chars2 = 0;\n var last_chars1 = 0;\n var last_chars2 = 0;\n var x;\n\n for (x = 0; x < diffs.length; x++) {\n if (diffs[x][0] !== DIFF_INSERT) {\n // Equality or deletion.\n chars1 += diffs[x][1].length;\n }\n\n if (diffs[x][0] !== DIFF_DELETE) {\n // Equality or insertion.\n chars2 += diffs[x][1].length;\n }\n\n if (chars1 > loc) {\n // Overshot the location.\n break;\n }\n\n last_chars1 = chars1;\n last_chars2 = chars2;\n } // Was the location was deleted?\n\n\n if (diffs.length != x && diffs[x][0] === DIFF_DELETE) {\n return last_chars2;\n } // Add the remaining character length.\n\n\n return last_chars2 + (loc - last_chars1);\n};\n/**\n * Convert a diff array into a pretty HTML report.\n * @param {!Array.} diffs Array of diff tuples.\n * @return {string} HTML representation.\n */\n\n\ndiff_match_patch.prototype.diff_prettyHtml = function (diffs) {\n var html = [];\n var pattern_amp = /&/g;\n var pattern_lt = //g;\n var pattern_para = /\\n/g;\n\n for (var x = 0; x < diffs.length; x++) {\n var op = diffs[x][0]; // Operation (insert, delete, equal)\n\n var data = diffs[x][1]; // Text of change.\n\n var text = data.replace(pattern_amp, '&').replace(pattern_lt, '<').replace(pattern_gt, '>').replace(pattern_para, '¶
');\n\n switch (op) {\n case DIFF_INSERT:\n html[x] = '' + text + '';\n break;\n\n case DIFF_DELETE:\n html[x] = '' + text + '';\n break;\n\n case DIFF_EQUAL:\n html[x] = '' + text + '';\n break;\n }\n }\n\n return html.join('');\n};\n/**\n * Compute and return the source text (all equalities and deletions).\n * @param {!Array.} diffs Array of diff tuples.\n * @return {string} Source text.\n */\n\n\ndiff_match_patch.prototype.diff_text1 = function (diffs) {\n var text = [];\n\n for (var x = 0; x < diffs.length; x++) {\n if (diffs[x][0] !== DIFF_INSERT) {\n text[x] = diffs[x][1];\n }\n }\n\n return text.join('');\n};\n/**\n * Compute and return the destination text (all equalities and insertions).\n * @param {!Array.} diffs Array of diff tuples.\n * @return {string} Destination text.\n */\n\n\ndiff_match_patch.prototype.diff_text2 = function (diffs) {\n var text = [];\n\n for (var x = 0; x < diffs.length; x++) {\n if (diffs[x][0] !== DIFF_DELETE) {\n text[x] = diffs[x][1];\n }\n }\n\n return text.join('');\n};\n/**\n * Compute the Levenshtein distance; the number of inserted, deleted or\n * substituted characters.\n * @param {!Array.} diffs Array of diff tuples.\n * @return {number} Number of changes.\n */\n\n\ndiff_match_patch.prototype.diff_levenshtein = function (diffs) {\n var levenshtein = 0;\n var insertions = 0;\n var deletions = 0;\n\n for (var x = 0; x < diffs.length; x++) {\n var op = diffs[x][0];\n var data = diffs[x][1];\n\n switch (op) {\n case DIFF_INSERT:\n insertions += data.length;\n break;\n\n case DIFF_DELETE:\n deletions += data.length;\n break;\n\n case DIFF_EQUAL:\n // A deletion and an insertion is one substitution.\n levenshtein += Math.max(insertions, deletions);\n insertions = 0;\n deletions = 0;\n break;\n }\n }\n\n levenshtein += Math.max(insertions, deletions);\n return levenshtein;\n};\n/**\n * Crush the diff into an encoded string which describes the operations\n * required to transform text1 into text2.\n * E.g. =3\\t-2\\t+ing -> Keep 3 chars, delete 2 chars, insert 'ing'.\n * Operations are tab-separated. Inserted text is escaped using %xx notation.\n * @param {!Array.} diffs Array of diff tuples.\n * @return {string} Delta text.\n */\n\n\ndiff_match_patch.prototype.diff_toDelta = function (diffs) {\n var text = [];\n\n for (var x = 0; x < diffs.length; x++) {\n switch (diffs[x][0]) {\n case DIFF_INSERT:\n text[x] = '+' + encodeURI(diffs[x][1]);\n break;\n\n case DIFF_DELETE:\n text[x] = '-' + diffs[x][1].length;\n break;\n\n case DIFF_EQUAL:\n text[x] = '=' + diffs[x][1].length;\n break;\n }\n }\n\n return text.join('\\t').replace(/%20/g, ' ');\n};\n/**\n * Given the original text1, and an encoded string which describes the\n * operations required to transform text1 into text2, compute the full diff.\n * @param {string} text1 Source string for the diff.\n * @param {string} delta Delta text.\n * @return {!Array.} Array of diff tuples.\n * @throws {!Error} If invalid input.\n */\n\n\ndiff_match_patch.prototype.diff_fromDelta = function (text1, delta) {\n var diffs = [];\n var diffsLength = 0; // Keeping our own length var is faster in JS.\n\n var pointer = 0; // Cursor in text1\n\n var tokens = delta.split(/\\t/g);\n\n for (var x = 0; x < tokens.length; x++) {\n // Each token begins with a one character parameter which specifies the\n // operation of this token (delete, insert, equality).\n var param = tokens[x].substring(1);\n\n switch (tokens[x].charAt(0)) {\n case '+':\n try {\n diffs[diffsLength++] = new diff_match_patch.Diff(DIFF_INSERT, decodeURI(param));\n } catch (ex) {\n // Malformed URI sequence.\n throw new Error('Illegal escape in diff_fromDelta: ' + param);\n }\n\n break;\n\n case '-': // Fall through.\n\n case '=':\n var n = parseInt(param, 10);\n\n if (isNaN(n) || n < 0) {\n throw new Error('Invalid number in diff_fromDelta: ' + param);\n }\n\n var text = text1.substring(pointer, pointer += n);\n\n if (tokens[x].charAt(0) == '=') {\n diffs[diffsLength++] = new diff_match_patch.Diff(DIFF_EQUAL, text);\n } else {\n diffs[diffsLength++] = new diff_match_patch.Diff(DIFF_DELETE, text);\n }\n\n break;\n\n default:\n // Blank tokens are ok (from a trailing \\t).\n // Anything else is an error.\n if (tokens[x]) {\n throw new Error('Invalid diff operation in diff_fromDelta: ' + tokens[x]);\n }\n\n }\n }\n\n if (pointer != text1.length) {\n throw new Error('Delta length (' + pointer + ') does not equal source text length (' + text1.length + ').');\n }\n\n return diffs;\n}; // MATCH FUNCTIONS\n\n/**\n * Locate the best instance of 'pattern' in 'text' near 'loc'.\n * @param {string} text The text to search.\n * @param {string} pattern The pattern to search for.\n * @param {number} loc The location to search around.\n * @return {number} Best match index or -1.\n */\n\n\ndiff_match_patch.prototype.match_main = function (text, pattern, loc) {\n // Check for null inputs.\n if (text == null || pattern == null || loc == null) {\n throw new Error('Null input. (match_main)');\n }\n\n loc = Math.max(0, Math.min(loc, text.length));\n\n if (text == pattern) {\n // Shortcut (potentially not guaranteed by the algorithm)\n return 0;\n } else if (!text.length) {\n // Nothing to match.\n return -1;\n } else if (text.substring(loc, loc + pattern.length) == pattern) {\n // Perfect match at the perfect spot! (Includes case of null pattern)\n return loc;\n } else {\n // Do a fuzzy compare.\n return this.match_bitap_(text, pattern, loc);\n }\n};\n/**\n * Locate the best instance of 'pattern' in 'text' near 'loc' using the\n * Bitap algorithm.\n * @param {string} text The text to search.\n * @param {string} pattern The pattern to search for.\n * @param {number} loc The location to search around.\n * @return {number} Best match index or -1.\n * @private\n */\n\n\ndiff_match_patch.prototype.match_bitap_ = function (text, pattern, loc) {\n if (pattern.length > this.Match_MaxBits) {\n throw new Error('Pattern too long for this browser.');\n } // Initialise the alphabet.\n\n\n var s = this.match_alphabet_(pattern);\n var dmp = this; // 'this' becomes 'window' in a closure.\n\n /**\n * Compute and return the score for a match with e errors and x location.\n * Accesses loc and pattern through being a closure.\n * @param {number} e Number of errors in match.\n * @param {number} x Location of match.\n * @return {number} Overall score for match (0.0 = good, 1.0 = bad).\n * @private\n */\n\n function match_bitapScore_(e, x) {\n var accuracy = e / pattern.length;\n var proximity = Math.abs(loc - x);\n\n if (!dmp.Match_Distance) {\n // Dodge divide by zero error.\n return proximity ? 1.0 : accuracy;\n }\n\n return accuracy + proximity / dmp.Match_Distance;\n } // Highest score beyond which we give up.\n\n\n var score_threshold = this.Match_Threshold; // Is there a nearby exact match? (speedup)\n\n var best_loc = text.indexOf(pattern, loc);\n\n if (best_loc != -1) {\n score_threshold = Math.min(match_bitapScore_(0, best_loc), score_threshold); // What about in the other direction? (speedup)\n\n best_loc = text.lastIndexOf(pattern, loc + pattern.length);\n\n if (best_loc != -1) {\n score_threshold = Math.min(match_bitapScore_(0, best_loc), score_threshold);\n }\n } // Initialise the bit arrays.\n\n\n var matchmask = 1 << pattern.length - 1;\n best_loc = -1;\n var bin_min, bin_mid;\n var bin_max = pattern.length + text.length;\n var last_rd;\n\n for (var d = 0; d < pattern.length; d++) {\n // Scan for the best match; each iteration allows for one more error.\n // Run a binary search to determine how far from 'loc' we can stray at this\n // error level.\n bin_min = 0;\n bin_mid = bin_max;\n\n while (bin_min < bin_mid) {\n if (match_bitapScore_(d, loc + bin_mid) <= score_threshold) {\n bin_min = bin_mid;\n } else {\n bin_max = bin_mid;\n }\n\n bin_mid = Math.floor((bin_max - bin_min) / 2 + bin_min);\n } // Use the result from this iteration as the maximum for the next.\n\n\n bin_max = bin_mid;\n var start = Math.max(1, loc - bin_mid + 1);\n var finish = Math.min(loc + bin_mid, text.length) + pattern.length;\n var rd = Array(finish + 2);\n rd[finish + 1] = (1 << d) - 1;\n\n for (var j = finish; j >= start; j--) {\n // The alphabet (s) is a sparse hash, so the following line generates\n // warnings.\n var charMatch = s[text.charAt(j - 1)];\n\n if (d === 0) {\n // First pass: exact match.\n rd[j] = (rd[j + 1] << 1 | 1) & charMatch;\n } else {\n // Subsequent passes: fuzzy match.\n rd[j] = (rd[j + 1] << 1 | 1) & charMatch | ((last_rd[j + 1] | last_rd[j]) << 1 | 1) | last_rd[j + 1];\n }\n\n if (rd[j] & matchmask) {\n var score = match_bitapScore_(d, j - 1); // This match will almost certainly be better than any existing match.\n // But check anyway.\n\n if (score <= score_threshold) {\n // Told you so.\n score_threshold = score;\n best_loc = j - 1;\n\n if (best_loc > loc) {\n // When passing loc, don't exceed our current distance from loc.\n start = Math.max(1, 2 * loc - best_loc);\n } else {\n // Already passed loc, downhill from here on in.\n break;\n }\n }\n }\n } // No hope for a (better) match at greater error levels.\n\n\n if (match_bitapScore_(d + 1, loc) > score_threshold) {\n break;\n }\n\n last_rd = rd;\n }\n\n return best_loc;\n};\n/**\n * Initialise the alphabet for the Bitap algorithm.\n * @param {string} pattern The text to encode.\n * @return {!Object} Hash of character locations.\n * @private\n */\n\n\ndiff_match_patch.prototype.match_alphabet_ = function (pattern) {\n var s = {};\n\n for (var i = 0; i < pattern.length; i++) {\n s[pattern.charAt(i)] = 0;\n }\n\n for (var i = 0; i < pattern.length; i++) {\n s[pattern.charAt(i)] |= 1 << pattern.length - i - 1;\n }\n\n return s;\n}; // PATCH FUNCTIONS\n\n/**\n * Increase the context until it is unique,\n * but don't let the pattern expand beyond Match_MaxBits.\n * @param {!diff_match_patch.patch_obj} patch The patch to grow.\n * @param {string} text Source text.\n * @private\n */\n\n\ndiff_match_patch.prototype.patch_addContext_ = function (patch, text) {\n if (text.length == 0) {\n return;\n }\n\n if (patch.start2 === null) {\n throw Error('patch not initialized');\n }\n\n var pattern = text.substring(patch.start2, patch.start2 + patch.length1);\n var padding = 0; // Look for the first and last matches of pattern in text. If two different\n // matches are found, increase the pattern length.\n\n while (text.indexOf(pattern) != text.lastIndexOf(pattern) && pattern.length < this.Match_MaxBits - this.Patch_Margin - this.Patch_Margin) {\n padding += this.Patch_Margin;\n pattern = text.substring(patch.start2 - padding, patch.start2 + patch.length1 + padding);\n } // Add one chunk for good luck.\n\n\n padding += this.Patch_Margin; // Add the prefix.\n\n var prefix = text.substring(patch.start2 - padding, patch.start2);\n\n if (prefix) {\n patch.diffs.unshift(new diff_match_patch.Diff(DIFF_EQUAL, prefix));\n } // Add the suffix.\n\n\n var suffix = text.substring(patch.start2 + patch.length1, patch.start2 + patch.length1 + padding);\n\n if (suffix) {\n patch.diffs.push(new diff_match_patch.Diff(DIFF_EQUAL, suffix));\n } // Roll back the start points.\n\n\n patch.start1 -= prefix.length;\n patch.start2 -= prefix.length; // Extend the lengths.\n\n patch.length1 += prefix.length + suffix.length;\n patch.length2 += prefix.length + suffix.length;\n};\n/**\n * Compute a list of patches to turn text1 into text2.\n * Use diffs if provided, otherwise compute it ourselves.\n * There are four ways to call this function, depending on what data is\n * available to the caller:\n * Method 1:\n * a = text1, b = text2\n * Method 2:\n * a = diffs\n * Method 3 (optimal):\n * a = text1, b = diffs\n * Method 4 (deprecated, use method 3):\n * a = text1, b = text2, c = diffs\n *\n * @param {string|!Array.} a text1 (methods 1,3,4) or\n * Array of diff tuples for text1 to text2 (method 2).\n * @param {string|!Array.=} opt_b text2 (methods 1,4) or\n * Array of diff tuples for text1 to text2 (method 3) or undefined (method 2).\n * @param {string|!Array.=} opt_c Array of diff tuples\n * for text1 to text2 (method 4) or undefined (methods 1,2,3).\n * @return {!Array.} Array of Patch objects.\n */\n\n\ndiff_match_patch.prototype.patch_make = function (a, opt_b, opt_c) {\n var text1, diffs;\n\n if (typeof a == 'string' && typeof opt_b == 'string' && typeof opt_c == 'undefined') {\n // Method 1: text1, text2\n // Compute diffs from text1 and text2.\n text1 = a;\n diffs = this.diff_main(text1, opt_b, true);\n\n if (diffs.length > 2) {\n this.diff_cleanupSemantic(diffs);\n this.diff_cleanupEfficiency(diffs);\n }\n } else if (a && typeof a == 'object' && typeof opt_b == 'undefined' && typeof opt_c == 'undefined') {\n // Method 2: diffs\n // Compute text1 from diffs.\n diffs = a;\n text1 = this.diff_text1(diffs);\n } else if (typeof a == 'string' && opt_b && typeof opt_b == 'object' && typeof opt_c == 'undefined') {\n // Method 3: text1, diffs\n text1 = a;\n diffs = opt_b;\n } else if (typeof a == 'string' && typeof opt_b == 'string' && opt_c && typeof opt_c == 'object') {\n // Method 4: text1, text2, diffs\n // text2 is not used.\n text1 = a;\n diffs = opt_c;\n } else {\n throw new Error('Unknown call format to patch_make.');\n }\n\n if (diffs.length === 0) {\n return []; // Get rid of the null case.\n }\n\n var patches = [];\n var patch = new diff_match_patch.patch_obj();\n var patchDiffLength = 0; // Keeping our own length var is faster in JS.\n\n var char_count1 = 0; // Number of characters into the text1 string.\n\n var char_count2 = 0; // Number of characters into the text2 string.\n // Start with text1 (prepatch_text) and apply the diffs until we arrive at\n // text2 (postpatch_text). We recreate the patches one by one to determine\n // context info.\n\n var prepatch_text = text1;\n var postpatch_text = text1;\n\n for (var x = 0; x < diffs.length; x++) {\n var diff_type = diffs[x][0];\n var diff_text = diffs[x][1];\n\n if (!patchDiffLength && diff_type !== DIFF_EQUAL) {\n // A new patch starts here.\n patch.start1 = char_count1;\n patch.start2 = char_count2;\n }\n\n switch (diff_type) {\n case DIFF_INSERT:\n patch.diffs[patchDiffLength++] = diffs[x];\n patch.length2 += diff_text.length;\n postpatch_text = postpatch_text.substring(0, char_count2) + diff_text + postpatch_text.substring(char_count2);\n break;\n\n case DIFF_DELETE:\n patch.length1 += diff_text.length;\n patch.diffs[patchDiffLength++] = diffs[x];\n postpatch_text = postpatch_text.substring(0, char_count2) + postpatch_text.substring(char_count2 + diff_text.length);\n break;\n\n case DIFF_EQUAL:\n if (diff_text.length <= 2 * this.Patch_Margin && patchDiffLength && diffs.length != x + 1) {\n // Small equality inside a patch.\n patch.diffs[patchDiffLength++] = diffs[x];\n patch.length1 += diff_text.length;\n patch.length2 += diff_text.length;\n } else if (diff_text.length >= 2 * this.Patch_Margin) {\n // Time for a new patch.\n if (patchDiffLength) {\n this.patch_addContext_(patch, prepatch_text);\n patches.push(patch);\n patch = new diff_match_patch.patch_obj();\n patchDiffLength = 0; // Unlike Unidiff, our patch lists have a rolling context.\n // https://github.com/google/diff-match-patch/wiki/Unidiff\n // Update prepatch text & pos to reflect the application of the\n // just completed patch.\n\n prepatch_text = postpatch_text;\n char_count1 = char_count2;\n }\n }\n\n break;\n } // Update the current character count.\n\n\n if (diff_type !== DIFF_INSERT) {\n char_count1 += diff_text.length;\n }\n\n if (diff_type !== DIFF_DELETE) {\n char_count2 += diff_text.length;\n }\n } // Pick up the leftover patch if not empty.\n\n\n if (patchDiffLength) {\n this.patch_addContext_(patch, prepatch_text);\n patches.push(patch);\n }\n\n return patches;\n};\n/**\n * Given an array of patches, return another array that is identical.\n * @param {!Array.} patches Array of Patch objects.\n * @return {!Array.} Array of Patch objects.\n */\n\n\ndiff_match_patch.prototype.patch_deepCopy = function (patches) {\n // Making deep copies is hard in JavaScript.\n var patchesCopy = [];\n\n for (var x = 0; x < patches.length; x++) {\n var patch = patches[x];\n var patchCopy = new diff_match_patch.patch_obj();\n patchCopy.diffs = [];\n\n for (var y = 0; y < patch.diffs.length; y++) {\n patchCopy.diffs[y] = new diff_match_patch.Diff(patch.diffs[y][0], patch.diffs[y][1]);\n }\n\n patchCopy.start1 = patch.start1;\n patchCopy.start2 = patch.start2;\n patchCopy.length1 = patch.length1;\n patchCopy.length2 = patch.length2;\n patchesCopy[x] = patchCopy;\n }\n\n return patchesCopy;\n};\n/**\n * Merge a set of patches onto the text. Return a patched text, as well\n * as a list of true/false values indicating which patches were applied.\n * @param {!Array.} patches Array of Patch objects.\n * @param {string} text Old text.\n * @return {!Array.>} Two element Array, containing the\n * new text and an array of boolean values.\n */\n\n\ndiff_match_patch.prototype.patch_apply = function (patches, text) {\n if (patches.length == 0) {\n return [text, []];\n } // Deep copy the patches so that no changes are made to originals.\n\n\n patches = this.patch_deepCopy(patches);\n var nullPadding = this.patch_addPadding(patches);\n text = nullPadding + text + nullPadding;\n this.patch_splitMax(patches); // delta keeps track of the offset between the expected and actual location\n // of the previous patch. If there are patches expected at positions 10 and\n // 20, but the first patch was found at 12, delta is 2 and the second patch\n // has an effective expected position of 22.\n\n var delta = 0;\n var results = [];\n\n for (var x = 0; x < patches.length; x++) {\n var expected_loc = patches[x].start2 + delta;\n var text1 = this.diff_text1(patches[x].diffs);\n var start_loc;\n var end_loc = -1;\n\n if (text1.length > this.Match_MaxBits) {\n // patch_splitMax will only provide an oversized pattern in the case of\n // a monster delete.\n start_loc = this.match_main(text, text1.substring(0, this.Match_MaxBits), expected_loc);\n\n if (start_loc != -1) {\n end_loc = this.match_main(text, text1.substring(text1.length - this.Match_MaxBits), expected_loc + text1.length - this.Match_MaxBits);\n\n if (end_loc == -1 || start_loc >= end_loc) {\n // Can't find valid trailing context. Drop this patch.\n start_loc = -1;\n }\n }\n } else {\n start_loc = this.match_main(text, text1, expected_loc);\n }\n\n if (start_loc == -1) {\n // No match found. :(\n results[x] = false; // Subtract the delta for this failed patch from subsequent patches.\n\n delta -= patches[x].length2 - patches[x].length1;\n } else {\n // Found a match. :)\n results[x] = true;\n delta = start_loc - expected_loc;\n var text2;\n\n if (end_loc == -1) {\n text2 = text.substring(start_loc, start_loc + text1.length);\n } else {\n text2 = text.substring(start_loc, end_loc + this.Match_MaxBits);\n }\n\n if (text1 == text2) {\n // Perfect match, just shove the replacement text in.\n text = text.substring(0, start_loc) + this.diff_text2(patches[x].diffs) + text.substring(start_loc + text1.length);\n } else {\n // Imperfect match. Run a diff to get a framework of equivalent\n // indices.\n var diffs = this.diff_main(text1, text2, false);\n\n if (text1.length > this.Match_MaxBits && this.diff_levenshtein(diffs) / text1.length > this.Patch_DeleteThreshold) {\n // The end points match, but the content is unacceptably bad.\n results[x] = false;\n } else {\n this.diff_cleanupSemanticLossless(diffs);\n var index1 = 0;\n var index2;\n\n for (var y = 0; y < patches[x].diffs.length; y++) {\n var mod = patches[x].diffs[y];\n\n if (mod[0] !== DIFF_EQUAL) {\n index2 = this.diff_xIndex(diffs, index1);\n }\n\n if (mod[0] === DIFF_INSERT) {\n // Insertion\n text = text.substring(0, start_loc + index2) + mod[1] + text.substring(start_loc + index2);\n } else if (mod[0] === DIFF_DELETE) {\n // Deletion\n text = text.substring(0, start_loc + index2) + text.substring(start_loc + this.diff_xIndex(diffs, index1 + mod[1].length));\n }\n\n if (mod[0] !== DIFF_DELETE) {\n index1 += mod[1].length;\n }\n }\n }\n }\n }\n } // Strip the padding off.\n\n\n text = text.substring(nullPadding.length, text.length - nullPadding.length);\n return [text, results];\n};\n/**\n * Add some padding on text start and end so that edges can match something.\n * Intended to be called only from within patch_apply.\n * @param {!Array.} patches Array of Patch objects.\n * @return {string} The padding string added to each side.\n */\n\n\ndiff_match_patch.prototype.patch_addPadding = function (patches) {\n var paddingLength = this.Patch_Margin;\n var nullPadding = '';\n\n for (var x = 1; x <= paddingLength; x++) {\n nullPadding += String.fromCharCode(x);\n } // Bump all the patches forward.\n\n\n for (var x = 0; x < patches.length; x++) {\n patches[x].start1 += paddingLength;\n patches[x].start2 += paddingLength;\n } // Add some padding on start of first diff.\n\n\n var patch = patches[0];\n var diffs = patch.diffs;\n\n if (diffs.length == 0 || diffs[0][0] != DIFF_EQUAL) {\n // Add nullPadding equality.\n diffs.unshift(new diff_match_patch.Diff(DIFF_EQUAL, nullPadding));\n patch.start1 -= paddingLength; // Should be 0.\n\n patch.start2 -= paddingLength; // Should be 0.\n\n patch.length1 += paddingLength;\n patch.length2 += paddingLength;\n } else if (paddingLength > diffs[0][1].length) {\n // Grow first equality.\n var extraLength = paddingLength - diffs[0][1].length;\n diffs[0][1] = nullPadding.substring(diffs[0][1].length) + diffs[0][1];\n patch.start1 -= extraLength;\n patch.start2 -= extraLength;\n patch.length1 += extraLength;\n patch.length2 += extraLength;\n } // Add some padding on end of last diff.\n\n\n patch = patches[patches.length - 1];\n diffs = patch.diffs;\n\n if (diffs.length == 0 || diffs[diffs.length - 1][0] != DIFF_EQUAL) {\n // Add nullPadding equality.\n diffs.push(new diff_match_patch.Diff(DIFF_EQUAL, nullPadding));\n patch.length1 += paddingLength;\n patch.length2 += paddingLength;\n } else if (paddingLength > diffs[diffs.length - 1][1].length) {\n // Grow last equality.\n var extraLength = paddingLength - diffs[diffs.length - 1][1].length;\n diffs[diffs.length - 1][1] += nullPadding.substring(0, extraLength);\n patch.length1 += extraLength;\n patch.length2 += extraLength;\n }\n\n return nullPadding;\n};\n/**\n * Look through the patches and break up any which are longer than the maximum\n * limit of the match algorithm.\n * Intended to be called only from within patch_apply.\n * @param {!Array.} patches Array of Patch objects.\n */\n\n\ndiff_match_patch.prototype.patch_splitMax = function (patches) {\n var patch_size = this.Match_MaxBits;\n\n for (var x = 0; x < patches.length; x++) {\n if (patches[x].length1 <= patch_size) {\n continue;\n }\n\n var bigpatch = patches[x]; // Remove the big old patch.\n\n patches.splice(x--, 1);\n var start1 = bigpatch.start1;\n var start2 = bigpatch.start2;\n var precontext = '';\n\n while (bigpatch.diffs.length !== 0) {\n // Create one of several smaller patches.\n var patch = new diff_match_patch.patch_obj();\n var empty = true;\n patch.start1 = start1 - precontext.length;\n patch.start2 = start2 - precontext.length;\n\n if (precontext !== '') {\n patch.length1 = patch.length2 = precontext.length;\n patch.diffs.push(new diff_match_patch.Diff(DIFF_EQUAL, precontext));\n }\n\n while (bigpatch.diffs.length !== 0 && patch.length1 < patch_size - this.Patch_Margin) {\n var diff_type = bigpatch.diffs[0][0];\n var diff_text = bigpatch.diffs[0][1];\n\n if (diff_type === DIFF_INSERT) {\n // Insertions are harmless.\n patch.length2 += diff_text.length;\n start2 += diff_text.length;\n patch.diffs.push(bigpatch.diffs.shift());\n empty = false;\n } else if (diff_type === DIFF_DELETE && patch.diffs.length == 1 && patch.diffs[0][0] == DIFF_EQUAL && diff_text.length > 2 * patch_size) {\n // This is a large deletion. Let it pass in one chunk.\n patch.length1 += diff_text.length;\n start1 += diff_text.length;\n empty = false;\n patch.diffs.push(new diff_match_patch.Diff(diff_type, diff_text));\n bigpatch.diffs.shift();\n } else {\n // Deletion or equality. Only take as much as we can stomach.\n diff_text = diff_text.substring(0, patch_size - patch.length1 - this.Patch_Margin);\n patch.length1 += diff_text.length;\n start1 += diff_text.length;\n\n if (diff_type === DIFF_EQUAL) {\n patch.length2 += diff_text.length;\n start2 += diff_text.length;\n } else {\n empty = false;\n }\n\n patch.diffs.push(new diff_match_patch.Diff(diff_type, diff_text));\n\n if (diff_text == bigpatch.diffs[0][1]) {\n bigpatch.diffs.shift();\n } else {\n bigpatch.diffs[0][1] = bigpatch.diffs[0][1].substring(diff_text.length);\n }\n }\n } // Compute the head context for the next patch.\n\n\n precontext = this.diff_text2(patch.diffs);\n precontext = precontext.substring(precontext.length - this.Patch_Margin); // Append the end context for this patch.\n\n var postcontext = this.diff_text1(bigpatch.diffs).substring(0, this.Patch_Margin);\n\n if (postcontext !== '') {\n patch.length1 += postcontext.length;\n patch.length2 += postcontext.length;\n\n if (patch.diffs.length !== 0 && patch.diffs[patch.diffs.length - 1][0] === DIFF_EQUAL) {\n patch.diffs[patch.diffs.length - 1][1] += postcontext;\n } else {\n patch.diffs.push(new diff_match_patch.Diff(DIFF_EQUAL, postcontext));\n }\n }\n\n if (!empty) {\n patches.splice(++x, 0, patch);\n }\n }\n }\n};\n/**\n * Take a list of patches and return a textual representation.\n * @param {!Array.} patches Array of Patch objects.\n * @return {string} Text representation of patches.\n */\n\n\ndiff_match_patch.prototype.patch_toText = function (patches) {\n var text = [];\n\n for (var x = 0; x < patches.length; x++) {\n text[x] = patches[x];\n }\n\n return text.join('');\n};\n/**\n * Parse a textual representation of patches and return a list of Patch objects.\n * @param {string} textline Text representation of patches.\n * @return {!Array.} Array of Patch objects.\n * @throws {!Error} If invalid input.\n */\n\n\ndiff_match_patch.prototype.patch_fromText = function (textline) {\n var patches = [];\n\n if (!textline) {\n return patches;\n }\n\n var text = textline.split('\\n');\n var textPointer = 0;\n var patchHeader = /^@@ -(\\d+),?(\\d*) \\+(\\d+),?(\\d*) @@$/;\n\n while (textPointer < text.length) {\n var m = text[textPointer].match(patchHeader);\n\n if (!m) {\n throw new Error('Invalid patch string: ' + text[textPointer]);\n }\n\n var patch = new diff_match_patch.patch_obj();\n patches.push(patch);\n patch.start1 = parseInt(m[1], 10);\n\n if (m[2] === '') {\n patch.start1--;\n patch.length1 = 1;\n } else if (m[2] == '0') {\n patch.length1 = 0;\n } else {\n patch.start1--;\n patch.length1 = parseInt(m[2], 10);\n }\n\n patch.start2 = parseInt(m[3], 10);\n\n if (m[4] === '') {\n patch.start2--;\n patch.length2 = 1;\n } else if (m[4] == '0') {\n patch.length2 = 0;\n } else {\n patch.start2--;\n patch.length2 = parseInt(m[4], 10);\n }\n\n textPointer++;\n\n while (textPointer < text.length) {\n var sign = text[textPointer].charAt(0);\n\n try {\n var line = decodeURI(text[textPointer].substring(1));\n } catch (ex) {\n // Malformed URI sequence.\n throw new Error('Illegal escape in patch_fromText: ' + line);\n }\n\n if (sign == '-') {\n // Deletion.\n patch.diffs.push(new diff_match_patch.Diff(DIFF_DELETE, line));\n } else if (sign == '+') {\n // Insertion.\n patch.diffs.push(new diff_match_patch.Diff(DIFF_INSERT, line));\n } else if (sign == ' ') {\n // Minor equality.\n patch.diffs.push(new diff_match_patch.Diff(DIFF_EQUAL, line));\n } else if (sign == '@') {\n // Start of next patch.\n break;\n } else if (sign === '') {// Blank line? Whatever.\n } else {\n // WTF?\n throw new Error('Invalid patch mode \"' + sign + '\" in: ' + line);\n }\n\n textPointer++;\n }\n }\n\n return patches;\n};\n/**\n * Class representing one patch operation.\n * @constructor\n */\n\n\ndiff_match_patch.patch_obj = function () {\n /** @type {!Array.} */\n this.diffs = [];\n /** @type {?number} */\n\n this.start1 = null;\n /** @type {?number} */\n\n this.start2 = null;\n /** @type {number} */\n\n this.length1 = 0;\n /** @type {number} */\n\n this.length2 = 0;\n};\n/**\n * Emulate GNU diff's format.\n * Header: @@ -382,8 +481,9 @@\n * Indices are printed as 1-based, not 0-based.\n * @return {string} The GNU diff string.\n */\n\n\ndiff_match_patch.patch_obj.prototype.toString = function () {\n var coords1, coords2;\n\n if (this.length1 === 0) {\n coords1 = this.start1 + ',0';\n } else if (this.length1 == 1) {\n coords1 = this.start1 + 1;\n } else {\n coords1 = this.start1 + 1 + ',' + this.length1;\n }\n\n if (this.length2 === 0) {\n coords2 = this.start2 + ',0';\n } else if (this.length2 == 1) {\n coords2 = this.start2 + 1;\n } else {\n coords2 = this.start2 + 1 + ',' + this.length2;\n }\n\n var text = ['@@ -' + coords1 + ' +' + coords2 + ' @@\\n'];\n var op; // Escape the body of the patch with %xx notation.\n\n for (var x = 0; x < this.diffs.length; x++) {\n switch (this.diffs[x][0]) {\n case DIFF_INSERT:\n op = '+';\n break;\n\n case DIFF_DELETE:\n op = '-';\n break;\n\n case DIFF_EQUAL:\n op = ' ';\n break;\n }\n\n text[x + 1] = op + encodeURI(this.diffs[x][1]) + '\\n';\n }\n\n return text.join('').replace(/%20/g, ' ');\n}; // The following export code was added by @ForbesLindesay\n\n\nmodule.exports = diff_match_patch;\nmodule.exports['diff_match_patch'] = diff_match_patch;\nmodule.exports['DIFF_DELETE'] = DIFF_DELETE;\nmodule.exports['DIFF_INSERT'] = DIFF_INSERT;\nmodule.exports['DIFF_EQUAL'] = DIFF_EQUAL;","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n/** Used to stand-in for `undefined` hash values. */\n\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n/** Used as references for various `Number` constants. */\n\nvar INFINITY = 1 / 0;\n/** `Object#toString` result references. */\n\nvar funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n symbolTag = '[object Symbol]';\n/** Used to match property names within property paths. */\n\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n reLeadingDot = /^\\./,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n/** Used to match backslashes in property paths. */\n\nvar reEscapeChar = /\\\\(\\\\)?/g;\n/** Used to detect host constructors (Safari). */\n\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n/** Detect free variable `global` from Node.js. */\n\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n/** Detect free variable `self`. */\n\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n/** Used as a reference to the global object. */\n\nvar root = freeGlobal || freeSelf || Function('return this')();\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\n\n\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n\n return result;\n}\n/** Used for built-in method references. */\n\n\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n/** Used to detect overreaching core-js shims. */\n\nvar coreJsData = root['__core-js_shared__'];\n/** Used to detect methods masquerading as native. */\n\nvar maskSrcKey = function () {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? 'Symbol(src)_1.' + uid : '';\n}();\n/** Used to resolve the decompiled source of functions. */\n\n\nvar funcToString = funcProto.toString;\n/** Used to check objects for own properties. */\n\nvar hasOwnProperty = objectProto.hasOwnProperty;\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n\nvar objectToString = objectProto.toString;\n/** Used to detect if a method is native. */\n\nvar reIsNative = RegExp('^' + funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&').replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$');\n/** Built-in value references. */\n\nvar Symbol = root.Symbol,\n splice = arrayProto.splice;\n/* Built-in method references that are verified to be native. */\n\nvar Map = getNative(root, 'Map'),\n nativeCreate = getNative(Object, 'create');\n/** Used to convert symbols to primitives and strings. */\n\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n\nfunction Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n this.clear();\n\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\n\n\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n\n\nfunction hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n}\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n\n\nfunction hashGet(key) {\n var data = this.__data__;\n\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n\n\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\n\n\nfunction hashSet(key, value) {\n var data = this.__data__;\n data[key] = nativeCreate && value === undefined ? HASH_UNDEFINED : value;\n return this;\n} // Add methods to `Hash`.\n\n\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n\nfunction ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n this.clear();\n\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\n\n\nfunction listCacheClear() {\n this.__data__ = [];\n}\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n\n\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n\n var lastIndex = data.length - 1;\n\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n\n return true;\n}\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n\n\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n return index < 0 ? undefined : data[index][1];\n}\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n\n\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\n\n\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n\n return this;\n} // Add methods to `ListCache`.\n\n\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n\nfunction MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n this.clear();\n\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\n\n\nfunction mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash(),\n 'map': new (Map || ListCache)(),\n 'string': new Hash()\n };\n}\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n\n\nfunction mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n}\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n\n\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n\n\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\n\n\nfunction mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n} // Add methods to `MapCache`.\n\n\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n\nfunction assocIndexOf(array, key) {\n var length = array.length;\n\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n\n return -1;\n}\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\n\n\nfunction baseGet(object, path) {\n path = isKey(path, object) ? [path] : castPath(path);\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n\n return index && index == length ? object : undefined;\n}\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\n\n\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n\n var pattern = isFunction(value) || isHostObject(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\n\n\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n\n var result = value + '';\n return result == '0' && 1 / value == -INFINITY ? '-0' : result;\n}\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast property path array.\n */\n\n\nfunction castPath(value) {\n return isArray(value) ? value : stringToPath(value);\n}\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\n\n\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key) ? data[typeof key == 'string' ? 'string' : 'hash'] : data.map;\n}\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\n\n\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\n\n\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n\n var type = typeof value;\n\n if (type == 'number' || type == 'symbol' || type == 'boolean' || value == null || isSymbol(value)) {\n return true;\n }\n\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || object != null && value in Object(object);\n}\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\n\n\nfunction isKeyable(value) {\n var type = typeof value;\n return type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean' ? value !== '__proto__' : value === null;\n}\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\n\n\nfunction isMasked(func) {\n return !!maskSrcKey && maskSrcKey in func;\n}\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\n\n\nvar stringToPath = memoize(function (string) {\n string = toString(string);\n var result = [];\n\n if (reLeadingDot.test(string)) {\n result.push('');\n }\n\n string.replace(rePropName, function (match, number, quote, string) {\n result.push(quote ? string.replace(reEscapeChar, '$1') : number || match);\n });\n return result;\n});\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\n\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n\n var result = value + '';\n return result == '0' && 1 / value == -INFINITY ? '-0' : result;\n}\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\n\n\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n\n try {\n return func + '';\n } catch (e) {}\n }\n\n return '';\n}\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\n\n\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || resolver && typeof resolver != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n\n var memoized = function memoized() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result);\n return result;\n };\n\n memoized.cache = new (memoize.Cache || MapCache)();\n return memoized;\n} // Assign cache to `_.memoize`.\n\n\nmemoize.Cache = MapCache;\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\n\nfunction eq(value, other) {\n return value === other || value !== value && other !== other;\n}\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\n\n\nvar isArray = Array.isArray;\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n\n\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n\n\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\n\n\nfunction isSymbol(value) {\n return typeof value == 'symbol' || isObjectLike(value) && objectToString.call(value) == symbolTag;\n}\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\n\n\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\n\n\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;","/**\n * Lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright JS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n/** Used to stand-in for `undefined` hash values. */\n\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n/** Used to compose bitmasks for value comparisons. */\n\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n/** Used as references for various `Number` constants. */\n\nvar MAX_SAFE_INTEGER = 9007199254740991;\n/** `Object#toString` result references. */\n\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]';\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n/** Used to detect host constructors (Safari). */\n\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n/** Used to detect unsigned integer values. */\n\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n/** Used to identify `toStringTag` values of typed arrays. */\n\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;\n/** Detect free variable `global` from Node.js. */\n\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n/** Detect free variable `self`. */\n\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n/** Used as a reference to the global object. */\n\nvar root = freeGlobal || freeSelf || Function('return this')();\n/** Detect free variable `exports`. */\n\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n/** Detect free variable `module`. */\n\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n/** Detect the popular CommonJS extension `module.exports`. */\n\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n/** Detect free variable `process` from Node.js. */\n\nvar freeProcess = moduleExports && freeGlobal.process;\n/** Used to access faster Node.js helpers. */\n\nvar nodeUtil = function () {\n try {\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}();\n/* Node.js helper references. */\n\n\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n\n return result;\n}\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\n\n\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n\n return array;\n}\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n\n\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n\n return false;\n}\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\n\n\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n\n return result;\n}\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\n\n\nfunction baseUnary(func) {\n return function (value) {\n return func(value);\n };\n}\n/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n\n\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n\n\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\n\n\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n map.forEach(function (value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n\n\nfunction overArg(func, transform) {\n return function (arg) {\n return func(transform(arg));\n };\n}\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\n\n\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n set.forEach(function (value) {\n result[++index] = value;\n });\n return result;\n}\n/** Used for built-in method references. */\n\n\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n/** Used to detect overreaching core-js shims. */\n\nvar coreJsData = root['__core-js_shared__'];\n/** Used to resolve the decompiled source of functions. */\n\nvar funcToString = funcProto.toString;\n/** Used to check objects for own properties. */\n\nvar hasOwnProperty = objectProto.hasOwnProperty;\n/** Used to detect methods masquerading as native. */\n\nvar maskSrcKey = function () {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? 'Symbol(src)_1.' + uid : '';\n}();\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n\n\nvar nativeObjectToString = objectProto.toString;\n/** Used to detect if a method is native. */\n\nvar reIsNative = RegExp('^' + funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&').replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$');\n/** Built-in value references. */\n\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n/* Built-in method references for those with the same name as other `lodash` methods. */\n\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n/* Built-in method references that are verified to be native. */\n\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n/** Used to detect maps, sets, and weakmaps. */\n\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n/** Used to convert symbols to primitives and strings. */\n\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n this.clear();\n\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\n\n\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n\n\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n\n\nfunction hashGet(key) {\n var data = this.__data__;\n\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n\n\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\n\n\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = nativeCreate && value === undefined ? HASH_UNDEFINED : value;\n return this;\n} // Add methods to `Hash`.\n\n\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n this.clear();\n\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\n\n\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n\n\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n\n var lastIndex = data.length - 1;\n\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n\n --this.size;\n return true;\n}\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n\n\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n return index < 0 ? undefined : data[index][1];\n}\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n\n\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\n\n\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n\n return this;\n} // Add methods to `ListCache`.\n\n\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n this.clear();\n\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\n\n\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash(),\n 'map': new (Map || ListCache)(),\n 'string': new Hash()\n };\n}\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n\n\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n\n\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n\n\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\n\n\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n} // Add methods to `MapCache`.\n\n\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\n\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n this.__data__ = new MapCache();\n\n while (++index < length) {\n this.add(values[index]);\n }\n}\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\n\n\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n\n return this;\n}\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\n\n\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n} // Add methods to `SetCache`.\n\n\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\n\n\nfunction stackClear() {\n this.__data__ = new ListCache();\n this.size = 0;\n}\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n\n\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n this.size = data.size;\n return result;\n}\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n\n\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n\n\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\n\n\nfunction stackSet(key, value) {\n var data = this.__data__;\n\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n\n if (!Map || pairs.length < LARGE_ARRAY_SIZE - 1) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n\n data = this.__data__ = new MapCache(pairs);\n }\n\n data.set(key, value);\n this.size = data.size;\n return this;\n} // Add methods to `Stack`.\n\n\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\n\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) && !(skipIndexes && ( // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' || isBuff && (key == 'offset' || key == 'parent') || isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset') || // Skip index properties.\n isIndex(key, length)))) {\n result.push(key);\n }\n }\n\n return result;\n}\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n\n\nfunction assocIndexOf(array, key) {\n var length = array.length;\n\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n\n return -1;\n}\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\n\n\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n\n\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n\n return symToStringTag && symToStringTag in Object(value) ? getRawTag(value) : objectToString(value);\n}\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\n\n\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\n\n\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n\n if (value == null || other == null || !isObjectLike(value) && !isObjectLike(other)) {\n return value !== value && other !== other;\n }\n\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n\n\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n\n objIsArr = true;\n objIsObj = false;\n }\n\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack());\n return objIsArr || isTypedArray(object) ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n stack || (stack = new Stack());\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n\n if (!isSameTag) {\n return false;\n }\n\n stack || (stack = new Stack());\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\n\n\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n\n\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n\n\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n\n var result = [];\n\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n\n return result;\n}\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\n\n\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n } // Assume cyclic values are equal.\n\n\n var stacked = stack.get(array);\n\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n\n var index = -1,\n result = true,\n seen = bitmask & COMPARE_UNORDERED_FLAG ? new SetCache() : undefined;\n stack.set(array, other);\n stack.set(other, array); // Ignore non-index properties.\n\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial ? customizer(othValue, arrValue, index, other, array, stack) : customizer(arrValue, othValue, index, array, other, stack);\n }\n\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n\n result = false;\n break;\n } // Recursively compare arrays (susceptible to call stack limits).\n\n\n if (seen) {\n if (!arraySome(other, function (othValue, othIndex) {\n if (!cacheHas(seen, othIndex) && (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n result = false;\n break;\n }\n }\n\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n\n\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if (object.byteLength != other.byteLength || object.byteOffset != other.byteOffset) {\n return false;\n }\n\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if (object.byteLength != other.byteLength || !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == other + '';\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n } // Assume cyclic values are equal.\n\n\n var stacked = stack.get(object);\n\n if (stacked) {\n return stacked == other;\n }\n\n bitmask |= COMPARE_UNORDERED_FLAG; // Recursively compare objects (susceptible to call stack limits).\n\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n\n }\n\n return false;\n}\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n\n\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n\n var index = objLength;\n\n while (index--) {\n var key = objProps[index];\n\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n } // Assume cyclic values are equal.\n\n\n var stacked = stack.get(object);\n\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n var skipCtor = isPartial;\n\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial ? customizer(othValue, objValue, key, other, object, stack) : customizer(objValue, othValue, key, object, other, stack);\n } // Recursively compare objects (susceptible to call stack limits).\n\n\n if (!(compared === undefined ? objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack) : compared)) {\n result = false;\n break;\n }\n\n skipCtor || (skipCtor = key == 'constructor');\n }\n\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor; // Non `Object` object instances with different constructors are not equal.\n\n if (objCtor != othCtor && 'constructor' in object && 'constructor' in other && !(typeof objCtor == 'function' && objCtor instanceof objCtor && typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n\n\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\n\n\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key) ? data[typeof key == 'string' ? 'string' : 'hash'] : data.map;\n}\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\n\n\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\n\n\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n\n return result;\n}\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n\n\nvar getSymbols = !nativeGetSymbols ? stubArray : function (object) {\n if (object == null) {\n return [];\n }\n\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function (symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n\nvar getTag = baseGetTag; // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n\nif (DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag || Map && getTag(new Map()) != mapTag || Promise && getTag(Promise.resolve()) != promiseTag || Set && getTag(new Set()) != setTag || WeakMap && getTag(new WeakMap()) != weakMapTag) {\n getTag = function getTag(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString:\n return dataViewTag;\n\n case mapCtorString:\n return mapTag;\n\n case promiseCtorString:\n return promiseTag;\n\n case setCtorString:\n return setTag;\n\n case weakMapCtorString:\n return weakMapTag;\n }\n }\n\n return result;\n };\n}\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\n\n\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length && (typeof value == 'number' || reIsUint.test(value)) && value > -1 && value % 1 == 0 && value < length;\n}\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\n\n\nfunction isKeyable(value) {\n var type = typeof value;\n return type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean' ? value !== '__proto__' : value === null;\n}\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\n\n\nfunction isMasked(func) {\n return !!maskSrcKey && maskSrcKey in func;\n}\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\n\n\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = typeof Ctor == 'function' && Ctor.prototype || objectProto;\n return value === proto;\n}\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\n\n\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\n\n\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n\n try {\n return func + '';\n } catch (e) {}\n }\n\n return '';\n}\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\n\n\nfunction eq(value, other) {\n return value === other || value !== value && other !== other;\n}\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n\n\nvar isArguments = baseIsArguments(function () {\n return arguments;\n}()) ? baseIsArguments : function (value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') && !propertyIsEnumerable.call(value, 'callee');\n};\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\n\nvar isArray = Array.isArray;\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\n\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\n\n\nvar isBuffer = nativeIsBuffer || stubFalse;\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\n\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n\n\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n } // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n\n\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\n\n\nfunction isLength(value) {\n return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n\n\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n\n\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n\n\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\n\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\n\n\nfunction stubArray() {\n return [];\n}\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\n\n\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = isEqual;","\"use strict\";\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar PropTypes = require(\"prop-types\");\n\nvar React = require(\"react\");\n\nvar isEqual = require(\"lodash.isequal\");\n\nvar editorOptions_1 = require(\"./editorOptions\");\n\nvar ace = editorOptions_1.getAceInstance();\nvar Range = ace.acequire(\"ace/range\").Range;\n\nvar ReactAce = function (_super) {\n __extends(ReactAce, _super);\n\n function ReactAce(props) {\n var _this = _super.call(this, props) || this;\n\n editorOptions_1.editorEvents.forEach(function (method) {\n _this[method] = _this[method].bind(_this);\n });\n _this.debounce = editorOptions_1.debounce;\n return _this;\n }\n\n ReactAce.prototype.componentDidMount = function () {\n var _this = this;\n\n var _a = this.props,\n className = _a.className,\n onBeforeLoad = _a.onBeforeLoad,\n onValidate = _a.onValidate,\n mode = _a.mode,\n focus = _a.focus,\n theme = _a.theme,\n fontSize = _a.fontSize,\n value = _a.value,\n defaultValue = _a.defaultValue,\n cursorStart = _a.cursorStart,\n showGutter = _a.showGutter,\n wrapEnabled = _a.wrapEnabled,\n showPrintMargin = _a.showPrintMargin,\n _b = _a.scrollMargin,\n scrollMargin = _b === void 0 ? [0, 0, 0, 0] : _b,\n keyboardHandler = _a.keyboardHandler,\n onLoad = _a.onLoad,\n commands = _a.commands,\n annotations = _a.annotations,\n markers = _a.markers,\n placeholder = _a.placeholder;\n this.editor = ace.edit(this.refEditor);\n\n if (onBeforeLoad) {\n onBeforeLoad(ace);\n }\n\n var editorProps = Object.keys(this.props.editorProps);\n\n for (var i = 0; i < editorProps.length; i++) {\n this.editor[editorProps[i]] = this.props.editorProps[editorProps[i]];\n }\n\n if (this.props.debounceChangePeriod) {\n this.onChange = this.debounce(this.onChange, this.props.debounceChangePeriod);\n }\n\n this.editor.renderer.setScrollMargin(scrollMargin[0], scrollMargin[1], scrollMargin[2], scrollMargin[3]);\n this.editor.getSession().setMode(\"ace/mode/\" + mode);\n this.editor.setTheme(\"ace/theme/\" + theme);\n this.editor.setFontSize(fontSize);\n this.editor.getSession().setValue(!defaultValue ? value : defaultValue, cursorStart);\n\n if (this.props.navigateToFileEnd) {\n this.editor.navigateFileEnd();\n }\n\n this.editor.renderer.setShowGutter(showGutter);\n this.editor.getSession().setUseWrapMode(wrapEnabled);\n this.editor.setShowPrintMargin(showPrintMargin);\n this.editor.on(\"focus\", this.onFocus);\n this.editor.on(\"blur\", this.onBlur);\n this.editor.on(\"copy\", this.onCopy);\n this.editor.on(\"paste\", this.onPaste);\n this.editor.on(\"change\", this.onChange);\n this.editor.on(\"input\", this.onInput);\n\n if (placeholder) {\n this.updatePlaceholder();\n }\n\n this.editor.getSession().selection.on(\"changeSelection\", this.onSelectionChange);\n this.editor.getSession().selection.on(\"changeCursor\", this.onCursorChange);\n\n if (onValidate) {\n this.editor.getSession().on(\"changeAnnotation\", function () {\n // tslint:disable-next-line:no-shadowed-variable\n var annotations = _this.editor.getSession().getAnnotations();\n\n _this.props.onValidate(annotations);\n });\n }\n\n this.editor.session.on(\"changeScrollTop\", this.onScroll);\n this.editor.getSession().setAnnotations(annotations || []);\n\n if (markers && markers.length > 0) {\n this.handleMarkers(markers);\n } // get a list of possible options to avoid 'misspelled option errors'\n\n\n var availableOptions = this.editor.$options;\n editorOptions_1.editorOptions.forEach(function (option) {\n if (availableOptions.hasOwnProperty(option)) {\n _this.editor.setOption(option, _this.props[option]);\n } else if (_this.props[option]) {\n console.warn(\"ReactAce: editor option \" + option + \" was activated but not found. Did you need to import a related tool or did you possibly mispell the option?\");\n }\n });\n this.handleOptions(this.props);\n\n if (Array.isArray(commands)) {\n commands.forEach(function (command) {\n if (typeof command.exec === \"string\") {\n _this.editor.commands.bindKey(command.bindKey, command.exec);\n } else {\n _this.editor.commands.addCommand(command);\n }\n });\n }\n\n if (keyboardHandler) {\n this.editor.setKeyboardHandler(\"ace/keyboard/\" + keyboardHandler);\n }\n\n if (className) {\n this.refEditor.className += \" \" + className;\n }\n\n if (onLoad) {\n onLoad(this.editor);\n }\n\n this.editor.resize();\n\n if (focus) {\n this.editor.focus();\n }\n };\n\n ReactAce.prototype.componentDidUpdate = function (prevProps) {\n var oldProps = prevProps;\n var nextProps = this.props;\n\n for (var i = 0; i < editorOptions_1.editorOptions.length; i++) {\n var option = editorOptions_1.editorOptions[i];\n\n if (nextProps[option] !== oldProps[option]) {\n this.editor.setOption(option, nextProps[option]);\n }\n }\n\n if (nextProps.className !== oldProps.className) {\n var appliedClasses = this.refEditor.className;\n var appliedClassesArray_1 = appliedClasses.trim().split(\" \");\n var oldClassesArray = oldProps.className.trim().split(\" \");\n oldClassesArray.forEach(function (oldClass) {\n var index = appliedClassesArray_1.indexOf(oldClass);\n appliedClassesArray_1.splice(index, 1);\n });\n this.refEditor.className = \" \" + nextProps.className + \" \" + appliedClassesArray_1.join(\" \");\n } // First process editor value, as it may create a new session (see issue #300)\n\n\n if (this.editor && this.editor.getValue() !== nextProps.value) {\n // editor.setValue is a synchronous function call, change event is emitted before setValue return.\n this.silent = true;\n var pos = this.editor.session.selection.toJSON();\n this.editor.setValue(nextProps.value, nextProps.cursorStart);\n this.editor.session.selection.fromJSON(pos);\n this.silent = false;\n }\n\n if (nextProps.placeholder !== oldProps.placeholder) {\n this.updatePlaceholder();\n }\n\n if (nextProps.mode !== oldProps.mode) {\n this.editor.getSession().setMode(\"ace/mode/\" + nextProps.mode);\n }\n\n if (nextProps.theme !== oldProps.theme) {\n this.editor.setTheme(\"ace/theme/\" + nextProps.theme);\n }\n\n if (nextProps.keyboardHandler !== oldProps.keyboardHandler) {\n if (nextProps.keyboardHandler) {\n this.editor.setKeyboardHandler(\"ace/keyboard/\" + nextProps.keyboardHandler);\n } else {\n this.editor.setKeyboardHandler(null);\n }\n }\n\n if (nextProps.fontSize !== oldProps.fontSize) {\n this.editor.setFontSize(nextProps.fontSize);\n }\n\n if (nextProps.wrapEnabled !== oldProps.wrapEnabled) {\n this.editor.getSession().setUseWrapMode(nextProps.wrapEnabled);\n }\n\n if (nextProps.showPrintMargin !== oldProps.showPrintMargin) {\n this.editor.setShowPrintMargin(nextProps.showPrintMargin);\n }\n\n if (nextProps.showGutter !== oldProps.showGutter) {\n this.editor.renderer.setShowGutter(nextProps.showGutter);\n }\n\n if (!isEqual(nextProps.setOptions, oldProps.setOptions)) {\n this.handleOptions(nextProps);\n }\n\n if (!isEqual(nextProps.annotations, oldProps.annotations)) {\n this.editor.getSession().setAnnotations(nextProps.annotations || []);\n }\n\n if (!isEqual(nextProps.markers, oldProps.markers) && Array.isArray(nextProps.markers)) {\n this.handleMarkers(nextProps.markers);\n } // this doesn't look like it works at all....\n\n\n if (!isEqual(nextProps.scrollMargin, oldProps.scrollMargin)) {\n this.handleScrollMargins(nextProps.scrollMargin);\n }\n\n if (prevProps.height !== this.props.height || prevProps.width !== this.props.width) {\n this.editor.resize();\n }\n\n if (this.props.focus && !prevProps.focus) {\n this.editor.focus();\n }\n };\n\n ReactAce.prototype.handleScrollMargins = function (margins) {\n if (margins === void 0) {\n margins = [0, 0, 0, 0];\n }\n\n this.editor.renderer.setScrollMargins(margins[0], margins[1], margins[2], margins[3]);\n };\n\n ReactAce.prototype.componentWillUnmount = function () {\n this.editor.destroy();\n this.editor = null;\n };\n\n ReactAce.prototype.onChange = function (event) {\n if (this.props.onChange && !this.silent) {\n var value = this.editor.getValue();\n this.props.onChange(value, event);\n }\n };\n\n ReactAce.prototype.onSelectionChange = function (event) {\n if (this.props.onSelectionChange) {\n var value = this.editor.getSelection();\n this.props.onSelectionChange(value, event);\n }\n };\n\n ReactAce.prototype.onCursorChange = function (event) {\n if (this.props.onCursorChange) {\n var value = this.editor.getSelection();\n this.props.onCursorChange(value, event);\n }\n };\n\n ReactAce.prototype.onInput = function (event) {\n if (this.props.onInput) {\n this.props.onInput(event);\n }\n\n if (this.props.placeholder) {\n this.updatePlaceholder();\n }\n };\n\n ReactAce.prototype.onFocus = function (event) {\n if (this.props.onFocus) {\n this.props.onFocus(event, this.editor);\n }\n };\n\n ReactAce.prototype.onBlur = function (event) {\n if (this.props.onBlur) {\n this.props.onBlur(event, this.editor);\n }\n };\n\n ReactAce.prototype.onCopy = function (text) {\n if (this.props.onCopy) {\n this.props.onCopy(text);\n }\n };\n\n ReactAce.prototype.onPaste = function (text) {\n if (this.props.onPaste) {\n this.props.onPaste(text);\n }\n };\n\n ReactAce.prototype.onScroll = function () {\n if (this.props.onScroll) {\n this.props.onScroll(this.editor);\n }\n };\n\n ReactAce.prototype.handleOptions = function (props) {\n var setOptions = Object.keys(props.setOptions);\n\n for (var y = 0; y < setOptions.length; y++) {\n this.editor.setOption(setOptions[y], props.setOptions[setOptions[y]]);\n }\n };\n\n ReactAce.prototype.handleMarkers = function (markers) {\n var _this = this; // remove foreground markers\n\n\n var currentMarkers = this.editor.getSession().getMarkers(true);\n\n for (var i in currentMarkers) {\n if (currentMarkers.hasOwnProperty(i)) {\n this.editor.getSession().removeMarker(currentMarkers[i].id);\n }\n } // remove background markers except active line marker and selected word marker\n\n\n currentMarkers = this.editor.getSession().getMarkers(false);\n\n for (var i in currentMarkers) {\n if (currentMarkers.hasOwnProperty(i) && currentMarkers[i].clazz !== \"ace_active-line\" && currentMarkers[i].clazz !== \"ace_selected-word\") {\n this.editor.getSession().removeMarker(currentMarkers[i].id);\n }\n } // add new markers\n\n\n markers.forEach(function (_a) {\n var startRow = _a.startRow,\n startCol = _a.startCol,\n endRow = _a.endRow,\n endCol = _a.endCol,\n className = _a.className,\n type = _a.type,\n _b = _a.inFront,\n inFront = _b === void 0 ? false : _b;\n var range = new Range(startRow, startCol, endRow, endCol);\n\n _this.editor.getSession().addMarker(range, className, type, inFront);\n });\n };\n\n ReactAce.prototype.updatePlaceholder = function () {\n // Adapted from https://stackoverflow.com/questions/26695708/how-can-i-add-placeholder-text-when-the-editor-is-empty\n var editor = this.editor;\n var placeholder = this.props.placeholder;\n var showPlaceholder = !editor.session.getValue().length;\n var node = editor.renderer.placeholderNode;\n\n if (!showPlaceholder && node) {\n editor.renderer.scroller.removeChild(editor.renderer.placeholderNode);\n editor.renderer.placeholderNode = null;\n } else if (showPlaceholder && !node) {\n node = editor.renderer.placeholderNode = document.createElement(\"div\");\n node.textContent = placeholder || \"\";\n node.className = \"ace_comment ace_placeholder\";\n node.style.padding = \"0 9px\";\n node.style.position = \"absolute\";\n node.style.zIndex = \"3\";\n editor.renderer.scroller.appendChild(node);\n } else if (showPlaceholder && node) {\n node.textContent = placeholder;\n }\n };\n\n ReactAce.prototype.updateRef = function (item) {\n this.refEditor = item;\n };\n\n ReactAce.prototype.render = function () {\n var _a = this.props,\n name = _a.name,\n width = _a.width,\n height = _a.height,\n style = _a.style;\n\n var divStyle = __assign({\n width: width,\n height: height\n }, style);\n\n return React.createElement(\"div\", {\n ref: this.updateRef,\n id: name,\n style: divStyle\n });\n };\n\n ReactAce.propTypes = {\n mode: PropTypes.string,\n focus: PropTypes.bool,\n theme: PropTypes.string,\n name: PropTypes.string,\n className: PropTypes.string,\n height: PropTypes.string,\n width: PropTypes.string,\n fontSize: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n showGutter: PropTypes.bool,\n onChange: PropTypes.func,\n onCopy: PropTypes.func,\n onPaste: PropTypes.func,\n onFocus: PropTypes.func,\n onInput: PropTypes.func,\n onBlur: PropTypes.func,\n onScroll: PropTypes.func,\n value: PropTypes.string,\n defaultValue: PropTypes.string,\n onLoad: PropTypes.func,\n onSelectionChange: PropTypes.func,\n onCursorChange: PropTypes.func,\n onBeforeLoad: PropTypes.func,\n onValidate: PropTypes.func,\n minLines: PropTypes.number,\n maxLines: PropTypes.number,\n readOnly: PropTypes.bool,\n highlightActiveLine: PropTypes.bool,\n tabSize: PropTypes.number,\n showPrintMargin: PropTypes.bool,\n cursorStart: PropTypes.number,\n debounceChangePeriod: PropTypes.number,\n editorProps: PropTypes.object,\n setOptions: PropTypes.object,\n style: PropTypes.object,\n scrollMargin: PropTypes.array,\n annotations: PropTypes.array,\n markers: PropTypes.array,\n keyboardHandler: PropTypes.string,\n wrapEnabled: PropTypes.bool,\n enableSnippets: PropTypes.bool,\n enableBasicAutocompletion: PropTypes.oneOfType([PropTypes.bool, PropTypes.array]),\n enableLiveAutocompletion: PropTypes.oneOfType([PropTypes.bool, PropTypes.array]),\n navigateToFileEnd: PropTypes.bool,\n commands: PropTypes.array,\n placeholder: PropTypes.string\n };\n ReactAce.defaultProps = {\n name: \"brace-editor\",\n focus: false,\n mode: \"\",\n theme: \"\",\n height: \"500px\",\n width: \"500px\",\n value: \"\",\n fontSize: 12,\n enableSnippets: false,\n showGutter: true,\n onChange: null,\n onPaste: null,\n onLoad: null,\n onScroll: null,\n minLines: null,\n maxLines: null,\n readOnly: false,\n highlightActiveLine: true,\n showPrintMargin: true,\n tabSize: 4,\n cursorStart: 1,\n editorProps: {},\n style: {},\n scrollMargin: [0, 0, 0, 0],\n setOptions: {},\n wrapEnabled: false,\n enableBasicAutocompletion: false,\n enableLiveAutocompletion: false,\n placeholder: null,\n navigateToFileEnd: true\n };\n return ReactAce;\n}(React.Component);\n\nexports.default = ReactAce;","\"use strict\";\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar PropTypes = require(\"prop-types\");\n\nvar React = require(\"react\");\n\nvar split_1 = require(\"./split\");\n\nvar DiffMatchPatch = require(\"diff-match-patch\");\n\nvar DiffComponent = function (_super) {\n __extends(DiffComponent, _super);\n\n function DiffComponent(props) {\n var _this = _super.call(this, props) || this;\n\n _this.state = {\n value: _this.props.value\n };\n _this.onChange = _this.onChange.bind(_this);\n _this.diff = _this.diff.bind(_this);\n return _this;\n }\n\n DiffComponent.prototype.componentDidUpdate = function () {\n var value = this.props.value;\n\n if (value !== this.state.value) {\n this.setState({\n value: value\n });\n }\n };\n\n DiffComponent.prototype.onChange = function (value) {\n this.setState({\n value: value\n });\n\n if (this.props.onChange) {\n this.props.onChange(value);\n }\n };\n\n DiffComponent.prototype.diff = function () {\n var dmp = new DiffMatchPatch();\n var lhString = this.state.value[0];\n var rhString = this.state.value[1];\n\n if (lhString.length === 0 && rhString.length === 0) {\n return [];\n }\n\n var diff = dmp.diff_main(lhString, rhString);\n dmp.diff_cleanupSemantic(diff);\n var diffedLines = this.generateDiffedLines(diff);\n var codeEditorSettings = this.setCodeMarkers(diffedLines);\n return codeEditorSettings;\n };\n\n DiffComponent.prototype.generateDiffedLines = function (diff) {\n var C = {\n DIFF_EQUAL: 0,\n DIFF_DELETE: -1,\n DIFF_INSERT: 1\n };\n var diffedLines = {\n left: [],\n right: []\n };\n var cursor = {\n left: 1,\n right: 1\n };\n diff.forEach(function (chunk) {\n var chunkType = chunk[0];\n var text = chunk[1];\n var lines = text.split(\"\\n\").length - 1; // diff-match-patch sometimes returns empty strings at random\n\n if (text.length === 0) {\n return;\n }\n\n var firstChar = text[0];\n var lastChar = text[text.length - 1];\n var linesToHighlight = 0;\n\n switch (chunkType) {\n case C.DIFF_EQUAL:\n cursor.left += lines;\n cursor.right += lines;\n break;\n\n case C.DIFF_DELETE:\n // If the deletion starts with a newline, push the cursor down to that line\n if (firstChar === \"\\n\") {\n cursor.left++;\n lines--;\n }\n\n linesToHighlight = lines; // If the deletion does not include a newline, highlight the same line on the right\n\n if (linesToHighlight === 0) {\n diffedLines.right.push({\n startLine: cursor.right,\n endLine: cursor.right\n });\n } // If the last character is a newline, we don't want to highlight that line\n\n\n if (lastChar === \"\\n\") {\n linesToHighlight -= 1;\n }\n\n diffedLines.left.push({\n startLine: cursor.left,\n endLine: cursor.left + linesToHighlight\n });\n cursor.left += lines;\n break;\n\n case C.DIFF_INSERT:\n // If the insertion starts with a newline, push the cursor down to that line\n if (firstChar === \"\\n\") {\n cursor.right++;\n lines--;\n }\n\n linesToHighlight = lines; // If the insertion does not include a newline, highlight the same line on the left\n\n if (linesToHighlight === 0) {\n diffedLines.left.push({\n startLine: cursor.left,\n endLine: cursor.left\n });\n } // If the last character is a newline, we don't want to highlight that line\n\n\n if (lastChar === \"\\n\") {\n linesToHighlight -= 1;\n }\n\n diffedLines.right.push({\n startLine: cursor.right,\n endLine: cursor.right + linesToHighlight\n });\n cursor.right += lines;\n break;\n\n default:\n throw new Error(\"Diff type was not defined.\");\n }\n });\n return diffedLines;\n }; // Receives a collection of line numbers and iterates through them to highlight appropriately\n // Returns an object that tells the render() method how to display the code editors\n\n\n DiffComponent.prototype.setCodeMarkers = function (diffedLines) {\n if (diffedLines === void 0) {\n diffedLines = {\n left: [],\n right: []\n };\n }\n\n var codeEditorSettings = [];\n var newMarkerSet = {\n left: [],\n right: []\n };\n\n for (var i = 0; i < diffedLines.left.length; i++) {\n var markerObj = {\n startRow: diffedLines.left[i].startLine - 1,\n endRow: diffedLines.left[i].endLine,\n type: \"text\",\n className: \"codeMarker\"\n };\n newMarkerSet.left.push(markerObj);\n }\n\n for (var i = 0; i < diffedLines.right.length; i++) {\n var markerObj = {\n startRow: diffedLines.right[i].startLine - 1,\n endRow: diffedLines.right[i].endLine,\n type: \"text\",\n className: \"codeMarker\"\n };\n newMarkerSet.right.push(markerObj);\n }\n\n codeEditorSettings[0] = newMarkerSet.left;\n codeEditorSettings[1] = newMarkerSet.right;\n return codeEditorSettings;\n };\n\n DiffComponent.prototype.render = function () {\n var markers = this.diff();\n return React.createElement(split_1.default, {\n name: this.props.name,\n className: this.props.className,\n focus: this.props.focus,\n orientation: this.props.orientation,\n splits: this.props.splits,\n mode: this.props.mode,\n theme: this.props.theme,\n height: this.props.height,\n width: this.props.width,\n fontSize: this.props.fontSize,\n showGutter: this.props.showGutter,\n onChange: this.onChange,\n onPaste: this.props.onPaste,\n onLoad: this.props.onLoad,\n onScroll: this.props.onScroll,\n minLines: this.props.minLines,\n maxLines: this.props.maxLines,\n readOnly: this.props.readOnly,\n highlightActiveLine: this.props.highlightActiveLine,\n showPrintMargin: this.props.showPrintMargin,\n tabSize: this.props.tabSize,\n cursorStart: this.props.cursorStart,\n editorProps: this.props.editorProps,\n style: this.props.style,\n scrollMargin: this.props.scrollMargin,\n setOptions: this.props.setOptions,\n wrapEnabled: this.props.wrapEnabled,\n enableBasicAutocompletion: this.props.enableBasicAutocompletion,\n enableLiveAutocompletion: this.props.enableLiveAutocompletion,\n value: this.state.value,\n markers: markers\n });\n };\n\n DiffComponent.propTypes = {\n cursorStart: PropTypes.number,\n editorProps: PropTypes.object,\n enableBasicAutocompletion: PropTypes.bool,\n enableLiveAutocompletion: PropTypes.bool,\n focus: PropTypes.bool,\n fontSize: PropTypes.number,\n height: PropTypes.string,\n highlightActiveLine: PropTypes.bool,\n maxLines: PropTypes.number,\n minLines: PropTypes.number,\n mode: PropTypes.string,\n name: PropTypes.string,\n className: PropTypes.string,\n onLoad: PropTypes.func,\n onPaste: PropTypes.func,\n onScroll: PropTypes.func,\n onChange: PropTypes.func,\n orientation: PropTypes.string,\n readOnly: PropTypes.bool,\n scrollMargin: PropTypes.array,\n setOptions: PropTypes.object,\n showGutter: PropTypes.bool,\n showPrintMargin: PropTypes.bool,\n splits: PropTypes.number,\n style: PropTypes.object,\n tabSize: PropTypes.number,\n theme: PropTypes.string,\n value: PropTypes.array,\n width: PropTypes.string,\n wrapEnabled: PropTypes.bool\n };\n DiffComponent.defaultProps = {\n cursorStart: 1,\n editorProps: {},\n enableBasicAutocompletion: false,\n enableLiveAutocompletion: false,\n focus: false,\n fontSize: 12,\n height: \"500px\",\n highlightActiveLine: true,\n maxLines: null,\n minLines: null,\n mode: \"\",\n name: \"brace-editor\",\n onLoad: null,\n onScroll: null,\n onPaste: null,\n onChange: null,\n orientation: \"beside\",\n readOnly: false,\n scrollMargin: [0, 0, 0, 0],\n setOptions: {},\n showGutter: true,\n showPrintMargin: true,\n splits: 2,\n style: {},\n tabSize: 4,\n theme: \"github\",\n value: [\"\", \"\"],\n width: \"500px\",\n wrapEnabled: true\n };\n return DiffComponent;\n}(React.Component);\n\nexports.default = DiffComponent;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar editorOptions = [\"minLines\", \"maxLines\", \"readOnly\", \"highlightActiveLine\", \"tabSize\", \"enableBasicAutocompletion\", \"enableLiveAutocompletion\", \"enableSnippets\"];\nexports.editorOptions = editorOptions;\nvar editorEvents = [\"onChange\", \"onFocus\", \"onInput\", \"onBlur\", \"onCopy\", \"onPaste\", \"onSelectionChange\", \"onCursorChange\", \"onScroll\", \"handleOptions\", \"updateRef\"];\nexports.editorEvents = editorEvents;\n\nvar getAceInstance = function getAceInstance() {\n var ace; // Fallback for ace.require when vanilla ACE is hosted over a CDN\n\n if (window.ace) {\n ace = window.ace;\n ace.acequire = window.ace.require || window.ace.acequire;\n } else {\n ace = require(\"brace\");\n }\n\n return ace;\n};\n\nexports.getAceInstance = getAceInstance;\n\nvar debounce = function debounce(fn, delay) {\n var timer = null;\n return function () {\n var context = this;\n var args = arguments;\n clearTimeout(timer);\n timer = setTimeout(function () {\n fn.apply(context, args);\n }, delay);\n };\n};\n\nexports.debounce = debounce;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar ace_1 = require(\"./ace\");\n\nvar diff_1 = require(\"./diff\");\n\nexports.diff = diff_1.default;\n\nvar split_1 = require(\"./split\");\n\nexports.split = split_1.default;\nexports.default = ace_1.default;","\"use strict\";\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar editorOptions_1 = require(\"./editorOptions\");\n\nvar ace = editorOptions_1.getAceInstance();\n\nrequire(\"brace\");\n\nvar Range = ace.acequire(\"ace/range\").Range;\n\nrequire(\"brace/ext/split\");\n\nvar Split = ace.acequire(\"ace/split\").Split;\n\nvar PropTypes = require(\"prop-types\");\n\nvar React = require(\"react\");\n\nvar isEqual = require(\"lodash.isequal\");\n\nvar get = require(\"lodash.get\");\n\nvar SplitComponent = function (_super) {\n __extends(SplitComponent, _super);\n\n function SplitComponent(props) {\n var _this = _super.call(this, props) || this;\n\n editorOptions_1.editorEvents.forEach(function (method) {\n _this[method] = _this[method].bind(_this);\n });\n _this.debounce = editorOptions_1.debounce;\n return _this;\n }\n\n SplitComponent.prototype.componentDidMount = function () {\n var _this = this;\n\n var _a = this.props,\n className = _a.className,\n onBeforeLoad = _a.onBeforeLoad,\n mode = _a.mode,\n focus = _a.focus,\n theme = _a.theme,\n fontSize = _a.fontSize,\n value = _a.value,\n defaultValue = _a.defaultValue,\n cursorStart = _a.cursorStart,\n showGutter = _a.showGutter,\n wrapEnabled = _a.wrapEnabled,\n showPrintMargin = _a.showPrintMargin,\n _b = _a.scrollMargin,\n scrollMargin = _b === void 0 ? [0, 0, 0, 0] : _b,\n keyboardHandler = _a.keyboardHandler,\n onLoad = _a.onLoad,\n commands = _a.commands,\n annotations = _a.annotations,\n markers = _a.markers,\n splits = _a.splits;\n this.editor = ace.edit(this.refEditor);\n\n if (onBeforeLoad) {\n onBeforeLoad(ace);\n }\n\n var editorProps = Object.keys(this.props.editorProps);\n var split = new Split(this.editor.container, \"ace/theme/\" + theme, splits);\n this.editor.env.split = split;\n this.splitEditor = split.getEditor(0);\n this.split = split; // in a split scenario we don't want a print margin for the entire application\n\n this.editor.setShowPrintMargin(false);\n this.editor.renderer.setShowGutter(false); // get a list of possible options to avoid 'misspelled option errors'\n\n var availableOptions = this.splitEditor.$options;\n\n if (this.props.debounceChangePeriod) {\n this.onChange = this.debounce(this.onChange, this.props.debounceChangePeriod);\n }\n\n split.forEach(function (editor, index) {\n for (var i = 0; i < editorProps.length; i++) {\n editor[editorProps[i]] = _this.props.editorProps[editorProps[i]];\n }\n\n var defaultValueForEditor = get(defaultValue, index);\n var valueForEditor = get(value, index, \"\");\n editor.session.setUndoManager(new ace.UndoManager());\n editor.setTheme(\"ace/theme/\" + theme);\n editor.renderer.setScrollMargin(scrollMargin[0], scrollMargin[1], scrollMargin[2], scrollMargin[3]);\n editor.getSession().setMode(\"ace/mode/\" + mode);\n editor.setFontSize(fontSize);\n editor.renderer.setShowGutter(showGutter);\n editor.getSession().setUseWrapMode(wrapEnabled);\n editor.setShowPrintMargin(showPrintMargin);\n editor.on(\"focus\", _this.onFocus);\n editor.on(\"blur\", _this.onBlur);\n editor.on(\"input\", _this.onInput);\n editor.on(\"copy\", _this.onCopy);\n editor.on(\"paste\", _this.onPaste);\n editor.on(\"change\", _this.onChange);\n editor.getSession().selection.on(\"changeSelection\", _this.onSelectionChange);\n editor.getSession().selection.on(\"changeCursor\", _this.onCursorChange);\n editor.session.on(\"changeScrollTop\", _this.onScroll);\n editor.setValue(defaultValueForEditor === undefined ? valueForEditor : defaultValueForEditor, cursorStart);\n var newAnnotations = get(annotations, index, []);\n var newMarkers = get(markers, index, []);\n editor.getSession().setAnnotations(newAnnotations);\n\n if (newMarkers && newMarkers.length > 0) {\n _this.handleMarkers(newMarkers, editor);\n }\n\n for (var i = 0; i < editorOptions_1.editorOptions.length; i++) {\n var option = editorOptions_1.editorOptions[i];\n\n if (availableOptions.hasOwnProperty(option)) {\n editor.setOption(option, _this.props[option]);\n } else if (_this.props[option]) {\n console.warn(\"ReaceAce: editor option \" + option + \" was activated but not found. Did you need to import a related tool or did you possibly mispell the option?\");\n }\n }\n\n _this.handleOptions(_this.props, editor);\n\n if (Array.isArray(commands)) {\n commands.forEach(function (command) {\n if (typeof command.exec === \"string\") {\n editor.commands.bindKey(command.bindKey, command.exec);\n } else {\n editor.commands.addCommand(command);\n }\n });\n }\n\n if (keyboardHandler) {\n editor.setKeyboardHandler(\"ace/keyboard/\" + keyboardHandler);\n }\n });\n\n if (className) {\n this.refEditor.className += \" \" + className;\n }\n\n if (focus) {\n this.splitEditor.focus();\n }\n\n var sp = this.editor.env.split;\n sp.setOrientation(this.props.orientation === \"below\" ? sp.BELOW : sp.BESIDE);\n sp.resize(true);\n\n if (onLoad) {\n onLoad(sp);\n }\n };\n\n SplitComponent.prototype.componentDidUpdate = function (prevProps) {\n var _this = this;\n\n var oldProps = prevProps;\n var nextProps = this.props;\n var split = this.editor.env.split;\n\n if (nextProps.splits !== oldProps.splits) {\n split.setSplits(nextProps.splits);\n }\n\n if (nextProps.orientation !== oldProps.orientation) {\n split.setOrientation(nextProps.orientation === \"below\" ? split.BELOW : split.BESIDE);\n }\n\n split.forEach(function (editor, index) {\n if (nextProps.mode !== oldProps.mode) {\n editor.getSession().setMode(\"ace/mode/\" + nextProps.mode);\n }\n\n if (nextProps.keyboardHandler !== oldProps.keyboardHandler) {\n if (nextProps.keyboardHandler) {\n editor.setKeyboardHandler(\"ace/keyboard/\" + nextProps.keyboardHandler);\n } else {\n editor.setKeyboardHandler(null);\n }\n }\n\n if (nextProps.fontSize !== oldProps.fontSize) {\n editor.setFontSize(nextProps.fontSize);\n }\n\n if (nextProps.wrapEnabled !== oldProps.wrapEnabled) {\n editor.getSession().setUseWrapMode(nextProps.wrapEnabled);\n }\n\n if (nextProps.showPrintMargin !== oldProps.showPrintMargin) {\n editor.setShowPrintMargin(nextProps.showPrintMargin);\n }\n\n if (nextProps.showGutter !== oldProps.showGutter) {\n editor.renderer.setShowGutter(nextProps.showGutter);\n }\n\n for (var i = 0; i < editorOptions_1.editorOptions.length; i++) {\n var option = editorOptions_1.editorOptions[i];\n\n if (nextProps[option] !== oldProps[option]) {\n editor.setOption(option, nextProps[option]);\n }\n }\n\n if (!isEqual(nextProps.setOptions, oldProps.setOptions)) {\n _this.handleOptions(nextProps, editor);\n }\n\n var nextValue = get(nextProps.value, index, \"\");\n\n if (editor.getValue() !== nextValue) {\n // editor.setValue is a synchronous function call, change event is emitted before setValue return.\n _this.silent = true;\n var pos = editor.session.selection.toJSON();\n editor.setValue(nextValue, nextProps.cursorStart);\n editor.session.selection.fromJSON(pos);\n _this.silent = false;\n }\n\n var newAnnotations = get(nextProps.annotations, index, []);\n var oldAnnotations = get(oldProps.annotations, index, []);\n\n if (!isEqual(newAnnotations, oldAnnotations)) {\n editor.getSession().setAnnotations(newAnnotations);\n }\n\n var newMarkers = get(nextProps.markers, index, []);\n var oldMarkers = get(oldProps.markers, index, []);\n\n if (!isEqual(newMarkers, oldMarkers) && Array.isArray(newMarkers)) {\n _this.handleMarkers(newMarkers, editor);\n }\n });\n\n if (nextProps.className !== oldProps.className) {\n var appliedClasses = this.refEditor.className;\n var appliedClassesArray_1 = appliedClasses.trim().split(\" \");\n var oldClassesArray = oldProps.className.trim().split(\" \");\n oldClassesArray.forEach(function (oldClass) {\n var index = appliedClassesArray_1.indexOf(oldClass);\n appliedClassesArray_1.splice(index, 1);\n });\n this.refEditor.className = \" \" + nextProps.className + \" \" + appliedClassesArray_1.join(\" \");\n }\n\n if (nextProps.theme !== oldProps.theme) {\n split.setTheme(\"ace/theme/\" + nextProps.theme);\n }\n\n if (nextProps.focus && !oldProps.focus) {\n this.splitEditor.focus();\n }\n\n if (nextProps.height !== this.props.height || nextProps.width !== this.props.width) {\n this.editor.resize();\n }\n };\n\n SplitComponent.prototype.componentWillUnmount = function () {\n this.editor.destroy();\n this.editor = null;\n };\n\n SplitComponent.prototype.onChange = function (event) {\n if (this.props.onChange && !this.silent) {\n var value_1 = [];\n this.editor.env.split.forEach(function (editor) {\n value_1.push(editor.getValue());\n });\n this.props.onChange(value_1, event);\n }\n };\n\n SplitComponent.prototype.onSelectionChange = function (event) {\n if (this.props.onSelectionChange) {\n var value_2 = [];\n this.editor.env.split.forEach(function (editor) {\n value_2.push(editor.getSelection());\n });\n this.props.onSelectionChange(value_2, event);\n }\n };\n\n SplitComponent.prototype.onCursorChange = function (event) {\n if (this.props.onCursorChange) {\n var value_3 = [];\n this.editor.env.split.forEach(function (editor) {\n value_3.push(editor.getSelection());\n });\n this.props.onCursorChange(value_3, event);\n }\n };\n\n SplitComponent.prototype.onFocus = function (event) {\n if (this.props.onFocus) {\n this.props.onFocus(event);\n }\n };\n\n SplitComponent.prototype.onInput = function (event) {\n if (this.props.onInput) {\n this.props.onInput(event);\n }\n };\n\n SplitComponent.prototype.onBlur = function (event) {\n if (this.props.onBlur) {\n this.props.onBlur(event);\n }\n };\n\n SplitComponent.prototype.onCopy = function (text) {\n if (this.props.onCopy) {\n this.props.onCopy(text);\n }\n };\n\n SplitComponent.prototype.onPaste = function (text) {\n if (this.props.onPaste) {\n this.props.onPaste(text);\n }\n };\n\n SplitComponent.prototype.onScroll = function () {\n if (this.props.onScroll) {\n this.props.onScroll(this.editor);\n }\n };\n\n SplitComponent.prototype.handleOptions = function (props, editor) {\n var setOptions = Object.keys(props.setOptions);\n\n for (var y = 0; y < setOptions.length; y++) {\n editor.setOption(setOptions[y], props.setOptions[setOptions[y]]);\n }\n };\n\n SplitComponent.prototype.handleMarkers = function (markers, editor) {\n // remove foreground markers\n var currentMarkers = editor.getSession().getMarkers(true);\n\n for (var i in currentMarkers) {\n if (currentMarkers.hasOwnProperty(i)) {\n editor.getSession().removeMarker(currentMarkers[i].id);\n }\n } // remove background markers\n\n\n currentMarkers = editor.getSession().getMarkers(false);\n\n for (var i in currentMarkers) {\n if (currentMarkers.hasOwnProperty(i)) {\n editor.getSession().removeMarker(currentMarkers[i].id);\n }\n } // add new markers\n\n\n markers.forEach(function (_a) {\n var startRow = _a.startRow,\n startCol = _a.startCol,\n endRow = _a.endRow,\n endCol = _a.endCol,\n className = _a.className,\n type = _a.type,\n _b = _a.inFront,\n inFront = _b === void 0 ? false : _b;\n var range = new Range(startRow, startCol, endRow, endCol);\n editor.getSession().addMarker(range, className, type, inFront);\n });\n };\n\n SplitComponent.prototype.updateRef = function (item) {\n this.refEditor = item;\n };\n\n SplitComponent.prototype.render = function () {\n var _a = this.props,\n name = _a.name,\n width = _a.width,\n height = _a.height,\n style = _a.style;\n\n var divStyle = __assign({\n width: width,\n height: height\n }, style);\n\n return React.createElement(\"div\", {\n ref: this.updateRef,\n id: name,\n style: divStyle\n });\n };\n\n SplitComponent.propTypes = {\n className: PropTypes.string,\n debounceChangePeriod: PropTypes.number,\n defaultValue: PropTypes.arrayOf(PropTypes.string),\n focus: PropTypes.bool,\n fontSize: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n height: PropTypes.string,\n mode: PropTypes.string,\n name: PropTypes.string,\n onBlur: PropTypes.func,\n onChange: PropTypes.func,\n onCopy: PropTypes.func,\n onFocus: PropTypes.func,\n onInput: PropTypes.func,\n onLoad: PropTypes.func,\n onPaste: PropTypes.func,\n onScroll: PropTypes.func,\n orientation: PropTypes.string,\n showGutter: PropTypes.bool,\n splits: PropTypes.number,\n theme: PropTypes.string,\n value: PropTypes.arrayOf(PropTypes.string),\n width: PropTypes.string,\n onSelectionChange: PropTypes.func,\n onCursorChange: PropTypes.func,\n onBeforeLoad: PropTypes.func,\n minLines: PropTypes.number,\n maxLines: PropTypes.number,\n readOnly: PropTypes.bool,\n highlightActiveLine: PropTypes.bool,\n tabSize: PropTypes.number,\n showPrintMargin: PropTypes.bool,\n cursorStart: PropTypes.number,\n editorProps: PropTypes.object,\n setOptions: PropTypes.object,\n style: PropTypes.object,\n scrollMargin: PropTypes.array,\n annotations: PropTypes.array,\n markers: PropTypes.array,\n keyboardHandler: PropTypes.string,\n wrapEnabled: PropTypes.bool,\n enableBasicAutocompletion: PropTypes.oneOfType([PropTypes.bool, PropTypes.array]),\n enableLiveAutocompletion: PropTypes.oneOfType([PropTypes.bool, PropTypes.array]),\n commands: PropTypes.array\n };\n SplitComponent.defaultProps = {\n name: \"brace-editor\",\n focus: false,\n orientation: \"beside\",\n splits: 2,\n mode: \"\",\n theme: \"\",\n height: \"500px\",\n width: \"500px\",\n value: [],\n fontSize: 12,\n showGutter: true,\n onChange: null,\n onPaste: null,\n onLoad: null,\n onScroll: null,\n minLines: null,\n maxLines: null,\n readOnly: false,\n highlightActiveLine: true,\n showPrintMargin: true,\n tabSize: 4,\n cursorStart: 1,\n editorProps: {},\n style: {},\n scrollMargin: [0, 0, 0, 0],\n setOptions: {},\n wrapEnabled: false,\n enableBasicAutocompletion: false,\n enableLiveAutocompletion: false\n };\n return SplitComponent;\n}(React.Component);\n\nexports.default = SplitComponent;","import { css } from \"styled-components\";\n\nconst backgroundColoursCss = (backgroundColors: string[] | undefined) => {\n let percentageMultiplier = 0;\n let backgroundGradientColors = \"\";\n\n // Return empty css if no colours are given\n if (!backgroundColors || backgroundColors.length === 0) {\n return css``;\n }\n\n // Return a single colour if 1 colour is given\n if (backgroundColors.length === 1) {\n return css`\n background: ${backgroundColors[ 0 ]};\n `;\n }\n\n // Set the percentageMultiplier\n percentageMultiplier = 100 / (backgroundColors.length - 1) / 100;\n\n // Generate the backgroundGradientColors string\n backgroundColors.map((color, i) => {\n let percentage = 100 * (i * percentageMultiplier);\n\n // Force the 1st colour percentage to 0\n if (i === 0) {\n percentage = 0;\n }\n\n // Force the last colour percentage to 100\n if (i === backgroundColors.length - 1) {\n percentage = 100;\n }\n\n backgroundGradientColors = `${backgroundGradientColors}, ${color} ${percentage}%`;\n });\n\n // Return a gradient if multiple colours are given\n return css`\n background: ${backgroundColors[ 0 ]};\n background: -webkit-linear-gradient(-45deg ${backgroundGradientColors});\n background: linear-gradient(135deg ${backgroundGradientColors});\n `;\n};\n\nexport default backgroundColoursCss;\n","import * as React from \"react\";\n\nimport backgroundColoursCss from \"../../templates/utils/backgroundColoursCss\";\nimport styled from \"../../theme/styled\";\nimport DynamicImage from \"../dynamic-image\";\nimport {\n DynamicWrapper,\n IFieldTechnicalArticle,\n IFieldTechnicalArticleColumnType\n} from \"./field-technical-article\";\n\ninterface IProps {\n type: IFieldTechnicalArticleColumnType;\n content: IFieldTechnicalArticle;\n}\n\ninterface IParagraphBoxOutImageColumnWidthWrapper {\n className: string;\n type: IFieldTechnicalArticleColumnType;\n backgroundColors?: string[];\n}\n\nconst ParagraphBoxOutImageColumnWidthWrapper = styled<\n IParagraphBoxOutImageColumnWidthWrapper,\n \"div\"\n>(\"div\")`\n .content-container {\n ${props => backgroundColoursCss(props.backgroundColors)};\n\n .content-wrapper {\n .image {\n padding-top: 8%;\n width: 100%;\n\n &:first-child {\n padding-top: 0;\n }\n }\n }\n }\n`;\n\nconst ParagraphBoxOutImageColumnWidth = ({ type, content }: IProps) => {\n const imgRel = content.relationships;\n const image = imgRel && imgRel.field_image;\n const backgroundColors = content.field_background_colour_s_;\n\n if (!image) {\n return null;\n }\n\n return (\n \n
\n \n
\n \n
\n
\n
\n \n );\n};\n\nexport default ParagraphBoxOutImageColumnWidth;\n","import * as React from \"react\";\n\nimport backgroundColoursCss from \"../../templates/utils/backgroundColoursCss\";\nimport styled from \"../../theme/styled\";\nimport { HalfColumnWidthWrapper } from \"../confines-wrappers\";\nimport DynamicImage from \"../dynamic-image\";\nimport {\n IFieldTechnicalArticle,\n IFieldTechnicalArticleColumnType\n} from \"./field-technical-article\";\n\ninterface IProps {\n type: IFieldTechnicalArticleColumnType;\n content: IFieldTechnicalArticle;\n}\n\ninterface IParagraphBoxOutImageHalfColumnWidthWrapper {\n className: string;\n type: IFieldTechnicalArticleColumnType;\n backgroundColors?: string[];\n}\n\nconst ParagraphBoxOutImageHalfColumnWidthWrapper = styled<\n IParagraphBoxOutImageHalfColumnWidthWrapper,\n \"div\"\n>(\"div\")`\n .content-container {\n ${props => backgroundColoursCss(props.backgroundColors)};\n\n .content-wrapper {\n .image {\n padding-top: 8%;\n width: 100%;\n\n &:first-child {\n padding-top: 0;\n }\n }\n }\n }\n`;\n\nconst ParagraphBoxOutImageHalfColumnWidth = ({ type, content }: IProps) => {\n const imgRel = content.relationships;\n const image = imgRel && imgRel.field_image;\n const backgroundColors = content.field_background_colour_s_;\n\n if (!image) {\n return null;\n }\n\n return (\n \n
\n \n \n \n
\n \n );\n};\n\nexport default ParagraphBoxOutImageHalfColumnWidth;\n","import * as React from \"react\";\n\nimport backgroundColoursCss from \"../../templates/utils/backgroundColoursCss\";\nimport styled from \"../../theme/styled\";\nimport DynamicImage from \"../dynamic-image\";\nimport {\n DynamicWrapper,\n IFieldTechnicalArticle,\n IFieldTechnicalArticleColumnType\n} from \"./field-technical-article\";\n\ninterface IProps {\n type: IFieldTechnicalArticleColumnType;\n content: IFieldTechnicalArticle;\n}\n\ninterface IParagraphBoxOutSideBySideImagesColumn {\n className: string;\n type: IFieldTechnicalArticleColumnType;\n backgroundColors?: string[];\n}\n\nconst ParagraphBoxOutSideBySideImagesColumnWrapper = styled<\n IParagraphBoxOutSideBySideImagesColumn,\n \"div\"\n>(\"div\")`\n .content-container {\n ${props => backgroundColoursCss(props.backgroundColors)};\n\n .content-wrapper {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n\n .image {\n padding-top: 8%;\n width: 100%;\n\n &:first-child {\n padding-top: 0;\n }\n }\n }\n }\n\n @media (min-width: 600px) {\n .content-container {\n .content-wrapper {\n .image {\n padding-top: 4.4rem;\n }\n }\n }\n }\n\n @media (min-width: 768px) {\n .content-container {\n .content-wrapper {\n flex-direction: row;\n\n .image {\n padding-top: 0;\n width: 50%;\n\n &:nth-child(odd) {\n padding-right: 2%;\n }\n\n &:nth-child(even) {\n padding-left: 2%;\n }\n }\n }\n }\n }\n`;\n\nconst ParagraphBoxOutSideBySideImagesColumn = ({ type, content }: IProps) => {\n const imgRels = content.relationships;\n const images = imgRels && imgRels.field_images ? imgRels.field_images : [];\n const backgroundColors = content.field_background_colour_s_;\n\n if (images.length === 0) {\n return null;\n }\n\n return (\n \n
\n \n
\n {images &&\n images.map((image, i: number) => (\n \n \n
\n ))}\n
\n \n \n \n );\n};\n\nexport default ParagraphBoxOutSideBySideImagesColumn;\n","import * as React from \"react\";\n\nimport backgroundColoursCss from \"../../templates/utils/backgroundColoursCss\";\nimport styled from \"../../theme/styled\";\nimport { MediumColumnWidthWrapper } from \"../confines-wrappers\";\nimport DynamicImage from \"../dynamic-image\";\nimport {\n IFieldTechnicalArticle,\n IFieldTechnicalArticleColumnType\n} from \"./field-technical-article\";\n\ninterface IProps {\n type: IFieldTechnicalArticleColumnType;\n content: IFieldTechnicalArticle;\n}\n\ninterface IParagraphBoxOutStackedImagesWrapper {\n className: string;\n type: IFieldTechnicalArticleColumnType;\n backgroundColors?: string[];\n}\n\nconst ParagraphBoxOutStackedImagesWrapper = styled<\n IParagraphBoxOutStackedImagesWrapper,\n \"div\"\n>(\"div\")`\n .content-container {\n ${props => backgroundColoursCss(props.backgroundColors)};\n\n .content-wrapper {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n\n .image {\n padding-top: 8%;\n width: 100%;\n\n &:first-child {\n padding-top: 0;\n }\n }\n }\n }\n\n @media (min-width: 600px) {\n .content-container {\n .content-wrapper {\n .image {\n padding-top: 4.4rem;\n }\n }\n }\n }\n`;\n\nconst ParagraphBoxOutStackedImages = ({ type, content }: IProps) => {\n const imgRels = content.relationships;\n const images = imgRels && imgRels.field_images ? imgRels.field_images : [];\n const backgroundColors = content.field_background_colour_s_;\n\n if (images.length === 0) {\n return null;\n }\n\n return (\n \n
\n \n {images &&\n images.map((image, i: number) => (\n \n \n
\n ))}\n \n \n \n );\n};\n\nexport default ParagraphBoxOutStackedImages;\n","import React from \"react\";\n\nimport {\n IFluid,\n ILocalFile\n} from \"../../types/local-files\";\nimport TestimonialCarousel from \"../testimonial-carousel\";\nimport {\n IFieldTechnicalArticle,\n IFieldTechnicalArticleColumnType\n} from \"./field-technical-article\";\n\ninterface IProps {\n type: IFieldTechnicalArticleColumnType;\n content: IFieldTechnicalArticle;\n}\n\nexport interface IParagraphTestimonial {\n field_testimonial: string;\n field_testimonial_name: string;\n field_testimonial_role: string;\n field_testimonial_company: string;\n relationships?: {\n field_testimonial_company_logo?: ILocalFile;\n };\n}\n\nconst ParagraphBoxOutTestimonials = ({ content }: IProps) => {\n const rel = content.relationships || null;\n const testimonials = rel ? rel.field_testimonial_item : null;\n\n if (!testimonials || testimonials.length === 0) {\n return null;\n }\n\n return (\n {\n const tRel = testimonial.relationships || null;\n const logo = tRel ? tRel.field_testimonial_company_logo : null;\n\n const src =\n logo &&\n logo.localFile.childImageSharp &&\n logo.localFile.childImageSharp.fluid ?\n logo.localFile.childImageSharp.fluid.src :\n undefined;\n\n return {\n testimonial: testimonial.field_testimonial,\n name: testimonial.field_testimonial_name,\n role: testimonial.field_testimonial_role,\n company: testimonial.field_testimonial_company,\n company_logo: src\n };\n })}\n />\n );\n};\n\nexport default ParagraphBoxOutTestimonials;\n","import React from \"react\";\n\nimport styled from \"../../theme/styled\";\nimport {\n colourHelper,\n fontLineHeightHelper,\n fontSizeHelper,\n fontSpaceHelper,\n fontWeightHelper\n} from \"../../theme/theme-helper\";\nimport { SmallColumnWidthWrapper } from \"../confines-wrappers\";\nimport Link from \"../link\";\nimport Wysiwyg from \"../wysiwyg\";\nimport {\n IFieldTechnicalArticle,\n IFieldTechnicalArticleColumnType\n} from \"./field-technical-article\";\n\ninterface IProps {\n type?: IFieldTechnicalArticleColumnType;\n content: IFieldTechnicalArticle;\n}\n\nconst ParagraphTextBoxOutContainer = styled.div`\n * {\n transform: 0.2s ease-in-out;\n text-align: center;\n }\n\n .content-container {\n background: ${({ theme }) =>\n colourHelper({\n theme,\n variant: \"lightestGrey\"\n })};\n\n h2 {\n margin: 0;\n padding: 0;\n color: ${({ theme }) => colourHelper({\n theme,\n variant: \"brandColor\"\n })};\n font-size: ${({ theme }) => fontSizeHelper({\n theme,\n variant: \"body_1\"\n })};\n font-weight: ${({ theme }) =>\n fontWeightHelper({\n theme,\n variant: \"bold\"\n })};\n line-height: ${({ theme }) =>\n fontLineHeightHelper({\n theme,\n variant: \"normalized\"\n })};\n letter-spacing: ${({ theme }) =>\n fontSpaceHelper({\n theme,\n variant: \"medium\"\n })};\n text-transform: uppercase;\n }\n\n p {\n transform: 0.2s ease-in-out;\n margin-bottom: 0;\n padding-top: ${({ theme }) =>\n fontLineHeightHelper({\n theme,\n variant: \"small\"\n })};\n font-size: ${({ theme }) => fontSizeHelper({\n theme,\n variant: \"body_2\"\n })};\n font-weight: ${({ theme }) =>\n fontWeightHelper({\n theme,\n variant: \"bold\"\n })};\n line-height: ${({ theme }) =>\n fontLineHeightHelper({\n theme,\n variant: \"default\"\n })};\n\n &.more-link {\n padding-top: 5.8rem;\n font-size: ${({ theme }) =>\n fontSizeHelper({\n theme,\n variant: \"small_3\"\n })};\n }\n }\n }\n\n @media (min-width: 480px) {\n .content-container {\n p {\n font-size: ${({ theme }) =>\n fontSizeHelper({\n theme,\n variant: \"subhead_1\"\n })};\n }\n }\n }\n\n @media (min-width: 600px) {\n .content-container {\n p {\n font-size: ${({ theme }) =>\n fontSizeHelper({\n theme,\n variant: \"subhead_2\"\n })};\n\n &.more-link {\n padding-top: 7.2rem;\n font-size: ${({ theme }) =>\n fontSizeHelper({\n theme,\n variant: \"body_1\"\n })};\n }\n }\n }\n }\n\n @media (min-width: 960px) {\n .content-container {\n h2 {\n font-size: ${({ theme }) =>\n fontSizeHelper({\n theme,\n variant: \"body_2\"\n })};\n }\n\n p {\n font-size: ${({ theme }) =>\n fontSizeHelper({\n theme,\n variant: \"subhead_3\"\n })};\n\n &.more-link {\n padding-top: 8.8rem;\n font-size: ${({ theme }) =>\n fontSizeHelper({\n theme,\n variant: \"body_2\"\n })};\n }\n }\n }\n }\n`;\n\nconst ParagraphTextBoxOut = ({ content }: IProps) => {\n const {\n field_boxout_header, field_boxout_text, field_boxout_link\n } = content;\n\n return (\n \n
\n \n

\n {field_boxout_header}\n

\n\n {field_boxout_text && (\n \n )}\n\n {field_boxout_link &&\n field_boxout_link.uri &&\n field_boxout_link.title && (\n

\n \n {field_boxout_link.title}\n \n

\n )}\n
\n
\n
\n );\n};\n\nexport default ParagraphTextBoxOut;\n","import * as React from \"react\";\nimport ReactPlayer, { ReactPlayerProps } from \"react-player\";\n\nimport styled from \"../../theme/styled\";\nimport { HalfColumnWidthWrapper } from \"../confines-wrappers\";\n\ninterface IProps extends React.HTMLAttributes {\n videoUrl: string;\n videoCaption?: string;\n videoCaptionColour?: string;\n autoplay?: boolean;\n reactPlayer?: Omit;\n}\n\ninterface IDynamicVideoStyled {\n videoCaptionColour?: string;\n}\n\nconst DynamicVideoStyled = styled(\"div\")`\n .caption {\n padding-top: 0.8rem;\n color: ${props => props.videoCaptionColour || \"inherit\"};\n text-align: center;\n font-style: italic;\n }\n`;\n\n/**\n * Returns the appropriate video output depending on the given data\n */\nconst DynamicVideo: React.FC = ({\n videoUrl,\n videoCaption,\n videoCaptionColour,\n autoplay,\n reactPlayer,\n ...rest\n}: IProps) => {\n return (\n \n
\n \n
\n\n {videoCaption && (\n \n

\n {videoCaption}\n

\n
\n )}\n \n );\n};\n\nexport default DynamicVideo;\n","import * as React from \"react\";\n\nimport backgroundColoursCss from \"../../templates/utils/backgroundColoursCss\";\nimport styled from \"../../theme/styled\";\nimport { ColumnWidthWrapper } from \"../confines-wrappers\";\nimport DynamicVideo from \"../dynamic-video\";\nimport {\n IFieldTechnicalArticle,\n IFieldTechnicalArticleColumnType\n} from \"./field-technical-article\";\n\ninterface IProps {\n type: IFieldTechnicalArticleColumnType;\n content: IFieldTechnicalArticle;\n}\n\ninterface IParagraphBoxOutVideoColumnWidthWrapper {\n className: string;\n type: IFieldTechnicalArticleColumnType;\n backgroundColors?: string[];\n}\n\nconst ParagraphBoxOutVideoColumnWidthWrapper = styled<\n IParagraphBoxOutVideoColumnWidthWrapper,\n \"div\"\n>(\"div\")`\n .content-container {\n ${props => backgroundColoursCss(props.backgroundColors)};\n\n .content-wrapper {\n .image {\n padding-top: 8%;\n width: 100%;\n\n &:first-child {\n padding-top: 0;\n }\n }\n }\n }\n`;\n\nconst ParagraphBoxOutVideoColumnWidth = ({ type, content }: IProps) => {\n const backgroundColors = content.field_background_colour_s_;\n const videoUrl = content.field_video_url;\n const autoplay = content.field_video_autoplay;\n const videoCaption = content.field_video_caption;\n const videoCaptionColour = content.field_video_caption_colour;\n\n if (!videoUrl) {\n return null;\n }\n\n return (\n \n
\n \n
\n \n
\n
\n
\n \n );\n};\n\nexport default ParagraphBoxOutVideoColumnWidth;\n","import * as React from \"react\";\n\nimport backgroundColoursCss from \"../../templates/utils/backgroundColoursCss\";\nimport styled from \"../../theme/styled\";\nimport { HalfColumnWidthWrapper } from \"../confines-wrappers\";\nimport DynamicVideo from \"../dynamic-video\";\nimport {\n IFieldTechnicalArticle,\n IFieldTechnicalArticleColumnType\n} from \"./field-technical-article\";\n\ninterface IProps {\n type: IFieldTechnicalArticleColumnType;\n content: IFieldTechnicalArticle;\n}\n\ninterface IParagraphBoxOutVideoHalfColumnWidthWrapper {\n className: string;\n type: IFieldTechnicalArticleColumnType;\n backgroundColors?: string[];\n}\n\nconst ParagraphBoxOutVideoHalfColumnWidthWrapper = styled<\n IParagraphBoxOutVideoHalfColumnWidthWrapper,\n \"div\"\n>(\"div\")`\n .content-container {\n ${props => backgroundColoursCss(props.backgroundColors)};\n\n .content-wrapper {\n .image {\n padding-top: 8%;\n width: 100%;\n\n &:first-child {\n padding-top: 0;\n }\n }\n }\n }\n`;\n\nconst ParagraphBoxOutVideoHalfColumnWidth = ({ type, content }: IProps) => {\n const backgroundColors = content.field_background_colour_s_;\n const videoUrl = content.field_video_url;\n const autoplay = content.field_video_autoplay;\n const videoCaption = content.field_video_caption;\n const videoCaptionColour = content.field_video_caption_colour;\n\n if (!videoUrl) {\n return null;\n }\n\n return (\n \n
\n \n
\n \n
\n
\n
\n \n );\n};\n\nexport default ParagraphBoxOutVideoHalfColumnWidth;\n","import * as React from \"react\";\n\nimport styled from \"../../theme/styled\";\nimport {\n DynamicWrapper,\n IFieldTechnicalArticle,\n IFieldTechnicalArticleColumnType\n} from \"./field-technical-article\";\n\ninterface IProps {\n type: IFieldTechnicalArticleColumnType;\n content: IFieldTechnicalArticle;\n}\n\ninterface IParagraphCodeSnippetWrapper {\n className: string;\n type: IFieldTechnicalArticleColumnType;\n}\n\nconst ParagraphCodeSnippetWrapper = styled<\n IParagraphCodeSnippetWrapper,\n \"aside\"\n>(\"aside\")`\n .content-container {\n .content-wrapper {\n .image {\n padding-top: 8%;\n width: 100%;\n\n &:first-child {\n padding-top: 0;\n }\n }\n }\n }\n`;\n\n/**\n * @see https://github.com/securingsincity/react-ace/issues/162\n */\nconst ParagraphCodeSnippet = ({ type, content }: IProps) => {\n if (typeof window !== \"undefined\") {\n const AceEditor = require(\"react-ace\").default;\n\n require(\"brace/mode/css\");\n require(\"brace/mode/html\");\n require(\"brace/mode/java\");\n require(\"brace/mode/javascript\");\n require(\"brace/mode/json\");\n require(\"brace/mode/markdown\");\n require(\"brace/mode/mysql\");\n require(\"brace/mode/php\");\n require(\"brace/mode/plain_text\");\n require(\"brace/mode/python\");\n require(\"brace/mode/ruby\");\n require(\"brace/mode/sass\");\n require(\"brace/mode/swift\");\n require(\"brace/mode/typescript\");\n require(\"brace/theme/solarized_dark\");\n\n return (\n \n \n \n \n \n );\n }\n\n return null;\n};\n\nexport default ParagraphCodeSnippet;\n","import * as React from \"react\";\n\nimport styled from \"../../theme/styled\";\nimport DynamicImage from \"../dynamic-image\";\nimport {\n DynamicWrapper,\n IFieldTechnicalArticle,\n IFieldTechnicalArticleColumnType\n} from \"./field-technical-article\";\n\ninterface IProps {\n type: IFieldTechnicalArticleColumnType;\n content: IFieldTechnicalArticle;\n}\n\ninterface IParagraphImageColumnWidthWrapper {\n className: string;\n type: IFieldTechnicalArticleColumnType;\n}\n\nconst ParagraphImageColumnWidthWrapper = styled<\n IParagraphImageColumnWidthWrapper,\n \"div\"\n>(\"div\")`\n .content-container {\n .content-wrapper {\n .image {\n padding-top: 8%;\n width: 100%;\n\n &:first-child {\n padding-top: 0;\n }\n }\n }\n }\n`;\n\nconst ParagraphImageColumnWidth = ({ type, content }: IProps) => {\n const imgRel = content.relationships;\n const image = imgRel && imgRel.field_image;\n\n if (!image) {\n return null;\n }\n\n return (\n \n \n \n \n \n );\n};\n\nexport default ParagraphImageColumnWidth;\n","import * as React from \"react\";\n\nimport styled from \"../../theme/styled\";\nimport DynamicImage from \"../dynamic-image\";\nimport {\n IFieldTechnicalArticle,\n IFieldTechnicalArticleColumnType\n} from \"./field-technical-article\";\n\ninterface IProps {\n type: IFieldTechnicalArticleColumnType;\n content: IFieldTechnicalArticle;\n}\n\ninterface IParagraphImageFullWidthWrapper {\n className: string;\n type: IFieldTechnicalArticleColumnType;\n}\n\nconst ParagraphImageFullWidthWrapper = styled<\n IParagraphImageFullWidthWrapper,\n \"div\"\n>(\"div\")`\n .content-container {\n .content-wrapper {\n .image {\n padding-top: 8%;\n width: 100%;\n\n &:first-child {\n padding-top: 0;\n }\n }\n }\n }\n`;\n\nconst ParagraphImageFullWidth = ({ type, content }: IProps) => {\n const imgRel = content.relationships;\n const image = imgRel && imgRel.field_image;\n\n if (!image) {\n return null;\n }\n\n return (\n \n \n \n );\n};\n\nexport default ParagraphImageFullWidth;\n","import * as React from \"react\";\n\nimport styled from \"../../theme/styled\";\nimport DynamicImage from \"../dynamic-image\";\nimport {\n DynamicWrapper,\n IFieldTechnicalArticle,\n IFieldTechnicalArticleColumnType\n} from \"./field-technical-article\";\n\ninterface IProps {\n type: IFieldTechnicalArticleColumnType;\n content: IFieldTechnicalArticle;\n}\n\ninterface IParagraphImagesSideBySideColumnWrapper {\n className: string;\n type: IFieldTechnicalArticleColumnType;\n}\n\nconst ParagraphImagesSideBySideColumnWrapper = styled<\n IParagraphImagesSideBySideColumnWrapper,\n \"div\"\n>(\"div\")`\n .content-wrapper {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n\n .image {\n padding-top: 8%;\n width: 100%;\n\n &:first-child {\n padding-top: 0;\n }\n }\n }\n\n @media (min-width: 600px) {\n .content-wrapper {\n .image {\n padding-top: 4.4rem;\n }\n }\n }\n\n @media (min-width: 768px) {\n .content-wrapper {\n flex-direction: row;\n\n .image {\n padding-top: 0;\n width: 50%;\n\n &:nth-child(odd) {\n padding-right: 2%;\n }\n\n &:nth-child(even) {\n padding-left: 2%;\n }\n }\n }\n }\n`;\n\nconst ParagraphImagesSideBySideColumn = ({ type, content }: IProps) => {\n const imgRels = content.relationships;\n const images = imgRels && imgRels.field_images ? imgRels.field_images : [];\n\n if (images.length === 0) {\n return null;\n }\n\n return (\n \n \n
\n {images &&\n images.map((image, i: number) => (\n \n \n
\n ))}\n \n
\n \n );\n};\n\nexport default ParagraphImagesSideBySideColumn;\n","import * as React from \"react\";\n\nimport styled from \"../../theme/styled\";\nimport { ColumnWidthWrapper } from \"../confines-wrappers\";\nimport DynamicVideo from \"../dynamic-video\";\nimport {\n IFieldTechnicalArticle,\n IFieldTechnicalArticleColumnType\n} from \"./field-technical-article\";\n\ninterface IProps {\n type: IFieldTechnicalArticleColumnType;\n content: IFieldTechnicalArticle;\n}\n\ninterface IParagraphVideoColumnWidthWrapper {\n className: string;\n type: IFieldTechnicalArticleColumnType;\n}\n\nconst ParagraphVideoColumnWidthWrapper = styled<\n IParagraphVideoColumnWidthWrapper,\n \"div\"\n>(\"div\")`\n .content-container {\n .content-wrapper {\n .image {\n padding-top: 8%;\n width: 100%;\n\n &:first-child {\n padding-top: 0;\n }\n }\n }\n }\n`;\n\nconst ParagraphVideoColumnWidth = ({ type, content }: IProps) => {\n const videoUrl = content.field_video_url;\n const autoplay = content.field_video_autoplay;\n const videoCaption = content.field_video_caption;\n\n if (!videoUrl) {\n return null;\n }\n\n return (\n \n \n \n \n \n );\n};\n\nexport default ParagraphVideoColumnWidth;\n","import * as React from \"react\";\n\nimport styled from \"../../theme/styled\";\nimport { HalfColumnWidthWrapper } from \"../confines-wrappers\";\nimport DynamicVideo from \"../dynamic-video\";\nimport {\n IFieldTechnicalArticle,\n IFieldTechnicalArticleColumnType\n} from \"./field-technical-article\";\n\ninterface IProps {\n type: IFieldTechnicalArticleColumnType;\n content: IFieldTechnicalArticle;\n}\n\ninterface IParagraphVideoHalfColumnWidthWrapper {\n className: string;\n type: IFieldTechnicalArticleColumnType;\n}\n\nconst ParagraphVideoHalfColumnWidthWrapper = styled<\n IParagraphVideoHalfColumnWidthWrapper,\n \"div\"\n>(\"div\")`\n .content-container {\n .content-wrapper {\n .image {\n padding-top: 8%;\n width: 100%;\n\n &:first-child {\n padding-top: 0;\n }\n }\n }\n }\n`;\n\nconst ParagraphVideoHalfColumnWidth = ({ type, content }: IProps) => {\n const videoUrl = content.field_video_url;\n const autoplay = content.field_video_autoplay;\n const videoCaption = content.field_video_caption;\n\n if (!videoUrl) {\n return null;\n }\n\n return (\n \n \n \n \n \n );\n};\n\nexport default ParagraphVideoHalfColumnWidth;\n","import * as React from \"react\";\n\nimport styled from \"../../theme/styled\";\nimport {\n colourHelper,\n fontLineHeightHelper,\n fontSizeHelper,\n fontWeightHelper\n} from \"../../theme/theme-helper\";\nimport { HalfColumnWidthWrapper } from \"../confines-wrappers\";\nimport Wysiwyg from \"../wysiwyg\";\nimport {\n IFieldTechnicalArticle,\n IFieldTechnicalArticleColumnType\n} from \"./field-technical-article\";\n\ninterface IProps {\n type: IFieldTechnicalArticleColumnType;\n content: IFieldTechnicalArticle;\n}\n\ninterface IParagraphWsywigWrapper {\n className: string;\n type: IFieldTechnicalArticleColumnType;\n}\n\nconst ParagraphWsywigWrapper = styled(\n HalfColumnWidthWrapper\n)`\n h2,\n h3,\n h4,\n p,\n ul,\n ol {\n margin: 0;\n padding: 0;\n }\n\n h2,\n h3,\n h4 {\n padding-top: ${({ theme }) =>\n fontLineHeightHelper({\n theme,\n variant: \"default\"\n })};\n font-size: ${({ theme }) =>\n fontSizeHelper({\n theme,\n variant: \"subhead_1\"\n })};\n font-weight: ${({ theme }) => fontWeightHelper({\n theme,\n variant: \"bold\"\n })};\n }\n\n h2 {\n font-size: ${({ theme }) =>\n fontSizeHelper({\n theme,\n variant: \"subhead_1\"\n })};\n }\n\n h3 {\n font-size: ${({ theme }) => fontSizeHelper({\n theme,\n variant: \"body_2\"\n })};\n }\n\n h4 {\n font-size: ${({ theme }) => fontSizeHelper({\n theme,\n variant: \"body_1\"\n })};\n }\n\n blockquote {\n position: relative;\n padding-top: 2.4rem;\n padding-left: 16%;\n\n .speech-mark {\n display: flex;\n justify-content: center;\n position: absolute;\n top: 2.4rem;\n left: 0;\n width: 16%;\n\n .icon {\n fill: ${({ theme }) => colourHelper({\n theme,\n variant: \"brandColor\"\n })};\n }\n }\n\n .speech-mark + * {\n padding-top: 1rem;\n }\n }\n\n p,\n ul,\n ol {\n padding-top: ${({ theme }) =>\n fontLineHeightHelper({\n theme,\n variant: \"default\"\n })};\n font-size: ${({ theme }) => fontSizeHelper({\n theme,\n variant: \"body_1\"\n })};\n font-weight: ${({ theme }) =>\n fontWeightHelper({\n theme,\n variant: \"light\"\n })};\n line-height: ${({ theme }) =>\n fontLineHeightHelper({\n theme,\n variant: \"large\"\n })};\n\n strong {\n font-weight: ${({ theme }) =>\n fontWeightHelper({\n theme,\n variant: \"bold\"\n })};\n }\n\n code {\n font-family: SFMono-Regular, Consolas, Liberation Mono, Menlo, Courier,\n monospace;\n padding: 0.2em 0.4em !important;\n font-size: 0.85em;\n // background-color: rgba(27, 31, 35, 0.05);\n background-color: ${({ theme }) =>\n colourHelper({\n theme,\n variant: \"lightestGrey\"\n })};\n border-radius: 3px;\n }\n }\n\n ul,\n ol {\n padding-left: 2.8rem;\n }\n\n *:first-child {\n padding-top: 0;\n }\n\n @media (min-width: 568px) {\n blockquote {\n padding-left: 10%;\n\n .speech-mark {\n width: 10%;\n }\n\n .speech-mark + * {\n padding-top: 1rem;\n }\n }\n }\n\n @media (min-width: 600px) {\n h2 {\n font-size: ${props =>\n props.type === \"basic\" ?\n ({ theme }) => fontSizeHelper({\n theme,\n variant: \"subhead_1\"\n }) :\n ({ theme }) => fontSizeHelper({\n theme,\n variant: \"subhead_2\"\n })};\n }\n\n h3 {\n font-size: ${props =>\n props.type === \"basic\" ?\n ({ theme }) => fontSizeHelper({\n theme,\n variant: \"body_2\"\n }) :\n ({ theme }) => fontSizeHelper({\n theme,\n variant: \"subhead_1\"\n })};\n }\n\n h4 {\n font-size: ${props =>\n props.type === \"basic\" ?\n ({ theme }) => fontSizeHelper({\n theme,\n variant: \"body_1\"\n }) :\n ({ theme }) => fontSizeHelper({\n theme,\n variant: \"body_2\"\n })};\n }\n\n p,\n ul,\n ol {\n font-size: ${props =>\n props.type === \"basic\" ?\n ({ theme }) => fontSizeHelper({\n theme,\n variant: \"body_1\"\n }) :\n ({ theme }) => fontSizeHelper({\n theme,\n variant: \"body_2\"\n })};\n }\n }\n\n @media (min-width: 960px) {\n h2 {\n font-size: ${props =>\n props.type === \"basic\" ?\n ({ theme }) => fontSizeHelper({\n theme,\n variant: \"subhead_2\"\n }) :\n ({ theme }) => fontSizeHelper({\n theme,\n variant: \"subhead_3\"\n })};\n }\n\n h3 {\n font-size: ${props =>\n props.type === \"basic\" ?\n ({ theme }) => fontSizeHelper({\n theme,\n variant: \"subhead_1\"\n }) :\n ({ theme }) => fontSizeHelper({\n theme,\n variant: \"body_2\"\n })};\n }\n\n h4 {\n font-size: ${props =>\n props.type === \"basic\" ?\n ({ theme }) => fontSizeHelper({\n theme,\n variant: \"body_2\"\n }) :\n ({ theme }) => fontSizeHelper({\n theme,\n variant: \"subhead_1\"\n })};\n }\n\n p,\n ul,\n ol {\n font-size: ${props =>\n props.type === \"basic\" ?\n ({ theme }) => fontSizeHelper({\n theme,\n variant: \"body_2\"\n }) :\n ({ theme }) => fontSizeHelper({\n theme,\n variant: \"subhead_1\"\n })};\n }\n }\n`;\n\nconst ParagraphWsywig = ({ type, content }: IProps) => {\n return (\n \n \n \n );\n};\n\nexport default ParagraphWsywig;\n","import * as React from \"react\";\n\nimport styled from \"../../theme/styled\";\nimport {\n colourHelper,\n fontLineHeightHelper,\n fontSizeHelper,\n fontWeightHelper\n} from \"../../theme/theme-helper\";\nimport { HalfColumnWidthWrapper } from \"../confines-wrappers\";\nimport { IFieldTechnicalArticleColumnType } from \"./field-technical-article\";\n\ninterface IProps {\n type: IFieldTechnicalArticleColumnType;\n readTime?: string;\n}\n\ninterface IReadTimeWrapper {\n type: IFieldTechnicalArticleColumnType;\n}\n\nconst ReadTimeWrapper = styled(HalfColumnWidthWrapper)`\n padding-top: 2.6rem;\n color: ${({ theme }) => colourHelper({\n theme,\n variant: \"lightGrey\"\n })};\n font-size: ${({ theme }) => fontSizeHelper({\n theme,\n variant: \"small_3\"\n })};\n font-weight: ${({ theme }) => fontWeightHelper({\n theme,\n variant: \"light\"\n })};\n line-height: ${({ theme }) =>\n fontLineHeightHelper({\n theme,\n variant: \"default\"\n })};\n`;\n\nconst ReadTime = ({ type, readTime }: IProps) => {\n if (!readTime) {\n return null;\n }\n\n return (\n \n \n {readTime}\n \n \n );\n};\n\nexport default ReadTime;\n","import * as React from \"react\";\n\nimport styled from \"../../theme/styled\";\nimport {\n colourHelper,\n fontLineHeightHelper,\n fontSizeHelper,\n fontWeightHelper\n} from \"../../theme/theme-helper\";\nimport {\n HalfColumnWidthWrapper,\n SmallColumnWidthWrapper\n} from \"../confines-wrappers\";\nimport Wysiwyg from \"../wysiwyg\";\nimport { IFieldTechnicalArticleColumnType } from \"./field-technical-article\";\n\ninterface IProps {\n type: IFieldTechnicalArticleColumnType;\n content?: string;\n}\n\ninterface ISummaryWrapper {\n type: IFieldTechnicalArticleColumnType;\n}\n\nconst SummaryWrapper = styled(\"aside\")`\n padding-top: 4.4rem;\n padding-bottom: 2%;\n\n h2,\n h3,\n h4,\n p,\n ul,\n ol {\n margin: 0;\n padding: 0;\n }\n\n .hr {\n display: block;\n padding-top: 10%;\n\n span {\n display: block;\n height: 0.2rem;\n background-color: ${({ theme }) =>\n colourHelper({\n theme,\n variant: \"lightestGrey\"\n })};\n }\n }\n\n h2,\n h3,\n h4 {\n padding-top: ${({ theme }) =>\n fontLineHeightHelper({\n theme,\n variant: \"default\"\n })};\n font-size: ${({ theme }) =>\n fontSizeHelper({\n theme,\n variant: \"subhead_1\"\n })};\n font-weight: ${({ theme }) =>\n fontWeightHelper({\n theme,\n variant: \"heavy\"\n })};\n }\n\n h2 {\n font-size: ${({ theme }) =>\n fontSizeHelper({\n theme,\n variant: \"subhead_1\"\n })};\n }\n\n h3 {\n font-size: ${({ theme }) => fontSizeHelper({\n theme,\n variant: \"body_2\"\n })};\n }\n\n h4 {\n font-size: ${({ theme }) => fontSizeHelper({\n theme,\n variant: \"body_1\"\n })};\n }\n\n p,\n ul,\n ol {\n padding-top: ${({ theme }) =>\n fontLineHeightHelper({\n theme,\n variant: \"default\"\n })};\n font-size: ${({ theme }) => fontSizeHelper({\n theme,\n variant: \"body_1\"\n })};\n font-weight: ${({ theme }) =>\n fontWeightHelper({\n theme,\n variant: \"light\"\n })};\n line-height: ${({ theme }) =>\n fontLineHeightHelper({\n theme,\n variant: \"default\"\n })};\n\n strong {\n font-weight: ${({ theme }) =>\n fontWeightHelper({\n theme,\n variant: \"heavy\"\n })};\n }\n }\n\n ul,\n ol {\n padding-left: 2.8rem;\n }\n\n *:first-child {\n padding-top: 0;\n }\n\n @media (min-width: 600px) {\n padding-bottom: 2rem;\n\n .hr {\n padding-top: 5.8rem;\n }\n }\n\n @media (min-width: 960px) {\n padding-bottom: 0.4rem;\n }\n`;\n\nconst Summary = ({ type, content }: IProps) => {\n if (!content) {\n return null;\n }\n\n return (\n \n \n

\n In Summary\n

\n\n \n
\n\n \n \n \n
\n );\n};\n\nexport default Summary;\n","import * as React from \"react\";\n\nimport {\n IFluid,\n ILocalFile\n} from \"src/types/local-files\";\n\nimport { IImageMeta } from \"../../types/local-files\";\nimport styled from \"../../theme/styled\";\nimport { fontLineHeightHelper } from \"../../theme/theme-helper\";\nimport {\n ColumnWidthWrapper,\n SmallColumnWidthWrapper\n} from \"../confines-wrappers\";\nimport ParagraphBoxOutImageColumnWidth from \"./paragraph-box-out-image-column-width\";\nimport ParagraphBoxOutImageHalfColumnWidth from \"./paragraph-box-out-image-half-column-width\";\nimport ParagraphBoxOutSideBySideImagesColumn from \"./paragraph-box-out-side-by-side-images-column\";\nimport ParagraphBoxOutStackedImages from \"./paragraph-box-out-stacked-images\";\nimport ParagraphBoxOutTestimonials, { IParagraphTestimonial } from \"./paragraph-box-out-testimonials\";\nimport ParagraphBoxOutText from \"./paragraph-box-out-text\";\nimport ParagraphBoxOutVideoColumnWidth from \"./paragraph-box-out-video-column-width\";\nimport ParagraphBoxOutVideoHalfColumnWidth from \"./paragraph-box-out-video-half-column-width\";\nimport ParagraphCodeSnippet from \"./paragraph-code-snippet\";\nimport ParagraphImageColumnWidth from \"./paragraph-image-column-width\";\nimport ParagraphImageFullWidth from \"./paragraph-image-full-width\";\nimport ParagraphImagesSideBySideColumn from \"./paragraph-images-side-by-side-column\";\nimport ParagraphVideoColumnWidth from \"./paragraph-video-column-width\";\nimport ParagraphVideoHalfColumnWidth from \"./paragraph-video-half-column-width\";\nimport ParagraphWsywig from \"./paragraph-wsywig\";\nimport ReadTime from \"./read-time\";\nimport Summary from \"./summary\";\n\nexport interface IFieldTechnicalArticle {\n __typename: string;\n field_copy?: {\n processed: string;\n };\n field_code_snippet?: string;\n field_code_snippet_type?: string | null;\n field_background_colour_s_?: string[];\n field_boxout_header?: string;\n field_boxout_link?: {\n uri?: string;\n title?: string;\n };\n field_boxout_text?: {\n processed: string;\n };\n field_video_url?: string;\n field_video_caption?: string;\n field_video_caption_colour?: string;\n field_video_autoplay?: boolean;\n field_image: IImageMeta;\n field_images: IImageMeta[];\n relationships?: {\n field_images?: Array>;\n field_image?: ILocalFile;\n field_testimonial_item?: IParagraphTestimonial[];\n };\n}\n\nexport type IFieldTechnicalArticleColumnType = \"basic\" | \"project\";\n\nexport const DynamicWrapper = (props: {\n type: IFieldTechnicalArticleColumnType;\n children: JSX.Element;\n}) => {\n switch (props.type) {\n default:\n case \"basic\":\n return (\n \n {props.children}\n \n );\n\n case \"project\":\n return (\n \n {props.children}\n \n );\n }\n};\n\ninterface IProps {\n type: IFieldTechnicalArticleColumnType;\n readTime?: string;\n summary?: string;\n paragraphs: IFieldTechnicalArticle[];\n}\n\ninterface IArticleWrapper {\n type: IFieldTechnicalArticleColumnType;\n}\n\nconst ArticleWrapper = styled(\"div\")`\n [class*=\"paragraph-\"] {\n transition: 0.2s ease-in-out;\n padding-top: ${props => (props.type === \"basic\" ? \"8%\" : \"10%\")};\n }\n\n .paragraph-wysiwyg + .paragraph-wysiwyg {\n padding-top: ${({ theme }) =>\n fontLineHeightHelper({\n theme,\n variant: \"default\"\n })};\n }\n\n [class*=\"paragraph-full-width-image\"] + [class*=\"paragraph-full-width-image\"],\n [class*=\"paragraph-full-width-image\"] + [class*=\"paragraph-box-out\"],\n [class*=\"paragraph-box-out\"] + [class*=\"paragraph-box-out\"],\n [class*=\"paragraph-box-out\"] + [class*=\"paragraph-full-width-image\"] {\n padding-top: 0;\n }\n\n [class*=\"paragraph-box-out\"],\n .paragraph-full-width-image {\n &:first-child {\n padding-top: 0;\n }\n }\n\n .paragraph-wysiwyg,\n .paragraph-code-snippet,\n .paragraph-image-column-width,\n .paragraph-side-by-side-image,\n .paragraph-video-column-width {\n &:last-child {\n padding-bottom: ${props => (props.type === \"basic\" ? \"8%\" : \"10%\")};\n }\n }\n\n @media (min-width: 600px) {\n [class*=\"paragraph-\"] {\n padding-top: ${props => (props.type === \"basic\" ? \"3.8rem\" : \"6.4rem\")};\n }\n\n .paragraph-wysiwyg,\n .paragraph-code-snippet,\n .paragraph-image-column-width,\n .paragraph-side-by-side-image,\n .paragraph-video-column-width {\n &:last-child {\n padding-bottom: ${props =>\n props.type === \"basic\" ? \"3.8rem\" : \"6.4rem\"};\n }\n }\n }\n\n @media (min-width: 960px) {\n [class*=\"paragraph-\"] {\n padding-top: 9.6rem;\n padding-top: ${props => (props.type === \"basic\" ? \"5.4rem\" : \"9.6rem\")};\n }\n\n .paragraph-wysiwyg,\n .paragraph-code-snippet,\n .paragraph-image-column-width,\n .paragraph-side-by-side-image,\n .paragraph-video-column-width {\n &:last-child {\n padding-bottom: ${props =>\n props.type === \"basic\" ? \"5.4rem\" : \"9.6rem\"};\n }\n }\n }\n`;\n\nconst FieldTechnicalArticle = ({\n type,\n readTime,\n summary,\n paragraphs\n}: IProps) => {\n return (\n \n \n\n {summary && (\n \n )}\n\n {paragraphs ?\n paragraphs.map((paragraph: IFieldTechnicalArticle, i: number) => {\n switch (paragraph.__typename) {\n case \"paragraph__boxout_side_by_side_images_colum\":\n return (\n \n );\n case \"paragraph__boxout_image_column_width_\":\n return (\n \n );\n case \"paragraph__boxout_image_half_column_width_\":\n return (\n \n );\n case \"paragraph__boxout_plain_text\":\n return (\n \n );\n case \"paragraph__boxout_stacked_images\":\n return (\n \n );\n case \"paragraph__boxout_video_column_width_\":\n return (\n \n );\n case \"paragraph__boxout_video_half_column_width_\":\n return (\n \n );\n case \"paragraph__testimonial_s_\":\n return (\n \n );\n case \"paragraph__wysiwyg\":\n return (\n \n );\n case \"paragraph__images_side_by_side_column_width\":\n return (\n \n );\n case \"paragraph__code_snippet\":\n return (\n \n );\n case \"paragraph__image_column_width_\":\n return (\n \n );\n case \"paragraph__image_full_width_\":\n return (\n \n );\n case \"paragraph__video_column_width_\":\n return (\n \n );\n case \"paragraph__video_hacolumn_width_\":\n return (\n \n );\n default:\n return null;\n }\n }) :\n \"No content - Oh Noes!\"}\n \n );\n};\n\nexport default FieldTechnicalArticle;\n","import React from \"react\";\n\nimport styled from \"../../theme/styled\";\nimport {\n colourHelper,\n fontLineHeightHelper,\n fontSizeHelper,\n fontSpaceHelper,\n fontWeightHelper\n} from \"../../theme/theme-helper\";\nimport { SmallColumnWidthWrapper } from \"../confines-wrappers\";\nimport Icon from \"../icon\";\n\ninterface IProps {\n content: ITestimonial;\n}\n\nexport interface ITestimonial {\n testimonial: string;\n name: string;\n role: string;\n company: string;\n company_logo?: string;\n}\n\nconst TestimonialWrapper = styled(SmallColumnWidthWrapper)`\n transition: 0.2s ease-in-out;\n position: relative;\n padding-top: 5.8rem;\n\n .icon {\n position: absolute;\n top: 0;\n left: 50%;\n transform: translateX(-50%);\n fill: ${({ theme }) => colourHelper({\n theme,\n variant: \"brandColor\"\n })};\n }\n\n .logo-wrapper {\n transition: 0.2s ease-in-out;\n padding-bottom: 3.8rem;\n\n .logo {\n margin: 0 auto;\n width: 18rem;\n }\n }\n\n .testimonial-text {\n text-align: center;\n\n span {\n display: block;\n }\n\n .testimonial {\n transition: 0.2s ease-in-out;\n color: ${({ theme }) => colourHelper({\n theme,\n variant: \"black\"\n })};\n font-size: ${({ theme }) => fontSizeHelper({\n theme,\n variant: \"body_2\"\n })};\n font-weight: ${({ theme }) =>\n fontWeightHelper({\n theme,\n variant: \"light\"\n })};\n line-height: ${({ theme }) =>\n fontLineHeightHelper({\n theme,\n variant: \"default\"\n })};\n font-style: italic;\n }\n\n .testimonial-by,\n .testimonial-role-company {\n color: ${({ theme }) => colourHelper({\n theme,\n variant: \"lightGrey\"\n })};\n font-size: ${({ theme }) =>\n fontSizeHelper({\n theme,\n variant: \"small_2\"\n })};\n letter-spacing: ${({ theme }) =>\n fontSpaceHelper({\n theme,\n variant: \"medium\"\n })};\n text-transform: uppercase;\n }\n\n .testimonial-by {\n transition: 0.2s ease-in-out;\n padding-top: 3.2rem;\n font-weight: ${({ theme }) =>\n fontWeightHelper({\n theme,\n variant: \"bold\"\n })};\n line-height: ${({ theme }) =>\n fontLineHeightHelper({\n theme,\n variant: \"normalized\"\n })};\n\n cite {\n font-style: normal;\n }\n }\n\n .testimonial-role-company {\n transition: 0.2s ease-in-out;\n padding-top: ${({ theme }) =>\n fontLineHeightHelper({\n theme,\n variant: \"small\"\n })};\n font-weight: ${({ theme }) =>\n fontWeightHelper({\n theme,\n variant: \"light\"\n })};\n line-height: ${({ theme }) =>\n fontLineHeightHelper({\n theme,\n variant: \"large\"\n })};\n\n .separator {\n display: none;\n }\n }\n }\n\n @media (min-width: 600px) {\n padding-top: 8.4rem;\n\n .logo-wrapper {\n padding-bottom: 5.2rem;\n }\n\n .testimonial-text {\n .testimonial {\n font-size: ${({ theme }) =>\n fontSizeHelper({\n theme,\n variant: \"subhead_1\"\n })};\n }\n\n .testimonial-by {\n padding-top: 4.6rem;\n }\n\n .testimonial-role-company {\n line-height: ${({ theme }) =>\n fontLineHeightHelper({\n theme,\n variant: \"normalized\"\n })};\n\n .role,\n .separator,\n .company {\n display: inline;\n }\n }\n }\n }\n\n @media (min-width: 768px) {\n .testimonial-text {\n .testimonial {\n font-size: ${({ theme }) =>\n fontSizeHelper({\n theme,\n variant: \"subhead_1\"\n })};\n }\n\n .testimonial-by,\n .testimonial-role-company {\n font-size: ${({ theme }) =>\n fontSizeHelper({\n theme,\n variant: \"small_3\"\n })};\n }\n }\n }\n\n @media (min-width: 960px) {\n padding-top: 12.8rem;\n\n .logo-wrapper {\n padding-bottom: 5.8rem;\n }\n\n .testimonial-text {\n .testimonial {\n font-size: ${({ theme }) =>\n fontSizeHelper({\n theme,\n variant: \"subhead_3\"\n })};\n }\n\n .testimonial-by {\n padding-top: 5.8rem;\n }\n }\n }\n\n @media (min-width: 1280px) {\n padding-top: 14.8rem;\n\n .logo-wrapper {\n padding-bottom: 6.2rem;\n }\n\n .testimonial-text {\n .testimonial-by {\n padding-top: 6.2rem;\n }\n }\n }\n`;\n\nconst Testimonial = ({ content }: IProps) => {\n return (\n \n \n\n {content.company_logo && (\n
\n \n
\n )}\n\n

\n \n {content.testimonial}\n \n\n \n {\" Written by \"}\n \n\n \n \n {content.name}\n \n \n\n \n {\" \"}\n (\n \n\n \n \n {content.role}\n \n\n \n {\" // \"}\n \n\n \n {content.company}\n \n \n\n \n )\n \n

\n \n );\n};\n\nexport default Testimonial;\n","import React from \"react\";\nimport SlickCarousel from \"react-slick\";\n\nimport styled from \"../../theme/styled\";\nimport {\n colourHelper,\n themeColors\n} from \"../../theme/theme-helper\";\nimport Icon from \"../icon\";\nimport { IThemeColour } from \"../../theme/theme-definition\";\nimport Testimonial, { ITestimonial } from \"./testimonial\";\n\ninterface IProps {\n className?: string;\n // eslint-disable-next-line @typescript-eslint/ban-types\n backgroundColor?: typeof themeColors[number] | (string & {});\n content: ITestimonial[];\n}\n\ninterface ITestimonialCarouselStyled {\n backgroundColor?: IProps[\"backgroundColor\"];\n}\n\nconst TestimonialCarouselWrapper = styled(\n \"div\"\n)`\n @import \"https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.6.0/slick.min.css\";\n\n .content-container {\n margin: 0;\n list-style: none;\n background-color: ${({ theme, backgroundColor }) =>\n colourHelper({\n theme,\n variant: backgroundColor as any || \"lightestGrey\"\n })};\n\n .slick-multi-items {\n padding-top: 0 !important;\n\n button {\n display: block;\n text-indent: -99999rem;\n border: 0;\n outline: 0;\n }\n\n .slick-arrow {\n transition: 0.2s ease-in-out;\n display: none !important;\n position: absolute;\n z-index: 2;\n top: 50%;\n transform: translateY(-50%);\n padding: 1rem;\n cursor: pointer;\n\n &.slick-prev {\n left: 1%;\n }\n\n &.slick-next {\n right: 1%;\n }\n\n .icon {\n fill: ${({ theme }) =>\n colourHelper({\n theme,\n variant: \"brandColor\"\n })};\n }\n\n &.slick-disabled {\n cursor: default;\n opacity: 0.1;\n\n .icon {\n fill: ${({ theme }) => colourHelper({\n theme,\n variant: \"black\"\n })};\n }\n }\n }\n\n .slick-dots {\n display: flex !important;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n position: absolute;\n bottom: 0;\n left: 0;\n width: 100%;\n padding: 0;\n list-style: none;\n cursor: pointer;\n\n li {\n display: block;\n margin: 0;\n padding: 0 0.3rem;\n\n button {\n opacity: 0.2;\n width: 0.9rem;\n height: 0.9rem;\n background-color: ${({ theme }) =>\n colourHelper({\n theme,\n variant: \"black\"\n })};\n border-radius: 100%;\n }\n\n &.slick-active {\n button {\n opacity: 0.6;\n }\n }\n }\n }\n }\n }\n\n @media (min-width: 1024px) {\n .content-container {\n .slick-multi-items {\n .slick-arrow {\n display: block !important;\n }\n }\n }\n }\n\n @media (min-width: 1148px) {\n .content-container {\n .slick-multi-items {\n .slick-arrow {\n &.slick-prev {\n left: 3%;\n }\n\n &.slick-next {\n right: 3%;\n }\n }\n }\n }\n }\n\n @media (min-width: 1280px) {\n .content-container {\n .slick-multi-items {\n .slick-arrow {\n &.slick-prev {\n left: 6%;\n }\n\n &.slick-next {\n right: 6%;\n }\n }\n }\n }\n }\n\n @media (min-width: 1680px) {\n .content-container {\n .slick-multi-items {\n .slick-arrow {\n &.slick-prev {\n left: 10%;\n }\n\n &.slick-next {\n right: 10%;\n }\n }\n }\n }\n }\n\n @media (min-width: 1920px) {\n .content-container {\n .slick-multi-items {\n .slick-arrow {\n &.slick-prev {\n left: 16%;\n }\n\n &.slick-next {\n right: 16%;\n }\n }\n }\n }\n }\n\n @media (min-width: 2164px) {\n .content-container {\n .slick-multi-items {\n .slick-arrow {\n &.slick-prev {\n left: 20%;\n }\n\n &.slick-next {\n right: 20%;\n }\n }\n }\n }\n }\n\n @media (min-width: 2520px) {\n .content-container {\n .slick-multi-items {\n .slick-arrow {\n &.slick-prev {\n left: 24%;\n }\n\n &.slick-next {\n right: 24%;\n }\n }\n }\n }\n }\n`;\n\nconst TestimonialCarousel = ({\n className,\n backgroundColor,\n content\n}: IProps) => {\n return (\n \n \n 1 ? \"content-container slick-multi-items\" : \"\"}\n arrows\n prevArrow={(\n \n \n \n )}\n nextArrow={(\n \n \n \n )}\n dots\n infinite={false}\n speed={400}\n slidesToShow={1}\n slidesToScroll={1}\n >\n {content.map((testimonial, i) => {\n return (\n \n );\n })}\n \n \n \n );\n};\n\nexport default TestimonialCarousel;\n"],"names":["ace","define","acequire","exports","module","oop","lang","EventEmitter","Editor","Renderer","VirtualRenderer","EditSession","Split","container","theme","splits","this","BELOW","BESIDE","$container","$theme","$splits","$editorCSS","$editors","$orientation","setSplits","$cEditor","on","editor","bind","UndoManagerProxy","undoManager","session","$u","$doc","implement","$createEditor","el","document","createElement","className","style","cssText","appendChild","_emit","push","setFontSize","$fontSize","length","removeChild","resize","getSplits","getEditor","idx","getCurrentEditor","focus","blur","setTheme","forEach","setKeyboardHandler","keybinding","callback","scope","size","$cloneSession","s","getDocument","getMode","getUndoManager","undoManagerProxy","setUndoManager","$informUndoManager","delayedCall","$deltas","setTabSize","getTabSize","setUseSoftTabs","getUseSoftTabs","setOverwrite","getOverwrite","setBreakpoints","getBreakpoints","setUseWrapMode","getUseWrapMode","setUseWorker","getUseWorker","setWrapLimitRange","$wrapLimitRange","min","max","$foldData","$cloneFoldData","setSession","some","getOrientation","setOrientation","orientation","width","clientWidth","height","clientHeight","editorWidth","i","top","left","editorHeight","call","prototype","execute","options","undo","selectionRange","selection","setSelectionRange","redo","reset","hasUndo","hasRedo","TextHighlightRules","supportType","supportFunction","supportConstant","supportConstantColor","supportConstantFonts","numRe","pseudoElements","pseudoClasses","CssHighlightRules","keywordMapper","createKeywordMapper","$rules","include","token","regex","next","caseInsensitive","defaultToken","url","strings","consumeLineEnd","escapes","normalizeRules","inherits","Range","MatchingBraceOutdent","checkOutdent","line","input","test","autoOutdent","doc","row","match","getLine","column","openBracePos","findMatchingBracket","indent","$getIndent","replace","propertyMap","CssCompletions","completionsDefined","defineCompletions","name","x","toLowerCase","hasOwnProperty","getCompletions","state","pos","prefix","getTokenAt","substr","getPropertyValueCompletions","getPropertyCompletions","Object","keys","map","property","caption","snippet","meta","score","Number","MAX_VALUE","exec","values","value","CstyleBehaviour","Behaviour","TokenIterator","CssBehaviour","inherit","add","action","text","cursor","getCursorPosition","iterator","getCurrentToken","stepBackward","type","substring","range","selected","getTextRange","isMultiLine","start","end","BaseFoldMode","FoldMode","commentRegex","foldingStartMarker","RegExp","source","foldingStopMarker","singleLineBlockCommentRe","tripleStarBlockCommentRe","startRegionRe","_getFoldWidgetBase","getFoldWidget","foldStyle","fw","getFoldWidgetRange","forceMultiline","getCommentRegionBlock","index","openingBracketBlock","getCommentFoldRange","getSectionRange","closingBracketBlock","startIndent","search","startRow","startColumn","endRow","maxRow","getLength","subRange","re","depth","m","TextMode","Mode","WorkerClient","CStyleFoldMode","HighlightRules","$outdent","$behaviour","$completer","foldingRules","blockComment","getNextLineIndent","tab","tokens","getTokenizer","getLineTokens","createWorker","worker","attachToDocument","e","setAnnotations","data","clearAnnotations","$id","DocCommentHighlightRules","getTagRule","getStartRule","getEndRule","identifierRe","JavaScriptHighlightRules","escapedRe","comments","noES6","no_regex","unshift","onMatch","val","stack","nextState","shift","indexOf","jsx","JSX","embedRules","tagRegex","jsxTag","offset","charAt","slice","jsxJsRule","jsxAttributes","currentState","splice","stateName","reference","lineCommentStart","$quotes","tokenizedLine","endState","results","XmlHighlightRules","normalize","processing_instruction","doctype","int_subset","cdata","comment","attr_reference","tag","tag_whitespace","whitespace","string","attributes","attribute_value","constructor","embedTagRules","tagMap","createMap","a","button","form","img","label","option","script","select","textarea","table","tbody","td","tfoot","th","tr","HtmlHighlightRules","addRules","group","tag_stuff","getRules","is","lastIndexOf","XmlBehaviour","quote","getSelectionRange","getWrapBehavioursEnabled","rightChar","rightSpace","position","firstChar","lastChar","tokenEnd","getCurrentTokenColumn","stepForward","tokenRow","getCurrentTokenRow","tokenColumn","element","voidElements","nextToken","nextIndent","getTabString","defaultMode","subModes","$getMode","key","$tryMode","mode","getState","optionalEndTags","mixin","Tag","tagName","closing","selfClosing","_getFirstTagInLine","_findEndTagInLine","getCommentFoldWidget","getTokens","_readTagForward","_readTagBackward","_pop","pop","firstTag","fromPoints","MixedFoldMode","XmlFoldMode","optionalTags","globalAttributes","concat","attributeMap","elements","findTagName","HtmlCompletions","getTagCompletions","getAttributeCompletions","getAttributeValueCompletions","getHTMLEntityCompletions","attribute","attributeName","findAttributeName","JavaScriptMode","CssMode","HtmlFoldMode","fragmentContext","createModeDelegates","arrayToMap","context","JavaHighlightRules","JsonHighlightRules","escaped","ch","escapeRegExp","github_embed","MarkdownHighlightRules","noEscape","bgTokenizer","heading","isHeading","startHeadingLevel","getLevel","endColumn","XmlMode","HtmlMode","MarkdownFoldMode","$defaultBehaviour","marker","parseInt","MysqlHighlightRules","rule","escape","PythonHighlightRules","strPre","integer","pointFloat","floatNumber","stringEscape","markers","indentationBlock","PythonFoldMode","outdents","trim","last","remove","constantOtherSymbol","constantNumericHex","qString","qqString","tString","constantNumericFloat","RubyHighlightRules","instanceVariable","$keywords","split","splitRegex","rules","heredoc","indentedHeredoc","startLevel","level","prev","prevIndent","foldWidgets","startingClassOrMethod","startingDoBlock","startingConditional","prevLine","ScssHighlightRules","properties","browserPrefix","prefixProperties","ret","ln","Array","apply","join","functions","constants","colors","keywords","tags","SassHighlightRules","Math","SwiftHighlightRules","nestable","interpolation","interpStart","mainRule","multiline","lead","open","error","filter","Boolean","close","TypeScriptHighlightRules","JSRules","jsMode","isDark","cssClass","importCssString","id","src","diff_match_patch","Diff_Timeout","Diff_EditCost","Match_Threshold","Match_Distance","Patch_DeleteThreshold","Patch_Margin","Match_MaxBits","DIFF_DELETE","Diff","op","diff_main","text1","text2","opt_checklines","opt_deadline","Date","getTime","deadline","Error","checklines","commonlength","diff_commonPrefix","commonprefix","diff_commonSuffix","commonsuffix","diffs","diff_compute_","diff_cleanupMerge","longtext","shorttext","hm","diff_halfMatch_","text1_a","text1_b","text2_a","text2_b","mid_common","diffs_a","diffs_b","diff_lineMode_","diff_bisect_","diff_linesToChars_","chars1","chars2","linearray","lineArray","diff_charsToLines_","diff_cleanupSemantic","pointer","count_delete","count_insert","text_delete","text_insert","subDiff","j","text1_length","text2_length","max_d","ceil","v_offset","v_length","v1","v2","delta","front","k1start","k1end","k2start","k2end","d","k1","k1_offset","y1","x1","k2_offset","x2","diff_bisectSplit_","k2","y2","y","text1a","text2a","text1b","text2b","diffsb","lineHash","diff_linesToCharsMunge_","chars","lineStart","lineEnd","lineArrayLength","undefined","String","fromCharCode","maxLines","charCodeAt","pointermin","pointermax","pointermid","pointerstart","floor","pointerend","diff_commonOverlap_","text_length","best","pattern","found","dmp","diff_halfMatchI_","best_longtext_a","best_longtext_b","best_shorttext_a","best_shorttext_b","seed","best_common","prefixLength","suffixLength","hm1","hm2","changes","equalities","equalitiesLength","lastEquality","length_insertions1","length_deletions1","length_insertions2","length_deletions2","diff_cleanupSemanticLossless","deletion","insertion","overlap_length1","overlap_length2","diff_cleanupSemanticScore_","one","two","char1","char2","nonAlphaNumeric1","nonAlphaNumericRegex_","nonAlphaNumeric2","whitespace1","whitespaceRegex_","whitespace2","lineBreak1","linebreakRegex_","lineBreak2","blankLine1","blanklineEndRegex_","blankLine2","blanklineStartRegex_","equality1","edit","equality2","commonOffset","commonString","bestEquality1","bestEdit","bestEquality2","bestScore","diff_cleanupEfficiency","pre_ins","pre_del","post_ins","post_del","diff_xIndex","loc","last_chars1","last_chars2","diff_prettyHtml","html","pattern_amp","pattern_lt","pattern_gt","pattern_para","diff_text1","diff_text2","diff_levenshtein","levenshtein","insertions","deletions","diff_toDelta","encodeURI","diff_fromDelta","diffsLength","param","decodeURI","ex","n","isNaN","match_main","match_bitap_","match_alphabet_","match_bitapScore_","accuracy","proximity","abs","score_threshold","best_loc","bin_min","bin_mid","matchmask","last_rd","bin_max","finish","rd","charMatch","patch_addContext_","patch","start2","length1","padding","suffix","start1","length2","patch_make","opt_b","opt_c","patches","patch_obj","patchDiffLength","char_count1","char_count2","prepatch_text","postpatch_text","diff_type","diff_text","patch_deepCopy","patchesCopy","patchCopy","patch_apply","nullPadding","patch_addPadding","patch_splitMax","start_loc","expected_loc","end_loc","index2","index1","mod","paddingLength","extraLength","patch_size","bigpatch","precontext","empty","postcontext","patch_toText","patch_fromText","textline","textPointer","patchHeader","sign","toString","HASH_UNDEFINED","funcTag","genTag","reIsDeepProp","reIsPlainProp","reLeadingDot","rePropName","reEscapeChar","reIsHostCtor","freeGlobal","g","freeSelf","self","root","Function","uid","arrayProto","funcProto","objectProto","coreJsData","maskSrcKey","IE_PROTO","funcToString","objectToString","reIsNative","Symbol","Map","getNative","nativeCreate","symbolProto","symbolToString","Hash","entries","clear","entry","set","ListCache","MapCache","assocIndexOf","array","other","baseGet","object","path","isArray","isSymbol","isKey","stringToPath","toKey","baseIsNative","isObject","func","isFunction","result","isHostObject","toSource","getMapData","__data__","getValue","has","get","memoize","baseToString","number","resolver","TypeError","memoized","args","arguments","cache","Cache","isObjectLike","defaultValue","MAX_SAFE_INTEGER","argsTag","arrayTag","boolTag","dateTag","errorTag","mapTag","numberTag","objectTag","promiseTag","regexpTag","setTag","stringTag","symbolTag","weakMapTag","arrayBufferTag","dataViewTag","reIsUint","typedArrayTags","freeExports","nodeType","freeModule","moduleExports","freeProcess","process","nodeUtil","binding","nodeIsTypedArray","isTypedArray","arraySome","predicate","mapToArray","setToArray","transform","nativeObjectToString","Buffer","Uint8Array","propertyIsEnumerable","symToStringTag","toStringTag","nativeGetSymbols","getOwnPropertySymbols","nativeIsBuffer","isBuffer","nativeKeys","arg","DataView","Promise","Set","WeakMap","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolValueOf","valueOf","SetCache","Stack","arrayLikeKeys","inherited","isArr","isArg","isArguments","isBuff","isType","skipIndexes","iteratee","baseTimes","isIndex","eq","baseGetTag","isOwn","unmasked","getRawTag","baseIsArguments","baseIsEqual","bitmask","customizer","equalFunc","objIsArr","othIsArr","objTag","getTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","byteLength","byteOffset","buffer","message","convert","isPartial","stacked","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","objProps","getAllKeys","objLength","othLength","skipCtor","objValue","othValue","compared","objCtor","othCtor","equalObjects","baseIsEqualDeep","isMasked","baseKeys","Ctor","proto","arrLength","seen","arrValue","othIndex","keysFunc","symbolsFunc","arrayPush","baseGetAllKeys","getSymbols","pairs","LARGE_ARRAY_SIZE","resIndex","arrayFilter","symbol","ArrayBuffer","resolve","ctorString","isLength","baseUnary","_extendStatics","__extends","b","setPrototypeOf","__proto__","p","__","create","__assign","assign","t","defineProperty","PropTypes","React","isEqual","editorOptions_1","getAceInstance","ReactAce","_super","props","_this","editorEvents","method","debounce","componentDidMount","_a","onBeforeLoad","onValidate","fontSize","cursorStart","showGutter","wrapEnabled","showPrintMargin","_b","scrollMargin","keyboardHandler","onLoad","commands","annotations","placeholder","refEditor","editorProps","debounceChangePeriod","onChange","renderer","setScrollMargin","getSession","setMode","setValue","navigateToFileEnd","navigateFileEnd","setShowGutter","setShowPrintMargin","onFocus","onBlur","onCopy","onPaste","onInput","updatePlaceholder","onSelectionChange","onCursorChange","getAnnotations","onScroll","handleMarkers","availableOptions","$options","editorOptions","setOption","console","warn","handleOptions","command","bindKey","addCommand","componentDidUpdate","prevProps","oldProps","nextProps","appliedClassesArray_1","oldClass","silent","toJSON","fromJSON","setOptions","handleScrollMargins","margins","setScrollMargins","componentWillUnmount","destroy","event","getSelection","currentMarkers","getMarkers","removeMarker","clazz","startCol","endCol","inFront","addMarker","showPlaceholder","node","placeholderNode","scroller","textContent","zIndex","updateRef","item","render","divStyle","ref","propTypes","bool","oneOfType","minLines","readOnly","highlightActiveLine","tabSize","enableSnippets","enableBasicAutocompletion","enableLiveAutocompletion","defaultProps","Component","split_1","DiffMatchPatch","DiffComponent","diff","setState","lhString","rhString","diffedLines","generateDiffedLines","setCodeMarkers","C","right","chunk","chunkType","lines","linesToHighlight","startLine","endLine","codeEditorSettings","newMarkerSet","markerObj","default","window","require","fn","delay","timer","clearTimeout","setTimeout","ace_1","SplitComponent","env","splitEditor","defaultValueForEditor","valueForEditor","UndoManager","newAnnotations","newMarkers","sp","nextValue","oldAnnotations","oldMarkers","value_1","value_2","value_3","arrayOf","backgroundColors","percentageMultiplier","backgroundGradientColors","css","color","percentage","ParagraphBoxOutImageColumnWidthWrapper","styled","backgroundColoursCss","content","imgRel","relationships","image","field_image","field_background_colour_s_","DynamicWrapper","alt","ParagraphBoxOutImageHalfColumnWidthWrapper","ParagraphBoxOutSideBySideImagesColumnWrapper","imgRels","images","field_images","ParagraphBoxOutStackedImagesWrapper","rel","testimonials","field_testimonial_item","testimonial","tRel","logo","field_testimonial_company_logo","localFile","childImageSharp","fluid","field_testimonial","field_testimonial_name","role","field_testimonial_role","company","field_testimonial_company","company_logo","ParagraphTextBoxOutContainer","colourHelper","variant","fontSizeHelper","fontWeightHelper","fontLineHeightHelper","fontSpaceHelper","field_boxout_header","field_boxout_text","field_boxout_link","processed","uri","title","href","DynamicVideoStyled","videoCaptionColour","videoUrl","videoCaption","autoplay","reactPlayer","rest","playing","loop","muted","config","youtube","playerVars","iv_load_policy","showinfo","controls","vimeo","playerOptions","ParagraphBoxOutVideoColumnWidthWrapper","field_video_url","field_video_autoplay","field_video_caption","field_video_caption_colour","ParagraphBoxOutVideoHalfColumnWidthWrapper","ParagraphCodeSnippetWrapper","AceEditor","field_code_snippet_type","field_code_snippet","$blockScrolling","useWorker","cursorStyle","fadeFoldWidgets","Infinity","ParagraphImageColumnWidthWrapper","ParagraphImageFullWidthWrapper","ParagraphImagesSideBySideColumnWrapper","ParagraphVideoColumnWidthWrapper","ParagraphVideoHalfColumnWidthWrapper","ParagraphWsywigWrapper","HalfColumnWidthWrapper","field_copy","ReadTimeWrapper","readTime","SummaryWrapper","children","ArticleWrapper","summary","paragraphs","paragraph","__typename","TestimonialWrapper","SmallColumnWidthWrapper","icon","TestimonialCarouselWrapper","backgroundColor","themeColors","arrows","prevArrow","nextArrow","dots","infinite","speed","slidesToShow","slidesToScroll"],"sourceRoot":""}