\n https://beautifier.io/\n\n Usage:\n style_html(html_source);\n\n style_html(html_source, options);\n\n The options are:\n indent_inner_html (default false) — indent and sections,\n indent_size (default 4) — indentation size,\n indent_char (default space) — character to indent with,\n wrap_line_length (default 250) - maximum amount of characters per line (0 = disable)\n brace_style (default \"collapse\") - \"collapse\" | \"expand\" | \"end-expand\" | \"none\"\n put braces on the same line as control statements (default), or put braces on own line (Allman / ANSI style), or just put end braces on own line, or attempt to keep them where they are.\n inline (defaults to inline tags) - list of tags to be considered inline tags\n unformatted (defaults to inline tags) - list of tags, that shouldn't be reformatted\n content_unformatted (defaults to [\"pre\", \"textarea\"] tags) - list of tags, whose content shouldn't be reformatted\n indent_scripts (default normal) - \"keep\"|\"separate\"|\"normal\"\n preserve_newlines (default true) - whether existing line breaks before elements should be preserved\n Only works before elements, not inside tags or for text.\n max_preserve_newlines (default unlimited) - maximum number of line breaks to be preserved in one chunk\n indent_handlebars (default false) - format and indent {{#foo}} and {{/foo}}\n end_with_newline (false) - end with a newline\n extra_liners (default [head,body,/html]) -List of tags that should have an extra newline before them.\n\n e.g.\n\n style_html(html_source, {\n 'indent_inner_html': false,\n 'indent_size': 2,\n 'indent_char': ' ',\n 'wrap_line_length': 78,\n 'brace_style': 'expand',\n 'preserve_newlines': true,\n 'max_preserve_newlines': 5,\n 'indent_handlebars': false,\n 'extra_liners': ['/html']\n });\n*/\n\n(function() {\n\n/* GENERATED_BUILD_OUTPUT */\nvar legacy_beautify_html;\n/******/ (function() { // webpackBootstrap\n/******/ \t\"use strict\";\n/******/ \tvar __webpack_modules__ = ([\n/* 0 */,\n/* 1 */,\n/* 2 */\n/***/ (function(module) {\n\n/*jshint node:true */\n/*\n The MIT License (MIT)\n\n Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors.\n\n Permission is hereby granted, free of charge, to any person\n obtaining a copy of this software and associated documentation files\n (the \"Software\"), to deal in the Software without restriction,\n including without limitation the rights to use, copy, modify, merge,\n publish, distribute, sublicense, and/or sell copies of the Software,\n and to permit persons to whom the Software is furnished to do so,\n subject to the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\n BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n*/\n\n\n\nfunction OutputLine(parent) {\n this.__parent = parent;\n this.__character_count = 0;\n // use indent_count as a marker for this.__lines that have preserved indentation\n this.__indent_count = -1;\n this.__alignment_count = 0;\n this.__wrap_point_index = 0;\n this.__wrap_point_character_count = 0;\n this.__wrap_point_indent_count = -1;\n this.__wrap_point_alignment_count = 0;\n\n this.__items = [];\n}\n\nOutputLine.prototype.clone_empty = function() {\n var line = new OutputLine(this.__parent);\n line.set_indent(this.__indent_count, this.__alignment_count);\n return line;\n};\n\nOutputLine.prototype.item = function(index) {\n if (index < 0) {\n return this.__items[this.__items.length + index];\n } else {\n return this.__items[index];\n }\n};\n\nOutputLine.prototype.has_match = function(pattern) {\n for (var lastCheckedOutput = this.__items.length - 1; lastCheckedOutput >= 0; lastCheckedOutput--) {\n if (this.__items[lastCheckedOutput].match(pattern)) {\n return true;\n }\n }\n return false;\n};\n\nOutputLine.prototype.set_indent = function(indent, alignment) {\n if (this.is_empty()) {\n this.__indent_count = indent || 0;\n this.__alignment_count = alignment || 0;\n this.__character_count = this.__parent.get_indent_size(this.__indent_count, this.__alignment_count);\n }\n};\n\nOutputLine.prototype._set_wrap_point = function() {\n if (this.__parent.wrap_line_length) {\n this.__wrap_point_index = this.__items.length;\n this.__wrap_point_character_count = this.__character_count;\n this.__wrap_point_indent_count = this.__parent.next_line.__indent_count;\n this.__wrap_point_alignment_count = this.__parent.next_line.__alignment_count;\n }\n};\n\nOutputLine.prototype._should_wrap = function() {\n return this.__wrap_point_index &&\n this.__character_count > this.__parent.wrap_line_length &&\n this.__wrap_point_character_count > this.__parent.next_line.__character_count;\n};\n\nOutputLine.prototype._allow_wrap = function() {\n if (this._should_wrap()) {\n this.__parent.add_new_line();\n var next = this.__parent.current_line;\n next.set_indent(this.__wrap_point_indent_count, this.__wrap_point_alignment_count);\n next.__items = this.__items.slice(this.__wrap_point_index);\n this.__items = this.__items.slice(0, this.__wrap_point_index);\n\n next.__character_count += this.__character_count - this.__wrap_point_character_count;\n this.__character_count = this.__wrap_point_character_count;\n\n if (next.__items[0] === \" \") {\n next.__items.splice(0, 1);\n next.__character_count -= 1;\n }\n return true;\n }\n return false;\n};\n\nOutputLine.prototype.is_empty = function() {\n return this.__items.length === 0;\n};\n\nOutputLine.prototype.last = function() {\n if (!this.is_empty()) {\n return this.__items[this.__items.length - 1];\n } else {\n return null;\n }\n};\n\nOutputLine.prototype.push = function(item) {\n this.__items.push(item);\n var last_newline_index = item.lastIndexOf('\\n');\n if (last_newline_index !== -1) {\n this.__character_count = item.length - last_newline_index;\n } else {\n this.__character_count += item.length;\n }\n};\n\nOutputLine.prototype.pop = function() {\n var item = null;\n if (!this.is_empty()) {\n item = this.__items.pop();\n this.__character_count -= item.length;\n }\n return item;\n};\n\n\nOutputLine.prototype._remove_indent = function() {\n if (this.__indent_count > 0) {\n this.__indent_count -= 1;\n this.__character_count -= this.__parent.indent_size;\n }\n};\n\nOutputLine.prototype._remove_wrap_indent = function() {\n if (this.__wrap_point_indent_count > 0) {\n this.__wrap_point_indent_count -= 1;\n }\n};\nOutputLine.prototype.trim = function() {\n while (this.last() === ' ') {\n this.__items.pop();\n this.__character_count -= 1;\n }\n};\n\nOutputLine.prototype.toString = function() {\n var result = '';\n if (this.is_empty()) {\n if (this.__parent.indent_empty_lines) {\n result = this.__parent.get_indent_string(this.__indent_count);\n }\n } else {\n result = this.__parent.get_indent_string(this.__indent_count, this.__alignment_count);\n result += this.__items.join('');\n }\n return result;\n};\n\nfunction IndentStringCache(options, baseIndentString) {\n this.__cache = [''];\n this.__indent_size = options.indent_size;\n this.__indent_string = options.indent_char;\n if (!options.indent_with_tabs) {\n this.__indent_string = new Array(options.indent_size + 1).join(options.indent_char);\n }\n\n // Set to null to continue support for auto detection of base indent\n baseIndentString = baseIndentString || '';\n if (options.indent_level > 0) {\n baseIndentString = new Array(options.indent_level + 1).join(this.__indent_string);\n }\n\n this.__base_string = baseIndentString;\n this.__base_string_length = baseIndentString.length;\n}\n\nIndentStringCache.prototype.get_indent_size = function(indent, column) {\n var result = this.__base_string_length;\n column = column || 0;\n if (indent < 0) {\n result = 0;\n }\n result += indent * this.__indent_size;\n result += column;\n return result;\n};\n\nIndentStringCache.prototype.get_indent_string = function(indent_level, column) {\n var result = this.__base_string;\n column = column || 0;\n if (indent_level < 0) {\n indent_level = 0;\n result = '';\n }\n column += indent_level * this.__indent_size;\n this.__ensure_cache(column);\n result += this.__cache[column];\n return result;\n};\n\nIndentStringCache.prototype.__ensure_cache = function(column) {\n while (column >= this.__cache.length) {\n this.__add_column();\n }\n};\n\nIndentStringCache.prototype.__add_column = function() {\n var column = this.__cache.length;\n var indent = 0;\n var result = '';\n if (this.__indent_size && column >= this.__indent_size) {\n indent = Math.floor(column / this.__indent_size);\n column -= indent * this.__indent_size;\n result = new Array(indent + 1).join(this.__indent_string);\n }\n if (column) {\n result += new Array(column + 1).join(' ');\n }\n\n this.__cache.push(result);\n};\n\nfunction Output(options, baseIndentString) {\n this.__indent_cache = new IndentStringCache(options, baseIndentString);\n this.raw = false;\n this._end_with_newline = options.end_with_newline;\n this.indent_size = options.indent_size;\n this.wrap_line_length = options.wrap_line_length;\n this.indent_empty_lines = options.indent_empty_lines;\n this.__lines = [];\n this.previous_line = null;\n this.current_line = null;\n this.next_line = new OutputLine(this);\n this.space_before_token = false;\n this.non_breaking_space = false;\n this.previous_token_wrapped = false;\n // initialize\n this.__add_outputline();\n}\n\nOutput.prototype.__add_outputline = function() {\n this.previous_line = this.current_line;\n this.current_line = this.next_line.clone_empty();\n this.__lines.push(this.current_line);\n};\n\nOutput.prototype.get_line_number = function() {\n return this.__lines.length;\n};\n\nOutput.prototype.get_indent_string = function(indent, column) {\n return this.__indent_cache.get_indent_string(indent, column);\n};\n\nOutput.prototype.get_indent_size = function(indent, column) {\n return this.__indent_cache.get_indent_size(indent, column);\n};\n\nOutput.prototype.is_empty = function() {\n return !this.previous_line && this.current_line.is_empty();\n};\n\nOutput.prototype.add_new_line = function(force_newline) {\n // never newline at the start of file\n // otherwise, newline only if we didn't just add one or we're forced\n if (this.is_empty() ||\n (!force_newline && this.just_added_newline())) {\n return false;\n }\n\n // if raw output is enabled, don't print additional newlines,\n // but still return True as though you had\n if (!this.raw) {\n this.__add_outputline();\n }\n return true;\n};\n\nOutput.prototype.get_code = function(eol) {\n this.trim(true);\n\n // handle some edge cases where the last tokens\n // has text that ends with newline(s)\n var last_item = this.current_line.pop();\n if (last_item) {\n if (last_item[last_item.length - 1] === '\\n') {\n last_item = last_item.replace(/\\n+$/g, '');\n }\n this.current_line.push(last_item);\n }\n\n if (this._end_with_newline) {\n this.__add_outputline();\n }\n\n var sweet_code = this.__lines.join('\\n');\n\n if (eol !== '\\n') {\n sweet_code = sweet_code.replace(/[\\n]/g, eol);\n }\n return sweet_code;\n};\n\nOutput.prototype.set_wrap_point = function() {\n this.current_line._set_wrap_point();\n};\n\nOutput.prototype.set_indent = function(indent, alignment) {\n indent = indent || 0;\n alignment = alignment || 0;\n\n // Next line stores alignment values\n this.next_line.set_indent(indent, alignment);\n\n // Never indent your first output indent at the start of the file\n if (this.__lines.length > 1) {\n this.current_line.set_indent(indent, alignment);\n return true;\n }\n\n this.current_line.set_indent();\n return false;\n};\n\nOutput.prototype.add_raw_token = function(token) {\n for (var x = 0; x < token.newlines; x++) {\n this.__add_outputline();\n }\n this.current_line.set_indent(-1);\n this.current_line.push(token.whitespace_before);\n this.current_line.push(token.text);\n this.space_before_token = false;\n this.non_breaking_space = false;\n this.previous_token_wrapped = false;\n};\n\nOutput.prototype.add_token = function(printable_token) {\n this.__add_space_before_token();\n this.current_line.push(printable_token);\n this.space_before_token = false;\n this.non_breaking_space = false;\n this.previous_token_wrapped = this.current_line._allow_wrap();\n};\n\nOutput.prototype.__add_space_before_token = function() {\n if (this.space_before_token && !this.just_added_newline()) {\n if (!this.non_breaking_space) {\n this.set_wrap_point();\n }\n this.current_line.push(' ');\n }\n};\n\nOutput.prototype.remove_indent = function(index) {\n var output_length = this.__lines.length;\n while (index < output_length) {\n this.__lines[index]._remove_indent();\n index++;\n }\n this.current_line._remove_wrap_indent();\n};\n\nOutput.prototype.trim = function(eat_newlines) {\n eat_newlines = (eat_newlines === undefined) ? false : eat_newlines;\n\n this.current_line.trim();\n\n while (eat_newlines && this.__lines.length > 1 &&\n this.current_line.is_empty()) {\n this.__lines.pop();\n this.current_line = this.__lines[this.__lines.length - 1];\n this.current_line.trim();\n }\n\n this.previous_line = this.__lines.length > 1 ?\n this.__lines[this.__lines.length - 2] : null;\n};\n\nOutput.prototype.just_added_newline = function() {\n return this.current_line.is_empty();\n};\n\nOutput.prototype.just_added_blankline = function() {\n return this.is_empty() ||\n (this.current_line.is_empty() && this.previous_line.is_empty());\n};\n\nOutput.prototype.ensure_empty_line_above = function(starts_with, ends_with) {\n var index = this.__lines.length - 2;\n while (index >= 0) {\n var potentialEmptyLine = this.__lines[index];\n if (potentialEmptyLine.is_empty()) {\n break;\n } else if (potentialEmptyLine.item(0).indexOf(starts_with) !== 0 &&\n potentialEmptyLine.item(-1) !== ends_with) {\n this.__lines.splice(index + 1, 0, new OutputLine(this));\n this.previous_line = this.__lines[this.__lines.length - 2];\n break;\n }\n index--;\n }\n};\n\nmodule.exports.Output = Output;\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module) {\n\n/*jshint node:true */\n/*\n\n The MIT License (MIT)\n\n Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors.\n\n Permission is hereby granted, free of charge, to any person\n obtaining a copy of this software and associated documentation files\n (the \"Software\"), to deal in the Software without restriction,\n including without limitation the rights to use, copy, modify, merge,\n publish, distribute, sublicense, and/or sell copies of the Software,\n and to permit persons to whom the Software is furnished to do so,\n subject to the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\n BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n*/\n\n\n\nfunction Token(type, text, newlines, whitespace_before) {\n this.type = type;\n this.text = text;\n\n // comments_before are\n // comments that have a new line before them\n // and may or may not have a newline after\n // this is a set of comments before\n this.comments_before = null; /* inline comment*/\n\n\n // this.comments_after = new TokenStream(); // no new line before and newline after\n this.newlines = newlines || 0;\n this.whitespace_before = whitespace_before || '';\n this.parent = null;\n this.next = null;\n this.previous = null;\n this.opened = null;\n this.closed = null;\n this.directives = null;\n}\n\n\nmodule.exports.Token = Token;\n\n\n/***/ }),\n/* 4 */,\n/* 5 */,\n/* 6 */\n/***/ (function(module) {\n\n/*jshint node:true */\n/*\n\n The MIT License (MIT)\n\n Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors.\n\n Permission is hereby granted, free of charge, to any person\n obtaining a copy of this software and associated documentation files\n (the \"Software\"), to deal in the Software without restriction,\n including without limitation the rights to use, copy, modify, merge,\n publish, distribute, sublicense, and/or sell copies of the Software,\n and to permit persons to whom the Software is furnished to do so,\n subject to the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\n BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n*/\n\n\n\nfunction Options(options, merge_child_field) {\n this.raw_options = _mergeOpts(options, merge_child_field);\n\n // Support passing the source text back with no change\n this.disabled = this._get_boolean('disabled');\n\n this.eol = this._get_characters('eol', 'auto');\n this.end_with_newline = this._get_boolean('end_with_newline');\n this.indent_size = this._get_number('indent_size', 4);\n this.indent_char = this._get_characters('indent_char', ' ');\n this.indent_level = this._get_number('indent_level');\n\n this.preserve_newlines = this._get_boolean('preserve_newlines', true);\n this.max_preserve_newlines = this._get_number('max_preserve_newlines', 32786);\n if (!this.preserve_newlines) {\n this.max_preserve_newlines = 0;\n }\n\n this.indent_with_tabs = this._get_boolean('indent_with_tabs', this.indent_char === '\\t');\n if (this.indent_with_tabs) {\n this.indent_char = '\\t';\n\n // indent_size behavior changed after 1.8.6\n // It used to be that indent_size would be\n // set to 1 for indent_with_tabs. That is no longer needed and\n // actually doesn't make sense - why not use spaces? Further,\n // that might produce unexpected behavior - tabs being used\n // for single-column alignment. So, when indent_with_tabs is true\n // and indent_size is 1, reset indent_size to 4.\n if (this.indent_size === 1) {\n this.indent_size = 4;\n }\n }\n\n // Backwards compat with 1.3.x\n this.wrap_line_length = this._get_number('wrap_line_length', this._get_number('max_char'));\n\n this.indent_empty_lines = this._get_boolean('indent_empty_lines');\n\n // valid templating languages ['django', 'erb', 'handlebars', 'php', 'smarty', 'angular']\n // For now, 'auto' = all off for javascript, all except angular on for html (and inline javascript/css).\n // other values ignored\n this.templating = this._get_selection_list('templating', ['auto', 'none', 'angular', 'django', 'erb', 'handlebars', 'php', 'smarty'], ['auto']);\n}\n\nOptions.prototype._get_array = function(name, default_value) {\n var option_value = this.raw_options[name];\n var result = default_value || [];\n if (typeof option_value === 'object') {\n if (option_value !== null && typeof option_value.concat === 'function') {\n result = option_value.concat();\n }\n } else if (typeof option_value === 'string') {\n result = option_value.split(/[^a-zA-Z0-9_\\/\\-]+/);\n }\n return result;\n};\n\nOptions.prototype._get_boolean = function(name, default_value) {\n var option_value = this.raw_options[name];\n var result = option_value === undefined ? !!default_value : !!option_value;\n return result;\n};\n\nOptions.prototype._get_characters = function(name, default_value) {\n var option_value = this.raw_options[name];\n var result = default_value || '';\n if (typeof option_value === 'string') {\n result = option_value.replace(/\\\\r/, '\\r').replace(/\\\\n/, '\\n').replace(/\\\\t/, '\\t');\n }\n return result;\n};\n\nOptions.prototype._get_number = function(name, default_value) {\n var option_value = this.raw_options[name];\n default_value = parseInt(default_value, 10);\n if (isNaN(default_value)) {\n default_value = 0;\n }\n var result = parseInt(option_value, 10);\n if (isNaN(result)) {\n result = default_value;\n }\n return result;\n};\n\nOptions.prototype._get_selection = function(name, selection_list, default_value) {\n var result = this._get_selection_list(name, selection_list, default_value);\n if (result.length !== 1) {\n throw new Error(\n \"Invalid Option Value: The option '\" + name + \"' can only be one of the following values:\\n\" +\n selection_list + \"\\nYou passed in: '\" + this.raw_options[name] + \"'\");\n }\n\n return result[0];\n};\n\n\nOptions.prototype._get_selection_list = function(name, selection_list, default_value) {\n if (!selection_list || selection_list.length === 0) {\n throw new Error(\"Selection list cannot be empty.\");\n }\n\n default_value = default_value || [selection_list[0]];\n if (!this._is_valid_selection(default_value, selection_list)) {\n throw new Error(\"Invalid Default Value!\");\n }\n\n var result = this._get_array(name, default_value);\n if (!this._is_valid_selection(result, selection_list)) {\n throw new Error(\n \"Invalid Option Value: The option '\" + name + \"' can contain only the following values:\\n\" +\n selection_list + \"\\nYou passed in: '\" + this.raw_options[name] + \"'\");\n }\n\n return result;\n};\n\nOptions.prototype._is_valid_selection = function(result, selection_list) {\n return result.length && selection_list.length &&\n !result.some(function(item) { return selection_list.indexOf(item) === -1; });\n};\n\n\n// merges child options up with the parent options object\n// Example: obj = {a: 1, b: {a: 2}}\n// mergeOpts(obj, 'b')\n//\n// Returns: {a: 2}\nfunction _mergeOpts(allOptions, childFieldName) {\n var finalOpts = {};\n allOptions = _normalizeOpts(allOptions);\n var name;\n\n for (name in allOptions) {\n if (name !== childFieldName) {\n finalOpts[name] = allOptions[name];\n }\n }\n\n //merge in the per type settings for the childFieldName\n if (childFieldName && allOptions[childFieldName]) {\n for (name in allOptions[childFieldName]) {\n finalOpts[name] = allOptions[childFieldName][name];\n }\n }\n return finalOpts;\n}\n\nfunction _normalizeOpts(options) {\n var convertedOpts = {};\n var key;\n\n for (key in options) {\n var newKey = key.replace(/-/g, \"_\");\n convertedOpts[newKey] = options[key];\n }\n return convertedOpts;\n}\n\nmodule.exports.Options = Options;\nmodule.exports.normalizeOpts = _normalizeOpts;\nmodule.exports.mergeOpts = _mergeOpts;\n\n\n/***/ }),\n/* 7 */,\n/* 8 */\n/***/ (function(module) {\n\n/*jshint node:true */\n/*\n\n The MIT License (MIT)\n\n Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors.\n\n Permission is hereby granted, free of charge, to any person\n obtaining a copy of this software and associated documentation files\n (the \"Software\"), to deal in the Software without restriction,\n including without limitation the rights to use, copy, modify, merge,\n publish, distribute, sublicense, and/or sell copies of the Software,\n and to permit persons to whom the Software is furnished to do so,\n subject to the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\n BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n*/\n\n\n\nvar regexp_has_sticky = RegExp.prototype.hasOwnProperty('sticky');\n\nfunction InputScanner(input_string) {\n this.__input = input_string || '';\n this.__input_length = this.__input.length;\n this.__position = 0;\n}\n\nInputScanner.prototype.restart = function() {\n this.__position = 0;\n};\n\nInputScanner.prototype.back = function() {\n if (this.__position > 0) {\n this.__position -= 1;\n }\n};\n\nInputScanner.prototype.hasNext = function() {\n return this.__position < this.__input_length;\n};\n\nInputScanner.prototype.next = function() {\n var val = null;\n if (this.hasNext()) {\n val = this.__input.charAt(this.__position);\n this.__position += 1;\n }\n return val;\n};\n\nInputScanner.prototype.peek = function(index) {\n var val = null;\n index = index || 0;\n index += this.__position;\n if (index >= 0 && index < this.__input_length) {\n val = this.__input.charAt(index);\n }\n return val;\n};\n\n// This is a JavaScript only helper function (not in python)\n// Javascript doesn't have a match method\n// and not all implementation support \"sticky\" flag.\n// If they do not support sticky then both this.match() and this.test() method\n// must get the match and check the index of the match.\n// If sticky is supported and set, this method will use it.\n// Otherwise it will check that global is set, and fall back to the slower method.\nInputScanner.prototype.__match = function(pattern, index) {\n pattern.lastIndex = index;\n var pattern_match = pattern.exec(this.__input);\n\n if (pattern_match && !(regexp_has_sticky && pattern.sticky)) {\n if (pattern_match.index !== index) {\n pattern_match = null;\n }\n }\n\n return pattern_match;\n};\n\nInputScanner.prototype.test = function(pattern, index) {\n index = index || 0;\n index += this.__position;\n\n if (index >= 0 && index < this.__input_length) {\n return !!this.__match(pattern, index);\n } else {\n return false;\n }\n};\n\nInputScanner.prototype.testChar = function(pattern, index) {\n // test one character regex match\n var val = this.peek(index);\n pattern.lastIndex = 0;\n return val !== null && pattern.test(val);\n};\n\nInputScanner.prototype.match = function(pattern) {\n var pattern_match = this.__match(pattern, this.__position);\n if (pattern_match) {\n this.__position += pattern_match[0].length;\n } else {\n pattern_match = null;\n }\n return pattern_match;\n};\n\nInputScanner.prototype.read = function(starting_pattern, until_pattern, until_after) {\n var val = '';\n var match;\n if (starting_pattern) {\n match = this.match(starting_pattern);\n if (match) {\n val += match[0];\n }\n }\n if (until_pattern && (match || !starting_pattern)) {\n val += this.readUntil(until_pattern, until_after);\n }\n return val;\n};\n\nInputScanner.prototype.readUntil = function(pattern, until_after) {\n var val = '';\n var match_index = this.__position;\n pattern.lastIndex = this.__position;\n var pattern_match = pattern.exec(this.__input);\n if (pattern_match) {\n match_index = pattern_match.index;\n if (until_after) {\n match_index += pattern_match[0].length;\n }\n } else {\n match_index = this.__input_length;\n }\n\n val = this.__input.substring(this.__position, match_index);\n this.__position = match_index;\n return val;\n};\n\nInputScanner.prototype.readUntilAfter = function(pattern) {\n return this.readUntil(pattern, true);\n};\n\nInputScanner.prototype.get_regexp = function(pattern, match_from) {\n var result = null;\n var flags = 'g';\n if (match_from && regexp_has_sticky) {\n flags = 'y';\n }\n // strings are converted to regexp\n if (typeof pattern === \"string\" && pattern !== '') {\n // result = new RegExp(pattern.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&'), flags);\n result = new RegExp(pattern, flags);\n } else if (pattern) {\n result = new RegExp(pattern.source, flags);\n }\n return result;\n};\n\nInputScanner.prototype.get_literal_regexp = function(literal_string) {\n return RegExp(literal_string.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&'));\n};\n\n/* css beautifier legacy helpers */\nInputScanner.prototype.peekUntilAfter = function(pattern) {\n var start = this.__position;\n var val = this.readUntilAfter(pattern);\n this.__position = start;\n return val;\n};\n\nInputScanner.prototype.lookBack = function(testVal) {\n var start = this.__position - 1;\n return start >= testVal.length && this.__input.substring(start - testVal.length, start)\n .toLowerCase() === testVal;\n};\n\nmodule.exports.InputScanner = InputScanner;\n\n\n/***/ }),\n/* 9 */\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n/*jshint node:true */\n/*\n\n The MIT License (MIT)\n\n Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors.\n\n Permission is hereby granted, free of charge, to any person\n obtaining a copy of this software and associated documentation files\n (the \"Software\"), to deal in the Software without restriction,\n including without limitation the rights to use, copy, modify, merge,\n publish, distribute, sublicense, and/or sell copies of the Software,\n and to permit persons to whom the Software is furnished to do so,\n subject to the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\n BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n*/\n\n\n\nvar InputScanner = (__webpack_require__(8).InputScanner);\nvar Token = (__webpack_require__(3).Token);\nvar TokenStream = (__webpack_require__(10).TokenStream);\nvar WhitespacePattern = (__webpack_require__(11).WhitespacePattern);\n\nvar TOKEN = {\n START: 'TK_START',\n RAW: 'TK_RAW',\n EOF: 'TK_EOF'\n};\n\nvar Tokenizer = function(input_string, options) {\n this._input = new InputScanner(input_string);\n this._options = options || {};\n this.__tokens = null;\n\n this._patterns = {};\n this._patterns.whitespace = new WhitespacePattern(this._input);\n};\n\nTokenizer.prototype.tokenize = function() {\n this._input.restart();\n this.__tokens = new TokenStream();\n\n this._reset();\n\n var current;\n var previous = new Token(TOKEN.START, '');\n var open_token = null;\n var open_stack = [];\n var comments = new TokenStream();\n\n while (previous.type !== TOKEN.EOF) {\n current = this._get_next_token(previous, open_token);\n while (this._is_comment(current)) {\n comments.add(current);\n current = this._get_next_token(previous, open_token);\n }\n\n if (!comments.isEmpty()) {\n current.comments_before = comments;\n comments = new TokenStream();\n }\n\n current.parent = open_token;\n\n if (this._is_opening(current)) {\n open_stack.push(open_token);\n open_token = current;\n } else if (open_token && this._is_closing(current, open_token)) {\n current.opened = open_token;\n open_token.closed = current;\n open_token = open_stack.pop();\n current.parent = open_token;\n }\n\n current.previous = previous;\n previous.next = current;\n\n this.__tokens.add(current);\n previous = current;\n }\n\n return this.__tokens;\n};\n\n\nTokenizer.prototype._is_first_token = function() {\n return this.__tokens.isEmpty();\n};\n\nTokenizer.prototype._reset = function() {};\n\nTokenizer.prototype._get_next_token = function(previous_token, open_token) { // jshint unused:false\n this._readWhitespace();\n var resulting_string = this._input.read(/.+/g);\n if (resulting_string) {\n return this._create_token(TOKEN.RAW, resulting_string);\n } else {\n return this._create_token(TOKEN.EOF, '');\n }\n};\n\nTokenizer.prototype._is_comment = function(current_token) { // jshint unused:false\n return false;\n};\n\nTokenizer.prototype._is_opening = function(current_token) { // jshint unused:false\n return false;\n};\n\nTokenizer.prototype._is_closing = function(current_token, open_token) { // jshint unused:false\n return false;\n};\n\nTokenizer.prototype._create_token = function(type, text) {\n var token = new Token(type, text,\n this._patterns.whitespace.newline_count,\n this._patterns.whitespace.whitespace_before_token);\n return token;\n};\n\nTokenizer.prototype._readWhitespace = function() {\n return this._patterns.whitespace.read();\n};\n\n\n\nmodule.exports.Tokenizer = Tokenizer;\nmodule.exports.TOKEN = TOKEN;\n\n\n/***/ }),\n/* 10 */\n/***/ (function(module) {\n\n/*jshint node:true */\n/*\n\n The MIT License (MIT)\n\n Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors.\n\n Permission is hereby granted, free of charge, to any person\n obtaining a copy of this software and associated documentation files\n (the \"Software\"), to deal in the Software without restriction,\n including without limitation the rights to use, copy, modify, merge,\n publish, distribute, sublicense, and/or sell copies of the Software,\n and to permit persons to whom the Software is furnished to do so,\n subject to the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\n BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n*/\n\n\n\nfunction TokenStream(parent_token) {\n // private\n this.__tokens = [];\n this.__tokens_length = this.__tokens.length;\n this.__position = 0;\n this.__parent_token = parent_token;\n}\n\nTokenStream.prototype.restart = function() {\n this.__position = 0;\n};\n\nTokenStream.prototype.isEmpty = function() {\n return this.__tokens_length === 0;\n};\n\nTokenStream.prototype.hasNext = function() {\n return this.__position < this.__tokens_length;\n};\n\nTokenStream.prototype.next = function() {\n var val = null;\n if (this.hasNext()) {\n val = this.__tokens[this.__position];\n this.__position += 1;\n }\n return val;\n};\n\nTokenStream.prototype.peek = function(index) {\n var val = null;\n index = index || 0;\n index += this.__position;\n if (index >= 0 && index < this.__tokens_length) {\n val = this.__tokens[index];\n }\n return val;\n};\n\nTokenStream.prototype.add = function(token) {\n if (this.__parent_token) {\n token.parent = this.__parent_token;\n }\n this.__tokens.push(token);\n this.__tokens_length += 1;\n};\n\nmodule.exports.TokenStream = TokenStream;\n\n\n/***/ }),\n/* 11 */\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n/*jshint node:true */\n/*\n\n The MIT License (MIT)\n\n Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors.\n\n Permission is hereby granted, free of charge, to any person\n obtaining a copy of this software and associated documentation files\n (the \"Software\"), to deal in the Software without restriction,\n including without limitation the rights to use, copy, modify, merge,\n publish, distribute, sublicense, and/or sell copies of the Software,\n and to permit persons to whom the Software is furnished to do so,\n subject to the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\n BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n*/\n\n\n\nvar Pattern = (__webpack_require__(12).Pattern);\n\nfunction WhitespacePattern(input_scanner, parent) {\n Pattern.call(this, input_scanner, parent);\n if (parent) {\n this._line_regexp = this._input.get_regexp(parent._line_regexp);\n } else {\n this.__set_whitespace_patterns('', '');\n }\n\n this.newline_count = 0;\n this.whitespace_before_token = '';\n}\nWhitespacePattern.prototype = new Pattern();\n\nWhitespacePattern.prototype.__set_whitespace_patterns = function(whitespace_chars, newline_chars) {\n whitespace_chars += '\\\\t ';\n newline_chars += '\\\\n\\\\r';\n\n this._match_pattern = this._input.get_regexp(\n '[' + whitespace_chars + newline_chars + ']+', true);\n this._newline_regexp = this._input.get_regexp(\n '\\\\r\\\\n|[' + newline_chars + ']');\n};\n\nWhitespacePattern.prototype.read = function() {\n this.newline_count = 0;\n this.whitespace_before_token = '';\n\n var resulting_string = this._input.read(this._match_pattern);\n if (resulting_string === ' ') {\n this.whitespace_before_token = ' ';\n } else if (resulting_string) {\n var matches = this.__split(this._newline_regexp, resulting_string);\n this.newline_count = matches.length - 1;\n this.whitespace_before_token = matches[this.newline_count];\n }\n\n return resulting_string;\n};\n\nWhitespacePattern.prototype.matching = function(whitespace_chars, newline_chars) {\n var result = this._create();\n result.__set_whitespace_patterns(whitespace_chars, newline_chars);\n result._update();\n return result;\n};\n\nWhitespacePattern.prototype._create = function() {\n return new WhitespacePattern(this._input, this);\n};\n\nWhitespacePattern.prototype.__split = function(regexp, input_string) {\n regexp.lastIndex = 0;\n var start_index = 0;\n var result = [];\n var next_match = regexp.exec(input_string);\n while (next_match) {\n result.push(input_string.substring(start_index, next_match.index));\n start_index = next_match.index + next_match[0].length;\n next_match = regexp.exec(input_string);\n }\n\n if (start_index < input_string.length) {\n result.push(input_string.substring(start_index, input_string.length));\n } else {\n result.push('');\n }\n\n return result;\n};\n\n\n\nmodule.exports.WhitespacePattern = WhitespacePattern;\n\n\n/***/ }),\n/* 12 */\n/***/ (function(module) {\n\n/*jshint node:true */\n/*\n\n The MIT License (MIT)\n\n Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors.\n\n Permission is hereby granted, free of charge, to any person\n obtaining a copy of this software and associated documentation files\n (the \"Software\"), to deal in the Software without restriction,\n including without limitation the rights to use, copy, modify, merge,\n publish, distribute, sublicense, and/or sell copies of the Software,\n and to permit persons to whom the Software is furnished to do so,\n subject to the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\n BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n*/\n\n\n\nfunction Pattern(input_scanner, parent) {\n this._input = input_scanner;\n this._starting_pattern = null;\n this._match_pattern = null;\n this._until_pattern = null;\n this._until_after = false;\n\n if (parent) {\n this._starting_pattern = this._input.get_regexp(parent._starting_pattern, true);\n this._match_pattern = this._input.get_regexp(parent._match_pattern, true);\n this._until_pattern = this._input.get_regexp(parent._until_pattern);\n this._until_after = parent._until_after;\n }\n}\n\nPattern.prototype.read = function() {\n var result = this._input.read(this._starting_pattern);\n if (!this._starting_pattern || result) {\n result += this._input.read(this._match_pattern, this._until_pattern, this._until_after);\n }\n return result;\n};\n\nPattern.prototype.read_match = function() {\n return this._input.match(this._match_pattern);\n};\n\nPattern.prototype.until_after = function(pattern) {\n var result = this._create();\n result._until_after = true;\n result._until_pattern = this._input.get_regexp(pattern);\n result._update();\n return result;\n};\n\nPattern.prototype.until = function(pattern) {\n var result = this._create();\n result._until_after = false;\n result._until_pattern = this._input.get_regexp(pattern);\n result._update();\n return result;\n};\n\nPattern.prototype.starting_with = function(pattern) {\n var result = this._create();\n result._starting_pattern = this._input.get_regexp(pattern, true);\n result._update();\n return result;\n};\n\nPattern.prototype.matching = function(pattern) {\n var result = this._create();\n result._match_pattern = this._input.get_regexp(pattern, true);\n result._update();\n return result;\n};\n\nPattern.prototype._create = function() {\n return new Pattern(this._input, this);\n};\n\nPattern.prototype._update = function() {};\n\nmodule.exports.Pattern = Pattern;\n\n\n/***/ }),\n/* 13 */\n/***/ (function(module) {\n\n/*jshint node:true */\n/*\n\n The MIT License (MIT)\n\n Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors.\n\n Permission is hereby granted, free of charge, to any person\n obtaining a copy of this software and associated documentation files\n (the \"Software\"), to deal in the Software without restriction,\n including without limitation the rights to use, copy, modify, merge,\n publish, distribute, sublicense, and/or sell copies of the Software,\n and to permit persons to whom the Software is furnished to do so,\n subject to the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\n BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n*/\n\n\n\nfunction Directives(start_block_pattern, end_block_pattern) {\n start_block_pattern = typeof start_block_pattern === 'string' ? start_block_pattern : start_block_pattern.source;\n end_block_pattern = typeof end_block_pattern === 'string' ? end_block_pattern : end_block_pattern.source;\n this.__directives_block_pattern = new RegExp(start_block_pattern + / beautify( \\w+[:]\\w+)+ /.source + end_block_pattern, 'g');\n this.__directive_pattern = / (\\w+)[:](\\w+)/g;\n\n this.__directives_end_ignore_pattern = new RegExp(start_block_pattern + /\\sbeautify\\signore:end\\s/.source + end_block_pattern, 'g');\n}\n\nDirectives.prototype.get_directives = function(text) {\n if (!text.match(this.__directives_block_pattern)) {\n return null;\n }\n\n var directives = {};\n this.__directive_pattern.lastIndex = 0;\n var directive_match = this.__directive_pattern.exec(text);\n\n while (directive_match) {\n directives[directive_match[1]] = directive_match[2];\n directive_match = this.__directive_pattern.exec(text);\n }\n\n return directives;\n};\n\nDirectives.prototype.readIgnored = function(input) {\n return input.readUntilAfter(this.__directives_end_ignore_pattern);\n};\n\n\nmodule.exports.Directives = Directives;\n\n\n/***/ }),\n/* 14 */\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n/*jshint node:true */\n/*\n\n The MIT License (MIT)\n\n Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors.\n\n Permission is hereby granted, free of charge, to any person\n obtaining a copy of this software and associated documentation files\n (the \"Software\"), to deal in the Software without restriction,\n including without limitation the rights to use, copy, modify, merge,\n publish, distribute, sublicense, and/or sell copies of the Software,\n and to permit persons to whom the Software is furnished to do so,\n subject to the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\n BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n*/\n\n\n\nvar Pattern = (__webpack_require__(12).Pattern);\n\n\nvar template_names = {\n django: false,\n erb: false,\n handlebars: false,\n php: false,\n smarty: false,\n angular: false\n};\n\n// This lets templates appear anywhere we would do a readUntil\n// The cost is higher but it is pay to play.\nfunction TemplatablePattern(input_scanner, parent) {\n Pattern.call(this, input_scanner, parent);\n this.__template_pattern = null;\n this._disabled = Object.assign({}, template_names);\n this._excluded = Object.assign({}, template_names);\n\n if (parent) {\n this.__template_pattern = this._input.get_regexp(parent.__template_pattern);\n this._excluded = Object.assign(this._excluded, parent._excluded);\n this._disabled = Object.assign(this._disabled, parent._disabled);\n }\n var pattern = new Pattern(input_scanner);\n this.__patterns = {\n handlebars_comment: pattern.starting_with(/{{!--/).until_after(/--}}/),\n handlebars_unescaped: pattern.starting_with(/{{{/).until_after(/}}}/),\n handlebars: pattern.starting_with(/{{/).until_after(/}}/),\n php: pattern.starting_with(/<\\?(?:[= ]|php)/).until_after(/\\?>/),\n erb: pattern.starting_with(/<%[^%]/).until_after(/[^%]%>/),\n // django coflicts with handlebars a bit.\n django: pattern.starting_with(/{%/).until_after(/%}/),\n django_value: pattern.starting_with(/{{/).until_after(/}}/),\n django_comment: pattern.starting_with(/{#/).until_after(/#}/),\n smarty: pattern.starting_with(/{(?=[^}{\\s\\n])/).until_after(/[^\\s\\n]}/),\n smarty_comment: pattern.starting_with(/{\\*/).until_after(/\\*}/),\n smarty_literal: pattern.starting_with(/{literal}/).until_after(/{\\/literal}/)\n };\n}\nTemplatablePattern.prototype = new Pattern();\n\nTemplatablePattern.prototype._create = function() {\n return new TemplatablePattern(this._input, this);\n};\n\nTemplatablePattern.prototype._update = function() {\n this.__set_templated_pattern();\n};\n\nTemplatablePattern.prototype.disable = function(language) {\n var result = this._create();\n result._disabled[language] = true;\n result._update();\n return result;\n};\n\nTemplatablePattern.prototype.read_options = function(options) {\n var result = this._create();\n for (var language in template_names) {\n result._disabled[language] = options.templating.indexOf(language) === -1;\n }\n result._update();\n return result;\n};\n\nTemplatablePattern.prototype.exclude = function(language) {\n var result = this._create();\n result._excluded[language] = true;\n result._update();\n return result;\n};\n\nTemplatablePattern.prototype.read = function() {\n var result = '';\n if (this._match_pattern) {\n result = this._input.read(this._starting_pattern);\n } else {\n result = this._input.read(this._starting_pattern, this.__template_pattern);\n }\n var next = this._read_template();\n while (next) {\n if (this._match_pattern) {\n next += this._input.read(this._match_pattern);\n } else {\n next += this._input.readUntil(this.__template_pattern);\n }\n result += next;\n next = this._read_template();\n }\n\n if (this._until_after) {\n result += this._input.readUntilAfter(this._until_pattern);\n }\n return result;\n};\n\nTemplatablePattern.prototype.__set_templated_pattern = function() {\n var items = [];\n\n if (!this._disabled.php) {\n items.push(this.__patterns.php._starting_pattern.source);\n }\n if (!this._disabled.handlebars) {\n items.push(this.__patterns.handlebars._starting_pattern.source);\n }\n if (!this._disabled.angular) {\n // Handlebars ('{{' and '}}') are also special tokens in Angular)\n items.push(this.__patterns.handlebars._starting_pattern.source);\n }\n if (!this._disabled.erb) {\n items.push(this.__patterns.erb._starting_pattern.source);\n }\n if (!this._disabled.django) {\n items.push(this.__patterns.django._starting_pattern.source);\n // The starting pattern for django is more complex because it has different\n // patterns for value, comment, and other sections\n items.push(this.__patterns.django_value._starting_pattern.source);\n items.push(this.__patterns.django_comment._starting_pattern.source);\n }\n if (!this._disabled.smarty) {\n items.push(this.__patterns.smarty._starting_pattern.source);\n }\n\n if (this._until_pattern) {\n items.push(this._until_pattern.source);\n }\n this.__template_pattern = this._input.get_regexp('(?:' + items.join('|') + ')');\n};\n\nTemplatablePattern.prototype._read_template = function() {\n var resulting_string = '';\n var c = this._input.peek();\n if (c === '<') {\n var peek1 = this._input.peek(1);\n //if we're in a comment, do something special\n // We treat all comments as literals, even more than preformatted tags\n // we just look for the appropriate close tag\n if (!this._disabled.php && !this._excluded.php && peek1 === '?') {\n resulting_string = resulting_string ||\n this.__patterns.php.read();\n }\n if (!this._disabled.erb && !this._excluded.erb && peek1 === '%') {\n resulting_string = resulting_string ||\n this.__patterns.erb.read();\n }\n } else if (c === '{') {\n if (!this._disabled.handlebars && !this._excluded.handlebars) {\n resulting_string = resulting_string ||\n this.__patterns.handlebars_comment.read();\n resulting_string = resulting_string ||\n this.__patterns.handlebars_unescaped.read();\n resulting_string = resulting_string ||\n this.__patterns.handlebars.read();\n }\n if (!this._disabled.django) {\n // django coflicts with handlebars a bit.\n if (!this._excluded.django && !this._excluded.handlebars) {\n resulting_string = resulting_string ||\n this.__patterns.django_value.read();\n }\n if (!this._excluded.django) {\n resulting_string = resulting_string ||\n this.__patterns.django_comment.read();\n resulting_string = resulting_string ||\n this.__patterns.django.read();\n }\n }\n if (!this._disabled.smarty) {\n // smarty cannot be enabled with django or handlebars enabled\n if (this._disabled.django && this._disabled.handlebars) {\n resulting_string = resulting_string ||\n this.__patterns.smarty_comment.read();\n resulting_string = resulting_string ||\n this.__patterns.smarty_literal.read();\n resulting_string = resulting_string ||\n this.__patterns.smarty.read();\n }\n }\n }\n return resulting_string;\n};\n\n\nmodule.exports.TemplatablePattern = TemplatablePattern;\n\n\n/***/ }),\n/* 15 */,\n/* 16 */,\n/* 17 */,\n/* 18 */\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n/*jshint node:true */\n/*\n\n The MIT License (MIT)\n\n Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors.\n\n Permission is hereby granted, free of charge, to any person\n obtaining a copy of this software and associated documentation files\n (the \"Software\"), to deal in the Software without restriction,\n including without limitation the rights to use, copy, modify, merge,\n publish, distribute, sublicense, and/or sell copies of the Software,\n and to permit persons to whom the Software is furnished to do so,\n subject to the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\n BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n*/\n\n\n\nvar Beautifier = (__webpack_require__(19).Beautifier),\n Options = (__webpack_require__(20).Options);\n\nfunction style_html(html_source, options, js_beautify, css_beautify) {\n var beautifier = new Beautifier(html_source, options, js_beautify, css_beautify);\n return beautifier.beautify();\n}\n\nmodule.exports = style_html;\nmodule.exports.defaultOptions = function() {\n return new Options();\n};\n\n\n/***/ }),\n/* 19 */\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n/*jshint node:true */\n/*\n\n The MIT License (MIT)\n\n Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors.\n\n Permission is hereby granted, free of charge, to any person\n obtaining a copy of this software and associated documentation files\n (the \"Software\"), to deal in the Software without restriction,\n including without limitation the rights to use, copy, modify, merge,\n publish, distribute, sublicense, and/or sell copies of the Software,\n and to permit persons to whom the Software is furnished to do so,\n subject to the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\n BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n*/\n\n\n\nvar Options = (__webpack_require__(20).Options);\nvar Output = (__webpack_require__(2).Output);\nvar Tokenizer = (__webpack_require__(21).Tokenizer);\nvar TOKEN = (__webpack_require__(21).TOKEN);\n\nvar lineBreak = /\\r\\n|[\\r\\n]/;\nvar allLineBreaks = /\\r\\n|[\\r\\n]/g;\n\nvar Printer = function(options, base_indent_string) { //handles input/output and some other printing functions\n\n this.indent_level = 0;\n this.alignment_size = 0;\n this.max_preserve_newlines = options.max_preserve_newlines;\n this.preserve_newlines = options.preserve_newlines;\n\n this._output = new Output(options, base_indent_string);\n\n};\n\nPrinter.prototype.current_line_has_match = function(pattern) {\n return this._output.current_line.has_match(pattern);\n};\n\nPrinter.prototype.set_space_before_token = function(value, non_breaking) {\n this._output.space_before_token = value;\n this._output.non_breaking_space = non_breaking;\n};\n\nPrinter.prototype.set_wrap_point = function() {\n this._output.set_indent(this.indent_level, this.alignment_size);\n this._output.set_wrap_point();\n};\n\n\nPrinter.prototype.add_raw_token = function(token) {\n this._output.add_raw_token(token);\n};\n\nPrinter.prototype.print_preserved_newlines = function(raw_token) {\n var newlines = 0;\n if (raw_token.type !== TOKEN.TEXT && raw_token.previous.type !== TOKEN.TEXT) {\n newlines = raw_token.newlines ? 1 : 0;\n }\n\n if (this.preserve_newlines) {\n newlines = raw_token.newlines < this.max_preserve_newlines + 1 ? raw_token.newlines : this.max_preserve_newlines + 1;\n }\n for (var n = 0; n < newlines; n++) {\n this.print_newline(n > 0);\n }\n\n return newlines !== 0;\n};\n\nPrinter.prototype.traverse_whitespace = function(raw_token) {\n if (raw_token.whitespace_before || raw_token.newlines) {\n if (!this.print_preserved_newlines(raw_token)) {\n this._output.space_before_token = true;\n }\n return true;\n }\n return false;\n};\n\nPrinter.prototype.previous_token_wrapped = function() {\n return this._output.previous_token_wrapped;\n};\n\nPrinter.prototype.print_newline = function(force) {\n this._output.add_new_line(force);\n};\n\nPrinter.prototype.print_token = function(token) {\n if (token.text) {\n this._output.set_indent(this.indent_level, this.alignment_size);\n this._output.add_token(token.text);\n }\n};\n\nPrinter.prototype.indent = function() {\n this.indent_level++;\n};\n\nPrinter.prototype.deindent = function() {\n if (this.indent_level > 0) {\n this.indent_level--;\n this._output.set_indent(this.indent_level, this.alignment_size);\n }\n};\n\nPrinter.prototype.get_full_indent = function(level) {\n level = this.indent_level + (level || 0);\n if (level < 1) {\n return '';\n }\n\n return this._output.get_indent_string(level);\n};\n\nvar get_type_attribute = function(start_token) {\n var result = null;\n var raw_token = start_token.next;\n\n // Search attributes for a type attribute\n while (raw_token.type !== TOKEN.EOF && start_token.closed !== raw_token) {\n if (raw_token.type === TOKEN.ATTRIBUTE && raw_token.text === 'type') {\n if (raw_token.next && raw_token.next.type === TOKEN.EQUALS &&\n raw_token.next.next && raw_token.next.next.type === TOKEN.VALUE) {\n result = raw_token.next.next.text;\n }\n break;\n }\n raw_token = raw_token.next;\n }\n\n return result;\n};\n\nvar get_custom_beautifier_name = function(tag_check, raw_token) {\n var typeAttribute = null;\n var result = null;\n\n if (!raw_token.closed) {\n return null;\n }\n\n if (tag_check === 'script') {\n typeAttribute = 'text/javascript';\n } else if (tag_check === 'style') {\n typeAttribute = 'text/css';\n }\n\n typeAttribute = get_type_attribute(raw_token) || typeAttribute;\n\n // For script and style tags that have a type attribute, only enable custom beautifiers for matching values\n // For those without a type attribute use default;\n if (typeAttribute.search('text/css') > -1) {\n result = 'css';\n } else if (typeAttribute.search(/module|((text|application|dojo)\\/(x-)?(javascript|ecmascript|jscript|livescript|(ld\\+)?json|method|aspect))/) > -1) {\n result = 'javascript';\n } else if (typeAttribute.search(/(text|application|dojo)\\/(x-)?(html)/) > -1) {\n result = 'html';\n } else if (typeAttribute.search(/test\\/null/) > -1) {\n // Test only mime-type for testing the beautifier when null is passed as beautifing function\n result = 'null';\n }\n\n return result;\n};\n\nfunction in_array(what, arr) {\n return arr.indexOf(what) !== -1;\n}\n\nfunction TagFrame(parent, parser_token, indent_level) {\n this.parent = parent || null;\n this.tag = parser_token ? parser_token.tag_name : '';\n this.indent_level = indent_level || 0;\n this.parser_token = parser_token || null;\n}\n\nfunction TagStack(printer) {\n this._printer = printer;\n this._current_frame = null;\n}\n\nTagStack.prototype.get_parser_token = function() {\n return this._current_frame ? this._current_frame.parser_token : null;\n};\n\nTagStack.prototype.record_tag = function(parser_token) { //function to record a tag and its parent in this.tags Object\n var new_frame = new TagFrame(this._current_frame, parser_token, this._printer.indent_level);\n this._current_frame = new_frame;\n};\n\nTagStack.prototype._try_pop_frame = function(frame) { //function to retrieve the opening tag to the corresponding closer\n var parser_token = null;\n\n if (frame) {\n parser_token = frame.parser_token;\n this._printer.indent_level = frame.indent_level;\n this._current_frame = frame.parent;\n }\n\n return parser_token;\n};\n\nTagStack.prototype._get_frame = function(tag_list, stop_list) { //function to retrieve the opening tag to the corresponding closer\n var frame = this._current_frame;\n\n while (frame) { //till we reach '' (the initial value);\n if (tag_list.indexOf(frame.tag) !== -1) { //if this is it use it\n break;\n } else if (stop_list && stop_list.indexOf(frame.tag) !== -1) {\n frame = null;\n break;\n }\n frame = frame.parent;\n }\n\n return frame;\n};\n\nTagStack.prototype.try_pop = function(tag, stop_list) { //function to retrieve the opening tag to the corresponding closer\n var frame = this._get_frame([tag], stop_list);\n return this._try_pop_frame(frame);\n};\n\nTagStack.prototype.indent_to_tag = function(tag_list) {\n var frame = this._get_frame(tag_list);\n if (frame) {\n this._printer.indent_level = frame.indent_level;\n }\n};\n\nfunction Beautifier(source_text, options, js_beautify, css_beautify) {\n //Wrapper function to invoke all the necessary constructors and deal with the output.\n this._source_text = source_text || '';\n options = options || {};\n this._js_beautify = js_beautify;\n this._css_beautify = css_beautify;\n this._tag_stack = null;\n\n // Allow the setting of language/file-type specific options\n // with inheritance of overall settings\n var optionHtml = new Options(options, 'html');\n\n this._options = optionHtml;\n\n this._is_wrap_attributes_force = this._options.wrap_attributes.substr(0, 'force'.length) === 'force';\n this._is_wrap_attributes_force_expand_multiline = (this._options.wrap_attributes === 'force-expand-multiline');\n this._is_wrap_attributes_force_aligned = (this._options.wrap_attributes === 'force-aligned');\n this._is_wrap_attributes_aligned_multiple = (this._options.wrap_attributes === 'aligned-multiple');\n this._is_wrap_attributes_preserve = this._options.wrap_attributes.substr(0, 'preserve'.length) === 'preserve';\n this._is_wrap_attributes_preserve_aligned = (this._options.wrap_attributes === 'preserve-aligned');\n}\n\nBeautifier.prototype.beautify = function() {\n\n // if disabled, return the input unchanged.\n if (this._options.disabled) {\n return this._source_text;\n }\n\n var source_text = this._source_text;\n var eol = this._options.eol;\n if (this._options.eol === 'auto') {\n eol = '\\n';\n if (source_text && lineBreak.test(source_text)) {\n eol = source_text.match(lineBreak)[0];\n }\n }\n\n // HACK: newline parsing inconsistent. This brute force normalizes the input.\n source_text = source_text.replace(allLineBreaks, '\\n');\n\n var baseIndentString = source_text.match(/^[\\t ]*/)[0];\n\n var last_token = {\n text: '',\n type: ''\n };\n\n var last_tag_token = new TagOpenParserToken(this._options);\n\n var printer = new Printer(this._options, baseIndentString);\n var tokens = new Tokenizer(source_text, this._options).tokenize();\n\n this._tag_stack = new TagStack(printer);\n\n var parser_token = null;\n var raw_token = tokens.next();\n while (raw_token.type !== TOKEN.EOF) {\n\n if (raw_token.type === TOKEN.TAG_OPEN || raw_token.type === TOKEN.COMMENT) {\n parser_token = this._handle_tag_open(printer, raw_token, last_tag_token, last_token, tokens);\n last_tag_token = parser_token;\n } else if ((raw_token.type === TOKEN.ATTRIBUTE || raw_token.type === TOKEN.EQUALS || raw_token.type === TOKEN.VALUE) ||\n (raw_token.type === TOKEN.TEXT && !last_tag_token.tag_complete)) {\n parser_token = this._handle_inside_tag(printer, raw_token, last_tag_token, last_token);\n } else if (raw_token.type === TOKEN.TAG_CLOSE) {\n parser_token = this._handle_tag_close(printer, raw_token, last_tag_token);\n } else if (raw_token.type === TOKEN.TEXT) {\n parser_token = this._handle_text(printer, raw_token, last_tag_token);\n } else if (raw_token.type === TOKEN.CONTROL_FLOW_OPEN) {\n parser_token = this._handle_control_flow_open(printer, raw_token);\n } else if (raw_token.type === TOKEN.CONTROL_FLOW_CLOSE) {\n parser_token = this._handle_control_flow_close(printer, raw_token);\n } else {\n // This should never happen, but if it does. Print the raw token\n printer.add_raw_token(raw_token);\n }\n\n last_token = parser_token;\n\n raw_token = tokens.next();\n }\n var sweet_code = printer._output.get_code(eol);\n\n return sweet_code;\n};\n\nBeautifier.prototype._handle_control_flow_open = function(printer, raw_token) {\n var parser_token = {\n text: raw_token.text,\n type: raw_token.type\n };\n printer.set_space_before_token(raw_token.newlines || raw_token.whitespace_before !== '', true);\n if (raw_token.newlines) {\n printer.print_preserved_newlines(raw_token);\n } else {\n printer.set_space_before_token(raw_token.newlines || raw_token.whitespace_before !== '', true);\n }\n printer.print_token(raw_token);\n printer.indent();\n return parser_token;\n};\n\nBeautifier.prototype._handle_control_flow_close = function(printer, raw_token) {\n var parser_token = {\n text: raw_token.text,\n type: raw_token.type\n };\n\n printer.deindent();\n if (raw_token.newlines) {\n printer.print_preserved_newlines(raw_token);\n } else {\n printer.set_space_before_token(raw_token.newlines || raw_token.whitespace_before !== '', true);\n }\n printer.print_token(raw_token);\n return parser_token;\n};\n\nBeautifier.prototype._handle_tag_close = function(printer, raw_token, last_tag_token) {\n var parser_token = {\n text: raw_token.text,\n type: raw_token.type\n };\n printer.alignment_size = 0;\n last_tag_token.tag_complete = true;\n\n printer.set_space_before_token(raw_token.newlines || raw_token.whitespace_before !== '', true);\n if (last_tag_token.is_unformatted) {\n printer.add_raw_token(raw_token);\n } else {\n if (last_tag_token.tag_start_char === '<') {\n printer.set_space_before_token(raw_token.text[0] === '/', true); // space before />, no space before >\n if (this._is_wrap_attributes_force_expand_multiline && last_tag_token.has_wrapped_attrs) {\n printer.print_newline(false);\n }\n }\n printer.print_token(raw_token);\n\n }\n\n if (last_tag_token.indent_content &&\n !(last_tag_token.is_unformatted || last_tag_token.is_content_unformatted)) {\n printer.indent();\n\n // only indent once per opened tag\n last_tag_token.indent_content = false;\n }\n\n if (!last_tag_token.is_inline_element &&\n !(last_tag_token.is_unformatted || last_tag_token.is_content_unformatted)) {\n printer.set_wrap_point();\n }\n\n return parser_token;\n};\n\nBeautifier.prototype._handle_inside_tag = function(printer, raw_token, last_tag_token, last_token) {\n var wrapped = last_tag_token.has_wrapped_attrs;\n var parser_token = {\n text: raw_token.text,\n type: raw_token.type\n };\n\n printer.set_space_before_token(raw_token.newlines || raw_token.whitespace_before !== '', true);\n if (last_tag_token.is_unformatted) {\n printer.add_raw_token(raw_token);\n } else if (last_tag_token.tag_start_char === '{' && raw_token.type === TOKEN.TEXT) {\n // For the insides of handlebars allow newlines or a single space between open and contents\n if (printer.print_preserved_newlines(raw_token)) {\n raw_token.newlines = 0;\n printer.add_raw_token(raw_token);\n } else {\n printer.print_token(raw_token);\n }\n } else {\n if (raw_token.type === TOKEN.ATTRIBUTE) {\n printer.set_space_before_token(true);\n } else if (raw_token.type === TOKEN.EQUALS) { //no space before =\n printer.set_space_before_token(false);\n } else if (raw_token.type === TOKEN.VALUE && raw_token.previous.type === TOKEN.EQUALS) { //no space before value\n printer.set_space_before_token(false);\n }\n\n if (raw_token.type === TOKEN.ATTRIBUTE && last_tag_token.tag_start_char === '<') {\n if (this._is_wrap_attributes_preserve || this._is_wrap_attributes_preserve_aligned) {\n printer.traverse_whitespace(raw_token);\n wrapped = wrapped || raw_token.newlines !== 0;\n }\n\n // Wrap for 'force' options, and if the number of attributes is at least that specified in 'wrap_attributes_min_attrs':\n // 1. always wrap the second and beyond attributes\n // 2. wrap the first attribute only if 'force-expand-multiline' is specified\n if (this._is_wrap_attributes_force &&\n last_tag_token.attr_count >= this._options.wrap_attributes_min_attrs &&\n (last_token.type !== TOKEN.TAG_OPEN || // ie. second attribute and beyond\n this._is_wrap_attributes_force_expand_multiline)) {\n printer.print_newline(false);\n wrapped = true;\n }\n }\n printer.print_token(raw_token);\n wrapped = wrapped || printer.previous_token_wrapped();\n last_tag_token.has_wrapped_attrs = wrapped;\n }\n return parser_token;\n};\n\nBeautifier.prototype._handle_text = function(printer, raw_token, last_tag_token) {\n var parser_token = {\n text: raw_token.text,\n type: 'TK_CONTENT'\n };\n if (last_tag_token.custom_beautifier_name) { //check if we need to format javascript\n this._print_custom_beatifier_text(printer, raw_token, last_tag_token);\n } else if (last_tag_token.is_unformatted || last_tag_token.is_content_unformatted) {\n printer.add_raw_token(raw_token);\n } else {\n printer.traverse_whitespace(raw_token);\n printer.print_token(raw_token);\n }\n return parser_token;\n};\n\nBeautifier.prototype._print_custom_beatifier_text = function(printer, raw_token, last_tag_token) {\n var local = this;\n if (raw_token.text !== '') {\n\n var text = raw_token.text,\n _beautifier,\n script_indent_level = 1,\n pre = '',\n post = '';\n if (last_tag_token.custom_beautifier_name === 'javascript' && typeof this._js_beautify === 'function') {\n _beautifier = this._js_beautify;\n } else if (last_tag_token.custom_beautifier_name === 'css' && typeof this._css_beautify === 'function') {\n _beautifier = this._css_beautify;\n } else if (last_tag_token.custom_beautifier_name === 'html') {\n _beautifier = function(html_source, options) {\n var beautifier = new Beautifier(html_source, options, local._js_beautify, local._css_beautify);\n return beautifier.beautify();\n };\n }\n\n if (this._options.indent_scripts === \"keep\") {\n script_indent_level = 0;\n } else if (this._options.indent_scripts === \"separate\") {\n script_indent_level = -printer.indent_level;\n }\n\n var indentation = printer.get_full_indent(script_indent_level);\n\n // if there is at least one empty line at the end of this text, strip it\n // we'll be adding one back after the text but before the containing tag.\n text = text.replace(/\\n[ \\t]*$/, '');\n\n // Handle the case where content is wrapped in a comment or cdata.\n if (last_tag_token.custom_beautifier_name !== 'html' &&\n text[0] === '<' && text.match(/^(|]]>)$/.exec(text);\n\n // if we start to wrap but don't finish, print raw\n if (!matched) {\n printer.add_raw_token(raw_token);\n return;\n }\n\n pre = indentation + matched[1] + '\\n';\n text = matched[4];\n if (matched[5]) {\n post = indentation + matched[5];\n }\n\n // if there is at least one empty line at the end of this text, strip it\n // we'll be adding one back after the text but before the containing tag.\n text = text.replace(/\\n[ \\t]*$/, '');\n\n if (matched[2] || matched[3].indexOf('\\n') !== -1) {\n // if the first line of the non-comment text has spaces\n // use that as the basis for indenting in null case.\n matched = matched[3].match(/[ \\t]+$/);\n if (matched) {\n raw_token.whitespace_before = matched[0];\n }\n }\n }\n\n if (text) {\n if (_beautifier) {\n\n // call the Beautifier if avaliable\n var Child_options = function() {\n this.eol = '\\n';\n };\n Child_options.prototype = this._options.raw_options;\n var child_options = new Child_options();\n text = _beautifier(indentation + text, child_options);\n } else {\n // simply indent the string otherwise\n var white = raw_token.whitespace_before;\n if (white) {\n text = text.replace(new RegExp('\\n(' + white + ')?', 'g'), '\\n');\n }\n\n text = indentation + text.replace(/\\n/g, '\\n' + indentation);\n }\n }\n\n if (pre) {\n if (!text) {\n text = pre + post;\n } else {\n text = pre + text + '\\n' + post;\n }\n }\n\n printer.print_newline(false);\n if (text) {\n raw_token.text = text;\n raw_token.whitespace_before = '';\n raw_token.newlines = 0;\n printer.add_raw_token(raw_token);\n printer.print_newline(true);\n }\n }\n};\n\nBeautifier.prototype._handle_tag_open = function(printer, raw_token, last_tag_token, last_token, tokens) {\n var parser_token = this._get_tag_open_token(raw_token);\n\n if ((last_tag_token.is_unformatted || last_tag_token.is_content_unformatted) &&\n !last_tag_token.is_empty_element &&\n raw_token.type === TOKEN.TAG_OPEN && !parser_token.is_start_tag) {\n // End element tags for unformatted or content_unformatted elements\n // are printed raw to keep any newlines inside them exactly the same.\n printer.add_raw_token(raw_token);\n parser_token.start_tag_token = this._tag_stack.try_pop(parser_token.tag_name);\n } else {\n printer.traverse_whitespace(raw_token);\n this._set_tag_position(printer, raw_token, parser_token, last_tag_token, last_token);\n if (!parser_token.is_inline_element) {\n printer.set_wrap_point();\n }\n printer.print_token(raw_token);\n }\n\n // count the number of attributes\n if (parser_token.is_start_tag && this._is_wrap_attributes_force) {\n var peek_index = 0;\n var peek_token;\n do {\n peek_token = tokens.peek(peek_index);\n if (peek_token.type === TOKEN.ATTRIBUTE) {\n parser_token.attr_count += 1;\n }\n peek_index += 1;\n } while (peek_token.type !== TOKEN.EOF && peek_token.type !== TOKEN.TAG_CLOSE);\n }\n\n //indent attributes an auto, forced, aligned or forced-align line-wrap\n if (this._is_wrap_attributes_force_aligned || this._is_wrap_attributes_aligned_multiple || this._is_wrap_attributes_preserve_aligned) {\n parser_token.alignment_size = raw_token.text.length + 1;\n }\n\n if (!parser_token.tag_complete && !parser_token.is_unformatted) {\n printer.alignment_size = parser_token.alignment_size;\n }\n\n return parser_token;\n};\n\nvar TagOpenParserToken = function(options, parent, raw_token) {\n this.parent = parent || null;\n this.text = '';\n this.type = 'TK_TAG_OPEN';\n this.tag_name = '';\n this.is_inline_element = false;\n this.is_unformatted = false;\n this.is_content_unformatted = false;\n this.is_empty_element = false;\n this.is_start_tag = false;\n this.is_end_tag = false;\n this.indent_content = false;\n this.multiline_content = false;\n this.custom_beautifier_name = null;\n this.start_tag_token = null;\n this.attr_count = 0;\n this.has_wrapped_attrs = false;\n this.alignment_size = 0;\n this.tag_complete = false;\n this.tag_start_char = '';\n this.tag_check = '';\n\n if (!raw_token) {\n this.tag_complete = true;\n } else {\n var tag_check_match;\n\n this.tag_start_char = raw_token.text[0];\n this.text = raw_token.text;\n\n if (this.tag_start_char === '<') {\n tag_check_match = raw_token.text.match(/^<([^\\s>]*)/);\n this.tag_check = tag_check_match ? tag_check_match[1] : '';\n } else {\n tag_check_match = raw_token.text.match(/^{{~?(?:[\\^]|#\\*?)?([^\\s}]+)/);\n this.tag_check = tag_check_match ? tag_check_match[1] : '';\n\n // handle \"{{#> myPartial}}\" or \"{{~#> myPartial}}\"\n if ((raw_token.text.startsWith('{{#>') || raw_token.text.startsWith('{{~#>')) && this.tag_check[0] === '>') {\n if (this.tag_check === '>' && raw_token.next !== null) {\n this.tag_check = raw_token.next.text.split(' ')[0];\n } else {\n this.tag_check = raw_token.text.split('>')[1];\n }\n }\n }\n\n this.tag_check = this.tag_check.toLowerCase();\n\n if (raw_token.type === TOKEN.COMMENT) {\n this.tag_complete = true;\n }\n\n this.is_start_tag = this.tag_check.charAt(0) !== '/';\n this.tag_name = !this.is_start_tag ? this.tag_check.substr(1) : this.tag_check;\n this.is_end_tag = !this.is_start_tag ||\n (raw_token.closed && raw_token.closed.text === '/>');\n\n // if whitespace handler ~ included (i.e. {{~#if true}}), handlebars tags start at pos 3 not pos 2\n var handlebar_starts = 2;\n if (this.tag_start_char === '{' && this.text.length >= 3) {\n if (this.text.charAt(2) === '~') {\n handlebar_starts = 3;\n }\n }\n\n // handlebars tags that don't start with # or ^ are single_tags, and so also start and end.\n // if they start with # or ^, they are still considered single tags if indenting of handlebars is set to false\n this.is_end_tag = this.is_end_tag ||\n (this.tag_start_char === '{' && (!options.indent_handlebars || this.text.length < 3 || (/[^#\\^]/.test(this.text.charAt(handlebar_starts)))));\n }\n};\n\nBeautifier.prototype._get_tag_open_token = function(raw_token) { //function to get a full tag and parse its type\n var parser_token = new TagOpenParserToken(this._options, this._tag_stack.get_parser_token(), raw_token);\n\n parser_token.alignment_size = this._options.wrap_attributes_indent_size;\n\n parser_token.is_end_tag = parser_token.is_end_tag ||\n in_array(parser_token.tag_check, this._options.void_elements);\n\n parser_token.is_empty_element = parser_token.tag_complete ||\n (parser_token.is_start_tag && parser_token.is_end_tag);\n\n parser_token.is_unformatted = !parser_token.tag_complete && in_array(parser_token.tag_check, this._options.unformatted);\n parser_token.is_content_unformatted = !parser_token.is_empty_element && in_array(parser_token.tag_check, this._options.content_unformatted);\n parser_token.is_inline_element = in_array(parser_token.tag_name, this._options.inline) || (this._options.inline_custom_elements && parser_token.tag_name.includes(\"-\")) || parser_token.tag_start_char === '{';\n\n return parser_token;\n};\n\nBeautifier.prototype._set_tag_position = function(printer, raw_token, parser_token, last_tag_token, last_token) {\n\n if (!parser_token.is_empty_element) {\n if (parser_token.is_end_tag) { //this tag is a double tag so check for tag-ending\n parser_token.start_tag_token = this._tag_stack.try_pop(parser_token.tag_name); //remove it and all ancestors\n } else { // it's a start-tag\n // check if this tag is starting an element that has optional end element\n // and do an ending needed\n if (this._do_optional_end_element(parser_token)) {\n if (!parser_token.is_inline_element) {\n printer.print_newline(false);\n }\n }\n\n this._tag_stack.record_tag(parser_token); //push it on the tag stack\n\n if ((parser_token.tag_name === 'script' || parser_token.tag_name === 'style') &&\n !(parser_token.is_unformatted || parser_token.is_content_unformatted)) {\n parser_token.custom_beautifier_name = get_custom_beautifier_name(parser_token.tag_check, raw_token);\n }\n }\n }\n\n if (in_array(parser_token.tag_check, this._options.extra_liners)) { //check if this double needs an extra line\n printer.print_newline(false);\n if (!printer._output.just_added_blankline()) {\n printer.print_newline(true);\n }\n }\n\n if (parser_token.is_empty_element) { //if this tag name is a single tag type (either in the list or has a closing /)\n\n // if you hit an else case, reset the indent level if you are inside an:\n // 'if', 'unless', or 'each' block.\n if (parser_token.tag_start_char === '{' && parser_token.tag_check === 'else') {\n this._tag_stack.indent_to_tag(['if', 'unless', 'each']);\n parser_token.indent_content = true;\n // Don't add a newline if opening {{#if}} tag is on the current line\n var foundIfOnCurrentLine = printer.current_line_has_match(/{{#if/);\n if (!foundIfOnCurrentLine) {\n printer.print_newline(false);\n }\n }\n\n // Don't add a newline before elements that should remain where they are.\n if (parser_token.tag_name === '!--' && last_token.type === TOKEN.TAG_CLOSE &&\n last_tag_token.is_end_tag && parser_token.text.indexOf('\\n') === -1) {\n //Do nothing. Leave comments on same line.\n } else {\n if (!(parser_token.is_inline_element || parser_token.is_unformatted)) {\n printer.print_newline(false);\n }\n this._calcluate_parent_multiline(printer, parser_token);\n }\n } else if (parser_token.is_end_tag) { //this tag is a double tag so check for tag-ending\n var do_end_expand = false;\n\n // deciding whether a block is multiline should not be this hard\n do_end_expand = parser_token.start_tag_token && parser_token.start_tag_token.multiline_content;\n do_end_expand = do_end_expand || (!parser_token.is_inline_element &&\n !(last_tag_token.is_inline_element || last_tag_token.is_unformatted) &&\n !(last_token.type === TOKEN.TAG_CLOSE && parser_token.start_tag_token === last_tag_token) &&\n last_token.type !== 'TK_CONTENT'\n );\n\n if (parser_token.is_content_unformatted || parser_token.is_unformatted) {\n do_end_expand = false;\n }\n\n if (do_end_expand) {\n printer.print_newline(false);\n }\n } else { // it's a start-tag\n parser_token.indent_content = !parser_token.custom_beautifier_name;\n\n if (parser_token.tag_start_char === '<') {\n if (parser_token.tag_name === 'html') {\n parser_token.indent_content = this._options.indent_inner_html;\n } else if (parser_token.tag_name === 'head') {\n parser_token.indent_content = this._options.indent_head_inner_html;\n } else if (parser_token.tag_name === 'body') {\n parser_token.indent_content = this._options.indent_body_inner_html;\n }\n }\n\n if (!(parser_token.is_inline_element || parser_token.is_unformatted) &&\n (last_token.type !== 'TK_CONTENT' || parser_token.is_content_unformatted)) {\n printer.print_newline(false);\n }\n\n this._calcluate_parent_multiline(printer, parser_token);\n }\n};\n\nBeautifier.prototype._calcluate_parent_multiline = function(printer, parser_token) {\n if (parser_token.parent && printer._output.just_added_newline() &&\n !((parser_token.is_inline_element || parser_token.is_unformatted) && parser_token.parent.is_inline_element)) {\n parser_token.parent.multiline_content = true;\n }\n};\n\n//To be used for tag special case:\nvar p_closers = ['address', 'article', 'aside', 'blockquote', 'details', 'div', 'dl', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'header', 'hr', 'main', 'menu', 'nav', 'ol', 'p', 'pre', 'section', 'table', 'ul'];\nvar p_parent_excludes = ['a', 'audio', 'del', 'ins', 'map', 'noscript', 'video'];\n\nBeautifier.prototype._do_optional_end_element = function(parser_token) {\n var result = null;\n // NOTE: cases of \"if there is no more content in the parent element\"\n // are handled automatically by the beautifier.\n // It assumes parent or ancestor close tag closes all children.\n // https://www.w3.org/TR/html5/syntax.html#optional-tags\n if (parser_token.is_empty_element || !parser_token.is_start_tag || !parser_token.parent) {\n return;\n\n }\n\n if (parser_token.tag_name === 'body') {\n // A head element’s end tag may be omitted if the head element is not immediately followed by a space character or a comment.\n result = result || this._tag_stack.try_pop('head');\n\n //} else if (parser_token.tag_name === 'body') {\n // DONE: A body element’s end tag may be omitted if the body element is not immediately followed by a comment.\n\n } else if (parser_token.tag_name === 'li') {\n // An li element’s end tag may be omitted if the li element is immediately followed by another li element or if there is no more content in the parent element.\n result = result || this._tag_stack.try_pop('li', ['ol', 'ul', 'menu']);\n\n } else if (parser_token.tag_name === 'dd' || parser_token.tag_name === 'dt') {\n // A dd element’s end tag may be omitted if the dd element is immediately followed by another dd element or a dt element, or if there is no more content in the parent element.\n // A dt element’s end tag may be omitted if the dt element is immediately followed by another dt element or a dd element.\n result = result || this._tag_stack.try_pop('dt', ['dl']);\n result = result || this._tag_stack.try_pop('dd', ['dl']);\n\n\n } else if (parser_token.parent.tag_name === 'p' && p_closers.indexOf(parser_token.tag_name) !== -1) {\n // IMPORTANT: this else-if works because p_closers has no overlap with any other element we look for in this method\n // check for the parent element is an HTML element that is not an , , , , , , or element, or an autonomous custom element.\n // To do this right, this needs to be coded as an inclusion of the inverse of the exclusion above.\n // But to start with (if we ignore \"autonomous custom elements\") the exclusion would be fine.\n var p_parent = parser_token.parent.parent;\n if (!p_parent || p_parent_excludes.indexOf(p_parent.tag_name) === -1) {\n result = result || this._tag_stack.try_pop('p');\n }\n } else if (parser_token.tag_name === 'rp' || parser_token.tag_name === 'rt') {\n // An rt element’s end tag may be omitted if the rt element is immediately followed by an rt or rp element, or if there is no more content in the parent element.\n // An rp element’s end tag may be omitted if the rp element is immediately followed by an rt or rp element, or if there is no more content in the parent element.\n result = result || this._tag_stack.try_pop('rt', ['ruby', 'rtc']);\n result = result || this._tag_stack.try_pop('rp', ['ruby', 'rtc']);\n\n } else if (parser_token.tag_name === 'optgroup') {\n // An optgroup element’s end tag may be omitted if the optgroup element is immediately followed by another optgroup element, or if there is no more content in the parent element.\n // An option element’s end tag may be omitted if the option element is immediately followed by another option element, or if it is immediately followed by an optgroup element, or if there is no more content in the parent element.\n result = result || this._tag_stack.try_pop('optgroup', ['select']);\n //result = result || this._tag_stack.try_pop('option', ['select']);\n\n } else if (parser_token.tag_name === 'option') {\n // An option element’s end tag may be omitted if the option element is immediately followed by another option element, or if it is immediately followed by an optgroup element, or if there is no more content in the parent element.\n result = result || this._tag_stack.try_pop('option', ['select', 'datalist', 'optgroup']);\n\n } else if (parser_token.tag_name === 'colgroup') {\n // DONE: A colgroup element’s end tag may be omitted if the colgroup element is not immediately followed by a space character or a comment.\n // A caption element's end tag may be ommitted if a colgroup, thead, tfoot, tbody, or tr element is started.\n result = result || this._tag_stack.try_pop('caption', ['table']);\n\n } else if (parser_token.tag_name === 'thead') {\n // A colgroup element's end tag may be ommitted if a thead, tfoot, tbody, or tr element is started.\n // A caption element's end tag may be ommitted if a colgroup, thead, tfoot, tbody, or tr element is started.\n result = result || this._tag_stack.try_pop('caption', ['table']);\n result = result || this._tag_stack.try_pop('colgroup', ['table']);\n\n //} else if (parser_token.tag_name === 'caption') {\n // DONE: A caption element’s end tag may be omitted if the caption element is not immediately followed by a space character or a comment.\n\n } else if (parser_token.tag_name === 'tbody' || parser_token.tag_name === 'tfoot') {\n // A thead element’s end tag may be omitted if the thead element is immediately followed by a tbody or tfoot element.\n // A tbody element’s end tag may be omitted if the tbody element is immediately followed by a tbody or tfoot element, or if there is no more content in the parent element.\n // A colgroup element's end tag may be ommitted if a thead, tfoot, tbody, or tr element is started.\n // A caption element's end tag may be ommitted if a colgroup, thead, tfoot, tbody, or tr element is started.\n result = result || this._tag_stack.try_pop('caption', ['table']);\n result = result || this._tag_stack.try_pop('colgroup', ['table']);\n result = result || this._tag_stack.try_pop('thead', ['table']);\n result = result || this._tag_stack.try_pop('tbody', ['table']);\n\n //} else if (parser_token.tag_name === 'tfoot') {\n // DONE: A tfoot element’s end tag may be omitted if there is no more content in the parent element.\n\n } else if (parser_token.tag_name === 'tr') {\n // A tr element’s end tag may be omitted if the tr element is immediately followed by another tr element, or if there is no more content in the parent element.\n // A colgroup element's end tag may be ommitted if a thead, tfoot, tbody, or tr element is started.\n // A caption element's end tag may be ommitted if a colgroup, thead, tfoot, tbody, or tr element is started.\n result = result || this._tag_stack.try_pop('caption', ['table']);\n result = result || this._tag_stack.try_pop('colgroup', ['table']);\n result = result || this._tag_stack.try_pop('tr', ['table', 'thead', 'tbody', 'tfoot']);\n\n } else if (parser_token.tag_name === 'th' || parser_token.tag_name === 'td') {\n // A td element’s end tag may be omitted if the td element is immediately followed by a td or th element, or if there is no more content in the parent element.\n // A th element’s end tag may be omitted if the th element is immediately followed by a td or th element, or if there is no more content in the parent element.\n result = result || this._tag_stack.try_pop('td', ['table', 'thead', 'tbody', 'tfoot', 'tr']);\n result = result || this._tag_stack.try_pop('th', ['table', 'thead', 'tbody', 'tfoot', 'tr']);\n }\n\n // Start element omission not handled currently\n // A head element’s start tag may be omitted if the element is empty, or if the first thing inside the head element is an element.\n // A tbody element’s start tag may be omitted if the first thing inside the tbody element is a tr element, and if the element is not immediately preceded by a tbody, thead, or tfoot element whose end tag has been omitted. (It can’t be omitted if the element is empty.)\n // A colgroup element’s start tag may be omitted if the first thing inside the colgroup element is a col element, and if the element is not immediately preceded by another colgroup element whose end tag has been omitted. (It can’t be omitted if the element is empty.)\n\n // Fix up the parent of the parser token\n parser_token.parent = this._tag_stack.get_parser_token();\n\n return result;\n};\n\nmodule.exports.Beautifier = Beautifier;\n\n\n/***/ }),\n/* 20 */\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n/*jshint node:true */\n/*\n\n The MIT License (MIT)\n\n Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors.\n\n Permission is hereby granted, free of charge, to any person\n obtaining a copy of this software and associated documentation files\n (the \"Software\"), to deal in the Software without restriction,\n including without limitation the rights to use, copy, modify, merge,\n publish, distribute, sublicense, and/or sell copies of the Software,\n and to permit persons to whom the Software is furnished to do so,\n subject to the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\n BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n*/\n\n\n\nvar BaseOptions = (__webpack_require__(6).Options);\n\nfunction Options(options) {\n BaseOptions.call(this, options, 'html');\n if (this.templating.length === 1 && this.templating[0] === 'auto') {\n this.templating = ['django', 'erb', 'handlebars', 'php'];\n }\n\n this.indent_inner_html = this._get_boolean('indent_inner_html');\n this.indent_body_inner_html = this._get_boolean('indent_body_inner_html', true);\n this.indent_head_inner_html = this._get_boolean('indent_head_inner_html', true);\n\n this.indent_handlebars = this._get_boolean('indent_handlebars', true);\n this.wrap_attributes = this._get_selection('wrap_attributes',\n ['auto', 'force', 'force-aligned', 'force-expand-multiline', 'aligned-multiple', 'preserve', 'preserve-aligned']);\n this.wrap_attributes_min_attrs = this._get_number('wrap_attributes_min_attrs', 2);\n this.wrap_attributes_indent_size = this._get_number('wrap_attributes_indent_size', this.indent_size);\n this.extra_liners = this._get_array('extra_liners', ['head', 'body', '/html']);\n\n // Block vs inline elements\n // https://developer.mozilla.org/en-US/docs/Web/HTML/Block-level_elements\n // https://developer.mozilla.org/en-US/docs/Web/HTML/Inline_elements\n // https://www.w3.org/TR/html5/dom.html#phrasing-content\n this.inline = this._get_array('inline', [\n 'a', 'abbr', 'area', 'audio', 'b', 'bdi', 'bdo', 'br', 'button', 'canvas', 'cite',\n 'code', 'data', 'datalist', 'del', 'dfn', 'em', 'embed', 'i', 'iframe', 'img',\n 'input', 'ins', 'kbd', 'keygen', 'label', 'map', 'mark', 'math', 'meter', 'noscript',\n 'object', 'output', 'progress', 'q', 'ruby', 's', 'samp', /* 'script', */ 'select', 'small',\n 'span', 'strong', 'sub', 'sup', 'svg', 'template', 'textarea', 'time', 'u', 'var',\n 'video', 'wbr', 'text',\n // obsolete inline tags\n 'acronym', 'big', 'strike', 'tt'\n ]);\n this.inline_custom_elements = this._get_boolean('inline_custom_elements', true);\n this.void_elements = this._get_array('void_elements', [\n // HTLM void elements - aka self-closing tags - aka singletons\n // https://www.w3.org/html/wg/drafts/html/master/syntax.html#void-elements\n 'area', 'base', 'br', 'col', 'embed', 'hr', 'img', 'input', 'keygen',\n 'link', 'menuitem', 'meta', 'param', 'source', 'track', 'wbr',\n // NOTE: Optional tags are too complex for a simple list\n // they are hard coded in _do_optional_end_element\n\n // Doctype and xml elements\n '!doctype', '?xml',\n\n // obsolete tags\n // basefont: https://www.computerhope.com/jargon/h/html-basefont-tag.htm\n // isndex: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/isindex\n 'basefont', 'isindex'\n ]);\n this.unformatted = this._get_array('unformatted', []);\n this.content_unformatted = this._get_array('content_unformatted', [\n 'pre', 'textarea'\n ]);\n this.unformatted_content_delimiter = this._get_characters('unformatted_content_delimiter');\n this.indent_scripts = this._get_selection('indent_scripts', ['normal', 'keep', 'separate']);\n\n}\nOptions.prototype = new BaseOptions();\n\n\n\nmodule.exports.Options = Options;\n\n\n/***/ }),\n/* 21 */\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n/*jshint node:true */\n/*\n\n The MIT License (MIT)\n\n Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors.\n\n Permission is hereby granted, free of charge, to any person\n obtaining a copy of this software and associated documentation files\n (the \"Software\"), to deal in the Software without restriction,\n including without limitation the rights to use, copy, modify, merge,\n publish, distribute, sublicense, and/or sell copies of the Software,\n and to permit persons to whom the Software is furnished to do so,\n subject to the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\n BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n*/\n\n\n\nvar BaseTokenizer = (__webpack_require__(9).Tokenizer);\nvar BASETOKEN = (__webpack_require__(9).TOKEN);\nvar Directives = (__webpack_require__(13).Directives);\nvar TemplatablePattern = (__webpack_require__(14).TemplatablePattern);\nvar Pattern = (__webpack_require__(12).Pattern);\n\nvar TOKEN = {\n TAG_OPEN: 'TK_TAG_OPEN',\n TAG_CLOSE: 'TK_TAG_CLOSE',\n CONTROL_FLOW_OPEN: 'TK_CONTROL_FLOW_OPEN',\n CONTROL_FLOW_CLOSE: 'TK_CONTROL_FLOW_CLOSE',\n ATTRIBUTE: 'TK_ATTRIBUTE',\n EQUALS: 'TK_EQUALS',\n VALUE: 'TK_VALUE',\n COMMENT: 'TK_COMMENT',\n TEXT: 'TK_TEXT',\n UNKNOWN: 'TK_UNKNOWN',\n START: BASETOKEN.START,\n RAW: BASETOKEN.RAW,\n EOF: BASETOKEN.EOF\n};\n\nvar directives_core = new Directives(/<\\!--/, /-->/);\n\nvar Tokenizer = function(input_string, options) {\n BaseTokenizer.call(this, input_string, options);\n this._current_tag_name = '';\n\n // Words end at whitespace or when a tag starts\n // if we are indenting handlebars, they are considered tags\n var templatable_reader = new TemplatablePattern(this._input).read_options(this._options);\n var pattern_reader = new Pattern(this._input);\n\n this.__patterns = {\n word: templatable_reader.until(/[\\n\\r\\t <]/),\n word_control_flow_close_excluded: templatable_reader.until(/[\\n\\r\\t <}]/),\n single_quote: templatable_reader.until_after(/'/),\n double_quote: templatable_reader.until_after(/\"/),\n attribute: templatable_reader.until(/[\\n\\r\\t =>]|\\/>/),\n element_name: templatable_reader.until(/[\\n\\r\\t >\\/]/),\n\n angular_control_flow_start: pattern_reader.matching(/\\@[a-zA-Z]+[^({]*[({]/),\n handlebars_comment: pattern_reader.starting_with(/{{!--/).until_after(/--}}/),\n handlebars: pattern_reader.starting_with(/{{/).until_after(/}}/),\n handlebars_open: pattern_reader.until(/[\\n\\r\\t }]/),\n handlebars_raw_close: pattern_reader.until(/}}/),\n comment: pattern_reader.starting_with(//),\n cdata: pattern_reader.starting_with(//),\n // https://en.wikipedia.org/wiki/Conditional_comment\n conditional_comment: pattern_reader.starting_with(//),\n processing: pattern_reader.starting_with(/<\\?/).until_after(/\\?>/)\n };\n\n if (this._options.indent_handlebars) {\n this.__patterns.word = this.__patterns.word.exclude('handlebars');\n this.__patterns.word_control_flow_close_excluded = this.__patterns.word_control_flow_close_excluded.exclude('handlebars');\n }\n\n this._unformatted_content_delimiter = null;\n\n if (this._options.unformatted_content_delimiter) {\n var literal_regexp = this._input.get_literal_regexp(this._options.unformatted_content_delimiter);\n this.__patterns.unformatted_content_delimiter =\n pattern_reader.matching(literal_regexp)\n .until_after(literal_regexp);\n }\n};\nTokenizer.prototype = new BaseTokenizer();\n\nTokenizer.prototype._is_comment = function(current_token) { // jshint unused:false\n return false; //current_token.type === TOKEN.COMMENT || current_token.type === TOKEN.UNKNOWN;\n};\n\nTokenizer.prototype._is_opening = function(current_token) {\n return current_token.type === TOKEN.TAG_OPEN || current_token.type === TOKEN.CONTROL_FLOW_OPEN;\n};\n\nTokenizer.prototype._is_closing = function(current_token, open_token) {\n return (current_token.type === TOKEN.TAG_CLOSE &&\n (open_token && (\n ((current_token.text === '>' || current_token.text === '/>') && open_token.text[0] === '<') ||\n (current_token.text === '}}' && open_token.text[0] === '{' && open_token.text[1] === '{')))\n ) || (current_token.type === TOKEN.CONTROL_FLOW_CLOSE &&\n (current_token.text === '}' && open_token.text.endsWith('{')));\n};\n\nTokenizer.prototype._reset = function() {\n this._current_tag_name = '';\n};\n\nTokenizer.prototype._get_next_token = function(previous_token, open_token) { // jshint unused:false\n var token = null;\n this._readWhitespace();\n var c = this._input.peek();\n\n if (c === null) {\n return this._create_token(TOKEN.EOF, '');\n }\n\n token = token || this._read_open_handlebars(c, open_token);\n token = token || this._read_attribute(c, previous_token, open_token);\n token = token || this._read_close(c, open_token);\n token = token || this._read_script_and_style(c, previous_token);\n token = token || this._read_control_flows(c, open_token);\n token = token || this._read_raw_content(c, previous_token, open_token);\n token = token || this._read_content_word(c, open_token);\n token = token || this._read_comment_or_cdata(c);\n token = token || this._read_processing(c);\n token = token || this._read_open(c, open_token);\n token = token || this._create_token(TOKEN.UNKNOWN, this._input.next());\n\n return token;\n};\n\nTokenizer.prototype._read_comment_or_cdata = function(c) { // jshint unused:false\n var token = null;\n var resulting_string = null;\n var directives = null;\n\n if (c === '<') {\n var peek1 = this._input.peek(1);\n // We treat all comments as literals, even more than preformatted tags\n // we only look for the appropriate closing marker\n if (peek1 === '!') {\n resulting_string = this.__patterns.comment.read();\n\n // only process directive on html comments\n if (resulting_string) {\n directives = directives_core.get_directives(resulting_string);\n if (directives && directives.ignore === 'start') {\n resulting_string += directives_core.readIgnored(this._input);\n }\n } else {\n resulting_string = this.__patterns.cdata.read();\n }\n }\n\n if (resulting_string) {\n token = this._create_token(TOKEN.COMMENT, resulting_string);\n token.directives = directives;\n }\n }\n\n return token;\n};\n\nTokenizer.prototype._read_processing = function(c) { // jshint unused:false\n var token = null;\n var resulting_string = null;\n var directives = null;\n\n if (c === '<') {\n var peek1 = this._input.peek(1);\n if (peek1 === '!' || peek1 === '?') {\n resulting_string = this.__patterns.conditional_comment.read();\n resulting_string = resulting_string || this.__patterns.processing.read();\n }\n\n if (resulting_string) {\n token = this._create_token(TOKEN.COMMENT, resulting_string);\n token.directives = directives;\n }\n }\n\n return token;\n};\n\nTokenizer.prototype._read_open = function(c, open_token) {\n var resulting_string = null;\n var token = null;\n if (!open_token || open_token.type === TOKEN.CONTROL_FLOW_OPEN) {\n if (c === '<') {\n\n resulting_string = this._input.next();\n if (this._input.peek() === '/') {\n resulting_string += this._input.next();\n }\n resulting_string += this.__patterns.element_name.read();\n token = this._create_token(TOKEN.TAG_OPEN, resulting_string);\n }\n }\n return token;\n};\n\nTokenizer.prototype._read_open_handlebars = function(c, open_token) {\n var resulting_string = null;\n var token = null;\n if (!open_token || open_token.type === TOKEN.CONTROL_FLOW_OPEN) {\n if ((this._options.templating.includes('angular') || this._options.indent_handlebars) && c === '{' && this._input.peek(1) === '{') {\n if (this._options.indent_handlebars && this._input.peek(2) === '!') {\n resulting_string = this.__patterns.handlebars_comment.read();\n resulting_string = resulting_string || this.__patterns.handlebars.read();\n token = this._create_token(TOKEN.COMMENT, resulting_string);\n } else {\n resulting_string = this.__patterns.handlebars_open.read();\n token = this._create_token(TOKEN.TAG_OPEN, resulting_string);\n }\n }\n }\n return token;\n};\n\nTokenizer.prototype._read_control_flows = function(c, open_token) {\n var resulting_string = '';\n var token = null;\n // Only check for control flows if angular templating is set\n if (!this._options.templating.includes('angular')) {\n return token;\n }\n\n if (c === '@') {\n resulting_string = this.__patterns.angular_control_flow_start.read();\n if (resulting_string === '') {\n return token;\n }\n\n var opening_parentheses_count = resulting_string.endsWith('(') ? 1 : 0;\n var closing_parentheses_count = 0;\n // The opening brace of the control flow is where the number of opening and closing parentheses equal\n // e.g. @if({value: true} !== null) { \n while (!(resulting_string.endsWith('{') && opening_parentheses_count === closing_parentheses_count)) {\n var next_char = this._input.next();\n if (next_char === null) {\n break;\n } else if (next_char === '(') {\n opening_parentheses_count++;\n } else if (next_char === ')') {\n closing_parentheses_count++;\n }\n resulting_string += next_char;\n }\n token = this._create_token(TOKEN.CONTROL_FLOW_OPEN, resulting_string);\n } else if (c === '}' && open_token && open_token.type === TOKEN.CONTROL_FLOW_OPEN) {\n resulting_string = this._input.next();\n token = this._create_token(TOKEN.CONTROL_FLOW_CLOSE, resulting_string);\n }\n return token;\n};\n\n\nTokenizer.prototype._read_close = function(c, open_token) {\n var resulting_string = null;\n var token = null;\n if (open_token && open_token.type === TOKEN.TAG_OPEN) {\n if (open_token.text[0] === '<' && (c === '>' || (c === '/' && this._input.peek(1) === '>'))) {\n resulting_string = this._input.next();\n if (c === '/') { // for close tag \"/>\"\n resulting_string += this._input.next();\n }\n token = this._create_token(TOKEN.TAG_CLOSE, resulting_string);\n } else if (open_token.text[0] === '{' && c === '}' && this._input.peek(1) === '}') {\n this._input.next();\n this._input.next();\n token = this._create_token(TOKEN.TAG_CLOSE, '}}');\n }\n }\n\n return token;\n};\n\nTokenizer.prototype._read_attribute = function(c, previous_token, open_token) {\n var token = null;\n var resulting_string = '';\n if (open_token && open_token.text[0] === '<') {\n\n if (c === '=') {\n token = this._create_token(TOKEN.EQUALS, this._input.next());\n } else if (c === '\"' || c === \"'\") {\n var content = this._input.next();\n if (c === '\"') {\n content += this.__patterns.double_quote.read();\n } else {\n content += this.__patterns.single_quote.read();\n }\n token = this._create_token(TOKEN.VALUE, content);\n } else {\n resulting_string = this.__patterns.attribute.read();\n\n if (resulting_string) {\n if (previous_token.type === TOKEN.EQUALS) {\n token = this._create_token(TOKEN.VALUE, resulting_string);\n } else {\n token = this._create_token(TOKEN.ATTRIBUTE, resulting_string);\n }\n }\n }\n }\n return token;\n};\n\nTokenizer.prototype._is_content_unformatted = function(tag_name) {\n // void_elements have no content and so cannot have unformatted content\n // script and style tags should always be read as unformatted content\n // finally content_unformatted and unformatted element contents are unformatted\n return this._options.void_elements.indexOf(tag_name) === -1 &&\n (this._options.content_unformatted.indexOf(tag_name) !== -1 ||\n this._options.unformatted.indexOf(tag_name) !== -1);\n};\n\nTokenizer.prototype._read_raw_content = function(c, previous_token, open_token) { // jshint unused:false\n var resulting_string = '';\n if (open_token && open_token.text[0] === '{') {\n resulting_string = this.__patterns.handlebars_raw_close.read();\n } else if (previous_token.type === TOKEN.TAG_CLOSE &&\n previous_token.opened.text[0] === '<' && previous_token.text[0] !== '/') {\n // ^^ empty tag has no content \n var tag_name = previous_token.opened.text.substr(1).toLowerCase();\n if (this._is_content_unformatted(tag_name)) {\n\n resulting_string = this._input.readUntil(new RegExp('' + tag_name + '[\\\\n\\\\r\\\\t ]*?>', 'ig'));\n }\n }\n\n if (resulting_string) {\n return this._create_token(TOKEN.TEXT, resulting_string);\n }\n\n return null;\n};\n\nTokenizer.prototype._read_script_and_style = function(c, previous_token) { // jshint unused:false \n if (previous_token.type === TOKEN.TAG_CLOSE && previous_token.opened.text[0] === '<' && previous_token.text[0] !== '/') {\n var tag_name = previous_token.opened.text.substr(1).toLowerCase();\n if (tag_name === 'script' || tag_name === 'style') {\n // Script and style tags are allowed to have comments wrapping their content\n // or just have regular content.\n var token = this._read_comment_or_cdata(c);\n if (token) {\n token.type = TOKEN.TEXT;\n return token;\n }\n var resulting_string = this._input.readUntil(new RegExp('' + tag_name + '[\\\\n\\\\r\\\\t ]*?>', 'ig'));\n if (resulting_string) {\n return this._create_token(TOKEN.TEXT, resulting_string);\n }\n }\n }\n return null;\n};\n\nTokenizer.prototype._read_content_word = function(c, open_token) {\n var resulting_string = '';\n if (this._options.unformatted_content_delimiter) {\n if (c === this._options.unformatted_content_delimiter[0]) {\n resulting_string = this.__patterns.unformatted_content_delimiter.read();\n }\n }\n\n if (!resulting_string) {\n resulting_string = (open_token && open_token.type === TOKEN.CONTROL_FLOW_OPEN) ? this.__patterns.word_control_flow_close_excluded.read() : this.__patterns.word.read();\n }\n if (resulting_string) {\n return this._create_token(TOKEN.TEXT, resulting_string);\n }\n return null;\n};\n\nmodule.exports.Tokenizer = Tokenizer;\nmodule.exports.TOKEN = TOKEN;\n\n\n/***/ })\n/******/ \t]);\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \t\tif (cachedModule !== undefined) {\n/******/ \t\t\treturn cachedModule.exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t\n/******/ \t// startup\n/******/ \t// Load entry module and return exports\n/******/ \t// This entry module is referenced by other modules so it can't be inlined\n/******/ \tvar __webpack_exports__ = __webpack_require__(18);\n/******/ \tlegacy_beautify_html = __webpack_exports__;\n/******/ \t\n/******/ })()\n;\nvar style_html = legacy_beautify_html;\n/* Footer */\nif (typeof define === \"function\" && define.amd) {\n // Add support for AMD ( https://github.com/amdjs/amdjs-api/wiki/AMD#defineamd-property- )\n define([\"require\", \"./beautify\", \"./beautify-css\"], function(requireamd) {\n var js_beautify = requireamd(\"./beautify\");\n var css_beautify = requireamd(\"./beautify-css\");\n\n return {\n html_beautify: function(html_source, options) {\n return style_html(html_source, options, js_beautify.js_beautify, css_beautify.css_beautify);\n }\n };\n });\n} else if (typeof exports !== \"undefined\") {\n // Add support for CommonJS. Just put this file somewhere on your require.paths\n // and you will be able to `var html_beautify = require(\"beautify\").html_beautify`.\n var js_beautify = require('./beautify.js');\n var css_beautify = require('./beautify-css.js');\n\n exports.html_beautify = function(html_source, options) {\n return style_html(html_source, options, js_beautify.js_beautify, css_beautify.css_beautify);\n };\n} else if (typeof window !== \"undefined\") {\n // If we're running a web page and don't have either of the above, add our one global\n window.html_beautify = function(html_source, options) {\n return style_html(html_source, options, window.js_beautify, window.css_beautify);\n };\n} else if (typeof global !== \"undefined\") {\n // If we don't even have window, try global.\n global.html_beautify = function(html_source, options) {\n return style_html(html_source, options, global.js_beautify, global.css_beautify);\n };\n}\n\n}());\n"],"names":["__webpack_modules__","__webpack_module_cache__","__webpack_exports__","module","OutputLine","parent","__parent","__character_count","__indent_count","__alignment_count","__wrap_point_index","__wrap_point_character_count","__wrap_point_indent_count","__wrap_point_alignment_count","__items","IndentStringCache","options","baseIndentString","__cache","__indent_size","indent_size","__indent_string","indent_char","indent_with_tabs","Array","join","indent_level","this","__base_string","__base_string_length","length","Output","__indent_cache","raw","_end_with_newline","end_with_newline","wrap_line_length","indent_empty_lines","__lines","previous_line","current_line","next_line","space_before_token","non_breaking_space","previous_token_wrapped","__add_outputline","prototype","clone_empty","line","set_indent","item","index","has_match","pattern","lastCheckedOutput","match","indent","alignment","is_empty","get_indent_size","_set_wrap_point","_should_wrap","_allow_wrap","add_new_line","next","slice","splice","last","push","last_newline_index","lastIndexOf","pop","_remove_indent","_remove_wrap_indent","trim","toString","result","get_indent_string","column","__ensure_cache","__add_column","Math","floor","get_line_number","force_newline","just_added_newline","get_code","eol","last_item","replace","sweet_code","set_wrap_point","add_raw_token","token","x","newlines","whitespace_before","text","add_token","printable_token","__add_space_before_token","remove_indent","output_length","eat_newlines","undefined","just_added_blankline","ensure_empty_line_above","starts_with","ends_with","potentialEmptyLine","indexOf","exports","Token","type","comments_before","previous","opened","closed","directives","Options","merge_child_field","raw_options","_mergeOpts","disabled","_get_boolean","_get_characters","_get_number","preserve_newlines","max_preserve_newlines","templating","_get_selection_list","allOptions","childFieldName","name","finalOpts","_normalizeOpts","key","convertedOpts","_get_array","default_value","option_value","concat","split","parseInt","isNaN","_get_selection","selection_list","Error","_is_valid_selection","some","normalizeOpts","mergeOpts","regexp_has_sticky","RegExp","hasOwnProperty","InputScanner","input_string","__input","__input_length","__position","restart","back","hasNext","val","charAt","peek","__match","lastIndex","pattern_match","exec","sticky","test","testChar","read","starting_pattern","until_pattern","until_after","readUntil","match_index","substring","readUntilAfter","get_regexp","match_from","flags","source","get_literal_regexp","literal_string","peekUntilAfter","start","lookBack","testVal","toLowerCase","__unused_webpack_exports","__webpack_require__","TokenStream","WhitespacePattern","TOKEN","START","RAW","EOF","Tokenizer","_input","_options","__tokens","_patterns","whitespace","tokenize","current","_reset","open_token","open_stack","comments","_get_next_token","_is_comment","add","isEmpty","_is_opening","_is_closing","_is_first_token","previous_token","_readWhitespace","resulting_string","_create_token","current_token","newline_count","whitespace_before_token","parent_token","__tokens_length","__parent_token","Pattern","input_scanner","call","_line_regexp","__set_whitespace_patterns","whitespace_chars","newline_chars","_match_pattern","_newline_regexp","matches","__split","matching","_create","_update","regexp","start_index","next_match","_starting_pattern","_until_pattern","_until_after","read_match","until","starting_with","Directives","start_block_pattern","end_block_pattern","__directives_block_pattern","__directive_pattern","__directives_end_ignore_pattern","get_directives","directive_match","readIgnored","input","template_names","django","erb","handlebars","php","smarty","angular","TemplatablePattern","__template_pattern","_disabled","Object","assign","_excluded","__patterns","handlebars_comment","handlebars_unescaped","django_value","django_comment","smarty_comment","smarty_literal","__set_templated_pattern","disable","language","read_options","exclude","_read_template","items","c","peek1","Beautifier","html_source","js_beautify","css_beautify","beautify","defaultOptions","lineBreak","allLineBreaks","Printer","base_indent_string","alignment_size","_output","current_line_has_match","set_space_before_token","value","non_breaking","print_preserved_newlines","raw_token","TEXT","n","print_newline","traverse_whitespace","force","print_token","deindent","get_full_indent","level","get_custom_beautifier_name","tag_check","typeAttribute","start_token","ATTRIBUTE","EQUALS","VALUE","get_type_attribute","search","in_array","what","arr","TagFrame","parser_token","tag","tag_name","TagStack","printer","_printer","_current_frame","source_text","_source_text","_js_beautify","_css_beautify","_tag_stack","optionHtml","_is_wrap_attributes_force","wrap_attributes","substr","_is_wrap_attributes_force_expand_multiline","_is_wrap_attributes_force_aligned","_is_wrap_attributes_aligned_multiple","_is_wrap_attributes_preserve","_is_wrap_attributes_preserve_aligned","get_parser_token","record_tag","new_frame","_try_pop_frame","frame","_get_frame","tag_list","stop_list","try_pop","indent_to_tag","last_token","last_tag_token","TagOpenParserToken","tokens","TAG_OPEN","COMMENT","_handle_tag_open","tag_complete","_handle_inside_tag","TAG_CLOSE","_handle_tag_close","_handle_text","CONTROL_FLOW_OPEN","_handle_control_flow_open","CONTROL_FLOW_CLOSE","_handle_control_flow_close","is_unformatted","tag_start_char","has_wrapped_attrs","indent_content","is_content_unformatted","is_inline_element","wrapped","attr_count","wrap_attributes_min_attrs","custom_beautifier_name","_print_custom_beatifier_text","local","_beautifier","script_indent_level","pre","post","indent_scripts","indentation","matched","Child_options","white","_get_tag_open_token","is_empty_element","is_start_tag","_set_tag_position","start_tag_token","peek_token","peek_index","is_end_tag","multiline_content","tag_check_match","startsWith","handlebar_starts","indent_handlebars","wrap_attributes_indent_size","void_elements","unformatted","content_unformatted","inline","inline_custom_elements","includes","_do_optional_end_element","extra_liners","_calcluate_parent_multiline","do_end_expand","indent_inner_html","indent_head_inner_html","indent_body_inner_html","p_closers","p_parent_excludes","p_parent","BaseOptions","unformatted_content_delimiter","BaseTokenizer","BASETOKEN","UNKNOWN","directives_core","_current_tag_name","templatable_reader","pattern_reader","word","word_control_flow_close_excluded","single_quote","double_quote","attribute","element_name","angular_control_flow_start","handlebars_open","handlebars_raw_close","comment","cdata","conditional_comment","processing","_unformatted_content_delimiter","literal_regexp","endsWith","_read_open_handlebars","_read_attribute","_read_close","_read_script_and_style","_read_control_flows","_read_raw_content","_read_content_word","_read_comment_or_cdata","_read_processing","_read_open","ignore","opening_parentheses_count","closing_parentheses_count","next_char","content","_is_content_unformatted","moduleId","cachedModule","style_html","define","amd","requireamd","html_beautify","require","window","global"],"mappings":"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"}
\ No newline at end of file
diff --git a/lib/editor/tiny/plugins/html/amd/build/beautify/beautify.min.js b/lib/editor/tiny/plugins/html/amd/build/beautify/beautify.min.js
index 480783e6024..cf7dfac9335 100644
--- a/lib/editor/tiny/plugins/html/amd/build/beautify/beautify.min.js
+++ b/lib/editor/tiny/plugins/html/amd/build/beautify/beautify.min.js
@@ -1,3 +1,3 @@
-!function(){var __webpack_modules__,__webpack_module_cache__,__webpack_exports__;__webpack_modules__=[function(module,__unused_webpack_exports,__webpack_require__){var Beautifier=__webpack_require__(1).Beautifier,Options=__webpack_require__(5).Options;module.exports=function(js_source_text,options){return new Beautifier(js_source_text,options).beautify()},module.exports.defaultOptions=function(){return new Options}},function(module,__unused_webpack_exports,__webpack_require__){var Output=__webpack_require__(2).Output,Token=__webpack_require__(3).Token,acorn=__webpack_require__(4),Options=__webpack_require__(5).Options,Tokenizer=__webpack_require__(7).Tokenizer,line_starters=__webpack_require__(7).line_starters,positionable_operators=__webpack_require__(7).positionable_operators,TOKEN=__webpack_require__(7).TOKEN;function in_array(what,arr){return-1!==arr.indexOf(what)}function reserved_word(token,word){return token&&token.type===TOKEN.RESERVED&&token.text===word}function reserved_array(token,words){return token&&token.type===TOKEN.RESERVED&&in_array(token.text,words)}var special_words=["case","return","do","if","throw","else","await","break","continue","async"],OPERATOR_POSITION=function(list){for(var result={},x=0;xnext_indent_level&&(next_indent_level=flags_base.line_indent_level)),{mode:mode,parent:flags_base,last_token:flags_base?flags_base.last_token:new Token(TOKEN.START_BLOCK,""),last_word:flags_base?flags_base.last_word:"",declaration_statement:!1,declaration_assignment:!1,multiline_frame:!1,inline_frame:!1,if_block:!1,else_block:!1,class_start_block:!1,do_block:!1,do_while:!1,import_block:!1,in_case_statement:!1,in_case:!1,case_body:!1,case_block:!1,indentation_level:next_indent_level,alignment:0,line_indent_level:flags_base?flags_base.line_indent_level:next_indent_level,start_line_index:this._output.get_line_number(),ternary_depth:0}},Beautifier.prototype._reset=function(source_text){var baseIndentString=source_text.match(/^[\t ]*/)[0];this._last_last_text="",this._output=new Output(this._options,baseIndentString),this._output.raw=this._options.test_output_raw,this._flag_store=[],this.set_mode(MODE_BlockStatement);var tokenizer=new Tokenizer(source_text,this._options);return this._tokens=tokenizer.tokenize(),source_text},Beautifier.prototype.beautify=function(){if(this._options.disabled)return this._source_text;var source_text=this._reset(this._source_text),eol=this._options.eol;"auto"===this._options.eol&&(eol="\n",source_text&&acorn.lineBreak.test(source_text||"")&&(eol=source_text.match(acorn.lineBreak)[0]));for(var current_token=this._tokens.next();current_token;)this.handle_token(current_token),this._last_last_text=this._flags.last_token.text,this._flags.last_token=current_token,current_token=this._tokens.next();return this._output.get_code(eol)},Beautifier.prototype.handle_token=function(current_token,preserve_statement_flags){current_token.type===TOKEN.START_EXPR?this.handle_start_expr(current_token):current_token.type===TOKEN.END_EXPR?this.handle_end_expr(current_token):current_token.type===TOKEN.START_BLOCK?this.handle_start_block(current_token):current_token.type===TOKEN.END_BLOCK?this.handle_end_block(current_token):current_token.type===TOKEN.WORD||current_token.type===TOKEN.RESERVED?this.handle_word(current_token):current_token.type===TOKEN.SEMICOLON?this.handle_semicolon(current_token):current_token.type===TOKEN.STRING?this.handle_string(current_token):current_token.type===TOKEN.EQUALS?this.handle_equals(current_token):current_token.type===TOKEN.OPERATOR?this.handle_operator(current_token):current_token.type===TOKEN.COMMA?this.handle_comma(current_token):current_token.type===TOKEN.BLOCK_COMMENT?this.handle_block_comment(current_token,preserve_statement_flags):current_token.type===TOKEN.COMMENT?this.handle_comment(current_token,preserve_statement_flags):current_token.type===TOKEN.DOT?this.handle_dot(current_token):current_token.type===TOKEN.EOF?this.handle_eof(current_token):(current_token.type,TOKEN.UNKNOWN,this.handle_unknown(current_token,preserve_statement_flags))},Beautifier.prototype.handle_whitespace_and_comments=function(current_token,preserve_statement_flags){var newlines=current_token.newlines,keep_whitespace=this._options.keep_array_indentation&&is_array(this._flags.mode);if(current_token.comments_before)for(var comment_token=current_token.comments_before.next();comment_token;)this.handle_whitespace_and_comments(comment_token,preserve_statement_flags),this.handle_token(comment_token,preserve_statement_flags),comment_token=current_token.comments_before.next();if(keep_whitespace)for(var i=0;i0,preserve_statement_flags);else if(this._options.max_preserve_newlines&&newlines>this._options.max_preserve_newlines&&(newlines=this._options.max_preserve_newlines),this._options.preserve_newlines&&newlines>1){this.print_newline(!1,preserve_statement_flags);for(var j=1;j0&&(!this._flags.parent||this._flags.indentation_level>this._flags.parent.indentation_level)&&(this._flags.indentation_level-=1,this._output.set_indent(this._flags.indentation_level,this._flags.alignment))},Beautifier.prototype.set_mode=function(mode){this._flags?(this._flag_store.push(this._flags),this._previous_flags=this._flags):this._previous_flags=this.create_flags(null,mode),this._flags=this.create_flags(this._previous_flags,mode),this._output.set_indent(this._flags.indentation_level,this._flags.alignment)},Beautifier.prototype.restore_mode=function(){this._flag_store.length>0&&(this._previous_flags=this._flags,this._flags=this._flag_store.pop(),this._previous_flags.mode===MODE_Statement&&remove_redundant_indentation(this._output,this._previous_flags),this._output.set_indent(this._flags.indentation_level,this._flags.alignment))},Beautifier.prototype.start_of_object_property=function(){return this._flags.parent.mode===MODE_ObjectLiteral&&this._flags.mode===MODE_Statement&&(":"===this._flags.last_token.text&&0===this._flags.ternary_depth||reserved_array(this._flags.last_token,["get","set"]))},Beautifier.prototype.start_of_statement=function(current_token){var start=!1;return!!(start=(start=(start=(start=(start=(start=(start=start||reserved_array(this._flags.last_token,["var","let","const"])&¤t_token.type===TOKEN.WORD)||reserved_word(this._flags.last_token,"do"))||!(this._flags.parent.mode===MODE_ObjectLiteral&&this._flags.mode===MODE_Statement)&&reserved_array(this._flags.last_token,newline_restricted_tokens)&&!current_token.newlines)||reserved_word(this._flags.last_token,"else")&&!(reserved_word(current_token,"if")&&!current_token.comments_before))||this._flags.last_token.type===TOKEN.END_EXPR&&(this._previous_flags.mode===MODE_ForInitializer||this._previous_flags.mode===MODE_Conditional))||this._flags.last_token.type===TOKEN.WORD&&this._flags.mode===MODE_BlockStatement&&!this._flags.in_case&&!("--"===current_token.text||"++"===current_token.text)&&"function"!==this._last_last_text&¤t_token.type!==TOKEN.WORD&¤t_token.type!==TOKEN.RESERVED)||this._flags.mode===MODE_ObjectLiteral&&(":"===this._flags.last_token.text&&0===this._flags.ternary_depth||reserved_array(this._flags.last_token,["get","set"])))&&(this.set_mode(MODE_Statement),this.indent(),this.handle_whitespace_and_comments(current_token,!0),this.start_of_object_property()||this.allow_wrap_or_preserved_newline(current_token,reserved_array(current_token,["do","for","if","while"])),!0)},Beautifier.prototype.handle_start_expr=function(current_token){this.start_of_statement(current_token)||this.handle_whitespace_and_comments(current_token);var next_mode=MODE_Expression;if("["===current_token.text){if(this._flags.last_token.type===TOKEN.WORD||")"===this._flags.last_token.text)return reserved_array(this._flags.last_token,line_starters)&&(this._output.space_before_token=!0),this.print_token(current_token),this.set_mode(next_mode),this.indent(),void(this._options.space_in_paren&&(this._output.space_before_token=!0));next_mode=MODE_ArrayLiteral,is_array(this._flags.mode)&&("["!==this._flags.last_token.text&&(","!==this._flags.last_token.text||"]"!==this._last_last_text&&"}"!==this._last_last_text)||this._options.keep_array_indentation||this.print_newline()),in_array(this._flags.last_token.type,[TOKEN.START_EXPR,TOKEN.END_EXPR,TOKEN.WORD,TOKEN.OPERATOR,TOKEN.DOT])||(this._output.space_before_token=!0)}else{if(this._flags.last_token.type===TOKEN.RESERVED)"for"===this._flags.last_token.text?(this._output.space_before_token=this._options.space_before_conditional,next_mode=MODE_ForInitializer):in_array(this._flags.last_token.text,["if","while","switch"])?(this._output.space_before_token=this._options.space_before_conditional,next_mode=MODE_Conditional):in_array(this._flags.last_word,["await","async"])?this._output.space_before_token=!0:"import"===this._flags.last_token.text&&""===current_token.whitespace_before?this._output.space_before_token=!1:(in_array(this._flags.last_token.text,line_starters)||"catch"===this._flags.last_token.text)&&(this._output.space_before_token=!0);else if(this._flags.last_token.type===TOKEN.EQUALS||this._flags.last_token.type===TOKEN.OPERATOR)this.start_of_object_property()||this.allow_wrap_or_preserved_newline(current_token);else if(this._flags.last_token.type===TOKEN.WORD){this._output.space_before_token=!1;var peek_back_two=this._tokens.peek(-3);if(this._options.space_after_named_function&&peek_back_two){var peek_back_three=this._tokens.peek(-4);reserved_array(peek_back_two,["async","function"])||"*"===peek_back_two.text&&reserved_array(peek_back_three,["async","function"])?this._output.space_before_token=!0:this._flags.mode===MODE_ObjectLiteral?"{"!==peek_back_two.text&&","!==peek_back_two.text&&("*"!==peek_back_two.text||"{"!==peek_back_three.text&&","!==peek_back_three.text)||(this._output.space_before_token=!0):this._flags.parent&&this._flags.parent.class_start_block&&(this._output.space_before_token=!0)}}else this.allow_wrap_or_preserved_newline(current_token);(this._flags.last_token.type===TOKEN.RESERVED&&("function"===this._flags.last_word||"typeof"===this._flags.last_word)||"*"===this._flags.last_token.text&&(in_array(this._last_last_text,["function","yield"])||this._flags.mode===MODE_ObjectLiteral&&in_array(this._last_last_text,["{",","])))&&(this._output.space_before_token=this._options.space_after_anon_function)}";"===this._flags.last_token.text||this._flags.last_token.type===TOKEN.START_BLOCK?this.print_newline():this._flags.last_token.type!==TOKEN.END_EXPR&&this._flags.last_token.type!==TOKEN.START_EXPR&&this._flags.last_token.type!==TOKEN.END_BLOCK&&"."!==this._flags.last_token.text&&this._flags.last_token.type!==TOKEN.COMMA||this.allow_wrap_or_preserved_newline(current_token,current_token.newlines),this.print_token(current_token),this.set_mode(next_mode),this._options.space_in_paren&&(this._output.space_before_token=!0),this.indent()},Beautifier.prototype.handle_end_expr=function(current_token){for(;this._flags.mode===MODE_Statement;)this.restore_mode();this.handle_whitespace_and_comments(current_token),this._flags.multiline_frame&&this.allow_wrap_or_preserved_newline(current_token,"]"===current_token.text&&is_array(this._flags.mode)&&!this._options.keep_array_indentation),this._options.space_in_paren&&(this._flags.last_token.type!==TOKEN.START_EXPR||this._options.space_in_empty_paren?this._output.space_before_token=!0:(this._output.trim(),this._output.space_before_token=!1)),this.deindent(),this.print_token(current_token),this.restore_mode(),remove_redundant_indentation(this._output,this._previous_flags),this._flags.do_while&&this._previous_flags.mode===MODE_Conditional&&(this._previous_flags.mode=MODE_Expression,this._flags.do_block=!1,this._flags.do_while=!1)},Beautifier.prototype.handle_start_block=function(current_token){this.handle_whitespace_and_comments(current_token);var next_token=this._tokens.peek(),second_token=this._tokens.peek(1);"switch"===this._flags.last_word&&this._flags.last_token.type===TOKEN.END_EXPR?(this.set_mode(MODE_BlockStatement),this._flags.in_case_statement=!0):this._flags.case_body?this.set_mode(MODE_BlockStatement):second_token&&(in_array(second_token.text,[":",","])&&in_array(next_token.type,[TOKEN.STRING,TOKEN.WORD,TOKEN.RESERVED])||in_array(next_token.text,["get","set","..."])&&in_array(second_token.type,[TOKEN.WORD,TOKEN.RESERVED]))?in_array(this._last_last_text,["class","interface"])&&!in_array(second_token.text,[":",","])?this.set_mode(MODE_BlockStatement):this.set_mode(MODE_ObjectLiteral):this._flags.last_token.type===TOKEN.OPERATOR&&"=>"===this._flags.last_token.text?this.set_mode(MODE_BlockStatement):in_array(this._flags.last_token.type,[TOKEN.EQUALS,TOKEN.START_EXPR,TOKEN.COMMA,TOKEN.OPERATOR])||reserved_array(this._flags.last_token,["return","throw","import","default"])?this.set_mode(MODE_ObjectLiteral):this.set_mode(MODE_BlockStatement),this._flags.last_token&&reserved_array(this._flags.last_token.previous,["class","extends"])&&(this._flags.class_start_block=!0);var empty_braces=!next_token.comments_before&&"}"===next_token.text,empty_anonymous_function=empty_braces&&"function"===this._flags.last_word&&this._flags.last_token.type===TOKEN.END_EXPR;if(this._options.brace_preserve_inline){var index=0,check_token=null;this._flags.inline_frame=!0;do{if(index+=1,(check_token=this._tokens.peek(index-1)).newlines){this._flags.inline_frame=!1;break}}while(check_token.type!==TOKEN.EOF&&(check_token.type!==TOKEN.END_BLOCK||check_token.opened!==current_token))}("expand"===this._options.brace_style||"none"===this._options.brace_style&¤t_token.newlines)&&!this._flags.inline_frame?this._flags.last_token.type!==TOKEN.OPERATOR&&(empty_anonymous_function||this._flags.last_token.type===TOKEN.EQUALS||reserved_array(this._flags.last_token,special_words)&&"else"!==this._flags.last_token.text)?this._output.space_before_token=!0:this.print_newline(!1,!0):(!is_array(this._previous_flags.mode)||this._flags.last_token.type!==TOKEN.START_EXPR&&this._flags.last_token.type!==TOKEN.COMMA||((this._flags.last_token.type===TOKEN.COMMA||this._options.space_in_paren)&&(this._output.space_before_token=!0),(this._flags.last_token.type===TOKEN.COMMA||this._flags.last_token.type===TOKEN.START_EXPR&&this._flags.inline_frame)&&(this.allow_wrap_or_preserved_newline(current_token),this._previous_flags.multiline_frame=this._previous_flags.multiline_frame||this._flags.multiline_frame,this._flags.multiline_frame=!1)),this._flags.last_token.type!==TOKEN.OPERATOR&&this._flags.last_token.type!==TOKEN.START_EXPR&&(in_array(this._flags.last_token.type,[TOKEN.START_BLOCK,TOKEN.SEMICOLON])&&!this._flags.inline_frame?this.print_newline():this._output.space_before_token=!0)),this.print_token(current_token),this.indent(),empty_braces||this._options.brace_preserve_inline&&this._flags.inline_frame||this.print_newline()},Beautifier.prototype.handle_end_block=function(current_token){for(this.handle_whitespace_and_comments(current_token);this._flags.mode===MODE_Statement;)this.restore_mode();var empty_braces=this._flags.last_token.type===TOKEN.START_BLOCK;this._flags.inline_frame&&!empty_braces?this._output.space_before_token=!0:"expand"===this._options.brace_style?empty_braces||this.print_newline():empty_braces||(is_array(this._flags.mode)&&this._options.keep_array_indentation?(this._options.keep_array_indentation=!1,this.print_newline(),this._options.keep_array_indentation=!0):this.print_newline()),this.restore_mode(),this.print_token(current_token)},Beautifier.prototype.handle_word=function(current_token){if(current_token.type===TOKEN.RESERVED&&(in_array(current_token.text,["set","get"])&&this._flags.mode!==MODE_ObjectLiteral||"import"===current_token.text&&in_array(this._tokens.peek().text,["(","."])||in_array(current_token.text,["as","from"])&&!this._flags.import_block||this._flags.mode===MODE_ObjectLiteral&&":"===this._tokens.peek().text)&&(current_token.type=TOKEN.WORD),this.start_of_statement(current_token)?reserved_array(this._flags.last_token,["var","let","const"])&¤t_token.type===TOKEN.WORD&&(this._flags.declaration_statement=!0):!current_token.newlines||is_expression(this._flags.mode)||this._flags.last_token.type===TOKEN.OPERATOR&&"--"!==this._flags.last_token.text&&"++"!==this._flags.last_token.text||this._flags.last_token.type===TOKEN.EQUALS||!this._options.preserve_newlines&&reserved_array(this._flags.last_token,["var","let","const","set","get"])?this.handle_whitespace_and_comments(current_token):(this.handle_whitespace_and_comments(current_token),this.print_newline()),this._flags.do_block&&!this._flags.do_while){if(reserved_word(current_token,"while"))return this._output.space_before_token=!0,this.print_token(current_token),this._output.space_before_token=!0,void(this._flags.do_while=!0);this.print_newline(),this._flags.do_block=!1}if(this._flags.if_block)if(!this._flags.else_block&&reserved_word(current_token,"else"))this._flags.else_block=!0;else{for(;this._flags.mode===MODE_Statement;)this.restore_mode();this._flags.if_block=!1,this._flags.else_block=!1}if(this._flags.in_case_statement&&reserved_array(current_token,["case","default"]))return this.print_newline(),this._flags.case_block||!this._flags.case_body&&!this._options.jslint_happy||this.deindent(),this._flags.case_body=!1,this.print_token(current_token),void(this._flags.in_case=!0);if(this._flags.last_token.type!==TOKEN.COMMA&&this._flags.last_token.type!==TOKEN.START_EXPR&&this._flags.last_token.type!==TOKEN.EQUALS&&this._flags.last_token.type!==TOKEN.OPERATOR||this.start_of_object_property()||in_array(this._flags.last_token.text,["+","-"])&&":"===this._last_last_text&&this._flags.parent.mode===MODE_ObjectLiteral||this.allow_wrap_or_preserved_newline(current_token),reserved_word(current_token,"function"))return(in_array(this._flags.last_token.text,["}",";"])||this._output.just_added_newline()&&!in_array(this._flags.last_token.text,["(","[","{",":","=",","])&&this._flags.last_token.type!==TOKEN.OPERATOR)&&(this._output.just_added_blankline()||current_token.comments_before||(this.print_newline(),this.print_newline(!0))),this._flags.last_token.type===TOKEN.RESERVED||this._flags.last_token.type===TOKEN.WORD?reserved_array(this._flags.last_token,["get","set","new","export"])||reserved_array(this._flags.last_token,newline_restricted_tokens)||reserved_word(this._flags.last_token,"default")&&"export"===this._last_last_text||"declare"===this._flags.last_token.text?this._output.space_before_token=!0:this.print_newline():this._flags.last_token.type===TOKEN.OPERATOR||"="===this._flags.last_token.text?this._output.space_before_token=!0:(this._flags.multiline_frame||!is_expression(this._flags.mode)&&!is_array(this._flags.mode))&&this.print_newline(),this.print_token(current_token),void(this._flags.last_word=current_token.text);var prefix="NONE";this._flags.last_token.type===TOKEN.END_BLOCK?this._previous_flags.inline_frame?prefix="SPACE":reserved_array(current_token,["else","catch","finally","from"])?"expand"===this._options.brace_style||"end-expand"===this._options.brace_style||"none"===this._options.brace_style&¤t_token.newlines?prefix="NEWLINE":(prefix="SPACE",this._output.space_before_token=!0):prefix="NEWLINE":this._flags.last_token.type===TOKEN.SEMICOLON&&this._flags.mode===MODE_BlockStatement?prefix="NEWLINE":this._flags.last_token.type===TOKEN.SEMICOLON&&is_expression(this._flags.mode)?prefix="SPACE":this._flags.last_token.type===TOKEN.STRING?prefix="NEWLINE":this._flags.last_token.type===TOKEN.RESERVED||this._flags.last_token.type===TOKEN.WORD||"*"===this._flags.last_token.text&&(in_array(this._last_last_text,["function","yield"])||this._flags.mode===MODE_ObjectLiteral&&in_array(this._last_last_text,["{",","]))?prefix="SPACE":this._flags.last_token.type===TOKEN.START_BLOCK?prefix=this._flags.inline_frame?"SPACE":"NEWLINE":this._flags.last_token.type===TOKEN.END_EXPR&&(this._output.space_before_token=!0,prefix="NEWLINE"),reserved_array(current_token,line_starters)&&")"!==this._flags.last_token.text&&(prefix=this._flags.inline_frame||"else"===this._flags.last_token.text||"export"===this._flags.last_token.text?"SPACE":"NEWLINE"),reserved_array(current_token,["else","catch","finally"])?(this._flags.last_token.type!==TOKEN.END_BLOCK||this._previous_flags.mode!==MODE_BlockStatement||"expand"===this._options.brace_style||"end-expand"===this._options.brace_style||"none"===this._options.brace_style&¤t_token.newlines)&&!this._flags.inline_frame?this.print_newline():(this._output.trim(!0),"}"!==this._output.current_line.last()&&this.print_newline(),this._output.space_before_token=!0):"NEWLINE"===prefix?reserved_array(this._flags.last_token,special_words)||"declare"===this._flags.last_token.text&&reserved_array(current_token,["var","let","const"])?this._output.space_before_token=!0:this._flags.last_token.type!==TOKEN.END_EXPR?this._flags.last_token.type===TOKEN.START_EXPR&&reserved_array(current_token,["var","let","const"])||":"===this._flags.last_token.text||(reserved_word(current_token,"if")&&reserved_word(current_token.previous,"else")?this._output.space_before_token=!0:this.print_newline()):reserved_array(current_token,line_starters)&&")"!==this._flags.last_token.text&&this.print_newline():this._flags.multiline_frame&&is_array(this._flags.mode)&&","===this._flags.last_token.text&&"}"===this._last_last_text?this.print_newline():"SPACE"===prefix&&(this._output.space_before_token=!0),!current_token.previous||current_token.previous.type!==TOKEN.WORD&¤t_token.previous.type!==TOKEN.RESERVED||(this._output.space_before_token=!0),this.print_token(current_token),this._flags.last_word=current_token.text,current_token.type===TOKEN.RESERVED&&("do"===current_token.text?this._flags.do_block=!0:"if"===current_token.text?this._flags.if_block=!0:"import"===current_token.text?this._flags.import_block=!0:this._flags.import_block&&reserved_word(current_token,"from")&&(this._flags.import_block=!1))},Beautifier.prototype.handle_semicolon=function(current_token){this.start_of_statement(current_token)?this._output.space_before_token=!1:this.handle_whitespace_and_comments(current_token);for(var next_token=this._tokens.peek();!(this._flags.mode!==MODE_Statement||this._flags.if_block&&reserved_word(next_token,"else")||this._flags.do_block);)this.restore_mode();this._flags.import_block&&(this._flags.import_block=!1),this.print_token(current_token)},Beautifier.prototype.handle_string=function(current_token){(!current_token.text.startsWith("`")||0!==current_token.newlines||""!==current_token.whitespace_before||")"!==current_token.previous.text&&this._flags.last_token.type!==TOKEN.WORD)&&(this.start_of_statement(current_token)?this._output.space_before_token=!0:(this.handle_whitespace_and_comments(current_token),this._flags.last_token.type===TOKEN.RESERVED||this._flags.last_token.type===TOKEN.WORD||this._flags.inline_frame?this._output.space_before_token=!0:this._flags.last_token.type===TOKEN.COMMA||this._flags.last_token.type===TOKEN.START_EXPR||this._flags.last_token.type===TOKEN.EQUALS||this._flags.last_token.type===TOKEN.OPERATOR?this.start_of_object_property()||this.allow_wrap_or_preserved_newline(current_token):!current_token.text.startsWith("`")||this._flags.last_token.type!==TOKEN.END_EXPR||"]"!==current_token.previous.text&&")"!==current_token.previous.text||0!==current_token.newlines?this.print_newline():this._output.space_before_token=!0)),this.print_token(current_token)},Beautifier.prototype.handle_equals=function(current_token){this.start_of_statement(current_token)||this.handle_whitespace_and_comments(current_token),this._flags.declaration_statement&&(this._flags.declaration_assignment=!0),this._output.space_before_token=!0,this.print_token(current_token),this._output.space_before_token=!0},Beautifier.prototype.handle_comma=function(current_token){this.handle_whitespace_and_comments(current_token,!0),this.print_token(current_token),this._output.space_before_token=!0,this._flags.declaration_statement?(is_expression(this._flags.parent.mode)&&(this._flags.declaration_assignment=!1),this._flags.declaration_assignment?(this._flags.declaration_assignment=!1,this.print_newline(!1,!0)):this._options.comma_first&&this.allow_wrap_or_preserved_newline(current_token)):this._flags.mode===MODE_ObjectLiteral||this._flags.mode===MODE_Statement&&this._flags.parent.mode===MODE_ObjectLiteral?(this._flags.mode===MODE_Statement&&this.restore_mode(),this._flags.inline_frame||this.print_newline()):this._options.comma_first&&this.allow_wrap_or_preserved_newline(current_token)},Beautifier.prototype.handle_operator=function(current_token){var isGeneratorAsterisk="*"===current_token.text&&(reserved_array(this._flags.last_token,["function","yield"])||in_array(this._flags.last_token.type,[TOKEN.START_BLOCK,TOKEN.COMMA,TOKEN.END_BLOCK,TOKEN.SEMICOLON])),isUnary=in_array(current_token.text,["-","+"])&&(in_array(this._flags.last_token.type,[TOKEN.START_BLOCK,TOKEN.START_EXPR,TOKEN.EQUALS,TOKEN.OPERATOR])||in_array(this._flags.last_token.text,line_starters)||","===this._flags.last_token.text);if(this.start_of_statement(current_token));else{var preserve_statement_flags=!isGeneratorAsterisk;this.handle_whitespace_and_comments(current_token,preserve_statement_flags)}if("*"!==current_token.text||this._flags.last_token.type!==TOKEN.DOT)if("::"!==current_token.text)if(in_array(current_token.text,["-","+"])&&this.start_of_object_property())this.print_token(current_token);else{if(this._flags.last_token.type===TOKEN.OPERATOR&&in_array(this._options.operator_position,OPERATOR_POSITION_BEFORE_OR_PRESERVE)&&this.allow_wrap_or_preserved_newline(current_token),":"===current_token.text&&this._flags.in_case)return this.print_token(current_token),this._flags.in_case=!1,this._flags.case_body=!0,void(this._tokens.peek().type!==TOKEN.START_BLOCK?(this.indent(),this.print_newline(),this._flags.case_block=!1):(this._flags.case_block=!0,this._output.space_before_token=!0));var space_before=!0,space_after=!0,in_ternary=!1;if(":"===current_token.text?0===this._flags.ternary_depth?space_before=!1:(this._flags.ternary_depth-=1,in_ternary=!0):"?"===current_token.text&&(this._flags.ternary_depth+=1),!isUnary&&!isGeneratorAsterisk&&this._options.preserve_newlines&&in_array(current_token.text,positionable_operators)){var isColon=":"===current_token.text,isTernaryColon=isColon&&in_ternary,isOtherColon=isColon&&!in_ternary;switch(this._options.operator_position){case OPERATOR_POSITION.before_newline:return this._output.space_before_token=!isOtherColon,this.print_token(current_token),isColon&&!isTernaryColon||this.allow_wrap_or_preserved_newline(current_token),void(this._output.space_before_token=!0);case OPERATOR_POSITION.after_newline:return this._output.space_before_token=!0,!isColon||isTernaryColon?this._tokens.peek().newlines?this.print_newline(!1,!0):this.allow_wrap_or_preserved_newline(current_token):this._output.space_before_token=!1,this.print_token(current_token),void(this._output.space_before_token=!0);case OPERATOR_POSITION.preserve_newline:return isOtherColon||this.allow_wrap_or_preserved_newline(current_token),space_before=!(this._output.just_added_newline()||isOtherColon),this._output.space_before_token=space_before,this.print_token(current_token),void(this._output.space_before_token=!0)}}if(isGeneratorAsterisk){this.allow_wrap_or_preserved_newline(current_token),space_before=!1;var next_token=this._tokens.peek();space_after=next_token&&in_array(next_token.type,[TOKEN.WORD,TOKEN.RESERVED])}else if("..."===current_token.text)this.allow_wrap_or_preserved_newline(current_token),space_before=this._flags.last_token.type===TOKEN.START_BLOCK,space_after=!1;else if(in_array(current_token.text,["--","++","!","~"])||isUnary){if(this._flags.last_token.type!==TOKEN.COMMA&&this._flags.last_token.type!==TOKEN.START_EXPR||this.allow_wrap_or_preserved_newline(current_token),space_before=!1,space_after=!1,current_token.newlines&&("--"===current_token.text||"++"===current_token.text||"~"===current_token.text)){var new_line_needed=reserved_array(this._flags.last_token,special_words)&¤t_token.newlines;new_line_needed&&(this._previous_flags.if_block||this._previous_flags.else_block)&&this.restore_mode(),this.print_newline(new_line_needed,!0)}";"===this._flags.last_token.text&&is_expression(this._flags.mode)&&(space_before=!0),this._flags.last_token.type===TOKEN.RESERVED?space_before=!0:this._flags.last_token.type===TOKEN.END_EXPR?space_before=!("]"===this._flags.last_token.text&&("--"===current_token.text||"++"===current_token.text)):this._flags.last_token.type===TOKEN.OPERATOR&&(space_before=in_array(current_token.text,["--","-","++","+"])&&in_array(this._flags.last_token.text,["--","-","++","+"]),in_array(current_token.text,["+","-"])&&in_array(this._flags.last_token.text,["--","++"])&&(space_after=!0)),(this._flags.mode!==MODE_BlockStatement||this._flags.inline_frame)&&this._flags.mode!==MODE_Statement||"{"!==this._flags.last_token.text&&";"!==this._flags.last_token.text||this.print_newline()}this._output.space_before_token=this._output.space_before_token||space_before,this.print_token(current_token),this._output.space_before_token=space_after}else this.print_token(current_token);else this.print_token(current_token)},Beautifier.prototype.handle_block_comment=function(current_token,preserve_statement_flags){return this._output.raw?(this._output.add_raw_token(current_token),void(current_token.directives&&"end"===current_token.directives.preserve&&(this._output.raw=this._options.test_output_raw))):current_token.directives?(this.print_newline(!1,preserve_statement_flags),this.print_token(current_token),"start"===current_token.directives.preserve&&(this._output.raw=!0),void this.print_newline(!1,!0)):acorn.newline.test(current_token.text)||current_token.newlines?void this.print_block_commment(current_token,preserve_statement_flags):(this._output.space_before_token=!0,this.print_token(current_token),void(this._output.space_before_token=!0))},Beautifier.prototype.print_block_commment=function(current_token,preserve_statement_flags){var j,lines=function(s){for(var out=[],idx=(s=s.replace(acorn.allLineBreaks,"\n")).indexOf("\n");-1!==idx;)out.push(s.substring(0,idx)),idx=(s=s.substring(idx+1)).indexOf("\n");return s.length&&out.push(s),out}(current_token.text),javadoc=!1,starless=!1,lastIndent=current_token.whitespace_before,lastIndentLength=lastIndent.length;if(this.print_newline(!1,preserve_statement_flags),this.print_token_line_indentation(current_token),this._output.add_token(lines[0]),this.print_newline(!1,preserve_statement_flags),lines.length>1){for(javadoc=function(lines,c){for(var i=0;i0&&(baseIndentString=new Array(options.indent_level+1).join(this.__indent_string)),this.__base_string=baseIndentString,this.__base_string_length=baseIndentString.length}function Output(options,baseIndentString){this.__indent_cache=new IndentStringCache(options,baseIndentString),this.raw=!1,this._end_with_newline=options.end_with_newline,this.indent_size=options.indent_size,this.wrap_line_length=options.wrap_line_length,this.indent_empty_lines=options.indent_empty_lines,this.__lines=[],this.previous_line=null,this.current_line=null,this.next_line=new OutputLine(this),this.space_before_token=!1,this.non_breaking_space=!1,this.previous_token_wrapped=!1,this.__add_outputline()}OutputLine.prototype.clone_empty=function(){var line=new OutputLine(this.__parent);return line.set_indent(this.__indent_count,this.__alignment_count),line},OutputLine.prototype.item=function(index){return index<0?this.__items[this.__items.length+index]:this.__items[index]},OutputLine.prototype.has_match=function(pattern){for(var lastCheckedOutput=this.__items.length-1;lastCheckedOutput>=0;lastCheckedOutput--)if(this.__items[lastCheckedOutput].match(pattern))return!0;return!1},OutputLine.prototype.set_indent=function(indent,alignment){this.is_empty()&&(this.__indent_count=indent||0,this.__alignment_count=alignment||0,this.__character_count=this.__parent.get_indent_size(this.__indent_count,this.__alignment_count))},OutputLine.prototype._set_wrap_point=function(){this.__parent.wrap_line_length&&(this.__wrap_point_index=this.__items.length,this.__wrap_point_character_count=this.__character_count,this.__wrap_point_indent_count=this.__parent.next_line.__indent_count,this.__wrap_point_alignment_count=this.__parent.next_line.__alignment_count)},OutputLine.prototype._should_wrap=function(){return this.__wrap_point_index&&this.__character_count>this.__parent.wrap_line_length&&this.__wrap_point_character_count>this.__parent.next_line.__character_count},OutputLine.prototype._allow_wrap=function(){if(this._should_wrap()){this.__parent.add_new_line();var next=this.__parent.current_line;return next.set_indent(this.__wrap_point_indent_count,this.__wrap_point_alignment_count),next.__items=this.__items.slice(this.__wrap_point_index),this.__items=this.__items.slice(0,this.__wrap_point_index),next.__character_count+=this.__character_count-this.__wrap_point_character_count,this.__character_count=this.__wrap_point_character_count," "===next.__items[0]&&(next.__items.splice(0,1),next.__character_count-=1),!0}return!1},OutputLine.prototype.is_empty=function(){return 0===this.__items.length},OutputLine.prototype.last=function(){return this.is_empty()?null:this.__items[this.__items.length-1]},OutputLine.prototype.push=function(item){this.__items.push(item);var last_newline_index=item.lastIndexOf("\n");-1!==last_newline_index?this.__character_count=item.length-last_newline_index:this.__character_count+=item.length},OutputLine.prototype.pop=function(){var item=null;return this.is_empty()||(item=this.__items.pop(),this.__character_count-=item.length),item},OutputLine.prototype._remove_indent=function(){this.__indent_count>0&&(this.__indent_count-=1,this.__character_count-=this.__parent.indent_size)},OutputLine.prototype._remove_wrap_indent=function(){this.__wrap_point_indent_count>0&&(this.__wrap_point_indent_count-=1)},OutputLine.prototype.trim=function(){for(;" "===this.last();)this.__items.pop(),this.__character_count-=1},OutputLine.prototype.toString=function(){var result="";return this.is_empty()?this.__parent.indent_empty_lines&&(result=this.__parent.get_indent_string(this.__indent_count)):(result=this.__parent.get_indent_string(this.__indent_count,this.__alignment_count),result+=this.__items.join("")),result},IndentStringCache.prototype.get_indent_size=function(indent,column){var result=this.__base_string_length;return column=column||0,indent<0&&(result=0),result+=indent*this.__indent_size,result+=column},IndentStringCache.prototype.get_indent_string=function(indent_level,column){var result=this.__base_string;return column=column||0,indent_level<0&&(indent_level=0,result=""),column+=indent_level*this.__indent_size,this.__ensure_cache(column),result+=this.__cache[column]},IndentStringCache.prototype.__ensure_cache=function(column){for(;column>=this.__cache.length;)this.__add_column()},IndentStringCache.prototype.__add_column=function(){var column=this.__cache.length,indent=0,result="";this.__indent_size&&column>=this.__indent_size&&(column-=(indent=Math.floor(column/this.__indent_size))*this.__indent_size,result=new Array(indent+1).join(this.__indent_string)),column&&(result+=new Array(column+1).join(" ")),this.__cache.push(result)},Output.prototype.__add_outputline=function(){this.previous_line=this.current_line,this.current_line=this.next_line.clone_empty(),this.__lines.push(this.current_line)},Output.prototype.get_line_number=function(){return this.__lines.length},Output.prototype.get_indent_string=function(indent,column){return this.__indent_cache.get_indent_string(indent,column)},Output.prototype.get_indent_size=function(indent,column){return this.__indent_cache.get_indent_size(indent,column)},Output.prototype.is_empty=function(){return!this.previous_line&&this.current_line.is_empty()},Output.prototype.add_new_line=function(force_newline){return!(this.is_empty()||!force_newline&&this.just_added_newline()||(this.raw||this.__add_outputline(),0))},Output.prototype.get_code=function(eol){this.trim(!0);var last_item=this.current_line.pop();last_item&&("\n"===last_item[last_item.length-1]&&(last_item=last_item.replace(/\n+$/g,"")),this.current_line.push(last_item)),this._end_with_newline&&this.__add_outputline();var sweet_code=this.__lines.join("\n");return"\n"!==eol&&(sweet_code=sweet_code.replace(/[\n]/g,eol)),sweet_code},Output.prototype.set_wrap_point=function(){this.current_line._set_wrap_point()},Output.prototype.set_indent=function(indent,alignment){return indent=indent||0,alignment=alignment||0,this.next_line.set_indent(indent,alignment),this.__lines.length>1?(this.current_line.set_indent(indent,alignment),!0):(this.current_line.set_indent(),!1)},Output.prototype.add_raw_token=function(token){for(var x=0;x1&&this.current_line.is_empty();)this.__lines.pop(),this.current_line=this.__lines[this.__lines.length-1],this.current_line.trim();this.previous_line=this.__lines.length>1?this.__lines[this.__lines.length-2]:null},Output.prototype.just_added_newline=function(){return this.current_line.is_empty()},Output.prototype.just_added_blankline=function(){return this.is_empty()||this.current_line.is_empty()&&this.previous_line.is_empty()},Output.prototype.ensure_empty_line_above=function(starts_with,ends_with){for(var index=this.__lines.length-2;index>=0;){var potentialEmptyLine=this.__lines[index];if(potentialEmptyLine.is_empty())break;if(0!==potentialEmptyLine.item(0).indexOf(starts_with)&&potentialEmptyLine.item(-1)!==ends_with){this.__lines.splice(index+1,0,new OutputLine(this)),this.previous_line=this.__lines[this.__lines.length-2];break}index--}},module.exports.Output=Output},function(module){module.exports.Token=function(type,text,newlines,whitespace_before){this.type=type,this.text=text,this.comments_before=null,this.newlines=newlines||0,this.whitespace_before=whitespace_before||"",this.parent=null,this.next=null,this.previous=null,this.opened=null,this.closed=null,this.directives=null}},function(__unused_webpack_module,exports){var nonASCIIidentifierStartChars="\\xaa\\xb5\\xba\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02c1\\u02c6-\\u02d1\\u02e0-\\u02e4\\u02ec\\u02ee\\u0370-\\u0374\\u0376\\u0377\\u037a-\\u037d\\u0386\\u0388-\\u038a\\u038c\\u038e-\\u03a1\\u03a3-\\u03f5\\u03f7-\\u0481\\u048a-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05d0-\\u05ea\\u05f0-\\u05f2\\u0620-\\u064a\\u066e\\u066f\\u0671-\\u06d3\\u06d5\\u06e5\\u06e6\\u06ee\\u06ef\\u06fa-\\u06fc\\u06ff\\u0710\\u0712-\\u072f\\u074d-\\u07a5\\u07b1\\u07ca-\\u07ea\\u07f4\\u07f5\\u07fa\\u0800-\\u0815\\u081a\\u0824\\u0828\\u0840-\\u0858\\u08a0\\u08a2-\\u08ac\\u0904-\\u0939\\u093d\\u0950\\u0958-\\u0961\\u0971-\\u0977\\u0979-\\u097f\\u0985-\\u098c\\u098f\\u0990\\u0993-\\u09a8\\u09aa-\\u09b0\\u09b2\\u09b6-\\u09b9\\u09bd\\u09ce\\u09dc\\u09dd\\u09df-\\u09e1\\u09f0\\u09f1\\u0a05-\\u0a0a\\u0a0f\\u0a10\\u0a13-\\u0a28\\u0a2a-\\u0a30\\u0a32\\u0a33\\u0a35\\u0a36\\u0a38\\u0a39\\u0a59-\\u0a5c\\u0a5e\\u0a72-\\u0a74\\u0a85-\\u0a8d\\u0a8f-\\u0a91\\u0a93-\\u0aa8\\u0aaa-\\u0ab0\\u0ab2\\u0ab3\\u0ab5-\\u0ab9\\u0abd\\u0ad0\\u0ae0\\u0ae1\\u0b05-\\u0b0c\\u0b0f\\u0b10\\u0b13-\\u0b28\\u0b2a-\\u0b30\\u0b32\\u0b33\\u0b35-\\u0b39\\u0b3d\\u0b5c\\u0b5d\\u0b5f-\\u0b61\\u0b71\\u0b83\\u0b85-\\u0b8a\\u0b8e-\\u0b90\\u0b92-\\u0b95\\u0b99\\u0b9a\\u0b9c\\u0b9e\\u0b9f\\u0ba3\\u0ba4\\u0ba8-\\u0baa\\u0bae-\\u0bb9\\u0bd0\\u0c05-\\u0c0c\\u0c0e-\\u0c10\\u0c12-\\u0c28\\u0c2a-\\u0c33\\u0c35-\\u0c39\\u0c3d\\u0c58\\u0c59\\u0c60\\u0c61\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd\\u0cde\\u0ce0\\u0ce1\\u0cf1\\u0cf2\\u0d05-\\u0d0c\\u0d0e-\\u0d10\\u0d12-\\u0d3a\\u0d3d\\u0d4e\\u0d60\\u0d61\\u0d7a-\\u0d7f\\u0d85-\\u0d96\\u0d9a-\\u0db1\\u0db3-\\u0dbb\\u0dbd\\u0dc0-\\u0dc6\\u0e01-\\u0e30\\u0e32\\u0e33\\u0e40-\\u0e46\\u0e81\\u0e82\\u0e84\\u0e87\\u0e88\\u0e8a\\u0e8d\\u0e94-\\u0e97\\u0e99-\\u0e9f\\u0ea1-\\u0ea3\\u0ea5\\u0ea7\\u0eaa\\u0eab\\u0ead-\\u0eb0\\u0eb2\\u0eb3\\u0ebd\\u0ec0-\\u0ec4\\u0ec6\\u0edc-\\u0edf\\u0f00\\u0f40-\\u0f47\\u0f49-\\u0f6c\\u0f88-\\u0f8c\\u1000-\\u102a\\u103f\\u1050-\\u1055\\u105a-\\u105d\\u1061\\u1065\\u1066\\u106e-\\u1070\\u1075-\\u1081\\u108e\\u10a0-\\u10c5\\u10c7\\u10cd\\u10d0-\\u10fa\\u10fc-\\u1248\\u124a-\\u124d\\u1250-\\u1256\\u1258\\u125a-\\u125d\\u1260-\\u1288\\u128a-\\u128d\\u1290-\\u12b0\\u12b2-\\u12b5\\u12b8-\\u12be\\u12c0\\u12c2-\\u12c5\\u12c8-\\u12d6\\u12d8-\\u1310\\u1312-\\u1315\\u1318-\\u135a\\u1380-\\u138f\\u13a0-\\u13f4\\u1401-\\u166c\\u166f-\\u167f\\u1681-\\u169a\\u16a0-\\u16ea\\u16ee-\\u16f0\\u1700-\\u170c\\u170e-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176c\\u176e-\\u1770\\u1780-\\u17b3\\u17d7\\u17dc\\u1820-\\u1877\\u1880-\\u18a8\\u18aa\\u18b0-\\u18f5\\u1900-\\u191c\\u1950-\\u196d\\u1970-\\u1974\\u1980-\\u19ab\\u19c1-\\u19c7\\u1a00-\\u1a16\\u1a20-\\u1a54\\u1aa7\\u1b05-\\u1b33\\u1b45-\\u1b4b\\u1b83-\\u1ba0\\u1bae\\u1baf\\u1bba-\\u1be5\\u1c00-\\u1c23\\u1c4d-\\u1c4f\\u1c5a-\\u1c7d\\u1ce9-\\u1cec\\u1cee-\\u1cf1\\u1cf5\\u1cf6\\u1d00-\\u1dbf\\u1e00-\\u1f15\\u1f18-\\u1f1d\\u1f20-\\u1f45\\u1f48-\\u1f4d\\u1f50-\\u1f57\\u1f59\\u1f5b\\u1f5d\\u1f5f-\\u1f7d\\u1f80-\\u1fb4\\u1fb6-\\u1fbc\\u1fbe\\u1fc2-\\u1fc4\\u1fc6-\\u1fcc\\u1fd0-\\u1fd3\\u1fd6-\\u1fdb\\u1fe0-\\u1fec\\u1ff2-\\u1ff4\\u1ff6-\\u1ffc\\u2071\\u207f\\u2090-\\u209c\\u2102\\u2107\\u210a-\\u2113\\u2115\\u2119-\\u211d\\u2124\\u2126\\u2128\\u212a-\\u212d\\u212f-\\u2139\\u213c-\\u213f\\u2145-\\u2149\\u214e\\u2160-\\u2188\\u2c00-\\u2c2e\\u2c30-\\u2c5e\\u2c60-\\u2ce4\\u2ceb-\\u2cee\\u2cf2\\u2cf3\\u2d00-\\u2d25\\u2d27\\u2d2d\\u2d30-\\u2d67\\u2d6f\\u2d80-\\u2d96\\u2da0-\\u2da6\\u2da8-\\u2dae\\u2db0-\\u2db6\\u2db8-\\u2dbe\\u2dc0-\\u2dc6\\u2dc8-\\u2dce\\u2dd0-\\u2dd6\\u2dd8-\\u2dde\\u2e2f\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303c\\u3041-\\u3096\\u309d-\\u309f\\u30a1-\\u30fa\\u30fc-\\u30ff\\u3105-\\u312d\\u3131-\\u318e\\u31a0-\\u31ba\\u31f0-\\u31ff\\u3400-\\u4db5\\u4e00-\\u9fcc\\ua000-\\ua48c\\ua4d0-\\ua4fd\\ua500-\\ua60c\\ua610-\\ua61f\\ua62a\\ua62b\\ua640-\\ua66e\\ua67f-\\ua697\\ua6a0-\\ua6ef\\ua717-\\ua71f\\ua722-\\ua788\\ua78b-\\ua78e\\ua790-\\ua793\\ua7a0-\\ua7aa\\ua7f8-\\ua801\\ua803-\\ua805\\ua807-\\ua80a\\ua80c-\\ua822\\ua840-\\ua873\\ua882-\\ua8b3\\ua8f2-\\ua8f7\\ua8fb\\ua90a-\\ua925\\ua930-\\ua946\\ua960-\\ua97c\\ua984-\\ua9b2\\ua9cf\\uaa00-\\uaa28\\uaa40-\\uaa42\\uaa44-\\uaa4b\\uaa60-\\uaa76\\uaa7a\\uaa80-\\uaaaf\\uaab1\\uaab5\\uaab6\\uaab9-\\uaabd\\uaac0\\uaac2\\uaadb-\\uaadd\\uaae0-\\uaaea\\uaaf2-\\uaaf4\\uab01-\\uab06\\uab09-\\uab0e\\uab11-\\uab16\\uab20-\\uab26\\uab28-\\uab2e\\uabc0-\\uabe2\\uac00-\\ud7a3\\ud7b0-\\ud7c6\\ud7cb-\\ud7fb\\uf900-\\ufa6d\\ufa70-\\ufad9\\ufb00-\\ufb06\\ufb13-\\ufb17\\ufb1d\\ufb1f-\\ufb28\\ufb2a-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40\\ufb41\\ufb43\\ufb44\\ufb46-\\ufbb1\\ufbd3-\\ufd3d\\ufd50-\\ufd8f\\ufd92-\\ufdc7\\ufdf0-\\ufdfb\\ufe70-\\ufe74\\ufe76-\\ufefc\\uff21-\\uff3a\\uff41-\\uff5a\\uff66-\\uffbe\\uffc2-\\uffc7\\uffca-\\uffcf\\uffd2-\\uffd7\\uffda-\\uffdc",nonASCIIidentifierChars="\\u0300-\\u036f\\u0483-\\u0487\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u0620-\\u0649\\u0672-\\u06d3\\u06e7-\\u06e8\\u06fb-\\u06fc\\u0730-\\u074a\\u0800-\\u0814\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0840-\\u0857\\u08e4-\\u08fe\\u0900-\\u0903\\u093a-\\u093c\\u093e-\\u094f\\u0951-\\u0957\\u0962-\\u0963\\u0966-\\u096f\\u0981-\\u0983\\u09bc\\u09be-\\u09c4\\u09c7\\u09c8\\u09d7\\u09df-\\u09e0\\u0a01-\\u0a03\\u0a3c\\u0a3e-\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a66-\\u0a71\\u0a75\\u0a81-\\u0a83\\u0abc\\u0abe-\\u0ac5\\u0ac7-\\u0ac9\\u0acb-\\u0acd\\u0ae2-\\u0ae3\\u0ae6-\\u0aef\\u0b01-\\u0b03\\u0b3c\\u0b3e-\\u0b44\\u0b47\\u0b48\\u0b4b-\\u0b4d\\u0b56\\u0b57\\u0b5f-\\u0b60\\u0b66-\\u0b6f\\u0b82\\u0bbe-\\u0bc2\\u0bc6-\\u0bc8\\u0bca-\\u0bcd\\u0bd7\\u0be6-\\u0bef\\u0c01-\\u0c03\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62-\\u0c63\\u0c66-\\u0c6f\\u0c82\\u0c83\\u0cbc\\u0cbe-\\u0cc4\\u0cc6-\\u0cc8\\u0cca-\\u0ccd\\u0cd5\\u0cd6\\u0ce2-\\u0ce3\\u0ce6-\\u0cef\\u0d02\\u0d03\\u0d46-\\u0d48\\u0d57\\u0d62-\\u0d63\\u0d66-\\u0d6f\\u0d82\\u0d83\\u0dca\\u0dcf-\\u0dd4\\u0dd6\\u0dd8-\\u0ddf\\u0df2\\u0df3\\u0e34-\\u0e3a\\u0e40-\\u0e45\\u0e50-\\u0e59\\u0eb4-\\u0eb9\\u0ec8-\\u0ecd\\u0ed0-\\u0ed9\\u0f18\\u0f19\\u0f20-\\u0f29\\u0f35\\u0f37\\u0f39\\u0f41-\\u0f47\\u0f71-\\u0f84\\u0f86-\\u0f87\\u0f8d-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u1000-\\u1029\\u1040-\\u1049\\u1067-\\u106d\\u1071-\\u1074\\u1082-\\u108d\\u108f-\\u109d\\u135d-\\u135f\\u170e-\\u1710\\u1720-\\u1730\\u1740-\\u1750\\u1772\\u1773\\u1780-\\u17b2\\u17dd\\u17e0-\\u17e9\\u180b-\\u180d\\u1810-\\u1819\\u1920-\\u192b\\u1930-\\u193b\\u1951-\\u196d\\u19b0-\\u19c0\\u19c8-\\u19c9\\u19d0-\\u19d9\\u1a00-\\u1a15\\u1a20-\\u1a53\\u1a60-\\u1a7c\\u1a7f-\\u1a89\\u1a90-\\u1a99\\u1b46-\\u1b4b\\u1b50-\\u1b59\\u1b6b-\\u1b73\\u1bb0-\\u1bb9\\u1be6-\\u1bf3\\u1c00-\\u1c22\\u1c40-\\u1c49\\u1c5b-\\u1c7d\\u1cd0-\\u1cd2\\u1d00-\\u1dbe\\u1e01-\\u1f15\\u200c\\u200d\\u203f\\u2040\\u2054\\u20d0-\\u20dc\\u20e1\\u20e5-\\u20f0\\u2d81-\\u2d96\\u2de0-\\u2dff\\u3021-\\u3028\\u3099\\u309a\\ua640-\\ua66d\\ua674-\\ua67d\\ua69f\\ua6f0-\\ua6f1\\ua7f8-\\ua800\\ua806\\ua80b\\ua823-\\ua827\\ua880-\\ua881\\ua8b4-\\ua8c4\\ua8d0-\\ua8d9\\ua8f3-\\ua8f7\\ua900-\\ua909\\ua926-\\ua92d\\ua930-\\ua945\\ua980-\\ua983\\ua9b3-\\ua9c0\\uaa00-\\uaa27\\uaa40-\\uaa41\\uaa4c-\\uaa4d\\uaa50-\\uaa59\\uaa7b\\uaae0-\\uaae9\\uaaf2-\\uaaf3\\uabc0-\\uabe1\\uabec\\uabed\\uabf0-\\uabf9\\ufb20-\\ufb28\\ufe00-\\ufe0f\\ufe20-\\ufe26\\ufe33\\ufe34\\ufe4d-\\ufe4f\\uff10-\\uff19\\uff3f",identifierStart="(?:\\\\u[0-9a-fA-F]{4}|\\\\u\\{[0-9a-fA-F]+\\}|[\\x23\\x24\\x40\\x41-\\x5a\\x5f\\x61-\\x7a"+nonASCIIidentifierStartChars+"])";exports.identifier=new RegExp(identifierStart+"(?:\\\\u[0-9a-fA-F]{4}|\\\\u\\{[0-9a-fA-F]+\\}|[\\x24\\x30-\\x39\\x41-\\x5a\\x5f\\x61-\\x7a\\xaa\\xb5\\xba\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02c1\\u02c6-\\u02d1\\u02e0-\\u02e4\\u02ec\\u02ee\\u0370-\\u0374\\u0376\\u0377\\u037a-\\u037d\\u0386\\u0388-\\u038a\\u038c\\u038e-\\u03a1\\u03a3-\\u03f5\\u03f7-\\u0481\\u048a-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05d0-\\u05ea\\u05f0-\\u05f2\\u0620-\\u064a\\u066e\\u066f\\u0671-\\u06d3\\u06d5\\u06e5\\u06e6\\u06ee\\u06ef\\u06fa-\\u06fc\\u06ff\\u0710\\u0712-\\u072f\\u074d-\\u07a5\\u07b1\\u07ca-\\u07ea\\u07f4\\u07f5\\u07fa\\u0800-\\u0815\\u081a\\u0824\\u0828\\u0840-\\u0858\\u08a0\\u08a2-\\u08ac\\u0904-\\u0939\\u093d\\u0950\\u0958-\\u0961\\u0971-\\u0977\\u0979-\\u097f\\u0985-\\u098c\\u098f\\u0990\\u0993-\\u09a8\\u09aa-\\u09b0\\u09b2\\u09b6-\\u09b9\\u09bd\\u09ce\\u09dc\\u09dd\\u09df-\\u09e1\\u09f0\\u09f1\\u0a05-\\u0a0a\\u0a0f\\u0a10\\u0a13-\\u0a28\\u0a2a-\\u0a30\\u0a32\\u0a33\\u0a35\\u0a36\\u0a38\\u0a39\\u0a59-\\u0a5c\\u0a5e\\u0a72-\\u0a74\\u0a85-\\u0a8d\\u0a8f-\\u0a91\\u0a93-\\u0aa8\\u0aaa-\\u0ab0\\u0ab2\\u0ab3\\u0ab5-\\u0ab9\\u0abd\\u0ad0\\u0ae0\\u0ae1\\u0b05-\\u0b0c\\u0b0f\\u0b10\\u0b13-\\u0b28\\u0b2a-\\u0b30\\u0b32\\u0b33\\u0b35-\\u0b39\\u0b3d\\u0b5c\\u0b5d\\u0b5f-\\u0b61\\u0b71\\u0b83\\u0b85-\\u0b8a\\u0b8e-\\u0b90\\u0b92-\\u0b95\\u0b99\\u0b9a\\u0b9c\\u0b9e\\u0b9f\\u0ba3\\u0ba4\\u0ba8-\\u0baa\\u0bae-\\u0bb9\\u0bd0\\u0c05-\\u0c0c\\u0c0e-\\u0c10\\u0c12-\\u0c28\\u0c2a-\\u0c33\\u0c35-\\u0c39\\u0c3d\\u0c58\\u0c59\\u0c60\\u0c61\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd\\u0cde\\u0ce0\\u0ce1\\u0cf1\\u0cf2\\u0d05-\\u0d0c\\u0d0e-\\u0d10\\u0d12-\\u0d3a\\u0d3d\\u0d4e\\u0d60\\u0d61\\u0d7a-\\u0d7f\\u0d85-\\u0d96\\u0d9a-\\u0db1\\u0db3-\\u0dbb\\u0dbd\\u0dc0-\\u0dc6\\u0e01-\\u0e30\\u0e32\\u0e33\\u0e40-\\u0e46\\u0e81\\u0e82\\u0e84\\u0e87\\u0e88\\u0e8a\\u0e8d\\u0e94-\\u0e97\\u0e99-\\u0e9f\\u0ea1-\\u0ea3\\u0ea5\\u0ea7\\u0eaa\\u0eab\\u0ead-\\u0eb0\\u0eb2\\u0eb3\\u0ebd\\u0ec0-\\u0ec4\\u0ec6\\u0edc-\\u0edf\\u0f00\\u0f40-\\u0f47\\u0f49-\\u0f6c\\u0f88-\\u0f8c\\u1000-\\u102a\\u103f\\u1050-\\u1055\\u105a-\\u105d\\u1061\\u1065\\u1066\\u106e-\\u1070\\u1075-\\u1081\\u108e\\u10a0-\\u10c5\\u10c7\\u10cd\\u10d0-\\u10fa\\u10fc-\\u1248\\u124a-\\u124d\\u1250-\\u1256\\u1258\\u125a-\\u125d\\u1260-\\u1288\\u128a-\\u128d\\u1290-\\u12b0\\u12b2-\\u12b5\\u12b8-\\u12be\\u12c0\\u12c2-\\u12c5\\u12c8-\\u12d6\\u12d8-\\u1310\\u1312-\\u1315\\u1318-\\u135a\\u1380-\\u138f\\u13a0-\\u13f4\\u1401-\\u166c\\u166f-\\u167f\\u1681-\\u169a\\u16a0-\\u16ea\\u16ee-\\u16f0\\u1700-\\u170c\\u170e-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176c\\u176e-\\u1770\\u1780-\\u17b3\\u17d7\\u17dc\\u1820-\\u1877\\u1880-\\u18a8\\u18aa\\u18b0-\\u18f5\\u1900-\\u191c\\u1950-\\u196d\\u1970-\\u1974\\u1980-\\u19ab\\u19c1-\\u19c7\\u1a00-\\u1a16\\u1a20-\\u1a54\\u1aa7\\u1b05-\\u1b33\\u1b45-\\u1b4b\\u1b83-\\u1ba0\\u1bae\\u1baf\\u1bba-\\u1be5\\u1c00-\\u1c23\\u1c4d-\\u1c4f\\u1c5a-\\u1c7d\\u1ce9-\\u1cec\\u1cee-\\u1cf1\\u1cf5\\u1cf6\\u1d00-\\u1dbf\\u1e00-\\u1f15\\u1f18-\\u1f1d\\u1f20-\\u1f45\\u1f48-\\u1f4d\\u1f50-\\u1f57\\u1f59\\u1f5b\\u1f5d\\u1f5f-\\u1f7d\\u1f80-\\u1fb4\\u1fb6-\\u1fbc\\u1fbe\\u1fc2-\\u1fc4\\u1fc6-\\u1fcc\\u1fd0-\\u1fd3\\u1fd6-\\u1fdb\\u1fe0-\\u1fec\\u1ff2-\\u1ff4\\u1ff6-\\u1ffc\\u2071\\u207f\\u2090-\\u209c\\u2102\\u2107\\u210a-\\u2113\\u2115\\u2119-\\u211d\\u2124\\u2126\\u2128\\u212a-\\u212d\\u212f-\\u2139\\u213c-\\u213f\\u2145-\\u2149\\u214e\\u2160-\\u2188\\u2c00-\\u2c2e\\u2c30-\\u2c5e\\u2c60-\\u2ce4\\u2ceb-\\u2cee\\u2cf2\\u2cf3\\u2d00-\\u2d25\\u2d27\\u2d2d\\u2d30-\\u2d67\\u2d6f\\u2d80-\\u2d96\\u2da0-\\u2da6\\u2da8-\\u2dae\\u2db0-\\u2db6\\u2db8-\\u2dbe\\u2dc0-\\u2dc6\\u2dc8-\\u2dce\\u2dd0-\\u2dd6\\u2dd8-\\u2dde\\u2e2f\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303c\\u3041-\\u3096\\u309d-\\u309f\\u30a1-\\u30fa\\u30fc-\\u30ff\\u3105-\\u312d\\u3131-\\u318e\\u31a0-\\u31ba\\u31f0-\\u31ff\\u3400-\\u4db5\\u4e00-\\u9fcc\\ua000-\\ua48c\\ua4d0-\\ua4fd\\ua500-\\ua60c\\ua610-\\ua61f\\ua62a\\ua62b\\ua640-\\ua66e\\ua67f-\\ua697\\ua6a0-\\ua6ef\\ua717-\\ua71f\\ua722-\\ua788\\ua78b-\\ua78e\\ua790-\\ua793\\ua7a0-\\ua7aa\\ua7f8-\\ua801\\ua803-\\ua805\\ua807-\\ua80a\\ua80c-\\ua822\\ua840-\\ua873\\ua882-\\ua8b3\\ua8f2-\\ua8f7\\ua8fb\\ua90a-\\ua925\\ua930-\\ua946\\ua960-\\ua97c\\ua984-\\ua9b2\\ua9cf\\uaa00-\\uaa28\\uaa40-\\uaa42\\uaa44-\\uaa4b\\uaa60-\\uaa76\\uaa7a\\uaa80-\\uaaaf\\uaab1\\uaab5\\uaab6\\uaab9-\\uaabd\\uaac0\\uaac2\\uaadb-\\uaadd\\uaae0-\\uaaea\\uaaf2-\\uaaf4\\uab01-\\uab06\\uab09-\\uab0e\\uab11-\\uab16\\uab20-\\uab26\\uab28-\\uab2e\\uabc0-\\uabe2\\uac00-\\ud7a3\\ud7b0-\\ud7c6\\ud7cb-\\ud7fb\\uf900-\\ufa6d\\ufa70-\\ufad9\\ufb00-\\ufb06\\ufb13-\\ufb17\\ufb1d\\ufb1f-\\ufb28\\ufb2a-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40\\ufb41\\ufb43\\ufb44\\ufb46-\\ufbb1\\ufbd3-\\ufd3d\\ufd50-\\ufd8f\\ufd92-\\ufdc7\\ufdf0-\\ufdfb\\ufe70-\\ufe74\\ufe76-\\ufefc\\uff21-\\uff3a\\uff41-\\uff5a\\uff66-\\uffbe\\uffc2-\\uffc7\\uffca-\\uffcf\\uffd2-\\uffd7\\uffda-\\uffdc\\u0300-\\u036f\\u0483-\\u0487\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u0620-\\u0649\\u0672-\\u06d3\\u06e7-\\u06e8\\u06fb-\\u06fc\\u0730-\\u074a\\u0800-\\u0814\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0840-\\u0857\\u08e4-\\u08fe\\u0900-\\u0903\\u093a-\\u093c\\u093e-\\u094f\\u0951-\\u0957\\u0962-\\u0963\\u0966-\\u096f\\u0981-\\u0983\\u09bc\\u09be-\\u09c4\\u09c7\\u09c8\\u09d7\\u09df-\\u09e0\\u0a01-\\u0a03\\u0a3c\\u0a3e-\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a66-\\u0a71\\u0a75\\u0a81-\\u0a83\\u0abc\\u0abe-\\u0ac5\\u0ac7-\\u0ac9\\u0acb-\\u0acd\\u0ae2-\\u0ae3\\u0ae6-\\u0aef\\u0b01-\\u0b03\\u0b3c\\u0b3e-\\u0b44\\u0b47\\u0b48\\u0b4b-\\u0b4d\\u0b56\\u0b57\\u0b5f-\\u0b60\\u0b66-\\u0b6f\\u0b82\\u0bbe-\\u0bc2\\u0bc6-\\u0bc8\\u0bca-\\u0bcd\\u0bd7\\u0be6-\\u0bef\\u0c01-\\u0c03\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62-\\u0c63\\u0c66-\\u0c6f\\u0c82\\u0c83\\u0cbc\\u0cbe-\\u0cc4\\u0cc6-\\u0cc8\\u0cca-\\u0ccd\\u0cd5\\u0cd6\\u0ce2-\\u0ce3\\u0ce6-\\u0cef\\u0d02\\u0d03\\u0d46-\\u0d48\\u0d57\\u0d62-\\u0d63\\u0d66-\\u0d6f\\u0d82\\u0d83\\u0dca\\u0dcf-\\u0dd4\\u0dd6\\u0dd8-\\u0ddf\\u0df2\\u0df3\\u0e34-\\u0e3a\\u0e40-\\u0e45\\u0e50-\\u0e59\\u0eb4-\\u0eb9\\u0ec8-\\u0ecd\\u0ed0-\\u0ed9\\u0f18\\u0f19\\u0f20-\\u0f29\\u0f35\\u0f37\\u0f39\\u0f41-\\u0f47\\u0f71-\\u0f84\\u0f86-\\u0f87\\u0f8d-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u1000-\\u1029\\u1040-\\u1049\\u1067-\\u106d\\u1071-\\u1074\\u1082-\\u108d\\u108f-\\u109d\\u135d-\\u135f\\u170e-\\u1710\\u1720-\\u1730\\u1740-\\u1750\\u1772\\u1773\\u1780-\\u17b2\\u17dd\\u17e0-\\u17e9\\u180b-\\u180d\\u1810-\\u1819\\u1920-\\u192b\\u1930-\\u193b\\u1951-\\u196d\\u19b0-\\u19c0\\u19c8-\\u19c9\\u19d0-\\u19d9\\u1a00-\\u1a15\\u1a20-\\u1a53\\u1a60-\\u1a7c\\u1a7f-\\u1a89\\u1a90-\\u1a99\\u1b46-\\u1b4b\\u1b50-\\u1b59\\u1b6b-\\u1b73\\u1bb0-\\u1bb9\\u1be6-\\u1bf3\\u1c00-\\u1c22\\u1c40-\\u1c49\\u1c5b-\\u1c7d\\u1cd0-\\u1cd2\\u1d00-\\u1dbe\\u1e01-\\u1f15\\u200c\\u200d\\u203f\\u2040\\u2054\\u20d0-\\u20dc\\u20e1\\u20e5-\\u20f0\\u2d81-\\u2d96\\u2de0-\\u2dff\\u3021-\\u3028\\u3099\\u309a\\ua640-\\ua66d\\ua674-\\ua67d\\ua69f\\ua6f0-\\ua6f1\\ua7f8-\\ua800\\ua806\\ua80b\\ua823-\\ua827\\ua880-\\ua881\\ua8b4-\\ua8c4\\ua8d0-\\ua8d9\\ua8f3-\\ua8f7\\ua900-\\ua909\\ua926-\\ua92d\\ua930-\\ua945\\ua980-\\ua983\\ua9b3-\\ua9c0\\uaa00-\\uaa27\\uaa40-\\uaa41\\uaa4c-\\uaa4d\\uaa50-\\uaa59\\uaa7b\\uaae0-\\uaae9\\uaaf2-\\uaaf3\\uabc0-\\uabe1\\uabec\\uabed\\uabf0-\\uabf9\\ufb20-\\ufb28\\ufe00-\\ufe0f\\ufe20-\\ufe26\\ufe33\\ufe34\\ufe4d-\\ufe4f\\uff10-\\uff19\\uff3f])*","g"),exports.identifierStart=new RegExp(identifierStart),exports.identifierMatch=new RegExp("(?:\\\\u[0-9a-fA-F]{4}|\\\\u\\{[0-9a-fA-F]+\\}|[\\x24\\x30-\\x39\\x41-\\x5a\\x5f\\x61-\\x7a"+nonASCIIidentifierStartChars+nonASCIIidentifierChars+"])+"),exports.newline=/[\n\r\u2028\u2029]/,exports.lineBreak=new RegExp("\r\n|"+exports.newline.source),exports.allLineBreaks=new RegExp(exports.lineBreak.source,"g")},function(module,__unused_webpack_exports,__webpack_require__){var BaseOptions=__webpack_require__(6).Options,validPositionValues=["before-newline","after-newline","preserve-newline"];function Options(options){BaseOptions.call(this,options,"js");var raw_brace_style=this.raw_options.brace_style||null;"expand-strict"===raw_brace_style?this.raw_options.brace_style="expand":"collapse-preserve-inline"===raw_brace_style?this.raw_options.brace_style="collapse,preserve-inline":void 0!==this.raw_options.braces_on_own_line&&(this.raw_options.brace_style=this.raw_options.braces_on_own_line?"expand":"collapse");var brace_style_split=this._get_selection_list("brace_style",["collapse","expand","end-expand","none","preserve-inline"]);this.brace_preserve_inline=!1,this.brace_style="collapse";for(var bs=0;bs>> === !== &&= ??= ||= << && >= ** != == <= >> || ?? |> < / - + > : & % ? ^ | *".split(" "),punct=">>>= ... >>= <<= === >>> !== **= &&= ??= ||= => ^= :: /= << <= == && -= >= >> != -- += ** || ?? ++ %= &= *= |= |> = ! ? > < : / ^ - + * & % ~ |";punct=(punct="\\?\\.(?!\\d) "+(punct=punct.replace(/[-[\]{}()*+?.,\\^$|#]/g,"\\$&"))).replace(/ /g,"|");var in_html_comment,punct_pattern=new RegExp(punct),line_starters="continue,try,throw,return,var,let,const,if,switch,case,default,for,while,break,function,import,export".split(","),reserved_words=line_starters.concat(["do","in","of","else","get","set","new","catch","finally","typeof","yield","async","await","from","as","class","extends"]),reserved_word_pattern=new RegExp("^(?:"+reserved_words.join("|")+")$"),Tokenizer=function(input_string,options){BaseTokenizer.call(this,input_string,options),this._patterns.whitespace=this._patterns.whitespace.matching(/\u00A0\u1680\u180e\u2000-\u200a\u202f\u205f\u3000\ufeff/.source,/\u2028\u2029/.source);var pattern_reader=new Pattern(this._input),templatable=new TemplatablePattern(this._input).read_options(this._options);this.__patterns={template:templatable,identifier:templatable.starting_with(acorn.identifier).matching(acorn.identifierMatch),number:pattern_reader.matching(number_pattern),punct:pattern_reader.matching(punct_pattern),comment:pattern_reader.starting_with(/\/\//).until(/[\n\r\u2028\u2029]/),block_comment:pattern_reader.starting_with(/\/\*/).until_after(/\*\//),html_comment_start:pattern_reader.matching(//),include:pattern_reader.starting_with(/#include/).until_after(acorn.lineBreak),shebang:pattern_reader.starting_with(/#!/).until_after(acorn.lineBreak),xml:pattern_reader.matching(/[\s\S]*?<(\/?)([-a-zA-Z:0-9_.]+|{[^}]+?}|!\[CDATA\[[^\]]*?\]\]|)(\s*{[^}]+?}|\s+[-a-zA-Z:0-9_.]+|\s+[-a-zA-Z:0-9_.]+\s*=\s*('[^']*'|"[^"]*"|{([^{}]|{[^}]+?})+?}))*\s*(\/?)\s*>/),single_quote:templatable.until(/['\\\n\r\u2028\u2029]/),double_quote:templatable.until(/["\\\n\r\u2028\u2029]/),template_text:templatable.until(/[`\\$]/),template_expression:templatable.until(/[`}\\]/)}};(Tokenizer.prototype=new BaseTokenizer)._is_comment=function(current_token){return current_token.type===TOKEN.COMMENT||current_token.type===TOKEN.BLOCK_COMMENT||current_token.type===TOKEN.UNKNOWN},Tokenizer.prototype._is_opening=function(current_token){return current_token.type===TOKEN.START_BLOCK||current_token.type===TOKEN.START_EXPR},Tokenizer.prototype._is_closing=function(current_token,open_token){return(current_token.type===TOKEN.END_BLOCK||current_token.type===TOKEN.END_EXPR)&&open_token&&("]"===current_token.text&&"["===open_token.text||")"===current_token.text&&"("===open_token.text||"}"===current_token.text&&"{"===open_token.text)},Tokenizer.prototype._reset=function(){in_html_comment=!1},Tokenizer.prototype._get_next_token=function(previous_token,open_token){var token=null;this._readWhitespace();var c=this._input.peek();return null===c?this._create_token(TOKEN.EOF,""):token=(token=(token=(token=(token=(token=(token=(token=(token=(token=token||this._read_non_javascript(c))||this._read_string(c))||this._read_pair(c,this._input.peek(1)))||this._read_word(previous_token))||this._read_singles(c))||this._read_comment(c))||this._read_regexp(c,previous_token))||this._read_xml(c,previous_token))||this._read_punctuation())||this._create_token(TOKEN.UNKNOWN,this._input.next())},Tokenizer.prototype._read_word=function(previous_token){var resulting_string;return""!==(resulting_string=this.__patterns.identifier.read())?(resulting_string=resulting_string.replace(acorn.allLineBreaks,"\n"),previous_token.type!==TOKEN.DOT&&(previous_token.type!==TOKEN.RESERVED||"set"!==previous_token.text&&"get"!==previous_token.text)&&reserved_word_pattern.test(resulting_string)?"in"!==resulting_string&&"of"!==resulting_string||previous_token.type!==TOKEN.WORD&&previous_token.type!==TOKEN.STRING?this._create_token(TOKEN.RESERVED,resulting_string):this._create_token(TOKEN.OPERATOR,resulting_string):this._create_token(TOKEN.WORD,resulting_string)):""!==(resulting_string=this.__patterns.number.read())?this._create_token(TOKEN.WORD,resulting_string):void 0},Tokenizer.prototype._read_singles=function(c){var token=null;return"("===c||"["===c?token=this._create_token(TOKEN.START_EXPR,c):")"===c||"]"===c?token=this._create_token(TOKEN.END_EXPR,c):"{"===c?token=this._create_token(TOKEN.START_BLOCK,c):"}"===c?token=this._create_token(TOKEN.END_BLOCK,c):";"===c?token=this._create_token(TOKEN.SEMICOLON,c):"."===c&&dot_pattern.test(this._input.peek(1))?token=this._create_token(TOKEN.DOT,c):","===c&&(token=this._create_token(TOKEN.COMMA,c)),token&&this._input.next(),token},Tokenizer.prototype._read_pair=function(c,d){var token=null;return"#"===c&&"{"===d&&(token=this._create_token(TOKEN.START_BLOCK,c+d)),token&&(this._input.next(),this._input.next()),token},Tokenizer.prototype._read_punctuation=function(){var resulting_string=this.__patterns.punct.read();if(""!==resulting_string)return"="===resulting_string?this._create_token(TOKEN.EQUALS,resulting_string):"?."===resulting_string?this._create_token(TOKEN.DOT,resulting_string):this._create_token(TOKEN.OPERATOR,resulting_string)},Tokenizer.prototype._read_non_javascript=function(c){var resulting_string="";if("#"===c){if(this._is_first_token()&&(resulting_string=this.__patterns.shebang.read()))return this._create_token(TOKEN.UNKNOWN,resulting_string.trim()+"\n");if(resulting_string=this.__patterns.include.read())return this._create_token(TOKEN.UNKNOWN,resulting_string.trim()+"\n");c=this._input.next();var sharp="#";if(this._input.hasNext()&&this._input.testChar(digit)){do{sharp+=c=this._input.next()}while(this._input.hasNext()&&"#"!==c&&"="!==c);return"#"===c||("["===this._input.peek()&&"]"===this._input.peek(1)?(sharp+="[]",this._input.next(),this._input.next()):"{"===this._input.peek()&&"}"===this._input.peek(1)&&(sharp+="{}",this._input.next(),this._input.next())),this._create_token(TOKEN.WORD,sharp)}this._input.back()}else if("<"===c&&this._is_first_token()){if(resulting_string=this.__patterns.html_comment_start.read()){for(;this._input.hasNext()&&!this._input.testChar(acorn.newline);)resulting_string+=this._input.next();return in_html_comment=!0,this._create_token(TOKEN.COMMENT,resulting_string)}}else if(in_html_comment&&"-"===c&&(resulting_string=this.__patterns.html_comment_end.read()))return in_html_comment=!1,this._create_token(TOKEN.COMMENT,resulting_string);return null},Tokenizer.prototype._read_comment=function(c){var token=null;if("/"===c){var comment="";if("*"===this._input.peek(1)){comment=this.__patterns.block_comment.read();var directives=directives_core.get_directives(comment);directives&&"start"===directives.ignore&&(comment+=directives_core.readIgnored(this._input)),comment=comment.replace(acorn.allLineBreaks,"\n"),(token=this._create_token(TOKEN.BLOCK_COMMENT,comment)).directives=directives}else"/"===this._input.peek(1)&&(comment=this.__patterns.comment.read(),token=this._create_token(TOKEN.COMMENT,comment))}return token},Tokenizer.prototype._read_string=function(c){if("`"===c||"'"===c||'"'===c){var resulting_string=this._input.next();return this.has_char_escapes=!1,resulting_string+="`"===c?this._read_string_recursive("`",!0,"${"):this._read_string_recursive(c),this.has_char_escapes&&this._options.unescape_strings&&(resulting_string=function(s){for(var out="",escaped=0,input_scan=new InputScanner(s),matched=null;input_scan.hasNext();)if((matched=input_scan.match(/([\s]|[^\\]|\\\\)+/g))&&(out+=matched[0]),"\\"===input_scan.peek()){if(input_scan.next(),"x"===input_scan.peek())matched=input_scan.match(/x([0-9A-Fa-f]{2})/g);else{if("u"!==input_scan.peek()){out+="\\",input_scan.hasNext()&&(out+=input_scan.next());continue}(matched=input_scan.match(/u([0-9A-Fa-f]{4})/g))||(matched=input_scan.match(/u\{([0-9A-Fa-f]+)\}/g))}if(!matched)return s;if((escaped=parseInt(matched[1],16))>126&&escaped<=255&&0===matched[0].indexOf("x"))return s;out+=escaped>=0&&escaped<32||escaped>1114111?"\\"+matched[0]:34===escaped||39===escaped||92===escaped?"\\"+String.fromCharCode(escaped):String.fromCharCode(escaped)}return out}(resulting_string)),this._input.peek()===c&&(resulting_string+=this._input.next()),resulting_string=resulting_string.replace(acorn.allLineBreaks,"\n"),this._create_token(TOKEN.STRING,resulting_string)}return null},Tokenizer.prototype._allow_regexp_or_xml=function(previous_token){return previous_token.type===TOKEN.RESERVED&&in_array(previous_token.text,["return","case","throw","else","do","typeof","yield"])||previous_token.type===TOKEN.END_EXPR&&")"===previous_token.text&&previous_token.opened.previous.type===TOKEN.RESERVED&&in_array(previous_token.opened.previous.text,["if","while","for"])||in_array(previous_token.type,[TOKEN.COMMENT,TOKEN.START_EXPR,TOKEN.START_BLOCK,TOKEN.START,TOKEN.END_BLOCK,TOKEN.OPERATOR,TOKEN.EQUALS,TOKEN.EOF,TOKEN.SEMICOLON,TOKEN.COMMA])},Tokenizer.prototype._read_regexp=function(c,previous_token){if("/"===c&&this._allow_regexp_or_xml(previous_token)){for(var resulting_string=this._input.next(),esc=!1,in_char_class=!1;this._input.hasNext()&&(esc||in_char_class||this._input.peek()!==c)&&!this._input.testChar(acorn.newline);)resulting_string+=this._input.peek(),esc?esc=!1:(esc="\\"===this._input.peek(),"["===this._input.peek()?in_char_class=!0:"]"===this._input.peek()&&(in_char_class=!1)),this._input.next();return this._input.peek()===c&&(resulting_string+=this._input.next(),resulting_string+=this._input.read(acorn.identifier)),this._create_token(TOKEN.STRING,resulting_string)}return null},Tokenizer.prototype._read_xml=function(c,previous_token){if(this._options.e4x&&"<"===c&&this._allow_regexp_or_xml(previous_token)){var xmlStr="",match=this.__patterns.xml.read_match();if(match){for(var rootTag=match[2].replace(/^{\s+/,"{").replace(/\s+}$/,"}"),isCurlyRoot=0===rootTag.indexOf("{"),depth=0;match;){var isEndTag=!!match[1],tagName=match[2];if(!(match[match.length-1]||"![CDATA["===tagName.slice(0,8))&&(tagName===rootTag||isCurlyRoot&&tagName.replace(/^{\s+/,"{").replace(/\s+}$/,"}"))&&(isEndTag?--depth:++depth),xmlStr+=match[0],depth<=0)break;match=this.__patterns.xml.read_match()}return match||(xmlStr+=this._input.match(/[\s\S]*/g)[0]),xmlStr=xmlStr.replace(acorn.allLineBreaks,"\n"),this._create_token(TOKEN.STRING,xmlStr)}}return null},Tokenizer.prototype._read_string_recursive=function(delimiter,allow_unescaped_newlines,start_sub){var current_char,pattern;"'"===delimiter?pattern=this.__patterns.single_quote:'"'===delimiter?pattern=this.__patterns.double_quote:"`"===delimiter?pattern=this.__patterns.template_text:"}"===delimiter&&(pattern=this.__patterns.template_expression);for(var resulting_string=pattern.read(),next="";this._input.hasNext();){if((next=this._input.next())===delimiter||!allow_unescaped_newlines&&acorn.newline.test(next)){this._input.back();break}"\\"===next&&this._input.hasNext()?("x"===(current_char=this._input.peek())||"u"===current_char?this.has_char_escapes=!0:"\r"===current_char&&"\n"===this._input.peek(1)&&this._input.next(),next+=this._input.next()):start_sub&&("${"===start_sub&&"$"===next&&"{"===this._input.peek()&&(next+=this._input.next()),start_sub===next&&(next+="`"===delimiter?this._read_string_recursive("}",allow_unescaped_newlines,"`"):this._read_string_recursive("`",allow_unescaped_newlines,"${"),this._input.hasNext()&&(next+=this._input.next()))),resulting_string+=next+=pattern.read()}return resulting_string},module.exports.Tokenizer=Tokenizer,module.exports.TOKEN=TOKEN,module.exports.positionable_operators=positionable_operators.slice(),module.exports.line_starters=line_starters.slice()},function(module){var regexp_has_sticky=RegExp.prototype.hasOwnProperty("sticky");function InputScanner(input_string){this.__input=input_string||"",this.__input_length=this.__input.length,this.__position=0}InputScanner.prototype.restart=function(){this.__position=0},InputScanner.prototype.back=function(){this.__position>0&&(this.__position-=1)},InputScanner.prototype.hasNext=function(){return this.__position=0&&index=0&&index=testVal.length&&this.__input.substring(start-testVal.length,start).toLowerCase()===testVal},module.exports.InputScanner=InputScanner},function(module,__unused_webpack_exports,__webpack_require__){var InputScanner=__webpack_require__(8).InputScanner,Token=__webpack_require__(3).Token,TokenStream=__webpack_require__(10).TokenStream,WhitespacePattern=__webpack_require__(11).WhitespacePattern,TOKEN={START:"TK_START",RAW:"TK_RAW",EOF:"TK_EOF"},Tokenizer=function(input_string,options){this._input=new InputScanner(input_string),this._options=options||{},this.__tokens=null,this._patterns={},this._patterns.whitespace=new WhitespacePattern(this._input)};Tokenizer.prototype.tokenize=function(){var current;this._input.restart(),this.__tokens=new TokenStream,this._reset();for(var previous=new Token(TOKEN.START,""),open_token=null,open_stack=[],comments=new TokenStream;previous.type!==TOKEN.EOF;){for(current=this._get_next_token(previous,open_token);this._is_comment(current);)comments.add(current),current=this._get_next_token(previous,open_token);comments.isEmpty()||(current.comments_before=comments,comments=new TokenStream),current.parent=open_token,this._is_opening(current)?(open_stack.push(open_token),open_token=current):open_token&&this._is_closing(current,open_token)&&(current.opened=open_token,open_token.closed=current,open_token=open_stack.pop(),current.parent=open_token),current.previous=previous,previous.next=current,this.__tokens.add(current),previous=current}return this.__tokens},Tokenizer.prototype._is_first_token=function(){return this.__tokens.isEmpty()},Tokenizer.prototype._reset=function(){},Tokenizer.prototype._get_next_token=function(previous_token,open_token){this._readWhitespace();var resulting_string=this._input.read(/.+/g);return resulting_string?this._create_token(TOKEN.RAW,resulting_string):this._create_token(TOKEN.EOF,"")},Tokenizer.prototype._is_comment=function(current_token){return!1},Tokenizer.prototype._is_opening=function(current_token){return!1},Tokenizer.prototype._is_closing=function(current_token,open_token){return!1},Tokenizer.prototype._create_token=function(type,text){return new Token(type,text,this._patterns.whitespace.newline_count,this._patterns.whitespace.whitespace_before_token)},Tokenizer.prototype._readWhitespace=function(){return this._patterns.whitespace.read()},module.exports.Tokenizer=Tokenizer,module.exports.TOKEN=TOKEN},function(module){function TokenStream(parent_token){this.__tokens=[],this.__tokens_length=this.__tokens.length,this.__position=0,this.__parent_token=parent_token}TokenStream.prototype.restart=function(){this.__position=0},TokenStream.prototype.isEmpty=function(){return 0===this.__tokens_length},TokenStream.prototype.hasNext=function(){return this.__position=0&&index/),erb:pattern.starting_with(/<%[^%]/).until_after(/[^%]%>/),django:pattern.starting_with(/{%/).until_after(/%}/),django_value:pattern.starting_with(/{{/).until_after(/}}/),django_comment:pattern.starting_with(/{#/).until_after(/#}/),smarty:pattern.starting_with(/{(?=[^}{\s\n])/).until_after(/[^\s\n]}/),smarty_comment:pattern.starting_with(/{\*/).until_after(/\*}/),smarty_literal:pattern.starting_with(/{literal}/).until_after(/{\/literal}/)}}TemplatablePattern.prototype=new Pattern,TemplatablePattern.prototype._create=function(){return new TemplatablePattern(this._input,this)},TemplatablePattern.prototype._update=function(){this.__set_templated_pattern()},TemplatablePattern.prototype.disable=function(language){var result=this._create();return result._disabled[language]=!0,result._update(),result},TemplatablePattern.prototype.read_options=function(options){var result=this._create();for(var language in template_names)result._disabled[language]=-1===options.templating.indexOf(language);return result._update(),result},TemplatablePattern.prototype.exclude=function(language){var result=this._create();return result._excluded[language]=!0,result._update(),result},TemplatablePattern.prototype.read=function(){var result="";result=this._match_pattern?this._input.read(this._starting_pattern):this._input.read(this._starting_pattern,this.__template_pattern);for(var next=this._read_template();next;)this._match_pattern?next+=this._input.read(this._match_pattern):next+=this._input.readUntil(this.__template_pattern),result+=next,next=this._read_template();return this._until_after&&(result+=this._input.readUntilAfter(this._until_pattern)),result},TemplatablePattern.prototype.__set_templated_pattern=function(){var items=[];this._disabled.php||items.push(this.__patterns.php._starting_pattern.source),this._disabled.handlebars||items.push(this.__patterns.handlebars._starting_pattern.source),this._disabled.erb||items.push(this.__patterns.erb._starting_pattern.source),this._disabled.django||(items.push(this.__patterns.django._starting_pattern.source),items.push(this.__patterns.django_value._starting_pattern.source),items.push(this.__patterns.django_comment._starting_pattern.source)),this._disabled.smarty||items.push(this.__patterns.smarty._starting_pattern.source),this._until_pattern&&items.push(this._until_pattern.source),this.__template_pattern=this._input.get_regexp("(?:"+items.join("|")+")")},TemplatablePattern.prototype._read_template=function(){var resulting_string="",c=this._input.peek();if("<"===c){var peek1=this._input.peek(1);this._disabled.php||this._excluded.php||"?"!==peek1||(resulting_string=resulting_string||this.__patterns.php.read()),this._disabled.erb||this._excluded.erb||"%"!==peek1||(resulting_string=resulting_string||this.__patterns.erb.read())}else"{"===c&&(this._disabled.handlebars||this._excluded.handlebars||(resulting_string=(resulting_string=(resulting_string=resulting_string||this.__patterns.handlebars_comment.read())||this.__patterns.handlebars_unescaped.read())||this.__patterns.handlebars.read()),this._disabled.django||(this._excluded.django||this._excluded.handlebars||(resulting_string=resulting_string||this.__patterns.django_value.read()),this._excluded.django||(resulting_string=(resulting_string=resulting_string||this.__patterns.django_comment.read())||this.__patterns.django.read())),this._disabled.smarty||this._disabled.django&&this._disabled.handlebars&&(resulting_string=(resulting_string=(resulting_string=resulting_string||this.__patterns.smarty_comment.read())||this.__patterns.smarty_literal.read())||this.__patterns.smarty.read()));return resulting_string},module.exports.TemplatablePattern=TemplatablePattern}],__webpack_module_cache__={},__webpack_exports__=function __webpack_require__(moduleId){var cachedModule=__webpack_module_cache__[moduleId];if(void 0!==cachedModule)return cachedModule.exports;var module=__webpack_module_cache__[moduleId]={exports:{}};return __webpack_modules__[moduleId](module,module.exports,__webpack_require__),module.exports}(0);var js_beautify=__webpack_exports__;"function"==typeof define&&define.amd?define("tiny_html/beautify/beautify",[],(function(){return{js_beautify:js_beautify}})):"undefined"!=typeof exports?exports.js_beautify=js_beautify:"undefined"!=typeof window?window.js_beautify=js_beautify:"undefined"!=typeof global&&(global.js_beautify=js_beautify)}();
+!function(){var __webpack_modules__,__webpack_module_cache__,__webpack_exports__;__webpack_modules__=[function(module,__unused_webpack_exports,__webpack_require__){var Beautifier=__webpack_require__(1).Beautifier,Options=__webpack_require__(5).Options;module.exports=function(js_source_text,options){return new Beautifier(js_source_text,options).beautify()},module.exports.defaultOptions=function(){return new Options}},function(module,__unused_webpack_exports,__webpack_require__){var Output=__webpack_require__(2).Output,Token=__webpack_require__(3).Token,acorn=__webpack_require__(4),Options=__webpack_require__(5).Options,Tokenizer=__webpack_require__(7).Tokenizer,line_starters=__webpack_require__(7).line_starters,positionable_operators=__webpack_require__(7).positionable_operators,TOKEN=__webpack_require__(7).TOKEN;function in_array(what,arr){return-1!==arr.indexOf(what)}function reserved_word(token,word){return token&&token.type===TOKEN.RESERVED&&token.text===word}function reserved_array(token,words){return token&&token.type===TOKEN.RESERVED&&in_array(token.text,words)}var special_words=["case","return","do","if","throw","else","await","break","continue","async"],OPERATOR_POSITION=function(list){for(var result={},x=0;xnext_indent_level&&(next_indent_level=flags_base.line_indent_level)),{mode:mode,parent:flags_base,last_token:flags_base?flags_base.last_token:new Token(TOKEN.START_BLOCK,""),last_word:flags_base?flags_base.last_word:"",declaration_statement:!1,declaration_assignment:!1,multiline_frame:!1,inline_frame:!1,if_block:!1,else_block:!1,class_start_block:!1,do_block:!1,do_while:!1,import_block:!1,in_case_statement:!1,in_case:!1,case_body:!1,case_block:!1,indentation_level:next_indent_level,alignment:0,line_indent_level:flags_base?flags_base.line_indent_level:next_indent_level,start_line_index:this._output.get_line_number(),ternary_depth:0}},Beautifier.prototype._reset=function(source_text){var baseIndentString=source_text.match(/^[\t ]*/)[0];this._last_last_text="",this._output=new Output(this._options,baseIndentString),this._output.raw=this._options.test_output_raw,this._flag_store=[],this.set_mode(MODE_BlockStatement);var tokenizer=new Tokenizer(source_text,this._options);return this._tokens=tokenizer.tokenize(),source_text},Beautifier.prototype.beautify=function(){if(this._options.disabled)return this._source_text;var source_text=this._reset(this._source_text),eol=this._options.eol;"auto"===this._options.eol&&(eol="\n",source_text&&acorn.lineBreak.test(source_text||"")&&(eol=source_text.match(acorn.lineBreak)[0]));for(var current_token=this._tokens.next();current_token;)this.handle_token(current_token),this._last_last_text=this._flags.last_token.text,this._flags.last_token=current_token,current_token=this._tokens.next();return this._output.get_code(eol)},Beautifier.prototype.handle_token=function(current_token,preserve_statement_flags){current_token.type===TOKEN.START_EXPR?this.handle_start_expr(current_token):current_token.type===TOKEN.END_EXPR?this.handle_end_expr(current_token):current_token.type===TOKEN.START_BLOCK?this.handle_start_block(current_token):current_token.type===TOKEN.END_BLOCK?this.handle_end_block(current_token):current_token.type===TOKEN.WORD||current_token.type===TOKEN.RESERVED?this.handle_word(current_token):current_token.type===TOKEN.SEMICOLON?this.handle_semicolon(current_token):current_token.type===TOKEN.STRING?this.handle_string(current_token):current_token.type===TOKEN.EQUALS?this.handle_equals(current_token):current_token.type===TOKEN.OPERATOR?this.handle_operator(current_token):current_token.type===TOKEN.COMMA?this.handle_comma(current_token):current_token.type===TOKEN.BLOCK_COMMENT?this.handle_block_comment(current_token,preserve_statement_flags):current_token.type===TOKEN.COMMENT?this.handle_comment(current_token,preserve_statement_flags):current_token.type===TOKEN.DOT?this.handle_dot(current_token):current_token.type===TOKEN.EOF?this.handle_eof(current_token):(current_token.type,TOKEN.UNKNOWN,this.handle_unknown(current_token,preserve_statement_flags))},Beautifier.prototype.handle_whitespace_and_comments=function(current_token,preserve_statement_flags){var newlines=current_token.newlines,keep_whitespace=this._options.keep_array_indentation&&is_array(this._flags.mode);if(current_token.comments_before)for(var comment_token=current_token.comments_before.next();comment_token;)this.handle_whitespace_and_comments(comment_token,preserve_statement_flags),this.handle_token(comment_token,preserve_statement_flags),comment_token=current_token.comments_before.next();if(keep_whitespace)for(var i=0;i0,preserve_statement_flags);else if(this._options.max_preserve_newlines&&newlines>this._options.max_preserve_newlines&&(newlines=this._options.max_preserve_newlines),this._options.preserve_newlines&&newlines>1){this.print_newline(!1,preserve_statement_flags);for(var j=1;j0&&(!this._flags.parent||this._flags.indentation_level>this._flags.parent.indentation_level)&&(this._flags.indentation_level-=1,this._output.set_indent(this._flags.indentation_level,this._flags.alignment))},Beautifier.prototype.set_mode=function(mode){this._flags?(this._flag_store.push(this._flags),this._previous_flags=this._flags):this._previous_flags=this.create_flags(null,mode),this._flags=this.create_flags(this._previous_flags,mode),this._output.set_indent(this._flags.indentation_level,this._flags.alignment)},Beautifier.prototype.restore_mode=function(){this._flag_store.length>0&&(this._previous_flags=this._flags,this._flags=this._flag_store.pop(),this._previous_flags.mode===MODE_Statement&&remove_redundant_indentation(this._output,this._previous_flags),this._output.set_indent(this._flags.indentation_level,this._flags.alignment))},Beautifier.prototype.start_of_object_property=function(){return this._flags.parent.mode===MODE_ObjectLiteral&&this._flags.mode===MODE_Statement&&(":"===this._flags.last_token.text&&0===this._flags.ternary_depth||reserved_array(this._flags.last_token,["get","set"]))},Beautifier.prototype.start_of_statement=function(current_token){var start=!1;return!!(start=(start=(start=(start=(start=(start=(start=start||reserved_array(this._flags.last_token,["var","let","const"])&¤t_token.type===TOKEN.WORD)||reserved_word(this._flags.last_token,"do"))||!(this._flags.parent.mode===MODE_ObjectLiteral&&this._flags.mode===MODE_Statement)&&reserved_array(this._flags.last_token,newline_restricted_tokens)&&!current_token.newlines)||reserved_word(this._flags.last_token,"else")&&!(reserved_word(current_token,"if")&&!current_token.comments_before))||this._flags.last_token.type===TOKEN.END_EXPR&&(this._previous_flags.mode===MODE_ForInitializer||this._previous_flags.mode===MODE_Conditional))||this._flags.last_token.type===TOKEN.WORD&&this._flags.mode===MODE_BlockStatement&&!this._flags.in_case&&!("--"===current_token.text||"++"===current_token.text)&&"function"!==this._last_last_text&¤t_token.type!==TOKEN.WORD&¤t_token.type!==TOKEN.RESERVED)||this._flags.mode===MODE_ObjectLiteral&&(":"===this._flags.last_token.text&&0===this._flags.ternary_depth||reserved_array(this._flags.last_token,["get","set"])))&&(this.set_mode(MODE_Statement),this.indent(),this.handle_whitespace_and_comments(current_token,!0),this.start_of_object_property()||this.allow_wrap_or_preserved_newline(current_token,reserved_array(current_token,["do","for","if","while"])),!0)},Beautifier.prototype.handle_start_expr=function(current_token){this.start_of_statement(current_token)||this.handle_whitespace_and_comments(current_token);var next_mode=MODE_Expression;if("["===current_token.text){if(this._flags.last_token.type===TOKEN.WORD||")"===this._flags.last_token.text)return reserved_array(this._flags.last_token,line_starters)&&(this._output.space_before_token=!0),this.print_token(current_token),this.set_mode(next_mode),this.indent(),void(this._options.space_in_paren&&(this._output.space_before_token=!0));next_mode=MODE_ArrayLiteral,is_array(this._flags.mode)&&("["!==this._flags.last_token.text&&(","!==this._flags.last_token.text||"]"!==this._last_last_text&&"}"!==this._last_last_text)||this._options.keep_array_indentation||this.print_newline()),in_array(this._flags.last_token.type,[TOKEN.START_EXPR,TOKEN.END_EXPR,TOKEN.WORD,TOKEN.OPERATOR,TOKEN.DOT])||(this._output.space_before_token=!0)}else{if(this._flags.last_token.type===TOKEN.RESERVED)"for"===this._flags.last_token.text?(this._output.space_before_token=this._options.space_before_conditional,next_mode=MODE_ForInitializer):in_array(this._flags.last_token.text,["if","while","switch"])?(this._output.space_before_token=this._options.space_before_conditional,next_mode=MODE_Conditional):in_array(this._flags.last_word,["await","async"])?this._output.space_before_token=!0:"import"===this._flags.last_token.text&&""===current_token.whitespace_before?this._output.space_before_token=!1:(in_array(this._flags.last_token.text,line_starters)||"catch"===this._flags.last_token.text)&&(this._output.space_before_token=!0);else if(this._flags.last_token.type===TOKEN.EQUALS||this._flags.last_token.type===TOKEN.OPERATOR)this.start_of_object_property()||this.allow_wrap_or_preserved_newline(current_token);else if(this._flags.last_token.type===TOKEN.WORD){this._output.space_before_token=!1;var peek_back_two=this._tokens.peek(-3);if(this._options.space_after_named_function&&peek_back_two){var peek_back_three=this._tokens.peek(-4);reserved_array(peek_back_two,["async","function"])||"*"===peek_back_two.text&&reserved_array(peek_back_three,["async","function"])?this._output.space_before_token=!0:this._flags.mode===MODE_ObjectLiteral?"{"!==peek_back_two.text&&","!==peek_back_two.text&&("*"!==peek_back_two.text||"{"!==peek_back_three.text&&","!==peek_back_three.text)||(this._output.space_before_token=!0):this._flags.parent&&this._flags.parent.class_start_block&&(this._output.space_before_token=!0)}}else this.allow_wrap_or_preserved_newline(current_token);(this._flags.last_token.type===TOKEN.RESERVED&&("function"===this._flags.last_word||"typeof"===this._flags.last_word)||"*"===this._flags.last_token.text&&(in_array(this._last_last_text,["function","yield"])||this._flags.mode===MODE_ObjectLiteral&&in_array(this._last_last_text,["{",","])))&&(this._output.space_before_token=this._options.space_after_anon_function)}";"===this._flags.last_token.text||this._flags.last_token.type===TOKEN.START_BLOCK?this.print_newline():this._flags.last_token.type!==TOKEN.END_EXPR&&this._flags.last_token.type!==TOKEN.START_EXPR&&this._flags.last_token.type!==TOKEN.END_BLOCK&&"."!==this._flags.last_token.text&&this._flags.last_token.type!==TOKEN.COMMA||this.allow_wrap_or_preserved_newline(current_token,current_token.newlines),this.print_token(current_token),this.set_mode(next_mode),this._options.space_in_paren&&(this._output.space_before_token=!0),this.indent()},Beautifier.prototype.handle_end_expr=function(current_token){for(;this._flags.mode===MODE_Statement;)this.restore_mode();this.handle_whitespace_and_comments(current_token),this._flags.multiline_frame&&this.allow_wrap_or_preserved_newline(current_token,"]"===current_token.text&&is_array(this._flags.mode)&&!this._options.keep_array_indentation),this._options.space_in_paren&&(this._flags.last_token.type!==TOKEN.START_EXPR||this._options.space_in_empty_paren?this._output.space_before_token=!0:(this._output.trim(),this._output.space_before_token=!1)),this.deindent(),this.print_token(current_token),this.restore_mode(),remove_redundant_indentation(this._output,this._previous_flags),this._flags.do_while&&this._previous_flags.mode===MODE_Conditional&&(this._previous_flags.mode=MODE_Expression,this._flags.do_block=!1,this._flags.do_while=!1)},Beautifier.prototype.handle_start_block=function(current_token){this.handle_whitespace_and_comments(current_token);var next_token=this._tokens.peek(),second_token=this._tokens.peek(1);"switch"===this._flags.last_word&&this._flags.last_token.type===TOKEN.END_EXPR?(this.set_mode(MODE_BlockStatement),this._flags.in_case_statement=!0):this._flags.case_body?this.set_mode(MODE_BlockStatement):second_token&&(in_array(second_token.text,[":",","])&&in_array(next_token.type,[TOKEN.STRING,TOKEN.WORD,TOKEN.RESERVED])||in_array(next_token.text,["get","set","..."])&&in_array(second_token.type,[TOKEN.WORD,TOKEN.RESERVED]))?in_array(this._last_last_text,["class","interface"])&&!in_array(second_token.text,[":",","])?this.set_mode(MODE_BlockStatement):this.set_mode(MODE_ObjectLiteral):this._flags.last_token.type===TOKEN.OPERATOR&&"=>"===this._flags.last_token.text?this.set_mode(MODE_BlockStatement):in_array(this._flags.last_token.type,[TOKEN.EQUALS,TOKEN.START_EXPR,TOKEN.COMMA,TOKEN.OPERATOR])||reserved_array(this._flags.last_token,["return","throw","import","default"])?this.set_mode(MODE_ObjectLiteral):this.set_mode(MODE_BlockStatement),this._flags.last_token&&reserved_array(this._flags.last_token.previous,["class","extends"])&&(this._flags.class_start_block=!0);var empty_braces=!next_token.comments_before&&"}"===next_token.text,empty_anonymous_function=empty_braces&&"function"===this._flags.last_word&&this._flags.last_token.type===TOKEN.END_EXPR;if(this._options.brace_preserve_inline){var index=0,check_token=null;this._flags.inline_frame=!0;do{if(index+=1,(check_token=this._tokens.peek(index-1)).newlines){this._flags.inline_frame=!1;break}}while(check_token.type!==TOKEN.EOF&&(check_token.type!==TOKEN.END_BLOCK||check_token.opened!==current_token))}("expand"===this._options.brace_style||"none"===this._options.brace_style&¤t_token.newlines)&&!this._flags.inline_frame?this._flags.last_token.type!==TOKEN.OPERATOR&&(empty_anonymous_function||this._flags.last_token.type===TOKEN.EQUALS||reserved_array(this._flags.last_token,special_words)&&"else"!==this._flags.last_token.text)?this._output.space_before_token=!0:this.print_newline(!1,!0):(!is_array(this._previous_flags.mode)||this._flags.last_token.type!==TOKEN.START_EXPR&&this._flags.last_token.type!==TOKEN.COMMA||((this._flags.last_token.type===TOKEN.COMMA||this._options.space_in_paren)&&(this._output.space_before_token=!0),(this._flags.last_token.type===TOKEN.COMMA||this._flags.last_token.type===TOKEN.START_EXPR&&this._flags.inline_frame)&&(this.allow_wrap_or_preserved_newline(current_token),this._previous_flags.multiline_frame=this._previous_flags.multiline_frame||this._flags.multiline_frame,this._flags.multiline_frame=!1)),this._flags.last_token.type!==TOKEN.OPERATOR&&this._flags.last_token.type!==TOKEN.START_EXPR&&(in_array(this._flags.last_token.type,[TOKEN.START_BLOCK,TOKEN.SEMICOLON])&&!this._flags.inline_frame?this.print_newline():this._output.space_before_token=!0)),this.print_token(current_token),this.indent(),empty_braces||this._options.brace_preserve_inline&&this._flags.inline_frame||this.print_newline()},Beautifier.prototype.handle_end_block=function(current_token){for(this.handle_whitespace_and_comments(current_token);this._flags.mode===MODE_Statement;)this.restore_mode();var empty_braces=this._flags.last_token.type===TOKEN.START_BLOCK;this._flags.inline_frame&&!empty_braces?this._output.space_before_token=!0:"expand"===this._options.brace_style?empty_braces||this.print_newline():empty_braces||(is_array(this._flags.mode)&&this._options.keep_array_indentation?(this._options.keep_array_indentation=!1,this.print_newline(),this._options.keep_array_indentation=!0):this.print_newline()),this.restore_mode(),this.print_token(current_token)},Beautifier.prototype.handle_word=function(current_token){if(current_token.type===TOKEN.RESERVED&&(in_array(current_token.text,["set","get"])&&this._flags.mode!==MODE_ObjectLiteral||"import"===current_token.text&&in_array(this._tokens.peek().text,["(","."])||in_array(current_token.text,["as","from"])&&!this._flags.import_block||this._flags.mode===MODE_ObjectLiteral&&":"===this._tokens.peek().text)&&(current_token.type=TOKEN.WORD),this.start_of_statement(current_token)?reserved_array(this._flags.last_token,["var","let","const"])&¤t_token.type===TOKEN.WORD&&(this._flags.declaration_statement=!0):!current_token.newlines||is_expression(this._flags.mode)||this._flags.last_token.type===TOKEN.OPERATOR&&"--"!==this._flags.last_token.text&&"++"!==this._flags.last_token.text||this._flags.last_token.type===TOKEN.EQUALS||!this._options.preserve_newlines&&reserved_array(this._flags.last_token,["var","let","const","set","get"])?this.handle_whitespace_and_comments(current_token):(this.handle_whitespace_and_comments(current_token),this.print_newline()),this._flags.do_block&&!this._flags.do_while){if(reserved_word(current_token,"while"))return this._output.space_before_token=!0,this.print_token(current_token),this._output.space_before_token=!0,void(this._flags.do_while=!0);this.print_newline(),this._flags.do_block=!1}if(this._flags.if_block)if(!this._flags.else_block&&reserved_word(current_token,"else"))this._flags.else_block=!0;else{for(;this._flags.mode===MODE_Statement;)this.restore_mode();this._flags.if_block=!1,this._flags.else_block=!1}if(this._flags.in_case_statement&&reserved_array(current_token,["case","default"]))return this.print_newline(),this._flags.case_block||!this._flags.case_body&&!this._options.jslint_happy||this.deindent(),this._flags.case_body=!1,this.print_token(current_token),void(this._flags.in_case=!0);if(this._flags.last_token.type!==TOKEN.COMMA&&this._flags.last_token.type!==TOKEN.START_EXPR&&this._flags.last_token.type!==TOKEN.EQUALS&&this._flags.last_token.type!==TOKEN.OPERATOR||this.start_of_object_property()||in_array(this._flags.last_token.text,["+","-"])&&":"===this._last_last_text&&this._flags.parent.mode===MODE_ObjectLiteral||this.allow_wrap_or_preserved_newline(current_token),reserved_word(current_token,"function"))return(in_array(this._flags.last_token.text,["}",";"])||this._output.just_added_newline()&&!in_array(this._flags.last_token.text,["(","[","{",":","=",","])&&this._flags.last_token.type!==TOKEN.OPERATOR)&&(this._output.just_added_blankline()||current_token.comments_before||(this.print_newline(),this.print_newline(!0))),this._flags.last_token.type===TOKEN.RESERVED||this._flags.last_token.type===TOKEN.WORD?reserved_array(this._flags.last_token,["get","set","new","export"])||reserved_array(this._flags.last_token,newline_restricted_tokens)||reserved_word(this._flags.last_token,"default")&&"export"===this._last_last_text||"declare"===this._flags.last_token.text?this._output.space_before_token=!0:this.print_newline():this._flags.last_token.type===TOKEN.OPERATOR||"="===this._flags.last_token.text?this._output.space_before_token=!0:(this._flags.multiline_frame||!is_expression(this._flags.mode)&&!is_array(this._flags.mode))&&this.print_newline(),this.print_token(current_token),void(this._flags.last_word=current_token.text);var prefix="NONE";this._flags.last_token.type===TOKEN.END_BLOCK?this._previous_flags.inline_frame?prefix="SPACE":reserved_array(current_token,["else","catch","finally","from"])?"expand"===this._options.brace_style||"end-expand"===this._options.brace_style||"none"===this._options.brace_style&¤t_token.newlines?prefix="NEWLINE":(prefix="SPACE",this._output.space_before_token=!0):prefix="NEWLINE":this._flags.last_token.type===TOKEN.SEMICOLON&&this._flags.mode===MODE_BlockStatement?prefix="NEWLINE":this._flags.last_token.type===TOKEN.SEMICOLON&&is_expression(this._flags.mode)?prefix="SPACE":this._flags.last_token.type===TOKEN.STRING?prefix="NEWLINE":this._flags.last_token.type===TOKEN.RESERVED||this._flags.last_token.type===TOKEN.WORD||"*"===this._flags.last_token.text&&(in_array(this._last_last_text,["function","yield"])||this._flags.mode===MODE_ObjectLiteral&&in_array(this._last_last_text,["{",","]))?prefix="SPACE":this._flags.last_token.type===TOKEN.START_BLOCK?prefix=this._flags.inline_frame?"SPACE":"NEWLINE":this._flags.last_token.type===TOKEN.END_EXPR&&(this._output.space_before_token=!0,prefix="NEWLINE"),reserved_array(current_token,line_starters)&&")"!==this._flags.last_token.text&&(prefix=this._flags.inline_frame||"else"===this._flags.last_token.text||"export"===this._flags.last_token.text?"SPACE":"NEWLINE"),reserved_array(current_token,["else","catch","finally"])?(this._flags.last_token.type!==TOKEN.END_BLOCK||this._previous_flags.mode!==MODE_BlockStatement||"expand"===this._options.brace_style||"end-expand"===this._options.brace_style||"none"===this._options.brace_style&¤t_token.newlines)&&!this._flags.inline_frame?this.print_newline():(this._output.trim(!0),"}"!==this._output.current_line.last()&&this.print_newline(),this._output.space_before_token=!0):"NEWLINE"===prefix?reserved_array(this._flags.last_token,special_words)||"declare"===this._flags.last_token.text&&reserved_array(current_token,["var","let","const"])?this._output.space_before_token=!0:this._flags.last_token.type!==TOKEN.END_EXPR?this._flags.last_token.type===TOKEN.START_EXPR&&reserved_array(current_token,["var","let","const"])||":"===this._flags.last_token.text||(reserved_word(current_token,"if")&&reserved_word(current_token.previous,"else")?this._output.space_before_token=!0:this.print_newline()):reserved_array(current_token,line_starters)&&")"!==this._flags.last_token.text&&this.print_newline():this._flags.multiline_frame&&is_array(this._flags.mode)&&","===this._flags.last_token.text&&"}"===this._last_last_text?this.print_newline():"SPACE"===prefix&&(this._output.space_before_token=!0),!current_token.previous||current_token.previous.type!==TOKEN.WORD&¤t_token.previous.type!==TOKEN.RESERVED||(this._output.space_before_token=!0),this.print_token(current_token),this._flags.last_word=current_token.text,current_token.type===TOKEN.RESERVED&&("do"===current_token.text?this._flags.do_block=!0:"if"===current_token.text?this._flags.if_block=!0:"import"===current_token.text?this._flags.import_block=!0:this._flags.import_block&&reserved_word(current_token,"from")&&(this._flags.import_block=!1))},Beautifier.prototype.handle_semicolon=function(current_token){this.start_of_statement(current_token)?this._output.space_before_token=!1:this.handle_whitespace_and_comments(current_token);for(var next_token=this._tokens.peek();!(this._flags.mode!==MODE_Statement||this._flags.if_block&&reserved_word(next_token,"else")||this._flags.do_block);)this.restore_mode();this._flags.import_block&&(this._flags.import_block=!1),this.print_token(current_token)},Beautifier.prototype.handle_string=function(current_token){(!current_token.text.startsWith("`")||0!==current_token.newlines||""!==current_token.whitespace_before||")"!==current_token.previous.text&&this._flags.last_token.type!==TOKEN.WORD)&&(this.start_of_statement(current_token)?this._output.space_before_token=!0:(this.handle_whitespace_and_comments(current_token),this._flags.last_token.type===TOKEN.RESERVED||this._flags.last_token.type===TOKEN.WORD||this._flags.inline_frame?this._output.space_before_token=!0:this._flags.last_token.type===TOKEN.COMMA||this._flags.last_token.type===TOKEN.START_EXPR||this._flags.last_token.type===TOKEN.EQUALS||this._flags.last_token.type===TOKEN.OPERATOR?this.start_of_object_property()||this.allow_wrap_or_preserved_newline(current_token):!current_token.text.startsWith("`")||this._flags.last_token.type!==TOKEN.END_EXPR||"]"!==current_token.previous.text&&")"!==current_token.previous.text||0!==current_token.newlines?this.print_newline():this._output.space_before_token=!0)),this.print_token(current_token)},Beautifier.prototype.handle_equals=function(current_token){this.start_of_statement(current_token)||this.handle_whitespace_and_comments(current_token),this._flags.declaration_statement&&(this._flags.declaration_assignment=!0),this._output.space_before_token=!0,this.print_token(current_token),this._output.space_before_token=!0},Beautifier.prototype.handle_comma=function(current_token){this.handle_whitespace_and_comments(current_token,!0),this.print_token(current_token),this._output.space_before_token=!0,this._flags.declaration_statement?(is_expression(this._flags.parent.mode)&&(this._flags.declaration_assignment=!1),this._flags.declaration_assignment?(this._flags.declaration_assignment=!1,this.print_newline(!1,!0)):this._options.comma_first&&this.allow_wrap_or_preserved_newline(current_token)):this._flags.mode===MODE_ObjectLiteral||this._flags.mode===MODE_Statement&&this._flags.parent.mode===MODE_ObjectLiteral?(this._flags.mode===MODE_Statement&&this.restore_mode(),this._flags.inline_frame||this.print_newline()):this._options.comma_first&&this.allow_wrap_or_preserved_newline(current_token)},Beautifier.prototype.handle_operator=function(current_token){var isGeneratorAsterisk="*"===current_token.text&&(reserved_array(this._flags.last_token,["function","yield"])||in_array(this._flags.last_token.type,[TOKEN.START_BLOCK,TOKEN.COMMA,TOKEN.END_BLOCK,TOKEN.SEMICOLON])),isUnary=in_array(current_token.text,["-","+"])&&(in_array(this._flags.last_token.type,[TOKEN.START_BLOCK,TOKEN.START_EXPR,TOKEN.EQUALS,TOKEN.OPERATOR])||in_array(this._flags.last_token.text,line_starters)||","===this._flags.last_token.text);if(this.start_of_statement(current_token));else{var preserve_statement_flags=!isGeneratorAsterisk;this.handle_whitespace_and_comments(current_token,preserve_statement_flags)}if("*"!==current_token.text||this._flags.last_token.type!==TOKEN.DOT)if("::"!==current_token.text)if(in_array(current_token.text,["-","+"])&&this.start_of_object_property())this.print_token(current_token);else{if(this._flags.last_token.type===TOKEN.OPERATOR&&in_array(this._options.operator_position,OPERATOR_POSITION_BEFORE_OR_PRESERVE)&&this.allow_wrap_or_preserved_newline(current_token),":"===current_token.text&&this._flags.in_case)return this.print_token(current_token),this._flags.in_case=!1,this._flags.case_body=!0,void(this._tokens.peek().type!==TOKEN.START_BLOCK?(this.indent(),this.print_newline(),this._flags.case_block=!1):(this._flags.case_block=!0,this._output.space_before_token=!0));var space_before=!0,space_after=!0,in_ternary=!1;if(":"===current_token.text?0===this._flags.ternary_depth?space_before=!1:(this._flags.ternary_depth-=1,in_ternary=!0):"?"===current_token.text&&(this._flags.ternary_depth+=1),!isUnary&&!isGeneratorAsterisk&&this._options.preserve_newlines&&in_array(current_token.text,positionable_operators)){var isColon=":"===current_token.text,isTernaryColon=isColon&&in_ternary,isOtherColon=isColon&&!in_ternary;switch(this._options.operator_position){case OPERATOR_POSITION.before_newline:return this._output.space_before_token=!isOtherColon,this.print_token(current_token),isColon&&!isTernaryColon||this.allow_wrap_or_preserved_newline(current_token),void(this._output.space_before_token=!0);case OPERATOR_POSITION.after_newline:return this._output.space_before_token=!0,!isColon||isTernaryColon?this._tokens.peek().newlines?this.print_newline(!1,!0):this.allow_wrap_or_preserved_newline(current_token):this._output.space_before_token=!1,this.print_token(current_token),void(this._output.space_before_token=!0);case OPERATOR_POSITION.preserve_newline:return isOtherColon||this.allow_wrap_or_preserved_newline(current_token),space_before=!(this._output.just_added_newline()||isOtherColon),this._output.space_before_token=space_before,this.print_token(current_token),void(this._output.space_before_token=!0)}}if(isGeneratorAsterisk){this.allow_wrap_or_preserved_newline(current_token),space_before=!1;var next_token=this._tokens.peek();space_after=next_token&&in_array(next_token.type,[TOKEN.WORD,TOKEN.RESERVED])}else if("..."===current_token.text)this.allow_wrap_or_preserved_newline(current_token),space_before=this._flags.last_token.type===TOKEN.START_BLOCK,space_after=!1;else if(in_array(current_token.text,["--","++","!","~"])||isUnary){if(this._flags.last_token.type!==TOKEN.COMMA&&this._flags.last_token.type!==TOKEN.START_EXPR||this.allow_wrap_or_preserved_newline(current_token),space_before=!1,space_after=!1,current_token.newlines&&("--"===current_token.text||"++"===current_token.text||"~"===current_token.text)){var new_line_needed=reserved_array(this._flags.last_token,special_words)&¤t_token.newlines;new_line_needed&&(this._previous_flags.if_block||this._previous_flags.else_block)&&this.restore_mode(),this.print_newline(new_line_needed,!0)}";"===this._flags.last_token.text&&is_expression(this._flags.mode)&&(space_before=!0),this._flags.last_token.type===TOKEN.RESERVED?space_before=!0:this._flags.last_token.type===TOKEN.END_EXPR?space_before=!("]"===this._flags.last_token.text&&("--"===current_token.text||"++"===current_token.text)):this._flags.last_token.type===TOKEN.OPERATOR&&(space_before=in_array(current_token.text,["--","-","++","+"])&&in_array(this._flags.last_token.text,["--","-","++","+"]),in_array(current_token.text,["+","-"])&&in_array(this._flags.last_token.text,["--","++"])&&(space_after=!0)),(this._flags.mode!==MODE_BlockStatement||this._flags.inline_frame)&&this._flags.mode!==MODE_Statement||"{"!==this._flags.last_token.text&&";"!==this._flags.last_token.text||this.print_newline()}this._output.space_before_token=this._output.space_before_token||space_before,this.print_token(current_token),this._output.space_before_token=space_after}else this.print_token(current_token);else this.print_token(current_token)},Beautifier.prototype.handle_block_comment=function(current_token,preserve_statement_flags){return this._output.raw?(this._output.add_raw_token(current_token),void(current_token.directives&&"end"===current_token.directives.preserve&&(this._output.raw=this._options.test_output_raw))):current_token.directives?(this.print_newline(!1,preserve_statement_flags),this.print_token(current_token),"start"===current_token.directives.preserve&&(this._output.raw=!0),void this.print_newline(!1,!0)):acorn.newline.test(current_token.text)||current_token.newlines?void this.print_block_commment(current_token,preserve_statement_flags):(this._output.space_before_token=!0,this.print_token(current_token),void(this._output.space_before_token=!0))},Beautifier.prototype.print_block_commment=function(current_token,preserve_statement_flags){var j,lines=function(s){for(var out=[],idx=(s=s.replace(acorn.allLineBreaks,"\n")).indexOf("\n");-1!==idx;)out.push(s.substring(0,idx)),idx=(s=s.substring(idx+1)).indexOf("\n");return s.length&&out.push(s),out}(current_token.text),javadoc=!1,starless=!1,lastIndent=current_token.whitespace_before,lastIndentLength=lastIndent.length;if(this.print_newline(!1,preserve_statement_flags),this.print_token_line_indentation(current_token),this._output.add_token(lines[0]),this.print_newline(!1,preserve_statement_flags),lines.length>1){for(javadoc=function(lines,c){for(var i=0;i0&&(baseIndentString=new Array(options.indent_level+1).join(this.__indent_string)),this.__base_string=baseIndentString,this.__base_string_length=baseIndentString.length}function Output(options,baseIndentString){this.__indent_cache=new IndentStringCache(options,baseIndentString),this.raw=!1,this._end_with_newline=options.end_with_newline,this.indent_size=options.indent_size,this.wrap_line_length=options.wrap_line_length,this.indent_empty_lines=options.indent_empty_lines,this.__lines=[],this.previous_line=null,this.current_line=null,this.next_line=new OutputLine(this),this.space_before_token=!1,this.non_breaking_space=!1,this.previous_token_wrapped=!1,this.__add_outputline()}OutputLine.prototype.clone_empty=function(){var line=new OutputLine(this.__parent);return line.set_indent(this.__indent_count,this.__alignment_count),line},OutputLine.prototype.item=function(index){return index<0?this.__items[this.__items.length+index]:this.__items[index]},OutputLine.prototype.has_match=function(pattern){for(var lastCheckedOutput=this.__items.length-1;lastCheckedOutput>=0;lastCheckedOutput--)if(this.__items[lastCheckedOutput].match(pattern))return!0;return!1},OutputLine.prototype.set_indent=function(indent,alignment){this.is_empty()&&(this.__indent_count=indent||0,this.__alignment_count=alignment||0,this.__character_count=this.__parent.get_indent_size(this.__indent_count,this.__alignment_count))},OutputLine.prototype._set_wrap_point=function(){this.__parent.wrap_line_length&&(this.__wrap_point_index=this.__items.length,this.__wrap_point_character_count=this.__character_count,this.__wrap_point_indent_count=this.__parent.next_line.__indent_count,this.__wrap_point_alignment_count=this.__parent.next_line.__alignment_count)},OutputLine.prototype._should_wrap=function(){return this.__wrap_point_index&&this.__character_count>this.__parent.wrap_line_length&&this.__wrap_point_character_count>this.__parent.next_line.__character_count},OutputLine.prototype._allow_wrap=function(){if(this._should_wrap()){this.__parent.add_new_line();var next=this.__parent.current_line;return next.set_indent(this.__wrap_point_indent_count,this.__wrap_point_alignment_count),next.__items=this.__items.slice(this.__wrap_point_index),this.__items=this.__items.slice(0,this.__wrap_point_index),next.__character_count+=this.__character_count-this.__wrap_point_character_count,this.__character_count=this.__wrap_point_character_count," "===next.__items[0]&&(next.__items.splice(0,1),next.__character_count-=1),!0}return!1},OutputLine.prototype.is_empty=function(){return 0===this.__items.length},OutputLine.prototype.last=function(){return this.is_empty()?null:this.__items[this.__items.length-1]},OutputLine.prototype.push=function(item){this.__items.push(item);var last_newline_index=item.lastIndexOf("\n");-1!==last_newline_index?this.__character_count=item.length-last_newline_index:this.__character_count+=item.length},OutputLine.prototype.pop=function(){var item=null;return this.is_empty()||(item=this.__items.pop(),this.__character_count-=item.length),item},OutputLine.prototype._remove_indent=function(){this.__indent_count>0&&(this.__indent_count-=1,this.__character_count-=this.__parent.indent_size)},OutputLine.prototype._remove_wrap_indent=function(){this.__wrap_point_indent_count>0&&(this.__wrap_point_indent_count-=1)},OutputLine.prototype.trim=function(){for(;" "===this.last();)this.__items.pop(),this.__character_count-=1},OutputLine.prototype.toString=function(){var result="";return this.is_empty()?this.__parent.indent_empty_lines&&(result=this.__parent.get_indent_string(this.__indent_count)):(result=this.__parent.get_indent_string(this.__indent_count,this.__alignment_count),result+=this.__items.join("")),result},IndentStringCache.prototype.get_indent_size=function(indent,column){var result=this.__base_string_length;return column=column||0,indent<0&&(result=0),result+=indent*this.__indent_size,result+=column},IndentStringCache.prototype.get_indent_string=function(indent_level,column){var result=this.__base_string;return column=column||0,indent_level<0&&(indent_level=0,result=""),column+=indent_level*this.__indent_size,this.__ensure_cache(column),result+=this.__cache[column]},IndentStringCache.prototype.__ensure_cache=function(column){for(;column>=this.__cache.length;)this.__add_column()},IndentStringCache.prototype.__add_column=function(){var column=this.__cache.length,indent=0,result="";this.__indent_size&&column>=this.__indent_size&&(column-=(indent=Math.floor(column/this.__indent_size))*this.__indent_size,result=new Array(indent+1).join(this.__indent_string)),column&&(result+=new Array(column+1).join(" ")),this.__cache.push(result)},Output.prototype.__add_outputline=function(){this.previous_line=this.current_line,this.current_line=this.next_line.clone_empty(),this.__lines.push(this.current_line)},Output.prototype.get_line_number=function(){return this.__lines.length},Output.prototype.get_indent_string=function(indent,column){return this.__indent_cache.get_indent_string(indent,column)},Output.prototype.get_indent_size=function(indent,column){return this.__indent_cache.get_indent_size(indent,column)},Output.prototype.is_empty=function(){return!this.previous_line&&this.current_line.is_empty()},Output.prototype.add_new_line=function(force_newline){return!(this.is_empty()||!force_newline&&this.just_added_newline()||(this.raw||this.__add_outputline(),0))},Output.prototype.get_code=function(eol){this.trim(!0);var last_item=this.current_line.pop();last_item&&("\n"===last_item[last_item.length-1]&&(last_item=last_item.replace(/\n+$/g,"")),this.current_line.push(last_item)),this._end_with_newline&&this.__add_outputline();var sweet_code=this.__lines.join("\n");return"\n"!==eol&&(sweet_code=sweet_code.replace(/[\n]/g,eol)),sweet_code},Output.prototype.set_wrap_point=function(){this.current_line._set_wrap_point()},Output.prototype.set_indent=function(indent,alignment){return indent=indent||0,alignment=alignment||0,this.next_line.set_indent(indent,alignment),this.__lines.length>1?(this.current_line.set_indent(indent,alignment),!0):(this.current_line.set_indent(),!1)},Output.prototype.add_raw_token=function(token){for(var x=0;x1&&this.current_line.is_empty();)this.__lines.pop(),this.current_line=this.__lines[this.__lines.length-1],this.current_line.trim();this.previous_line=this.__lines.length>1?this.__lines[this.__lines.length-2]:null},Output.prototype.just_added_newline=function(){return this.current_line.is_empty()},Output.prototype.just_added_blankline=function(){return this.is_empty()||this.current_line.is_empty()&&this.previous_line.is_empty()},Output.prototype.ensure_empty_line_above=function(starts_with,ends_with){for(var index=this.__lines.length-2;index>=0;){var potentialEmptyLine=this.__lines[index];if(potentialEmptyLine.is_empty())break;if(0!==potentialEmptyLine.item(0).indexOf(starts_with)&&potentialEmptyLine.item(-1)!==ends_with){this.__lines.splice(index+1,0,new OutputLine(this)),this.previous_line=this.__lines[this.__lines.length-2];break}index--}},module.exports.Output=Output},function(module){module.exports.Token=function(type,text,newlines,whitespace_before){this.type=type,this.text=text,this.comments_before=null,this.newlines=newlines||0,this.whitespace_before=whitespace_before||"",this.parent=null,this.next=null,this.previous=null,this.opened=null,this.closed=null,this.directives=null}},function(__unused_webpack_module,exports){var nonASCIIidentifierStartChars="\\xaa\\xb5\\xba\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02c1\\u02c6-\\u02d1\\u02e0-\\u02e4\\u02ec\\u02ee\\u0370-\\u0374\\u0376\\u0377\\u037a-\\u037d\\u0386\\u0388-\\u038a\\u038c\\u038e-\\u03a1\\u03a3-\\u03f5\\u03f7-\\u0481\\u048a-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05d0-\\u05ea\\u05f0-\\u05f2\\u0620-\\u064a\\u066e\\u066f\\u0671-\\u06d3\\u06d5\\u06e5\\u06e6\\u06ee\\u06ef\\u06fa-\\u06fc\\u06ff\\u0710\\u0712-\\u072f\\u074d-\\u07a5\\u07b1\\u07ca-\\u07ea\\u07f4\\u07f5\\u07fa\\u0800-\\u0815\\u081a\\u0824\\u0828\\u0840-\\u0858\\u08a0\\u08a2-\\u08ac\\u0904-\\u0939\\u093d\\u0950\\u0958-\\u0961\\u0971-\\u0977\\u0979-\\u097f\\u0985-\\u098c\\u098f\\u0990\\u0993-\\u09a8\\u09aa-\\u09b0\\u09b2\\u09b6-\\u09b9\\u09bd\\u09ce\\u09dc\\u09dd\\u09df-\\u09e1\\u09f0\\u09f1\\u0a05-\\u0a0a\\u0a0f\\u0a10\\u0a13-\\u0a28\\u0a2a-\\u0a30\\u0a32\\u0a33\\u0a35\\u0a36\\u0a38\\u0a39\\u0a59-\\u0a5c\\u0a5e\\u0a72-\\u0a74\\u0a85-\\u0a8d\\u0a8f-\\u0a91\\u0a93-\\u0aa8\\u0aaa-\\u0ab0\\u0ab2\\u0ab3\\u0ab5-\\u0ab9\\u0abd\\u0ad0\\u0ae0\\u0ae1\\u0b05-\\u0b0c\\u0b0f\\u0b10\\u0b13-\\u0b28\\u0b2a-\\u0b30\\u0b32\\u0b33\\u0b35-\\u0b39\\u0b3d\\u0b5c\\u0b5d\\u0b5f-\\u0b61\\u0b71\\u0b83\\u0b85-\\u0b8a\\u0b8e-\\u0b90\\u0b92-\\u0b95\\u0b99\\u0b9a\\u0b9c\\u0b9e\\u0b9f\\u0ba3\\u0ba4\\u0ba8-\\u0baa\\u0bae-\\u0bb9\\u0bd0\\u0c05-\\u0c0c\\u0c0e-\\u0c10\\u0c12-\\u0c28\\u0c2a-\\u0c33\\u0c35-\\u0c39\\u0c3d\\u0c58\\u0c59\\u0c60\\u0c61\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd\\u0cde\\u0ce0\\u0ce1\\u0cf1\\u0cf2\\u0d05-\\u0d0c\\u0d0e-\\u0d10\\u0d12-\\u0d3a\\u0d3d\\u0d4e\\u0d60\\u0d61\\u0d7a-\\u0d7f\\u0d85-\\u0d96\\u0d9a-\\u0db1\\u0db3-\\u0dbb\\u0dbd\\u0dc0-\\u0dc6\\u0e01-\\u0e30\\u0e32\\u0e33\\u0e40-\\u0e46\\u0e81\\u0e82\\u0e84\\u0e87\\u0e88\\u0e8a\\u0e8d\\u0e94-\\u0e97\\u0e99-\\u0e9f\\u0ea1-\\u0ea3\\u0ea5\\u0ea7\\u0eaa\\u0eab\\u0ead-\\u0eb0\\u0eb2\\u0eb3\\u0ebd\\u0ec0-\\u0ec4\\u0ec6\\u0edc-\\u0edf\\u0f00\\u0f40-\\u0f47\\u0f49-\\u0f6c\\u0f88-\\u0f8c\\u1000-\\u102a\\u103f\\u1050-\\u1055\\u105a-\\u105d\\u1061\\u1065\\u1066\\u106e-\\u1070\\u1075-\\u1081\\u108e\\u10a0-\\u10c5\\u10c7\\u10cd\\u10d0-\\u10fa\\u10fc-\\u1248\\u124a-\\u124d\\u1250-\\u1256\\u1258\\u125a-\\u125d\\u1260-\\u1288\\u128a-\\u128d\\u1290-\\u12b0\\u12b2-\\u12b5\\u12b8-\\u12be\\u12c0\\u12c2-\\u12c5\\u12c8-\\u12d6\\u12d8-\\u1310\\u1312-\\u1315\\u1318-\\u135a\\u1380-\\u138f\\u13a0-\\u13f4\\u1401-\\u166c\\u166f-\\u167f\\u1681-\\u169a\\u16a0-\\u16ea\\u16ee-\\u16f0\\u1700-\\u170c\\u170e-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176c\\u176e-\\u1770\\u1780-\\u17b3\\u17d7\\u17dc\\u1820-\\u1877\\u1880-\\u18a8\\u18aa\\u18b0-\\u18f5\\u1900-\\u191c\\u1950-\\u196d\\u1970-\\u1974\\u1980-\\u19ab\\u19c1-\\u19c7\\u1a00-\\u1a16\\u1a20-\\u1a54\\u1aa7\\u1b05-\\u1b33\\u1b45-\\u1b4b\\u1b83-\\u1ba0\\u1bae\\u1baf\\u1bba-\\u1be5\\u1c00-\\u1c23\\u1c4d-\\u1c4f\\u1c5a-\\u1c7d\\u1ce9-\\u1cec\\u1cee-\\u1cf1\\u1cf5\\u1cf6\\u1d00-\\u1dbf\\u1e00-\\u1f15\\u1f18-\\u1f1d\\u1f20-\\u1f45\\u1f48-\\u1f4d\\u1f50-\\u1f57\\u1f59\\u1f5b\\u1f5d\\u1f5f-\\u1f7d\\u1f80-\\u1fb4\\u1fb6-\\u1fbc\\u1fbe\\u1fc2-\\u1fc4\\u1fc6-\\u1fcc\\u1fd0-\\u1fd3\\u1fd6-\\u1fdb\\u1fe0-\\u1fec\\u1ff2-\\u1ff4\\u1ff6-\\u1ffc\\u2071\\u207f\\u2090-\\u209c\\u2102\\u2107\\u210a-\\u2113\\u2115\\u2119-\\u211d\\u2124\\u2126\\u2128\\u212a-\\u212d\\u212f-\\u2139\\u213c-\\u213f\\u2145-\\u2149\\u214e\\u2160-\\u2188\\u2c00-\\u2c2e\\u2c30-\\u2c5e\\u2c60-\\u2ce4\\u2ceb-\\u2cee\\u2cf2\\u2cf3\\u2d00-\\u2d25\\u2d27\\u2d2d\\u2d30-\\u2d67\\u2d6f\\u2d80-\\u2d96\\u2da0-\\u2da6\\u2da8-\\u2dae\\u2db0-\\u2db6\\u2db8-\\u2dbe\\u2dc0-\\u2dc6\\u2dc8-\\u2dce\\u2dd0-\\u2dd6\\u2dd8-\\u2dde\\u2e2f\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303c\\u3041-\\u3096\\u309d-\\u309f\\u30a1-\\u30fa\\u30fc-\\u30ff\\u3105-\\u312d\\u3131-\\u318e\\u31a0-\\u31ba\\u31f0-\\u31ff\\u3400-\\u4db5\\u4e00-\\u9fcc\\ua000-\\ua48c\\ua4d0-\\ua4fd\\ua500-\\ua60c\\ua610-\\ua61f\\ua62a\\ua62b\\ua640-\\ua66e\\ua67f-\\ua697\\ua6a0-\\ua6ef\\ua717-\\ua71f\\ua722-\\ua788\\ua78b-\\ua78e\\ua790-\\ua793\\ua7a0-\\ua7aa\\ua7f8-\\ua801\\ua803-\\ua805\\ua807-\\ua80a\\ua80c-\\ua822\\ua840-\\ua873\\ua882-\\ua8b3\\ua8f2-\\ua8f7\\ua8fb\\ua90a-\\ua925\\ua930-\\ua946\\ua960-\\ua97c\\ua984-\\ua9b2\\ua9cf\\uaa00-\\uaa28\\uaa40-\\uaa42\\uaa44-\\uaa4b\\uaa60-\\uaa76\\uaa7a\\uaa80-\\uaaaf\\uaab1\\uaab5\\uaab6\\uaab9-\\uaabd\\uaac0\\uaac2\\uaadb-\\uaadd\\uaae0-\\uaaea\\uaaf2-\\uaaf4\\uab01-\\uab06\\uab09-\\uab0e\\uab11-\\uab16\\uab20-\\uab26\\uab28-\\uab2e\\uabc0-\\uabe2\\uac00-\\ud7a3\\ud7b0-\\ud7c6\\ud7cb-\\ud7fb\\uf900-\\ufa6d\\ufa70-\\ufad9\\ufb00-\\ufb06\\ufb13-\\ufb17\\ufb1d\\ufb1f-\\ufb28\\ufb2a-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40\\ufb41\\ufb43\\ufb44\\ufb46-\\ufbb1\\ufbd3-\\ufd3d\\ufd50-\\ufd8f\\ufd92-\\ufdc7\\ufdf0-\\ufdfb\\ufe70-\\ufe74\\ufe76-\\ufefc\\uff21-\\uff3a\\uff41-\\uff5a\\uff66-\\uffbe\\uffc2-\\uffc7\\uffca-\\uffcf\\uffd2-\\uffd7\\uffda-\\uffdc",nonASCIIidentifierChars="\\u0300-\\u036f\\u0483-\\u0487\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u0620-\\u0649\\u0672-\\u06d3\\u06e7-\\u06e8\\u06fb-\\u06fc\\u0730-\\u074a\\u0800-\\u0814\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0840-\\u0857\\u08e4-\\u08fe\\u0900-\\u0903\\u093a-\\u093c\\u093e-\\u094f\\u0951-\\u0957\\u0962-\\u0963\\u0966-\\u096f\\u0981-\\u0983\\u09bc\\u09be-\\u09c4\\u09c7\\u09c8\\u09d7\\u09df-\\u09e0\\u0a01-\\u0a03\\u0a3c\\u0a3e-\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a66-\\u0a71\\u0a75\\u0a81-\\u0a83\\u0abc\\u0abe-\\u0ac5\\u0ac7-\\u0ac9\\u0acb-\\u0acd\\u0ae2-\\u0ae3\\u0ae6-\\u0aef\\u0b01-\\u0b03\\u0b3c\\u0b3e-\\u0b44\\u0b47\\u0b48\\u0b4b-\\u0b4d\\u0b56\\u0b57\\u0b5f-\\u0b60\\u0b66-\\u0b6f\\u0b82\\u0bbe-\\u0bc2\\u0bc6-\\u0bc8\\u0bca-\\u0bcd\\u0bd7\\u0be6-\\u0bef\\u0c01-\\u0c03\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62-\\u0c63\\u0c66-\\u0c6f\\u0c82\\u0c83\\u0cbc\\u0cbe-\\u0cc4\\u0cc6-\\u0cc8\\u0cca-\\u0ccd\\u0cd5\\u0cd6\\u0ce2-\\u0ce3\\u0ce6-\\u0cef\\u0d02\\u0d03\\u0d46-\\u0d48\\u0d57\\u0d62-\\u0d63\\u0d66-\\u0d6f\\u0d82\\u0d83\\u0dca\\u0dcf-\\u0dd4\\u0dd6\\u0dd8-\\u0ddf\\u0df2\\u0df3\\u0e34-\\u0e3a\\u0e40-\\u0e45\\u0e50-\\u0e59\\u0eb4-\\u0eb9\\u0ec8-\\u0ecd\\u0ed0-\\u0ed9\\u0f18\\u0f19\\u0f20-\\u0f29\\u0f35\\u0f37\\u0f39\\u0f41-\\u0f47\\u0f71-\\u0f84\\u0f86-\\u0f87\\u0f8d-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u1000-\\u1029\\u1040-\\u1049\\u1067-\\u106d\\u1071-\\u1074\\u1082-\\u108d\\u108f-\\u109d\\u135d-\\u135f\\u170e-\\u1710\\u1720-\\u1730\\u1740-\\u1750\\u1772\\u1773\\u1780-\\u17b2\\u17dd\\u17e0-\\u17e9\\u180b-\\u180d\\u1810-\\u1819\\u1920-\\u192b\\u1930-\\u193b\\u1951-\\u196d\\u19b0-\\u19c0\\u19c8-\\u19c9\\u19d0-\\u19d9\\u1a00-\\u1a15\\u1a20-\\u1a53\\u1a60-\\u1a7c\\u1a7f-\\u1a89\\u1a90-\\u1a99\\u1b46-\\u1b4b\\u1b50-\\u1b59\\u1b6b-\\u1b73\\u1bb0-\\u1bb9\\u1be6-\\u1bf3\\u1c00-\\u1c22\\u1c40-\\u1c49\\u1c5b-\\u1c7d\\u1cd0-\\u1cd2\\u1d00-\\u1dbe\\u1e01-\\u1f15\\u200c\\u200d\\u203f\\u2040\\u2054\\u20d0-\\u20dc\\u20e1\\u20e5-\\u20f0\\u2d81-\\u2d96\\u2de0-\\u2dff\\u3021-\\u3028\\u3099\\u309a\\ua640-\\ua66d\\ua674-\\ua67d\\ua69f\\ua6f0-\\ua6f1\\ua7f8-\\ua800\\ua806\\ua80b\\ua823-\\ua827\\ua880-\\ua881\\ua8b4-\\ua8c4\\ua8d0-\\ua8d9\\ua8f3-\\ua8f7\\ua900-\\ua909\\ua926-\\ua92d\\ua930-\\ua945\\ua980-\\ua983\\ua9b3-\\ua9c0\\uaa00-\\uaa27\\uaa40-\\uaa41\\uaa4c-\\uaa4d\\uaa50-\\uaa59\\uaa7b\\uaae0-\\uaae9\\uaaf2-\\uaaf3\\uabc0-\\uabe1\\uabec\\uabed\\uabf0-\\uabf9\\ufb20-\\ufb28\\ufe00-\\ufe0f\\ufe20-\\ufe26\\ufe33\\ufe34\\ufe4d-\\ufe4f\\uff10-\\uff19\\uff3f",identifierStart="(?:\\\\u[0-9a-fA-F]{4}|\\\\u\\{[0-9a-fA-F]+\\}|[\\x23\\x24\\x40\\x41-\\x5a\\x5f\\x61-\\x7a"+nonASCIIidentifierStartChars+"])";exports.identifier=new RegExp(identifierStart+"(?:\\\\u[0-9a-fA-F]{4}|\\\\u\\{[0-9a-fA-F]+\\}|[\\x24\\x30-\\x39\\x41-\\x5a\\x5f\\x61-\\x7a\\xaa\\xb5\\xba\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02c1\\u02c6-\\u02d1\\u02e0-\\u02e4\\u02ec\\u02ee\\u0370-\\u0374\\u0376\\u0377\\u037a-\\u037d\\u0386\\u0388-\\u038a\\u038c\\u038e-\\u03a1\\u03a3-\\u03f5\\u03f7-\\u0481\\u048a-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05d0-\\u05ea\\u05f0-\\u05f2\\u0620-\\u064a\\u066e\\u066f\\u0671-\\u06d3\\u06d5\\u06e5\\u06e6\\u06ee\\u06ef\\u06fa-\\u06fc\\u06ff\\u0710\\u0712-\\u072f\\u074d-\\u07a5\\u07b1\\u07ca-\\u07ea\\u07f4\\u07f5\\u07fa\\u0800-\\u0815\\u081a\\u0824\\u0828\\u0840-\\u0858\\u08a0\\u08a2-\\u08ac\\u0904-\\u0939\\u093d\\u0950\\u0958-\\u0961\\u0971-\\u0977\\u0979-\\u097f\\u0985-\\u098c\\u098f\\u0990\\u0993-\\u09a8\\u09aa-\\u09b0\\u09b2\\u09b6-\\u09b9\\u09bd\\u09ce\\u09dc\\u09dd\\u09df-\\u09e1\\u09f0\\u09f1\\u0a05-\\u0a0a\\u0a0f\\u0a10\\u0a13-\\u0a28\\u0a2a-\\u0a30\\u0a32\\u0a33\\u0a35\\u0a36\\u0a38\\u0a39\\u0a59-\\u0a5c\\u0a5e\\u0a72-\\u0a74\\u0a85-\\u0a8d\\u0a8f-\\u0a91\\u0a93-\\u0aa8\\u0aaa-\\u0ab0\\u0ab2\\u0ab3\\u0ab5-\\u0ab9\\u0abd\\u0ad0\\u0ae0\\u0ae1\\u0b05-\\u0b0c\\u0b0f\\u0b10\\u0b13-\\u0b28\\u0b2a-\\u0b30\\u0b32\\u0b33\\u0b35-\\u0b39\\u0b3d\\u0b5c\\u0b5d\\u0b5f-\\u0b61\\u0b71\\u0b83\\u0b85-\\u0b8a\\u0b8e-\\u0b90\\u0b92-\\u0b95\\u0b99\\u0b9a\\u0b9c\\u0b9e\\u0b9f\\u0ba3\\u0ba4\\u0ba8-\\u0baa\\u0bae-\\u0bb9\\u0bd0\\u0c05-\\u0c0c\\u0c0e-\\u0c10\\u0c12-\\u0c28\\u0c2a-\\u0c33\\u0c35-\\u0c39\\u0c3d\\u0c58\\u0c59\\u0c60\\u0c61\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd\\u0cde\\u0ce0\\u0ce1\\u0cf1\\u0cf2\\u0d05-\\u0d0c\\u0d0e-\\u0d10\\u0d12-\\u0d3a\\u0d3d\\u0d4e\\u0d60\\u0d61\\u0d7a-\\u0d7f\\u0d85-\\u0d96\\u0d9a-\\u0db1\\u0db3-\\u0dbb\\u0dbd\\u0dc0-\\u0dc6\\u0e01-\\u0e30\\u0e32\\u0e33\\u0e40-\\u0e46\\u0e81\\u0e82\\u0e84\\u0e87\\u0e88\\u0e8a\\u0e8d\\u0e94-\\u0e97\\u0e99-\\u0e9f\\u0ea1-\\u0ea3\\u0ea5\\u0ea7\\u0eaa\\u0eab\\u0ead-\\u0eb0\\u0eb2\\u0eb3\\u0ebd\\u0ec0-\\u0ec4\\u0ec6\\u0edc-\\u0edf\\u0f00\\u0f40-\\u0f47\\u0f49-\\u0f6c\\u0f88-\\u0f8c\\u1000-\\u102a\\u103f\\u1050-\\u1055\\u105a-\\u105d\\u1061\\u1065\\u1066\\u106e-\\u1070\\u1075-\\u1081\\u108e\\u10a0-\\u10c5\\u10c7\\u10cd\\u10d0-\\u10fa\\u10fc-\\u1248\\u124a-\\u124d\\u1250-\\u1256\\u1258\\u125a-\\u125d\\u1260-\\u1288\\u128a-\\u128d\\u1290-\\u12b0\\u12b2-\\u12b5\\u12b8-\\u12be\\u12c0\\u12c2-\\u12c5\\u12c8-\\u12d6\\u12d8-\\u1310\\u1312-\\u1315\\u1318-\\u135a\\u1380-\\u138f\\u13a0-\\u13f4\\u1401-\\u166c\\u166f-\\u167f\\u1681-\\u169a\\u16a0-\\u16ea\\u16ee-\\u16f0\\u1700-\\u170c\\u170e-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176c\\u176e-\\u1770\\u1780-\\u17b3\\u17d7\\u17dc\\u1820-\\u1877\\u1880-\\u18a8\\u18aa\\u18b0-\\u18f5\\u1900-\\u191c\\u1950-\\u196d\\u1970-\\u1974\\u1980-\\u19ab\\u19c1-\\u19c7\\u1a00-\\u1a16\\u1a20-\\u1a54\\u1aa7\\u1b05-\\u1b33\\u1b45-\\u1b4b\\u1b83-\\u1ba0\\u1bae\\u1baf\\u1bba-\\u1be5\\u1c00-\\u1c23\\u1c4d-\\u1c4f\\u1c5a-\\u1c7d\\u1ce9-\\u1cec\\u1cee-\\u1cf1\\u1cf5\\u1cf6\\u1d00-\\u1dbf\\u1e00-\\u1f15\\u1f18-\\u1f1d\\u1f20-\\u1f45\\u1f48-\\u1f4d\\u1f50-\\u1f57\\u1f59\\u1f5b\\u1f5d\\u1f5f-\\u1f7d\\u1f80-\\u1fb4\\u1fb6-\\u1fbc\\u1fbe\\u1fc2-\\u1fc4\\u1fc6-\\u1fcc\\u1fd0-\\u1fd3\\u1fd6-\\u1fdb\\u1fe0-\\u1fec\\u1ff2-\\u1ff4\\u1ff6-\\u1ffc\\u2071\\u207f\\u2090-\\u209c\\u2102\\u2107\\u210a-\\u2113\\u2115\\u2119-\\u211d\\u2124\\u2126\\u2128\\u212a-\\u212d\\u212f-\\u2139\\u213c-\\u213f\\u2145-\\u2149\\u214e\\u2160-\\u2188\\u2c00-\\u2c2e\\u2c30-\\u2c5e\\u2c60-\\u2ce4\\u2ceb-\\u2cee\\u2cf2\\u2cf3\\u2d00-\\u2d25\\u2d27\\u2d2d\\u2d30-\\u2d67\\u2d6f\\u2d80-\\u2d96\\u2da0-\\u2da6\\u2da8-\\u2dae\\u2db0-\\u2db6\\u2db8-\\u2dbe\\u2dc0-\\u2dc6\\u2dc8-\\u2dce\\u2dd0-\\u2dd6\\u2dd8-\\u2dde\\u2e2f\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303c\\u3041-\\u3096\\u309d-\\u309f\\u30a1-\\u30fa\\u30fc-\\u30ff\\u3105-\\u312d\\u3131-\\u318e\\u31a0-\\u31ba\\u31f0-\\u31ff\\u3400-\\u4db5\\u4e00-\\u9fcc\\ua000-\\ua48c\\ua4d0-\\ua4fd\\ua500-\\ua60c\\ua610-\\ua61f\\ua62a\\ua62b\\ua640-\\ua66e\\ua67f-\\ua697\\ua6a0-\\ua6ef\\ua717-\\ua71f\\ua722-\\ua788\\ua78b-\\ua78e\\ua790-\\ua793\\ua7a0-\\ua7aa\\ua7f8-\\ua801\\ua803-\\ua805\\ua807-\\ua80a\\ua80c-\\ua822\\ua840-\\ua873\\ua882-\\ua8b3\\ua8f2-\\ua8f7\\ua8fb\\ua90a-\\ua925\\ua930-\\ua946\\ua960-\\ua97c\\ua984-\\ua9b2\\ua9cf\\uaa00-\\uaa28\\uaa40-\\uaa42\\uaa44-\\uaa4b\\uaa60-\\uaa76\\uaa7a\\uaa80-\\uaaaf\\uaab1\\uaab5\\uaab6\\uaab9-\\uaabd\\uaac0\\uaac2\\uaadb-\\uaadd\\uaae0-\\uaaea\\uaaf2-\\uaaf4\\uab01-\\uab06\\uab09-\\uab0e\\uab11-\\uab16\\uab20-\\uab26\\uab28-\\uab2e\\uabc0-\\uabe2\\uac00-\\ud7a3\\ud7b0-\\ud7c6\\ud7cb-\\ud7fb\\uf900-\\ufa6d\\ufa70-\\ufad9\\ufb00-\\ufb06\\ufb13-\\ufb17\\ufb1d\\ufb1f-\\ufb28\\ufb2a-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40\\ufb41\\ufb43\\ufb44\\ufb46-\\ufbb1\\ufbd3-\\ufd3d\\ufd50-\\ufd8f\\ufd92-\\ufdc7\\ufdf0-\\ufdfb\\ufe70-\\ufe74\\ufe76-\\ufefc\\uff21-\\uff3a\\uff41-\\uff5a\\uff66-\\uffbe\\uffc2-\\uffc7\\uffca-\\uffcf\\uffd2-\\uffd7\\uffda-\\uffdc\\u0300-\\u036f\\u0483-\\u0487\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u0620-\\u0649\\u0672-\\u06d3\\u06e7-\\u06e8\\u06fb-\\u06fc\\u0730-\\u074a\\u0800-\\u0814\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0840-\\u0857\\u08e4-\\u08fe\\u0900-\\u0903\\u093a-\\u093c\\u093e-\\u094f\\u0951-\\u0957\\u0962-\\u0963\\u0966-\\u096f\\u0981-\\u0983\\u09bc\\u09be-\\u09c4\\u09c7\\u09c8\\u09d7\\u09df-\\u09e0\\u0a01-\\u0a03\\u0a3c\\u0a3e-\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a66-\\u0a71\\u0a75\\u0a81-\\u0a83\\u0abc\\u0abe-\\u0ac5\\u0ac7-\\u0ac9\\u0acb-\\u0acd\\u0ae2-\\u0ae3\\u0ae6-\\u0aef\\u0b01-\\u0b03\\u0b3c\\u0b3e-\\u0b44\\u0b47\\u0b48\\u0b4b-\\u0b4d\\u0b56\\u0b57\\u0b5f-\\u0b60\\u0b66-\\u0b6f\\u0b82\\u0bbe-\\u0bc2\\u0bc6-\\u0bc8\\u0bca-\\u0bcd\\u0bd7\\u0be6-\\u0bef\\u0c01-\\u0c03\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62-\\u0c63\\u0c66-\\u0c6f\\u0c82\\u0c83\\u0cbc\\u0cbe-\\u0cc4\\u0cc6-\\u0cc8\\u0cca-\\u0ccd\\u0cd5\\u0cd6\\u0ce2-\\u0ce3\\u0ce6-\\u0cef\\u0d02\\u0d03\\u0d46-\\u0d48\\u0d57\\u0d62-\\u0d63\\u0d66-\\u0d6f\\u0d82\\u0d83\\u0dca\\u0dcf-\\u0dd4\\u0dd6\\u0dd8-\\u0ddf\\u0df2\\u0df3\\u0e34-\\u0e3a\\u0e40-\\u0e45\\u0e50-\\u0e59\\u0eb4-\\u0eb9\\u0ec8-\\u0ecd\\u0ed0-\\u0ed9\\u0f18\\u0f19\\u0f20-\\u0f29\\u0f35\\u0f37\\u0f39\\u0f41-\\u0f47\\u0f71-\\u0f84\\u0f86-\\u0f87\\u0f8d-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u1000-\\u1029\\u1040-\\u1049\\u1067-\\u106d\\u1071-\\u1074\\u1082-\\u108d\\u108f-\\u109d\\u135d-\\u135f\\u170e-\\u1710\\u1720-\\u1730\\u1740-\\u1750\\u1772\\u1773\\u1780-\\u17b2\\u17dd\\u17e0-\\u17e9\\u180b-\\u180d\\u1810-\\u1819\\u1920-\\u192b\\u1930-\\u193b\\u1951-\\u196d\\u19b0-\\u19c0\\u19c8-\\u19c9\\u19d0-\\u19d9\\u1a00-\\u1a15\\u1a20-\\u1a53\\u1a60-\\u1a7c\\u1a7f-\\u1a89\\u1a90-\\u1a99\\u1b46-\\u1b4b\\u1b50-\\u1b59\\u1b6b-\\u1b73\\u1bb0-\\u1bb9\\u1be6-\\u1bf3\\u1c00-\\u1c22\\u1c40-\\u1c49\\u1c5b-\\u1c7d\\u1cd0-\\u1cd2\\u1d00-\\u1dbe\\u1e01-\\u1f15\\u200c\\u200d\\u203f\\u2040\\u2054\\u20d0-\\u20dc\\u20e1\\u20e5-\\u20f0\\u2d81-\\u2d96\\u2de0-\\u2dff\\u3021-\\u3028\\u3099\\u309a\\ua640-\\ua66d\\ua674-\\ua67d\\ua69f\\ua6f0-\\ua6f1\\ua7f8-\\ua800\\ua806\\ua80b\\ua823-\\ua827\\ua880-\\ua881\\ua8b4-\\ua8c4\\ua8d0-\\ua8d9\\ua8f3-\\ua8f7\\ua900-\\ua909\\ua926-\\ua92d\\ua930-\\ua945\\ua980-\\ua983\\ua9b3-\\ua9c0\\uaa00-\\uaa27\\uaa40-\\uaa41\\uaa4c-\\uaa4d\\uaa50-\\uaa59\\uaa7b\\uaae0-\\uaae9\\uaaf2-\\uaaf3\\uabc0-\\uabe1\\uabec\\uabed\\uabf0-\\uabf9\\ufb20-\\ufb28\\ufe00-\\ufe0f\\ufe20-\\ufe26\\ufe33\\ufe34\\ufe4d-\\ufe4f\\uff10-\\uff19\\uff3f])*","g"),exports.identifierStart=new RegExp(identifierStart),exports.identifierMatch=new RegExp("(?:\\\\u[0-9a-fA-F]{4}|\\\\u\\{[0-9a-fA-F]+\\}|[\\x24\\x30-\\x39\\x41-\\x5a\\x5f\\x61-\\x7a"+nonASCIIidentifierStartChars+nonASCIIidentifierChars+"])+"),exports.newline=/[\n\r\u2028\u2029]/,exports.lineBreak=new RegExp("\r\n|"+exports.newline.source),exports.allLineBreaks=new RegExp(exports.lineBreak.source,"g")},function(module,__unused_webpack_exports,__webpack_require__){var BaseOptions=__webpack_require__(6).Options,validPositionValues=["before-newline","after-newline","preserve-newline"];function Options(options){BaseOptions.call(this,options,"js");var raw_brace_style=this.raw_options.brace_style||null;"expand-strict"===raw_brace_style?this.raw_options.brace_style="expand":"collapse-preserve-inline"===raw_brace_style?this.raw_options.brace_style="collapse,preserve-inline":void 0!==this.raw_options.braces_on_own_line&&(this.raw_options.brace_style=this.raw_options.braces_on_own_line?"expand":"collapse");var brace_style_split=this._get_selection_list("brace_style",["collapse","expand","end-expand","none","preserve-inline"]);this.brace_preserve_inline=!1,this.brace_style="collapse";for(var bs=0;bs>> === !== &&= ??= ||= << && >= ** != == <= >> || ?? |> < / - + > : & % ? ^ | *".split(" "),punct=">>>= ... >>= <<= === >>> !== **= &&= ??= ||= => ^= :: /= << <= == && -= >= >> != -- += ** || ?? ++ %= &= *= |= |> = ! ? > < : / ^ - + * & % ~ |";punct=(punct="\\?\\.(?!\\d) "+(punct=punct.replace(/[-[\]{}()*+?.,\\^$|#]/g,"\\$&"))).replace(/ /g,"|");var in_html_comment,punct_pattern=new RegExp(punct),line_starters="continue,try,throw,return,var,let,const,if,switch,case,default,for,while,break,function,import,export".split(","),reserved_words=line_starters.concat(["do","in","of","else","get","set","new","catch","finally","typeof","yield","async","await","from","as","class","extends"]),reserved_word_pattern=new RegExp("^(?:"+reserved_words.join("|")+")$"),Tokenizer=function(input_string,options){BaseTokenizer.call(this,input_string,options),this._patterns.whitespace=this._patterns.whitespace.matching(/\u00A0\u1680\u180e\u2000-\u200a\u202f\u205f\u3000\ufeff/.source,/\u2028\u2029/.source);var pattern_reader=new Pattern(this._input),templatable=new TemplatablePattern(this._input).read_options(this._options);this.__patterns={template:templatable,identifier:templatable.starting_with(acorn.identifier).matching(acorn.identifierMatch),number:pattern_reader.matching(number_pattern),punct:pattern_reader.matching(punct_pattern),comment:pattern_reader.starting_with(/\/\//).until(/[\n\r\u2028\u2029]/),block_comment:pattern_reader.starting_with(/\/\*/).until_after(/\*\//),html_comment_start:pattern_reader.matching(//),include:pattern_reader.starting_with(/#include/).until_after(acorn.lineBreak),shebang:pattern_reader.starting_with(/#!/).until_after(acorn.lineBreak),xml:pattern_reader.matching(/[\s\S]*?<(\/?)([-a-zA-Z:0-9_.]+|{[^}]+?}|!\[CDATA\[[^\]]*?\]\]|)(\s*{[^}]+?}|\s+[-a-zA-Z:0-9_.]+|\s+[-a-zA-Z:0-9_.]+\s*=\s*('[^']*'|"[^"]*"|{([^{}]|{[^}]+?})+?}))*\s*(\/?)\s*>/),single_quote:templatable.until(/['\\\n\r\u2028\u2029]/),double_quote:templatable.until(/["\\\n\r\u2028\u2029]/),template_text:templatable.until(/[`\\$]/),template_expression:templatable.until(/[`}\\]/)}};(Tokenizer.prototype=new BaseTokenizer)._is_comment=function(current_token){return current_token.type===TOKEN.COMMENT||current_token.type===TOKEN.BLOCK_COMMENT||current_token.type===TOKEN.UNKNOWN},Tokenizer.prototype._is_opening=function(current_token){return current_token.type===TOKEN.START_BLOCK||current_token.type===TOKEN.START_EXPR},Tokenizer.prototype._is_closing=function(current_token,open_token){return(current_token.type===TOKEN.END_BLOCK||current_token.type===TOKEN.END_EXPR)&&open_token&&("]"===current_token.text&&"["===open_token.text||")"===current_token.text&&"("===open_token.text||"}"===current_token.text&&"{"===open_token.text)},Tokenizer.prototype._reset=function(){in_html_comment=!1},Tokenizer.prototype._get_next_token=function(previous_token,open_token){var token=null;this._readWhitespace();var c=this._input.peek();return null===c?this._create_token(TOKEN.EOF,""):token=(token=(token=(token=(token=(token=(token=(token=(token=(token=token||this._read_non_javascript(c))||this._read_string(c))||this._read_pair(c,this._input.peek(1)))||this._read_word(previous_token))||this._read_singles(c))||this._read_comment(c))||this._read_regexp(c,previous_token))||this._read_xml(c,previous_token))||this._read_punctuation())||this._create_token(TOKEN.UNKNOWN,this._input.next())},Tokenizer.prototype._read_word=function(previous_token){var resulting_string;return""!==(resulting_string=this.__patterns.identifier.read())?(resulting_string=resulting_string.replace(acorn.allLineBreaks,"\n"),previous_token.type!==TOKEN.DOT&&(previous_token.type!==TOKEN.RESERVED||"set"!==previous_token.text&&"get"!==previous_token.text)&&reserved_word_pattern.test(resulting_string)?"in"!==resulting_string&&"of"!==resulting_string||previous_token.type!==TOKEN.WORD&&previous_token.type!==TOKEN.STRING?this._create_token(TOKEN.RESERVED,resulting_string):this._create_token(TOKEN.OPERATOR,resulting_string):this._create_token(TOKEN.WORD,resulting_string)):""!==(resulting_string=this.__patterns.number.read())?this._create_token(TOKEN.WORD,resulting_string):void 0},Tokenizer.prototype._read_singles=function(c){var token=null;return"("===c||"["===c?token=this._create_token(TOKEN.START_EXPR,c):")"===c||"]"===c?token=this._create_token(TOKEN.END_EXPR,c):"{"===c?token=this._create_token(TOKEN.START_BLOCK,c):"}"===c?token=this._create_token(TOKEN.END_BLOCK,c):";"===c?token=this._create_token(TOKEN.SEMICOLON,c):"."===c&&dot_pattern.test(this._input.peek(1))?token=this._create_token(TOKEN.DOT,c):","===c&&(token=this._create_token(TOKEN.COMMA,c)),token&&this._input.next(),token},Tokenizer.prototype._read_pair=function(c,d){var token=null;return"#"===c&&"{"===d&&(token=this._create_token(TOKEN.START_BLOCK,c+d)),token&&(this._input.next(),this._input.next()),token},Tokenizer.prototype._read_punctuation=function(){var resulting_string=this.__patterns.punct.read();if(""!==resulting_string)return"="===resulting_string?this._create_token(TOKEN.EQUALS,resulting_string):"?."===resulting_string?this._create_token(TOKEN.DOT,resulting_string):this._create_token(TOKEN.OPERATOR,resulting_string)},Tokenizer.prototype._read_non_javascript=function(c){var resulting_string="";if("#"===c){if(this._is_first_token()&&(resulting_string=this.__patterns.shebang.read()))return this._create_token(TOKEN.UNKNOWN,resulting_string.trim()+"\n");if(resulting_string=this.__patterns.include.read())return this._create_token(TOKEN.UNKNOWN,resulting_string.trim()+"\n");c=this._input.next();var sharp="#";if(this._input.hasNext()&&this._input.testChar(digit)){do{sharp+=c=this._input.next()}while(this._input.hasNext()&&"#"!==c&&"="!==c);return"#"===c||("["===this._input.peek()&&"]"===this._input.peek(1)?(sharp+="[]",this._input.next(),this._input.next()):"{"===this._input.peek()&&"}"===this._input.peek(1)&&(sharp+="{}",this._input.next(),this._input.next())),this._create_token(TOKEN.WORD,sharp)}this._input.back()}else if("<"===c&&this._is_first_token()){if(resulting_string=this.__patterns.html_comment_start.read()){for(;this._input.hasNext()&&!this._input.testChar(acorn.newline);)resulting_string+=this._input.next();return in_html_comment=!0,this._create_token(TOKEN.COMMENT,resulting_string)}}else if(in_html_comment&&"-"===c&&(resulting_string=this.__patterns.html_comment_end.read()))return in_html_comment=!1,this._create_token(TOKEN.COMMENT,resulting_string);return null},Tokenizer.prototype._read_comment=function(c){var token=null;if("/"===c){var comment="";if("*"===this._input.peek(1)){comment=this.__patterns.block_comment.read();var directives=directives_core.get_directives(comment);directives&&"start"===directives.ignore&&(comment+=directives_core.readIgnored(this._input)),comment=comment.replace(acorn.allLineBreaks,"\n"),(token=this._create_token(TOKEN.BLOCK_COMMENT,comment)).directives=directives}else"/"===this._input.peek(1)&&(comment=this.__patterns.comment.read(),token=this._create_token(TOKEN.COMMENT,comment))}return token},Tokenizer.prototype._read_string=function(c){if("`"===c||"'"===c||'"'===c){var resulting_string=this._input.next();return this.has_char_escapes=!1,resulting_string+="`"===c?this._read_string_recursive("`",!0,"${"):this._read_string_recursive(c),this.has_char_escapes&&this._options.unescape_strings&&(resulting_string=function(s){for(var out="",escaped=0,input_scan=new InputScanner(s),matched=null;input_scan.hasNext();)if((matched=input_scan.match(/([\s]|[^\\]|\\\\)+/g))&&(out+=matched[0]),"\\"===input_scan.peek()){if(input_scan.next(),"x"===input_scan.peek())matched=input_scan.match(/x([0-9A-Fa-f]{2})/g);else{if("u"!==input_scan.peek()){out+="\\",input_scan.hasNext()&&(out+=input_scan.next());continue}(matched=input_scan.match(/u([0-9A-Fa-f]{4})/g))||(matched=input_scan.match(/u\{([0-9A-Fa-f]+)\}/g))}if(!matched)return s;if((escaped=parseInt(matched[1],16))>126&&escaped<=255&&0===matched[0].indexOf("x"))return s;out+=escaped>=0&&escaped<32||escaped>1114111?"\\"+matched[0]:34===escaped||39===escaped||92===escaped?"\\"+String.fromCharCode(escaped):String.fromCharCode(escaped)}return out}(resulting_string)),this._input.peek()===c&&(resulting_string+=this._input.next()),resulting_string=resulting_string.replace(acorn.allLineBreaks,"\n"),this._create_token(TOKEN.STRING,resulting_string)}return null},Tokenizer.prototype._allow_regexp_or_xml=function(previous_token){return previous_token.type===TOKEN.RESERVED&&in_array(previous_token.text,["return","case","throw","else","do","typeof","yield"])||previous_token.type===TOKEN.END_EXPR&&")"===previous_token.text&&previous_token.opened.previous.type===TOKEN.RESERVED&&in_array(previous_token.opened.previous.text,["if","while","for"])||in_array(previous_token.type,[TOKEN.COMMENT,TOKEN.START_EXPR,TOKEN.START_BLOCK,TOKEN.START,TOKEN.END_BLOCK,TOKEN.OPERATOR,TOKEN.EQUALS,TOKEN.EOF,TOKEN.SEMICOLON,TOKEN.COMMA])},Tokenizer.prototype._read_regexp=function(c,previous_token){if("/"===c&&this._allow_regexp_or_xml(previous_token)){for(var resulting_string=this._input.next(),esc=!1,in_char_class=!1;this._input.hasNext()&&(esc||in_char_class||this._input.peek()!==c)&&!this._input.testChar(acorn.newline);)resulting_string+=this._input.peek(),esc?esc=!1:(esc="\\"===this._input.peek(),"["===this._input.peek()?in_char_class=!0:"]"===this._input.peek()&&(in_char_class=!1)),this._input.next();return this._input.peek()===c&&(resulting_string+=this._input.next(),resulting_string+=this._input.read(acorn.identifier)),this._create_token(TOKEN.STRING,resulting_string)}return null},Tokenizer.prototype._read_xml=function(c,previous_token){if(this._options.e4x&&"<"===c&&this._allow_regexp_or_xml(previous_token)){var xmlStr="",match=this.__patterns.xml.read_match();if(match){for(var rootTag=match[2].replace(/^{\s+/,"{").replace(/\s+}$/,"}"),isCurlyRoot=0===rootTag.indexOf("{"),depth=0;match;){var isEndTag=!!match[1],tagName=match[2];if(!(match[match.length-1]||"![CDATA["===tagName.slice(0,8))&&(tagName===rootTag||isCurlyRoot&&tagName.replace(/^{\s+/,"{").replace(/\s+}$/,"}"))&&(isEndTag?--depth:++depth),xmlStr+=match[0],depth<=0)break;match=this.__patterns.xml.read_match()}return match||(xmlStr+=this._input.match(/[\s\S]*/g)[0]),xmlStr=xmlStr.replace(acorn.allLineBreaks,"\n"),this._create_token(TOKEN.STRING,xmlStr)}}return null},Tokenizer.prototype._read_string_recursive=function(delimiter,allow_unescaped_newlines,start_sub){var current_char,pattern;"'"===delimiter?pattern=this.__patterns.single_quote:'"'===delimiter?pattern=this.__patterns.double_quote:"`"===delimiter?pattern=this.__patterns.template_text:"}"===delimiter&&(pattern=this.__patterns.template_expression);for(var resulting_string=pattern.read(),next="";this._input.hasNext();){if((next=this._input.next())===delimiter||!allow_unescaped_newlines&&acorn.newline.test(next)){this._input.back();break}"\\"===next&&this._input.hasNext()?("x"===(current_char=this._input.peek())||"u"===current_char?this.has_char_escapes=!0:"\r"===current_char&&"\n"===this._input.peek(1)&&this._input.next(),next+=this._input.next()):start_sub&&("${"===start_sub&&"$"===next&&"{"===this._input.peek()&&(next+=this._input.next()),start_sub===next&&(next+="`"===delimiter?this._read_string_recursive("}",allow_unescaped_newlines,"`"):this._read_string_recursive("`",allow_unescaped_newlines,"${"),this._input.hasNext()&&(next+=this._input.next()))),resulting_string+=next+=pattern.read()}return resulting_string},module.exports.Tokenizer=Tokenizer,module.exports.TOKEN=TOKEN,module.exports.positionable_operators=positionable_operators.slice(),module.exports.line_starters=line_starters.slice()},function(module){var regexp_has_sticky=RegExp.prototype.hasOwnProperty("sticky");function InputScanner(input_string){this.__input=input_string||"",this.__input_length=this.__input.length,this.__position=0}InputScanner.prototype.restart=function(){this.__position=0},InputScanner.prototype.back=function(){this.__position>0&&(this.__position-=1)},InputScanner.prototype.hasNext=function(){return this.__position=0&&index=0&&index=testVal.length&&this.__input.substring(start-testVal.length,start).toLowerCase()===testVal},module.exports.InputScanner=InputScanner},function(module,__unused_webpack_exports,__webpack_require__){var InputScanner=__webpack_require__(8).InputScanner,Token=__webpack_require__(3).Token,TokenStream=__webpack_require__(10).TokenStream,WhitespacePattern=__webpack_require__(11).WhitespacePattern,TOKEN={START:"TK_START",RAW:"TK_RAW",EOF:"TK_EOF"},Tokenizer=function(input_string,options){this._input=new InputScanner(input_string),this._options=options||{},this.__tokens=null,this._patterns={},this._patterns.whitespace=new WhitespacePattern(this._input)};Tokenizer.prototype.tokenize=function(){var current;this._input.restart(),this.__tokens=new TokenStream,this._reset();for(var previous=new Token(TOKEN.START,""),open_token=null,open_stack=[],comments=new TokenStream;previous.type!==TOKEN.EOF;){for(current=this._get_next_token(previous,open_token);this._is_comment(current);)comments.add(current),current=this._get_next_token(previous,open_token);comments.isEmpty()||(current.comments_before=comments,comments=new TokenStream),current.parent=open_token,this._is_opening(current)?(open_stack.push(open_token),open_token=current):open_token&&this._is_closing(current,open_token)&&(current.opened=open_token,open_token.closed=current,open_token=open_stack.pop(),current.parent=open_token),current.previous=previous,previous.next=current,this.__tokens.add(current),previous=current}return this.__tokens},Tokenizer.prototype._is_first_token=function(){return this.__tokens.isEmpty()},Tokenizer.prototype._reset=function(){},Tokenizer.prototype._get_next_token=function(previous_token,open_token){this._readWhitespace();var resulting_string=this._input.read(/.+/g);return resulting_string?this._create_token(TOKEN.RAW,resulting_string):this._create_token(TOKEN.EOF,"")},Tokenizer.prototype._is_comment=function(current_token){return!1},Tokenizer.prototype._is_opening=function(current_token){return!1},Tokenizer.prototype._is_closing=function(current_token,open_token){return!1},Tokenizer.prototype._create_token=function(type,text){return new Token(type,text,this._patterns.whitespace.newline_count,this._patterns.whitespace.whitespace_before_token)},Tokenizer.prototype._readWhitespace=function(){return this._patterns.whitespace.read()},module.exports.Tokenizer=Tokenizer,module.exports.TOKEN=TOKEN},function(module){function TokenStream(parent_token){this.__tokens=[],this.__tokens_length=this.__tokens.length,this.__position=0,this.__parent_token=parent_token}TokenStream.prototype.restart=function(){this.__position=0},TokenStream.prototype.isEmpty=function(){return 0===this.__tokens_length},TokenStream.prototype.hasNext=function(){return this.__position=0&&index/),erb:pattern.starting_with(/<%[^%]/).until_after(/[^%]%>/),django:pattern.starting_with(/{%/).until_after(/%}/),django_value:pattern.starting_with(/{{/).until_after(/}}/),django_comment:pattern.starting_with(/{#/).until_after(/#}/),smarty:pattern.starting_with(/{(?=[^}{\s\n])/).until_after(/[^\s\n]}/),smarty_comment:pattern.starting_with(/{\*/).until_after(/\*}/),smarty_literal:pattern.starting_with(/{literal}/).until_after(/{\/literal}/)}}TemplatablePattern.prototype=new Pattern,TemplatablePattern.prototype._create=function(){return new TemplatablePattern(this._input,this)},TemplatablePattern.prototype._update=function(){this.__set_templated_pattern()},TemplatablePattern.prototype.disable=function(language){var result=this._create();return result._disabled[language]=!0,result._update(),result},TemplatablePattern.prototype.read_options=function(options){var result=this._create();for(var language in template_names)result._disabled[language]=-1===options.templating.indexOf(language);return result._update(),result},TemplatablePattern.prototype.exclude=function(language){var result=this._create();return result._excluded[language]=!0,result._update(),result},TemplatablePattern.prototype.read=function(){var result="";result=this._match_pattern?this._input.read(this._starting_pattern):this._input.read(this._starting_pattern,this.__template_pattern);for(var next=this._read_template();next;)this._match_pattern?next+=this._input.read(this._match_pattern):next+=this._input.readUntil(this.__template_pattern),result+=next,next=this._read_template();return this._until_after&&(result+=this._input.readUntilAfter(this._until_pattern)),result},TemplatablePattern.prototype.__set_templated_pattern=function(){var items=[];this._disabled.php||items.push(this.__patterns.php._starting_pattern.source),this._disabled.handlebars||items.push(this.__patterns.handlebars._starting_pattern.source),this._disabled.angular||items.push(this.__patterns.handlebars._starting_pattern.source),this._disabled.erb||items.push(this.__patterns.erb._starting_pattern.source),this._disabled.django||(items.push(this.__patterns.django._starting_pattern.source),items.push(this.__patterns.django_value._starting_pattern.source),items.push(this.__patterns.django_comment._starting_pattern.source)),this._disabled.smarty||items.push(this.__patterns.smarty._starting_pattern.source),this._until_pattern&&items.push(this._until_pattern.source),this.__template_pattern=this._input.get_regexp("(?:"+items.join("|")+")")},TemplatablePattern.prototype._read_template=function(){var resulting_string="",c=this._input.peek();if("<"===c){var peek1=this._input.peek(1);this._disabled.php||this._excluded.php||"?"!==peek1||(resulting_string=resulting_string||this.__patterns.php.read()),this._disabled.erb||this._excluded.erb||"%"!==peek1||(resulting_string=resulting_string||this.__patterns.erb.read())}else"{"===c&&(this._disabled.handlebars||this._excluded.handlebars||(resulting_string=(resulting_string=(resulting_string=resulting_string||this.__patterns.handlebars_comment.read())||this.__patterns.handlebars_unescaped.read())||this.__patterns.handlebars.read()),this._disabled.django||(this._excluded.django||this._excluded.handlebars||(resulting_string=resulting_string||this.__patterns.django_value.read()),this._excluded.django||(resulting_string=(resulting_string=resulting_string||this.__patterns.django_comment.read())||this.__patterns.django.read())),this._disabled.smarty||this._disabled.django&&this._disabled.handlebars&&(resulting_string=(resulting_string=(resulting_string=resulting_string||this.__patterns.smarty_comment.read())||this.__patterns.smarty_literal.read())||this.__patterns.smarty.read()));return resulting_string},module.exports.TemplatablePattern=TemplatablePattern}],__webpack_module_cache__={},__webpack_exports__=function __webpack_require__(moduleId){var cachedModule=__webpack_module_cache__[moduleId];if(void 0!==cachedModule)return cachedModule.exports;var module=__webpack_module_cache__[moduleId]={exports:{}};return __webpack_modules__[moduleId](module,module.exports,__webpack_require__),module.exports}(0);var js_beautify=__webpack_exports__;"function"==typeof define&&define.amd?define("tiny_html/beautify/beautify",[],(function(){return{js_beautify:js_beautify}})):"undefined"!=typeof exports?exports.js_beautify=js_beautify:"undefined"!=typeof window?window.js_beautify=js_beautify:"undefined"!=typeof global&&(global.js_beautify=js_beautify)}();
//# sourceMappingURL=beautify.min.js.map
\ No newline at end of file
diff --git a/lib/editor/tiny/plugins/html/amd/build/beautify/beautify.min.js.map b/lib/editor/tiny/plugins/html/amd/build/beautify/beautify.min.js.map
index d3db43d742d..1e88bb89ea3 100644
--- a/lib/editor/tiny/plugins/html/amd/build/beautify/beautify.min.js.map
+++ b/lib/editor/tiny/plugins/html/amd/build/beautify/beautify.min.js.map
@@ -1 +1 @@
-{"version":3,"file":"beautify.min.js","sources":["../../src/beautify/beautify.js"],"sourcesContent":["/* AUTO-GENERATED. DO NOT MODIFY. */\n/*\n\n The MIT License (MIT)\n\n Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors.\n\n Permission is hereby granted, free of charge, to any person\n obtaining a copy of this software and associated documentation files\n (the \"Software\"), to deal in the Software without restriction,\n including without limitation the rights to use, copy, modify, merge,\n publish, distribute, sublicense, and/or sell copies of the Software,\n and to permit persons to whom the Software is furnished to do so,\n subject to the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\n BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n JS Beautifier\n---------------\n\n\n Written by Einar Lielmanis, \n https://beautifier.io/\n\n Originally converted to javascript by Vital, \n \"End braces on own line\" added by Chris J. Shull, \n Parsing improvements for brace-less statements by Liam Newman \n\n\n Usage:\n js_beautify(js_source_text);\n js_beautify(js_source_text, options);\n\n The options are:\n indent_size (default 4) - indentation size,\n indent_char (default space) - character to indent with,\n preserve_newlines (default true) - whether existing line breaks should be preserved,\n max_preserve_newlines (default unlimited) - maximum number of line breaks to be preserved in one chunk,\n\n jslint_happy (default false) - if true, then jslint-stricter mode is enforced.\n\n jslint_happy !jslint_happy\n ---------------------------------\n function () function()\n\n switch () { switch() {\n case 1: case 1:\n break; break;\n } }\n\n space_after_anon_function (default false) - should the space before an anonymous function's parens be added, \"function()\" vs \"function ()\",\n NOTE: This option is overridden by jslint_happy (i.e. if jslint_happy is true, space_after_anon_function is true by design)\n\n brace_style (default \"collapse\") - \"collapse\" | \"expand\" | \"end-expand\" | \"none\" | any of the former + \",preserve-inline\"\n put braces on the same line as control statements (default), or put braces on own line (Allman / ANSI style), or just put end braces on own line, or attempt to keep them where they are.\n preserve-inline will try to preserve inline blocks of curly braces\n\n space_before_conditional (default true) - should the space before conditional statement be added, \"if(true)\" vs \"if (true)\",\n\n unescape_strings (default false) - should printable characters in strings encoded in \\xNN notation be unescaped, \"example\" vs \"\\x65\\x78\\x61\\x6d\\x70\\x6c\\x65\"\n\n wrap_line_length (default unlimited) - lines should wrap at next opportunity after this number of characters.\n NOTE: This is not a hard limit. Lines will continue until a point where a newline would\n be preserved if it were present.\n\n end_with_newline (default false) - end output with a newline\n\n\n e.g\n\n js_beautify(js_source_text, {\n 'indent_size': 1,\n 'indent_char': '\\t'\n });\n\n*/\n\n(function() {\n\n/* GENERATED_BUILD_OUTPUT */\nvar legacy_beautify_js;\n/******/ (function() { // webpackBootstrap\n/******/ \t\"use strict\";\n/******/ \tvar __webpack_modules__ = ([\n/* 0 */\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n/*jshint node:true */\n/*\n\n The MIT License (MIT)\n\n Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors.\n\n Permission is hereby granted, free of charge, to any person\n obtaining a copy of this software and associated documentation files\n (the \"Software\"), to deal in the Software without restriction,\n including without limitation the rights to use, copy, modify, merge,\n publish, distribute, sublicense, and/or sell copies of the Software,\n and to permit persons to whom the Software is furnished to do so,\n subject to the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\n BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n*/\n\n\n\nvar Beautifier = (__webpack_require__(1).Beautifier),\n Options = (__webpack_require__(5).Options);\n\nfunction js_beautify(js_source_text, options) {\n var beautifier = new Beautifier(js_source_text, options);\n return beautifier.beautify();\n}\n\nmodule.exports = js_beautify;\nmodule.exports.defaultOptions = function() {\n return new Options();\n};\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n/*jshint node:true */\n/*\n\n The MIT License (MIT)\n\n Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors.\n\n Permission is hereby granted, free of charge, to any person\n obtaining a copy of this software and associated documentation files\n (the \"Software\"), to deal in the Software without restriction,\n including without limitation the rights to use, copy, modify, merge,\n publish, distribute, sublicense, and/or sell copies of the Software,\n and to permit persons to whom the Software is furnished to do so,\n subject to the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\n BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n*/\n\n\n\nvar Output = (__webpack_require__(2).Output);\nvar Token = (__webpack_require__(3).Token);\nvar acorn = __webpack_require__(4);\nvar Options = (__webpack_require__(5).Options);\nvar Tokenizer = (__webpack_require__(7).Tokenizer);\nvar line_starters = (__webpack_require__(7).line_starters);\nvar positionable_operators = (__webpack_require__(7).positionable_operators);\nvar TOKEN = (__webpack_require__(7).TOKEN);\n\n\nfunction in_array(what, arr) {\n return arr.indexOf(what) !== -1;\n}\n\nfunction ltrim(s) {\n return s.replace(/^\\s+/g, '');\n}\n\nfunction generateMapFromStrings(list) {\n var result = {};\n for (var x = 0; x < list.length; x++) {\n // make the mapped names underscored instead of dash\n result[list[x].replace(/-/g, '_')] = list[x];\n }\n return result;\n}\n\nfunction reserved_word(token, word) {\n return token && token.type === TOKEN.RESERVED && token.text === word;\n}\n\nfunction reserved_array(token, words) {\n return token && token.type === TOKEN.RESERVED && in_array(token.text, words);\n}\n// Unsure of what they mean, but they work. Worth cleaning up in future.\nvar special_words = ['case', 'return', 'do', 'if', 'throw', 'else', 'await', 'break', 'continue', 'async'];\n\nvar validPositionValues = ['before-newline', 'after-newline', 'preserve-newline'];\n\n// Generate map from array\nvar OPERATOR_POSITION = generateMapFromStrings(validPositionValues);\n\nvar OPERATOR_POSITION_BEFORE_OR_PRESERVE = [OPERATOR_POSITION.before_newline, OPERATOR_POSITION.preserve_newline];\n\nvar MODE = {\n BlockStatement: 'BlockStatement', // 'BLOCK'\n Statement: 'Statement', // 'STATEMENT'\n ObjectLiteral: 'ObjectLiteral', // 'OBJECT',\n ArrayLiteral: 'ArrayLiteral', //'[EXPRESSION]',\n ForInitializer: 'ForInitializer', //'(FOR-EXPRESSION)',\n Conditional: 'Conditional', //'(COND-EXPRESSION)',\n Expression: 'Expression' //'(EXPRESSION)'\n};\n\nfunction remove_redundant_indentation(output, frame) {\n // This implementation is effective but has some issues:\n // - can cause line wrap to happen too soon due to indent removal\n // after wrap points are calculated\n // These issues are minor compared to ugly indentation.\n\n if (frame.multiline_frame ||\n frame.mode === MODE.ForInitializer ||\n frame.mode === MODE.Conditional) {\n return;\n }\n\n // remove one indent from each line inside this section\n output.remove_indent(frame.start_line_index);\n}\n\n// we could use just string.split, but\n// IE doesn't like returning empty strings\nfunction split_linebreaks(s) {\n //return s.split(/\\x0d\\x0a|\\x0a/);\n\n s = s.replace(acorn.allLineBreaks, '\\n');\n var out = [],\n idx = s.indexOf(\"\\n\");\n while (idx !== -1) {\n out.push(s.substring(0, idx));\n s = s.substring(idx + 1);\n idx = s.indexOf(\"\\n\");\n }\n if (s.length) {\n out.push(s);\n }\n return out;\n}\n\nfunction is_array(mode) {\n return mode === MODE.ArrayLiteral;\n}\n\nfunction is_expression(mode) {\n return in_array(mode, [MODE.Expression, MODE.ForInitializer, MODE.Conditional]);\n}\n\nfunction all_lines_start_with(lines, c) {\n for (var i = 0; i < lines.length; i++) {\n var line = lines[i].trim();\n if (line.charAt(0) !== c) {\n return false;\n }\n }\n return true;\n}\n\nfunction each_line_matches_indent(lines, indent) {\n var i = 0,\n len = lines.length,\n line;\n for (; i < len; i++) {\n line = lines[i];\n // allow empty lines to pass through\n if (line && line.indexOf(indent) !== 0) {\n return false;\n }\n }\n return true;\n}\n\n\nfunction Beautifier(source_text, options) {\n options = options || {};\n this._source_text = source_text || '';\n\n this._output = null;\n this._tokens = null;\n this._last_last_text = null;\n this._flags = null;\n this._previous_flags = null;\n\n this._flag_store = null;\n this._options = new Options(options);\n}\n\nBeautifier.prototype.create_flags = function(flags_base, mode) {\n var next_indent_level = 0;\n if (flags_base) {\n next_indent_level = flags_base.indentation_level;\n if (!this._output.just_added_newline() &&\n flags_base.line_indent_level > next_indent_level) {\n next_indent_level = flags_base.line_indent_level;\n }\n }\n\n var next_flags = {\n mode: mode,\n parent: flags_base,\n last_token: flags_base ? flags_base.last_token : new Token(TOKEN.START_BLOCK, ''), // last token text\n last_word: flags_base ? flags_base.last_word : '', // last TOKEN.WORD passed\n declaration_statement: false,\n declaration_assignment: false,\n multiline_frame: false,\n inline_frame: false,\n if_block: false,\n else_block: false,\n class_start_block: false, // class A { INSIDE HERE } or class B extends C { INSIDE HERE }\n do_block: false,\n do_while: false,\n import_block: false,\n in_case_statement: false, // switch(..){ INSIDE HERE }\n in_case: false, // we're on the exact line with \"case 0:\"\n case_body: false, // the indented case-action block\n case_block: false, // the indented case-action block is wrapped with {}\n indentation_level: next_indent_level,\n alignment: 0,\n line_indent_level: flags_base ? flags_base.line_indent_level : next_indent_level,\n start_line_index: this._output.get_line_number(),\n ternary_depth: 0\n };\n return next_flags;\n};\n\nBeautifier.prototype._reset = function(source_text) {\n var baseIndentString = source_text.match(/^[\\t ]*/)[0];\n\n this._last_last_text = ''; // pre-last token text\n this._output = new Output(this._options, baseIndentString);\n\n // If testing the ignore directive, start with output disable set to true\n this._output.raw = this._options.test_output_raw;\n\n\n // Stack of parsing/formatting states, including MODE.\n // We tokenize, parse, and output in an almost purely a forward-only stream of token input\n // and formatted output. This makes the beautifier less accurate than full parsers\n // but also far more tolerant of syntax errors.\n //\n // For example, the default mode is MODE.BlockStatement. If we see a '{' we push a new frame of type\n // MODE.BlockStatement on the the stack, even though it could be object literal. If we later\n // encounter a \":\", we'll switch to to MODE.ObjectLiteral. If we then see a \";\",\n // most full parsers would die, but the beautifier gracefully falls back to\n // MODE.BlockStatement and continues on.\n this._flag_store = [];\n this.set_mode(MODE.BlockStatement);\n var tokenizer = new Tokenizer(source_text, this._options);\n this._tokens = tokenizer.tokenize();\n return source_text;\n};\n\nBeautifier.prototype.beautify = function() {\n // if disabled, return the input unchanged.\n if (this._options.disabled) {\n return this._source_text;\n }\n\n var sweet_code;\n var source_text = this._reset(this._source_text);\n\n var eol = this._options.eol;\n if (this._options.eol === 'auto') {\n eol = '\\n';\n if (source_text && acorn.lineBreak.test(source_text || '')) {\n eol = source_text.match(acorn.lineBreak)[0];\n }\n }\n\n var current_token = this._tokens.next();\n while (current_token) {\n this.handle_token(current_token);\n\n this._last_last_text = this._flags.last_token.text;\n this._flags.last_token = current_token;\n\n current_token = this._tokens.next();\n }\n\n sweet_code = this._output.get_code(eol);\n\n return sweet_code;\n};\n\nBeautifier.prototype.handle_token = function(current_token, preserve_statement_flags) {\n if (current_token.type === TOKEN.START_EXPR) {\n this.handle_start_expr(current_token);\n } else if (current_token.type === TOKEN.END_EXPR) {\n this.handle_end_expr(current_token);\n } else if (current_token.type === TOKEN.START_BLOCK) {\n this.handle_start_block(current_token);\n } else if (current_token.type === TOKEN.END_BLOCK) {\n this.handle_end_block(current_token);\n } else if (current_token.type === TOKEN.WORD) {\n this.handle_word(current_token);\n } else if (current_token.type === TOKEN.RESERVED) {\n this.handle_word(current_token);\n } else if (current_token.type === TOKEN.SEMICOLON) {\n this.handle_semicolon(current_token);\n } else if (current_token.type === TOKEN.STRING) {\n this.handle_string(current_token);\n } else if (current_token.type === TOKEN.EQUALS) {\n this.handle_equals(current_token);\n } else if (current_token.type === TOKEN.OPERATOR) {\n this.handle_operator(current_token);\n } else if (current_token.type === TOKEN.COMMA) {\n this.handle_comma(current_token);\n } else if (current_token.type === TOKEN.BLOCK_COMMENT) {\n this.handle_block_comment(current_token, preserve_statement_flags);\n } else if (current_token.type === TOKEN.COMMENT) {\n this.handle_comment(current_token, preserve_statement_flags);\n } else if (current_token.type === TOKEN.DOT) {\n this.handle_dot(current_token);\n } else if (current_token.type === TOKEN.EOF) {\n this.handle_eof(current_token);\n } else if (current_token.type === TOKEN.UNKNOWN) {\n this.handle_unknown(current_token, preserve_statement_flags);\n } else {\n this.handle_unknown(current_token, preserve_statement_flags);\n }\n};\n\nBeautifier.prototype.handle_whitespace_and_comments = function(current_token, preserve_statement_flags) {\n var newlines = current_token.newlines;\n var keep_whitespace = this._options.keep_array_indentation && is_array(this._flags.mode);\n\n if (current_token.comments_before) {\n var comment_token = current_token.comments_before.next();\n while (comment_token) {\n // The cleanest handling of inline comments is to treat them as though they aren't there.\n // Just continue formatting and the behavior should be logical.\n // Also ignore unknown tokens. Again, this should result in better behavior.\n this.handle_whitespace_and_comments(comment_token, preserve_statement_flags);\n this.handle_token(comment_token, preserve_statement_flags);\n comment_token = current_token.comments_before.next();\n }\n }\n\n if (keep_whitespace) {\n for (var i = 0; i < newlines; i += 1) {\n this.print_newline(i > 0, preserve_statement_flags);\n }\n } else {\n if (this._options.max_preserve_newlines && newlines > this._options.max_preserve_newlines) {\n newlines = this._options.max_preserve_newlines;\n }\n\n if (this._options.preserve_newlines) {\n if (newlines > 1) {\n this.print_newline(false, preserve_statement_flags);\n for (var j = 1; j < newlines; j += 1) {\n this.print_newline(true, preserve_statement_flags);\n }\n }\n }\n }\n\n};\n\nvar newline_restricted_tokens = ['async', 'break', 'continue', 'return', 'throw', 'yield'];\n\nBeautifier.prototype.allow_wrap_or_preserved_newline = function(current_token, force_linewrap) {\n force_linewrap = (force_linewrap === undefined) ? false : force_linewrap;\n\n // Never wrap the first token on a line\n if (this._output.just_added_newline()) {\n return;\n }\n\n var shouldPreserveOrForce = (this._options.preserve_newlines && current_token.newlines) || force_linewrap;\n var operatorLogicApplies = in_array(this._flags.last_token.text, positionable_operators) ||\n in_array(current_token.text, positionable_operators);\n\n if (operatorLogicApplies) {\n var shouldPrintOperatorNewline = (\n in_array(this._flags.last_token.text, positionable_operators) &&\n in_array(this._options.operator_position, OPERATOR_POSITION_BEFORE_OR_PRESERVE)\n ) ||\n in_array(current_token.text, positionable_operators);\n shouldPreserveOrForce = shouldPreserveOrForce && shouldPrintOperatorNewline;\n }\n\n if (shouldPreserveOrForce) {\n this.print_newline(false, true);\n } else if (this._options.wrap_line_length) {\n if (reserved_array(this._flags.last_token, newline_restricted_tokens)) {\n // These tokens should never have a newline inserted\n // between them and the following expression.\n return;\n }\n this._output.set_wrap_point();\n }\n};\n\nBeautifier.prototype.print_newline = function(force_newline, preserve_statement_flags) {\n if (!preserve_statement_flags) {\n if (this._flags.last_token.text !== ';' && this._flags.last_token.text !== ',' && this._flags.last_token.text !== '=' && (this._flags.last_token.type !== TOKEN.OPERATOR || this._flags.last_token.text === '--' || this._flags.last_token.text === '++')) {\n var next_token = this._tokens.peek();\n while (this._flags.mode === MODE.Statement &&\n !(this._flags.if_block && reserved_word(next_token, 'else')) &&\n !this._flags.do_block) {\n this.restore_mode();\n }\n }\n }\n\n if (this._output.add_new_line(force_newline)) {\n this._flags.multiline_frame = true;\n }\n};\n\nBeautifier.prototype.print_token_line_indentation = function(current_token) {\n if (this._output.just_added_newline()) {\n if (this._options.keep_array_indentation &&\n current_token.newlines &&\n (current_token.text === '[' || is_array(this._flags.mode))) {\n this._output.current_line.set_indent(-1);\n this._output.current_line.push(current_token.whitespace_before);\n this._output.space_before_token = false;\n } else if (this._output.set_indent(this._flags.indentation_level, this._flags.alignment)) {\n this._flags.line_indent_level = this._flags.indentation_level;\n }\n }\n};\n\nBeautifier.prototype.print_token = function(current_token) {\n if (this._output.raw) {\n this._output.add_raw_token(current_token);\n return;\n }\n\n if (this._options.comma_first && current_token.previous && current_token.previous.type === TOKEN.COMMA &&\n this._output.just_added_newline()) {\n if (this._output.previous_line.last() === ',') {\n var popped = this._output.previous_line.pop();\n // if the comma was already at the start of the line,\n // pull back onto that line and reprint the indentation\n if (this._output.previous_line.is_empty()) {\n this._output.previous_line.push(popped);\n this._output.trim(true);\n this._output.current_line.pop();\n this._output.trim();\n }\n\n // add the comma in front of the next token\n this.print_token_line_indentation(current_token);\n this._output.add_token(',');\n this._output.space_before_token = true;\n }\n }\n\n this.print_token_line_indentation(current_token);\n this._output.non_breaking_space = true;\n this._output.add_token(current_token.text);\n if (this._output.previous_token_wrapped) {\n this._flags.multiline_frame = true;\n }\n};\n\nBeautifier.prototype.indent = function() {\n this._flags.indentation_level += 1;\n this._output.set_indent(this._flags.indentation_level, this._flags.alignment);\n};\n\nBeautifier.prototype.deindent = function() {\n if (this._flags.indentation_level > 0 &&\n ((!this._flags.parent) || this._flags.indentation_level > this._flags.parent.indentation_level)) {\n this._flags.indentation_level -= 1;\n this._output.set_indent(this._flags.indentation_level, this._flags.alignment);\n }\n};\n\nBeautifier.prototype.set_mode = function(mode) {\n if (this._flags) {\n this._flag_store.push(this._flags);\n this._previous_flags = this._flags;\n } else {\n this._previous_flags = this.create_flags(null, mode);\n }\n\n this._flags = this.create_flags(this._previous_flags, mode);\n this._output.set_indent(this._flags.indentation_level, this._flags.alignment);\n};\n\n\nBeautifier.prototype.restore_mode = function() {\n if (this._flag_store.length > 0) {\n this._previous_flags = this._flags;\n this._flags = this._flag_store.pop();\n if (this._previous_flags.mode === MODE.Statement) {\n remove_redundant_indentation(this._output, this._previous_flags);\n }\n this._output.set_indent(this._flags.indentation_level, this._flags.alignment);\n }\n};\n\nBeautifier.prototype.start_of_object_property = function() {\n return this._flags.parent.mode === MODE.ObjectLiteral && this._flags.mode === MODE.Statement && (\n (this._flags.last_token.text === ':' && this._flags.ternary_depth === 0) || (reserved_array(this._flags.last_token, ['get', 'set'])));\n};\n\nBeautifier.prototype.start_of_statement = function(current_token) {\n var start = false;\n start = start || reserved_array(this._flags.last_token, ['var', 'let', 'const']) && current_token.type === TOKEN.WORD;\n start = start || reserved_word(this._flags.last_token, 'do');\n start = start || (!(this._flags.parent.mode === MODE.ObjectLiteral && this._flags.mode === MODE.Statement)) && reserved_array(this._flags.last_token, newline_restricted_tokens) && !current_token.newlines;\n start = start || reserved_word(this._flags.last_token, 'else') &&\n !(reserved_word(current_token, 'if') && !current_token.comments_before);\n start = start || (this._flags.last_token.type === TOKEN.END_EXPR && (this._previous_flags.mode === MODE.ForInitializer || this._previous_flags.mode === MODE.Conditional));\n start = start || (this._flags.last_token.type === TOKEN.WORD && this._flags.mode === MODE.BlockStatement &&\n !this._flags.in_case &&\n !(current_token.text === '--' || current_token.text === '++') &&\n this._last_last_text !== 'function' &&\n current_token.type !== TOKEN.WORD && current_token.type !== TOKEN.RESERVED);\n start = start || (this._flags.mode === MODE.ObjectLiteral && (\n (this._flags.last_token.text === ':' && this._flags.ternary_depth === 0) || reserved_array(this._flags.last_token, ['get', 'set'])));\n\n if (start) {\n this.set_mode(MODE.Statement);\n this.indent();\n\n this.handle_whitespace_and_comments(current_token, true);\n\n // Issue #276:\n // If starting a new statement with [if, for, while, do], push to a new line.\n // if (a) if (b) if(c) d(); else e(); else f();\n if (!this.start_of_object_property()) {\n this.allow_wrap_or_preserved_newline(current_token,\n reserved_array(current_token, ['do', 'for', 'if', 'while']));\n }\n return true;\n }\n return false;\n};\n\nBeautifier.prototype.handle_start_expr = function(current_token) {\n // The conditional starts the statement if appropriate.\n if (!this.start_of_statement(current_token)) {\n this.handle_whitespace_and_comments(current_token);\n }\n\n var next_mode = MODE.Expression;\n if (current_token.text === '[') {\n\n if (this._flags.last_token.type === TOKEN.WORD || this._flags.last_token.text === ')') {\n // this is array index specifier, break immediately\n // a[x], fn()[x]\n if (reserved_array(this._flags.last_token, line_starters)) {\n this._output.space_before_token = true;\n }\n this.print_token(current_token);\n this.set_mode(next_mode);\n this.indent();\n if (this._options.space_in_paren) {\n this._output.space_before_token = true;\n }\n return;\n }\n\n next_mode = MODE.ArrayLiteral;\n if (is_array(this._flags.mode)) {\n if (this._flags.last_token.text === '[' ||\n (this._flags.last_token.text === ',' && (this._last_last_text === ']' || this._last_last_text === '}'))) {\n // ], [ goes to new line\n // }, [ goes to new line\n if (!this._options.keep_array_indentation) {\n this.print_newline();\n }\n }\n }\n\n if (!in_array(this._flags.last_token.type, [TOKEN.START_EXPR, TOKEN.END_EXPR, TOKEN.WORD, TOKEN.OPERATOR, TOKEN.DOT])) {\n this._output.space_before_token = true;\n }\n } else {\n if (this._flags.last_token.type === TOKEN.RESERVED) {\n if (this._flags.last_token.text === 'for') {\n this._output.space_before_token = this._options.space_before_conditional;\n next_mode = MODE.ForInitializer;\n } else if (in_array(this._flags.last_token.text, ['if', 'while', 'switch'])) {\n this._output.space_before_token = this._options.space_before_conditional;\n next_mode = MODE.Conditional;\n } else if (in_array(this._flags.last_word, ['await', 'async'])) {\n // Should be a space between await and an IIFE, or async and an arrow function\n this._output.space_before_token = true;\n } else if (this._flags.last_token.text === 'import' && current_token.whitespace_before === '') {\n this._output.space_before_token = false;\n } else if (in_array(this._flags.last_token.text, line_starters) || this._flags.last_token.text === 'catch') {\n this._output.space_before_token = true;\n }\n } else if (this._flags.last_token.type === TOKEN.EQUALS || this._flags.last_token.type === TOKEN.OPERATOR) {\n // Support of this kind of newline preservation.\n // a = (b &&\n // (c || d));\n if (!this.start_of_object_property()) {\n this.allow_wrap_or_preserved_newline(current_token);\n }\n } else if (this._flags.last_token.type === TOKEN.WORD) {\n this._output.space_before_token = false;\n\n // function name() vs function name ()\n // function* name() vs function* name ()\n // async name() vs async name ()\n // In ES6, you can also define the method properties of an object\n // var obj = {a: function() {}}\n // It can be abbreviated\n // var obj = {a() {}}\n // var obj = { a() {}} vs var obj = { a () {}}\n // var obj = { * a() {}} vs var obj = { * a () {}}\n var peek_back_two = this._tokens.peek(-3);\n if (this._options.space_after_named_function && peek_back_two) {\n // peek starts at next character so -1 is current token\n var peek_back_three = this._tokens.peek(-4);\n if (reserved_array(peek_back_two, ['async', 'function']) ||\n (peek_back_two.text === '*' && reserved_array(peek_back_three, ['async', 'function']))) {\n this._output.space_before_token = true;\n } else if (this._flags.mode === MODE.ObjectLiteral) {\n if ((peek_back_two.text === '{' || peek_back_two.text === ',') ||\n (peek_back_two.text === '*' && (peek_back_three.text === '{' || peek_back_three.text === ','))) {\n this._output.space_before_token = true;\n }\n } else if (this._flags.parent && this._flags.parent.class_start_block) {\n this._output.space_before_token = true;\n }\n }\n } else {\n // Support preserving wrapped arrow function expressions\n // a.b('c',\n // () => d.e\n // )\n this.allow_wrap_or_preserved_newline(current_token);\n }\n\n // function() vs function ()\n // yield*() vs yield* ()\n // function*() vs function* ()\n if ((this._flags.last_token.type === TOKEN.RESERVED && (this._flags.last_word === 'function' || this._flags.last_word === 'typeof')) ||\n (this._flags.last_token.text === '*' &&\n (in_array(this._last_last_text, ['function', 'yield']) ||\n (this._flags.mode === MODE.ObjectLiteral && in_array(this._last_last_text, ['{', ',']))))) {\n this._output.space_before_token = this._options.space_after_anon_function;\n }\n }\n\n if (this._flags.last_token.text === ';' || this._flags.last_token.type === TOKEN.START_BLOCK) {\n this.print_newline();\n } else if (this._flags.last_token.type === TOKEN.END_EXPR || this._flags.last_token.type === TOKEN.START_EXPR || this._flags.last_token.type === TOKEN.END_BLOCK || this._flags.last_token.text === '.' || this._flags.last_token.type === TOKEN.COMMA) {\n // do nothing on (( and )( and ][ and ]( and .(\n // TODO: Consider whether forcing this is required. Review failing tests when removed.\n this.allow_wrap_or_preserved_newline(current_token, current_token.newlines);\n }\n\n this.print_token(current_token);\n this.set_mode(next_mode);\n if (this._options.space_in_paren) {\n this._output.space_before_token = true;\n }\n\n // In all cases, if we newline while inside an expression it should be indented.\n this.indent();\n};\n\nBeautifier.prototype.handle_end_expr = function(current_token) {\n // statements inside expressions are not valid syntax, but...\n // statements must all be closed when their container closes\n while (this._flags.mode === MODE.Statement) {\n this.restore_mode();\n }\n\n this.handle_whitespace_and_comments(current_token);\n\n if (this._flags.multiline_frame) {\n this.allow_wrap_or_preserved_newline(current_token,\n current_token.text === ']' && is_array(this._flags.mode) && !this._options.keep_array_indentation);\n }\n\n if (this._options.space_in_paren) {\n if (this._flags.last_token.type === TOKEN.START_EXPR && !this._options.space_in_empty_paren) {\n // () [] no inner space in empty parens like these, ever, ref #320\n this._output.trim();\n this._output.space_before_token = false;\n } else {\n this._output.space_before_token = true;\n }\n }\n this.deindent();\n this.print_token(current_token);\n this.restore_mode();\n\n remove_redundant_indentation(this._output, this._previous_flags);\n\n // do {} while () // no statement required after\n if (this._flags.do_while && this._previous_flags.mode === MODE.Conditional) {\n this._previous_flags.mode = MODE.Expression;\n this._flags.do_block = false;\n this._flags.do_while = false;\n\n }\n};\n\nBeautifier.prototype.handle_start_block = function(current_token) {\n this.handle_whitespace_and_comments(current_token);\n\n // Check if this is should be treated as a ObjectLiteral\n var next_token = this._tokens.peek();\n var second_token = this._tokens.peek(1);\n if (this._flags.last_word === 'switch' && this._flags.last_token.type === TOKEN.END_EXPR) {\n this.set_mode(MODE.BlockStatement);\n this._flags.in_case_statement = true;\n } else if (this._flags.case_body) {\n this.set_mode(MODE.BlockStatement);\n } else if (second_token && (\n (in_array(second_token.text, [':', ',']) && in_array(next_token.type, [TOKEN.STRING, TOKEN.WORD, TOKEN.RESERVED])) ||\n (in_array(next_token.text, ['get', 'set', '...']) && in_array(second_token.type, [TOKEN.WORD, TOKEN.RESERVED]))\n )) {\n // We don't support TypeScript,but we didn't break it for a very long time.\n // We'll try to keep not breaking it.\n if (in_array(this._last_last_text, ['class', 'interface']) && !in_array(second_token.text, [':', ','])) {\n this.set_mode(MODE.BlockStatement);\n } else {\n this.set_mode(MODE.ObjectLiteral);\n }\n } else if (this._flags.last_token.type === TOKEN.OPERATOR && this._flags.last_token.text === '=>') {\n // arrow function: (param1, paramN) => { statements }\n this.set_mode(MODE.BlockStatement);\n } else if (in_array(this._flags.last_token.type, [TOKEN.EQUALS, TOKEN.START_EXPR, TOKEN.COMMA, TOKEN.OPERATOR]) ||\n reserved_array(this._flags.last_token, ['return', 'throw', 'import', 'default'])\n ) {\n // Detecting shorthand function syntax is difficult by scanning forward,\n // so check the surrounding context.\n // If the block is being returned, imported, export default, passed as arg,\n // assigned with = or assigned in a nested object, treat as an ObjectLiteral.\n this.set_mode(MODE.ObjectLiteral);\n } else {\n this.set_mode(MODE.BlockStatement);\n }\n\n if (this._flags.last_token) {\n if (reserved_array(this._flags.last_token.previous, ['class', 'extends'])) {\n this._flags.class_start_block = true;\n }\n }\n\n var empty_braces = !next_token.comments_before && next_token.text === '}';\n var empty_anonymous_function = empty_braces && this._flags.last_word === 'function' &&\n this._flags.last_token.type === TOKEN.END_EXPR;\n\n if (this._options.brace_preserve_inline) // check for inline, set inline_frame if so\n {\n // search forward for a newline wanted inside this block\n var index = 0;\n var check_token = null;\n this._flags.inline_frame = true;\n do {\n index += 1;\n check_token = this._tokens.peek(index - 1);\n if (check_token.newlines) {\n this._flags.inline_frame = false;\n break;\n }\n } while (check_token.type !== TOKEN.EOF &&\n !(check_token.type === TOKEN.END_BLOCK && check_token.opened === current_token));\n }\n\n if ((this._options.brace_style === \"expand\" ||\n (this._options.brace_style === \"none\" && current_token.newlines)) &&\n !this._flags.inline_frame) {\n if (this._flags.last_token.type !== TOKEN.OPERATOR &&\n (empty_anonymous_function ||\n this._flags.last_token.type === TOKEN.EQUALS ||\n (reserved_array(this._flags.last_token, special_words) && this._flags.last_token.text !== 'else'))) {\n this._output.space_before_token = true;\n } else {\n this.print_newline(false, true);\n }\n } else { // collapse || inline_frame\n if (is_array(this._previous_flags.mode) && (this._flags.last_token.type === TOKEN.START_EXPR || this._flags.last_token.type === TOKEN.COMMA)) {\n if (this._flags.last_token.type === TOKEN.COMMA || this._options.space_in_paren) {\n this._output.space_before_token = true;\n }\n\n if (this._flags.last_token.type === TOKEN.COMMA || (this._flags.last_token.type === TOKEN.START_EXPR && this._flags.inline_frame)) {\n this.allow_wrap_or_preserved_newline(current_token);\n this._previous_flags.multiline_frame = this._previous_flags.multiline_frame || this._flags.multiline_frame;\n this._flags.multiline_frame = false;\n }\n }\n if (this._flags.last_token.type !== TOKEN.OPERATOR && this._flags.last_token.type !== TOKEN.START_EXPR) {\n if (in_array(this._flags.last_token.type, [TOKEN.START_BLOCK, TOKEN.SEMICOLON]) && !this._flags.inline_frame) {\n this.print_newline();\n } else {\n this._output.space_before_token = true;\n }\n }\n }\n this.print_token(current_token);\n this.indent();\n\n // Except for specific cases, open braces are followed by a new line.\n if (!empty_braces && !(this._options.brace_preserve_inline && this._flags.inline_frame)) {\n this.print_newline();\n }\n};\n\nBeautifier.prototype.handle_end_block = function(current_token) {\n // statements must all be closed when their container closes\n this.handle_whitespace_and_comments(current_token);\n\n while (this._flags.mode === MODE.Statement) {\n this.restore_mode();\n }\n\n var empty_braces = this._flags.last_token.type === TOKEN.START_BLOCK;\n\n if (this._flags.inline_frame && !empty_braces) { // try inline_frame (only set if this._options.braces-preserve-inline) first\n this._output.space_before_token = true;\n } else if (this._options.brace_style === \"expand\") {\n if (!empty_braces) {\n this.print_newline();\n }\n } else {\n // skip {}\n if (!empty_braces) {\n if (is_array(this._flags.mode) && this._options.keep_array_indentation) {\n // we REALLY need a newline here, but newliner would skip that\n this._options.keep_array_indentation = false;\n this.print_newline();\n this._options.keep_array_indentation = true;\n\n } else {\n this.print_newline();\n }\n }\n }\n this.restore_mode();\n this.print_token(current_token);\n};\n\nBeautifier.prototype.handle_word = function(current_token) {\n if (current_token.type === TOKEN.RESERVED) {\n if (in_array(current_token.text, ['set', 'get']) && this._flags.mode !== MODE.ObjectLiteral) {\n current_token.type = TOKEN.WORD;\n } else if (current_token.text === 'import' && in_array(this._tokens.peek().text, ['(', '.'])) {\n current_token.type = TOKEN.WORD;\n } else if (in_array(current_token.text, ['as', 'from']) && !this._flags.import_block) {\n current_token.type = TOKEN.WORD;\n } else if (this._flags.mode === MODE.ObjectLiteral) {\n var next_token = this._tokens.peek();\n if (next_token.text === ':') {\n current_token.type = TOKEN.WORD;\n }\n }\n }\n\n if (this.start_of_statement(current_token)) {\n // The conditional starts the statement if appropriate.\n if (reserved_array(this._flags.last_token, ['var', 'let', 'const']) && current_token.type === TOKEN.WORD) {\n this._flags.declaration_statement = true;\n }\n } else if (current_token.newlines && !is_expression(this._flags.mode) &&\n (this._flags.last_token.type !== TOKEN.OPERATOR || (this._flags.last_token.text === '--' || this._flags.last_token.text === '++')) &&\n this._flags.last_token.type !== TOKEN.EQUALS &&\n (this._options.preserve_newlines || !reserved_array(this._flags.last_token, ['var', 'let', 'const', 'set', 'get']))) {\n this.handle_whitespace_and_comments(current_token);\n this.print_newline();\n } else {\n this.handle_whitespace_and_comments(current_token);\n }\n\n if (this._flags.do_block && !this._flags.do_while) {\n if (reserved_word(current_token, 'while')) {\n // do {} ## while ()\n this._output.space_before_token = true;\n this.print_token(current_token);\n this._output.space_before_token = true;\n this._flags.do_while = true;\n return;\n } else {\n // do {} should always have while as the next word.\n // if we don't see the expected while, recover\n this.print_newline();\n this._flags.do_block = false;\n }\n }\n\n // if may be followed by else, or not\n // Bare/inline ifs are tricky\n // Need to unwind the modes correctly: if (a) if (b) c(); else d(); else e();\n if (this._flags.if_block) {\n if (!this._flags.else_block && reserved_word(current_token, 'else')) {\n this._flags.else_block = true;\n } else {\n while (this._flags.mode === MODE.Statement) {\n this.restore_mode();\n }\n this._flags.if_block = false;\n this._flags.else_block = false;\n }\n }\n\n if (this._flags.in_case_statement && reserved_array(current_token, ['case', 'default'])) {\n this.print_newline();\n if (!this._flags.case_block && (this._flags.case_body || this._options.jslint_happy)) {\n // switch cases following one another\n this.deindent();\n }\n this._flags.case_body = false;\n\n this.print_token(current_token);\n this._flags.in_case = true;\n return;\n }\n\n if (this._flags.last_token.type === TOKEN.COMMA || this._flags.last_token.type === TOKEN.START_EXPR || this._flags.last_token.type === TOKEN.EQUALS || this._flags.last_token.type === TOKEN.OPERATOR) {\n if (!this.start_of_object_property() && !(\n // start of object property is different for numeric values with +/- prefix operators\n in_array(this._flags.last_token.text, ['+', '-']) && this._last_last_text === ':' && this._flags.parent.mode === MODE.ObjectLiteral)) {\n this.allow_wrap_or_preserved_newline(current_token);\n }\n }\n\n if (reserved_word(current_token, 'function')) {\n if (in_array(this._flags.last_token.text, ['}', ';']) ||\n (this._output.just_added_newline() && !(in_array(this._flags.last_token.text, ['(', '[', '{', ':', '=', ',']) || this._flags.last_token.type === TOKEN.OPERATOR))) {\n // make sure there is a nice clean space of at least one blank line\n // before a new function definition\n if (!this._output.just_added_blankline() && !current_token.comments_before) {\n this.print_newline();\n this.print_newline(true);\n }\n }\n if (this._flags.last_token.type === TOKEN.RESERVED || this._flags.last_token.type === TOKEN.WORD) {\n if (reserved_array(this._flags.last_token, ['get', 'set', 'new', 'export']) ||\n reserved_array(this._flags.last_token, newline_restricted_tokens)) {\n this._output.space_before_token = true;\n } else if (reserved_word(this._flags.last_token, 'default') && this._last_last_text === 'export') {\n this._output.space_before_token = true;\n } else if (this._flags.last_token.text === 'declare') {\n // accomodates Typescript declare function formatting\n this._output.space_before_token = true;\n } else {\n this.print_newline();\n }\n } else if (this._flags.last_token.type === TOKEN.OPERATOR || this._flags.last_token.text === '=') {\n // foo = function\n this._output.space_before_token = true;\n } else if (!this._flags.multiline_frame && (is_expression(this._flags.mode) || is_array(this._flags.mode))) {\n // (function\n } else {\n this.print_newline();\n }\n\n this.print_token(current_token);\n this._flags.last_word = current_token.text;\n return;\n }\n\n var prefix = 'NONE';\n\n if (this._flags.last_token.type === TOKEN.END_BLOCK) {\n\n if (this._previous_flags.inline_frame) {\n prefix = 'SPACE';\n } else if (!reserved_array(current_token, ['else', 'catch', 'finally', 'from'])) {\n prefix = 'NEWLINE';\n } else {\n if (this._options.brace_style === \"expand\" ||\n this._options.brace_style === \"end-expand\" ||\n (this._options.brace_style === \"none\" && current_token.newlines)) {\n prefix = 'NEWLINE';\n } else {\n prefix = 'SPACE';\n this._output.space_before_token = true;\n }\n }\n } else if (this._flags.last_token.type === TOKEN.SEMICOLON && this._flags.mode === MODE.BlockStatement) {\n // TODO: Should this be for STATEMENT as well?\n prefix = 'NEWLINE';\n } else if (this._flags.last_token.type === TOKEN.SEMICOLON && is_expression(this._flags.mode)) {\n prefix = 'SPACE';\n } else if (this._flags.last_token.type === TOKEN.STRING) {\n prefix = 'NEWLINE';\n } else if (this._flags.last_token.type === TOKEN.RESERVED || this._flags.last_token.type === TOKEN.WORD ||\n (this._flags.last_token.text === '*' &&\n (in_array(this._last_last_text, ['function', 'yield']) ||\n (this._flags.mode === MODE.ObjectLiteral && in_array(this._last_last_text, ['{', ',']))))) {\n prefix = 'SPACE';\n } else if (this._flags.last_token.type === TOKEN.START_BLOCK) {\n if (this._flags.inline_frame) {\n prefix = 'SPACE';\n } else {\n prefix = 'NEWLINE';\n }\n } else if (this._flags.last_token.type === TOKEN.END_EXPR) {\n this._output.space_before_token = true;\n prefix = 'NEWLINE';\n }\n\n if (reserved_array(current_token, line_starters) && this._flags.last_token.text !== ')') {\n if (this._flags.inline_frame || this._flags.last_token.text === 'else' || this._flags.last_token.text === 'export') {\n prefix = 'SPACE';\n } else {\n prefix = 'NEWLINE';\n }\n\n }\n\n if (reserved_array(current_token, ['else', 'catch', 'finally'])) {\n if ((!(this._flags.last_token.type === TOKEN.END_BLOCK && this._previous_flags.mode === MODE.BlockStatement) ||\n this._options.brace_style === \"expand\" ||\n this._options.brace_style === \"end-expand\" ||\n (this._options.brace_style === \"none\" && current_token.newlines)) &&\n !this._flags.inline_frame) {\n this.print_newline();\n } else {\n this._output.trim(true);\n var line = this._output.current_line;\n // If we trimmed and there's something other than a close block before us\n // put a newline back in. Handles '} // comment' scenario.\n if (line.last() !== '}') {\n this.print_newline();\n }\n this._output.space_before_token = true;\n }\n } else if (prefix === 'NEWLINE') {\n if (reserved_array(this._flags.last_token, special_words)) {\n // no newline between 'return nnn'\n this._output.space_before_token = true;\n } else if (this._flags.last_token.text === 'declare' && reserved_array(current_token, ['var', 'let', 'const'])) {\n // accomodates Typescript declare formatting\n this._output.space_before_token = true;\n } else if (this._flags.last_token.type !== TOKEN.END_EXPR) {\n if ((this._flags.last_token.type !== TOKEN.START_EXPR || !reserved_array(current_token, ['var', 'let', 'const'])) && this._flags.last_token.text !== ':') {\n // no need to force newline on 'var': for (var x = 0...)\n if (reserved_word(current_token, 'if') && reserved_word(current_token.previous, 'else')) {\n // no newline for } else if {\n this._output.space_before_token = true;\n } else {\n this.print_newline();\n }\n }\n } else if (reserved_array(current_token, line_starters) && this._flags.last_token.text !== ')') {\n this.print_newline();\n }\n } else if (this._flags.multiline_frame && is_array(this._flags.mode) && this._flags.last_token.text === ',' && this._last_last_text === '}') {\n this.print_newline(); // }, in lists get a newline treatment\n } else if (prefix === 'SPACE') {\n this._output.space_before_token = true;\n }\n if (current_token.previous && (current_token.previous.type === TOKEN.WORD || current_token.previous.type === TOKEN.RESERVED)) {\n this._output.space_before_token = true;\n }\n this.print_token(current_token);\n this._flags.last_word = current_token.text;\n\n if (current_token.type === TOKEN.RESERVED) {\n if (current_token.text === 'do') {\n this._flags.do_block = true;\n } else if (current_token.text === 'if') {\n this._flags.if_block = true;\n } else if (current_token.text === 'import') {\n this._flags.import_block = true;\n } else if (this._flags.import_block && reserved_word(current_token, 'from')) {\n this._flags.import_block = false;\n }\n }\n};\n\nBeautifier.prototype.handle_semicolon = function(current_token) {\n if (this.start_of_statement(current_token)) {\n // The conditional starts the statement if appropriate.\n // Semicolon can be the start (and end) of a statement\n this._output.space_before_token = false;\n } else {\n this.handle_whitespace_and_comments(current_token);\n }\n\n var next_token = this._tokens.peek();\n while (this._flags.mode === MODE.Statement &&\n !(this._flags.if_block && reserved_word(next_token, 'else')) &&\n !this._flags.do_block) {\n this.restore_mode();\n }\n\n // hacky but effective for the moment\n if (this._flags.import_block) {\n this._flags.import_block = false;\n }\n this.print_token(current_token);\n};\n\nBeautifier.prototype.handle_string = function(current_token) {\n if (current_token.text.startsWith(\"`\") && current_token.newlines === 0 && current_token.whitespace_before === '' && (current_token.previous.text === ')' || this._flags.last_token.type === TOKEN.WORD)) {\n //Conditional for detectign backtick strings\n } else if (this.start_of_statement(current_token)) {\n // The conditional starts the statement if appropriate.\n // One difference - strings want at least a space before\n this._output.space_before_token = true;\n } else {\n this.handle_whitespace_and_comments(current_token);\n if (this._flags.last_token.type === TOKEN.RESERVED || this._flags.last_token.type === TOKEN.WORD || this._flags.inline_frame) {\n this._output.space_before_token = true;\n } else if (this._flags.last_token.type === TOKEN.COMMA || this._flags.last_token.type === TOKEN.START_EXPR || this._flags.last_token.type === TOKEN.EQUALS || this._flags.last_token.type === TOKEN.OPERATOR) {\n if (!this.start_of_object_property()) {\n this.allow_wrap_or_preserved_newline(current_token);\n }\n } else if ((current_token.text.startsWith(\"`\") && this._flags.last_token.type === TOKEN.END_EXPR && (current_token.previous.text === ']' || current_token.previous.text === ')') && current_token.newlines === 0)) {\n this._output.space_before_token = true;\n } else {\n this.print_newline();\n }\n }\n this.print_token(current_token);\n};\n\nBeautifier.prototype.handle_equals = function(current_token) {\n if (this.start_of_statement(current_token)) {\n // The conditional starts the statement if appropriate.\n } else {\n this.handle_whitespace_and_comments(current_token);\n }\n\n if (this._flags.declaration_statement) {\n // just got an '=' in a var-line, different formatting/line-breaking, etc will now be done\n this._flags.declaration_assignment = true;\n }\n this._output.space_before_token = true;\n this.print_token(current_token);\n this._output.space_before_token = true;\n};\n\nBeautifier.prototype.handle_comma = function(current_token) {\n this.handle_whitespace_and_comments(current_token, true);\n\n this.print_token(current_token);\n this._output.space_before_token = true;\n if (this._flags.declaration_statement) {\n if (is_expression(this._flags.parent.mode)) {\n // do not break on comma, for(var a = 1, b = 2)\n this._flags.declaration_assignment = false;\n }\n\n if (this._flags.declaration_assignment) {\n this._flags.declaration_assignment = false;\n this.print_newline(false, true);\n } else if (this._options.comma_first) {\n // for comma-first, we want to allow a newline before the comma\n // to turn into a newline after the comma, which we will fixup later\n this.allow_wrap_or_preserved_newline(current_token);\n }\n } else if (this._flags.mode === MODE.ObjectLiteral ||\n (this._flags.mode === MODE.Statement && this._flags.parent.mode === MODE.ObjectLiteral)) {\n if (this._flags.mode === MODE.Statement) {\n this.restore_mode();\n }\n\n if (!this._flags.inline_frame) {\n this.print_newline();\n }\n } else if (this._options.comma_first) {\n // EXPR or DO_BLOCK\n // for comma-first, we want to allow a newline before the comma\n // to turn into a newline after the comma, which we will fixup later\n this.allow_wrap_or_preserved_newline(current_token);\n }\n};\n\nBeautifier.prototype.handle_operator = function(current_token) {\n var isGeneratorAsterisk = current_token.text === '*' &&\n (reserved_array(this._flags.last_token, ['function', 'yield']) ||\n (in_array(this._flags.last_token.type, [TOKEN.START_BLOCK, TOKEN.COMMA, TOKEN.END_BLOCK, TOKEN.SEMICOLON]))\n );\n var isUnary = in_array(current_token.text, ['-', '+']) && (\n in_array(this._flags.last_token.type, [TOKEN.START_BLOCK, TOKEN.START_EXPR, TOKEN.EQUALS, TOKEN.OPERATOR]) ||\n in_array(this._flags.last_token.text, line_starters) ||\n this._flags.last_token.text === ','\n );\n\n if (this.start_of_statement(current_token)) {\n // The conditional starts the statement if appropriate.\n } else {\n var preserve_statement_flags = !isGeneratorAsterisk;\n this.handle_whitespace_and_comments(current_token, preserve_statement_flags);\n }\n\n // hack for actionscript's import .*;\n if (current_token.text === '*' && this._flags.last_token.type === TOKEN.DOT) {\n this.print_token(current_token);\n return;\n }\n\n if (current_token.text === '::') {\n // no spaces around exotic namespacing syntax operator\n this.print_token(current_token);\n return;\n }\n\n if (in_array(current_token.text, ['-', '+']) && this.start_of_object_property()) {\n // numeric value with +/- symbol in front as a property\n this.print_token(current_token);\n return;\n }\n\n // Allow line wrapping between operators when operator_position is\n // set to before or preserve\n if (this._flags.last_token.type === TOKEN.OPERATOR && in_array(this._options.operator_position, OPERATOR_POSITION_BEFORE_OR_PRESERVE)) {\n this.allow_wrap_or_preserved_newline(current_token);\n }\n\n if (current_token.text === ':' && this._flags.in_case) {\n this.print_token(current_token);\n\n this._flags.in_case = false;\n this._flags.case_body = true;\n if (this._tokens.peek().type !== TOKEN.START_BLOCK) {\n this.indent();\n this.print_newline();\n this._flags.case_block = false;\n } else {\n this._flags.case_block = true;\n this._output.space_before_token = true;\n }\n return;\n }\n\n var space_before = true;\n var space_after = true;\n var in_ternary = false;\n if (current_token.text === ':') {\n if (this._flags.ternary_depth === 0) {\n // Colon is invalid javascript outside of ternary and object, but do our best to guess what was meant.\n space_before = false;\n } else {\n this._flags.ternary_depth -= 1;\n in_ternary = true;\n }\n } else if (current_token.text === '?') {\n this._flags.ternary_depth += 1;\n }\n\n // let's handle the operator_position option prior to any conflicting logic\n if (!isUnary && !isGeneratorAsterisk && this._options.preserve_newlines && in_array(current_token.text, positionable_operators)) {\n var isColon = current_token.text === ':';\n var isTernaryColon = (isColon && in_ternary);\n var isOtherColon = (isColon && !in_ternary);\n\n switch (this._options.operator_position) {\n case OPERATOR_POSITION.before_newline:\n // if the current token is : and it's not a ternary statement then we set space_before to false\n this._output.space_before_token = !isOtherColon;\n\n this.print_token(current_token);\n\n if (!isColon || isTernaryColon) {\n this.allow_wrap_or_preserved_newline(current_token);\n }\n\n this._output.space_before_token = true;\n return;\n\n case OPERATOR_POSITION.after_newline:\n // if the current token is anything but colon, or (via deduction) it's a colon and in a ternary statement,\n // then print a newline.\n\n this._output.space_before_token = true;\n\n if (!isColon || isTernaryColon) {\n if (this._tokens.peek().newlines) {\n this.print_newline(false, true);\n } else {\n this.allow_wrap_or_preserved_newline(current_token);\n }\n } else {\n this._output.space_before_token = false;\n }\n\n this.print_token(current_token);\n\n this._output.space_before_token = true;\n return;\n\n case OPERATOR_POSITION.preserve_newline:\n if (!isOtherColon) {\n this.allow_wrap_or_preserved_newline(current_token);\n }\n\n // if we just added a newline, or the current token is : and it's not a ternary statement,\n // then we set space_before to false\n space_before = !(this._output.just_added_newline() || isOtherColon);\n\n this._output.space_before_token = space_before;\n this.print_token(current_token);\n this._output.space_before_token = true;\n return;\n }\n }\n\n if (isGeneratorAsterisk) {\n this.allow_wrap_or_preserved_newline(current_token);\n space_before = false;\n var next_token = this._tokens.peek();\n space_after = next_token && in_array(next_token.type, [TOKEN.WORD, TOKEN.RESERVED]);\n } else if (current_token.text === '...') {\n this.allow_wrap_or_preserved_newline(current_token);\n space_before = this._flags.last_token.type === TOKEN.START_BLOCK;\n space_after = false;\n } else if (in_array(current_token.text, ['--', '++', '!', '~']) || isUnary) {\n // unary operators (and binary +/- pretending to be unary) special cases\n if (this._flags.last_token.type === TOKEN.COMMA || this._flags.last_token.type === TOKEN.START_EXPR) {\n this.allow_wrap_or_preserved_newline(current_token);\n }\n\n space_before = false;\n space_after = false;\n\n // http://www.ecma-international.org/ecma-262/5.1/#sec-7.9.1\n // if there is a newline between -- or ++ and anything else we should preserve it.\n if (current_token.newlines && (current_token.text === '--' || current_token.text === '++' || current_token.text === '~')) {\n var new_line_needed = reserved_array(this._flags.last_token, special_words) && current_token.newlines;\n if (new_line_needed && (this._previous_flags.if_block || this._previous_flags.else_block)) {\n this.restore_mode();\n }\n this.print_newline(new_line_needed, true);\n }\n\n if (this._flags.last_token.text === ';' && is_expression(this._flags.mode)) {\n // for (;; ++i)\n // ^^^\n space_before = true;\n }\n\n if (this._flags.last_token.type === TOKEN.RESERVED) {\n space_before = true;\n } else if (this._flags.last_token.type === TOKEN.END_EXPR) {\n space_before = !(this._flags.last_token.text === ']' && (current_token.text === '--' || current_token.text === '++'));\n } else if (this._flags.last_token.type === TOKEN.OPERATOR) {\n // a++ + ++b;\n // a - -b\n space_before = in_array(current_token.text, ['--', '-', '++', '+']) && in_array(this._flags.last_token.text, ['--', '-', '++', '+']);\n // + and - are not unary when preceeded by -- or ++ operator\n // a-- + b\n // a * +b\n // a - -b\n if (in_array(current_token.text, ['+', '-']) && in_array(this._flags.last_token.text, ['--', '++'])) {\n space_after = true;\n }\n }\n\n\n if (((this._flags.mode === MODE.BlockStatement && !this._flags.inline_frame) || this._flags.mode === MODE.Statement) &&\n (this._flags.last_token.text === '{' || this._flags.last_token.text === ';')) {\n // { foo; --i }\n // foo(); --bar;\n this.print_newline();\n }\n }\n\n this._output.space_before_token = this._output.space_before_token || space_before;\n this.print_token(current_token);\n this._output.space_before_token = space_after;\n};\n\nBeautifier.prototype.handle_block_comment = function(current_token, preserve_statement_flags) {\n if (this._output.raw) {\n this._output.add_raw_token(current_token);\n if (current_token.directives && current_token.directives.preserve === 'end') {\n // If we're testing the raw output behavior, do not allow a directive to turn it off.\n this._output.raw = this._options.test_output_raw;\n }\n return;\n }\n\n if (current_token.directives) {\n this.print_newline(false, preserve_statement_flags);\n this.print_token(current_token);\n if (current_token.directives.preserve === 'start') {\n this._output.raw = true;\n }\n this.print_newline(false, true);\n return;\n }\n\n // inline block\n if (!acorn.newline.test(current_token.text) && !current_token.newlines) {\n this._output.space_before_token = true;\n this.print_token(current_token);\n this._output.space_before_token = true;\n return;\n } else {\n this.print_block_commment(current_token, preserve_statement_flags);\n }\n};\n\nBeautifier.prototype.print_block_commment = function(current_token, preserve_statement_flags) {\n var lines = split_linebreaks(current_token.text);\n var j; // iterator for this case\n var javadoc = false;\n var starless = false;\n var lastIndent = current_token.whitespace_before;\n var lastIndentLength = lastIndent.length;\n\n // block comment starts with a new line\n this.print_newline(false, preserve_statement_flags);\n\n // first line always indented\n this.print_token_line_indentation(current_token);\n this._output.add_token(lines[0]);\n this.print_newline(false, preserve_statement_flags);\n\n\n if (lines.length > 1) {\n lines = lines.slice(1);\n javadoc = all_lines_start_with(lines, '*');\n starless = each_line_matches_indent(lines, lastIndent);\n\n if (javadoc) {\n this._flags.alignment = 1;\n }\n\n for (j = 0; j < lines.length; j++) {\n if (javadoc) {\n // javadoc: reformat and re-indent\n this.print_token_line_indentation(current_token);\n this._output.add_token(ltrim(lines[j]));\n } else if (starless && lines[j]) {\n // starless: re-indent non-empty content, avoiding trim\n this.print_token_line_indentation(current_token);\n this._output.add_token(lines[j].substring(lastIndentLength));\n } else {\n // normal comments output raw\n this._output.current_line.set_indent(-1);\n this._output.add_token(lines[j]);\n }\n\n // for comments on their own line or more than one line, make sure there's a new line after\n this.print_newline(false, preserve_statement_flags);\n }\n\n this._flags.alignment = 0;\n }\n};\n\n\nBeautifier.prototype.handle_comment = function(current_token, preserve_statement_flags) {\n if (current_token.newlines) {\n this.print_newline(false, preserve_statement_flags);\n } else {\n this._output.trim(true);\n }\n\n this._output.space_before_token = true;\n this.print_token(current_token);\n this.print_newline(false, preserve_statement_flags);\n};\n\nBeautifier.prototype.handle_dot = function(current_token) {\n if (this.start_of_statement(current_token)) {\n // The conditional starts the statement if appropriate.\n } else {\n this.handle_whitespace_and_comments(current_token, true);\n }\n\n if (this._flags.last_token.text.match('^[0-9]+$')) {\n this._output.space_before_token = true;\n }\n\n if (reserved_array(this._flags.last_token, special_words)) {\n this._output.space_before_token = false;\n } else {\n // allow preserved newlines before dots in general\n // force newlines on dots after close paren when break_chained - for bar().baz()\n this.allow_wrap_or_preserved_newline(current_token,\n this._flags.last_token.text === ')' && this._options.break_chained_methods);\n }\n\n // Only unindent chained method dot if this dot starts a new line.\n // Otherwise the automatic extra indentation removal will handle the over indent\n if (this._options.unindent_chained_methods && this._output.just_added_newline()) {\n this.deindent();\n }\n\n this.print_token(current_token);\n};\n\nBeautifier.prototype.handle_unknown = function(current_token, preserve_statement_flags) {\n this.print_token(current_token);\n\n if (current_token.text[current_token.text.length - 1] === '\\n') {\n this.print_newline(false, preserve_statement_flags);\n }\n};\n\nBeautifier.prototype.handle_eof = function(current_token) {\n // Unwind any open statements\n while (this._flags.mode === MODE.Statement) {\n this.restore_mode();\n }\n this.handle_whitespace_and_comments(current_token);\n};\n\nmodule.exports.Beautifier = Beautifier;\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module) {\n\n/*jshint node:true */\n/*\n The MIT License (MIT)\n\n Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors.\n\n Permission is hereby granted, free of charge, to any person\n obtaining a copy of this software and associated documentation files\n (the \"Software\"), to deal in the Software without restriction,\n including without limitation the rights to use, copy, modify, merge,\n publish, distribute, sublicense, and/or sell copies of the Software,\n and to permit persons to whom the Software is furnished to do so,\n subject to the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\n BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n*/\n\n\n\nfunction OutputLine(parent) {\n this.__parent = parent;\n this.__character_count = 0;\n // use indent_count as a marker for this.__lines that have preserved indentation\n this.__indent_count = -1;\n this.__alignment_count = 0;\n this.__wrap_point_index = 0;\n this.__wrap_point_character_count = 0;\n this.__wrap_point_indent_count = -1;\n this.__wrap_point_alignment_count = 0;\n\n this.__items = [];\n}\n\nOutputLine.prototype.clone_empty = function() {\n var line = new OutputLine(this.__parent);\n line.set_indent(this.__indent_count, this.__alignment_count);\n return line;\n};\n\nOutputLine.prototype.item = function(index) {\n if (index < 0) {\n return this.__items[this.__items.length + index];\n } else {\n return this.__items[index];\n }\n};\n\nOutputLine.prototype.has_match = function(pattern) {\n for (var lastCheckedOutput = this.__items.length - 1; lastCheckedOutput >= 0; lastCheckedOutput--) {\n if (this.__items[lastCheckedOutput].match(pattern)) {\n return true;\n }\n }\n return false;\n};\n\nOutputLine.prototype.set_indent = function(indent, alignment) {\n if (this.is_empty()) {\n this.__indent_count = indent || 0;\n this.__alignment_count = alignment || 0;\n this.__character_count = this.__parent.get_indent_size(this.__indent_count, this.__alignment_count);\n }\n};\n\nOutputLine.prototype._set_wrap_point = function() {\n if (this.__parent.wrap_line_length) {\n this.__wrap_point_index = this.__items.length;\n this.__wrap_point_character_count = this.__character_count;\n this.__wrap_point_indent_count = this.__parent.next_line.__indent_count;\n this.__wrap_point_alignment_count = this.__parent.next_line.__alignment_count;\n }\n};\n\nOutputLine.prototype._should_wrap = function() {\n return this.__wrap_point_index &&\n this.__character_count > this.__parent.wrap_line_length &&\n this.__wrap_point_character_count > this.__parent.next_line.__character_count;\n};\n\nOutputLine.prototype._allow_wrap = function() {\n if (this._should_wrap()) {\n this.__parent.add_new_line();\n var next = this.__parent.current_line;\n next.set_indent(this.__wrap_point_indent_count, this.__wrap_point_alignment_count);\n next.__items = this.__items.slice(this.__wrap_point_index);\n this.__items = this.__items.slice(0, this.__wrap_point_index);\n\n next.__character_count += this.__character_count - this.__wrap_point_character_count;\n this.__character_count = this.__wrap_point_character_count;\n\n if (next.__items[0] === \" \") {\n next.__items.splice(0, 1);\n next.__character_count -= 1;\n }\n return true;\n }\n return false;\n};\n\nOutputLine.prototype.is_empty = function() {\n return this.__items.length === 0;\n};\n\nOutputLine.prototype.last = function() {\n if (!this.is_empty()) {\n return this.__items[this.__items.length - 1];\n } else {\n return null;\n }\n};\n\nOutputLine.prototype.push = function(item) {\n this.__items.push(item);\n var last_newline_index = item.lastIndexOf('\\n');\n if (last_newline_index !== -1) {\n this.__character_count = item.length - last_newline_index;\n } else {\n this.__character_count += item.length;\n }\n};\n\nOutputLine.prototype.pop = function() {\n var item = null;\n if (!this.is_empty()) {\n item = this.__items.pop();\n this.__character_count -= item.length;\n }\n return item;\n};\n\n\nOutputLine.prototype._remove_indent = function() {\n if (this.__indent_count > 0) {\n this.__indent_count -= 1;\n this.__character_count -= this.__parent.indent_size;\n }\n};\n\nOutputLine.prototype._remove_wrap_indent = function() {\n if (this.__wrap_point_indent_count > 0) {\n this.__wrap_point_indent_count -= 1;\n }\n};\nOutputLine.prototype.trim = function() {\n while (this.last() === ' ') {\n this.__items.pop();\n this.__character_count -= 1;\n }\n};\n\nOutputLine.prototype.toString = function() {\n var result = '';\n if (this.is_empty()) {\n if (this.__parent.indent_empty_lines) {\n result = this.__parent.get_indent_string(this.__indent_count);\n }\n } else {\n result = this.__parent.get_indent_string(this.__indent_count, this.__alignment_count);\n result += this.__items.join('');\n }\n return result;\n};\n\nfunction IndentStringCache(options, baseIndentString) {\n this.__cache = [''];\n this.__indent_size = options.indent_size;\n this.__indent_string = options.indent_char;\n if (!options.indent_with_tabs) {\n this.__indent_string = new Array(options.indent_size + 1).join(options.indent_char);\n }\n\n // Set to null to continue support for auto detection of base indent\n baseIndentString = baseIndentString || '';\n if (options.indent_level > 0) {\n baseIndentString = new Array(options.indent_level + 1).join(this.__indent_string);\n }\n\n this.__base_string = baseIndentString;\n this.__base_string_length = baseIndentString.length;\n}\n\nIndentStringCache.prototype.get_indent_size = function(indent, column) {\n var result = this.__base_string_length;\n column = column || 0;\n if (indent < 0) {\n result = 0;\n }\n result += indent * this.__indent_size;\n result += column;\n return result;\n};\n\nIndentStringCache.prototype.get_indent_string = function(indent_level, column) {\n var result = this.__base_string;\n column = column || 0;\n if (indent_level < 0) {\n indent_level = 0;\n result = '';\n }\n column += indent_level * this.__indent_size;\n this.__ensure_cache(column);\n result += this.__cache[column];\n return result;\n};\n\nIndentStringCache.prototype.__ensure_cache = function(column) {\n while (column >= this.__cache.length) {\n this.__add_column();\n }\n};\n\nIndentStringCache.prototype.__add_column = function() {\n var column = this.__cache.length;\n var indent = 0;\n var result = '';\n if (this.__indent_size && column >= this.__indent_size) {\n indent = Math.floor(column / this.__indent_size);\n column -= indent * this.__indent_size;\n result = new Array(indent + 1).join(this.__indent_string);\n }\n if (column) {\n result += new Array(column + 1).join(' ');\n }\n\n this.__cache.push(result);\n};\n\nfunction Output(options, baseIndentString) {\n this.__indent_cache = new IndentStringCache(options, baseIndentString);\n this.raw = false;\n this._end_with_newline = options.end_with_newline;\n this.indent_size = options.indent_size;\n this.wrap_line_length = options.wrap_line_length;\n this.indent_empty_lines = options.indent_empty_lines;\n this.__lines = [];\n this.previous_line = null;\n this.current_line = null;\n this.next_line = new OutputLine(this);\n this.space_before_token = false;\n this.non_breaking_space = false;\n this.previous_token_wrapped = false;\n // initialize\n this.__add_outputline();\n}\n\nOutput.prototype.__add_outputline = function() {\n this.previous_line = this.current_line;\n this.current_line = this.next_line.clone_empty();\n this.__lines.push(this.current_line);\n};\n\nOutput.prototype.get_line_number = function() {\n return this.__lines.length;\n};\n\nOutput.prototype.get_indent_string = function(indent, column) {\n return this.__indent_cache.get_indent_string(indent, column);\n};\n\nOutput.prototype.get_indent_size = function(indent, column) {\n return this.__indent_cache.get_indent_size(indent, column);\n};\n\nOutput.prototype.is_empty = function() {\n return !this.previous_line && this.current_line.is_empty();\n};\n\nOutput.prototype.add_new_line = function(force_newline) {\n // never newline at the start of file\n // otherwise, newline only if we didn't just add one or we're forced\n if (this.is_empty() ||\n (!force_newline && this.just_added_newline())) {\n return false;\n }\n\n // if raw output is enabled, don't print additional newlines,\n // but still return True as though you had\n if (!this.raw) {\n this.__add_outputline();\n }\n return true;\n};\n\nOutput.prototype.get_code = function(eol) {\n this.trim(true);\n\n // handle some edge cases where the last tokens\n // has text that ends with newline(s)\n var last_item = this.current_line.pop();\n if (last_item) {\n if (last_item[last_item.length - 1] === '\\n') {\n last_item = last_item.replace(/\\n+$/g, '');\n }\n this.current_line.push(last_item);\n }\n\n if (this._end_with_newline) {\n this.__add_outputline();\n }\n\n var sweet_code = this.__lines.join('\\n');\n\n if (eol !== '\\n') {\n sweet_code = sweet_code.replace(/[\\n]/g, eol);\n }\n return sweet_code;\n};\n\nOutput.prototype.set_wrap_point = function() {\n this.current_line._set_wrap_point();\n};\n\nOutput.prototype.set_indent = function(indent, alignment) {\n indent = indent || 0;\n alignment = alignment || 0;\n\n // Next line stores alignment values\n this.next_line.set_indent(indent, alignment);\n\n // Never indent your first output indent at the start of the file\n if (this.__lines.length > 1) {\n this.current_line.set_indent(indent, alignment);\n return true;\n }\n\n this.current_line.set_indent();\n return false;\n};\n\nOutput.prototype.add_raw_token = function(token) {\n for (var x = 0; x < token.newlines; x++) {\n this.__add_outputline();\n }\n this.current_line.set_indent(-1);\n this.current_line.push(token.whitespace_before);\n this.current_line.push(token.text);\n this.space_before_token = false;\n this.non_breaking_space = false;\n this.previous_token_wrapped = false;\n};\n\nOutput.prototype.add_token = function(printable_token) {\n this.__add_space_before_token();\n this.current_line.push(printable_token);\n this.space_before_token = false;\n this.non_breaking_space = false;\n this.previous_token_wrapped = this.current_line._allow_wrap();\n};\n\nOutput.prototype.__add_space_before_token = function() {\n if (this.space_before_token && !this.just_added_newline()) {\n if (!this.non_breaking_space) {\n this.set_wrap_point();\n }\n this.current_line.push(' ');\n }\n};\n\nOutput.prototype.remove_indent = function(index) {\n var output_length = this.__lines.length;\n while (index < output_length) {\n this.__lines[index]._remove_indent();\n index++;\n }\n this.current_line._remove_wrap_indent();\n};\n\nOutput.prototype.trim = function(eat_newlines) {\n eat_newlines = (eat_newlines === undefined) ? false : eat_newlines;\n\n this.current_line.trim();\n\n while (eat_newlines && this.__lines.length > 1 &&\n this.current_line.is_empty()) {\n this.__lines.pop();\n this.current_line = this.__lines[this.__lines.length - 1];\n this.current_line.trim();\n }\n\n this.previous_line = this.__lines.length > 1 ?\n this.__lines[this.__lines.length - 2] : null;\n};\n\nOutput.prototype.just_added_newline = function() {\n return this.current_line.is_empty();\n};\n\nOutput.prototype.just_added_blankline = function() {\n return this.is_empty() ||\n (this.current_line.is_empty() && this.previous_line.is_empty());\n};\n\nOutput.prototype.ensure_empty_line_above = function(starts_with, ends_with) {\n var index = this.__lines.length - 2;\n while (index >= 0) {\n var potentialEmptyLine = this.__lines[index];\n if (potentialEmptyLine.is_empty()) {\n break;\n } else if (potentialEmptyLine.item(0).indexOf(starts_with) !== 0 &&\n potentialEmptyLine.item(-1) !== ends_with) {\n this.__lines.splice(index + 1, 0, new OutputLine(this));\n this.previous_line = this.__lines[this.__lines.length - 2];\n break;\n }\n index--;\n }\n};\n\nmodule.exports.Output = Output;\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module) {\n\n/*jshint node:true */\n/*\n\n The MIT License (MIT)\n\n Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors.\n\n Permission is hereby granted, free of charge, to any person\n obtaining a copy of this software and associated documentation files\n (the \"Software\"), to deal in the Software without restriction,\n including without limitation the rights to use, copy, modify, merge,\n publish, distribute, sublicense, and/or sell copies of the Software,\n and to permit persons to whom the Software is furnished to do so,\n subject to the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\n BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n*/\n\n\n\nfunction Token(type, text, newlines, whitespace_before) {\n this.type = type;\n this.text = text;\n\n // comments_before are\n // comments that have a new line before them\n // and may or may not have a newline after\n // this is a set of comments before\n this.comments_before = null; /* inline comment*/\n\n\n // this.comments_after = new TokenStream(); // no new line before and newline after\n this.newlines = newlines || 0;\n this.whitespace_before = whitespace_before || '';\n this.parent = null;\n this.next = null;\n this.previous = null;\n this.opened = null;\n this.closed = null;\n this.directives = null;\n}\n\n\nmodule.exports.Token = Token;\n\n\n/***/ }),\n/* 4 */\n/***/ (function(__unused_webpack_module, exports) {\n\n/* jshint node: true, curly: false */\n// Parts of this section of code is taken from acorn.\n//\n// Acorn was written by Marijn Haverbeke and released under an MIT\n// license. The Unicode regexps (for identifiers and whitespace) were\n// taken from [Esprima](http://esprima.org) by Ariya Hidayat.\n//\n// Git repositories for Acorn are available at\n//\n// http://marijnhaverbeke.nl/git/acorn\n// https://github.com/marijnh/acorn.git\n\n// ## Character categories\n\n\n\n\n// acorn used char codes to squeeze the last bit of performance out\n// Beautifier is okay without that, so we're using regex\n// permit # (23), $ (36), and @ (64). @ is used in ES7 decorators.\n// 65 through 91 are uppercase letters.\n// permit _ (95).\n// 97 through 123 are lowercase letters.\nvar baseASCIIidentifierStartChars = \"\\\\x23\\\\x24\\\\x40\\\\x41-\\\\x5a\\\\x5f\\\\x61-\\\\x7a\";\n\n// inside an identifier @ is not allowed but 0-9 are.\nvar baseASCIIidentifierChars = \"\\\\x24\\\\x30-\\\\x39\\\\x41-\\\\x5a\\\\x5f\\\\x61-\\\\x7a\";\n\n// Big ugly regular expressions that match characters in the\n// whitespace, identifier, and identifier-start categories. These\n// are only applied when a character is found to actually have a\n// code point above 128.\nvar nonASCIIidentifierStartChars = \"\\\\xaa\\\\xb5\\\\xba\\\\xc0-\\\\xd6\\\\xd8-\\\\xf6\\\\xf8-\\\\u02c1\\\\u02c6-\\\\u02d1\\\\u02e0-\\\\u02e4\\\\u02ec\\\\u02ee\\\\u0370-\\\\u0374\\\\u0376\\\\u0377\\\\u037a-\\\\u037d\\\\u0386\\\\u0388-\\\\u038a\\\\u038c\\\\u038e-\\\\u03a1\\\\u03a3-\\\\u03f5\\\\u03f7-\\\\u0481\\\\u048a-\\\\u0527\\\\u0531-\\\\u0556\\\\u0559\\\\u0561-\\\\u0587\\\\u05d0-\\\\u05ea\\\\u05f0-\\\\u05f2\\\\u0620-\\\\u064a\\\\u066e\\\\u066f\\\\u0671-\\\\u06d3\\\\u06d5\\\\u06e5\\\\u06e6\\\\u06ee\\\\u06ef\\\\u06fa-\\\\u06fc\\\\u06ff\\\\u0710\\\\u0712-\\\\u072f\\\\u074d-\\\\u07a5\\\\u07b1\\\\u07ca-\\\\u07ea\\\\u07f4\\\\u07f5\\\\u07fa\\\\u0800-\\\\u0815\\\\u081a\\\\u0824\\\\u0828\\\\u0840-\\\\u0858\\\\u08a0\\\\u08a2-\\\\u08ac\\\\u0904-\\\\u0939\\\\u093d\\\\u0950\\\\u0958-\\\\u0961\\\\u0971-\\\\u0977\\\\u0979-\\\\u097f\\\\u0985-\\\\u098c\\\\u098f\\\\u0990\\\\u0993-\\\\u09a8\\\\u09aa-\\\\u09b0\\\\u09b2\\\\u09b6-\\\\u09b9\\\\u09bd\\\\u09ce\\\\u09dc\\\\u09dd\\\\u09df-\\\\u09e1\\\\u09f0\\\\u09f1\\\\u0a05-\\\\u0a0a\\\\u0a0f\\\\u0a10\\\\u0a13-\\\\u0a28\\\\u0a2a-\\\\u0a30\\\\u0a32\\\\u0a33\\\\u0a35\\\\u0a36\\\\u0a38\\\\u0a39\\\\u0a59-\\\\u0a5c\\\\u0a5e\\\\u0a72-\\\\u0a74\\\\u0a85-\\\\u0a8d\\\\u0a8f-\\\\u0a91\\\\u0a93-\\\\u0aa8\\\\u0aaa-\\\\u0ab0\\\\u0ab2\\\\u0ab3\\\\u0ab5-\\\\u0ab9\\\\u0abd\\\\u0ad0\\\\u0ae0\\\\u0ae1\\\\u0b05-\\\\u0b0c\\\\u0b0f\\\\u0b10\\\\u0b13-\\\\u0b28\\\\u0b2a-\\\\u0b30\\\\u0b32\\\\u0b33\\\\u0b35-\\\\u0b39\\\\u0b3d\\\\u0b5c\\\\u0b5d\\\\u0b5f-\\\\u0b61\\\\u0b71\\\\u0b83\\\\u0b85-\\\\u0b8a\\\\u0b8e-\\\\u0b90\\\\u0b92-\\\\u0b95\\\\u0b99\\\\u0b9a\\\\u0b9c\\\\u0b9e\\\\u0b9f\\\\u0ba3\\\\u0ba4\\\\u0ba8-\\\\u0baa\\\\u0bae-\\\\u0bb9\\\\u0bd0\\\\u0c05-\\\\u0c0c\\\\u0c0e-\\\\u0c10\\\\u0c12-\\\\u0c28\\\\u0c2a-\\\\u0c33\\\\u0c35-\\\\u0c39\\\\u0c3d\\\\u0c58\\\\u0c59\\\\u0c60\\\\u0c61\\\\u0c85-\\\\u0c8c\\\\u0c8e-\\\\u0c90\\\\u0c92-\\\\u0ca8\\\\u0caa-\\\\u0cb3\\\\u0cb5-\\\\u0cb9\\\\u0cbd\\\\u0cde\\\\u0ce0\\\\u0ce1\\\\u0cf1\\\\u0cf2\\\\u0d05-\\\\u0d0c\\\\u0d0e-\\\\u0d10\\\\u0d12-\\\\u0d3a\\\\u0d3d\\\\u0d4e\\\\u0d60\\\\u0d61\\\\u0d7a-\\\\u0d7f\\\\u0d85-\\\\u0d96\\\\u0d9a-\\\\u0db1\\\\u0db3-\\\\u0dbb\\\\u0dbd\\\\u0dc0-\\\\u0dc6\\\\u0e01-\\\\u0e30\\\\u0e32\\\\u0e33\\\\u0e40-\\\\u0e46\\\\u0e81\\\\u0e82\\\\u0e84\\\\u0e87\\\\u0e88\\\\u0e8a\\\\u0e8d\\\\u0e94-\\\\u0e97\\\\u0e99-\\\\u0e9f\\\\u0ea1-\\\\u0ea3\\\\u0ea5\\\\u0ea7\\\\u0eaa\\\\u0eab\\\\u0ead-\\\\u0eb0\\\\u0eb2\\\\u0eb3\\\\u0ebd\\\\u0ec0-\\\\u0ec4\\\\u0ec6\\\\u0edc-\\\\u0edf\\\\u0f00\\\\u0f40-\\\\u0f47\\\\u0f49-\\\\u0f6c\\\\u0f88-\\\\u0f8c\\\\u1000-\\\\u102a\\\\u103f\\\\u1050-\\\\u1055\\\\u105a-\\\\u105d\\\\u1061\\\\u1065\\\\u1066\\\\u106e-\\\\u1070\\\\u1075-\\\\u1081\\\\u108e\\\\u10a0-\\\\u10c5\\\\u10c7\\\\u10cd\\\\u10d0-\\\\u10fa\\\\u10fc-\\\\u1248\\\\u124a-\\\\u124d\\\\u1250-\\\\u1256\\\\u1258\\\\u125a-\\\\u125d\\\\u1260-\\\\u1288\\\\u128a-\\\\u128d\\\\u1290-\\\\u12b0\\\\u12b2-\\\\u12b5\\\\u12b8-\\\\u12be\\\\u12c0\\\\u12c2-\\\\u12c5\\\\u12c8-\\\\u12d6\\\\u12d8-\\\\u1310\\\\u1312-\\\\u1315\\\\u1318-\\\\u135a\\\\u1380-\\\\u138f\\\\u13a0-\\\\u13f4\\\\u1401-\\\\u166c\\\\u166f-\\\\u167f\\\\u1681-\\\\u169a\\\\u16a0-\\\\u16ea\\\\u16ee-\\\\u16f0\\\\u1700-\\\\u170c\\\\u170e-\\\\u1711\\\\u1720-\\\\u1731\\\\u1740-\\\\u1751\\\\u1760-\\\\u176c\\\\u176e-\\\\u1770\\\\u1780-\\\\u17b3\\\\u17d7\\\\u17dc\\\\u1820-\\\\u1877\\\\u1880-\\\\u18a8\\\\u18aa\\\\u18b0-\\\\u18f5\\\\u1900-\\\\u191c\\\\u1950-\\\\u196d\\\\u1970-\\\\u1974\\\\u1980-\\\\u19ab\\\\u19c1-\\\\u19c7\\\\u1a00-\\\\u1a16\\\\u1a20-\\\\u1a54\\\\u1aa7\\\\u1b05-\\\\u1b33\\\\u1b45-\\\\u1b4b\\\\u1b83-\\\\u1ba0\\\\u1bae\\\\u1baf\\\\u1bba-\\\\u1be5\\\\u1c00-\\\\u1c23\\\\u1c4d-\\\\u1c4f\\\\u1c5a-\\\\u1c7d\\\\u1ce9-\\\\u1cec\\\\u1cee-\\\\u1cf1\\\\u1cf5\\\\u1cf6\\\\u1d00-\\\\u1dbf\\\\u1e00-\\\\u1f15\\\\u1f18-\\\\u1f1d\\\\u1f20-\\\\u1f45\\\\u1f48-\\\\u1f4d\\\\u1f50-\\\\u1f57\\\\u1f59\\\\u1f5b\\\\u1f5d\\\\u1f5f-\\\\u1f7d\\\\u1f80-\\\\u1fb4\\\\u1fb6-\\\\u1fbc\\\\u1fbe\\\\u1fc2-\\\\u1fc4\\\\u1fc6-\\\\u1fcc\\\\u1fd0-\\\\u1fd3\\\\u1fd6-\\\\u1fdb\\\\u1fe0-\\\\u1fec\\\\u1ff2-\\\\u1ff4\\\\u1ff6-\\\\u1ffc\\\\u2071\\\\u207f\\\\u2090-\\\\u209c\\\\u2102\\\\u2107\\\\u210a-\\\\u2113\\\\u2115\\\\u2119-\\\\u211d\\\\u2124\\\\u2126\\\\u2128\\\\u212a-\\\\u212d\\\\u212f-\\\\u2139\\\\u213c-\\\\u213f\\\\u2145-\\\\u2149\\\\u214e\\\\u2160-\\\\u2188\\\\u2c00-\\\\u2c2e\\\\u2c30-\\\\u2c5e\\\\u2c60-\\\\u2ce4\\\\u2ceb-\\\\u2cee\\\\u2cf2\\\\u2cf3\\\\u2d00-\\\\u2d25\\\\u2d27\\\\u2d2d\\\\u2d30-\\\\u2d67\\\\u2d6f\\\\u2d80-\\\\u2d96\\\\u2da0-\\\\u2da6\\\\u2da8-\\\\u2dae\\\\u2db0-\\\\u2db6\\\\u2db8-\\\\u2dbe\\\\u2dc0-\\\\u2dc6\\\\u2dc8-\\\\u2dce\\\\u2dd0-\\\\u2dd6\\\\u2dd8-\\\\u2dde\\\\u2e2f\\\\u3005-\\\\u3007\\\\u3021-\\\\u3029\\\\u3031-\\\\u3035\\\\u3038-\\\\u303c\\\\u3041-\\\\u3096\\\\u309d-\\\\u309f\\\\u30a1-\\\\u30fa\\\\u30fc-\\\\u30ff\\\\u3105-\\\\u312d\\\\u3131-\\\\u318e\\\\u31a0-\\\\u31ba\\\\u31f0-\\\\u31ff\\\\u3400-\\\\u4db5\\\\u4e00-\\\\u9fcc\\\\ua000-\\\\ua48c\\\\ua4d0-\\\\ua4fd\\\\ua500-\\\\ua60c\\\\ua610-\\\\ua61f\\\\ua62a\\\\ua62b\\\\ua640-\\\\ua66e\\\\ua67f-\\\\ua697\\\\ua6a0-\\\\ua6ef\\\\ua717-\\\\ua71f\\\\ua722-\\\\ua788\\\\ua78b-\\\\ua78e\\\\ua790-\\\\ua793\\\\ua7a0-\\\\ua7aa\\\\ua7f8-\\\\ua801\\\\ua803-\\\\ua805\\\\ua807-\\\\ua80a\\\\ua80c-\\\\ua822\\\\ua840-\\\\ua873\\\\ua882-\\\\ua8b3\\\\ua8f2-\\\\ua8f7\\\\ua8fb\\\\ua90a-\\\\ua925\\\\ua930-\\\\ua946\\\\ua960-\\\\ua97c\\\\ua984-\\\\ua9b2\\\\ua9cf\\\\uaa00-\\\\uaa28\\\\uaa40-\\\\uaa42\\\\uaa44-\\\\uaa4b\\\\uaa60-\\\\uaa76\\\\uaa7a\\\\uaa80-\\\\uaaaf\\\\uaab1\\\\uaab5\\\\uaab6\\\\uaab9-\\\\uaabd\\\\uaac0\\\\uaac2\\\\uaadb-\\\\uaadd\\\\uaae0-\\\\uaaea\\\\uaaf2-\\\\uaaf4\\\\uab01-\\\\uab06\\\\uab09-\\\\uab0e\\\\uab11-\\\\uab16\\\\uab20-\\\\uab26\\\\uab28-\\\\uab2e\\\\uabc0-\\\\uabe2\\\\uac00-\\\\ud7a3\\\\ud7b0-\\\\ud7c6\\\\ud7cb-\\\\ud7fb\\\\uf900-\\\\ufa6d\\\\ufa70-\\\\ufad9\\\\ufb00-\\\\ufb06\\\\ufb13-\\\\ufb17\\\\ufb1d\\\\ufb1f-\\\\ufb28\\\\ufb2a-\\\\ufb36\\\\ufb38-\\\\ufb3c\\\\ufb3e\\\\ufb40\\\\ufb41\\\\ufb43\\\\ufb44\\\\ufb46-\\\\ufbb1\\\\ufbd3-\\\\ufd3d\\\\ufd50-\\\\ufd8f\\\\ufd92-\\\\ufdc7\\\\ufdf0-\\\\ufdfb\\\\ufe70-\\\\ufe74\\\\ufe76-\\\\ufefc\\\\uff21-\\\\uff3a\\\\uff41-\\\\uff5a\\\\uff66-\\\\uffbe\\\\uffc2-\\\\uffc7\\\\uffca-\\\\uffcf\\\\uffd2-\\\\uffd7\\\\uffda-\\\\uffdc\";\nvar nonASCIIidentifierChars = \"\\\\u0300-\\\\u036f\\\\u0483-\\\\u0487\\\\u0591-\\\\u05bd\\\\u05bf\\\\u05c1\\\\u05c2\\\\u05c4\\\\u05c5\\\\u05c7\\\\u0610-\\\\u061a\\\\u0620-\\\\u0649\\\\u0672-\\\\u06d3\\\\u06e7-\\\\u06e8\\\\u06fb-\\\\u06fc\\\\u0730-\\\\u074a\\\\u0800-\\\\u0814\\\\u081b-\\\\u0823\\\\u0825-\\\\u0827\\\\u0829-\\\\u082d\\\\u0840-\\\\u0857\\\\u08e4-\\\\u08fe\\\\u0900-\\\\u0903\\\\u093a-\\\\u093c\\\\u093e-\\\\u094f\\\\u0951-\\\\u0957\\\\u0962-\\\\u0963\\\\u0966-\\\\u096f\\\\u0981-\\\\u0983\\\\u09bc\\\\u09be-\\\\u09c4\\\\u09c7\\\\u09c8\\\\u09d7\\\\u09df-\\\\u09e0\\\\u0a01-\\\\u0a03\\\\u0a3c\\\\u0a3e-\\\\u0a42\\\\u0a47\\\\u0a48\\\\u0a4b-\\\\u0a4d\\\\u0a51\\\\u0a66-\\\\u0a71\\\\u0a75\\\\u0a81-\\\\u0a83\\\\u0abc\\\\u0abe-\\\\u0ac5\\\\u0ac7-\\\\u0ac9\\\\u0acb-\\\\u0acd\\\\u0ae2-\\\\u0ae3\\\\u0ae6-\\\\u0aef\\\\u0b01-\\\\u0b03\\\\u0b3c\\\\u0b3e-\\\\u0b44\\\\u0b47\\\\u0b48\\\\u0b4b-\\\\u0b4d\\\\u0b56\\\\u0b57\\\\u0b5f-\\\\u0b60\\\\u0b66-\\\\u0b6f\\\\u0b82\\\\u0bbe-\\\\u0bc2\\\\u0bc6-\\\\u0bc8\\\\u0bca-\\\\u0bcd\\\\u0bd7\\\\u0be6-\\\\u0bef\\\\u0c01-\\\\u0c03\\\\u0c46-\\\\u0c48\\\\u0c4a-\\\\u0c4d\\\\u0c55\\\\u0c56\\\\u0c62-\\\\u0c63\\\\u0c66-\\\\u0c6f\\\\u0c82\\\\u0c83\\\\u0cbc\\\\u0cbe-\\\\u0cc4\\\\u0cc6-\\\\u0cc8\\\\u0cca-\\\\u0ccd\\\\u0cd5\\\\u0cd6\\\\u0ce2-\\\\u0ce3\\\\u0ce6-\\\\u0cef\\\\u0d02\\\\u0d03\\\\u0d46-\\\\u0d48\\\\u0d57\\\\u0d62-\\\\u0d63\\\\u0d66-\\\\u0d6f\\\\u0d82\\\\u0d83\\\\u0dca\\\\u0dcf-\\\\u0dd4\\\\u0dd6\\\\u0dd8-\\\\u0ddf\\\\u0df2\\\\u0df3\\\\u0e34-\\\\u0e3a\\\\u0e40-\\\\u0e45\\\\u0e50-\\\\u0e59\\\\u0eb4-\\\\u0eb9\\\\u0ec8-\\\\u0ecd\\\\u0ed0-\\\\u0ed9\\\\u0f18\\\\u0f19\\\\u0f20-\\\\u0f29\\\\u0f35\\\\u0f37\\\\u0f39\\\\u0f41-\\\\u0f47\\\\u0f71-\\\\u0f84\\\\u0f86-\\\\u0f87\\\\u0f8d-\\\\u0f97\\\\u0f99-\\\\u0fbc\\\\u0fc6\\\\u1000-\\\\u1029\\\\u1040-\\\\u1049\\\\u1067-\\\\u106d\\\\u1071-\\\\u1074\\\\u1082-\\\\u108d\\\\u108f-\\\\u109d\\\\u135d-\\\\u135f\\\\u170e-\\\\u1710\\\\u1720-\\\\u1730\\\\u1740-\\\\u1750\\\\u1772\\\\u1773\\\\u1780-\\\\u17b2\\\\u17dd\\\\u17e0-\\\\u17e9\\\\u180b-\\\\u180d\\\\u1810-\\\\u1819\\\\u1920-\\\\u192b\\\\u1930-\\\\u193b\\\\u1951-\\\\u196d\\\\u19b0-\\\\u19c0\\\\u19c8-\\\\u19c9\\\\u19d0-\\\\u19d9\\\\u1a00-\\\\u1a15\\\\u1a20-\\\\u1a53\\\\u1a60-\\\\u1a7c\\\\u1a7f-\\\\u1a89\\\\u1a90-\\\\u1a99\\\\u1b46-\\\\u1b4b\\\\u1b50-\\\\u1b59\\\\u1b6b-\\\\u1b73\\\\u1bb0-\\\\u1bb9\\\\u1be6-\\\\u1bf3\\\\u1c00-\\\\u1c22\\\\u1c40-\\\\u1c49\\\\u1c5b-\\\\u1c7d\\\\u1cd0-\\\\u1cd2\\\\u1d00-\\\\u1dbe\\\\u1e01-\\\\u1f15\\\\u200c\\\\u200d\\\\u203f\\\\u2040\\\\u2054\\\\u20d0-\\\\u20dc\\\\u20e1\\\\u20e5-\\\\u20f0\\\\u2d81-\\\\u2d96\\\\u2de0-\\\\u2dff\\\\u3021-\\\\u3028\\\\u3099\\\\u309a\\\\ua640-\\\\ua66d\\\\ua674-\\\\ua67d\\\\ua69f\\\\ua6f0-\\\\ua6f1\\\\ua7f8-\\\\ua800\\\\ua806\\\\ua80b\\\\ua823-\\\\ua827\\\\ua880-\\\\ua881\\\\ua8b4-\\\\ua8c4\\\\ua8d0-\\\\ua8d9\\\\ua8f3-\\\\ua8f7\\\\ua900-\\\\ua909\\\\ua926-\\\\ua92d\\\\ua930-\\\\ua945\\\\ua980-\\\\ua983\\\\ua9b3-\\\\ua9c0\\\\uaa00-\\\\uaa27\\\\uaa40-\\\\uaa41\\\\uaa4c-\\\\uaa4d\\\\uaa50-\\\\uaa59\\\\uaa7b\\\\uaae0-\\\\uaae9\\\\uaaf2-\\\\uaaf3\\\\uabc0-\\\\uabe1\\\\uabec\\\\uabed\\\\uabf0-\\\\uabf9\\\\ufb20-\\\\ufb28\\\\ufe00-\\\\ufe0f\\\\ufe20-\\\\ufe26\\\\ufe33\\\\ufe34\\\\ufe4d-\\\\ufe4f\\\\uff10-\\\\uff19\\\\uff3f\";\n//var nonASCIIidentifierStart = new RegExp(\"[\" + nonASCIIidentifierStartChars + \"]\");\n//var nonASCIIidentifier = new RegExp(\"[\" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + \"]\");\n\nvar unicodeEscapeOrCodePoint = \"\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\u\\\\{[0-9a-fA-F]+\\\\}\";\nvar identifierStart = \"(?:\" + unicodeEscapeOrCodePoint + \"|[\" + baseASCIIidentifierStartChars + nonASCIIidentifierStartChars + \"])\";\nvar identifierChars = \"(?:\" + unicodeEscapeOrCodePoint + \"|[\" + baseASCIIidentifierChars + nonASCIIidentifierStartChars + nonASCIIidentifierChars + \"])*\";\n\nexports.identifier = new RegExp(identifierStart + identifierChars, 'g');\nexports.identifierStart = new RegExp(identifierStart);\nexports.identifierMatch = new RegExp(\"(?:\" + unicodeEscapeOrCodePoint + \"|[\" + baseASCIIidentifierChars + nonASCIIidentifierStartChars + nonASCIIidentifierChars + \"])+\");\n\nvar nonASCIIwhitespace = /[\\u1680\\u180e\\u2000-\\u200a\\u202f\\u205f\\u3000\\ufeff]/; // jshint ignore:line\n\n// Whether a single character denotes a newline.\n\nexports.newline = /[\\n\\r\\u2028\\u2029]/;\n\n// Matches a whole line break (where CRLF is considered a single\n// line break). Used to count lines.\n\n// in javascript, these two differ\n// in python they are the same, different methods are called on them\nexports.lineBreak = new RegExp('\\r\\n|' + exports.newline.source);\nexports.allLineBreaks = new RegExp(exports.lineBreak.source, 'g');\n\n\n/***/ }),\n/* 5 */\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n/*jshint node:true */\n/*\n\n The MIT License (MIT)\n\n Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors.\n\n Permission is hereby granted, free of charge, to any person\n obtaining a copy of this software and associated documentation files\n (the \"Software\"), to deal in the Software without restriction,\n including without limitation the rights to use, copy, modify, merge,\n publish, distribute, sublicense, and/or sell copies of the Software,\n and to permit persons to whom the Software is furnished to do so,\n subject to the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\n BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n*/\n\n\n\nvar BaseOptions = (__webpack_require__(6).Options);\n\nvar validPositionValues = ['before-newline', 'after-newline', 'preserve-newline'];\n\nfunction Options(options) {\n BaseOptions.call(this, options, 'js');\n\n // compatibility, re\n var raw_brace_style = this.raw_options.brace_style || null;\n if (raw_brace_style === \"expand-strict\") { //graceful handling of deprecated option\n this.raw_options.brace_style = \"expand\";\n } else if (raw_brace_style === \"collapse-preserve-inline\") { //graceful handling of deprecated option\n this.raw_options.brace_style = \"collapse,preserve-inline\";\n } else if (this.raw_options.braces_on_own_line !== undefined) { //graceful handling of deprecated option\n this.raw_options.brace_style = this.raw_options.braces_on_own_line ? \"expand\" : \"collapse\";\n // } else if (!raw_brace_style) { //Nothing exists to set it\n // raw_brace_style = \"collapse\";\n }\n\n //preserve-inline in delimited string will trigger brace_preserve_inline, everything\n //else is considered a brace_style and the last one only will have an effect\n\n var brace_style_split = this._get_selection_list('brace_style', ['collapse', 'expand', 'end-expand', 'none', 'preserve-inline']);\n\n this.brace_preserve_inline = false; //Defaults in case one or other was not specified in meta-option\n this.brace_style = \"collapse\";\n\n for (var bs = 0; bs < brace_style_split.length; bs++) {\n if (brace_style_split[bs] === \"preserve-inline\") {\n this.brace_preserve_inline = true;\n } else {\n this.brace_style = brace_style_split[bs];\n }\n }\n\n this.unindent_chained_methods = this._get_boolean('unindent_chained_methods');\n this.break_chained_methods = this._get_boolean('break_chained_methods');\n this.space_in_paren = this._get_boolean('space_in_paren');\n this.space_in_empty_paren = this._get_boolean('space_in_empty_paren');\n this.jslint_happy = this._get_boolean('jslint_happy');\n this.space_after_anon_function = this._get_boolean('space_after_anon_function');\n this.space_after_named_function = this._get_boolean('space_after_named_function');\n this.keep_array_indentation = this._get_boolean('keep_array_indentation');\n this.space_before_conditional = this._get_boolean('space_before_conditional', true);\n this.unescape_strings = this._get_boolean('unescape_strings');\n this.e4x = this._get_boolean('e4x');\n this.comma_first = this._get_boolean('comma_first');\n this.operator_position = this._get_selection('operator_position', validPositionValues);\n\n // For testing of beautify preserve:start directive\n this.test_output_raw = this._get_boolean('test_output_raw');\n\n // force this._options.space_after_anon_function to true if this._options.jslint_happy\n if (this.jslint_happy) {\n this.space_after_anon_function = true;\n }\n\n}\nOptions.prototype = new BaseOptions();\n\n\n\nmodule.exports.Options = Options;\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module) {\n\n/*jshint node:true */\n/*\n\n The MIT License (MIT)\n\n Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors.\n\n Permission is hereby granted, free of charge, to any person\n obtaining a copy of this software and associated documentation files\n (the \"Software\"), to deal in the Software without restriction,\n including without limitation the rights to use, copy, modify, merge,\n publish, distribute, sublicense, and/or sell copies of the Software,\n and to permit persons to whom the Software is furnished to do so,\n subject to the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\n BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n*/\n\n\n\nfunction Options(options, merge_child_field) {\n this.raw_options = _mergeOpts(options, merge_child_field);\n\n // Support passing the source text back with no change\n this.disabled = this._get_boolean('disabled');\n\n this.eol = this._get_characters('eol', 'auto');\n this.end_with_newline = this._get_boolean('end_with_newline');\n this.indent_size = this._get_number('indent_size', 4);\n this.indent_char = this._get_characters('indent_char', ' ');\n this.indent_level = this._get_number('indent_level');\n\n this.preserve_newlines = this._get_boolean('preserve_newlines', true);\n this.max_preserve_newlines = this._get_number('max_preserve_newlines', 32786);\n if (!this.preserve_newlines) {\n this.max_preserve_newlines = 0;\n }\n\n this.indent_with_tabs = this._get_boolean('indent_with_tabs', this.indent_char === '\\t');\n if (this.indent_with_tabs) {\n this.indent_char = '\\t';\n\n // indent_size behavior changed after 1.8.6\n // It used to be that indent_size would be\n // set to 1 for indent_with_tabs. That is no longer needed and\n // actually doesn't make sense - why not use spaces? Further,\n // that might produce unexpected behavior - tabs being used\n // for single-column alignment. So, when indent_with_tabs is true\n // and indent_size is 1, reset indent_size to 4.\n if (this.indent_size === 1) {\n this.indent_size = 4;\n }\n }\n\n // Backwards compat with 1.3.x\n this.wrap_line_length = this._get_number('wrap_line_length', this._get_number('max_char'));\n\n this.indent_empty_lines = this._get_boolean('indent_empty_lines');\n\n // valid templating languages ['django', 'erb', 'handlebars', 'php', 'smarty', 'angular']\n // For now, 'auto' = all off for javascript, all except angular on for html (and inline javascript/css).\n // other values ignored\n this.templating = this._get_selection_list('templating', ['auto', 'none', 'angular', 'django', 'erb', 'handlebars', 'php', 'smarty'], ['auto']);\n}\n\nOptions.prototype._get_array = function(name, default_value) {\n var option_value = this.raw_options[name];\n var result = default_value || [];\n if (typeof option_value === 'object') {\n if (option_value !== null && typeof option_value.concat === 'function') {\n result = option_value.concat();\n }\n } else if (typeof option_value === 'string') {\n result = option_value.split(/[^a-zA-Z0-9_\\/\\-]+/);\n }\n return result;\n};\n\nOptions.prototype._get_boolean = function(name, default_value) {\n var option_value = this.raw_options[name];\n var result = option_value === undefined ? !!default_value : !!option_value;\n return result;\n};\n\nOptions.prototype._get_characters = function(name, default_value) {\n var option_value = this.raw_options[name];\n var result = default_value || '';\n if (typeof option_value === 'string') {\n result = option_value.replace(/\\\\r/, '\\r').replace(/\\\\n/, '\\n').replace(/\\\\t/, '\\t');\n }\n return result;\n};\n\nOptions.prototype._get_number = function(name, default_value) {\n var option_value = this.raw_options[name];\n default_value = parseInt(default_value, 10);\n if (isNaN(default_value)) {\n default_value = 0;\n }\n var result = parseInt(option_value, 10);\n if (isNaN(result)) {\n result = default_value;\n }\n return result;\n};\n\nOptions.prototype._get_selection = function(name, selection_list, default_value) {\n var result = this._get_selection_list(name, selection_list, default_value);\n if (result.length !== 1) {\n throw new Error(\n \"Invalid Option Value: The option '\" + name + \"' can only be one of the following values:\\n\" +\n selection_list + \"\\nYou passed in: '\" + this.raw_options[name] + \"'\");\n }\n\n return result[0];\n};\n\n\nOptions.prototype._get_selection_list = function(name, selection_list, default_value) {\n if (!selection_list || selection_list.length === 0) {\n throw new Error(\"Selection list cannot be empty.\");\n }\n\n default_value = default_value || [selection_list[0]];\n if (!this._is_valid_selection(default_value, selection_list)) {\n throw new Error(\"Invalid Default Value!\");\n }\n\n var result = this._get_array(name, default_value);\n if (!this._is_valid_selection(result, selection_list)) {\n throw new Error(\n \"Invalid Option Value: The option '\" + name + \"' can contain only the following values:\\n\" +\n selection_list + \"\\nYou passed in: '\" + this.raw_options[name] + \"'\");\n }\n\n return result;\n};\n\nOptions.prototype._is_valid_selection = function(result, selection_list) {\n return result.length && selection_list.length &&\n !result.some(function(item) { return selection_list.indexOf(item) === -1; });\n};\n\n\n// merges child options up with the parent options object\n// Example: obj = {a: 1, b: {a: 2}}\n// mergeOpts(obj, 'b')\n//\n// Returns: {a: 2}\nfunction _mergeOpts(allOptions, childFieldName) {\n var finalOpts = {};\n allOptions = _normalizeOpts(allOptions);\n var name;\n\n for (name in allOptions) {\n if (name !== childFieldName) {\n finalOpts[name] = allOptions[name];\n }\n }\n\n //merge in the per type settings for the childFieldName\n if (childFieldName && allOptions[childFieldName]) {\n for (name in allOptions[childFieldName]) {\n finalOpts[name] = allOptions[childFieldName][name];\n }\n }\n return finalOpts;\n}\n\nfunction _normalizeOpts(options) {\n var convertedOpts = {};\n var key;\n\n for (key in options) {\n var newKey = key.replace(/-/g, \"_\");\n convertedOpts[newKey] = options[key];\n }\n return convertedOpts;\n}\n\nmodule.exports.Options = Options;\nmodule.exports.normalizeOpts = _normalizeOpts;\nmodule.exports.mergeOpts = _mergeOpts;\n\n\n/***/ }),\n/* 7 */\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n/*jshint node:true */\n/*\n\n The MIT License (MIT)\n\n Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors.\n\n Permission is hereby granted, free of charge, to any person\n obtaining a copy of this software and associated documentation files\n (the \"Software\"), to deal in the Software without restriction,\n including without limitation the rights to use, copy, modify, merge,\n publish, distribute, sublicense, and/or sell copies of the Software,\n and to permit persons to whom the Software is furnished to do so,\n subject to the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\n BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n*/\n\n\n\nvar InputScanner = (__webpack_require__(8).InputScanner);\nvar BaseTokenizer = (__webpack_require__(9).Tokenizer);\nvar BASETOKEN = (__webpack_require__(9).TOKEN);\nvar Directives = (__webpack_require__(13).Directives);\nvar acorn = __webpack_require__(4);\nvar Pattern = (__webpack_require__(12).Pattern);\nvar TemplatablePattern = (__webpack_require__(14).TemplatablePattern);\n\n\nfunction in_array(what, arr) {\n return arr.indexOf(what) !== -1;\n}\n\n\nvar TOKEN = {\n START_EXPR: 'TK_START_EXPR',\n END_EXPR: 'TK_END_EXPR',\n START_BLOCK: 'TK_START_BLOCK',\n END_BLOCK: 'TK_END_BLOCK',\n WORD: 'TK_WORD',\n RESERVED: 'TK_RESERVED',\n SEMICOLON: 'TK_SEMICOLON',\n STRING: 'TK_STRING',\n EQUALS: 'TK_EQUALS',\n OPERATOR: 'TK_OPERATOR',\n COMMA: 'TK_COMMA',\n BLOCK_COMMENT: 'TK_BLOCK_COMMENT',\n COMMENT: 'TK_COMMENT',\n DOT: 'TK_DOT',\n UNKNOWN: 'TK_UNKNOWN',\n START: BASETOKEN.START,\n RAW: BASETOKEN.RAW,\n EOF: BASETOKEN.EOF\n};\n\n\nvar directives_core = new Directives(/\\/\\*/, /\\*\\//);\n\nvar number_pattern = /0[xX][0123456789abcdefABCDEF_]*n?|0[oO][01234567_]*n?|0[bB][01_]*n?|\\d[\\d_]*n|(?:\\.\\d[\\d_]*|\\d[\\d_]*\\.?[\\d_]*)(?:[eE][+-]?[\\d_]+)?/;\n\nvar digit = /[0-9]/;\n\n// Dot \".\" must be distinguished from \"...\" and decimal\nvar dot_pattern = /[^\\d\\.]/;\n\nvar positionable_operators = (\n \">>> === !== &&= ??= ||= \" +\n \"<< && >= ** != == <= >> || ?? |> \" +\n \"< / - + > : & % ? ^ | *\").split(' ');\n\n// IMPORTANT: this must be sorted longest to shortest or tokenizing many not work.\n// Also, you must update possitionable operators separately from punct\nvar punct =\n \">>>= \" +\n \"... >>= <<= === >>> !== **= &&= ??= ||= \" +\n \"=> ^= :: /= << <= == && -= >= >> != -- += ** || ?? ++ %= &= *= |= |> \" +\n \"= ! ? > < : / ^ - + * & % ~ |\";\n\npunct = punct.replace(/[-[\\]{}()*+?.,\\\\^$|#]/g, \"\\\\$&\");\n// ?. but not if followed by a number \npunct = '\\\\?\\\\.(?!\\\\d) ' + punct;\npunct = punct.replace(/ /g, '|');\n\nvar punct_pattern = new RegExp(punct);\n\n// words which should always start on new line.\nvar line_starters = 'continue,try,throw,return,var,let,const,if,switch,case,default,for,while,break,function,import,export'.split(',');\nvar reserved_words = line_starters.concat(['do', 'in', 'of', 'else', 'get', 'set', 'new', 'catch', 'finally', 'typeof', 'yield', 'async', 'await', 'from', 'as', 'class', 'extends']);\nvar reserved_word_pattern = new RegExp('^(?:' + reserved_words.join('|') + ')$');\n\n// var template_pattern = /(?:(?:<\\?php|<\\?=)[\\s\\S]*?\\?>)|(?:<%[\\s\\S]*?%>)/g;\n\nvar in_html_comment;\n\nvar Tokenizer = function(input_string, options) {\n BaseTokenizer.call(this, input_string, options);\n\n this._patterns.whitespace = this._patterns.whitespace.matching(\n /\\u00A0\\u1680\\u180e\\u2000-\\u200a\\u202f\\u205f\\u3000\\ufeff/.source,\n /\\u2028\\u2029/.source);\n\n var pattern_reader = new Pattern(this._input);\n var templatable = new TemplatablePattern(this._input)\n .read_options(this._options);\n\n this.__patterns = {\n template: templatable,\n identifier: templatable.starting_with(acorn.identifier).matching(acorn.identifierMatch),\n number: pattern_reader.matching(number_pattern),\n punct: pattern_reader.matching(punct_pattern),\n // comment ends just before nearest linefeed or end of file\n comment: pattern_reader.starting_with(/\\/\\//).until(/[\\n\\r\\u2028\\u2029]/),\n // /* ... */ comment ends with nearest */ or end of file\n block_comment: pattern_reader.starting_with(/\\/\\*/).until_after(/\\*\\//),\n html_comment_start: pattern_reader.matching(//),\n include: pattern_reader.starting_with(/#include/).until_after(acorn.lineBreak),\n shebang: pattern_reader.starting_with(/#!/).until_after(acorn.lineBreak),\n xml: pattern_reader.matching(/[\\s\\S]*?<(\\/?)([-a-zA-Z:0-9_.]+|{[^}]+?}|!\\[CDATA\\[[^\\]]*?\\]\\]|)(\\s*{[^}]+?}|\\s+[-a-zA-Z:0-9_.]+|\\s+[-a-zA-Z:0-9_.]+\\s*=\\s*('[^']*'|\"[^\"]*\"|{([^{}]|{[^}]+?})+?}))*\\s*(\\/?)\\s*>/),\n single_quote: templatable.until(/['\\\\\\n\\r\\u2028\\u2029]/),\n double_quote: templatable.until(/[\"\\\\\\n\\r\\u2028\\u2029]/),\n template_text: templatable.until(/[`\\\\$]/),\n template_expression: templatable.until(/[`}\\\\]/)\n };\n\n};\nTokenizer.prototype = new BaseTokenizer();\n\nTokenizer.prototype._is_comment = function(current_token) {\n return current_token.type === TOKEN.COMMENT || current_token.type === TOKEN.BLOCK_COMMENT || current_token.type === TOKEN.UNKNOWN;\n};\n\nTokenizer.prototype._is_opening = function(current_token) {\n return current_token.type === TOKEN.START_BLOCK || current_token.type === TOKEN.START_EXPR;\n};\n\nTokenizer.prototype._is_closing = function(current_token, open_token) {\n return (current_token.type === TOKEN.END_BLOCK || current_token.type === TOKEN.END_EXPR) &&\n (open_token && (\n (current_token.text === ']' && open_token.text === '[') ||\n (current_token.text === ')' && open_token.text === '(') ||\n (current_token.text === '}' && open_token.text === '{')));\n};\n\nTokenizer.prototype._reset = function() {\n in_html_comment = false;\n};\n\nTokenizer.prototype._get_next_token = function(previous_token, open_token) { // jshint unused:false\n var token = null;\n this._readWhitespace();\n var c = this._input.peek();\n\n if (c === null) {\n return this._create_token(TOKEN.EOF, '');\n }\n\n token = token || this._read_non_javascript(c);\n token = token || this._read_string(c);\n token = token || this._read_pair(c, this._input.peek(1)); // Issue #2062 hack for record type '#{'\n token = token || this._read_word(previous_token);\n token = token || this._read_singles(c);\n token = token || this._read_comment(c);\n token = token || this._read_regexp(c, previous_token);\n token = token || this._read_xml(c, previous_token);\n token = token || this._read_punctuation();\n token = token || this._create_token(TOKEN.UNKNOWN, this._input.next());\n\n return token;\n};\n\nTokenizer.prototype._read_word = function(previous_token) {\n var resulting_string;\n resulting_string = this.__patterns.identifier.read();\n if (resulting_string !== '') {\n resulting_string = resulting_string.replace(acorn.allLineBreaks, '\\n');\n if (!(previous_token.type === TOKEN.DOT ||\n (previous_token.type === TOKEN.RESERVED && (previous_token.text === 'set' || previous_token.text === 'get'))) &&\n reserved_word_pattern.test(resulting_string)) {\n if ((resulting_string === 'in' || resulting_string === 'of') &&\n (previous_token.type === TOKEN.WORD || previous_token.type === TOKEN.STRING)) { // hack for 'in' and 'of' operators\n return this._create_token(TOKEN.OPERATOR, resulting_string);\n }\n return this._create_token(TOKEN.RESERVED, resulting_string);\n }\n return this._create_token(TOKEN.WORD, resulting_string);\n }\n\n resulting_string = this.__patterns.number.read();\n if (resulting_string !== '') {\n return this._create_token(TOKEN.WORD, resulting_string);\n }\n};\n\nTokenizer.prototype._read_singles = function(c) {\n var token = null;\n if (c === '(' || c === '[') {\n token = this._create_token(TOKEN.START_EXPR, c);\n } else if (c === ')' || c === ']') {\n token = this._create_token(TOKEN.END_EXPR, c);\n } else if (c === '{') {\n token = this._create_token(TOKEN.START_BLOCK, c);\n } else if (c === '}') {\n token = this._create_token(TOKEN.END_BLOCK, c);\n } else if (c === ';') {\n token = this._create_token(TOKEN.SEMICOLON, c);\n } else if (c === '.' && dot_pattern.test(this._input.peek(1))) {\n token = this._create_token(TOKEN.DOT, c);\n } else if (c === ',') {\n token = this._create_token(TOKEN.COMMA, c);\n }\n\n if (token) {\n this._input.next();\n }\n return token;\n};\n\nTokenizer.prototype._read_pair = function(c, d) {\n var token = null;\n if (c === '#' && d === '{') {\n token = this._create_token(TOKEN.START_BLOCK, c + d);\n }\n\n if (token) {\n this._input.next();\n this._input.next();\n }\n return token;\n};\n\nTokenizer.prototype._read_punctuation = function() {\n var resulting_string = this.__patterns.punct.read();\n\n if (resulting_string !== '') {\n if (resulting_string === '=') {\n return this._create_token(TOKEN.EQUALS, resulting_string);\n } else if (resulting_string === '?.') {\n return this._create_token(TOKEN.DOT, resulting_string);\n } else {\n return this._create_token(TOKEN.OPERATOR, resulting_string);\n }\n }\n};\n\nTokenizer.prototype._read_non_javascript = function(c) {\n var resulting_string = '';\n\n if (c === '#') {\n if (this._is_first_token()) {\n resulting_string = this.__patterns.shebang.read();\n\n if (resulting_string) {\n return this._create_token(TOKEN.UNKNOWN, resulting_string.trim() + '\\n');\n }\n }\n\n // handles extendscript #includes\n resulting_string = this.__patterns.include.read();\n\n if (resulting_string) {\n return this._create_token(TOKEN.UNKNOWN, resulting_string.trim() + '\\n');\n }\n\n c = this._input.next();\n\n // Spidermonkey-specific sharp variables for circular references. Considered obsolete.\n var sharp = '#';\n if (this._input.hasNext() && this._input.testChar(digit)) {\n do {\n c = this._input.next();\n sharp += c;\n } while (this._input.hasNext() && c !== '#' && c !== '=');\n if (c === '#') {\n //\n } else if (this._input.peek() === '[' && this._input.peek(1) === ']') {\n sharp += '[]';\n this._input.next();\n this._input.next();\n } else if (this._input.peek() === '{' && this._input.peek(1) === '}') {\n sharp += '{}';\n this._input.next();\n this._input.next();\n }\n return this._create_token(TOKEN.WORD, sharp);\n }\n\n this._input.back();\n\n } else if (c === '<' && this._is_first_token()) {\n resulting_string = this.__patterns.html_comment_start.read();\n if (resulting_string) {\n while (this._input.hasNext() && !this._input.testChar(acorn.newline)) {\n resulting_string += this._input.next();\n }\n in_html_comment = true;\n return this._create_token(TOKEN.COMMENT, resulting_string);\n }\n } else if (in_html_comment && c === '-') {\n resulting_string = this.__patterns.html_comment_end.read();\n if (resulting_string) {\n in_html_comment = false;\n return this._create_token(TOKEN.COMMENT, resulting_string);\n }\n }\n\n return null;\n};\n\nTokenizer.prototype._read_comment = function(c) {\n var token = null;\n if (c === '/') {\n var comment = '';\n if (this._input.peek(1) === '*') {\n // peek for comment /* ... */\n comment = this.__patterns.block_comment.read();\n var directives = directives_core.get_directives(comment);\n if (directives && directives.ignore === 'start') {\n comment += directives_core.readIgnored(this._input);\n }\n comment = comment.replace(acorn.allLineBreaks, '\\n');\n token = this._create_token(TOKEN.BLOCK_COMMENT, comment);\n token.directives = directives;\n } else if (this._input.peek(1) === '/') {\n // peek for comment // ...\n comment = this.__patterns.comment.read();\n token = this._create_token(TOKEN.COMMENT, comment);\n }\n }\n return token;\n};\n\nTokenizer.prototype._read_string = function(c) {\n if (c === '`' || c === \"'\" || c === '\"') {\n var resulting_string = this._input.next();\n this.has_char_escapes = false;\n\n if (c === '`') {\n resulting_string += this._read_string_recursive('`', true, '${');\n } else {\n resulting_string += this._read_string_recursive(c);\n }\n\n if (this.has_char_escapes && this._options.unescape_strings) {\n resulting_string = unescape_string(resulting_string);\n }\n\n if (this._input.peek() === c) {\n resulting_string += this._input.next();\n }\n\n resulting_string = resulting_string.replace(acorn.allLineBreaks, '\\n');\n\n return this._create_token(TOKEN.STRING, resulting_string);\n }\n\n return null;\n};\n\nTokenizer.prototype._allow_regexp_or_xml = function(previous_token) {\n // regex and xml can only appear in specific locations during parsing\n return (previous_token.type === TOKEN.RESERVED && in_array(previous_token.text, ['return', 'case', 'throw', 'else', 'do', 'typeof', 'yield'])) ||\n (previous_token.type === TOKEN.END_EXPR && previous_token.text === ')' &&\n previous_token.opened.previous.type === TOKEN.RESERVED && in_array(previous_token.opened.previous.text, ['if', 'while', 'for'])) ||\n (in_array(previous_token.type, [TOKEN.COMMENT, TOKEN.START_EXPR, TOKEN.START_BLOCK, TOKEN.START,\n TOKEN.END_BLOCK, TOKEN.OPERATOR, TOKEN.EQUALS, TOKEN.EOF, TOKEN.SEMICOLON, TOKEN.COMMA\n ]));\n};\n\nTokenizer.prototype._read_regexp = function(c, previous_token) {\n\n if (c === '/' && this._allow_regexp_or_xml(previous_token)) {\n // handle regexp\n //\n var resulting_string = this._input.next();\n var esc = false;\n\n var in_char_class = false;\n while (this._input.hasNext() &&\n ((esc || in_char_class || this._input.peek() !== c) &&\n !this._input.testChar(acorn.newline))) {\n resulting_string += this._input.peek();\n if (!esc) {\n esc = this._input.peek() === '\\\\';\n if (this._input.peek() === '[') {\n in_char_class = true;\n } else if (this._input.peek() === ']') {\n in_char_class = false;\n }\n } else {\n esc = false;\n }\n this._input.next();\n }\n\n if (this._input.peek() === c) {\n resulting_string += this._input.next();\n\n // regexps may have modifiers /regexp/MOD , so fetch those, too\n // Only [gim] are valid, but if the user puts in garbage, do what we can to take it.\n resulting_string += this._input.read(acorn.identifier);\n }\n return this._create_token(TOKEN.STRING, resulting_string);\n }\n return null;\n};\n\nTokenizer.prototype._read_xml = function(c, previous_token) {\n\n if (this._options.e4x && c === \"<\" && this._allow_regexp_or_xml(previous_token)) {\n var xmlStr = '';\n var match = this.__patterns.xml.read_match();\n // handle e4x xml literals\n //\n if (match) {\n // Trim root tag to attempt to\n var rootTag = match[2].replace(/^{\\s+/, '{').replace(/\\s+}$/, '}');\n var isCurlyRoot = rootTag.indexOf('{') === 0;\n var depth = 0;\n while (match) {\n var isEndTag = !!match[1];\n var tagName = match[2];\n var isSingletonTag = (!!match[match.length - 1]) || (tagName.slice(0, 8) === \"![CDATA[\");\n if (!isSingletonTag &&\n (tagName === rootTag || (isCurlyRoot && tagName.replace(/^{\\s+/, '{').replace(/\\s+}$/, '}')))) {\n if (isEndTag) {\n --depth;\n } else {\n ++depth;\n }\n }\n xmlStr += match[0];\n if (depth <= 0) {\n break;\n }\n match = this.__patterns.xml.read_match();\n }\n // if we didn't close correctly, keep unformatted.\n if (!match) {\n xmlStr += this._input.match(/[\\s\\S]*/g)[0];\n }\n xmlStr = xmlStr.replace(acorn.allLineBreaks, '\\n');\n return this._create_token(TOKEN.STRING, xmlStr);\n }\n }\n\n return null;\n};\n\nfunction unescape_string(s) {\n // You think that a regex would work for this\n // return s.replace(/\\\\x([0-9a-f]{2})/gi, function(match, val) {\n // return String.fromCharCode(parseInt(val, 16));\n // })\n // However, dealing with '\\xff', '\\\\xff', '\\\\\\xff' makes this more fun.\n var out = '',\n escaped = 0;\n\n var input_scan = new InputScanner(s);\n var matched = null;\n\n while (input_scan.hasNext()) {\n // Keep any whitespace, non-slash characters\n // also keep slash pairs.\n matched = input_scan.match(/([\\s]|[^\\\\]|\\\\\\\\)+/g);\n\n if (matched) {\n out += matched[0];\n }\n\n if (input_scan.peek() === '\\\\') {\n input_scan.next();\n if (input_scan.peek() === 'x') {\n matched = input_scan.match(/x([0-9A-Fa-f]{2})/g);\n } else if (input_scan.peek() === 'u') {\n matched = input_scan.match(/u([0-9A-Fa-f]{4})/g);\n if (!matched) {\n matched = input_scan.match(/u\\{([0-9A-Fa-f]+)\\}/g);\n }\n } else {\n out += '\\\\';\n if (input_scan.hasNext()) {\n out += input_scan.next();\n }\n continue;\n }\n\n // If there's some error decoding, return the original string\n if (!matched) {\n return s;\n }\n\n escaped = parseInt(matched[1], 16);\n\n if (escaped > 0x7e && escaped <= 0xff && matched[0].indexOf('x') === 0) {\n // we bail out on \\x7f..\\xff,\n // leaving whole string escaped,\n // as it's probably completely binary\n return s;\n } else if (escaped >= 0x00 && escaped < 0x20) {\n // leave 0x00...0x1f escaped\n out += '\\\\' + matched[0];\n } else if (escaped > 0x10FFFF) {\n // If the escape sequence is out of bounds, keep the original sequence and continue conversion\n out += '\\\\' + matched[0];\n } else if (escaped === 0x22 || escaped === 0x27 || escaped === 0x5c) {\n // single-quote, apostrophe, backslash - escape these\n out += '\\\\' + String.fromCharCode(escaped);\n } else {\n out += String.fromCharCode(escaped);\n }\n }\n }\n\n return out;\n}\n\n// handle string\n//\nTokenizer.prototype._read_string_recursive = function(delimiter, allow_unescaped_newlines, start_sub) {\n var current_char;\n var pattern;\n if (delimiter === '\\'') {\n pattern = this.__patterns.single_quote;\n } else if (delimiter === '\"') {\n pattern = this.__patterns.double_quote;\n } else if (delimiter === '`') {\n pattern = this.__patterns.template_text;\n } else if (delimiter === '}') {\n pattern = this.__patterns.template_expression;\n }\n\n var resulting_string = pattern.read();\n var next = '';\n while (this._input.hasNext()) {\n next = this._input.next();\n if (next === delimiter ||\n (!allow_unescaped_newlines && acorn.newline.test(next))) {\n this._input.back();\n break;\n } else if (next === '\\\\' && this._input.hasNext()) {\n current_char = this._input.peek();\n\n if (current_char === 'x' || current_char === 'u') {\n this.has_char_escapes = true;\n } else if (current_char === '\\r' && this._input.peek(1) === '\\n') {\n this._input.next();\n }\n next += this._input.next();\n } else if (start_sub) {\n if (start_sub === '${' && next === '$' && this._input.peek() === '{') {\n next += this._input.next();\n }\n\n if (start_sub === next) {\n if (delimiter === '`') {\n next += this._read_string_recursive('}', allow_unescaped_newlines, '`');\n } else {\n next += this._read_string_recursive('`', allow_unescaped_newlines, '${');\n }\n if (this._input.hasNext()) {\n next += this._input.next();\n }\n }\n }\n next += pattern.read();\n resulting_string += next;\n }\n\n return resulting_string;\n};\n\nmodule.exports.Tokenizer = Tokenizer;\nmodule.exports.TOKEN = TOKEN;\nmodule.exports.positionable_operators = positionable_operators.slice();\nmodule.exports.line_starters = line_starters.slice();\n\n\n/***/ }),\n/* 8 */\n/***/ (function(module) {\n\n/*jshint node:true */\n/*\n\n The MIT License (MIT)\n\n Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors.\n\n Permission is hereby granted, free of charge, to any person\n obtaining a copy of this software and associated documentation files\n (the \"Software\"), to deal in the Software without restriction,\n including without limitation the rights to use, copy, modify, merge,\n publish, distribute, sublicense, and/or sell copies of the Software,\n and to permit persons to whom the Software is furnished to do so,\n subject to the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\n BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n*/\n\n\n\nvar regexp_has_sticky = RegExp.prototype.hasOwnProperty('sticky');\n\nfunction InputScanner(input_string) {\n this.__input = input_string || '';\n this.__input_length = this.__input.length;\n this.__position = 0;\n}\n\nInputScanner.prototype.restart = function() {\n this.__position = 0;\n};\n\nInputScanner.prototype.back = function() {\n if (this.__position > 0) {\n this.__position -= 1;\n }\n};\n\nInputScanner.prototype.hasNext = function() {\n return this.__position < this.__input_length;\n};\n\nInputScanner.prototype.next = function() {\n var val = null;\n if (this.hasNext()) {\n val = this.__input.charAt(this.__position);\n this.__position += 1;\n }\n return val;\n};\n\nInputScanner.prototype.peek = function(index) {\n var val = null;\n index = index || 0;\n index += this.__position;\n if (index >= 0 && index < this.__input_length) {\n val = this.__input.charAt(index);\n }\n return val;\n};\n\n// This is a JavaScript only helper function (not in python)\n// Javascript doesn't have a match method\n// and not all implementation support \"sticky\" flag.\n// If they do not support sticky then both this.match() and this.test() method\n// must get the match and check the index of the match.\n// If sticky is supported and set, this method will use it.\n// Otherwise it will check that global is set, and fall back to the slower method.\nInputScanner.prototype.__match = function(pattern, index) {\n pattern.lastIndex = index;\n var pattern_match = pattern.exec(this.__input);\n\n if (pattern_match && !(regexp_has_sticky && pattern.sticky)) {\n if (pattern_match.index !== index) {\n pattern_match = null;\n }\n }\n\n return pattern_match;\n};\n\nInputScanner.prototype.test = function(pattern, index) {\n index = index || 0;\n index += this.__position;\n\n if (index >= 0 && index < this.__input_length) {\n return !!this.__match(pattern, index);\n } else {\n return false;\n }\n};\n\nInputScanner.prototype.testChar = function(pattern, index) {\n // test one character regex match\n var val = this.peek(index);\n pattern.lastIndex = 0;\n return val !== null && pattern.test(val);\n};\n\nInputScanner.prototype.match = function(pattern) {\n var pattern_match = this.__match(pattern, this.__position);\n if (pattern_match) {\n this.__position += pattern_match[0].length;\n } else {\n pattern_match = null;\n }\n return pattern_match;\n};\n\nInputScanner.prototype.read = function(starting_pattern, until_pattern, until_after) {\n var val = '';\n var match;\n if (starting_pattern) {\n match = this.match(starting_pattern);\n if (match) {\n val += match[0];\n }\n }\n if (until_pattern && (match || !starting_pattern)) {\n val += this.readUntil(until_pattern, until_after);\n }\n return val;\n};\n\nInputScanner.prototype.readUntil = function(pattern, until_after) {\n var val = '';\n var match_index = this.__position;\n pattern.lastIndex = this.__position;\n var pattern_match = pattern.exec(this.__input);\n if (pattern_match) {\n match_index = pattern_match.index;\n if (until_after) {\n match_index += pattern_match[0].length;\n }\n } else {\n match_index = this.__input_length;\n }\n\n val = this.__input.substring(this.__position, match_index);\n this.__position = match_index;\n return val;\n};\n\nInputScanner.prototype.readUntilAfter = function(pattern) {\n return this.readUntil(pattern, true);\n};\n\nInputScanner.prototype.get_regexp = function(pattern, match_from) {\n var result = null;\n var flags = 'g';\n if (match_from && regexp_has_sticky) {\n flags = 'y';\n }\n // strings are converted to regexp\n if (typeof pattern === \"string\" && pattern !== '') {\n // result = new RegExp(pattern.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&'), flags);\n result = new RegExp(pattern, flags);\n } else if (pattern) {\n result = new RegExp(pattern.source, flags);\n }\n return result;\n};\n\nInputScanner.prototype.get_literal_regexp = function(literal_string) {\n return RegExp(literal_string.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&'));\n};\n\n/* css beautifier legacy helpers */\nInputScanner.prototype.peekUntilAfter = function(pattern) {\n var start = this.__position;\n var val = this.readUntilAfter(pattern);\n this.__position = start;\n return val;\n};\n\nInputScanner.prototype.lookBack = function(testVal) {\n var start = this.__position - 1;\n return start >= testVal.length && this.__input.substring(start - testVal.length, start)\n .toLowerCase() === testVal;\n};\n\nmodule.exports.InputScanner = InputScanner;\n\n\n/***/ }),\n/* 9 */\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n/*jshint node:true */\n/*\n\n The MIT License (MIT)\n\n Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors.\n\n Permission is hereby granted, free of charge, to any person\n obtaining a copy of this software and associated documentation files\n (the \"Software\"), to deal in the Software without restriction,\n including without limitation the rights to use, copy, modify, merge,\n publish, distribute, sublicense, and/or sell copies of the Software,\n and to permit persons to whom the Software is furnished to do so,\n subject to the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\n BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n*/\n\n\n\nvar InputScanner = (__webpack_require__(8).InputScanner);\nvar Token = (__webpack_require__(3).Token);\nvar TokenStream = (__webpack_require__(10).TokenStream);\nvar WhitespacePattern = (__webpack_require__(11).WhitespacePattern);\n\nvar TOKEN = {\n START: 'TK_START',\n RAW: 'TK_RAW',\n EOF: 'TK_EOF'\n};\n\nvar Tokenizer = function(input_string, options) {\n this._input = new InputScanner(input_string);\n this._options = options || {};\n this.__tokens = null;\n\n this._patterns = {};\n this._patterns.whitespace = new WhitespacePattern(this._input);\n};\n\nTokenizer.prototype.tokenize = function() {\n this._input.restart();\n this.__tokens = new TokenStream();\n\n this._reset();\n\n var current;\n var previous = new Token(TOKEN.START, '');\n var open_token = null;\n var open_stack = [];\n var comments = new TokenStream();\n\n while (previous.type !== TOKEN.EOF) {\n current = this._get_next_token(previous, open_token);\n while (this._is_comment(current)) {\n comments.add(current);\n current = this._get_next_token(previous, open_token);\n }\n\n if (!comments.isEmpty()) {\n current.comments_before = comments;\n comments = new TokenStream();\n }\n\n current.parent = open_token;\n\n if (this._is_opening(current)) {\n open_stack.push(open_token);\n open_token = current;\n } else if (open_token && this._is_closing(current, open_token)) {\n current.opened = open_token;\n open_token.closed = current;\n open_token = open_stack.pop();\n current.parent = open_token;\n }\n\n current.previous = previous;\n previous.next = current;\n\n this.__tokens.add(current);\n previous = current;\n }\n\n return this.__tokens;\n};\n\n\nTokenizer.prototype._is_first_token = function() {\n return this.__tokens.isEmpty();\n};\n\nTokenizer.prototype._reset = function() {};\n\nTokenizer.prototype._get_next_token = function(previous_token, open_token) { // jshint unused:false\n this._readWhitespace();\n var resulting_string = this._input.read(/.+/g);\n if (resulting_string) {\n return this._create_token(TOKEN.RAW, resulting_string);\n } else {\n return this._create_token(TOKEN.EOF, '');\n }\n};\n\nTokenizer.prototype._is_comment = function(current_token) { // jshint unused:false\n return false;\n};\n\nTokenizer.prototype._is_opening = function(current_token) { // jshint unused:false\n return false;\n};\n\nTokenizer.prototype._is_closing = function(current_token, open_token) { // jshint unused:false\n return false;\n};\n\nTokenizer.prototype._create_token = function(type, text) {\n var token = new Token(type, text,\n this._patterns.whitespace.newline_count,\n this._patterns.whitespace.whitespace_before_token);\n return token;\n};\n\nTokenizer.prototype._readWhitespace = function() {\n return this._patterns.whitespace.read();\n};\n\n\n\nmodule.exports.Tokenizer = Tokenizer;\nmodule.exports.TOKEN = TOKEN;\n\n\n/***/ }),\n/* 10 */\n/***/ (function(module) {\n\n/*jshint node:true */\n/*\n\n The MIT License (MIT)\n\n Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors.\n\n Permission is hereby granted, free of charge, to any person\n obtaining a copy of this software and associated documentation files\n (the \"Software\"), to deal in the Software without restriction,\n including without limitation the rights to use, copy, modify, merge,\n publish, distribute, sublicense, and/or sell copies of the Software,\n and to permit persons to whom the Software is furnished to do so,\n subject to the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\n BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n*/\n\n\n\nfunction TokenStream(parent_token) {\n // private\n this.__tokens = [];\n this.__tokens_length = this.__tokens.length;\n this.__position = 0;\n this.__parent_token = parent_token;\n}\n\nTokenStream.prototype.restart = function() {\n this.__position = 0;\n};\n\nTokenStream.prototype.isEmpty = function() {\n return this.__tokens_length === 0;\n};\n\nTokenStream.prototype.hasNext = function() {\n return this.__position < this.__tokens_length;\n};\n\nTokenStream.prototype.next = function() {\n var val = null;\n if (this.hasNext()) {\n val = this.__tokens[this.__position];\n this.__position += 1;\n }\n return val;\n};\n\nTokenStream.prototype.peek = function(index) {\n var val = null;\n index = index || 0;\n index += this.__position;\n if (index >= 0 && index < this.__tokens_length) {\n val = this.__tokens[index];\n }\n return val;\n};\n\nTokenStream.prototype.add = function(token) {\n if (this.__parent_token) {\n token.parent = this.__parent_token;\n }\n this.__tokens.push(token);\n this.__tokens_length += 1;\n};\n\nmodule.exports.TokenStream = TokenStream;\n\n\n/***/ }),\n/* 11 */\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n/*jshint node:true */\n/*\n\n The MIT License (MIT)\n\n Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors.\n\n Permission is hereby granted, free of charge, to any person\n obtaining a copy of this software and associated documentation files\n (the \"Software\"), to deal in the Software without restriction,\n including without limitation the rights to use, copy, modify, merge,\n publish, distribute, sublicense, and/or sell copies of the Software,\n and to permit persons to whom the Software is furnished to do so,\n subject to the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\n BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n*/\n\n\n\nvar Pattern = (__webpack_require__(12).Pattern);\n\nfunction WhitespacePattern(input_scanner, parent) {\n Pattern.call(this, input_scanner, parent);\n if (parent) {\n this._line_regexp = this._input.get_regexp(parent._line_regexp);\n } else {\n this.__set_whitespace_patterns('', '');\n }\n\n this.newline_count = 0;\n this.whitespace_before_token = '';\n}\nWhitespacePattern.prototype = new Pattern();\n\nWhitespacePattern.prototype.__set_whitespace_patterns = function(whitespace_chars, newline_chars) {\n whitespace_chars += '\\\\t ';\n newline_chars += '\\\\n\\\\r';\n\n this._match_pattern = this._input.get_regexp(\n '[' + whitespace_chars + newline_chars + ']+', true);\n this._newline_regexp = this._input.get_regexp(\n '\\\\r\\\\n|[' + newline_chars + ']');\n};\n\nWhitespacePattern.prototype.read = function() {\n this.newline_count = 0;\n this.whitespace_before_token = '';\n\n var resulting_string = this._input.read(this._match_pattern);\n if (resulting_string === ' ') {\n this.whitespace_before_token = ' ';\n } else if (resulting_string) {\n var matches = this.__split(this._newline_regexp, resulting_string);\n this.newline_count = matches.length - 1;\n this.whitespace_before_token = matches[this.newline_count];\n }\n\n return resulting_string;\n};\n\nWhitespacePattern.prototype.matching = function(whitespace_chars, newline_chars) {\n var result = this._create();\n result.__set_whitespace_patterns(whitespace_chars, newline_chars);\n result._update();\n return result;\n};\n\nWhitespacePattern.prototype._create = function() {\n return new WhitespacePattern(this._input, this);\n};\n\nWhitespacePattern.prototype.__split = function(regexp, input_string) {\n regexp.lastIndex = 0;\n var start_index = 0;\n var result = [];\n var next_match = regexp.exec(input_string);\n while (next_match) {\n result.push(input_string.substring(start_index, next_match.index));\n start_index = next_match.index + next_match[0].length;\n next_match = regexp.exec(input_string);\n }\n\n if (start_index < input_string.length) {\n result.push(input_string.substring(start_index, input_string.length));\n } else {\n result.push('');\n }\n\n return result;\n};\n\n\n\nmodule.exports.WhitespacePattern = WhitespacePattern;\n\n\n/***/ }),\n/* 12 */\n/***/ (function(module) {\n\n/*jshint node:true */\n/*\n\n The MIT License (MIT)\n\n Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors.\n\n Permission is hereby granted, free of charge, to any person\n obtaining a copy of this software and associated documentation files\n (the \"Software\"), to deal in the Software without restriction,\n including without limitation the rights to use, copy, modify, merge,\n publish, distribute, sublicense, and/or sell copies of the Software,\n and to permit persons to whom the Software is furnished to do so,\n subject to the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\n BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n*/\n\n\n\nfunction Pattern(input_scanner, parent) {\n this._input = input_scanner;\n this._starting_pattern = null;\n this._match_pattern = null;\n this._until_pattern = null;\n this._until_after = false;\n\n if (parent) {\n this._starting_pattern = this._input.get_regexp(parent._starting_pattern, true);\n this._match_pattern = this._input.get_regexp(parent._match_pattern, true);\n this._until_pattern = this._input.get_regexp(parent._until_pattern);\n this._until_after = parent._until_after;\n }\n}\n\nPattern.prototype.read = function() {\n var result = this._input.read(this._starting_pattern);\n if (!this._starting_pattern || result) {\n result += this._input.read(this._match_pattern, this._until_pattern, this._until_after);\n }\n return result;\n};\n\nPattern.prototype.read_match = function() {\n return this._input.match(this._match_pattern);\n};\n\nPattern.prototype.until_after = function(pattern) {\n var result = this._create();\n result._until_after = true;\n result._until_pattern = this._input.get_regexp(pattern);\n result._update();\n return result;\n};\n\nPattern.prototype.until = function(pattern) {\n var result = this._create();\n result._until_after = false;\n result._until_pattern = this._input.get_regexp(pattern);\n result._update();\n return result;\n};\n\nPattern.prototype.starting_with = function(pattern) {\n var result = this._create();\n result._starting_pattern = this._input.get_regexp(pattern, true);\n result._update();\n return result;\n};\n\nPattern.prototype.matching = function(pattern) {\n var result = this._create();\n result._match_pattern = this._input.get_regexp(pattern, true);\n result._update();\n return result;\n};\n\nPattern.prototype._create = function() {\n return new Pattern(this._input, this);\n};\n\nPattern.prototype._update = function() {};\n\nmodule.exports.Pattern = Pattern;\n\n\n/***/ }),\n/* 13 */\n/***/ (function(module) {\n\n/*jshint node:true */\n/*\n\n The MIT License (MIT)\n\n Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors.\n\n Permission is hereby granted, free of charge, to any person\n obtaining a copy of this software and associated documentation files\n (the \"Software\"), to deal in the Software without restriction,\n including without limitation the rights to use, copy, modify, merge,\n publish, distribute, sublicense, and/or sell copies of the Software,\n and to permit persons to whom the Software is furnished to do so,\n subject to the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\n BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n*/\n\n\n\nfunction Directives(start_block_pattern, end_block_pattern) {\n start_block_pattern = typeof start_block_pattern === 'string' ? start_block_pattern : start_block_pattern.source;\n end_block_pattern = typeof end_block_pattern === 'string' ? end_block_pattern : end_block_pattern.source;\n this.__directives_block_pattern = new RegExp(start_block_pattern + / beautify( \\w+[:]\\w+)+ /.source + end_block_pattern, 'g');\n this.__directive_pattern = / (\\w+)[:](\\w+)/g;\n\n this.__directives_end_ignore_pattern = new RegExp(start_block_pattern + /\\sbeautify\\signore:end\\s/.source + end_block_pattern, 'g');\n}\n\nDirectives.prototype.get_directives = function(text) {\n if (!text.match(this.__directives_block_pattern)) {\n return null;\n }\n\n var directives = {};\n this.__directive_pattern.lastIndex = 0;\n var directive_match = this.__directive_pattern.exec(text);\n\n while (directive_match) {\n directives[directive_match[1]] = directive_match[2];\n directive_match = this.__directive_pattern.exec(text);\n }\n\n return directives;\n};\n\nDirectives.prototype.readIgnored = function(input) {\n return input.readUntilAfter(this.__directives_end_ignore_pattern);\n};\n\n\nmodule.exports.Directives = Directives;\n\n\n/***/ }),\n/* 14 */\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n/*jshint node:true */\n/*\n\n The MIT License (MIT)\n\n Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors.\n\n Permission is hereby granted, free of charge, to any person\n obtaining a copy of this software and associated documentation files\n (the \"Software\"), to deal in the Software without restriction,\n including without limitation the rights to use, copy, modify, merge,\n publish, distribute, sublicense, and/or sell copies of the Software,\n and to permit persons to whom the Software is furnished to do so,\n subject to the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\n BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n*/\n\n\n\nvar Pattern = (__webpack_require__(12).Pattern);\n\n\nvar template_names = {\n django: false,\n erb: false,\n handlebars: false,\n php: false,\n smarty: false,\n angular: false\n};\n\n// This lets templates appear anywhere we would do a readUntil\n// The cost is higher but it is pay to play.\nfunction TemplatablePattern(input_scanner, parent) {\n Pattern.call(this, input_scanner, parent);\n this.__template_pattern = null;\n this._disabled = Object.assign({}, template_names);\n this._excluded = Object.assign({}, template_names);\n\n if (parent) {\n this.__template_pattern = this._input.get_regexp(parent.__template_pattern);\n this._excluded = Object.assign(this._excluded, parent._excluded);\n this._disabled = Object.assign(this._disabled, parent._disabled);\n }\n var pattern = new Pattern(input_scanner);\n this.__patterns = {\n handlebars_comment: pattern.starting_with(/{{!--/).until_after(/--}}/),\n handlebars_unescaped: pattern.starting_with(/{{{/).until_after(/}}}/),\n handlebars: pattern.starting_with(/{{/).until_after(/}}/),\n php: pattern.starting_with(/<\\?(?:[= ]|php)/).until_after(/\\?>/),\n erb: pattern.starting_with(/<%[^%]/).until_after(/[^%]%>/),\n // django coflicts with handlebars a bit.\n django: pattern.starting_with(/{%/).until_after(/%}/),\n django_value: pattern.starting_with(/{{/).until_after(/}}/),\n django_comment: pattern.starting_with(/{#/).until_after(/#}/),\n smarty: pattern.starting_with(/{(?=[^}{\\s\\n])/).until_after(/[^\\s\\n]}/),\n smarty_comment: pattern.starting_with(/{\\*/).until_after(/\\*}/),\n smarty_literal: pattern.starting_with(/{literal}/).until_after(/{\\/literal}/)\n };\n}\nTemplatablePattern.prototype = new Pattern();\n\nTemplatablePattern.prototype._create = function() {\n return new TemplatablePattern(this._input, this);\n};\n\nTemplatablePattern.prototype._update = function() {\n this.__set_templated_pattern();\n};\n\nTemplatablePattern.prototype.disable = function(language) {\n var result = this._create();\n result._disabled[language] = true;\n result._update();\n return result;\n};\n\nTemplatablePattern.prototype.read_options = function(options) {\n var result = this._create();\n for (var language in template_names) {\n result._disabled[language] = options.templating.indexOf(language) === -1;\n }\n result._update();\n return result;\n};\n\nTemplatablePattern.prototype.exclude = function(language) {\n var result = this._create();\n result._excluded[language] = true;\n result._update();\n return result;\n};\n\nTemplatablePattern.prototype.read = function() {\n var result = '';\n if (this._match_pattern) {\n result = this._input.read(this._starting_pattern);\n } else {\n result = this._input.read(this._starting_pattern, this.__template_pattern);\n }\n var next = this._read_template();\n while (next) {\n if (this._match_pattern) {\n next += this._input.read(this._match_pattern);\n } else {\n next += this._input.readUntil(this.__template_pattern);\n }\n result += next;\n next = this._read_template();\n }\n\n if (this._until_after) {\n result += this._input.readUntilAfter(this._until_pattern);\n }\n return result;\n};\n\nTemplatablePattern.prototype.__set_templated_pattern = function() {\n var items = [];\n\n if (!this._disabled.php) {\n items.push(this.__patterns.php._starting_pattern.source);\n }\n if (!this._disabled.handlebars) {\n items.push(this.__patterns.handlebars._starting_pattern.source);\n }\n if (!this._disabled.erb) {\n items.push(this.__patterns.erb._starting_pattern.source);\n }\n if (!this._disabled.django) {\n items.push(this.__patterns.django._starting_pattern.source);\n // The starting pattern for django is more complex because it has different\n // patterns for value, comment, and other sections\n items.push(this.__patterns.django_value._starting_pattern.source);\n items.push(this.__patterns.django_comment._starting_pattern.source);\n }\n if (!this._disabled.smarty) {\n items.push(this.__patterns.smarty._starting_pattern.source);\n }\n\n if (this._until_pattern) {\n items.push(this._until_pattern.source);\n }\n this.__template_pattern = this._input.get_regexp('(?:' + items.join('|') + ')');\n};\n\nTemplatablePattern.prototype._read_template = function() {\n var resulting_string = '';\n var c = this._input.peek();\n if (c === '<') {\n var peek1 = this._input.peek(1);\n //if we're in a comment, do something special\n // We treat all comments as literals, even more than preformatted tags\n // we just look for the appropriate close tag\n if (!this._disabled.php && !this._excluded.php && peek1 === '?') {\n resulting_string = resulting_string ||\n this.__patterns.php.read();\n }\n if (!this._disabled.erb && !this._excluded.erb && peek1 === '%') {\n resulting_string = resulting_string ||\n this.__patterns.erb.read();\n }\n } else if (c === '{') {\n if (!this._disabled.handlebars && !this._excluded.handlebars) {\n resulting_string = resulting_string ||\n this.__patterns.handlebars_comment.read();\n resulting_string = resulting_string ||\n this.__patterns.handlebars_unescaped.read();\n resulting_string = resulting_string ||\n this.__patterns.handlebars.read();\n }\n if (!this._disabled.django) {\n // django coflicts with handlebars a bit.\n if (!this._excluded.django && !this._excluded.handlebars) {\n resulting_string = resulting_string ||\n this.__patterns.django_value.read();\n }\n if (!this._excluded.django) {\n resulting_string = resulting_string ||\n this.__patterns.django_comment.read();\n resulting_string = resulting_string ||\n this.__patterns.django.read();\n }\n }\n if (!this._disabled.smarty) {\n // smarty cannot be enabled with django or handlebars enabled\n if (this._disabled.django && this._disabled.handlebars) {\n resulting_string = resulting_string ||\n this.__patterns.smarty_comment.read();\n resulting_string = resulting_string ||\n this.__patterns.smarty_literal.read();\n resulting_string = resulting_string ||\n this.__patterns.smarty.read();\n }\n }\n }\n return resulting_string;\n};\n\n\nmodule.exports.TemplatablePattern = TemplatablePattern;\n\n\n/***/ })\n/******/ \t]);\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \t\tif (cachedModule !== undefined) {\n/******/ \t\t\treturn cachedModule.exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t\n/******/ \t// startup\n/******/ \t// Load entry module and return exports\n/******/ \t// This entry module is referenced by other modules so it can't be inlined\n/******/ \tvar __webpack_exports__ = __webpack_require__(0);\n/******/ \tlegacy_beautify_js = __webpack_exports__;\n/******/ \t\n/******/ })()\n;\nvar js_beautify = legacy_beautify_js;\n/* Footer */\nif (typeof define === \"function\" && define.amd) {\n // Add support for AMD ( https://github.com/amdjs/amdjs-api/wiki/AMD#defineamd-property- )\n define([], function() {\n return { js_beautify: js_beautify };\n });\n} else if (typeof exports !== \"undefined\") {\n // Add support for CommonJS. Just put this file somewhere on your require.paths\n // and you will be able to `var js_beautify = require(\"beautify\").js_beautify`.\n exports.js_beautify = js_beautify;\n} else if (typeof window !== \"undefined\") {\n // If we're running a web page and don't have either of the above, add our one global\n window.js_beautify = js_beautify;\n} else if (typeof global !== \"undefined\") {\n // If we don't even have window, try global.\n global.js_beautify = js_beautify;\n}\n\n}());\n\n"],"names":["__webpack_modules__","__webpack_module_cache__","__webpack_exports__","module","__unused_webpack_exports","__webpack_require__","Beautifier","Options","exports","js_source_text","options","beautify","defaultOptions","Output","Token","acorn","Tokenizer","line_starters","positionable_operators","TOKEN","in_array","what","arr","indexOf","reserved_word","token","word","type","RESERVED","text","reserved_array","words","special_words","OPERATOR_POSITION","list","result","x","length","replace","generateMapFromStrings","OPERATOR_POSITION_BEFORE_OR_PRESERVE","before_newline","preserve_newline","MODE","remove_redundant_indentation","output","frame","multiline_frame","mode","remove_indent","start_line_index","is_array","is_expression","source_text","_source_text","_output","_tokens","_last_last_text","_flags","_previous_flags","_flag_store","_options","prototype","create_flags","flags_base","next_indent_level","indentation_level","this","just_added_newline","line_indent_level","parent","last_token","START_BLOCK","last_word","declaration_statement","declaration_assignment","inline_frame","if_block","else_block","class_start_block","do_block","do_while","import_block","in_case_statement","in_case","case_body","case_block","alignment","get_line_number","ternary_depth","_reset","baseIndentString","match","raw","test_output_raw","set_mode","tokenizer","tokenize","disabled","eol","lineBreak","test","current_token","next","handle_token","get_code","preserve_statement_flags","START_EXPR","handle_start_expr","END_EXPR","handle_end_expr","handle_start_block","END_BLOCK","handle_end_block","WORD","handle_word","SEMICOLON","handle_semicolon","STRING","handle_string","EQUALS","handle_equals","OPERATOR","handle_operator","COMMA","handle_comma","BLOCK_COMMENT","handle_block_comment","COMMENT","handle_comment","DOT","handle_dot","EOF","handle_eof","UNKNOWN","handle_unknown","handle_whitespace_and_comments","newlines","keep_whitespace","keep_array_indentation","comments_before","comment_token","i","print_newline","max_preserve_newlines","preserve_newlines","j","newline_restricted_tokens","allow_wrap_or_preserved_newline","force_linewrap","undefined","shouldPreserveOrForce","shouldPrintOperatorNewline","operator_position","wrap_line_length","set_wrap_point","force_newline","next_token","peek","restore_mode","add_new_line","print_token_line_indentation","current_line","set_indent","push","whitespace_before","space_before_token","print_token","add_raw_token","comma_first","previous","previous_line","last","popped","pop","is_empty","trim","add_token","non_breaking_space","previous_token_wrapped","indent","deindent","start_of_object_property","start_of_statement","start","next_mode","space_in_paren","space_before_conditional","peek_back_two","space_after_named_function","peek_back_three","space_after_anon_function","space_in_empty_paren","second_token","empty_braces","empty_anonymous_function","brace_preserve_inline","index","check_token","opened","brace_style","jslint_happy","just_added_blankline","prefix","startsWith","isGeneratorAsterisk","isUnary","space_before","space_after","in_ternary","isColon","isTernaryColon","isOtherColon","after_newline","new_line_needed","directives","preserve","newline","print_block_commment","lines","s","out","idx","allLineBreaks","substring","split_linebreaks","javadoc","starless","lastIndent","lastIndentLength","c","charAt","all_lines_start_with","slice","line","len","each_line_matches_indent","break_chained_methods","unindent_chained_methods","OutputLine","__parent","__character_count","__indent_count","__alignment_count","__wrap_point_index","__wrap_point_character_count","__wrap_point_indent_count","__wrap_point_alignment_count","__items","IndentStringCache","__cache","__indent_size","indent_size","__indent_string","indent_char","indent_with_tabs","Array","join","indent_level","__base_string","__base_string_length","__indent_cache","_end_with_newline","end_with_newline","indent_empty_lines","__lines","next_line","__add_outputline","clone_empty","item","has_match","pattern","lastCheckedOutput","get_indent_size","_set_wrap_point","_should_wrap","_allow_wrap","splice","last_newline_index","lastIndexOf","_remove_indent","_remove_wrap_indent","toString","get_indent_string","column","__ensure_cache","__add_column","Math","floor","last_item","sweet_code","printable_token","__add_space_before_token","output_length","eat_newlines","ensure_empty_line_above","starts_with","ends_with","potentialEmptyLine","closed","__unused_webpack_module","nonASCIIidentifierStartChars","nonASCIIidentifierChars","identifierStart","identifier","RegExp","identifierMatch","source","BaseOptions","validPositionValues","call","raw_brace_style","raw_options","braces_on_own_line","brace_style_split","_get_selection_list","bs","_get_boolean","unescape_strings","e4x","_get_selection","merge_child_field","_mergeOpts","_get_characters","_get_number","templating","allOptions","childFieldName","name","finalOpts","_normalizeOpts","key","convertedOpts","_get_array","default_value","option_value","concat","split","parseInt","isNaN","selection_list","Error","_is_valid_selection","some","normalizeOpts","mergeOpts","InputScanner","BaseTokenizer","BASETOKEN","Directives","Pattern","TemplatablePattern","START","RAW","directives_core","number_pattern","digit","dot_pattern","punct","in_html_comment","punct_pattern","reserved_words","reserved_word_pattern","input_string","_patterns","whitespace","matching","pattern_reader","_input","templatable","read_options","__patterns","template","starting_with","number","comment","until","block_comment","until_after","html_comment_start","html_comment_end","include","shebang","xml","single_quote","double_quote","template_text","template_expression","_is_comment","_is_opening","_is_closing","open_token","_get_next_token","previous_token","_readWhitespace","_create_token","_read_non_javascript","_read_string","_read_pair","_read_word","_read_singles","_read_comment","_read_regexp","_read_xml","_read_punctuation","resulting_string","read","d","_is_first_token","sharp","hasNext","testChar","back","get_directives","ignore","readIgnored","has_char_escapes","_read_string_recursive","escaped","input_scan","matched","String","fromCharCode","unescape_string","_allow_regexp_or_xml","esc","in_char_class","xmlStr","read_match","rootTag","isCurlyRoot","depth","isEndTag","tagName","delimiter","allow_unescaped_newlines","start_sub","current_char","regexp_has_sticky","hasOwnProperty","__input","__input_length","__position","restart","val","__match","lastIndex","pattern_match","exec","sticky","starting_pattern","until_pattern","readUntil","match_index","readUntilAfter","get_regexp","match_from","flags","get_literal_regexp","literal_string","peekUntilAfter","lookBack","testVal","toLowerCase","TokenStream","WhitespacePattern","__tokens","current","open_stack","comments","add","isEmpty","newline_count","whitespace_before_token","parent_token","__tokens_length","__parent_token","input_scanner","_line_regexp","__set_whitespace_patterns","whitespace_chars","newline_chars","_match_pattern","_newline_regexp","matches","__split","_create","_update","regexp","start_index","next_match","_starting_pattern","_until_pattern","_until_after","start_block_pattern","end_block_pattern","__directives_block_pattern","__directive_pattern","__directives_end_ignore_pattern","directive_match","input","template_names","django","erb","handlebars","php","smarty","angular","__template_pattern","_disabled","Object","assign","_excluded","handlebars_comment","handlebars_unescaped","django_value","django_comment","smarty_comment","smarty_literal","__set_templated_pattern","disable","language","exclude","_read_template","items","peek1","moduleId","cachedModule","js_beautify","define","amd","window","global"],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"beautify.min.js","sources":["../../src/beautify/beautify.js"],"sourcesContent":["/* AUTO-GENERATED. DO NOT MODIFY. */\n/*\n\n The MIT License (MIT)\n\n Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors.\n\n Permission is hereby granted, free of charge, to any person\n obtaining a copy of this software and associated documentation files\n (the \"Software\"), to deal in the Software without restriction,\n including without limitation the rights to use, copy, modify, merge,\n publish, distribute, sublicense, and/or sell copies of the Software,\n and to permit persons to whom the Software is furnished to do so,\n subject to the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\n BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n JS Beautifier\n---------------\n\n\n Written by Einar Lielmanis, \n https://beautifier.io/\n\n Originally converted to javascript by Vital, \n \"End braces on own line\" added by Chris J. Shull, \n Parsing improvements for brace-less statements by Liam Newman \n\n\n Usage:\n js_beautify(js_source_text);\n js_beautify(js_source_text, options);\n\n The options are:\n indent_size (default 4) - indentation size,\n indent_char (default space) - character to indent with,\n preserve_newlines (default true) - whether existing line breaks should be preserved,\n max_preserve_newlines (default unlimited) - maximum number of line breaks to be preserved in one chunk,\n\n jslint_happy (default false) - if true, then jslint-stricter mode is enforced.\n\n jslint_happy !jslint_happy\n ---------------------------------\n function () function()\n\n switch () { switch() {\n case 1: case 1:\n break; break;\n } }\n\n space_after_anon_function (default false) - should the space before an anonymous function's parens be added, \"function()\" vs \"function ()\",\n NOTE: This option is overridden by jslint_happy (i.e. if jslint_happy is true, space_after_anon_function is true by design)\n\n brace_style (default \"collapse\") - \"collapse\" | \"expand\" | \"end-expand\" | \"none\" | any of the former + \",preserve-inline\"\n put braces on the same line as control statements (default), or put braces on own line (Allman / ANSI style), or just put end braces on own line, or attempt to keep them where they are.\n preserve-inline will try to preserve inline blocks of curly braces\n\n space_before_conditional (default true) - should the space before conditional statement be added, \"if(true)\" vs \"if (true)\",\n\n unescape_strings (default false) - should printable characters in strings encoded in \\xNN notation be unescaped, \"example\" vs \"\\x65\\x78\\x61\\x6d\\x70\\x6c\\x65\"\n\n wrap_line_length (default unlimited) - lines should wrap at next opportunity after this number of characters.\n NOTE: This is not a hard limit. Lines will continue until a point where a newline would\n be preserved if it were present.\n\n end_with_newline (default false) - end output with a newline\n\n\n e.g\n\n js_beautify(js_source_text, {\n 'indent_size': 1,\n 'indent_char': '\\t'\n });\n\n*/\n\n(function() {\n\n/* GENERATED_BUILD_OUTPUT */\nvar legacy_beautify_js;\n/******/ (function() { // webpackBootstrap\n/******/ \t\"use strict\";\n/******/ \tvar __webpack_modules__ = ([\n/* 0 */\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n/*jshint node:true */\n/*\n\n The MIT License (MIT)\n\n Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors.\n\n Permission is hereby granted, free of charge, to any person\n obtaining a copy of this software and associated documentation files\n (the \"Software\"), to deal in the Software without restriction,\n including without limitation the rights to use, copy, modify, merge,\n publish, distribute, sublicense, and/or sell copies of the Software,\n and to permit persons to whom the Software is furnished to do so,\n subject to the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\n BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n*/\n\n\n\nvar Beautifier = (__webpack_require__(1).Beautifier),\n Options = (__webpack_require__(5).Options);\n\nfunction js_beautify(js_source_text, options) {\n var beautifier = new Beautifier(js_source_text, options);\n return beautifier.beautify();\n}\n\nmodule.exports = js_beautify;\nmodule.exports.defaultOptions = function() {\n return new Options();\n};\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n/*jshint node:true */\n/*\n\n The MIT License (MIT)\n\n Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors.\n\n Permission is hereby granted, free of charge, to any person\n obtaining a copy of this software and associated documentation files\n (the \"Software\"), to deal in the Software without restriction,\n including without limitation the rights to use, copy, modify, merge,\n publish, distribute, sublicense, and/or sell copies of the Software,\n and to permit persons to whom the Software is furnished to do so,\n subject to the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\n BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n*/\n\n\n\nvar Output = (__webpack_require__(2).Output);\nvar Token = (__webpack_require__(3).Token);\nvar acorn = __webpack_require__(4);\nvar Options = (__webpack_require__(5).Options);\nvar Tokenizer = (__webpack_require__(7).Tokenizer);\nvar line_starters = (__webpack_require__(7).line_starters);\nvar positionable_operators = (__webpack_require__(7).positionable_operators);\nvar TOKEN = (__webpack_require__(7).TOKEN);\n\n\nfunction in_array(what, arr) {\n return arr.indexOf(what) !== -1;\n}\n\nfunction ltrim(s) {\n return s.replace(/^\\s+/g, '');\n}\n\nfunction generateMapFromStrings(list) {\n var result = {};\n for (var x = 0; x < list.length; x++) {\n // make the mapped names underscored instead of dash\n result[list[x].replace(/-/g, '_')] = list[x];\n }\n return result;\n}\n\nfunction reserved_word(token, word) {\n return token && token.type === TOKEN.RESERVED && token.text === word;\n}\n\nfunction reserved_array(token, words) {\n return token && token.type === TOKEN.RESERVED && in_array(token.text, words);\n}\n// Unsure of what they mean, but they work. Worth cleaning up in future.\nvar special_words = ['case', 'return', 'do', 'if', 'throw', 'else', 'await', 'break', 'continue', 'async'];\n\nvar validPositionValues = ['before-newline', 'after-newline', 'preserve-newline'];\n\n// Generate map from array\nvar OPERATOR_POSITION = generateMapFromStrings(validPositionValues);\n\nvar OPERATOR_POSITION_BEFORE_OR_PRESERVE = [OPERATOR_POSITION.before_newline, OPERATOR_POSITION.preserve_newline];\n\nvar MODE = {\n BlockStatement: 'BlockStatement', // 'BLOCK'\n Statement: 'Statement', // 'STATEMENT'\n ObjectLiteral: 'ObjectLiteral', // 'OBJECT',\n ArrayLiteral: 'ArrayLiteral', //'[EXPRESSION]',\n ForInitializer: 'ForInitializer', //'(FOR-EXPRESSION)',\n Conditional: 'Conditional', //'(COND-EXPRESSION)',\n Expression: 'Expression' //'(EXPRESSION)'\n};\n\nfunction remove_redundant_indentation(output, frame) {\n // This implementation is effective but has some issues:\n // - can cause line wrap to happen too soon due to indent removal\n // after wrap points are calculated\n // These issues are minor compared to ugly indentation.\n\n if (frame.multiline_frame ||\n frame.mode === MODE.ForInitializer ||\n frame.mode === MODE.Conditional) {\n return;\n }\n\n // remove one indent from each line inside this section\n output.remove_indent(frame.start_line_index);\n}\n\n// we could use just string.split, but\n// IE doesn't like returning empty strings\nfunction split_linebreaks(s) {\n //return s.split(/\\x0d\\x0a|\\x0a/);\n\n s = s.replace(acorn.allLineBreaks, '\\n');\n var out = [],\n idx = s.indexOf(\"\\n\");\n while (idx !== -1) {\n out.push(s.substring(0, idx));\n s = s.substring(idx + 1);\n idx = s.indexOf(\"\\n\");\n }\n if (s.length) {\n out.push(s);\n }\n return out;\n}\n\nfunction is_array(mode) {\n return mode === MODE.ArrayLiteral;\n}\n\nfunction is_expression(mode) {\n return in_array(mode, [MODE.Expression, MODE.ForInitializer, MODE.Conditional]);\n}\n\nfunction all_lines_start_with(lines, c) {\n for (var i = 0; i < lines.length; i++) {\n var line = lines[i].trim();\n if (line.charAt(0) !== c) {\n return false;\n }\n }\n return true;\n}\n\nfunction each_line_matches_indent(lines, indent) {\n var i = 0,\n len = lines.length,\n line;\n for (; i < len; i++) {\n line = lines[i];\n // allow empty lines to pass through\n if (line && line.indexOf(indent) !== 0) {\n return false;\n }\n }\n return true;\n}\n\n\nfunction Beautifier(source_text, options) {\n options = options || {};\n this._source_text = source_text || '';\n\n this._output = null;\n this._tokens = null;\n this._last_last_text = null;\n this._flags = null;\n this._previous_flags = null;\n\n this._flag_store = null;\n this._options = new Options(options);\n}\n\nBeautifier.prototype.create_flags = function(flags_base, mode) {\n var next_indent_level = 0;\n if (flags_base) {\n next_indent_level = flags_base.indentation_level;\n if (!this._output.just_added_newline() &&\n flags_base.line_indent_level > next_indent_level) {\n next_indent_level = flags_base.line_indent_level;\n }\n }\n\n var next_flags = {\n mode: mode,\n parent: flags_base,\n last_token: flags_base ? flags_base.last_token : new Token(TOKEN.START_BLOCK, ''), // last token text\n last_word: flags_base ? flags_base.last_word : '', // last TOKEN.WORD passed\n declaration_statement: false,\n declaration_assignment: false,\n multiline_frame: false,\n inline_frame: false,\n if_block: false,\n else_block: false,\n class_start_block: false, // class A { INSIDE HERE } or class B extends C { INSIDE HERE }\n do_block: false,\n do_while: false,\n import_block: false,\n in_case_statement: false, // switch(..){ INSIDE HERE }\n in_case: false, // we're on the exact line with \"case 0:\"\n case_body: false, // the indented case-action block\n case_block: false, // the indented case-action block is wrapped with {}\n indentation_level: next_indent_level,\n alignment: 0,\n line_indent_level: flags_base ? flags_base.line_indent_level : next_indent_level,\n start_line_index: this._output.get_line_number(),\n ternary_depth: 0\n };\n return next_flags;\n};\n\nBeautifier.prototype._reset = function(source_text) {\n var baseIndentString = source_text.match(/^[\\t ]*/)[0];\n\n this._last_last_text = ''; // pre-last token text\n this._output = new Output(this._options, baseIndentString);\n\n // If testing the ignore directive, start with output disable set to true\n this._output.raw = this._options.test_output_raw;\n\n\n // Stack of parsing/formatting states, including MODE.\n // We tokenize, parse, and output in an almost purely a forward-only stream of token input\n // and formatted output. This makes the beautifier less accurate than full parsers\n // but also far more tolerant of syntax errors.\n //\n // For example, the default mode is MODE.BlockStatement. If we see a '{' we push a new frame of type\n // MODE.BlockStatement on the the stack, even though it could be object literal. If we later\n // encounter a \":\", we'll switch to to MODE.ObjectLiteral. If we then see a \";\",\n // most full parsers would die, but the beautifier gracefully falls back to\n // MODE.BlockStatement and continues on.\n this._flag_store = [];\n this.set_mode(MODE.BlockStatement);\n var tokenizer = new Tokenizer(source_text, this._options);\n this._tokens = tokenizer.tokenize();\n return source_text;\n};\n\nBeautifier.prototype.beautify = function() {\n // if disabled, return the input unchanged.\n if (this._options.disabled) {\n return this._source_text;\n }\n\n var sweet_code;\n var source_text = this._reset(this._source_text);\n\n var eol = this._options.eol;\n if (this._options.eol === 'auto') {\n eol = '\\n';\n if (source_text && acorn.lineBreak.test(source_text || '')) {\n eol = source_text.match(acorn.lineBreak)[0];\n }\n }\n\n var current_token = this._tokens.next();\n while (current_token) {\n this.handle_token(current_token);\n\n this._last_last_text = this._flags.last_token.text;\n this._flags.last_token = current_token;\n\n current_token = this._tokens.next();\n }\n\n sweet_code = this._output.get_code(eol);\n\n return sweet_code;\n};\n\nBeautifier.prototype.handle_token = function(current_token, preserve_statement_flags) {\n if (current_token.type === TOKEN.START_EXPR) {\n this.handle_start_expr(current_token);\n } else if (current_token.type === TOKEN.END_EXPR) {\n this.handle_end_expr(current_token);\n } else if (current_token.type === TOKEN.START_BLOCK) {\n this.handle_start_block(current_token);\n } else if (current_token.type === TOKEN.END_BLOCK) {\n this.handle_end_block(current_token);\n } else if (current_token.type === TOKEN.WORD) {\n this.handle_word(current_token);\n } else if (current_token.type === TOKEN.RESERVED) {\n this.handle_word(current_token);\n } else if (current_token.type === TOKEN.SEMICOLON) {\n this.handle_semicolon(current_token);\n } else if (current_token.type === TOKEN.STRING) {\n this.handle_string(current_token);\n } else if (current_token.type === TOKEN.EQUALS) {\n this.handle_equals(current_token);\n } else if (current_token.type === TOKEN.OPERATOR) {\n this.handle_operator(current_token);\n } else if (current_token.type === TOKEN.COMMA) {\n this.handle_comma(current_token);\n } else if (current_token.type === TOKEN.BLOCK_COMMENT) {\n this.handle_block_comment(current_token, preserve_statement_flags);\n } else if (current_token.type === TOKEN.COMMENT) {\n this.handle_comment(current_token, preserve_statement_flags);\n } else if (current_token.type === TOKEN.DOT) {\n this.handle_dot(current_token);\n } else if (current_token.type === TOKEN.EOF) {\n this.handle_eof(current_token);\n } else if (current_token.type === TOKEN.UNKNOWN) {\n this.handle_unknown(current_token, preserve_statement_flags);\n } else {\n this.handle_unknown(current_token, preserve_statement_flags);\n }\n};\n\nBeautifier.prototype.handle_whitespace_and_comments = function(current_token, preserve_statement_flags) {\n var newlines = current_token.newlines;\n var keep_whitespace = this._options.keep_array_indentation && is_array(this._flags.mode);\n\n if (current_token.comments_before) {\n var comment_token = current_token.comments_before.next();\n while (comment_token) {\n // The cleanest handling of inline comments is to treat them as though they aren't there.\n // Just continue formatting and the behavior should be logical.\n // Also ignore unknown tokens. Again, this should result in better behavior.\n this.handle_whitespace_and_comments(comment_token, preserve_statement_flags);\n this.handle_token(comment_token, preserve_statement_flags);\n comment_token = current_token.comments_before.next();\n }\n }\n\n if (keep_whitespace) {\n for (var i = 0; i < newlines; i += 1) {\n this.print_newline(i > 0, preserve_statement_flags);\n }\n } else {\n if (this._options.max_preserve_newlines && newlines > this._options.max_preserve_newlines) {\n newlines = this._options.max_preserve_newlines;\n }\n\n if (this._options.preserve_newlines) {\n if (newlines > 1) {\n this.print_newline(false, preserve_statement_flags);\n for (var j = 1; j < newlines; j += 1) {\n this.print_newline(true, preserve_statement_flags);\n }\n }\n }\n }\n\n};\n\nvar newline_restricted_tokens = ['async', 'break', 'continue', 'return', 'throw', 'yield'];\n\nBeautifier.prototype.allow_wrap_or_preserved_newline = function(current_token, force_linewrap) {\n force_linewrap = (force_linewrap === undefined) ? false : force_linewrap;\n\n // Never wrap the first token on a line\n if (this._output.just_added_newline()) {\n return;\n }\n\n var shouldPreserveOrForce = (this._options.preserve_newlines && current_token.newlines) || force_linewrap;\n var operatorLogicApplies = in_array(this._flags.last_token.text, positionable_operators) ||\n in_array(current_token.text, positionable_operators);\n\n if (operatorLogicApplies) {\n var shouldPrintOperatorNewline = (\n in_array(this._flags.last_token.text, positionable_operators) &&\n in_array(this._options.operator_position, OPERATOR_POSITION_BEFORE_OR_PRESERVE)\n ) ||\n in_array(current_token.text, positionable_operators);\n shouldPreserveOrForce = shouldPreserveOrForce && shouldPrintOperatorNewline;\n }\n\n if (shouldPreserveOrForce) {\n this.print_newline(false, true);\n } else if (this._options.wrap_line_length) {\n if (reserved_array(this._flags.last_token, newline_restricted_tokens)) {\n // These tokens should never have a newline inserted\n // between them and the following expression.\n return;\n }\n this._output.set_wrap_point();\n }\n};\n\nBeautifier.prototype.print_newline = function(force_newline, preserve_statement_flags) {\n if (!preserve_statement_flags) {\n if (this._flags.last_token.text !== ';' && this._flags.last_token.text !== ',' && this._flags.last_token.text !== '=' && (this._flags.last_token.type !== TOKEN.OPERATOR || this._flags.last_token.text === '--' || this._flags.last_token.text === '++')) {\n var next_token = this._tokens.peek();\n while (this._flags.mode === MODE.Statement &&\n !(this._flags.if_block && reserved_word(next_token, 'else')) &&\n !this._flags.do_block) {\n this.restore_mode();\n }\n }\n }\n\n if (this._output.add_new_line(force_newline)) {\n this._flags.multiline_frame = true;\n }\n};\n\nBeautifier.prototype.print_token_line_indentation = function(current_token) {\n if (this._output.just_added_newline()) {\n if (this._options.keep_array_indentation &&\n current_token.newlines &&\n (current_token.text === '[' || is_array(this._flags.mode))) {\n this._output.current_line.set_indent(-1);\n this._output.current_line.push(current_token.whitespace_before);\n this._output.space_before_token = false;\n } else if (this._output.set_indent(this._flags.indentation_level, this._flags.alignment)) {\n this._flags.line_indent_level = this._flags.indentation_level;\n }\n }\n};\n\nBeautifier.prototype.print_token = function(current_token) {\n if (this._output.raw) {\n this._output.add_raw_token(current_token);\n return;\n }\n\n if (this._options.comma_first && current_token.previous && current_token.previous.type === TOKEN.COMMA &&\n this._output.just_added_newline()) {\n if (this._output.previous_line.last() === ',') {\n var popped = this._output.previous_line.pop();\n // if the comma was already at the start of the line,\n // pull back onto that line and reprint the indentation\n if (this._output.previous_line.is_empty()) {\n this._output.previous_line.push(popped);\n this._output.trim(true);\n this._output.current_line.pop();\n this._output.trim();\n }\n\n // add the comma in front of the next token\n this.print_token_line_indentation(current_token);\n this._output.add_token(',');\n this._output.space_before_token = true;\n }\n }\n\n this.print_token_line_indentation(current_token);\n this._output.non_breaking_space = true;\n this._output.add_token(current_token.text);\n if (this._output.previous_token_wrapped) {\n this._flags.multiline_frame = true;\n }\n};\n\nBeautifier.prototype.indent = function() {\n this._flags.indentation_level += 1;\n this._output.set_indent(this._flags.indentation_level, this._flags.alignment);\n};\n\nBeautifier.prototype.deindent = function() {\n if (this._flags.indentation_level > 0 &&\n ((!this._flags.parent) || this._flags.indentation_level > this._flags.parent.indentation_level)) {\n this._flags.indentation_level -= 1;\n this._output.set_indent(this._flags.indentation_level, this._flags.alignment);\n }\n};\n\nBeautifier.prototype.set_mode = function(mode) {\n if (this._flags) {\n this._flag_store.push(this._flags);\n this._previous_flags = this._flags;\n } else {\n this._previous_flags = this.create_flags(null, mode);\n }\n\n this._flags = this.create_flags(this._previous_flags, mode);\n this._output.set_indent(this._flags.indentation_level, this._flags.alignment);\n};\n\n\nBeautifier.prototype.restore_mode = function() {\n if (this._flag_store.length > 0) {\n this._previous_flags = this._flags;\n this._flags = this._flag_store.pop();\n if (this._previous_flags.mode === MODE.Statement) {\n remove_redundant_indentation(this._output, this._previous_flags);\n }\n this._output.set_indent(this._flags.indentation_level, this._flags.alignment);\n }\n};\n\nBeautifier.prototype.start_of_object_property = function() {\n return this._flags.parent.mode === MODE.ObjectLiteral && this._flags.mode === MODE.Statement && (\n (this._flags.last_token.text === ':' && this._flags.ternary_depth === 0) || (reserved_array(this._flags.last_token, ['get', 'set'])));\n};\n\nBeautifier.prototype.start_of_statement = function(current_token) {\n var start = false;\n start = start || reserved_array(this._flags.last_token, ['var', 'let', 'const']) && current_token.type === TOKEN.WORD;\n start = start || reserved_word(this._flags.last_token, 'do');\n start = start || (!(this._flags.parent.mode === MODE.ObjectLiteral && this._flags.mode === MODE.Statement)) && reserved_array(this._flags.last_token, newline_restricted_tokens) && !current_token.newlines;\n start = start || reserved_word(this._flags.last_token, 'else') &&\n !(reserved_word(current_token, 'if') && !current_token.comments_before);\n start = start || (this._flags.last_token.type === TOKEN.END_EXPR && (this._previous_flags.mode === MODE.ForInitializer || this._previous_flags.mode === MODE.Conditional));\n start = start || (this._flags.last_token.type === TOKEN.WORD && this._flags.mode === MODE.BlockStatement &&\n !this._flags.in_case &&\n !(current_token.text === '--' || current_token.text === '++') &&\n this._last_last_text !== 'function' &&\n current_token.type !== TOKEN.WORD && current_token.type !== TOKEN.RESERVED);\n start = start || (this._flags.mode === MODE.ObjectLiteral && (\n (this._flags.last_token.text === ':' && this._flags.ternary_depth === 0) || reserved_array(this._flags.last_token, ['get', 'set'])));\n\n if (start) {\n this.set_mode(MODE.Statement);\n this.indent();\n\n this.handle_whitespace_and_comments(current_token, true);\n\n // Issue #276:\n // If starting a new statement with [if, for, while, do], push to a new line.\n // if (a) if (b) if(c) d(); else e(); else f();\n if (!this.start_of_object_property()) {\n this.allow_wrap_or_preserved_newline(current_token,\n reserved_array(current_token, ['do', 'for', 'if', 'while']));\n }\n return true;\n }\n return false;\n};\n\nBeautifier.prototype.handle_start_expr = function(current_token) {\n // The conditional starts the statement if appropriate.\n if (!this.start_of_statement(current_token)) {\n this.handle_whitespace_and_comments(current_token);\n }\n\n var next_mode = MODE.Expression;\n if (current_token.text === '[') {\n\n if (this._flags.last_token.type === TOKEN.WORD || this._flags.last_token.text === ')') {\n // this is array index specifier, break immediately\n // a[x], fn()[x]\n if (reserved_array(this._flags.last_token, line_starters)) {\n this._output.space_before_token = true;\n }\n this.print_token(current_token);\n this.set_mode(next_mode);\n this.indent();\n if (this._options.space_in_paren) {\n this._output.space_before_token = true;\n }\n return;\n }\n\n next_mode = MODE.ArrayLiteral;\n if (is_array(this._flags.mode)) {\n if (this._flags.last_token.text === '[' ||\n (this._flags.last_token.text === ',' && (this._last_last_text === ']' || this._last_last_text === '}'))) {\n // ], [ goes to new line\n // }, [ goes to new line\n if (!this._options.keep_array_indentation) {\n this.print_newline();\n }\n }\n }\n\n if (!in_array(this._flags.last_token.type, [TOKEN.START_EXPR, TOKEN.END_EXPR, TOKEN.WORD, TOKEN.OPERATOR, TOKEN.DOT])) {\n this._output.space_before_token = true;\n }\n } else {\n if (this._flags.last_token.type === TOKEN.RESERVED) {\n if (this._flags.last_token.text === 'for') {\n this._output.space_before_token = this._options.space_before_conditional;\n next_mode = MODE.ForInitializer;\n } else if (in_array(this._flags.last_token.text, ['if', 'while', 'switch'])) {\n this._output.space_before_token = this._options.space_before_conditional;\n next_mode = MODE.Conditional;\n } else if (in_array(this._flags.last_word, ['await', 'async'])) {\n // Should be a space between await and an IIFE, or async and an arrow function\n this._output.space_before_token = true;\n } else if (this._flags.last_token.text === 'import' && current_token.whitespace_before === '') {\n this._output.space_before_token = false;\n } else if (in_array(this._flags.last_token.text, line_starters) || this._flags.last_token.text === 'catch') {\n this._output.space_before_token = true;\n }\n } else if (this._flags.last_token.type === TOKEN.EQUALS || this._flags.last_token.type === TOKEN.OPERATOR) {\n // Support of this kind of newline preservation.\n // a = (b &&\n // (c || d));\n if (!this.start_of_object_property()) {\n this.allow_wrap_or_preserved_newline(current_token);\n }\n } else if (this._flags.last_token.type === TOKEN.WORD) {\n this._output.space_before_token = false;\n\n // function name() vs function name ()\n // function* name() vs function* name ()\n // async name() vs async name ()\n // In ES6, you can also define the method properties of an object\n // var obj = {a: function() {}}\n // It can be abbreviated\n // var obj = {a() {}}\n // var obj = { a() {}} vs var obj = { a () {}}\n // var obj = { * a() {}} vs var obj = { * a () {}}\n var peek_back_two = this._tokens.peek(-3);\n if (this._options.space_after_named_function && peek_back_two) {\n // peek starts at next character so -1 is current token\n var peek_back_three = this._tokens.peek(-4);\n if (reserved_array(peek_back_two, ['async', 'function']) ||\n (peek_back_two.text === '*' && reserved_array(peek_back_three, ['async', 'function']))) {\n this._output.space_before_token = true;\n } else if (this._flags.mode === MODE.ObjectLiteral) {\n if ((peek_back_two.text === '{' || peek_back_two.text === ',') ||\n (peek_back_two.text === '*' && (peek_back_three.text === '{' || peek_back_three.text === ','))) {\n this._output.space_before_token = true;\n }\n } else if (this._flags.parent && this._flags.parent.class_start_block) {\n this._output.space_before_token = true;\n }\n }\n } else {\n // Support preserving wrapped arrow function expressions\n // a.b('c',\n // () => d.e\n // )\n this.allow_wrap_or_preserved_newline(current_token);\n }\n\n // function() vs function ()\n // yield*() vs yield* ()\n // function*() vs function* ()\n if ((this._flags.last_token.type === TOKEN.RESERVED && (this._flags.last_word === 'function' || this._flags.last_word === 'typeof')) ||\n (this._flags.last_token.text === '*' &&\n (in_array(this._last_last_text, ['function', 'yield']) ||\n (this._flags.mode === MODE.ObjectLiteral && in_array(this._last_last_text, ['{', ',']))))) {\n this._output.space_before_token = this._options.space_after_anon_function;\n }\n }\n\n if (this._flags.last_token.text === ';' || this._flags.last_token.type === TOKEN.START_BLOCK) {\n this.print_newline();\n } else if (this._flags.last_token.type === TOKEN.END_EXPR || this._flags.last_token.type === TOKEN.START_EXPR || this._flags.last_token.type === TOKEN.END_BLOCK || this._flags.last_token.text === '.' || this._flags.last_token.type === TOKEN.COMMA) {\n // do nothing on (( and )( and ][ and ]( and .(\n // TODO: Consider whether forcing this is required. Review failing tests when removed.\n this.allow_wrap_or_preserved_newline(current_token, current_token.newlines);\n }\n\n this.print_token(current_token);\n this.set_mode(next_mode);\n if (this._options.space_in_paren) {\n this._output.space_before_token = true;\n }\n\n // In all cases, if we newline while inside an expression it should be indented.\n this.indent();\n};\n\nBeautifier.prototype.handle_end_expr = function(current_token) {\n // statements inside expressions are not valid syntax, but...\n // statements must all be closed when their container closes\n while (this._flags.mode === MODE.Statement) {\n this.restore_mode();\n }\n\n this.handle_whitespace_and_comments(current_token);\n\n if (this._flags.multiline_frame) {\n this.allow_wrap_or_preserved_newline(current_token,\n current_token.text === ']' && is_array(this._flags.mode) && !this._options.keep_array_indentation);\n }\n\n if (this._options.space_in_paren) {\n if (this._flags.last_token.type === TOKEN.START_EXPR && !this._options.space_in_empty_paren) {\n // () [] no inner space in empty parens like these, ever, ref #320\n this._output.trim();\n this._output.space_before_token = false;\n } else {\n this._output.space_before_token = true;\n }\n }\n this.deindent();\n this.print_token(current_token);\n this.restore_mode();\n\n remove_redundant_indentation(this._output, this._previous_flags);\n\n // do {} while () // no statement required after\n if (this._flags.do_while && this._previous_flags.mode === MODE.Conditional) {\n this._previous_flags.mode = MODE.Expression;\n this._flags.do_block = false;\n this._flags.do_while = false;\n\n }\n};\n\nBeautifier.prototype.handle_start_block = function(current_token) {\n this.handle_whitespace_and_comments(current_token);\n\n // Check if this is should be treated as a ObjectLiteral\n var next_token = this._tokens.peek();\n var second_token = this._tokens.peek(1);\n if (this._flags.last_word === 'switch' && this._flags.last_token.type === TOKEN.END_EXPR) {\n this.set_mode(MODE.BlockStatement);\n this._flags.in_case_statement = true;\n } else if (this._flags.case_body) {\n this.set_mode(MODE.BlockStatement);\n } else if (second_token && (\n (in_array(second_token.text, [':', ',']) && in_array(next_token.type, [TOKEN.STRING, TOKEN.WORD, TOKEN.RESERVED])) ||\n (in_array(next_token.text, ['get', 'set', '...']) && in_array(second_token.type, [TOKEN.WORD, TOKEN.RESERVED]))\n )) {\n // We don't support TypeScript,but we didn't break it for a very long time.\n // We'll try to keep not breaking it.\n if (in_array(this._last_last_text, ['class', 'interface']) && !in_array(second_token.text, [':', ','])) {\n this.set_mode(MODE.BlockStatement);\n } else {\n this.set_mode(MODE.ObjectLiteral);\n }\n } else if (this._flags.last_token.type === TOKEN.OPERATOR && this._flags.last_token.text === '=>') {\n // arrow function: (param1, paramN) => { statements }\n this.set_mode(MODE.BlockStatement);\n } else if (in_array(this._flags.last_token.type, [TOKEN.EQUALS, TOKEN.START_EXPR, TOKEN.COMMA, TOKEN.OPERATOR]) ||\n reserved_array(this._flags.last_token, ['return', 'throw', 'import', 'default'])\n ) {\n // Detecting shorthand function syntax is difficult by scanning forward,\n // so check the surrounding context.\n // If the block is being returned, imported, export default, passed as arg,\n // assigned with = or assigned in a nested object, treat as an ObjectLiteral.\n this.set_mode(MODE.ObjectLiteral);\n } else {\n this.set_mode(MODE.BlockStatement);\n }\n\n if (this._flags.last_token) {\n if (reserved_array(this._flags.last_token.previous, ['class', 'extends'])) {\n this._flags.class_start_block = true;\n }\n }\n\n var empty_braces = !next_token.comments_before && next_token.text === '}';\n var empty_anonymous_function = empty_braces && this._flags.last_word === 'function' &&\n this._flags.last_token.type === TOKEN.END_EXPR;\n\n if (this._options.brace_preserve_inline) // check for inline, set inline_frame if so\n {\n // search forward for a newline wanted inside this block\n var index = 0;\n var check_token = null;\n this._flags.inline_frame = true;\n do {\n index += 1;\n check_token = this._tokens.peek(index - 1);\n if (check_token.newlines) {\n this._flags.inline_frame = false;\n break;\n }\n } while (check_token.type !== TOKEN.EOF &&\n !(check_token.type === TOKEN.END_BLOCK && check_token.opened === current_token));\n }\n\n if ((this._options.brace_style === \"expand\" ||\n (this._options.brace_style === \"none\" && current_token.newlines)) &&\n !this._flags.inline_frame) {\n if (this._flags.last_token.type !== TOKEN.OPERATOR &&\n (empty_anonymous_function ||\n this._flags.last_token.type === TOKEN.EQUALS ||\n (reserved_array(this._flags.last_token, special_words) && this._flags.last_token.text !== 'else'))) {\n this._output.space_before_token = true;\n } else {\n this.print_newline(false, true);\n }\n } else { // collapse || inline_frame\n if (is_array(this._previous_flags.mode) && (this._flags.last_token.type === TOKEN.START_EXPR || this._flags.last_token.type === TOKEN.COMMA)) {\n if (this._flags.last_token.type === TOKEN.COMMA || this._options.space_in_paren) {\n this._output.space_before_token = true;\n }\n\n if (this._flags.last_token.type === TOKEN.COMMA || (this._flags.last_token.type === TOKEN.START_EXPR && this._flags.inline_frame)) {\n this.allow_wrap_or_preserved_newline(current_token);\n this._previous_flags.multiline_frame = this._previous_flags.multiline_frame || this._flags.multiline_frame;\n this._flags.multiline_frame = false;\n }\n }\n if (this._flags.last_token.type !== TOKEN.OPERATOR && this._flags.last_token.type !== TOKEN.START_EXPR) {\n if (in_array(this._flags.last_token.type, [TOKEN.START_BLOCK, TOKEN.SEMICOLON]) && !this._flags.inline_frame) {\n this.print_newline();\n } else {\n this._output.space_before_token = true;\n }\n }\n }\n this.print_token(current_token);\n this.indent();\n\n // Except for specific cases, open braces are followed by a new line.\n if (!empty_braces && !(this._options.brace_preserve_inline && this._flags.inline_frame)) {\n this.print_newline();\n }\n};\n\nBeautifier.prototype.handle_end_block = function(current_token) {\n // statements must all be closed when their container closes\n this.handle_whitespace_and_comments(current_token);\n\n while (this._flags.mode === MODE.Statement) {\n this.restore_mode();\n }\n\n var empty_braces = this._flags.last_token.type === TOKEN.START_BLOCK;\n\n if (this._flags.inline_frame && !empty_braces) { // try inline_frame (only set if this._options.braces-preserve-inline) first\n this._output.space_before_token = true;\n } else if (this._options.brace_style === \"expand\") {\n if (!empty_braces) {\n this.print_newline();\n }\n } else {\n // skip {}\n if (!empty_braces) {\n if (is_array(this._flags.mode) && this._options.keep_array_indentation) {\n // we REALLY need a newline here, but newliner would skip that\n this._options.keep_array_indentation = false;\n this.print_newline();\n this._options.keep_array_indentation = true;\n\n } else {\n this.print_newline();\n }\n }\n }\n this.restore_mode();\n this.print_token(current_token);\n};\n\nBeautifier.prototype.handle_word = function(current_token) {\n if (current_token.type === TOKEN.RESERVED) {\n if (in_array(current_token.text, ['set', 'get']) && this._flags.mode !== MODE.ObjectLiteral) {\n current_token.type = TOKEN.WORD;\n } else if (current_token.text === 'import' && in_array(this._tokens.peek().text, ['(', '.'])) {\n current_token.type = TOKEN.WORD;\n } else if (in_array(current_token.text, ['as', 'from']) && !this._flags.import_block) {\n current_token.type = TOKEN.WORD;\n } else if (this._flags.mode === MODE.ObjectLiteral) {\n var next_token = this._tokens.peek();\n if (next_token.text === ':') {\n current_token.type = TOKEN.WORD;\n }\n }\n }\n\n if (this.start_of_statement(current_token)) {\n // The conditional starts the statement if appropriate.\n if (reserved_array(this._flags.last_token, ['var', 'let', 'const']) && current_token.type === TOKEN.WORD) {\n this._flags.declaration_statement = true;\n }\n } else if (current_token.newlines && !is_expression(this._flags.mode) &&\n (this._flags.last_token.type !== TOKEN.OPERATOR || (this._flags.last_token.text === '--' || this._flags.last_token.text === '++')) &&\n this._flags.last_token.type !== TOKEN.EQUALS &&\n (this._options.preserve_newlines || !reserved_array(this._flags.last_token, ['var', 'let', 'const', 'set', 'get']))) {\n this.handle_whitespace_and_comments(current_token);\n this.print_newline();\n } else {\n this.handle_whitespace_and_comments(current_token);\n }\n\n if (this._flags.do_block && !this._flags.do_while) {\n if (reserved_word(current_token, 'while')) {\n // do {} ## while ()\n this._output.space_before_token = true;\n this.print_token(current_token);\n this._output.space_before_token = true;\n this._flags.do_while = true;\n return;\n } else {\n // do {} should always have while as the next word.\n // if we don't see the expected while, recover\n this.print_newline();\n this._flags.do_block = false;\n }\n }\n\n // if may be followed by else, or not\n // Bare/inline ifs are tricky\n // Need to unwind the modes correctly: if (a) if (b) c(); else d(); else e();\n if (this._flags.if_block) {\n if (!this._flags.else_block && reserved_word(current_token, 'else')) {\n this._flags.else_block = true;\n } else {\n while (this._flags.mode === MODE.Statement) {\n this.restore_mode();\n }\n this._flags.if_block = false;\n this._flags.else_block = false;\n }\n }\n\n if (this._flags.in_case_statement && reserved_array(current_token, ['case', 'default'])) {\n this.print_newline();\n if (!this._flags.case_block && (this._flags.case_body || this._options.jslint_happy)) {\n // switch cases following one another\n this.deindent();\n }\n this._flags.case_body = false;\n\n this.print_token(current_token);\n this._flags.in_case = true;\n return;\n }\n\n if (this._flags.last_token.type === TOKEN.COMMA || this._flags.last_token.type === TOKEN.START_EXPR || this._flags.last_token.type === TOKEN.EQUALS || this._flags.last_token.type === TOKEN.OPERATOR) {\n if (!this.start_of_object_property() && !(\n // start of object property is different for numeric values with +/- prefix operators\n in_array(this._flags.last_token.text, ['+', '-']) && this._last_last_text === ':' && this._flags.parent.mode === MODE.ObjectLiteral)) {\n this.allow_wrap_or_preserved_newline(current_token);\n }\n }\n\n if (reserved_word(current_token, 'function')) {\n if (in_array(this._flags.last_token.text, ['}', ';']) ||\n (this._output.just_added_newline() && !(in_array(this._flags.last_token.text, ['(', '[', '{', ':', '=', ',']) || this._flags.last_token.type === TOKEN.OPERATOR))) {\n // make sure there is a nice clean space of at least one blank line\n // before a new function definition\n if (!this._output.just_added_blankline() && !current_token.comments_before) {\n this.print_newline();\n this.print_newline(true);\n }\n }\n if (this._flags.last_token.type === TOKEN.RESERVED || this._flags.last_token.type === TOKEN.WORD) {\n if (reserved_array(this._flags.last_token, ['get', 'set', 'new', 'export']) ||\n reserved_array(this._flags.last_token, newline_restricted_tokens)) {\n this._output.space_before_token = true;\n } else if (reserved_word(this._flags.last_token, 'default') && this._last_last_text === 'export') {\n this._output.space_before_token = true;\n } else if (this._flags.last_token.text === 'declare') {\n // accomodates Typescript declare function formatting\n this._output.space_before_token = true;\n } else {\n this.print_newline();\n }\n } else if (this._flags.last_token.type === TOKEN.OPERATOR || this._flags.last_token.text === '=') {\n // foo = function\n this._output.space_before_token = true;\n } else if (!this._flags.multiline_frame && (is_expression(this._flags.mode) || is_array(this._flags.mode))) {\n // (function\n } else {\n this.print_newline();\n }\n\n this.print_token(current_token);\n this._flags.last_word = current_token.text;\n return;\n }\n\n var prefix = 'NONE';\n\n if (this._flags.last_token.type === TOKEN.END_BLOCK) {\n\n if (this._previous_flags.inline_frame) {\n prefix = 'SPACE';\n } else if (!reserved_array(current_token, ['else', 'catch', 'finally', 'from'])) {\n prefix = 'NEWLINE';\n } else {\n if (this._options.brace_style === \"expand\" ||\n this._options.brace_style === \"end-expand\" ||\n (this._options.brace_style === \"none\" && current_token.newlines)) {\n prefix = 'NEWLINE';\n } else {\n prefix = 'SPACE';\n this._output.space_before_token = true;\n }\n }\n } else if (this._flags.last_token.type === TOKEN.SEMICOLON && this._flags.mode === MODE.BlockStatement) {\n // TODO: Should this be for STATEMENT as well?\n prefix = 'NEWLINE';\n } else if (this._flags.last_token.type === TOKEN.SEMICOLON && is_expression(this._flags.mode)) {\n prefix = 'SPACE';\n } else if (this._flags.last_token.type === TOKEN.STRING) {\n prefix = 'NEWLINE';\n } else if (this._flags.last_token.type === TOKEN.RESERVED || this._flags.last_token.type === TOKEN.WORD ||\n (this._flags.last_token.text === '*' &&\n (in_array(this._last_last_text, ['function', 'yield']) ||\n (this._flags.mode === MODE.ObjectLiteral && in_array(this._last_last_text, ['{', ',']))))) {\n prefix = 'SPACE';\n } else if (this._flags.last_token.type === TOKEN.START_BLOCK) {\n if (this._flags.inline_frame) {\n prefix = 'SPACE';\n } else {\n prefix = 'NEWLINE';\n }\n } else if (this._flags.last_token.type === TOKEN.END_EXPR) {\n this._output.space_before_token = true;\n prefix = 'NEWLINE';\n }\n\n if (reserved_array(current_token, line_starters) && this._flags.last_token.text !== ')') {\n if (this._flags.inline_frame || this._flags.last_token.text === 'else' || this._flags.last_token.text === 'export') {\n prefix = 'SPACE';\n } else {\n prefix = 'NEWLINE';\n }\n\n }\n\n if (reserved_array(current_token, ['else', 'catch', 'finally'])) {\n if ((!(this._flags.last_token.type === TOKEN.END_BLOCK && this._previous_flags.mode === MODE.BlockStatement) ||\n this._options.brace_style === \"expand\" ||\n this._options.brace_style === \"end-expand\" ||\n (this._options.brace_style === \"none\" && current_token.newlines)) &&\n !this._flags.inline_frame) {\n this.print_newline();\n } else {\n this._output.trim(true);\n var line = this._output.current_line;\n // If we trimmed and there's something other than a close block before us\n // put a newline back in. Handles '} // comment' scenario.\n if (line.last() !== '}') {\n this.print_newline();\n }\n this._output.space_before_token = true;\n }\n } else if (prefix === 'NEWLINE') {\n if (reserved_array(this._flags.last_token, special_words)) {\n // no newline between 'return nnn'\n this._output.space_before_token = true;\n } else if (this._flags.last_token.text === 'declare' && reserved_array(current_token, ['var', 'let', 'const'])) {\n // accomodates Typescript declare formatting\n this._output.space_before_token = true;\n } else if (this._flags.last_token.type !== TOKEN.END_EXPR) {\n if ((this._flags.last_token.type !== TOKEN.START_EXPR || !reserved_array(current_token, ['var', 'let', 'const'])) && this._flags.last_token.text !== ':') {\n // no need to force newline on 'var': for (var x = 0...)\n if (reserved_word(current_token, 'if') && reserved_word(current_token.previous, 'else')) {\n // no newline for } else if {\n this._output.space_before_token = true;\n } else {\n this.print_newline();\n }\n }\n } else if (reserved_array(current_token, line_starters) && this._flags.last_token.text !== ')') {\n this.print_newline();\n }\n } else if (this._flags.multiline_frame && is_array(this._flags.mode) && this._flags.last_token.text === ',' && this._last_last_text === '}') {\n this.print_newline(); // }, in lists get a newline treatment\n } else if (prefix === 'SPACE') {\n this._output.space_before_token = true;\n }\n if (current_token.previous && (current_token.previous.type === TOKEN.WORD || current_token.previous.type === TOKEN.RESERVED)) {\n this._output.space_before_token = true;\n }\n this.print_token(current_token);\n this._flags.last_word = current_token.text;\n\n if (current_token.type === TOKEN.RESERVED) {\n if (current_token.text === 'do') {\n this._flags.do_block = true;\n } else if (current_token.text === 'if') {\n this._flags.if_block = true;\n } else if (current_token.text === 'import') {\n this._flags.import_block = true;\n } else if (this._flags.import_block && reserved_word(current_token, 'from')) {\n this._flags.import_block = false;\n }\n }\n};\n\nBeautifier.prototype.handle_semicolon = function(current_token) {\n if (this.start_of_statement(current_token)) {\n // The conditional starts the statement if appropriate.\n // Semicolon can be the start (and end) of a statement\n this._output.space_before_token = false;\n } else {\n this.handle_whitespace_and_comments(current_token);\n }\n\n var next_token = this._tokens.peek();\n while (this._flags.mode === MODE.Statement &&\n !(this._flags.if_block && reserved_word(next_token, 'else')) &&\n !this._flags.do_block) {\n this.restore_mode();\n }\n\n // hacky but effective for the moment\n if (this._flags.import_block) {\n this._flags.import_block = false;\n }\n this.print_token(current_token);\n};\n\nBeautifier.prototype.handle_string = function(current_token) {\n if (current_token.text.startsWith(\"`\") && current_token.newlines === 0 && current_token.whitespace_before === '' && (current_token.previous.text === ')' || this._flags.last_token.type === TOKEN.WORD)) {\n //Conditional for detectign backtick strings\n } else if (this.start_of_statement(current_token)) {\n // The conditional starts the statement if appropriate.\n // One difference - strings want at least a space before\n this._output.space_before_token = true;\n } else {\n this.handle_whitespace_and_comments(current_token);\n if (this._flags.last_token.type === TOKEN.RESERVED || this._flags.last_token.type === TOKEN.WORD || this._flags.inline_frame) {\n this._output.space_before_token = true;\n } else if (this._flags.last_token.type === TOKEN.COMMA || this._flags.last_token.type === TOKEN.START_EXPR || this._flags.last_token.type === TOKEN.EQUALS || this._flags.last_token.type === TOKEN.OPERATOR) {\n if (!this.start_of_object_property()) {\n this.allow_wrap_or_preserved_newline(current_token);\n }\n } else if ((current_token.text.startsWith(\"`\") && this._flags.last_token.type === TOKEN.END_EXPR && (current_token.previous.text === ']' || current_token.previous.text === ')') && current_token.newlines === 0)) {\n this._output.space_before_token = true;\n } else {\n this.print_newline();\n }\n }\n this.print_token(current_token);\n};\n\nBeautifier.prototype.handle_equals = function(current_token) {\n if (this.start_of_statement(current_token)) {\n // The conditional starts the statement if appropriate.\n } else {\n this.handle_whitespace_and_comments(current_token);\n }\n\n if (this._flags.declaration_statement) {\n // just got an '=' in a var-line, different formatting/line-breaking, etc will now be done\n this._flags.declaration_assignment = true;\n }\n this._output.space_before_token = true;\n this.print_token(current_token);\n this._output.space_before_token = true;\n};\n\nBeautifier.prototype.handle_comma = function(current_token) {\n this.handle_whitespace_and_comments(current_token, true);\n\n this.print_token(current_token);\n this._output.space_before_token = true;\n if (this._flags.declaration_statement) {\n if (is_expression(this._flags.parent.mode)) {\n // do not break on comma, for(var a = 1, b = 2)\n this._flags.declaration_assignment = false;\n }\n\n if (this._flags.declaration_assignment) {\n this._flags.declaration_assignment = false;\n this.print_newline(false, true);\n } else if (this._options.comma_first) {\n // for comma-first, we want to allow a newline before the comma\n // to turn into a newline after the comma, which we will fixup later\n this.allow_wrap_or_preserved_newline(current_token);\n }\n } else if (this._flags.mode === MODE.ObjectLiteral ||\n (this._flags.mode === MODE.Statement && this._flags.parent.mode === MODE.ObjectLiteral)) {\n if (this._flags.mode === MODE.Statement) {\n this.restore_mode();\n }\n\n if (!this._flags.inline_frame) {\n this.print_newline();\n }\n } else if (this._options.comma_first) {\n // EXPR or DO_BLOCK\n // for comma-first, we want to allow a newline before the comma\n // to turn into a newline after the comma, which we will fixup later\n this.allow_wrap_or_preserved_newline(current_token);\n }\n};\n\nBeautifier.prototype.handle_operator = function(current_token) {\n var isGeneratorAsterisk = current_token.text === '*' &&\n (reserved_array(this._flags.last_token, ['function', 'yield']) ||\n (in_array(this._flags.last_token.type, [TOKEN.START_BLOCK, TOKEN.COMMA, TOKEN.END_BLOCK, TOKEN.SEMICOLON]))\n );\n var isUnary = in_array(current_token.text, ['-', '+']) && (\n in_array(this._flags.last_token.type, [TOKEN.START_BLOCK, TOKEN.START_EXPR, TOKEN.EQUALS, TOKEN.OPERATOR]) ||\n in_array(this._flags.last_token.text, line_starters) ||\n this._flags.last_token.text === ','\n );\n\n if (this.start_of_statement(current_token)) {\n // The conditional starts the statement if appropriate.\n } else {\n var preserve_statement_flags = !isGeneratorAsterisk;\n this.handle_whitespace_and_comments(current_token, preserve_statement_flags);\n }\n\n // hack for actionscript's import .*;\n if (current_token.text === '*' && this._flags.last_token.type === TOKEN.DOT) {\n this.print_token(current_token);\n return;\n }\n\n if (current_token.text === '::') {\n // no spaces around exotic namespacing syntax operator\n this.print_token(current_token);\n return;\n }\n\n if (in_array(current_token.text, ['-', '+']) && this.start_of_object_property()) {\n // numeric value with +/- symbol in front as a property\n this.print_token(current_token);\n return;\n }\n\n // Allow line wrapping between operators when operator_position is\n // set to before or preserve\n if (this._flags.last_token.type === TOKEN.OPERATOR && in_array(this._options.operator_position, OPERATOR_POSITION_BEFORE_OR_PRESERVE)) {\n this.allow_wrap_or_preserved_newline(current_token);\n }\n\n if (current_token.text === ':' && this._flags.in_case) {\n this.print_token(current_token);\n\n this._flags.in_case = false;\n this._flags.case_body = true;\n if (this._tokens.peek().type !== TOKEN.START_BLOCK) {\n this.indent();\n this.print_newline();\n this._flags.case_block = false;\n } else {\n this._flags.case_block = true;\n this._output.space_before_token = true;\n }\n return;\n }\n\n var space_before = true;\n var space_after = true;\n var in_ternary = false;\n if (current_token.text === ':') {\n if (this._flags.ternary_depth === 0) {\n // Colon is invalid javascript outside of ternary and object, but do our best to guess what was meant.\n space_before = false;\n } else {\n this._flags.ternary_depth -= 1;\n in_ternary = true;\n }\n } else if (current_token.text === '?') {\n this._flags.ternary_depth += 1;\n }\n\n // let's handle the operator_position option prior to any conflicting logic\n if (!isUnary && !isGeneratorAsterisk && this._options.preserve_newlines && in_array(current_token.text, positionable_operators)) {\n var isColon = current_token.text === ':';\n var isTernaryColon = (isColon && in_ternary);\n var isOtherColon = (isColon && !in_ternary);\n\n switch (this._options.operator_position) {\n case OPERATOR_POSITION.before_newline:\n // if the current token is : and it's not a ternary statement then we set space_before to false\n this._output.space_before_token = !isOtherColon;\n\n this.print_token(current_token);\n\n if (!isColon || isTernaryColon) {\n this.allow_wrap_or_preserved_newline(current_token);\n }\n\n this._output.space_before_token = true;\n return;\n\n case OPERATOR_POSITION.after_newline:\n // if the current token is anything but colon, or (via deduction) it's a colon and in a ternary statement,\n // then print a newline.\n\n this._output.space_before_token = true;\n\n if (!isColon || isTernaryColon) {\n if (this._tokens.peek().newlines) {\n this.print_newline(false, true);\n } else {\n this.allow_wrap_or_preserved_newline(current_token);\n }\n } else {\n this._output.space_before_token = false;\n }\n\n this.print_token(current_token);\n\n this._output.space_before_token = true;\n return;\n\n case OPERATOR_POSITION.preserve_newline:\n if (!isOtherColon) {\n this.allow_wrap_or_preserved_newline(current_token);\n }\n\n // if we just added a newline, or the current token is : and it's not a ternary statement,\n // then we set space_before to false\n space_before = !(this._output.just_added_newline() || isOtherColon);\n\n this._output.space_before_token = space_before;\n this.print_token(current_token);\n this._output.space_before_token = true;\n return;\n }\n }\n\n if (isGeneratorAsterisk) {\n this.allow_wrap_or_preserved_newline(current_token);\n space_before = false;\n var next_token = this._tokens.peek();\n space_after = next_token && in_array(next_token.type, [TOKEN.WORD, TOKEN.RESERVED]);\n } else if (current_token.text === '...') {\n this.allow_wrap_or_preserved_newline(current_token);\n space_before = this._flags.last_token.type === TOKEN.START_BLOCK;\n space_after = false;\n } else if (in_array(current_token.text, ['--', '++', '!', '~']) || isUnary) {\n // unary operators (and binary +/- pretending to be unary) special cases\n if (this._flags.last_token.type === TOKEN.COMMA || this._flags.last_token.type === TOKEN.START_EXPR) {\n this.allow_wrap_or_preserved_newline(current_token);\n }\n\n space_before = false;\n space_after = false;\n\n // http://www.ecma-international.org/ecma-262/5.1/#sec-7.9.1\n // if there is a newline between -- or ++ and anything else we should preserve it.\n if (current_token.newlines && (current_token.text === '--' || current_token.text === '++' || current_token.text === '~')) {\n var new_line_needed = reserved_array(this._flags.last_token, special_words) && current_token.newlines;\n if (new_line_needed && (this._previous_flags.if_block || this._previous_flags.else_block)) {\n this.restore_mode();\n }\n this.print_newline(new_line_needed, true);\n }\n\n if (this._flags.last_token.text === ';' && is_expression(this._flags.mode)) {\n // for (;; ++i)\n // ^^^\n space_before = true;\n }\n\n if (this._flags.last_token.type === TOKEN.RESERVED) {\n space_before = true;\n } else if (this._flags.last_token.type === TOKEN.END_EXPR) {\n space_before = !(this._flags.last_token.text === ']' && (current_token.text === '--' || current_token.text === '++'));\n } else if (this._flags.last_token.type === TOKEN.OPERATOR) {\n // a++ + ++b;\n // a - -b\n space_before = in_array(current_token.text, ['--', '-', '++', '+']) && in_array(this._flags.last_token.text, ['--', '-', '++', '+']);\n // + and - are not unary when preceeded by -- or ++ operator\n // a-- + b\n // a * +b\n // a - -b\n if (in_array(current_token.text, ['+', '-']) && in_array(this._flags.last_token.text, ['--', '++'])) {\n space_after = true;\n }\n }\n\n\n if (((this._flags.mode === MODE.BlockStatement && !this._flags.inline_frame) || this._flags.mode === MODE.Statement) &&\n (this._flags.last_token.text === '{' || this._flags.last_token.text === ';')) {\n // { foo; --i }\n // foo(); --bar;\n this.print_newline();\n }\n }\n\n this._output.space_before_token = this._output.space_before_token || space_before;\n this.print_token(current_token);\n this._output.space_before_token = space_after;\n};\n\nBeautifier.prototype.handle_block_comment = function(current_token, preserve_statement_flags) {\n if (this._output.raw) {\n this._output.add_raw_token(current_token);\n if (current_token.directives && current_token.directives.preserve === 'end') {\n // If we're testing the raw output behavior, do not allow a directive to turn it off.\n this._output.raw = this._options.test_output_raw;\n }\n return;\n }\n\n if (current_token.directives) {\n this.print_newline(false, preserve_statement_flags);\n this.print_token(current_token);\n if (current_token.directives.preserve === 'start') {\n this._output.raw = true;\n }\n this.print_newline(false, true);\n return;\n }\n\n // inline block\n if (!acorn.newline.test(current_token.text) && !current_token.newlines) {\n this._output.space_before_token = true;\n this.print_token(current_token);\n this._output.space_before_token = true;\n return;\n } else {\n this.print_block_commment(current_token, preserve_statement_flags);\n }\n};\n\nBeautifier.prototype.print_block_commment = function(current_token, preserve_statement_flags) {\n var lines = split_linebreaks(current_token.text);\n var j; // iterator for this case\n var javadoc = false;\n var starless = false;\n var lastIndent = current_token.whitespace_before;\n var lastIndentLength = lastIndent.length;\n\n // block comment starts with a new line\n this.print_newline(false, preserve_statement_flags);\n\n // first line always indented\n this.print_token_line_indentation(current_token);\n this._output.add_token(lines[0]);\n this.print_newline(false, preserve_statement_flags);\n\n\n if (lines.length > 1) {\n lines = lines.slice(1);\n javadoc = all_lines_start_with(lines, '*');\n starless = each_line_matches_indent(lines, lastIndent);\n\n if (javadoc) {\n this._flags.alignment = 1;\n }\n\n for (j = 0; j < lines.length; j++) {\n if (javadoc) {\n // javadoc: reformat and re-indent\n this.print_token_line_indentation(current_token);\n this._output.add_token(ltrim(lines[j]));\n } else if (starless && lines[j]) {\n // starless: re-indent non-empty content, avoiding trim\n this.print_token_line_indentation(current_token);\n this._output.add_token(lines[j].substring(lastIndentLength));\n } else {\n // normal comments output raw\n this._output.current_line.set_indent(-1);\n this._output.add_token(lines[j]);\n }\n\n // for comments on their own line or more than one line, make sure there's a new line after\n this.print_newline(false, preserve_statement_flags);\n }\n\n this._flags.alignment = 0;\n }\n};\n\n\nBeautifier.prototype.handle_comment = function(current_token, preserve_statement_flags) {\n if (current_token.newlines) {\n this.print_newline(false, preserve_statement_flags);\n } else {\n this._output.trim(true);\n }\n\n this._output.space_before_token = true;\n this.print_token(current_token);\n this.print_newline(false, preserve_statement_flags);\n};\n\nBeautifier.prototype.handle_dot = function(current_token) {\n if (this.start_of_statement(current_token)) {\n // The conditional starts the statement if appropriate.\n } else {\n this.handle_whitespace_and_comments(current_token, true);\n }\n\n if (this._flags.last_token.text.match('^[0-9]+$')) {\n this._output.space_before_token = true;\n }\n\n if (reserved_array(this._flags.last_token, special_words)) {\n this._output.space_before_token = false;\n } else {\n // allow preserved newlines before dots in general\n // force newlines on dots after close paren when break_chained - for bar().baz()\n this.allow_wrap_or_preserved_newline(current_token,\n this._flags.last_token.text === ')' && this._options.break_chained_methods);\n }\n\n // Only unindent chained method dot if this dot starts a new line.\n // Otherwise the automatic extra indentation removal will handle the over indent\n if (this._options.unindent_chained_methods && this._output.just_added_newline()) {\n this.deindent();\n }\n\n this.print_token(current_token);\n};\n\nBeautifier.prototype.handle_unknown = function(current_token, preserve_statement_flags) {\n this.print_token(current_token);\n\n if (current_token.text[current_token.text.length - 1] === '\\n') {\n this.print_newline(false, preserve_statement_flags);\n }\n};\n\nBeautifier.prototype.handle_eof = function(current_token) {\n // Unwind any open statements\n while (this._flags.mode === MODE.Statement) {\n this.restore_mode();\n }\n this.handle_whitespace_and_comments(current_token);\n};\n\nmodule.exports.Beautifier = Beautifier;\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module) {\n\n/*jshint node:true */\n/*\n The MIT License (MIT)\n\n Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors.\n\n Permission is hereby granted, free of charge, to any person\n obtaining a copy of this software and associated documentation files\n (the \"Software\"), to deal in the Software without restriction,\n including without limitation the rights to use, copy, modify, merge,\n publish, distribute, sublicense, and/or sell copies of the Software,\n and to permit persons to whom the Software is furnished to do so,\n subject to the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\n BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n*/\n\n\n\nfunction OutputLine(parent) {\n this.__parent = parent;\n this.__character_count = 0;\n // use indent_count as a marker for this.__lines that have preserved indentation\n this.__indent_count = -1;\n this.__alignment_count = 0;\n this.__wrap_point_index = 0;\n this.__wrap_point_character_count = 0;\n this.__wrap_point_indent_count = -1;\n this.__wrap_point_alignment_count = 0;\n\n this.__items = [];\n}\n\nOutputLine.prototype.clone_empty = function() {\n var line = new OutputLine(this.__parent);\n line.set_indent(this.__indent_count, this.__alignment_count);\n return line;\n};\n\nOutputLine.prototype.item = function(index) {\n if (index < 0) {\n return this.__items[this.__items.length + index];\n } else {\n return this.__items[index];\n }\n};\n\nOutputLine.prototype.has_match = function(pattern) {\n for (var lastCheckedOutput = this.__items.length - 1; lastCheckedOutput >= 0; lastCheckedOutput--) {\n if (this.__items[lastCheckedOutput].match(pattern)) {\n return true;\n }\n }\n return false;\n};\n\nOutputLine.prototype.set_indent = function(indent, alignment) {\n if (this.is_empty()) {\n this.__indent_count = indent || 0;\n this.__alignment_count = alignment || 0;\n this.__character_count = this.__parent.get_indent_size(this.__indent_count, this.__alignment_count);\n }\n};\n\nOutputLine.prototype._set_wrap_point = function() {\n if (this.__parent.wrap_line_length) {\n this.__wrap_point_index = this.__items.length;\n this.__wrap_point_character_count = this.__character_count;\n this.__wrap_point_indent_count = this.__parent.next_line.__indent_count;\n this.__wrap_point_alignment_count = this.__parent.next_line.__alignment_count;\n }\n};\n\nOutputLine.prototype._should_wrap = function() {\n return this.__wrap_point_index &&\n this.__character_count > this.__parent.wrap_line_length &&\n this.__wrap_point_character_count > this.__parent.next_line.__character_count;\n};\n\nOutputLine.prototype._allow_wrap = function() {\n if (this._should_wrap()) {\n this.__parent.add_new_line();\n var next = this.__parent.current_line;\n next.set_indent(this.__wrap_point_indent_count, this.__wrap_point_alignment_count);\n next.__items = this.__items.slice(this.__wrap_point_index);\n this.__items = this.__items.slice(0, this.__wrap_point_index);\n\n next.__character_count += this.__character_count - this.__wrap_point_character_count;\n this.__character_count = this.__wrap_point_character_count;\n\n if (next.__items[0] === \" \") {\n next.__items.splice(0, 1);\n next.__character_count -= 1;\n }\n return true;\n }\n return false;\n};\n\nOutputLine.prototype.is_empty = function() {\n return this.__items.length === 0;\n};\n\nOutputLine.prototype.last = function() {\n if (!this.is_empty()) {\n return this.__items[this.__items.length - 1];\n } else {\n return null;\n }\n};\n\nOutputLine.prototype.push = function(item) {\n this.__items.push(item);\n var last_newline_index = item.lastIndexOf('\\n');\n if (last_newline_index !== -1) {\n this.__character_count = item.length - last_newline_index;\n } else {\n this.__character_count += item.length;\n }\n};\n\nOutputLine.prototype.pop = function() {\n var item = null;\n if (!this.is_empty()) {\n item = this.__items.pop();\n this.__character_count -= item.length;\n }\n return item;\n};\n\n\nOutputLine.prototype._remove_indent = function() {\n if (this.__indent_count > 0) {\n this.__indent_count -= 1;\n this.__character_count -= this.__parent.indent_size;\n }\n};\n\nOutputLine.prototype._remove_wrap_indent = function() {\n if (this.__wrap_point_indent_count > 0) {\n this.__wrap_point_indent_count -= 1;\n }\n};\nOutputLine.prototype.trim = function() {\n while (this.last() === ' ') {\n this.__items.pop();\n this.__character_count -= 1;\n }\n};\n\nOutputLine.prototype.toString = function() {\n var result = '';\n if (this.is_empty()) {\n if (this.__parent.indent_empty_lines) {\n result = this.__parent.get_indent_string(this.__indent_count);\n }\n } else {\n result = this.__parent.get_indent_string(this.__indent_count, this.__alignment_count);\n result += this.__items.join('');\n }\n return result;\n};\n\nfunction IndentStringCache(options, baseIndentString) {\n this.__cache = [''];\n this.__indent_size = options.indent_size;\n this.__indent_string = options.indent_char;\n if (!options.indent_with_tabs) {\n this.__indent_string = new Array(options.indent_size + 1).join(options.indent_char);\n }\n\n // Set to null to continue support for auto detection of base indent\n baseIndentString = baseIndentString || '';\n if (options.indent_level > 0) {\n baseIndentString = new Array(options.indent_level + 1).join(this.__indent_string);\n }\n\n this.__base_string = baseIndentString;\n this.__base_string_length = baseIndentString.length;\n}\n\nIndentStringCache.prototype.get_indent_size = function(indent, column) {\n var result = this.__base_string_length;\n column = column || 0;\n if (indent < 0) {\n result = 0;\n }\n result += indent * this.__indent_size;\n result += column;\n return result;\n};\n\nIndentStringCache.prototype.get_indent_string = function(indent_level, column) {\n var result = this.__base_string;\n column = column || 0;\n if (indent_level < 0) {\n indent_level = 0;\n result = '';\n }\n column += indent_level * this.__indent_size;\n this.__ensure_cache(column);\n result += this.__cache[column];\n return result;\n};\n\nIndentStringCache.prototype.__ensure_cache = function(column) {\n while (column >= this.__cache.length) {\n this.__add_column();\n }\n};\n\nIndentStringCache.prototype.__add_column = function() {\n var column = this.__cache.length;\n var indent = 0;\n var result = '';\n if (this.__indent_size && column >= this.__indent_size) {\n indent = Math.floor(column / this.__indent_size);\n column -= indent * this.__indent_size;\n result = new Array(indent + 1).join(this.__indent_string);\n }\n if (column) {\n result += new Array(column + 1).join(' ');\n }\n\n this.__cache.push(result);\n};\n\nfunction Output(options, baseIndentString) {\n this.__indent_cache = new IndentStringCache(options, baseIndentString);\n this.raw = false;\n this._end_with_newline = options.end_with_newline;\n this.indent_size = options.indent_size;\n this.wrap_line_length = options.wrap_line_length;\n this.indent_empty_lines = options.indent_empty_lines;\n this.__lines = [];\n this.previous_line = null;\n this.current_line = null;\n this.next_line = new OutputLine(this);\n this.space_before_token = false;\n this.non_breaking_space = false;\n this.previous_token_wrapped = false;\n // initialize\n this.__add_outputline();\n}\n\nOutput.prototype.__add_outputline = function() {\n this.previous_line = this.current_line;\n this.current_line = this.next_line.clone_empty();\n this.__lines.push(this.current_line);\n};\n\nOutput.prototype.get_line_number = function() {\n return this.__lines.length;\n};\n\nOutput.prototype.get_indent_string = function(indent, column) {\n return this.__indent_cache.get_indent_string(indent, column);\n};\n\nOutput.prototype.get_indent_size = function(indent, column) {\n return this.__indent_cache.get_indent_size(indent, column);\n};\n\nOutput.prototype.is_empty = function() {\n return !this.previous_line && this.current_line.is_empty();\n};\n\nOutput.prototype.add_new_line = function(force_newline) {\n // never newline at the start of file\n // otherwise, newline only if we didn't just add one or we're forced\n if (this.is_empty() ||\n (!force_newline && this.just_added_newline())) {\n return false;\n }\n\n // if raw output is enabled, don't print additional newlines,\n // but still return True as though you had\n if (!this.raw) {\n this.__add_outputline();\n }\n return true;\n};\n\nOutput.prototype.get_code = function(eol) {\n this.trim(true);\n\n // handle some edge cases where the last tokens\n // has text that ends with newline(s)\n var last_item = this.current_line.pop();\n if (last_item) {\n if (last_item[last_item.length - 1] === '\\n') {\n last_item = last_item.replace(/\\n+$/g, '');\n }\n this.current_line.push(last_item);\n }\n\n if (this._end_with_newline) {\n this.__add_outputline();\n }\n\n var sweet_code = this.__lines.join('\\n');\n\n if (eol !== '\\n') {\n sweet_code = sweet_code.replace(/[\\n]/g, eol);\n }\n return sweet_code;\n};\n\nOutput.prototype.set_wrap_point = function() {\n this.current_line._set_wrap_point();\n};\n\nOutput.prototype.set_indent = function(indent, alignment) {\n indent = indent || 0;\n alignment = alignment || 0;\n\n // Next line stores alignment values\n this.next_line.set_indent(indent, alignment);\n\n // Never indent your first output indent at the start of the file\n if (this.__lines.length > 1) {\n this.current_line.set_indent(indent, alignment);\n return true;\n }\n\n this.current_line.set_indent();\n return false;\n};\n\nOutput.prototype.add_raw_token = function(token) {\n for (var x = 0; x < token.newlines; x++) {\n this.__add_outputline();\n }\n this.current_line.set_indent(-1);\n this.current_line.push(token.whitespace_before);\n this.current_line.push(token.text);\n this.space_before_token = false;\n this.non_breaking_space = false;\n this.previous_token_wrapped = false;\n};\n\nOutput.prototype.add_token = function(printable_token) {\n this.__add_space_before_token();\n this.current_line.push(printable_token);\n this.space_before_token = false;\n this.non_breaking_space = false;\n this.previous_token_wrapped = this.current_line._allow_wrap();\n};\n\nOutput.prototype.__add_space_before_token = function() {\n if (this.space_before_token && !this.just_added_newline()) {\n if (!this.non_breaking_space) {\n this.set_wrap_point();\n }\n this.current_line.push(' ');\n }\n};\n\nOutput.prototype.remove_indent = function(index) {\n var output_length = this.__lines.length;\n while (index < output_length) {\n this.__lines[index]._remove_indent();\n index++;\n }\n this.current_line._remove_wrap_indent();\n};\n\nOutput.prototype.trim = function(eat_newlines) {\n eat_newlines = (eat_newlines === undefined) ? false : eat_newlines;\n\n this.current_line.trim();\n\n while (eat_newlines && this.__lines.length > 1 &&\n this.current_line.is_empty()) {\n this.__lines.pop();\n this.current_line = this.__lines[this.__lines.length - 1];\n this.current_line.trim();\n }\n\n this.previous_line = this.__lines.length > 1 ?\n this.__lines[this.__lines.length - 2] : null;\n};\n\nOutput.prototype.just_added_newline = function() {\n return this.current_line.is_empty();\n};\n\nOutput.prototype.just_added_blankline = function() {\n return this.is_empty() ||\n (this.current_line.is_empty() && this.previous_line.is_empty());\n};\n\nOutput.prototype.ensure_empty_line_above = function(starts_with, ends_with) {\n var index = this.__lines.length - 2;\n while (index >= 0) {\n var potentialEmptyLine = this.__lines[index];\n if (potentialEmptyLine.is_empty()) {\n break;\n } else if (potentialEmptyLine.item(0).indexOf(starts_with) !== 0 &&\n potentialEmptyLine.item(-1) !== ends_with) {\n this.__lines.splice(index + 1, 0, new OutputLine(this));\n this.previous_line = this.__lines[this.__lines.length - 2];\n break;\n }\n index--;\n }\n};\n\nmodule.exports.Output = Output;\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module) {\n\n/*jshint node:true */\n/*\n\n The MIT License (MIT)\n\n Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors.\n\n Permission is hereby granted, free of charge, to any person\n obtaining a copy of this software and associated documentation files\n (the \"Software\"), to deal in the Software without restriction,\n including without limitation the rights to use, copy, modify, merge,\n publish, distribute, sublicense, and/or sell copies of the Software,\n and to permit persons to whom the Software is furnished to do so,\n subject to the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\n BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n*/\n\n\n\nfunction Token(type, text, newlines, whitespace_before) {\n this.type = type;\n this.text = text;\n\n // comments_before are\n // comments that have a new line before them\n // and may or may not have a newline after\n // this is a set of comments before\n this.comments_before = null; /* inline comment*/\n\n\n // this.comments_after = new TokenStream(); // no new line before and newline after\n this.newlines = newlines || 0;\n this.whitespace_before = whitespace_before || '';\n this.parent = null;\n this.next = null;\n this.previous = null;\n this.opened = null;\n this.closed = null;\n this.directives = null;\n}\n\n\nmodule.exports.Token = Token;\n\n\n/***/ }),\n/* 4 */\n/***/ (function(__unused_webpack_module, exports) {\n\n/* jshint node: true, curly: false */\n// Parts of this section of code is taken from acorn.\n//\n// Acorn was written by Marijn Haverbeke and released under an MIT\n// license. The Unicode regexps (for identifiers and whitespace) were\n// taken from [Esprima](http://esprima.org) by Ariya Hidayat.\n//\n// Git repositories for Acorn are available at\n//\n// http://marijnhaverbeke.nl/git/acorn\n// https://github.com/marijnh/acorn.git\n\n// ## Character categories\n\n\n\n\n// acorn used char codes to squeeze the last bit of performance out\n// Beautifier is okay without that, so we're using regex\n// permit # (23), $ (36), and @ (64). @ is used in ES7 decorators.\n// 65 through 91 are uppercase letters.\n// permit _ (95).\n// 97 through 123 are lowercase letters.\nvar baseASCIIidentifierStartChars = \"\\\\x23\\\\x24\\\\x40\\\\x41-\\\\x5a\\\\x5f\\\\x61-\\\\x7a\";\n\n// inside an identifier @ is not allowed but 0-9 are.\nvar baseASCIIidentifierChars = \"\\\\x24\\\\x30-\\\\x39\\\\x41-\\\\x5a\\\\x5f\\\\x61-\\\\x7a\";\n\n// Big ugly regular expressions that match characters in the\n// whitespace, identifier, and identifier-start categories. These\n// are only applied when a character is found to actually have a\n// code point above 128.\nvar nonASCIIidentifierStartChars = \"\\\\xaa\\\\xb5\\\\xba\\\\xc0-\\\\xd6\\\\xd8-\\\\xf6\\\\xf8-\\\\u02c1\\\\u02c6-\\\\u02d1\\\\u02e0-\\\\u02e4\\\\u02ec\\\\u02ee\\\\u0370-\\\\u0374\\\\u0376\\\\u0377\\\\u037a-\\\\u037d\\\\u0386\\\\u0388-\\\\u038a\\\\u038c\\\\u038e-\\\\u03a1\\\\u03a3-\\\\u03f5\\\\u03f7-\\\\u0481\\\\u048a-\\\\u0527\\\\u0531-\\\\u0556\\\\u0559\\\\u0561-\\\\u0587\\\\u05d0-\\\\u05ea\\\\u05f0-\\\\u05f2\\\\u0620-\\\\u064a\\\\u066e\\\\u066f\\\\u0671-\\\\u06d3\\\\u06d5\\\\u06e5\\\\u06e6\\\\u06ee\\\\u06ef\\\\u06fa-\\\\u06fc\\\\u06ff\\\\u0710\\\\u0712-\\\\u072f\\\\u074d-\\\\u07a5\\\\u07b1\\\\u07ca-\\\\u07ea\\\\u07f4\\\\u07f5\\\\u07fa\\\\u0800-\\\\u0815\\\\u081a\\\\u0824\\\\u0828\\\\u0840-\\\\u0858\\\\u08a0\\\\u08a2-\\\\u08ac\\\\u0904-\\\\u0939\\\\u093d\\\\u0950\\\\u0958-\\\\u0961\\\\u0971-\\\\u0977\\\\u0979-\\\\u097f\\\\u0985-\\\\u098c\\\\u098f\\\\u0990\\\\u0993-\\\\u09a8\\\\u09aa-\\\\u09b0\\\\u09b2\\\\u09b6-\\\\u09b9\\\\u09bd\\\\u09ce\\\\u09dc\\\\u09dd\\\\u09df-\\\\u09e1\\\\u09f0\\\\u09f1\\\\u0a05-\\\\u0a0a\\\\u0a0f\\\\u0a10\\\\u0a13-\\\\u0a28\\\\u0a2a-\\\\u0a30\\\\u0a32\\\\u0a33\\\\u0a35\\\\u0a36\\\\u0a38\\\\u0a39\\\\u0a59-\\\\u0a5c\\\\u0a5e\\\\u0a72-\\\\u0a74\\\\u0a85-\\\\u0a8d\\\\u0a8f-\\\\u0a91\\\\u0a93-\\\\u0aa8\\\\u0aaa-\\\\u0ab0\\\\u0ab2\\\\u0ab3\\\\u0ab5-\\\\u0ab9\\\\u0abd\\\\u0ad0\\\\u0ae0\\\\u0ae1\\\\u0b05-\\\\u0b0c\\\\u0b0f\\\\u0b10\\\\u0b13-\\\\u0b28\\\\u0b2a-\\\\u0b30\\\\u0b32\\\\u0b33\\\\u0b35-\\\\u0b39\\\\u0b3d\\\\u0b5c\\\\u0b5d\\\\u0b5f-\\\\u0b61\\\\u0b71\\\\u0b83\\\\u0b85-\\\\u0b8a\\\\u0b8e-\\\\u0b90\\\\u0b92-\\\\u0b95\\\\u0b99\\\\u0b9a\\\\u0b9c\\\\u0b9e\\\\u0b9f\\\\u0ba3\\\\u0ba4\\\\u0ba8-\\\\u0baa\\\\u0bae-\\\\u0bb9\\\\u0bd0\\\\u0c05-\\\\u0c0c\\\\u0c0e-\\\\u0c10\\\\u0c12-\\\\u0c28\\\\u0c2a-\\\\u0c33\\\\u0c35-\\\\u0c39\\\\u0c3d\\\\u0c58\\\\u0c59\\\\u0c60\\\\u0c61\\\\u0c85-\\\\u0c8c\\\\u0c8e-\\\\u0c90\\\\u0c92-\\\\u0ca8\\\\u0caa-\\\\u0cb3\\\\u0cb5-\\\\u0cb9\\\\u0cbd\\\\u0cde\\\\u0ce0\\\\u0ce1\\\\u0cf1\\\\u0cf2\\\\u0d05-\\\\u0d0c\\\\u0d0e-\\\\u0d10\\\\u0d12-\\\\u0d3a\\\\u0d3d\\\\u0d4e\\\\u0d60\\\\u0d61\\\\u0d7a-\\\\u0d7f\\\\u0d85-\\\\u0d96\\\\u0d9a-\\\\u0db1\\\\u0db3-\\\\u0dbb\\\\u0dbd\\\\u0dc0-\\\\u0dc6\\\\u0e01-\\\\u0e30\\\\u0e32\\\\u0e33\\\\u0e40-\\\\u0e46\\\\u0e81\\\\u0e82\\\\u0e84\\\\u0e87\\\\u0e88\\\\u0e8a\\\\u0e8d\\\\u0e94-\\\\u0e97\\\\u0e99-\\\\u0e9f\\\\u0ea1-\\\\u0ea3\\\\u0ea5\\\\u0ea7\\\\u0eaa\\\\u0eab\\\\u0ead-\\\\u0eb0\\\\u0eb2\\\\u0eb3\\\\u0ebd\\\\u0ec0-\\\\u0ec4\\\\u0ec6\\\\u0edc-\\\\u0edf\\\\u0f00\\\\u0f40-\\\\u0f47\\\\u0f49-\\\\u0f6c\\\\u0f88-\\\\u0f8c\\\\u1000-\\\\u102a\\\\u103f\\\\u1050-\\\\u1055\\\\u105a-\\\\u105d\\\\u1061\\\\u1065\\\\u1066\\\\u106e-\\\\u1070\\\\u1075-\\\\u1081\\\\u108e\\\\u10a0-\\\\u10c5\\\\u10c7\\\\u10cd\\\\u10d0-\\\\u10fa\\\\u10fc-\\\\u1248\\\\u124a-\\\\u124d\\\\u1250-\\\\u1256\\\\u1258\\\\u125a-\\\\u125d\\\\u1260-\\\\u1288\\\\u128a-\\\\u128d\\\\u1290-\\\\u12b0\\\\u12b2-\\\\u12b5\\\\u12b8-\\\\u12be\\\\u12c0\\\\u12c2-\\\\u12c5\\\\u12c8-\\\\u12d6\\\\u12d8-\\\\u1310\\\\u1312-\\\\u1315\\\\u1318-\\\\u135a\\\\u1380-\\\\u138f\\\\u13a0-\\\\u13f4\\\\u1401-\\\\u166c\\\\u166f-\\\\u167f\\\\u1681-\\\\u169a\\\\u16a0-\\\\u16ea\\\\u16ee-\\\\u16f0\\\\u1700-\\\\u170c\\\\u170e-\\\\u1711\\\\u1720-\\\\u1731\\\\u1740-\\\\u1751\\\\u1760-\\\\u176c\\\\u176e-\\\\u1770\\\\u1780-\\\\u17b3\\\\u17d7\\\\u17dc\\\\u1820-\\\\u1877\\\\u1880-\\\\u18a8\\\\u18aa\\\\u18b0-\\\\u18f5\\\\u1900-\\\\u191c\\\\u1950-\\\\u196d\\\\u1970-\\\\u1974\\\\u1980-\\\\u19ab\\\\u19c1-\\\\u19c7\\\\u1a00-\\\\u1a16\\\\u1a20-\\\\u1a54\\\\u1aa7\\\\u1b05-\\\\u1b33\\\\u1b45-\\\\u1b4b\\\\u1b83-\\\\u1ba0\\\\u1bae\\\\u1baf\\\\u1bba-\\\\u1be5\\\\u1c00-\\\\u1c23\\\\u1c4d-\\\\u1c4f\\\\u1c5a-\\\\u1c7d\\\\u1ce9-\\\\u1cec\\\\u1cee-\\\\u1cf1\\\\u1cf5\\\\u1cf6\\\\u1d00-\\\\u1dbf\\\\u1e00-\\\\u1f15\\\\u1f18-\\\\u1f1d\\\\u1f20-\\\\u1f45\\\\u1f48-\\\\u1f4d\\\\u1f50-\\\\u1f57\\\\u1f59\\\\u1f5b\\\\u1f5d\\\\u1f5f-\\\\u1f7d\\\\u1f80-\\\\u1fb4\\\\u1fb6-\\\\u1fbc\\\\u1fbe\\\\u1fc2-\\\\u1fc4\\\\u1fc6-\\\\u1fcc\\\\u1fd0-\\\\u1fd3\\\\u1fd6-\\\\u1fdb\\\\u1fe0-\\\\u1fec\\\\u1ff2-\\\\u1ff4\\\\u1ff6-\\\\u1ffc\\\\u2071\\\\u207f\\\\u2090-\\\\u209c\\\\u2102\\\\u2107\\\\u210a-\\\\u2113\\\\u2115\\\\u2119-\\\\u211d\\\\u2124\\\\u2126\\\\u2128\\\\u212a-\\\\u212d\\\\u212f-\\\\u2139\\\\u213c-\\\\u213f\\\\u2145-\\\\u2149\\\\u214e\\\\u2160-\\\\u2188\\\\u2c00-\\\\u2c2e\\\\u2c30-\\\\u2c5e\\\\u2c60-\\\\u2ce4\\\\u2ceb-\\\\u2cee\\\\u2cf2\\\\u2cf3\\\\u2d00-\\\\u2d25\\\\u2d27\\\\u2d2d\\\\u2d30-\\\\u2d67\\\\u2d6f\\\\u2d80-\\\\u2d96\\\\u2da0-\\\\u2da6\\\\u2da8-\\\\u2dae\\\\u2db0-\\\\u2db6\\\\u2db8-\\\\u2dbe\\\\u2dc0-\\\\u2dc6\\\\u2dc8-\\\\u2dce\\\\u2dd0-\\\\u2dd6\\\\u2dd8-\\\\u2dde\\\\u2e2f\\\\u3005-\\\\u3007\\\\u3021-\\\\u3029\\\\u3031-\\\\u3035\\\\u3038-\\\\u303c\\\\u3041-\\\\u3096\\\\u309d-\\\\u309f\\\\u30a1-\\\\u30fa\\\\u30fc-\\\\u30ff\\\\u3105-\\\\u312d\\\\u3131-\\\\u318e\\\\u31a0-\\\\u31ba\\\\u31f0-\\\\u31ff\\\\u3400-\\\\u4db5\\\\u4e00-\\\\u9fcc\\\\ua000-\\\\ua48c\\\\ua4d0-\\\\ua4fd\\\\ua500-\\\\ua60c\\\\ua610-\\\\ua61f\\\\ua62a\\\\ua62b\\\\ua640-\\\\ua66e\\\\ua67f-\\\\ua697\\\\ua6a0-\\\\ua6ef\\\\ua717-\\\\ua71f\\\\ua722-\\\\ua788\\\\ua78b-\\\\ua78e\\\\ua790-\\\\ua793\\\\ua7a0-\\\\ua7aa\\\\ua7f8-\\\\ua801\\\\ua803-\\\\ua805\\\\ua807-\\\\ua80a\\\\ua80c-\\\\ua822\\\\ua840-\\\\ua873\\\\ua882-\\\\ua8b3\\\\ua8f2-\\\\ua8f7\\\\ua8fb\\\\ua90a-\\\\ua925\\\\ua930-\\\\ua946\\\\ua960-\\\\ua97c\\\\ua984-\\\\ua9b2\\\\ua9cf\\\\uaa00-\\\\uaa28\\\\uaa40-\\\\uaa42\\\\uaa44-\\\\uaa4b\\\\uaa60-\\\\uaa76\\\\uaa7a\\\\uaa80-\\\\uaaaf\\\\uaab1\\\\uaab5\\\\uaab6\\\\uaab9-\\\\uaabd\\\\uaac0\\\\uaac2\\\\uaadb-\\\\uaadd\\\\uaae0-\\\\uaaea\\\\uaaf2-\\\\uaaf4\\\\uab01-\\\\uab06\\\\uab09-\\\\uab0e\\\\uab11-\\\\uab16\\\\uab20-\\\\uab26\\\\uab28-\\\\uab2e\\\\uabc0-\\\\uabe2\\\\uac00-\\\\ud7a3\\\\ud7b0-\\\\ud7c6\\\\ud7cb-\\\\ud7fb\\\\uf900-\\\\ufa6d\\\\ufa70-\\\\ufad9\\\\ufb00-\\\\ufb06\\\\ufb13-\\\\ufb17\\\\ufb1d\\\\ufb1f-\\\\ufb28\\\\ufb2a-\\\\ufb36\\\\ufb38-\\\\ufb3c\\\\ufb3e\\\\ufb40\\\\ufb41\\\\ufb43\\\\ufb44\\\\ufb46-\\\\ufbb1\\\\ufbd3-\\\\ufd3d\\\\ufd50-\\\\ufd8f\\\\ufd92-\\\\ufdc7\\\\ufdf0-\\\\ufdfb\\\\ufe70-\\\\ufe74\\\\ufe76-\\\\ufefc\\\\uff21-\\\\uff3a\\\\uff41-\\\\uff5a\\\\uff66-\\\\uffbe\\\\uffc2-\\\\uffc7\\\\uffca-\\\\uffcf\\\\uffd2-\\\\uffd7\\\\uffda-\\\\uffdc\";\nvar nonASCIIidentifierChars = \"\\\\u0300-\\\\u036f\\\\u0483-\\\\u0487\\\\u0591-\\\\u05bd\\\\u05bf\\\\u05c1\\\\u05c2\\\\u05c4\\\\u05c5\\\\u05c7\\\\u0610-\\\\u061a\\\\u0620-\\\\u0649\\\\u0672-\\\\u06d3\\\\u06e7-\\\\u06e8\\\\u06fb-\\\\u06fc\\\\u0730-\\\\u074a\\\\u0800-\\\\u0814\\\\u081b-\\\\u0823\\\\u0825-\\\\u0827\\\\u0829-\\\\u082d\\\\u0840-\\\\u0857\\\\u08e4-\\\\u08fe\\\\u0900-\\\\u0903\\\\u093a-\\\\u093c\\\\u093e-\\\\u094f\\\\u0951-\\\\u0957\\\\u0962-\\\\u0963\\\\u0966-\\\\u096f\\\\u0981-\\\\u0983\\\\u09bc\\\\u09be-\\\\u09c4\\\\u09c7\\\\u09c8\\\\u09d7\\\\u09df-\\\\u09e0\\\\u0a01-\\\\u0a03\\\\u0a3c\\\\u0a3e-\\\\u0a42\\\\u0a47\\\\u0a48\\\\u0a4b-\\\\u0a4d\\\\u0a51\\\\u0a66-\\\\u0a71\\\\u0a75\\\\u0a81-\\\\u0a83\\\\u0abc\\\\u0abe-\\\\u0ac5\\\\u0ac7-\\\\u0ac9\\\\u0acb-\\\\u0acd\\\\u0ae2-\\\\u0ae3\\\\u0ae6-\\\\u0aef\\\\u0b01-\\\\u0b03\\\\u0b3c\\\\u0b3e-\\\\u0b44\\\\u0b47\\\\u0b48\\\\u0b4b-\\\\u0b4d\\\\u0b56\\\\u0b57\\\\u0b5f-\\\\u0b60\\\\u0b66-\\\\u0b6f\\\\u0b82\\\\u0bbe-\\\\u0bc2\\\\u0bc6-\\\\u0bc8\\\\u0bca-\\\\u0bcd\\\\u0bd7\\\\u0be6-\\\\u0bef\\\\u0c01-\\\\u0c03\\\\u0c46-\\\\u0c48\\\\u0c4a-\\\\u0c4d\\\\u0c55\\\\u0c56\\\\u0c62-\\\\u0c63\\\\u0c66-\\\\u0c6f\\\\u0c82\\\\u0c83\\\\u0cbc\\\\u0cbe-\\\\u0cc4\\\\u0cc6-\\\\u0cc8\\\\u0cca-\\\\u0ccd\\\\u0cd5\\\\u0cd6\\\\u0ce2-\\\\u0ce3\\\\u0ce6-\\\\u0cef\\\\u0d02\\\\u0d03\\\\u0d46-\\\\u0d48\\\\u0d57\\\\u0d62-\\\\u0d63\\\\u0d66-\\\\u0d6f\\\\u0d82\\\\u0d83\\\\u0dca\\\\u0dcf-\\\\u0dd4\\\\u0dd6\\\\u0dd8-\\\\u0ddf\\\\u0df2\\\\u0df3\\\\u0e34-\\\\u0e3a\\\\u0e40-\\\\u0e45\\\\u0e50-\\\\u0e59\\\\u0eb4-\\\\u0eb9\\\\u0ec8-\\\\u0ecd\\\\u0ed0-\\\\u0ed9\\\\u0f18\\\\u0f19\\\\u0f20-\\\\u0f29\\\\u0f35\\\\u0f37\\\\u0f39\\\\u0f41-\\\\u0f47\\\\u0f71-\\\\u0f84\\\\u0f86-\\\\u0f87\\\\u0f8d-\\\\u0f97\\\\u0f99-\\\\u0fbc\\\\u0fc6\\\\u1000-\\\\u1029\\\\u1040-\\\\u1049\\\\u1067-\\\\u106d\\\\u1071-\\\\u1074\\\\u1082-\\\\u108d\\\\u108f-\\\\u109d\\\\u135d-\\\\u135f\\\\u170e-\\\\u1710\\\\u1720-\\\\u1730\\\\u1740-\\\\u1750\\\\u1772\\\\u1773\\\\u1780-\\\\u17b2\\\\u17dd\\\\u17e0-\\\\u17e9\\\\u180b-\\\\u180d\\\\u1810-\\\\u1819\\\\u1920-\\\\u192b\\\\u1930-\\\\u193b\\\\u1951-\\\\u196d\\\\u19b0-\\\\u19c0\\\\u19c8-\\\\u19c9\\\\u19d0-\\\\u19d9\\\\u1a00-\\\\u1a15\\\\u1a20-\\\\u1a53\\\\u1a60-\\\\u1a7c\\\\u1a7f-\\\\u1a89\\\\u1a90-\\\\u1a99\\\\u1b46-\\\\u1b4b\\\\u1b50-\\\\u1b59\\\\u1b6b-\\\\u1b73\\\\u1bb0-\\\\u1bb9\\\\u1be6-\\\\u1bf3\\\\u1c00-\\\\u1c22\\\\u1c40-\\\\u1c49\\\\u1c5b-\\\\u1c7d\\\\u1cd0-\\\\u1cd2\\\\u1d00-\\\\u1dbe\\\\u1e01-\\\\u1f15\\\\u200c\\\\u200d\\\\u203f\\\\u2040\\\\u2054\\\\u20d0-\\\\u20dc\\\\u20e1\\\\u20e5-\\\\u20f0\\\\u2d81-\\\\u2d96\\\\u2de0-\\\\u2dff\\\\u3021-\\\\u3028\\\\u3099\\\\u309a\\\\ua640-\\\\ua66d\\\\ua674-\\\\ua67d\\\\ua69f\\\\ua6f0-\\\\ua6f1\\\\ua7f8-\\\\ua800\\\\ua806\\\\ua80b\\\\ua823-\\\\ua827\\\\ua880-\\\\ua881\\\\ua8b4-\\\\ua8c4\\\\ua8d0-\\\\ua8d9\\\\ua8f3-\\\\ua8f7\\\\ua900-\\\\ua909\\\\ua926-\\\\ua92d\\\\ua930-\\\\ua945\\\\ua980-\\\\ua983\\\\ua9b3-\\\\ua9c0\\\\uaa00-\\\\uaa27\\\\uaa40-\\\\uaa41\\\\uaa4c-\\\\uaa4d\\\\uaa50-\\\\uaa59\\\\uaa7b\\\\uaae0-\\\\uaae9\\\\uaaf2-\\\\uaaf3\\\\uabc0-\\\\uabe1\\\\uabec\\\\uabed\\\\uabf0-\\\\uabf9\\\\ufb20-\\\\ufb28\\\\ufe00-\\\\ufe0f\\\\ufe20-\\\\ufe26\\\\ufe33\\\\ufe34\\\\ufe4d-\\\\ufe4f\\\\uff10-\\\\uff19\\\\uff3f\";\n//var nonASCIIidentifierStart = new RegExp(\"[\" + nonASCIIidentifierStartChars + \"]\");\n//var nonASCIIidentifier = new RegExp(\"[\" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + \"]\");\n\nvar unicodeEscapeOrCodePoint = \"\\\\\\\\u[0-9a-fA-F]{4}|\\\\\\\\u\\\\{[0-9a-fA-F]+\\\\}\";\nvar identifierStart = \"(?:\" + unicodeEscapeOrCodePoint + \"|[\" + baseASCIIidentifierStartChars + nonASCIIidentifierStartChars + \"])\";\nvar identifierChars = \"(?:\" + unicodeEscapeOrCodePoint + \"|[\" + baseASCIIidentifierChars + nonASCIIidentifierStartChars + nonASCIIidentifierChars + \"])*\";\n\nexports.identifier = new RegExp(identifierStart + identifierChars, 'g');\nexports.identifierStart = new RegExp(identifierStart);\nexports.identifierMatch = new RegExp(\"(?:\" + unicodeEscapeOrCodePoint + \"|[\" + baseASCIIidentifierChars + nonASCIIidentifierStartChars + nonASCIIidentifierChars + \"])+\");\n\nvar nonASCIIwhitespace = /[\\u1680\\u180e\\u2000-\\u200a\\u202f\\u205f\\u3000\\ufeff]/; // jshint ignore:line\n\n// Whether a single character denotes a newline.\n\nexports.newline = /[\\n\\r\\u2028\\u2029]/;\n\n// Matches a whole line break (where CRLF is considered a single\n// line break). Used to count lines.\n\n// in javascript, these two differ\n// in python they are the same, different methods are called on them\nexports.lineBreak = new RegExp('\\r\\n|' + exports.newline.source);\nexports.allLineBreaks = new RegExp(exports.lineBreak.source, 'g');\n\n\n/***/ }),\n/* 5 */\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n/*jshint node:true */\n/*\n\n The MIT License (MIT)\n\n Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors.\n\n Permission is hereby granted, free of charge, to any person\n obtaining a copy of this software and associated documentation files\n (the \"Software\"), to deal in the Software without restriction,\n including without limitation the rights to use, copy, modify, merge,\n publish, distribute, sublicense, and/or sell copies of the Software,\n and to permit persons to whom the Software is furnished to do so,\n subject to the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\n BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n*/\n\n\n\nvar BaseOptions = (__webpack_require__(6).Options);\n\nvar validPositionValues = ['before-newline', 'after-newline', 'preserve-newline'];\n\nfunction Options(options) {\n BaseOptions.call(this, options, 'js');\n\n // compatibility, re\n var raw_brace_style = this.raw_options.brace_style || null;\n if (raw_brace_style === \"expand-strict\") { //graceful handling of deprecated option\n this.raw_options.brace_style = \"expand\";\n } else if (raw_brace_style === \"collapse-preserve-inline\") { //graceful handling of deprecated option\n this.raw_options.brace_style = \"collapse,preserve-inline\";\n } else if (this.raw_options.braces_on_own_line !== undefined) { //graceful handling of deprecated option\n this.raw_options.brace_style = this.raw_options.braces_on_own_line ? \"expand\" : \"collapse\";\n // } else if (!raw_brace_style) { //Nothing exists to set it\n // raw_brace_style = \"collapse\";\n }\n\n //preserve-inline in delimited string will trigger brace_preserve_inline, everything\n //else is considered a brace_style and the last one only will have an effect\n\n var brace_style_split = this._get_selection_list('brace_style', ['collapse', 'expand', 'end-expand', 'none', 'preserve-inline']);\n\n this.brace_preserve_inline = false; //Defaults in case one or other was not specified in meta-option\n this.brace_style = \"collapse\";\n\n for (var bs = 0; bs < brace_style_split.length; bs++) {\n if (brace_style_split[bs] === \"preserve-inline\") {\n this.brace_preserve_inline = true;\n } else {\n this.brace_style = brace_style_split[bs];\n }\n }\n\n this.unindent_chained_methods = this._get_boolean('unindent_chained_methods');\n this.break_chained_methods = this._get_boolean('break_chained_methods');\n this.space_in_paren = this._get_boolean('space_in_paren');\n this.space_in_empty_paren = this._get_boolean('space_in_empty_paren');\n this.jslint_happy = this._get_boolean('jslint_happy');\n this.space_after_anon_function = this._get_boolean('space_after_anon_function');\n this.space_after_named_function = this._get_boolean('space_after_named_function');\n this.keep_array_indentation = this._get_boolean('keep_array_indentation');\n this.space_before_conditional = this._get_boolean('space_before_conditional', true);\n this.unescape_strings = this._get_boolean('unescape_strings');\n this.e4x = this._get_boolean('e4x');\n this.comma_first = this._get_boolean('comma_first');\n this.operator_position = this._get_selection('operator_position', validPositionValues);\n\n // For testing of beautify preserve:start directive\n this.test_output_raw = this._get_boolean('test_output_raw');\n\n // force this._options.space_after_anon_function to true if this._options.jslint_happy\n if (this.jslint_happy) {\n this.space_after_anon_function = true;\n }\n\n}\nOptions.prototype = new BaseOptions();\n\n\n\nmodule.exports.Options = Options;\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module) {\n\n/*jshint node:true */\n/*\n\n The MIT License (MIT)\n\n Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors.\n\n Permission is hereby granted, free of charge, to any person\n obtaining a copy of this software and associated documentation files\n (the \"Software\"), to deal in the Software without restriction,\n including without limitation the rights to use, copy, modify, merge,\n publish, distribute, sublicense, and/or sell copies of the Software,\n and to permit persons to whom the Software is furnished to do so,\n subject to the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\n BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n*/\n\n\n\nfunction Options(options, merge_child_field) {\n this.raw_options = _mergeOpts(options, merge_child_field);\n\n // Support passing the source text back with no change\n this.disabled = this._get_boolean('disabled');\n\n this.eol = this._get_characters('eol', 'auto');\n this.end_with_newline = this._get_boolean('end_with_newline');\n this.indent_size = this._get_number('indent_size', 4);\n this.indent_char = this._get_characters('indent_char', ' ');\n this.indent_level = this._get_number('indent_level');\n\n this.preserve_newlines = this._get_boolean('preserve_newlines', true);\n this.max_preserve_newlines = this._get_number('max_preserve_newlines', 32786);\n if (!this.preserve_newlines) {\n this.max_preserve_newlines = 0;\n }\n\n this.indent_with_tabs = this._get_boolean('indent_with_tabs', this.indent_char === '\\t');\n if (this.indent_with_tabs) {\n this.indent_char = '\\t';\n\n // indent_size behavior changed after 1.8.6\n // It used to be that indent_size would be\n // set to 1 for indent_with_tabs. That is no longer needed and\n // actually doesn't make sense - why not use spaces? Further,\n // that might produce unexpected behavior - tabs being used\n // for single-column alignment. So, when indent_with_tabs is true\n // and indent_size is 1, reset indent_size to 4.\n if (this.indent_size === 1) {\n this.indent_size = 4;\n }\n }\n\n // Backwards compat with 1.3.x\n this.wrap_line_length = this._get_number('wrap_line_length', this._get_number('max_char'));\n\n this.indent_empty_lines = this._get_boolean('indent_empty_lines');\n\n // valid templating languages ['django', 'erb', 'handlebars', 'php', 'smarty', 'angular']\n // For now, 'auto' = all off for javascript, all except angular on for html (and inline javascript/css).\n // other values ignored\n this.templating = this._get_selection_list('templating', ['auto', 'none', 'angular', 'django', 'erb', 'handlebars', 'php', 'smarty'], ['auto']);\n}\n\nOptions.prototype._get_array = function(name, default_value) {\n var option_value = this.raw_options[name];\n var result = default_value || [];\n if (typeof option_value === 'object') {\n if (option_value !== null && typeof option_value.concat === 'function') {\n result = option_value.concat();\n }\n } else if (typeof option_value === 'string') {\n result = option_value.split(/[^a-zA-Z0-9_\\/\\-]+/);\n }\n return result;\n};\n\nOptions.prototype._get_boolean = function(name, default_value) {\n var option_value = this.raw_options[name];\n var result = option_value === undefined ? !!default_value : !!option_value;\n return result;\n};\n\nOptions.prototype._get_characters = function(name, default_value) {\n var option_value = this.raw_options[name];\n var result = default_value || '';\n if (typeof option_value === 'string') {\n result = option_value.replace(/\\\\r/, '\\r').replace(/\\\\n/, '\\n').replace(/\\\\t/, '\\t');\n }\n return result;\n};\n\nOptions.prototype._get_number = function(name, default_value) {\n var option_value = this.raw_options[name];\n default_value = parseInt(default_value, 10);\n if (isNaN(default_value)) {\n default_value = 0;\n }\n var result = parseInt(option_value, 10);\n if (isNaN(result)) {\n result = default_value;\n }\n return result;\n};\n\nOptions.prototype._get_selection = function(name, selection_list, default_value) {\n var result = this._get_selection_list(name, selection_list, default_value);\n if (result.length !== 1) {\n throw new Error(\n \"Invalid Option Value: The option '\" + name + \"' can only be one of the following values:\\n\" +\n selection_list + \"\\nYou passed in: '\" + this.raw_options[name] + \"'\");\n }\n\n return result[0];\n};\n\n\nOptions.prototype._get_selection_list = function(name, selection_list, default_value) {\n if (!selection_list || selection_list.length === 0) {\n throw new Error(\"Selection list cannot be empty.\");\n }\n\n default_value = default_value || [selection_list[0]];\n if (!this._is_valid_selection(default_value, selection_list)) {\n throw new Error(\"Invalid Default Value!\");\n }\n\n var result = this._get_array(name, default_value);\n if (!this._is_valid_selection(result, selection_list)) {\n throw new Error(\n \"Invalid Option Value: The option '\" + name + \"' can contain only the following values:\\n\" +\n selection_list + \"\\nYou passed in: '\" + this.raw_options[name] + \"'\");\n }\n\n return result;\n};\n\nOptions.prototype._is_valid_selection = function(result, selection_list) {\n return result.length && selection_list.length &&\n !result.some(function(item) { return selection_list.indexOf(item) === -1; });\n};\n\n\n// merges child options up with the parent options object\n// Example: obj = {a: 1, b: {a: 2}}\n// mergeOpts(obj, 'b')\n//\n// Returns: {a: 2}\nfunction _mergeOpts(allOptions, childFieldName) {\n var finalOpts = {};\n allOptions = _normalizeOpts(allOptions);\n var name;\n\n for (name in allOptions) {\n if (name !== childFieldName) {\n finalOpts[name] = allOptions[name];\n }\n }\n\n //merge in the per type settings for the childFieldName\n if (childFieldName && allOptions[childFieldName]) {\n for (name in allOptions[childFieldName]) {\n finalOpts[name] = allOptions[childFieldName][name];\n }\n }\n return finalOpts;\n}\n\nfunction _normalizeOpts(options) {\n var convertedOpts = {};\n var key;\n\n for (key in options) {\n var newKey = key.replace(/-/g, \"_\");\n convertedOpts[newKey] = options[key];\n }\n return convertedOpts;\n}\n\nmodule.exports.Options = Options;\nmodule.exports.normalizeOpts = _normalizeOpts;\nmodule.exports.mergeOpts = _mergeOpts;\n\n\n/***/ }),\n/* 7 */\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n/*jshint node:true */\n/*\n\n The MIT License (MIT)\n\n Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors.\n\n Permission is hereby granted, free of charge, to any person\n obtaining a copy of this software and associated documentation files\n (the \"Software\"), to deal in the Software without restriction,\n including without limitation the rights to use, copy, modify, merge,\n publish, distribute, sublicense, and/or sell copies of the Software,\n and to permit persons to whom the Software is furnished to do so,\n subject to the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\n BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n*/\n\n\n\nvar InputScanner = (__webpack_require__(8).InputScanner);\nvar BaseTokenizer = (__webpack_require__(9).Tokenizer);\nvar BASETOKEN = (__webpack_require__(9).TOKEN);\nvar Directives = (__webpack_require__(13).Directives);\nvar acorn = __webpack_require__(4);\nvar Pattern = (__webpack_require__(12).Pattern);\nvar TemplatablePattern = (__webpack_require__(14).TemplatablePattern);\n\n\nfunction in_array(what, arr) {\n return arr.indexOf(what) !== -1;\n}\n\n\nvar TOKEN = {\n START_EXPR: 'TK_START_EXPR',\n END_EXPR: 'TK_END_EXPR',\n START_BLOCK: 'TK_START_BLOCK',\n END_BLOCK: 'TK_END_BLOCK',\n WORD: 'TK_WORD',\n RESERVED: 'TK_RESERVED',\n SEMICOLON: 'TK_SEMICOLON',\n STRING: 'TK_STRING',\n EQUALS: 'TK_EQUALS',\n OPERATOR: 'TK_OPERATOR',\n COMMA: 'TK_COMMA',\n BLOCK_COMMENT: 'TK_BLOCK_COMMENT',\n COMMENT: 'TK_COMMENT',\n DOT: 'TK_DOT',\n UNKNOWN: 'TK_UNKNOWN',\n START: BASETOKEN.START,\n RAW: BASETOKEN.RAW,\n EOF: BASETOKEN.EOF\n};\n\n\nvar directives_core = new Directives(/\\/\\*/, /\\*\\//);\n\nvar number_pattern = /0[xX][0123456789abcdefABCDEF_]*n?|0[oO][01234567_]*n?|0[bB][01_]*n?|\\d[\\d_]*n|(?:\\.\\d[\\d_]*|\\d[\\d_]*\\.?[\\d_]*)(?:[eE][+-]?[\\d_]+)?/;\n\nvar digit = /[0-9]/;\n\n// Dot \".\" must be distinguished from \"...\" and decimal\nvar dot_pattern = /[^\\d\\.]/;\n\nvar positionable_operators = (\n \">>> === !== &&= ??= ||= \" +\n \"<< && >= ** != == <= >> || ?? |> \" +\n \"< / - + > : & % ? ^ | *\").split(' ');\n\n// IMPORTANT: this must be sorted longest to shortest or tokenizing many not work.\n// Also, you must update possitionable operators separately from punct\nvar punct =\n \">>>= \" +\n \"... >>= <<= === >>> !== **= &&= ??= ||= \" +\n \"=> ^= :: /= << <= == && -= >= >> != -- += ** || ?? ++ %= &= *= |= |> \" +\n \"= ! ? > < : / ^ - + * & % ~ |\";\n\npunct = punct.replace(/[-[\\]{}()*+?.,\\\\^$|#]/g, \"\\\\$&\");\n// ?. but not if followed by a number \npunct = '\\\\?\\\\.(?!\\\\d) ' + punct;\npunct = punct.replace(/ /g, '|');\n\nvar punct_pattern = new RegExp(punct);\n\n// words which should always start on new line.\nvar line_starters = 'continue,try,throw,return,var,let,const,if,switch,case,default,for,while,break,function,import,export'.split(',');\nvar reserved_words = line_starters.concat(['do', 'in', 'of', 'else', 'get', 'set', 'new', 'catch', 'finally', 'typeof', 'yield', 'async', 'await', 'from', 'as', 'class', 'extends']);\nvar reserved_word_pattern = new RegExp('^(?:' + reserved_words.join('|') + ')$');\n\n// var template_pattern = /(?:(?:<\\?php|<\\?=)[\\s\\S]*?\\?>)|(?:<%[\\s\\S]*?%>)/g;\n\nvar in_html_comment;\n\nvar Tokenizer = function(input_string, options) {\n BaseTokenizer.call(this, input_string, options);\n\n this._patterns.whitespace = this._patterns.whitespace.matching(\n /\\u00A0\\u1680\\u180e\\u2000-\\u200a\\u202f\\u205f\\u3000\\ufeff/.source,\n /\\u2028\\u2029/.source);\n\n var pattern_reader = new Pattern(this._input);\n var templatable = new TemplatablePattern(this._input)\n .read_options(this._options);\n\n this.__patterns = {\n template: templatable,\n identifier: templatable.starting_with(acorn.identifier).matching(acorn.identifierMatch),\n number: pattern_reader.matching(number_pattern),\n punct: pattern_reader.matching(punct_pattern),\n // comment ends just before nearest linefeed or end of file\n comment: pattern_reader.starting_with(/\\/\\//).until(/[\\n\\r\\u2028\\u2029]/),\n // /* ... */ comment ends with nearest */ or end of file\n block_comment: pattern_reader.starting_with(/\\/\\*/).until_after(/\\*\\//),\n html_comment_start: pattern_reader.matching(//),\n include: pattern_reader.starting_with(/#include/).until_after(acorn.lineBreak),\n shebang: pattern_reader.starting_with(/#!/).until_after(acorn.lineBreak),\n xml: pattern_reader.matching(/[\\s\\S]*?<(\\/?)([-a-zA-Z:0-9_.]+|{[^}]+?}|!\\[CDATA\\[[^\\]]*?\\]\\]|)(\\s*{[^}]+?}|\\s+[-a-zA-Z:0-9_.]+|\\s+[-a-zA-Z:0-9_.]+\\s*=\\s*('[^']*'|\"[^\"]*\"|{([^{}]|{[^}]+?})+?}))*\\s*(\\/?)\\s*>/),\n single_quote: templatable.until(/['\\\\\\n\\r\\u2028\\u2029]/),\n double_quote: templatable.until(/[\"\\\\\\n\\r\\u2028\\u2029]/),\n template_text: templatable.until(/[`\\\\$]/),\n template_expression: templatable.until(/[`}\\\\]/)\n };\n\n};\nTokenizer.prototype = new BaseTokenizer();\n\nTokenizer.prototype._is_comment = function(current_token) {\n return current_token.type === TOKEN.COMMENT || current_token.type === TOKEN.BLOCK_COMMENT || current_token.type === TOKEN.UNKNOWN;\n};\n\nTokenizer.prototype._is_opening = function(current_token) {\n return current_token.type === TOKEN.START_BLOCK || current_token.type === TOKEN.START_EXPR;\n};\n\nTokenizer.prototype._is_closing = function(current_token, open_token) {\n return (current_token.type === TOKEN.END_BLOCK || current_token.type === TOKEN.END_EXPR) &&\n (open_token && (\n (current_token.text === ']' && open_token.text === '[') ||\n (current_token.text === ')' && open_token.text === '(') ||\n (current_token.text === '}' && open_token.text === '{')));\n};\n\nTokenizer.prototype._reset = function() {\n in_html_comment = false;\n};\n\nTokenizer.prototype._get_next_token = function(previous_token, open_token) { // jshint unused:false\n var token = null;\n this._readWhitespace();\n var c = this._input.peek();\n\n if (c === null) {\n return this._create_token(TOKEN.EOF, '');\n }\n\n token = token || this._read_non_javascript(c);\n token = token || this._read_string(c);\n token = token || this._read_pair(c, this._input.peek(1)); // Issue #2062 hack for record type '#{'\n token = token || this._read_word(previous_token);\n token = token || this._read_singles(c);\n token = token || this._read_comment(c);\n token = token || this._read_regexp(c, previous_token);\n token = token || this._read_xml(c, previous_token);\n token = token || this._read_punctuation();\n token = token || this._create_token(TOKEN.UNKNOWN, this._input.next());\n\n return token;\n};\n\nTokenizer.prototype._read_word = function(previous_token) {\n var resulting_string;\n resulting_string = this.__patterns.identifier.read();\n if (resulting_string !== '') {\n resulting_string = resulting_string.replace(acorn.allLineBreaks, '\\n');\n if (!(previous_token.type === TOKEN.DOT ||\n (previous_token.type === TOKEN.RESERVED && (previous_token.text === 'set' || previous_token.text === 'get'))) &&\n reserved_word_pattern.test(resulting_string)) {\n if ((resulting_string === 'in' || resulting_string === 'of') &&\n (previous_token.type === TOKEN.WORD || previous_token.type === TOKEN.STRING)) { // hack for 'in' and 'of' operators\n return this._create_token(TOKEN.OPERATOR, resulting_string);\n }\n return this._create_token(TOKEN.RESERVED, resulting_string);\n }\n return this._create_token(TOKEN.WORD, resulting_string);\n }\n\n resulting_string = this.__patterns.number.read();\n if (resulting_string !== '') {\n return this._create_token(TOKEN.WORD, resulting_string);\n }\n};\n\nTokenizer.prototype._read_singles = function(c) {\n var token = null;\n if (c === '(' || c === '[') {\n token = this._create_token(TOKEN.START_EXPR, c);\n } else if (c === ')' || c === ']') {\n token = this._create_token(TOKEN.END_EXPR, c);\n } else if (c === '{') {\n token = this._create_token(TOKEN.START_BLOCK, c);\n } else if (c === '}') {\n token = this._create_token(TOKEN.END_BLOCK, c);\n } else if (c === ';') {\n token = this._create_token(TOKEN.SEMICOLON, c);\n } else if (c === '.' && dot_pattern.test(this._input.peek(1))) {\n token = this._create_token(TOKEN.DOT, c);\n } else if (c === ',') {\n token = this._create_token(TOKEN.COMMA, c);\n }\n\n if (token) {\n this._input.next();\n }\n return token;\n};\n\nTokenizer.prototype._read_pair = function(c, d) {\n var token = null;\n if (c === '#' && d === '{') {\n token = this._create_token(TOKEN.START_BLOCK, c + d);\n }\n\n if (token) {\n this._input.next();\n this._input.next();\n }\n return token;\n};\n\nTokenizer.prototype._read_punctuation = function() {\n var resulting_string = this.__patterns.punct.read();\n\n if (resulting_string !== '') {\n if (resulting_string === '=') {\n return this._create_token(TOKEN.EQUALS, resulting_string);\n } else if (resulting_string === '?.') {\n return this._create_token(TOKEN.DOT, resulting_string);\n } else {\n return this._create_token(TOKEN.OPERATOR, resulting_string);\n }\n }\n};\n\nTokenizer.prototype._read_non_javascript = function(c) {\n var resulting_string = '';\n\n if (c === '#') {\n if (this._is_first_token()) {\n resulting_string = this.__patterns.shebang.read();\n\n if (resulting_string) {\n return this._create_token(TOKEN.UNKNOWN, resulting_string.trim() + '\\n');\n }\n }\n\n // handles extendscript #includes\n resulting_string = this.__patterns.include.read();\n\n if (resulting_string) {\n return this._create_token(TOKEN.UNKNOWN, resulting_string.trim() + '\\n');\n }\n\n c = this._input.next();\n\n // Spidermonkey-specific sharp variables for circular references. Considered obsolete.\n var sharp = '#';\n if (this._input.hasNext() && this._input.testChar(digit)) {\n do {\n c = this._input.next();\n sharp += c;\n } while (this._input.hasNext() && c !== '#' && c !== '=');\n if (c === '#') {\n //\n } else if (this._input.peek() === '[' && this._input.peek(1) === ']') {\n sharp += '[]';\n this._input.next();\n this._input.next();\n } else if (this._input.peek() === '{' && this._input.peek(1) === '}') {\n sharp += '{}';\n this._input.next();\n this._input.next();\n }\n return this._create_token(TOKEN.WORD, sharp);\n }\n\n this._input.back();\n\n } else if (c === '<' && this._is_first_token()) {\n resulting_string = this.__patterns.html_comment_start.read();\n if (resulting_string) {\n while (this._input.hasNext() && !this._input.testChar(acorn.newline)) {\n resulting_string += this._input.next();\n }\n in_html_comment = true;\n return this._create_token(TOKEN.COMMENT, resulting_string);\n }\n } else if (in_html_comment && c === '-') {\n resulting_string = this.__patterns.html_comment_end.read();\n if (resulting_string) {\n in_html_comment = false;\n return this._create_token(TOKEN.COMMENT, resulting_string);\n }\n }\n\n return null;\n};\n\nTokenizer.prototype._read_comment = function(c) {\n var token = null;\n if (c === '/') {\n var comment = '';\n if (this._input.peek(1) === '*') {\n // peek for comment /* ... */\n comment = this.__patterns.block_comment.read();\n var directives = directives_core.get_directives(comment);\n if (directives && directives.ignore === 'start') {\n comment += directives_core.readIgnored(this._input);\n }\n comment = comment.replace(acorn.allLineBreaks, '\\n');\n token = this._create_token(TOKEN.BLOCK_COMMENT, comment);\n token.directives = directives;\n } else if (this._input.peek(1) === '/') {\n // peek for comment // ...\n comment = this.__patterns.comment.read();\n token = this._create_token(TOKEN.COMMENT, comment);\n }\n }\n return token;\n};\n\nTokenizer.prototype._read_string = function(c) {\n if (c === '`' || c === \"'\" || c === '\"') {\n var resulting_string = this._input.next();\n this.has_char_escapes = false;\n\n if (c === '`') {\n resulting_string += this._read_string_recursive('`', true, '${');\n } else {\n resulting_string += this._read_string_recursive(c);\n }\n\n if (this.has_char_escapes && this._options.unescape_strings) {\n resulting_string = unescape_string(resulting_string);\n }\n\n if (this._input.peek() === c) {\n resulting_string += this._input.next();\n }\n\n resulting_string = resulting_string.replace(acorn.allLineBreaks, '\\n');\n\n return this._create_token(TOKEN.STRING, resulting_string);\n }\n\n return null;\n};\n\nTokenizer.prototype._allow_regexp_or_xml = function(previous_token) {\n // regex and xml can only appear in specific locations during parsing\n return (previous_token.type === TOKEN.RESERVED && in_array(previous_token.text, ['return', 'case', 'throw', 'else', 'do', 'typeof', 'yield'])) ||\n (previous_token.type === TOKEN.END_EXPR && previous_token.text === ')' &&\n previous_token.opened.previous.type === TOKEN.RESERVED && in_array(previous_token.opened.previous.text, ['if', 'while', 'for'])) ||\n (in_array(previous_token.type, [TOKEN.COMMENT, TOKEN.START_EXPR, TOKEN.START_BLOCK, TOKEN.START,\n TOKEN.END_BLOCK, TOKEN.OPERATOR, TOKEN.EQUALS, TOKEN.EOF, TOKEN.SEMICOLON, TOKEN.COMMA\n ]));\n};\n\nTokenizer.prototype._read_regexp = function(c, previous_token) {\n\n if (c === '/' && this._allow_regexp_or_xml(previous_token)) {\n // handle regexp\n //\n var resulting_string = this._input.next();\n var esc = false;\n\n var in_char_class = false;\n while (this._input.hasNext() &&\n ((esc || in_char_class || this._input.peek() !== c) &&\n !this._input.testChar(acorn.newline))) {\n resulting_string += this._input.peek();\n if (!esc) {\n esc = this._input.peek() === '\\\\';\n if (this._input.peek() === '[') {\n in_char_class = true;\n } else if (this._input.peek() === ']') {\n in_char_class = false;\n }\n } else {\n esc = false;\n }\n this._input.next();\n }\n\n if (this._input.peek() === c) {\n resulting_string += this._input.next();\n\n // regexps may have modifiers /regexp/MOD , so fetch those, too\n // Only [gim] are valid, but if the user puts in garbage, do what we can to take it.\n resulting_string += this._input.read(acorn.identifier);\n }\n return this._create_token(TOKEN.STRING, resulting_string);\n }\n return null;\n};\n\nTokenizer.prototype._read_xml = function(c, previous_token) {\n\n if (this._options.e4x && c === \"<\" && this._allow_regexp_or_xml(previous_token)) {\n var xmlStr = '';\n var match = this.__patterns.xml.read_match();\n // handle e4x xml literals\n //\n if (match) {\n // Trim root tag to attempt to\n var rootTag = match[2].replace(/^{\\s+/, '{').replace(/\\s+}$/, '}');\n var isCurlyRoot = rootTag.indexOf('{') === 0;\n var depth = 0;\n while (match) {\n var isEndTag = !!match[1];\n var tagName = match[2];\n var isSingletonTag = (!!match[match.length - 1]) || (tagName.slice(0, 8) === \"![CDATA[\");\n if (!isSingletonTag &&\n (tagName === rootTag || (isCurlyRoot && tagName.replace(/^{\\s+/, '{').replace(/\\s+}$/, '}')))) {\n if (isEndTag) {\n --depth;\n } else {\n ++depth;\n }\n }\n xmlStr += match[0];\n if (depth <= 0) {\n break;\n }\n match = this.__patterns.xml.read_match();\n }\n // if we didn't close correctly, keep unformatted.\n if (!match) {\n xmlStr += this._input.match(/[\\s\\S]*/g)[0];\n }\n xmlStr = xmlStr.replace(acorn.allLineBreaks, '\\n');\n return this._create_token(TOKEN.STRING, xmlStr);\n }\n }\n\n return null;\n};\n\nfunction unescape_string(s) {\n // You think that a regex would work for this\n // return s.replace(/\\\\x([0-9a-f]{2})/gi, function(match, val) {\n // return String.fromCharCode(parseInt(val, 16));\n // })\n // However, dealing with '\\xff', '\\\\xff', '\\\\\\xff' makes this more fun.\n var out = '',\n escaped = 0;\n\n var input_scan = new InputScanner(s);\n var matched = null;\n\n while (input_scan.hasNext()) {\n // Keep any whitespace, non-slash characters\n // also keep slash pairs.\n matched = input_scan.match(/([\\s]|[^\\\\]|\\\\\\\\)+/g);\n\n if (matched) {\n out += matched[0];\n }\n\n if (input_scan.peek() === '\\\\') {\n input_scan.next();\n if (input_scan.peek() === 'x') {\n matched = input_scan.match(/x([0-9A-Fa-f]{2})/g);\n } else if (input_scan.peek() === 'u') {\n matched = input_scan.match(/u([0-9A-Fa-f]{4})/g);\n if (!matched) {\n matched = input_scan.match(/u\\{([0-9A-Fa-f]+)\\}/g);\n }\n } else {\n out += '\\\\';\n if (input_scan.hasNext()) {\n out += input_scan.next();\n }\n continue;\n }\n\n // If there's some error decoding, return the original string\n if (!matched) {\n return s;\n }\n\n escaped = parseInt(matched[1], 16);\n\n if (escaped > 0x7e && escaped <= 0xff && matched[0].indexOf('x') === 0) {\n // we bail out on \\x7f..\\xff,\n // leaving whole string escaped,\n // as it's probably completely binary\n return s;\n } else if (escaped >= 0x00 && escaped < 0x20) {\n // leave 0x00...0x1f escaped\n out += '\\\\' + matched[0];\n } else if (escaped > 0x10FFFF) {\n // If the escape sequence is out of bounds, keep the original sequence and continue conversion\n out += '\\\\' + matched[0];\n } else if (escaped === 0x22 || escaped === 0x27 || escaped === 0x5c) {\n // single-quote, apostrophe, backslash - escape these\n out += '\\\\' + String.fromCharCode(escaped);\n } else {\n out += String.fromCharCode(escaped);\n }\n }\n }\n\n return out;\n}\n\n// handle string\n//\nTokenizer.prototype._read_string_recursive = function(delimiter, allow_unescaped_newlines, start_sub) {\n var current_char;\n var pattern;\n if (delimiter === '\\'') {\n pattern = this.__patterns.single_quote;\n } else if (delimiter === '\"') {\n pattern = this.__patterns.double_quote;\n } else if (delimiter === '`') {\n pattern = this.__patterns.template_text;\n } else if (delimiter === '}') {\n pattern = this.__patterns.template_expression;\n }\n\n var resulting_string = pattern.read();\n var next = '';\n while (this._input.hasNext()) {\n next = this._input.next();\n if (next === delimiter ||\n (!allow_unescaped_newlines && acorn.newline.test(next))) {\n this._input.back();\n break;\n } else if (next === '\\\\' && this._input.hasNext()) {\n current_char = this._input.peek();\n\n if (current_char === 'x' || current_char === 'u') {\n this.has_char_escapes = true;\n } else if (current_char === '\\r' && this._input.peek(1) === '\\n') {\n this._input.next();\n }\n next += this._input.next();\n } else if (start_sub) {\n if (start_sub === '${' && next === '$' && this._input.peek() === '{') {\n next += this._input.next();\n }\n\n if (start_sub === next) {\n if (delimiter === '`') {\n next += this._read_string_recursive('}', allow_unescaped_newlines, '`');\n } else {\n next += this._read_string_recursive('`', allow_unescaped_newlines, '${');\n }\n if (this._input.hasNext()) {\n next += this._input.next();\n }\n }\n }\n next += pattern.read();\n resulting_string += next;\n }\n\n return resulting_string;\n};\n\nmodule.exports.Tokenizer = Tokenizer;\nmodule.exports.TOKEN = TOKEN;\nmodule.exports.positionable_operators = positionable_operators.slice();\nmodule.exports.line_starters = line_starters.slice();\n\n\n/***/ }),\n/* 8 */\n/***/ (function(module) {\n\n/*jshint node:true */\n/*\n\n The MIT License (MIT)\n\n Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors.\n\n Permission is hereby granted, free of charge, to any person\n obtaining a copy of this software and associated documentation files\n (the \"Software\"), to deal in the Software without restriction,\n including without limitation the rights to use, copy, modify, merge,\n publish, distribute, sublicense, and/or sell copies of the Software,\n and to permit persons to whom the Software is furnished to do so,\n subject to the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\n BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n*/\n\n\n\nvar regexp_has_sticky = RegExp.prototype.hasOwnProperty('sticky');\n\nfunction InputScanner(input_string) {\n this.__input = input_string || '';\n this.__input_length = this.__input.length;\n this.__position = 0;\n}\n\nInputScanner.prototype.restart = function() {\n this.__position = 0;\n};\n\nInputScanner.prototype.back = function() {\n if (this.__position > 0) {\n this.__position -= 1;\n }\n};\n\nInputScanner.prototype.hasNext = function() {\n return this.__position < this.__input_length;\n};\n\nInputScanner.prototype.next = function() {\n var val = null;\n if (this.hasNext()) {\n val = this.__input.charAt(this.__position);\n this.__position += 1;\n }\n return val;\n};\n\nInputScanner.prototype.peek = function(index) {\n var val = null;\n index = index || 0;\n index += this.__position;\n if (index >= 0 && index < this.__input_length) {\n val = this.__input.charAt(index);\n }\n return val;\n};\n\n// This is a JavaScript only helper function (not in python)\n// Javascript doesn't have a match method\n// and not all implementation support \"sticky\" flag.\n// If they do not support sticky then both this.match() and this.test() method\n// must get the match and check the index of the match.\n// If sticky is supported and set, this method will use it.\n// Otherwise it will check that global is set, and fall back to the slower method.\nInputScanner.prototype.__match = function(pattern, index) {\n pattern.lastIndex = index;\n var pattern_match = pattern.exec(this.__input);\n\n if (pattern_match && !(regexp_has_sticky && pattern.sticky)) {\n if (pattern_match.index !== index) {\n pattern_match = null;\n }\n }\n\n return pattern_match;\n};\n\nInputScanner.prototype.test = function(pattern, index) {\n index = index || 0;\n index += this.__position;\n\n if (index >= 0 && index < this.__input_length) {\n return !!this.__match(pattern, index);\n } else {\n return false;\n }\n};\n\nInputScanner.prototype.testChar = function(pattern, index) {\n // test one character regex match\n var val = this.peek(index);\n pattern.lastIndex = 0;\n return val !== null && pattern.test(val);\n};\n\nInputScanner.prototype.match = function(pattern) {\n var pattern_match = this.__match(pattern, this.__position);\n if (pattern_match) {\n this.__position += pattern_match[0].length;\n } else {\n pattern_match = null;\n }\n return pattern_match;\n};\n\nInputScanner.prototype.read = function(starting_pattern, until_pattern, until_after) {\n var val = '';\n var match;\n if (starting_pattern) {\n match = this.match(starting_pattern);\n if (match) {\n val += match[0];\n }\n }\n if (until_pattern && (match || !starting_pattern)) {\n val += this.readUntil(until_pattern, until_after);\n }\n return val;\n};\n\nInputScanner.prototype.readUntil = function(pattern, until_after) {\n var val = '';\n var match_index = this.__position;\n pattern.lastIndex = this.__position;\n var pattern_match = pattern.exec(this.__input);\n if (pattern_match) {\n match_index = pattern_match.index;\n if (until_after) {\n match_index += pattern_match[0].length;\n }\n } else {\n match_index = this.__input_length;\n }\n\n val = this.__input.substring(this.__position, match_index);\n this.__position = match_index;\n return val;\n};\n\nInputScanner.prototype.readUntilAfter = function(pattern) {\n return this.readUntil(pattern, true);\n};\n\nInputScanner.prototype.get_regexp = function(pattern, match_from) {\n var result = null;\n var flags = 'g';\n if (match_from && regexp_has_sticky) {\n flags = 'y';\n }\n // strings are converted to regexp\n if (typeof pattern === \"string\" && pattern !== '') {\n // result = new RegExp(pattern.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&'), flags);\n result = new RegExp(pattern, flags);\n } else if (pattern) {\n result = new RegExp(pattern.source, flags);\n }\n return result;\n};\n\nInputScanner.prototype.get_literal_regexp = function(literal_string) {\n return RegExp(literal_string.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&'));\n};\n\n/* css beautifier legacy helpers */\nInputScanner.prototype.peekUntilAfter = function(pattern) {\n var start = this.__position;\n var val = this.readUntilAfter(pattern);\n this.__position = start;\n return val;\n};\n\nInputScanner.prototype.lookBack = function(testVal) {\n var start = this.__position - 1;\n return start >= testVal.length && this.__input.substring(start - testVal.length, start)\n .toLowerCase() === testVal;\n};\n\nmodule.exports.InputScanner = InputScanner;\n\n\n/***/ }),\n/* 9 */\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n/*jshint node:true */\n/*\n\n The MIT License (MIT)\n\n Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors.\n\n Permission is hereby granted, free of charge, to any person\n obtaining a copy of this software and associated documentation files\n (the \"Software\"), to deal in the Software without restriction,\n including without limitation the rights to use, copy, modify, merge,\n publish, distribute, sublicense, and/or sell copies of the Software,\n and to permit persons to whom the Software is furnished to do so,\n subject to the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\n BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n*/\n\n\n\nvar InputScanner = (__webpack_require__(8).InputScanner);\nvar Token = (__webpack_require__(3).Token);\nvar TokenStream = (__webpack_require__(10).TokenStream);\nvar WhitespacePattern = (__webpack_require__(11).WhitespacePattern);\n\nvar TOKEN = {\n START: 'TK_START',\n RAW: 'TK_RAW',\n EOF: 'TK_EOF'\n};\n\nvar Tokenizer = function(input_string, options) {\n this._input = new InputScanner(input_string);\n this._options = options || {};\n this.__tokens = null;\n\n this._patterns = {};\n this._patterns.whitespace = new WhitespacePattern(this._input);\n};\n\nTokenizer.prototype.tokenize = function() {\n this._input.restart();\n this.__tokens = new TokenStream();\n\n this._reset();\n\n var current;\n var previous = new Token(TOKEN.START, '');\n var open_token = null;\n var open_stack = [];\n var comments = new TokenStream();\n\n while (previous.type !== TOKEN.EOF) {\n current = this._get_next_token(previous, open_token);\n while (this._is_comment(current)) {\n comments.add(current);\n current = this._get_next_token(previous, open_token);\n }\n\n if (!comments.isEmpty()) {\n current.comments_before = comments;\n comments = new TokenStream();\n }\n\n current.parent = open_token;\n\n if (this._is_opening(current)) {\n open_stack.push(open_token);\n open_token = current;\n } else if (open_token && this._is_closing(current, open_token)) {\n current.opened = open_token;\n open_token.closed = current;\n open_token = open_stack.pop();\n current.parent = open_token;\n }\n\n current.previous = previous;\n previous.next = current;\n\n this.__tokens.add(current);\n previous = current;\n }\n\n return this.__tokens;\n};\n\n\nTokenizer.prototype._is_first_token = function() {\n return this.__tokens.isEmpty();\n};\n\nTokenizer.prototype._reset = function() {};\n\nTokenizer.prototype._get_next_token = function(previous_token, open_token) { // jshint unused:false\n this._readWhitespace();\n var resulting_string = this._input.read(/.+/g);\n if (resulting_string) {\n return this._create_token(TOKEN.RAW, resulting_string);\n } else {\n return this._create_token(TOKEN.EOF, '');\n }\n};\n\nTokenizer.prototype._is_comment = function(current_token) { // jshint unused:false\n return false;\n};\n\nTokenizer.prototype._is_opening = function(current_token) { // jshint unused:false\n return false;\n};\n\nTokenizer.prototype._is_closing = function(current_token, open_token) { // jshint unused:false\n return false;\n};\n\nTokenizer.prototype._create_token = function(type, text) {\n var token = new Token(type, text,\n this._patterns.whitespace.newline_count,\n this._patterns.whitespace.whitespace_before_token);\n return token;\n};\n\nTokenizer.prototype._readWhitespace = function() {\n return this._patterns.whitespace.read();\n};\n\n\n\nmodule.exports.Tokenizer = Tokenizer;\nmodule.exports.TOKEN = TOKEN;\n\n\n/***/ }),\n/* 10 */\n/***/ (function(module) {\n\n/*jshint node:true */\n/*\n\n The MIT License (MIT)\n\n Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors.\n\n Permission is hereby granted, free of charge, to any person\n obtaining a copy of this software and associated documentation files\n (the \"Software\"), to deal in the Software without restriction,\n including without limitation the rights to use, copy, modify, merge,\n publish, distribute, sublicense, and/or sell copies of the Software,\n and to permit persons to whom the Software is furnished to do so,\n subject to the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\n BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n*/\n\n\n\nfunction TokenStream(parent_token) {\n // private\n this.__tokens = [];\n this.__tokens_length = this.__tokens.length;\n this.__position = 0;\n this.__parent_token = parent_token;\n}\n\nTokenStream.prototype.restart = function() {\n this.__position = 0;\n};\n\nTokenStream.prototype.isEmpty = function() {\n return this.__tokens_length === 0;\n};\n\nTokenStream.prototype.hasNext = function() {\n return this.__position < this.__tokens_length;\n};\n\nTokenStream.prototype.next = function() {\n var val = null;\n if (this.hasNext()) {\n val = this.__tokens[this.__position];\n this.__position += 1;\n }\n return val;\n};\n\nTokenStream.prototype.peek = function(index) {\n var val = null;\n index = index || 0;\n index += this.__position;\n if (index >= 0 && index < this.__tokens_length) {\n val = this.__tokens[index];\n }\n return val;\n};\n\nTokenStream.prototype.add = function(token) {\n if (this.__parent_token) {\n token.parent = this.__parent_token;\n }\n this.__tokens.push(token);\n this.__tokens_length += 1;\n};\n\nmodule.exports.TokenStream = TokenStream;\n\n\n/***/ }),\n/* 11 */\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n/*jshint node:true */\n/*\n\n The MIT License (MIT)\n\n Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors.\n\n Permission is hereby granted, free of charge, to any person\n obtaining a copy of this software and associated documentation files\n (the \"Software\"), to deal in the Software without restriction,\n including without limitation the rights to use, copy, modify, merge,\n publish, distribute, sublicense, and/or sell copies of the Software,\n and to permit persons to whom the Software is furnished to do so,\n subject to the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\n BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n*/\n\n\n\nvar Pattern = (__webpack_require__(12).Pattern);\n\nfunction WhitespacePattern(input_scanner, parent) {\n Pattern.call(this, input_scanner, parent);\n if (parent) {\n this._line_regexp = this._input.get_regexp(parent._line_regexp);\n } else {\n this.__set_whitespace_patterns('', '');\n }\n\n this.newline_count = 0;\n this.whitespace_before_token = '';\n}\nWhitespacePattern.prototype = new Pattern();\n\nWhitespacePattern.prototype.__set_whitespace_patterns = function(whitespace_chars, newline_chars) {\n whitespace_chars += '\\\\t ';\n newline_chars += '\\\\n\\\\r';\n\n this._match_pattern = this._input.get_regexp(\n '[' + whitespace_chars + newline_chars + ']+', true);\n this._newline_regexp = this._input.get_regexp(\n '\\\\r\\\\n|[' + newline_chars + ']');\n};\n\nWhitespacePattern.prototype.read = function() {\n this.newline_count = 0;\n this.whitespace_before_token = '';\n\n var resulting_string = this._input.read(this._match_pattern);\n if (resulting_string === ' ') {\n this.whitespace_before_token = ' ';\n } else if (resulting_string) {\n var matches = this.__split(this._newline_regexp, resulting_string);\n this.newline_count = matches.length - 1;\n this.whitespace_before_token = matches[this.newline_count];\n }\n\n return resulting_string;\n};\n\nWhitespacePattern.prototype.matching = function(whitespace_chars, newline_chars) {\n var result = this._create();\n result.__set_whitespace_patterns(whitespace_chars, newline_chars);\n result._update();\n return result;\n};\n\nWhitespacePattern.prototype._create = function() {\n return new WhitespacePattern(this._input, this);\n};\n\nWhitespacePattern.prototype.__split = function(regexp, input_string) {\n regexp.lastIndex = 0;\n var start_index = 0;\n var result = [];\n var next_match = regexp.exec(input_string);\n while (next_match) {\n result.push(input_string.substring(start_index, next_match.index));\n start_index = next_match.index + next_match[0].length;\n next_match = regexp.exec(input_string);\n }\n\n if (start_index < input_string.length) {\n result.push(input_string.substring(start_index, input_string.length));\n } else {\n result.push('');\n }\n\n return result;\n};\n\n\n\nmodule.exports.WhitespacePattern = WhitespacePattern;\n\n\n/***/ }),\n/* 12 */\n/***/ (function(module) {\n\n/*jshint node:true */\n/*\n\n The MIT License (MIT)\n\n Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors.\n\n Permission is hereby granted, free of charge, to any person\n obtaining a copy of this software and associated documentation files\n (the \"Software\"), to deal in the Software without restriction,\n including without limitation the rights to use, copy, modify, merge,\n publish, distribute, sublicense, and/or sell copies of the Software,\n and to permit persons to whom the Software is furnished to do so,\n subject to the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\n BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n*/\n\n\n\nfunction Pattern(input_scanner, parent) {\n this._input = input_scanner;\n this._starting_pattern = null;\n this._match_pattern = null;\n this._until_pattern = null;\n this._until_after = false;\n\n if (parent) {\n this._starting_pattern = this._input.get_regexp(parent._starting_pattern, true);\n this._match_pattern = this._input.get_regexp(parent._match_pattern, true);\n this._until_pattern = this._input.get_regexp(parent._until_pattern);\n this._until_after = parent._until_after;\n }\n}\n\nPattern.prototype.read = function() {\n var result = this._input.read(this._starting_pattern);\n if (!this._starting_pattern || result) {\n result += this._input.read(this._match_pattern, this._until_pattern, this._until_after);\n }\n return result;\n};\n\nPattern.prototype.read_match = function() {\n return this._input.match(this._match_pattern);\n};\n\nPattern.prototype.until_after = function(pattern) {\n var result = this._create();\n result._until_after = true;\n result._until_pattern = this._input.get_regexp(pattern);\n result._update();\n return result;\n};\n\nPattern.prototype.until = function(pattern) {\n var result = this._create();\n result._until_after = false;\n result._until_pattern = this._input.get_regexp(pattern);\n result._update();\n return result;\n};\n\nPattern.prototype.starting_with = function(pattern) {\n var result = this._create();\n result._starting_pattern = this._input.get_regexp(pattern, true);\n result._update();\n return result;\n};\n\nPattern.prototype.matching = function(pattern) {\n var result = this._create();\n result._match_pattern = this._input.get_regexp(pattern, true);\n result._update();\n return result;\n};\n\nPattern.prototype._create = function() {\n return new Pattern(this._input, this);\n};\n\nPattern.prototype._update = function() {};\n\nmodule.exports.Pattern = Pattern;\n\n\n/***/ }),\n/* 13 */\n/***/ (function(module) {\n\n/*jshint node:true */\n/*\n\n The MIT License (MIT)\n\n Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors.\n\n Permission is hereby granted, free of charge, to any person\n obtaining a copy of this software and associated documentation files\n (the \"Software\"), to deal in the Software without restriction,\n including without limitation the rights to use, copy, modify, merge,\n publish, distribute, sublicense, and/or sell copies of the Software,\n and to permit persons to whom the Software is furnished to do so,\n subject to the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\n BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n*/\n\n\n\nfunction Directives(start_block_pattern, end_block_pattern) {\n start_block_pattern = typeof start_block_pattern === 'string' ? start_block_pattern : start_block_pattern.source;\n end_block_pattern = typeof end_block_pattern === 'string' ? end_block_pattern : end_block_pattern.source;\n this.__directives_block_pattern = new RegExp(start_block_pattern + / beautify( \\w+[:]\\w+)+ /.source + end_block_pattern, 'g');\n this.__directive_pattern = / (\\w+)[:](\\w+)/g;\n\n this.__directives_end_ignore_pattern = new RegExp(start_block_pattern + /\\sbeautify\\signore:end\\s/.source + end_block_pattern, 'g');\n}\n\nDirectives.prototype.get_directives = function(text) {\n if (!text.match(this.__directives_block_pattern)) {\n return null;\n }\n\n var directives = {};\n this.__directive_pattern.lastIndex = 0;\n var directive_match = this.__directive_pattern.exec(text);\n\n while (directive_match) {\n directives[directive_match[1]] = directive_match[2];\n directive_match = this.__directive_pattern.exec(text);\n }\n\n return directives;\n};\n\nDirectives.prototype.readIgnored = function(input) {\n return input.readUntilAfter(this.__directives_end_ignore_pattern);\n};\n\n\nmodule.exports.Directives = Directives;\n\n\n/***/ }),\n/* 14 */\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n/*jshint node:true */\n/*\n\n The MIT License (MIT)\n\n Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors.\n\n Permission is hereby granted, free of charge, to any person\n obtaining a copy of this software and associated documentation files\n (the \"Software\"), to deal in the Software without restriction,\n including without limitation the rights to use, copy, modify, merge,\n publish, distribute, sublicense, and/or sell copies of the Software,\n and to permit persons to whom the Software is furnished to do so,\n subject to the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\n BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n*/\n\n\n\nvar Pattern = (__webpack_require__(12).Pattern);\n\n\nvar template_names = {\n django: false,\n erb: false,\n handlebars: false,\n php: false,\n smarty: false,\n angular: false\n};\n\n// This lets templates appear anywhere we would do a readUntil\n// The cost is higher but it is pay to play.\nfunction TemplatablePattern(input_scanner, parent) {\n Pattern.call(this, input_scanner, parent);\n this.__template_pattern = null;\n this._disabled = Object.assign({}, template_names);\n this._excluded = Object.assign({}, template_names);\n\n if (parent) {\n this.__template_pattern = this._input.get_regexp(parent.__template_pattern);\n this._excluded = Object.assign(this._excluded, parent._excluded);\n this._disabled = Object.assign(this._disabled, parent._disabled);\n }\n var pattern = new Pattern(input_scanner);\n this.__patterns = {\n handlebars_comment: pattern.starting_with(/{{!--/).until_after(/--}}/),\n handlebars_unescaped: pattern.starting_with(/{{{/).until_after(/}}}/),\n handlebars: pattern.starting_with(/{{/).until_after(/}}/),\n php: pattern.starting_with(/<\\?(?:[= ]|php)/).until_after(/\\?>/),\n erb: pattern.starting_with(/<%[^%]/).until_after(/[^%]%>/),\n // django coflicts with handlebars a bit.\n django: pattern.starting_with(/{%/).until_after(/%}/),\n django_value: pattern.starting_with(/{{/).until_after(/}}/),\n django_comment: pattern.starting_with(/{#/).until_after(/#}/),\n smarty: pattern.starting_with(/{(?=[^}{\\s\\n])/).until_after(/[^\\s\\n]}/),\n smarty_comment: pattern.starting_with(/{\\*/).until_after(/\\*}/),\n smarty_literal: pattern.starting_with(/{literal}/).until_after(/{\\/literal}/)\n };\n}\nTemplatablePattern.prototype = new Pattern();\n\nTemplatablePattern.prototype._create = function() {\n return new TemplatablePattern(this._input, this);\n};\n\nTemplatablePattern.prototype._update = function() {\n this.__set_templated_pattern();\n};\n\nTemplatablePattern.prototype.disable = function(language) {\n var result = this._create();\n result._disabled[language] = true;\n result._update();\n return result;\n};\n\nTemplatablePattern.prototype.read_options = function(options) {\n var result = this._create();\n for (var language in template_names) {\n result._disabled[language] = options.templating.indexOf(language) === -1;\n }\n result._update();\n return result;\n};\n\nTemplatablePattern.prototype.exclude = function(language) {\n var result = this._create();\n result._excluded[language] = true;\n result._update();\n return result;\n};\n\nTemplatablePattern.prototype.read = function() {\n var result = '';\n if (this._match_pattern) {\n result = this._input.read(this._starting_pattern);\n } else {\n result = this._input.read(this._starting_pattern, this.__template_pattern);\n }\n var next = this._read_template();\n while (next) {\n if (this._match_pattern) {\n next += this._input.read(this._match_pattern);\n } else {\n next += this._input.readUntil(this.__template_pattern);\n }\n result += next;\n next = this._read_template();\n }\n\n if (this._until_after) {\n result += this._input.readUntilAfter(this._until_pattern);\n }\n return result;\n};\n\nTemplatablePattern.prototype.__set_templated_pattern = function() {\n var items = [];\n\n if (!this._disabled.php) {\n items.push(this.__patterns.php._starting_pattern.source);\n }\n if (!this._disabled.handlebars) {\n items.push(this.__patterns.handlebars._starting_pattern.source);\n }\n if (!this._disabled.angular) {\n // Handlebars ('{{' and '}}') are also special tokens in Angular)\n items.push(this.__patterns.handlebars._starting_pattern.source);\n }\n if (!this._disabled.erb) {\n items.push(this.__patterns.erb._starting_pattern.source);\n }\n if (!this._disabled.django) {\n items.push(this.__patterns.django._starting_pattern.source);\n // The starting pattern for django is more complex because it has different\n // patterns for value, comment, and other sections\n items.push(this.__patterns.django_value._starting_pattern.source);\n items.push(this.__patterns.django_comment._starting_pattern.source);\n }\n if (!this._disabled.smarty) {\n items.push(this.__patterns.smarty._starting_pattern.source);\n }\n\n if (this._until_pattern) {\n items.push(this._until_pattern.source);\n }\n this.__template_pattern = this._input.get_regexp('(?:' + items.join('|') + ')');\n};\n\nTemplatablePattern.prototype._read_template = function() {\n var resulting_string = '';\n var c = this._input.peek();\n if (c === '<') {\n var peek1 = this._input.peek(1);\n //if we're in a comment, do something special\n // We treat all comments as literals, even more than preformatted tags\n // we just look for the appropriate close tag\n if (!this._disabled.php && !this._excluded.php && peek1 === '?') {\n resulting_string = resulting_string ||\n this.__patterns.php.read();\n }\n if (!this._disabled.erb && !this._excluded.erb && peek1 === '%') {\n resulting_string = resulting_string ||\n this.__patterns.erb.read();\n }\n } else if (c === '{') {\n if (!this._disabled.handlebars && !this._excluded.handlebars) {\n resulting_string = resulting_string ||\n this.__patterns.handlebars_comment.read();\n resulting_string = resulting_string ||\n this.__patterns.handlebars_unescaped.read();\n resulting_string = resulting_string ||\n this.__patterns.handlebars.read();\n }\n if (!this._disabled.django) {\n // django coflicts with handlebars a bit.\n if (!this._excluded.django && !this._excluded.handlebars) {\n resulting_string = resulting_string ||\n this.__patterns.django_value.read();\n }\n if (!this._excluded.django) {\n resulting_string = resulting_string ||\n this.__patterns.django_comment.read();\n resulting_string = resulting_string ||\n this.__patterns.django.read();\n }\n }\n if (!this._disabled.smarty) {\n // smarty cannot be enabled with django or handlebars enabled\n if (this._disabled.django && this._disabled.handlebars) {\n resulting_string = resulting_string ||\n this.__patterns.smarty_comment.read();\n resulting_string = resulting_string ||\n this.__patterns.smarty_literal.read();\n resulting_string = resulting_string ||\n this.__patterns.smarty.read();\n }\n }\n }\n return resulting_string;\n};\n\n\nmodule.exports.TemplatablePattern = TemplatablePattern;\n\n\n/***/ })\n/******/ \t]);\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \t\tif (cachedModule !== undefined) {\n/******/ \t\t\treturn cachedModule.exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t\n/******/ \t// startup\n/******/ \t// Load entry module and return exports\n/******/ \t// This entry module is referenced by other modules so it can't be inlined\n/******/ \tvar __webpack_exports__ = __webpack_require__(0);\n/******/ \tlegacy_beautify_js = __webpack_exports__;\n/******/ \t\n/******/ })()\n;\nvar js_beautify = legacy_beautify_js;\n/* Footer */\nif (typeof define === \"function\" && define.amd) {\n // Add support for AMD ( https://github.com/amdjs/amdjs-api/wiki/AMD#defineamd-property- )\n define([], function() {\n return { js_beautify: js_beautify };\n });\n} else if (typeof exports !== \"undefined\") {\n // Add support for CommonJS. Just put this file somewhere on your require.paths\n // and you will be able to `var js_beautify = require(\"beautify\").js_beautify`.\n exports.js_beautify = js_beautify;\n} else if (typeof window !== \"undefined\") {\n // If we're running a web page and don't have either of the above, add our one global\n window.js_beautify = js_beautify;\n} else if (typeof global !== \"undefined\") {\n // If we don't even have window, try global.\n global.js_beautify = js_beautify;\n}\n\n}());\n\n"],"names":["__webpack_modules__","__webpack_module_cache__","__webpack_exports__","module","__unused_webpack_exports","__webpack_require__","Beautifier","Options","exports","js_source_text","options","beautify","defaultOptions","Output","Token","acorn","Tokenizer","line_starters","positionable_operators","TOKEN","in_array","what","arr","indexOf","reserved_word","token","word","type","RESERVED","text","reserved_array","words","special_words","OPERATOR_POSITION","list","result","x","length","replace","generateMapFromStrings","OPERATOR_POSITION_BEFORE_OR_PRESERVE","before_newline","preserve_newline","MODE","remove_redundant_indentation","output","frame","multiline_frame","mode","remove_indent","start_line_index","is_array","is_expression","source_text","_source_text","_output","_tokens","_last_last_text","_flags","_previous_flags","_flag_store","_options","prototype","create_flags","flags_base","next_indent_level","indentation_level","this","just_added_newline","line_indent_level","parent","last_token","START_BLOCK","last_word","declaration_statement","declaration_assignment","inline_frame","if_block","else_block","class_start_block","do_block","do_while","import_block","in_case_statement","in_case","case_body","case_block","alignment","get_line_number","ternary_depth","_reset","baseIndentString","match","raw","test_output_raw","set_mode","tokenizer","tokenize","disabled","eol","lineBreak","test","current_token","next","handle_token","get_code","preserve_statement_flags","START_EXPR","handle_start_expr","END_EXPR","handle_end_expr","handle_start_block","END_BLOCK","handle_end_block","WORD","handle_word","SEMICOLON","handle_semicolon","STRING","handle_string","EQUALS","handle_equals","OPERATOR","handle_operator","COMMA","handle_comma","BLOCK_COMMENT","handle_block_comment","COMMENT","handle_comment","DOT","handle_dot","EOF","handle_eof","UNKNOWN","handle_unknown","handle_whitespace_and_comments","newlines","keep_whitespace","keep_array_indentation","comments_before","comment_token","i","print_newline","max_preserve_newlines","preserve_newlines","j","newline_restricted_tokens","allow_wrap_or_preserved_newline","force_linewrap","undefined","shouldPreserveOrForce","shouldPrintOperatorNewline","operator_position","wrap_line_length","set_wrap_point","force_newline","next_token","peek","restore_mode","add_new_line","print_token_line_indentation","current_line","set_indent","push","whitespace_before","space_before_token","print_token","add_raw_token","comma_first","previous","previous_line","last","popped","pop","is_empty","trim","add_token","non_breaking_space","previous_token_wrapped","indent","deindent","start_of_object_property","start_of_statement","start","next_mode","space_in_paren","space_before_conditional","peek_back_two","space_after_named_function","peek_back_three","space_after_anon_function","space_in_empty_paren","second_token","empty_braces","empty_anonymous_function","brace_preserve_inline","index","check_token","opened","brace_style","jslint_happy","just_added_blankline","prefix","startsWith","isGeneratorAsterisk","isUnary","space_before","space_after","in_ternary","isColon","isTernaryColon","isOtherColon","after_newline","new_line_needed","directives","preserve","newline","print_block_commment","lines","s","out","idx","allLineBreaks","substring","split_linebreaks","javadoc","starless","lastIndent","lastIndentLength","c","charAt","all_lines_start_with","slice","line","len","each_line_matches_indent","break_chained_methods","unindent_chained_methods","OutputLine","__parent","__character_count","__indent_count","__alignment_count","__wrap_point_index","__wrap_point_character_count","__wrap_point_indent_count","__wrap_point_alignment_count","__items","IndentStringCache","__cache","__indent_size","indent_size","__indent_string","indent_char","indent_with_tabs","Array","join","indent_level","__base_string","__base_string_length","__indent_cache","_end_with_newline","end_with_newline","indent_empty_lines","__lines","next_line","__add_outputline","clone_empty","item","has_match","pattern","lastCheckedOutput","get_indent_size","_set_wrap_point","_should_wrap","_allow_wrap","splice","last_newline_index","lastIndexOf","_remove_indent","_remove_wrap_indent","toString","get_indent_string","column","__ensure_cache","__add_column","Math","floor","last_item","sweet_code","printable_token","__add_space_before_token","output_length","eat_newlines","ensure_empty_line_above","starts_with","ends_with","potentialEmptyLine","closed","__unused_webpack_module","nonASCIIidentifierStartChars","nonASCIIidentifierChars","identifierStart","identifier","RegExp","identifierMatch","source","BaseOptions","validPositionValues","call","raw_brace_style","raw_options","braces_on_own_line","brace_style_split","_get_selection_list","bs","_get_boolean","unescape_strings","e4x","_get_selection","merge_child_field","_mergeOpts","_get_characters","_get_number","templating","allOptions","childFieldName","name","finalOpts","_normalizeOpts","key","convertedOpts","_get_array","default_value","option_value","concat","split","parseInt","isNaN","selection_list","Error","_is_valid_selection","some","normalizeOpts","mergeOpts","InputScanner","BaseTokenizer","BASETOKEN","Directives","Pattern","TemplatablePattern","START","RAW","directives_core","number_pattern","digit","dot_pattern","punct","in_html_comment","punct_pattern","reserved_words","reserved_word_pattern","input_string","_patterns","whitespace","matching","pattern_reader","_input","templatable","read_options","__patterns","template","starting_with","number","comment","until","block_comment","until_after","html_comment_start","html_comment_end","include","shebang","xml","single_quote","double_quote","template_text","template_expression","_is_comment","_is_opening","_is_closing","open_token","_get_next_token","previous_token","_readWhitespace","_create_token","_read_non_javascript","_read_string","_read_pair","_read_word","_read_singles","_read_comment","_read_regexp","_read_xml","_read_punctuation","resulting_string","read","d","_is_first_token","sharp","hasNext","testChar","back","get_directives","ignore","readIgnored","has_char_escapes","_read_string_recursive","escaped","input_scan","matched","String","fromCharCode","unescape_string","_allow_regexp_or_xml","esc","in_char_class","xmlStr","read_match","rootTag","isCurlyRoot","depth","isEndTag","tagName","delimiter","allow_unescaped_newlines","start_sub","current_char","regexp_has_sticky","hasOwnProperty","__input","__input_length","__position","restart","val","__match","lastIndex","pattern_match","exec","sticky","starting_pattern","until_pattern","readUntil","match_index","readUntilAfter","get_regexp","match_from","flags","get_literal_regexp","literal_string","peekUntilAfter","lookBack","testVal","toLowerCase","TokenStream","WhitespacePattern","__tokens","current","open_stack","comments","add","isEmpty","newline_count","whitespace_before_token","parent_token","__tokens_length","__parent_token","input_scanner","_line_regexp","__set_whitespace_patterns","whitespace_chars","newline_chars","_match_pattern","_newline_regexp","matches","__split","_create","_update","regexp","start_index","next_match","_starting_pattern","_until_pattern","_until_after","start_block_pattern","end_block_pattern","__directives_block_pattern","__directive_pattern","__directives_end_ignore_pattern","directive_match","input","template_names","django","erb","handlebars","php","smarty","angular","__template_pattern","_disabled","Object","assign","_excluded","handlebars_comment","handlebars_unescaped","django_value","django_comment","smarty_comment","smarty_literal","__set_templated_pattern","disable","language","exclude","_read_template","items","peek1","moduleId","cachedModule","js_beautify","define","amd","window","global"],"mappings":"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"}
\ No newline at end of file
diff --git a/lib/editor/tiny/plugins/html/amd/build/codemirror-lazy.min.js b/lib/editor/tiny/plugins/html/amd/build/codemirror-lazy.min.js
index aa5651f943b..dd164dee308 100644
--- a/lib/editor/tiny/plugins/html/amd/build/codemirror-lazy.min.js
+++ b/lib/editor/tiny/plugins/html/amd/build/codemirror-lazy.min.js
@@ -1,3 +1,3 @@
-define("tiny_html/codemirror-lazy",["exports"],(function(_exports){Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.lang=_exports.basicSetup=_exports.EditorView=_exports.EditorState=void 0;class Text{lineAt(pos){if(pos<0||pos>this.length)throw new RangeError("Invalid position ".concat(pos," in document of length ").concat(this.length));return this.lineInner(pos,!1,1,0)}line(n){if(n<1||n>this.lines)throw new RangeError("Invalid line number ".concat(n," in ").concat(this.lines,"-line document"));return this.lineInner(n,!0,1,0)}replace(from,to,text){[from,to]=clip(this,from,to);let parts=[];return this.decompose(0,from,parts,2),text.length&&text.decompose(0,text.length,parts,3),this.decompose(to,this.length,parts,1),TextNode.from(parts,this.length-(to-from)+text.length)}append(other){return this.replace(this.length,this.length,other)}slice(from){let to=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.length;[from,to]=clip(this,from,to);let parts=[];return this.decompose(from,to,parts,0),TextNode.from(parts,to-from)}eq(other){if(other==this)return!0;if(other.length!=this.length||other.lines!=this.lines)return!1;let start=this.scanIdentical(other,1),end=this.length-this.scanIdentical(other,-1),a=new RawTextCursor(this),b=new RawTextCursor(other);for(let skip=start,pos=start;;){if(a.next(skip),b.next(skip),skip=0,a.lineBreak!=b.lineBreak||a.done!=b.done||a.value!=b.value)return!1;if(pos+=a.value.length,a.done||pos>=end)return!0}}iter(){return new RawTextCursor(this,arguments.length>0&&void 0!==arguments[0]?arguments[0]:1)}iterRange(from){let to=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.length;return new PartialTextCursor(this,from,to)}iterLines(from,to){let inner;if(null==from)inner=this.iter();else{null==to&&(to=this.lines+1);let start=this.line(from).from;inner=this.iterRange(start,Math.max(start,to==this.lines+1?this.length:to<=1?0:this.line(to-1).to))}return new LineCursor(inner)}toString(){return this.sliceString(0)}toJSON(){let lines=[];return this.flatten(lines),lines}constructor(){}static of(text){if(0==text.length)throw new RangeError("A document must have at least one line");return 1!=text.length||text[0]?text.length<=32?new TextLeaf(text):TextNode.from(TextLeaf.split(text,[])):Text.empty}}class TextLeaf extends Text{constructor(text){let length=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(text){let length=-1;for(let line of text)length+=line.length+1;return length}(text);super(),this.text=text,this.length=length}get lines(){return this.text.length}get children(){return null}lineInner(target,isLine,line,offset){for(let i=0;;i++){let string=this.text[i],end=offset+string.length;if((isLine?line:end)>=target)return new Line(offset,end,line,string);offset=end+1,line++}}decompose(from,to,target,open){let text=from<=0&&to>=this.length?this:new TextLeaf(sliceText(this.text,from,to),Math.min(to,this.length)-Math.max(0,from));if(1&open){let prev=target.pop(),joined=appendText(text.text,prev.text.slice(),0,text.length);if(joined.length<=32)target.push(new TextLeaf(joined,prev.length+text.length));else{let mid=joined.length>>1;target.push(new TextLeaf(joined.slice(0,mid)),new TextLeaf(joined.slice(mid)))}}else target.push(text)}replace(from,to,text){if(!(text instanceof TextLeaf))return super.replace(from,to,text);[from,to]=clip(this,from,to);let lines=appendText(this.text,appendText(text.text,sliceText(this.text,0,from)),to),newLen=this.length+text.length-(to-from);return lines.length<=32?new TextLeaf(lines,newLen):TextNode.from(TextLeaf.split(lines,[]),newLen)}sliceString(from){let to=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.length,lineSep=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"\n";[from,to]=clip(this,from,to);let result="";for(let pos=0,i=0;pos<=to&&ifrom&&i&&(result+=lineSep),frompos&&(result+=line.slice(Math.max(0,from-pos),to-pos)),pos=end+1}return result}flatten(target){for(let line of this.text)target.push(line)}scanIdentical(){return 0}static split(text,target){let part=[],len=-1;for(let line of text)part.push(line),len+=line.length+1,32==part.length&&(target.push(new TextLeaf(part,len)),part=[],len=-1);return len>-1&&target.push(new TextLeaf(part,len)),target}}class TextNode extends Text{constructor(children,length){super(),this.children=children,this.length=length,this.lines=0;for(let child of children)this.lines+=child.lines}lineInner(target,isLine,line,offset){for(let i=0;;i++){let child=this.children[i],end=offset+child.length,endLine=line+child.lines-1;if((isLine?endLine:end)>=target)return child.lineInner(target,isLine,line,offset);offset=end+1,line=endLine+1}}decompose(from,to,target,open){for(let i=0,pos=0;pos<=to&&i=pos){let childOpen=open&((pos<=from?1:0)|(end>=to?2:0));pos>=from&&end<=to&&!childOpen?target.push(child):child.decompose(from-pos,to-pos,target,childOpen)}pos=end+1}}replace(from,to,text){if([from,to]=clip(this,from,to),text.lines=pos&&to<=end){let updated=child.replace(from-pos,to-pos,text),totalLines=this.lines-child.lines+updated.lines;if(updated.lines>4&&updated.lines>totalLines>>6){let copy=this.children.slice();return copy[i]=updated,new TextNode(copy,this.length-(to-from)+text.length)}return super.replace(pos,end,updated)}pos=end+1}return super.replace(from,to,text)}sliceString(from){let to=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.length,lineSep=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"\n";[from,to]=clip(this,from,to);let result="";for(let i=0,pos=0;ifrom&&i&&(result+=lineSep),frompos&&(result+=child.sliceString(from-pos,to-pos,lineSep)),pos=end+1}return result}flatten(target){for(let child of this.children)child.flatten(target)}scanIdentical(other,dir){if(!(other instanceof TextNode))return 0;let length=0,[iA,iB,eA,eB]=dir>0?[0,0,this.children.length,other.children.length]:[this.children.length-1,other.children.length-1,-1,-1];for(;;iA+=dir,iB+=dir){if(iA==eA||iB==eB)return length;let chA=this.children[iA],chB=other.children[iB];if(chA!=chB)return length+chA.scanIdentical(chB,dir);length+=chA.length+1}}static from(children){let length=arguments.length>1&&void 0!==arguments[1]?arguments[1]:children.reduce(((l,ch)=>l+ch.length+1),-1),lines=0;for(let ch of children)lines+=ch.lines;if(lines<32){let flat=[];for(let ch of children)ch.flatten(flat);return new TextLeaf(flat,length)}let chunk=Math.max(32,lines>>5),maxChunk=chunk<<1,minChunk=chunk>>1,chunked=[],currentLines=0,currentLen=-1,currentChunk=[];function add(child){let last;if(child.lines>maxChunk&&child instanceof TextNode)for(let node of child.children)add(node);else child.lines>minChunk&&(currentLines>minChunk||!currentLines)?(flush(),chunked.push(child)):child instanceof TextLeaf&¤tLines&&(last=currentChunk[currentChunk.length-1])instanceof TextLeaf&&child.lines+last.lines<=32?(currentLines+=child.lines,currentLen+=child.length+1,currentChunk[currentChunk.length-1]=new TextLeaf(last.text.concat(child.text),last.length+1+child.length)):(currentLines+child.lines>chunk&&flush(),currentLines+=child.lines,currentLen+=child.length+1,currentChunk.push(child))}function flush(){0!=currentLines&&(chunked.push(1==currentChunk.length?currentChunk[0]:TextNode.from(currentChunk,currentLen)),currentLen=-1,currentLines=currentChunk.length=0)}for(let child of children)add(child);return flush(),1==chunked.length?chunked[0]:new TextNode(chunked,length)}}function appendText(text,target){let from=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,to=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1e9;for(let pos=0,i=0,first=!0;i=from&&(end>to&&(line=line.slice(0,to-pos)),pos1&&void 0!==arguments[1]?arguments[1]:1;this.dir=dir,this.done=!1,this.lineBreak=!1,this.value="",this.nodes=[text],this.offsets=[dir>0?1:(text instanceof TextLeaf?text.text.length:text.children.length)<<1]}nextInner(skip,dir){for(this.done=this.lineBreak=!1;;){let last=this.nodes.length-1,top=this.nodes[last],offsetValue=this.offsets[last],offset=offsetValue>>1,size=top instanceof TextLeaf?top.text.length:top.children.length;if(offset==(dir>0?size:0)){if(0==last)return this.done=!0,this.value="",this;dir>0&&this.offsets[last-1]++,this.nodes.pop(),this.offsets.pop()}else if((1&offsetValue)==(dir>0?0:1)){if(this.offsets[last]+=dir,0==skip)return this.lineBreak=!0,this.value="\n",this;skip--}else if(top instanceof TextLeaf){let next=top.text[offset+(dir<0?-1:0)];if(this.offsets[last]+=dir,next.length>Math.max(0,skip))return this.value=0==skip?next:dir>0?next.slice(skip):next.slice(0,next.length-skip),this;skip-=next.length}else{let next=top.children[offset+(dir<0?-1:0)];skip>next.length?(skip-=next.length,this.offsets[last]+=dir):(dir<0&&this.offsets[last]--,this.nodes.push(next),this.offsets.push(dir>0?1:(next instanceof TextLeaf?next.text.length:next.children.length)<<1))}}}next(){let skip=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return skip<0&&(this.nextInner(-skip,-this.dir),skip=this.value.length),this.nextInner(skip,this.dir)}}class PartialTextCursor{constructor(text,start,end){this.value="",this.done=!1,this.cursor=new RawTextCursor(text,start>end?-1:1),this.pos=start>end?text.length:0,this.from=Math.min(start,end),this.to=Math.max(start,end)}nextInner(skip,dir){if(dir<0?this.pos<=this.from:this.pos>=this.to)return this.value="",this.done=!0,this;skip+=Math.max(0,dir<0?this.pos-this.to:this.from-this.pos);let limit=dir<0?this.pos-this.from:this.to-this.pos;skip>limit&&(skip=limit),limit-=skip;let{value:value}=this.cursor.next(skip);return this.pos+=(value.length+skip)*dir,this.value=value.length<=limit?value:dir<0?value.slice(value.length-limit):value.slice(0,limit),this.done=!this.value,this}next(){let skip=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return skip<0?skip=Math.max(skip,this.from-this.pos):skip>0&&(skip=Math.min(skip,this.to-this.pos)),this.nextInner(skip,this.cursor.dir)}get lineBreak(){return this.cursor.lineBreak&&""!=this.value}}class LineCursor{constructor(inner){this.inner=inner,this.afterBreak=!0,this.value="",this.done=!1}next(){let skip=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,{done:done,lineBreak:lineBreak,value:value}=this.inner.next(skip);return done&&this.afterBreak?(this.value="",this.afterBreak=!1):done?(this.done=!0,this.value=""):lineBreak?this.afterBreak?this.value="":(this.afterBreak=!0,this.next()):(this.value=value,this.afterBreak=!1),this}get lineBreak(){return!1}}"undefined"!=typeof Symbol&&(Text.prototype[Symbol.iterator]=function(){return this.iter()},RawTextCursor.prototype[Symbol.iterator]=PartialTextCursor.prototype[Symbol.iterator]=LineCursor.prototype[Symbol.iterator]=function(){return this});class Line{constructor(from,to,number,text){this.from=from,this.to=to,this.number=number,this.text=text}get length(){return this.to-this.from}}function clip(text,from,to){return[from=Math.max(0,Math.min(text.length,from)),Math.max(from,Math.min(text.length,to))]}let extend="lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,3b,f,,w,1j,,,,4,8,4,,3,7,a,2,t,,1m,,,,2,4,8,,9,,a,2,q,,2,2,1l,,4,2,4,2,2,3,3,,u,2,3,,b,2,1l,,4,5,,2,4,,k,2,m,6,,,1m,,,2,,4,8,,7,3,a,2,u,,1n,,,,c,,9,,14,,3,,1l,3,5,3,,4,7,2,b,2,t,,1m,,2,,2,,3,,5,2,7,2,b,2,s,2,1l,2,,,2,4,8,,9,,a,2,t,,20,,4,,2,3,,,8,,29,,2,7,c,8,2q,,2,9,b,6,22,2,r,,,,,,1j,e,,5,,2,5,b,,10,9,,2u,4,,6,,2,2,2,p,2,4,3,g,4,d,,2,2,6,,f,,jj,3,qa,3,t,3,t,2,u,2,1s,2,,7,8,,2,b,9,,19,3,3b,2,y,,3a,3,4,2,9,,6,3,63,2,2,,1m,,,7,,,,,2,8,6,a,2,,1c,h,1r,4,1c,7,,,5,,14,9,c,2,w,4,2,2,,3,1k,,,2,3,,,3,1m,8,2,2,48,3,,d,,7,4,,6,,3,2,5i,1m,,5,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,p,2,5,,47,2,q,i,d,,12,8,p,b,1a,3,1c,,2,4,2,2,13,,1v,6,2,2,2,2,c,,8,,1b,,1f,,,3,2,2,5,2,,,16,2,8,,6m,,2,,4,,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,ar,2,49,b,4w,,1i,f,1k,3,1d,4,2,2,1x,3,10,5,,8,1q,,c,2,1g,9,a,4,2,,2n,3,2,,,2,6,,4g,,3,8,l,2,1l,2,,,,,m,,e,7,3,5,5f,8,2,3,,,n,,29,,2,6,,,2,,,2,,2,6j,,2,4,6,2,,2,r,2,2d,8,2,,,2,2y,,,,2,6,,,2t,3,2,4,,5,77,9,,2,6t,,a,2,,,4,,40,4,2,2,4,,w,a,14,6,2,4,8,,9,6,2,3,1a,d,,2,ba,7,,6,,,2a,m,2,7,,2,,2,3e,6,3,,,2,,7,,,20,2,3,,,,9n,2,f0b,5,1n,7,t4,,1r,4,29,,f5k,2,43q,,,3,4,5,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,79,7,c5,4,15s,7,31,7,240,5,gx7k,2o,3k,6o".split(",").map((s=>s?parseInt(s,36):1));for(let i=1;icode)return extend[i-1]<=code;return!1}function isRegionalIndicator(code){return code>=127462&&code<=127487}function findClusterBreak(str,pos){let forward=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],includeExtending=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];return(forward?nextClusterBreak:prevClusterBreak)(str,pos,includeExtending)}function nextClusterBreak(str,pos,includeExtending){if(pos==str.length)return pos;pos&&surrogateLow(str.charCodeAt(pos))&&surrogateHigh(str.charCodeAt(pos-1))&&pos--;let prev=codePointAt(str,pos);for(pos+=codePointSize(prev);pos=0&&isRegionalIndicator(codePointAt(str,i));)countBefore++,i-=2;if(countBefore%2==0)break;pos+=2}}}return pos}function prevClusterBreak(str,pos,includeExtending){for(;pos>0;){let found=nextClusterBreak(str,pos-2,includeExtending);if(found=56320&&ch<57344}function surrogateHigh(ch){return ch>=55296&&ch<56320}function codePointAt(str,pos){let code0=str.charCodeAt(pos);if(!surrogateHigh(code0)||pos+1==str.length)return code0;let code1=str.charCodeAt(pos+1);return surrogateLow(code1)?code1-56320+(code0-55296<<10)+65536:code0}function fromCodePoint(code){return code<=65535?String.fromCharCode(code):(code-=65536,String.fromCharCode(55296+(code>>10),56320+(1023&code)))}function codePointSize(code){return code<65536?1:2}const DefaultSplit=/\r\n?|\n/;var MapMode=function(MapMode){return MapMode[MapMode.Simple=0]="Simple",MapMode[MapMode.TrackDel=1]="TrackDel",MapMode[MapMode.TrackBefore=2]="TrackBefore",MapMode[MapMode.TrackAfter=3]="TrackAfter",MapMode}(MapMode||(MapMode={}));class ChangeDesc{constructor(sections){this.sections=sections}get length(){let result=0;for(let i=0;i1&&void 0!==arguments[1]&&arguments[1])}get invertedDesc(){let sections=[];for(let i=0;i1&&void 0!==arguments[1]&&arguments[1];return other.empty?this:mapSet(this,other,before)}mapPos(pos){let assoc=arguments.length>1&&void 0!==arguments[1]?arguments[1]:-1,mode=arguments.length>2&&void 0!==arguments[2]?arguments[2]:MapMode.Simple,posA=0,posB=0;for(let i=0;ipos)return posB+(pos-posA);posB+=len}else{if(mode!=MapMode.Simple&&endA>=pos&&(mode==MapMode.TrackDel&&posApos||mode==MapMode.TrackBefore&&posApos))return null;if(endA>pos||endA==pos&&assoc<0&&!len)return pos==posA||assoc<0?posB:posB+ins;posB+=ins}posA=endA}if(pos>posA)throw new RangeError("Position ".concat(pos," is out of range for changeset of length ").concat(posA));return posB}touchesRange(from){let to=arguments.length>1&&void 0!==arguments[1]?arguments[1]:from;for(let i=0,pos=0;i=0&&pos<=to&&end>=from)return!(posto)||"cover";pos=end}return!1}toString(){let result="";for(let i=0;i=0?":"+ins:"")}return result}toJSON(){return this.sections}static fromJSON(json){if(!Array.isArray(json)||json.length%2||json.some((a=>"number"!=typeof a)))throw new RangeError("Invalid JSON representation of ChangeDesc");return new ChangeDesc(json)}static create(sections){return new ChangeDesc(sections)}}class ChangeSet extends ChangeDesc{constructor(sections,inserted){super(sections),this.inserted=inserted}apply(doc){if(this.length!=doc.length)throw new RangeError("Applying change set to a document with the wrong length");return iterChanges(this,((fromA,toA,fromB,_toB,text)=>doc=doc.replace(fromB,fromB+(toA-fromA),text)),!1),doc}mapDesc(other){return mapSet(this,other,arguments.length>1&&void 0!==arguments[1]&&arguments[1],!0)}invert(doc){let sections=this.sections.slice(),inserted=[];for(let i=0,pos=0;i=0){sections[i]=ins,sections[i+1]=len;let index=i>>1;for(;inserted.length1&&void 0!==arguments[1]&&arguments[1];return other.empty?this:mapSet(this,other,before,!0)}iterChanges(f){iterChanges(this,f,arguments.length>1&&void 0!==arguments[1]&&arguments[1])}get desc(){return ChangeDesc.create(this.sections)}filter(ranges){let resultSections=[],resultInserted=[],filteredSections=[],iter=new SectionIter(this);done:for(let i=0,pos=0;;){let next=i==ranges.length?1e9:ranges[i++];for(;pos0&&addInsert(resultInserted,resultSections,iter.text),iter.forward(len),pos+=len}let end=ranges[i++];for(;pos>1].toJSON()))}return parts}static of(changes,length,lineSep){let sections=[],inserted=[],pos=0,total=null;function flush(){let force=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(!force&&!sections.length)return;posto||from<0||to>length)throw new RangeError("Invalid change range ".concat(from," to ").concat(to," (in doc of length ").concat(length,")"));let insText=insert?"string"==typeof insert?Text.of(insert.split(lineSep||DefaultSplit)):insert:Text.empty,insLen=insText.length;if(from==to&&0==insLen)return;frompos&&addSection(sections,from-pos,-1),addSection(sections,to-from,insLen),addInsert(inserted,sections,insText),pos=to}}(changes),flush(!total),total}static empty(length){return new ChangeSet(length?[length,-1]:[],[])}static fromJSON(json){if(!Array.isArray(json))throw new RangeError("Invalid JSON representation of ChangeSet");let sections=[],inserted=[];for(let i=0;ii&&"string"!=typeof e)))throw new RangeError("Invalid JSON representation of ChangeSet");if(1==part.length)sections.push(part[0],0);else{for(;inserted.length3&&void 0!==arguments[3]&&arguments[3];if(0==len&&ins<=0)return;let last=sections.length-2;last>=0&&ins<=0&&ins==sections[last+1]?sections[last]+=len:0==len&&0==sections[last]?sections[last+1]+=ins:forceJoin?(sections[last]+=len,sections[last+1]+=ins):sections.push(len,ins)}function addInsert(values,sections,value){if(0==value.length)return;let index=sections.length-2>>1;if(index>1])),!(individual||i==desc.sections.length||desc.sections[i+1]<0);)len=desc.sections[i++],ins=desc.sections[i++];f(posA,endA,posB,endB,text),posA=endA,posB=endB}}}function mapSet(setA,setB,before){let mkSet=arguments.length>3&&void 0!==arguments[3]&&arguments[3],sections=[],insert=mkSet?[]:null,a=new SectionIter(setA),b=new SectionIter(setB);for(let inserted=-1;;)if(-1==a.ins&&-1==b.ins){let len=Math.min(a.len,b.len);addSection(sections,len,-1),a.forward(len),b.forward(len)}else if(b.ins>=0&&(a.ins<0||inserted==a.i||0==a.off&&(b.len=0&&inserted=0)){if(a.done&&b.done)return insert?ChangeSet.createSet(sections,insert):ChangeDesc.create(sections);throw new Error("Mismatched change set lengths")}{let len=0,left=a.len;for(;left;)if(-1==b.ins){let piece=Math.min(left,b.len);len+=piece,left-=piece,b.forward(piece)}else{if(!(0==b.ins&&b.len2&&void 0!==arguments[2]&&arguments[2],sections=[],insert=mkSet?[]:null,a=new SectionIter(setA),b=new SectionIter(setB);for(let open=!1;;){if(a.done&&b.done)return insert?ChangeSet.createSet(sections,insert):ChangeDesc.create(sections);if(0==a.ins)addSection(sections,a.len,0,open),a.next();else if(0!=b.len||b.done){if(a.done||b.done)throw new Error("Mismatched change set lengths");{let len=Math.min(a.len2,b.len),sectionLen=sections.length;if(-1==a.ins){let insB=-1==b.ins?-1:b.off?0:b.ins;addSection(sections,len,insB,open),insert&&insB&&addInsert(insert,sections,b.text)}else-1==b.ins?(addSection(sections,a.off?0:a.len,len,open),insert&&addInsert(insert,sections,a.textBit(len))):(addSection(sections,a.off?0:a.len,b.off?0:b.ins,open),insert&&!b.off&&addInsert(insert,sections,b.text));open=(a.ins>len||b.ins>=0&&b.len>len)&&(open||sections.length>sectionLen),a.forward2(len),b.forward(len)}}else addSection(sections,0,b.ins,open),insert&&addInsert(insert,sections,b.text),b.next()}}class SectionIter{constructor(set){this.set=set,this.i=0,this.next()}next(){let{sections:sections}=this.set;this.i>1;return index>=inserted.length?Text.empty:inserted[index]}textBit(len){let{inserted:inserted}=this.set,index=this.i-2>>1;return index>=inserted.length&&!len?Text.empty:inserted[index].slice(this.off,null==len?void 0:this.off+len)}forward(len){len==this.len?this.next():(this.len-=len,this.off+=len)}forward2(len){-1==this.ins?this.forward(len):len==this.ins?this.next():(this.ins-=len,this.off+=len)}}class SelectionRange{constructor(from,to,flags){this.from=from,this.to=to,this.flags=flags}get anchor(){return 32&this.flags?this.to:this.from}get head(){return 32&this.flags?this.from:this.to}get empty(){return this.from==this.to}get assoc(){return 8&this.flags?-1:16&this.flags?1:0}get bidiLevel(){let level=7&this.flags;return 7==level?null:level}get goalColumn(){let value=this.flags>>6;return 16777215==value?void 0:value}map(change){let from,to,assoc=arguments.length>1&&void 0!==arguments[1]?arguments[1]:-1;return this.empty?from=to=change.mapPos(this.from,assoc):(from=change.mapPos(this.from,1),to=change.mapPos(this.to,-1)),from==this.from&&to==this.to?this:new SelectionRange(from,to,this.flags)}extend(from){let to=arguments.length>1&&void 0!==arguments[1]?arguments[1]:from;if(from<=this.anchor&&to>=this.anchor)return EditorSelection.range(from,to);let head=Math.abs(from-this.anchor)>Math.abs(to-this.anchor)?from:to;return EditorSelection.range(this.anchor,head)}eq(other){let includeAssoc=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return!(this.anchor!=other.anchor||this.head!=other.head||includeAssoc&&this.empty&&this.assoc!=other.assoc)}toJSON(){return{anchor:this.anchor,head:this.head}}static fromJSON(json){if(!json||"number"!=typeof json.anchor||"number"!=typeof json.head)throw new RangeError("Invalid JSON representation for SelectionRange");return EditorSelection.range(json.anchor,json.head)}static create(from,to,flags){return new SelectionRange(from,to,flags)}}class EditorSelection{constructor(ranges,mainIndex){this.ranges=ranges,this.mainIndex=mainIndex}map(change){let assoc=arguments.length>1&&void 0!==arguments[1]?arguments[1]:-1;return change.empty?this:EditorSelection.create(this.ranges.map((r=>r.map(change,assoc))),this.mainIndex)}eq(other){let includeAssoc=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(this.ranges.length!=other.ranges.length||this.mainIndex!=other.mainIndex)return!1;for(let i=0;i1&&void 0!==arguments[1])||arguments[1];return EditorSelection.create([range].concat(this.ranges),main?0:this.mainIndex+1)}replaceRange(range){let which=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.mainIndex,ranges=this.ranges.slice();return ranges[which]=range,EditorSelection.create(ranges,this.mainIndex)}toJSON(){return{ranges:this.ranges.map((r=>r.toJSON())),main:this.mainIndex}}static fromJSON(json){if(!json||!Array.isArray(json.ranges)||"number"!=typeof json.main||json.main>=json.ranges.length)throw new RangeError("Invalid JSON representation for EditorSelection");return new EditorSelection(json.ranges.map((r=>SelectionRange.fromJSON(r))),json.main)}static single(anchor){let head=arguments.length>1&&void 0!==arguments[1]?arguments[1]:anchor;return new EditorSelection([EditorSelection.range(anchor,head)],0)}static create(ranges){let mainIndex=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(0==ranges.length)throw new RangeError("A selection needs at least one range");for(let pos=0,i=0;i1&&void 0!==arguments[1]?arguments[1]:0,bidiLevel=arguments.length>2?arguments[2]:void 0,goalColumn=arguments.length>3?arguments[3]:void 0;return SelectionRange.create(pos,pos,(0==assoc?0:assoc<0?8:16)|(null==bidiLevel?7:Math.min(6,bidiLevel))|(null!=goalColumn?goalColumn:16777215)<<6)}static range(anchor,head,goalColumn,bidiLevel){let flags=(null!=goalColumn?goalColumn:16777215)<<6|(null==bidiLevel?7:Math.min(6,bidiLevel));return headanchor?8:0)|flags)}static normalized(ranges){let mainIndex=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,main=ranges[mainIndex];ranges.sort(((a,b)=>a.from-b.from)),mainIndex=ranges.indexOf(main);for(let i=1;irange.head?EditorSelection.range(to,from):EditorSelection.range(from,to))}}return new EditorSelection(ranges,mainIndex)}}function checkSelection(selection,docLength){for(let range of selection.ranges)if(range.to>docLength)throw new RangeError("Selection points outside of document")}let nextID=0;class Facet{constructor(combine,compareInput,compare,isStatic,enables){this.combine=combine,this.compareInput=compareInput,this.compare=compare,this.isStatic=isStatic,this.id=nextID++,this.default=combine([]),this.extensions="function"==typeof enables?enables(this):enables}get reader(){return this}static define(){let config=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return new Facet(config.combine||(a=>a),config.compareInput||((a,b)=>a===b),config.compare||(config.combine?(a,b)=>a===b:sameArray$1),!!config.static,config.enables)}of(value){return new FacetProvider([],this,0,value)}compute(deps,get){if(this.isStatic)throw new Error("Can't compute a static facet");return new FacetProvider(deps,this,1,get)}computeN(deps,get){if(this.isStatic)throw new Error("Can't compute a static facet");return new FacetProvider(deps,this,2,get)}from(field,get){return get||(get=x=>x),this.compute([field],(state=>get(state.field(field))))}}function sameArray$1(a,b){return a==b||a.length==b.length&&a.every(((e,i)=>e===b[i]))}class FacetProvider{constructor(dependencies,facet,type,value){this.dependencies=dependencies,this.facet=facet,this.type=type,this.value=value,this.id=nextID++}dynamicSlot(addresses){var _a;let getter=this.value,compare=this.facet.compareInput,id=this.id,idx=addresses[id]>>1,multi=2==this.type,depDoc=!1,depSel=!1,depAddrs=[];for(let dep of this.dependencies)"doc"==dep?depDoc=!0:"selection"==dep?depSel=!0:0==(1&(null!==(_a=addresses[dep.id])&&void 0!==_a?_a:1))&&depAddrs.push(addresses[dep.id]);return{create:state=>(state.values[idx]=getter(state),1),update(state,tr){if(depDoc&&tr.docChanged||depSel&&(tr.docChanged||tr.selection)||ensureAll(state,depAddrs)){let newVal=getter(state);if(multi?!compareArray(newVal,state.values[idx],compare):!compare(newVal,state.values[idx]))return state.values[idx]=newVal,1}return 0},reconfigure:(state,oldState)=>{let newVal,oldAddr=oldState.config.address[id];if(null!=oldAddr){let oldVal=getAddr(oldState,oldAddr);if(this.dependencies.every((dep=>dep instanceof Facet?oldState.facet(dep)===state.facet(dep):!(dep instanceof StateField)||oldState.field(dep,!1)==state.field(dep,!1)))||(multi?compareArray(newVal=getter(state),oldVal,compare):compare(newVal=getter(state),oldVal)))return state.values[idx]=oldVal,0}else newVal=getter(state);return state.values[idx]=newVal,1}}}}function compareArray(a,b,compare){if(a.length!=b.length)return!1;for(let i=0;iaddresses[p.id])),providerTypes=providers.map((p=>p.type)),dynamic=providerAddrs.filter((p=>!(1&p))),idx=addresses[facet.id]>>1;function get(state){let values=[];for(let i=0;ia===b),config);return config.provide&&(field.provides=config.provide(field)),field}create(state){let init=state.facet(initField).find((i=>i.field==this));return((null==init?void 0:init.create)||this.createF)(state)}slot(addresses){let idx=addresses[this.id]>>1;return{create:state=>(state.values[idx]=this.create(state),1),update:(state,tr)=>{let oldVal=state.values[idx],value=this.updateF(oldVal,tr);return this.compareF(oldVal,value)?0:(state.values[idx]=value,1)},reconfigure:(state,oldState)=>null!=oldState.config.address[this.id]?(state.values[idx]=oldState.field(this),0):(state.values[idx]=this.create(state),1)}}init(create){return[this,initField.of({field:this,create:create})]}get extension(){return this}}const Prec__lowest=4,Prec__low=3,Prec__default=2,Prec__high=1;function prec(value){return ext=>new PrecExtension(ext,value)}const Prec={highest:prec(0),high:prec(Prec__high),default:prec(Prec__default),low:prec(Prec__low),lowest:prec(Prec__lowest)};class PrecExtension{constructor(inner,prec){this.inner=inner,this.prec=prec}}class Compartment{of(ext){return new CompartmentInstance(this,ext)}reconfigure(content){return Compartment.reconfigure.of({compartment:this,extension:content})}get(state){return state.config.compartments.get(this)}}class CompartmentInstance{constructor(compartment,inner){this.compartment=compartment,this.inner=inner}}class Configuration{constructor(base,compartments,dynamicSlots,address,staticValues,facets){for(this.base=base,this.compartments=compartments,this.dynamicSlots=dynamicSlots,this.address=address,this.staticValues=staticValues,this.facets=facets,this.statusTemplate=[];this.statusTemplate.length>1]}static resolve(base,compartments,oldState){let fields=[],facets=Object.create(null),newCompartments=new Map;for(let ext of function(extension,compartments,newCompartments){let result=[[],[],[],[],[]],seen=new Map;function inner(ext,prec){let known=seen.get(ext);if(null!=known){if(known<=prec)return;let found=result[known].indexOf(ext);found>-1&&result[known].splice(found,1),ext instanceof CompartmentInstance&&newCompartments.delete(ext.compartment)}if(seen.set(ext,prec),Array.isArray(ext))for(let e of ext)inner(e,prec);else if(ext instanceof CompartmentInstance){if(newCompartments.has(ext.compartment))throw new RangeError("Duplicate use of compartment in extensions");let content=compartments.get(ext.compartment)||ext.inner;newCompartments.set(ext.compartment,content),inner(content,prec)}else if(ext instanceof PrecExtension)inner(ext.inner,ext.prec);else if(ext instanceof StateField)result[prec].push(ext),ext.provides&&inner(ext.provides,prec);else if(ext instanceof FacetProvider)result[prec].push(ext),ext.facet.extensions&&inner(ext.facet.extensions,Prec__default);else{let content=ext.extension;if(!content)throw new Error("Unrecognized extension value in extension set (".concat(ext,"). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks."));inner(content,prec)}}return inner(extension,Prec__default),result.reduce(((a,b)=>a.concat(b)))}(base,compartments,newCompartments))ext instanceof StateField?fields.push(ext):(facets[ext.facet.id]||(facets[ext.facet.id]=[])).push(ext);let address=Object.create(null),staticValues=[],dynamicSlots=[];for(let field of fields)address[field.id]=dynamicSlots.length<<1,dynamicSlots.push((a=>field.slot(a)));let oldFacets=null==oldState?void 0:oldState.config.facets;for(let id in facets){let providers=facets[id],facet=providers[0].facet,oldProviders=oldFacets&&oldFacets[id]||[];if(providers.every((p=>0==p.type)))if(address[facet.id]=staticValues.length<<1|1,sameArray$1(oldProviders,providers))staticValues.push(oldState.facet(facet));else{let value=facet.combine(providers.map((p=>p.value)));staticValues.push(oldState&&facet.compare(value,oldState.facet(facet))?oldState.facet(facet):value)}else{for(let p of providers)0==p.type?(address[p.id]=staticValues.length<<1|1,staticValues.push(p.value)):(address[p.id]=dynamicSlots.length<<1,dynamicSlots.push((a=>p.dynamicSlot(a))));address[facet.id]=dynamicSlots.length<<1,dynamicSlots.push((a=>dynamicFacetSlot(a,facet,providers)))}}let dynamic=dynamicSlots.map((f=>f(address)));return new Configuration(base,newCompartments,dynamic,address,staticValues,facets)}}function ensureAddr(state,addr){if(1&addr)return 2;let idx=addr>>1,status=state.status[idx];if(4==status)throw new Error("Cyclic dependency between fields and/or facets");if(2&status)return status;state.status[idx]=4;let changed=state.computeSlot(state,state.config.dynamicSlots[idx]);return state.status[idx]=2|changed}function getAddr(state,addr){return 1&addr?state.config.staticValues[addr>>1]:state.values[addr>>1]}const languageData=Facet.define(),allowMultipleSelections=Facet.define({combine:values=>values.some((v=>v)),static:!0}),lineSeparator=Facet.define({combine:values=>values.length?values[0]:void 0,static:!0}),changeFilter=Facet.define(),transactionFilter=Facet.define(),transactionExtender=Facet.define(),readOnly=Facet.define({combine:values=>!!values.length&&values[0]});class Annotation{constructor(type,value){this.type=type,this.value=value}static define(){return new AnnotationType}}class AnnotationType{of(value){return new Annotation(this,value)}}class StateEffectType{constructor(map){this.map=map}of(value){return new StateEffect(this,value)}}class StateEffect{constructor(type,value){this.type=type,this.value=value}map(mapping){let mapped=this.type.map(this.value,mapping);return void 0===mapped?void 0:mapped==this.value?this:new StateEffect(this.type,mapped)}is(type){return this.type==type}static define(){return new StateEffectType((arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}).map||(v=>v))}static mapEffects(effects,mapping){if(!effects.length)return effects;let result=[];for(let effect of effects){let mapped=effect.map(mapping);mapped&&result.push(mapped)}return result}}StateEffect.reconfigure=StateEffect.define(),StateEffect.appendConfig=StateEffect.define();class Transaction{constructor(startState,changes,selection,effects,annotations,scrollIntoView){this.startState=startState,this.changes=changes,this.selection=selection,this.effects=effects,this.annotations=annotations,this.scrollIntoView=scrollIntoView,this._doc=null,this._state=null,selection&&checkSelection(selection,changes.newLength),annotations.some((a=>a.type==Transaction.time))||(this.annotations=annotations.concat(Transaction.time.of(Date.now())))}static create(startState,changes,selection,effects,annotations,scrollIntoView){return new Transaction(startState,changes,selection,effects,annotations,scrollIntoView)}get newDoc(){return this._doc||(this._doc=this.changes.apply(this.startState.doc))}get newSelection(){return this.selection||this.startState.selection.map(this.changes)}get state(){return this._state||this.startState.applyTransaction(this),this._state}annotation(type){for(let ann of this.annotations)if(ann.type==type)return ann.value}get docChanged(){return!this.changes.empty}get reconfigured(){return this.startState.config!=this.state.config}isUserEvent(event){let e=this.annotation(Transaction.userEvent);return!(!e||!(e==event||e.length>event.length&&e.slice(0,event.length)==event&&"."==e[event.length]))}}function joinRanges(a,b){let result=[];for(let iA=0,iB=0;;){let from,to;if(iA=a[iA]))from=a[iA++],to=a[iA++];else{if(!(iB=0;i--){let extension=extenders[i](tr);extension&&Object.keys(extension).length&&(spec=mergeTransaction(spec,resolveTransactionInner(state,extension,tr.changes.newLength),!0))}return spec==tr?tr:Transaction.create(state,tr.changes,tr.selection,spec.effects,spec.annotations,spec.scrollIntoView)}(filter?function(tr){let state=tr.startState,result=!0;for(let filter of state.facet(changeFilter)){let value=filter(tr);if(!1===value){result=!1;break}Array.isArray(value)&&(result=!0===result?value:joinRanges(result,value))}if(!0!==result){let changes,back;if(!1===result)back=tr.changes.invertedDesc,changes=ChangeSet.empty(state.doc.length);else{let filtered=tr.changes.filter(result);changes=filtered.changes,back=filtered.filtered.mapDesc(filtered.changes).invertedDesc}tr=Transaction.create(state,changes,tr.selection&&tr.selection.map(back),StateEffect.mapEffects(tr.effects,back),tr.annotations,tr.scrollIntoView)}let filters=state.facet(transactionFilter);for(let i=filters.length-1;i>=0;i--){let filtered=filters[i](tr);tr=filtered instanceof Transaction?filtered:Array.isArray(filtered)&&1==filtered.length&&filtered[0]instanceof Transaction?filtered[0]:resolveTransaction(state,asArray$1(filtered),!1)}return tr}(tr):tr)}Transaction.time=Annotation.define(),Transaction.userEvent=Annotation.define(),Transaction.addToHistory=Annotation.define(),Transaction.remote=Annotation.define();const none$2=[];function asArray$1(value){return null==value?none$2:Array.isArray(value)?value:[value]}var CharCategory=function(CharCategory){return CharCategory[CharCategory.Word=0]="Word",CharCategory[CharCategory.Space=1]="Space",CharCategory[CharCategory.Other=2]="Other",CharCategory}(CharCategory||(CharCategory={}));const nonASCIISingleCaseWordChar=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/;let wordChar;try{wordChar=new RegExp("[\\p{Alphabetic}\\p{Number}_]","u")}catch(_){}function makeCategorizer(wordChars){return char=>{if(!/\S/.test(char))return CharCategory.Space;if(function(str){if(wordChar)return wordChar.test(str);for(let i=0;i""&&(ch.toUpperCase()!=ch.toLowerCase()||nonASCIISingleCaseWordChar.test(ch)))return!0}return!1}(char))return CharCategory.Word;for(let i=0;i-1)return CharCategory.Word;return CharCategory.Other}}class EditorState{constructor(config,doc,selection,values,computeSlot,tr){this.config=config,this.doc=doc,this.selection=selection,this.values=values,this.status=config.statusTemplate.slice(),this.computeSlot=computeSlot,tr&&(tr._state=this);for(let i=0;i1&&void 0!==arguments[1])||arguments[1],addr=this.config.address[field.id];if(null!=addr)return ensureAddr(this,addr),getAddr(this,addr);if(require)throw new RangeError("Field is not present in this state")}update(){for(var _len=arguments.length,specs=new Array(_len),_key=0;_key<_len;_key++)specs[_key]=arguments[_key];return resolveTransaction(this,specs,!0)}applyTransaction(tr){let startValues,conf=this.config,{base:base,compartments:compartments}=conf;for(let effect of tr.effects)effect.is(Compartment.reconfigure)?(conf&&(compartments=new Map,conf.compartments.forEach(((val,key)=>compartments.set(key,val))),conf=null),compartments.set(effect.value.compartment,effect.value.extension)):effect.is(StateEffect.reconfigure)?(conf=null,base=effect.value):effect.is(StateEffect.appendConfig)&&(conf=null,base=asArray$1(base).concat(effect.value));if(conf)startValues=tr.startState.values.slice();else{conf=Configuration.resolve(base,compartments,this),startValues=new EditorState(conf,this.doc,this.selection,conf.dynamicSlots.map((()=>null)),((state,slot)=>slot.reconfigure(state,this)),null).values}let selection=tr.startState.facet(allowMultipleSelections)?tr.newSelection:tr.newSelection.asSingle();new EditorState(conf,tr.newDoc,selection,startValues,((state,slot)=>slot.update(state,tr)),tr)}replaceSelection(text){return"string"==typeof text&&(text=this.toText(text)),this.changeByRange((range=>({changes:{from:range.from,to:range.to,insert:text},range:EditorSelection.cursor(range.from+text.length)})))}changeByRange(f){let sel=this.selection,result1=f(sel.ranges[0]),changes=this.changes(result1.changes),ranges=[result1.range],effects=asArray$1(result1.effects);for(let i=1;i0&&void 0!==arguments[0]?arguments[0]:[];return spec instanceof ChangeSet?spec:ChangeSet.of(spec,this.doc.length,this.facet(EditorState.lineSeparator))}toText(string){return Text.of(string.split(this.facet(EditorState.lineSeparator)||DefaultSplit))}sliceDoc(){let from=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,to=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.doc.length;return this.doc.sliceString(from,to,this.lineBreak)}facet(facet){let addr=this.config.address[facet.id];return null==addr?facet.default:(ensureAddr(this,addr),getAddr(this,addr))}toJSON(fields){let result={doc:this.sliceDoc(),selection:this.selection.toJSON()};if(fields)for(let prop in fields){let value=fields[prop];value instanceof StateField&&null!=this.config.address[value.id]&&(result[prop]=value.spec.toJSON(this.field(fields[prop]),this))}return result}static fromJSON(json){let config=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},fields=arguments.length>2?arguments[2]:void 0;if(!json||"string"!=typeof json.doc)throw new RangeError("Invalid JSON representation for EditorState");let fieldInit=[];if(fields)for(let prop in fields)if(Object.prototype.hasOwnProperty.call(json,prop)){let field=fields[prop],value=json[prop];fieldInit.push(field.init((state=>field.spec.fromJSON(value,state))))}return EditorState.create({doc:json.doc,selection:EditorSelection.fromJSON(json.selection),extensions:config.extensions?fieldInit.concat([config.extensions]):fieldInit})}static create(){let config=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},configuration=Configuration.resolve(config.extensions||[],new Map),doc=config.doc instanceof Text?config.doc:Text.of((config.doc||"").split(configuration.staticFacet(EditorState.lineSeparator)||DefaultSplit)),selection=config.selection?config.selection instanceof EditorSelection?config.selection:EditorSelection.single(config.selection.anchor,config.selection.head):EditorSelection.single(0);return checkSelection(selection,doc.length),configuration.staticFacet(allowMultipleSelections)||(selection=selection.asSingle()),new EditorState(configuration,doc,selection,configuration.dynamicSlots.map((()=>null)),((state,slot)=>slot.create(state)),null)}get tabSize(){return this.facet(EditorState.tabSize)}get lineBreak(){return this.facet(EditorState.lineSeparator)||"\n"}get readOnly(){return this.facet(readOnly)}phrase(phrase){for(var _len2=arguments.length,insert=new Array(_len2>1?_len2-1:0),_key2=1;_key2<_len2;_key2++)insert[_key2-1]=arguments[_key2];for(let map of this.facet(EditorState.phrases))if(Object.prototype.hasOwnProperty.call(map,phrase)){phrase=map[phrase];break}return insert.length&&(phrase=phrase.replace(/\$(\$|\d*)/g,((m,i)=>{if("$"==i)return"$";let n=+(i||1);return!n||n>insert.length?m:insert[n-1]}))),phrase}languageDataAt(name,pos){let side=arguments.length>2&&void 0!==arguments[2]?arguments[2]:-1,values=[];for(let provider of this.facet(languageData))for(let result of provider(this,pos,side))Object.prototype.hasOwnProperty.call(result,name)&&values.push(result[name]);return values}charCategorizer(at){return makeCategorizer(this.languageDataAt("wordChars",at).join(""))}wordAt(pos){let{text:text,from:from,length:length}=this.doc.lineAt(pos),cat=this.charCategorizer(pos),start=pos-from,end=pos-from;for(;start>0;){let prev=findClusterBreak(text,start,!1);if(cat(text.slice(prev,start))!=CharCategory.Word)break;start=prev}for(;end2&&void 0!==arguments[2]?arguments[2]:{},result={};for(let config of configs)for(let key of Object.keys(config)){let value=config[key],current=result[key];if(void 0===current)result[key]=value;else if(current===value||void 0===value);else{if(!Object.hasOwnProperty.call(combine,key))throw new Error("Config merge conflict for field "+key);result[key]=combine[key](current,value)}}for(let key in defaults)void 0===result[key]&&(result[key]=defaults[key]);return result}_exports.EditorState=EditorState,EditorState.allowMultipleSelections=allowMultipleSelections,EditorState.tabSize=Facet.define({combine:values=>values.length?values[0]:4}),EditorState.lineSeparator=lineSeparator,EditorState.readOnly=readOnly,EditorState.phrases=Facet.define({compare(a,b){let kA=Object.keys(a),kB=Object.keys(b);return kA.length==kB.length&&kA.every((k=>a[k]==b[k]))}}),EditorState.languageData=languageData,EditorState.changeFilter=changeFilter,EditorState.transactionFilter=transactionFilter,EditorState.transactionExtender=transactionExtender,Compartment.reconfigure=StateEffect.define();class RangeValue{eq(other){return this==other}range(from){let to=arguments.length>1&&void 0!==arguments[1]?arguments[1]:from;return Range$1.create(from,to,this)}}RangeValue.prototype.startSide=RangeValue.prototype.endSide=0,RangeValue.prototype.point=!1,RangeValue.prototype.mapMode=MapMode.TrackDel;let Range$1=class Range{constructor(from,to,value){this.from=from,this.to=to,this.value=value}static create(from,to,value){return new Range(from,to,value)}};function cmpRange(a,b){return a.from-b.from||a.value.startSide-b.value.startSide}class Chunk{constructor(from,to,value,maxPoint){this.from=from,this.to=to,this.value=value,this.maxPoint=maxPoint}get length(){return this.to[this.to.length-1]}findIndex(pos,side,end){let startAt=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,arr=end?this.to:this.from;for(let lo=startAt,hi=arr.length;;){if(lo==hi)return lo;let mid=lo+hi>>1,diff=arr[mid]-pos||(end?this.value[mid].endSide:this.value[mid].startSide)-side;if(mid==lo)return diff>=0?lo:hi;diff>=0?hi=mid:lo=mid+1}}between(offset,from,to,f){for(let i=this.findIndex(from,-1e9,!0),e=this.findIndex(to,1e9,!1,i);inewTo||newFrom==newTo&&val.startSide>0&&val.endSide<=0)continue;(newTo-newFrom||val.endSide-val.startSide)<0||(newPos<0&&(newPos=newFrom),val.point&&(maxPoint=Math.max(maxPoint,newTo-newFrom)),value.push(val),from.push(newFrom-newPos),to.push(newTo-newPos))}return{mapped:value.length?new Chunk(from,to,value,maxPoint):null,pos:newPos}}}class RangeSet{constructor(chunkPos,chunk,nextLayer,maxPoint){this.chunkPos=chunkPos,this.chunk=chunk,this.nextLayer=nextLayer,this.maxPoint=maxPoint}static create(chunkPos,chunk,nextLayer,maxPoint){return new RangeSet(chunkPos,chunk,nextLayer,maxPoint)}get length(){let last=this.chunk.length-1;return last<0?0:Math.max(this.chunkEnd(last),this.nextLayer.length)}get size(){if(this.isEmpty)return 0;let size=this.nextLayer.size;for(let chunk of this.chunk)size+=chunk.value.length;return size}chunkEnd(index){return this.chunkPos[index]+this.chunk[index].length}update(updateSpec){let{add:add=[],sort:sort=!1,filterFrom:filterFrom=0,filterTo:filterTo=this.length}=updateSpec,filter=updateSpec.filter;if(0==add.length&&!filter)return this;if(sort&&(add=add.slice().sort(cmpRange)),this.isEmpty)return add.length?RangeSet.of(add):this;let cur=new LayerCursor(this,null,-1).goto(0),i=0,spill=[],builder=new RangeSetBuilder;for(;cur.value||i=0){let range=add[i++];builder.addInner(range.from,range.to,range.value)||spill.push(range)}else 1==cur.rangeIndex&&cur.chunkIndexthis.chunkEnd(cur.chunkIndex)||filterTocur.to||filterTo=start&&from<=start+chunk.length&&!1===chunk.between(start,from-start,to-start,f))return}this.nextLayer.between(from,to,f)}}iter(){let from=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return HeapCursor.from([this]).goto(from)}get isEmpty(){return this.nextLayer==this}static iter(sets){let from=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return HeapCursor.from(sets).goto(from)}static compare(oldSets,newSets,textDiff,comparator){let minPointSize=arguments.length>4&&void 0!==arguments[4]?arguments[4]:-1,a=oldSets.filter((set=>set.maxPoint>0||!set.isEmpty&&set.maxPoint>=minPointSize)),b=newSets.filter((set=>set.maxPoint>0||!set.isEmpty&&set.maxPoint>=minPointSize)),sharedChunks=findSharedChunks(a,b,textDiff),sideA=new SpanCursor(a,sharedChunks,minPointSize),sideB=new SpanCursor(b,sharedChunks,minPointSize);textDiff.iterGaps(((fromA,fromB,length)=>compare(sideA,fromA,sideB,fromB,length,comparator))),textDiff.empty&&0==textDiff.length&&compare(sideA,0,sideB,0,0,comparator)}static eq(oldSets,newSets){let from=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,to=arguments.length>3?arguments[3]:void 0;null==to&&(to=999999999);let a=oldSets.filter((set=>!set.isEmpty&&newSets.indexOf(set)<0)),b=newSets.filter((set=>!set.isEmpty&&oldSets.indexOf(set)<0));if(a.length!=b.length)return!1;if(!a.length)return!0;let sharedChunks=findSharedChunks(a,b),sideA=new SpanCursor(a,sharedChunks,0).goto(from),sideB=new SpanCursor(b,sharedChunks,0).goto(from);for(;;){if(sideA.to!=sideB.to||!sameValues(sideA.active,sideB.active)||sideA.point&&(!sideB.point||!sideA.point.eq(sideB.point)))return!1;if(sideA.to>to)return!0;sideA.next(),sideB.next()}}static spans(sets,from,to,iterator){let cursor=new SpanCursor(sets,null,arguments.length>4&&void 0!==arguments[4]?arguments[4]:-1).goto(from),pos=from,openRanges=cursor.openStart;for(;;){let curTo=Math.min(cursor.to,to);if(cursor.point){let active=cursor.activeForPoint(cursor.to),openCount=cursor.pointFrompos&&(iterator.span(pos,curTo,cursor.active,openRanges),openRanges=cursor.openEnd(curTo));if(cursor.to>to)return openRanges+(cursor.point&&cursor.to>to?1:0);pos=cursor.to,cursor.next()}}static of(ranges){let sort=arguments.length>1&&void 0!==arguments[1]&&arguments[1],build=new RangeSetBuilder;for(let range of ranges instanceof Range$1?[ranges]:sort?function(ranges){if(ranges.length>1)for(let prev=ranges[0],i=1;i0)return ranges.slice().sort(cmpRange);prev=cur}return ranges}(ranges):ranges)build.add(range.from,range.to,range.value);return build.finish()}static join(sets){if(!sets.length)return RangeSet.empty;let result=sets[sets.length-1];for(let i=sets.length-2;i>=0;i--)for(let layer=sets[i];layer!=RangeSet.empty;layer=layer.nextLayer)result=new RangeSet(layer.chunkPos,layer.chunk,result,Math.max(layer.maxPoint,result.maxPoint));return result}}RangeSet.empty=new RangeSet([],[],null,-1),RangeSet.empty.nextLayer=RangeSet.empty;class RangeSetBuilder{finishChunk(newArrays){this.chunks.push(new Chunk(this.from,this.to,this.value,this.maxPoint)),this.chunkPos.push(this.chunkStart),this.chunkStart=-1,this.setMaxPoint=Math.max(this.setMaxPoint,this.maxPoint),this.maxPoint=-1,newArrays&&(this.from=[],this.to=[],this.value=[])}constructor(){this.chunks=[],this.chunkPos=[],this.chunkStart=-1,this.last=null,this.lastFrom=-1e9,this.lastTo=-1e9,this.from=[],this.to=[],this.value=[],this.maxPoint=-1,this.setMaxPoint=-1,this.nextLayer=null}add(from,to,value){this.addInner(from,to,value)||(this.nextLayer||(this.nextLayer=new RangeSetBuilder)).add(from,to,value)}addInner(from,to,value){let diff=from-this.lastTo||value.startSide-this.last.endSide;if(diff<=0&&(from-this.lastFrom||value.startSide-this.last.startSide)<0)throw new Error("Ranges must be added sorted by `from` position and `startSide`");return!(diff<0)&&(250==this.from.length&&this.finishChunk(!0),this.chunkStart<0&&(this.chunkStart=from),this.from.push(from-this.chunkStart),this.to.push(to-this.chunkStart),this.last=value,this.lastFrom=from,this.lastTo=to,this.value.push(value),value.point&&(this.maxPoint=Math.max(this.maxPoint,to-from)),!0)}addChunk(from,chunk){if((from-this.lastTo||chunk.value[0].startSide-this.last.endSide)<0)return!1;this.from.length&&this.finishChunk(!0),this.setMaxPoint=Math.max(this.setMaxPoint,chunk.maxPoint),this.chunks.push(chunk),this.chunkPos.push(from);let last=chunk.value.length-1;return this.last=chunk.value[last],this.lastFrom=chunk.from[last]+from,this.lastTo=chunk.to[last]+from,!0}finish(){return this.finishInner(RangeSet.empty)}finishInner(next){if(this.from.length&&this.finishChunk(!1),0==this.chunks.length)return next;let result=RangeSet.create(this.chunkPos,this.chunks,this.nextLayer?this.nextLayer.finishInner(next):next,this.setMaxPoint);return this.from=null,result}}function findSharedChunks(a,b,textDiff){let inA=new Map;for(let set of a)for(let i=0;i3&&void 0!==arguments[3]?arguments[3]:0;this.layer=layer,this.skip=skip,this.minPoint=minPoint,this.rank=rank}get startSide(){return this.value?this.value.startSide:0}get endSide(){return this.value?this.value.endSide:0}goto(pos){let side=arguments.length>1&&void 0!==arguments[1]?arguments[1]:-1e9;return this.chunkIndex=this.rangeIndex=0,this.gotoInner(pos,side,!1),this}gotoInner(pos,side,forward){for(;this.chunkIndex=this.minPoint)break}}}setRangeIndex(index){if(index==this.layer.chunk[this.chunkIndex].value.length){if(this.chunkIndex++,this.skip)for(;this.chunkIndex1&&void 0!==arguments[1]?arguments[1]:null,minPoint=arguments.length>2&&void 0!==arguments[2]?arguments[2]:-1,heap=[];for(let i=0;i=minPoint&&heap.push(new LayerCursor(cur,skip,minPoint,i));return 1==heap.length?heap[0]:new HeapCursor(heap)}get startSide(){return this.value?this.value.startSide:0}goto(pos){let side=arguments.length>1&&void 0!==arguments[1]?arguments[1]:-1e9;for(let cur of this.heap)cur.goto(pos,side);for(let i=this.heap.length>>1;i>=0;i--)heapBubble(this.heap,i);return this.next(),this}forward(pos,side){for(let cur of this.heap)cur.forward(pos,side);for(let i=this.heap.length>>1;i>=0;i--)heapBubble(this.heap,i);(this.to-pos||this.value.endSide-side)<0&&this.next()}next(){if(0==this.heap.length)this.from=this.to=1e9,this.value=null,this.rank=-1;else{let top=this.heap[0];this.from=top.from,this.to=top.to,this.value=top.value,this.rank=top.rank,top.value&&top.next(),heapBubble(this.heap,0)}}}function heapBubble(heap,index){for(let cur=heap[index];;){let childIndex=1+(index<<1);if(childIndex>=heap.length)break;let child=heap[childIndex];if(childIndex+1=0&&(child=heap[childIndex+1],childIndex++),cur.compare(child)<0)break;heap[childIndex]=cur,heap[index]=child,index=childIndex}}class SpanCursor{constructor(sets,skip,minPoint){this.minPoint=minPoint,this.active=[],this.activeTo=[],this.activeRank=[],this.minActive=-1,this.point=null,this.pointFrom=0,this.pointRank=0,this.to=-1e9,this.endSide=0,this.openStart=-1,this.cursor=HeapCursor.from(sets,skip,minPoint)}goto(pos){let side=arguments.length>1&&void 0!==arguments[1]?arguments[1]:-1e9;return this.cursor.goto(pos,side),this.active.length=this.activeTo.length=this.activeRank.length=0,this.minActive=-1,this.to=pos,this.endSide=side,this.openStart=-1,this.next(),this}forward(pos,side){for(;this.minActive>-1&&(this.activeTo[this.minActive]-pos||this.active[this.minActive].endSide-side)<0;)this.removeActive(this.minActive);this.cursor.forward(pos,side)}removeActive(index){remove(this.active,index),remove(this.activeTo,index),remove(this.activeRank,index),this.minActive=findMinIndex(this.active,this.activeTo)}addActive(trackOpen){let i=0,{value:value,to:to,rank:rank}=this.cursor;for(;i0;)i++;insert(this.active,i,value),insert(this.activeTo,i,to),insert(this.activeRank,i,rank),trackOpen&&insert(trackOpen,i,this.cursor.from),this.minActive=findMinIndex(this.active,this.activeTo)}next(){let from=this.to,wasPoint=this.point;this.point=null;let trackOpen=this.openStart<0?[]:null;for(;;){let a=this.minActive;if(a>-1&&(this.activeTo[a]-this.cursor.from||this.active[a].endSide-this.cursor.startSide)<0){if(this.activeTo[a]>from){this.to=this.activeTo[a],this.endSide=this.active[a].endSide;break}this.removeActive(a),trackOpen&&remove(trackOpen,a)}else{if(!this.cursor.value){this.to=this.endSide=1e9;break}if(this.cursor.from>from){this.to=this.cursor.from,this.endSide=this.cursor.startSide;break}{let nextVal=this.cursor.value;if(nextVal.point){if(!(wasPoint&&this.cursor.to==this.to&&this.cursor.from=0&&trackOpen[i]=0&&!(this.activeRank[i]to||this.activeTo[i]==to&&this.active[i].endSide>=this.point.endSide)&&active.push(this.active[i]);return active.reverse()}openEnd(to){let open=0;for(let i=this.activeTo.length-1;i>=0&&this.activeTo[i]>to;i--)open++;return open}}function compare(a,startA,b,startB,length,comparator){a.goto(startA),b.goto(startB);let endB=startB+length,pos=startB,dPos=startB-startA;for(;;){let diff=a.to+dPos-b.to||a.endSide-b.endSide,end=diff<0?a.to+dPos:b.to,clipEnd=Math.min(end,endB);if(a.point||b.point?a.point&&b.point&&(a.point==b.point||a.point.eq(b.point))&&sameValues(a.activeForPoint(a.to),b.activeForPoint(b.to))||comparator.comparePoint(pos,clipEnd,a.point,b.point):clipEnd>pos&&!sameValues(a.active,b.active)&&comparator.compareRange(pos,clipEnd,a.active,b.active),end>endB)break;pos=end,diff<=0&&a.next(),diff>=0&&b.next()}}function sameValues(a,b){if(a.length!=b.length)return!1;for(let i=0;i=index;i--)array[i+1]=array[i];array[index]=value}function findMinIndex(value,array){let found=-1,foundPos=1e9;for(let i=0;i2&&void 0!==arguments[2]?arguments[2]:string.length,n=0;for(let i=0;i=col)return i;if(i==string.length)break;n+=9==string.charCodeAt(i)?tabSize-n%tabSize:1,i=findClusterBreak(string,i)}return!0===strict?-1:string.length}const COUNT="undefined"==typeof Symbol?"__ͼ":Symbol.for("ͼ"),SET="undefined"==typeof Symbol?"__styleSet"+Math.floor(1e8*Math.random()):Symbol("styleSet"),top="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:{};class StyleModule{constructor(spec,options){this.rules=[];let{finish:finish}=options||{};function splitSelector(selector){return/^@/.test(selector)?[selector]:selector.split(/,\s*/)}function render(selectors,spec,target,isKeyframes){let local=[],isAt=/^@(\w+)\b/.exec(selectors[0]),keyframes=isAt&&"keyframes"==isAt[1];if(isAt&&null==spec)return target.push(selectors[0]+";");for(let prop in spec){let value=spec[prop];if(/&/.test(prop))render(prop.split(/,\s*/).map((part=>selectors.map((sel=>part.replace(/&/,sel))))).reduce(((a,b)=>a.concat(b))),value,target);else if(value&&"object"==typeof value){if(!isAt)throw new RangeError("The value of a property ("+prop+") should be a primitive value.");render(splitSelector(prop),value,local,keyframes)}else null!=value&&local.push(prop.replace(/_.*/,"").replace(/[A-Z]/g,(l=>"-"+l.toLowerCase()))+": "+value+";")}(local.length||keyframes)&&target.push((!finish||isAt||isKeyframes?selectors:selectors.map(finish)).join(", ")+" {"+local.join(" ")+"}")}for(let prop in spec)render(splitSelector(prop),spec[prop],this.rules)}getRules(){return this.rules.join("\n")}static newName(){let id=top[COUNT]||1;return top[COUNT]=id+1,"ͼ"+id.toString(36)}static mount(root,modules,options){let set=root[SET],nonce=options&&options.nonce;set?nonce&&set.setNonce(nonce):set=new StyleSet(root,nonce),set.mount(Array.isArray(modules)?modules:[modules],root)}}let adoptedSet=new Map;class StyleSet{constructor(root,nonce){let doc=root.ownerDocument||root,win=doc.defaultView;if(!root.head&&root.adoptedStyleSheets&&win.CSSStyleSheet){let adopted=adoptedSet.get(doc);if(adopted)return root[SET]=adopted;this.sheet=new win.CSSStyleSheet,adoptedSet.set(doc,this)}else this.styleTag=doc.createElement("style"),nonce&&this.styleTag.setAttribute("nonce",nonce);this.modules=[],root[SET]=this}mount(modules,root){let sheet=this.sheet,pos=0,j=0;for(let i=0;i-1&&(this.modules.splice(index,1),j--,index=-1),-1==index){if(this.modules.splice(j++,0,mod),sheet)for(let k=0;k",191:"?",192:"~",219:"{",220:"|",221:"}",222:'"'},mac="undefined"!=typeof navigator&&/Mac/.test(navigator.platform),ie$1="undefined"!=typeof navigator&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent),i=0;i<10;i++)base[48+i]=base[96+i]=String(i);for(i=1;i<=24;i++)base[i+111]="F"+i;for(i=65;i<=90;i++)base[i]=String.fromCharCode(i+32),shift[i]=String.fromCharCode(i);for(var code in base)shift.hasOwnProperty(code)||(shift[code]=base[code]);function getSelection(root){let target;return target=11==root.nodeType?root.getSelection?root:root.ownerDocument:root,target.getSelection()}function contains(dom,node){return!!node&&(dom==node||dom.contains(1!=node.nodeType?node.parentNode:node))}function hasSelection(dom,selection){if(!selection.anchorNode)return!1;try{return contains(dom,selection.anchorNode)}catch(_){return!1}}function clientRectsFor(dom){return 3==dom.nodeType?textRange(dom,0,dom.nodeValue.length).getClientRects():1==dom.nodeType?dom.getClientRects():[]}function isEquivalentPosition(node,off,targetNode,targetOff){return!!targetNode&&(scanFor(node,off,targetNode,targetOff,-1)||scanFor(node,off,targetNode,targetOff,1))}function domIndex(node){for(var index=0;;index++)if(!(node=node.previousSibling))return index}function isBlockElement(node){return 1==node.nodeType&&/^(DIV|P|LI|UL|OL|BLOCKQUOTE|DD|DT|H\d|SECTION|PRE)$/.test(node.nodeName)}function scanFor(node,off,targetNode,targetOff,dir){for(;;){if(node==targetNode&&off==targetOff)return!0;if(off==(dir<0?0:maxOffset(node))){if("DIV"==node.nodeName)return!1;let parent=node.parentNode;if(!parent||1!=parent.nodeType)return!1;off=domIndex(node)+(dir<0?0:1),node=parent}else{if(1!=node.nodeType)return!1;if(1==(node=node.childNodes[off+(dir<0?-1:0)]).nodeType&&"false"==node.contentEditable)return!1;off=dir<0?maxOffset(node):0}}}function maxOffset(node){return 3==node.nodeType?node.nodeValue.length:node.childNodes.length}function flattenRect(rect,left){let x=left?rect.left:rect.right;return{left:x,right:x,top:rect.top,bottom:rect.bottom}}function windowRect(win){let vp=win.visualViewport;return vp?{left:0,right:vp.width,top:0,bottom:vp.height}:{left:0,right:win.innerWidth,top:0,bottom:win.innerHeight}}function getScale(elt,rect){let scaleX=rect.width/elt.offsetWidth,scaleY=rect.height/elt.offsetHeight;return(scaleX>.995&&scaleX<1.005||!isFinite(scaleX)||Math.abs(rect.width-elt.offsetWidth)<1)&&(scaleX=1),(scaleY>.995&&scaleY<1.005||!isFinite(scaleY)||Math.abs(rect.height-elt.offsetHeight)<1)&&(scaleY=1),{scaleX:scaleX,scaleY:scaleY}}class DOMSelectionState{constructor(){this.anchorNode=null,this.anchorOffset=0,this.focusNode=null,this.focusOffset=0}eq(domSel){return this.anchorNode==domSel.anchorNode&&this.anchorOffset==domSel.anchorOffset&&this.focusNode==domSel.focusNode&&this.focusOffset==domSel.focusOffset}setRange(range){let{anchorNode:anchorNode,focusNode:focusNode}=range;this.set(anchorNode,Math.min(range.anchorOffset,anchorNode?maxOffset(anchorNode):0),focusNode,Math.min(range.focusOffset,focusNode?maxOffset(focusNode):0))}set(anchorNode,anchorOffset,focusNode,focusOffset){this.anchorNode=anchorNode,this.anchorOffset=anchorOffset,this.focusNode=focusNode,this.focusOffset=focusOffset}}let scratchRange,preventScrollSupported=null;function focusPreventScroll(dom){if(dom.setActive)return dom.setActive();if(preventScrollSupported)return dom.focus(preventScrollSupported);let stack=[];for(let cur=dom;cur&&(stack.push(cur,cur.scrollTop,cur.scrollLeft),cur!=cur.ownerDocument);cur=cur.parentNode);if(dom.focus(null==preventScrollSupported?{get preventScroll(){return preventScrollSupported={preventScroll:!0},!0}}:void 0),!preventScrollSupported){preventScrollSupported=!1;for(let i=0;i2&&void 0!==arguments[2]?arguments[2]:from,range=scratchRange||(scratchRange=document.createRange());return range.setEnd(node,to),range.setStart(node,from),range}function dispatchKey(elt,name,code,mods){let options={key:name,code:name,keyCode:code,which:code,cancelable:!0};mods&&({altKey:options.altKey,ctrlKey:options.ctrlKey,shiftKey:options.shiftKey,metaKey:options.metaKey}=mods);let down=new KeyboardEvent("keydown",options);down.synthetic=!0,elt.dispatchEvent(down);let up=new KeyboardEvent("keyup",options);return up.synthetic=!0,elt.dispatchEvent(up),down.defaultPrevented||up.defaultPrevented}function clearAttributes(node){for(;node.attributes.length;)node.removeAttributeNode(node.attributes[0])}function isScrolledToBottom(elt){return elt.scrollTop>Math.max(1,elt.scrollHeight-elt.clientHeight-4)}function textNodeBefore(startNode,startOffset){for(let node=startNode,offset=startOffset;;){if(3==node.nodeType&&offset>0)return{node:node,offset:offset};if(1==node.nodeType&&offset>0){if("false"==node.contentEditable)return null;node=node.childNodes[offset-1],offset=maxOffset(node)}else{if(!node.parentNode||isBlockElement(node))return null;offset=domIndex(node),node=node.parentNode}}}function textNodeAfter(startNode,startOffset){for(let node=startNode,offset=startOffset;;){if(3==node.nodeType&&offset2&&void 0!==arguments[2])||arguments[2];this.node=node,this.offset=offset,this.precise=precise}static before(dom,precise){return new DOMPos(dom.parentNode,domIndex(dom),precise)}static after(dom,precise){return new DOMPos(dom.parentNode,domIndex(dom)+1,precise)}}const noChildren=[];class ContentView{constructor(){this.parent=null,this.dom=null,this.flags=2}get overrideDOMText(){return null}get posAtStart(){return this.parent?this.parent.posBefore(this):0}get posAtEnd(){return this.posAtStart+this.length}posBefore(view){let pos=this.posAtStart;for(let child of this.children){if(child==view)return pos;pos+=child.length+child.breakAfter}throw new RangeError("Invalid child in posBefore")}posAfter(view){return this.posBefore(view)+view.length}sync(view,track){if(2&this.flags){let next,parent=this.dom,prev=null;for(let child of this.children){if(7&child.flags){if(!child.dom&&(next=prev?prev.nextSibling:parent.firstChild)){let contentView=ContentView.get(next);(!contentView||!contentView.parent&&contentView.canReuseDOM(child))&&child.reuseDOM(next)}child.sync(view,track),child.flags&=-8}if(next=prev?prev.nextSibling:parent.firstChild,track&&!track.written&&track.node==parent&&next!=child.dom&&(track.written=!0),child.dom.parentNode==parent)for(;next&&next!=child.dom;)next=rm$1(next);else parent.insertBefore(child.dom,next);prev=child.dom}for(next=prev?prev.nextSibling:parent.firstChild,next&&track&&track.node==parent&&(track.written=!0);next;)next=rm$1(next)}else if(1&this.flags)for(let child of this.children)7&child.flags&&(child.sync(view,track),child.flags&=-8)}reuseDOM(_dom){}localPosFromDOM(node,offset){let after;if(node==this.dom)after=this.dom.childNodes[offset];else{let bias=0==maxOffset(node)?0:0==offset?-1:1;for(;;){let parent=node.parentNode;if(parent==this.dom)break;0==bias&&parent.firstChild!=parent.lastChild&&(bias=node==parent.firstChild?-1:1),node=parent}after=bias<0?node:node.nextSibling}if(after==this.dom.firstChild)return 0;for(;after&&!ContentView.get(after);)after=after.nextSibling;if(!after)return this.length;for(let i=0,pos=0;;i++){let child=this.children[i];if(child.dom==after)return pos;pos+=child.length+child.breakAfter}}domBoundsAround(from,to){let offset=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,fromI=-1,fromStart=-1,toI=-1,toEnd=-1;for(let i=0,pos=offset,prevEnd=offset;ito)return child.domBoundsAround(from,to,pos);if(end>=from&&-1==fromI&&(fromI=i,fromStart=pos),pos>to&&child.dom.parentNode==this.dom){toI=i,toEnd=prevEnd;break}prevEnd=end,pos=end+child.breakAfter}return{from:fromStart,to:toEnd<0?offset+this.length:toEnd,startDOM:(fromI?this.children[fromI-1].dom.nextSibling:null)||this.dom.firstChild,endDOM:toI=0?this.children[toI].dom:null}}markDirty(){let andParent=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.flags|=2,this.markParentsDirty(andParent)}markParentsDirty(childList){for(let parent=this.parent;parent;parent=parent.parent){if(childList&&(parent.flags|=2),1&parent.flags)return;parent.flags|=1,childList=!1}}setParent(parent){this.parent!=parent&&(this.parent=parent,7&this.flags&&this.markParentsDirty(!0))}setDOM(dom){this.dom!=dom&&(this.dom&&(this.dom.cmView=null),this.dom=dom,dom.cmView=this)}get rootView(){for(let v=this;;){let parent=v.parent;if(!parent)return v;v=parent}}replaceChildren(from,to){let children=arguments.length>2&&void 0!==arguments[2]?arguments[2]:noChildren;this.markDirty();for(let i=from;i0&&void 0!==arguments[0]?arguments[0]:this.length;return new ChildCursor(this.children,pos,this.children.length)}childPos(pos){let bias=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return this.childCursor().findPos(pos,bias)}toString(){let name=this.constructor.name.replace("View","");return name+(this.children.length?"("+this.children.join()+")":this.length?"["+("Text"==name?this.text:this.length)+"]":"")+(this.breakAfter?"#":"")}static get(node){return node.cmView}get isEditable(){return!0}get isWidget(){return!1}get isHidden(){return!1}merge(from,to,source,hasStart,openStart,openEnd){return!1}become(other){return!1}canReuseDOM(other){return other.constructor==this.constructor&&!(8&(this.flags|other.flags))}getSide(){return 0}destroy(){for(let child of this.children)child.parent==this&&child.destroy();this.parent=null}}function rm$1(dom){let next=dom.nextSibling;return dom.parentNode.removeChild(dom),next}ContentView.prototype.breakAfter=0;class ChildCursor{constructor(children,pos,i){this.children=children,this.pos=pos,this.i=i,this.off=0}findPos(pos){let bias=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;for(;;){if(pos>this.pos||pos==this.pos&&(bias>0||0==this.i||this.children[this.i-1].breakAfter))return this.off=pos-this.pos,this;let next=this.children[--this.i];this.pos-=next.length+next.breakAfter}}}function replaceRange(parent,fromI,fromOff,toI,toOff,insert,breakAtStart,openStart,openEnd){let{children:children}=parent,before=children.length?children[fromI]:null,last=insert.length?insert[insert.length-1]:null,breakAtEnd=last?last.breakAfter:breakAtStart;if(!(fromI==toI&&before&&!breakAtStart&&!breakAtEnd&&insert.length<2&&before.merge(fromOff,toOff,insert.length?last:null,0==fromOff,openStart,openEnd))){if(toI0&&(!breakAtStart&&insert.length&&before.merge(fromOff,before.length,insert[0],!1,openStart,0)?before.breakAfter=insert.shift().breakAfter:(fromOff2);var browser={mac:ios||/Mac/.test(nav.platform),windows:/Win/.test(nav.platform),linux:/Linux|X11/.test(nav.platform),ie:ie,ie_version:ie_upto10?doc.documentMode||6:ie_11up?+ie_11up[1]:ie_edge?+ie_edge[1]:0,gecko:gecko,gecko_version:gecko?+(/Firefox\/(\d+)/.exec(nav.userAgent)||[0,0])[1]:0,chrome:!!chrome,chrome_version:chrome?+chrome[1]:0,ios:ios,android:/Android\b/.test(nav.userAgent),webkit:webkit,safari:safari,webkit_version:webkit?+(/\bAppleWebKit\/(\d+)/.exec(navigator.userAgent)||[0,0])[1]:0,tabSize:null!=doc.documentElement.style.tabSize?"tab-size":"-moz-tab-size"};class TextView extends ContentView{constructor(text){super(),this.text=text}get length(){return this.text.length}createDOM(textDOM){this.setDOM(textDOM||document.createTextNode(this.text))}sync(view,track){this.dom||this.createDOM(),this.dom.nodeValue!=this.text&&(track&&track.node==this.dom&&(track.written=!0),this.dom.nodeValue=this.text)}reuseDOM(dom){3==dom.nodeType&&this.createDOM(dom)}merge(from,to,source){return!(8&this.flags||source&&(!(source instanceof TextView)||this.length-(to-from)+source.length>256||8&source.flags))&&(this.text=this.text.slice(0,from)+(source?source.text:"")+this.text.slice(to),this.markDirty(),!0)}split(from){let result=new TextView(this.text.slice(from));return this.text=this.text.slice(0,from),this.markDirty(),result.flags|=8&this.flags,result}localPosFromDOM(node,offset){return node==this.dom?offset:offset?this.text.length:0}domAtPos(pos){return new DOMPos(this.dom,pos)}domBoundsAround(_from,_to,offset){return{from:offset,to:offset+this.length,startDOM:this.dom,endDOM:this.dom.nextSibling}}coordsAt(pos,side){return function(text,pos,side){let length=text.nodeValue.length;pos>length&&(pos=length);let from=pos,to=pos,flatten=0;0==pos&&side<0||pos==length&&side>=0?browser.chrome||browser.gecko||(pos?(from--,flatten=1):to=0)?0:rects.length-1];browser.safari&&!flatten&&0==rect.width&&(rect=Array.prototype.find.call(rects,(r=>r.width))||rect);return flatten?flattenRect(rect,flatten<0):rect||null}(this.dom,pos,side)}}class MarkView extends ContentView{constructor(mark){let children=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],length=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;super(),this.mark=mark,this.children=children,this.length=length;for(let ch of children)ch.setParent(this)}setAttrs(dom){if(clearAttributes(dom),this.mark.class&&(dom.className=this.mark.class),this.mark.attrs)for(let name in this.mark.attrs)dom.setAttribute(name,this.mark.attrs[name]);return dom}canReuseDOM(other){return super.canReuseDOM(other)&&!(8&(this.flags|other.flags))}reuseDOM(node){node.nodeName==this.mark.tagName.toUpperCase()&&(this.setDOM(node),this.flags|=6)}sync(view,track){this.dom?4&this.flags&&this.setAttrs(this.dom):this.setDOM(this.setAttrs(document.createElement(this.mark.tagName))),super.sync(view,track)}merge(from,to,source,_hasStart,openStart,openEnd){return(!source||!(!(source instanceof MarkView&&source.mark.eq(this.mark))||from&&openStart<=0||tofrom&&result.push(off=from&&(detachFrom=i),off=end,i++}let length=this.length-from;return this.length=from,detachFrom>-1&&(this.children.length=detachFrom,this.markDirty()),new MarkView(this.mark,result,length)}domAtPos(pos){return inlineDOMAtPos(this,pos)}coordsAt(pos,side){return coordsInChildren(this,pos,side)}}class WidgetView extends ContentView{static create(widget,length,side){return new WidgetView(widget,length,side)}constructor(widget,length,side){super(),this.widget=widget,this.length=length,this.side=side,this.prevWidget=null}split(from){let result=WidgetView.create(this.widget,this.length-from,this.side);return this.length-=from,result}sync(view){this.dom&&this.widget.updateDOM(this.dom,view)||(this.dom&&this.prevWidget&&this.prevWidget.destroy(this.dom),this.prevWidget=null,this.setDOM(this.widget.toDOM(view)),this.widget.editable||(this.dom.contentEditable="false"))}getSide(){return this.side}merge(from,to,source,hasStart,openStart,openEnd){return!(source&&(!(source instanceof WidgetView&&this.widget.compare(source.widget))||from>0&&openStart<=0||to0)?DOMPos.before(this.dom):DOMPos.after(this.dom,pos==this.length)}domBoundsAround(){return null}coordsAt(pos,side){let custom=this.widget.coordsAt(this.dom,pos,side);if(custom)return custom;let rects=this.dom.getClientRects(),rect=null;if(!rects.length)return null;let fromBack=this.side?this.side<0:pos>0;for(let i=fromBack?rects.length-1:0;rect=rects[i],!(pos>0?0==i:i==rects.length-1||rect.top0?DOMPos.before(this.dom):DOMPos.after(this.dom)}localPosFromDOM(){return 0}domBoundsAround(){return null}coordsAt(pos){return this.dom.getBoundingClientRect()}get overrideDOMText(){return Text.empty}get isHidden(){return!0}}function inlineDOMAtPos(parent,pos){let dom=parent.dom,{children:children}=parent,i=0;for(let off=0;ioff&&pos0;j--){let prev=children[j-1];if(prev.dom.parentNode==dom)return prev.domAtPos(prev.length)}for(let j=i;j0&&view instanceof MarkView&&children.length&&(last=children[children.length-1])instanceof MarkView&&last.mark.eq(view.mark)?joinInlineInto(last,view.children[0],open-1):(children.push(view),view.setParent(parent)),parent.length+=view.length}function coordsInChildren(view,pos,side){let before=null,beforePos=-1,after=null,afterPos=-1;!function scan(view,pos){for(let i=0,off=0;i=pos&&(child.children.length?scan(child,pos-off):(!after||after.isHidden&&side>0)&&(end>pos||off==end&&child.getSide()>0)?(after=child,afterPos=pos-off):(off-1?1:0)!=keysB.length-(ignore&&keysB.indexOf(ignore)>-1?1:0))return!1;for(let key of keysA)if(key!=ignore&&(-1==keysB.indexOf(key)||a[key]!==b[key]))return!1;return!0}function updateAttrs(dom,prev,attrs){let changed=!1;if(prev)for(let name in prev)attrs&&name in attrs||(changed=!0,"style"==name?dom.style.cssText="":dom.removeAttribute(name));if(attrs)for(let name in attrs)prev&&prev[name]==attrs[name]||(changed=!0,"style"==name?dom.style.cssText=attrs[name]:dom.setAttribute(name,attrs[name]));return changed}function getAttrs$1(dom){let attrs=Object.create(null);for(let i=0;i0&&0==this.children[i-1].length;)this.children[--i].destroy();return this.children.length=i,this.markDirty(),this.length=at,end}transferDOM(other){this.dom&&(this.markDirty(),other.setDOM(this.dom),other.prevAttrs=void 0===this.prevAttrs?this.attrs:this.prevAttrs,this.prevAttrs=void 0,this.dom=null)}setDeco(attrs){attrsEq(this.attrs,attrs)||(this.dom&&(this.prevAttrs=this.attrs,this.markDirty()),this.attrs=attrs)}append(child,openStart){joinInlineInto(this,child,openStart)}addLineDeco(deco){let attrs=deco.spec.attributes,cls=deco.spec.class;attrs&&(this.attrs=combineAttrs(attrs,this.attrs||{})),cls&&(this.attrs=combineAttrs({class:cls},this.attrs||{}))}domAtPos(pos){return inlineDOMAtPos(this,pos)}reuseDOM(node){"DIV"==node.nodeName&&(this.setDOM(node),this.flags|=6)}sync(view,track){var _a;this.dom?4&this.flags&&(clearAttributes(this.dom),this.dom.className="cm-line",this.prevAttrs=this.attrs?null:void 0):(this.setDOM(document.createElement("div")),this.dom.className="cm-line",this.prevAttrs=this.attrs?null:void 0),void 0!==this.prevAttrs&&(updateAttrs(this.dom,this.prevAttrs,this.attrs),this.dom.classList.add("cm-line"),this.prevAttrs=void 0),super.sync(view,track);let last=this.dom.lastChild;for(;last&&ContentView.get(last)instanceof MarkView;)last=last.lastChild;if(!(last&&this.length&&("BR"==last.nodeName||0!=(null===(_a=ContentView.get(last))||void 0===_a?void 0:_a.isEditable)||browser.ios&&this.children.some((ch=>ch instanceof TextView))))){let hack=document.createElement("BR");hack.cmIgnore=!0,this.dom.appendChild(hack)}}measureTextSize(){if(0==this.children.length||this.length>20)return null;let textHeight,totalWidth=0;for(let child of this.children){if(!(child instanceof TextView)||/[^ -~]/.test(child.text))return null;let rects=clientRectsFor(child.dom);if(1!=rects.length)return null;totalWidth+=rects[0].width,textHeight=rects[0].height}return totalWidth?{lineHeight:this.dom.getBoundingClientRect().height,charWidth:totalWidth/this.length,textHeight:textHeight}:null}coordsAt(pos,side){let rect=coordsInChildren(this,pos,side);if(!this.children.length&&rect&&this.parent){let{heightOracle:heightOracle}=this.parent.view.viewState,height=rect.bottom-rect.top;if(Math.abs(height-heightOracle.lineHeight)<2&&heightOracle.textHeight=pos){if(block instanceof LineView)return block;if(end>pos)break}off=end+block.breakAfter}return null}}class BlockWidgetView extends ContentView{constructor(widget,length,deco){super(),this.widget=widget,this.length=length,this.deco=deco,this.breakAfter=0,this.prevWidget=null}merge(from,to,source,_takeDeco,openStart,openEnd){return!(source&&(!(source instanceof BlockWidgetView&&this.widget.compare(source.widget))||from>0&&openStart<=0||to0)}}class WidgetType{eq(widget){return!1}updateDOM(dom,view){return!1}compare(other){return this==other||this.constructor==other.constructor&&this.eq(other)}get estimatedHeight(){return-1}get lineBreaks(){return 0}ignoreEvent(event){return!0}coordsAt(dom,pos,side){return null}get isHidden(){return!1}get editable(){return!1}destroy(dom){}}var BlockType=function(BlockType){return BlockType[BlockType.Text=0]="Text",BlockType[BlockType.WidgetBefore=1]="WidgetBefore",BlockType[BlockType.WidgetAfter=2]="WidgetAfter",BlockType[BlockType.WidgetRange=3]="WidgetRange",BlockType}(BlockType||(BlockType={}));class Decoration extends RangeValue{constructor(startSide,endSide,widget,spec){super(),this.startSide=startSide,this.endSide=endSide,this.widget=widget,this.spec=spec}get heightRelevant(){return!1}static mark(spec){return new MarkDecoration(spec)}static widget(spec){let side=Math.max(-1e4,Math.min(1e4,spec.side||0)),block=!!spec.block;return side+=block&&!spec.inlineOrder?side>0?3e8:-4e8:side>0?1e8:-1e8,new PointDecoration(spec,side,side,block,spec.widget||null,!1)}static replace(spec){let startSide,endSide,block=!!spec.block;if(spec.isBlockGap)startSide=-5e8,endSide=4e8;else{let{start:start,end:end}=getInclusive(spec,block);startSide=(start?block?-3e8:-1:5e8)-1,endSide=1+(end?block?2e8:1:-6e8)}return new PointDecoration(spec,startSide,endSide,block,spec.widget||null,!0)}static line(spec){return new LineDecoration(spec)}static set(of){let sort=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return RangeSet.of(of,sort)}hasHeight(){return!!this.widget&&this.widget.estimatedHeight>-1}}Decoration.none=RangeSet.empty;class MarkDecoration extends Decoration{constructor(spec){let{start:start,end:end}=getInclusive(spec);super(start?-1:5e8,end?1:-6e8,null,spec),this.tagName=spec.tagName||"span",this.class=spec.class||"",this.attrs=spec.attributes||null}eq(other){var _a,_b;return this==other||other instanceof MarkDecoration&&this.tagName==other.tagName&&(this.class||(null===(_a=this.attrs)||void 0===_a?void 0:_a.class))==(other.class||(null===(_b=other.attrs)||void 0===_b?void 0:_b.class))&&attrsEq(this.attrs,other.attrs,"class")}range(from){let to=arguments.length>1&&void 0!==arguments[1]?arguments[1]:from;if(from>=to)throw new RangeError("Mark decorations may not be empty");return super.range(from,to)}}MarkDecoration.prototype.point=!1;class LineDecoration extends Decoration{constructor(spec){super(-2e8,-2e8,null,spec)}eq(other){return other instanceof LineDecoration&&this.spec.class==other.spec.class&&attrsEq(this.spec.attributes,other.spec.attributes)}range(from){let to=arguments.length>1&&void 0!==arguments[1]?arguments[1]:from;if(to!=from)throw new RangeError("Line decoration ranges must be zero-length");return super.range(from,to)}}LineDecoration.prototype.mapMode=MapMode.TrackBefore,LineDecoration.prototype.point=!0;class PointDecoration extends Decoration{constructor(spec,startSide,endSide,block,widget,isReplace){super(startSide,endSide,widget,spec),this.block=block,this.isReplace=isReplace,this.mapMode=block?startSide<=0?MapMode.TrackBefore:MapMode.TrackAfter:MapMode.TrackDel}get type(){return this.startSide!=this.endSide?BlockType.WidgetRange:this.startSide<=0?BlockType.WidgetBefore:BlockType.WidgetAfter}get heightRelevant(){return this.block||!!this.widget&&(this.widget.estimatedHeight>=5||this.widget.lineBreaks>0)}eq(other){return other instanceof PointDecoration&&(a=this.widget,b=other.widget,a==b||!!(a&&b&&a.compare(b)))&&this.block==other.block&&this.startSide==other.startSide&&this.endSide==other.endSide;var a,b}range(from){let to=arguments.length>1&&void 0!==arguments[1]?arguments[1]:from;if(this.isReplace&&(from>to||from==to&&this.startSide>0&&this.endSide<=0))throw new RangeError("Invalid range for replacement decoration");if(!this.isReplace&&to!=from)throw new RangeError("Widget decorations can only have zero-length ranges");return super.range(from,to)}}function getInclusive(spec){let block=arguments.length>1&&void 0!==arguments[1]&&arguments[1],{inclusiveStart:start,inclusiveEnd:end}=spec;return null==start&&(start=spec.inclusive),null==end&&(end=spec.inclusive),{start:null!=start?start:block,end:null!=end?end:block}}function addRange(from,to,ranges){let margin=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,last=ranges.length-1;last>=0&&ranges[last]+margin>=from?ranges[last]=Math.max(ranges[last],to):ranges.push(from,to)}PointDecoration.prototype.point=!0;class ContentBuilder{constructor(doc,pos,end,disallowBlockEffectsFor){this.doc=doc,this.pos=pos,this.end=end,this.disallowBlockEffectsFor=disallowBlockEffectsFor,this.content=[],this.curLine=null,this.breakAtStart=0,this.pendingBuffer=0,this.bufferMarks=[],this.atCursorPos=!0,this.openStart=-1,this.openEnd=-1,this.text="",this.textOff=0,this.cursor=doc.iter(),this.skip=pos}posCovered(){if(0==this.content.length)return!this.breakAtStart&&this.doc.lineAt(this.pos).from!=this.pos;let last=this.content[this.content.length-1];return!(last.breakAfter||last instanceof BlockWidgetView&&last.deco.endSide<0)}getLine(){return this.curLine||(this.content.push(this.curLine=new LineView),this.atCursorPos=!0),this.curLine}flushBuffer(){let active=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.bufferMarks;this.pendingBuffer&&(this.curLine.append(wrapMarks(new WidgetBufferView(-1),active),active.length),this.pendingBuffer=0)}addBlockWidget(view){this.flushBuffer(),this.curLine=null,this.content.push(view)}finish(openEnd){this.pendingBuffer&&openEnd<=this.bufferMarks.length?this.flushBuffer():this.pendingBuffer=0,this.posCovered()||openEnd&&this.content.length&&this.content[this.content.length-1]instanceof BlockWidgetView||this.getLine()}buildText(length,active,openStart){for(;length>0;){if(this.textOff==this.text.length){let{value:value,lineBreak:lineBreak,done:done}=this.cursor.next(this.skip);if(this.skip=0,done)throw new Error("Ran out of text content when drawing inline views");if(lineBreak){this.posCovered()||this.getLine(),this.content.length?this.content[this.content.length-1].breakAfter=1:this.breakAtStart=1,this.flushBuffer(),this.curLine=null,this.atCursorPos=!0,length--;continue}this.text=value,this.textOff=0}let take=Math.min(this.text.length-this.textOff,length,512);this.flushBuffer(active.slice(active.length-openStart)),this.getLine().append(wrapMarks(new TextView(this.text.slice(this.textOff,this.textOff+take)),active),openStart),this.atCursorPos=!0,this.textOff+=take,length-=take,openStart=0}}span(from,to,active,openStart){this.buildText(to-from,active,openStart),this.pos=to,this.openStart<0&&(this.openStart=openStart)}point(from,to,deco,active,openStart,index){if(this.disallowBlockEffectsFor[index]&&deco instanceof PointDecoration){if(deco.block)throw new RangeError("Block decorations may not be specified via plugins");if(to>this.doc.lineAt(this.pos).to)throw new RangeError("Decorations that replace line breaks may not be specified via plugins")}let len=to-from;if(deco instanceof PointDecoration)if(deco.block)deco.startSide>0&&!this.posCovered()&&this.getLine(),this.addBlockWidget(new BlockWidgetView(deco.widget||NullWidget.block,len,deco));else{let view=WidgetView.create(deco.widget||NullWidget.inline,len,len?0:deco.startSide),cursorBefore=this.atCursorPos&&!view.isEditable&&openStart<=active.length&&(from0),cursorAfter=!view.isEditable&&(fromactive.length||deco.startSide<=0),line=this.getLine();2!=this.pendingBuffer||cursorBefore||view.isEditable||(this.pendingBuffer=0),this.flushBuffer(active),cursorBefore&&(line.append(wrapMarks(new WidgetBufferView(1),active),openStart),openStart=active.length+Math.max(0,openStart-active.length)),line.append(wrapMarks(view,active),openStart),this.atCursorPos=cursorAfter,this.pendingBuffer=cursorAfter?fromactive.length?1:2:0,this.pendingBuffer&&(this.bufferMarks=active.slice())}else this.doc.lineAt(this.pos).from==this.pos&&this.getLine().addLineDeco(deco);len&&(this.textOff+len<=this.text.length?this.textOff+=len:(this.skip+=len-(this.text.length-this.textOff),this.text="",this.textOff=0),this.pos=to),this.openStart<0&&(this.openStart=openStart)}static build(text,from,to,decorations,dynamicDecorationMap){let builder=new ContentBuilder(text,from,to,dynamicDecorationMap);return builder.openEnd=RangeSet.spans(decorations,from,to,builder),builder.openStart<0&&(builder.openStart=builder.openEnd),builder.finish(builder.openEnd),builder}}function wrapMarks(view,active){for(let mark of active)view=new MarkView(mark,[view],view.length);return view}class NullWidget extends WidgetType{constructor(tag){super(),this.tag=tag}eq(other){return other.tag==this.tag}toDOM(){return document.createElement(this.tag)}updateDOM(elt){return elt.nodeName.toLowerCase()==this.tag}get isHidden(){return!0}}NullWidget.inline=new NullWidget("span"),NullWidget.block=new NullWidget("div");var Direction=function(Direction){return Direction[Direction.LTR=0]="LTR",Direction[Direction.RTL=1]="RTL",Direction}(Direction||(Direction={}));const LTR=Direction.LTR,RTL=Direction.RTL;function dec(str){let result=[];for(let i=0;i=index){if(span.level==level)return i;(maybe<0||(0!=assoc?assoc<0?span.fromindex:order[maybe].level>span.level))&&(maybe=i)}}if(maybe<0)throw new RangeError("Index out of range");return maybe}}function isolatesEq(a,b){if(a.length!=b.length)return!1;for(let i=0;iiCh&&order.push(new BidiSpan(iCh,iso.from,localLevel)),computeSectionOrder(line,iso.direction==LTR!=!(localLevel%2)?level+1:level,baseLevel,iso.inner,iso.from,iso.to,order),iCh=iso.to}iScan=iso.to}else{if(iScan==to||(sameDir?types[iScan]!=ourType:types[iScan]==ourType))break;iScan++}recurse?emitSpans(line,iCh,iScan,level+1,baseLevel,recurse,order):iChfrom;){let sameDir=!0,isNum=!1;if(!iI||iCh>isolates[iI-1].to){let next=types[iCh-1];next!=ourType&&(sameDir=!1,isNum=16==next)}let recurse=sameDir||1!=ourType?null:[],localLevel=sameDir?level:level+1,iScan=iCh;run:for(;;)if(iI&&iScan==isolates[iI-1].to){if(isNum)break run;let iso=isolates[--iI];if(!sameDir)for(let upto=iso.from,jI=iI;;){if(upto==from)break run;if(!jI||isolates[jI-1].to!=upto){if(types[upto-1]==ourType)break run;break}upto=isolates[--jI].from}if(recurse)recurse.push(iso);else{iso.to=0;sJ-=3)if(BracketStack[sJ+1]==-br){let flags=BracketStack[sJ+2],type=2&flags?outerType:4&flags?1&flags?oppositeType:outerType:0;type&&(types[i]=types[BracketStack[sJ]]=type),sI=sJ;break}}else{if(189==BracketStack.length)break;BracketStack[sI++]=i,BracketStack[sI++]=ch,BracketStack[sI++]=context}else if(2==(type=types[i])||1==type){let embed=type==outerType;context=embed?0:1;for(let sJ=sI-3;sJ>=0;sJ-=3){let cur=BracketStack[sJ+2];if(2&cur)break;if(embed)BracketStack[sJ+2]|=2;else{if(4&cur)break;BracketStack[sJ+2]|=4}}}}}(line,from,to,isolates,outerType),function(rFrom,rTo,isolates,outerType){for(let iI=0,prev=outerType;iI<=isolates.length;iI++){let from=iI?isolates[iI-1].to:rFrom,to=iIi;)j==fromJ&&(j=isolates[--jI].from,fromJ=jI?isolates[jI-1].to:rFrom),types[--j]=replace;i=end}else prev=type,i++}}}(from,to,isolates,outerType),emitSpans(line,from,to,level,baseLevel,isolates,order)}function trivialOrder(length){return[new BidiSpan(0,length,0)]}let movedOver="";function moveVisually(line,order,dir,start,forward){var _a;let startIndex=start.head-line.from,spanI=BidiSpan.find(order,startIndex,null!==(_a=start.bidiLevel)&&void 0!==_a?_a:-1,start.assoc),span=order[spanI],spanEnd=span.side(forward,dir);if(startIndex==spanEnd){let nextI=spanI+=forward?1:-1;if(nextI<0||nextI>=order.length)return null;span=order[spanI=nextI],startIndex=span.side(!forward,dir),spanEnd=span.side(forward,dir)}let nextIndex=findClusterBreak(line.text,startIndex,span.forward(forward,dir));(nextIndexspan.to)&&(nextIndex=spanEnd),movedOver=line.text.slice(Math.min(startIndex,nextIndex),Math.max(startIndex,nextIndex));let nextSpan=spanI==(forward?order.length-1:0)?null:order[spanI+(forward?1:-1)];return nextSpan&&nextIndex==spanEnd&&nextSpan.level+(forward?0:1)values.some((x=>x))}),nativeSelectionHidden=Facet.define({combine:values=>values.some((x=>x))}),scrollHandler=Facet.define();class ScrollTarget{constructor(range){let y=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"nearest",x=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"nearest",yMargin=arguments.length>3&&void 0!==arguments[3]?arguments[3]:5,xMargin=arguments.length>4&&void 0!==arguments[4]?arguments[4]:5,isSnapshot=arguments.length>5&&void 0!==arguments[5]&&arguments[5];this.range=range,this.y=y,this.x=x,this.yMargin=yMargin,this.xMargin=xMargin,this.isSnapshot=isSnapshot}map(changes){return changes.empty?this:new ScrollTarget(this.range.map(changes),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}clip(state){return this.range.to<=state.doc.length?this:new ScrollTarget(EditorSelection.cursor(state.doc.length),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}}const scrollIntoView$1=StateEffect.define({map:(t,ch)=>t.map(ch)});function logException(state,exception,context){let handler=state.facet(exceptionSink);handler.length?handler[0](exception):window.onerror?window.onerror(String(exception),context,void 0,void 0,exception):context?console.error(context+":",exception):console.error(exception)}const editable=Facet.define({combine:values=>!values.length||values[0]});let nextPluginID=0;const viewPlugin=Facet.define();class ViewPlugin{constructor(id,create,domEventHandlers,domEventObservers,buildExtensions){this.id=id,this.create=create,this.domEventHandlers=domEventHandlers,this.domEventObservers=domEventObservers,this.extension=buildExtensions(this)}static define(create,spec){const{eventHandlers:eventHandlers,eventObservers:eventObservers,provide:provide,decorations:deco}=spec||{};return new ViewPlugin(nextPluginID++,create,eventHandlers,eventObservers,(plugin=>{let ext=[viewPlugin.of(plugin)];return deco&&ext.push(decorations.of((view=>{let pluginInst=view.plugin(plugin);return pluginInst?deco(pluginInst):Decoration.none}))),provide&&ext.push(provide(plugin)),ext}))}static fromClass(cls,spec){return ViewPlugin.define((view=>new cls(view)),spec)}}class PluginInstance{constructor(spec){this.spec=spec,this.mustUpdate=null,this.value=null}update(view){if(this.value){if(this.mustUpdate){let update=this.mustUpdate;if(this.mustUpdate=null,this.value.update)try{this.value.update(update)}catch(e){if(logException(update.state,e,"CodeMirror plugin crashed"),this.value.destroy)try{this.value.destroy()}catch(_){}this.deactivate()}}}else if(this.spec)try{this.value=this.spec.create(view)}catch(e){logException(view.state,e,"CodeMirror plugin crashed"),this.deactivate()}return this}destroy(view){var _a;if(null===(_a=this.value)||void 0===_a?void 0:_a.destroy)try{this.value.destroy()}catch(e){logException(view.state,e,"CodeMirror plugin crashed")}}deactivate(){this.spec=this.value=null}}const editorAttributes=Facet.define(),contentAttributes=Facet.define(),decorations=Facet.define(),outerDecorations=Facet.define(),atomicRanges=Facet.define(),bidiIsolatedRanges=Facet.define();function getIsolatedRanges(view,line){let isolates=view.state.facet(bidiIsolatedRanges);if(!isolates.length)return isolates;let sets=isolates.map((i=>i instanceof Function?i(view):i)),result=[];return RangeSet.spans(sets,line.from,line.to,{point(){},span(fromDoc,toDoc,active,open){let from=fromDoc-line.from,to=toDoc-line.from,level=result;for(let i=active.length-1;i>=0;i--,open--){let update,direction=active[i].spec.bidiIsolate;if(null==direction&&(direction=autoDirection(line.text,from,to)),open>0&&level.length&&(update=level[level.length-1]).to==from&&update.direction==direction)update.to=to,level=update.inner;else{let add={from:from,to:to,direction:direction,inner:[]};level.push(add),level=add.inner}}}}),result}const scrollMargins=Facet.define();function getScrollMargins(view){let left=0,right=0,top=0,bottom=0;for(let source of view.state.facet(scrollMargins)){let m=source(view);m&&(null!=m.left&&(left=Math.max(left,m.left)),null!=m.right&&(right=Math.max(right,m.right)),null!=m.top&&(top=Math.max(top,m.top)),null!=m.bottom&&(bottom=Math.max(bottom,m.bottom)))}return{left:left,right:right,top:top,bottom:bottom}}const styleModule=Facet.define();class ChangedRange{constructor(fromA,toA,fromB,toB){this.fromA=fromA,this.toA=toA,this.fromB=fromB,this.toB=toB}join(other){return new ChangedRange(Math.min(this.fromA,other.fromA),Math.max(this.toA,other.toA),Math.min(this.fromB,other.fromB),Math.max(this.toB,other.toB))}addToSet(set){let i=set.length,me=this;for(;i>0;i--){let range=set[i-1];if(!(range.fromA>me.toA)){if(range.toAend)break;rI+=2}if(!next)return result;new ChangedRange(next.fromA,next.toA,next.fromB,next.toB).addToSet(result),posA=next.toA,posB=next.toB}}}class ViewUpdate{constructor(view,state,transactions){this.view=view,this.state=state,this.transactions=transactions,this.flags=0,this.startState=view.state,this.changes=ChangeSet.empty(this.startState.doc.length);for(let tr of transactions)this.changes=this.changes.compose(tr.changes);let changedRanges=[];this.changes.iterChangedRanges(((fromA,toA,fromB,toB)=>changedRanges.push(new ChangedRange(fromA,toA,fromB,toB)))),this.changedRanges=changedRanges}static create(view,state,transactions){return new ViewUpdate(view,state,transactions)}get viewportChanged(){return(4&this.flags)>0}get heightChanged(){return(2&this.flags)>0}get geometryChanged(){return this.docChanged||(10&this.flags)>0}get focusChanged(){return(1&this.flags)>0}get docChanged(){return!this.changes.empty}get selectionSet(){return this.transactions.some((tr=>tr.selection))}get empty(){return 0==this.flags&&0==this.transactions.length}}class DocView extends ContentView{get length(){return this.view.state.doc.length}constructor(view){super(),this.view=view,this.decorations=[],this.dynamicDecorationMap=[],this.domChanged=null,this.hasComposition=null,this.markedForComposition=new Set,this.lastCompositionAfterCursor=!1,this.minWidth=0,this.minWidthFrom=0,this.minWidthTo=0,this.impreciseAnchor=null,this.impreciseHead=null,this.forceSelection=!1,this.lastUpdate=Date.now(),this.setDOM(view.contentDOM),this.children=[new LineView],this.children[0].setParent(this),this.updateDeco(),this.updateInner([new ChangedRange(0,0,0,view.state.doc.length)],0,null)}update(update){var _a;let changedRanges=update.changedRanges;this.minWidth>0&&changedRanges.length&&(changedRanges.every((_ref=>{let{fromA:fromA,toA:toA}=_ref;return toAthis.minWidthTo}))?(this.minWidthFrom=update.changes.mapPos(this.minWidthFrom,1),this.minWidthTo=update.changes.mapPos(this.minWidthTo,1)):this.minWidth=this.minWidthFrom=this.minWidthTo=0);let readCompositionAt=-1;this.view.inputState.composing>=0&&((null===(_a=this.domChanged)||void 0===_a?void 0:_a.newSel)?readCompositionAt=this.domChanged.newSel.head:function(changes,composition){let touched=!1;composition&&changes.iterChangedRanges(((from,to)=>{fromcomposition.from&&(touched=!0)}));return touched}(update.changes,this.hasComposition)||update.selectionSet||(readCompositionAt=update.state.selection.main.head));let composition=readCompositionAt>-1?function(view,changes,headPos){let found=findCompositionNode(view,headPos);if(!found)return null;let{node:textNode,from:from,to:to}=found,text=textNode.nodeValue;if(/[\n\r]/.test(text))return null;if(view.state.doc.sliceString(found.from,found.to)!=text)return null;let inv=changes.invertedDesc,range=new ChangedRange(inv.mapPos(from),inv.mapPos(to),from,to),marks=[];for(let parent=textNode.parentNode;;parent=parent.parentNode){let parentView=ContentView.get(parent);if(parentView instanceof MarkView)marks.push({node:parent,deco:parentView.mark});else{if(parentView instanceof LineView||"DIV"==parent.nodeName&&parent.parentNode==view.contentDOM)return{range:range,text:textNode,marks:marks,line:parent};if(parent==view.contentDOM)return null;marks.push({node:parent,deco:new MarkDecoration({inclusive:!0,attributes:getAttrs$1(parent),tagName:parent.tagName.toLowerCase()})})}}}(this.view,update.changes,readCompositionAt):null;if(this.domChanged=null,this.hasComposition){this.markedForComposition.clear();let{from:from,to:to}=this.hasComposition;changedRanges=new ChangedRange(from,to,update.changes.mapPos(from,-1),update.changes.mapPos(to,1)).addToSet(changedRanges.slice())}this.hasComposition=composition?{from:composition.range.fromB,to:composition.range.toB}:null,(browser.ie||browser.chrome)&&!composition&&update&&update.state.doc.lines!=update.startState.doc.lines&&(this.forceSelection=!0);let decoDiff=function(a,b,diff){let comp=new class{constructor(){this.changes=[]}compareRange(from,to){addRange(from,to,this.changes)}comparePoint(from,to){addRange(from,to,this.changes)}};return RangeSet.compare(a,b,diff,comp),comp.changes}(this.decorations,this.updateDeco(),update.changes);return changedRanges=ChangedRange.extendWithRanges(changedRanges,decoDiff),!!(7&this.flags||0!=changedRanges.length)&&(this.updateInner(changedRanges,update.startState.doc.length,composition),update.transactions.length&&(this.lastUpdate=Date.now()),!0)}updateInner(changes,oldLength,composition){this.view.viewState.mustMeasureContent=!0,this.updateChildren(changes,oldLength,composition);let{observer:observer}=this.view;observer.ignore((()=>{this.dom.style.height=this.view.viewState.contentHeight/this.view.scaleY+"px",this.dom.style.flexBasis=this.minWidth?this.minWidth+"px":"";let track=browser.chrome||browser.ios?{node:observer.selectionRange.focusNode,written:!1}:void 0;this.sync(this.view,track),this.flags&=-8,track&&(track.written||observer.selectionRange.focusNode!=track.node)&&(this.forceSelection=!0),this.dom.style.height=""})),this.markedForComposition.forEach((cView=>cView.flags&=-9));let gaps=[];if(this.view.viewport.from||this.view.viewport.to=0?ranges[i]:null;if(!next)break;let content,breakAtStart,openStart,openEnd,{fromA:fromA,toA:toA,fromB:fromB,toB:toB}=next;if(composition&&composition.range.fromBfromB){let before=ContentBuilder.build(this.view.state.doc,fromB,composition.range.fromB,this.decorations,this.dynamicDecorationMap),after=ContentBuilder.build(this.view.state.doc,composition.range.toB,toB,this.decorations,this.dynamicDecorationMap);breakAtStart=before.breakAtStart,openStart=before.openStart,openEnd=after.openEnd;let compLine=this.compositionView(composition);after.breakAtStart?compLine.breakAfter=1:after.content.length&&compLine.merge(compLine.length,compLine.length,after.content[0],!1,after.openStart,0)&&(compLine.breakAfter=after.content[0].breakAfter,after.content.shift()),before.content.length&&compLine.merge(0,0,before.content[before.content.length-1],!0,0,before.openEnd)&&before.content.pop(),content=before.content.concat(compLine).concat(after.content)}else({content:content,breakAtStart:breakAtStart,openStart:openStart,openEnd:openEnd}=ContentBuilder.build(this.view.state.doc,fromB,toB,this.decorations,this.dynamicDecorationMap));let{i:toI,off:toOff}=cursor.findPos(toA,1),{i:fromI,off:fromOff}=cursor.findPos(fromA,-1);replaceRange(this,fromI,fromOff,toI,toOff,content,breakAtStart,openStart,openEnd)}composition&&this.fixCompositionDOM(composition)}compositionView(composition){let cur=new TextView(composition.text.nodeValue);cur.flags|=8;for(let{deco:deco}of composition.marks)cur=new MarkView(deco,[cur],cur.length);let line=new LineView;return line.append(cur,0),line}fixCompositionDOM(composition){let fix=(dom,cView)=>{cView.flags|=8|(cView.children.some((c=>7&c.flags))?1:0),this.markedForComposition.add(cView);let prev=ContentView.get(dom);prev&&prev!=cView&&(prev.dom=null),cView.setDOM(dom)},pos=this.childPos(composition.range.fromB,1),cView=this.children[pos.i];fix(composition.line,cView);for(let i=composition.marks.length-1;i>=-1;i--)pos=cView.childPos(pos.off,1),cView=cView.children[pos.i],fix(i>=0?composition.marks[i].node:composition.text,cView)}updateSelection(){let fromPointer=arguments.length>1&&void 0!==arguments[1]&&arguments[1];!(arguments.length>0&&void 0!==arguments[0]&&arguments[0])&&this.view.observer.selectionRange.focusNode||this.view.observer.readSelectionRange();let activeElt=this.view.root.activeElement,focused=activeElt==this.dom,selectionNotFocus=!focused&&hasSelection(this.dom,this.view.observer.selectionRange)&&!(activeElt&&this.dom.contains(activeElt));if(!(focused||fromPointer||selectionNotFocus))return;let force=this.forceSelection;this.forceSelection=!1;let main=this.view.state.selection.main,anchor=this.moveToLine(this.domAtPos(main.anchor)),head=main.empty?anchor:this.moveToLine(this.domAtPos(main.head));if(browser.gecko&&main.empty&&!this.hasComposition&&(1==(pos=anchor).node.nodeType&&pos.node.firstChild&&(0==pos.offset||"false"==pos.node.childNodes[pos.offset-1].contentEditable)&&(pos.offset==pos.node.childNodes.length||"false"==pos.node.childNodes[pos.offset].contentEditable))){let dummy=document.createTextNode("");this.view.observer.ignore((()=>anchor.node.insertBefore(dummy,anchor.node.childNodes[anchor.offset]||null))),anchor=head=new DOMPos(dummy,0),force=!0}var pos;let domSel=this.view.observer.selectionRange;!force&&domSel.focusNode&&(isEquivalentPosition(anchor.node,anchor.offset,domSel.anchorNode,domSel.anchorOffset)&&isEquivalentPosition(head.node,head.offset,domSel.focusNode,domSel.focusOffset)||this.suppressWidgetCursorChange(domSel,main))||(this.view.observer.ignore((()=>{browser.android&&browser.chrome&&this.dom.contains(domSel.focusNode)&&function(node,inside){for(let cur=node;cur&&cur!=inside;cur=cur.assignedSlot||cur.parentNode)if(1==cur.nodeType&&"false"==cur.contentEditable)return!0;return!1}(domSel.focusNode,this.dom)&&(this.dom.blur(),this.dom.focus({preventScroll:!0}));let rawSel=getSelection(this.view.root);if(rawSel)if(main.empty){if(browser.gecko){let nextTo=(node=anchor.node,offset=anchor.offset,1!=node.nodeType?0:(offset&&"false"==node.childNodes[offset-1].contentEditable?1:0)|(offsetmain.head&&([anchor,head]=[head,anchor]),range.setEnd(head.node,head.offset),range.setStart(anchor.node,anchor.offset),rawSel.removeAllRanges(),rawSel.addRange(range)}else;var node,offset;selectionNotFocus&&this.view.root.activeElement==this.dom&&(this.dom.blur(),activeElt&&activeElt.focus())})),this.view.observer.setSelectionRange(anchor,head)),this.impreciseAnchor=anchor.precise?null:new DOMPos(domSel.anchorNode,domSel.anchorOffset),this.impreciseHead=head.precise?null:new DOMPos(domSel.focusNode,domSel.focusOffset)}suppressWidgetCursorChange(sel,cursor){return this.hasComposition&&cursor.empty&&isEquivalentPosition(sel.focusNode,sel.focusOffset,sel.anchorNode,sel.anchorOffset)&&this.posFromDOM(sel.focusNode,sel.focusOffset)==cursor.head}enforceCursorAssoc(){if(this.hasComposition)return;let{view:view}=this,cursor=view.state.selection.main,sel=getSelection(view.root),{anchorNode:anchorNode,anchorOffset:anchorOffset}=view.observer.selectionRange;if(!(sel&&cursor.empty&&cursor.assoc&&sel.modify))return;let line=LineView.find(this,cursor.head);if(!line)return;let lineStart=line.posAtStart;if(cursor.head==lineStart||cursor.head==lineStart+line.length)return;let before=this.coordsAt(cursor.head,-1),after=this.coordsAt(cursor.head,1);if(!before||!after||before.bottom>after.top)return;let dom=this.domAtPos(cursor.head+cursor.assoc);sel.collapse(dom.node,dom.offset),sel.modify("move",cursor.assoc<0?"forward":"backward","lineboundary"),view.observer.readSelectionRange();let newRange=view.observer.selectionRange;view.docView.posFromDOM(newRange.anchorNode,newRange.anchorOffset)!=cursor.from&&sel.collapse(anchorNode,anchorOffset)}moveToLine(pos){let newPos,dom=this.dom;if(pos.node!=dom)return pos;for(let i=pos.offset;!newPos&&i=0;i--){let view=ContentView.get(dom.childNodes[i]);view instanceof LineView&&(newPos=view.domAtPos(view.length))}return newPos?new DOMPos(newPos.node,newPos.offset,!0):pos}nearest(dom){for(let cur=dom;cur;){let domView=ContentView.get(cur);if(domView&&domView.rootView==this)return domView;cur=cur.parentNode}return null}posFromDOM(node,offset){let view=this.nearest(node);if(!view)throw new RangeError("Trying to find position for a DOM position outside of the document");return view.localPosFromDOM(node,offset)+view.posAtStart}domAtPos(pos){let{i:i,off:off}=this.childCursor().findPos(pos,-1);for(;i=0;i--){let child=this.children[i],end=off-child.breakAfter,start=end-child.length;if(endpos||child.covers(1))&&(!best||child instanceof LineView&&!(best instanceof LineView&&side>=0))&&(best=child,bestPos=start),off=start}return best?best.coordsAt(pos-bestPos,side):null}coordsForChar(pos){let{i:i,off:off}=this.childPos(pos,1),child=this.children[i];if(!(child instanceof LineView))return null;for(;child.children.length;){let{i:i,off:childOff}=child.childPos(off,1);for(;;i++){if(i==child.children.length)return null;if((child=child.children[i]).length)break}off=childOff}if(!(child instanceof TextView))return null;let end=findClusterBreak(child.text,off);if(end==off)return null;let rects=textRange(child.dom,off,end).getClientRects();for(let i=0;iMath.max(this.view.scrollDOM.clientWidth,this.minWidth)+1,widest=-1,ltr=this.view.textDirection==Direction.LTR;for(let pos=0,i=0;ito)break;if(pos>=from){let childRect=child.dom.getBoundingClientRect();if(result.push(childRect.height),isWider){let last=child.dom.lastChild,rects=last?clientRectsFor(last):[];if(rects.length){let rect=rects[rects.length-1],width=ltr?rect.right-childRect.left:childRect.right-rect.left;width>widest&&(widest=width,this.minWidth=contentWidth,this.minWidthFrom=pos,this.minWidthTo=end)}}}pos=end+child.breakAfter}return result}textDirectionAt(pos){let{i:i}=this.childPos(pos,1);return"rtl"==getComputedStyle(this.children[i].dom).direction?Direction.RTL:Direction.LTR}measureTextSize(){for(let child of this.children)if(child instanceof LineView){let measure=child.measureTextSize();if(measure)return measure}let lineHeight,charWidth,textHeight,dummy=document.createElement("div");return dummy.className="cm-line",dummy.style.width="99999px",dummy.style.position="absolute",dummy.textContent="abc def ghi jkl mno pqr stu",this.view.observer.ignore((()=>{this.dom.appendChild(dummy);let rect=clientRectsFor(dummy.firstChild)[0];lineHeight=dummy.getBoundingClientRect().height,charWidth=rect?rect.width/27:7,textHeight=rect?rect.height:lineHeight,dummy.remove()})),{lineHeight:lineHeight,charWidth:charWidth,textHeight:textHeight}}childCursor(){let pos=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.length,i=this.children.length;return i&&(pos-=this.children[--i].length),new ChildCursor(this.children,pos,i)}computeBlockGapDeco(){let deco=[],vs=this.view.viewState;for(let pos=0,i=0;;i++){let next=i==vs.viewports.length?null:vs.viewports[i],end=next?next.from-1:this.length;if(end>pos){let height=(vs.lineBlockAt(end).bottom-vs.lineBlockAt(pos).top)/this.view.scaleY;deco.push(Decoration.replace({widget:new BlockGapWidget(height),block:!0,inclusive:!0,isBlockGap:!0}).range(pos,end))}if(!next)break;pos=next.to+1}return Decoration.set(deco)}updateDeco(){let i=0,allDeco=this.view.state.facet(decorations).map((d=>(this.dynamicDecorationMap[i++]="function"==typeof d)?d(this.view):d)),dynamicOuter=!1,outerDeco=this.view.state.facet(outerDecorations).map(((d,i)=>{let dynamic="function"==typeof d;return dynamic&&(dynamicOuter=!0),dynamic?d(this.view):d}));for(outerDeco.length&&(this.dynamicDecorationMap[i++]=dynamicOuter,allDeco.push(RangeSet.join(outerDeco))),this.decorations=[...allDeco,this.computeBlockGapDeco(),this.view.viewState.lineGapDeco];irange.anchor?-1:1);if(!rect)return;!range.empty&&(other=this.coordsAt(range.anchor,range.anchor>range.head?-1:1))&&(rect={left:Math.min(rect.left,other.left),top:Math.min(rect.top,other.top),right:Math.max(rect.right,other.right),bottom:Math.max(rect.bottom,other.bottom)});let margins=getScrollMargins(this.view),targetRect={left:rect.left-margins.left,top:rect.top-margins.top,right:rect.right+margins.right,bottom:rect.bottom+margins.bottom},{offsetWidth:offsetWidth,offsetHeight:offsetHeight}=this.view.scrollDOM;!function(dom,rect,side,x,y,xMargin,yMargin,ltr){let doc=dom.ownerDocument,win=doc.defaultView||window;for(let cur=dom,stop=!1;cur&&!stop;)if(1==cur.nodeType){let bounding,top=cur==doc.body,scaleX=1,scaleY=1;if(top)bounding=windowRect(win);else{if(/^(fixed|sticky)$/.test(getComputedStyle(cur).position)&&(stop=!0),cur.scrollHeight<=cur.clientHeight&&cur.scrollWidth<=cur.clientWidth){cur=cur.assignedSlot||cur.parentNode;continue}let rect=cur.getBoundingClientRect();({scaleX:scaleX,scaleY:scaleY}=getScale(cur,rect)),bounding={left:rect.left,right:rect.left+cur.clientWidth*scaleX,top:rect.top,bottom:rect.top+cur.clientHeight*scaleY}}let moveX=0,moveY=0;if("nearest"==y)rect.top0&&rect.bottom>bounding.bottom+moveY&&(moveY=rect.bottom-bounding.bottom+moveY+yMargin)):rect.bottom>bounding.bottom&&(moveY=rect.bottom-bounding.bottom+yMargin,side<0&&rect.top-moveY0&&rect.right>bounding.right+moveX&&(moveX=rect.right-bounding.right+moveX+xMargin)):rect.right>bounding.right&&(moveX=rect.right-bounding.right+xMargin,side<0&&rect.leftx?rect.left-x:Math.max(0,x-rect.right)}function getdy(y,rect){return rect.top>y?rect.top-y:Math.max(0,y-rect.bottom)}function yOverlap(a,b){return a.topb.top+1}function upTop(rect,top){return toprect.bottom?{top:rect.top,left:rect.left,right:rect.right,bottom:bottom}:rect}function domPosAtCoords(parent,x,y){let closest,closestRect,closestX,closestY,above,below,aboveRect,belowRect,closestOverlap=!1;for(let child=parent.firstChild;child;child=child.nextSibling){let rects=clientRectsFor(child);for(let i=0;idy||closestY==dy&&closestX>dx){closest=child,closestRect=rect,closestX=dx,closestY=dy;let side=dy?y0?i0)}0==dx?y>rect.bottom&&(!aboveRect||aboveRect.bottomrect.top)&&(below=child,belowRect=rect):aboveRect&&yOverlap(aboveRect,rect)?aboveRect=upBot(aboveRect,rect.bottom):belowRect&&yOverlap(belowRect,rect)&&(belowRect=upTop(belowRect,rect.top))}}if(aboveRect&&aboveRect.bottom>=y?(closest=above,closestRect=aboveRect):belowRect&&belowRect.top<=y&&(closest=below,closestRect=belowRect),!closest)return{node:parent,offset:0};let clipX=Math.max(closestRect.left,Math.min(closestRect.right,x));return 3==closest.nodeType?domPosInText(closest,clipX,y):closestOverlap&&"false"!=closest.contentEditable?domPosAtCoords(closest,clipX,y):{node:parent,offset:Array.prototype.indexOf.call(parent.childNodes,closest)+(x>=(closestRect.left+closestRect.right)/2?1:0)}}function domPosInText(node,x,y){let len=node.nodeValue.length,closestOffset=-1,closestDY=1e9,generalSide=0;for(let i=0;iy?rect.top-y:y-rect.bottom)-1;if(rect.left-1<=x&&rect.right+1>=x&&dy=(rect.left+rect.right)/2,after=right;if(browser.chrome||browser.gecko){textRange(node,i).getBoundingClientRect().left==rect.right&&(after=!right)}if(dy<=0)return{node:node,offset:i+(after?1:0)};closestOffset=i+(after?1:0),closestDY=dy}}}return{node:node,offset:closestOffset>-1?closestOffset:generalSide>0?node.nodeValue.length:0}}function posAtCoords(view,coords,precise){let bias=arguments.length>3&&void 0!==arguments[3]?arguments[3]:-1;var _a,_b;let block,content=view.contentDOM.getBoundingClientRect(),docTop=content.top+view.viewState.paddingTop,{docHeight:docHeight}=view.viewState,{x:x,y:y}=coords,yOffset=y-docTop;if(yOffset<0)return 0;if(yOffset>docHeight)return view.state.doc.length;for(let halfLine=view.viewState.heightOracle.textHeight/2,bounced=!1;block=view.elementAtHeight(yOffset),block.type!=BlockType.Text;)for(;yOffset=bias>0?block.bottom+halfLine:block.top-halfLine,!(yOffset>=0&&yOffset<=docHeight);){if(bounced)return precise?null:0;bounced=!0,bias=-bias}y=docTop+yOffset;let lineStart=block.from;if(lineStartview.viewport.to)return view.viewport.to==view.state.doc.length?view.state.doc.length:precise?null:posAtCoordsImprecise(view,content,block,x,y);let doc=view.dom.ownerDocument,root=view.root.elementFromPoint?view.root:doc,element=root.elementFromPoint(x,y);element&&!view.contentDOM.contains(element)&&(element=null),element||(x=Math.max(content.left+1,Math.min(content.right-1,x)),element=root.elementFromPoint(x,y),element&&!view.contentDOM.contains(element)&&(element=null));let node,offset=-1;if(element&&0!=(null===(_a=view.docView.nearest(element))||void 0===_a?void 0:_a.isEditable))if(doc.caretPositionFromPoint){let pos=doc.caretPositionFromPoint(x,y);pos&&({offsetNode:node,offset:offset}=pos)}else if(doc.caretRangeFromPoint){let range=doc.caretRangeFromPoint(x,y);range&&(({startContainer:node,startOffset:offset}=range),(!view.contentDOM.contains(node)||browser.safari&&isSuspiciousSafariCaretResult(node,offset,x)||browser.chrome&&isSuspiciousChromeCaretResult(node,offset,x))&&(node=void 0))}if(!node||!view.docView.dom.contains(node)){let line=LineView.find(view.docView,lineStart);if(!line)return yOffset>block.top+block.height/2?block.to:block.from;({node:node,offset:offset}=domPosAtCoords(line.dom,x,y))}let nearest=view.docView.nearest(node);if(!nearest)return null;if(nearest.isWidget&&1==(null===(_b=nearest.dom)||void 0===_b?void 0:_b.nodeType)){let rect=nearest.dom.getBoundingClientRect();return coords.y1.5*view.defaultLineHeight){let textHeight=view.viewState.heightOracle.textHeight;into+=Math.floor((y-block.top-.5*(view.defaultLineHeight-textHeight))/textHeight)*view.viewState.heightOracle.lineLength}let content=view.state.sliceDoc(block.from,block.to);return block.from+findColumn(content,into,view.state.tabSize)}function isSuspiciousSafariCaretResult(node,offset,x){let len;if(3!=node.nodeType||offset!=(len=node.nodeValue.length))return!1;for(let next=node.nextSibling;next;next=next.nextSibling)if(1!=next.nodeType||"BR"!=next.nodeName)return!1;return textRange(node,len-1,len).getBoundingClientRect().left>x}function isSuspiciousChromeCaretResult(node,offset,x){if(0!=offset)return!1;for(let cur=node;;){let parent=cur.parentNode;if(!parent||1!=parent.nodeType||parent.firstChild!=cur)return!1;if(parent.classList.contains("cm-line"))break;cur=parent}return x-(1==node.nodeType?node.getBoundingClientRect():textRange(node,0,Math.max(node.nodeValue.length,1)).getBoundingClientRect()).left>5}function blockAt(view,pos){let line=view.lineBlockAt(pos);if(Array.isArray(line.type))for(let l of line.type)if(l.to>pos||l.to==pos&&(l.to==line.to||l.type==BlockType.Text))return l;return line}function moveByChar(view,start,forward,by){let line=view.state.doc.lineAt(start.head),spans=view.bidiSpans(line),direction=view.textDirectionAt(line.from);for(let cur=start,check=null;;){let next=moveVisually(line,spans,direction,cur,forward),char=movedOver;if(!next){if(line.number==(forward?view.state.doc.lines:1))return cur;char="\n",line=view.state.doc.line(line.number+(forward?1:-1)),spans=view.bidiSpans(line),next=view.visualLineSide(line,!forward)}if(check){if(!check(char))return cur}else{if(!by)return next;check=by(char)}cur=next}}function skipAtomicRanges(atoms,pos,bias){for(;;){let moved=0;for(let set of atoms)set.between(pos-1,pos+1,((from,to,value)=>{if(pos>from&&posf(view))),pos.from,oldPos.head>pos.from?-1:1);return newPos==pos.from?pos:EditorSelection.cursor(newPos,newPosnull)),browser.gecko&&function(doc){appliedFirefoxHack.has(doc)||(appliedFirefoxHack.add(doc),doc.addEventListener("copy",(()=>{})),doc.addEventListener("cut",(()=>{})))}(view.contentDOM.ownerDocument)}handleEvent(event){(function(view,event){if(!event.bubbles)return!0;if(event.defaultPrevented)return!1;for(let cView,node=event.target;node!=view.contentDOM;node=node.parentNode)if(!node||11==node.nodeType||(cView=ContentView.get(node))&&cView.ignoreEvent(event))return!1;return!0})(this.view,event)&&!this.ignoreDuringComposition(event)&&("keydown"==event.type&&this.keydown(event)||this.runHandlers(event.type,event))}runHandlers(type,event){let handlers=this.handlers[type];if(handlers){for(let observer of handlers.observers)observer(this.view,event);for(let handler of handlers.handlers){if(event.defaultPrevented)break;if(handler(this.view,event)){event.preventDefault();break}}}}ensureHandlers(plugins){let handlers=computeHandlers(plugins),prev=this.handlers,dom=this.view.contentDOM;for(let type in handlers)if("scroll"!=type){let passive=!handlers[type].handlers.length,exists=prev[type];exists&&passive!=!exists.handlers.length&&(dom.removeEventListener(type,this.handleEvent),exists=null),exists||dom.addEventListener(type,this.handleEvent,{passive:passive})}for(let type in prev)"scroll"==type||handlers[type]||dom.removeEventListener(type,this.handleEvent);this.handlers=handlers}keydown(event){if(this.lastKeyCode=event.keyCode,this.lastKeyTime=Date.now(),9==event.keyCode&&Date.now()key.keyCode==event.keyCode)))&&!event.ctrlKey||EmacsyPendingKeys.indexOf(event.key)>-1&&event.ctrlKey&&!event.shiftKey)?(229!=event.keyCode&&this.view.observer.forceFlush(),!1):(this.pendingIOSKey=pending||event,setTimeout((()=>this.flushIOSKey()),250),!0)}flushIOSKey(change){let key=this.pendingIOSKey;return!!key&&(!("Enter"==key.key&&change&&change.from0||!!(browser.safari&&!browser.ios&&this.compositionPendingKey&&Date.now()-this.compositionEndedAt<100)&&(this.compositionPendingKey=!1,!0))}startMouseSelection(mouseSelection){this.mouseSelection&&this.mouseSelection.destroy(),this.mouseSelection=mouseSelection}update(update){this.mouseSelection&&this.mouseSelection.update(update),this.draggedContent&&update.docChanged&&(this.draggedContent=this.draggedContent.map(update.changes)),update.transactions.length&&(this.lastKeyCode=this.lastSelectionTime=0)}destroy(){this.mouseSelection&&this.mouseSelection.destroy()}}function bindHandler(plugin,handler){return(view,event)=>{try{return handler.call(plugin,event,view)}catch(e){logException(view.state,e)}}}function computeHandlers(plugins){let result=Object.create(null);function record(type){return result[type]||(result[type]={observers:[],handlers:[]})}for(let plugin of plugins){let spec=plugin.spec;if(spec&&spec.domEventHandlers)for(let type in spec.domEventHandlers){let f=spec.domEventHandlers[type];f&&record(type).handlers.push(bindHandler(plugin.value,f))}if(spec&&spec.domEventObservers)for(let type in spec.domEventObservers){let f=spec.domEventObservers[type];f&&record(type).observers.push(bindHandler(plugin.value,f))}}for(let type in handlers)record(type).handlers.push(handlers[type]);for(let type in observers)record(type).observers.push(observers[type]);return result}const PendingKeys=[{key:"Backspace",keyCode:8,inputType:"deleteContentBackward"},{key:"Enter",keyCode:13,inputType:"insertParagraph"},{key:"Enter",keyCode:13,inputType:"insertLineBreak"},{key:"Delete",keyCode:46,inputType:"deleteContentForward"}],EmacsyPendingKeys="dthko",modifierCodes=[16,17,18,20,91,92,224,225];function dragScrollSpeed(dist){return.7*Math.max(0,dist)+8}class MouseSelection{constructor(view,startEvent,style,mustSelect){this.view=view,this.startEvent=startEvent,this.style=style,this.mustSelect=mustSelect,this.scrollSpeed={x:0,y:0},this.scrolling=-1,this.lastEvent=startEvent,this.scrollParent=function(dom){let doc=dom.ownerDocument;for(let cur=dom.parentNode;cur&&cur!=doc.body;)if(1==cur.nodeType){if(cur.scrollHeight>cur.clientHeight||cur.scrollWidth>cur.clientWidth)return cur;cur=cur.assignedSlot||cur.parentNode}else{if(11!=cur.nodeType)break;cur=cur.host}return null}(view.contentDOM),this.atoms=view.state.facet(atomicRanges).map((f=>f(view)));let doc=view.contentDOM.ownerDocument;doc.addEventListener("mousemove",this.move=this.move.bind(this)),doc.addEventListener("mouseup",this.up=this.up.bind(this)),this.extend=startEvent.shiftKey,this.multiple=view.state.facet(EditorState.allowMultipleSelections)&&function(view,event){let facet=view.state.facet(clickAddsSelectionRange);return facet.length?facet[0](event):browser.mac?event.metaKey:event.ctrlKey}(view,startEvent),this.dragging=!(!function(view,event){let{main:main}=view.state.selection;if(main.empty)return!1;let sel=getSelection(view.root);if(!sel||0==sel.rangeCount)return!0;let rects=sel.getRangeAt(0).getClientRects();for(let i=0;i=event.clientX&&rect.top<=event.clientY&&rect.bottom>=event.clientY)return!0}return!1}(view,startEvent)||1!=getClickType(startEvent))&&null}start(event){!1===this.dragging&&this.select(event)}move(event){var _a,a,b;if(0==event.buttons)return this.destroy();if(this.dragging||null==this.dragging&&(a=this.startEvent,b=event,Math.max(Math.abs(a.clientX-b.clientX),Math.abs(a.clientY-b.clientY))<10))return;this.select(this.lastEvent=event);let sx=0,sy=0,rect=(null===(_a=this.scrollParent)||void 0===_a?void 0:_a.getBoundingClientRect())||{left:0,top:0,right:this.view.win.innerWidth,bottom:this.view.win.innerHeight},margins=getScrollMargins(this.view);event.clientX-margins.left<=rect.left+6?sx=-dragScrollSpeed(rect.left-event.clientX):event.clientX+margins.right>=rect.right-6&&(sx=dragScrollSpeed(event.clientX-rect.right)),event.clientY-margins.top<=rect.top+6?sy=-dragScrollSpeed(rect.top-event.clientY):event.clientY+margins.bottom>=rect.bottom-6&&(sy=dragScrollSpeed(event.clientY-rect.bottom)),this.setScrollSpeed(sx,sy)}up(event){null==this.dragging&&this.select(this.lastEvent),this.dragging||event.preventDefault(),this.destroy()}destroy(){this.setScrollSpeed(0,0);let doc=this.view.contentDOM.ownerDocument;doc.removeEventListener("mousemove",this.move),doc.removeEventListener("mouseup",this.up),this.view.inputState.mouseSelection=this.view.inputState.draggedContent=null}setScrollSpeed(sx,sy){this.scrollSpeed={x:sx,y:sy},sx||sy?this.scrolling<0&&(this.scrolling=setInterval((()=>this.scroll()),50)):this.scrolling>-1&&(clearInterval(this.scrolling),this.scrolling=-1)}scroll(){this.scrollParent?(this.scrollParent.scrollLeft+=this.scrollSpeed.x,this.scrollParent.scrollTop+=this.scrollSpeed.y):this.view.win.scrollBy(this.scrollSpeed.x,this.scrollSpeed.y),!1===this.dragging&&this.select(this.lastEvent)}skipAtoms(sel){let ranges=null;for(let i=0;ithis.select(this.lastEvent)),20)}}const handlers=Object.create(null),observers=Object.create(null),brokenClipboardAPI=browser.ie&&browser.ie_version<15||browser.ios&&browser.webkit_version<604;function doPaste(view,input){let changes,{state:state}=view,i=1,text=state.toText(input),byLine=text.lines==state.selection.ranges.length;if(null!=lastLinewiseCopy&&state.selection.ranges.every((r=>r.empty))&&lastLinewiseCopy==text.toString()){let lastLine=-1;changes=state.changeByRange((range=>{let line=state.doc.lineAt(range.from);if(line.from==lastLine)return{range:range};lastLine=line.from;let insert=state.toText((byLine?text.line(i++).text:input)+state.lineBreak);return{changes:{from:line.from,insert:insert},range:EditorSelection.cursor(range.from+insert.length)}}))}else changes=byLine?state.changeByRange((range=>{let line=text.line(i++);return{changes:{from:range.from,to:range.to,insert:line.text},range:EditorSelection.cursor(range.from+line.length)}})):state.replaceSelection(text);view.dispatch(changes,{userEvent:"input.paste",scrollIntoView:!0})}function rangeForClick(view,pos,bias,type){if(1==type)return EditorSelection.cursor(pos,bias);if(2==type)return function(state,pos){let bias=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,categorize=state.charCategorizer(pos),line=state.doc.lineAt(pos),linePos=pos-line.from;if(0==line.length)return EditorSelection.cursor(pos);0==linePos?bias=1:linePos==line.length&&(bias=-1);let from=linePos,to=linePos;bias<0?from=findClusterBreak(line.text,linePos,!1):to=findClusterBreak(line.text,linePos);let cat=categorize(line.text.slice(from,to));for(;from>0;){let prev=findClusterBreak(line.text,from,!1);if(categorize(line.text.slice(prev,from))!=cat)break;from=prev}for(;to{view.inputState.lastScrollTop=view.scrollDOM.scrollTop,view.inputState.lastScrollLeft=view.scrollDOM.scrollLeft},handlers.keydown=(view,event)=>(view.inputState.setSelectionOrigin("select"),27==event.keyCode&&(view.inputState.lastEscPress=Date.now()),!1),observers.touchstart=(view,e)=>{view.inputState.lastTouchTime=Date.now(),view.inputState.setSelectionOrigin("select.pointer")},observers.touchmove=view=>{view.inputState.setSelectionOrigin("select.pointer")},handlers.mousedown=(view,event)=>{if(view.observer.flush(),view.inputState.lastTouchTime>Date.now()-2e3)return!1;let style=null;for(let makeStyle of view.state.facet(mouseSelectionStyle))if(style=makeStyle(view,event),style)break;if(style||0!=event.button||(style=function(view,event){let start=queryPos(view,event),type=getClickType(event),startSel=view.state.selection;return{update(update){update.docChanged&&(start.pos=update.changes.mapPos(start.pos),startSel=startSel.map(update.changes))},get(event,extend,multiple){let removed,cur=queryPos(view,event),range=rangeForClick(view,cur.pos,cur.bias,type);if(start.pos!=cur.pos&&!extend){let startRange=rangeForClick(view,start.pos,start.bias,type),from=Math.min(startRange.from,range.from),to=Math.max(startRange.to,range.to);range=from1&&(removed=function(sel,pos){for(let i=0;i=pos)return EditorSelection.create(sel.ranges.slice(0,i).concat(sel.ranges.slice(i+1)),sel.mainIndex==i?0:sel.mainIndex-(sel.mainIndex>i?1:0))}return null}(startSel,cur.pos))?removed:multiple?startSel.addRange(range):EditorSelection.create([range])}}}(view,event)),style){let mustFocus=!view.hasFocus;view.inputState.startMouseSelection(new MouseSelection(view,event,style,mustFocus)),mustFocus&&view.observer.ignore((()=>focusPreventScroll(view.contentDOM)));let mouseSel=view.inputState.mouseSelection;if(mouseSel)return mouseSel.start(event),!1===mouseSel.dragging}return!1};let insideY=(y,rect)=>y>=rect.top&&y<=rect.bottom,inside=(x,y,rect)=>insideY(y,rect)&&x>=rect.left&&x<=rect.right;function findPositionSide(view,pos,x,y){let line=LineView.find(view.docView,pos);if(!line)return 1;let off=pos-line.posAtStart;if(0==off)return 1;if(off==line.length)return-1;let before=line.coordsAt(off,-1);if(before&&inside(x,y,before))return-1;let after=line.coordsAt(off,1);return after&&inside(x,y,after)?1:before&&insideY(y,before)?-1:1}function queryPos(view,event){let pos=view.posAtCoords({x:event.clientX,y:event.clientY},!1);return{pos:pos,bias:findPositionSide(view,pos,event.clientX,event.clientY)}}const BadMouseDetail=browser.ie&&browser.ie_version<=11;let lastMouseDown=null,lastMouseDownCount=0,lastMouseDownTime=0;function getClickType(event){if(!BadMouseDetail)return event.detail;let last=lastMouseDown,lastTime=lastMouseDownTime;return lastMouseDown=event,lastMouseDownTime=Date.now(),lastMouseDownCount=!last||lastTime>Date.now()-400&&Math.abs(last.clientX-event.clientX)<2&&Math.abs(last.clientY-event.clientY)<2?(lastMouseDownCount+1)%3:1}function dropText(view,event,text,direct){if(!text)return;let dropPos=view.posAtCoords({x:event.clientX,y:event.clientY},!1),{draggedContent:draggedContent}=view.inputState,del=direct&&draggedContent&&function(view,event){let facet=view.state.facet(dragMovesSelection$1);return facet.length?facet[0](event):browser.mac?!event.altKey:!event.ctrlKey}(view,event)?{from:draggedContent.from,to:draggedContent.to}:null,ins={from:dropPos,insert:text},changes=view.state.changes(del?[del,ins]:ins);view.focus(),view.dispatch({changes:changes,selection:{anchor:changes.mapPos(dropPos,-1),head:changes.mapPos(dropPos,1)},userEvent:del?"move.drop":"input.drop"}),view.inputState.draggedContent=null}handlers.dragstart=(view,event)=>{let{selection:{main:range}}=view.state;if(event.target.draggable){let cView=view.docView.nearest(event.target);if(cView&&cView.isWidget){let from=cView.posAtStart,to=from+cView.length;(from>=range.to||to<=range.from)&&(range=EditorSelection.range(from,to))}}let{inputState:inputState}=view;return inputState.mouseSelection&&(inputState.mouseSelection.dragging=!0),inputState.draggedContent=range,event.dataTransfer&&(event.dataTransfer.setData("Text",view.state.sliceDoc(range.from,range.to)),event.dataTransfer.effectAllowed="copyMove"),!1},handlers.dragend=view=>(view.inputState.draggedContent=null,!1),handlers.drop=(view,event)=>{if(!event.dataTransfer)return!1;if(view.state.readOnly)return!0;let files=event.dataTransfer.files;if(files&&files.length){let text=Array(files.length),read=0,finishFile=()=>{++read==files.length&&dropText(view,event,text.filter((s=>null!=s)).join(view.state.lineBreak),!1)};for(let i=0;i{/[\x00-\x08\x0e-\x1f]{2}/.test(reader.result)||(text[i]=reader.result),finishFile()},reader.readAsText(files[i])}return!0}{let text=event.dataTransfer.getData("Text");if(text)return dropText(view,event,text,!0),!0}return!1},handlers.paste=(view,event)=>{if(view.state.readOnly)return!0;view.observer.flush();let data=brokenClipboardAPI?null:event.clipboardData;return data?(doPaste(view,data.getData("text/plain")||data.getData("text/uri-list")),!0):(function(view){let parent=view.dom.parentNode;if(!parent)return;let target=parent.appendChild(document.createElement("textarea"));target.style.cssText="position: fixed; left: -10000px; top: 10px",target.focus(),setTimeout((()=>{view.focus(),target.remove(),doPaste(view,target.value)}),50)}(view),!1)};let lastLinewiseCopy=null;handlers.copy=handlers.cut=(view,event)=>{let{text:text,ranges:ranges,linewise:linewise}=function(state){let content=[],ranges=[],linewise=!1;for(let range of state.selection.ranges)range.empty||(content.push(state.sliceDoc(range.from,range.to)),ranges.push(range));if(!content.length){let upto=-1;for(let{from:from}of state.selection.ranges){let line=state.doc.lineAt(from);line.number>upto&&(content.push(line.text),ranges.push({from:line.from,to:Math.min(state.doc.length,line.to+1)})),upto=line.number}linewise=!0}return{text:content.join(state.lineBreak),ranges:ranges,linewise:linewise}}(view.state);if(!text&&!linewise)return!1;lastLinewiseCopy=linewise?text:null,"cut"!=event.type||view.state.readOnly||view.dispatch({changes:ranges,scrollIntoView:!0,userEvent:"delete.cut"});let data=brokenClipboardAPI?null:event.clipboardData;return data?(data.clearData(),data.setData("text/plain",text),!0):(function(view,text){let parent=view.dom.parentNode;if(!parent)return;let target=parent.appendChild(document.createElement("textarea"));target.style.cssText="position: fixed; left: -10000px; top: 10px",target.value=text,target.focus(),target.selectionEnd=text.length,target.selectionStart=0,setTimeout((()=>{target.remove(),view.focus()}),50)}(view,text),!1)};const isFocusChange=Annotation.define();function focusChangeTransaction(state,focus){let effects=[];for(let getEffect of state.facet(focusChangeEffect)){let effect=getEffect(state,focus);effect&&effects.push(effect)}return effects?state.update({effects:effects,annotations:isFocusChange.of(!0)}):null}function updateForFocusChange(view){setTimeout((()=>{let focus=view.hasFocus;if(focus!=view.inputState.notifiedFocused){let tr=focusChangeTransaction(view.state,focus);tr?view.dispatch(tr):view.update([])}}),10)}observers.focus=view=>{view.inputState.lastFocusTime=Date.now(),view.scrollDOM.scrollTop||!view.inputState.lastScrollTop&&!view.inputState.lastScrollLeft||(view.scrollDOM.scrollTop=view.inputState.lastScrollTop,view.scrollDOM.scrollLeft=view.inputState.lastScrollLeft),updateForFocusChange(view)},observers.blur=view=>{view.observer.clearSelectionRange(),updateForFocusChange(view)},observers.compositionstart=observers.compositionupdate=view=>{null==view.inputState.compositionFirstChange&&(view.inputState.compositionFirstChange=!0),view.inputState.composing<0&&(view.inputState.composing=0)},observers.compositionend=view=>{view.inputState.composing=-1,view.inputState.compositionEndedAt=Date.now(),view.inputState.compositionPendingKey=!0,view.inputState.compositionPendingChange=view.observer.pendingRecords().length>0,view.inputState.compositionFirstChange=null,browser.chrome&&browser.android?view.observer.flushSoon():view.inputState.compositionPendingChange?Promise.resolve().then((()=>view.observer.flush())):setTimeout((()=>{view.inputState.composing<0&&view.docView.hasComposition&&view.update([])}),50)},observers.contextmenu=view=>{view.inputState.lastContextMenu=Date.now()},handlers.beforeinput=(view,event)=>{var _a;let pending;if(browser.chrome&&browser.android&&(pending=PendingKeys.find((key=>key.inputType==event.inputType)))&&(view.observer.delayAndroidKey(pending.key,pending.keyCode),"Backspace"==pending.key||"Delete"==pending.key)){let startViewHeight=(null===(_a=window.visualViewport)||void 0===_a?void 0:_a.height)||0;setTimeout((()=>{var _a;((null===(_a=window.visualViewport)||void 0===_a?void 0:_a.height)||0)>startViewHeight+10&&view.hasFocus&&(view.contentDOM.blur(),view.focus())}),100)}return browser.ios&&"deleteContentForward"==event.inputType&&view.observer.flushSoon(),browser.safari&&"insertText"==event.inputType&&view.inputState.composing>=0&&setTimeout((()=>observers.compositionend(view,event)),20),!1};const appliedFirefoxHack=new Set;const wrappingWhiteSpace=["pre-wrap","normal","pre-line","break-spaces"];class HeightOracle{constructor(lineWrapping){this.lineWrapping=lineWrapping,this.doc=Text.empty,this.heightSamples={},this.lineHeight=14,this.charWidth=7,this.textHeight=14,this.lineLength=30,this.heightChanged=!1}heightForGap(from,to){let lines=this.doc.lineAt(to).number-this.doc.lineAt(from).number+1;return this.lineWrapping&&(lines+=Math.max(0,Math.ceil((to-from-lines*this.lineLength*.5)/this.lineLength))),this.lineHeight*lines}heightForLine(length){if(!this.lineWrapping)return this.lineHeight;return(1+Math.max(0,Math.ceil((length-this.lineLength)/(this.lineLength-5))))*this.lineHeight}setDoc(doc){return this.doc=doc,this}mustRefreshForWrapping(whiteSpace){return wrappingWhiteSpace.indexOf(whiteSpace)>-1!=this.lineWrapping}mustRefreshForHeights(lineHeights){let newHeight=!1;for(let i=0;i-1,changed=Math.round(lineHeight)!=Math.round(this.lineHeight)||this.lineWrapping!=lineWrapping;if(this.lineWrapping=lineWrapping,this.lineHeight=lineHeight,this.charWidth=charWidth,this.textHeight=textHeight,this.lineLength=lineLength,changed){this.heightSamples={};for(let i=0;i2&&void 0!==arguments[2]?arguments[2]:2;this.length=length,this.height=height,this.flags=flags}get outdated(){return(2&this.flags)>0}set outdated(value){this.flags=(value?2:0)|-3&this.flags}setHeight(oracle,height){this.height!=height&&(Math.abs(this.height-height)>.001&&(oracle.heightChanged=!0),this.height=height)}replace(_from,_to,nodes){return HeightMap.of(nodes)}decomposeLeft(_to,result){result.push(this)}decomposeRight(_from,result){result.push(this)}applyChanges(decorations,oldDoc,oracle,changes){let me=this,doc=oracle.doc;for(let i=changes.length-1;i>=0;i--){let{fromA:fromA,toA:toA,fromB:fromB,toB:toB}=changes[i],start=me.lineAt(fromA,QueryType$1.ByPosNoHeight,oracle.setDoc(oldDoc),0,0),end=start.to>=toA?start:me.lineAt(toA,QueryType$1.ByPosNoHeight,oracle,0,0);for(toB+=end.to-toA,toA=end.to;i>0&&start.from<=changes[i-1].toA;)fromA=changes[i-1].fromA,fromB=changes[i-1].fromB,i--,fromA2*after){let split=nodes[i-1];split.break?nodes.splice(--i,1,split.left,null,split.right):nodes.splice(--i,1,split.left,split.right),j+=1+split.break,before-=split.size}else{if(!(after>2*before))break;{let split=nodes[j];split.break?nodes.splice(j,1,split.left,null,split.right):nodes.splice(j,1,split.left,split.right),j+=2+split.break,after-=split.size}}else if(before=offset&&f(this.blockAt(0,oracle,top,offset))}updateHeight(oracle){let offset=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,measured=arguments.length>3?arguments[3]:void 0;return measured&&measured.from<=offset&&measured.more&&this.setHeight(oracle,measured.heights[measured.index++]),this.outdated=!1,this}toString(){return"block(".concat(this.length,")")}}class HeightMapText extends HeightMapBlock{constructor(length,height){super(length,height,null),this.collapsed=0,this.widgetHeight=0,this.breaks=0}blockAt(_height,_oracle,top,offset){return new BlockInfo(offset,this.length,top,this.height,this.breaks)}replace(_from,_to,nodes){let node=nodes[0];return 1==nodes.length&&(node instanceof HeightMapText||node instanceof HeightMapGap&&4&node.flags)&&Math.abs(this.length-node.length)<10?(node instanceof HeightMapGap?node=new HeightMapText(node.length,this.height):node.height=this.height,this.outdated||(node.outdated=!1),node):HeightMap.of(nodes)}updateHeight(oracle){let offset=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,force=arguments.length>2&&void 0!==arguments[2]&&arguments[2],measured=arguments.length>3?arguments[3]:void 0;return measured&&measured.from<=offset&&measured.more?this.setHeight(oracle,measured.heights[measured.index++]):(force||this.outdated)&&this.setHeight(oracle,Math.max(this.widgetHeight,oracle.heightForLine(this.length-this.collapsed))+this.breaks*oracle.lineHeight),this.outdated=!1,this}toString(){return"line(".concat(this.length).concat(this.collapsed?-this.collapsed:"").concat(this.widgetHeight?":"+this.widgetHeight:"",")")}}class HeightMapGap extends HeightMap{constructor(length){super(length,0)}heightMetrics(oracle,offset){let perLine,firstLine=oracle.doc.lineAt(offset).number,lastLine=oracle.doc.lineAt(offset+this.length).number,lines=lastLine-firstLine+1,perChar=0;if(oracle.lineWrapping){let totalPerLine=Math.min(this.height,oracle.lineHeight*lines);perLine=totalPerLine/lines,this.length>lines+1&&(perChar=(this.height-totalPerLine)/(this.length-lines-1))}else perLine=this.height/lines;return{firstLine:firstLine,lastLine:lastLine,perLine:perLine,perChar:perChar}}blockAt(height,oracle,top,offset){let{firstLine:firstLine,lastLine:lastLine,perLine:perLine,perChar:perChar}=this.heightMetrics(oracle,offset);if(oracle.lineWrapping){let guess=offset+(height0){let last=nodes[nodes.length-1];last instanceof HeightMapGap?nodes[nodes.length-1]=new HeightMapGap(last.length+after):nodes.push(null,new HeightMapGap(after-1))}if(from>0){let first=nodes[0];first instanceof HeightMapGap?nodes[0]=new HeightMapGap(from+first.length):nodes.unshift(new HeightMapGap(from-1),null)}return HeightMap.of(nodes)}decomposeLeft(to,result){result.push(new HeightMapGap(to-1),null)}decomposeRight(from,result){result.push(null,new HeightMapGap(this.length-from-1))}updateHeight(oracle){let offset=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,force=arguments.length>2&&void 0!==arguments[2]&&arguments[2],measured=arguments.length>3?arguments[3]:void 0,end=offset+this.length;if(measured&&measured.from<=offset+this.length&&measured.more){let nodes=[],pos=Math.max(offset,measured.from),singleHeight=-1;for(measured.from>offset&&nodes.push(new HeightMapGap(measured.from-offset-1).updateHeight(oracle,offset));pos<=end&&measured.more;){let len=oracle.doc.lineAt(pos).length;nodes.length&&nodes.push(null);let height=measured.heights[measured.index++];-1==singleHeight?singleHeight=height:Math.abs(height-singleHeight)>=.001&&(singleHeight=-2);let line=new HeightMapText(len,height);line.outdated=!1,nodes.push(line),pos+=len+1}pos<=end&&nodes.push(null,new HeightMapGap(end-pos).updateHeight(oracle,pos));let result=HeightMap.of(nodes);return(singleHeight<0||Math.abs(result.height-this.height)>=.001||Math.abs(singleHeight-this.heightMetrics(oracle,offset).perLine)>=.001)&&(oracle.heightChanged=!0),result}return(force||this.outdated)&&(this.setHeight(oracle,oracle.heightForGap(offset,offset+this.length)),this.outdated=!1),this}toString(){return"gap(".concat(this.length,")")}}class HeightMapBranch extends HeightMap{constructor(left,brk,right){super(left.length+brk+right.length,left.height+right.height,brk|(left.outdated||right.outdated?2:0)),this.left=left,this.right=right,this.size=left.size+right.size}get break(){return 1&this.flags}blockAt(height,oracle,top,offset){let mid=top+this.left.height;return heightrightOffset))return base;let subQuery=type==QueryType$1.ByPosNoHeight?QueryType$1.ByPosNoHeight:QueryType$1.ByPos;return left?base.join(this.right.lineAt(rightOffset,subQuery,oracle,rightTop,rightOffset)):this.left.lineAt(rightOffset,subQuery,oracle,top,offset).join(base)}forEachLine(from,to,oracle,top,offset,f){let rightTop=top+this.left.height,rightOffset=offset+this.left.length+this.break;if(this.break)from=rightOffset&&this.right.forEachLine(from,to,oracle,rightTop,rightOffset,f);else{let mid=this.lineAt(rightOffset,QueryType$1.ByPos,oracle,top,offset);from=from&&mid.from<=to&&f(mid),to>mid.to&&this.right.forEachLine(mid.to+1,to,oracle,rightTop,rightOffset,f)}}replace(from,to,nodes){let rightStart=this.left.length+this.break;if(tothis.left.length)return this.balanced(this.left,this.right.replace(from-rightStart,to-rightStart,nodes));let result=[];from>0&&this.decomposeLeft(from,result);let left=result.length;for(let node of nodes)result.push(node);if(from>0&&mergeGaps(result,left-1),to=left&&result.push(null)),to>left&&this.right.decomposeLeft(to-left,result)}decomposeRight(from,result){let left=this.left.length,right=left+this.break;if(from>=right)return this.right.decomposeRight(from-right,result);from2*right.size||right.size>2*left.size?HeightMap.of(this.break?[left,null,right]:[left,right]):(this.left=left,this.right=right,this.height=left.height+right.height,this.outdated=left.outdated||right.outdated,this.size=left.size+right.size,this.length=left.length+this.break+right.length,this)}updateHeight(oracle){let offset=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,force=arguments.length>2&&void 0!==arguments[2]&&arguments[2],measured=arguments.length>3?arguments[3]:void 0,{left:left,right:right}=this,rightStart=offset+left.length+this.break,rebalance=null;return measured&&measured.from<=offset+left.length&&measured.more?rebalance=left=left.updateHeight(oracle,offset,force,measured):left.updateHeight(oracle,offset,force),measured&&measured.from<=rightStart+right.length&&measured.more?rebalance=right=right.updateHeight(oracle,rightStart,force,measured):right.updateHeight(oracle,rightStart,force),rebalance?this.balanced(left,right):(this.height=this.left.height+this.right.height,this.outdated=!1,this)}toString(){return this.left+(this.break?" ":"-")+this.right}}function mergeGaps(nodes,around){let before,after;null==nodes[around]&&(before=nodes[around-1])instanceof HeightMapGap&&(after=nodes[around+1])instanceof HeightMapGap&&nodes.splice(around-1,3,new HeightMapGap(before.length+1+after.length))}class NodeBuilder{constructor(pos,oracle){this.pos=pos,this.oracle=oracle,this.nodes=[],this.lineStart=-1,this.lineEnd=-1,this.covering=null,this.writtenTo=pos}get isCovered(){return this.covering&&this.nodes[this.nodes.length-1]==this.covering}span(_from,to){if(this.lineStart>-1){let end=Math.min(to,this.lineEnd),last=this.nodes[this.nodes.length-1];last instanceof HeightMapText?last.length+=end-this.pos:(end>this.pos||!this.isCovered)&&this.nodes.push(new HeightMapText(end-this.pos,-1)),this.writtenTo=end,to>end&&(this.nodes.push(null),this.writtenTo++,this.lineStart=-1)}this.pos=to}point(from,to,deco){if(from=5)&&this.addLineDeco(height,breaks,len)}else to>from&&this.span(from,to);this.lineEnd>-1&&this.lineEnd-1)return;let{from:from,to:to}=this.oracle.doc.lineAt(this.pos);this.lineStart=from,this.lineEnd=to,this.writtenTofrom&&this.nodes.push(new HeightMapText(this.pos-from,-1)),this.writtenTo=this.pos}blankContent(from,to){let gap=new HeightMapGap(to-from);return this.oracle.doc.lineAt(from).to==to&&(gap.flags|=4),gap}ensureLine(){this.enterLine();let last=this.nodes.length?this.nodes[this.nodes.length-1]:null;if(last instanceof HeightMapText)return last;let line=new HeightMapText(0,-1);return this.nodes.push(line),line}addBlock(block){this.enterLine();let deco=block.deco;deco&&deco.startSide>0&&!this.isCovered&&this.ensureLine(),this.nodes.push(block),this.writtenTo=this.pos=this.pos+block.length,deco&&deco.endSide>0&&(this.covering=block)}addLineDeco(height,breaks,length){let line=this.ensureLine();line.length+=length,line.collapsed+=length,line.widgetHeight=Math.max(line.widgetHeight,height),line.breaks+=breaks,this.writtenTo=this.pos=this.pos+length}finish(from){let last=0==this.nodes.length?null:this.nodes[this.nodes.length-1];!(this.lineStart>-1)||last instanceof HeightMapText||this.isCovered?(this.writtenToelt.clientHeight||elt.scrollWidth>elt.clientWidth)&&"visible"!=style.overflow){let parentRect=elt.getBoundingClientRect();left=Math.max(left,parentRect.left),right=Math.min(right,parentRect.right),top=Math.max(top,parentRect.top),bottom=parent==dom.parentNode?parentRect.bottom:Math.min(bottom,parentRect.bottom)}parent="absolute"==style.position||"fixed"==style.position?elt.offsetParent:elt.parentNode}else{if(11!=parent.nodeType)break;parent=parent.host}return{left:left-rect.left,right:Math.max(left,right)-rect.left,top:top-(rect.top+paddingTop),bottom:Math.max(top,bottom)-(rect.top+paddingTop)}}function fullPixelRange(dom,paddingTop){let rect=dom.getBoundingClientRect();return{left:0,right:rect.right-rect.left,top:paddingTop,bottom:rect.bottom-(rect.top+paddingTop)}}class LineGap{constructor(from,to,size){this.from=from,this.to=to,this.size=size}static same(a,b){if(a.length!=b.length)return!1;for(let i=0;i"function"!=typeof v&&"cm-lineWrapping"==v.class));this.heightOracle=new HeightOracle(guessWrapping),this.stateDeco=state.facet(decorations).filter((d=>"function"!=typeof d)),this.heightMap=HeightMap.empty().applyChanges(this.stateDeco,Text.empty,this.heightOracle.setDoc(state.doc),[new ChangedRange(0,0,0,state.doc.length)]),this.viewport=this.getViewport(0,null),this.updateViewportLines(),this.updateForViewport(),this.lineGaps=this.ensureLineGaps([]),this.lineGapDeco=Decoration.set(this.lineGaps.map((gap=>gap.draw(this,!1)))),this.computeVisibleRanges()}updateForViewport(){let viewports=[this.viewport],{main:main}=this.state.selection;for(let i=0;i<=1;i++){let pos=i?main.head:main.anchor;if(!viewports.some((_ref2=>{let{from:from,to:to}=_ref2;return pos>=from&&pos<=to}))){let{from:from,to:to}=this.lineBlockAt(pos);viewports.push(new Viewport(from,to))}}this.viewports=viewports.sort(((a,b)=>a.from-b.from)),this.scaler=this.heightMap.height<=7e6?IdScaler:new BigScaler(this.heightOracle,this.heightMap,this.viewports)}updateViewportLines(){this.viewportLines=[],this.heightMap.forEachLine(this.viewport.from,this.viewport.to,this.heightOracle.setDoc(this.state.doc),0,0,(block=>{this.viewportLines.push(1==this.scaler.scale?block:scaleBlock(block,this.scaler))}))}update(update){let scrollTarget=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;this.state=update.state;let prevDeco=this.stateDeco;this.stateDeco=this.state.facet(decorations).filter((d=>"function"!=typeof d));let contentChanges=update.changedRanges,heightChanges=ChangedRange.extendWithRanges(contentChanges,function(a,b,diff){let comp=new DecorationComparator;return RangeSet.compare(a,b,diff,comp,0),comp.changes}(prevDeco,this.stateDeco,update?update.changes:ChangeSet.empty(this.state.doc.length))),prevHeight=this.heightMap.height,scrollAnchor=this.scrolledToBottom?null:this.scrollAnchorAt(this.scrollTop);this.heightMap=this.heightMap.applyChanges(this.stateDeco,update.startState.doc,this.heightOracle.setDoc(this.state.doc),heightChanges),this.heightMap.height!=prevHeight&&(update.flags|=2),scrollAnchor?(this.scrollAnchorPos=update.changes.mapPos(scrollAnchor.from,-1),this.scrollAnchorHeight=scrollAnchor.top):(this.scrollAnchorPos=-1,this.scrollAnchorHeight=this.heightMap.height);let viewport=heightChanges.length?this.mapViewport(this.viewport,update.changes):this.viewport;(scrollTarget&&(scrollTarget.range.headviewport.to)||!this.viewportIsAppropriate(viewport))&&(viewport=this.getViewport(0,scrollTarget));let updateLines=!update.changes.empty||2&update.flags||viewport.from!=this.viewport.from||viewport.to!=this.viewport.to;this.viewport=viewport,this.updateForViewport(),updateLines&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(this.mapLineGaps(this.lineGaps,update.changes))),update.flags|=this.computeVisibleRanges(),scrollTarget&&(this.scrollTarget=scrollTarget),!this.mustEnforceCursorAssoc&&update.selectionSet&&update.view.lineWrapping&&update.state.selection.main.empty&&update.state.selection.main.assoc&&!update.state.facet(nativeSelectionHidden)&&(this.mustEnforceCursorAssoc=!0)}measure(view){let dom=view.contentDOM,style=window.getComputedStyle(dom),oracle=this.heightOracle,whiteSpace=style.whiteSpace;this.defaultTextDirection="rtl"==style.direction?Direction.RTL:Direction.LTR;let refresh=this.heightOracle.mustRefreshForWrapping(whiteSpace),domRect=dom.getBoundingClientRect(),measureContent=refresh||this.mustMeasureContent||this.contentDOMHeight!=domRect.height;this.contentDOMHeight=domRect.height,this.mustMeasureContent=!1;let result=0,bias=0;if(domRect.width&&domRect.height){let{scaleX:scaleX,scaleY:scaleY}=getScale(dom,domRect);(scaleX>.005&&Math.abs(this.scaleX-scaleX)>.005||scaleY>.005&&Math.abs(this.scaleY-scaleY)>.005)&&(this.scaleX=scaleX,this.scaleY=scaleY,result|=8,refresh=measureContent=!0)}let paddingTop=(parseInt(style.paddingTop)||0)*this.scaleY,paddingBottom=(parseInt(style.paddingBottom)||0)*this.scaleY;this.paddingTop==paddingTop&&this.paddingBottom==paddingBottom||(this.paddingTop=paddingTop,this.paddingBottom=paddingBottom,result|=10),this.editorWidth!=view.scrollDOM.clientWidth&&(oracle.lineWrapping&&(measureContent=!0),this.editorWidth=view.scrollDOM.clientWidth,result|=8);let scrollTop=view.scrollDOM.scrollTop*this.scaleY;this.scrollTop!=scrollTop&&(this.scrollAnchorHeight=-1,this.scrollTop=scrollTop),this.scrolledToBottom=isScrolledToBottom(view.scrollDOM);let pixelViewport=(this.printing?fullPixelRange:visiblePixelRange)(dom,this.paddingTop),dTop=pixelViewport.top-this.pixelViewport.top,dBottom=pixelViewport.bottom-this.pixelViewport.bottom;this.pixelViewport=pixelViewport;let inView=this.pixelViewport.bottom>this.pixelViewport.top&&this.pixelViewport.right>this.pixelViewport.left;if(inView!=this.inView&&(this.inView=inView,inView&&(measureContent=!0)),!this.inView&&!this.scrollTarget)return 0;let contentWidth=domRect.width;if(this.contentDOMWidth==contentWidth&&this.editorHeight==view.scrollDOM.clientHeight||(this.contentDOMWidth=domRect.width,this.editorHeight=view.scrollDOM.clientHeight,result|=8),measureContent){let lineHeights=view.docView.measureVisibleLineHeights(this.viewport);if(oracle.mustRefreshForHeights(lineHeights)&&(refresh=!0),refresh||oracle.lineWrapping&&Math.abs(contentWidth-this.contentDOMWidth)>oracle.charWidth){let{lineHeight:lineHeight,charWidth:charWidth,textHeight:textHeight}=view.docView.measureTextSize();refresh=lineHeight>0&&oracle.refresh(whiteSpace,lineHeight,charWidth,textHeight,contentWidth/charWidth,lineHeights),refresh&&(view.docView.minWidth=0,result|=8)}dTop>0&&dBottom>0?bias=Math.max(dTop,dBottom):dTop<0&&dBottom<0&&(bias=Math.min(dTop,dBottom)),oracle.heightChanged=!1;for(let vp of this.viewports){let heights=vp.from==this.viewport.from?lineHeights:view.docView.measureVisibleLineHeights(vp);this.heightMap=(refresh?HeightMap.empty().applyChanges(this.stateDeco,Text.empty,this.heightOracle,[new ChangedRange(0,0,0,view.state.doc.length)]):this.heightMap).updateHeight(oracle,0,refresh,new MeasuredHeights(vp.from,heights))}oracle.heightChanged&&(result|=2)}let viewportChange=!this.viewportIsAppropriate(this.viewport,bias)||this.scrollTarget&&(this.scrollTarget.range.headthis.viewport.to);return viewportChange&&(this.viewport=this.getViewport(bias,this.scrollTarget)),this.updateForViewport(),(2&result||viewportChange)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(refresh?[]:this.lineGaps,view)),result|=this.computeVisibleRanges(),this.mustEnforceCursorAssoc&&(this.mustEnforceCursorAssoc=!1,view.docView.enforceCursorAssoc()),result}get visibleTop(){return this.scaler.fromDOM(this.pixelViewport.top)}get visibleBottom(){return this.scaler.fromDOM(this.pixelViewport.bottom)}getViewport(bias,scrollTarget){let marginTop=.5-Math.max(-.5,Math.min(.5,bias/1e3/2)),map=this.heightMap,oracle=this.heightOracle,{visibleTop:visibleTop,visibleBottom:visibleBottom}=this,viewport=new Viewport(map.lineAt(visibleTop-1e3*marginTop,QueryType$1.ByHeight,oracle,0,0).from,map.lineAt(visibleBottom+1e3*(1-marginTop),QueryType$1.ByHeight,oracle,0,0).to);if(scrollTarget){let{head:head}=scrollTarget.range;if(headviewport.to){let topPos,viewHeight=Math.min(this.editorHeight,this.pixelViewport.bottom-this.pixelViewport.top),block=map.lineAt(head,QueryType$1.ByPos,oracle,0,0);topPos="center"==scrollTarget.y?(block.top+block.bottom)/2-viewHeight/2:"start"==scrollTarget.y||"nearest"==scrollTarget.y&&head1&&void 0!==arguments[1]?arguments[1]:0;if(!this.inView)return!0;let{top:top}=this.heightMap.lineAt(from,QueryType$1.ByPos,this.heightOracle,0,0),{bottom:bottom}=this.heightMap.lineAt(to,QueryType$1.ByPos,this.heightOracle,0,0),{visibleTop:visibleTop,visibleBottom:visibleBottom}=this;return(0==from||top<=visibleTop-Math.max(10,Math.min(-bias,250)))&&(to==this.state.doc.length||bottom>=visibleBottom+Math.max(10,Math.min(bias,250)))&&top>visibleTop-2e3&&bottom>1,doubleMargin=margin<<1;if(this.defaultTextDirection!=Direction.LTR&&!wrapping)return[];let gaps=[],addGap=(from,to,line,structure)=>{if(to-fromfrom&&posgap.from>=line.from&&gap.to<=line.to&&Math.abs(gap.from-from)gap.frompos))));if(!gap){if(tor.from<=to&&r.to>=to))){let lineStart=mayMeasure.moveToLineBoundary(EditorSelection.cursor(to),!1,!0).head;lineStart>from&&(to=lineStart)}gap=new LineGap(from,to,this.gapSize(line,from,to,structure))}gaps.push(gap)};for(let line of this.viewportLines){if(line.lengthline.from&&addGap(line.from,viewFrom,line,structure),viewTogap.draw(this,this.heightOracle.lineWrapping)))))}computeVisibleRanges(){let deco=this.stateDeco;this.lineGaps.length&&(deco=deco.concat(this.lineGapDeco));let ranges=[];RangeSet.spans(deco,this.viewport.from,this.viewport.to,{span(from,to){ranges.push({from:from,to:to})},point(){}},20);let changed=ranges.length!=this.visibleRanges.length||this.visibleRanges.some(((r,i)=>r.from!=ranges[i].from||r.to!=ranges[i].to));return this.visibleRanges=ranges,changed?4:0}lineBlockAt(pos){return pos>=this.viewport.from&&pos<=this.viewport.to&&this.viewportLines.find((b=>b.from<=pos&&b.to>=pos))||scaleBlock(this.heightMap.lineAt(pos,QueryType$1.ByPos,this.heightOracle,0,0),this.scaler)}lineBlockAtHeight(height){return scaleBlock(this.heightMap.lineAt(this.scaler.fromDOM(height),QueryType$1.ByHeight,this.heightOracle,0,0),this.scaler)}scrollAnchorAt(scrollTop){let block=this.lineBlockAtHeight(scrollTop+8);return block.from>=this.viewport.from||this.viewportLines[0].top-scrollTop>200?block:this.viewportLines[0]}elementAtHeight(height){return scaleBlock(this.heightMap.blockAt(this.scaler.fromDOM(height),this.heightOracle,0,0),this.scaler)}get docHeight(){return this.scaler.toDOM(this.heightMap.height)}get contentHeight(){return this.docHeight+this.paddingTop+this.paddingBottom}}class Viewport{constructor(from,to){this.from=from,this.to=to}}function lineStructure(from,to,stateDeco){let ranges=[],pos=from,total=0;return RangeSet.spans(stateDeco,from,to,{span(){},point(from,to){from>pos&&(ranges.push({from:pos,to:from}),total+=from-pos),pos=to}},20),pos=1)return ranges[ranges.length-1].to;let dist=Math.floor(total*ratio);for(let i=0;;i++){let{from:from,to:to}=ranges[i],size=to-from;if(dist<=size)return from+dist;dist-=size}}function findFraction(structure,pos){let counted=0;for(let{from:from,to:to}of structure.ranges){if(pos<=to){counted+=pos-from;break}counted+=to-from}return counted/structure.total}const IdScaler={toDOM:n=>n,fromDOM:n=>n,scale:1};class BigScaler{constructor(oracle,heightMap,viewports){let vpHeight=0,base=0,domBase=0;this.viewports=viewports.map((_ref5=>{let{from:from,to:to}=_ref5,top=heightMap.lineAt(from,QueryType$1.ByPos,oracle,0,0).top,bottom=heightMap.lineAt(to,QueryType$1.ByPos,oracle,0,0).bottom;return vpHeight+=bottom-top,{from:from,to:to,top:top,bottom:bottom,domTop:0,domBottom:0}})),this.scale=(7e6-vpHeight)/(heightMap.height-vpHeight);for(let obj of this.viewports)obj.domTop=domBase+(obj.top-base)*this.scale,domBase=obj.domBottom=obj.domTop+(obj.bottom-obj.top),base=obj.bottom}toDOM(n){for(let i=0,base=0,domBase=0;;i++){let vp=iscaleBlock(b,scaler))):block._content)}const theme=Facet.define({combine:strs=>strs.join(" ")}),darkTheme=Facet.define({combine:values=>values.indexOf(!0)>-1}),baseThemeID=StyleModule.newName(),baseLightID=StyleModule.newName(),baseDarkID=StyleModule.newName(),lightDarkIDs={"&light":"."+baseLightID,"&dark":"."+baseDarkID};function buildTheme(main,spec,scopes){return new StyleModule(spec,{finish:sel=>/&/.test(sel)?sel.replace(/&\w*/,(m=>{if("&"==m)return main;if(!scopes||!scopes[m])throw new RangeError("Unsupported selector: ".concat(m));return scopes[m]})):main+" "+sel})}const baseTheme$1$3=buildTheme("."+baseThemeID,{"&":{position:"relative !important",boxSizing:"border-box","&.cm-focused":{outline:"1px dotted #212121"},display:"flex !important",flexDirection:"column"},".cm-scroller":{display:"flex !important",alignItems:"flex-start !important",fontFamily:"monospace",lineHeight:1.4,height:"100%",overflowX:"auto",position:"relative",zIndex:0},".cm-content":{margin:0,flexGrow:2,flexShrink:0,display:"block",whiteSpace:"pre",wordWrap:"normal",boxSizing:"border-box",minHeight:"100%",padding:"4px 0",outline:"none","&[contenteditable=true]":{WebkitUserModify:"read-write-plaintext-only"}},".cm-lineWrapping":{whiteSpace_fallback:"pre-wrap",whiteSpace:"break-spaces",wordBreak:"break-word",overflowWrap:"anywhere",flexShrink:1},"&light .cm-content":{caretColor:"black"},"&dark .cm-content":{caretColor:"white"},".cm-line":{display:"block",padding:"0 2px 0 6px"},".cm-layer":{position:"absolute",left:0,top:0,contain:"size style","& > *":{position:"absolute"}},"&light .cm-selectionBackground":{background:"#d9d9d9"},"&dark .cm-selectionBackground":{background:"#222"},"&light.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#d7d4f0"},"&dark.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#233"},".cm-cursorLayer":{pointerEvents:"none"},"&.cm-focused > .cm-scroller > .cm-cursorLayer":{animation:"steps(1) cm-blink 1.2s infinite"},"@keyframes cm-blink":{"0%":{},"50%":{opacity:0},"100%":{}},"@keyframes cm-blink2":{"0%":{},"50%":{opacity:0},"100%":{}},".cm-cursor, .cm-dropCursor":{borderLeft:"1.2px solid black",marginLeft:"-0.6px",pointerEvents:"none"},".cm-cursor":{display:"none"},"&dark .cm-cursor":{borderLeftColor:"#444"},".cm-dropCursor":{position:"absolute"},"&.cm-focused > .cm-scroller > .cm-cursorLayer .cm-cursor":{display:"block"},".cm-iso":{unicodeBidi:"isolate"},".cm-announced":{position:"fixed",top:"-10000px"},"@media print":{".cm-announced":{display:"none"}},"&light .cm-activeLine":{backgroundColor:"#cceeff44"},"&dark .cm-activeLine":{backgroundColor:"#99eeff33"},"&light .cm-specialChar":{color:"red"},"&dark .cm-specialChar":{color:"#f78"},".cm-gutters":{flexShrink:0,display:"flex",height:"100%",boxSizing:"border-box",insetInlineStart:0,zIndex:200},"&light .cm-gutters":{backgroundColor:"#f5f5f5",color:"#6c6c6c",borderRight:"1px solid #ddd"},"&dark .cm-gutters":{backgroundColor:"#333338",color:"#ccc"},".cm-gutter":{display:"flex !important",flexDirection:"column",flexShrink:0,boxSizing:"border-box",minHeight:"100%",overflow:"hidden"},".cm-gutterElement":{boxSizing:"border-box"},".cm-lineNumbers .cm-gutterElement":{padding:"0 3px 0 5px",minWidth:"20px",textAlign:"right",whiteSpace:"nowrap"},"&light .cm-activeLineGutter":{backgroundColor:"#e2f2ff"},"&dark .cm-activeLineGutter":{backgroundColor:"#222227"},".cm-panels":{boxSizing:"border-box",position:"sticky",left:0,right:0},"&light .cm-panels":{backgroundColor:"#f5f5f5",color:"black"},"&light .cm-panels-top":{borderBottom:"1px solid #ddd"},"&light .cm-panels-bottom":{borderTop:"1px solid #ddd"},"&dark .cm-panels":{backgroundColor:"#333338",color:"white"},".cm-tab":{display:"inline-block",overflow:"hidden",verticalAlign:"bottom"},".cm-widgetBuffer":{verticalAlign:"text-top",height:"1em",width:0,display:"inline"},".cm-placeholder":{color:"#888",display:"inline-block",verticalAlign:"top"},".cm-highlightSpace:before":{content:"attr(data-display)",position:"absolute",pointerEvents:"none",color:"#888"},".cm-highlightTab":{backgroundImage:'url(\'data:image/svg+xml, \')',backgroundSize:"auto 100%",backgroundPosition:"right 90%",backgroundRepeat:"no-repeat"},".cm-trailingSpace":{backgroundColor:"#ff332255"},".cm-button":{verticalAlign:"middle",color:"inherit",fontSize:"70%",padding:".2em 1em",borderRadius:"1px"},"&light .cm-button":{backgroundImage:"linear-gradient(#eff1f5, #d9d9df)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#b4b4b4, #d0d3d6)"}},"&dark .cm-button":{backgroundImage:"linear-gradient(#393939, #111)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#111, #333)"}},".cm-textfield":{verticalAlign:"middle",color:"inherit",fontSize:"70%",border:"1px solid silver",padding:".2em .5em"},"&light .cm-textfield":{backgroundColor:"white"},"&dark .cm-textfield":{border:"1px solid #555",backgroundColor:"inherit"}},lightDarkIDs);class DOMReader{constructor(points,state){this.points=points,this.text="",this.lineSeparator=state.facet(EditorState.lineSeparator)}append(text){this.text+=text}lineBreak(){this.text+=""}readRange(start,end){if(!start)return this;let parent=start.parentNode;for(let cur=start;;){this.findPointBefore(parent,cur);let oldLen=this.text.length;this.readNode(cur);let next=cur.nextSibling;if(next==end)break;let view=ContentView.get(cur),nextView=ContentView.get(next);(view&&nextView?view.breakAfter:(view?view.breakAfter:isBlockElement(cur))||isBlockElement(next)&&("BR"!=cur.nodeName||cur.cmIgnore)&&this.text.length>oldLen)&&this.lineBreak(),cur=next}return this.findPointBefore(parent,end),this}readTextNode(node){let text=node.nodeValue;for(let point of this.points)point.node==node&&(point.pos=this.text.length+Math.min(point.offset,text.length));for(let off=0,re=this.lineSeparator?null:/\r\n?|\n/g;;){let m,nextBreak=-1,breakSize=1;if(this.lineSeparator?(nextBreak=text.indexOf(this.lineSeparator,off),breakSize=this.lineSeparator.length):(m=re.exec(text))&&(nextBreak=m.index,breakSize=m[0].length),this.append(text.slice(off,nextBreak<0?text.length:nextBreak)),nextBreak<0)break;if(this.lineBreak(),breakSize>1)for(let point of this.points)point.node==node&&point.pos>this.text.length&&(point.pos-=breakSize-1);off=nextBreak+breakSize}}readNode(node){if(node.cmIgnore)return;let view=ContentView.get(node),fromView=view&&view.overrideDOMText;if(null!=fromView){this.findPointInside(node,fromView.length);for(let i=fromView.iter();!i.next().done;)i.lineBreak?this.lineBreak():this.append(i.value)}else 3==node.nodeType?this.readTextNode(node):"BR"==node.nodeName?node.nextSibling&&this.lineBreak():1==node.nodeType&&this.readRange(node.firstChild,null)}findPointBefore(node,next){for(let point of this.points)point.node==node&&node.childNodes[point.offset]==next&&(point.pos=this.text.length)}findPointInside(node,length){for(let point of this.points)(3==node.nodeType?point.node==node:node.contains(point.node))&&(point.pos=this.text.length+(isAtEnd(node,point.node,point.offset)?length:0))}}function isAtEnd(parent,node,offset){for(;;){if(!node||offset-1)this.newSel=null;else if(start>-1&&(this.bounds=view.docView.domBoundsAround(start,end,0))){let selPoints=iHead||iAnchor?[]:function(view){let result=[];if(view.root.activeElement!=view.contentDOM)return result;let{anchorNode:anchorNode,anchorOffset:anchorOffset,focusNode:focusNode,focusOffset:focusOffset}=view.observer.selectionRange;anchorNode&&(result.push(new DOMPoint(anchorNode,anchorOffset)),focusNode==anchorNode&&focusOffset==anchorOffset||result.push(new DOMPoint(focusNode,focusOffset)));return result}(view),reader=new DOMReader(selPoints,view.state);reader.readRange(this.bounds.startDOM,this.bounds.endDOM),this.text=reader.text,this.newSel=function(points,base){if(0==points.length)return null;let anchor=points[0].pos,head=2==points.length?points[1].pos:anchor;return anchor>-1&&head>-1?EditorSelection.single(anchor+base,head+base):null}(selPoints,this.bounds.from)}else{let domSel=view.observer.selectionRange,head=iHead&&iHead.node==domSel.focusNode&&iHead.offset==domSel.focusOffset||!contains(view.contentDOM,domSel.focusNode)?view.state.selection.main.head:view.docView.posFromDOM(domSel.focusNode,domSel.focusOffset),anchor=iAnchor&&iAnchor.node==domSel.anchorNode&&iAnchor.offset==domSel.anchorOffset||!contains(view.contentDOM,domSel.anchorNode)?view.state.selection.main.anchor:view.docView.posFromDOM(domSel.anchorNode,domSel.anchorOffset),vp=view.viewport;if((browser.ios||browser.chrome)&&view.state.selection.main.empty&&head!=anchor&&(vp.from>0||vp.toDate.now()-100?view.inputState.lastKeyCode:-1;if(domChange.bounds){let{from:from,to:to}=domChange.bounds,preferredPos=sel.from,preferredSide=null;(8===lastKey||browser.android&&domChange.text.length0&&toB>0&&a.charCodeAt(toA-1)==b.charCodeAt(toB-1);)toA--,toB--;if("end"==preferredSide){preferredPos-=toA+Math.max(0,from-Math.min(toA,toB))-from}if(toA=toA?from-preferredPos:0,toB=from+(toB-toA),toA=from}else if(toB=toB?from-preferredPos:0,toA=from+(toA-toB),toB=from}return{from:from,toA:toA,toB:toB}}(view.state.doc.sliceString(from,to,""),domChange.text,preferredPos-from,preferredSide);diff&&(browser.chrome&&13==lastKey&&diff.toB==diff.from+2&&""==domChange.text.slice(diff.from,diff.toB)&&diff.toB--,change={from:from+diff.from,to:from+diff.toA,insert:Text.of(domChange.text.slice(diff.from,diff.toB).split(""))})}else newSel&&(!view.hasFocus&&view.state.facet(editable)||newSel.main.eq(sel))&&(newSel=null);if(!change&&!newSel)return!1;if(!change&&domChange.typeOver&&!sel.empty&&newSel&&newSel.main.empty?change={from:sel.from,to:sel.to,insert:view.state.doc.slice(sel.from,sel.to)}:change&&change.from>=sel.from&&change.to<=sel.to&&(change.from!=sel.from||change.to!=sel.to)&&sel.to-sel.from-(change.to-change.from)<=4?change={from:sel.from,to:sel.to,insert:view.state.doc.slice(sel.from,change.from).append(change.insert).append(view.state.doc.slice(change.to,sel.to))}:(browser.mac||browser.android)&&change&&change.from==change.to&&change.from==sel.head-1&&/^\. ?$/.test(change.insert.toString())&&"off"==view.contentDOM.getAttribute("autocorrect")?(newSel&&2==change.insert.length&&(newSel=EditorSelection.single(newSel.main.anchor-1,newSel.main.head-1)),change={from:sel.from,to:sel.to,insert:Text.of([" "])}):browser.chrome&&change&&change.from==change.to&&change.from==sel.head&&"\n "==change.insert.toString()&&view.lineWrapping&&(newSel&&(newSel=EditorSelection.single(newSel.main.anchor-1,newSel.main.head-1)),change={from:sel.from,to:sel.to,insert:Text.of([" "])}),change){if(browser.ios&&view.inputState.flushIOSKey(change))return!0;if(browser.android&&(change.to==sel.to&&(change.from==sel.from||change.from==sel.from-1&&" "==view.state.sliceDoc(change.from,sel.from))&&1==change.insert.length&&2==change.insert.lines&&dispatchKey(view.contentDOM,"Enter",13)||(change.from==sel.from-1&&change.to==sel.to&&0==change.insert.length||8==lastKey&&change.insert.lengthsel.head)&&dispatchKey(view.contentDOM,"Backspace",8)||change.from==sel.from&&change.to==sel.to+1&&0==change.insert.length&&dispatchKey(view.contentDOM,"Delete",46)))return!0;let defaultTr,text=change.insert.toString();view.inputState.composing>=0&&view.inputState.composing++;let defaultInsert=()=>defaultTr||(defaultTr=function(view,change,newSel){let tr,startState=view.state,sel=startState.selection.main;if(change.from>=sel.from&&change.to<=sel.to&&change.to-change.from>=(sel.to-sel.from)/3&&(!newSel||newSel.main.empty&&newSel.main.from==change.from+change.insert.length)&&view.inputState.composing<0){let before=sel.fromchange.to?startState.sliceDoc(change.to,sel.to):"";tr=startState.replaceSelection(view.state.toText(before+change.insert.sliceString(0,void 0,view.state.lineBreak)+after))}else{let changes=startState.changes(change),mainSel=newSel&&newSel.main.to<=changes.newLength?newSel.main:void 0;if(startState.selection.ranges.length>1&&view.inputState.composing>=0&&change.to<=sel.to&&change.to>=sel.to-10){let compositionRange,replaced=view.state.sliceDoc(change.from,change.to),composition=newSel&&findCompositionNode(view,newSel.main.head);if(composition){let dLen=change.insert.length-(change.to-change.from);compositionRange={from:composition.from,to:composition.to-dLen}}else compositionRange=view.state.doc.lineAt(sel.head);let offset=sel.to-change.to,size=sel.to-sel.from;tr=startState.changeByRange((range=>{if(range.from==sel.from&&range.to==sel.to)return{changes:changes,range:mainSel||range.map(changes)};let to=range.to-offset,from=to-replaced.length;if(range.to-range.from!=size||view.state.sliceDoc(from,to)!=replaced||range.to>=compositionRange.from&&range.from<=compositionRange.to)return{range:range};let rangeChanges=startState.changes({from:from,to:to,insert:change.insert}),selOff=range.to-sel.to;return{changes:rangeChanges,range:mainSel?EditorSelection.range(Math.max(0,mainSel.anchor+selOff),Math.max(0,mainSel.head+selOff)):range.map(rangeChanges)}}))}else tr={changes:changes,selection:mainSel&&startState.selection.replaceRange(mainSel)}}let userEvent="input.type";(view.composing||view.inputState.compositionPendingChange&&view.inputState.compositionEndedAt>Date.now()-50)&&(view.inputState.compositionPendingChange=!1,userEvent+=".compose",view.inputState.compositionFirstChange&&(userEvent+=".start",view.inputState.compositionFirstChange=!1));return startState.update(tr,{userEvent:userEvent,scrollIntoView:!0})}(view,change,newSel));return view.state.facet(inputHandler$1).some((h=>h(view,change.from,change.to,text,defaultInsert)))||view.dispatch(defaultInsert()),!0}if(newSel&&!newSel.main.eq(sel)){let scrollIntoView=!1,userEvent="select";return view.inputState.lastSelectionTime>Date.now()-50&&("select"==view.inputState.lastSelectionOrigin&&(scrollIntoView=!0),userEvent=view.inputState.lastSelectionOrigin),view.dispatch({selection:newSel,scrollIntoView:scrollIntoView,userEvent:userEvent}),!0}return!1}const observeOptions={childList:!0,characterData:!0,subtree:!0,attributes:!0,characterDataOldValue:!0},useCharData=browser.ie&&browser.ie_version<=11;class DOMObserver{constructor(view){this.view=view,this.active=!1,this.selectionRange=new DOMSelectionState,this.selectionChanged=!1,this.delayedFlush=-1,this.resizeTimeout=-1,this.queue=[],this.delayedAndroidKey=null,this.flushingAndroidKey=-1,this.lastChange=0,this.scrollTargets=[],this.intersection=null,this.resizeScroll=null,this.intersecting=!1,this.gapIntersection=null,this.gaps=[],this.printQuery=null,this.parentCheck=-1,this.dom=view.contentDOM,this.observer=new MutationObserver((mutations=>{for(let mut of mutations)this.queue.push(mut);(browser.ie&&browser.ie_version<=11||browser.ios&&view.composing)&&mutations.some((m=>"childList"==m.type&&m.removedNodes.length||"characterData"==m.type&&m.oldValue.length>m.target.nodeValue.length))?this.flushSoon():this.flush()})),useCharData&&(this.onCharData=event=>{this.queue.push({target:event.target,type:"characterData",oldValue:event.prevValue}),this.flushSoon()}),this.onSelectionChange=this.onSelectionChange.bind(this),this.onResize=this.onResize.bind(this),this.onPrint=this.onPrint.bind(this),this.onScroll=this.onScroll.bind(this),window.matchMedia&&(this.printQuery=window.matchMedia("print")),"function"==typeof ResizeObserver&&(this.resizeScroll=new ResizeObserver((()=>{var _a;(null===(_a=this.view.docView)||void 0===_a?void 0:_a.lastUpdate){this.parentCheck<0&&(this.parentCheck=setTimeout(this.listenForScroll.bind(this),1e3)),entries.length>0&&entries[entries.length-1].intersectionRatio>0!=this.intersecting&&(this.intersecting=!this.intersecting,this.intersecting!=this.view.inView&&this.onScrollChanged(document.createEvent("Event")))}),{threshold:[0,.001]}),this.intersection.observe(this.dom),this.gapIntersection=new IntersectionObserver((entries=>{entries.length>0&&entries[entries.length-1].intersectionRatio>0&&this.onScrollChanged(document.createEvent("Event"))}),{})),this.listenForScroll(),this.readSelectionRange()}onScrollChanged(e){this.view.inputState.runHandlers("scroll",e),this.intersecting&&this.view.measure()}onScroll(e){this.intersecting&&this.flush(!1),this.onScrollChanged(e)}onResize(){this.resizeTimeout<0&&(this.resizeTimeout=setTimeout((()=>{this.resizeTimeout=-1,this.view.requestMeasure()}),50))}onPrint(event){("change"!=event.type||event.matches)&&(this.view.viewState.printing=!0,this.view.measure(),setTimeout((()=>{this.view.viewState.printing=!1,this.view.requestMeasure()}),500))}updateGaps(gaps){if(this.gapIntersection&&(gaps.length!=this.gaps.length||this.gaps.some(((g,i)=>g!=gaps[i])))){this.gapIntersection.disconnect();for(let gap of gaps)this.gapIntersection.observe(gap);this.gaps=gaps}}onSelectionChange(event){let wasChanged=this.selectionChanged;if(!this.readSelectionRange()||this.delayedAndroidKey)return;let{view:view}=this,sel=this.selectionRange;if(view.state.facet(editable)?view.root.activeElement!=this.dom:!hasSelection(view.dom,sel))return;let context=sel.anchorNode&&view.docView.nearest(sel.anchorNode);context&&context.ignoreEvent(event)?wasChanged||(this.selectionChanged=!1):(browser.ie&&browser.ie_version<=11||browser.android&&browser.chrome)&&!view.state.selection.main.empty&&sel.focusNode&&isEquivalentPosition(sel.focusNode,sel.focusOffset,sel.anchorNode,sel.anchorOffset)?this.flushSoon():this.flush(!1)}readSelectionRange(){let{view:view}=this,selection=getSelection(view.root);if(!selection)return!1;let range=browser.safari&&11==view.root.nodeType&&function(doc){let elt=doc.activeElement;for(;elt&&elt.shadowRoot;)elt=elt.shadowRoot.activeElement;return elt}(this.dom.ownerDocument)==this.dom&&function(view,selection){if(selection.getComposedRanges){let range=selection.getComposedRanges(view.root)[0];if(range)return buildSelectionRangeFromRange(view,range)}let found=null;function read(event){event.preventDefault(),event.stopImmediatePropagation(),found=event.getTargetRanges()[0]}return view.contentDOM.addEventListener("beforeinput",read,!0),view.dom.ownerDocument.execCommand("indent"),view.contentDOM.removeEventListener("beforeinput",read,!0),found?buildSelectionRangeFromRange(view,found):null}(this.view,selection)||selection;if(!range||this.selectionRange.eq(range))return!1;let local=hasSelection(this.dom,range);return local&&!this.selectionChanged&&view.inputState.lastFocusTime>Date.now()-200&&view.inputState.lastTouchTime{let key=this.delayedAndroidKey;if(key){this.clearDelayedAndroidKey(),this.view.inputState.lastKeyCode=key.keyCode,this.view.inputState.lastKeyTime=Date.now(),!this.flush()&&key.force&&dispatchKey(this.dom,key.key,key.keyCode)}};this.flushingAndroidKey=this.view.win.requestAnimationFrame(flush)}this.delayedAndroidKey&&"Enter"!=key||(this.delayedAndroidKey={key:key,keyCode:keyCode,force:this.lastChange{this.delayedFlush=-1,this.flush()})))}forceFlush(){this.delayedFlush>=0&&(this.view.win.cancelAnimationFrame(this.delayedFlush),this.delayedFlush=-1),this.flush()}pendingRecords(){for(let mut of this.observer.takeRecords())this.queue.push(mut);return this.queue}processRecords(){let records=this.pendingRecords();records.length&&(this.queue=[]);let from=-1,to=-1,typeOver=!1;for(let record of records){let range=this.readMutation(record);range&&(range.typeOver&&(typeOver=!0),-1==from?({from:from,to:to}=range):(from=Math.min(range.from,from),to=Math.max(range.to,to)))}return{from:from,to:to,typeOver:typeOver}}readChange(){let{from:from,to:to,typeOver:typeOver}=this.processRecords(),newSel=this.selectionChanged&&hasSelection(this.dom,this.selectionRange);if(from<0&&!newSel)return null;from>-1&&(this.lastChange=Date.now()),this.view.inputState.lastFocusTime=0,this.selectionChanged=!1;let change=new DOMChange(this.view,from,to,typeOver);return this.view.docView.domChanged={newSel:change.newSel?change.newSel.main:null},change}flush(){let readSelection=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];if(this.delayedFlush>=0||this.delayedAndroidKey)return!1;readSelection&&this.readSelectionRange();let domChange=this.readChange();if(!domChange)return this.view.requestMeasure(),!1;let startState=this.view.state,handled=applyDOMChange(this.view,domChange);return this.view.state==startState&&this.view.update([]),handled}readMutation(rec){let cView=this.view.docView.nearest(rec.target);if(!cView||cView.ignoreMutation(rec))return null;if(cView.markDirty("attributes"==rec.type),"attributes"==rec.type&&(cView.flags|=4),"childList"==rec.type){let childBefore=findChild(cView,rec.previousSibling||rec.target.previousSibling,-1),childAfter=findChild(cView,rec.nextSibling||rec.target.nextSibling,1);return{from:childBefore?cView.posAfter(childBefore):cView.posAtStart,to:childAfter?cView.posBefore(childAfter):cView.posAtEnd,typeOver:!1}}return"characterData"==rec.type?{from:cView.posAtStart,to:cView.posAtEnd,typeOver:rec.target.nodeValue==rec.oldValue}:null}setWindow(win){win!=this.win&&(this.removeWindowListeners(this.win),this.win=win,this.addWindowListeners(this.win))}addWindowListeners(win){win.addEventListener("resize",this.onResize),this.printQuery?this.printQuery.addEventListener("change",this.onPrint):win.addEventListener("beforeprint",this.onPrint),win.addEventListener("scroll",this.onScroll),win.document.addEventListener("selectionchange",this.onSelectionChange)}removeWindowListeners(win){win.removeEventListener("scroll",this.onScroll),win.removeEventListener("resize",this.onResize),this.printQuery?this.printQuery.removeEventListener("change",this.onPrint):win.removeEventListener("beforeprint",this.onPrint),win.document.removeEventListener("selectionchange",this.onSelectionChange)}destroy(){var _a,_b,_c;this.stop(),null===(_a=this.intersection)||void 0===_a||_a.disconnect(),null===(_b=this.gapIntersection)||void 0===_b||_b.disconnect(),null===(_c=this.resizeScroll)||void 0===_c||_c.disconnect();for(let dom of this.scrollTargets)dom.removeEventListener("scroll",this.onScroll);this.removeWindowListeners(this.win),clearTimeout(this.parentCheck),clearTimeout(this.resizeTimeout),this.win.cancelAnimationFrame(this.delayedFlush),this.win.cancelAnimationFrame(this.flushingAndroidKey)}}function findChild(cView,dom,dir){for(;dom;){let curView=ContentView.get(dom);if(curView&&curView.parent==cView)return curView;let parent=dom.parentNode;dom=parent!=cView.dom?parent:dir>0?dom.nextSibling:dom.previousSibling}return null}function buildSelectionRangeFromRange(view,range){let anchorNode=range.startContainer,anchorOffset=range.startOffset,focusNode=range.endContainer,focusOffset=range.endOffset,curAnchor=view.docView.domAtPos(view.state.selection.main.anchor);return isEquivalentPosition(curAnchor.node,curAnchor.offset,focusNode,focusOffset)&&([anchorNode,anchorOffset,focusNode,focusOffset]=[focusNode,focusOffset,anchorNode,anchorOffset]),{anchorNode:anchorNode,anchorOffset:anchorOffset,focusNode:focusNode,focusOffset:focusOffset}}class EditorView{get state(){return this.viewState.state}get viewport(){return this.viewState.viewport}get visibleRanges(){return this.viewState.visibleRanges}get inView(){return this.viewState.inView}get composing(){return this.inputState.composing>0}get compositionStarted(){return this.inputState.composing>=0}get root(){return this._root}get win(){return this.dom.ownerDocument.defaultView||window}constructor(){let config=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.plugins=[],this.pluginMap=new Map,this.editorAttrs={},this.contentAttrs={},this.bidiCache=[],this.destroyed=!1,this.updateState=2,this.measureScheduled=-1,this.measureRequests=[],this.contentDOM=document.createElement("div"),this.scrollDOM=document.createElement("div"),this.scrollDOM.tabIndex=-1,this.scrollDOM.className="cm-scroller",this.scrollDOM.appendChild(this.contentDOM),this.announceDOM=document.createElement("div"),this.announceDOM.className="cm-announced",this.announceDOM.setAttribute("aria-live","polite"),this.dom=document.createElement("div"),this.dom.appendChild(this.announceDOM),this.dom.appendChild(this.scrollDOM),config.parent&&config.parent.appendChild(this.dom);let{dispatch:dispatch}=config;this.dispatchTransactions=config.dispatchTransactions||dispatch&&(trs=>trs.forEach((tr=>dispatch(tr,this))))||(trs=>this.update(trs)),this.dispatch=this.dispatch.bind(this),this._root=config.root||function(node){for(;node;){if(node&&(9==node.nodeType||11==node.nodeType&&node.host))return node;node=node.assignedSlot||node.parentNode}return null}(config.parent)||document,this.viewState=new ViewState(config.state||EditorState.create(config)),config.scrollTo&&config.scrollTo.is(scrollIntoView$1)&&(this.viewState.scrollTarget=config.scrollTo.value.clip(this.viewState.state)),this.plugins=this.state.facet(viewPlugin).map((spec=>new PluginInstance(spec)));for(let plugin of this.plugins)plugin.update(this);this.observer=new DOMObserver(this),this.inputState=new InputState(this),this.inputState.ensureHandlers(this.plugins),this.docView=new DocView(this),this.mountStyles(),this.updateAttrs(),this.updateState=0,this.requestMeasure()}dispatch(){for(var _len3=arguments.length,input=new Array(_len3),_key3=0;_key3<_len3;_key3++)input[_key3]=arguments[_key3];let trs=1==input.length&&input[0]instanceof Transaction?input:1==input.length&&Array.isArray(input[0])?input[0]:[this.state.update(...input)];this.dispatchTransactions(trs,this)}update(transactions){if(0!=this.updateState)throw new Error("Calls to EditorView.update are not allowed while an update is in progress");let update,redrawn=!1,attrsChanged=!1,state=this.state;for(let tr of transactions){if(tr.startState!=state)throw new RangeError("Trying to update state with a transaction that doesn't start from the previous state.");state=tr.state}if(this.destroyed)return void(this.viewState.state=state);let focus=this.hasFocus,focusFlag=0,dispatchFocus=null;transactions.some((tr=>tr.annotation(isFocusChange)))?(this.inputState.notifiedFocused=focus,focusFlag=1):focus!=this.inputState.notifiedFocused&&(this.inputState.notifiedFocused=focus,dispatchFocus=focusChangeTransaction(state,focus),dispatchFocus||(focusFlag=1));let pendingKey=this.observer.delayedAndroidKey,domChange=null;if(pendingKey?(this.observer.clearDelayedAndroidKey(),domChange=this.observer.readChange(),(domChange&&!this.state.doc.eq(state.doc)||!this.state.selection.eq(state.selection))&&(domChange=null)):this.observer.clear(),state.facet(EditorState.phrases)!=this.state.facet(EditorState.phrases))return this.setState(state);update=ViewUpdate.create(this,state,transactions),update.flags|=focusFlag;let scrollTarget=this.viewState.scrollTarget;try{this.updateState=2;for(let tr of transactions){if(scrollTarget&&(scrollTarget=scrollTarget.map(tr.changes)),tr.scrollIntoView){let{main:main}=tr.state.selection;scrollTarget=new ScrollTarget(main.empty?main:EditorSelection.cursor(main.head,main.head>main.anchor?-1:1))}for(let e of tr.effects)e.is(scrollIntoView$1)&&(scrollTarget=e.value.clip(this.state))}this.viewState.update(update,scrollTarget),this.bidiCache=CachedOrder.update(this.bidiCache,update.changes),update.empty||(this.updatePlugins(update),this.inputState.update(update)),redrawn=this.docView.update(update),this.state.facet(styleModule)!=this.styleModules&&this.mountStyles(),attrsChanged=this.updateAttrs(),this.showAnnouncements(transactions),this.docView.updateSelection(redrawn,transactions.some((tr=>tr.isUserEvent("select.pointer"))))}finally{this.updateState=0}if(update.startState.facet(theme)!=update.state.facet(theme)&&(this.viewState.mustMeasureContent=!0),(redrawn||attrsChanged||scrollTarget||this.viewState.mustEnforceCursorAssoc||this.viewState.mustMeasureContent)&&this.requestMeasure(),redrawn&&this.docViewUpdate(),!update.empty)for(let listener of this.state.facet(updateListener))try{listener(update)}catch(e){logException(this.state,e,"update listener")}(dispatchFocus||domChange)&&Promise.resolve().then((()=>{dispatchFocus&&this.state==dispatchFocus.startState&&this.dispatch(dispatchFocus),domChange&&!applyDOMChange(this,domChange)&&pendingKey.force&&dispatchKey(this.contentDOM,pendingKey.key,pendingKey.keyCode)}))}setState(newState){if(0!=this.updateState)throw new Error("Calls to EditorView.setState are not allowed while an update is in progress");if(this.destroyed)return void(this.viewState.state=newState);this.updateState=2;let hadFocus=this.hasFocus;try{for(let plugin of this.plugins)plugin.destroy(this);this.viewState=new ViewState(newState),this.plugins=newState.facet(viewPlugin).map((spec=>new PluginInstance(spec))),this.pluginMap.clear();for(let plugin of this.plugins)plugin.update(this);this.docView.destroy(),this.docView=new DocView(this),this.inputState.ensureHandlers(this.plugins),this.mountStyles(),this.updateAttrs(),this.bidiCache=[]}finally{this.updateState=0}hadFocus&&this.focus(),this.requestMeasure()}updatePlugins(update){let prevSpecs=update.startState.facet(viewPlugin),specs=update.state.facet(viewPlugin);if(prevSpecs!=specs){let newPlugins=[];for(let spec of specs){let found=prevSpecs.indexOf(spec);if(found<0)newPlugins.push(new PluginInstance(spec));else{let plugin=this.plugins[found];plugin.mustUpdate=update,newPlugins.push(plugin)}}for(let plugin of this.plugins)plugin.mustUpdate!=update&&plugin.destroy(this);this.plugins=newPlugins,this.pluginMap.clear()}else for(let p of this.plugins)p.mustUpdate=update;for(let i=0;i0&&void 0!==arguments[0])||arguments[0];if(this.destroyed)return;if(this.measureScheduled>-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.observer.delayedAndroidKey)return this.measureScheduled=-1,void this.requestMeasure();this.measureScheduled=0,flush&&this.observer.forceFlush();let updated=null,sDOM=this.scrollDOM,scrollTop=sDOM.scrollTop*this.scaleY,{scrollAnchorPos:scrollAnchorPos,scrollAnchorHeight:scrollAnchorHeight}=this.viewState;Math.abs(scrollTop-this.viewState.scrollTop)>1&&(scrollAnchorHeight=-1),this.viewState.scrollAnchorHeight=-1;try{for(let i=0;;i++){if(scrollAnchorHeight<0)if(isScrolledToBottom(sDOM))scrollAnchorPos=-1,scrollAnchorHeight=this.viewState.heightMap.height;else{let block=this.viewState.scrollAnchorAt(scrollTop);scrollAnchorPos=block.from,scrollAnchorHeight=block.top}this.updateState=1;let changed=this.viewState.measure(this);if(!changed&&!this.measureRequests.length&&null==this.viewState.scrollTarget)break;if(i>5){console.warn(this.measureRequests.length?"Measure loop restarted more than 5 times":"Viewport failed to stabilize");break}let measuring=[];4&changed||([this.measureRequests,measuring]=[measuring,this.measureRequests]);let measured=measuring.map((m=>{try{return m.read(this)}catch(e){return logException(this.state,e),BadMeasure}})),update=ViewUpdate.create(this,this.state,[]),redrawn=!1;update.flags|=changed,updated?updated.flags|=changed:updated=update,this.updateState=2,update.empty||(this.updatePlugins(update),this.inputState.update(update),this.updateAttrs(),redrawn=this.docView.update(update),redrawn&&this.docViewUpdate());for(let i=0;i1||diff<-1){scrollTop+=diff,sDOM.scrollTop=scrollTop/this.scaleY,scrollAnchorHeight=-1;continue}}}break}}}finally{this.updateState=0,this.measureScheduled=-1}if(updated&&!updated.empty)for(let listener of this.state.facet(updateListener))listener(updated)}get themeClasses(){return baseThemeID+" "+(this.state.facet(darkTheme)?baseDarkID:baseLightID)+" "+this.state.facet(theme)}updateAttrs(){let editorAttrs=attrsFromFacet(this,editorAttributes,{class:"cm-editor"+(this.hasFocus?" cm-focused ":" ")+this.themeClasses}),contentAttrs={spellcheck:"false",autocorrect:"off",autocapitalize:"off",translate:"no",contenteditable:this.state.facet(editable)?"true":"false",class:"cm-content",style:"".concat(browser.tabSize,": ").concat(this.state.tabSize),role:"textbox","aria-multiline":"true"};this.state.readOnly&&(contentAttrs["aria-readonly"]="true"),attrsFromFacet(this,contentAttributes,contentAttrs);let changed=this.observer.ignore((()=>{let changedContent=updateAttrs(this.contentDOM,this.contentAttrs,contentAttrs),changedEditor=updateAttrs(this.dom,this.editorAttrs,editorAttrs);return changedContent||changedEditor}));return this.editorAttrs=editorAttrs,this.contentAttrs=contentAttrs,changed}showAnnouncements(trs){let first=!0;for(let tr of trs)for(let effect of tr.effects)if(effect.is(EditorView.announce)){first&&(this.announceDOM.textContent=""),first=!1,this.announceDOM.appendChild(document.createElement("div")).textContent=effect.value}}mountStyles(){this.styleModules=this.state.facet(styleModule);let nonce=this.state.facet(EditorView.cspNonce);StyleModule.mount(this.root,this.styleModules.concat(baseTheme$1$3).reverse(),nonce?{nonce:nonce}:void 0)}readMeasured(){if(2==this.updateState)throw new Error("Reading the editor layout isn't allowed during an update");0==this.updateState&&this.measureScheduled>-1&&this.measure(!1)}requestMeasure(request){if(this.measureScheduled<0&&(this.measureScheduled=this.win.requestAnimationFrame((()=>this.measure()))),request){if(this.measureRequests.indexOf(request)>-1)return;if(null!=request.key)for(let i=0;ip.spec==plugin))||null),known&&known.update(this).value}get documentTop(){return this.contentDOM.getBoundingClientRect().top+this.viewState.paddingTop}get documentPadding(){return{top:this.viewState.paddingTop,bottom:this.viewState.paddingBottom}}get scaleX(){return this.viewState.scaleX}get scaleY(){return this.viewState.scaleY}elementAtHeight(height){return this.readMeasured(),this.viewState.elementAtHeight(height)}lineBlockAtHeight(height){return this.readMeasured(),this.viewState.lineBlockAtHeight(height)}get viewportLineBlocks(){return this.viewState.viewportLines}lineBlockAt(pos){return this.viewState.lineBlockAt(pos)}get contentHeight(){return this.viewState.contentHeight}moveByChar(start,forward,by){return skipAtoms(this,start,moveByChar(this,start,forward,by))}moveByGroup(start,forward){return skipAtoms(this,start,moveByChar(this,start,forward,(initial=>function(view,pos,start){let categorize=view.state.charCategorizer(pos),cat=categorize(start);return next=>{let nextCat=categorize(next);return cat==CharCategory.Space&&(cat=nextCat),cat==nextCat}}(this,start.head,initial))))}visualLineSide(line,end){let order=this.bidiSpans(line),dir=this.textDirectionAt(line.from),span=order[end?order.length-1:0];return EditorSelection.cursor(span.side(end,dir)+line.from,span.forward(!end,dir)?1:-1)}moveToLineBoundary(start,forward){return function(view,start,forward,includeWrap){let line=blockAt(view,start.head),coords=includeWrap&&line.type==BlockType.Text&&(view.lineWrapping||line.widgetLineBreaks)?view.coordsAtPos(start.assoc<0&&start.head>line.from?start.head-1:start.head):null;if(coords){let editorRect=view.dom.getBoundingClientRect(),direction=view.textDirectionAt(line.from),pos=view.posAtCoords({x:forward==(direction==Direction.LTR)?editorRect.right-1:editorRect.left+1,y:(coords.top+coords.bottom)/2});if(null!=pos)return EditorSelection.cursor(pos,forward?-1:1)}return EditorSelection.cursor(forward?line.to:line.from,forward?-1:1)}(this,start,forward,!(arguments.length>2&&void 0!==arguments[2])||arguments[2])}moveVertically(start,forward,distance){return skipAtoms(this,start,function(view,start,forward,distance){let startPos=start.head,dir=forward?1:-1;if(startPos==(forward?view.state.doc.length:0))return EditorSelection.cursor(startPos,start.assoc);let startY,goal=start.goalColumn,rect=view.contentDOM.getBoundingClientRect(),startCoords=view.coordsAtPos(startPos,start.assoc||-1),docTop=view.documentTop;if(startCoords)null==goal&&(goal=startCoords.left-rect.left),startY=dir<0?startCoords.top:startCoords.bottom;else{let line=view.viewState.lineBlockAt(startPos);null==goal&&(goal=Math.min(rect.right-rect.left,view.defaultCharacterWidth*(startPos-line.from))),startY=(dir<0?line.top:line.bottom)+docTop}let resolvedGoal=rect.left+goal,dist=null!=distance?distance:view.viewState.heightOracle.textHeight>>1;for(let extra=0;;extra+=10){let curY=startY+(dist+extra)*dir,pos=posAtCoords(view,{x:resolvedGoal,y:curY},!1,dir);if(curYrect.bottom||(dir<0?posstartPos)){let charRect=view.docView.coordsForChar(pos),assoc=!charRect||curY1&&void 0!==arguments[1]?arguments[1]:0;return this.docView.posFromDOM(node,offset)}posAtCoords(coords){let precise=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return this.readMeasured(),posAtCoords(this,coords,precise)}coordsAtPos(pos){let side=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;this.readMeasured();let rect=this.docView.coordsAt(pos,side);if(!rect||rect.left==rect.right)return rect;let line=this.state.doc.lineAt(pos),order=this.bidiSpans(line);return flattenRect(rect,order[BidiSpan.find(order,pos-line.from,-1,side)].dir==Direction.LTR==side>0)}coordsForChar(pos){return this.readMeasured(),this.docView.coordsForChar(pos)}get defaultCharacterWidth(){return this.viewState.heightOracle.charWidth}get defaultLineHeight(){return this.viewState.heightOracle.lineHeight}get textDirection(){return this.viewState.defaultTextDirection}textDirectionAt(pos){return!this.state.facet(perLineTextDirection)||posthis.viewport.to?this.textDirection:(this.readMeasured(),this.docView.textDirectionAt(pos))}get lineWrapping(){return this.viewState.heightOracle.lineWrapping}bidiSpans(line){if(line.length>MaxBidiLine)return trivialOrder(line.length);let isolates,dir=this.textDirectionAt(line.from);for(let entry of this.bidiCache)if(entry.from==line.from&&entry.dir==dir&&(entry.fresh||isolatesEq(entry.isolates,isolates=getIsolatedRanges(this,line))))return entry.order;isolates||(isolates=getIsolatedRanges(this,line));let order=function(line,direction,isolates){if(!line)return[new BidiSpan(0,0,direction==RTL?1:0)];if(direction==LTR&&!isolates.length&&!BidiRE.test(line))return trivialOrder(line.length);if(isolates.length)for(;line.length>types.length;)types[types.length]=256;let order=[],level=direction==LTR?0:1;return computeSectionOrder(line,level,level,isolates,0,line.length,order),order}(line.text,dir,isolates);return this.bidiCache.push(new CachedOrder(line.from,line.to,dir,isolates,!0,order)),order}get hasFocus(){var _a;return(this.dom.ownerDocument.hasFocus()||browser.safari&&(null===(_a=this.inputState)||void 0===_a?void 0:_a.lastContextMenu)>Date.now()-3e4)&&this.root.activeElement==this.contentDOM}focus(){this.observer.ignore((()=>{focusPreventScroll(this.contentDOM),this.docView.updateSelection()}))}setRoot(root){this._root!=root&&(this._root=root,this.observer.setWindow((9==root.nodeType?root:root.ownerDocument).defaultView||window),this.mountStyles())}destroy(){for(let plugin of this.plugins)plugin.destroy(this);this.plugins=[],this.inputState.destroy(),this.docView.destroy(),this.dom.remove(),this.observer.destroy(),this.measureScheduled>-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.destroyed=!0}static scrollIntoView(pos){let options=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return scrollIntoView$1.of(new ScrollTarget("number"==typeof pos?EditorSelection.cursor(pos):pos,options.y,options.x,options.yMargin,options.xMargin))}scrollSnapshot(){let{scrollTop:scrollTop,scrollLeft:scrollLeft}=this.scrollDOM,ref=this.viewState.scrollAnchorAt(scrollTop);return scrollIntoView$1.of(new ScrollTarget(EditorSelection.cursor(ref.from),"start","start",ref.top-scrollTop,scrollLeft,!0))}static domEventHandlers(handlers){return ViewPlugin.define((()=>({})),{eventHandlers:handlers})}static domEventObservers(observers){return ViewPlugin.define((()=>({})),{eventObservers:observers})}static theme(spec,options){let prefix=StyleModule.newName(),result=[theme.of(prefix),styleModule.of(buildTheme(".".concat(prefix),spec))];return options&&options.dark&&result.push(darkTheme.of(!0)),result}static baseTheme(spec){return Prec.lowest(styleModule.of(buildTheme("."+baseThemeID,spec,lightDarkIDs)))}static findFromDOM(dom){var _a;let content=dom.querySelector(".cm-content"),cView=content&&ContentView.get(content)||ContentView.get(dom);return(null===(_a=null==cView?void 0:cView.rootView)||void 0===_a?void 0:_a.view)||null}}_exports.EditorView=EditorView,EditorView.styleModule=styleModule,EditorView.inputHandler=inputHandler$1,EditorView.scrollHandler=scrollHandler,EditorView.focusChangeEffect=focusChangeEffect,EditorView.perLineTextDirection=perLineTextDirection,EditorView.exceptionSink=exceptionSink,EditorView.updateListener=updateListener,EditorView.editable=editable,EditorView.mouseSelectionStyle=mouseSelectionStyle,EditorView.dragMovesSelection=dragMovesSelection$1,EditorView.clickAddsSelectionRange=clickAddsSelectionRange,EditorView.decorations=decorations,EditorView.outerDecorations=outerDecorations,EditorView.atomicRanges=atomicRanges,EditorView.bidiIsolatedRanges=bidiIsolatedRanges,EditorView.scrollMargins=scrollMargins,EditorView.darkTheme=darkTheme,EditorView.cspNonce=Facet.define({combine:values=>values.length?values[0]:""}),EditorView.contentAttributes=contentAttributes,EditorView.editorAttributes=editorAttributes,EditorView.lineWrapping=EditorView.contentAttributes.of({class:"cm-lineWrapping"}),EditorView.announce=StateEffect.define();const MaxBidiLine=4096,BadMeasure={};class CachedOrder{constructor(from,to,dir,isolates,fresh,order){this.from=from,this.to=to,this.dir=dir,this.isolates=isolates,this.fresh=fresh,this.order=order}static update(cache,changes){if(changes.empty&&!cache.some((c=>c.fresh)))return cache;let result=[],lastDir=cache.length?cache[cache.length-1].dir:Direction.LTR;for(let i=Math.max(0,cache.length-10);i=0;i--){let source=sources[i],value="function"==typeof source?source(view):source;value&&combineAttrs(value,base)}return base}const currentPlatform=browser.mac?"mac":browser.windows?"win":browser.linux?"linux":"key";function normalizeKeyName(name,platform){const parts=name.split(/-(?!$)/);let alt,ctrl,shift,meta,result=parts[parts.length-1];"Space"==result&&(result=" ");for(let i=0;irunHandlers(getKeymap(view.state),event,view,"editor")})),keymap=Facet.define({enables:handleKeyEvents}),Keymaps=new WeakMap;function getKeymap(state){let bindings=state.facet(keymap),map=Keymaps.get(bindings);return map||Keymaps.set(bindings,map=function(bindings){let platform=arguments.length>1&&void 0!==arguments[1]?arguments[1]:currentPlatform,bound=Object.create(null),isPrefix=Object.create(null),checkPrefix=(name,is)=>{let current=isPrefix[name];if(null==current)isPrefix[name]=is;else if(current!=is)throw new Error("Key binding "+name+" is used both as a regular binding and as a multi-stroke prefix")},add=(scope,key,command,preventDefault,stopPropagation)=>{var _a,_b;let scopeObj=bound[scope]||(bound[scope]=Object.create(null)),parts=key.split(/ (?!$)/).map((k=>normalizeKeyName(k,platform)));for(let i=1;i{let ourObj=storedPrefix={view:view,prefix:prefix,scope:scope};return setTimeout((()=>{storedPrefix==ourObj&&(storedPrefix=null)}),4e3),!0}]})}let full=parts.join(" ");checkPrefix(full,!1);let binding=scopeObj[full]||(scopeObj[full]={preventDefault:!1,stopPropagation:!1,run:(null===(_b=null===(_a=scopeObj._any)||void 0===_a?void 0:_a.run)||void 0===_b?void 0:_b.slice())||[]});command&&binding.run.push(command),preventDefault&&(binding.preventDefault=!0),stopPropagation&&(binding.stopPropagation=!0)};for(let b of bindings){let scopes=b.scope?b.scope.split(" "):["editor"];if(b.any)for(let scope of scopes){let scopeObj=bound[scope]||(bound[scope]=Object.create(null));scopeObj._any||(scopeObj._any={preventDefault:!1,stopPropagation:!1,run:[]});for(let key in scopeObj)scopeObj[key].run.push(b.any)}let name=b[platform]||b.key;if(name)for(let scope of scopes)add(scope,name,b.run,b.preventDefault,b.stopPropagation),b.shift&&add(scope,"Shift-"+name,b.shift,b.preventDefault,b.stopPropagation)}return bound}(bindings.reduce(((a,b)=>a.concat(b)),[]))),map}let storedPrefix=null;function runHandlers(map,event,view,scope){let name=function(event){var name=!(mac&&event.metaKey&&event.shiftKey&&!event.ctrlKey&&!event.altKey||ie$1&&event.shiftKey&&event.key&&1==event.key.length||"Unidentified"==event.key)&&event.key||(event.shiftKey?shift:base)[event.keyCode]||event.key||"Unidentified";return"Esc"==name&&(name="Escape"),"Del"==name&&(name="Delete"),"Left"==name&&(name="ArrowLeft"),"Up"==name&&(name="ArrowUp"),"Right"==name&&(name="ArrowRight"),"Down"==name&&(name="ArrowDown"),name}(event),isChar=codePointSize(codePointAt(name,0))==name.length&&" "!=name,prefix="",handled=!1,prevented=!1,stopPropagation=!1;storedPrefix&&storedPrefix.view==view&&storedPrefix.scope==scope&&(prefix=storedPrefix.prefix+" ",modifierCodes.indexOf(event.keyCode)<0&&(prevented=!0,storedPrefix=null));let baseName,shiftName,ran=new Set,runFor=binding=>{if(binding){for(let cmd of binding.run)if(!ran.has(cmd)&&(ran.add(cmd),cmd(view,event)))return binding.stopPropagation&&(stopPropagation=!0),!0;binding.preventDefault&&(binding.stopPropagation&&(stopPropagation=!0),prevented=!0)}return!1},scopeObj=map[scope];return scopeObj&&(runFor(scopeObj[prefix+modifiers(name,event,!isChar)])?handled=!0:isChar&&(event.altKey||event.metaKey||event.ctrlKey)&&!(browser.windows&&event.ctrlKey&&event.altKey)&&(baseName=base[event.keyCode])&&baseName!=name?(runFor(scopeObj[prefix+modifiers(baseName,event,!0)])||event.shiftKey&&(shiftName=shift[event.keyCode])!=name&&shiftName!=baseName&&runFor(scopeObj[prefix+modifiers(shiftName,event,!1)]))&&(handled=!0):isChar&&event.shiftKey&&runFor(scopeObj[prefix+modifiers(name,event,!0)])&&(handled=!0),!handled&&runFor(scopeObj._any)&&(handled=!0)),prevented&&(handled=!0),handled&&stopPropagation&&event.stopPropagation(),handled}class RectangleMarker{constructor(className,left,top,width,height){this.className=className,this.left=left,this.top=top,this.width=width,this.height=height}draw(){let elt=document.createElement("div");return elt.className=this.className,this.adjust(elt),elt}update(elt,prev){return prev.className==this.className&&(this.adjust(elt),!0)}adjust(elt){elt.style.left=this.left+"px",elt.style.top=this.top+"px",null!=this.width&&(elt.style.width=this.width+"px"),elt.style.height=this.height+"px"}eq(p){return this.left==p.left&&this.top==p.top&&this.width==p.width&&this.height==p.height&&this.className==p.className}static forRange(view,className,range){if(range.empty){let pos=view.coordsAtPos(range.head,range.assoc||1);if(!pos)return[];let base=getBase(view);return[new RectangleMarker(className,pos.left-base.left,pos.top-base.top,null,pos.bottom-pos.top)]}return function(view,className,range){if(range.to<=view.viewport.from||range.from>=view.viewport.to)return[];let from=Math.max(range.from,view.viewport.from),to=Math.min(range.to,view.viewport.to),ltr=view.textDirection==Direction.LTR,content=view.contentDOM,contentRect=content.getBoundingClientRect(),base=getBase(view),lineElt=content.querySelector(".cm-line"),lineStyle=lineElt&&window.getComputedStyle(lineElt),leftSide=contentRect.left+(lineStyle?parseInt(lineStyle.paddingLeft)+Math.min(0,parseInt(lineStyle.textIndent)):0),rightSide=contentRect.right-(lineStyle?parseInt(lineStyle.paddingRight):0),startBlock=blockAt(view,from),endBlock=blockAt(view,to),visualStart=startBlock.type==BlockType.Text?startBlock:null,visualEnd=endBlock.type==BlockType.Text?endBlock:null;visualStart&&(view.lineWrapping||startBlock.widgetLineBreaks)&&(visualStart=wrappedLine(view,from,visualStart));visualEnd&&(view.lineWrapping||endBlock.widgetLineBreaks)&&(visualEnd=wrappedLine(view,to,visualEnd));if(visualStart&&visualEnd&&visualStart.from==visualEnd.from)return pieces(drawForLine(range.from,range.to,visualStart));{let top=visualStart?drawForLine(range.from,null,visualStart):drawForWidget(startBlock,!1),bottom=visualEnd?drawForLine(null,range.to,visualEnd):drawForWidget(endBlock,!0),between=[];return(visualStart||startBlock).to<(visualEnd||endBlock).from-(visualStart&&visualEnd?1:0)||startBlock.widgetLineBreaks>1&&top.bottom+view.defaultLineHeight/2start&&r.from=endPos)break;spanTo>pos&&addSpan(Math.max(spanFrom,pos),null==from&&spanFrom<=start,Math.min(spanTo,endPos),null==to&&spanTo>=end,span.dir)}if(pos=docLine.to+1,pos>=endPos)break}return 0==horizontal.length&&addSpan(start,null==from,end,null==to,view.textDirection),{top:top,bottom:bottom,horizontal:horizontal}}function drawForWidget(block,top){let y=contentRect.top+(top?block.top:block.bottom);return{top:y,bottom:y,horizontal:[]}}}(view,className,range)}}function getBase(view){let rect=view.scrollDOM.getBoundingClientRect();return{left:(view.textDirection==Direction.LTR?rect.left:rect.right-view.scrollDOM.clientWidth*view.scaleX)-view.scrollDOM.scrollLeft*view.scaleX,top:rect.top-view.scrollDOM.scrollTop*view.scaleY}}function wrappedLine(view,pos,inside){let range=EditorSelection.cursor(pos);return{from:Math.max(inside.from,view.moveToLineBoundary(range,!1,!0).from),to:Math.min(inside.to,view.moveToLineBoundary(range,!0,!0).from),type:BlockType.Text}}class LayerView{constructor(view,layer){this.view=view,this.layer=layer,this.drawn=[],this.scaleX=1,this.scaleY=1,this.measureReq={read:this.measure.bind(this),write:this.draw.bind(this)},this.dom=view.scrollDOM.appendChild(document.createElement("div")),this.dom.classList.add("cm-layer"),layer.above&&this.dom.classList.add("cm-layer-above"),layer.class&&this.dom.classList.add(layer.class),this.scale(),this.dom.setAttribute("aria-hidden","true"),this.setOrder(view.state),view.requestMeasure(this.measureReq),layer.mount&&layer.mount(this.dom,view)}update(update){update.startState.facet(layerOrder)!=update.state.facet(layerOrder)&&this.setOrder(update.state),(this.layer.update(update,this.dom)||update.geometryChanged)&&(this.scale(),update.view.requestMeasure(this.measureReq))}docViewUpdate(view){!1!==this.layer.updateOnDocViewUpdate&&view.requestMeasure(this.measureReq)}setOrder(state){let pos=0,order=state.facet(layerOrder);for(;pos{return a=p,b=this.drawn[i],!(a.constructor==b.constructor&&a.eq(b));var a,b}))){let old=this.dom.firstChild,oldI=0;for(let marker of markers)marker.update&&old&&marker.constructor&&this.drawn[oldI].constructor&&marker.update(old,this.drawn[oldI])?(old=old.nextSibling,oldI++):this.dom.insertBefore(marker.draw(),old);for(;old;){let next=old.nextSibling;old.remove(),old=next}this.drawn=markers}}destroy(){this.layer.destroy&&this.layer.destroy(this.dom,this.view),this.dom.remove()}}const layerOrder=Facet.define();function layer(config){return[ViewPlugin.define((v=>new LayerView(v,config))),layerOrder.of(config)]}const CanHidePrimary=!browser.ios,selectionConfig=Facet.define({combine:configs=>combineConfig(configs,{cursorBlinkRate:1200,drawRangeCursor:!0},{cursorBlinkRate:(a,b)=>Math.min(a,b),drawRangeCursor:(a,b)=>a||b})});function drawSelection(){let config=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return[selectionConfig.of(config),cursorLayer,selectionLayer,hideNativeSelection,nativeSelectionHidden.of(!0)]}function configChanged(update){return update.startState.facet(selectionConfig)!=update.state.facet(selectionConfig)}const cursorLayer=layer({above:!0,markers(view){let{state:state}=view,conf=state.facet(selectionConfig),cursors=[];for(let r of state.selection.ranges){let prim=r==state.selection.main;if(r.empty?!prim||CanHidePrimary:conf.drawRangeCursor){let className=prim?"cm-cursor cm-cursor-primary":"cm-cursor cm-cursor-secondary",cursor=r.empty?r:EditorSelection.cursor(r.head,r.head>r.anchor?-1:1);for(let piece of RectangleMarker.forRange(view,className,cursor))cursors.push(piece)}}return cursors},update(update,dom){update.transactions.some((tr=>tr.selection))&&(dom.style.animationName="cm-blink"==dom.style.animationName?"cm-blink2":"cm-blink");let confChange=configChanged(update);return confChange&&setBlinkRate(update.state,dom),update.docChanged||update.selectionSet||confChange},mount(dom,view){setBlinkRate(view.state,dom)},class:"cm-cursorLayer"});function setBlinkRate(state,dom){dom.style.animationDuration=state.facet(selectionConfig).cursorBlinkRate+"ms"}const selectionLayer=layer({above:!1,markers:view=>view.state.selection.ranges.map((r=>r.empty?[]:RectangleMarker.forRange(view,"cm-selectionBackground",r))).reduce(((a,b)=>a.concat(b))),update:(update,dom)=>update.docChanged||update.selectionSet||update.viewportChanged||configChanged(update),class:"cm-selectionLayer"}),themeSpec={".cm-line":{"& ::selection":{backgroundColor:"transparent !important"},"&::selection":{backgroundColor:"transparent !important"}}};CanHidePrimary&&(themeSpec[".cm-line"].caretColor="transparent !important",themeSpec[".cm-content"]={caretColor:"transparent !important"});const hideNativeSelection=Prec.highest(EditorView.theme(themeSpec)),setDropCursorPos=StateEffect.define({map:(pos,mapping)=>null==pos?null:mapping.mapPos(pos)}),dropCursorPos=StateField.define({create:()=>null,update:(pos,tr)=>(null!=pos&&(pos=tr.changes.mapPos(pos)),tr.effects.reduce(((pos,e)=>e.is(setDropCursorPos)?e.value:pos),pos))}),drawDropCursor=ViewPlugin.fromClass(class{constructor(view){this.view=view,this.cursor=null,this.measureReq={read:this.readPos.bind(this),write:this.drawCursor.bind(this)}}update(update){var _a;let cursorPos=update.state.field(dropCursorPos);null==cursorPos?null!=this.cursor&&(null===(_a=this.cursor)||void 0===_a||_a.remove(),this.cursor=null):(this.cursor||(this.cursor=this.view.scrollDOM.appendChild(document.createElement("div")),this.cursor.className="cm-dropCursor"),(update.startState.field(dropCursorPos)!=cursorPos||update.docChanged||update.geometryChanged)&&this.view.requestMeasure(this.measureReq))}readPos(){let{view:view}=this,pos=view.state.field(dropCursorPos),rect=null!=pos&&view.coordsAtPos(pos);if(!rect)return null;let outer=view.scrollDOM.getBoundingClientRect();return{left:rect.left-outer.left+view.scrollDOM.scrollLeft*view.scaleX,top:rect.top-outer.top+view.scrollDOM.scrollTop*view.scaleY,height:rect.bottom-rect.top}}drawCursor(pos){if(this.cursor){let{scaleX:scaleX,scaleY:scaleY}=this.view;pos?(this.cursor.style.left=pos.left/scaleX+"px",this.cursor.style.top=pos.top/scaleY+"px",this.cursor.style.height=pos.height/scaleY+"px"):this.cursor.style.left="-100000px"}}destroy(){this.cursor&&this.cursor.remove()}setDropPos(pos){this.view.state.field(dropCursorPos)!=pos&&this.view.dispatch({effects:setDropCursorPos.of(pos)})}},{eventObservers:{dragover(event){this.setDropPos(this.view.posAtCoords({x:event.clientX,y:event.clientY}))},dragleave(event){event.target!=this.view.contentDOM&&this.view.contentDOM.contains(event.relatedTarget)||this.setDropPos(null)},dragend(){this.setDropPos(null)},drop(){this.setDropPos(null)}}});function iterMatches(doc,re,from,to,f){re.lastIndex=0;for(let m,cursor=doc.iterRange(from,to),pos=from;!cursor.next().done;pos+=cursor.value.length)if(!cursor.lineBreak)for(;m=re.exec(cursor.value);)f(pos+m.index,m)}class MatchDecorator{constructor(config){const{regexp:regexp,decoration:decoration,decorate:decorate,boundary:boundary,maxLength:maxLength=1e3}=config;if(!regexp.global)throw new RangeError("The regular expression given to MatchDecorator should have its 'g' flag set");if(this.regexp=regexp,decorate)this.addMatch=(match,view,from,add)=>decorate(add,from,from+match[0].length,match,view);else if("function"==typeof decoration)this.addMatch=(match,view,from,add)=>{let deco=decoration(match,view,from);deco&&add(from,from+match[0].length,deco)};else{if(!decoration)throw new RangeError("Either 'decorate' or 'decoration' should be provided to MatchDecorator");this.addMatch=(match,_view,from,add)=>add(from,from+match[0].length,decoration)}this.boundary=boundary,this.maxLength=maxLength}createDeco(view){let build=new RangeSetBuilder,add=build.add.bind(build);for(let{from:from,to:to}of function(view,maxLength){let visible=view.visibleRanges;if(1==visible.length&&visible[0].from==view.viewport.from&&visible[0].to==view.viewport.to)return visible;let result=[];for(let{from:from,to:to}of visible)from=Math.max(view.state.doc.lineAt(from).from,from-maxLength),to=Math.min(view.state.doc.lineAt(to).to,to+maxLength),result.length&&result[result.length-1].to>=from?result[result.length-1].to=to:result.push({from:from,to:to});return result}(view,this.maxLength))iterMatches(view.state.doc,this.regexp,from,to,((from,m)=>this.addMatch(m,view,from,add)));return build.finish()}updateDeco(update,deco){let changeFrom=1e9,changeTo=-1;return update.docChanged&&update.changes.iterChanges(((_f,_t,from,to)=>{to>update.view.viewport.from&&from1e3?this.createDeco(update.view):changeTo>-1?this.updateRange(update.view,deco.map(update.changes),changeFrom,changeTo):deco}updateRange(view,deco,updateFrom,updateTo){for(let r of view.visibleRanges){let from=Math.max(r.from,updateFrom),to=Math.min(r.to,updateTo);if(to>from){let fromLine=view.state.doc.lineAt(from),toLine=fromLine.tofromLine.from;from--)if(this.boundary.test(fromLine.text[from-1-fromLine.from])){start=from;break}for(;toranges.push(deco.range(from,to));if(fromLine==toLine)for(this.regexp.lastIndex=start-fromLine.from;(m=this.regexp.exec(fromLine.text))&&m.indexthis.addMatch(m,view,from,add)));deco=deco.update({filterFrom:start,filterTo:end,filter:(from,to)=>fromend,add:ranges})}}return deco}}const UnicodeRegexpSupport=null!=/x/.unicode?"gu":"g",Specials=new RegExp("[\0-\b\n--\u2028\u2029\ufeff-]",UnicodeRegexpSupport),Names={0:"null",7:"bell",8:"backspace",10:"newline",11:"vertical tab",13:"carriage return",27:"escape",8203:"zero width space",8204:"zero width non-joiner",8205:"zero width joiner",8206:"left-to-right mark",8207:"right-to-left mark",8232:"line separator",8237:"left-to-right override",8238:"right-to-left override",8294:"left-to-right isolate",8295:"right-to-left isolate",8297:"pop directional isolate",8233:"paragraph separator",65279:"zero width no-break space",65532:"object replacement"};let _supportsTabSize=null;const specialCharConfig=Facet.define({combine(configs){let config=combineConfig(configs,{render:null,specialChars:Specials,addSpecialChars:null});return(config.replaceTabs=!function(){var _a;if(null==_supportsTabSize&&"undefined"!=typeof document&&document.body){let styles=document.body.style;_supportsTabSize=null!=(null!==(_a=styles.tabSize)&&void 0!==_a?_a:styles.MozTabSize)}return _supportsTabSize||!1}())&&(config.specialChars=new RegExp("\t|"+config.specialChars.source,UnicodeRegexpSupport)),config.addSpecialChars&&(config.specialChars=new RegExp(config.specialChars.source+"|"+config.addSpecialChars.source,UnicodeRegexpSupport)),config}});function highlightSpecialChars(){let config=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return[specialCharConfig.of(config),specialCharPlugin()]}let _plugin=null;function specialCharPlugin(){return _plugin||(_plugin=ViewPlugin.fromClass(class{constructor(view){this.view=view,this.decorations=Decoration.none,this.decorationCache=Object.create(null),this.decorator=this.makeDecorator(view.state.facet(specialCharConfig)),this.decorations=this.decorator.createDeco(view)}makeDecorator(conf){return new MatchDecorator({regexp:conf.specialChars,decoration:(m,view,pos)=>{let{doc:doc}=view.state,code=codePointAt(m[0],0);if(9==code){let line=doc.lineAt(pos),size=view.state.tabSize,col=countColumn(line.text,size,pos-line.from);return Decoration.replace({widget:new TabWidget((size-col%size)*this.view.defaultCharacterWidth/this.view.scaleX)})}return this.decorationCache[code]||(this.decorationCache[code]=Decoration.replace({widget:new SpecialCharWidget(conf,code)}))},boundary:conf.replaceTabs?void 0:/[^]/})}update(update){let conf=update.state.facet(specialCharConfig);update.startState.facet(specialCharConfig)!=conf?(this.decorator=this.makeDecorator(conf),this.decorations=this.decorator.createDeco(update.view)):this.decorations=this.decorator.updateDeco(update,this.decorations)}},{decorations:v=>v.decorations}))}class SpecialCharWidget extends WidgetType{constructor(options,code){super(),this.options=options,this.code=code}eq(other){return other.code==this.code}toDOM(view){let ph=function(code){return code>=32?"•":10==code?"":String.fromCharCode(9216+code)}(this.code),desc=view.state.phrase("Control character")+" "+(Names[this.code]||"0x"+this.code.toString(16)),custom=this.options.render&&this.options.render(this.code,desc,ph);if(custom)return custom;let span=document.createElement("span");return span.textContent=ph,span.title=desc,span.setAttribute("aria-label",desc),span.className="cm-specialChar",span}ignoreEvent(){return!1}}class TabWidget extends WidgetType{constructor(width){super(),this.width=width}eq(other){return other.width==this.width}toDOM(){let span=document.createElement("span");return span.textContent="\t",span.className="cm-tab",span.style.width=this.width+"px",span}ignoreEvent(){return!1}}const lineDeco=Decoration.line({class:"cm-activeLine"}),activeLineHighlighter=ViewPlugin.fromClass(class{constructor(view){this.decorations=this.getDeco(view)}update(update){(update.docChanged||update.selectionSet)&&(this.decorations=this.getDeco(update.view))}getDeco(view){let lastLineStart=-1,deco=[];for(let r of view.state.selection.ranges){let line=view.lineBlockAt(r.head);line.from>lastLineStart&&(deco.push(lineDeco.range(line.from)),lastLineStart=line.from)}return Decoration.set(deco)}},{decorations:v=>v.decorations});function getPos(view,event){let offset=view.posAtCoords({x:event.clientX,y:event.clientY},!1),line=view.state.doc.lineAt(offset),off=offset-line.from,col=off>2e3?-1:off==line.length?function(view,x){let ref=view.coordsAtPos(view.viewport.from);return ref?Math.round(Math.abs((ref.left-x)/view.defaultCharacterWidth)):-1}(view,event.clientX):countColumn(line.text,view.state.tabSize,offset-line.from);return{line:line.number,col:col,off:off}}function rectangleSelectionStyle(view,event){let start=getPos(view,event),startSel=view.state.selection;return start?{update(update){if(update.docChanged){let newStart=update.changes.mapPos(update.startState.doc.line(start.line).from),newLine=update.state.doc.lineAt(newStart);start={line:newLine.number,col:start.col,off:Math.min(start.off,newLine.length)},startSel=startSel.map(update.changes)}},get(event,_extend,multiple){let cur=getPos(view,event);if(!cur)return startSel;let ranges=function(state,a,b){let startLine=Math.min(a.line,b.line),endLine=Math.max(a.line,b.line),ranges=[];if(a.off>2e3||b.off>2e3||a.col<0||b.col<0){let startOff=Math.min(a.off,b.off),endOff=Math.max(a.off,b.off);for(let i=startLine;i<=endLine;i++){let line=state.doc.line(i);line.length<=endOff&&ranges.push(EditorSelection.range(line.from+startOff,line.to+endOff))}}else{let startCol=Math.min(a.col,b.col),endCol=Math.max(a.col,b.col);for(let i=startLine;i<=endLine;i++){let line=state.doc.line(i),start=findColumn(line.text,startCol,state.tabSize,!0);if(start<0)ranges.push(EditorSelection.cursor(line.to));else{let end=findColumn(line.text,endCol,state.tabSize);ranges.push(EditorSelection.range(line.from+start,line.from+end))}}}return ranges}(view.state,start,cur);return ranges.length?multiple?EditorSelection.create(ranges.concat(startSel.ranges)):EditorSelection.create(ranges):startSel}}:null}const keys={Alt:[18,e=>!!e.altKey],Control:[17,e=>!!e.ctrlKey],Shift:[16,e=>!!e.shiftKey],Meta:[91,e=>!!e.metaKey]},showCrosshair={style:"cursor: crosshair"};function crosshairCursor(){let options=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},[code,getter]=keys[options.key||"Alt"],plugin=ViewPlugin.fromClass(class{constructor(view){this.view=view,this.isDown=!1}set(isDown){this.isDown!=isDown&&(this.isDown=isDown,this.view.update([]))}},{eventObservers:{keydown(e){this.set(e.keyCode==code||getter(e))},keyup(e){e.keyCode!=code&&getter(e)||this.set(!1)},mousemove(e){this.set(getter(e))}}});return[plugin,EditorView.contentAttributes.of((view=>{var _a;return(null===(_a=view.plugin(plugin))||void 0===_a?void 0:_a.isDown)?showCrosshair:null}))]}class TooltipViewManager{constructor(view,facet,createTooltipView,removeTooltipView){this.facet=facet,this.createTooltipView=createTooltipView,this.removeTooltipView=removeTooltipView,this.input=view.state.facet(facet),this.tooltips=this.input.filter((t=>t));let prev=null;this.tooltipViews=this.tooltips.map((t=>prev=createTooltipView(t,prev)))}update(update,above){var _a;let input=update.state.facet(this.facet),tooltips=input.filter((x=>x));if(input===this.input){for(let t of this.tooltipViews)t.update&&t.update(update);return!1}let tooltipViews=[],newAbove=above?[]:null;for(let i=0;i