HEX
Server: nginx/1.18.0
System: Linux test-ipsremont 5.4.0-214-generic #234-Ubuntu SMP Fri Mar 14 23:50:27 UTC 2025 x86_64
User: ips (1000)
PHP: 8.0.30
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/html/laravel/node_modules/.vite/deps_temp_f3d6b3ef/simply-beautiful.js.map
{
  "version": 3,
  "sources": ["../../simply-beautiful/dist/index.js"],
  "sourcesContent": ["(function (root, factory) {\n  // https://github.com/umdjs/umd/blob/master/templates/returnExports.js\n  if (typeof define === 'function' && define.amd) {\n    // AMD. Register as an anonymous module.\n    define([], factory);\n  } else if (typeof module === 'object' && module.exports) {\n    // Node. Does not work with strict CommonJS, but\n    // only CommonJS-like environments that support module.exports,\n    // like Node.\n    module.exports = factory();\n  } else {\n    // Browser globals (root is window)\n    root.returnExports = factory();\n  }\n}(typeof self !== 'undefined' ? self : this, function () {\n\n  var environment = (Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]') ? 'node' : 'browser';\n\n  /*\n  JS\n\n\n  Style HTML\n  ---------------\n\n  Written by Nochum Sossonko, (nsossonko@hotmail.com)\n\n  Based on code initially developed by: Einar Lielmanis, <elfz@laacz.lv>\n    http://jsbeautifier.org/\n\n\n  You are free to use this in any way you want, in case you find this useful or working for you.\n\n  Usage:\n    style_html(html_source);\n\n    style_html(html_source, options);\n\n  The options are:\n    indent_size (default 4)          — indentation size,\n    indent_char (default space)      — character to indent with,\n    max_char (default 70)            -  maximum amount of characters per line,\n    brace_style (default \"collapse\") - \"collapse\" | \"expand\" | \"end-expand\"\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.\n    unformatted (defaults to inline tags) - list of tags, that shouldn't be reformatted\n    indent_scripts (default normal)  - \"keep\"|\"separate\"|\"normal\"\n\n    e.g.\n\n    style_html(html_source, {\n      'indent_size': 2,\n      'indent_char': ' ',\n      'max_char': 78,\n      'brace_style': 'expand',\n      'unformatted': ['a', 'sub', 'sup', 'b', 'i', 'u']\n    });\n  */\n\n  function style_html(html_source, options) {\n  //Wrapper function to invoke all the necessary constructors and deal with the output.\n\n  var multi_parser,\n      indent_size,\n      indent_character,\n      max_char,\n      brace_style,\n      unformatted;\n\n  options = options || {};\n  indent_size = options.indent_size || 4;\n  indent_character = options.indent_char || ' ';\n  brace_style = options.brace_style || 'collapse';\n  max_char = options.max_char == 0 ? Infinity : options.max_char || 70;\n  unformatted = options.unformatted || ['a', 'span', 'bdo', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'q', 'sub', 'sup', 'tt', 'i', 'b', 'big', 'small', 'u', 's', 'strike', 'font', 'ins', 'del', 'pre', 'address', 'dt', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6'];\n\n  function Parser() {\n\n    this.pos = 0; //Parser position\n    this.token = '';\n    this.current_mode = 'CONTENT'; //reflects the current Parser mode: TAG/CONTENT\n    this.tags = { //An object to hold tags, their position, and their parent-tags, initiated with default values\n      parent: 'parent1',\n      parentcount: 1,\n      parent1: ''\n    };\n    this.tag_type = '';\n    this.token_text = this.last_token = this.last_text = this.token_type = '';\n\n    this.Utils = { //Uilities made available to the various functions\n      whitespace: \"\\n\\r\\t \".split(''),\n      single_token: 'br,input,link,meta,!doctype,basefont,base,area,hr,wbr,param,img,isindex,?xml,embed,?php,?,?='.split(','), //all the single tags for HTML\n      extra_liners: 'head,body,/html'.split(','), //for tags that need a line of whitespace before them\n      in_array: function (what, arr) {\n        for (var i=0; i<arr.length; i++) {\n          if (what === arr[i]) {\n            return true;\n          }\n        }\n        return false;\n      }\n    }\n\n    this.get_content = function () { //function to capture regular content between tags\n\n      var input_char = '',\n          content = [],\n          space = false; //if a space is needed\n\n      while (this.input.charAt(this.pos) !== '<') {\n        if (this.pos >= this.input.length) {\n          return content.length?content.join(''):['', 'TK_EOF'];\n        }\n\n        input_char = this.input.charAt(this.pos);\n        this.pos++;\n        this.line_char_count++;\n\n        if (this.Utils.in_array(input_char, this.Utils.whitespace)) {\n          if (content.length) {\n            space = true;\n          }\n          this.line_char_count--;\n          continue; //don't want to insert unnecessary space\n        }\n        else if (space) {\n          if (this.line_char_count >= this.max_char) { //insert a line when the max_char is reached\n            content.push('\\n');\n            for (var i=0; i<this.indent_level; i++) {\n              content.push(this.indent_string);\n            }\n            this.line_char_count = 0;\n          }\n          else{\n            content.push(' ');\n            this.line_char_count++;\n          }\n          space = false;\n        }\n        content.push(input_char); //letter at-a-time (or string) inserted to an array\n      }\n      return content.length?content.join(''):'';\n    }\n\n    this.get_contents_to = function (name) { //get the full content of a script or style to pass to js_beautify\n      if (this.pos == this.input.length) {\n        return ['', 'TK_EOF'];\n      }\n      var input_char = '';\n      var content = '';\n      var reg_match = new RegExp('\\<\\/' + name + '\\\\s*\\>', 'igm');\n      reg_match.lastIndex = this.pos;\n      var reg_array = reg_match.exec(this.input);\n      var end_script = reg_array?reg_array.index:this.input.length; //absolute end of script\n      if(this.pos < end_script) { //get everything in between the script tags\n        content = this.input.substring(this.pos, end_script);\n        this.pos = end_script;\n      }\n      return content;\n    }\n\n    this.record_tag = function (tag){ //function to record a tag and its parent in this.tags Object\n      if (this.tags[tag + 'count']) { //check for the existence of this tag type\n        this.tags[tag + 'count']++;\n        this.tags[tag + this.tags[tag + 'count']] = this.indent_level; //and record the present indent level\n      }\n      else { //otherwise initialize this tag type\n        this.tags[tag + 'count'] = 1;\n        this.tags[tag + this.tags[tag + 'count']] = this.indent_level; //and record the present indent level\n      }\n      this.tags[tag + this.tags[tag + 'count'] + 'parent'] = this.tags.parent; //set the parent (i.e. in the case of a div this.tags.div1parent)\n      this.tags.parent = tag + this.tags[tag + 'count']; //and make this the current parent (i.e. in the case of a div 'div1')\n    }\n\n    this.retrieve_tag = function (tag) { //function to retrieve the opening tag to the corresponding closer\n      if (this.tags[tag + 'count']) { //if the openener is not in the Object we ignore it\n        var temp_parent = this.tags.parent; //check to see if it's a closable tag.\n        while (temp_parent) { //till we reach '' (the initial value);\n          if (tag + this.tags[tag + 'count'] === temp_parent) { //if this is it use it\n            break;\n          }\n          temp_parent = this.tags[temp_parent + 'parent']; //otherwise keep on climbing up the DOM Tree\n        }\n        if (temp_parent) { //if we caught something\n          this.indent_level = this.tags[tag + this.tags[tag + 'count']]; //set the indent_level accordingly\n          this.tags.parent = this.tags[temp_parent + 'parent']; //and set the current parent\n        }\n        delete this.tags[tag + this.tags[tag + 'count'] + 'parent']; //delete the closed tags parent reference...\n        delete this.tags[tag + this.tags[tag + 'count']]; //...and the tag itself\n        if (this.tags[tag + 'count'] == 1) {\n          delete this.tags[tag + 'count'];\n        }\n        else {\n          this.tags[tag + 'count']--;\n        }\n      }\n    }\n\n    this.get_tag = function () { //function to get a full tag and parse its type\n      var input_char = '',\n          content = [],\n          space = false,\n          tag_start, tag_end;\n\n      do {\n        if (this.pos >= this.input.length) {\n          return content.length?content.join(''):['', 'TK_EOF'];\n        }\n\n        input_char = this.input.charAt(this.pos);\n        this.pos++;\n        this.line_char_count++;\n\n        if (this.Utils.in_array(input_char, this.Utils.whitespace)) { //don't want to insert unnecessary space\n          space = true;\n          this.line_char_count--;\n          continue;\n        }\n\n        if (input_char === \"'\" || input_char === '\"') {\n          if (!content[1] || content[1] !== '!') { //if we're in a comment strings don't get treated specially\n            input_char += this.get_unformatted(input_char);\n            space = true;\n          }\n        }\n\n        if (input_char === '=') { //no space before =\n          space = false;\n        }\n\n        if (content.length && content[content.length-1] !== '=' && input_char !== '>'\n            && space) { //no space after = or before >\n          if (this.line_char_count >= this.max_char) {\n            this.print_newline(false, content);\n            this.line_char_count = 0;\n          }\n          else {\n            content.push(' ');\n            this.line_char_count++;\n          }\n          space = false;\n        }\n        if (input_char === '<') {\n            tag_start = this.pos - 1;\n        }\n        content.push(input_char); //inserts character at-a-time (or string)\n      } while (input_char !== '>');\n\n      var tag_complete = content.join('');\n      var tag_index;\n      if (tag_complete.indexOf(' ') != -1) { //if there's whitespace, thats where the tag name ends\n        tag_index = tag_complete.indexOf(' ');\n      }\n      else { //otherwise go with the tag ending\n        tag_index = tag_complete.indexOf('>');\n      }\n      var tag_check = tag_complete.substring(1, tag_index).toLowerCase();\n      if (tag_complete.charAt(tag_complete.length-2) === '/' ||\n          this.Utils.in_array(tag_check, this.Utils.single_token)) { //if this tag name is a single tag type (either in the list or has a closing /)\n        this.tag_type = 'SINGLE';\n      }\n      else if (tag_check === 'script') { //for later script handling\n        this.record_tag(tag_check);\n        this.tag_type = 'SCRIPT';\n      }\n      else if (tag_check === 'style') { //for future style handling (for now it justs uses get_content)\n        this.record_tag(tag_check);\n        this.tag_type = 'STYLE';\n      }\n      else if (this.Utils.in_array(tag_check, unformatted)) { // do not reformat the \"unformatted\" tags\n        var comment = this.get_unformatted('</'+tag_check+'>', tag_complete); //...delegate to get_unformatted function\n        content.push(comment);\n        // Preserve collapsed whitespace either before or after this tag.\n        if (tag_start > 0 && this.Utils.in_array(this.input.charAt(tag_start - 1), this.Utils.whitespace)){\n            content.splice(0, 0, this.input.charAt(tag_start - 1));\n        }\n        tag_end = this.pos - 1;\n        if (this.Utils.in_array(this.input.charAt(tag_end + 1), this.Utils.whitespace)){\n            content.push(this.input.charAt(tag_end + 1));\n        }\n        this.tag_type = 'SINGLE';\n      }\n      else if (tag_check.charAt(0) === '!') { //peek for <!-- comment\n        if (tag_check.indexOf('[if') != -1) { //peek for <!--[if conditional comment\n          if (tag_complete.indexOf('!IE') != -1) { //this type needs a closing --> so...\n            var comment = this.get_unformatted('-->', tag_complete); //...delegate to get_unformatted\n            content.push(comment);\n          }\n          this.tag_type = 'START';\n        }\n        else if (tag_check.indexOf('[endif') != -1) {//peek for <!--[endif end conditional comment\n          this.tag_type = 'END';\n          this.unindent();\n        }\n        else if (tag_check.indexOf('[cdata[') != -1) { //if it's a <[cdata[ comment...\n          var comment = this.get_unformatted(']]>', tag_complete); //...delegate to get_unformatted function\n          content.push(comment);\n          this.tag_type = 'SINGLE'; //<![CDATA[ comments are treated like single tags\n        }\n        else {\n          var comment = this.get_unformatted('-->', tag_complete);\n          content.push(comment);\n          this.tag_type = 'SINGLE';\n        }\n      }\n      else {\n        if (tag_check.charAt(0) === '/') { //this tag is a double tag so check for tag-ending\n          this.retrieve_tag(tag_check.substring(1)); //remove it and all ancestors\n          this.tag_type = 'END';\n        }\n        else { //otherwise it's a start-tag\n          this.record_tag(tag_check); //push it on the tag stack\n          this.tag_type = 'START';\n        }\n        if (this.Utils.in_array(tag_check, this.Utils.extra_liners)) { //check if this double needs an extra line\n          this.print_newline(true, this.output);\n        }\n      }\n      return content.join(''); //returns fully formatted tag\n    }\n\n    this.get_unformatted = function (delimiter, orig_tag) { //function to return unformatted content in its entirety\n\n      if (orig_tag && orig_tag.indexOf(delimiter) != -1) {\n        return '';\n      }\n      var input_char = '';\n      var content = '';\n      var space = true;\n      do {\n\n        if (this.pos >= this.input.length) {\n          return content;\n        }\n\n        input_char = this.input.charAt(this.pos);\n        this.pos++\n\n        if (this.Utils.in_array(input_char, this.Utils.whitespace)) {\n          if (!space) {\n            this.line_char_count--;\n            continue;\n          }\n          if (input_char === '\\n' || input_char === '\\r') {\n            content += '\\n';\n            /*  Don't change tab indention for unformatted blocks.  If using code for html editing, this will greatly affect <pre> tags if they are specified in the 'unformatted array'\n            for (var i=0; i<this.indent_level; i++) {\n              content += this.indent_string;\n            }\n            space = false; //...and make sure other indentation is erased\n            */\n            this.line_char_count = 0;\n            continue;\n          }\n        }\n        content += input_char;\n        this.line_char_count++;\n        space = true;\n\n\n      } while (content.indexOf(delimiter) == -1);\n      return content;\n    }\n\n    this.get_token = function () { //initial handler for token-retrieval\n      var token;\n\n      if (this.last_token === 'TK_TAG_SCRIPT' || this.last_token === 'TK_TAG_STYLE') { //check if we need to format javascript\n       var type = this.last_token.substr(7)\n       token = this.get_contents_to(type);\n        if (typeof token !== 'string') {\n          return token;\n        }\n        return [token, 'TK_' + type];\n      }\n      if (this.current_mode === 'CONTENT') {\n        token = this.get_content();\n        if (typeof token !== 'string') {\n          return token;\n        }\n        else {\n          return [token, 'TK_CONTENT'];\n        }\n      }\n\n      if (this.current_mode === 'TAG') {\n        token = this.get_tag();\n        if (typeof token !== 'string') {\n          return token;\n        }\n        else {\n          var tag_name_type = 'TK_TAG_' + this.tag_type;\n          return [token, tag_name_type];\n        }\n      }\n    }\n\n    this.get_full_indent = function (level) {\n      level = this.indent_level + level || 0;\n      if (level < 1)\n        return '';\n\n      return Array(level + 1).join(this.indent_string);\n    }\n\n\n    this.printer = function (js_source, indent_character, indent_size, max_char, brace_style) { //handles input/output and some other printing functions\n\n      this.input = js_source || ''; //gets the input for the Parser\n      this.output = [];\n      this.indent_character = indent_character;\n      this.indent_string = '';\n      this.indent_size = indent_size;\n      this.brace_style = brace_style;\n      this.indent_level = 0;\n      this.max_char = max_char;\n      this.line_char_count = 0; //count to see if max_char was exceeded\n\n      for (var i=0; i<this.indent_size; i++) {\n        this.indent_string += this.indent_character;\n      }\n\n      this.print_newline = function (ignore, arr) {\n        this.line_char_count = 0;\n        if (!arr || !arr.length) {\n          return;\n        }\n        if (!ignore) { //we might want the extra line\n          while (this.Utils.in_array(arr[arr.length-1], this.Utils.whitespace)) {\n            arr.pop();\n          }\n        }\n        arr.push('\\n');\n        for (var i=0; i<this.indent_level; i++) {\n          arr.push(this.indent_string);\n        }\n      }\n\n      this.print_token = function (text) {\n        this.output.push(text);\n      }\n\n      this.indent = function () {\n        this.indent_level++;\n      }\n\n      this.unindent = function () {\n        if (this.indent_level > 0) {\n          this.indent_level--;\n        }\n      }\n    }\n    return this;\n  }\n\n  /*_____________________--------------------_____________________*/\n\n  multi_parser = new Parser(); //wrapping functions Parser\n  multi_parser.printer(html_source, indent_character, indent_size, max_char, brace_style); //initialize starting values\n\n  while (true) {\n      var t = multi_parser.get_token();\n      multi_parser.token_text = t[0];\n      multi_parser.token_type = t[1];\n\n    if (multi_parser.token_type === 'TK_EOF') {\n      break;\n    }\n\n    switch (multi_parser.token_type) {\n      case 'TK_TAG_START':\n        multi_parser.print_newline(false, multi_parser.output);\n        multi_parser.print_token(multi_parser.token_text);\n        multi_parser.indent();\n        multi_parser.current_mode = 'CONTENT';\n        break;\n      case 'TK_TAG_STYLE':\n      case 'TK_TAG_SCRIPT':\n        multi_parser.print_newline(false, multi_parser.output);\n        multi_parser.print_token(multi_parser.token_text);\n        multi_parser.current_mode = 'CONTENT';\n        break;\n      case 'TK_TAG_END':\n        //Print new line only if the tag has no content and has child\n        if (multi_parser.last_token === 'TK_CONTENT' && multi_parser.last_text === '') {\n            var tag_name = multi_parser.token_text.match(/\\w+/)[0];\n            var tag_extracted_from_last_output = multi_parser.output[multi_parser.output.length -1].match(/<\\s*(\\w+)/);\n            if (tag_extracted_from_last_output === null || tag_extracted_from_last_output[1] !== tag_name)\n                multi_parser.print_newline(true, multi_parser.output);\n        }\n        multi_parser.print_token(multi_parser.token_text);\n        multi_parser.current_mode = 'CONTENT';\n        break;\n      case 'TK_TAG_SINGLE':\n        // Don't add a newline before elements that should remain unformatted.\n        var tag_check = multi_parser.token_text.match(/^\\s*<([a-z]+)/i);\n        if (!tag_check || !multi_parser.Utils.in_array(tag_check[1], unformatted)){\n            multi_parser.print_newline(false, multi_parser.output);\n        }\n        multi_parser.print_token(multi_parser.token_text);\n        multi_parser.current_mode = 'CONTENT';\n        break;\n      case 'TK_CONTENT':\n        if (multi_parser.token_text !== '') {\n          multi_parser.print_token(multi_parser.token_text);\n        }\n        multi_parser.current_mode = 'TAG';\n        break;\n      case 'TK_STYLE':\n      case 'TK_SCRIPT':\n        if (multi_parser.token_text !== '') {\n          multi_parser.output.push('\\n');\n          var text = multi_parser.token_text;\n          if (multi_parser.token_type == 'TK_SCRIPT') {\n            var _beautifier = typeof js_beautify == 'function' && js_beautify;\n          } else if (multi_parser.token_type == 'TK_STYLE') {\n            var _beautifier = typeof css_beautify == 'function' && css_beautify;\n          }\n\n          if (options.indent_scripts == \"keep\") {\n            var script_indent_level = 0;\n          } else if (options.indent_scripts == \"separate\") {\n            var script_indent_level = -multi_parser.indent_level;\n          } else {\n            var script_indent_level = 1;\n          }\n\n          var indentation = multi_parser.get_full_indent(script_indent_level);\n          if (_beautifier) {\n            // call the Beautifier if avaliable\n            text = _beautifier(text.replace(/^\\s*/, indentation), options);\n          } else {\n            // simply indent the string otherwise\n            var white = text.match(/^\\s*/)[0];\n            var _level = white.match(/[^\\n\\r]*$/)[0].split(multi_parser.indent_string).length - 1;\n            var reindent = multi_parser.get_full_indent(script_indent_level -_level);\n            text = text.replace(/^\\s*/, indentation)\n                   .replace(/\\r\\n|\\r|\\n/g, '\\n' + reindent)\n                   .replace(/\\s*$/, '');\n          }\n          if (text) {\n            multi_parser.print_token(text);\n            multi_parser.print_newline(true, multi_parser.output);\n          }\n        }\n        multi_parser.current_mode = 'TAG';\n        break;\n    }\n    multi_parser.last_token = multi_parser.token_type;\n    multi_parser.last_text = multi_parser.token_text;\n  }\n  return multi_parser.output.join('');\n  }\n\n  /*\n\n  CSS Beautifier\n  ---------------\n\n    Written by Harutyun Amirjanyan, (amirjanyan@gmail.com)\n\n    Based on code initially developed by: Einar Lielmanis, <elfz@laacz.lv>\n        http://jsbeautifier.org/\n\n\n    You are free to use this in any way you want, in case you find this useful or working for you.\n\n    Usage:\n        css_beautify(source_text);\n        css_beautify(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\n    e.g\n\n    css_beautify(css_source_text, {\n      'indent_size': 1,\n      'indent_char': '\\t'\n    });\n  */\n\n  // http://www.w3.org/TR/CSS21/syndata.html#tokenization\n  // http://www.w3.org/TR/css3-syntax/\n  function css_beautify(source_text, options) {\n    options = options || {};\n    var indentSize = options.indent_size || 4;\n    var indentCharacter = options.indent_char || ' ';\n\n    // compatibility\n    if (typeof indentSize == \"string\")\n        indentSize = parseInt(indentSize);\n\n\n    // tokenizer\n    var whiteRe = /^\\s+$/;\n    var wordRe = /[\\w$\\-_]/;\n\n    var pos = -1, ch;\n    function next() {\n        return ch = source_text.charAt(++pos)\n    }\n    function peek() {\n        return source_text.charAt(pos+1)\n    }\n    function eatString(comma) {\n        var start = pos;\n        while(next()){\n            if (ch==\"\\\\\"){\n                next();\n                next();\n            } else if (ch == comma) {\n                break;\n            } else if (ch == \"\\n\") {\n                break;\n            }\n        }\n        return source_text.substring(start, pos + 1);\n    }\n\n    function eatWhitespace() {\n        var start = pos;\n        while (whiteRe.test(peek()))\n            pos++;\n        return pos != start;\n    }\n\n    function skipWhitespace() {\n        var start = pos;\n        do{\n        }while (whiteRe.test(next()))\n        return pos != start + 1;\n    }\n\n    function eatComment() {\n        var start = pos;\n        next();\n        while (next()) {\n            if (ch == \"*\" && peek() == \"/\") {\n                pos ++;\n                break;\n            }\n        }\n\n        return source_text.substring(start, pos + 1);\n    }\n\n\n    function lookBack(str, index) {\n        return output.slice(-str.length + (index||0), index).join(\"\").toLowerCase() == str;\n    }\n\n    // printer\n    var indentString = source_text.match(/^[\\r\\n]*[\\t ]*/)[0];\n    var singleIndent = Array(indentSize + 1).join(indentCharacter);\n    var indentLevel = 0;\n    function indent() {\n        indentLevel++;\n        indentString += singleIndent;\n    }\n    function outdent() {\n        indentLevel--;\n        indentString = indentString.slice(0, -indentSize);\n    }\n\n    var print = {}\n    print[\"{\"] = function(ch) {\n        print.singleSpace();\n        output.push(ch);\n        print.newLine();\n    }\n    print[\"}\"] = function(ch) {\n        print.newLine();\n        output.push(ch);\n        print.newLine();\n    }\n\n    print.newLine = function(keepWhitespace) {\n        if (!keepWhitespace)\n            while (whiteRe.test(output[output.length - 1]))\n                output.pop();\n\n        if (output.length)\n            output.push('\\n');\n        if (indentString)\n            output.push(indentString);\n    }\n    print.singleSpace = function() {\n        if (output.length && !whiteRe.test(output[output.length - 1]))\n            output.push(' ');\n    }\n    var output = [];\n    if (indentString)\n        output.push(indentString);\n    /*_____________________--------------------_____________________*/\n\n    while(true) {\n        var isAfterSpace = skipWhitespace();\n\n        if (!ch)\n            break;\n\n        if (ch == '{') {\n            indent();\n            print[\"{\"](ch);\n        } else if (ch == '}') {\n            outdent();\n            print[\"}\"](ch);\n        } else if (ch == '\"' || ch == '\\'') {\n            output.push(eatString(ch))\n        } else if (ch == ';') {\n            output.push(ch, '\\n', indentString);\n        } else if (ch == '/' && peek() == '*') { // comment\n            print.newLine();\n            output.push(eatComment(), \"\\n\", indentString);\n        } else if (ch == '(') { // may be a url\n            if (lookBack(\"url\", -1)) {\n              output.push(ch);\n              eatWhitespace();\n              if (next()) {\n                if (ch != ')' && ch != '\"' && ch != '\\'')\n                    output.push(eatString(')'));\n                else\n                    pos--;\n              }\n            } else {\n              if (isAfterSpace)\n                  print.singleSpace();\n              output.push(ch);\n              eatWhitespace();\n            }\n        } else if (ch == ')') {\n            output.push(ch);\n        } else if (ch == ',') {\n            eatWhitespace();\n            output.push(ch);\n            print.singleSpace();\n        } else if (ch == ']') {\n            output.push(ch);\n        }  else if (ch == '[' || ch == '=') { // no whitespace before or after\n            eatWhitespace();\n            output.push(ch);\n        } else {\n            if (isAfterSpace)\n                print.singleSpace();\n\n            output.push(ch);\n        }\n    }\n\n\n    var sweetCode = output.join('').replace(/[\\n ]+$/, '');\n    return sweetCode;\n  }\n\n\n  if (typeof exports !== \"undefined\")\n    exports.css_beautify = css_beautify;\n\n  /*jslint onevar: false, plusplus: false */\n  /*jshint curly:true, eqeqeq:true, laxbreak:true, noempty:false */\n  /*\n\n  JS Beautifier\n  ---------------\n\n\n  Written by Einar Lielmanis, <einar@jsbeautifier.org>\n      http://jsbeautifier.org/\n\n  Originally converted to javascript by Vital, <vital76@gmail.com>\n  \"End braces on own line\" added by Chris J. Shull, <chrisjshull@gmail.com>\n\n  You are free to use this in any way you want, in case you find this useful or working for you.\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    brace_style (default \"collapse\") - \"collapse\" | \"expand\" | \"end-expand\" | \"expand-strict\"\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.\n\n            expand-strict: put brace on own line even in such cases:\n\n                var a =\n                {\n                    a: 5,\n                    b: 6\n                }\n            This mode may break your scripts - e.g \"return { a: 1 }\" will be broken into two lines, so beware.\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    e.g\n\n    js_beautify(js_source_text, {\n      'indent_size': 1,\n      'indent_char': '\\t'\n    });\n\n\n  */\n\n\n\n  function js_beautify(js_source_text, options) {\n\n    var input, output, token_text, last_type, last_text, last_last_text, last_word, flags, flag_store, indent_string;\n    var whitespace, wordchar, punct, parser_pos, line_starters, digits;\n    var prefix, token_type, do_block_just_closed;\n    var wanted_newline, just_added_newline, n_newlines;\n    var preindent_string = '';\n\n\n    // Some interpreters have unexpected results with foo = baz || bar;\n    options = options ? options : {};\n\n    var opt_brace_style;\n\n    // compatibility\n    if (options.space_after_anon_function !== undefined && options.jslint_happy === undefined) {\n        options.jslint_happy = options.space_after_anon_function;\n    }\n    if (options.braces_on_own_line !== undefined) { //graceful handling of deprecated option\n        opt_brace_style = options.braces_on_own_line ? \"expand\" : \"collapse\";\n    }\n    opt_brace_style = options.brace_style ? options.brace_style : (opt_brace_style ? opt_brace_style : \"collapse\");\n\n\n    var opt_indent_size = options.indent_size ? options.indent_size : 4,\n        opt_indent_char = options.indent_char ? options.indent_char : ' ',\n        opt_preserve_newlines = typeof options.preserve_newlines === 'undefined' ? true : options.preserve_newlines,\n        opt_break_chained_methods = typeof options.break_chained_methods === 'undefined' ? false : options.break_chained_methods,\n        opt_max_preserve_newlines = typeof options.max_preserve_newlines === 'undefined' ? false : options.max_preserve_newlines,\n        opt_jslint_happy = options.jslint_happy === 'undefined' ? false : options.jslint_happy,\n        opt_keep_array_indentation = typeof options.keep_array_indentation === 'undefined' ? false : options.keep_array_indentation,\n        opt_space_before_conditional = typeof options.space_before_conditional === 'undefined' ? true : options.space_before_conditional,\n        opt_unescape_strings = typeof options.unescape_strings === 'undefined' ? false : options.unescape_strings;\n\n    just_added_newline = false;\n\n    // cache the source's length.\n    var input_length = js_source_text.length;\n\n    function trim_output(eat_newlines) {\n        eat_newlines = typeof eat_newlines === 'undefined' ? false : eat_newlines;\n        while (output.length && (output[output.length - 1] === ' '\n            || output[output.length - 1] === indent_string\n            || output[output.length - 1] === preindent_string\n            || (eat_newlines && (output[output.length - 1] === '\\n' || output[output.length - 1] === '\\r')))) {\n            output.pop();\n        }\n    }\n\n    function trim(s) {\n        return s.replace(/^\\s\\s*|\\s\\s*$/, '');\n    }\n\n    // we could use just string.split, but\n    // IE doesn't like returning empty strings\n    function split_newlines(s) {\n        //return s.split(/\\x0d\\x0a|\\x0a/);\n\n        s = s.replace(/\\x0d/g, '');\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\n    function force_newline() {\n        var old_keep_array_indentation = opt_keep_array_indentation;\n        opt_keep_array_indentation = false;\n        print_newline();\n        opt_keep_array_indentation = old_keep_array_indentation;\n    }\n\n    function print_newline(ignore_repeated, reset_statement_flags) {\n\n        flags.eat_next_space = false;\n        if (opt_keep_array_indentation && is_array(flags.mode)) {\n            return;\n        }\n\n        ignore_repeated = typeof ignore_repeated === 'undefined' ? true : ignore_repeated;\n        reset_statement_flags = typeof reset_statement_flags === 'undefined' ? true : reset_statement_flags;\n\n        if (reset_statement_flags) {\n            flags.if_line = false;\n            flags.chain_extra_indentation = 0;\n        }\n\n        trim_output();\n\n        if (!output.length) {\n            return; // no newline on start of file\n        }\n\n        if (output[output.length - 1] !== \"\\n\" || !ignore_repeated) {\n            just_added_newline = true;\n            output.push(\"\\n\");\n        }\n        if (preindent_string) {\n            output.push(preindent_string);\n        }\n        for (var i = 0; i < flags.indentation_level + flags.chain_extra_indentation; i += 1) {\n            output.push(indent_string);\n        }\n        if (flags.var_line && flags.var_line_reindented) {\n            output.push(indent_string); // skip space-stuffing, if indenting with a tab\n        }\n    }\n\n\n\n    function print_single_space() {\n\n        if (last_type === 'TK_COMMENT') {\n            return print_newline();\n        }\n        if (flags.eat_next_space) {\n            flags.eat_next_space = false;\n            return;\n        }\n        var last_output = ' ';\n        if (output.length) {\n            last_output = output[output.length - 1];\n        }\n        if (last_output !== ' ' && last_output !== '\\n' && last_output !== indent_string) { // prevent occassional duplicate space\n            output.push(' ');\n        }\n    }\n\n\n    function print_token() {\n        just_added_newline = false;\n        flags.eat_next_space = false;\n        output.push(token_text);\n    }\n\n    function indent() {\n        flags.indentation_level += 1;\n    }\n\n\n    function remove_indent() {\n        if (output.length && output[output.length - 1] === indent_string) {\n            output.pop();\n        }\n    }\n\n    function set_mode(mode) {\n        if (flags) {\n            flag_store.push(flags);\n        }\n        flags = {\n            previous_mode: flags ? flags.mode : 'BLOCK',\n            mode: mode,\n            var_line: false,\n            var_line_tainted: false,\n            var_line_reindented: false,\n            in_html_comment: false,\n            if_line: false,\n            chain_extra_indentation: 0,\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            eat_next_space: false,\n            indentation_level: (flags ? flags.indentation_level + ((flags.var_line && flags.var_line_reindented) ? 1 : 0) : 0),\n            ternary_depth: 0\n        };\n    }\n\n    function is_array(mode) {\n        return mode === '[EXPRESSION]' || mode === '[INDENTED-EXPRESSION]';\n    }\n\n    function is_expression(mode) {\n        return in_array(mode, ['[EXPRESSION]', '(EXPRESSION)', '(FOR-EXPRESSION)', '(COND-EXPRESSION)']);\n    }\n\n    function restore_mode() {\n        do_block_just_closed = flags.mode === 'DO_BLOCK';\n        if (flag_store.length > 0) {\n            var mode = flags.mode;\n            flags = flag_store.pop();\n            flags.previous_mode = mode;\n        }\n    }\n\n    function all_lines_start_with(lines, c) {\n        for (var i = 0; i < lines.length; i++) {\n            var line = trim(lines[i]);\n            if (line.charAt(0) !== c) {\n                return false;\n            }\n        }\n        return true;\n    }\n\n    function is_special_word(word) {\n        return in_array(word, ['case', 'return', 'do', 'if', 'throw', 'else']);\n    }\n\n    function in_array(what, arr) {\n        for (var i = 0; i < arr.length; i += 1) {\n            if (arr[i] === what) {\n                return true;\n            }\n        }\n        return false;\n    }\n\n    function look_up(exclude) {\n        var local_pos = parser_pos;\n        var c = input.charAt(local_pos);\n        while (in_array(c, whitespace) && c !== exclude) {\n            local_pos++;\n            if (local_pos >= input_length) {\n                return 0;\n            }\n            c = input.charAt(local_pos);\n        }\n        return c;\n    }\n\n    function get_next_token() {\n        var i;\n        var resulting_string;\n\n        n_newlines = 0;\n\n        if (parser_pos >= input_length) {\n            return ['', 'TK_EOF'];\n        }\n\n        wanted_newline = false;\n\n        var c = input.charAt(parser_pos);\n        parser_pos += 1;\n\n\n        var keep_whitespace = opt_keep_array_indentation && is_array(flags.mode);\n\n        if (keep_whitespace) {\n\n            var whitespace_count = 0;\n\n            while (in_array(c, whitespace)) {\n\n                if (c === \"\\n\") {\n                    trim_output();\n                    output.push(\"\\n\");\n                    just_added_newline = true;\n                    whitespace_count = 0;\n                } else {\n                    if (c === '\\t') {\n                        whitespace_count += 4;\n                    } else if (c === '\\r') {\n                        // nothing\n                    } else {\n                        whitespace_count += 1;\n                    }\n                }\n\n                if (parser_pos >= input_length) {\n                    return ['', 'TK_EOF'];\n                }\n\n                c = input.charAt(parser_pos);\n                parser_pos += 1;\n\n            }\n\n            if (just_added_newline) {\n                for (i = 0; i < whitespace_count; i++) {\n                    output.push(' ');\n                }\n            }\n\n        } else {\n            while (in_array(c, whitespace)) {\n\n                if (c === \"\\n\") {\n                    n_newlines += ((opt_max_preserve_newlines) ? (n_newlines <= opt_max_preserve_newlines) ? 1 : 0 : 1);\n                }\n\n\n                if (parser_pos >= input_length) {\n                    return ['', 'TK_EOF'];\n                }\n\n                c = input.charAt(parser_pos);\n                parser_pos += 1;\n\n            }\n\n            if (opt_preserve_newlines) {\n                if (n_newlines > 1) {\n                    for (i = 0; i < n_newlines; i += 1) {\n                        print_newline(i === 0);\n                        just_added_newline = true;\n                    }\n                }\n            }\n            wanted_newline = n_newlines > 0;\n        }\n\n\n        if (in_array(c, wordchar)) {\n            if (parser_pos < input_length) {\n                while (in_array(input.charAt(parser_pos), wordchar)) {\n                    c += input.charAt(parser_pos);\n                    parser_pos += 1;\n                    if (parser_pos === input_length) {\n                        break;\n                    }\n                }\n            }\n\n            // small and surprisingly unugly hack for 1E-10 representation\n            if (parser_pos !== input_length && c.match(/^[0-9]+[Ee]$/) && (input.charAt(parser_pos) === '-' || input.charAt(parser_pos) === '+')) {\n\n                var sign = input.charAt(parser_pos);\n                parser_pos += 1;\n\n                var t = get_next_token();\n                c += sign + t[0];\n                return [c, 'TK_WORD'];\n            }\n\n            if (c === 'in') { // hack for 'in' operator\n                return [c, 'TK_OPERATOR'];\n            }\n            if (wanted_newline && last_type !== 'TK_OPERATOR'\n                && last_type !== 'TK_EQUALS'\n                && !flags.if_line && (opt_preserve_newlines || last_text !== 'var')) {\n                print_newline();\n            }\n            return [c, 'TK_WORD'];\n        }\n\n        if (c === '(' || c === '[') {\n            return [c, 'TK_START_EXPR'];\n        }\n\n        if (c === ')' || c === ']') {\n            return [c, 'TK_END_EXPR'];\n        }\n\n        if (c === '{') {\n            return [c, 'TK_START_BLOCK'];\n        }\n\n        if (c === '}') {\n            return [c, 'TK_END_BLOCK'];\n        }\n\n        if (c === ';') {\n            return [c, 'TK_SEMICOLON'];\n        }\n\n        if (c === '/') {\n            var comment = '';\n            // peek for comment /* ... */\n            var inline_comment = true;\n            if (input.charAt(parser_pos) === '*') {\n                parser_pos += 1;\n                if (parser_pos < input_length) {\n                    while (parser_pos < input_length &&\n                        ! (input.charAt(parser_pos) === '*' && input.charAt(parser_pos + 1) && input.charAt(parser_pos + 1) === '/')) {\n                        c = input.charAt(parser_pos);\n                        comment += c;\n                        if (c === \"\\n\" || c === \"\\r\") {\n                            inline_comment = false;\n                        }\n                        parser_pos += 1;\n                        if (parser_pos >= input_length) {\n                            break;\n                        }\n                    }\n                }\n                parser_pos += 2;\n                if (inline_comment && n_newlines === 0) {\n                    return ['/*' + comment + '*/', 'TK_INLINE_COMMENT'];\n                } else {\n                    return ['/*' + comment + '*/', 'TK_BLOCK_COMMENT'];\n                }\n            }\n            // peek for comment // ...\n            if (input.charAt(parser_pos) === '/') {\n                comment = c;\n                while (input.charAt(parser_pos) !== '\\r' && input.charAt(parser_pos) !== '\\n') {\n                    comment += input.charAt(parser_pos);\n                    parser_pos += 1;\n                    if (parser_pos >= input_length) {\n                        break;\n                    }\n                }\n                if (wanted_newline) {\n                    print_newline();\n                }\n                return [comment, 'TK_COMMENT'];\n            }\n\n        }\n\n        if (c === \"'\" || // string\n        c === '\"' || // string\n        (c === '/' &&\n            ((last_type === 'TK_WORD' && is_special_word(last_text)) ||\n                (last_text === ')' && in_array(flags.previous_mode, ['(COND-EXPRESSION)', '(FOR-EXPRESSION)'])) ||\n                (last_type === 'TK_COMMA' || last_type === 'TK_COMMENT' || last_type === 'TK_START_EXPR' || last_type === 'TK_START_BLOCK' || last_type === 'TK_END_BLOCK' || last_type === 'TK_OPERATOR' || last_type === 'TK_EQUALS' || last_type === 'TK_EOF' || last_type === 'TK_SEMICOLON')))) { // regexp\n            var sep = c;\n            var esc = false;\n            var esc1 = 0;\n            var esc2 = 0;\n            resulting_string = c;\n\n            if (parser_pos < input_length) {\n                if (sep === '/') {\n                    //\n                    // handle regexp separately...\n                    //\n                    var in_char_class = false;\n                    while (esc || in_char_class || input.charAt(parser_pos) !== sep) {\n                        resulting_string += input.charAt(parser_pos);\n                        if (!esc) {\n                            esc = input.charAt(parser_pos) === '\\\\';\n                            if (input.charAt(parser_pos) === '[') {\n                                in_char_class = true;\n                            } else if (input.charAt(parser_pos) === ']') {\n                                in_char_class = false;\n                            }\n                        } else {\n                            esc = false;\n                        }\n                        parser_pos += 1;\n                        if (parser_pos >= input_length) {\n                            // incomplete string/rexp when end-of-file reached.\n                            // bail out with what had been received so far.\n                            return [resulting_string, 'TK_STRING'];\n                        }\n                    }\n\n                } else {\n                    //\n                    // and handle string also separately\n                    //\n                    while (esc || input.charAt(parser_pos) !== sep) {\n                        resulting_string += input.charAt(parser_pos);\n                        if (esc1 && esc1 >= esc2) {\n                            esc1 = parseInt(resulting_string.substr(-esc2), 16);\n                            if (esc1 && esc1 >= 0x20 && esc1 <= 0x7e) {\n                                esc1 = String.fromCharCode(esc1);\n                                resulting_string = resulting_string.substr(0, resulting_string.length - esc2 - 2) + (((esc1 === sep) || (esc1 === '\\\\')) ? '\\\\' : '') + esc1;\n                            }\n                            esc1 = 0;\n                        }\n                        if (esc1) {\n                            esc1++;\n                        } else if (!esc) {\n                            esc = input.charAt(parser_pos) === '\\\\';\n                        } else {\n                            esc = false;\n                            if (opt_unescape_strings) {\n                                if (input.charAt(parser_pos) === 'x') {\n                                    esc1++;\n                                    esc2 = 2;\n                                } else if (input.charAt(parser_pos) === 'u') {\n                                    esc1++;\n                                    esc2 = 4;\n                                }\n                            }\n                        }\n                        parser_pos += 1;\n                        if (parser_pos >= input_length) {\n                            // incomplete string/rexp when end-of-file reached.\n                            // bail out with what had been received so far.\n                            return [resulting_string, 'TK_STRING'];\n                        }\n                    }\n                }\n\n\n\n            }\n\n            parser_pos += 1;\n\n            resulting_string += sep;\n\n            if (sep === '/') {\n                // regexps may have modifiers /regexp/MOD , so fetch those, too\n                while (parser_pos < input_length && in_array(input.charAt(parser_pos), wordchar)) {\n                    resulting_string += input.charAt(parser_pos);\n                    parser_pos += 1;\n                }\n            }\n            return [resulting_string, 'TK_STRING'];\n        }\n\n        if (c === '#') {\n\n\n            if (output.length === 0 && input.charAt(parser_pos) === '!') {\n                // shebang\n                resulting_string = c;\n                while (parser_pos < input_length && c !== '\\n') {\n                    c = input.charAt(parser_pos);\n                    resulting_string += c;\n                    parser_pos += 1;\n                }\n                output.push(trim(resulting_string) + '\\n');\n                print_newline();\n                return get_next_token();\n            }\n\n\n\n            // Spidermonkey-specific sharp variables for circular references\n            // https://developer.mozilla.org/En/Sharp_variables_in_JavaScript\n            // https://mxr.mozilla.org/mozilla-central/source/js/src/jsscan.cpp around line 1935\n            var sharp = '#';\n            if (parser_pos < input_length && in_array(input.charAt(parser_pos), digits)) {\n                do {\n                    c = input.charAt(parser_pos);\n                    sharp += c;\n                    parser_pos += 1;\n                } while (parser_pos < input_length && c !== '#' && c !== '=');\n                if (c === '#') {\n                    //\n                } else if (input.charAt(parser_pos) === '[' && input.charAt(parser_pos + 1) === ']') {\n                    sharp += '[]';\n                    parser_pos += 2;\n                } else if (input.charAt(parser_pos) === '{' && input.charAt(parser_pos + 1) === '}') {\n                    sharp += '{}';\n                    parser_pos += 2;\n                }\n                return [sharp, 'TK_WORD'];\n            }\n        }\n\n        if (c === '<' && input.substring(parser_pos - 1, parser_pos + 3) === '<!--') {\n            parser_pos += 3;\n            c = '<!--';\n            while (input.charAt(parser_pos) !== '\\n' && parser_pos < input_length) {\n                c += input.charAt(parser_pos);\n                parser_pos++;\n            }\n            flags.in_html_comment = true;\n            return [c, 'TK_COMMENT'];\n        }\n\n        if (c === '-' && flags.in_html_comment && input.substring(parser_pos - 1, parser_pos + 2) === '-->') {\n            flags.in_html_comment = false;\n            parser_pos += 2;\n            if (wanted_newline) {\n                print_newline();\n            }\n            return ['-->', 'TK_COMMENT'];\n        }\n\n        if (c === '.') {\n            return [c, 'TK_DOT'];\n        }\n\n        if (in_array(c, punct)) {\n            while (parser_pos < input_length && in_array(c + input.charAt(parser_pos), punct)) {\n                c += input.charAt(parser_pos);\n                parser_pos += 1;\n                if (parser_pos >= input_length) {\n                    break;\n                }\n            }\n\n            if (c === ',') {\n                return [c, 'TK_COMMA'];\n            } else if (c === '=') {\n                return [c, 'TK_EQUALS'];\n            } else {\n                return [c, 'TK_OPERATOR'];\n            }\n        }\n\n        return [c, 'TK_UNKNOWN'];\n    }\n\n    //----------------------------------\n    indent_string = '';\n    while (opt_indent_size > 0) {\n        indent_string += opt_indent_char;\n        opt_indent_size -= 1;\n    }\n\n    while (js_source_text && (js_source_text.charAt(0) === ' ' || js_source_text.charAt(0) === '\\t')) {\n        preindent_string += js_source_text.charAt(0);\n        js_source_text = js_source_text.substring(1);\n    }\n    input = js_source_text;\n\n    last_word = ''; // last 'TK_WORD' passed\n    last_type = 'TK_START_EXPR'; // last token type\n    last_text = ''; // last token text\n    last_last_text = ''; // pre-last token text\n    output = [];\n\n    do_block_just_closed = false;\n\n    whitespace = \"\\n\\r\\t \".split('');\n    wordchar = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_$'.split('');\n    digits = '0123456789'.split('');\n\n    punct = '+ - * / % & ++ -- = += -= *= /= %= == === != !== > < >= <= >> << >>> >>>= >>= <<= && &= | || ! !! , : ? ^ ^= |= ::';\n    punct += ' <%= <% %> <?= <? ?>'; // try to be a good boy and try not to break the markup language identifiers\n    punct = punct.split(' ');\n\n    // words which should always start on new line.\n    line_starters = 'continue,try,throw,return,var,if,switch,case,default,for,while,break,function'.split(',');\n\n    // states showing if we are currently in expression (i.e. \"if\" case) - 'EXPRESSION', or in usual block (like, procedure), 'BLOCK'.\n    // some formatting depends on that.\n    flag_store = [];\n    set_mode('BLOCK');\n\n    parser_pos = 0;\n    while (true) {\n        var t = get_next_token();\n        token_text = t[0];\n        token_type = t[1];\n        if (token_type === 'TK_EOF') {\n            break;\n        }\n\n        switch (token_type) {\n\n        case 'TK_START_EXPR':\n\n            if (token_text === '[') {\n\n                if (last_type === 'TK_WORD' || last_text === ')') {\n                    // this is array index specifier, break immediately\n                    // a[x], fn()[x]\n                    if (in_array(last_text, line_starters)) {\n                        print_single_space();\n                    }\n                    set_mode('(EXPRESSION)');\n                    print_token();\n                    break;\n                }\n\n                if (flags.mode === '[EXPRESSION]' || flags.mode === '[INDENTED-EXPRESSION]') {\n                    if (last_last_text === ']' && last_text === ',') {\n                        // ], [ goes to new line\n                        if (flags.mode === '[EXPRESSION]') {\n                            flags.mode = '[INDENTED-EXPRESSION]';\n                            if (!opt_keep_array_indentation) {\n                                indent();\n                            }\n                        }\n                        set_mode('[EXPRESSION]');\n                        if (!opt_keep_array_indentation) {\n                            print_newline();\n                        }\n                    } else if (last_text === '[') {\n                        if (flags.mode === '[EXPRESSION]') {\n                            flags.mode = '[INDENTED-EXPRESSION]';\n                            if (!opt_keep_array_indentation) {\n                                indent();\n                            }\n                        }\n                        set_mode('[EXPRESSION]');\n\n                        if (!opt_keep_array_indentation) {\n                            print_newline();\n                        }\n                    } else {\n                        set_mode('[EXPRESSION]');\n                    }\n                } else {\n                    set_mode('[EXPRESSION]');\n                }\n\n\n\n            } else {\n                if (last_word === 'for') {\n                    set_mode('(FOR-EXPRESSION)');\n                } else if (in_array(last_word, ['if', 'while'])) {\n                    set_mode('(COND-EXPRESSION)');\n                } else {\n                    set_mode('(EXPRESSION)');\n                }\n            }\n\n            if (last_text === ';' || last_type === 'TK_START_BLOCK') {\n                print_newline();\n            } else if (last_type === 'TK_END_EXPR' || last_type === 'TK_START_EXPR' || last_type === 'TK_END_BLOCK' || last_text === '.') {\n                if (wanted_newline) {\n                    print_newline();\n                }\n                // do nothing on (( and )( and ][ and ]( and .(\n            } else if (last_type !== 'TK_WORD' && last_type !== 'TK_OPERATOR') {\n                print_single_space();\n            } else if (last_word === 'function' || last_word === 'typeof') {\n                // function() vs function ()\n                if (opt_jslint_happy) {\n                    print_single_space();\n                }\n            } else if (in_array(last_text, line_starters) || last_text === 'catch') {\n                if (opt_space_before_conditional) {\n                    print_single_space();\n                }\n            }\n            print_token();\n\n            break;\n\n        case 'TK_DOT':\n\n            if (is_special_word(last_text)) {\n                print_single_space();\n            } else if (last_text === ')') {\n                if (opt_break_chained_methods || wanted_newline) {\n                    flags.chain_extra_indentation = 1;\n                    print_newline(true /* ignore_repeated */, false /* reset_statement_flags */);\n                }\n            }\n\n            print_token();\n            break;\n\n        case 'TK_END_EXPR':\n            if (token_text === ']') {\n                if (opt_keep_array_indentation) {\n                    if (last_text === '}') {\n                        // trim_output();\n                        // print_newline(true);\n                        remove_indent();\n                        print_token();\n                        restore_mode();\n                        break;\n                    }\n                } else {\n                    if (flags.mode === '[INDENTED-EXPRESSION]') {\n                        if (last_text === ']') {\n                            restore_mode();\n                            print_newline();\n                            print_token();\n                            break;\n                        }\n                    }\n                }\n            }\n            restore_mode();\n            print_token();\n            break;\n\n        case 'TK_START_BLOCK':\n\n            if (last_word === 'do') {\n                set_mode('DO_BLOCK');\n            } else {\n                set_mode('BLOCK');\n            }\n            if (opt_brace_style === \"expand\" || opt_brace_style === \"expand-strict\") {\n                var empty_braces = false;\n                if (opt_brace_style === \"expand-strict\") {\n                    empty_braces = (look_up() === '}');\n                    if (!empty_braces) {\n                        print_newline(true);\n                    }\n                } else {\n                    if (last_type !== 'TK_OPERATOR') {\n                        if (last_text === '=' || (is_special_word(last_text) && last_text !== 'else')) {\n                            print_single_space();\n                        } else {\n                            print_newline(true);\n                        }\n                    }\n                }\n                print_token();\n                if (!empty_braces) {\n                    indent();\n                }\n            } else {\n                if (last_type !== 'TK_OPERATOR' && last_type !== 'TK_START_EXPR') {\n                    if (last_type === 'TK_START_BLOCK') {\n                        print_newline();\n                    } else {\n                        print_single_space();\n                    }\n                } else {\n                    // if TK_OPERATOR or TK_START_EXPR\n                    if (is_array(flags.previous_mode) && last_text === ',') {\n                        if (last_last_text === '}') {\n                            // }, { in array context\n                            print_single_space();\n                        } else {\n                            print_newline(); // [a, b, c, {\n                        }\n                    }\n                }\n                indent();\n                print_token();\n            }\n\n            break;\n\n        case 'TK_END_BLOCK':\n            restore_mode();\n            if (opt_brace_style === \"expand\" || opt_brace_style === \"expand-strict\") {\n                if (last_text !== '{') {\n                    print_newline();\n                }\n                print_token();\n            } else {\n                if (last_type === 'TK_START_BLOCK') {\n                    // nothing\n                    if (just_added_newline) {\n                        remove_indent();\n                    } else {\n                        // {}\n                        trim_output();\n                    }\n                } else {\n                    if (is_array(flags.mode) && opt_keep_array_indentation) {\n                        // we REALLY need a newline here, but newliner would skip that\n                        opt_keep_array_indentation = false;\n                        print_newline();\n                        opt_keep_array_indentation = true;\n\n                    } else {\n                        print_newline();\n                    }\n                }\n                print_token();\n            }\n            break;\n\n        case 'TK_WORD':\n\n            // no, it's not you. even I have problems understanding how this works\n            // and what does what.\n            if (do_block_just_closed) {\n                // do {} ## while ()\n                print_single_space();\n                print_token();\n                print_single_space();\n                do_block_just_closed = false;\n                break;\n            }\n\n            prefix = 'NONE';\n\n            if (token_text === 'function') {\n                if (flags.var_line && last_type !== 'TK_EQUALS' ) {\n                    flags.var_line_reindented = true;\n                }\n                if ((just_added_newline || last_text === ';') && last_text !== '{'\n                && last_type !== 'TK_BLOCK_COMMENT' && last_type !== 'TK_COMMENT') {\n                    // make sure there is a nice clean space of at least one blank line\n                    // before a new function definition\n                    n_newlines = just_added_newline ? n_newlines : 0;\n                    if (!opt_preserve_newlines) {\n                        n_newlines = 1;\n                    }\n\n                    for (var i = 0; i < 2 - n_newlines; i++) {\n                        print_newline(false);\n                    }\n                }\n                if (last_type === 'TK_WORD') {\n                    if (last_text === 'get' || last_text === 'set' || last_text === 'new' || last_text === 'return') {\n                        print_single_space();\n                    } else {\n                        print_newline();\n                    }\n                } else if (last_type === 'TK_OPERATOR' || last_text === '=') {\n                    // foo = function\n                    print_single_space();\n                } else if (is_expression(flags.mode)) {\n                    // print nothing\n                } else {\n                    print_newline();\n                }\n\n                print_token();\n                last_word = token_text;\n                break;\n            }\n\n            if (token_text === 'case' || (token_text === 'default' && flags.in_case_statement)) {\n                print_newline();\n                if (flags.case_body) {\n                    // switch cases following one another\n                    flags.indentation_level--;\n                    flags.case_body = false;\n                    remove_indent();\n                }\n                print_token();\n                flags.in_case = true;\n                flags.in_case_statement = true;\n                break;\n            }\n\n            if (last_type === 'TK_END_BLOCK') {\n\n                if (!in_array(token_text.toLowerCase(), ['else', 'catch', 'finally'])) {\n                    prefix = 'NEWLINE';\n                } else {\n                    if (opt_brace_style === \"expand\" || opt_brace_style === \"end-expand\" || opt_brace_style === \"expand-strict\") {\n                        prefix = 'NEWLINE';\n                    } else {\n                        prefix = 'SPACE';\n                        print_single_space();\n                    }\n                }\n            } else if (last_type === 'TK_SEMICOLON' && (flags.mode === 'BLOCK' || flags.mode === 'DO_BLOCK')) {\n                prefix = 'NEWLINE';\n            } else if (last_type === 'TK_SEMICOLON' && is_expression(flags.mode)) {\n                prefix = 'SPACE';\n            } else if (last_type === 'TK_STRING') {\n                prefix = 'NEWLINE';\n            } else if (last_type === 'TK_WORD') {\n                if (last_text === 'else') {\n                    // eat newlines between ...else *** some_op...\n                    // won't preserve extra newlines in this place (if any), but don't care that much\n                    trim_output(true);\n                }\n                prefix = 'SPACE';\n            } else if (last_type === 'TK_START_BLOCK') {\n                prefix = 'NEWLINE';\n            } else if (last_type === 'TK_END_EXPR') {\n                print_single_space();\n                prefix = 'NEWLINE';\n            }\n\n            if (in_array(token_text, line_starters) && last_text !== ')') {\n                if (last_text === 'else') {\n                    prefix = 'SPACE';\n                } else {\n                    prefix = 'NEWLINE';\n                }\n\n            }\n\n            if (flags.if_line && last_type === 'TK_END_EXPR') {\n                flags.if_line = false;\n            }\n            if (in_array(token_text.toLowerCase(), ['else', 'catch', 'finally'])) {\n                if (last_type !== 'TK_END_BLOCK' || opt_brace_style === \"expand\" || opt_brace_style === \"end-expand\" || opt_brace_style === \"expand-strict\") {\n                    print_newline();\n                } else {\n                    trim_output(true);\n                    print_single_space();\n                }\n            } else if (prefix === 'NEWLINE') {\n                if (is_special_word(last_text)) {\n                    // no newline between 'return nnn'\n                    print_single_space();\n                } else if (last_type !== 'TK_END_EXPR') {\n                    if ((last_type !== 'TK_START_EXPR' || token_text !== 'var') && last_text !== ':') {\n                        // no need to force newline on 'var': for (var x = 0...)\n                        if (token_text === 'if' && last_word === 'else' && last_text !== '{') {\n                            // no newline for } else if {\n                            print_single_space();\n                        } else {\n                            flags.var_line = false;\n                            flags.var_line_reindented = false;\n                            print_newline();\n                        }\n                    }\n                } else if (in_array(token_text, line_starters) && last_text !== ')') {\n                    flags.var_line = false;\n                    flags.var_line_reindented = false;\n                    print_newline();\n                }\n            } else if (is_array(flags.mode) && last_text === ',' && last_last_text === '}') {\n                print_newline(); // }, in lists get a newline treatment\n            } else if (prefix === 'SPACE') {\n                print_single_space();\n            }\n            print_token();\n            last_word = token_text;\n\n            if (token_text === 'var') {\n                flags.var_line = true;\n                flags.var_line_reindented = false;\n                flags.var_line_tainted = false;\n            }\n\n            if (token_text === 'if') {\n                flags.if_line = true;\n            }\n            if (token_text === 'else') {\n                flags.if_line = false;\n            }\n\n            break;\n\n        case 'TK_SEMICOLON':\n\n            print_token();\n            flags.var_line = false;\n            flags.var_line_reindented = false;\n            if (flags.mode === 'OBJECT') {\n                // OBJECT mode is weird and doesn't get reset too well.\n                flags.mode = 'BLOCK';\n            }\n            break;\n\n        case 'TK_STRING':\n\n            if (last_type === 'TK_END_EXPR' && in_array(flags.previous_mode, ['(COND-EXPRESSION)', '(FOR-EXPRESSION)'])) {\n                print_single_space();\n            } else if (last_type === 'TK_COMMENT' || last_type === 'TK_STRING' || last_type === 'TK_START_BLOCK' || last_type === 'TK_END_BLOCK' || last_type === 'TK_SEMICOLON') {\n                print_newline();\n            } else if (last_type === 'TK_WORD') {\n                print_single_space();\n            } else {\n                if (opt_preserve_newlines && wanted_newline) {\n                    print_newline();\n                    output.push(indent_string);\n                }\n            }\n            print_token();\n            break;\n\n        case 'TK_EQUALS':\n            if (flags.var_line) {\n                // just got an '=' in a var-line, different formatting/line-breaking, etc will now be done\n                flags.var_line_tainted = true;\n            }\n            print_single_space();\n            print_token();\n            print_single_space();\n            break;\n\n        case 'TK_COMMA':\n            if (flags.var_line) {\n                if (is_expression(flags.mode) || last_type === 'TK_END_BLOCK' ) {\n                    // do not break on comma, for(var a = 1, b = 2)\n                    flags.var_line_tainted = false;\n                }\n                if (flags.var_line_tainted) {\n                    print_token();\n                    flags.var_line_reindented = true;\n                    flags.var_line_tainted = false;\n                    print_newline();\n                    break;\n                } else {\n                    flags.var_line_tainted = false;\n                }\n\n                print_token();\n                print_single_space();\n                break;\n            }\n\n            if (last_type === 'TK_COMMENT') {\n                print_newline();\n            }\n\n            if (last_type === 'TK_END_BLOCK' && flags.mode !== \"(EXPRESSION)\") {\n                print_token();\n                if (flags.mode === 'OBJECT' && last_text === '}') {\n                    print_newline();\n                } else {\n                    print_single_space();\n                }\n            } else {\n                if (flags.mode === 'OBJECT') {\n                    print_token();\n                    print_newline();\n                } else {\n                    // EXPR or DO_BLOCK\n                    print_token();\n                    print_single_space();\n                }\n            }\n            break;\n\n\n        case 'TK_OPERATOR':\n\n            var space_before = true;\n            var space_after = true;\n            if (is_special_word(last_text)) {\n                // \"return\" had a special handling in TK_WORD. Now we need to return the favor\n                print_single_space();\n                print_token();\n                break;\n            }\n\n            // hack for actionscript's import .*;\n            if (token_text === '*' && last_type === 'TK_DOT' && !last_last_text.match(/^\\d+$/)) {\n                print_token();\n                break;\n            }\n\n            if (token_text === ':' && flags.in_case) {\n                flags.case_body = true;\n                indent();\n                print_token();\n                print_newline();\n                flags.in_case = false;\n                break;\n            }\n\n            if (token_text === '::') {\n                // no spaces around exotic namespacing syntax operator\n                print_token();\n                break;\n            }\n\n            if (in_array(token_text, ['--', '++', '!']) || (in_array(token_text, ['-', '+']) && (in_array(last_type, ['TK_START_BLOCK', 'TK_START_EXPR', 'TK_EQUALS', 'TK_OPERATOR']) || in_array(last_text, line_starters) || last_text == ','))) {\n                // unary operators (and binary +/- pretending to be unary) special cases\n\n                space_before = false;\n                space_after = false;\n\n                if (last_text === ';' && is_expression(flags.mode)) {\n                    // for (;; ++i)\n                    //        ^^^\n                    space_before = true;\n                }\n                if (last_type === 'TK_WORD' && in_array(last_text, line_starters)) {\n                    space_before = true;\n                }\n\n                if (flags.mode === 'BLOCK' && (last_text === '{' || last_text === ';')) {\n                    // { foo; --i }\n                    // foo(); --bar;\n                    print_newline();\n                }\n            } else if (token_text === ':') {\n                if (flags.ternary_depth === 0) {\n                    if (flags.mode === 'BLOCK') {\n                        flags.mode = 'OBJECT';\n                    }\n                    space_before = false;\n                } else {\n                    flags.ternary_depth -= 1;\n                }\n            } else if (token_text === '?') {\n                flags.ternary_depth += 1;\n            }\n            if (space_before) {\n                print_single_space();\n            }\n\n            print_token();\n\n            if (space_after) {\n                print_single_space();\n            }\n\n            break;\n\n        case 'TK_BLOCK_COMMENT':\n\n            var lines = split_newlines(token_text);\n            var j; // iterator for this case\n\n            if (all_lines_start_with(lines.slice(1), '*')) {\n                // javadoc: reformat and reindent\n                print_newline();\n                output.push(lines[0]);\n                for (j = 1; j < lines.length; j++) {\n                    print_newline();\n                    output.push(' ');\n                    output.push(trim(lines[j]));\n                }\n\n            } else {\n\n                // simple block comment: leave intact\n                if (lines.length > 1) {\n                    // multiline comment block starts with a new line\n                    print_newline();\n                } else {\n                    // single-line /* comment */ stays where it is\n                    if (last_type === 'TK_END_BLOCK') {\n                        print_newline();\n                    } else {\n                        print_single_space();\n                    }\n\n                }\n\n                for (j = 0; j < lines.length; j++) {\n                    output.push(lines[j]);\n                    output.push(\"\\n\");\n                }\n\n            }\n            if (look_up('\\n') !== '\\n') {\n                print_newline();\n            }\n            break;\n\n        case 'TK_INLINE_COMMENT':\n            print_single_space();\n            print_token();\n            if (is_expression(flags.mode)) {\n                print_single_space();\n            } else {\n                force_newline();\n            }\n            break;\n\n        case 'TK_COMMENT':\n\n            if (last_text === ',' && !wanted_newline) {\n                trim_output(true);\n            }\n            if (last_type !== 'TK_COMMENT') {\n                if (wanted_newline) {\n                    print_newline();\n                } else {\n                    print_single_space();\n                }\n            }\n            print_token();\n            print_newline();\n            break;\n\n        case 'TK_UNKNOWN':\n            print_token();\n            break;\n        }\n\n        last_last_text = last_text;\n        last_type = token_type;\n        last_text = token_text;\n    }\n\n    var sweet_code = preindent_string + output.join('').replace(/[\\r\\n ]+$/, '');\n    return sweet_code;\n\n  }\n\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  // if (typeof exports !== \"undefined\") {\n  //   exports.js_beautify = js_beautify;\n  // }\n\n  var SimplyBeautiful = function () {\n    var ret = {};\n    ret.js = function(content, options) {\n      options = options || {};\n      options.indent_size = typeof options.indent_size !== 'undefined' ? options.indent_size : 4;\n      options.space_before_conditional = typeof options.space_before_conditional !== 'undefined' ? options.space_before_conditional : true;\n      options.jslint_happy = typeof options.jslint_happy !== 'undefined' ? options.jslint_happy : true;\n      options.max_char = typeof options.max_char !== 'undefined' ? options.max_char : 0;\n      return js_beautify(content, options);\n    }\n    ret.html = function(content, options) {\n      options = options || {};\n      options.indent_size = typeof options.indent_size !== 'undefined' ? options.indent_size : 4;\n      options.max_char = typeof options.max_char !== 'undefined' ? options.max_char : 0;\n      return style_html(content, options);\n    }\n    ret.css = function(content, options) {\n      options = options || {};\n      options.indent_size = typeof options.indent_size !== 'undefined' ? options.indent_size : 4;\n      options.max_char = typeof options.max_char !== 'undefined' ? options.max_char : 0;\n      return css_beautify(content, options);\n    }\n    ret.json = ret.js;\n    ret.javascript = ret.js;\n    return ret;\n  };\n\n  if (environment == 'browser') {\n    try {\n      window.SimplyBeautiful = SimplyBeautiful;\n    } catch (e) {\n    }\n  }\n  // Just return a value to define the module export.\n  // This example returns an object, but the module\n  // can return a function as the exported value.\n  return SimplyBeautiful(); // Enable if using UMD\n\n}));\n"],
  "mappings": "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",
  "names": ["tag_check", "indent_character", "indent_size", "max_char", "brace_style", "i", "text", "ch", "lines", "t"]
}