{"version":3,"sources":["webpack://grapesjs-parser-postcss/webpack/universalModuleDefinition","webpack://grapesjs-parser-postcss/webpack/bootstrap","webpack://grapesjs-parser-postcss/./node_modules/postcss/node_modules/source-map/lib/util.js","webpack://grapesjs-parser-postcss/./node_modules/postcss/lib/declaration.js","webpack://grapesjs-parser-postcss/./node_modules/postcss/lib/node.js","webpack://grapesjs-parser-postcss/./node_modules/postcss/lib/stringify.js","webpack://grapesjs-parser-postcss/./node_modules/path-browserify/index.js","webpack://grapesjs-parser-postcss/./node_modules/postcss/lib/parse.js","webpack://grapesjs-parser-postcss/./node_modules/postcss/lib/comment.js","webpack://grapesjs-parser-postcss/./node_modules/postcss/lib/at-rule.js","webpack://grapesjs-parser-postcss/./node_modules/postcss/lib/container.js","webpack://grapesjs-parser-postcss/./node_modules/postcss/lib/rule.js","webpack://grapesjs-parser-postcss/./node_modules/postcss/lib/css-syntax-error.js","webpack://grapesjs-parser-postcss/./node_modules/postcss/lib/stringifier.js","webpack://grapesjs-parser-postcss/./node_modules/postcss/lib/processor.js","webpack://grapesjs-parser-postcss/./node_modules/postcss/lib/lazy-result.js","webpack://grapesjs-parser-postcss/./node_modules/buffer/index.js","webpack://grapesjs-parser-postcss/./node_modules/postcss/node_modules/source-map/source-map.js","webpack://grapesjs-parser-postcss/./node_modules/postcss/node_modules/source-map/lib/source-map-generator.js","webpack://grapesjs-parser-postcss/./node_modules/postcss/node_modules/source-map/lib/base64-vlq.js","webpack://grapesjs-parser-postcss/./node_modules/postcss/node_modules/source-map/lib/array-set.js","webpack://grapesjs-parser-postcss/./node_modules/postcss/lib/list.js","webpack://grapesjs-parser-postcss/./node_modules/postcss/lib/root.js","webpack://grapesjs-parser-postcss/./src/index.js","webpack://grapesjs-parser-postcss/./src/parser.js","webpack://grapesjs-parser-postcss/./node_modules/postcss/lib/postcss.js","webpack://grapesjs-parser-postcss/./node_modules/postcss/lib/map-generator.js","webpack://grapesjs-parser-postcss/(webpack)/buildin/global.js","webpack://grapesjs-parser-postcss/./node_modules/base64-js/index.js","webpack://grapesjs-parser-postcss/./node_modules/ieee754/index.js","webpack://grapesjs-parser-postcss/./node_modules/isarray/index.js","webpack://grapesjs-parser-postcss/./node_modules/postcss/node_modules/source-map/lib/base64.js","webpack://grapesjs-parser-postcss/./node_modules/postcss/node_modules/source-map/lib/mapping-list.js","webpack://grapesjs-parser-postcss/./node_modules/postcss/node_modules/source-map/lib/source-map-consumer.js","webpack://grapesjs-parser-postcss/./node_modules/postcss/node_modules/source-map/lib/binary-search.js","webpack://grapesjs-parser-postcss/./node_modules/postcss/node_modules/source-map/lib/quick-sort.js","webpack://grapesjs-parser-postcss/./node_modules/postcss/node_modules/source-map/lib/source-node.js","webpack://grapesjs-parser-postcss/./node_modules/process/browser.js","webpack://grapesjs-parser-postcss/./node_modules/postcss/lib/warn-once.js","webpack://grapesjs-parser-postcss/./node_modules/postcss/lib/result.js","webpack://grapesjs-parser-postcss/./node_modules/postcss/lib/warning.js","webpack://grapesjs-parser-postcss/./node_modules/postcss/lib/parser.js","webpack://grapesjs-parser-postcss/./node_modules/postcss/lib/tokenize.js","webpack://grapesjs-parser-postcss/./node_modules/postcss/lib/input.js","webpack://grapesjs-parser-postcss/./node_modules/postcss/lib/previous-map.js","webpack://grapesjs-parser-postcss/./node_modules/postcss/lib/vendor.js"],"names":["root","factory","exports","module","define","amd","window","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","getArg","aArgs","aName","aDefaultValue","arguments","length","Error","urlRegexp","dataUrlRegexp","urlParse","aUrl","match","scheme","auth","host","port","path","urlGenerate","aParsedUrl","url","normalize","aPath","part","isAbsolute","parts","split","up","splice","join","aRoot","aPathUrl","aRootUrl","joined","charAt","replace","test","relative","level","indexOf","index","lastIndexOf","slice","Array","substr","supportsNullProto","identity","isProtoString","charCodeAt","strcmp","aStr1","aStr2","toSetString","aStr","fromSetString","compareByOriginalPositions","mappingA","mappingB","onlyCompareOriginal","cmp","source","originalLine","originalColumn","generatedColumn","generatedLine","compareByGeneratedPositionsDeflated","onlyCompareGenerated","compareByGeneratedPositionsInflated","parseSourceMapInput","str","JSON","parse","computeSourceURL","sourceRoot","sourceURL","sourceMapURL","parsed","substring","Declaration","_Node","defaults","instance","Constructor","TypeError","_classCallCheck","this","_this","self","ReferenceError","_possibleConstructorReturn","type","subClass","superClass","constructor","writable","configurable","setPrototypeOf","__proto__","_inherits","obj","default","_interopRequireDefault","_typeof","iterator","_cssSyntaxError2","_stringifier2","_stringify2","Node","undefined","raws","error","message","opts","pos","positionBy","input","line","column","warn","result","text","data","node","remove","parent","removeChild","toString","stringifier","stringify","clone","overrides","cloned","cloneNode","map","j","cloneBefore","insertBefore","cloneAfter","insertAfter","replaceWith","_len","nodes","_key","_iterator","_isArray","isArray","_i","_ref","next","done","prev","before","add","after","toJSON","fixed","raw","prop","defaultType","cleanRaws","keepBetween","between","positionInside","string","start","word","builder","process","normalizeArray","allowAboveRoot","last","unshift","splitPathRe","splitPath","filename","exec","filter","xs","f","res","push","resolve","resolvedPath","resolvedAbsolute","cwd","trailingSlash","paths","from","to","trim","arr","end","fromParts","toParts","Math","min","samePartsLength","outputParts","concat","sep","delimiter","dirname","dir","basename","ext","extname","len","_parser2","_input2","css","parser","e","Comment","AtRule","_Container","append","_Container$prototype$","children","apply","prepend","_Container$prototype$2","_len2","_key2","_createClass","defineProperties","target","props","descriptor","protoProps","staticProps","_declaration2","_comment2","Container","child","each","callback","lastEach","indexes","id","walk","postcssNode","stack","walkDecls","RegExp","walkRules","selector","walkAtRules","walkComments","_iterator2","_isArray2","_i2","_ref2","_iterator3","reverse","_isArray3","_i3","_ref3","first","_iterator4","_isArray4","_i4","_ref4","_iterator5","_isArray5","_i5","_ref5","exist","_iterator6","_isArray6","_i6","_ref6","_iterator7","_isArray7","_i7","_ref7","removeAll","_iterator8","_isArray8","_i8","_ref8","replaceValues","pattern","decl","fast","every","condition","some","sample","_this2","cleanSource","_iterator9","_isArray9","_i9","_ref9","_iterator10","_isArray10","_i11","_ref10","_i10","String","_container2","_list2","Rule","comma","set","values","_supportsColor2","_chalk2","_terminalHighlight2","CssSyntaxError","file","plugin","reason","setMessage","captureStackTrace","showSourceCode","color","stdout","lines","max","maxWidth","mark","red","bold","aside","gray","number","gutter","spacing","code","DEFAULT_RAW","colon","indent","beforeDecl","beforeRule","beforeOpen","beforeClose","beforeComment","emptyBody","commentLeft","commentRight","Stringifier","semicolon","body","comment","left","right","rawValue","important","rule","block","ownSemicolon","atrule","params","afterName","own","detect","rawCache","beforeAfter","method","toUpperCase","capitalize","rawSemicolon","rawEmptyBody","rawIndent","rawBeforeComment","rawBeforeDecl","rawBeforeRule","rawBeforeClose","rawBeforeOpen","rawColon","buf","depth","step","_lazyResult2","Processor","plugins","version","use","_process","_x","normalized","postcss","_mapGenerator2","_stringify3","_result2","_parse2","isPromise","then","LazyResult","processor","stringified","processed","inline","syntax","warnings","sync","onFulfilled","onRejected","async","catch","finally","onFinally","handleError","postcssVersion","postcssPlugin","err","console","asyncTick","reject","promise","run","Promise","processing","lastPlugin","generate","content","messages","global","base64","ieee754","kMaxLength","Buffer","TYPED_ARRAY_SUPPORT","createBuffer","that","RangeError","Uint8Array","arg","encodingOrOffset","allocUnsafe","ArrayBuffer","array","byteOffset","byteLength","fromArrayLike","fromArrayBuffer","encoding","isEncoding","actual","write","fromString","isBuffer","checked","copy","buffer","val","isnan","fromObject","assertSize","size","isView","loweredCase","utf8ToBytes","base64ToBytes","toLowerCase","swap","b","bidirectionalIndexOf","isNaN","arrayIndexOf","indexSize","arrLength","valLength","read","readUInt16BE","foundIndex","found","hexWrite","offset","Number","remaining","strLen","parseInt","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","latin1Write","base64Write","ucs2Write","units","hi","lo","utf16leToBytes","base64Slice","fromByteArray","utf8Slice","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","MAX_ARGUMENTS_LENGTH","fromCharCode","decodeCodePointsArray","SlowBuffer","alloc","INSPECT_MAX_BYTES","foo","subarray","typedArraySupport","poolSize","_augment","species","fill","allocUnsafeSlow","_isBuffer","compare","a","x","y","list","swap16","swap32","swap64","hexSlice","asciiSlice","latin1Slice","utf16leSlice","equals","inspect","thisStart","thisEnd","thisCopy","targetCopy","includes","isFinite","_arr","ret","out","toHex","bytes","checkOffset","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","pow","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","floor","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","INVALID_BASE64_RE","Infinity","leadSurrogate","toByteArray","stringtrim","base64clean","src","dst","SourceMapGenerator","SourceMapConsumer","SourceNode","base64VLQ","util","ArraySet","MappingList","_file","_sourceRoot","_skipValidation","_sources","_names","_mappings","_sourcesContents","_version","fromSourceMap","aSourceMapConsumer","generator","eachMapping","mapping","newMapping","generated","original","addMapping","sources","forEach","sourceFile","sourceRelative","has","sourceContentFor","setSourceContent","_validateMapping","aSourceFile","aSourceContent","keys","applySourceMap","aSourceMapPath","newSources","newNames","unsortedForEach","originalPositionFor","aGenerated","aOriginal","aSource","_serializeMappings","nameIdx","sourceIdx","previousGeneratedColumn","previousGeneratedLine","previousOriginalColumn","previousOriginalLine","previousName","previousSource","mappings","toArray","encode","_generateSourcesContent","aSources","aSourceRoot","names","sourcesContent","aValue","digit","encoded","vlq","toVLQSigned","VLQ_BASE","decode","aIndex","aOutParam","continuation","shift","shifted","fromVLQSigned","rest","hasNativeMap","Map","_array","_set","fromArray","aArray","aAllowDuplicates","getOwnPropertyNames","sStr","isDuplicate","idx","at","aIdx","separators","current","func","quote","escape","letter","space","Root","ignore","toResult","editor","options","setCustomParserCss","log","msg","createRule","style","selectors","createAtRule","_extends","atRule","ast","_processor2","_atRule2","_vendor2","_rule2","_root2","initializer","creator","transformer","cache","processOpts","pluginOpts","vendor","_sourceMap2","_path2","MapGenerator","mapOpts","isMap","previous","previousMaps","isInline","annotation","isSourcesContent","withContent","clearAnnotation","setSourcesContent","already","applyPrevMaps","consumer","isAnnotation","toBase64","btoa","unescape","encodeURIComponent","addAnnotation","outputFile","eol","generateMap","generateString","sourcePath","_this3","g","Function","eval","b64","lens","getLens","validLen","placeHoldersLen","tmp","Arr","_byteLength","curByte","revLookup","uint8","extraBytes","len2","encodeChunk","lookup","tripletToBase64","num","output","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","NaN","rt","abs","LN2","intToCharMap","charCode","_sorted","_last","aCallback","aThisArg","aMapping","lineA","lineB","columnA","columnB","generatedPositionAfter","sort","binarySearch","quickSort","aSourceMap","aSourceMapURL","sourceMap","sections","IndexedSourceMapConsumer","BasicSourceMapConsumer","_absoluteSources","_sourceMapURL","Mapping","lastOffset","_sections","offsetLine","offsetColumn","generatedOffset","__generatedMappings","_parseMappings","__originalMappings","_charIsMappingSeparator","GENERATED_ORDER","ORIGINAL_ORDER","GREATEST_LOWER_BOUND","LEAST_UPPER_BOUND","aContext","aOrder","context","_generatedMappings","_originalMappings","allGeneratedPositionsFor","needle","_findSourceIndex","_findMapping","lastColumn","relativeSource","smc","generatedMappings","destGeneratedMappings","destOriginalMappings","srcMapping","destMapping","segment","cachedSegments","temp","originalMappings","aNeedle","aMappings","aLineName","aColumnName","aComparator","aBias","search","computeColumnSpans","nextMapping","lastGeneratedColumn","hasContentsOfAllSources","sc","nullOnMissing","fileUriAbsPath","generatedPositionFor","sectionIndex","section","bias","generatedPosition","sectionMappings","adjustedMapping","aHaystack","aCompare","recursiveSearch","aLow","aHigh","mid","ary","doQuickSort","comparator","low","high","round","random","randomIntInRange","pivot","q","REGEX_NEWLINE","isSourceNode","aLine","aColumn","aChunks","sourceContents","fromStringWithSourceMap","aGeneratedCode","aRelativePath","remainingLines","remainingLinesIndex","shiftNextLine","getNextLine","lastGeneratedLine","lastMapping","nextLine","addMappingWithCode","aChunk","chunk","aFn","aSep","newChildren","replaceRight","aPattern","aReplacement","lastChild","walkSourceContents","toStringWithSourceMap","sourceMappingActive","lastOriginalSource","lastOriginalLine","lastOriginalColumn","lastOriginalName","sourceContent","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","setTimeout","clearTimeout","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","timeout","marker","runClearTimeout","Item","noop","nextTick","args","title","browser","env","argv","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","chdir","umask","printed","_warning2","Result","warning","Warning","opt","_tokenize2","Parser","spaces","createTokenizer","tokenizer","token","endOfFile","nextToken","freeSemicolon","emptyRule","other","endFile","init","bracket","brackets","tokens","back","pop","unclosedBracket","unknownWord","spacesAndCommentsFromEnd","spacesAndCommentsFromStart","precheckMissedSemicolon","stringFrom","spacesFromEnd","_type","checkMissedSemicolon","unnamedAtrule","open","unexpectedClose","unclosedBlock","clean","reduce","all","lastTokenType","doubleColon","founded","valueOf","ignoreErrors","nextOffset","escaped","escapePos","currentToken","returned","unclosed","what","NEWLINE","FEED","CR","SPACE","TAB","OPEN_SQUARE","CLOSE_SQUARE","OPEN_CURLY","CLOSE_CURLY","COLON","SEMICOLON","OPEN_PARENTHESES","SINGLE_QUOTE","DOUBLE_QUOTE","BACKSLASH","RE_BAD_BRACKET","CLOSE_PARENTHESES","AT","RE_AT_END","lastIndex","SLASH","RE_HEX_ESCAPE","ASTERISK","RE_WORD_END","_previousMap2","sequence","Input","mapResolve","origin","_fs2","PreviousMap","loadAnnotation","startWith","loadMap","consumerCache","decodeInline","uri","decodeURIComponent","atob","fromBase64","lastMatch","prevPath","existsSync","readFileSync","prefix","unprefixed"],"mappings":"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","file":"dist/grapesjs-parser-postcss.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"grapesjs-parser-postcss\"] = factory();\n\telse\n\t\troot[\"grapesjs-parser-postcss\"] = factory();\n})(window, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 21);\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n/**\n * This is a helper function for getting values from parameter/options\n * objects.\n *\n * @param args The object we are extracting values from\n * @param name The name of the property we are getting.\n * @param defaultValue An optional value to return if the property is missing\n * from the object. If this is not specified and the property is missing, an\n * error will be thrown.\n */\nfunction getArg(aArgs, aName, aDefaultValue) {\n if (aName in aArgs) {\n return aArgs[aName];\n } else if (arguments.length === 3) {\n return aDefaultValue;\n } else {\n throw new Error('\"' + aName + '\" is a required argument.');\n }\n}\nexports.getArg = getArg;\n\nvar urlRegexp = /^(?:([\\w+\\-.]+):)?\\/\\/(?:(\\w+:\\w+)@)?([\\w.-]*)(?::(\\d+))?(.*)$/;\nvar dataUrlRegexp = /^data:.+\\,.+$/;\n\nfunction urlParse(aUrl) {\n var match = aUrl.match(urlRegexp);\n if (!match) {\n return null;\n }\n return {\n scheme: match[1],\n auth: match[2],\n host: match[3],\n port: match[4],\n path: match[5]\n };\n}\nexports.urlParse = urlParse;\n\nfunction urlGenerate(aParsedUrl) {\n var url = '';\n if (aParsedUrl.scheme) {\n url += aParsedUrl.scheme + ':';\n }\n url += '//';\n if (aParsedUrl.auth) {\n url += aParsedUrl.auth + '@';\n }\n if (aParsedUrl.host) {\n url += aParsedUrl.host;\n }\n if (aParsedUrl.port) {\n url += \":\" + aParsedUrl.port\n }\n if (aParsedUrl.path) {\n url += aParsedUrl.path;\n }\n return url;\n}\nexports.urlGenerate = urlGenerate;\n\n/**\n * Normalizes a path, or the path portion of a URL:\n *\n * - Replaces consecutive slashes with one slash.\n * - Removes unnecessary '.' parts.\n * - Removes unnecessary '/..' parts.\n *\n * Based on code in the Node.js 'path' core module.\n *\n * @param aPath The path or url to normalize.\n */\nfunction normalize(aPath) {\n var path = aPath;\n var url = urlParse(aPath);\n if (url) {\n if (!url.path) {\n return aPath;\n }\n path = url.path;\n }\n var isAbsolute = exports.isAbsolute(path);\n\n var parts = path.split(/\\/+/);\n for (var part, up = 0, i = parts.length - 1; i >= 0; i--) {\n part = parts[i];\n if (part === '.') {\n parts.splice(i, 1);\n } else if (part === '..') {\n up++;\n } else if (up > 0) {\n if (part === '') {\n // The first part is blank if the path is absolute. Trying to go\n // above the root is a no-op. Therefore we can remove all '..' parts\n // directly after the root.\n parts.splice(i + 1, up);\n up = 0;\n } else {\n parts.splice(i, 2);\n up--;\n }\n }\n }\n path = parts.join('/');\n\n if (path === '') {\n path = isAbsolute ? '/' : '.';\n }\n\n if (url) {\n url.path = path;\n return urlGenerate(url);\n }\n return path;\n}\nexports.normalize = normalize;\n\n/**\n * Joins two paths/URLs.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be joined with the root.\n *\n * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a\n * scheme-relative URL: Then the scheme of aRoot, if any, is prepended\n * first.\n * - Otherwise aPath is a path. If aRoot is a URL, then its path portion\n * is updated with the result and aRoot is returned. Otherwise the result\n * is returned.\n * - If aPath is absolute, the result is aPath.\n * - Otherwise the two paths are joined with a slash.\n * - Joining for example 'http://' and 'www.example.com' is also supported.\n */\nfunction join(aRoot, aPath) {\n if (aRoot === \"\") {\n aRoot = \".\";\n }\n if (aPath === \"\") {\n aPath = \".\";\n }\n var aPathUrl = urlParse(aPath);\n var aRootUrl = urlParse(aRoot);\n if (aRootUrl) {\n aRoot = aRootUrl.path || '/';\n }\n\n // `join(foo, '//www.example.org')`\n if (aPathUrl && !aPathUrl.scheme) {\n if (aRootUrl) {\n aPathUrl.scheme = aRootUrl.scheme;\n }\n return urlGenerate(aPathUrl);\n }\n\n if (aPathUrl || aPath.match(dataUrlRegexp)) {\n return aPath;\n }\n\n // `join('http://', 'www.example.com')`\n if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {\n aRootUrl.host = aPath;\n return urlGenerate(aRootUrl);\n }\n\n var joined = aPath.charAt(0) === '/'\n ? aPath\n : normalize(aRoot.replace(/\\/+$/, '') + '/' + aPath);\n\n if (aRootUrl) {\n aRootUrl.path = joined;\n return urlGenerate(aRootUrl);\n }\n return joined;\n}\nexports.join = join;\n\nexports.isAbsolute = function (aPath) {\n return aPath.charAt(0) === '/' || urlRegexp.test(aPath);\n};\n\n/**\n * Make a path relative to a URL or another path.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be made relative to aRoot.\n */\nfunction relative(aRoot, aPath) {\n if (aRoot === \"\") {\n aRoot = \".\";\n }\n\n aRoot = aRoot.replace(/\\/$/, '');\n\n // It is possible for the path to be above the root. In this case, simply\n // checking whether the root is a prefix of the path won't work. Instead, we\n // need to remove components from the root one by one, until either we find\n // a prefix that fits, or we run out of components to remove.\n var level = 0;\n while (aPath.indexOf(aRoot + '/') !== 0) {\n var index = aRoot.lastIndexOf(\"/\");\n if (index < 0) {\n return aPath;\n }\n\n // If the only part of the root that is left is the scheme (i.e. http://,\n // file:///, etc.), one or more slashes (/), or simply nothing at all, we\n // have exhausted all components, so the path is not relative to the root.\n aRoot = aRoot.slice(0, index);\n if (aRoot.match(/^([^\\/]+:\\/)?\\/*$/)) {\n return aPath;\n }\n\n ++level;\n }\n\n // Make sure we add a \"../\" for each component we removed from the root.\n return Array(level + 1).join(\"../\") + aPath.substr(aRoot.length + 1);\n}\nexports.relative = relative;\n\nvar supportsNullProto = (function () {\n var obj = Object.create(null);\n return !('__proto__' in obj);\n}());\n\nfunction identity (s) {\n return s;\n}\n\n/**\n * Because behavior goes wacky when you set `__proto__` on objects, we\n * have to prefix all the strings in our set with an arbitrary character.\n *\n * See https://github.com/mozilla/source-map/pull/31 and\n * https://github.com/mozilla/source-map/issues/30\n *\n * @param String aStr\n */\nfunction toSetString(aStr) {\n if (isProtoString(aStr)) {\n return '$' + aStr;\n }\n\n return aStr;\n}\nexports.toSetString = supportsNullProto ? identity : toSetString;\n\nfunction fromSetString(aStr) {\n if (isProtoString(aStr)) {\n return aStr.slice(1);\n }\n\n return aStr;\n}\nexports.fromSetString = supportsNullProto ? identity : fromSetString;\n\nfunction isProtoString(s) {\n if (!s) {\n return false;\n }\n\n var length = s.length;\n\n if (length < 9 /* \"__proto__\".length */) {\n return false;\n }\n\n if (s.charCodeAt(length - 1) !== 95 /* '_' */ ||\n s.charCodeAt(length - 2) !== 95 /* '_' */ ||\n s.charCodeAt(length - 3) !== 111 /* 'o' */ ||\n s.charCodeAt(length - 4) !== 116 /* 't' */ ||\n s.charCodeAt(length - 5) !== 111 /* 'o' */ ||\n s.charCodeAt(length - 6) !== 114 /* 'r' */ ||\n s.charCodeAt(length - 7) !== 112 /* 'p' */ ||\n s.charCodeAt(length - 8) !== 95 /* '_' */ ||\n s.charCodeAt(length - 9) !== 95 /* '_' */) {\n return false;\n }\n\n for (var i = length - 10; i >= 0; i--) {\n if (s.charCodeAt(i) !== 36 /* '$' */) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Comparator between two mappings where the original positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same original source/line/column, but different generated\n * line and column the same. Useful when searching for a mapping with a\n * stubbed out mapping.\n */\nfunction compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {\n var cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0 || onlyCompareOriginal) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByOriginalPositions = compareByOriginalPositions;\n\n/**\n * Comparator between two mappings with deflated source and name indices where\n * the generated positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same generated line and column, but different\n * source/name/original line and column the same. Useful when searching for a\n * mapping with a stubbed out mapping.\n */\nfunction compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) {\n var cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0 || onlyCompareGenerated) {\n return cmp;\n }\n\n cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;\n\nfunction strcmp(aStr1, aStr2) {\n if (aStr1 === aStr2) {\n return 0;\n }\n\n if (aStr1 === null) {\n return 1; // aStr2 !== null\n }\n\n if (aStr2 === null) {\n return -1; // aStr1 !== null\n }\n\n if (aStr1 > aStr2) {\n return 1;\n }\n\n return -1;\n}\n\n/**\n * Comparator between two mappings with inflated source and name strings where\n * the generated positions are compared.\n */\nfunction compareByGeneratedPositionsInflated(mappingA, mappingB) {\n var cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;\n\n/**\n * Strip any JSON XSSI avoidance prefix from the string (as documented\n * in the source maps specification), and then parse the string as\n * JSON.\n */\nfunction parseSourceMapInput(str) {\n return JSON.parse(str.replace(/^\\)]}'[^\\n]*\\n/, ''));\n}\nexports.parseSourceMapInput = parseSourceMapInput;\n\n/**\n * Compute the URL of a source given the the source root, the source's\n * URL, and the source map's URL.\n */\nfunction computeSourceURL(sourceRoot, sourceURL, sourceMapURL) {\n sourceURL = sourceURL || '';\n\n if (sourceRoot) {\n // This follows what Chrome does.\n if (sourceRoot[sourceRoot.length - 1] !== '/' && sourceURL[0] !== '/') {\n sourceRoot += '/';\n }\n // The spec says:\n // Line 4: An optional source root, useful for relocating source\n // files on a server or removing repeated values in the\n // “sources” entry. This value is prepended to the individual\n // entries in the “source” field.\n sourceURL = sourceRoot + sourceURL;\n }\n\n // Historically, SourceMapConsumer did not take the sourceMapURL as\n // a parameter. This mode is still somewhat supported, which is why\n // this code block is conditional. However, it's preferable to pass\n // the source map URL to SourceMapConsumer, so that this function\n // can implement the source URL resolution algorithm as outlined in\n // the spec. This block is basically the equivalent of:\n // new URL(sourceURL, sourceMapURL).toString()\n // ... except it avoids using URL, which wasn't available in the\n // older releases of node still supported by this library.\n //\n // The spec says:\n // If the sources are not absolute URLs after prepending of the\n // “sourceRoot”, the sources are resolved relative to the\n // SourceMap (like resolving script src in a html document).\n if (sourceMapURL) {\n var parsed = urlParse(sourceMapURL);\n if (!parsed) {\n throw new Error(\"sourceMapURL could not be parsed\");\n }\n if (parsed.path) {\n // Strip the last path component, but keep the \"/\".\n var index = parsed.path.lastIndexOf('/');\n if (index >= 0) {\n parsed.path = parsed.path.substring(0, index + 1);\n }\n }\n sourceURL = join(urlGenerate(parsed), sourceURL);\n }\n\n return normalize(sourceURL);\n}\nexports.computeSourceURL = computeSourceURL;\n","'use strict';\n\nexports.__esModule = true;\n\nvar _node = require('./node');\n\nvar _node2 = _interopRequireDefault(_node);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/**\n * Represents a CSS declaration.\n *\n * @extends Node\n *\n * @example\n * const root = postcss.parse('a { color: black }')\n * const decl = root.first.first\n * decl.type //=> 'decl'\n * decl.toString() //=> ' color: black'\n */\nvar Declaration = function (_Node) {\n _inherits(Declaration, _Node);\n\n function Declaration(defaults) {\n _classCallCheck(this, Declaration);\n\n var _this = _possibleConstructorReturn(this, _Node.call(this, defaults));\n\n _this.type = 'decl';\n return _this;\n }\n\n /**\n * @memberof Declaration#\n * @member {string} prop The declaration’s property name.\n *\n * @example\n * const root = postcss.parse('a { color: black }')\n * const decl = root.first.first\n * decl.prop //=> 'color'\n */\n\n /**\n * @memberof Declaration#\n * @member {string} value The declaration’s value.\n *\n * @example\n * const root = postcss.parse('a { color: black }')\n * const decl = root.first.first\n * decl.value //=> 'black'\n */\n\n /**\n * @memberof Declaration#\n * @member {boolean} important `true` if the declaration\n * has an !important annotation.\n *\n * @example\n * const root = postcss.parse('a { color: black !important; color: red }')\n * root.first.first.important //=> true\n * root.first.last.important //=> undefined\n */\n\n /**\n * @memberof Declaration#\n * @member {object} raws Information to generate byte-to-byte equal\n * node string as it was in the origin input.\n *\n * Every parser saves its own properties,\n * but the default CSS parser uses:\n *\n * * `before`: the space symbols before the node. It also stores `*`\n * and `_` symbols before the declaration (IE hack).\n * * `between`: the symbols between the property and value\n * for declarations.\n * * `important`: the content of the important statement,\n * if it is not just `!important`.\n *\n * PostCSS cleans declaration from comments and extra spaces,\n * but it stores origin content in raws properties.\n * As such, if you don’t change a declaration’s value,\n * PostCSS will use the raw value with comments.\n *\n * @example\n * const root = postcss.parse('a {\\n color:black\\n}')\n * root.first.first.raws //=> { before: '\\n ', between: ':' }\n */\n\n\n return Declaration;\n}(_node2.default);\n\nexports.default = Declaration;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImRlY2xhcmF0aW9uLmVzNiJdLCJuYW1lcyI6WyJEZWNsYXJhdGlvbiIsImRlZmF1bHRzIiwidHlwZSIsIk5vZGUiXSwibWFwcGluZ3MiOiI7Ozs7QUFBQTs7Ozs7Ozs7Ozs7O0FBRUE7Ozs7Ozs7Ozs7O0lBV01BLFc7OztBQUNKLHVCQUFhQyxRQUFiLEVBQXVCO0FBQUE7O0FBQUEsaURBQ3JCLGlCQUFNQSxRQUFOLENBRHFCOztBQUVyQixVQUFLQyxJQUFMLEdBQVksTUFBWjtBQUZxQjtBQUd0Qjs7QUFFRDs7Ozs7Ozs7OztBQVVBOzs7Ozs7Ozs7O0FBVUE7Ozs7Ozs7Ozs7O0FBV0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQXJDd0JDLGM7O2tCQStEWEgsVyIsImZpbGUiOiJkZWNsYXJhdGlvbi5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBOb2RlIGZyb20gJy4vbm9kZSdcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgQ1NTIGRlY2xhcmF0aW9uLlxuICpcbiAqIEBleHRlbmRzIE5vZGVcbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3Qgcm9vdCA9IHBvc3Rjc3MucGFyc2UoJ2EgeyBjb2xvcjogYmxhY2sgfScpXG4gKiBjb25zdCBkZWNsID0gcm9vdC5maXJzdC5maXJzdFxuICogZGVjbC50eXBlICAgICAgIC8vPT4gJ2RlY2wnXG4gKiBkZWNsLnRvU3RyaW5nKCkgLy89PiAnIGNvbG9yOiBibGFjaydcbiAqL1xuY2xhc3MgRGVjbGFyYXRpb24gZXh0ZW5kcyBOb2RlIHtcbiAgY29uc3RydWN0b3IgKGRlZmF1bHRzKSB7XG4gICAgc3VwZXIoZGVmYXVsdHMpXG4gICAgdGhpcy50eXBlID0gJ2RlY2wnXG4gIH1cblxuICAvKipcbiAgICogQG1lbWJlcm9mIERlY2xhcmF0aW9uI1xuICAgKiBAbWVtYmVyIHtzdHJpbmd9IHByb3AgVGhlIGRlY2xhcmF0aW9u4oCZcyBwcm9wZXJ0eSBuYW1lLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBjb25zdCByb290ID0gcG9zdGNzcy5wYXJzZSgnYSB7IGNvbG9yOiBibGFjayB9JylcbiAgICogY29uc3QgZGVjbCA9IHJvb3QuZmlyc3QuZmlyc3RcbiAgICogZGVjbC5wcm9wIC8vPT4gJ2NvbG9yJ1xuICAgKi9cblxuICAvKipcbiAgICogQG1lbWJlcm9mIERlY2xhcmF0aW9uI1xuICAgKiBAbWVtYmVyIHtzdHJpbmd9IHZhbHVlIFRoZSBkZWNsYXJhdGlvbuKAmXMgdmFsdWUuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGNvbnN0IHJvb3QgPSBwb3N0Y3NzLnBhcnNlKCdhIHsgY29sb3I6IGJsYWNrIH0nKVxuICAgKiBjb25zdCBkZWNsID0gcm9vdC5maXJzdC5maXJzdFxuICAgKiBkZWNsLnZhbHVlIC8vPT4gJ2JsYWNrJ1xuICAgKi9cblxuICAvKipcbiAgICogQG1lbWJlcm9mIERlY2xhcmF0aW9uI1xuICAgKiBAbWVtYmVyIHtib29sZWFufSBpbXBvcnRhbnQgYHRydWVgIGlmIHRoZSBkZWNsYXJhdGlvblxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzIGFuICFpbXBvcnRhbnQgYW5ub3RhdGlvbi5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogY29uc3Qgcm9vdCA9IHBvc3Rjc3MucGFyc2UoJ2EgeyBjb2xvcjogYmxhY2sgIWltcG9ydGFudDsgY29sb3I6IHJlZCB9JylcbiAgICogcm9vdC5maXJzdC5maXJzdC5pbXBvcnRhbnQgLy89PiB0cnVlXG4gICAqIHJvb3QuZmlyc3QubGFzdC5pbXBvcnRhbnQgIC8vPT4gdW5kZWZpbmVkXG4gICAqL1xuXG4gIC8qKlxuICAgKiBAbWVtYmVyb2YgRGVjbGFyYXRpb24jXG4gICAqIEBtZW1iZXIge29iamVjdH0gcmF3cyBJbmZvcm1hdGlvbiB0byBnZW5lcmF0ZSBieXRlLXRvLWJ5dGUgZXF1YWxcbiAgICogICAgICAgICAgICAgICAgICAgICAgIG5vZGUgc3RyaW5nIGFzIGl0IHdhcyBpbiB0aGUgb3JpZ2luIGlucHV0LlxuICAgKlxuICAgKiBFdmVyeSBwYXJzZXIgc2F2ZXMgaXRzIG93biBwcm9wZXJ0aWVzLFxuICAgKiBidXQgdGhlIGRlZmF1bHQgQ1NTIHBhcnNlciB1c2VzOlxuICAgKlxuICAgKiAqIGBiZWZvcmVgOiB0aGUgc3BhY2Ugc3ltYm9scyBiZWZvcmUgdGhlIG5vZGUuIEl0IGFsc28gc3RvcmVzIGAqYFxuICAgKiAgIGFuZCBgX2Agc3ltYm9scyBiZWZvcmUgdGhlIGRlY2xhcmF0aW9uIChJRSBoYWNrKS5cbiAgICogKiBgYmV0d2VlbmA6IHRoZSBzeW1ib2xzIGJldHdlZW4gdGhlIHByb3BlcnR5IGFuZCB2YWx1ZVxuICAgKiAgIGZvciBkZWNsYXJhdGlvbnMuXG4gICAqICogYGltcG9ydGFudGA6IHRoZSBjb250ZW50IG9mIHRoZSBpbXBvcnRhbnQgc3RhdGVtZW50LFxuICAgKiAgIGlmIGl0IGlzIG5vdCBqdXN0IGAhaW1wb3J0YW50YC5cbiAgICpcbiAgICogUG9zdENTUyBjbGVhbnMgZGVjbGFyYXRpb24gZnJvbSBjb21tZW50cyBhbmQgZXh0cmEgc3BhY2VzLFxuICAgKiBidXQgaXQgc3RvcmVzIG9yaWdpbiBjb250ZW50IGluIHJhd3MgcHJvcGVydGllcy5cbiAgICogQXMgc3VjaCwgaWYgeW91IGRvbuKAmXQgY2hhbmdlIGEgZGVjbGFyYXRpb27igJlzIHZhbHVlLFxuICAgKiBQb3N0Q1NTIHdpbGwgdXNlIHRoZSByYXcgdmFsdWUgd2l0aCBjb21tZW50cy5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogY29uc3Qgcm9vdCA9IHBvc3Rjc3MucGFyc2UoJ2Ege1xcbiAgY29sb3I6YmxhY2tcXG59JylcbiAgICogcm9vdC5maXJzdC5maXJzdC5yYXdzIC8vPT4geyBiZWZvcmU6ICdcXG4gICcsIGJldHdlZW46ICc6JyB9XG4gICAqL1xufVxuXG5leHBvcnQgZGVmYXVsdCBEZWNsYXJhdGlvblxuIl19\n","'use strict';\n\nexports.__esModule = true;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _cssSyntaxError = require('./css-syntax-error');\n\nvar _cssSyntaxError2 = _interopRequireDefault(_cssSyntaxError);\n\nvar _stringifier = require('./stringifier');\n\nvar _stringifier2 = _interopRequireDefault(_stringifier);\n\nvar _stringify = require('./stringify');\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction cloneNode(obj, parent) {\n var cloned = new obj.constructor();\n\n for (var i in obj) {\n if (!obj.hasOwnProperty(i)) continue;\n var value = obj[i];\n var type = typeof value === 'undefined' ? 'undefined' : _typeof(value);\n\n if (i === 'parent' && type === 'object') {\n if (parent) cloned[i] = parent;\n } else if (i === 'source') {\n cloned[i] = value;\n } else if (value instanceof Array) {\n cloned[i] = value.map(function (j) {\n return cloneNode(j, cloned);\n });\n } else {\n if (type === 'object' && value !== null) value = cloneNode(value);\n cloned[i] = value;\n }\n }\n\n return cloned;\n}\n\n/**\n * All node classes inherit the following common methods.\n *\n * @abstract\n */\n\nvar Node = function () {\n /**\n * @param {object} [defaults] Value for node properties.\n */\n function Node() {\n var defaults = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, Node);\n\n this.raws = {};\n if (process.env.NODE_ENV !== 'production') {\n if ((typeof defaults === 'undefined' ? 'undefined' : _typeof(defaults)) !== 'object' && typeof defaults !== 'undefined') {\n throw new Error('PostCSS nodes constructor accepts object, not ' + JSON.stringify(defaults));\n }\n }\n for (var name in defaults) {\n this[name] = defaults[name];\n }\n }\n\n /**\n * Returns a `CssSyntaxError` instance containing the original position\n * of the node in the source, showing line and column numbers and also\n * a small excerpt to facilitate debugging.\n *\n * If present, an input source map will be used to get the original position\n * of the source, even from a previous compilation step\n * (e.g., from Sass compilation).\n *\n * This method produces very useful error messages.\n *\n * @param {string} message Error description.\n * @param {object} [opts] Options.\n * @param {string} opts.plugin Plugin name that created this error.\n * PostCSS will set it automatically.\n * @param {string} opts.word A word inside a node’s string that should\n * be highlighted as the source of the error.\n * @param {number} opts.index An index inside a node’s string that should\n * be highlighted as the source of the error.\n *\n * @return {CssSyntaxError} Error object to throw it.\n *\n * @example\n * if (!variables[name]) {\n * throw decl.error('Unknown variable ' + name, { word: name })\n * // CssSyntaxError: postcss-vars:a.sass:4:3: Unknown variable $black\n * // color: $black\n * // a\n * // ^\n * // background: white\n * }\n */\n\n\n Node.prototype.error = function error(message) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (this.source) {\n var pos = this.positionBy(opts);\n return this.source.input.error(message, pos.line, pos.column, opts);\n } else {\n return new _cssSyntaxError2.default(message);\n }\n };\n\n /**\n * This method is provided as a convenience wrapper for {@link Result#warn}.\n *\n * @param {Result} result The {@link Result} instance\n * that will receive the warning.\n * @param {string} text Warning message.\n * @param {object} [opts] Options\n * @param {string} opts.plugin Plugin name that created this warning.\n * PostCSS will set it automatically.\n * @param {string} opts.word A word inside a node’s string that should\n * be highlighted as the source of the warning.\n * @param {number} opts.index An index inside a node’s string that should\n * be highlighted as the source of the warning.\n *\n * @return {Warning} Created warning object.\n *\n * @example\n * const plugin = postcss.plugin('postcss-deprecated', () => {\n * return (root, result) => {\n * root.walkDecls('bad', decl => {\n * decl.warn(result, 'Deprecated property bad')\n * })\n * }\n * })\n */\n\n\n Node.prototype.warn = function warn(result, text, opts) {\n var data = { node: this };\n for (var i in opts) {\n data[i] = opts[i];\n }return result.warn(text, data);\n };\n\n /**\n * Removes the node from its parent and cleans the parent properties\n * from the node and its children.\n *\n * @example\n * if (decl.prop.match(/^-webkit-/)) {\n * decl.remove()\n * }\n *\n * @return {Node} Node to make calls chain.\n */\n\n\n Node.prototype.remove = function remove() {\n if (this.parent) {\n this.parent.removeChild(this);\n }\n this.parent = undefined;\n return this;\n };\n\n /**\n * Returns a CSS string representing the node.\n *\n * @param {stringifier|syntax} [stringifier] A syntax to use\n * in string generation.\n *\n * @return {string} CSS string of this node.\n *\n * @example\n * postcss.rule({ selector: 'a' }).toString() //=> \"a {}\"\n */\n\n\n Node.prototype.toString = function toString() {\n var stringifier = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _stringify2.default;\n\n if (stringifier.stringify) stringifier = stringifier.stringify;\n var result = '';\n stringifier(this, function (i) {\n result += i;\n });\n return result;\n };\n\n /**\n * Returns an exact clone of the node.\n *\n * The resulting cloned node and its (cloned) children will retain\n * code style properties.\n *\n * @param {object} [overrides] New properties to override in the clone.\n *\n * @example\n * decl.raws.before //=> \"\\n \"\n * const cloned = decl.clone({ prop: '-moz-' + decl.prop })\n * cloned.raws.before //=> \"\\n \"\n * cloned.toString() //=> -moz-transform: scale(0)\n *\n * @return {Node} Clone of the node.\n */\n\n\n Node.prototype.clone = function clone() {\n var overrides = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var cloned = cloneNode(this);\n for (var name in overrides) {\n cloned[name] = overrides[name];\n }\n return cloned;\n };\n\n /**\n * Shortcut to clone the node and insert the resulting cloned node\n * before the current node.\n *\n * @param {object} [overrides] Mew properties to override in the clone.\n *\n * @example\n * decl.cloneBefore({ prop: '-moz-' + decl.prop })\n *\n * @return {Node} New node\n */\n\n\n Node.prototype.cloneBefore = function cloneBefore() {\n var overrides = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var cloned = this.clone(overrides);\n this.parent.insertBefore(this, cloned);\n return cloned;\n };\n\n /**\n * Shortcut to clone the node and insert the resulting cloned node\n * after the current node.\n *\n * @param {object} [overrides] New properties to override in the clone.\n *\n * @return {Node} New node.\n */\n\n\n Node.prototype.cloneAfter = function cloneAfter() {\n var overrides = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var cloned = this.clone(overrides);\n this.parent.insertAfter(this, cloned);\n return cloned;\n };\n\n /**\n * Inserts node(s) before the current node and removes the current node.\n *\n * @param {...Node} nodes Mode(s) to replace current one.\n *\n * @example\n * if (atrule.name === 'mixin') {\n * atrule.replaceWith(mixinRules[atrule.params])\n * }\n *\n * @return {Node} Current node to methods chain.\n */\n\n\n Node.prototype.replaceWith = function replaceWith() {\n if (this.parent) {\n for (var _len = arguments.length, nodes = Array(_len), _key = 0; _key < _len; _key++) {\n nodes[_key] = arguments[_key];\n }\n\n for (var _iterator = nodes, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var node = _ref;\n\n this.parent.insertBefore(this, node);\n }\n\n this.remove();\n }\n\n return this;\n };\n\n /**\n * Returns the next child of the node’s parent.\n * Returns `undefined` if the current node is the last child.\n *\n * @return {Node|undefined} Next node.\n *\n * @example\n * if (comment.text === 'delete next') {\n * const next = comment.next()\n * if (next) {\n * next.remove()\n * }\n * }\n */\n\n\n Node.prototype.next = function next() {\n if (!this.parent) return undefined;\n var index = this.parent.index(this);\n return this.parent.nodes[index + 1];\n };\n\n /**\n * Returns the previous child of the node’s parent.\n * Returns `undefined` if the current node is the first child.\n *\n * @return {Node|undefined} Previous node.\n *\n * @example\n * const annotation = decl.prev()\n * if (annotation.type === 'comment') {\n * readAnnotation(annotation.text)\n * }\n */\n\n\n Node.prototype.prev = function prev() {\n if (!this.parent) return undefined;\n var index = this.parent.index(this);\n return this.parent.nodes[index - 1];\n };\n\n /**\n * Insert new node before current node to current node’s parent.\n *\n * Just alias for `node.parent.insertBefore(node, add)`.\n *\n * @param {Node|object|string|Node[]} add New node.\n *\n * @return {Node} This node for methods chain.\n *\n * @example\n * decl.before('content: \"\"')\n */\n\n\n Node.prototype.before = function before(add) {\n this.parent.insertBefore(this, add);\n return this;\n };\n\n /**\n * Insert new node after current node to current node’s parent.\n *\n * Just alias for `node.parent.insertAfter(node, add)`.\n *\n * @param {Node|object|string|Node[]} add New node.\n *\n * @return {Node} This node for methods chain.\n *\n * @example\n * decl.after('color: black')\n */\n\n\n Node.prototype.after = function after(add) {\n this.parent.insertAfter(this, add);\n return this;\n };\n\n Node.prototype.toJSON = function toJSON() {\n var fixed = {};\n\n for (var name in this) {\n if (!this.hasOwnProperty(name)) continue;\n if (name === 'parent') continue;\n var value = this[name];\n\n if (value instanceof Array) {\n fixed[name] = value.map(function (i) {\n if ((typeof i === 'undefined' ? 'undefined' : _typeof(i)) === 'object' && i.toJSON) {\n return i.toJSON();\n } else {\n return i;\n }\n });\n } else if ((typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value.toJSON) {\n fixed[name] = value.toJSON();\n } else {\n fixed[name] = value;\n }\n }\n\n return fixed;\n };\n\n /**\n * Returns a {@link Node#raws} value. If the node is missing\n * the code style property (because the node was manually built or cloned),\n * PostCSS will try to autodetect the code style property by looking\n * at other nodes in the tree.\n *\n * @param {string} prop Name of code style property.\n * @param {string} [defaultType] Name of default value, it can be missed\n * if the value is the same as prop.\n *\n * @example\n * const root = postcss.parse('a { background: white }')\n * root.nodes[0].append({ prop: 'color', value: 'black' })\n * root.nodes[0].nodes[1].raws.before //=> undefined\n * root.nodes[0].nodes[1].raw('before') //=> ' '\n *\n * @return {string} Code style value.\n */\n\n\n Node.prototype.raw = function raw(prop, defaultType) {\n var str = new _stringifier2.default();\n return str.raw(this, prop, defaultType);\n };\n\n /**\n * Finds the Root instance of the node’s tree.\n *\n * @example\n * root.nodes[0].nodes[0].root() === root\n *\n * @return {Root} Root parent.\n */\n\n\n Node.prototype.root = function root() {\n var result = this;\n while (result.parent) {\n result = result.parent;\n }return result;\n };\n\n /**\n * Clear the code style properties for the node and its children.\n *\n * @param {boolean} [keepBetween] Keep the raws.between symbols.\n *\n * @return {undefined}\n *\n * @example\n * node.raws.before //=> ' '\n * node.cleanRaws()\n * node.raws.before //=> undefined\n */\n\n\n Node.prototype.cleanRaws = function cleanRaws(keepBetween) {\n delete this.raws.before;\n delete this.raws.after;\n if (!keepBetween) delete this.raws.between;\n };\n\n Node.prototype.positionInside = function positionInside(index) {\n var string = this.toString();\n var column = this.source.start.column;\n var line = this.source.start.line;\n\n for (var i = 0; i < index; i++) {\n if (string[i] === '\\n') {\n column = 1;\n line += 1;\n } else {\n column += 1;\n }\n }\n\n return { line: line, column: column };\n };\n\n Node.prototype.positionBy = function positionBy(opts) {\n var pos = this.source.start;\n if (opts.index) {\n pos = this.positionInside(opts.index);\n } else if (opts.word) {\n var index = this.toString().indexOf(opts.word);\n if (index !== -1) pos = this.positionInside(index);\n }\n return pos;\n };\n\n /**\n * @memberof Node#\n * @member {string} type String representing the node’s type.\n * Possible values are `root`, `atrule`, `rule`,\n * `decl`, or `comment`.\n *\n * @example\n * postcss.decl({ prop: 'color', value: 'black' }).type //=> 'decl'\n */\n\n /**\n * @memberof Node#\n * @member {Container} parent The node’s parent node.\n *\n * @example\n * root.nodes[0].parent === root\n */\n\n /**\n * @memberof Node#\n * @member {source} source The input source of the node.\n *\n * The property is used in source map generation.\n *\n * If you create a node manually (e.g., with `postcss.decl()`),\n * that node will not have a `source` property and will be absent\n * from the source map. For this reason, the plugin developer should\n * consider cloning nodes to create new ones (in which case the new node’s\n * source will reference the original, cloned node) or setting\n * the `source` property manually.\n *\n * ```js\n * // Bad\n * const prefixed = postcss.decl({\n * prop: '-moz-' + decl.prop,\n * value: decl.value\n * })\n *\n * // Good\n * const prefixed = decl.clone({ prop: '-moz-' + decl.prop })\n * ```\n *\n * ```js\n * if (atrule.name === 'add-link') {\n * const rule = postcss.rule({ selector: 'a', source: atrule.source })\n * atrule.parent.insertBefore(atrule, rule)\n * }\n * ```\n *\n * @example\n * decl.source.input.from //=> '/home/ai/a.sass'\n * decl.source.start //=> { line: 10, column: 2 }\n * decl.source.end //=> { line: 10, column: 12 }\n */\n\n /**\n * @memberof Node#\n * @member {object} raws Information to generate byte-to-byte equal\n * node string as it was in the origin input.\n *\n * Every parser saves its own properties,\n * but the default CSS parser uses:\n *\n * * `before`: the space symbols before the node. It also stores `*`\n * and `_` symbols before the declaration (IE hack).\n * * `after`: the space symbols after the last child of the node\n * to the end of the node.\n * * `between`: the symbols between the property and value\n * for declarations, selector and `{` for rules, or last parameter\n * and `{` for at-rules.\n * * `semicolon`: contains true if the last child has\n * an (optional) semicolon.\n * * `afterName`: the space between the at-rule name and its parameters.\n * * `left`: the space symbols between `/*` and the comment’s text.\n * * `right`: the space symbols between the comment’s text\n * and */.\n * * `important`: the content of the important statement,\n * if it is not just `!important`.\n *\n * PostCSS cleans selectors, declaration values and at-rule parameters\n * from comments and extra spaces, but it stores origin content in raws\n * properties. As such, if you don’t change a declaration’s value,\n * PostCSS will use the raw value with comments.\n *\n * @example\n * const root = postcss.parse('a {\\n color:black\\n}')\n * root.first.first.raws //=> { before: '\\n ', between: ':' }\n */\n\n\n return Node;\n}();\n\nexports.default = Node;\n\n/**\n * @typedef {object} position\n * @property {number} line Source line in file.\n * @property {number} column Source column in file.\n */\n\n/**\n * @typedef {object} source\n * @property {Input} input {@link Input} with input file\n * @property {position} start The starting position of the node’s source.\n * @property {position} end The ending position of the node’s source.\n */\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGUuZXM2Il0sIm5hbWVzIjpbImNsb25lTm9kZSIsIm9iaiIsInBhcmVudCIsImNsb25lZCIsImNvbnN0cnVjdG9yIiwiaSIsImhhc093blByb3BlcnR5IiwidmFsdWUiLCJ0eXBlIiwiQXJyYXkiLCJtYXAiLCJqIiwiTm9kZSIsImRlZmF1bHRzIiwicmF3cyIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsIkVycm9yIiwiSlNPTiIsInN0cmluZ2lmeSIsIm5hbWUiLCJlcnJvciIsIm1lc3NhZ2UiLCJvcHRzIiwic291cmNlIiwicG9zIiwicG9zaXRpb25CeSIsImlucHV0IiwibGluZSIsImNvbHVtbiIsIkNzc1N5bnRheEVycm9yIiwid2FybiIsInJlc3VsdCIsInRleHQiLCJkYXRhIiwibm9kZSIsInJlbW92ZSIsInJlbW92ZUNoaWxkIiwidW5kZWZpbmVkIiwidG9TdHJpbmciLCJzdHJpbmdpZmllciIsImNsb25lIiwib3ZlcnJpZGVzIiwiY2xvbmVCZWZvcmUiLCJpbnNlcnRCZWZvcmUiLCJjbG9uZUFmdGVyIiwiaW5zZXJ0QWZ0ZXIiLCJyZXBsYWNlV2l0aCIsIm5vZGVzIiwibmV4dCIsImluZGV4IiwicHJldiIsImJlZm9yZSIsImFkZCIsImFmdGVyIiwidG9KU09OIiwiZml4ZWQiLCJyYXciLCJwcm9wIiwiZGVmYXVsdFR5cGUiLCJzdHIiLCJTdHJpbmdpZmllciIsInJvb3QiLCJjbGVhblJhd3MiLCJrZWVwQmV0d2VlbiIsImJldHdlZW4iLCJwb3NpdGlvbkluc2lkZSIsInN0cmluZyIsInN0YXJ0Iiwid29yZCIsImluZGV4T2YiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBOzs7O0FBQ0E7Ozs7QUFDQTs7Ozs7Ozs7QUFFQSxTQUFTQSxTQUFULENBQW9CQyxHQUFwQixFQUF5QkMsTUFBekIsRUFBaUM7QUFDL0IsTUFBSUMsU0FBUyxJQUFJRixJQUFJRyxXQUFSLEVBQWI7O0FBRUEsT0FBSyxJQUFJQyxDQUFULElBQWNKLEdBQWQsRUFBbUI7QUFDakIsUUFBSSxDQUFDQSxJQUFJSyxjQUFKLENBQW1CRCxDQUFuQixDQUFMLEVBQTRCO0FBQzVCLFFBQUlFLFFBQVFOLElBQUlJLENBQUosQ0FBWjtBQUNBLFFBQUlHLGNBQWNELEtBQWQseUNBQWNBLEtBQWQsQ0FBSjs7QUFFQSxRQUFJRixNQUFNLFFBQU4sSUFBa0JHLFNBQVMsUUFBL0IsRUFBeUM7QUFDdkMsVUFBSU4sTUFBSixFQUFZQyxPQUFPRSxDQUFQLElBQVlILE1BQVo7QUFDYixLQUZELE1BRU8sSUFBSUcsTUFBTSxRQUFWLEVBQW9CO0FBQ3pCRixhQUFPRSxDQUFQLElBQVlFLEtBQVo7QUFDRCxLQUZNLE1BRUEsSUFBSUEsaUJBQWlCRSxLQUFyQixFQUE0QjtBQUNqQ04sYUFBT0UsQ0FBUCxJQUFZRSxNQUFNRyxHQUFOLENBQVU7QUFBQSxlQUFLVixVQUFVVyxDQUFWLEVBQWFSLE1BQWIsQ0FBTDtBQUFBLE9BQVYsQ0FBWjtBQUNELEtBRk0sTUFFQTtBQUNMLFVBQUlLLFNBQVMsUUFBVCxJQUFxQkQsVUFBVSxJQUFuQyxFQUF5Q0EsUUFBUVAsVUFBVU8sS0FBVixDQUFSO0FBQ3pDSixhQUFPRSxDQUFQLElBQVlFLEtBQVo7QUFDRDtBQUNGOztBQUVELFNBQU9KLE1BQVA7QUFDRDs7QUFFRDs7Ozs7O0lBS01TLEk7QUFDSjs7O0FBR0Esa0JBQTZCO0FBQUEsUUFBaEJDLFFBQWdCLHVFQUFMLEVBQUs7O0FBQUE7O0FBQzNCLFNBQUtDLElBQUwsR0FBWSxFQUFaO0FBQ0EsUUFBSUMsUUFBUUMsR0FBUixDQUFZQyxRQUFaLEtBQXlCLFlBQTdCLEVBQTJDO0FBQ3pDLFVBQUksUUFBT0osUUFBUCx5Q0FBT0EsUUFBUCxPQUFvQixRQUFwQixJQUFnQyxPQUFPQSxRQUFQLEtBQW9CLFdBQXhELEVBQXFFO0FBQ25FLGNBQU0sSUFBSUssS0FBSixDQUNKLG1EQUNBQyxLQUFLQyxTQUFMLENBQWVQLFFBQWYsQ0FGSSxDQUFOO0FBSUQ7QUFDRjtBQUNELFNBQUssSUFBSVEsSUFBVCxJQUFpQlIsUUFBakIsRUFBMkI7QUFDekIsV0FBS1EsSUFBTCxJQUFhUixTQUFTUSxJQUFULENBQWI7QUFDRDtBQUNGOztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCQWdDQUMsSyxrQkFBT0MsTyxFQUFxQjtBQUFBLFFBQVpDLElBQVksdUVBQUwsRUFBSzs7QUFDMUIsUUFBSSxLQUFLQyxNQUFULEVBQWlCO0FBQ2YsVUFBSUMsTUFBTSxLQUFLQyxVQUFMLENBQWdCSCxJQUFoQixDQUFWO0FBQ0EsYUFBTyxLQUFLQyxNQUFMLENBQVlHLEtBQVosQ0FBa0JOLEtBQWxCLENBQXdCQyxPQUF4QixFQUFpQ0csSUFBSUcsSUFBckMsRUFBMkNILElBQUlJLE1BQS9DLEVBQXVETixJQUF2RCxDQUFQO0FBQ0QsS0FIRCxNQUdPO0FBQ0wsYUFBTyxJQUFJTyx3QkFBSixDQUFtQlIsT0FBbkIsQ0FBUDtBQUNEO0FBQ0YsRzs7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCQXlCQVMsSSxpQkFBTUMsTSxFQUFRQyxJLEVBQU1WLEksRUFBTTtBQUN4QixRQUFJVyxPQUFPLEVBQUVDLE1BQU0sSUFBUixFQUFYO0FBQ0EsU0FBSyxJQUFJL0IsQ0FBVCxJQUFjbUIsSUFBZDtBQUFvQlcsV0FBSzlCLENBQUwsSUFBVW1CLEtBQUtuQixDQUFMLENBQVY7QUFBcEIsS0FDQSxPQUFPNEIsT0FBT0QsSUFBUCxDQUFZRSxJQUFaLEVBQWtCQyxJQUFsQixDQUFQO0FBQ0QsRzs7QUFFRDs7Ozs7Ozs7Ozs7OztpQkFXQUUsTSxxQkFBVTtBQUNSLFFBQUksS0FBS25DLE1BQVQsRUFBaUI7QUFDZixXQUFLQSxNQUFMLENBQVlvQyxXQUFaLENBQXdCLElBQXhCO0FBQ0Q7QUFDRCxTQUFLcEMsTUFBTCxHQUFjcUMsU0FBZDtBQUNBLFdBQU8sSUFBUDtBQUNELEc7O0FBRUQ7Ozs7Ozs7Ozs7Ozs7aUJBV0FDLFEsdUJBQW1DO0FBQUEsUUFBekJDLFdBQXlCLHVFQUFYckIsbUJBQVc7O0FBQ2pDLFFBQUlxQixZQUFZckIsU0FBaEIsRUFBMkJxQixjQUFjQSxZQUFZckIsU0FBMUI7QUFDM0IsUUFBSWEsU0FBUyxFQUFiO0FBQ0FRLGdCQUFZLElBQVosRUFBa0IsYUFBSztBQUNyQlIsZ0JBQVU1QixDQUFWO0FBQ0QsS0FGRDtBQUdBLFdBQU80QixNQUFQO0FBQ0QsRzs7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCQWdCQVMsSyxvQkFBd0I7QUFBQSxRQUFqQkMsU0FBaUIsdUVBQUwsRUFBSzs7QUFDdEIsUUFBSXhDLFNBQVNILFVBQVUsSUFBVixDQUFiO0FBQ0EsU0FBSyxJQUFJcUIsSUFBVCxJQUFpQnNCLFNBQWpCLEVBQTRCO0FBQzFCeEMsYUFBT2tCLElBQVAsSUFBZXNCLFVBQVV0QixJQUFWLENBQWY7QUFDRDtBQUNELFdBQU9sQixNQUFQO0FBQ0QsRzs7QUFFRDs7Ozs7Ozs7Ozs7OztpQkFXQXlDLFcsMEJBQThCO0FBQUEsUUFBakJELFNBQWlCLHVFQUFMLEVBQUs7O0FBQzVCLFFBQUl4QyxTQUFTLEtBQUt1QyxLQUFMLENBQVdDLFNBQVgsQ0FBYjtBQUNBLFNBQUt6QyxNQUFMLENBQVkyQyxZQUFaLENBQXlCLElBQXpCLEVBQStCMUMsTUFBL0I7QUFDQSxXQUFPQSxNQUFQO0FBQ0QsRzs7QUFFRDs7Ozs7Ozs7OztpQkFRQTJDLFUseUJBQTZCO0FBQUEsUUFBakJILFNBQWlCLHVFQUFMLEVBQUs7O0FBQzNCLFFBQUl4QyxTQUFTLEtBQUt1QyxLQUFMLENBQVdDLFNBQVgsQ0FBYjtBQUNBLFNBQUt6QyxNQUFMLENBQVk2QyxXQUFaLENBQXdCLElBQXhCLEVBQThCNUMsTUFBOUI7QUFDQSxXQUFPQSxNQUFQO0FBQ0QsRzs7QUFFRDs7Ozs7Ozs7Ozs7Ozs7aUJBWUE2QyxXLDBCQUF1QjtBQUNyQixRQUFJLEtBQUs5QyxNQUFULEVBQWlCO0FBQUEsd0NBREgrQyxLQUNHO0FBREhBLGFBQ0c7QUFBQTs7QUFDZiwyQkFBaUJBLEtBQWpCLGtIQUF3QjtBQUFBOztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQUEsWUFBZmIsSUFBZTs7QUFDdEIsYUFBS2xDLE1BQUwsQ0FBWTJDLFlBQVosQ0FBeUIsSUFBekIsRUFBK0JULElBQS9CO0FBQ0Q7O0FBRUQsV0FBS0MsTUFBTDtBQUNEOztBQUVELFdBQU8sSUFBUDtBQUNELEc7O0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7aUJBY0FhLEksbUJBQVE7QUFDTixRQUFJLENBQUMsS0FBS2hELE1BQVYsRUFBa0IsT0FBT3FDLFNBQVA7QUFDbEIsUUFBSVksUUFBUSxLQUFLakQsTUFBTCxDQUFZaUQsS0FBWixDQUFrQixJQUFsQixDQUFaO0FBQ0EsV0FBTyxLQUFLakQsTUFBTCxDQUFZK0MsS0FBWixDQUFrQkUsUUFBUSxDQUExQixDQUFQO0FBQ0QsRzs7QUFFRDs7Ozs7Ozs7Ozs7Ozs7aUJBWUFDLEksbUJBQVE7QUFDTixRQUFJLENBQUMsS0FBS2xELE1BQVYsRUFBa0IsT0FBT3FDLFNBQVA7QUFDbEIsUUFBSVksUUFBUSxLQUFLakQsTUFBTCxDQUFZaUQsS0FBWixDQUFrQixJQUFsQixDQUFaO0FBQ0EsV0FBTyxLQUFLakQsTUFBTCxDQUFZK0MsS0FBWixDQUFrQkUsUUFBUSxDQUExQixDQUFQO0FBQ0QsRzs7QUFFRDs7Ozs7Ozs7Ozs7Ozs7aUJBWUFFLE0sbUJBQVFDLEcsRUFBSztBQUNYLFNBQUtwRCxNQUFMLENBQVkyQyxZQUFaLENBQXlCLElBQXpCLEVBQStCUyxHQUEvQjtBQUNBLFdBQU8sSUFBUDtBQUNELEc7O0FBRUQ7Ozs7Ozs7Ozs7Ozs7O2lCQVlBQyxLLGtCQUFPRCxHLEVBQUs7QUFDVixTQUFLcEQsTUFBTCxDQUFZNkMsV0FBWixDQUF3QixJQUF4QixFQUE4Qk8sR0FBOUI7QUFDQSxXQUFPLElBQVA7QUFDRCxHOztpQkFFREUsTSxxQkFBVTtBQUNSLFFBQUlDLFFBQVEsRUFBWjs7QUFFQSxTQUFLLElBQUlwQyxJQUFULElBQWlCLElBQWpCLEVBQXVCO0FBQ3JCLFVBQUksQ0FBQyxLQUFLZixjQUFMLENBQW9CZSxJQUFwQixDQUFMLEVBQWdDO0FBQ2hDLFVBQUlBLFNBQVMsUUFBYixFQUF1QjtBQUN2QixVQUFJZCxRQUFRLEtBQUtjLElBQUwsQ0FBWjs7QUFFQSxVQUFJZCxpQkFBaUJFLEtBQXJCLEVBQTRCO0FBQzFCZ0QsY0FBTXBDLElBQU4sSUFBY2QsTUFBTUcsR0FBTixDQUFVLGFBQUs7QUFDM0IsY0FBSSxRQUFPTCxDQUFQLHlDQUFPQSxDQUFQLE9BQWEsUUFBYixJQUF5QkEsRUFBRW1ELE1BQS9CLEVBQXVDO0FBQ3JDLG1CQUFPbkQsRUFBRW1ELE1BQUYsRUFBUDtBQUNELFdBRkQsTUFFTztBQUNMLG1CQUFPbkQsQ0FBUDtBQUNEO0FBQ0YsU0FOYSxDQUFkO0FBT0QsT0FSRCxNQVFPLElBQUksUUFBT0UsS0FBUCx5Q0FBT0EsS0FBUCxPQUFpQixRQUFqQixJQUE2QkEsTUFBTWlELE1BQXZDLEVBQStDO0FBQ3BEQyxjQUFNcEMsSUFBTixJQUFjZCxNQUFNaUQsTUFBTixFQUFkO0FBQ0QsT0FGTSxNQUVBO0FBQ0xDLGNBQU1wQyxJQUFOLElBQWNkLEtBQWQ7QUFDRDtBQUNGOztBQUVELFdBQU9rRCxLQUFQO0FBQ0QsRzs7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUJBa0JBQyxHLGdCQUFLQyxJLEVBQU1DLFcsRUFBYTtBQUN0QixRQUFJQyxNQUFNLElBQUlDLHFCQUFKLEVBQVY7QUFDQSxXQUFPRCxJQUFJSCxHQUFKLENBQVEsSUFBUixFQUFjQyxJQUFkLEVBQW9CQyxXQUFwQixDQUFQO0FBQ0QsRzs7QUFFRDs7Ozs7Ozs7OztpQkFRQUcsSSxtQkFBUTtBQUNOLFFBQUk5QixTQUFTLElBQWI7QUFDQSxXQUFPQSxPQUFPL0IsTUFBZDtBQUFzQitCLGVBQVNBLE9BQU8vQixNQUFoQjtBQUF0QixLQUNBLE9BQU8rQixNQUFQO0FBQ0QsRzs7QUFFRDs7Ozs7Ozs7Ozs7Ozs7aUJBWUErQixTLHNCQUFXQyxXLEVBQWE7QUFDdEIsV0FBTyxLQUFLbkQsSUFBTCxDQUFVdUMsTUFBakI7QUFDQSxXQUFPLEtBQUt2QyxJQUFMLENBQVV5QyxLQUFqQjtBQUNBLFFBQUksQ0FBQ1UsV0FBTCxFQUFrQixPQUFPLEtBQUtuRCxJQUFMLENBQVVvRCxPQUFqQjtBQUNuQixHOztpQkFFREMsYywyQkFBZ0JoQixLLEVBQU87QUFDckIsUUFBSWlCLFNBQVMsS0FBSzVCLFFBQUwsRUFBYjtBQUNBLFFBQUlWLFNBQVMsS0FBS0wsTUFBTCxDQUFZNEMsS0FBWixDQUFrQnZDLE1BQS9CO0FBQ0EsUUFBSUQsT0FBTyxLQUFLSixNQUFMLENBQVk0QyxLQUFaLENBQWtCeEMsSUFBN0I7O0FBRUEsU0FBSyxJQUFJeEIsSUFBSSxDQUFiLEVBQWdCQSxJQUFJOEMsS0FBcEIsRUFBMkI5QyxHQUEzQixFQUFnQztBQUM5QixVQUFJK0QsT0FBTy9ELENBQVAsTUFBYyxJQUFsQixFQUF3QjtBQUN0QnlCLGlCQUFTLENBQVQ7QUFDQUQsZ0JBQVEsQ0FBUjtBQUNELE9BSEQsTUFHTztBQUNMQyxrQkFBVSxDQUFWO0FBQ0Q7QUFDRjs7QUFFRCxXQUFPLEVBQUVELFVBQUYsRUFBUUMsY0FBUixFQUFQO0FBQ0QsRzs7aUJBRURILFUsdUJBQVlILEksRUFBTTtBQUNoQixRQUFJRSxNQUFNLEtBQUtELE1BQUwsQ0FBWTRDLEtBQXRCO0FBQ0EsUUFBSTdDLEtBQUsyQixLQUFULEVBQWdCO0FBQ2R6QixZQUFNLEtBQUt5QyxjQUFMLENBQW9CM0MsS0FBSzJCLEtBQXpCLENBQU47QUFDRCxLQUZELE1BRU8sSUFBSTNCLEtBQUs4QyxJQUFULEVBQWU7QUFDcEIsVUFBSW5CLFFBQVEsS0FBS1gsUUFBTCxHQUFnQitCLE9BQWhCLENBQXdCL0MsS0FBSzhDLElBQTdCLENBQVo7QUFDQSxVQUFJbkIsVUFBVSxDQUFDLENBQWYsRUFBa0J6QixNQUFNLEtBQUt5QyxjQUFMLENBQW9CaEIsS0FBcEIsQ0FBTjtBQUNuQjtBQUNELFdBQU96QixHQUFQO0FBQ0QsRzs7QUFFRDs7Ozs7Ozs7OztBQVVBOzs7Ozs7OztBQVFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBcUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztrQkFtQ2FkLEk7O0FBRWY7Ozs7OztBQU1BIiwiZmlsZSI6Im5vZGUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQ3NzU3ludGF4RXJyb3IgZnJvbSAnLi9jc3Mtc3ludGF4LWVycm9yJ1xuaW1wb3J0IFN0cmluZ2lmaWVyIGZyb20gJy4vc3RyaW5naWZpZXInXG5pbXBvcnQgc3RyaW5naWZ5IGZyb20gJy4vc3RyaW5naWZ5J1xuXG5mdW5jdGlvbiBjbG9uZU5vZGUgKG9iaiwgcGFyZW50KSB7XG4gIGxldCBjbG9uZWQgPSBuZXcgb2JqLmNvbnN0cnVjdG9yKClcblxuICBmb3IgKGxldCBpIGluIG9iaikge1xuICAgIGlmICghb2JqLmhhc093blByb3BlcnR5KGkpKSBjb250aW51ZVxuICAgIGxldCB2YWx1ZSA9IG9ialtpXVxuICAgIGxldCB0eXBlID0gdHlwZW9mIHZhbHVlXG5cbiAgICBpZiAoaSA9PT0gJ3BhcmVudCcgJiYgdHlwZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChwYXJlbnQpIGNsb25lZFtpXSA9IHBhcmVudFxuICAgIH0gZWxzZSBpZiAoaSA9PT0gJ3NvdXJjZScpIHtcbiAgICAgIGNsb25lZFtpXSA9IHZhbHVlXG4gICAgfSBlbHNlIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICBjbG9uZWRbaV0gPSB2YWx1ZS5tYXAoaiA9PiBjbG9uZU5vZGUoaiwgY2xvbmVkKSlcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHR5cGUgPT09ICdvYmplY3QnICYmIHZhbHVlICE9PSBudWxsKSB2YWx1ZSA9IGNsb25lTm9kZSh2YWx1ZSlcbiAgICAgIGNsb25lZFtpXSA9IHZhbHVlXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGNsb25lZFxufVxuXG4vKipcbiAqIEFsbCBub2RlIGNsYXNzZXMgaW5oZXJpdCB0aGUgZm9sbG93aW5nIGNvbW1vbiBtZXRob2RzLlxuICpcbiAqIEBhYnN0cmFjdFxuICovXG5jbGFzcyBOb2RlIHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBbZGVmYXVsdHNdIFZhbHVlIGZvciBub2RlIHByb3BlcnRpZXMuXG4gICAqL1xuICBjb25zdHJ1Y3RvciAoZGVmYXVsdHMgPSB7IH0pIHtcbiAgICB0aGlzLnJhd3MgPSB7IH1cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaWYgKHR5cGVvZiBkZWZhdWx0cyAhPT0gJ29iamVjdCcgJiYgdHlwZW9mIGRlZmF1bHRzICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgJ1Bvc3RDU1Mgbm9kZXMgY29uc3RydWN0b3IgYWNjZXB0cyBvYmplY3QsIG5vdCAnICtcbiAgICAgICAgICBKU09OLnN0cmluZ2lmeShkZWZhdWx0cylcbiAgICAgICAgKVxuICAgICAgfVxuICAgIH1cbiAgICBmb3IgKGxldCBuYW1lIGluIGRlZmF1bHRzKSB7XG4gICAgICB0aGlzW25hbWVdID0gZGVmYXVsdHNbbmFtZV1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIGBDc3NTeW50YXhFcnJvcmAgaW5zdGFuY2UgY29udGFpbmluZyB0aGUgb3JpZ2luYWwgcG9zaXRpb25cbiAgICogb2YgdGhlIG5vZGUgaW4gdGhlIHNvdXJjZSwgc2hvd2luZyBsaW5lIGFuZCBjb2x1bW4gbnVtYmVycyBhbmQgYWxzb1xuICAgKiBhIHNtYWxsIGV4Y2VycHQgdG8gZmFjaWxpdGF0ZSBkZWJ1Z2dpbmcuXG4gICAqXG4gICAqIElmIHByZXNlbnQsIGFuIGlucHV0IHNvdXJjZSBtYXAgd2lsbCBiZSB1c2VkIHRvIGdldCB0aGUgb3JpZ2luYWwgcG9zaXRpb25cbiAgICogb2YgdGhlIHNvdXJjZSwgZXZlbiBmcm9tIGEgcHJldmlvdXMgY29tcGlsYXRpb24gc3RlcFxuICAgKiAoZS5nLiwgZnJvbSBTYXNzIGNvbXBpbGF0aW9uKS5cbiAgICpcbiAgICogVGhpcyBtZXRob2QgcHJvZHVjZXMgdmVyeSB1c2VmdWwgZXJyb3IgbWVzc2FnZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlICAgICBFcnJvciBkZXNjcmlwdGlvbi5cbiAgICogQHBhcmFtIHtvYmplY3R9IFtvcHRzXSAgICAgIE9wdGlvbnMuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLnBsdWdpbiBQbHVnaW4gbmFtZSB0aGF0IGNyZWF0ZWQgdGhpcyBlcnJvci5cbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvc3RDU1Mgd2lsbCBzZXQgaXQgYXV0b21hdGljYWxseS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMud29yZCAgIEEgd29yZCBpbnNpZGUgYSBub2Rl4oCZcyBzdHJpbmcgdGhhdCBzaG91bGRcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlIGhpZ2hsaWdodGVkIGFzIHRoZSBzb3VyY2Ugb2YgdGhlIGVycm9yLlxuICAgKiBAcGFyYW0ge251bWJlcn0gb3B0cy5pbmRleCAgQW4gaW5kZXggaW5zaWRlIGEgbm9kZeKAmXMgc3RyaW5nIHRoYXQgc2hvdWxkXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZSBoaWdobGlnaHRlZCBhcyB0aGUgc291cmNlIG9mIHRoZSBlcnJvci5cbiAgICpcbiAgICogQHJldHVybiB7Q3NzU3ludGF4RXJyb3J9IEVycm9yIG9iamVjdCB0byB0aHJvdyBpdC5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogaWYgKCF2YXJpYWJsZXNbbmFtZV0pIHtcbiAgICogICB0aHJvdyBkZWNsLmVycm9yKCdVbmtub3duIHZhcmlhYmxlICcgKyBuYW1lLCB7IHdvcmQ6IG5hbWUgfSlcbiAgICogICAvLyBDc3NTeW50YXhFcnJvcjogcG9zdGNzcy12YXJzOmEuc2Fzczo0OjM6IFVua25vd24gdmFyaWFibGUgJGJsYWNrXG4gICAqICAgLy8gICBjb2xvcjogJGJsYWNrXG4gICAqICAgLy8gYVxuICAgKiAgIC8vICAgICAgICAgIF5cbiAgICogICAvLyAgIGJhY2tncm91bmQ6IHdoaXRlXG4gICAqIH1cbiAgICovXG4gIGVycm9yIChtZXNzYWdlLCBvcHRzID0geyB9KSB7XG4gICAgaWYgKHRoaXMuc291cmNlKSB7XG4gICAgICBsZXQgcG9zID0gdGhpcy5wb3NpdGlvbkJ5KG9wdHMpXG4gICAgICByZXR1cm4gdGhpcy5zb3VyY2UuaW5wdXQuZXJyb3IobWVzc2FnZSwgcG9zLmxpbmUsIHBvcy5jb2x1bW4sIG9wdHMpXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBuZXcgQ3NzU3ludGF4RXJyb3IobWVzc2FnZSlcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBtZXRob2QgaXMgcHJvdmlkZWQgYXMgYSBjb252ZW5pZW5jZSB3cmFwcGVyIGZvciB7QGxpbmsgUmVzdWx0I3dhcm59LlxuICAgKlxuICAgKiBAcGFyYW0ge1Jlc3VsdH0gcmVzdWx0ICAgICAgVGhlIHtAbGluayBSZXN1bHR9IGluc3RhbmNlXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IHdpbGwgcmVjZWl2ZSB0aGUgd2FybmluZy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgICAgICAgIFdhcm5pbmcgbWVzc2FnZS5cbiAgICogQHBhcmFtIHtvYmplY3R9IFtvcHRzXSAgICAgIE9wdGlvbnNcbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMucGx1Z2luIFBsdWdpbiBuYW1lIHRoYXQgY3JlYXRlZCB0aGlzIHdhcm5pbmcuXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQb3N0Q1NTIHdpbGwgc2V0IGl0IGF1dG9tYXRpY2FsbHkuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLndvcmQgICBBIHdvcmQgaW5zaWRlIGEgbm9kZeKAmXMgc3RyaW5nIHRoYXQgc2hvdWxkXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZSBoaWdobGlnaHRlZCBhcyB0aGUgc291cmNlIG9mIHRoZSB3YXJuaW5nLlxuICAgKiBAcGFyYW0ge251bWJlcn0gb3B0cy5pbmRleCAgQW4gaW5kZXggaW5zaWRlIGEgbm9kZeKAmXMgc3RyaW5nIHRoYXQgc2hvdWxkXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZSBoaWdobGlnaHRlZCBhcyB0aGUgc291cmNlIG9mIHRoZSB3YXJuaW5nLlxuICAgKlxuICAgKiBAcmV0dXJuIHtXYXJuaW5nfSBDcmVhdGVkIHdhcm5pbmcgb2JqZWN0LlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBjb25zdCBwbHVnaW4gPSBwb3N0Y3NzLnBsdWdpbigncG9zdGNzcy1kZXByZWNhdGVkJywgKCkgPT4ge1xuICAgKiAgIHJldHVybiAocm9vdCwgcmVzdWx0KSA9PiB7XG4gICAqICAgICByb290LndhbGtEZWNscygnYmFkJywgZGVjbCA9PiB7XG4gICAqICAgICAgIGRlY2wud2FybihyZXN1bHQsICdEZXByZWNhdGVkIHByb3BlcnR5IGJhZCcpXG4gICAqICAgICB9KVxuICAgKiAgIH1cbiAgICogfSlcbiAgICovXG4gIHdhcm4gKHJlc3VsdCwgdGV4dCwgb3B0cykge1xuICAgIGxldCBkYXRhID0geyBub2RlOiB0aGlzIH1cbiAgICBmb3IgKGxldCBpIGluIG9wdHMpIGRhdGFbaV0gPSBvcHRzW2ldXG4gICAgcmV0dXJuIHJlc3VsdC53YXJuKHRleHQsIGRhdGEpXG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyB0aGUgbm9kZSBmcm9tIGl0cyBwYXJlbnQgYW5kIGNsZWFucyB0aGUgcGFyZW50IHByb3BlcnRpZXNcbiAgICogZnJvbSB0aGUgbm9kZSBhbmQgaXRzIGNoaWxkcmVuLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBpZiAoZGVjbC5wcm9wLm1hdGNoKC9eLXdlYmtpdC0vKSkge1xuICAgKiAgIGRlY2wucmVtb3ZlKClcbiAgICogfVxuICAgKlxuICAgKiBAcmV0dXJuIHtOb2RlfSBOb2RlIHRvIG1ha2UgY2FsbHMgY2hhaW4uXG4gICAqL1xuICByZW1vdmUgKCkge1xuICAgIGlmICh0aGlzLnBhcmVudCkge1xuICAgICAgdGhpcy5wYXJlbnQucmVtb3ZlQ2hpbGQodGhpcylcbiAgICB9XG4gICAgdGhpcy5wYXJlbnQgPSB1bmRlZmluZWRcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBDU1Mgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgbm9kZS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmdpZmllcnxzeW50YXh9IFtzdHJpbmdpZmllcl0gQSBzeW50YXggdG8gdXNlXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIHN0cmluZyBnZW5lcmF0aW9uLlxuICAgKlxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IENTUyBzdHJpbmcgb2YgdGhpcyBub2RlLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBwb3N0Y3NzLnJ1bGUoeyBzZWxlY3RvcjogJ2EnIH0pLnRvU3RyaW5nKCkgLy89PiBcImEge31cIlxuICAgKi9cbiAgdG9TdHJpbmcgKHN0cmluZ2lmaWVyID0gc3RyaW5naWZ5KSB7XG4gICAgaWYgKHN0cmluZ2lmaWVyLnN0cmluZ2lmeSkgc3RyaW5naWZpZXIgPSBzdHJpbmdpZmllci5zdHJpbmdpZnlcbiAgICBsZXQgcmVzdWx0ID0gJydcbiAgICBzdHJpbmdpZmllcih0aGlzLCBpID0+IHtcbiAgICAgIHJlc3VsdCArPSBpXG4gICAgfSlcbiAgICByZXR1cm4gcmVzdWx0XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBleGFjdCBjbG9uZSBvZiB0aGUgbm9kZS5cbiAgICpcbiAgICogVGhlIHJlc3VsdGluZyBjbG9uZWQgbm9kZSBhbmQgaXRzIChjbG9uZWQpIGNoaWxkcmVuIHdpbGwgcmV0YWluXG4gICAqIGNvZGUgc3R5bGUgcHJvcGVydGllcy5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IFtvdmVycmlkZXNdIE5ldyBwcm9wZXJ0aWVzIHRvIG92ZXJyaWRlIGluIHRoZSBjbG9uZS5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogZGVjbC5yYXdzLmJlZm9yZSAgICAvLz0+IFwiXFxuICBcIlxuICAgKiBjb25zdCBjbG9uZWQgPSBkZWNsLmNsb25lKHsgcHJvcDogJy1tb3otJyArIGRlY2wucHJvcCB9KVxuICAgKiBjbG9uZWQucmF3cy5iZWZvcmUgIC8vPT4gXCJcXG4gIFwiXG4gICAqIGNsb25lZC50b1N0cmluZygpICAgLy89PiAtbW96LXRyYW5zZm9ybTogc2NhbGUoMClcbiAgICpcbiAgICogQHJldHVybiB7Tm9kZX0gQ2xvbmUgb2YgdGhlIG5vZGUuXG4gICAqL1xuICBjbG9uZSAob3ZlcnJpZGVzID0geyB9KSB7XG4gICAgbGV0IGNsb25lZCA9IGNsb25lTm9kZSh0aGlzKVxuICAgIGZvciAobGV0IG5hbWUgaW4gb3ZlcnJpZGVzKSB7XG4gICAgICBjbG9uZWRbbmFtZV0gPSBvdmVycmlkZXNbbmFtZV1cbiAgICB9XG4gICAgcmV0dXJuIGNsb25lZFxuICB9XG5cbiAgLyoqXG4gICAqIFNob3J0Y3V0IHRvIGNsb25lIHRoZSBub2RlIGFuZCBpbnNlcnQgdGhlIHJlc3VsdGluZyBjbG9uZWQgbm9kZVxuICAgKiBiZWZvcmUgdGhlIGN1cnJlbnQgbm9kZS5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IFtvdmVycmlkZXNdIE1ldyBwcm9wZXJ0aWVzIHRvIG92ZXJyaWRlIGluIHRoZSBjbG9uZS5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogZGVjbC5jbG9uZUJlZm9yZSh7IHByb3A6ICctbW96LScgKyBkZWNsLnByb3AgfSlcbiAgICpcbiAgICogQHJldHVybiB7Tm9kZX0gTmV3IG5vZGVcbiAgICovXG4gIGNsb25lQmVmb3JlIChvdmVycmlkZXMgPSB7IH0pIHtcbiAgICBsZXQgY2xvbmVkID0gdGhpcy5jbG9uZShvdmVycmlkZXMpXG4gICAgdGhpcy5wYXJlbnQuaW5zZXJ0QmVmb3JlKHRoaXMsIGNsb25lZClcbiAgICByZXR1cm4gY2xvbmVkXG4gIH1cblxuICAvKipcbiAgICogU2hvcnRjdXQgdG8gY2xvbmUgdGhlIG5vZGUgYW5kIGluc2VydCB0aGUgcmVzdWx0aW5nIGNsb25lZCBub2RlXG4gICAqIGFmdGVyIHRoZSBjdXJyZW50IG5vZGUuXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBbb3ZlcnJpZGVzXSBOZXcgcHJvcGVydGllcyB0byBvdmVycmlkZSBpbiB0aGUgY2xvbmUuXG4gICAqXG4gICAqIEByZXR1cm4ge05vZGV9IE5ldyBub2RlLlxuICAgKi9cbiAgY2xvbmVBZnRlciAob3ZlcnJpZGVzID0geyB9KSB7XG4gICAgbGV0IGNsb25lZCA9IHRoaXMuY2xvbmUob3ZlcnJpZGVzKVxuICAgIHRoaXMucGFyZW50Lmluc2VydEFmdGVyKHRoaXMsIGNsb25lZClcbiAgICByZXR1cm4gY2xvbmVkXG4gIH1cblxuICAvKipcbiAgICogSW5zZXJ0cyBub2RlKHMpIGJlZm9yZSB0aGUgY3VycmVudCBub2RlIGFuZCByZW1vdmVzIHRoZSBjdXJyZW50IG5vZGUuXG4gICAqXG4gICAqIEBwYXJhbSB7Li4uTm9kZX0gbm9kZXMgTW9kZShzKSB0byByZXBsYWNlIGN1cnJlbnQgb25lLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBpZiAoYXRydWxlLm5hbWUgPT09ICdtaXhpbicpIHtcbiAgICogICBhdHJ1bGUucmVwbGFjZVdpdGgobWl4aW5SdWxlc1thdHJ1bGUucGFyYW1zXSlcbiAgICogfVxuICAgKlxuICAgKiBAcmV0dXJuIHtOb2RlfSBDdXJyZW50IG5vZGUgdG8gbWV0aG9kcyBjaGFpbi5cbiAgICovXG4gIHJlcGxhY2VXaXRoICguLi5ub2Rlcykge1xuICAgIGlmICh0aGlzLnBhcmVudCkge1xuICAgICAgZm9yIChsZXQgbm9kZSBvZiBub2Rlcykge1xuICAgICAgICB0aGlzLnBhcmVudC5pbnNlcnRCZWZvcmUodGhpcywgbm9kZSlcbiAgICAgIH1cblxuICAgICAgdGhpcy5yZW1vdmUoKVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgbmV4dCBjaGlsZCBvZiB0aGUgbm9kZeKAmXMgcGFyZW50LlxuICAgKiBSZXR1cm5zIGB1bmRlZmluZWRgIGlmIHRoZSBjdXJyZW50IG5vZGUgaXMgdGhlIGxhc3QgY2hpbGQuXG4gICAqXG4gICAqIEByZXR1cm4ge05vZGV8dW5kZWZpbmVkfSBOZXh0IG5vZGUuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGlmIChjb21tZW50LnRleHQgPT09ICdkZWxldGUgbmV4dCcpIHtcbiAgICogICBjb25zdCBuZXh0ID0gY29tbWVudC5uZXh0KClcbiAgICogICBpZiAobmV4dCkge1xuICAgKiAgICAgbmV4dC5yZW1vdmUoKVxuICAgKiAgIH1cbiAgICogfVxuICAgKi9cbiAgbmV4dCAoKSB7XG4gICAgaWYgKCF0aGlzLnBhcmVudCkgcmV0dXJuIHVuZGVmaW5lZFxuICAgIGxldCBpbmRleCA9IHRoaXMucGFyZW50LmluZGV4KHRoaXMpXG4gICAgcmV0dXJuIHRoaXMucGFyZW50Lm5vZGVzW2luZGV4ICsgMV1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBwcmV2aW91cyBjaGlsZCBvZiB0aGUgbm9kZeKAmXMgcGFyZW50LlxuICAgKiBSZXR1cm5zIGB1bmRlZmluZWRgIGlmIHRoZSBjdXJyZW50IG5vZGUgaXMgdGhlIGZpcnN0IGNoaWxkLlxuICAgKlxuICAgKiBAcmV0dXJuIHtOb2RlfHVuZGVmaW5lZH0gUHJldmlvdXMgbm9kZS5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogY29uc3QgYW5ub3RhdGlvbiA9IGRlY2wucHJldigpXG4gICAqIGlmIChhbm5vdGF0aW9uLnR5cGUgPT09ICdjb21tZW50Jykge1xuICAgKiAgIHJlYWRBbm5vdGF0aW9uKGFubm90YXRpb24udGV4dClcbiAgICogfVxuICAgKi9cbiAgcHJldiAoKSB7XG4gICAgaWYgKCF0aGlzLnBhcmVudCkgcmV0dXJuIHVuZGVmaW5lZFxuICAgIGxldCBpbmRleCA9IHRoaXMucGFyZW50LmluZGV4KHRoaXMpXG4gICAgcmV0dXJuIHRoaXMucGFyZW50Lm5vZGVzW2luZGV4IC0gMV1cbiAgfVxuXG4gIC8qKlxuICAgKiBJbnNlcnQgbmV3IG5vZGUgYmVmb3JlIGN1cnJlbnQgbm9kZSB0byBjdXJyZW50IG5vZGXigJlzIHBhcmVudC5cbiAgICpcbiAgICogSnVzdCBhbGlhcyBmb3IgYG5vZGUucGFyZW50Lmluc2VydEJlZm9yZShub2RlLCBhZGQpYC5cbiAgICpcbiAgICogQHBhcmFtIHtOb2RlfG9iamVjdHxzdHJpbmd8Tm9kZVtdfSBhZGQgTmV3IG5vZGUuXG4gICAqXG4gICAqIEByZXR1cm4ge05vZGV9IFRoaXMgbm9kZSBmb3IgbWV0aG9kcyBjaGFpbi5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogZGVjbC5iZWZvcmUoJ2NvbnRlbnQ6IFwiXCInKVxuICAgKi9cbiAgYmVmb3JlIChhZGQpIHtcbiAgICB0aGlzLnBhcmVudC5pbnNlcnRCZWZvcmUodGhpcywgYWRkKVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvKipcbiAgICogSW5zZXJ0IG5ldyBub2RlIGFmdGVyIGN1cnJlbnQgbm9kZSB0byBjdXJyZW50IG5vZGXigJlzIHBhcmVudC5cbiAgICpcbiAgICogSnVzdCBhbGlhcyBmb3IgYG5vZGUucGFyZW50Lmluc2VydEFmdGVyKG5vZGUsIGFkZClgLlxuICAgKlxuICAgKiBAcGFyYW0ge05vZGV8b2JqZWN0fHN0cmluZ3xOb2RlW119IGFkZCBOZXcgbm9kZS5cbiAgICpcbiAgICogQHJldHVybiB7Tm9kZX0gVGhpcyBub2RlIGZvciBtZXRob2RzIGNoYWluLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBkZWNsLmFmdGVyKCdjb2xvcjogYmxhY2snKVxuICAgKi9cbiAgYWZ0ZXIgKGFkZCkge1xuICAgIHRoaXMucGFyZW50Lmluc2VydEFmdGVyKHRoaXMsIGFkZClcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgdG9KU09OICgpIHtcbiAgICBsZXQgZml4ZWQgPSB7IH1cblxuICAgIGZvciAobGV0IG5hbWUgaW4gdGhpcykge1xuICAgICAgaWYgKCF0aGlzLmhhc093blByb3BlcnR5KG5hbWUpKSBjb250aW51ZVxuICAgICAgaWYgKG5hbWUgPT09ICdwYXJlbnQnKSBjb250aW51ZVxuICAgICAgbGV0IHZhbHVlID0gdGhpc1tuYW1lXVxuXG4gICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICBmaXhlZFtuYW1lXSA9IHZhbHVlLm1hcChpID0+IHtcbiAgICAgICAgICBpZiAodHlwZW9mIGkgPT09ICdvYmplY3QnICYmIGkudG9KU09OKSB7XG4gICAgICAgICAgICByZXR1cm4gaS50b0pTT04oKVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gaVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZS50b0pTT04pIHtcbiAgICAgICAgZml4ZWRbbmFtZV0gPSB2YWx1ZS50b0pTT04oKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZml4ZWRbbmFtZV0gPSB2YWx1ZVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmaXhlZFxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSB7QGxpbmsgTm9kZSNyYXdzfSB2YWx1ZS4gSWYgdGhlIG5vZGUgaXMgbWlzc2luZ1xuICAgKiB0aGUgY29kZSBzdHlsZSBwcm9wZXJ0eSAoYmVjYXVzZSB0aGUgbm9kZSB3YXMgbWFudWFsbHkgYnVpbHQgb3IgY2xvbmVkKSxcbiAgICogUG9zdENTUyB3aWxsIHRyeSB0byBhdXRvZGV0ZWN0IHRoZSBjb2RlIHN0eWxlIHByb3BlcnR5IGJ5IGxvb2tpbmdcbiAgICogYXQgb3RoZXIgbm9kZXMgaW4gdGhlIHRyZWUuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwcm9wICAgICAgICAgIE5hbWUgb2YgY29kZSBzdHlsZSBwcm9wZXJ0eS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtkZWZhdWx0VHlwZV0gTmFtZSBvZiBkZWZhdWx0IHZhbHVlLCBpdCBjYW4gYmUgbWlzc2VkXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRoZSB2YWx1ZSBpcyB0aGUgc2FtZSBhcyBwcm9wLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBjb25zdCByb290ID0gcG9zdGNzcy5wYXJzZSgnYSB7IGJhY2tncm91bmQ6IHdoaXRlIH0nKVxuICAgKiByb290Lm5vZGVzWzBdLmFwcGVuZCh7IHByb3A6ICdjb2xvcicsIHZhbHVlOiAnYmxhY2snIH0pXG4gICAqIHJvb3Qubm9kZXNbMF0ubm9kZXNbMV0ucmF3cy5iZWZvcmUgICAvLz0+IHVuZGVmaW5lZFxuICAgKiByb290Lm5vZGVzWzBdLm5vZGVzWzFdLnJhdygnYmVmb3JlJykgLy89PiAnICdcbiAgICpcbiAgICogQHJldHVybiB7c3RyaW5nfSBDb2RlIHN0eWxlIHZhbHVlLlxuICAgKi9cbiAgcmF3IChwcm9wLCBkZWZhdWx0VHlwZSkge1xuICAgIGxldCBzdHIgPSBuZXcgU3RyaW5naWZpZXIoKVxuICAgIHJldHVybiBzdHIucmF3KHRoaXMsIHByb3AsIGRlZmF1bHRUeXBlKVxuICB9XG5cbiAgLyoqXG4gICAqIEZpbmRzIHRoZSBSb290IGluc3RhbmNlIG9mIHRoZSBub2Rl4oCZcyB0cmVlLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiByb290Lm5vZGVzWzBdLm5vZGVzWzBdLnJvb3QoKSA9PT0gcm9vdFxuICAgKlxuICAgKiBAcmV0dXJuIHtSb290fSBSb290IHBhcmVudC5cbiAgICovXG4gIHJvb3QgKCkge1xuICAgIGxldCByZXN1bHQgPSB0aGlzXG4gICAgd2hpbGUgKHJlc3VsdC5wYXJlbnQpIHJlc3VsdCA9IHJlc3VsdC5wYXJlbnRcbiAgICByZXR1cm4gcmVzdWx0XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXIgdGhlIGNvZGUgc3R5bGUgcHJvcGVydGllcyBmb3IgdGhlIG5vZGUgYW5kIGl0cyBjaGlsZHJlbi5cbiAgICpcbiAgICogQHBhcmFtIHtib29sZWFufSBba2VlcEJldHdlZW5dIEtlZXAgdGhlIHJhd3MuYmV0d2VlbiBzeW1ib2xzLlxuICAgKlxuICAgKiBAcmV0dXJuIHt1bmRlZmluZWR9XG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIG5vZGUucmF3cy5iZWZvcmUgIC8vPT4gJyAnXG4gICAqIG5vZGUuY2xlYW5SYXdzKClcbiAgICogbm9kZS5yYXdzLmJlZm9yZSAgLy89PiB1bmRlZmluZWRcbiAgICovXG4gIGNsZWFuUmF3cyAoa2VlcEJldHdlZW4pIHtcbiAgICBkZWxldGUgdGhpcy5yYXdzLmJlZm9yZVxuICAgIGRlbGV0ZSB0aGlzLnJhd3MuYWZ0ZXJcbiAgICBpZiAoIWtlZXBCZXR3ZWVuKSBkZWxldGUgdGhpcy5yYXdzLmJldHdlZW5cbiAgfVxuXG4gIHBvc2l0aW9uSW5zaWRlIChpbmRleCkge1xuICAgIGxldCBzdHJpbmcgPSB0aGlzLnRvU3RyaW5nKClcbiAgICBsZXQgY29sdW1uID0gdGhpcy5zb3VyY2Uuc3RhcnQuY29sdW1uXG4gICAgbGV0IGxpbmUgPSB0aGlzLnNvdXJjZS5zdGFydC5saW5lXG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGluZGV4OyBpKyspIHtcbiAgICAgIGlmIChzdHJpbmdbaV0gPT09ICdcXG4nKSB7XG4gICAgICAgIGNvbHVtbiA9IDFcbiAgICAgICAgbGluZSArPSAxXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb2x1bW4gKz0gMVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7IGxpbmUsIGNvbHVtbiB9XG4gIH1cblxuICBwb3NpdGlvbkJ5IChvcHRzKSB7XG4gICAgbGV0IHBvcyA9IHRoaXMuc291cmNlLnN0YXJ0XG4gICAgaWYgKG9wdHMuaW5kZXgpIHtcbiAgICAgIHBvcyA9IHRoaXMucG9zaXRpb25JbnNpZGUob3B0cy5pbmRleClcbiAgICB9IGVsc2UgaWYgKG9wdHMud29yZCkge1xuICAgICAgbGV0IGluZGV4ID0gdGhpcy50b1N0cmluZygpLmluZGV4T2Yob3B0cy53b3JkKVxuICAgICAgaWYgKGluZGV4ICE9PSAtMSkgcG9zID0gdGhpcy5wb3NpdGlvbkluc2lkZShpbmRleClcbiAgICB9XG4gICAgcmV0dXJuIHBvc1xuICB9XG5cbiAgLyoqXG4gICAqIEBtZW1iZXJvZiBOb2RlI1xuICAgKiBAbWVtYmVyIHtzdHJpbmd9IHR5cGUgU3RyaW5nIHJlcHJlc2VudGluZyB0aGUgbm9kZeKAmXMgdHlwZS5cbiAgICogICAgICAgICAgICAgICAgICAgICAgIFBvc3NpYmxlIHZhbHVlcyBhcmUgYHJvb3RgLCBgYXRydWxlYCwgYHJ1bGVgLFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgYGRlY2xgLCBvciBgY29tbWVudGAuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIHBvc3Rjc3MuZGVjbCh7IHByb3A6ICdjb2xvcicsIHZhbHVlOiAnYmxhY2snIH0pLnR5cGUgLy89PiAnZGVjbCdcbiAgICovXG5cbiAgLyoqXG4gICAqIEBtZW1iZXJvZiBOb2RlI1xuICAgKiBAbWVtYmVyIHtDb250YWluZXJ9IHBhcmVudCBUaGUgbm9kZeKAmXMgcGFyZW50IG5vZGUuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIHJvb3Qubm9kZXNbMF0ucGFyZW50ID09PSByb290XG4gICAqL1xuXG4gIC8qKlxuICAgKiBAbWVtYmVyb2YgTm9kZSNcbiAgICogQG1lbWJlciB7c291cmNlfSBzb3VyY2UgVGhlIGlucHV0IHNvdXJjZSBvZiB0aGUgbm9kZS5cbiAgICpcbiAgICogVGhlIHByb3BlcnR5IGlzIHVzZWQgaW4gc291cmNlIG1hcCBnZW5lcmF0aW9uLlxuICAgKlxuICAgKiBJZiB5b3UgY3JlYXRlIGEgbm9kZSBtYW51YWxseSAoZS5nLiwgd2l0aCBgcG9zdGNzcy5kZWNsKClgKSxcbiAgICogdGhhdCBub2RlIHdpbGwgbm90IGhhdmUgYSBgc291cmNlYCBwcm9wZXJ0eSBhbmQgd2lsbCBiZSBhYnNlbnRcbiAgICogZnJvbSB0aGUgc291cmNlIG1hcC4gRm9yIHRoaXMgcmVhc29uLCB0aGUgcGx1Z2luIGRldmVsb3BlciBzaG91bGRcbiAgICogY29uc2lkZXIgY2xvbmluZyBub2RlcyB0byBjcmVhdGUgbmV3IG9uZXMgKGluIHdoaWNoIGNhc2UgdGhlIG5ldyBub2Rl4oCZc1xuICAgKiBzb3VyY2Ugd2lsbCByZWZlcmVuY2UgdGhlIG9yaWdpbmFsLCBjbG9uZWQgbm9kZSkgb3Igc2V0dGluZ1xuICAgKiB0aGUgYHNvdXJjZWAgcHJvcGVydHkgbWFudWFsbHkuXG4gICAqXG4gICAqIGBgYGpzXG4gICAqIC8vIEJhZFxuICAgKiBjb25zdCBwcmVmaXhlZCA9IHBvc3Rjc3MuZGVjbCh7XG4gICAqICAgcHJvcDogJy1tb3otJyArIGRlY2wucHJvcCxcbiAgICogICB2YWx1ZTogZGVjbC52YWx1ZVxuICAgKiB9KVxuICAgKlxuICAgKiAvLyBHb29kXG4gICAqIGNvbnN0IHByZWZpeGVkID0gZGVjbC5jbG9uZSh7IHByb3A6ICctbW96LScgKyBkZWNsLnByb3AgfSlcbiAgICogYGBgXG4gICAqXG4gICAqIGBgYGpzXG4gICAqIGlmIChhdHJ1bGUubmFtZSA9PT0gJ2FkZC1saW5rJykge1xuICAgKiAgIGNvbnN0IHJ1bGUgPSBwb3N0Y3NzLnJ1bGUoeyBzZWxlY3RvcjogJ2EnLCBzb3VyY2U6IGF0cnVsZS5zb3VyY2UgfSlcbiAgICogICBhdHJ1bGUucGFyZW50Lmluc2VydEJlZm9yZShhdHJ1bGUsIHJ1bGUpXG4gICAqIH1cbiAgICogYGBgXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGRlY2wuc291cmNlLmlucHV0LmZyb20gLy89PiAnL2hvbWUvYWkvYS5zYXNzJ1xuICAgKiBkZWNsLnNvdXJjZS5zdGFydCAgICAgIC8vPT4geyBsaW5lOiAxMCwgY29sdW1uOiAyIH1cbiAgICogZGVjbC5zb3VyY2UuZW5kICAgICAgICAvLz0+IHsgbGluZTogMTAsIGNvbHVtbjogMTIgfVxuICAgKi9cblxuICAvKipcbiAgICogQG1lbWJlcm9mIE5vZGUjXG4gICAqIEBtZW1iZXIge29iamVjdH0gcmF3cyBJbmZvcm1hdGlvbiB0byBnZW5lcmF0ZSBieXRlLXRvLWJ5dGUgZXF1YWxcbiAgICogICAgICAgICAgICAgICAgICAgICAgIG5vZGUgc3RyaW5nIGFzIGl0IHdhcyBpbiB0aGUgb3JpZ2luIGlucHV0LlxuICAgKlxuICAgKiBFdmVyeSBwYXJzZXIgc2F2ZXMgaXRzIG93biBwcm9wZXJ0aWVzLFxuICAgKiBidXQgdGhlIGRlZmF1bHQgQ1NTIHBhcnNlciB1c2VzOlxuICAgKlxuICAgKiAqIGBiZWZvcmVgOiB0aGUgc3BhY2Ugc3ltYm9scyBiZWZvcmUgdGhlIG5vZGUuIEl0IGFsc28gc3RvcmVzIGAqYFxuICAgKiAgIGFuZCBgX2Agc3ltYm9scyBiZWZvcmUgdGhlIGRlY2xhcmF0aW9uIChJRSBoYWNrKS5cbiAgICogKiBgYWZ0ZXJgOiB0aGUgc3BhY2Ugc3ltYm9scyBhZnRlciB0aGUgbGFzdCBjaGlsZCBvZiB0aGUgbm9kZVxuICAgKiAgIHRvIHRoZSBlbmQgb2YgdGhlIG5vZGUuXG4gICAqICogYGJldHdlZW5gOiB0aGUgc3ltYm9scyBiZXR3ZWVuIHRoZSBwcm9wZXJ0eSBhbmQgdmFsdWVcbiAgICogICBmb3IgZGVjbGFyYXRpb25zLCBzZWxlY3RvciBhbmQgYHtgIGZvciBydWxlcywgb3IgbGFzdCBwYXJhbWV0ZXJcbiAgICogICBhbmQgYHtgIGZvciBhdC1ydWxlcy5cbiAgICogKiBgc2VtaWNvbG9uYDogY29udGFpbnMgdHJ1ZSBpZiB0aGUgbGFzdCBjaGlsZCBoYXNcbiAgICogICBhbiAob3B0aW9uYWwpIHNlbWljb2xvbi5cbiAgICogKiBgYWZ0ZXJOYW1lYDogdGhlIHNwYWNlIGJldHdlZW4gdGhlIGF0LXJ1bGUgbmFtZSBhbmQgaXRzIHBhcmFtZXRlcnMuXG4gICAqICogYGxlZnRgOiB0aGUgc3BhY2Ugc3ltYm9scyBiZXR3ZWVuIGAvKmAgYW5kIHRoZSBjb21tZW504oCZcyB0ZXh0LlxuICAgKiAqIGByaWdodGA6IHRoZSBzcGFjZSBzeW1ib2xzIGJldHdlZW4gdGhlIGNvbW1lbnTigJlzIHRleHRcbiAgICogICBhbmQgPGNvZGU+KiYjNDc7PC9jb2RlPi5cbiAgICogKiBgaW1wb3J0YW50YDogdGhlIGNvbnRlbnQgb2YgdGhlIGltcG9ydGFudCBzdGF0ZW1lbnQsXG4gICAqICAgaWYgaXQgaXMgbm90IGp1c3QgYCFpbXBvcnRhbnRgLlxuICAgKlxuICAgKiBQb3N0Q1NTIGNsZWFucyBzZWxlY3RvcnMsIGRlY2xhcmF0aW9uIHZhbHVlcyBhbmQgYXQtcnVsZSBwYXJhbWV0ZXJzXG4gICAqIGZyb20gY29tbWVudHMgYW5kIGV4dHJhIHNwYWNlcywgYnV0IGl0IHN0b3JlcyBvcmlnaW4gY29udGVudCBpbiByYXdzXG4gICAqIHByb3BlcnRpZXMuIEFzIHN1Y2gsIGlmIHlvdSBkb27igJl0IGNoYW5nZSBhIGRlY2xhcmF0aW9u4oCZcyB2YWx1ZSxcbiAgICogUG9zdENTUyB3aWxsIHVzZSB0aGUgcmF3IHZhbHVlIHdpdGggY29tbWVudHMuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGNvbnN0IHJvb3QgPSBwb3N0Y3NzLnBhcnNlKCdhIHtcXG4gIGNvbG9yOmJsYWNrXFxufScpXG4gICAqIHJvb3QuZmlyc3QuZmlyc3QucmF3cyAvLz0+IHsgYmVmb3JlOiAnXFxuICAnLCBiZXR3ZWVuOiAnOicgfVxuICAgKi9cbn1cblxuZXhwb3J0IGRlZmF1bHQgTm9kZVxuXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IHBvc2l0aW9uXG4gKiBAcHJvcGVydHkge251bWJlcn0gbGluZSAgIFNvdXJjZSBsaW5lIGluIGZpbGUuXG4gKiBAcHJvcGVydHkge251bWJlcn0gY29sdW1uIFNvdXJjZSBjb2x1bW4gaW4gZmlsZS5cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IHNvdXJjZVxuICogQHByb3BlcnR5IHtJbnB1dH0gaW5wdXQgICAge0BsaW5rIElucHV0fSB3aXRoIGlucHV0IGZpbGVcbiAqIEBwcm9wZXJ0eSB7cG9zaXRpb259IHN0YXJ0IFRoZSBzdGFydGluZyBwb3NpdGlvbiBvZiB0aGUgbm9kZeKAmXMgc291cmNlLlxuICogQHByb3BlcnR5IHtwb3NpdGlvbn0gZW5kICAgVGhlIGVuZGluZyBwb3NpdGlvbiBvZiB0aGUgbm9kZeKAmXMgc291cmNlLlxuICovXG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\n\nvar _stringifier = require('./stringifier');\n\nvar _stringifier2 = _interopRequireDefault(_stringifier);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction stringify(node, builder) {\n var str = new _stringifier2.default(builder);\n str.stringify(node);\n}\n\nexports.default = stringify;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0cmluZ2lmeS5lczYiXSwibmFtZXMiOlsic3RyaW5naWZ5Iiwibm9kZSIsImJ1aWxkZXIiLCJzdHIiLCJTdHJpbmdpZmllciJdLCJtYXBwaW5ncyI6Ijs7OztBQUFBOzs7Ozs7QUFFQSxTQUFTQSxTQUFULENBQW9CQyxJQUFwQixFQUEwQkMsT0FBMUIsRUFBbUM7QUFDakMsTUFBSUMsTUFBTSxJQUFJQyxxQkFBSixDQUFnQkYsT0FBaEIsQ0FBVjtBQUNBQyxNQUFJSCxTQUFKLENBQWNDLElBQWQ7QUFDRDs7a0JBRWNELFMiLCJmaWxlIjoic3RyaW5naWZ5LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFN0cmluZ2lmaWVyIGZyb20gJy4vc3RyaW5naWZpZXInXG5cbmZ1bmN0aW9uIHN0cmluZ2lmeSAobm9kZSwgYnVpbGRlcikge1xuICBsZXQgc3RyID0gbmV3IFN0cmluZ2lmaWVyKGJ1aWxkZXIpXG4gIHN0ci5zdHJpbmdpZnkobm9kZSlcbn1cblxuZXhwb3J0IGRlZmF1bHQgc3RyaW5naWZ5XG4iXX0=\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes, empty elements, or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n if (last === '.') {\n parts.splice(i, 1);\n } else if (last === '..') {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (allowAboveRoot) {\n for (; up--; up) {\n parts.unshift('..');\n }\n }\n\n return parts;\n}\n\n// Split a filename into [root, dir, basename, ext], unix version\n// 'root' is just a slash, or nothing.\nvar splitPathRe =\n /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\nvar splitPath = function(filename) {\n return splitPathRe.exec(filename).slice(1);\n};\n\n// path.resolve([from ...], to)\n// posix version\nexports.resolve = function() {\n var resolvedPath = '',\n resolvedAbsolute = false;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = (i >= 0) ? arguments[i] : process.cwd();\n\n // Skip empty and invalid entries\n if (typeof path !== 'string') {\n throw new TypeError('Arguments to path.resolve must be strings');\n } else if (!path) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charAt(0) === '/';\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {\n return !!p;\n }), !resolvedAbsolute).join('/');\n\n return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nexports.normalize = function(path) {\n var isAbsolute = exports.isAbsolute(path),\n trailingSlash = substr(path, -1) === '/';\n\n // Normalize the path\n path = normalizeArray(filter(path.split('/'), function(p) {\n return !!p;\n }), !isAbsolute).join('/');\n\n if (!path && !isAbsolute) {\n path = '.';\n }\n if (path && trailingSlash) {\n path += '/';\n }\n\n return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nexports.isAbsolute = function(path) {\n return path.charAt(0) === '/';\n};\n\n// posix version\nexports.join = function() {\n var paths = Array.prototype.slice.call(arguments, 0);\n return exports.normalize(filter(paths, function(p, index) {\n if (typeof p !== 'string') {\n throw new TypeError('Arguments to path.join must be strings');\n }\n return p;\n }).join('/'));\n};\n\n\n// path.relative(from, to)\n// posix version\nexports.relative = function(from, to) {\n from = exports.resolve(from).substr(1);\n to = exports.resolve(to).substr(1);\n\n function trim(arr) {\n var start = 0;\n for (; start < arr.length; start++) {\n if (arr[start] !== '') break;\n }\n\n var end = arr.length - 1;\n for (; end >= 0; end--) {\n if (arr[end] !== '') break;\n }\n\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n\n var fromParts = trim(from.split('/'));\n var toParts = trim(to.split('/'));\n\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push('..');\n }\n\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n return outputParts.join('/');\n};\n\nexports.sep = '/';\nexports.delimiter = ':';\n\nexports.dirname = function(path) {\n var result = splitPath(path),\n root = result[0],\n dir = result[1];\n\n if (!root && !dir) {\n // No dirname whatsoever\n return '.';\n }\n\n if (dir) {\n // It has a dirname, strip trailing slash\n dir = dir.substr(0, dir.length - 1);\n }\n\n return root + dir;\n};\n\n\nexports.basename = function(path, ext) {\n var f = splitPath(path)[2];\n // TODO: make this comparison case-insensitive on windows?\n if (ext && f.substr(-1 * ext.length) === ext) {\n f = f.substr(0, f.length - ext.length);\n }\n return f;\n};\n\n\nexports.extname = function(path) {\n return splitPath(path)[3];\n};\n\nfunction filter (xs, f) {\n if (xs.filter) return xs.filter(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n if (f(xs[i], i, xs)) res.push(xs[i]);\n }\n return res;\n}\n\n// String.prototype.substr - negative index don't work in IE8\nvar substr = 'ab'.substr(-1) === 'b'\n ? function (str, start, len) { return str.substr(start, len) }\n : function (str, start, len) {\n if (start < 0) start = str.length + start;\n return str.substr(start, len);\n }\n;\n","'use strict';\n\nexports.__esModule = true;\n\nvar _parser = require('./parser');\n\nvar _parser2 = _interopRequireDefault(_parser);\n\nvar _input = require('./input');\n\nvar _input2 = _interopRequireDefault(_input);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction parse(css, opts) {\n var input = new _input2.default(css, opts);\n var parser = new _parser2.default(input);\n try {\n parser.parse();\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n if (e.name === 'CssSyntaxError' && opts && opts.from) {\n if (/\\.scss$/i.test(opts.from)) {\n e.message += '\\nYou tried to parse SCSS with ' + 'the standard CSS parser; ' + 'try again with the postcss-scss parser';\n } else if (/\\.sass/i.test(opts.from)) {\n e.message += '\\nYou tried to parse Sass with ' + 'the standard CSS parser; ' + 'try again with the postcss-sass parser';\n } else if (/\\.less$/i.test(opts.from)) {\n e.message += '\\nYou tried to parse Less with ' + 'the standard CSS parser; ' + 'try again with the postcss-less parser';\n }\n }\n }\n throw e;\n }\n\n return parser.root;\n}\n\nexports.default = parse;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhcnNlLmVzNiJdLCJuYW1lcyI6WyJwYXJzZSIsImNzcyIsIm9wdHMiLCJpbnB1dCIsIklucHV0IiwicGFyc2VyIiwiUGFyc2VyIiwiZSIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsIm5hbWUiLCJmcm9tIiwidGVzdCIsIm1lc3NhZ2UiLCJyb290Il0sIm1hcHBpbmdzIjoiOzs7O0FBQUE7Ozs7QUFDQTs7Ozs7O0FBRUEsU0FBU0EsS0FBVCxDQUFnQkMsR0FBaEIsRUFBcUJDLElBQXJCLEVBQTJCO0FBQ3pCLE1BQUlDLFFBQVEsSUFBSUMsZUFBSixDQUFVSCxHQUFWLEVBQWVDLElBQWYsQ0FBWjtBQUNBLE1BQUlHLFNBQVMsSUFBSUMsZ0JBQUosQ0FBV0gsS0FBWCxDQUFiO0FBQ0EsTUFBSTtBQUNGRSxXQUFPTCxLQUFQO0FBQ0QsR0FGRCxDQUVFLE9BQU9PLENBQVAsRUFBVTtBQUNWLFFBQUlDLFFBQVFDLEdBQVIsQ0FBWUMsUUFBWixLQUF5QixZQUE3QixFQUEyQztBQUN6QyxVQUFJSCxFQUFFSSxJQUFGLEtBQVcsZ0JBQVgsSUFBK0JULElBQS9CLElBQXVDQSxLQUFLVSxJQUFoRCxFQUFzRDtBQUNwRCxZQUFJLFdBQVdDLElBQVgsQ0FBZ0JYLEtBQUtVLElBQXJCLENBQUosRUFBZ0M7QUFDOUJMLFlBQUVPLE9BQUYsSUFBYSxvQ0FDQSwyQkFEQSxHQUVBLHdDQUZiO0FBR0QsU0FKRCxNQUlPLElBQUksVUFBVUQsSUFBVixDQUFlWCxLQUFLVSxJQUFwQixDQUFKLEVBQStCO0FBQ3BDTCxZQUFFTyxPQUFGLElBQWEsb0NBQ0EsMkJBREEsR0FFQSx3Q0FGYjtBQUdELFNBSk0sTUFJQSxJQUFJLFdBQVdELElBQVgsQ0FBZ0JYLEtBQUtVLElBQXJCLENBQUosRUFBZ0M7QUFDckNMLFlBQUVPLE9BQUYsSUFBYSxvQ0FDQSwyQkFEQSxHQUVBLHdDQUZiO0FBR0Q7QUFDRjtBQUNGO0FBQ0QsVUFBTVAsQ0FBTjtBQUNEOztBQUVELFNBQU9GLE9BQU9VLElBQWQ7QUFDRDs7a0JBRWNmLEsiLCJmaWxlIjoicGFyc2UuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUGFyc2VyIGZyb20gJy4vcGFyc2VyJ1xuaW1wb3J0IElucHV0IGZyb20gJy4vaW5wdXQnXG5cbmZ1bmN0aW9uIHBhcnNlIChjc3MsIG9wdHMpIHtcbiAgbGV0IGlucHV0ID0gbmV3IElucHV0KGNzcywgb3B0cylcbiAgbGV0IHBhcnNlciA9IG5ldyBQYXJzZXIoaW5wdXQpXG4gIHRyeSB7XG4gICAgcGFyc2VyLnBhcnNlKClcbiAgfSBjYXRjaCAoZSkge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBpZiAoZS5uYW1lID09PSAnQ3NzU3ludGF4RXJyb3InICYmIG9wdHMgJiYgb3B0cy5mcm9tKSB7XG4gICAgICAgIGlmICgvXFwuc2NzcyQvaS50ZXN0KG9wdHMuZnJvbSkpIHtcbiAgICAgICAgICBlLm1lc3NhZ2UgKz0gJ1xcbllvdSB0cmllZCB0byBwYXJzZSBTQ1NTIHdpdGggJyArXG4gICAgICAgICAgICAgICAgICAgICAgICd0aGUgc3RhbmRhcmQgQ1NTIHBhcnNlcjsgJyArXG4gICAgICAgICAgICAgICAgICAgICAgICd0cnkgYWdhaW4gd2l0aCB0aGUgcG9zdGNzcy1zY3NzIHBhcnNlcidcbiAgICAgICAgfSBlbHNlIGlmICgvXFwuc2Fzcy9pLnRlc3Qob3B0cy5mcm9tKSkge1xuICAgICAgICAgIGUubWVzc2FnZSArPSAnXFxuWW91IHRyaWVkIHRvIHBhcnNlIFNhc3Mgd2l0aCAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgJ3RoZSBzdGFuZGFyZCBDU1MgcGFyc2VyOyAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgJ3RyeSBhZ2FpbiB3aXRoIHRoZSBwb3N0Y3NzLXNhc3MgcGFyc2VyJ1xuICAgICAgICB9IGVsc2UgaWYgKC9cXC5sZXNzJC9pLnRlc3Qob3B0cy5mcm9tKSkge1xuICAgICAgICAgIGUubWVzc2FnZSArPSAnXFxuWW91IHRyaWVkIHRvIHBhcnNlIExlc3Mgd2l0aCAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgJ3RoZSBzdGFuZGFyZCBDU1MgcGFyc2VyOyAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgJ3RyeSBhZ2FpbiB3aXRoIHRoZSBwb3N0Y3NzLWxlc3MgcGFyc2VyJ1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHRocm93IGVcbiAgfVxuXG4gIHJldHVybiBwYXJzZXIucm9vdFxufVxuXG5leHBvcnQgZGVmYXVsdCBwYXJzZVxuIl19\n","'use strict';\n\nexports.__esModule = true;\n\nvar _node = require('./node');\n\nvar _node2 = _interopRequireDefault(_node);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/**\n * Represents a comment between declarations or statements (rule and at-rules).\n *\n * Comments inside selectors, at-rule parameters, or declaration values\n * will be stored in the `raws` properties explained above.\n *\n * @extends Node\n */\nvar Comment = function (_Node) {\n _inherits(Comment, _Node);\n\n function Comment(defaults) {\n _classCallCheck(this, Comment);\n\n var _this = _possibleConstructorReturn(this, _Node.call(this, defaults));\n\n _this.type = 'comment';\n return _this;\n }\n\n /**\n * @memberof Comment#\n * @member {string} text The comment’s text.\n */\n\n /**\n * @memberof Comment#\n * @member {object} raws Information to generate byte-to-byte equal\n * node string as it was in the origin input.\n *\n * Every parser saves its own properties,\n * but the default CSS parser uses:\n *\n * * `before`: the space symbols before the node.\n * * `left`: the space symbols between `/*` and the comment’s text.\n * * `right`: the space symbols between the comment’s text.\n */\n\n\n return Comment;\n}(_node2.default);\n\nexports.default = Comment;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbW1lbnQuZXM2Il0sIm5hbWVzIjpbIkNvbW1lbnQiLCJkZWZhdWx0cyIsInR5cGUiLCJOb2RlIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUE7Ozs7Ozs7Ozs7OztBQUVBOzs7Ozs7OztJQVFNQSxPOzs7QUFDSixtQkFBYUMsUUFBYixFQUF1QjtBQUFBOztBQUFBLGlEQUNyQixpQkFBTUEsUUFBTixDQURxQjs7QUFFckIsVUFBS0MsSUFBTCxHQUFZLFNBQVo7QUFGcUI7QUFHdEI7O0FBRUQ7Ozs7O0FBS0E7Ozs7Ozs7Ozs7Ozs7OztFQVhvQkMsYzs7a0JBeUJQSCxPIiwiZmlsZSI6ImNvbW1lbnQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTm9kZSBmcm9tICcuL25vZGUnXG5cbi8qKlxuICogUmVwcmVzZW50cyBhIGNvbW1lbnQgYmV0d2VlbiBkZWNsYXJhdGlvbnMgb3Igc3RhdGVtZW50cyAocnVsZSBhbmQgYXQtcnVsZXMpLlxuICpcbiAqIENvbW1lbnRzIGluc2lkZSBzZWxlY3RvcnMsIGF0LXJ1bGUgcGFyYW1ldGVycywgb3IgZGVjbGFyYXRpb24gdmFsdWVzXG4gKiB3aWxsIGJlIHN0b3JlZCBpbiB0aGUgYHJhd3NgIHByb3BlcnRpZXMgZXhwbGFpbmVkIGFib3ZlLlxuICpcbiAqIEBleHRlbmRzIE5vZGVcbiAqL1xuY2xhc3MgQ29tbWVudCBleHRlbmRzIE5vZGUge1xuICBjb25zdHJ1Y3RvciAoZGVmYXVsdHMpIHtcbiAgICBzdXBlcihkZWZhdWx0cylcbiAgICB0aGlzLnR5cGUgPSAnY29tbWVudCdcbiAgfVxuXG4gIC8qKlxuICAgKiBAbWVtYmVyb2YgQ29tbWVudCNcbiAgICogQG1lbWJlciB7c3RyaW5nfSB0ZXh0IFRoZSBjb21tZW504oCZcyB0ZXh0LlxuICAgKi9cblxuICAvKipcbiAgICogQG1lbWJlcm9mIENvbW1lbnQjXG4gICAqIEBtZW1iZXIge29iamVjdH0gcmF3cyBJbmZvcm1hdGlvbiB0byBnZW5lcmF0ZSBieXRlLXRvLWJ5dGUgZXF1YWxcbiAgICogICAgICAgICAgICAgICAgICAgICAgIG5vZGUgc3RyaW5nIGFzIGl0IHdhcyBpbiB0aGUgb3JpZ2luIGlucHV0LlxuICAgKlxuICAgKiBFdmVyeSBwYXJzZXIgc2F2ZXMgaXRzIG93biBwcm9wZXJ0aWVzLFxuICAgKiBidXQgdGhlIGRlZmF1bHQgQ1NTIHBhcnNlciB1c2VzOlxuICAgKlxuICAgKiAqIGBiZWZvcmVgOiB0aGUgc3BhY2Ugc3ltYm9scyBiZWZvcmUgdGhlIG5vZGUuXG4gICAqICogYGxlZnRgOiB0aGUgc3BhY2Ugc3ltYm9scyBiZXR3ZWVuIGAvKmAgYW5kIHRoZSBjb21tZW504oCZcyB0ZXh0LlxuICAgKiAqIGByaWdodGA6IHRoZSBzcGFjZSBzeW1ib2xzIGJldHdlZW4gdGhlIGNvbW1lbnTigJlzIHRleHQuXG4gICAqL1xufVxuXG5leHBvcnQgZGVmYXVsdCBDb21tZW50XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\n\nvar _container = require('./container');\n\nvar _container2 = _interopRequireDefault(_container);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/**\n * Represents an at-rule.\n *\n * If it’s followed in the CSS by a {} block, this node will have\n * a nodes property representing its children.\n *\n * @extends Container\n *\n * @example\n * const root = postcss.parse('@charset \"UTF-8\"; @media print {}')\n *\n * const charset = root.first\n * charset.type //=> 'atrule'\n * charset.nodes //=> undefined\n *\n * const media = root.last\n * media.nodes //=> []\n */\nvar AtRule = function (_Container) {\n _inherits(AtRule, _Container);\n\n function AtRule(defaults) {\n _classCallCheck(this, AtRule);\n\n var _this = _possibleConstructorReturn(this, _Container.call(this, defaults));\n\n _this.type = 'atrule';\n return _this;\n }\n\n AtRule.prototype.append = function append() {\n var _Container$prototype$;\n\n if (!this.nodes) this.nodes = [];\n\n for (var _len = arguments.length, children = Array(_len), _key = 0; _key < _len; _key++) {\n children[_key] = arguments[_key];\n }\n\n return (_Container$prototype$ = _Container.prototype.append).call.apply(_Container$prototype$, [this].concat(children));\n };\n\n AtRule.prototype.prepend = function prepend() {\n var _Container$prototype$2;\n\n if (!this.nodes) this.nodes = [];\n\n for (var _len2 = arguments.length, children = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n children[_key2] = arguments[_key2];\n }\n\n return (_Container$prototype$2 = _Container.prototype.prepend).call.apply(_Container$prototype$2, [this].concat(children));\n };\n\n /**\n * @memberof AtRule#\n * @member {string} name The at-rule’s name immediately follows the `@`.\n *\n * @example\n * const root = postcss.parse('@media print {}')\n * media.name //=> 'media'\n * const media = root.first\n */\n\n /**\n * @memberof AtRule#\n * @member {string} params The at-rule’s parameters, the values\n * that follow the at-rule’s name but precede\n * any {} block.\n *\n * @example\n * const root = postcss.parse('@media print, screen {}')\n * const media = root.first\n * media.params //=> 'print, screen'\n */\n\n /**\n * @memberof AtRule#\n * @member {object} raws Information to generate byte-to-byte equal\n * node string as it was in the origin input.\n *\n * Every parser saves its own properties,\n * but the default CSS parser uses:\n *\n * * `before`: the space symbols before the node. It also stores `*`\n * and `_` symbols before the declaration (IE hack).\n * * `after`: the space symbols after the last child of the node\n * to the end of the node.\n * * `between`: the symbols between the property and value\n * for declarations, selector and `{` for rules, or last parameter\n * and `{` for at-rules.\n * * `semicolon`: contains true if the last child has\n * an (optional) semicolon.\n * * `afterName`: the space between the at-rule name and its parameters.\n *\n * PostCSS cleans at-rule parameters from comments and extra spaces,\n * but it stores origin content in raws properties.\n * As such, if you don’t change a declaration’s value,\n * PostCSS will use the raw value with comments.\n *\n * @example\n * const root = postcss.parse(' @media\\nprint {\\n}')\n * root.first.first.raws //=> { before: ' ',\n * // between: ' ',\n * // afterName: '\\n',\n * // after: '\\n' }\n */\n\n\n return AtRule;\n}(_container2.default);\n\nexports.default = AtRule;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImF0LXJ1bGUuZXM2Il0sIm5hbWVzIjpbIkF0UnVsZSIsImRlZmF1bHRzIiwidHlwZSIsImFwcGVuZCIsIm5vZGVzIiwiY2hpbGRyZW4iLCJwcmVwZW5kIiwiQ29udGFpbmVyIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUE7Ozs7Ozs7Ozs7OztBQUVBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFrQk1BLE07OztBQUNKLGtCQUFhQyxRQUFiLEVBQXVCO0FBQUE7O0FBQUEsaURBQ3JCLHNCQUFNQSxRQUFOLENBRHFCOztBQUVyQixVQUFLQyxJQUFMLEdBQVksUUFBWjtBQUZxQjtBQUd0Qjs7bUJBRURDLE0scUJBQXFCO0FBQUE7O0FBQ25CLFFBQUksQ0FBQyxLQUFLQyxLQUFWLEVBQWlCLEtBQUtBLEtBQUwsR0FBYSxFQUFiOztBQURFLHNDQUFWQyxRQUFVO0FBQVZBLGNBQVU7QUFBQTs7QUFFbkIsV0FBTyw4Q0FBTUYsTUFBTixrREFBZ0JFLFFBQWhCLEVBQVA7QUFDRCxHOzttQkFFREMsTyxzQkFBc0I7QUFBQTs7QUFDcEIsUUFBSSxDQUFDLEtBQUtGLEtBQVYsRUFBaUIsS0FBS0EsS0FBTCxHQUFhLEVBQWI7O0FBREcsdUNBQVZDLFFBQVU7QUFBVkEsY0FBVTtBQUFBOztBQUVwQixXQUFPLCtDQUFNQyxPQUFOLG1EQUFpQkQsUUFBakIsRUFBUDtBQUNELEc7O0FBRUQ7Ozs7Ozs7Ozs7QUFVQTs7Ozs7Ozs7Ozs7O0FBWUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUF0Q21CRSxtQjs7a0JBdUVOUCxNIiwiZmlsZSI6ImF0LXJ1bGUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQ29udGFpbmVyIGZyb20gJy4vY29udGFpbmVyJ1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYW4gYXQtcnVsZS5cbiAqXG4gKiBJZiBpdOKAmXMgZm9sbG93ZWQgaW4gdGhlIENTUyBieSBhIHt9IGJsb2NrLCB0aGlzIG5vZGUgd2lsbCBoYXZlXG4gKiBhIG5vZGVzIHByb3BlcnR5IHJlcHJlc2VudGluZyBpdHMgY2hpbGRyZW4uXG4gKlxuICogQGV4dGVuZHMgQ29udGFpbmVyXG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IHJvb3QgPSBwb3N0Y3NzLnBhcnNlKCdAY2hhcnNldCBcIlVURi04XCI7IEBtZWRpYSBwcmludCB7fScpXG4gKlxuICogY29uc3QgY2hhcnNldCA9IHJvb3QuZmlyc3RcbiAqIGNoYXJzZXQudHlwZSAgLy89PiAnYXRydWxlJ1xuICogY2hhcnNldC5ub2RlcyAvLz0+IHVuZGVmaW5lZFxuICpcbiAqIGNvbnN0IG1lZGlhID0gcm9vdC5sYXN0XG4gKiBtZWRpYS5ub2RlcyAgIC8vPT4gW11cbiAqL1xuY2xhc3MgQXRSdWxlIGV4dGVuZHMgQ29udGFpbmVyIHtcbiAgY29uc3RydWN0b3IgKGRlZmF1bHRzKSB7XG4gICAgc3VwZXIoZGVmYXVsdHMpXG4gICAgdGhpcy50eXBlID0gJ2F0cnVsZSdcbiAgfVxuXG4gIGFwcGVuZCAoLi4uY2hpbGRyZW4pIHtcbiAgICBpZiAoIXRoaXMubm9kZXMpIHRoaXMubm9kZXMgPSBbXVxuICAgIHJldHVybiBzdXBlci5hcHBlbmQoLi4uY2hpbGRyZW4pXG4gIH1cblxuICBwcmVwZW5kICguLi5jaGlsZHJlbikge1xuICAgIGlmICghdGhpcy5ub2RlcykgdGhpcy5ub2RlcyA9IFtdXG4gICAgcmV0dXJuIHN1cGVyLnByZXBlbmQoLi4uY2hpbGRyZW4pXG4gIH1cblxuICAvKipcbiAgICogQG1lbWJlcm9mIEF0UnVsZSNcbiAgICogQG1lbWJlciB7c3RyaW5nfSBuYW1lIFRoZSBhdC1ydWxl4oCZcyBuYW1lIGltbWVkaWF0ZWx5IGZvbGxvd3MgdGhlIGBAYC5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogY29uc3Qgcm9vdCAgPSBwb3N0Y3NzLnBhcnNlKCdAbWVkaWEgcHJpbnQge30nKVxuICAgKiBtZWRpYS5uYW1lIC8vPT4gJ21lZGlhJ1xuICAgKiBjb25zdCBtZWRpYSA9IHJvb3QuZmlyc3RcbiAgICovXG5cbiAgLyoqXG4gICAqIEBtZW1iZXJvZiBBdFJ1bGUjXG4gICAqIEBtZW1iZXIge3N0cmluZ30gcGFyYW1zIFRoZSBhdC1ydWxl4oCZcyBwYXJhbWV0ZXJzLCB0aGUgdmFsdWVzXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgZm9sbG93IHRoZSBhdC1ydWxl4oCZcyBuYW1lIGJ1dCBwcmVjZWRlXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgIGFueSB7fSBibG9jay5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogY29uc3Qgcm9vdCAgPSBwb3N0Y3NzLnBhcnNlKCdAbWVkaWEgcHJpbnQsIHNjcmVlbiB7fScpXG4gICAqIGNvbnN0IG1lZGlhID0gcm9vdC5maXJzdFxuICAgKiBtZWRpYS5wYXJhbXMgLy89PiAncHJpbnQsIHNjcmVlbidcbiAgICovXG5cbiAgLyoqXG4gICAqIEBtZW1iZXJvZiBBdFJ1bGUjXG4gICAqIEBtZW1iZXIge29iamVjdH0gcmF3cyBJbmZvcm1hdGlvbiB0byBnZW5lcmF0ZSBieXRlLXRvLWJ5dGUgZXF1YWxcbiAgICogICAgICAgICAgICAgICAgICAgICAgICBub2RlIHN0cmluZyBhcyBpdCB3YXMgaW4gdGhlIG9yaWdpbiBpbnB1dC5cbiAgICpcbiAgICogRXZlcnkgcGFyc2VyIHNhdmVzIGl0cyBvd24gcHJvcGVydGllcyxcbiAgICogYnV0IHRoZSBkZWZhdWx0IENTUyBwYXJzZXIgdXNlczpcbiAgICpcbiAgICogKiBgYmVmb3JlYDogdGhlIHNwYWNlIHN5bWJvbHMgYmVmb3JlIHRoZSBub2RlLiBJdCBhbHNvIHN0b3JlcyBgKmBcbiAgICogICBhbmQgYF9gIHN5bWJvbHMgYmVmb3JlIHRoZSBkZWNsYXJhdGlvbiAoSUUgaGFjaykuXG4gICAqICogYGFmdGVyYDogdGhlIHNwYWNlIHN5bWJvbHMgYWZ0ZXIgdGhlIGxhc3QgY2hpbGQgb2YgdGhlIG5vZGVcbiAgICogICB0byB0aGUgZW5kIG9mIHRoZSBub2RlLlxuICAgKiAqIGBiZXR3ZWVuYDogdGhlIHN5bWJvbHMgYmV0d2VlbiB0aGUgcHJvcGVydHkgYW5kIHZhbHVlXG4gICAqICAgZm9yIGRlY2xhcmF0aW9ucywgc2VsZWN0b3IgYW5kIGB7YCBmb3IgcnVsZXMsIG9yIGxhc3QgcGFyYW1ldGVyXG4gICAqICAgYW5kIGB7YCBmb3IgYXQtcnVsZXMuXG4gICAqICogYHNlbWljb2xvbmA6IGNvbnRhaW5zIHRydWUgaWYgdGhlIGxhc3QgY2hpbGQgaGFzXG4gICAqICAgYW4gKG9wdGlvbmFsKSBzZW1pY29sb24uXG4gICAqICogYGFmdGVyTmFtZWA6IHRoZSBzcGFjZSBiZXR3ZWVuIHRoZSBhdC1ydWxlIG5hbWUgYW5kIGl0cyBwYXJhbWV0ZXJzLlxuICAgKlxuICAgKiBQb3N0Q1NTIGNsZWFucyBhdC1ydWxlIHBhcmFtZXRlcnMgZnJvbSBjb21tZW50cyBhbmQgZXh0cmEgc3BhY2VzLFxuICAgKiBidXQgaXQgc3RvcmVzIG9yaWdpbiBjb250ZW50IGluIHJhd3MgcHJvcGVydGllcy5cbiAgICogQXMgc3VjaCwgaWYgeW91IGRvbuKAmXQgY2hhbmdlIGEgZGVjbGFyYXRpb27igJlzIHZhbHVlLFxuICAgKiBQb3N0Q1NTIHdpbGwgdXNlIHRoZSByYXcgdmFsdWUgd2l0aCBjb21tZW50cy5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogY29uc3Qgcm9vdCA9IHBvc3Rjc3MucGFyc2UoJyAgQG1lZGlhXFxucHJpbnQge1xcbn0nKVxuICAgKiByb290LmZpcnN0LmZpcnN0LnJhd3MgLy89PiB7IGJlZm9yZTogJyAgJyxcbiAgICogICAgICAgICAgICAgICAgICAgICAgIC8vICAgICBiZXR3ZWVuOiAnICcsXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgYWZ0ZXJOYW1lOiAnXFxuJyxcbiAgICogICAgICAgICAgICAgICAgICAgICAgIC8vICAgICBhZnRlcjogJ1xcbicgfVxuICAgKi9cbn1cblxuZXhwb3J0IGRlZmF1bHQgQXRSdWxlXG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _declaration = require('./declaration');\n\nvar _declaration2 = _interopRequireDefault(_declaration);\n\nvar _comment = require('./comment');\n\nvar _comment2 = _interopRequireDefault(_comment);\n\nvar _node = require('./node');\n\nvar _node2 = _interopRequireDefault(_node);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction cleanSource(nodes) {\n return nodes.map(function (i) {\n if (i.nodes) i.nodes = cleanSource(i.nodes);\n delete i.source;\n return i;\n });\n}\n\n/**\n * The {@link Root}, {@link AtRule}, and {@link Rule} container nodes\n * inherit some common methods to help work with their children.\n *\n * Note that all containers can store any content. If you write a rule inside\n * a rule, PostCSS will parse it.\n *\n * @extends Node\n * @abstract\n */\n\nvar Container = function (_Node) {\n _inherits(Container, _Node);\n\n function Container() {\n _classCallCheck(this, Container);\n\n return _possibleConstructorReturn(this, _Node.apply(this, arguments));\n }\n\n Container.prototype.push = function push(child) {\n child.parent = this;\n this.nodes.push(child);\n return this;\n };\n\n /**\n * Iterates through the container’s immediate children,\n * calling `callback` for each child.\n *\n * Returning `false` in the callback will break iteration.\n *\n * This method only iterates through the container’s immediate children.\n * If you need to recursively iterate through all the container’s descendant\n * nodes, use {@link Container#walk}.\n *\n * Unlike the for `{}`-cycle or `Array#forEach` this iterator is safe\n * if you are mutating the array of child nodes during iteration.\n * PostCSS will adjust the current index to match the mutations.\n *\n * @param {childIterator} callback Iterator receives each node and index.\n *\n * @return {false|undefined} Returns `false` if iteration was broke.\n *\n * @example\n * const root = postcss.parse('a { color: black; z-index: 1 }')\n * const rule = root.first\n *\n * for (const decl of rule.nodes) {\n * decl.cloneBefore({ prop: '-webkit-' + decl.prop })\n * // Cycle will be infinite, because cloneBefore moves the current node\n * // to the next index\n * }\n *\n * rule.each(decl => {\n * decl.cloneBefore({ prop: '-webkit-' + decl.prop })\n * // Will be executed only for color and z-index\n * })\n */\n\n\n Container.prototype.each = function each(callback) {\n if (!this.lastEach) this.lastEach = 0;\n if (!this.indexes) this.indexes = {};\n\n this.lastEach += 1;\n var id = this.lastEach;\n this.indexes[id] = 0;\n\n if (!this.nodes) return undefined;\n\n var index = void 0,\n result = void 0;\n while (this.indexes[id] < this.nodes.length) {\n index = this.indexes[id];\n result = callback(this.nodes[index], index);\n if (result === false) break;\n\n this.indexes[id] += 1;\n }\n\n delete this.indexes[id];\n\n return result;\n };\n\n /**\n * Traverses the container’s descendant nodes, calling callback\n * for each node.\n *\n * Like container.each(), this method is safe to use\n * if you are mutating arrays during iteration.\n *\n * If you only need to iterate through the container’s immediate children,\n * use {@link Container#each}.\n *\n * @param {childIterator} callback Iterator receives each node and index.\n *\n * @return {false|undefined} Returns `false` if iteration was broke.\n *\n * @example\n * root.walk(node => {\n * // Traverses all descendant nodes.\n * })\n */\n\n\n Container.prototype.walk = function walk(callback) {\n return this.each(function (child, i) {\n var result = void 0;\n try {\n result = callback(child, i);\n } catch (e) {\n e.postcssNode = child;\n if (e.stack && child.source && /\\n\\s{4}at /.test(e.stack)) {\n var s = child.source;\n e.stack = e.stack.replace(/\\n\\s{4}at /, '$&' + s.input.from + ':' + s.start.line + ':' + s.start.column + '$&');\n }\n throw e;\n }\n if (result !== false && child.walk) {\n result = child.walk(callback);\n }\n return result;\n });\n };\n\n /**\n * Traverses the container’s descendant nodes, calling callback\n * for each declaration node.\n *\n * If you pass a filter, iteration will only happen over declarations\n * with matching properties.\n *\n * Like {@link Container#each}, this method is safe\n * to use if you are mutating arrays during iteration.\n *\n * @param {string|RegExp} [prop] String or regular expression\n * to filter declarations by property name.\n * @param {childIterator} callback Iterator receives each node and index.\n *\n * @return {false|undefined} Returns `false` if iteration was broke.\n *\n * @example\n * root.walkDecls(decl => {\n * checkPropertySupport(decl.prop)\n * })\n *\n * root.walkDecls('border-radius', decl => {\n * decl.remove()\n * })\n *\n * root.walkDecls(/^background/, decl => {\n * decl.value = takeFirstColorFromGradient(decl.value)\n * })\n */\n\n\n Container.prototype.walkDecls = function walkDecls(prop, callback) {\n if (!callback) {\n callback = prop;\n return this.walk(function (child, i) {\n if (child.type === 'decl') {\n return callback(child, i);\n }\n });\n } else if (prop instanceof RegExp) {\n return this.walk(function (child, i) {\n if (child.type === 'decl' && prop.test(child.prop)) {\n return callback(child, i);\n }\n });\n } else {\n return this.walk(function (child, i) {\n if (child.type === 'decl' && child.prop === prop) {\n return callback(child, i);\n }\n });\n }\n };\n\n /**\n * Traverses the container’s descendant nodes, calling callback\n * for each rule node.\n *\n * If you pass a filter, iteration will only happen over rules\n * with matching selectors.\n *\n * Like {@link Container#each}, this method is safe\n * to use if you are mutating arrays during iteration.\n *\n * @param {string|RegExp} [selector] String or regular expression\n * to filter rules by selector.\n * @param {childIterator} callback Iterator receives each node and index.\n *\n * @return {false|undefined} returns `false` if iteration was broke.\n *\n * @example\n * const selectors = []\n * root.walkRules(rule => {\n * selectors.push(rule.selector)\n * })\n * console.log(`Your CSS uses ${ selectors.length } selectors`)\n */\n\n\n Container.prototype.walkRules = function walkRules(selector, callback) {\n if (!callback) {\n callback = selector;\n\n return this.walk(function (child, i) {\n if (child.type === 'rule') {\n return callback(child, i);\n }\n });\n } else if (selector instanceof RegExp) {\n return this.walk(function (child, i) {\n if (child.type === 'rule' && selector.test(child.selector)) {\n return callback(child, i);\n }\n });\n } else {\n return this.walk(function (child, i) {\n if (child.type === 'rule' && child.selector === selector) {\n return callback(child, i);\n }\n });\n }\n };\n\n /**\n * Traverses the container’s descendant nodes, calling callback\n * for each at-rule node.\n *\n * If you pass a filter, iteration will only happen over at-rules\n * that have matching names.\n *\n * Like {@link Container#each}, this method is safe\n * to use if you are mutating arrays during iteration.\n *\n * @param {string|RegExp} [name] String or regular expression\n * to filter at-rules by name.\n * @param {childIterator} callback Iterator receives each node and index.\n *\n * @return {false|undefined} Returns `false` if iteration was broke.\n *\n * @example\n * root.walkAtRules(rule => {\n * if (isOld(rule.name)) rule.remove()\n * })\n *\n * let first = false\n * root.walkAtRules('charset', rule => {\n * if (!first) {\n * first = true\n * } else {\n * rule.remove()\n * }\n * })\n */\n\n\n Container.prototype.walkAtRules = function walkAtRules(name, callback) {\n if (!callback) {\n callback = name;\n return this.walk(function (child, i) {\n if (child.type === 'atrule') {\n return callback(child, i);\n }\n });\n } else if (name instanceof RegExp) {\n return this.walk(function (child, i) {\n if (child.type === 'atrule' && name.test(child.name)) {\n return callback(child, i);\n }\n });\n } else {\n return this.walk(function (child, i) {\n if (child.type === 'atrule' && child.name === name) {\n return callback(child, i);\n }\n });\n }\n };\n\n /**\n * Traverses the container’s descendant nodes, calling callback\n * for each comment node.\n *\n * Like {@link Container#each}, this method is safe\n * to use if you are mutating arrays during iteration.\n *\n * @param {childIterator} callback Iterator receives each node and index.\n *\n * @return {false|undefined} Returns `false` if iteration was broke.\n *\n * @example\n * root.walkComments(comment => {\n * comment.remove()\n * })\n */\n\n\n Container.prototype.walkComments = function walkComments(callback) {\n return this.walk(function (child, i) {\n if (child.type === 'comment') {\n return callback(child, i);\n }\n });\n };\n\n /**\n * Inserts new nodes to the end of the container.\n *\n * @param {...(Node|object|string|Node[])} children New nodes.\n *\n * @return {Node} This node for methods chain.\n *\n * @example\n * const decl1 = postcss.decl({ prop: 'color', value: 'black' })\n * const decl2 = postcss.decl({ prop: 'background-color', value: 'white' })\n * rule.append(decl1, decl2)\n *\n * root.append({ name: 'charset', params: '\"UTF-8\"' }) // at-rule\n * root.append({ selector: 'a' }) // rule\n * rule.append({ prop: 'color', value: 'black' }) // declaration\n * rule.append({ text: 'Comment' }) // comment\n *\n * root.append('a {}')\n * root.first.append('color: black; z-index: 1')\n */\n\n\n Container.prototype.append = function append() {\n for (var _len = arguments.length, children = Array(_len), _key = 0; _key < _len; _key++) {\n children[_key] = arguments[_key];\n }\n\n for (var _iterator = children, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var child = _ref;\n\n var nodes = this.normalize(child, this.last);\n for (var _iterator2 = nodes, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {\n var _ref2;\n\n if (_isArray2) {\n if (_i2 >= _iterator2.length) break;\n _ref2 = _iterator2[_i2++];\n } else {\n _i2 = _iterator2.next();\n if (_i2.done) break;\n _ref2 = _i2.value;\n }\n\n var node = _ref2;\n this.nodes.push(node);\n }\n }\n return this;\n };\n\n /**\n * Inserts new nodes to the start of the container.\n *\n * @param {...(Node|object|string|Node[])} children New nodes.\n *\n * @return {Node} This node for methods chain.\n *\n * @example\n * const decl1 = postcss.decl({ prop: 'color', value: 'black' })\n * const decl2 = postcss.decl({ prop: 'background-color', value: 'white' })\n * rule.prepend(decl1, decl2)\n *\n * root.append({ name: 'charset', params: '\"UTF-8\"' }) // at-rule\n * root.append({ selector: 'a' }) // rule\n * rule.append({ prop: 'color', value: 'black' }) // declaration\n * rule.append({ text: 'Comment' }) // comment\n *\n * root.append('a {}')\n * root.first.append('color: black; z-index: 1')\n */\n\n\n Container.prototype.prepend = function prepend() {\n for (var _len2 = arguments.length, children = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n children[_key2] = arguments[_key2];\n }\n\n children = children.reverse();\n for (var _iterator3 = children, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {\n var _ref3;\n\n if (_isArray3) {\n if (_i3 >= _iterator3.length) break;\n _ref3 = _iterator3[_i3++];\n } else {\n _i3 = _iterator3.next();\n if (_i3.done) break;\n _ref3 = _i3.value;\n }\n\n var child = _ref3;\n\n var nodes = this.normalize(child, this.first, 'prepend').reverse();\n for (var _iterator4 = nodes, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) {\n var _ref4;\n\n if (_isArray4) {\n if (_i4 >= _iterator4.length) break;\n _ref4 = _iterator4[_i4++];\n } else {\n _i4 = _iterator4.next();\n if (_i4.done) break;\n _ref4 = _i4.value;\n }\n\n var node = _ref4;\n this.nodes.unshift(node);\n }for (var id in this.indexes) {\n this.indexes[id] = this.indexes[id] + nodes.length;\n }\n }\n return this;\n };\n\n Container.prototype.cleanRaws = function cleanRaws(keepBetween) {\n _Node.prototype.cleanRaws.call(this, keepBetween);\n if (this.nodes) {\n for (var _iterator5 = this.nodes, _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : _iterator5[Symbol.iterator]();;) {\n var _ref5;\n\n if (_isArray5) {\n if (_i5 >= _iterator5.length) break;\n _ref5 = _iterator5[_i5++];\n } else {\n _i5 = _iterator5.next();\n if (_i5.done) break;\n _ref5 = _i5.value;\n }\n\n var node = _ref5;\n node.cleanRaws(keepBetween);\n }\n }\n };\n\n /**\n * Insert new node before old node within the container.\n *\n * @param {Node|number} exist Child or child’s index.\n * @param {Node|object|string|Node[]} add New node.\n *\n * @return {Node} This node for methods chain.\n *\n * @example\n * rule.insertBefore(decl, decl.clone({ prop: '-webkit-' + decl.prop }))\n */\n\n\n Container.prototype.insertBefore = function insertBefore(exist, add) {\n exist = this.index(exist);\n\n var type = exist === 0 ? 'prepend' : false;\n var nodes = this.normalize(add, this.nodes[exist], type).reverse();\n for (var _iterator6 = nodes, _isArray6 = Array.isArray(_iterator6), _i6 = 0, _iterator6 = _isArray6 ? _iterator6 : _iterator6[Symbol.iterator]();;) {\n var _ref6;\n\n if (_isArray6) {\n if (_i6 >= _iterator6.length) break;\n _ref6 = _iterator6[_i6++];\n } else {\n _i6 = _iterator6.next();\n if (_i6.done) break;\n _ref6 = _i6.value;\n }\n\n var node = _ref6;\n this.nodes.splice(exist, 0, node);\n }var index = void 0;\n for (var id in this.indexes) {\n index = this.indexes[id];\n if (exist <= index) {\n this.indexes[id] = index + nodes.length;\n }\n }\n\n return this;\n };\n\n /**\n * Insert new node after old node within the container.\n *\n * @param {Node|number} exist Child or child’s index.\n * @param {Node|object|string|Node[]} add New node.\n *\n * @return {Node} This node for methods chain.\n */\n\n\n Container.prototype.insertAfter = function insertAfter(exist, add) {\n exist = this.index(exist);\n\n var nodes = this.normalize(add, this.nodes[exist]).reverse();\n for (var _iterator7 = nodes, _isArray7 = Array.isArray(_iterator7), _i7 = 0, _iterator7 = _isArray7 ? _iterator7 : _iterator7[Symbol.iterator]();;) {\n var _ref7;\n\n if (_isArray7) {\n if (_i7 >= _iterator7.length) break;\n _ref7 = _iterator7[_i7++];\n } else {\n _i7 = _iterator7.next();\n if (_i7.done) break;\n _ref7 = _i7.value;\n }\n\n var node = _ref7;\n this.nodes.splice(exist + 1, 0, node);\n }var index = void 0;\n for (var id in this.indexes) {\n index = this.indexes[id];\n if (exist < index) {\n this.indexes[id] = index + nodes.length;\n }\n }\n\n return this;\n };\n\n /**\n * Removes node from the container and cleans the parent properties\n * from the node and its children.\n *\n * @param {Node|number} child Child or child’s index.\n *\n * @return {Node} This node for methods chain\n *\n * @example\n * rule.nodes.length //=> 5\n * rule.removeChild(decl)\n * rule.nodes.length //=> 4\n * decl.parent //=> undefined\n */\n\n\n Container.prototype.removeChild = function removeChild(child) {\n child = this.index(child);\n this.nodes[child].parent = undefined;\n this.nodes.splice(child, 1);\n\n var index = void 0;\n for (var id in this.indexes) {\n index = this.indexes[id];\n if (index >= child) {\n this.indexes[id] = index - 1;\n }\n }\n\n return this;\n };\n\n /**\n * Removes all children from the container\n * and cleans their parent properties.\n *\n * @return {Node} This node for methods chain.\n *\n * @example\n * rule.removeAll()\n * rule.nodes.length //=> 0\n */\n\n\n Container.prototype.removeAll = function removeAll() {\n for (var _iterator8 = this.nodes, _isArray8 = Array.isArray(_iterator8), _i8 = 0, _iterator8 = _isArray8 ? _iterator8 : _iterator8[Symbol.iterator]();;) {\n var _ref8;\n\n if (_isArray8) {\n if (_i8 >= _iterator8.length) break;\n _ref8 = _iterator8[_i8++];\n } else {\n _i8 = _iterator8.next();\n if (_i8.done) break;\n _ref8 = _i8.value;\n }\n\n var node = _ref8;\n node.parent = undefined;\n }this.nodes = [];\n return this;\n };\n\n /**\n * Passes all declaration values within the container that match pattern\n * through callback, replacing those values with the returned result\n * of callback.\n *\n * This method is useful if you are using a custom unit or function\n * and need to iterate through all values.\n *\n * @param {string|RegExp} pattern Replace pattern.\n * @param {object} opts Options to speed up the search.\n * @param {string|string[]} opts.props An array of property names.\n * @param {string} opts.fast String that’s used to narrow down\n * values and speed up the regexp search.\n * @param {function|string} callback String to replace pattern or callback\n * that returns a new value. The callback\n * will receive the same arguments\n * as those passed to a function parameter\n * of `String#replace`.\n *\n * @return {Node} This node for methods chain.\n *\n * @example\n * root.replaceValues(/\\d+rem/, { fast: 'rem' }, string => {\n * return 15 * parseInt(string) + 'px'\n * })\n */\n\n\n Container.prototype.replaceValues = function replaceValues(pattern, opts, callback) {\n if (!callback) {\n callback = opts;\n opts = {};\n }\n\n this.walkDecls(function (decl) {\n if (opts.props && opts.props.indexOf(decl.prop) === -1) return;\n if (opts.fast && decl.value.indexOf(opts.fast) === -1) return;\n\n decl.value = decl.value.replace(pattern, callback);\n });\n\n return this;\n };\n\n /**\n * Returns `true` if callback returns `true`\n * for all of the container’s children.\n *\n * @param {childCondition} condition Iterator returns true or false.\n *\n * @return {boolean} Is every child pass condition.\n *\n * @example\n * const noPrefixes = rule.every(i => i.prop[0] !== '-')\n */\n\n\n Container.prototype.every = function every(condition) {\n return this.nodes.every(condition);\n };\n\n /**\n * Returns `true` if callback returns `true` for (at least) one\n * of the container’s children.\n *\n * @param {childCondition} condition Iterator returns true or false.\n *\n * @return {boolean} Is some child pass condition.\n *\n * @example\n * const hasPrefix = rule.some(i => i.prop[0] === '-')\n */\n\n\n Container.prototype.some = function some(condition) {\n return this.nodes.some(condition);\n };\n\n /**\n * Returns a `child`’s index within the {@link Container#nodes} array.\n *\n * @param {Node} child Child of the current container.\n *\n * @return {number} Child index.\n *\n * @example\n * rule.index( rule.nodes[2] ) //=> 2\n */\n\n\n Container.prototype.index = function index(child) {\n if (typeof child === 'number') {\n return child;\n } else {\n return this.nodes.indexOf(child);\n }\n };\n\n /**\n * The container’s first child.\n *\n * @type {Node}\n *\n * @example\n * rule.first === rules.nodes[0]\n */\n\n\n Container.prototype.normalize = function normalize(nodes, sample) {\n var _this2 = this;\n\n if (typeof nodes === 'string') {\n var parse = require('./parse');\n nodes = cleanSource(parse(nodes).nodes);\n } else if (Array.isArray(nodes)) {\n nodes = nodes.slice(0);\n for (var _iterator9 = nodes, _isArray9 = Array.isArray(_iterator9), _i9 = 0, _iterator9 = _isArray9 ? _iterator9 : _iterator9[Symbol.iterator]();;) {\n var _ref9;\n\n if (_isArray9) {\n if (_i9 >= _iterator9.length) break;\n _ref9 = _iterator9[_i9++];\n } else {\n _i9 = _iterator9.next();\n if (_i9.done) break;\n _ref9 = _i9.value;\n }\n\n var i = _ref9;\n\n if (i.parent) i.parent.removeChild(i, 'ignore');\n }\n } else if (nodes.type === 'root') {\n nodes = nodes.nodes.slice(0);\n for (var _iterator10 = nodes, _isArray10 = Array.isArray(_iterator10), _i11 = 0, _iterator10 = _isArray10 ? _iterator10 : _iterator10[Symbol.iterator]();;) {\n var _ref10;\n\n if (_isArray10) {\n if (_i11 >= _iterator10.length) break;\n _ref10 = _iterator10[_i11++];\n } else {\n _i11 = _iterator10.next();\n if (_i11.done) break;\n _ref10 = _i11.value;\n }\n\n var _i10 = _ref10;\n\n if (_i10.parent) _i10.parent.removeChild(_i10, 'ignore');\n }\n } else if (nodes.type) {\n nodes = [nodes];\n } else if (nodes.prop) {\n if (typeof nodes.value === 'undefined') {\n throw new Error('Value field is missed in node creation');\n } else if (typeof nodes.value !== 'string') {\n nodes.value = String(nodes.value);\n }\n nodes = [new _declaration2.default(nodes)];\n } else if (nodes.selector) {\n var Rule = require('./rule');\n nodes = [new Rule(nodes)];\n } else if (nodes.name) {\n var AtRule = require('./at-rule');\n nodes = [new AtRule(nodes)];\n } else if (nodes.text) {\n nodes = [new _comment2.default(nodes)];\n } else {\n throw new Error('Unknown node type in node creation');\n }\n\n var processed = nodes.map(function (i) {\n if (i.parent) i.parent.removeChild(i);\n if (typeof i.raws.before === 'undefined') {\n if (sample && typeof sample.raws.before !== 'undefined') {\n i.raws.before = sample.raws.before.replace(/[^\\s]/g, '');\n }\n }\n i.parent = _this2;\n return i;\n });\n\n return processed;\n };\n\n /**\n * @memberof Container#\n * @member {Node[]} nodes An array containing the container’s children.\n *\n * @example\n * const root = postcss.parse('a { color: black }')\n * root.nodes.length //=> 1\n * root.nodes[0].selector //=> 'a'\n * root.nodes[0].nodes[0].prop //=> 'color'\n */\n\n\n _createClass(Container, [{\n key: 'first',\n get: function get() {\n if (!this.nodes) return undefined;\n return this.nodes[0];\n }\n\n /**\n * The container’s last child.\n *\n * @type {Node}\n *\n * @example\n * rule.last === rule.nodes[rule.nodes.length - 1]\n */\n\n }, {\n key: 'last',\n get: function get() {\n if (!this.nodes) return undefined;\n return this.nodes[this.nodes.length - 1];\n }\n }]);\n\n return Container;\n}(_node2.default);\n\nexports.default = Container;\n\n/**\n * @callback childCondition\n * @param {Node} node Container child.\n * @param {number} index Child index.\n * @param {Node[]} nodes All container children.\n * @return {boolean}\n */\n\n/**\n * @callback childIterator\n * @param {Node} node Container child.\n * @param {number} index Child index.\n * @return {false|undefined} Returning `false` will break iteration.\n */\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbnRhaW5lci5lczYiXSwibmFtZXMiOlsiY2xlYW5Tb3VyY2UiLCJub2RlcyIsIm1hcCIsImkiLCJzb3VyY2UiLCJDb250YWluZXIiLCJwdXNoIiwiY2hpbGQiLCJwYXJlbnQiLCJlYWNoIiwiY2FsbGJhY2siLCJsYXN0RWFjaCIsImluZGV4ZXMiLCJpZCIsInVuZGVmaW5lZCIsImluZGV4IiwicmVzdWx0IiwibGVuZ3RoIiwid2FsayIsImUiLCJwb3N0Y3NzTm9kZSIsInN0YWNrIiwidGVzdCIsInMiLCJyZXBsYWNlIiwiaW5wdXQiLCJmcm9tIiwic3RhcnQiLCJsaW5lIiwiY29sdW1uIiwid2Fsa0RlY2xzIiwicHJvcCIsInR5cGUiLCJSZWdFeHAiLCJ3YWxrUnVsZXMiLCJzZWxlY3RvciIsIndhbGtBdFJ1bGVzIiwibmFtZSIsIndhbGtDb21tZW50cyIsImFwcGVuZCIsImNoaWxkcmVuIiwibm9ybWFsaXplIiwibGFzdCIsIm5vZGUiLCJwcmVwZW5kIiwicmV2ZXJzZSIsImZpcnN0IiwidW5zaGlmdCIsImNsZWFuUmF3cyIsImtlZXBCZXR3ZWVuIiwiaW5zZXJ0QmVmb3JlIiwiZXhpc3QiLCJhZGQiLCJzcGxpY2UiLCJpbnNlcnRBZnRlciIsInJlbW92ZUNoaWxkIiwicmVtb3ZlQWxsIiwicmVwbGFjZVZhbHVlcyIsInBhdHRlcm4iLCJvcHRzIiwicHJvcHMiLCJpbmRleE9mIiwiZGVjbCIsImZhc3QiLCJ2YWx1ZSIsImV2ZXJ5IiwiY29uZGl0aW9uIiwic29tZSIsInNhbXBsZSIsInBhcnNlIiwicmVxdWlyZSIsIkFycmF5IiwiaXNBcnJheSIsInNsaWNlIiwiRXJyb3IiLCJTdHJpbmciLCJEZWNsYXJhdGlvbiIsIlJ1bGUiLCJBdFJ1bGUiLCJ0ZXh0IiwiQ29tbWVudCIsInByb2Nlc3NlZCIsInJhd3MiLCJiZWZvcmUiLCJOb2RlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTs7OztBQUNBOzs7O0FBQ0E7Ozs7Ozs7Ozs7OztBQUVBLFNBQVNBLFdBQVQsQ0FBc0JDLEtBQXRCLEVBQTZCO0FBQzNCLFNBQU9BLE1BQU1DLEdBQU4sQ0FBVSxhQUFLO0FBQ3BCLFFBQUlDLEVBQUVGLEtBQU4sRUFBYUUsRUFBRUYsS0FBRixHQUFVRCxZQUFZRyxFQUFFRixLQUFkLENBQVY7QUFDYixXQUFPRSxFQUFFQyxNQUFUO0FBQ0EsV0FBT0QsQ0FBUDtBQUNELEdBSk0sQ0FBUDtBQUtEOztBQUVEOzs7Ozs7Ozs7OztJQVVNRSxTOzs7Ozs7Ozs7c0JBQ0pDLEksaUJBQU1DLEssRUFBTztBQUNYQSxVQUFNQyxNQUFOLEdBQWUsSUFBZjtBQUNBLFNBQUtQLEtBQUwsQ0FBV0ssSUFBWCxDQUFnQkMsS0FBaEI7QUFDQSxXQUFPLElBQVA7QUFDRCxHOztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztzQkFpQ0FFLEksaUJBQU1DLFEsRUFBVTtBQUNkLFFBQUksQ0FBQyxLQUFLQyxRQUFWLEVBQW9CLEtBQUtBLFFBQUwsR0FBZ0IsQ0FBaEI7QUFDcEIsUUFBSSxDQUFDLEtBQUtDLE9BQVYsRUFBbUIsS0FBS0EsT0FBTCxHQUFlLEVBQWY7O0FBRW5CLFNBQUtELFFBQUwsSUFBaUIsQ0FBakI7QUFDQSxRQUFJRSxLQUFLLEtBQUtGLFFBQWQ7QUFDQSxTQUFLQyxPQUFMLENBQWFDLEVBQWIsSUFBbUIsQ0FBbkI7O0FBRUEsUUFBSSxDQUFDLEtBQUtaLEtBQVYsRUFBaUIsT0FBT2EsU0FBUDs7QUFFakIsUUFBSUMsY0FBSjtBQUFBLFFBQVdDLGVBQVg7QUFDQSxXQUFPLEtBQUtKLE9BQUwsQ0FBYUMsRUFBYixJQUFtQixLQUFLWixLQUFMLENBQVdnQixNQUFyQyxFQUE2QztBQUMzQ0YsY0FBUSxLQUFLSCxPQUFMLENBQWFDLEVBQWIsQ0FBUjtBQUNBRyxlQUFTTixTQUFTLEtBQUtULEtBQUwsQ0FBV2MsS0FBWCxDQUFULEVBQTRCQSxLQUE1QixDQUFUO0FBQ0EsVUFBSUMsV0FBVyxLQUFmLEVBQXNCOztBQUV0QixXQUFLSixPQUFMLENBQWFDLEVBQWIsS0FBb0IsQ0FBcEI7QUFDRDs7QUFFRCxXQUFPLEtBQUtELE9BQUwsQ0FBYUMsRUFBYixDQUFQOztBQUVBLFdBQU9HLE1BQVA7QUFDRCxHOztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7c0JBbUJBRSxJLGlCQUFNUixRLEVBQVU7QUFDZCxXQUFPLEtBQUtELElBQUwsQ0FBVSxVQUFDRixLQUFELEVBQVFKLENBQVIsRUFBYztBQUM3QixVQUFJYSxlQUFKO0FBQ0EsVUFBSTtBQUNGQSxpQkFBU04sU0FBU0gsS0FBVCxFQUFnQkosQ0FBaEIsQ0FBVDtBQUNELE9BRkQsQ0FFRSxPQUFPZ0IsQ0FBUCxFQUFVO0FBQ1ZBLFVBQUVDLFdBQUYsR0FBZ0JiLEtBQWhCO0FBQ0EsWUFBSVksRUFBRUUsS0FBRixJQUFXZCxNQUFNSCxNQUFqQixJQUEyQixhQUFha0IsSUFBYixDQUFrQkgsRUFBRUUsS0FBcEIsQ0FBL0IsRUFBMkQ7QUFDekQsY0FBSUUsSUFBSWhCLE1BQU1ILE1BQWQ7QUFDQWUsWUFBRUUsS0FBRixHQUFVRixFQUFFRSxLQUFGLENBQVFHLE9BQVIsQ0FBZ0IsWUFBaEIsU0FDRkQsRUFBRUUsS0FBRixDQUFRQyxJQUROLFNBQ2dCSCxFQUFFSSxLQUFGLENBQVFDLElBRHhCLFNBQ2tDTCxFQUFFSSxLQUFGLENBQVFFLE1BRDFDLFFBQVY7QUFFRDtBQUNELGNBQU1WLENBQU47QUFDRDtBQUNELFVBQUlILFdBQVcsS0FBWCxJQUFvQlQsTUFBTVcsSUFBOUIsRUFBb0M7QUFDbENGLGlCQUFTVCxNQUFNVyxJQUFOLENBQVdSLFFBQVgsQ0FBVDtBQUNEO0FBQ0QsYUFBT00sTUFBUDtBQUNELEtBakJNLENBQVA7QUFrQkQsRzs7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztzQkE2QkFjLFMsc0JBQVdDLEksRUFBTXJCLFEsRUFBVTtBQUN6QixRQUFJLENBQUNBLFFBQUwsRUFBZTtBQUNiQSxpQkFBV3FCLElBQVg7QUFDQSxhQUFPLEtBQUtiLElBQUwsQ0FBVSxVQUFDWCxLQUFELEVBQVFKLENBQVIsRUFBYztBQUM3QixZQUFJSSxNQUFNeUIsSUFBTixLQUFlLE1BQW5CLEVBQTJCO0FBQ3pCLGlCQUFPdEIsU0FBU0gsS0FBVCxFQUFnQkosQ0FBaEIsQ0FBUDtBQUNEO0FBQ0YsT0FKTSxDQUFQO0FBS0QsS0FQRCxNQU9PLElBQUk0QixnQkFBZ0JFLE1BQXBCLEVBQTRCO0FBQ2pDLGFBQU8sS0FBS2YsSUFBTCxDQUFVLFVBQUNYLEtBQUQsRUFBUUosQ0FBUixFQUFjO0FBQzdCLFlBQUlJLE1BQU15QixJQUFOLEtBQWUsTUFBZixJQUF5QkQsS0FBS1QsSUFBTCxDQUFVZixNQUFNd0IsSUFBaEIsQ0FBN0IsRUFBb0Q7QUFDbEQsaUJBQU9yQixTQUFTSCxLQUFULEVBQWdCSixDQUFoQixDQUFQO0FBQ0Q7QUFDRixPQUpNLENBQVA7QUFLRCxLQU5NLE1BTUE7QUFDTCxhQUFPLEtBQUtlLElBQUwsQ0FBVSxVQUFDWCxLQUFELEVBQVFKLENBQVIsRUFBYztBQUM3QixZQUFJSSxNQUFNeUIsSUFBTixLQUFlLE1BQWYsSUFBeUJ6QixNQUFNd0IsSUFBTixLQUFlQSxJQUE1QyxFQUFrRDtBQUNoRCxpQkFBT3JCLFNBQVNILEtBQVQsRUFBZ0JKLENBQWhCLENBQVA7QUFDRDtBQUNGLE9BSk0sQ0FBUDtBQUtEO0FBQ0YsRzs7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztzQkF1QkErQixTLHNCQUFXQyxRLEVBQVV6QixRLEVBQVU7QUFDN0IsUUFBSSxDQUFDQSxRQUFMLEVBQWU7QUFDYkEsaUJBQVd5QixRQUFYOztBQUVBLGFBQU8sS0FBS2pCLElBQUwsQ0FBVSxVQUFDWCxLQUFELEVBQVFKLENBQVIsRUFBYztBQUM3QixZQUFJSSxNQUFNeUIsSUFBTixLQUFlLE1BQW5CLEVBQTJCO0FBQ3pCLGlCQUFPdEIsU0FBU0gsS0FBVCxFQUFnQkosQ0FBaEIsQ0FBUDtBQUNEO0FBQ0YsT0FKTSxDQUFQO0FBS0QsS0FSRCxNQVFPLElBQUlnQyxvQkFBb0JGLE1BQXhCLEVBQWdDO0FBQ3JDLGFBQU8sS0FBS2YsSUFBTCxDQUFVLFVBQUNYLEtBQUQsRUFBUUosQ0FBUixFQUFjO0FBQzdCLFlBQUlJLE1BQU15QixJQUFOLEtBQWUsTUFBZixJQUF5QkcsU0FBU2IsSUFBVCxDQUFjZixNQUFNNEIsUUFBcEIsQ0FBN0IsRUFBNEQ7QUFDMUQsaUJBQU96QixTQUFTSCxLQUFULEVBQWdCSixDQUFoQixDQUFQO0FBQ0Q7QUFDRixPQUpNLENBQVA7QUFLRCxLQU5NLE1BTUE7QUFDTCxhQUFPLEtBQUtlLElBQUwsQ0FBVSxVQUFDWCxLQUFELEVBQVFKLENBQVIsRUFBYztBQUM3QixZQUFJSSxNQUFNeUIsSUFBTixLQUFlLE1BQWYsSUFBeUJ6QixNQUFNNEIsUUFBTixLQUFtQkEsUUFBaEQsRUFBMEQ7QUFDeEQsaUJBQU96QixTQUFTSCxLQUFULEVBQWdCSixDQUFoQixDQUFQO0FBQ0Q7QUFDRixPQUpNLENBQVA7QUFLRDtBQUNGLEc7O0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3NCQThCQWlDLFcsd0JBQWFDLEksRUFBTTNCLFEsRUFBVTtBQUMzQixRQUFJLENBQUNBLFFBQUwsRUFBZTtBQUNiQSxpQkFBVzJCLElBQVg7QUFDQSxhQUFPLEtBQUtuQixJQUFMLENBQVUsVUFBQ1gsS0FBRCxFQUFRSixDQUFSLEVBQWM7QUFDN0IsWUFBSUksTUFBTXlCLElBQU4sS0FBZSxRQUFuQixFQUE2QjtBQUMzQixpQkFBT3RCLFNBQVNILEtBQVQsRUFBZ0JKLENBQWhCLENBQVA7QUFDRDtBQUNGLE9BSk0sQ0FBUDtBQUtELEtBUEQsTUFPTyxJQUFJa0MsZ0JBQWdCSixNQUFwQixFQUE0QjtBQUNqQyxhQUFPLEtBQUtmLElBQUwsQ0FBVSxVQUFDWCxLQUFELEVBQVFKLENBQVIsRUFBYztBQUM3QixZQUFJSSxNQUFNeUIsSUFBTixLQUFlLFFBQWYsSUFBMkJLLEtBQUtmLElBQUwsQ0FBVWYsTUFBTThCLElBQWhCLENBQS9CLEVBQXNEO0FBQ3BELGlCQUFPM0IsU0FBU0gsS0FBVCxFQUFnQkosQ0FBaEIsQ0FBUDtBQUNEO0FBQ0YsT0FKTSxDQUFQO0FBS0QsS0FOTSxNQU1BO0FBQ0wsYUFBTyxLQUFLZSxJQUFMLENBQVUsVUFBQ1gsS0FBRCxFQUFRSixDQUFSLEVBQWM7QUFDN0IsWUFBSUksTUFBTXlCLElBQU4sS0FBZSxRQUFmLElBQTJCekIsTUFBTThCLElBQU4sS0FBZUEsSUFBOUMsRUFBb0Q7QUFDbEQsaUJBQU8zQixTQUFTSCxLQUFULEVBQWdCSixDQUFoQixDQUFQO0FBQ0Q7QUFDRixPQUpNLENBQVA7QUFLRDtBQUNGLEc7O0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7OztzQkFnQkFtQyxZLHlCQUFjNUIsUSxFQUFVO0FBQ3RCLFdBQU8sS0FBS1EsSUFBTCxDQUFVLFVBQUNYLEtBQUQsRUFBUUosQ0FBUixFQUFjO0FBQzdCLFVBQUlJLE1BQU15QixJQUFOLEtBQWUsU0FBbkIsRUFBOEI7QUFDNUIsZUFBT3RCLFNBQVNILEtBQVQsRUFBZ0JKLENBQWhCLENBQVA7QUFDRDtBQUNGLEtBSk0sQ0FBUDtBQUtELEc7O0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7c0JBb0JBb0MsTSxxQkFBcUI7QUFBQSxzQ0FBVkMsUUFBVTtBQUFWQSxjQUFVO0FBQUE7O0FBQ25CLHlCQUFrQkEsUUFBbEIsa0hBQTRCO0FBQUE7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFBQSxVQUFuQmpDLEtBQW1COztBQUMxQixVQUFJTixRQUFRLEtBQUt3QyxTQUFMLENBQWVsQyxLQUFmLEVBQXNCLEtBQUttQyxJQUEzQixDQUFaO0FBQ0EsNEJBQWlCekMsS0FBakI7QUFBQTs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUFBLFlBQVMwQyxJQUFUO0FBQXdCLGFBQUsxQyxLQUFMLENBQVdLLElBQVgsQ0FBZ0JxQyxJQUFoQjtBQUF4QjtBQUNEO0FBQ0QsV0FBTyxJQUFQO0FBQ0QsRzs7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztzQkFvQkFDLE8sc0JBQXNCO0FBQUEsdUNBQVZKLFFBQVU7QUFBVkEsY0FBVTtBQUFBOztBQUNwQkEsZUFBV0EsU0FBU0ssT0FBVCxFQUFYO0FBQ0EsMEJBQWtCTCxRQUFsQix5SEFBNEI7QUFBQTs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUFBLFVBQW5CakMsS0FBbUI7O0FBQzFCLFVBQUlOLFFBQVEsS0FBS3dDLFNBQUwsQ0FBZWxDLEtBQWYsRUFBc0IsS0FBS3VDLEtBQTNCLEVBQWtDLFNBQWxDLEVBQTZDRCxPQUE3QyxFQUFaO0FBQ0EsNEJBQWlCNUMsS0FBakI7QUFBQTs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUFBLFlBQVMwQyxJQUFUO0FBQXdCLGFBQUsxQyxLQUFMLENBQVc4QyxPQUFYLENBQW1CSixJQUFuQjtBQUF4QixPQUNBLEtBQUssSUFBSTlCLEVBQVQsSUFBZSxLQUFLRCxPQUFwQixFQUE2QjtBQUMzQixhQUFLQSxPQUFMLENBQWFDLEVBQWIsSUFBbUIsS0FBS0QsT0FBTCxDQUFhQyxFQUFiLElBQW1CWixNQUFNZ0IsTUFBNUM7QUFDRDtBQUNGO0FBQ0QsV0FBTyxJQUFQO0FBQ0QsRzs7c0JBRUQrQixTLHNCQUFXQyxXLEVBQWE7QUFDdEIsb0JBQU1ELFNBQU4sWUFBZ0JDLFdBQWhCO0FBQ0EsUUFBSSxLQUFLaEQsS0FBVCxFQUFnQjtBQUNkLDRCQUFpQixLQUFLQSxLQUF0QjtBQUFBOztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQUEsWUFBUzBDLElBQVQ7QUFBNkJBLGFBQUtLLFNBQUwsQ0FBZUMsV0FBZjtBQUE3QjtBQUNEO0FBQ0YsRzs7QUFFRDs7Ozs7Ozs7Ozs7OztzQkFXQUMsWSx5QkFBY0MsSyxFQUFPQyxHLEVBQUs7QUFDeEJELFlBQVEsS0FBS3BDLEtBQUwsQ0FBV29DLEtBQVgsQ0FBUjs7QUFFQSxRQUFJbkIsT0FBT21CLFVBQVUsQ0FBVixHQUFjLFNBQWQsR0FBMEIsS0FBckM7QUFDQSxRQUFJbEQsUUFBUSxLQUFLd0MsU0FBTCxDQUFlVyxHQUFmLEVBQW9CLEtBQUtuRCxLQUFMLENBQVdrRCxLQUFYLENBQXBCLEVBQXVDbkIsSUFBdkMsRUFBNkNhLE9BQTdDLEVBQVo7QUFDQSwwQkFBaUI1QyxLQUFqQjtBQUFBOztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQUEsVUFBUzBDLElBQVQ7QUFBd0IsV0FBSzFDLEtBQUwsQ0FBV29ELE1BQVgsQ0FBa0JGLEtBQWxCLEVBQXlCLENBQXpCLEVBQTRCUixJQUE1QjtBQUF4QixLQUVBLElBQUk1QixjQUFKO0FBQ0EsU0FBSyxJQUFJRixFQUFULElBQWUsS0FBS0QsT0FBcEIsRUFBNkI7QUFDM0JHLGNBQVEsS0FBS0gsT0FBTCxDQUFhQyxFQUFiLENBQVI7QUFDQSxVQUFJc0MsU0FBU3BDLEtBQWIsRUFBb0I7QUFDbEIsYUFBS0gsT0FBTCxDQUFhQyxFQUFiLElBQW1CRSxRQUFRZCxNQUFNZ0IsTUFBakM7QUFDRDtBQUNGOztBQUVELFdBQU8sSUFBUDtBQUNELEc7O0FBRUQ7Ozs7Ozs7Ozs7c0JBUUFxQyxXLHdCQUFhSCxLLEVBQU9DLEcsRUFBSztBQUN2QkQsWUFBUSxLQUFLcEMsS0FBTCxDQUFXb0MsS0FBWCxDQUFSOztBQUVBLFFBQUlsRCxRQUFRLEtBQUt3QyxTQUFMLENBQWVXLEdBQWYsRUFBb0IsS0FBS25ELEtBQUwsQ0FBV2tELEtBQVgsQ0FBcEIsRUFBdUNOLE9BQXZDLEVBQVo7QUFDQSwwQkFBaUI1QyxLQUFqQjtBQUFBOztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQUEsVUFBUzBDLElBQVQ7QUFBd0IsV0FBSzFDLEtBQUwsQ0FBV29ELE1BQVgsQ0FBa0JGLFFBQVEsQ0FBMUIsRUFBNkIsQ0FBN0IsRUFBZ0NSLElBQWhDO0FBQXhCLEtBRUEsSUFBSTVCLGNBQUo7QUFDQSxTQUFLLElBQUlGLEVBQVQsSUFBZSxLQUFLRCxPQUFwQixFQUE2QjtBQUMzQkcsY0FBUSxLQUFLSCxPQUFMLENBQWFDLEVBQWIsQ0FBUjtBQUNBLFVBQUlzQyxRQUFRcEMsS0FBWixFQUFtQjtBQUNqQixhQUFLSCxPQUFMLENBQWFDLEVBQWIsSUFBbUJFLFFBQVFkLE1BQU1nQixNQUFqQztBQUNEO0FBQ0Y7O0FBRUQsV0FBTyxJQUFQO0FBQ0QsRzs7QUFFRDs7Ozs7Ozs7Ozs7Ozs7OztzQkFjQXNDLFcsd0JBQWFoRCxLLEVBQU87QUFDbEJBLFlBQVEsS0FBS1EsS0FBTCxDQUFXUixLQUFYLENBQVI7QUFDQSxTQUFLTixLQUFMLENBQVdNLEtBQVgsRUFBa0JDLE1BQWxCLEdBQTJCTSxTQUEzQjtBQUNBLFNBQUtiLEtBQUwsQ0FBV29ELE1BQVgsQ0FBa0I5QyxLQUFsQixFQUF5QixDQUF6Qjs7QUFFQSxRQUFJUSxjQUFKO0FBQ0EsU0FBSyxJQUFJRixFQUFULElBQWUsS0FBS0QsT0FBcEIsRUFBNkI7QUFDM0JHLGNBQVEsS0FBS0gsT0FBTCxDQUFhQyxFQUFiLENBQVI7QUFDQSxVQUFJRSxTQUFTUixLQUFiLEVBQW9CO0FBQ2xCLGFBQUtLLE9BQUwsQ0FBYUMsRUFBYixJQUFtQkUsUUFBUSxDQUEzQjtBQUNEO0FBQ0Y7O0FBRUQsV0FBTyxJQUFQO0FBQ0QsRzs7QUFFRDs7Ozs7Ozs7Ozs7O3NCQVVBeUMsUyx3QkFBYTtBQUNYLDBCQUFpQixLQUFLdkQsS0FBdEI7QUFBQTs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUFBLFVBQVMwQyxJQUFUO0FBQTZCQSxXQUFLbkMsTUFBTCxHQUFjTSxTQUFkO0FBQTdCLEtBQ0EsS0FBS2IsS0FBTCxHQUFhLEVBQWI7QUFDQSxXQUFPLElBQVA7QUFDRCxHOztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3NCQTBCQXdELGEsMEJBQWVDLE8sRUFBU0MsSSxFQUFNakQsUSxFQUFVO0FBQ3RDLFFBQUksQ0FBQ0EsUUFBTCxFQUFlO0FBQ2JBLGlCQUFXaUQsSUFBWDtBQUNBQSxhQUFPLEVBQVA7QUFDRDs7QUFFRCxTQUFLN0IsU0FBTCxDQUFlLGdCQUFRO0FBQ3JCLFVBQUk2QixLQUFLQyxLQUFMLElBQWNELEtBQUtDLEtBQUwsQ0FBV0MsT0FBWCxDQUFtQkMsS0FBSy9CLElBQXhCLE1BQWtDLENBQUMsQ0FBckQsRUFBd0Q7QUFDeEQsVUFBSTRCLEtBQUtJLElBQUwsSUFBYUQsS0FBS0UsS0FBTCxDQUFXSCxPQUFYLENBQW1CRixLQUFLSSxJQUF4QixNQUFrQyxDQUFDLENBQXBELEVBQXVEOztBQUV2REQsV0FBS0UsS0FBTCxHQUFhRixLQUFLRSxLQUFMLENBQVd4QyxPQUFYLENBQW1Ca0MsT0FBbkIsRUFBNEJoRCxRQUE1QixDQUFiO0FBQ0QsS0FMRDs7QUFPQSxXQUFPLElBQVA7QUFDRCxHOztBQUVEOzs7Ozs7Ozs7Ozs7O3NCQVdBdUQsSyxrQkFBT0MsUyxFQUFXO0FBQ2hCLFdBQU8sS0FBS2pFLEtBQUwsQ0FBV2dFLEtBQVgsQ0FBaUJDLFNBQWpCLENBQVA7QUFDRCxHOztBQUVEOzs7Ozs7Ozs7Ozs7O3NCQVdBQyxJLGlCQUFNRCxTLEVBQVc7QUFDZixXQUFPLEtBQUtqRSxLQUFMLENBQVdrRSxJQUFYLENBQWdCRCxTQUFoQixDQUFQO0FBQ0QsRzs7QUFFRDs7Ozs7Ozs7Ozs7O3NCQVVBbkQsSyxrQkFBT1IsSyxFQUFPO0FBQ1osUUFBSSxPQUFPQSxLQUFQLEtBQWlCLFFBQXJCLEVBQStCO0FBQzdCLGFBQU9BLEtBQVA7QUFDRCxLQUZELE1BRU87QUFDTCxhQUFPLEtBQUtOLEtBQUwsQ0FBVzRELE9BQVgsQ0FBbUJ0RCxLQUFuQixDQUFQO0FBQ0Q7QUFDRixHOztBQUVEOzs7Ozs7Ozs7O3NCQTBCQWtDLFMsc0JBQVd4QyxLLEVBQU9tRSxNLEVBQVE7QUFBQTs7QUFDeEIsUUFBSSxPQUFPbkUsS0FBUCxLQUFpQixRQUFyQixFQUErQjtBQUM3QixVQUFJb0UsUUFBUUMsUUFBUSxTQUFSLENBQVo7QUFDQXJFLGNBQVFELFlBQVlxRSxNQUFNcEUsS0FBTixFQUFhQSxLQUF6QixDQUFSO0FBQ0QsS0FIRCxNQUdPLElBQUlzRSxNQUFNQyxPQUFOLENBQWN2RSxLQUFkLENBQUosRUFBMEI7QUFDL0JBLGNBQVFBLE1BQU13RSxLQUFOLENBQVksQ0FBWixDQUFSO0FBQ0EsNEJBQWN4RSxLQUFkLHlIQUFxQjtBQUFBOztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQUEsWUFBWkUsQ0FBWTs7QUFDbkIsWUFBSUEsRUFBRUssTUFBTixFQUFjTCxFQUFFSyxNQUFGLENBQVMrQyxXQUFULENBQXFCcEQsQ0FBckIsRUFBd0IsUUFBeEI7QUFDZjtBQUNGLEtBTE0sTUFLQSxJQUFJRixNQUFNK0IsSUFBTixLQUFlLE1BQW5CLEVBQTJCO0FBQ2hDL0IsY0FBUUEsTUFBTUEsS0FBTixDQUFZd0UsS0FBWixDQUFrQixDQUFsQixDQUFSO0FBQ0EsNkJBQWN4RSxLQUFkLGdJQUFxQjtBQUFBOztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQUEsWUFBWkUsSUFBWTs7QUFDbkIsWUFBSUEsS0FBRUssTUFBTixFQUFjTCxLQUFFSyxNQUFGLENBQVMrQyxXQUFULENBQXFCcEQsSUFBckIsRUFBd0IsUUFBeEI7QUFDZjtBQUNGLEtBTE0sTUFLQSxJQUFJRixNQUFNK0IsSUFBVixFQUFnQjtBQUNyQi9CLGNBQVEsQ0FBQ0EsS0FBRCxDQUFSO0FBQ0QsS0FGTSxNQUVBLElBQUlBLE1BQU04QixJQUFWLEVBQWdCO0FBQ3JCLFVBQUksT0FBTzlCLE1BQU0rRCxLQUFiLEtBQXVCLFdBQTNCLEVBQXdDO0FBQ3RDLGNBQU0sSUFBSVUsS0FBSixDQUFVLHdDQUFWLENBQU47QUFDRCxPQUZELE1BRU8sSUFBSSxPQUFPekUsTUFBTStELEtBQWIsS0FBdUIsUUFBM0IsRUFBcUM7QUFDMUMvRCxjQUFNK0QsS0FBTixHQUFjVyxPQUFPMUUsTUFBTStELEtBQWIsQ0FBZDtBQUNEO0FBQ0QvRCxjQUFRLENBQUMsSUFBSTJFLHFCQUFKLENBQWdCM0UsS0FBaEIsQ0FBRCxDQUFSO0FBQ0QsS0FQTSxNQU9BLElBQUlBLE1BQU1rQyxRQUFWLEVBQW9CO0FBQ3pCLFVBQUkwQyxPQUFPUCxRQUFRLFFBQVIsQ0FBWDtBQUNBckUsY0FBUSxDQUFDLElBQUk0RSxJQUFKLENBQVM1RSxLQUFULENBQUQsQ0FBUjtBQUNELEtBSE0sTUFHQSxJQUFJQSxNQUFNb0MsSUFBVixFQUFnQjtBQUNyQixVQUFJeUMsU0FBU1IsUUFBUSxXQUFSLENBQWI7QUFDQXJFLGNBQVEsQ0FBQyxJQUFJNkUsTUFBSixDQUFXN0UsS0FBWCxDQUFELENBQVI7QUFDRCxLQUhNLE1BR0EsSUFBSUEsTUFBTThFLElBQVYsRUFBZ0I7QUFDckI5RSxjQUFRLENBQUMsSUFBSStFLGlCQUFKLENBQVkvRSxLQUFaLENBQUQsQ0FBUjtBQUNELEtBRk0sTUFFQTtBQUNMLFlBQU0sSUFBSXlFLEtBQUosQ0FBVSxvQ0FBVixDQUFOO0FBQ0Q7O0FBRUQsUUFBSU8sWUFBWWhGLE1BQU1DLEdBQU4sQ0FBVSxhQUFLO0FBQzdCLFVBQUlDLEVBQUVLLE1BQU4sRUFBY0wsRUFBRUssTUFBRixDQUFTK0MsV0FBVCxDQUFxQnBELENBQXJCO0FBQ2QsVUFBSSxPQUFPQSxFQUFFK0UsSUFBRixDQUFPQyxNQUFkLEtBQXlCLFdBQTdCLEVBQTBDO0FBQ3hDLFlBQUlmLFVBQVUsT0FBT0EsT0FBT2MsSUFBUCxDQUFZQyxNQUFuQixLQUE4QixXQUE1QyxFQUF5RDtBQUN2RGhGLFlBQUUrRSxJQUFGLENBQU9DLE1BQVAsR0FBZ0JmLE9BQU9jLElBQVAsQ0FBWUMsTUFBWixDQUFtQjNELE9BQW5CLENBQTJCLFFBQTNCLEVBQXFDLEVBQXJDLENBQWhCO0FBQ0Q7QUFDRjtBQUNEckIsUUFBRUssTUFBRixHQUFXLE1BQVg7QUFDQSxhQUFPTCxDQUFQO0FBQ0QsS0FUZSxDQUFoQjs7QUFXQSxXQUFPOEUsU0FBUDtBQUNELEc7O0FBRUQ7Ozs7Ozs7Ozs7Ozs7O3dCQW5FYTtBQUNYLFVBQUksQ0FBQyxLQUFLaEYsS0FBVixFQUFpQixPQUFPYSxTQUFQO0FBQ2pCLGFBQU8sS0FBS2IsS0FBTCxDQUFXLENBQVgsQ0FBUDtBQUNEOztBQUVEOzs7Ozs7Ozs7Ozt3QkFRWTtBQUNWLFVBQUksQ0FBQyxLQUFLQSxLQUFWLEVBQWlCLE9BQU9hLFNBQVA7QUFDakIsYUFBTyxLQUFLYixLQUFMLENBQVcsS0FBS0EsS0FBTCxDQUFXZ0IsTUFBWCxHQUFvQixDQUEvQixDQUFQO0FBQ0Q7Ozs7RUFqakJxQm1FLGM7O2tCQWduQlQvRSxTOztBQUVmOzs7Ozs7OztBQVFBIiwiZmlsZSI6ImNvbnRhaW5lci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBEZWNsYXJhdGlvbiBmcm9tICcuL2RlY2xhcmF0aW9uJ1xuaW1wb3J0IENvbW1lbnQgZnJvbSAnLi9jb21tZW50J1xuaW1wb3J0IE5vZGUgZnJvbSAnLi9ub2RlJ1xuXG5mdW5jdGlvbiBjbGVhblNvdXJjZSAobm9kZXMpIHtcbiAgcmV0dXJuIG5vZGVzLm1hcChpID0+IHtcbiAgICBpZiAoaS5ub2RlcykgaS5ub2RlcyA9IGNsZWFuU291cmNlKGkubm9kZXMpXG4gICAgZGVsZXRlIGkuc291cmNlXG4gICAgcmV0dXJuIGlcbiAgfSlcbn1cblxuLyoqXG4gKiBUaGUge0BsaW5rIFJvb3R9LCB7QGxpbmsgQXRSdWxlfSwgYW5kIHtAbGluayBSdWxlfSBjb250YWluZXIgbm9kZXNcbiAqIGluaGVyaXQgc29tZSBjb21tb24gbWV0aG9kcyB0byBoZWxwIHdvcmsgd2l0aCB0aGVpciBjaGlsZHJlbi5cbiAqXG4gKiBOb3RlIHRoYXQgYWxsIGNvbnRhaW5lcnMgY2FuIHN0b3JlIGFueSBjb250ZW50LiBJZiB5b3Ugd3JpdGUgYSBydWxlIGluc2lkZVxuICogYSBydWxlLCBQb3N0Q1NTIHdpbGwgcGFyc2UgaXQuXG4gKlxuICogQGV4dGVuZHMgTm9kZVxuICogQGFic3RyYWN0XG4gKi9cbmNsYXNzIENvbnRhaW5lciBleHRlbmRzIE5vZGUge1xuICBwdXNoIChjaGlsZCkge1xuICAgIGNoaWxkLnBhcmVudCA9IHRoaXNcbiAgICB0aGlzLm5vZGVzLnB1c2goY2hpbGQpXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8qKlxuICAgKiBJdGVyYXRlcyB0aHJvdWdoIHRoZSBjb250YWluZXLigJlzIGltbWVkaWF0ZSBjaGlsZHJlbixcbiAgICogY2FsbGluZyBgY2FsbGJhY2tgIGZvciBlYWNoIGNoaWxkLlxuICAgKlxuICAgKiBSZXR1cm5pbmcgYGZhbHNlYCBpbiB0aGUgY2FsbGJhY2sgd2lsbCBicmVhayBpdGVyYXRpb24uXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIG9ubHkgaXRlcmF0ZXMgdGhyb3VnaCB0aGUgY29udGFpbmVy4oCZcyBpbW1lZGlhdGUgY2hpbGRyZW4uXG4gICAqIElmIHlvdSBuZWVkIHRvIHJlY3Vyc2l2ZWx5IGl0ZXJhdGUgdGhyb3VnaCBhbGwgdGhlIGNvbnRhaW5lcuKAmXMgZGVzY2VuZGFudFxuICAgKiBub2RlcywgdXNlIHtAbGluayBDb250YWluZXIjd2Fsa30uXG4gICAqXG4gICAqIFVubGlrZSB0aGUgZm9yIGB7fWAtY3ljbGUgb3IgYEFycmF5I2ZvckVhY2hgIHRoaXMgaXRlcmF0b3IgaXMgc2FmZVxuICAgKiBpZiB5b3UgYXJlIG11dGF0aW5nIHRoZSBhcnJheSBvZiBjaGlsZCBub2RlcyBkdXJpbmcgaXRlcmF0aW9uLlxuICAgKiBQb3N0Q1NTIHdpbGwgYWRqdXN0IHRoZSBjdXJyZW50IGluZGV4IHRvIG1hdGNoIHRoZSBtdXRhdGlvbnMuXG4gICAqXG4gICAqIEBwYXJhbSB7Y2hpbGRJdGVyYXRvcn0gY2FsbGJhY2sgSXRlcmF0b3IgcmVjZWl2ZXMgZWFjaCBub2RlIGFuZCBpbmRleC5cbiAgICpcbiAgICogQHJldHVybiB7ZmFsc2V8dW5kZWZpbmVkfSBSZXR1cm5zIGBmYWxzZWAgaWYgaXRlcmF0aW9uIHdhcyBicm9rZS5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogY29uc3Qgcm9vdCA9IHBvc3Rjc3MucGFyc2UoJ2EgeyBjb2xvcjogYmxhY2s7IHotaW5kZXg6IDEgfScpXG4gICAqIGNvbnN0IHJ1bGUgPSByb290LmZpcnN0XG4gICAqXG4gICAqIGZvciAoY29uc3QgZGVjbCBvZiBydWxlLm5vZGVzKSB7XG4gICAqICAgZGVjbC5jbG9uZUJlZm9yZSh7IHByb3A6ICctd2Via2l0LScgKyBkZWNsLnByb3AgfSlcbiAgICogICAvLyBDeWNsZSB3aWxsIGJlIGluZmluaXRlLCBiZWNhdXNlIGNsb25lQmVmb3JlIG1vdmVzIHRoZSBjdXJyZW50IG5vZGVcbiAgICogICAvLyB0byB0aGUgbmV4dCBpbmRleFxuICAgKiB9XG4gICAqXG4gICAqIHJ1bGUuZWFjaChkZWNsID0+IHtcbiAgICogICBkZWNsLmNsb25lQmVmb3JlKHsgcHJvcDogJy13ZWJraXQtJyArIGRlY2wucHJvcCB9KVxuICAgKiAgIC8vIFdpbGwgYmUgZXhlY3V0ZWQgb25seSBmb3IgY29sb3IgYW5kIHotaW5kZXhcbiAgICogfSlcbiAgICovXG4gIGVhY2ggKGNhbGxiYWNrKSB7XG4gICAgaWYgKCF0aGlzLmxhc3RFYWNoKSB0aGlzLmxhc3RFYWNoID0gMFxuICAgIGlmICghdGhpcy5pbmRleGVzKSB0aGlzLmluZGV4ZXMgPSB7IH1cblxuICAgIHRoaXMubGFzdEVhY2ggKz0gMVxuICAgIGxldCBpZCA9IHRoaXMubGFzdEVhY2hcbiAgICB0aGlzLmluZGV4ZXNbaWRdID0gMFxuXG4gICAgaWYgKCF0aGlzLm5vZGVzKSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgICBsZXQgaW5kZXgsIHJlc3VsdFxuICAgIHdoaWxlICh0aGlzLmluZGV4ZXNbaWRdIDwgdGhpcy5ub2Rlcy5sZW5ndGgpIHtcbiAgICAgIGluZGV4ID0gdGhpcy5pbmRleGVzW2lkXVxuICAgICAgcmVzdWx0ID0gY2FsbGJhY2sodGhpcy5ub2Rlc1tpbmRleF0sIGluZGV4KVxuICAgICAgaWYgKHJlc3VsdCA9PT0gZmFsc2UpIGJyZWFrXG5cbiAgICAgIHRoaXMuaW5kZXhlc1tpZF0gKz0gMVxuICAgIH1cblxuICAgIGRlbGV0ZSB0aGlzLmluZGV4ZXNbaWRdXG5cbiAgICByZXR1cm4gcmVzdWx0XG4gIH1cblxuICAvKipcbiAgICogVHJhdmVyc2VzIHRoZSBjb250YWluZXLigJlzIGRlc2NlbmRhbnQgbm9kZXMsIGNhbGxpbmcgY2FsbGJhY2tcbiAgICogZm9yIGVhY2ggbm9kZS5cbiAgICpcbiAgICogTGlrZSBjb250YWluZXIuZWFjaCgpLCB0aGlzIG1ldGhvZCBpcyBzYWZlIHRvIHVzZVxuICAgKiBpZiB5b3UgYXJlIG11dGF0aW5nIGFycmF5cyBkdXJpbmcgaXRlcmF0aW9uLlxuICAgKlxuICAgKiBJZiB5b3Ugb25seSBuZWVkIHRvIGl0ZXJhdGUgdGhyb3VnaCB0aGUgY29udGFpbmVy4oCZcyBpbW1lZGlhdGUgY2hpbGRyZW4sXG4gICAqIHVzZSB7QGxpbmsgQ29udGFpbmVyI2VhY2h9LlxuICAgKlxuICAgKiBAcGFyYW0ge2NoaWxkSXRlcmF0b3J9IGNhbGxiYWNrIEl0ZXJhdG9yIHJlY2VpdmVzIGVhY2ggbm9kZSBhbmQgaW5kZXguXG4gICAqXG4gICAqIEByZXR1cm4ge2ZhbHNlfHVuZGVmaW5lZH0gUmV0dXJucyBgZmFsc2VgIGlmIGl0ZXJhdGlvbiB3YXMgYnJva2UuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIHJvb3Qud2Fsayhub2RlID0+IHtcbiAgICogICAvLyBUcmF2ZXJzZXMgYWxsIGRlc2NlbmRhbnQgbm9kZXMuXG4gICAqIH0pXG4gICAqL1xuICB3YWxrIChjYWxsYmFjaykge1xuICAgIHJldHVybiB0aGlzLmVhY2goKGNoaWxkLCBpKSA9PiB7XG4gICAgICBsZXQgcmVzdWx0XG4gICAgICB0cnkge1xuICAgICAgICByZXN1bHQgPSBjYWxsYmFjayhjaGlsZCwgaSlcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgZS5wb3N0Y3NzTm9kZSA9IGNoaWxkXG4gICAgICAgIGlmIChlLnN0YWNrICYmIGNoaWxkLnNvdXJjZSAmJiAvXFxuXFxzezR9YXQgLy50ZXN0KGUuc3RhY2spKSB7XG4gICAgICAgICAgbGV0IHMgPSBjaGlsZC5zb3VyY2VcbiAgICAgICAgICBlLnN0YWNrID0gZS5zdGFjay5yZXBsYWNlKC9cXG5cXHN7NH1hdCAvLFxuICAgICAgICAgICAgYCQmJHsgcy5pbnB1dC5mcm9tIH06JHsgcy5zdGFydC5saW5lIH06JHsgcy5zdGFydC5jb2x1bW4gfSQmYClcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBlXG4gICAgICB9XG4gICAgICBpZiAocmVzdWx0ICE9PSBmYWxzZSAmJiBjaGlsZC53YWxrKSB7XG4gICAgICAgIHJlc3VsdCA9IGNoaWxkLndhbGsoY2FsbGJhY2spXG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0XG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmF2ZXJzZXMgdGhlIGNvbnRhaW5lcuKAmXMgZGVzY2VuZGFudCBub2RlcywgY2FsbGluZyBjYWxsYmFja1xuICAgKiBmb3IgZWFjaCBkZWNsYXJhdGlvbiBub2RlLlxuICAgKlxuICAgKiBJZiB5b3UgcGFzcyBhIGZpbHRlciwgaXRlcmF0aW9uIHdpbGwgb25seSBoYXBwZW4gb3ZlciBkZWNsYXJhdGlvbnNcbiAgICogd2l0aCBtYXRjaGluZyBwcm9wZXJ0aWVzLlxuICAgKlxuICAgKiBMaWtlIHtAbGluayBDb250YWluZXIjZWFjaH0sIHRoaXMgbWV0aG9kIGlzIHNhZmVcbiAgICogdG8gdXNlIGlmIHlvdSBhcmUgbXV0YXRpbmcgYXJyYXlzIGR1cmluZyBpdGVyYXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfFJlZ0V4cH0gW3Byb3BdICAgU3RyaW5nIG9yIHJlZ3VsYXIgZXhwcmVzc2lvblxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGZpbHRlciBkZWNsYXJhdGlvbnMgYnkgcHJvcGVydHkgbmFtZS5cbiAgICogQHBhcmFtIHtjaGlsZEl0ZXJhdG9yfSBjYWxsYmFjayBJdGVyYXRvciByZWNlaXZlcyBlYWNoIG5vZGUgYW5kIGluZGV4LlxuICAgKlxuICAgKiBAcmV0dXJuIHtmYWxzZXx1bmRlZmluZWR9IFJldHVybnMgYGZhbHNlYCBpZiBpdGVyYXRpb24gd2FzIGJyb2tlLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiByb290LndhbGtEZWNscyhkZWNsID0+IHtcbiAgICogICBjaGVja1Byb3BlcnR5U3VwcG9ydChkZWNsLnByb3ApXG4gICAqIH0pXG4gICAqXG4gICAqIHJvb3Qud2Fsa0RlY2xzKCdib3JkZXItcmFkaXVzJywgZGVjbCA9PiB7XG4gICAqICAgZGVjbC5yZW1vdmUoKVxuICAgKiB9KVxuICAgKlxuICAgKiByb290LndhbGtEZWNscygvXmJhY2tncm91bmQvLCBkZWNsID0+IHtcbiAgICogICBkZWNsLnZhbHVlID0gdGFrZUZpcnN0Q29sb3JGcm9tR3JhZGllbnQoZGVjbC52YWx1ZSlcbiAgICogfSlcbiAgICovXG4gIHdhbGtEZWNscyAocHJvcCwgY2FsbGJhY2spIHtcbiAgICBpZiAoIWNhbGxiYWNrKSB7XG4gICAgICBjYWxsYmFjayA9IHByb3BcbiAgICAgIHJldHVybiB0aGlzLndhbGsoKGNoaWxkLCBpKSA9PiB7XG4gICAgICAgIGlmIChjaGlsZC50eXBlID09PSAnZGVjbCcpIHtcbiAgICAgICAgICByZXR1cm4gY2FsbGJhY2soY2hpbGQsIGkpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfSBlbHNlIGlmIChwcm9wIGluc3RhbmNlb2YgUmVnRXhwKSB7XG4gICAgICByZXR1cm4gdGhpcy53YWxrKChjaGlsZCwgaSkgPT4ge1xuICAgICAgICBpZiAoY2hpbGQudHlwZSA9PT0gJ2RlY2wnICYmIHByb3AudGVzdChjaGlsZC5wcm9wKSkge1xuICAgICAgICAgIHJldHVybiBjYWxsYmFjayhjaGlsZCwgaSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMud2FsaygoY2hpbGQsIGkpID0+IHtcbiAgICAgICAgaWYgKGNoaWxkLnR5cGUgPT09ICdkZWNsJyAmJiBjaGlsZC5wcm9wID09PSBwcm9wKSB7XG4gICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGNoaWxkLCBpKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUcmF2ZXJzZXMgdGhlIGNvbnRhaW5lcuKAmXMgZGVzY2VuZGFudCBub2RlcywgY2FsbGluZyBjYWxsYmFja1xuICAgKiBmb3IgZWFjaCBydWxlIG5vZGUuXG4gICAqXG4gICAqIElmIHlvdSBwYXNzIGEgZmlsdGVyLCBpdGVyYXRpb24gd2lsbCBvbmx5IGhhcHBlbiBvdmVyIHJ1bGVzXG4gICAqIHdpdGggbWF0Y2hpbmcgc2VsZWN0b3JzLlxuICAgKlxuICAgKiBMaWtlIHtAbGluayBDb250YWluZXIjZWFjaH0sIHRoaXMgbWV0aG9kIGlzIHNhZmVcbiAgICogdG8gdXNlIGlmIHlvdSBhcmUgbXV0YXRpbmcgYXJyYXlzIGR1cmluZyBpdGVyYXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfFJlZ0V4cH0gW3NlbGVjdG9yXSBTdHJpbmcgb3IgcmVndWxhciBleHByZXNzaW9uXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBmaWx0ZXIgcnVsZXMgYnkgc2VsZWN0b3IuXG4gICAqIEBwYXJhbSB7Y2hpbGRJdGVyYXRvcn0gY2FsbGJhY2sgICBJdGVyYXRvciByZWNlaXZlcyBlYWNoIG5vZGUgYW5kIGluZGV4LlxuICAgKlxuICAgKiBAcmV0dXJuIHtmYWxzZXx1bmRlZmluZWR9IHJldHVybnMgYGZhbHNlYCBpZiBpdGVyYXRpb24gd2FzIGJyb2tlLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBjb25zdCBzZWxlY3RvcnMgPSBbXVxuICAgKiByb290LndhbGtSdWxlcyhydWxlID0+IHtcbiAgICogICBzZWxlY3RvcnMucHVzaChydWxlLnNlbGVjdG9yKVxuICAgKiB9KVxuICAgKiBjb25zb2xlLmxvZyhgWW91ciBDU1MgdXNlcyAkeyBzZWxlY3RvcnMubGVuZ3RoIH0gc2VsZWN0b3JzYClcbiAgICovXG4gIHdhbGtSdWxlcyAoc2VsZWN0b3IsIGNhbGxiYWNrKSB7XG4gICAgaWYgKCFjYWxsYmFjaykge1xuICAgICAgY2FsbGJhY2sgPSBzZWxlY3RvclxuXG4gICAgICByZXR1cm4gdGhpcy53YWxrKChjaGlsZCwgaSkgPT4ge1xuICAgICAgICBpZiAoY2hpbGQudHlwZSA9PT0gJ3J1bGUnKSB7XG4gICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGNoaWxkLCBpKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH0gZWxzZSBpZiAoc2VsZWN0b3IgaW5zdGFuY2VvZiBSZWdFeHApIHtcbiAgICAgIHJldHVybiB0aGlzLndhbGsoKGNoaWxkLCBpKSA9PiB7XG4gICAgICAgIGlmIChjaGlsZC50eXBlID09PSAncnVsZScgJiYgc2VsZWN0b3IudGVzdChjaGlsZC5zZWxlY3RvcikpIHtcbiAgICAgICAgICByZXR1cm4gY2FsbGJhY2soY2hpbGQsIGkpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLndhbGsoKGNoaWxkLCBpKSA9PiB7XG4gICAgICAgIGlmIChjaGlsZC50eXBlID09PSAncnVsZScgJiYgY2hpbGQuc2VsZWN0b3IgPT09IHNlbGVjdG9yKSB7XG4gICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGNoaWxkLCBpKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUcmF2ZXJzZXMgdGhlIGNvbnRhaW5lcuKAmXMgZGVzY2VuZGFudCBub2RlcywgY2FsbGluZyBjYWxsYmFja1xuICAgKiBmb3IgZWFjaCBhdC1ydWxlIG5vZGUuXG4gICAqXG4gICAqIElmIHlvdSBwYXNzIGEgZmlsdGVyLCBpdGVyYXRpb24gd2lsbCBvbmx5IGhhcHBlbiBvdmVyIGF0LXJ1bGVzXG4gICAqIHRoYXQgaGF2ZSBtYXRjaGluZyBuYW1lcy5cbiAgICpcbiAgICogTGlrZSB7QGxpbmsgQ29udGFpbmVyI2VhY2h9LCB0aGlzIG1ldGhvZCBpcyBzYWZlXG4gICAqIHRvIHVzZSBpZiB5b3UgYXJlIG11dGF0aW5nIGFycmF5cyBkdXJpbmcgaXRlcmF0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ3xSZWdFeHB9IFtuYW1lXSAgIFN0cmluZyBvciByZWd1bGFyIGV4cHJlc3Npb25cbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBmaWx0ZXIgYXQtcnVsZXMgYnkgbmFtZS5cbiAgICogQHBhcmFtIHtjaGlsZEl0ZXJhdG9yfSBjYWxsYmFjayBJdGVyYXRvciByZWNlaXZlcyBlYWNoIG5vZGUgYW5kIGluZGV4LlxuICAgKlxuICAgKiBAcmV0dXJuIHtmYWxzZXx1bmRlZmluZWR9IFJldHVybnMgYGZhbHNlYCBpZiBpdGVyYXRpb24gd2FzIGJyb2tlLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiByb290LndhbGtBdFJ1bGVzKHJ1bGUgPT4ge1xuICAgKiAgIGlmIChpc09sZChydWxlLm5hbWUpKSBydWxlLnJlbW92ZSgpXG4gICAqIH0pXG4gICAqXG4gICAqIGxldCBmaXJzdCA9IGZhbHNlXG4gICAqIHJvb3Qud2Fsa0F0UnVsZXMoJ2NoYXJzZXQnLCBydWxlID0+IHtcbiAgICogICBpZiAoIWZpcnN0KSB7XG4gICAqICAgICBmaXJzdCA9IHRydWVcbiAgICogICB9IGVsc2Uge1xuICAgKiAgICAgcnVsZS5yZW1vdmUoKVxuICAgKiAgIH1cbiAgICogfSlcbiAgICovXG4gIHdhbGtBdFJ1bGVzIChuYW1lLCBjYWxsYmFjaykge1xuICAgIGlmICghY2FsbGJhY2spIHtcbiAgICAgIGNhbGxiYWNrID0gbmFtZVxuICAgICAgcmV0dXJuIHRoaXMud2FsaygoY2hpbGQsIGkpID0+IHtcbiAgICAgICAgaWYgKGNoaWxkLnR5cGUgPT09ICdhdHJ1bGUnKSB7XG4gICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGNoaWxkLCBpKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH0gZWxzZSBpZiAobmFtZSBpbnN0YW5jZW9mIFJlZ0V4cCkge1xuICAgICAgcmV0dXJuIHRoaXMud2FsaygoY2hpbGQsIGkpID0+IHtcbiAgICAgICAgaWYgKGNoaWxkLnR5cGUgPT09ICdhdHJ1bGUnICYmIG5hbWUudGVzdChjaGlsZC5uYW1lKSkge1xuICAgICAgICAgIHJldHVybiBjYWxsYmFjayhjaGlsZCwgaSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMud2FsaygoY2hpbGQsIGkpID0+IHtcbiAgICAgICAgaWYgKGNoaWxkLnR5cGUgPT09ICdhdHJ1bGUnICYmIGNoaWxkLm5hbWUgPT09IG5hbWUpIHtcbiAgICAgICAgICByZXR1cm4gY2FsbGJhY2soY2hpbGQsIGkpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRyYXZlcnNlcyB0aGUgY29udGFpbmVy4oCZcyBkZXNjZW5kYW50IG5vZGVzLCBjYWxsaW5nIGNhbGxiYWNrXG4gICAqIGZvciBlYWNoIGNvbW1lbnQgbm9kZS5cbiAgICpcbiAgICogTGlrZSB7QGxpbmsgQ29udGFpbmVyI2VhY2h9LCB0aGlzIG1ldGhvZCBpcyBzYWZlXG4gICAqIHRvIHVzZSBpZiB5b3UgYXJlIG11dGF0aW5nIGFycmF5cyBkdXJpbmcgaXRlcmF0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge2NoaWxkSXRlcmF0b3J9IGNhbGxiYWNrIEl0ZXJhdG9yIHJlY2VpdmVzIGVhY2ggbm9kZSBhbmQgaW5kZXguXG4gICAqXG4gICAqIEByZXR1cm4ge2ZhbHNlfHVuZGVmaW5lZH0gUmV0dXJucyBgZmFsc2VgIGlmIGl0ZXJhdGlvbiB3YXMgYnJva2UuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIHJvb3Qud2Fsa0NvbW1lbnRzKGNvbW1lbnQgPT4ge1xuICAgKiAgIGNvbW1lbnQucmVtb3ZlKClcbiAgICogfSlcbiAgICovXG4gIHdhbGtDb21tZW50cyAoY2FsbGJhY2spIHtcbiAgICByZXR1cm4gdGhpcy53YWxrKChjaGlsZCwgaSkgPT4ge1xuICAgICAgaWYgKGNoaWxkLnR5cGUgPT09ICdjb21tZW50Jykge1xuICAgICAgICByZXR1cm4gY2FsbGJhY2soY2hpbGQsIGkpXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbnNlcnRzIG5ldyBub2RlcyB0byB0aGUgZW5kIG9mIHRoZSBjb250YWluZXIuXG4gICAqXG4gICAqIEBwYXJhbSB7Li4uKE5vZGV8b2JqZWN0fHN0cmluZ3xOb2RlW10pfSBjaGlsZHJlbiBOZXcgbm9kZXMuXG4gICAqXG4gICAqIEByZXR1cm4ge05vZGV9IFRoaXMgbm9kZSBmb3IgbWV0aG9kcyBjaGFpbi5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogY29uc3QgZGVjbDEgPSBwb3N0Y3NzLmRlY2woeyBwcm9wOiAnY29sb3InLCB2YWx1ZTogJ2JsYWNrJyB9KVxuICAgKiBjb25zdCBkZWNsMiA9IHBvc3Rjc3MuZGVjbCh7IHByb3A6ICdiYWNrZ3JvdW5kLWNvbG9yJywgdmFsdWU6ICd3aGl0ZScgfSlcbiAgICogcnVsZS5hcHBlbmQoZGVjbDEsIGRlY2wyKVxuICAgKlxuICAgKiByb290LmFwcGVuZCh7IG5hbWU6ICdjaGFyc2V0JywgcGFyYW1zOiAnXCJVVEYtOFwiJyB9KSAgLy8gYXQtcnVsZVxuICAgKiByb290LmFwcGVuZCh7IHNlbGVjdG9yOiAnYScgfSkgICAgICAgICAgICAgICAgICAgICAgIC8vIHJ1bGVcbiAgICogcnVsZS5hcHBlbmQoeyBwcm9wOiAnY29sb3InLCB2YWx1ZTogJ2JsYWNrJyB9KSAgICAgICAvLyBkZWNsYXJhdGlvblxuICAgKiBydWxlLmFwcGVuZCh7IHRleHQ6ICdDb21tZW50JyB9KSAgICAgICAgICAgICAgICAgICAgIC8vIGNvbW1lbnRcbiAgICpcbiAgICogcm9vdC5hcHBlbmQoJ2Ege30nKVxuICAgKiByb290LmZpcnN0LmFwcGVuZCgnY29sb3I6IGJsYWNrOyB6LWluZGV4OiAxJylcbiAgICovXG4gIGFwcGVuZCAoLi4uY2hpbGRyZW4pIHtcbiAgICBmb3IgKGxldCBjaGlsZCBvZiBjaGlsZHJlbikge1xuICAgICAgbGV0IG5vZGVzID0gdGhpcy5ub3JtYWxpemUoY2hpbGQsIHRoaXMubGFzdClcbiAgICAgIGZvciAobGV0IG5vZGUgb2Ygbm9kZXMpIHRoaXMubm9kZXMucHVzaChub2RlKVxuICAgIH1cbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLyoqXG4gICAqIEluc2VydHMgbmV3IG5vZGVzIHRvIHRoZSBzdGFydCBvZiB0aGUgY29udGFpbmVyLlxuICAgKlxuICAgKiBAcGFyYW0gey4uLihOb2RlfG9iamVjdHxzdHJpbmd8Tm9kZVtdKX0gY2hpbGRyZW4gTmV3IG5vZGVzLlxuICAgKlxuICAgKiBAcmV0dXJuIHtOb2RlfSBUaGlzIG5vZGUgZm9yIG1ldGhvZHMgY2hhaW4uXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGNvbnN0IGRlY2wxID0gcG9zdGNzcy5kZWNsKHsgcHJvcDogJ2NvbG9yJywgdmFsdWU6ICdibGFjaycgfSlcbiAgICogY29uc3QgZGVjbDIgPSBwb3N0Y3NzLmRlY2woeyBwcm9wOiAnYmFja2dyb3VuZC1jb2xvcicsIHZhbHVlOiAnd2hpdGUnIH0pXG4gICAqIHJ1bGUucHJlcGVuZChkZWNsMSwgZGVjbDIpXG4gICAqXG4gICAqIHJvb3QuYXBwZW5kKHsgbmFtZTogJ2NoYXJzZXQnLCBwYXJhbXM6ICdcIlVURi04XCInIH0pICAvLyBhdC1ydWxlXG4gICAqIHJvb3QuYXBwZW5kKHsgc2VsZWN0b3I6ICdhJyB9KSAgICAgICAgICAgICAgICAgICAgICAgLy8gcnVsZVxuICAgKiBydWxlLmFwcGVuZCh7IHByb3A6ICdjb2xvcicsIHZhbHVlOiAnYmxhY2snIH0pICAgICAgIC8vIGRlY2xhcmF0aW9uXG4gICAqIHJ1bGUuYXBwZW5kKHsgdGV4dDogJ0NvbW1lbnQnIH0pICAgICAgICAgICAgICAgICAgICAgLy8gY29tbWVudFxuICAgKlxuICAgKiByb290LmFwcGVuZCgnYSB7fScpXG4gICAqIHJvb3QuZmlyc3QuYXBwZW5kKCdjb2xvcjogYmxhY2s7IHotaW5kZXg6IDEnKVxuICAgKi9cbiAgcHJlcGVuZCAoLi4uY2hpbGRyZW4pIHtcbiAgICBjaGlsZHJlbiA9IGNoaWxkcmVuLnJldmVyc2UoKVxuICAgIGZvciAobGV0IGNoaWxkIG9mIGNoaWxkcmVuKSB7XG4gICAgICBsZXQgbm9kZXMgPSB0aGlzLm5vcm1hbGl6ZShjaGlsZCwgdGhpcy5maXJzdCwgJ3ByZXBlbmQnKS5yZXZlcnNlKClcbiAgICAgIGZvciAobGV0IG5vZGUgb2Ygbm9kZXMpIHRoaXMubm9kZXMudW5zaGlmdChub2RlKVxuICAgICAgZm9yIChsZXQgaWQgaW4gdGhpcy5pbmRleGVzKSB7XG4gICAgICAgIHRoaXMuaW5kZXhlc1tpZF0gPSB0aGlzLmluZGV4ZXNbaWRdICsgbm9kZXMubGVuZ3RoXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICBjbGVhblJhd3MgKGtlZXBCZXR3ZWVuKSB7XG4gICAgc3VwZXIuY2xlYW5SYXdzKGtlZXBCZXR3ZWVuKVxuICAgIGlmICh0aGlzLm5vZGVzKSB7XG4gICAgICBmb3IgKGxldCBub2RlIG9mIHRoaXMubm9kZXMpIG5vZGUuY2xlYW5SYXdzKGtlZXBCZXR3ZWVuKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJbnNlcnQgbmV3IG5vZGUgYmVmb3JlIG9sZCBub2RlIHdpdGhpbiB0aGUgY29udGFpbmVyLlxuICAgKlxuICAgKiBAcGFyYW0ge05vZGV8bnVtYmVyfSBleGlzdCAgICAgICAgICAgICBDaGlsZCBvciBjaGlsZOKAmXMgaW5kZXguXG4gICAqIEBwYXJhbSB7Tm9kZXxvYmplY3R8c3RyaW5nfE5vZGVbXX0gYWRkIE5ldyBub2RlLlxuICAgKlxuICAgKiBAcmV0dXJuIHtOb2RlfSBUaGlzIG5vZGUgZm9yIG1ldGhvZHMgY2hhaW4uXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIHJ1bGUuaW5zZXJ0QmVmb3JlKGRlY2wsIGRlY2wuY2xvbmUoeyBwcm9wOiAnLXdlYmtpdC0nICsgZGVjbC5wcm9wIH0pKVxuICAgKi9cbiAgaW5zZXJ0QmVmb3JlIChleGlzdCwgYWRkKSB7XG4gICAgZXhpc3QgPSB0aGlzLmluZGV4KGV4aXN0KVxuXG4gICAgbGV0IHR5cGUgPSBleGlzdCA9PT0gMCA/ICdwcmVwZW5kJyA6IGZhbHNlXG4gICAgbGV0IG5vZGVzID0gdGhpcy5ub3JtYWxpemUoYWRkLCB0aGlzLm5vZGVzW2V4aXN0XSwgdHlwZSkucmV2ZXJzZSgpXG4gICAgZm9yIChsZXQgbm9kZSBvZiBub2RlcykgdGhpcy5ub2Rlcy5zcGxpY2UoZXhpc3QsIDAsIG5vZGUpXG5cbiAgICBsZXQgaW5kZXhcbiAgICBmb3IgKGxldCBpZCBpbiB0aGlzLmluZGV4ZXMpIHtcbiAgICAgIGluZGV4ID0gdGhpcy5pbmRleGVzW2lkXVxuICAgICAgaWYgKGV4aXN0IDw9IGluZGV4KSB7XG4gICAgICAgIHRoaXMuaW5kZXhlc1tpZF0gPSBpbmRleCArIG5vZGVzLmxlbmd0aFxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvKipcbiAgICogSW5zZXJ0IG5ldyBub2RlIGFmdGVyIG9sZCBub2RlIHdpdGhpbiB0aGUgY29udGFpbmVyLlxuICAgKlxuICAgKiBAcGFyYW0ge05vZGV8bnVtYmVyfSBleGlzdCAgICAgICAgICAgICBDaGlsZCBvciBjaGlsZOKAmXMgaW5kZXguXG4gICAqIEBwYXJhbSB7Tm9kZXxvYmplY3R8c3RyaW5nfE5vZGVbXX0gYWRkIE5ldyBub2RlLlxuICAgKlxuICAgKiBAcmV0dXJuIHtOb2RlfSBUaGlzIG5vZGUgZm9yIG1ldGhvZHMgY2hhaW4uXG4gICAqL1xuICBpbnNlcnRBZnRlciAoZXhpc3QsIGFkZCkge1xuICAgIGV4aXN0ID0gdGhpcy5pbmRleChleGlzdClcblxuICAgIGxldCBub2RlcyA9IHRoaXMubm9ybWFsaXplKGFkZCwgdGhpcy5ub2Rlc1tleGlzdF0pLnJldmVyc2UoKVxuICAgIGZvciAobGV0IG5vZGUgb2Ygbm9kZXMpIHRoaXMubm9kZXMuc3BsaWNlKGV4aXN0ICsgMSwgMCwgbm9kZSlcblxuICAgIGxldCBpbmRleFxuICAgIGZvciAobGV0IGlkIGluIHRoaXMuaW5kZXhlcykge1xuICAgICAgaW5kZXggPSB0aGlzLmluZGV4ZXNbaWRdXG4gICAgICBpZiAoZXhpc3QgPCBpbmRleCkge1xuICAgICAgICB0aGlzLmluZGV4ZXNbaWRdID0gaW5kZXggKyBub2Rlcy5sZW5ndGhcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgbm9kZSBmcm9tIHRoZSBjb250YWluZXIgYW5kIGNsZWFucyB0aGUgcGFyZW50IHByb3BlcnRpZXNcbiAgICogZnJvbSB0aGUgbm9kZSBhbmQgaXRzIGNoaWxkcmVuLlxuICAgKlxuICAgKiBAcGFyYW0ge05vZGV8bnVtYmVyfSBjaGlsZCBDaGlsZCBvciBjaGlsZOKAmXMgaW5kZXguXG4gICAqXG4gICAqIEByZXR1cm4ge05vZGV9IFRoaXMgbm9kZSBmb3IgbWV0aG9kcyBjaGFpblxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBydWxlLm5vZGVzLmxlbmd0aCAgLy89PiA1XG4gICAqIHJ1bGUucmVtb3ZlQ2hpbGQoZGVjbClcbiAgICogcnVsZS5ub2Rlcy5sZW5ndGggIC8vPT4gNFxuICAgKiBkZWNsLnBhcmVudCAgICAgICAgLy89PiB1bmRlZmluZWRcbiAgICovXG4gIHJlbW92ZUNoaWxkIChjaGlsZCkge1xuICAgIGNoaWxkID0gdGhpcy5pbmRleChjaGlsZClcbiAgICB0aGlzLm5vZGVzW2NoaWxkXS5wYXJlbnQgPSB1bmRlZmluZWRcbiAgICB0aGlzLm5vZGVzLnNwbGljZShjaGlsZCwgMSlcblxuICAgIGxldCBpbmRleFxuICAgIGZvciAobGV0IGlkIGluIHRoaXMuaW5kZXhlcykge1xuICAgICAgaW5kZXggPSB0aGlzLmluZGV4ZXNbaWRdXG4gICAgICBpZiAoaW5kZXggPj0gY2hpbGQpIHtcbiAgICAgICAgdGhpcy5pbmRleGVzW2lkXSA9IGluZGV4IC0gMVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyBhbGwgY2hpbGRyZW4gZnJvbSB0aGUgY29udGFpbmVyXG4gICAqIGFuZCBjbGVhbnMgdGhlaXIgcGFyZW50IHByb3BlcnRpZXMuXG4gICAqXG4gICAqIEByZXR1cm4ge05vZGV9IFRoaXMgbm9kZSBmb3IgbWV0aG9kcyBjaGFpbi5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogcnVsZS5yZW1vdmVBbGwoKVxuICAgKiBydWxlLm5vZGVzLmxlbmd0aCAvLz0+IDBcbiAgICovXG4gIHJlbW92ZUFsbCAoKSB7XG4gICAgZm9yIChsZXQgbm9kZSBvZiB0aGlzLm5vZGVzKSBub2RlLnBhcmVudCA9IHVuZGVmaW5lZFxuICAgIHRoaXMubm9kZXMgPSBbXVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvKipcbiAgICogUGFzc2VzIGFsbCBkZWNsYXJhdGlvbiB2YWx1ZXMgd2l0aGluIHRoZSBjb250YWluZXIgdGhhdCBtYXRjaCBwYXR0ZXJuXG4gICAqIHRocm91Z2ggY2FsbGJhY2ssIHJlcGxhY2luZyB0aG9zZSB2YWx1ZXMgd2l0aCB0aGUgcmV0dXJuZWQgcmVzdWx0XG4gICAqIG9mIGNhbGxiYWNrLlxuICAgKlxuICAgKiBUaGlzIG1ldGhvZCBpcyB1c2VmdWwgaWYgeW91IGFyZSB1c2luZyBhIGN1c3RvbSB1bml0IG9yIGZ1bmN0aW9uXG4gICAqIGFuZCBuZWVkIHRvIGl0ZXJhdGUgdGhyb3VnaCBhbGwgdmFsdWVzLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ3xSZWdFeHB9IHBhdHRlcm4gICAgICBSZXBsYWNlIHBhdHRlcm4uXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBvcHRzICAgICAgICAgICAgICAgIE9wdGlvbnMgdG8gc3BlZWQgdXAgdGhlIHNlYXJjaC5cbiAgICogQHBhcmFtIHtzdHJpbmd8c3RyaW5nW119IG9wdHMucHJvcHMgQW4gYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLmZhc3QgICAgICAgICAgIFN0cmluZyB0aGF04oCZcyB1c2VkIHRvIG5hcnJvdyBkb3duXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcyBhbmQgc3BlZWQgdXAgdGhlIHJlZ2V4cCBzZWFyY2guXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb258c3RyaW5nfSBjYWxsYmFjayAgIFN0cmluZyB0byByZXBsYWNlIHBhdHRlcm4gb3IgY2FsbGJhY2tcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCByZXR1cm5zIGEgbmV3IHZhbHVlLiBUaGUgY2FsbGJhY2tcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lsbCByZWNlaXZlIHRoZSBzYW1lIGFyZ3VtZW50c1xuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcyB0aG9zZSBwYXNzZWQgdG8gYSBmdW5jdGlvbiBwYXJhbWV0ZXJcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgYFN0cmluZyNyZXBsYWNlYC5cbiAgICpcbiAgICogQHJldHVybiB7Tm9kZX0gVGhpcyBub2RlIGZvciBtZXRob2RzIGNoYWluLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiByb290LnJlcGxhY2VWYWx1ZXMoL1xcZCtyZW0vLCB7IGZhc3Q6ICdyZW0nIH0sIHN0cmluZyA9PiB7XG4gICAqICAgcmV0dXJuIDE1ICogcGFyc2VJbnQoc3RyaW5nKSArICdweCdcbiAgICogfSlcbiAgICovXG4gIHJlcGxhY2VWYWx1ZXMgKHBhdHRlcm4sIG9wdHMsIGNhbGxiYWNrKSB7XG4gICAgaWYgKCFjYWxsYmFjaykge1xuICAgICAgY2FsbGJhY2sgPSBvcHRzXG4gICAgICBvcHRzID0geyB9XG4gICAgfVxuXG4gICAgdGhpcy53YWxrRGVjbHMoZGVjbCA9PiB7XG4gICAgICBpZiAob3B0cy5wcm9wcyAmJiBvcHRzLnByb3BzLmluZGV4T2YoZGVjbC5wcm9wKSA9PT0gLTEpIHJldHVyblxuICAgICAgaWYgKG9wdHMuZmFzdCAmJiBkZWNsLnZhbHVlLmluZGV4T2Yob3B0cy5mYXN0KSA9PT0gLTEpIHJldHVyblxuXG4gICAgICBkZWNsLnZhbHVlID0gZGVjbC52YWx1ZS5yZXBsYWNlKHBhdHRlcm4sIGNhbGxiYWNrKVxuICAgIH0pXG5cbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYHRydWVgIGlmIGNhbGxiYWNrIHJldHVybnMgYHRydWVgXG4gICAqIGZvciBhbGwgb2YgdGhlIGNvbnRhaW5lcuKAmXMgY2hpbGRyZW4uXG4gICAqXG4gICAqIEBwYXJhbSB7Y2hpbGRDb25kaXRpb259IGNvbmRpdGlvbiBJdGVyYXRvciByZXR1cm5zIHRydWUgb3IgZmFsc2UuXG4gICAqXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59IElzIGV2ZXJ5IGNoaWxkIHBhc3MgY29uZGl0aW9uLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBjb25zdCBub1ByZWZpeGVzID0gcnVsZS5ldmVyeShpID0+IGkucHJvcFswXSAhPT0gJy0nKVxuICAgKi9cbiAgZXZlcnkgKGNvbmRpdGlvbikge1xuICAgIHJldHVybiB0aGlzLm5vZGVzLmV2ZXJ5KGNvbmRpdGlvbilcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGB0cnVlYCBpZiBjYWxsYmFjayByZXR1cm5zIGB0cnVlYCBmb3IgKGF0IGxlYXN0KSBvbmVcbiAgICogb2YgdGhlIGNvbnRhaW5lcuKAmXMgY2hpbGRyZW4uXG4gICAqXG4gICAqIEBwYXJhbSB7Y2hpbGRDb25kaXRpb259IGNvbmRpdGlvbiBJdGVyYXRvciByZXR1cm5zIHRydWUgb3IgZmFsc2UuXG4gICAqXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59IElzIHNvbWUgY2hpbGQgcGFzcyBjb25kaXRpb24uXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGNvbnN0IGhhc1ByZWZpeCA9IHJ1bGUuc29tZShpID0+IGkucHJvcFswXSA9PT0gJy0nKVxuICAgKi9cbiAgc29tZSAoY29uZGl0aW9uKSB7XG4gICAgcmV0dXJuIHRoaXMubm9kZXMuc29tZShjb25kaXRpb24pXG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIGBjaGlsZGDigJlzIGluZGV4IHdpdGhpbiB0aGUge0BsaW5rIENvbnRhaW5lciNub2Rlc30gYXJyYXkuXG4gICAqXG4gICAqIEBwYXJhbSB7Tm9kZX0gY2hpbGQgQ2hpbGQgb2YgdGhlIGN1cnJlbnQgY29udGFpbmVyLlxuICAgKlxuICAgKiBAcmV0dXJuIHtudW1iZXJ9IENoaWxkIGluZGV4LlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBydWxlLmluZGV4KCBydWxlLm5vZGVzWzJdICkgLy89PiAyXG4gICAqL1xuICBpbmRleCAoY2hpbGQpIHtcbiAgICBpZiAodHlwZW9mIGNoaWxkID09PSAnbnVtYmVyJykge1xuICAgICAgcmV0dXJuIGNoaWxkXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLm5vZGVzLmluZGV4T2YoY2hpbGQpXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBjb250YWluZXLigJlzIGZpcnN0IGNoaWxkLlxuICAgKlxuICAgKiBAdHlwZSB7Tm9kZX1cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogcnVsZS5maXJzdCA9PT0gcnVsZXMubm9kZXNbMF1cbiAgICovXG4gIGdldCBmaXJzdCAoKSB7XG4gICAgaWYgKCF0aGlzLm5vZGVzKSByZXR1cm4gdW5kZWZpbmVkXG4gICAgcmV0dXJuIHRoaXMubm9kZXNbMF1cbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgY29udGFpbmVy4oCZcyBsYXN0IGNoaWxkLlxuICAgKlxuICAgKiBAdHlwZSB7Tm9kZX1cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogcnVsZS5sYXN0ID09PSBydWxlLm5vZGVzW3J1bGUubm9kZXMubGVuZ3RoIC0gMV1cbiAgICovXG4gIGdldCBsYXN0ICgpIHtcbiAgICBpZiAoIXRoaXMubm9kZXMpIHJldHVybiB1bmRlZmluZWRcbiAgICByZXR1cm4gdGhpcy5ub2Rlc1t0aGlzLm5vZGVzLmxlbmd0aCAtIDFdXG4gIH1cblxuICBub3JtYWxpemUgKG5vZGVzLCBzYW1wbGUpIHtcbiAgICBpZiAodHlwZW9mIG5vZGVzID09PSAnc3RyaW5nJykge1xuICAgICAgbGV0IHBhcnNlID0gcmVxdWlyZSgnLi9wYXJzZScpXG4gICAgICBub2RlcyA9IGNsZWFuU291cmNlKHBhcnNlKG5vZGVzKS5ub2RlcylcbiAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkobm9kZXMpKSB7XG4gICAgICBub2RlcyA9IG5vZGVzLnNsaWNlKDApXG4gICAgICBmb3IgKGxldCBpIG9mIG5vZGVzKSB7XG4gICAgICAgIGlmIChpLnBhcmVudCkgaS5wYXJlbnQucmVtb3ZlQ2hpbGQoaSwgJ2lnbm9yZScpXG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChub2Rlcy50eXBlID09PSAncm9vdCcpIHtcbiAgICAgIG5vZGVzID0gbm9kZXMubm9kZXMuc2xpY2UoMClcbiAgICAgIGZvciAobGV0IGkgb2Ygbm9kZXMpIHtcbiAgICAgICAgaWYgKGkucGFyZW50KSBpLnBhcmVudC5yZW1vdmVDaGlsZChpLCAnaWdub3JlJylcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKG5vZGVzLnR5cGUpIHtcbiAgICAgIG5vZGVzID0gW25vZGVzXVxuICAgIH0gZWxzZSBpZiAobm9kZXMucHJvcCkge1xuICAgICAgaWYgKHR5cGVvZiBub2Rlcy52YWx1ZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdWYWx1ZSBmaWVsZCBpcyBtaXNzZWQgaW4gbm9kZSBjcmVhdGlvbicpXG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBub2Rlcy52YWx1ZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgbm9kZXMudmFsdWUgPSBTdHJpbmcobm9kZXMudmFsdWUpXG4gICAgICB9XG4gICAgICBub2RlcyA9IFtuZXcgRGVjbGFyYXRpb24obm9kZXMpXVxuICAgIH0gZWxzZSBpZiAobm9kZXMuc2VsZWN0b3IpIHtcbiAgICAgIGxldCBSdWxlID0gcmVxdWlyZSgnLi9ydWxlJylcbiAgICAgIG5vZGVzID0gW25ldyBSdWxlKG5vZGVzKV1cbiAgICB9IGVsc2UgaWYgKG5vZGVzLm5hbWUpIHtcbiAgICAgIGxldCBBdFJ1bGUgPSByZXF1aXJlKCcuL2F0LXJ1bGUnKVxuICAgICAgbm9kZXMgPSBbbmV3IEF0UnVsZShub2RlcyldXG4gICAgfSBlbHNlIGlmIChub2Rlcy50ZXh0KSB7XG4gICAgICBub2RlcyA9IFtuZXcgQ29tbWVudChub2RlcyldXG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biBub2RlIHR5cGUgaW4gbm9kZSBjcmVhdGlvbicpXG4gICAgfVxuXG4gICAgbGV0IHByb2Nlc3NlZCA9IG5vZGVzLm1hcChpID0+IHtcbiAgICAgIGlmIChpLnBhcmVudCkgaS5wYXJlbnQucmVtb3ZlQ2hpbGQoaSlcbiAgICAgIGlmICh0eXBlb2YgaS5yYXdzLmJlZm9yZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgaWYgKHNhbXBsZSAmJiB0eXBlb2Ygc2FtcGxlLnJhd3MuYmVmb3JlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgIGkucmF3cy5iZWZvcmUgPSBzYW1wbGUucmF3cy5iZWZvcmUucmVwbGFjZSgvW15cXHNdL2csICcnKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpLnBhcmVudCA9IHRoaXNcbiAgICAgIHJldHVybiBpXG4gICAgfSlcblxuICAgIHJldHVybiBwcm9jZXNzZWRcbiAgfVxuXG4gIC8qKlxuICAgKiBAbWVtYmVyb2YgQ29udGFpbmVyI1xuICAgKiBAbWVtYmVyIHtOb2RlW119IG5vZGVzIEFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIGNvbnRhaW5lcuKAmXMgY2hpbGRyZW4uXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGNvbnN0IHJvb3QgPSBwb3N0Y3NzLnBhcnNlKCdhIHsgY29sb3I6IGJsYWNrIH0nKVxuICAgKiByb290Lm5vZGVzLmxlbmd0aCAgICAgICAgICAgLy89PiAxXG4gICAqIHJvb3Qubm9kZXNbMF0uc2VsZWN0b3IgICAgICAvLz0+ICdhJ1xuICAgKiByb290Lm5vZGVzWzBdLm5vZGVzWzBdLnByb3AgLy89PiAnY29sb3InXG4gICAqL1xufVxuXG5leHBvcnQgZGVmYXVsdCBDb250YWluZXJcblxuLyoqXG4gKiBAY2FsbGJhY2sgY2hpbGRDb25kaXRpb25cbiAqIEBwYXJhbSB7Tm9kZX0gbm9kZSAgICBDb250YWluZXIgY2hpbGQuXG4gKiBAcGFyYW0ge251bWJlcn0gaW5kZXggQ2hpbGQgaW5kZXguXG4gKiBAcGFyYW0ge05vZGVbXX0gbm9kZXMgQWxsIGNvbnRhaW5lciBjaGlsZHJlbi5cbiAqIEByZXR1cm4ge2Jvb2xlYW59XG4gKi9cblxuLyoqXG4gKiBAY2FsbGJhY2sgY2hpbGRJdGVyYXRvclxuICogQHBhcmFtIHtOb2RlfSBub2RlICAgIENvbnRhaW5lciBjaGlsZC5cbiAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleCBDaGlsZCBpbmRleC5cbiAqIEByZXR1cm4ge2ZhbHNlfHVuZGVmaW5lZH0gUmV0dXJuaW5nIGBmYWxzZWAgd2lsbCBicmVhayBpdGVyYXRpb24uXG4gKi9cbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _container = require('./container');\n\nvar _container2 = _interopRequireDefault(_container);\n\nvar _list = require('./list');\n\nvar _list2 = _interopRequireDefault(_list);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/**\n * Represents a CSS rule: a selector followed by a declaration block.\n *\n * @extends Container\n *\n * @example\n * const root = postcss.parse('a{}')\n * const rule = root.first\n * rule.type //=> 'rule'\n * rule.toString() //=> 'a{}'\n */\nvar Rule = function (_Container) {\n _inherits(Rule, _Container);\n\n function Rule(defaults) {\n _classCallCheck(this, Rule);\n\n var _this = _possibleConstructorReturn(this, _Container.call(this, defaults));\n\n _this.type = 'rule';\n if (!_this.nodes) _this.nodes = [];\n return _this;\n }\n\n /**\n * An array containing the rule’s individual selectors.\n * Groups of selectors are split at commas.\n *\n * @type {string[]}\n *\n * @example\n * const root = postcss.parse('a, b { }')\n * const rule = root.first\n *\n * rule.selector //=> 'a, b'\n * rule.selectors //=> ['a', 'b']\n *\n * rule.selectors = ['a', 'strong']\n * rule.selector //=> 'a, strong'\n */\n\n\n _createClass(Rule, [{\n key: 'selectors',\n get: function get() {\n return _list2.default.comma(this.selector);\n },\n set: function set(values) {\n var match = this.selector ? this.selector.match(/,\\s*/) : null;\n var sep = match ? match[0] : ',' + this.raw('between', 'beforeOpen');\n this.selector = values.join(sep);\n }\n\n /**\n * @memberof Rule#\n * @member {string} selector The rule’s full selector represented\n * as a string.\n *\n * @example\n * const root = postcss.parse('a, b { }')\n * const rule = root.first\n * rule.selector //=> 'a, b'\n */\n\n /**\n * @memberof Rule#\n * @member {object} raws Information to generate byte-to-byte equal\n * node string as it was in the origin input.\n *\n * Every parser saves its own properties,\n * but the default CSS parser uses:\n *\n * * `before`: the space symbols before the node. It also stores `*`\n * and `_` symbols before the declaration (IE hack).\n * * `after`: the space symbols after the last child of the node\n * to the end of the node.\n * * `between`: the symbols between the property and value\n * for declarations, selector and `{` for rules, or last parameter\n * and `{` for at-rules.\n * * `semicolon`: contains `true` if the last child has\n * an (optional) semicolon.\n * * `ownSemicolon`: contains `true` if there is semicolon after rule.\n *\n * PostCSS cleans selectors from comments and extra spaces,\n * but it stores origin content in raws properties.\n * As such, if you don’t change a declaration’s value,\n * PostCSS will use the raw value with comments.\n *\n * @example\n * const root = postcss.parse('a {\\n color:black\\n}')\n * root.first.first.raws //=> { before: '', between: ' ', after: '\\n' }\n */\n\n }]);\n\n return Rule;\n}(_container2.default);\n\nexports.default = Rule;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJ1bGUuZXM2Il0sIm5hbWVzIjpbIlJ1bGUiLCJkZWZhdWx0cyIsInR5cGUiLCJub2RlcyIsImxpc3QiLCJjb21tYSIsInNlbGVjdG9yIiwidmFsdWVzIiwibWF0Y2giLCJzZXAiLCJyYXciLCJqb2luIiwiQ29udGFpbmVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTs7OztBQUNBOzs7Ozs7Ozs7Ozs7QUFFQTs7Ozs7Ozs7Ozs7SUFXTUEsSTs7O0FBQ0osZ0JBQWFDLFFBQWIsRUFBdUI7QUFBQTs7QUFBQSxpREFDckIsc0JBQU1BLFFBQU4sQ0FEcUI7O0FBRXJCLFVBQUtDLElBQUwsR0FBWSxNQUFaO0FBQ0EsUUFBSSxDQUFDLE1BQUtDLEtBQVYsRUFBaUIsTUFBS0EsS0FBTCxHQUFhLEVBQWI7QUFISTtBQUl0Qjs7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7d0JBZ0JpQjtBQUNmLGFBQU9DLGVBQUtDLEtBQUwsQ0FBVyxLQUFLQyxRQUFoQixDQUFQO0FBQ0QsSztzQkFFY0MsTSxFQUFRO0FBQ3JCLFVBQUlDLFFBQVEsS0FBS0YsUUFBTCxHQUFnQixLQUFLQSxRQUFMLENBQWNFLEtBQWQsQ0FBb0IsTUFBcEIsQ0FBaEIsR0FBOEMsSUFBMUQ7QUFDQSxVQUFJQyxNQUFNRCxRQUFRQSxNQUFNLENBQU4sQ0FBUixHQUFtQixNQUFNLEtBQUtFLEdBQUwsQ0FBUyxTQUFULEVBQW9CLFlBQXBCLENBQW5DO0FBQ0EsV0FBS0osUUFBTCxHQUFnQkMsT0FBT0ksSUFBUCxDQUFZRixHQUFaLENBQWhCO0FBQ0Q7O0FBRUQ7Ozs7Ozs7Ozs7O0FBV0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBNUNpQkcsbUI7O2tCQTBFSlosSSIsImZpbGUiOiJydWxlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IENvbnRhaW5lciBmcm9tICcuL2NvbnRhaW5lcidcbmltcG9ydCBsaXN0IGZyb20gJy4vbGlzdCdcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgQ1NTIHJ1bGU6IGEgc2VsZWN0b3IgZm9sbG93ZWQgYnkgYSBkZWNsYXJhdGlvbiBibG9jay5cbiAqXG4gKiBAZXh0ZW5kcyBDb250YWluZXJcbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3Qgcm9vdCA9IHBvc3Rjc3MucGFyc2UoJ2F7fScpXG4gKiBjb25zdCBydWxlID0gcm9vdC5maXJzdFxuICogcnVsZS50eXBlICAgICAgIC8vPT4gJ3J1bGUnXG4gKiBydWxlLnRvU3RyaW5nKCkgLy89PiAnYXt9J1xuICovXG5jbGFzcyBSdWxlIGV4dGVuZHMgQ29udGFpbmVyIHtcbiAgY29uc3RydWN0b3IgKGRlZmF1bHRzKSB7XG4gICAgc3VwZXIoZGVmYXVsdHMpXG4gICAgdGhpcy50eXBlID0gJ3J1bGUnXG4gICAgaWYgKCF0aGlzLm5vZGVzKSB0aGlzLm5vZGVzID0gW11cbiAgfVxuXG4gIC8qKlxuICAgKiBBbiBhcnJheSBjb250YWluaW5nIHRoZSBydWxl4oCZcyBpbmRpdmlkdWFsIHNlbGVjdG9ycy5cbiAgICogR3JvdXBzIG9mIHNlbGVjdG9ycyBhcmUgc3BsaXQgYXQgY29tbWFzLlxuICAgKlxuICAgKiBAdHlwZSB7c3RyaW5nW119XG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGNvbnN0IHJvb3QgPSBwb3N0Y3NzLnBhcnNlKCdhLCBiIHsgfScpXG4gICAqIGNvbnN0IHJ1bGUgPSByb290LmZpcnN0XG4gICAqXG4gICAqIHJ1bGUuc2VsZWN0b3IgIC8vPT4gJ2EsIGInXG4gICAqIHJ1bGUuc2VsZWN0b3JzIC8vPT4gWydhJywgJ2InXVxuICAgKlxuICAgKiBydWxlLnNlbGVjdG9ycyA9IFsnYScsICdzdHJvbmcnXVxuICAgKiBydWxlLnNlbGVjdG9yIC8vPT4gJ2EsIHN0cm9uZydcbiAgICovXG4gIGdldCBzZWxlY3RvcnMgKCkge1xuICAgIHJldHVybiBsaXN0LmNvbW1hKHRoaXMuc2VsZWN0b3IpXG4gIH1cblxuICBzZXQgc2VsZWN0b3JzICh2YWx1ZXMpIHtcbiAgICBsZXQgbWF0Y2ggPSB0aGlzLnNlbGVjdG9yID8gdGhpcy5zZWxlY3Rvci5tYXRjaCgvLFxccyovKSA6IG51bGxcbiAgICBsZXQgc2VwID0gbWF0Y2ggPyBtYXRjaFswXSA6ICcsJyArIHRoaXMucmF3KCdiZXR3ZWVuJywgJ2JlZm9yZU9wZW4nKVxuICAgIHRoaXMuc2VsZWN0b3IgPSB2YWx1ZXMuam9pbihzZXApXG4gIH1cblxuICAvKipcbiAgICogQG1lbWJlcm9mIFJ1bGUjXG4gICAqIEBtZW1iZXIge3N0cmluZ30gc2VsZWN0b3IgVGhlIHJ1bGXigJlzIGZ1bGwgc2VsZWN0b3IgcmVwcmVzZW50ZWRcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICBhcyBhIHN0cmluZy5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogY29uc3Qgcm9vdCA9IHBvc3Rjc3MucGFyc2UoJ2EsIGIgeyB9JylcbiAgICogY29uc3QgcnVsZSA9IHJvb3QuZmlyc3RcbiAgICogcnVsZS5zZWxlY3RvciAvLz0+ICdhLCBiJ1xuICAgKi9cblxuICAvKipcbiAgICogQG1lbWJlcm9mIFJ1bGUjXG4gICAqIEBtZW1iZXIge29iamVjdH0gcmF3cyBJbmZvcm1hdGlvbiB0byBnZW5lcmF0ZSBieXRlLXRvLWJ5dGUgZXF1YWxcbiAgICogICAgICAgICAgICAgICAgICAgICAgIG5vZGUgc3RyaW5nIGFzIGl0IHdhcyBpbiB0aGUgb3JpZ2luIGlucHV0LlxuICAgKlxuICAgKiBFdmVyeSBwYXJzZXIgc2F2ZXMgaXRzIG93biBwcm9wZXJ0aWVzLFxuICAgKiBidXQgdGhlIGRlZmF1bHQgQ1NTIHBhcnNlciB1c2VzOlxuICAgKlxuICAgKiAqIGBiZWZvcmVgOiB0aGUgc3BhY2Ugc3ltYm9scyBiZWZvcmUgdGhlIG5vZGUuIEl0IGFsc28gc3RvcmVzIGAqYFxuICAgKiAgIGFuZCBgX2Agc3ltYm9scyBiZWZvcmUgdGhlIGRlY2xhcmF0aW9uIChJRSBoYWNrKS5cbiAgICogKiBgYWZ0ZXJgOiB0aGUgc3BhY2Ugc3ltYm9scyBhZnRlciB0aGUgbGFzdCBjaGlsZCBvZiB0aGUgbm9kZVxuICAgKiAgIHRvIHRoZSBlbmQgb2YgdGhlIG5vZGUuXG4gICAqICogYGJldHdlZW5gOiB0aGUgc3ltYm9scyBiZXR3ZWVuIHRoZSBwcm9wZXJ0eSBhbmQgdmFsdWVcbiAgICogICBmb3IgZGVjbGFyYXRpb25zLCBzZWxlY3RvciBhbmQgYHtgIGZvciBydWxlcywgb3IgbGFzdCBwYXJhbWV0ZXJcbiAgICogICBhbmQgYHtgIGZvciBhdC1ydWxlcy5cbiAgICogKiBgc2VtaWNvbG9uYDogY29udGFpbnMgYHRydWVgIGlmIHRoZSBsYXN0IGNoaWxkIGhhc1xuICAgKiAgIGFuIChvcHRpb25hbCkgc2VtaWNvbG9uLlxuICAgKiAqIGBvd25TZW1pY29sb25gOiBjb250YWlucyBgdHJ1ZWAgaWYgdGhlcmUgaXMgc2VtaWNvbG9uIGFmdGVyIHJ1bGUuXG4gICAqXG4gICAqIFBvc3RDU1MgY2xlYW5zIHNlbGVjdG9ycyBmcm9tIGNvbW1lbnRzIGFuZCBleHRyYSBzcGFjZXMsXG4gICAqIGJ1dCBpdCBzdG9yZXMgb3JpZ2luIGNvbnRlbnQgaW4gcmF3cyBwcm9wZXJ0aWVzLlxuICAgKiBBcyBzdWNoLCBpZiB5b3UgZG9u4oCZdCBjaGFuZ2UgYSBkZWNsYXJhdGlvbuKAmXMgdmFsdWUsXG4gICAqIFBvc3RDU1Mgd2lsbCB1c2UgdGhlIHJhdyB2YWx1ZSB3aXRoIGNvbW1lbnRzLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBjb25zdCByb290ID0gcG9zdGNzcy5wYXJzZSgnYSB7XFxuICBjb2xvcjpibGFja1xcbn0nKVxuICAgKiByb290LmZpcnN0LmZpcnN0LnJhd3MgLy89PiB7IGJlZm9yZTogJycsIGJldHdlZW46ICcgJywgYWZ0ZXI6ICdcXG4nIH1cbiAgICovXG59XG5cbmV4cG9ydCBkZWZhdWx0IFJ1bGVcbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\n\nvar _supportsColor = require('supports-color');\n\nvar _supportsColor2 = _interopRequireDefault(_supportsColor);\n\nvar _chalk = require('chalk');\n\nvar _chalk2 = _interopRequireDefault(_chalk);\n\nvar _terminalHighlight = require('./terminal-highlight');\n\nvar _terminalHighlight2 = _interopRequireDefault(_terminalHighlight);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * The CSS parser throws this error for broken CSS.\n *\n * Custom parsers can throw this error for broken custom syntax using\n * the {@link Node#error} method.\n *\n * PostCSS will use the input source map to detect the original error location.\n * If you wrote a Sass file, compiled it to CSS and then parsed it with PostCSS,\n * PostCSS will show the original position in the Sass file.\n *\n * If you need the position in the PostCSS input\n * (e.g., to debug the previous compiler), use `error.input.file`.\n *\n * @example\n * // Catching and checking syntax error\n * try {\n * postcss.parse('a{')\n * } catch (error) {\n * if (error.name === 'CssSyntaxError') {\n * error //=> CssSyntaxError\n * }\n * }\n *\n * @example\n * // Raising error from plugin\n * throw node.error('Unknown variable', { plugin: 'postcss-vars' })\n */\nvar CssSyntaxError = function () {\n /**\n * @param {string} message Error message.\n * @param {number} [line] Source line of the error.\n * @param {number} [column] Source column of the error.\n * @param {string} [source] Source code of the broken file.\n * @param {string} [file] Absolute path to the broken file.\n * @param {string} [plugin] PostCSS plugin name, if error came from plugin.\n */\n function CssSyntaxError(message, line, column, source, file, plugin) {\n _classCallCheck(this, CssSyntaxError);\n\n /**\n * Always equal to `'CssSyntaxError'`. You should always check error type\n * by `error.name === 'CssSyntaxError'`\n * instead of `error instanceof CssSyntaxError`,\n * because npm could have several PostCSS versions.\n *\n * @type {string}\n *\n * @example\n * if (error.name === 'CssSyntaxError') {\n * error //=> CssSyntaxError\n * }\n */\n this.name = 'CssSyntaxError';\n /**\n * Error message.\n *\n * @type {string}\n *\n * @example\n * error.message //=> 'Unclosed block'\n */\n this.reason = message;\n\n if (file) {\n /**\n * Absolute path to the broken file.\n *\n * @type {string}\n *\n * @example\n * error.file //=> 'a.sass'\n * error.input.file //=> 'a.css'\n */\n this.file = file;\n }\n if (source) {\n /**\n * Source code of the broken file.\n *\n * @type {string}\n *\n * @example\n * error.source //=> 'a { b {} }'\n * error.input.column //=> 'a b { }'\n */\n this.source = source;\n }\n if (plugin) {\n /**\n * Plugin name, if error came from plugin.\n *\n * @type {string}\n *\n * @example\n * error.plugin //=> 'postcss-vars'\n */\n this.plugin = plugin;\n }\n if (typeof line !== 'undefined' && typeof column !== 'undefined') {\n /**\n * Source line of the error.\n *\n * @type {number}\n *\n * @example\n * error.line //=> 2\n * error.input.line //=> 4\n */\n this.line = line;\n /**\n * Source column of the error.\n *\n * @type {number}\n *\n * @example\n * error.column //=> 1\n * error.input.column //=> 4\n */\n this.column = column;\n }\n\n this.setMessage();\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, CssSyntaxError);\n }\n }\n\n CssSyntaxError.prototype.setMessage = function setMessage() {\n /**\n * Full error text in the GNU error format\n * with plugin, file, line and column.\n *\n * @type {string}\n *\n * @example\n * error.message //=> 'a.css:1:1: Unclosed block'\n */\n this.message = this.plugin ? this.plugin + ': ' : '';\n this.message += this.file ? this.file : '';\n if (typeof this.line !== 'undefined') {\n this.message += ':' + this.line + ':' + this.column;\n }\n this.message += ': ' + this.reason;\n };\n\n /**\n * Returns a few lines of CSS source that caused the error.\n *\n * If the CSS has an input source map without `sourceContent`,\n * this method will return an empty string.\n *\n * @param {boolean} [color] Whether arrow will be colored red by terminal\n * color codes. By default, PostCSS will detect\n * color support by `process.stdout.isTTY`\n * and `process.env.NODE_DISABLE_COLORS`.\n *\n * @example\n * error.showSourceCode() //=> \" 4 | }\n * // 5 | a {\n * // > 6 | bad\n * // | ^\n * // 7 | }\n * // 8 | b {\"\n *\n * @return {string} Few lines of CSS source that caused the error.\n */\n\n\n CssSyntaxError.prototype.showSourceCode = function showSourceCode(color) {\n var _this = this;\n\n if (!this.source) return '';\n\n var css = this.source;\n if (_terminalHighlight2.default) {\n if (typeof color === 'undefined') color = _supportsColor2.default.stdout;\n if (color) css = (0, _terminalHighlight2.default)(css);\n }\n\n var lines = css.split(/\\r?\\n/);\n var start = Math.max(this.line - 3, 0);\n var end = Math.min(this.line + 2, lines.length);\n\n var maxWidth = String(end).length;\n\n function mark(text) {\n if (color && _chalk2.default.red) {\n return _chalk2.default.red.bold(text);\n } else {\n return text;\n }\n }\n function aside(text) {\n if (color && _chalk2.default.gray) {\n return _chalk2.default.gray(text);\n } else {\n return text;\n }\n }\n\n return lines.slice(start, end).map(function (line, index) {\n var number = start + 1 + index;\n var gutter = ' ' + (' ' + number).slice(-maxWidth) + ' | ';\n if (number === _this.line) {\n var spacing = aside(gutter.replace(/\\d/g, ' ')) + line.slice(0, _this.column - 1).replace(/[^\\t]/g, ' ');\n return mark('>') + aside(gutter) + line + '\\n ' + spacing + mark('^');\n } else {\n return ' ' + aside(gutter) + line;\n }\n }).join('\\n');\n };\n\n /**\n * Returns error position, message and source code of the broken part.\n *\n * @example\n * error.toString() //=> \"CssSyntaxError: app.css:1:1: Unclosed block\n * // > 1 | a {\n * // | ^\"\n *\n * @return {string} Error position, message and source code.\n */\n\n\n CssSyntaxError.prototype.toString = function toString() {\n var code = this.showSourceCode();\n if (code) {\n code = '\\n\\n' + code + '\\n';\n }\n return this.name + ': ' + this.message + code;\n };\n\n /**\n * @memberof CssSyntaxError#\n * @member {Input} input Input object with PostCSS internal information\n * about input file. If input has source map\n * from previous tool, PostCSS will use origin\n * (for example, Sass) source. You can use this\n * object to get PostCSS input source.\n *\n * @example\n * error.input.file //=> 'a.css'\n * error.file //=> 'a.sass'\n */\n\n\n return CssSyntaxError;\n}();\n\nexports.default = CssSyntaxError;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNzcy1zeW50YXgtZXJyb3IuZXM2Il0sIm5hbWVzIjpbIkNzc1N5bnRheEVycm9yIiwibWVzc2FnZSIsImxpbmUiLCJjb2x1bW4iLCJzb3VyY2UiLCJmaWxlIiwicGx1Z2luIiwibmFtZSIsInJlYXNvbiIsInNldE1lc3NhZ2UiLCJFcnJvciIsImNhcHR1cmVTdGFja1RyYWNlIiwic2hvd1NvdXJjZUNvZGUiLCJjb2xvciIsImNzcyIsInRlcm1pbmFsSGlnaGxpZ2h0Iiwic3VwcG9ydHNDb2xvciIsInN0ZG91dCIsImxpbmVzIiwic3BsaXQiLCJzdGFydCIsIk1hdGgiLCJtYXgiLCJlbmQiLCJtaW4iLCJsZW5ndGgiLCJtYXhXaWR0aCIsIlN0cmluZyIsIm1hcmsiLCJ0ZXh0IiwiY2hhbGsiLCJyZWQiLCJib2xkIiwiYXNpZGUiLCJncmF5Iiwic2xpY2UiLCJtYXAiLCJpbmRleCIsIm51bWJlciIsImd1dHRlciIsInNwYWNpbmciLCJyZXBsYWNlIiwiam9pbiIsInRvU3RyaW5nIiwiY29kZSJdLCJtYXBwaW5ncyI6Ijs7OztBQUFBOzs7O0FBQ0E7Ozs7QUFFQTs7Ozs7Ozs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBMkJNQSxjO0FBQ0o7Ozs7Ozs7O0FBUUEsMEJBQWFDLE9BQWIsRUFBc0JDLElBQXRCLEVBQTRCQyxNQUE1QixFQUFvQ0MsTUFBcEMsRUFBNENDLElBQTVDLEVBQWtEQyxNQUFsRCxFQUEwRDtBQUFBOztBQUN4RDs7Ozs7Ozs7Ozs7OztBQWFBLFNBQUtDLElBQUwsR0FBWSxnQkFBWjtBQUNBOzs7Ozs7OztBQVFBLFNBQUtDLE1BQUwsR0FBY1AsT0FBZDs7QUFFQSxRQUFJSSxJQUFKLEVBQVU7QUFDUjs7Ozs7Ozs7O0FBU0EsV0FBS0EsSUFBTCxHQUFZQSxJQUFaO0FBQ0Q7QUFDRCxRQUFJRCxNQUFKLEVBQVk7QUFDVjs7Ozs7Ozs7O0FBU0EsV0FBS0EsTUFBTCxHQUFjQSxNQUFkO0FBQ0Q7QUFDRCxRQUFJRSxNQUFKLEVBQVk7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RUFBYyxNQUFLaEMsTUFBTCxHQUFjLENBQTVCLEVBQStCc0MsT0FBL0IsQ0FBdUMsUUFBdkMsRUFBaUQsR0FBakQsQ0FERjtBQUVBLGVBQU9iLEtBQUssR0FBTCxJQUFZSyxNQUFNTSxNQUFOLENBQVosR0FBNEJyQyxJQUE1QixHQUFtQyxLQUFuQyxHQUEyQ3NDLE9BQTNDLEdBQXFEWixLQUFLLEdBQUwsQ0FBNUQ7QUFDRCxPQUpELE1BSU87QUFDTCxlQUFPLE1BQU1LLE1BQU1NLE1BQU4sQ0FBTixHQUFzQnJDLElBQTdCO0FBQ0Q7QUFDRixLQVZNLEVBVUp3QyxJQVZJLENBVUMsSUFWRCxDQUFQO0FBV0QsRzs7QUFFRDs7Ozs7Ozs7Ozs7OzJCQVVBQyxRLHVCQUFZO0FBQ1YsUUFBSUMsT0FBTyxLQUFLaEMsY0FBTCxFQUFYO0FBQ0EsUUFBSWdDLElBQUosRUFBVTtBQUNSQSxhQUFPLFNBQVNBLElBQVQsR0FBZ0IsSUFBdkI7QUFDRDtBQUNELFdBQU8sS0FBS3JDLElBQUwsR0FBWSxJQUFaLEdBQW1CLEtBQUtOLE9BQXhCLEdBQWtDMkMsSUFBekM7QUFDRCxHOztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7OztrQkFjYTVDLGMiLCJmaWxlIjoiY3NzLXN5bnRheC1lcnJvci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBzdXBwb3J0c0NvbG9yIGZyb20gJ3N1cHBvcnRzLWNvbG9yJ1xuaW1wb3J0IGNoYWxrIGZyb20gJ2NoYWxrJ1xuXG5pbXBvcnQgdGVybWluYWxIaWdobGlnaHQgZnJvbSAnLi90ZXJtaW5hbC1oaWdobGlnaHQnXG5cbi8qKlxuICogVGhlIENTUyBwYXJzZXIgdGhyb3dzIHRoaXMgZXJyb3IgZm9yIGJyb2tlbiBDU1MuXG4gKlxuICogQ3VzdG9tIHBhcnNlcnMgY2FuIHRocm93IHRoaXMgZXJyb3IgZm9yIGJyb2tlbiBjdXN0b20gc3ludGF4IHVzaW5nXG4gKiB0aGUge0BsaW5rIE5vZGUjZXJyb3J9IG1ldGhvZC5cbiAqXG4gKiBQb3N0Q1NTIHdpbGwgdXNlIHRoZSBpbnB1dCBzb3VyY2UgbWFwIHRvIGRldGVjdCB0aGUgb3JpZ2luYWwgZXJyb3IgbG9jYXRpb24uXG4gKiBJZiB5b3Ugd3JvdGUgYSBTYXNzIGZpbGUsIGNvbXBpbGVkIGl0IHRvIENTUyBhbmQgdGhlbiBwYXJzZWQgaXQgd2l0aCBQb3N0Q1NTLFxuICogUG9zdENTUyB3aWxsIHNob3cgdGhlIG9yaWdpbmFsIHBvc2l0aW9uIGluIHRoZSBTYXNzIGZpbGUuXG4gKlxuICogSWYgeW91IG5lZWQgdGhlIHBvc2l0aW9uIGluIHRoZSBQb3N0Q1NTIGlucHV0XG4gKiAoZS5nLiwgdG8gZGVidWcgdGhlIHByZXZpb3VzIGNvbXBpbGVyKSwgdXNlIGBlcnJvci5pbnB1dC5maWxlYC5cbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ2F0Y2hpbmcgYW5kIGNoZWNraW5nIHN5bnRheCBlcnJvclxuICogdHJ5IHtcbiAqICAgcG9zdGNzcy5wYXJzZSgnYXsnKVxuICogfSBjYXRjaCAoZXJyb3IpIHtcbiAqICAgaWYgKGVycm9yLm5hbWUgPT09ICdDc3NTeW50YXhFcnJvcicpIHtcbiAqICAgICBlcnJvciAvLz0+IENzc1N5bnRheEVycm9yXG4gKiAgIH1cbiAqIH1cbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gUmFpc2luZyBlcnJvciBmcm9tIHBsdWdpblxuICogdGhyb3cgbm9kZS5lcnJvcignVW5rbm93biB2YXJpYWJsZScsIHsgcGx1Z2luOiAncG9zdGNzcy12YXJzJyB9KVxuICovXG5jbGFzcyBDc3NTeW50YXhFcnJvciB7XG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZSAgRXJyb3IgbWVzc2FnZS5cbiAgICogQHBhcmFtIHtudW1iZXJ9IFtsaW5lXSAgIFNvdXJjZSBsaW5lIG9mIHRoZSBlcnJvci5cbiAgICogQHBhcmFtIHtudW1iZXJ9IFtjb2x1bW5dIFNvdXJjZSBjb2x1bW4gb2YgdGhlIGVycm9yLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW3NvdXJjZV0gU291cmNlIGNvZGUgb2YgdGhlIGJyb2tlbiBmaWxlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2ZpbGVdICAgQWJzb2x1dGUgcGF0aCB0byB0aGUgYnJva2VuIGZpbGUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbcGx1Z2luXSBQb3N0Q1NTIHBsdWdpbiBuYW1lLCBpZiBlcnJvciBjYW1lIGZyb20gcGx1Z2luLlxuICAgKi9cbiAgY29uc3RydWN0b3IgKG1lc3NhZ2UsIGxpbmUsIGNvbHVtbiwgc291cmNlLCBmaWxlLCBwbHVnaW4pIHtcbiAgICAvKipcbiAgICAgKiBBbHdheXMgZXF1YWwgdG8gYCdDc3NTeW50YXhFcnJvcidgLiBZb3Ugc2hvdWxkIGFsd2F5cyBjaGVjayBlcnJvciB0eXBlXG4gICAgICogYnkgYGVycm9yLm5hbWUgPT09ICdDc3NTeW50YXhFcnJvcidgXG4gICAgICogaW5zdGVhZCBvZiBgZXJyb3IgaW5zdGFuY2VvZiBDc3NTeW50YXhFcnJvcmAsXG4gICAgICogYmVjYXVzZSBucG0gY291bGQgaGF2ZSBzZXZlcmFsIFBvc3RDU1MgdmVyc2lvbnMuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBpZiAoZXJyb3IubmFtZSA9PT0gJ0Nzc1N5bnRheEVycm9yJykge1xuICAgICAqICAgZXJyb3IgLy89PiBDc3NTeW50YXhFcnJvclxuICAgICAqIH1cbiAgICAgKi9cbiAgICB0aGlzLm5hbWUgPSAnQ3NzU3ludGF4RXJyb3InXG4gICAgLyoqXG4gICAgICogRXJyb3IgbWVzc2FnZS5cbiAgICAgKlxuICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGVycm9yLm1lc3NhZ2UgLy89PiAnVW5jbG9zZWQgYmxvY2snXG4gICAgICovXG4gICAgdGhpcy5yZWFzb24gPSBtZXNzYWdlXG5cbiAgICBpZiAoZmlsZSkge1xuICAgICAgLyoqXG4gICAgICAgKiBBYnNvbHV0ZSBwYXRoIHRvIHRoZSBicm9rZW4gZmlsZS5cbiAgICAgICAqXG4gICAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAgICpcbiAgICAgICAqIEBleGFtcGxlXG4gICAgICAgKiBlcnJvci5maWxlICAgICAgIC8vPT4gJ2Euc2FzcydcbiAgICAgICAqIGVycm9yLmlucHV0LmZpbGUgLy89PiAnYS5jc3MnXG4gICAgICAgKi9cbiAgICAgIHRoaXMuZmlsZSA9IGZpbGVcbiAgICB9XG4gICAgaWYgKHNvdXJjZSkge1xuICAgICAgLyoqXG4gICAgICAgKiBTb3VyY2UgY29kZSBvZiB0aGUgYnJva2VuIGZpbGUuXG4gICAgICAgKlxuICAgICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgICAqXG4gICAgICAgKiBAZXhhbXBsZVxuICAgICAgICogZXJyb3Iuc291cmNlICAgICAgIC8vPT4gJ2EgeyBiIHt9IH0nXG4gICAgICAgKiBlcnJvci5pbnB1dC5jb2x1bW4gLy89PiAnYSBiIHsgfSdcbiAgICAgICAqL1xuICAgICAgdGhpcy5zb3VyY2UgPSBzb3VyY2VcbiAgICB9XG4gICAgaWYgKHBsdWdpbikge1xuICAgICAgLyoqXG4gICAgICAgKiBQbHVnaW4gbmFtZSwgaWYgZXJyb3IgY2FtZSBmcm9tIHBsdWdpbi5cbiAgICAgICAqXG4gICAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAgICpcbiAgICAgICAqIEBleGFtcGxlXG4gICAgICAgKiBlcnJvci5wbHVnaW4gLy89PiAncG9zdGNzcy12YXJzJ1xuICAgICAgICovXG4gICAgICB0aGlzLnBsdWdpbiA9IHBsdWdpblxuICAgIH1cbiAgICBpZiAodHlwZW9mIGxpbmUgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBjb2x1bW4gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAvKipcbiAgICAgICAqIFNvdXJjZSBsaW5lIG9mIHRoZSBlcnJvci5cbiAgICAgICAqXG4gICAgICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgICAgICpcbiAgICAgICAqIEBleGFtcGxlXG4gICAgICAgKiBlcnJvci5saW5lICAgICAgIC8vPT4gMlxuICAgICAgICogZXJyb3IuaW5wdXQubGluZSAvLz0+IDRcbiAgICAgICAqL1xuICAgICAgdGhpcy5saW5lID0gbGluZVxuICAgICAgLyoqXG4gICAgICAgKiBTb3VyY2UgY29sdW1uIG9mIHRoZSBlcnJvci5cbiAgICAgICAqXG4gICAgICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgICAgICpcbiAgICAgICAqIEBleGFtcGxlXG4gICAgICAgKiBlcnJvci5jb2x1bW4gICAgICAgLy89PiAxXG4gICAgICAgKiBlcnJvci5pbnB1dC5jb2x1bW4gLy89PiA0XG4gICAgICAgKi9cbiAgICAgIHRoaXMuY29sdW1uID0gY29sdW1uXG4gICAgfVxuXG4gICAgdGhpcy5zZXRNZXNzYWdlKClcblxuICAgIGlmIChFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSkge1xuICAgICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcywgQ3NzU3ludGF4RXJyb3IpXG4gICAgfVxuICB9XG5cbiAgc2V0TWVzc2FnZSAoKSB7XG4gICAgLyoqXG4gICAgICogRnVsbCBlcnJvciB0ZXh0IGluIHRoZSBHTlUgZXJyb3IgZm9ybWF0XG4gICAgICogd2l0aCBwbHVnaW4sIGZpbGUsIGxpbmUgYW5kIGNvbHVtbi5cbiAgICAgKlxuICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGVycm9yLm1lc3NhZ2UgLy89PiAnYS5jc3M6MToxOiBVbmNsb3NlZCBibG9jaydcbiAgICAgKi9cbiAgICB0aGlzLm1lc3NhZ2UgPSB0aGlzLnBsdWdpbiA/IHRoaXMucGx1Z2luICsgJzogJyA6ICcnXG4gICAgdGhpcy5tZXNzYWdlICs9IHRoaXMuZmlsZSA/IHRoaXMuZmlsZSA6ICc8Y3NzIGlucHV0PidcbiAgICBpZiAodHlwZW9mIHRoaXMubGluZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHRoaXMubWVzc2FnZSArPSAnOicgKyB0aGlzLmxpbmUgKyAnOicgKyB0aGlzLmNvbHVtblxuICAgIH1cbiAgICB0aGlzLm1lc3NhZ2UgKz0gJzogJyArIHRoaXMucmVhc29uXG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIGZldyBsaW5lcyBvZiBDU1Mgc291cmNlIHRoYXQgY2F1c2VkIHRoZSBlcnJvci5cbiAgICpcbiAgICogSWYgdGhlIENTUyBoYXMgYW4gaW5wdXQgc291cmNlIG1hcCB3aXRob3V0IGBzb3VyY2VDb250ZW50YCxcbiAgICogdGhpcyBtZXRob2Qgd2lsbCByZXR1cm4gYW4gZW1wdHkgc3RyaW5nLlxuICAgKlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtjb2xvcl0gV2hldGhlciBhcnJvdyB3aWxsIGJlIGNvbG9yZWQgcmVkIGJ5IHRlcm1pbmFsXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvciBjb2Rlcy4gQnkgZGVmYXVsdCwgUG9zdENTUyB3aWxsIGRldGVjdFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3Igc3VwcG9ydCBieSBgcHJvY2Vzcy5zdGRvdXQuaXNUVFlgXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgYHByb2Nlc3MuZW52Lk5PREVfRElTQUJMRV9DT0xPUlNgLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBlcnJvci5zaG93U291cmNlQ29kZSgpIC8vPT4gXCIgIDQgfCB9XG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgICA1IHwgYSB7XG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgPiA2IHwgICBiYWRcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAgfCAgIF5cbiAgICogICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgIDcgfCB9XG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgICA4IHwgYiB7XCJcbiAgICpcbiAgICogQHJldHVybiB7c3RyaW5nfSBGZXcgbGluZXMgb2YgQ1NTIHNvdXJjZSB0aGF0IGNhdXNlZCB0aGUgZXJyb3IuXG4gICAqL1xuICBzaG93U291cmNlQ29kZSAoY29sb3IpIHtcbiAgICBpZiAoIXRoaXMuc291cmNlKSByZXR1cm4gJydcblxuICAgIGxldCBjc3MgPSB0aGlzLnNvdXJjZVxuICAgIGlmICh0ZXJtaW5hbEhpZ2hsaWdodCkge1xuICAgICAgaWYgKHR5cGVvZiBjb2xvciA9PT0gJ3VuZGVmaW5lZCcpIGNvbG9yID0gc3VwcG9ydHNDb2xvci5zdGRvdXRcbiAgICAgIGlmIChjb2xvcikgY3NzID0gdGVybWluYWxIaWdobGlnaHQoY3NzKVxuICAgIH1cblxuICAgIGxldCBsaW5lcyA9IGNzcy5zcGxpdCgvXFxyP1xcbi8pXG4gICAgbGV0IHN0YXJ0ID0gTWF0aC5tYXgodGhpcy5saW5lIC0gMywgMClcbiAgICBsZXQgZW5kID0gTWF0aC5taW4odGhpcy5saW5lICsgMiwgbGluZXMubGVuZ3RoKVxuXG4gICAgbGV0IG1heFdpZHRoID0gU3RyaW5nKGVuZCkubGVuZ3RoXG5cbiAgICBmdW5jdGlvbiBtYXJrICh0ZXh0KSB7XG4gICAgICBpZiAoY29sb3IgJiYgY2hhbGsucmVkKSB7XG4gICAgICAgIHJldHVybiBjaGFsay5yZWQuYm9sZCh0ZXh0KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRleHRcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gYXNpZGUgKHRleHQpIHtcbiAgICAgIGlmIChjb2xvciAmJiBjaGFsay5ncmF5KSB7XG4gICAgICAgIHJldHVybiBjaGFsay5ncmF5KHRleHQpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGV4dFxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBsaW5lcy5zbGljZShzdGFydCwgZW5kKS5tYXAoKGxpbmUsIGluZGV4KSA9PiB7XG4gICAgICBsZXQgbnVtYmVyID0gc3RhcnQgKyAxICsgaW5kZXhcbiAgICAgIGxldCBndXR0ZXIgPSAnICcgKyAoJyAnICsgbnVtYmVyKS5zbGljZSgtbWF4V2lkdGgpICsgJyB8ICdcbiAgICAgIGlmIChudW1iZXIgPT09IHRoaXMubGluZSkge1xuICAgICAgICBsZXQgc3BhY2luZyA9IGFzaWRlKGd1dHRlci5yZXBsYWNlKC9cXGQvZywgJyAnKSkgK1xuICAgICAgICAgIGxpbmUuc2xpY2UoMCwgdGhpcy5jb2x1bW4gLSAxKS5yZXBsYWNlKC9bXlxcdF0vZywgJyAnKVxuICAgICAgICByZXR1cm4gbWFyaygnPicpICsgYXNpZGUoZ3V0dGVyKSArIGxpbmUgKyAnXFxuICcgKyBzcGFjaW5nICsgbWFyaygnXicpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gJyAnICsgYXNpZGUoZ3V0dGVyKSArIGxpbmVcbiAgICAgIH1cbiAgICB9KS5qb2luKCdcXG4nKVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgZXJyb3IgcG9zaXRpb24sIG1lc3NhZ2UgYW5kIHNvdXJjZSBjb2RlIG9mIHRoZSBicm9rZW4gcGFydC5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogZXJyb3IudG9TdHJpbmcoKSAvLz0+IFwiQ3NzU3ludGF4RXJyb3I6IGFwcC5jc3M6MToxOiBVbmNsb3NlZCBibG9ja1xuICAgKiAgICAgICAgICAgICAgICAgIC8vICAgID4gMSB8IGEge1xuICAgKiAgICAgICAgICAgICAgICAgIC8vICAgICAgICB8IF5cIlxuICAgKlxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IEVycm9yIHBvc2l0aW9uLCBtZXNzYWdlIGFuZCBzb3VyY2UgY29kZS5cbiAgICovXG4gIHRvU3RyaW5nICgpIHtcbiAgICBsZXQgY29kZSA9IHRoaXMuc2hvd1NvdXJjZUNvZGUoKVxuICAgIGlmIChjb2RlKSB7XG4gICAgICBjb2RlID0gJ1xcblxcbicgKyBjb2RlICsgJ1xcbidcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMubmFtZSArICc6ICcgKyB0aGlzLm1lc3NhZ2UgKyBjb2RlXG4gIH1cblxuICAvKipcbiAgICogQG1lbWJlcm9mIENzc1N5bnRheEVycm9yI1xuICAgKiBAbWVtYmVyIHtJbnB1dH0gaW5wdXQgSW5wdXQgb2JqZWN0IHdpdGggUG9zdENTUyBpbnRlcm5hbCBpbmZvcm1hdGlvblxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgYWJvdXQgaW5wdXQgZmlsZS4gSWYgaW5wdXQgaGFzIHNvdXJjZSBtYXBcbiAgICogICAgICAgICAgICAgICAgICAgICAgIGZyb20gcHJldmlvdXMgdG9vbCwgUG9zdENTUyB3aWxsIHVzZSBvcmlnaW5cbiAgICogICAgICAgICAgICAgICAgICAgICAgIChmb3IgZXhhbXBsZSwgU2Fzcykgc291cmNlLiBZb3UgY2FuIHVzZSB0aGlzXG4gICAqICAgICAgICAgICAgICAgICAgICAgICBvYmplY3QgdG8gZ2V0IFBvc3RDU1MgaW5wdXQgc291cmNlLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBlcnJvci5pbnB1dC5maWxlIC8vPT4gJ2EuY3NzJ1xuICAgKiBlcnJvci5maWxlICAgICAgIC8vPT4gJ2Euc2FzcydcbiAgICovXG59XG5cbmV4cG9ydCBkZWZhdWx0IENzc1N5bnRheEVycm9yXG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar DEFAULT_RAW = {\n colon: ': ',\n indent: ' ',\n beforeDecl: '\\n',\n beforeRule: '\\n',\n beforeOpen: ' ',\n beforeClose: '\\n',\n beforeComment: '\\n',\n after: '\\n',\n emptyBody: '',\n commentLeft: ' ',\n commentRight: ' '\n};\n\nfunction capitalize(str) {\n return str[0].toUpperCase() + str.slice(1);\n}\n\nvar Stringifier = function () {\n function Stringifier(builder) {\n _classCallCheck(this, Stringifier);\n\n this.builder = builder;\n }\n\n Stringifier.prototype.stringify = function stringify(node, semicolon) {\n this[node.type](node, semicolon);\n };\n\n Stringifier.prototype.root = function root(node) {\n this.body(node);\n if (node.raws.after) this.builder(node.raws.after);\n };\n\n Stringifier.prototype.comment = function comment(node) {\n var left = this.raw(node, 'left', 'commentLeft');\n var right = this.raw(node, 'right', 'commentRight');\n this.builder('/*' + left + node.text + right + '*/', node);\n };\n\n Stringifier.prototype.decl = function decl(node, semicolon) {\n var between = this.raw(node, 'between', 'colon');\n var string = node.prop + between + this.rawValue(node, 'value');\n\n if (node.important) {\n string += node.raws.important || ' !important';\n }\n\n if (semicolon) string += ';';\n this.builder(string, node);\n };\n\n Stringifier.prototype.rule = function rule(node) {\n this.block(node, this.rawValue(node, 'selector'));\n if (node.raws.ownSemicolon) {\n this.builder(node.raws.ownSemicolon, node, 'end');\n }\n };\n\n Stringifier.prototype.atrule = function atrule(node, semicolon) {\n var name = '@' + node.name;\n var params = node.params ? this.rawValue(node, 'params') : '';\n\n if (typeof node.raws.afterName !== 'undefined') {\n name += node.raws.afterName;\n } else if (params) {\n name += ' ';\n }\n\n if (node.nodes) {\n this.block(node, name + params);\n } else {\n var end = (node.raws.between || '') + (semicolon ? ';' : '');\n this.builder(name + params + end, node);\n }\n };\n\n Stringifier.prototype.body = function body(node) {\n var last = node.nodes.length - 1;\n while (last > 0) {\n if (node.nodes[last].type !== 'comment') break;\n last -= 1;\n }\n\n var semicolon = this.raw(node, 'semicolon');\n for (var i = 0; i < node.nodes.length; i++) {\n var child = node.nodes[i];\n var before = this.raw(child, 'before');\n if (before) this.builder(before);\n this.stringify(child, last !== i || semicolon);\n }\n };\n\n Stringifier.prototype.block = function block(node, start) {\n var between = this.raw(node, 'between', 'beforeOpen');\n this.builder(start + between + '{', node, 'start');\n\n var after = void 0;\n if (node.nodes && node.nodes.length) {\n this.body(node);\n after = this.raw(node, 'after');\n } else {\n after = this.raw(node, 'after', 'emptyBody');\n }\n\n if (after) this.builder(after);\n this.builder('}', node, 'end');\n };\n\n Stringifier.prototype.raw = function raw(node, own, detect) {\n var value = void 0;\n if (!detect) detect = own;\n\n // Already had\n if (own) {\n value = node.raws[own];\n if (typeof value !== 'undefined') return value;\n }\n\n var parent = node.parent;\n\n // Hack for first rule in CSS\n if (detect === 'before') {\n if (!parent || parent.type === 'root' && parent.first === node) {\n return '';\n }\n }\n\n // Floating child without parent\n if (!parent) return DEFAULT_RAW[detect];\n\n // Detect style by other nodes\n var root = node.root();\n if (!root.rawCache) root.rawCache = {};\n if (typeof root.rawCache[detect] !== 'undefined') {\n return root.rawCache[detect];\n }\n\n if (detect === 'before' || detect === 'after') {\n return this.beforeAfter(node, detect);\n } else {\n var method = 'raw' + capitalize(detect);\n if (this[method]) {\n value = this[method](root, node);\n } else {\n root.walk(function (i) {\n value = i.raws[own];\n if (typeof value !== 'undefined') return false;\n });\n }\n }\n\n if (typeof value === 'undefined') value = DEFAULT_RAW[detect];\n\n root.rawCache[detect] = value;\n return value;\n };\n\n Stringifier.prototype.rawSemicolon = function rawSemicolon(root) {\n var value = void 0;\n root.walk(function (i) {\n if (i.nodes && i.nodes.length && i.last.type === 'decl') {\n value = i.raws.semicolon;\n if (typeof value !== 'undefined') return false;\n }\n });\n return value;\n };\n\n Stringifier.prototype.rawEmptyBody = function rawEmptyBody(root) {\n var value = void 0;\n root.walk(function (i) {\n if (i.nodes && i.nodes.length === 0) {\n value = i.raws.after;\n if (typeof value !== 'undefined') return false;\n }\n });\n return value;\n };\n\n Stringifier.prototype.rawIndent = function rawIndent(root) {\n if (root.raws.indent) return root.raws.indent;\n var value = void 0;\n root.walk(function (i) {\n var p = i.parent;\n if (p && p !== root && p.parent && p.parent === root) {\n if (typeof i.raws.before !== 'undefined') {\n var parts = i.raws.before.split('\\n');\n value = parts[parts.length - 1];\n value = value.replace(/[^\\s]/g, '');\n return false;\n }\n }\n });\n return value;\n };\n\n Stringifier.prototype.rawBeforeComment = function rawBeforeComment(root, node) {\n var value = void 0;\n root.walkComments(function (i) {\n if (typeof i.raws.before !== 'undefined') {\n value = i.raws.before;\n if (value.indexOf('\\n') !== -1) {\n value = value.replace(/[^\\n]+$/, '');\n }\n return false;\n }\n });\n if (typeof value === 'undefined') {\n value = this.raw(node, null, 'beforeDecl');\n } else if (value) {\n value = value.replace(/[^\\s]/g, '');\n }\n return value;\n };\n\n Stringifier.prototype.rawBeforeDecl = function rawBeforeDecl(root, node) {\n var value = void 0;\n root.walkDecls(function (i) {\n if (typeof i.raws.before !== 'undefined') {\n value = i.raws.before;\n if (value.indexOf('\\n') !== -1) {\n value = value.replace(/[^\\n]+$/, '');\n }\n return false;\n }\n });\n if (typeof value === 'undefined') {\n value = this.raw(node, null, 'beforeRule');\n } else if (value) {\n value = value.replace(/[^\\s]/g, '');\n }\n return value;\n };\n\n Stringifier.prototype.rawBeforeRule = function rawBeforeRule(root) {\n var value = void 0;\n root.walk(function (i) {\n if (i.nodes && (i.parent !== root || root.first !== i)) {\n if (typeof i.raws.before !== 'undefined') {\n value = i.raws.before;\n if (value.indexOf('\\n') !== -1) {\n value = value.replace(/[^\\n]+$/, '');\n }\n return false;\n }\n }\n });\n if (value) value = value.replace(/[^\\s]/g, '');\n return value;\n };\n\n Stringifier.prototype.rawBeforeClose = function rawBeforeClose(root) {\n var value = void 0;\n root.walk(function (i) {\n if (i.nodes && i.nodes.length > 0) {\n if (typeof i.raws.after !== 'undefined') {\n value = i.raws.after;\n if (value.indexOf('\\n') !== -1) {\n value = value.replace(/[^\\n]+$/, '');\n }\n return false;\n }\n }\n });\n if (value) value = value.replace(/[^\\s]/g, '');\n return value;\n };\n\n Stringifier.prototype.rawBeforeOpen = function rawBeforeOpen(root) {\n var value = void 0;\n root.walk(function (i) {\n if (i.type !== 'decl') {\n value = i.raws.between;\n if (typeof value !== 'undefined') return false;\n }\n });\n return value;\n };\n\n Stringifier.prototype.rawColon = function rawColon(root) {\n var value = void 0;\n root.walkDecls(function (i) {\n if (typeof i.raws.between !== 'undefined') {\n value = i.raws.between.replace(/[^\\s:]/g, '');\n return false;\n }\n });\n return value;\n };\n\n Stringifier.prototype.beforeAfter = function beforeAfter(node, detect) {\n var value = void 0;\n if (node.type === 'decl') {\n value = this.raw(node, null, 'beforeDecl');\n } else if (node.type === 'comment') {\n value = this.raw(node, null, 'beforeComment');\n } else if (detect === 'before') {\n value = this.raw(node, null, 'beforeRule');\n } else {\n value = this.raw(node, null, 'beforeClose');\n }\n\n var buf = node.parent;\n var depth = 0;\n while (buf && buf.type !== 'root') {\n depth += 1;\n buf = buf.parent;\n }\n\n if (value.indexOf('\\n') !== -1) {\n var indent = this.raw(node, null, 'indent');\n if (indent.length) {\n for (var step = 0; step < depth; step++) {\n value += indent;\n }\n }\n }\n\n return value;\n };\n\n Stringifier.prototype.rawValue = function rawValue(node, prop) {\n var value = node[prop];\n var raw = node.raws[prop];\n if (raw && raw.value === value) {\n return raw.raw;\n } else {\n return value;\n }\n };\n\n return Stringifier;\n}();\n\nexports.default = Stringifier;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0cmluZ2lmaWVyLmVzNiJdLCJuYW1lcyI6WyJERUZBVUxUX1JBVyIsImNvbG9uIiwiaW5kZW50IiwiYmVmb3JlRGVjbCIsImJlZm9yZVJ1bGUiLCJiZWZvcmVPcGVuIiwiYmVmb3JlQ2xvc2UiLCJiZWZvcmVDb21tZW50IiwiYWZ0ZXIiLCJlbXB0eUJvZHkiLCJjb21tZW50TGVmdCIsImNvbW1lbnRSaWdodCIsImNhcGl0YWxpemUiLCJzdHIiLCJ0b1VwcGVyQ2FzZSIsInNsaWNlIiwiU3RyaW5naWZpZXIiLCJidWlsZGVyIiwic3RyaW5naWZ5Iiwibm9kZSIsInNlbWljb2xvbiIsInR5cGUiLCJyb290IiwiYm9keSIsInJhd3MiLCJjb21tZW50IiwibGVmdCIsInJhdyIsInJpZ2h0IiwidGV4dCIsImRlY2wiLCJiZXR3ZWVuIiwic3RyaW5nIiwicHJvcCIsInJhd1ZhbHVlIiwiaW1wb3J0YW50IiwicnVsZSIsImJsb2NrIiwib3duU2VtaWNvbG9uIiwiYXRydWxlIiwibmFtZSIsInBhcmFtcyIsImFmdGVyTmFtZSIsIm5vZGVzIiwiZW5kIiwibGFzdCIsImxlbmd0aCIsImkiLCJjaGlsZCIsImJlZm9yZSIsInN0YXJ0Iiwib3duIiwiZGV0ZWN0IiwidmFsdWUiLCJwYXJlbnQiLCJmaXJzdCIsInJhd0NhY2hlIiwiYmVmb3JlQWZ0ZXIiLCJtZXRob2QiLCJ3YWxrIiwicmF3U2VtaWNvbG9uIiwicmF3RW1wdHlCb2R5IiwicmF3SW5kZW50IiwicCIsInBhcnRzIiwic3BsaXQiLCJyZXBsYWNlIiwicmF3QmVmb3JlQ29tbWVudCIsIndhbGtDb21tZW50cyIsImluZGV4T2YiLCJyYXdCZWZvcmVEZWNsIiwid2Fsa0RlY2xzIiwicmF3QmVmb3JlUnVsZSIsInJhd0JlZm9yZUNsb3NlIiwicmF3QmVmb3JlT3BlbiIsInJhd0NvbG9uIiwiYnVmIiwiZGVwdGgiLCJzdGVwIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFNQSxjQUFjO0FBQ2xCQyxTQUFPLElB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QUFDRDtBQUNGLEc7Ozs7O2tCQUdZckMsVyIsImZpbGUiOiJzdHJpbmdpZmllci5qcyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IERFRkFVTFRfUkFXID0ge1xuICBjb2xvbjogJzogJyxcbiAgaW5kZW50OiAnICAgICcsXG4gIGJlZm9yZURlY2w6ICdcXG4nLFxuICBiZWZvcmVSdWxlOiAnXFxuJyxcbiAgYmVmb3JlT3BlbjogJyAnLFxuICBiZWZvcmVDbG9zZTogJ1xcbicsXG4gIGJlZm9yZUNvbW1lbnQ6ICdcXG4nLFxuICBhZnRlcjogJ1xcbicsXG4gIGVtcHR5Qm9keTogJycsXG4gIGNvbW1lbnRMZWZ0OiAnICcsXG4gIGNvbW1lbnRSaWdodDogJyAnXG59XG5cbmZ1bmN0aW9uIGNhcGl0YWxpemUgKHN0cikge1xuICByZXR1cm4gc3RyWzBdLnRvVXBwZXJDYXNlKCkgKyBzdHIuc2xpY2UoMSlcbn1cblxuY2xhc3MgU3RyaW5naWZpZXIge1xuICBjb25zdHJ1Y3RvciAoYnVpbGRlcikge1xuICAgIHRoaXMuYnVpbGRlciA9IGJ1aWxkZXJcbiAgfVxuXG4gIHN0cmluZ2lmeSAobm9kZSwgc2VtaWNvbG9uKSB7XG4gICAgdGhpc1tub2RlLnR5cGVdKG5vZGUsIHNlbWljb2xvbilcbiAgfVxuXG4gIHJvb3QgKG5vZGUpIHtcbiAgICB0aGlzLmJvZHkobm9kZSlcbiAgICBpZiAobm9kZS5yYXdzLmFmdGVyKSB0aGlzLmJ1aWxkZXIobm9kZS5yYXdzLmFmdGVyKVxuICB9XG5cbiAgY29tbWVudCAobm9kZSkge1xuICAgIGxldCBsZWZ0ID0gdGhpcy5yYXcobm9kZSwgJ2xlZnQnLCAnY29tbWVudExlZnQnKVxuICAgIGxldCByaWdodCA9IHRoaXMucmF3KG5vZGUsICdyaWdodCcsICdjb21tZW50UmlnaHQnKVxuICAgIHRoaXMuYnVpbGRlcignLyonICsgbGVmdCArIG5vZGUudGV4dCArIHJpZ2h0ICsgJyovJywgbm9kZSlcbiAgfVxuXG4gIGRlY2wgKG5vZGUsIHNlbWljb2xvbikge1xuICAgIGxldCBiZXR3ZWVuID0gdGhpcy5yYXcobm9kZSwgJ2JldHdlZW4nLCAnY29sb24nKVxuICAgIGxldCBzdHJpbmcgPSBub2RlLnByb3AgKyBiZXR3ZWVuICsgdGhpcy5yYXdWYWx1ZShub2RlLCAndmFsdWUnKVxuXG4gICAgaWYgKG5vZGUuaW1wb3J0YW50KSB7XG4gICAgICBzdHJpbmcgKz0gbm9kZS5yYXdzLmltcG9ydGFudCB8fCAnICFpbXBvcnRhbnQnXG4gICAgfVxuXG4gICAgaWYgKHNlbWljb2xvbikgc3RyaW5nICs9ICc7J1xuICAgIHRoaXMuYnVpbGRlcihzdHJpbmcsIG5vZGUpXG4gIH1cblxuICBydWxlIChub2RlKSB7XG4gICAgdGhpcy5ibG9jayhub2RlLCB0aGlzLnJhd1ZhbHVlKG5vZGUsICdzZWxlY3RvcicpKVxuICAgIGlmIChub2RlLnJhd3Mub3duU2VtaWNvbG9uKSB7XG4gICAgICB0aGlzLmJ1aWxkZXIobm9kZS5yYXdzLm93blNlbWljb2xvbiwgbm9kZSwgJ2VuZCcpXG4gICAgfVxuICB9XG5cbiAgYXRydWxlIChub2RlLCBzZW1pY29sb24pIHtcbiAgICBsZXQgbmFtZSA9ICdAJyArIG5vZGUubmFtZVxuICAgIGxldCBwYXJhbXMgPSBub2RlLnBhcmFtcyA/IHRoaXMucmF3VmFsdWUobm9kZSwgJ3BhcmFtcycpIDogJydcblxuICAgIGlmICh0eXBlb2Ygbm9kZS5yYXdzLmFmdGVyTmFtZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIG5hbWUgKz0gbm9kZS5yYXdzLmFmdGVyTmFtZVxuICAgIH0gZWxzZSBpZiAocGFyYW1zKSB7XG4gICAgICBuYW1lICs9ICcgJ1xuICAgIH1cblxuICAgIGlmIChub2RlLm5vZGVzKSB7XG4gICAgICB0aGlzLmJsb2NrKG5vZGUsIG5hbWUgKyBwYXJhbXMpXG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBlbmQgPSAobm9kZS5yYXdzLmJldHdlZW4gfHwgJycpICsgKHNlbWljb2xvbiA/ICc7JyA6ICcnKVxuICAgICAgdGhpcy5idWlsZGVyKG5hbWUgKyBwYXJhbXMgKyBlbmQsIG5vZGUpXG4gICAgfVxuICB9XG5cbiAgYm9keSAobm9kZSkge1xuICAgIGxldCBsYXN0ID0gbm9kZS5ub2Rlcy5sZW5ndGggLSAxXG4gICAgd2hpbGUgKGxhc3QgPiAwKSB7XG4gICAgICBpZiAobm9kZS5ub2Rlc1tsYXN0XS50eXBlICE9PSAnY29tbWVudCcpIGJyZWFrXG4gICAgICBsYXN0IC09IDFcbiAgICB9XG5cbiAgICBsZXQgc2VtaWNvbG9uID0gdGhpcy5yYXcobm9kZSwgJ3NlbWljb2xvbicpXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2RlLm5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgY2hpbGQgPSBub2RlLm5vZGVzW2ldXG4gICAgICBsZXQgYmVmb3JlID0gdGhpcy5yYXcoY2hpbGQsICdiZWZvcmUnKVxuICAgICAgaWYgKGJlZm9yZSkgdGhpcy5idWlsZGVyKGJlZm9yZSlcbiAgICAgIHRoaXMuc3RyaW5naWZ5KGNoaWxkLCBsYXN0ICE9PSBpIHx8IHNlbWljb2xvbilcbiAgICB9XG4gIH1cblxuICBibG9jayAobm9kZSwgc3RhcnQpIHtcbiAgICBsZXQgYmV0d2VlbiA9IHRoaXMucmF3KG5vZGUsICdiZXR3ZWVuJywgJ2JlZm9yZU9wZW4nKVxuICAgIHRoaXMuYnVpbGRlcihzdGFydCArIGJldHdlZW4gKyAneycsIG5vZGUsICdzdGFydCcpXG5cbiAgICBsZXQgYWZ0ZXJcbiAgICBpZiAobm9kZS5ub2RlcyAmJiBub2RlLm5vZGVzLmxlbmd0aCkge1xuICAgICAgdGhpcy5ib2R5KG5vZGUpXG4gICAgICBhZnRlciA9IHRoaXMucmF3KG5vZGUsICdhZnRlcicpXG4gICAgfSBlbHNlIHtcbiAgICAgIGFmdGVyID0gdGhpcy5yYXcobm9kZSwgJ2FmdGVyJywgJ2VtcHR5Qm9keScpXG4gICAgfVxuXG4gICAgaWYgKGFmdGVyKSB0aGlzLmJ1aWxkZXIoYWZ0ZXIpXG4gICAgdGhpcy5idWlsZGVyKCd9Jywgbm9kZSwgJ2VuZCcpXG4gIH1cblxuICByYXcgKG5vZGUsIG93biwgZGV0ZWN0KSB7XG4gICAgbGV0IHZhbHVlXG4gICAgaWYgKCFkZXRlY3QpIGRldGVjdCA9IG93blxuXG4gICAgLy8gQWxyZWFkeSBoYWRcbiAgICBpZiAob3duKSB7XG4gICAgICB2YWx1ZSA9IG5vZGUucmF3c1tvd25dXG4gICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAndW5kZWZpbmVkJykgcmV0dXJuIHZhbHVlXG4gICAgfVxuXG4gICAgbGV0IHBhcmVudCA9IG5vZGUucGFyZW50XG5cbiAgICAvLyBIYWNrIGZvciBmaXJzdCBydWxlIGluIENTU1xuICAgIGlmIChkZXRlY3QgPT09ICdiZWZvcmUnKSB7XG4gICAgICBpZiAoIXBhcmVudCB8fCAocGFyZW50LnR5cGUgPT09ICdyb290JyAmJiBwYXJlbnQuZmlyc3QgPT09IG5vZGUpKSB7XG4gICAgICAgIHJldHVybiAnJ1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEZsb2F0aW5nIGNoaWxkIHdpdGhvdXQgcGFyZW50XG4gICAgaWYgKCFwYXJlbnQpIHJldHVybiBERUZBVUxUX1JBV1tkZXRlY3RdXG5cbiAgICAvLyBEZXRlY3Qgc3R5bGUgYnkgb3RoZXIgbm9kZXNcbiAgICBsZXQgcm9vdCA9IG5vZGUucm9vdCgpXG4gICAgaWYgKCFyb290LnJhd0NhY2hlKSByb290LnJhd0NhY2hlID0geyB9XG4gICAgaWYgKHR5cGVvZiByb290LnJhd0NhY2hlW2RldGVjdF0gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXR1cm4gcm9vdC5yYXdDYWNoZVtkZXRlY3RdXG4gICAgfVxuXG4gICAgaWYgKGRldGVjdCA9PT0gJ2JlZm9yZScgfHwgZGV0ZWN0ID09PSAnYWZ0ZXInKSB7XG4gICAgICByZXR1cm4gdGhpcy5iZWZvcmVBZnRlcihub2RlLCBkZXRlY3QpXG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBtZXRob2QgPSAncmF3JyArIGNhcGl0YWxpemUoZGV0ZWN0KVxuICAgICAgaWYgKHRoaXNbbWV0aG9kXSkge1xuICAgICAgICB2YWx1ZSA9IHRoaXNbbWV0aG9kXShyb290LCBub2RlKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcm9vdC53YWxrKGkgPT4ge1xuICAgICAgICAgIHZhbHVlID0gaS5yYXdzW293bl1cbiAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAndW5kZWZpbmVkJykgcmV0dXJuIGZhbHNlXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcpIHZhbHVlID0gREVGQVVMVF9SQVdbZGV0ZWN0XVxuXG4gICAgcm9vdC5yYXdDYWNoZVtkZXRlY3RdID0gdmFsdWVcbiAgICByZXR1cm4gdmFsdWVcbiAgfVxuXG4gIHJhd1NlbWljb2xvbiAocm9vdCkge1xuICAgIGxldCB2YWx1ZVxuICAgIHJvb3Qud2FsayhpID0+IHtcbiAgICAgIGlmIChpLm5vZGVzICYmIGkubm9kZXMubGVuZ3RoICYmIGkubGFzdC50eXBlID09PSAnZGVjbCcpIHtcbiAgICAgICAgdmFsdWUgPSBpLnJhd3Muc2VtaWNvbG9uXG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICd1bmRlZmluZWQnKSByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICB9KVxuICAgIHJldHVybiB2YWx1ZVxuICB9XG5cbiAgcmF3RW1wdHlCb2R5IChyb290KSB7XG4gICAgbGV0IHZhbHVlXG4gICAgcm9vdC53YWxrKGkgPT4ge1xuICAgICAgaWYgKGkubm9kZXMgJiYgaS5ub2Rlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdmFsdWUgPSBpLnJhd3MuYWZ0ZXJcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3VuZGVmaW5lZCcpIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgIH0pXG4gICAgcmV0dXJuIHZhbHVlXG4gIH1cblxuICByYXdJbmRlbnQgKHJvb3QpIHtcbiAgICBpZiAocm9vdC5yYXdzLmluZGVudCkgcmV0dXJuIHJvb3QucmF3cy5pbmRlbnRcbiAgICBsZXQgdmFsdWVcbiAgICByb290LndhbGsoaSA9PiB7XG4gICAgICBsZXQgcCA9IGkucGFyZW50XG4gICAgICBpZiAocCAmJiBwICE9PSByb290ICYmIHAucGFyZW50ICYmIHAucGFyZW50ID09PSByb290KSB7XG4gICAgICAgIGlmICh0eXBlb2YgaS5yYXdzLmJlZm9yZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICBsZXQgcGFydHMgPSBpLnJhd3MuYmVmb3JlLnNwbGl0KCdcXG4nKVxuICAgICAgICAgIHZhbHVlID0gcGFydHNbcGFydHMubGVuZ3RoIC0gMV1cbiAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL1teXFxzXS9nLCAnJylcbiAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXG4gICAgcmV0dXJuIHZhbHVlXG4gIH1cblxuICByYXdCZWZvcmVDb21tZW50IChyb290LCBub2RlKSB7XG4gICAgbGV0IHZhbHVlXG4gICAgcm9vdC53YWxrQ29tbWVudHMoaSA9PiB7XG4gICAgICBpZiAodHlwZW9mIGkucmF3cy5iZWZvcmUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHZhbHVlID0gaS5yYXdzLmJlZm9yZVxuICAgICAgICBpZiAodmFsdWUuaW5kZXhPZignXFxuJykgIT09IC0xKSB7XG4gICAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC9bXlxcbl0rJC8sICcnKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgIH0pXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHZhbHVlID0gdGhpcy5yYXcobm9kZSwgbnVsbCwgJ2JlZm9yZURlY2wnKVxuICAgIH0gZWxzZSBpZiAodmFsdWUpIHtcbiAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgvW15cXHNdL2csICcnKVxuICAgIH1cbiAgICByZXR1cm4gdmFsdWVcbiAgfVxuXG4gIHJhd0JlZm9yZURlY2wgKHJvb3QsIG5vZGUpIHtcbiAgICBsZXQgdmFsdWVcbiAgICByb290LndhbGtEZWNscyhpID0+IHtcbiAgICAgIGlmICh0eXBlb2YgaS5yYXdzLmJlZm9yZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgdmFsdWUgPSBpLnJhd3MuYmVmb3JlXG4gICAgICAgIGlmICh2YWx1ZS5pbmRleE9mKCdcXG4nKSAhPT0gLTEpIHtcbiAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL1teXFxuXSskLywgJycpXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgfSlcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAndW5kZWZpbmVkJykge1xuICAgICAgdmFsdWUgPSB0aGlzLnJhdyhub2RlLCBudWxsLCAnYmVmb3JlUnVsZScpXG4gICAgfSBlbHNlIGlmICh2YWx1ZSkge1xuICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC9bXlxcc10vZywgJycpXG4gICAgfVxuICAgIHJldHVybiB2YWx1ZVxuICB9XG5cbiAgcmF3QmVmb3JlUnVsZSAocm9vdCkge1xuICAgIGxldCB2YWx1ZVxuICAgIHJvb3Qud2FsayhpID0+IHtcbiAgICAgIGlmIChpLm5vZGVzICYmIChpLnBhcmVudCAhPT0gcm9vdCB8fCByb290LmZpcnN0ICE9PSBpKSkge1xuICAgICAgICBpZiAodHlwZW9mIGkucmF3cy5iZWZvcmUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgdmFsdWUgPSBpLnJhd3MuYmVmb3JlXG4gICAgICAgICAgaWYgKHZhbHVlLmluZGV4T2YoJ1xcbicpICE9PSAtMSkge1xuICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC9bXlxcbl0rJC8sICcnKVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXG4gICAgaWYgKHZhbHVlKSB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL1teXFxzXS9nLCAnJylcbiAgICByZXR1cm4gdmFsdWVcbiAgfVxuXG4gIHJhd0JlZm9yZUNsb3NlIChyb290KSB7XG4gICAgbGV0IHZhbHVlXG4gICAgcm9vdC53YWxrKGkgPT4ge1xuICAgICAgaWYgKGkubm9kZXMgJiYgaS5ub2Rlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGlmICh0eXBlb2YgaS5yYXdzLmFmdGVyICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgIHZhbHVlID0gaS5yYXdzLmFmdGVyXG4gICAgICAgICAgaWYgKHZhbHVlLmluZGV4T2YoJ1xcbicpICE9PSAtMSkge1xuICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC9bXlxcbl0rJC8sICcnKVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXG4gICAgaWYgKHZhbHVlKSB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL1teXFxzXS9nLCAnJylcbiAgICByZXR1cm4gdmFsdWVcbiAgfVxuXG4gIHJhd0JlZm9yZU9wZW4gKHJvb3QpIHtcbiAgICBsZXQgdmFsdWVcbiAgICByb290LndhbGsoaSA9PiB7XG4gICAgICBpZiAoaS50eXBlICE9PSAnZGVjbCcpIHtcbiAgICAgICAgdmFsdWUgPSBpLnJhd3MuYmV0d2VlblxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAndW5kZWZpbmVkJykgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgfSlcbiAgICByZXR1cm4gdmFsdWVcbiAgfVxuXG4gIHJhd0NvbG9uIChyb290KSB7XG4gICAgbGV0IHZhbHVlXG4gICAgcm9vdC53YWxrRGVjbHMoaSA9PiB7XG4gICAgICBpZiAodHlwZW9mIGkucmF3cy5iZXR3ZWVuICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICB2YWx1ZSA9IGkucmF3cy5iZXR3ZWVuLnJlcGxhY2UoL1teXFxzOl0vZywgJycpXG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgIH0pXG4gICAgcmV0dXJuIHZhbHVlXG4gIH1cblxuICBiZWZvcmVBZnRlciAobm9kZSwgZGV0ZWN0KSB7XG4gICAgbGV0IHZhbHVlXG4gICAgaWYgKG5vZGUudHlwZSA9PT0gJ2RlY2wnKSB7XG4gICAgICB2YWx1ZSA9IHRoaXMucmF3KG5vZGUsIG51bGwsICdiZWZvcmVEZWNsJylcbiAgICB9IGVsc2UgaWYgKG5vZGUudHlwZSA9PT0gJ2NvbW1lbnQnKSB7XG4gICAgICB2YWx1ZSA9IHRoaXMucmF3KG5vZGUsIG51bGwsICdiZWZvcmVDb21tZW50JylcbiAgICB9IGVsc2UgaWYgKGRldGVjdCA9PT0gJ2JlZm9yZScpIHtcbiAgICAgIHZhbHVlID0gdGhpcy5yYXcobm9kZSwgbnVsbCwgJ2JlZm9yZVJ1bGUnKVxuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZSA9IHRoaXMucmF3KG5vZGUsIG51bGwsICdiZWZvcmVDbG9zZScpXG4gICAgfVxuXG4gICAgbGV0IGJ1ZiA9IG5vZGUucGFyZW50XG4gICAgbGV0IGRlcHRoID0gMFxuICAgIHdoaWxlIChidWYgJiYgYnVmLnR5cGUgIT09ICdyb290Jykge1xuICAgICAgZGVwdGggKz0gMVxuICAgICAgYnVmID0gYnVmLnBhcmVudFxuICAgIH1cblxuICAgIGlmICh2YWx1ZS5pbmRleE9mKCdcXG4nKSAhPT0gLTEpIHtcbiAgICAgIGxldCBpbmRlbnQgPSB0aGlzLnJhdyhub2RlLCBudWxsLCAnaW5kZW50JylcbiAgICAgIGlmIChpbmRlbnQubGVuZ3RoKSB7XG4gICAgICAgIGZvciAobGV0IHN0ZXAgPSAwOyBzdGVwIDwgZGVwdGg7IHN0ZXArKykgdmFsdWUgKz0gaW5kZW50XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlXG4gIH1cblxuICByYXdWYWx1ZSAobm9kZSwgcHJvcCkge1xuICAgIGxldCB2YWx1ZSA9IG5vZGVbcHJvcF1cbiAgICBsZXQgcmF3ID0gbm9kZS5yYXdzW3Byb3BdXG4gICAgaWYgKHJhdyAmJiByYXcudmFsdWUgPT09IHZhbHVlKSB7XG4gICAgICByZXR1cm4gcmF3LnJhd1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdmFsdWVcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgU3RyaW5naWZpZXJcbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _lazyResult = require('./lazy-result');\n\nvar _lazyResult2 = _interopRequireDefault(_lazyResult);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * Contains plugins to process CSS. Create one `Processor` instance,\n * initialize its plugins, and then use that instance on numerous CSS files.\n *\n * @example\n * const processor = postcss([autoprefixer, precss])\n * processor.process(css1).then(result => console.log(result.css))\n * processor.process(css2).then(result => console.log(result.css))\n */\nvar Processor = function () {\n /**\n * @param {Array.|Processor} plugins PostCSS plugins.\n * See {@link Processor#use} for plugin format.\n */\n function Processor() {\n var plugins = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n _classCallCheck(this, Processor);\n\n /**\n * Current PostCSS version.\n *\n * @type {string}\n *\n * @example\n * if (result.processor.version.split('.')[0] !== '6') {\n * throw new Error('This plugin works only with PostCSS 6')\n * }\n */\n this.version = '7.0.2';\n /**\n * Plugins added to this processor.\n *\n * @type {pluginFunction[]}\n *\n * @example\n * const processor = postcss([autoprefixer, precss])\n * processor.plugins.length //=> 2\n */\n this.plugins = this.normalize(plugins);\n }\n\n /**\n * Adds a plugin to be used as a CSS processor.\n *\n * PostCSS plugin can be in 4 formats:\n * * A plugin created by {@link postcss.plugin} method.\n * * A function. PostCSS will pass the function a @{link Root}\n * as the first argument and current {@link Result} instance\n * as the second.\n * * An object with a `postcss` method. PostCSS will use that method\n * as described in #2.\n * * Another {@link Processor} instance. PostCSS will copy plugins\n * from that instance into this one.\n *\n * Plugins can also be added by passing them as arguments when creating\n * a `postcss` instance (see [`postcss(plugins)`]).\n *\n * Asynchronous plugins should return a `Promise` instance.\n *\n * @param {Plugin|pluginFunction|Processor} plugin PostCSS plugin\n * or {@link Processor}\n * with plugins.\n *\n * @example\n * const processor = postcss()\n * .use(autoprefixer)\n * .use(precss)\n *\n * @return {Processes} Current processor to make methods chain.\n */\n\n\n Processor.prototype.use = function use(plugin) {\n this.plugins = this.plugins.concat(this.normalize([plugin]));\n return this;\n };\n\n /**\n * Parses source CSS and returns a {@link LazyResult} Promise proxy.\n * Because some plugins can be asynchronous it doesn’t make\n * any transformations. Transformations will be applied\n * in the {@link LazyResult} methods.\n *\n * @param {string|toString|Result} css String with input CSS or any object\n * with a `toString()` method,\n * like a Buffer. Optionally, send\n * a {@link Result} instance\n * and the processor will take\n * the {@link Root} from it.\n * @param {processOptions} [opts] Options.\n *\n * @return {LazyResult} Promise proxy.\n *\n * @example\n * processor.process(css, { from: 'a.css', to: 'a.out.css' })\n * .then(result => {\n * console.log(result.css)\n * })\n */\n\n\n Processor.prototype.process = function (_process) {\n function process(_x) {\n return _process.apply(this, arguments);\n }\n\n process.toString = function () {\n return _process.toString();\n };\n\n return process;\n }(function (css) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (this.plugins.length === 0 && opts.parser === opts.stringifier) {\n if (process.env.NODE_ENV !== 'production') {\n if (typeof console !== 'undefined' && console.warn) {\n console.warn('You did not set any plugins, parser, or stringifier. ' + 'Right now PostCSS do nothing. Pick plugins for your case ' + 'on https://www.postcss.parts/ and use them in postcss.config.js.');\n }\n }\n }\n return new _lazyResult2.default(this, css, opts);\n });\n\n Processor.prototype.normalize = function normalize(plugins) {\n var normalized = [];\n for (var _iterator = plugins, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var i = _ref;\n\n if (i.postcss) i = i.postcss;\n\n if ((typeof i === 'undefined' ? 'undefined' : _typeof(i)) === 'object' && Array.isArray(i.plugins)) {\n normalized = normalized.concat(i.plugins);\n } else if (typeof i === 'function') {\n normalized.push(i);\n } else if ((typeof i === 'undefined' ? 'undefined' : _typeof(i)) === 'object' && (i.parse || i.stringify)) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error('PostCSS syntaxes cannot be used as plugins. Instead, please use ' + 'one of the syntax/parser/stringifier options as outlined ' + 'in your PostCSS runner documentation.');\n }\n } else {\n throw new Error(i + ' is not a PostCSS plugin');\n }\n }\n return normalized;\n };\n\n return Processor;\n}();\n\nexports.default = Processor;\n\n/**\n * @callback builder\n * @param {string} part Part of generated CSS connected to this node.\n * @param {Node} node AST node.\n * @param {\"start\"|\"end\"} [type] Node’s part type.\n */\n\n/**\n * @callback parser\n *\n * @param {string|toString} css String with input CSS or any object\n * with toString() method, like a Buffer.\n * @param {processOptions} [opts] Options with only `from` and `map` keys.\n *\n * @return {Root} PostCSS AST\n */\n\n/**\n * @callback stringifier\n *\n * @param {Node} node Start node for stringifing. Usually {@link Root}.\n * @param {builder} builder Function to concatenate CSS from node’s parts\n * or generate string and source map.\n *\n * @return {void}\n */\n\n/**\n * @typedef {object} syntax\n * @property {parser} parse Function to generate AST by string.\n * @property {stringifier} stringify Function to generate string by AST.\n */\n\n/**\n * @typedef {object} toString\n * @property {function} toString\n */\n\n/**\n * @callback pluginFunction\n * @param {Root} root Parsed input CSS.\n * @param {Result} result Result to set warnings or check other plugins.\n */\n\n/**\n * @typedef {object} Plugin\n * @property {function} postcss PostCSS plugin function.\n */\n\n/**\n * @typedef {object} processOptions\n * @property {string} from The path of the CSS source file.\n * You should always set `from`,\n * because it is used in source map\n * generation and syntax error messages.\n * @property {string} to The path where you’ll put the output\n * CSS file. You should always set `to`\n * to generate correct source maps.\n * @property {parser} parser Function to generate AST by string.\n * @property {stringifier} stringifier Class to generate string by AST.\n * @property {syntax} syntax Object with `parse` and `stringify`.\n * @property {object} map Source map options.\n * @property {boolean} map.inline Does source map should\n * be embedded in the output\n * CSS as a base64-encoded\n * comment.\n * @property {string|object|false|function} map.prev Source map content\n * from a previous\n * processing step\n * (for example, Sass).\n * PostCSS will try to find\n * previous map automatically,\n * so you could disable it by\n * `false` value.\n * @property {boolean} map.sourcesContent Does PostCSS should set\n * the origin content to map.\n * @property {string|false} map.annotation Does PostCSS should set\n * annotation comment to map.\n * @property {string} map.from Override `from` in map’s\n * sources`.\n */\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInByb2Nlc3Nvci5lczYiXSwibmFtZXMiOlsiUHJvY2Vzc29yIiwicGx1Z2lucyIsInZlcnNpb24iLCJub3JtYWxpemUiLCJ1c2UiLCJwbHVnaW4iLCJjb25jYXQiLCJwcm9jZXNzIiwiY3NzIiwib3B0cyIsImxlbmd0aCIsInBhcnNlciIsInN0cmluZ2lmaWVyIiwiZW52IiwiTk9ERV9FTlYiLCJjb25zb2xlIiwid2FybiIsIkxhenlSZXN1bHQiLCJub3JtYWxpemVkIiwiaSIsInBvc3Rjc3MiLCJBcnJheSIsImlzQXJyYXkiLCJwdXNoIiwicGFyc2UiLCJzdHJpbmdpZnkiLCJFcnJvciJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7Ozs7Ozs7O0FBRUE7Ozs7Ozs7OztJQVNNQSxTO0FBQ0o7Ozs7QUFJQSx1QkFBMkI7QUFBQSxRQUFkQyxPQUFjLHVFQUFKLEVBQUk7O0FBQUE7O0FBQ3pCOzs7Ozs7Ozs7O0FBVUEsU0FBS0MsT0FBTCxHQUFlLE9BQWY7QUFDQTs7Ozs7Ozs7O0FBU0EsU0FBS0QsT0FBTCxHQUFlLEtBQUtFLFNBQUwsQ0FBZUYsT0FBZixDQUFmO0FBQ0Q7O0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7c0JBNkJBRyxHLGdCQUFLQyxNLEVBQVE7QUFDWCxTQUFLSixPQUFMLEdBQWUsS0FBS0EsT0FBTCxDQUFhSyxNQUFiLENBQW9CLEtBQUtILFNBQUwsQ0FBZSxDQUFDRSxNQUFELENBQWYsQ0FBcEIsQ0FBZjtBQUNBLFdBQU8sSUFBUDtBQUNELEc7O0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztzQkFzQkFFLE87Ozs7Ozs7Ozs7Y0FBU0MsRyxFQUFpQjtBQUFBLFFBQVpDLElBQVksdUVBQUwsRUFBSzs7QUFDeEIsUUFBSSxLQUFLUixPQUFMLENBQWFTLE1BQWIsS0FBd0IsQ0FBeEIsSUFBNkJELEtBQUtFLE1BQUwsS0FBZ0JGLEtBQUtHLFdBQXRELEVBQW1FO0FBQ2pFLFVBQUlMLFFBQVFNLEdBQVIsQ0FBWUMsUUFBWixLQUF5QixZQUE3QixFQUEyQztBQUN6QyxZQUFJLE9BQU9DLE9BQVAsS0FBbUIsV0FBbkIsSUFBa0NBLFFBQVFDLElBQTlDLEVBQW9EO0FBQ2xERCxrQkFBUUMsSUFBUixDQUNFLDBEQUNBLDJEQURBLEdBRUEsa0VBSEY7QUFLRDtBQUNGO0FBQ0Y7QUFDRCxXQUFPLElBQUlDLG9CQUFKLENBQWUsSUFBZixFQUFxQlQsR0FBckIsRUFBMEJDLElBQTFCLENBQVA7QUFDRCxHOztzQkFFRE4sUyxzQkFBV0YsTyxFQUFTO0FBQ2xCLFFBQUlpQixhQUFhLEVBQWpCO0FBQ0EseUJBQWNqQixPQUFkLGtIQUF1QjtBQUFBOztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQUEsVUFBZGtCLENBQWM7O0FBQ3JCLFVBQUlBLEVBQUVDLE9BQU4sRUFBZUQsSUFBSUEsRUFBRUMsT0FBTjs7QUFFZixVQUFJLFFBQU9ELENBQVAseUNBQU9BLENBQVAsT0FBYSxRQUFiLElBQXlCRSxNQUFNQyxPQUFOLENBQWNILEVBQUVsQixPQUFoQixDQUE3QixFQUF1RDtBQUNyRGlCLHFCQUFhQSxXQUFXWixNQUFYLENBQWtCYSxFQUFFbEIsT0FBcEIsQ0FBYjtBQUNELE9BRkQsTUFFTyxJQUFJLE9BQU9rQixDQUFQLEtBQWEsVUFBakIsRUFBNkI7QUFDbENELG1CQUFXSyxJQUFYLENBQWdCSixDQUFoQjtBQUNELE9BRk0sTUFFQSxJQUFJLFFBQU9BLENBQVAseUNBQU9BLENBQVAsT0FBYSxRQUFiLEtBQTBCQSxFQUFFSyxLQUFGLElBQVdMLEVBQUVNLFNBQXZDLENBQUosRUFBdUQ7QUFDNUQsWUFBSWxCLFFBQVFNLEdBQVIsQ0FBWUMsUUFBWixLQUF5QixZQUE3QixFQUEyQztBQUN6QyxnQkFBTSxJQUFJWSxLQUFKLENBQ0oscUVBQ0EsMkRBREEsR0FFQSx1Q0FISSxDQUFOO0FBS0Q7QUFDRixPQVJNLE1BUUE7QUFDTCxjQUFNLElBQUlBLEtBQUosQ0FBVVAsSUFBSSwwQkFBZCxDQUFOO0FBQ0Q7QUFDRjtBQUNELFdBQU9ELFVBQVA7QUFDRCxHOzs7OztrQkFHWWxCLFM7O0FBRWY7Ozs7Ozs7QUFPQTs7Ozs7Ozs7OztBQVVBOzs7Ozs7Ozs7O0FBVUE7Ozs7OztBQU1BOzs7OztBQUtBOzs7Ozs7QUFNQTs7Ozs7QUFLQSIsImZpbGUiOiJwcm9jZXNzb3IuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTGF6eVJlc3VsdCBmcm9tICcuL2xhenktcmVzdWx0J1xuXG4vKipcbiAqIENvbnRhaW5zIHBsdWdpbnMgdG8gcHJvY2VzcyBDU1MuIENyZWF0ZSBvbmUgYFByb2Nlc3NvcmAgaW5zdGFuY2UsXG4gKiBpbml0aWFsaXplIGl0cyBwbHVnaW5zLCBhbmQgdGhlbiB1c2UgdGhhdCBpbnN0YW5jZSBvbiBudW1lcm91cyBDU1MgZmlsZXMuXG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IHByb2Nlc3NvciA9IHBvc3Rjc3MoW2F1dG9wcmVmaXhlciwgcHJlY3NzXSlcbiAqIHByb2Nlc3Nvci5wcm9jZXNzKGNzczEpLnRoZW4ocmVzdWx0ID0+IGNvbnNvbGUubG9nKHJlc3VsdC5jc3MpKVxuICogcHJvY2Vzc29yLnByb2Nlc3MoY3NzMikudGhlbihyZXN1bHQgPT4gY29uc29sZS5sb2cocmVzdWx0LmNzcykpXG4gKi9cbmNsYXNzIFByb2Nlc3NvciB7XG4gIC8qKlxuICAgKiBAcGFyYW0ge0FycmF5LjxQbHVnaW58cGx1Z2luRnVuY3Rpb24+fFByb2Nlc3Nvcn0gcGx1Z2lucyBQb3N0Q1NTIHBsdWdpbnMuXG4gICAqICAgICAgICBTZWUge0BsaW5rIFByb2Nlc3NvciN1c2V9IGZvciBwbHVnaW4gZm9ybWF0LlxuICAgKi9cbiAgY29uc3RydWN0b3IgKHBsdWdpbnMgPSBbXSkge1xuICAgIC8qKlxuICAgICAqIEN1cnJlbnQgUG9zdENTUyB2ZXJzaW9uLlxuICAgICAqXG4gICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogaWYgKHJlc3VsdC5wcm9jZXNzb3IudmVyc2lvbi5zcGxpdCgnLicpWzBdICE9PSAnNicpIHtcbiAgICAgKiAgIHRocm93IG5ldyBFcnJvcignVGhpcyBwbHVnaW4gd29ya3Mgb25seSB3aXRoIFBvc3RDU1MgNicpXG4gICAgICogfVxuICAgICAqL1xuICAgIHRoaXMudmVyc2lvbiA9ICc3LjAuMidcbiAgICAvKipcbiAgICAgKiBQbHVnaW5zIGFkZGVkIHRvIHRoaXMgcHJvY2Vzc29yLlxuICAgICAqXG4gICAgICogQHR5cGUge3BsdWdpbkZ1bmN0aW9uW119XG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGNvbnN0IHByb2Nlc3NvciA9IHBvc3Rjc3MoW2F1dG9wcmVmaXhlciwgcHJlY3NzXSlcbiAgICAgKiBwcm9jZXNzb3IucGx1Z2lucy5sZW5ndGggLy89PiAyXG4gICAgICovXG4gICAgdGhpcy5wbHVnaW5zID0gdGhpcy5ub3JtYWxpemUocGx1Z2lucylcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgcGx1Z2luIHRvIGJlIHVzZWQgYXMgYSBDU1MgcHJvY2Vzc29yLlxuICAgKlxuICAgKiBQb3N0Q1NTIHBsdWdpbiBjYW4gYmUgaW4gNCBmb3JtYXRzOlxuICAgKiAqIEEgcGx1Z2luIGNyZWF0ZWQgYnkge0BsaW5rIHBvc3Rjc3MucGx1Z2lufSBtZXRob2QuXG4gICAqICogQSBmdW5jdGlvbi4gUG9zdENTUyB3aWxsIHBhc3MgdGhlIGZ1bmN0aW9uIGEgQHtsaW5rIFJvb3R9XG4gICAqICAgYXMgdGhlIGZpcnN0IGFyZ3VtZW50IGFuZCBjdXJyZW50IHtAbGluayBSZXN1bHR9IGluc3RhbmNlXG4gICAqICAgYXMgdGhlIHNlY29uZC5cbiAgICogKiBBbiBvYmplY3Qgd2l0aCBhIGBwb3N0Y3NzYCBtZXRob2QuIFBvc3RDU1Mgd2lsbCB1c2UgdGhhdCBtZXRob2RcbiAgICogICBhcyBkZXNjcmliZWQgaW4gIzIuXG4gICAqICogQW5vdGhlciB7QGxpbmsgUHJvY2Vzc29yfSBpbnN0YW5jZS4gUG9zdENTUyB3aWxsIGNvcHkgcGx1Z2luc1xuICAgKiAgIGZyb20gdGhhdCBpbnN0YW5jZSBpbnRvIHRoaXMgb25lLlxuICAgKlxuICAgKiBQbHVnaW5zIGNhbiBhbHNvIGJlIGFkZGVkIGJ5IHBhc3NpbmcgdGhlbSBhcyBhcmd1bWVudHMgd2hlbiBjcmVhdGluZ1xuICAgKiBhIGBwb3N0Y3NzYCBpbnN0YW5jZSAoc2VlIFtgcG9zdGNzcyhwbHVnaW5zKWBdKS5cbiAgICpcbiAgICogQXN5bmNocm9ub3VzIHBsdWdpbnMgc2hvdWxkIHJldHVybiBhIGBQcm9taXNlYCBpbnN0YW5jZS5cbiAgICpcbiAgICogQHBhcmFtIHtQbHVnaW58cGx1Z2luRnVuY3Rpb258UHJvY2Vzc29yfSBwbHVnaW4gUG9zdENTUyBwbHVnaW5cbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Ige0BsaW5rIFByb2Nlc3Nvcn1cbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBwbHVnaW5zLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBjb25zdCBwcm9jZXNzb3IgPSBwb3N0Y3NzKClcbiAgICogICAudXNlKGF1dG9wcmVmaXhlcilcbiAgICogICAudXNlKHByZWNzcylcbiAgICpcbiAgICogQHJldHVybiB7UHJvY2Vzc2VzfSBDdXJyZW50IHByb2Nlc3NvciB0byBtYWtlIG1ldGhvZHMgY2hhaW4uXG4gICAqL1xuICB1c2UgKHBsdWdpbikge1xuICAgIHRoaXMucGx1Z2lucyA9IHRoaXMucGx1Z2lucy5jb25jYXQodGhpcy5ub3JtYWxpemUoW3BsdWdpbl0pKVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvKipcbiAgICogUGFyc2VzIHNvdXJjZSBDU1MgYW5kIHJldHVybnMgYSB7QGxpbmsgTGF6eVJlc3VsdH0gUHJvbWlzZSBwcm94eS5cbiAgICogQmVjYXVzZSBzb21lIHBsdWdpbnMgY2FuIGJlIGFzeW5jaHJvbm91cyBpdCBkb2VzbuKAmXQgbWFrZVxuICAgKiBhbnkgdHJhbnNmb3JtYXRpb25zLiBUcmFuc2Zvcm1hdGlvbnMgd2lsbCBiZSBhcHBsaWVkXG4gICAqIGluIHRoZSB7QGxpbmsgTGF6eVJlc3VsdH0gbWV0aG9kcy5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd8dG9TdHJpbmd8UmVzdWx0fSBjc3MgU3RyaW5nIHdpdGggaW5wdXQgQ1NTIG9yIGFueSBvYmplY3RcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBhIGB0b1N0cmluZygpYCBtZXRob2QsXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpa2UgYSBCdWZmZXIuIE9wdGlvbmFsbHksIHNlbmRcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSB7QGxpbmsgUmVzdWx0fSBpbnN0YW5jZVxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgdGhlIHByb2Nlc3NvciB3aWxsIHRha2VcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHtAbGluayBSb290fSBmcm9tIGl0LlxuICAgKiBAcGFyYW0ge3Byb2Nlc3NPcHRpb25zfSBbb3B0c10gICAgICBPcHRpb25zLlxuICAgKlxuICAgKiBAcmV0dXJuIHtMYXp5UmVzdWx0fSBQcm9taXNlIHByb3h5LlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBwcm9jZXNzb3IucHJvY2Vzcyhjc3MsIHsgZnJvbTogJ2EuY3NzJywgdG86ICdhLm91dC5jc3MnIH0pXG4gICAqICAgLnRoZW4ocmVzdWx0ID0+IHtcbiAgICogICAgICBjb25zb2xlLmxvZyhyZXN1bHQuY3NzKVxuICAgKiAgIH0pXG4gICAqL1xuICBwcm9jZXNzIChjc3MsIG9wdHMgPSB7IH0pIHtcbiAgICBpZiAodGhpcy5wbHVnaW5zLmxlbmd0aCA9PT0gMCAmJiBvcHRzLnBhcnNlciA9PT0gb3B0cy5zdHJpbmdpZmllcikge1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJyAmJiBjb25zb2xlLndhcm4pIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICAnWW91IGRpZCBub3Qgc2V0IGFueSBwbHVnaW5zLCBwYXJzZXIsIG9yIHN0cmluZ2lmaWVyLiAnICtcbiAgICAgICAgICAgICdSaWdodCBub3cgUG9zdENTUyBkbyBub3RoaW5nLiBQaWNrIHBsdWdpbnMgZm9yIHlvdXIgY2FzZSAnICtcbiAgICAgICAgICAgICdvbiBodHRwczovL3d3dy5wb3N0Y3NzLnBhcnRzLyBhbmQgdXNlIHRoZW0gaW4gcG9zdGNzcy5jb25maWcuanMuJ1xuICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbmV3IExhenlSZXN1bHQodGhpcywgY3NzLCBvcHRzKVxuICB9XG5cbiAgbm9ybWFsaXplIChwbHVnaW5zKSB7XG4gICAgbGV0IG5vcm1hbGl6ZWQgPSBbXVxuICAgIGZvciAobGV0IGkgb2YgcGx1Z2lucykge1xuICAgICAgaWYgKGkucG9zdGNzcykgaSA9IGkucG9zdGNzc1xuXG4gICAgICBpZiAodHlwZW9mIGkgPT09ICdvYmplY3QnICYmIEFycmF5LmlzQXJyYXkoaS5wbHVnaW5zKSkge1xuICAgICAgICBub3JtYWxpemVkID0gbm9ybWFsaXplZC5jb25jYXQoaS5wbHVnaW5zKVxuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgaSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBub3JtYWxpemVkLnB1c2goaSlcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGkgPT09ICdvYmplY3QnICYmIChpLnBhcnNlIHx8IGkuc3RyaW5naWZ5KSkge1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICdQb3N0Q1NTIHN5bnRheGVzIGNhbm5vdCBiZSB1c2VkIGFzIHBsdWdpbnMuIEluc3RlYWQsIHBsZWFzZSB1c2UgJyArXG4gICAgICAgICAgICAnb25lIG9mIHRoZSBzeW50YXgvcGFyc2VyL3N0cmluZ2lmaWVyIG9wdGlvbnMgYXMgb3V0bGluZWQgJyArXG4gICAgICAgICAgICAnaW4geW91ciBQb3N0Q1NTIHJ1bm5lciBkb2N1bWVudGF0aW9uLidcbiAgICAgICAgICApXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihpICsgJyBpcyBub3QgYSBQb3N0Q1NTIHBsdWdpbicpXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBub3JtYWxpemVkXG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgUHJvY2Vzc29yXG5cbi8qKlxuICogQGNhbGxiYWNrIGJ1aWxkZXJcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXJ0ICAgICAgICAgIFBhcnQgb2YgZ2VuZXJhdGVkIENTUyBjb25uZWN0ZWQgdG8gdGhpcyBub2RlLlxuICogQHBhcmFtIHtOb2RlfSAgIG5vZGUgICAgICAgICAgQVNUIG5vZGUuXG4gKiBAcGFyYW0ge1wic3RhcnRcInxcImVuZFwifSBbdHlwZV0gTm9kZeKAmXMgcGFydCB0eXBlLlxuICovXG5cbi8qKlxuICogQGNhbGxiYWNrIHBhcnNlclxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfHRvU3RyaW5nfSBjc3MgICBTdHJpbmcgd2l0aCBpbnB1dCBDU1Mgb3IgYW55IG9iamVjdFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggdG9TdHJpbmcoKSBtZXRob2QsIGxpa2UgYSBCdWZmZXIuXG4gKiBAcGFyYW0ge3Byb2Nlc3NPcHRpb25zfSBbb3B0c10gT3B0aW9ucyB3aXRoIG9ubHkgYGZyb21gIGFuZCBgbWFwYCBrZXlzLlxuICpcbiAqIEByZXR1cm4ge1Jvb3R9IFBvc3RDU1MgQVNUXG4gKi9cblxuLyoqXG4gKiBAY2FsbGJhY2sgc3RyaW5naWZpZXJcbiAqXG4gKiBAcGFyYW0ge05vZGV9IG5vZGUgICAgICAgU3RhcnQgbm9kZSBmb3Igc3RyaW5naWZpbmcuIFVzdWFsbHkge0BsaW5rIFJvb3R9LlxuICogQHBhcmFtIHtidWlsZGVyfSBidWlsZGVyIEZ1bmN0aW9uIHRvIGNvbmNhdGVuYXRlIENTUyBmcm9tIG5vZGXigJlzIHBhcnRzXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgb3IgZ2VuZXJhdGUgc3RyaW5nIGFuZCBzb3VyY2UgbWFwLlxuICpcbiAqIEByZXR1cm4ge3ZvaWR9XG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBzeW50YXhcbiAqIEBwcm9wZXJ0eSB7cGFyc2VyfSBwYXJzZSAgICAgICAgICBGdW5jdGlvbiB0byBnZW5lcmF0ZSBBU1QgYnkgc3RyaW5nLlxuICogQHByb3BlcnR5IHtzdHJpbmdpZmllcn0gc3RyaW5naWZ5IEZ1bmN0aW9uIHRvIGdlbmVyYXRlIHN0cmluZyBieSBBU1QuXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSB0b1N0cmluZ1xuICogQHByb3BlcnR5IHtmdW5jdGlvbn0gdG9TdHJpbmdcbiAqL1xuXG4vKipcbiAqIEBjYWxsYmFjayBwbHVnaW5GdW5jdGlvblxuICogQHBhcmFtIHtSb290fSByb290ICAgICBQYXJzZWQgaW5wdXQgQ1NTLlxuICogQHBhcmFtIHtSZXN1bHR9IHJlc3VsdCBSZXN1bHQgdG8gc2V0IHdhcm5pbmdzIG9yIGNoZWNrIG90aGVyIHBsdWdpbnMuXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBQbHVnaW5cbiAqIEBwcm9wZXJ0eSB7ZnVuY3Rpb259IHBvc3Rjc3MgUG9zdENTUyBwbHVnaW4gZnVuY3Rpb24uXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBwcm9jZXNzT3B0aW9uc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IGZyb20gICAgICAgICAgICAgVGhlIHBhdGggb2YgdGhlIENTUyBzb3VyY2UgZmlsZS5cbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBzaG91bGQgYWx3YXlzIHNldCBgZnJvbWAsXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWNhdXNlIGl0IGlzIHVzZWQgaW4gc291cmNlIG1hcFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGlvbiBhbmQgc3ludGF4IGVycm9yIG1lc3NhZ2VzLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IHRvICAgICAgICAgICAgICAgVGhlIHBhdGggd2hlcmUgeW914oCZbGwgcHV0IHRoZSBvdXRwdXRcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTUyBmaWxlLiBZb3Ugc2hvdWxkIGFsd2F5cyBzZXQgYHRvYFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gZ2VuZXJhdGUgY29ycmVjdCBzb3VyY2UgbWFwcy5cbiAqIEBwcm9wZXJ0eSB7cGFyc2VyfSBwYXJzZXIgICAgICAgICAgIEZ1bmN0aW9uIHRvIGdlbmVyYXRlIEFTVCBieSBzdHJpbmcuXG4gKiBAcHJvcGVydHkge3N0cmluZ2lmaWVyfSBzdHJpbmdpZmllciBDbGFzcyB0byBnZW5lcmF0ZSBzdHJpbmcgYnkgQVNULlxuICogQHByb3BlcnR5IHtzeW50YXh9IHN5bnRheCAgICAgICAgICAgT2JqZWN0IHdpdGggYHBhcnNlYCBhbmQgYHN0cmluZ2lmeWAuXG4gKiBAcHJvcGVydHkge29iamVjdH0gbWFwICAgICAgICAgICAgICBTb3VyY2UgbWFwIG9wdGlvbnMuXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IG1hcC5pbmxpbmUgICAgICAgICAgICAgICAgICAgIERvZXMgc291cmNlIG1hcCBzaG91bGRcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmUgZW1iZWRkZWQgaW4gdGhlIG91dHB1dFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1MgYXMgYSBiYXNlNjQtZW5jb2RlZFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tZW50LlxuICogQHByb3BlcnR5IHtzdHJpbmd8b2JqZWN0fGZhbHNlfGZ1bmN0aW9ufSBtYXAucHJldiBTb3VyY2UgbWFwIGNvbnRlbnRcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSBhIHByZXZpb3VzXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3Npbmcgc3RlcFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9yIGV4YW1wbGUsIFNhc3MpLlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQb3N0Q1NTIHdpbGwgdHJ5IHRvIGZpbmRcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXMgbWFwIGF1dG9tYXRpY2FsbHksXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvIHlvdSBjb3VsZCBkaXNhYmxlIGl0IGJ5XG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBmYWxzZWAgdmFsdWUuXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IG1hcC5zb3VyY2VzQ29udGVudCAgICAgICAgICAgIERvZXMgUG9zdENTUyBzaG91bGQgc2V0XG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBvcmlnaW4gY29udGVudCB0byBtYXAuXG4gKiBAcHJvcGVydHkge3N0cmluZ3xmYWxzZX0gbWFwLmFubm90YXRpb24gICAgICAgICAgIERvZXMgUG9zdENTUyBzaG91bGQgc2V0XG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFubm90YXRpb24gY29tbWVudCB0byBtYXAuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gbWFwLmZyb20gICAgICAgICAgICAgICAgICAgICAgIE92ZXJyaWRlIGBmcm9tYCBpbiBtYXDigJlzXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZXNgLlxuICovXG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _mapGenerator = require('./map-generator');\n\nvar _mapGenerator2 = _interopRequireDefault(_mapGenerator);\n\nvar _stringify2 = require('./stringify');\n\nvar _stringify3 = _interopRequireDefault(_stringify2);\n\nvar _warnOnce = require('./warn-once');\n\nvar _warnOnce2 = _interopRequireDefault(_warnOnce);\n\nvar _result = require('./result');\n\nvar _result2 = _interopRequireDefault(_result);\n\nvar _parse = require('./parse');\n\nvar _parse2 = _interopRequireDefault(_parse);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction isPromise(obj) {\n return (typeof obj === 'undefined' ? 'undefined' : _typeof(obj)) === 'object' && typeof obj.then === 'function';\n}\n\n/**\n * A Promise proxy for the result of PostCSS transformations.\n *\n * A `LazyResult` instance is returned by {@link Processor#process}.\n *\n * @example\n * const lazy = postcss([cssnext]).process(css)\n */\n\nvar LazyResult = function () {\n function LazyResult(processor, css, opts) {\n _classCallCheck(this, LazyResult);\n\n this.stringified = false;\n this.processed = false;\n\n var root = void 0;\n if ((typeof css === 'undefined' ? 'undefined' : _typeof(css)) === 'object' && css !== null && css.type === 'root') {\n root = css;\n } else if (css instanceof LazyResult || css instanceof _result2.default) {\n root = css.root;\n if (css.map) {\n if (typeof opts.map === 'undefined') opts.map = {};\n if (!opts.map.inline) opts.map.inline = false;\n opts.map.prev = css.map;\n }\n } else {\n var parser = _parse2.default;\n if (opts.syntax) parser = opts.syntax.parse;\n if (opts.parser) parser = opts.parser;\n if (parser.parse) parser = parser.parse;\n\n try {\n root = parser(css, opts);\n } catch (error) {\n this.error = error;\n }\n }\n\n this.result = new _result2.default(processor, root, opts);\n }\n\n /**\n * Returns a {@link Processor} instance, which will be used\n * for CSS transformations.\n *\n * @type {Processor}\n */\n\n\n /**\n * Processes input CSS through synchronous plugins\n * and calls {@link Result#warnings()}.\n *\n * @return {Warning[]} Warnings from plugins.\n */\n LazyResult.prototype.warnings = function warnings() {\n return this.sync().warnings();\n };\n\n /**\n * Alias for the {@link LazyResult#css} property.\n *\n * @example\n * lazy + '' === lazy.css\n *\n * @return {string} Output CSS.\n */\n\n\n LazyResult.prototype.toString = function toString() {\n return this.css;\n };\n\n /**\n * Processes input CSS through synchronous and asynchronous plugins\n * and calls `onFulfilled` with a Result instance. If a plugin throws\n * an error, the `onRejected` callback will be executed.\n *\n * It implements standard Promise API.\n *\n * @param {onFulfilled} onFulfilled Callback will be executed\n * when all plugins will finish work.\n * @param {onRejected} onRejected Callback will be executed on any error.\n *\n * @return {Promise} Promise API to make queue.\n *\n * @example\n * postcss([cssnext]).process(css, { from: cssPath }).then(result => {\n * console.log(result.css)\n * })\n */\n\n\n LazyResult.prototype.then = function then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== 'production') {\n if (!('from' in this.opts)) {\n (0, _warnOnce2.default)('Without `from` option PostCSS could generate wrong source map ' + 'and will not find Browserslist config. Set it to CSS file path ' + 'or to `undefined` to prevent this warning.');\n }\n }\n return this.async().then(onFulfilled, onRejected);\n };\n\n /**\n * Processes input CSS through synchronous and asynchronous plugins\n * and calls onRejected for each error thrown in any plugin.\n *\n * It implements standard Promise API.\n *\n * @param {onRejected} onRejected Callback will be executed on any error.\n *\n * @return {Promise} Promise API to make queue.\n *\n * @example\n * postcss([cssnext]).process(css).then(result => {\n * console.log(result.css)\n * }).catch(error => {\n * console.error(error)\n * })\n */\n\n\n LazyResult.prototype.catch = function _catch(onRejected) {\n return this.async().catch(onRejected);\n };\n /**\n * Processes input CSS through synchronous and asynchronous plugins\n * and calls onFinally on any error or when all plugins will finish work.\n *\n * It implements standard Promise API.\n *\n * @param {onFinally} onFinally Callback will be executed on any error or\n * when all plugins will finish work.\n *\n * @return {Promise} Promise API to make queue.\n *\n * @example\n * postcss([cssnext]).process(css).finally(() => {\n * console.log('processing ended')\n * })\n */\n\n\n LazyResult.prototype.finally = function _finally(onFinally) {\n return this.async().then(onFinally, onFinally);\n };\n\n LazyResult.prototype.handleError = function handleError(error, plugin) {\n try {\n this.error = error;\n if (error.name === 'CssSyntaxError' && !error.plugin) {\n error.plugin = plugin.postcssPlugin;\n error.setMessage();\n } else if (plugin.postcssVersion) {\n if (process.env.NODE_ENV !== 'production') {\n var pluginName = plugin.postcssPlugin;\n var pluginVer = plugin.postcssVersion;\n var runtimeVer = this.result.processor.version;\n var a = pluginVer.split('.');\n var b = runtimeVer.split('.');\n\n if (a[0] !== b[0] || parseInt(a[1]) > parseInt(b[1])) {\n console.error('Unknown error from PostCSS plugin. Your current PostCSS ' + 'version is ' + runtimeVer + ', but ' + pluginName + ' uses ' + pluginVer + '. Perhaps this is the source of the error below.');\n }\n }\n }\n } catch (err) {\n if (console && console.error) console.error(err);\n }\n };\n\n LazyResult.prototype.asyncTick = function asyncTick(resolve, reject) {\n var _this = this;\n\n if (this.plugin >= this.processor.plugins.length) {\n this.processed = true;\n return resolve();\n }\n\n try {\n var plugin = this.processor.plugins[this.plugin];\n var promise = this.run(plugin);\n this.plugin += 1;\n\n if (isPromise(promise)) {\n promise.then(function () {\n _this.asyncTick(resolve, reject);\n }).catch(function (error) {\n _this.handleError(error, plugin);\n _this.processed = true;\n reject(error);\n });\n } else {\n this.asyncTick(resolve, reject);\n }\n } catch (error) {\n this.processed = true;\n reject(error);\n }\n };\n\n LazyResult.prototype.async = function async() {\n var _this2 = this;\n\n if (this.processed) {\n return new Promise(function (resolve, reject) {\n if (_this2.error) {\n reject(_this2.error);\n } else {\n resolve(_this2.stringify());\n }\n });\n }\n if (this.processing) {\n return this.processing;\n }\n\n this.processing = new Promise(function (resolve, reject) {\n if (_this2.error) return reject(_this2.error);\n _this2.plugin = 0;\n _this2.asyncTick(resolve, reject);\n }).then(function () {\n _this2.processed = true;\n return _this2.stringify();\n });\n\n return this.processing;\n };\n\n LazyResult.prototype.sync = function sync() {\n if (this.processed) return this.result;\n this.processed = true;\n\n if (this.processing) {\n throw new Error('Use process(css).then(cb) to work with async plugins');\n }\n\n if (this.error) throw this.error;\n\n for (var _iterator = this.result.processor.plugins, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var plugin = _ref;\n\n var promise = this.run(plugin);\n if (isPromise(promise)) {\n throw new Error('Use process(css).then(cb) to work with async plugins');\n }\n }\n\n return this.result;\n };\n\n LazyResult.prototype.run = function run(plugin) {\n this.result.lastPlugin = plugin;\n\n try {\n return plugin(this.result.root, this.result);\n } catch (error) {\n this.handleError(error, plugin);\n throw error;\n }\n };\n\n LazyResult.prototype.stringify = function stringify() {\n if (this.stringified) return this.result;\n this.stringified = true;\n\n this.sync();\n\n var opts = this.result.opts;\n var str = _stringify3.default;\n if (opts.syntax) str = opts.syntax.stringify;\n if (opts.stringifier) str = opts.stringifier;\n if (str.stringify) str = str.stringify;\n\n var map = new _mapGenerator2.default(str, this.result.root, this.result.opts);\n var data = map.generate();\n this.result.css = data[0];\n this.result.map = data[1];\n\n return this.result;\n };\n\n _createClass(LazyResult, [{\n key: 'processor',\n get: function get() {\n return this.result.processor;\n }\n\n /**\n * Options from the {@link Processor#process} call.\n *\n * @type {processOptions}\n */\n\n }, {\n key: 'opts',\n get: function get() {\n return this.result.opts;\n }\n\n /**\n * Processes input CSS through synchronous plugins, converts `Root`\n * to a CSS string and returns {@link Result#css}.\n *\n * This property will only work with synchronous plugins.\n * If the processor contains any asynchronous plugins\n * it will throw an error. This is why this method is only\n * for debug purpose, you should always use {@link LazyResult#then}.\n *\n * @type {string}\n * @see Result#css\n */\n\n }, {\n key: 'css',\n get: function get() {\n return this.stringify().css;\n }\n\n /**\n * An alias for the `css` property. Use it with syntaxes\n * that generate non-CSS output.\n *\n * This property will only work with synchronous plugins.\n * If the processor contains any asynchronous plugins\n * it will throw an error. This is why this method is only\n * for debug purpose, you should always use {@link LazyResult#then}.\n *\n * @type {string}\n * @see Result#content\n */\n\n }, {\n key: 'content',\n get: function get() {\n return this.stringify().content;\n }\n\n /**\n * Processes input CSS through synchronous plugins\n * and returns {@link Result#map}.\n *\n * This property will only work with synchronous plugins.\n * If the processor contains any asynchronous plugins\n * it will throw an error. This is why this method is only\n * for debug purpose, you should always use {@link LazyResult#then}.\n *\n * @type {SourceMapGenerator}\n * @see Result#map\n */\n\n }, {\n key: 'map',\n get: function get() {\n return this.stringify().map;\n }\n\n /**\n * Processes input CSS through synchronous plugins\n * and returns {@link Result#root}.\n *\n * This property will only work with synchronous plugins. If the processor\n * contains any asynchronous plugins it will throw an error.\n *\n * This is why this method is only for debug purpose,\n * you should always use {@link LazyResult#then}.\n *\n * @type {Root}\n * @see Result#root\n */\n\n }, {\n key: 'root',\n get: function get() {\n return this.sync().root;\n }\n\n /**\n * Processes input CSS through synchronous plugins\n * and returns {@link Result#messages}.\n *\n * This property will only work with synchronous plugins. If the processor\n * contains any asynchronous plugins it will throw an error.\n *\n * This is why this method is only for debug purpose,\n * you should always use {@link LazyResult#then}.\n *\n * @type {Message[]}\n * @see Result#messages\n */\n\n }, {\n key: 'messages',\n get: function get() {\n return this.sync().messages;\n }\n }]);\n\n return LazyResult;\n}();\n\nexports.default = LazyResult;\n\n/**\n * @callback onFulfilled\n * @param {Result} result\n */\n\n/**\n * @callback onRejected\n * @param {Error} error\n */\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxhenktcmVzdWx0LmVzNiJdLCJuYW1lcyI6WyJpc1Byb21pc2UiLCJvYmoiLCJ0aGVuIiwiTGF6eVJlc3VsdCIsInByb2Nlc3NvciIsImNzcyIsIm9wdHMiLCJzdHJpbmdpZmllZCIsInByb2Nlc3NlZCIsInJvb3QiLCJ0eXBlIiwiUmVzdWx0IiwibWFwIiwiaW5saW5lIiwicHJldiIsInBhcnNlciIsInBhcnNlIiwic3ludGF4IiwiZXJyb3IiLCJyZXN1bHQiLCJ3YXJuaW5ncyIsInN5bmMiLCJ0b1N0cmluZyIsIm9uRnVsZmlsbGVkIiwib25SZWplY3RlZCIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsImFzeW5jIiwiY2F0Y2giLCJmaW5hbGx5Iiwib25GaW5hbGx5IiwiaGFuZGxlRXJyb3IiLCJwbHVnaW4iLCJuYW1lIiwicG9zdGNzc1BsdWdpbiIsInNldE1lc3NhZ2UiLCJwb3N0Y3NzVmVyc2lvbiIsInBsdWdpbk5hbWUiLCJwbHVnaW5WZXIiLCJydW50aW1lVmVyIiwidmVyc2lvbiIsImEiLCJzcGxpdCIsImIiLCJwYXJzZUludCIsImNvbnNvbGUiLCJlcnIiLCJhc3luY1RpY2siLCJyZXNvbHZlIiwicmVqZWN0IiwicGx1Z2lucyIsImxlbmd0aCIsInByb21pc2UiLCJydW4iLCJQcm9taXNlIiwic3RyaW5naWZ5IiwicHJvY2Vzc2luZyIsIkVycm9yIiwibGFzdFBsdWdpbiIsInN0ciIsInN0cmluZ2lmaWVyIiwiTWFwR2VuZXJhdG9yIiwiZGF0YSIsImdlbmVyYXRlIiwiY29udGVudCIsIm1lc3NhZ2VzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7Ozs7O0FBRUEsU0FBU0EsU0FBVCxDQUFvQkMsR0FBcEIsRUFBeUI7QUFDdkIsU0FBTyxRQUFPQSxHQUFQLHlDQUFPQSxHQUFQLE9BQWUsUUFBZixJQUEyQixPQUFPQSxJQUFJQyxJQUFYLEtBQW9CLFVBQXREO0FBQ0Q7O0FBRUQ7Ozs7Ozs7OztJQVFNQyxVO0FBQ0osc0JBQWFDLFNBQWIsRUFBd0JDLEdBQXhCLEVBQTZCQyxJQUE3QixFQUFtQztBQUFBOztBQUNqQyxTQUFLQyxXQUFMLEdBQW1CLEtBQW5CO0FBQ0EsU0FBS0MsU0FBTCxHQUFpQixLQUFqQjs7QUFFQSxRQUFJQyxhQUFKO0FBQ0EsUUFBSSxRQUFPSixHQUFQLHlDQUFPQSxHQUFQLE9BQWUsUUFBZixJQUEyQkEsUUFBUSxJQUFuQyxJQUEyQ0EsSUFBSUssSUFBSixLQUFhLE1BQTVELEVBQW9FO0FBQ2xFRCxhQUFPSixHQUFQO0FBQ0QsS0FGRCxNQUVPLElBQUlBLGVBQWVGLFVBQWYsSUFBNkJFLGVBQWVNLGdCQUFoRCxFQUF3RDtBQUM3REYsYUFBT0osSUFBSUksSUFBWDtBQUNBLFVBQUlKLElBQUlPLEdBQVIsRUFBYTtBQUNYLFlBQUksT0FBT04sS0FBS00sR0FBWixLQUFvQixXQUF4QixFQUFxQ04sS0FBS00sR0FBTCxHQUFXLEVBQVg7QUFDckMsWUFBSSxDQUFDTixLQUFLTSxHQUFMLENBQVNDLE1BQWQsRUFBc0JQLEtBQUtNLEdBQUwsQ0FBU0MsTUFBVCxHQUFrQixLQUFsQjtBQUN0QlAsYUFBS00sR0FBTCxDQUFTRSxJQUFULEdBQWdCVCxJQUFJTyxHQUFwQjtBQUNEO0FBQ0YsS0FQTSxNQU9BO0FBQ0wsVUFBSUcsU0FBU0MsZUFBYjtBQUNBLFVBQUlWLEtBQUtXLE1BQVQsRUFBaUJGLFNBQVNULEtBQUtXLE1BQUwsQ0FBWUQsS0FBckI7QUFDakIsVUFBSVYsS0FBS1MsTUFBVCxFQUFpQkEsU0FBU1QsS0FBS1MsTUFBZDtBQUNqQixVQUFJQSxPQUFPQyxLQUFYLEVBQWtCRCxTQUFTQSxPQUFPQyxLQUFoQjs7QUFFbEIsVUFBSTtBQUNGUCxlQUFPTSxPQUFPVixHQUFQLEVBQVlDLElBQVosQ0FBUDtBQUNELE9BRkQsQ0FFRSxPQUFPWSxLQUFQLEVBQWM7QUFDZCxhQUFLQSxLQUFMLEdBQWFBLEtBQWI7QUFDRDtBQUNGOztBQUVELFNBQUtDLE1BQUwsR0FBYyxJQUFJUixnQkFBSixDQUFXUCxTQUFYLEVBQXNCSyxJQUF0QixFQUE0QkgsSUFBNUIsQ0FBZDtBQUNEOztBQUVEOzs7Ozs7OztBQXFHQTs7Ozs7O3VCQU1BYyxRLHVCQUFZO0FBQ1YsV0FBTyxLQUFLQyxJQUFMLEdBQVlELFFBQVosRUFBUDtBQUNELEc7O0FBRUQ7Ozs7Ozs7Ozs7dUJBUUFFLFEsdUJBQVk7QUFDVixXQUFPLEtBQUtqQixHQUFaO0FBQ0QsRzs7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7dUJBa0JBSCxJLGlCQUFNcUIsVyxFQUFhQyxVLEVBQVk7QUFDN0IsUUFBSUMsUUFBUUMsR0FBUixDQUFZQyxRQUFaLEtBQXlCLFlBQTdCLEVBQTJDO0FBQ3pDLFVBQUksRUFBRSxVQUFVLEtBQUtyQixJQUFqQixDQUFKLEVBQTRCO0FBQzFCLGdDQUNFLG1FQUNBLGlFQURBLEdBRUEsNENBSEY7QUFLRDtBQUNGO0FBQ0QsV0FBTyxLQUFLc0IsS0FBTCxHQUFhMUIsSUFBYixDQUFrQnFCLFdBQWxCLEVBQStCQyxVQUEvQixDQUFQO0FBQ0QsRzs7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt1QkFpQkFLLEssbUJBQU9MLFUsRUFBWTtBQUNqQixXQUFPLEtBQUtJLEtBQUwsR0FBYUMsS0FBYixDQUFtQkwsVUFBbkIsQ0FBUDtBQUNELEc7QUFDRDs7Ozs7Ozs7Ozs7Ozs7Ozs7O3VCQWdCQU0sTyxxQkFBU0MsUyxFQUFXO0FBQ2xCLFdBQU8sS0FBS0gsS0FBTCxHQUFhMUIsSUFBYixDQUFrQjZCLFNBQWxCLEVBQTZCQSxTQUE3QixDQUFQO0FBQ0QsRzs7dUJBRURDLFcsd0JBQWFkLEssRUFBT2UsTSxFQUFRO0FBQzFCLFFBQUk7QUFDRixXQUFLZixLQUFMLEdBQWFBLEtBQWI7QUFDQSxVQUFJQSxNQUFNZ0IsSUFBTixLQUFlLGdCQUFmLElBQW1DLENBQUNoQixNQUFNZSxNQUE5QyxFQUFzRDtBQUNwRGYsY0FBTWUsTUFBTixHQUFlQSxPQUFPRSxhQUF0QjtBQUNBakIsY0FBTWtCLFVBQU47QUFDRCxPQUhELE1BR08sSUFBSUgsT0FBT0ksY0FBWCxFQUEyQjtBQUNoQyxZQUFJWixRQUFRQyxHQUFSLENBQVlDLFFBQVosS0FBeUIsWUFBN0IsRUFBMkM7QUFDekMsY0FBSVcsYUFBYUwsT0FBT0UsYUFBeEI7QUFDQSxjQUFJSSxZQUFZTixPQUFPSSxjQUF2QjtBQUNBLGNBQUlHLGFBQWEsS0FBS3JCLE1BQUwsQ0FBWWYsU0FBWixDQUFzQnFDLE9BQXZDO0FBQ0EsY0FBSUMsSUFBSUgsVUFBVUksS0FBVixDQUFnQixHQUFoQixDQUFSO0FBQ0EsY0FBSUMsSUFBSUosV0FBV0csS0FBWCxDQUFpQixHQUFqQixDQUFSOztBQUVBLGNBQUlELEVBQUUsQ0FBRixNQUFTRSxFQUFFLENBQUYsQ0FBVCxJQUFpQkMsU0FBU0gsRUFBRSxDQUFGLENBQVQsSUFBaUJHLFNBQVNELEVBQUUsQ0FBRixDQUFULENBQXRDLEVBQXNEO0FBQ3BERSxvQkFBUTVCLEtBQVIsQ0FDRSw2REFDQSxhQURBLEdBQ2dCc0IsVUFEaEIsR0FDNkIsUUFEN0IsR0FDd0NGLFVBRHhDLEdBQ3FELFFBRHJELEdBRUFDLFNBRkEsR0FFWSxrREFIZDtBQUtEO0FBQ0Y7QUFDRjtBQUNGLEtBdEJELENBc0JFLE9BQU9RLEdBQVAsRUFBWTtBQUNaLFVBQUlELFdBQVdBLFFBQVE1QixLQUF2QixFQUE4QjRCLFFBQVE1QixLQUFSLENBQWM2QixHQUFkO0FBQy9CO0FBQ0YsRzs7dUJBRURDLFMsc0JBQVdDLE8sRUFBU0MsTSxFQUFRO0FBQUE7O0FBQzFCLFFBQUksS0FBS2pCLE1BQUwsSUFBZSxLQUFLN0IsU0FBTCxDQUFlK0MsT0FBZixDQUF1QkMsTUFBMUMsRUFBa0Q7QUFDaEQsV0FBSzVDLFNBQUwsR0FBaUIsSUFBakI7QUFDQSxhQUFPeUMsU0FBUDtBQUNEOztBQUVELFFBQUk7QUFDRixVQUFJaEIsU0FBUyxLQUFLN0IsU0FBTCxDQUFlK0MsT0FBZixDQUF1QixLQUFLbEIsTUFBNUIsQ0FBYjtBQUNBLFVBQUlvQixVQUFVLEtBQUtDLEdBQUwsQ0FBU3JCLE1BQVQsQ0FBZDtBQUNBLFdBQUtBLE1BQUwsSUFBZSxDQUFmOztBQUVBLFVBQUlqQyxVQUFVcUQsT0FBVixDQUFKLEVBQXdCO0FBQ3RCQSxnQkFBUW5ELElBQVIsQ0FBYSxZQUFNO0FBQ2pCLGdCQUFLOEMsU0FBTCxDQUFlQyxPQUFmLEVBQXdCQyxNQUF4QjtBQUNELFNBRkQsRUFFR3JCLEtBRkgsQ0FFUyxpQkFBUztBQUNoQixnQkFBS0csV0FBTCxDQUFpQmQsS0FBakIsRUFBd0JlLE1BQXhCO0FBQ0EsZ0JBQUt6QixTQUFMLEdBQWlCLElBQWpCO0FBQ0EwQyxpQkFBT2hDLEtBQVA7QUFDRCxTQU5EO0FBT0QsT0FSRCxNQVFPO0FBQ0wsYUFBSzhCLFNBQUwsQ0FBZUMsT0FBZixFQUF3QkMsTUFBeEI7QUFDRDtBQUNGLEtBaEJELENBZ0JFLE9BQU9oQyxLQUFQLEVBQWM7QUFDZCxXQUFLVixTQUFMLEdBQWlCLElBQWpCO0FBQ0EwQyxhQUFPaEMsS0FBUDtBQUNEO0FBQ0YsRzs7dUJBRURVLEssb0JBQVM7QUFBQTs7QUFDUCxRQUFJLEtBQUtwQixTQUFULEVBQW9CO0FBQ2xCLGFBQU8sSUFBSStDLE9BQUosQ0FBWSxVQUFDTixPQUFELEVBQVVDLE1BQVYsRUFBcUI7QUFDdEMsWUFBSSxPQUFLaEMsS0FBVCxFQUFnQjtBQUNkZ0MsaUJBQU8sT0FBS2hDLEtBQVo7QUFDRCxTQUZELE1BRU87QUFDTCtCLGtCQUFRLE9BQUtPLFNBQUwsRUFBUjtBQUNEO0FBQ0YsT0FOTSxDQUFQO0FBT0Q7QUFDRCxRQUFJLEtBQUtDLFVBQVQsRUFBcUI7QUFDbkIsYUFBTyxLQUFLQSxVQUFaO0FBQ0Q7O0FBRUQsU0FBS0EsVUFBTCxHQUFrQixJQUFJRixPQUFKLENBQVksVUFBQ04sT0FBRCxFQUFVQyxNQUFWLEVBQXFCO0FBQ2pELFVBQUksT0FBS2hDLEtBQVQsRUFBZ0IsT0FBT2dDLE9BQU8sT0FBS2hDLEtBQVosQ0FBUDtBQUNoQixhQUFLZSxNQUFMLEdBQWMsQ0FBZDtBQUNBLGFBQUtlLFNBQUwsQ0FBZUMsT0FBZixFQUF3QkMsTUFBeEI7QUFDRCxLQUppQixFQUlmaEQsSUFKZSxDQUlWLFlBQU07QUFDWixhQUFLTSxTQUFMLEdBQWlCLElBQWpCO0FBQ0EsYUFBTyxPQUFLZ0QsU0FBTCxFQUFQO0FBQ0QsS0FQaUIsQ0FBbEI7O0FBU0EsV0FBTyxLQUFLQyxVQUFaO0FBQ0QsRzs7dUJBRURwQyxJLG1CQUFRO0FBQ04sUUFBSSxLQUFLYixTQUFULEVBQW9CLE9BQU8sS0FBS1csTUFBWjtBQUNwQixTQUFLWCxTQUFMLEdBQWlCLElBQWpCOztBQUVBLFFBQUksS0FBS2lELFVBQVQsRUFBcUI7QUFDbkIsWUFBTSxJQUFJQyxLQUFKLENBQ0osc0RBREksQ0FBTjtBQUVEOztBQUVELFFBQUksS0FBS3hDLEtBQVQsRUFBZ0IsTUFBTSxLQUFLQSxLQUFYOztBQUVoQix5QkFBbUIsS0FBS0MsTUFBTCxDQUFZZixTQUFaLENBQXNCK0MsT0FBekMsa0hBQWtEO0FBQUE7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFBQSxVQUF6Q2xCLE1BQXlDOztBQUNoRCxVQUFJb0IsVUFBVSxLQUFLQyxHQUFMLENBQVNyQixNQUFULENBQWQ7QUFDQSxVQUFJakMsVUFBVXFELE9BQVYsQ0FBSixFQUF3QjtBQUN0QixjQUFNLElBQUlLLEtBQUosQ0FDSixzREFESSxDQUFOO0FBRUQ7QUFDRjs7QUFFRCxXQUFPLEtBQUt2QyxNQUFaO0FBQ0QsRzs7dUJBRURtQyxHLGdCQUFLckIsTSxFQUFRO0FBQ1gsU0FBS2QsTUFBTCxDQUFZd0MsVUFBWixHQUF5QjFCLE1BQXpCOztBQUVBLFFBQUk7QUFDRixhQUFPQSxPQUFPLEtBQUtkLE1BQUwsQ0FBWVYsSUFBbkIsRUFBeUIsS0FBS1UsTUFBOUIsQ0FBUDtBQUNELEtBRkQsQ0FFRSxPQUFPRCxLQUFQLEVBQWM7QUFDZCxXQUFLYyxXQUFMLENBQWlCZCxLQUFqQixFQUF3QmUsTUFBeEI7QUFDQSxZQUFNZixLQUFOO0FBQ0Q7QUFDRixHOzt1QkFFRHNDLFMsd0JBQWE7QUFDWCxRQUFJLEtBQUtqRCxXQUFULEVBQXNCLE9BQU8sS0FBS1ksTUFBWjtBQUN0QixTQUFLWixXQUFMLEdBQW1CLElBQW5COztBQUVBLFNBQUtjLElBQUw7O0FBRUEsUUFBSWYsT0FBTyxLQUFLYSxNQUFMLENBQVliLElBQXZCO0FBQ0EsUUFBSXNELE1BQU1KLG1CQUFWO0FBQ0EsUUFBSWxELEtBQUtXLE1BQVQsRUFBaUIyQyxNQUFNdEQsS0FBS1csTUFBTCxDQUFZdUMsU0FBbEI7QUFDakIsUUFBSWxELEtBQUt1RCxXQUFULEVBQXNCRCxNQUFNdEQsS0FBS3VELFdBQVg7QUFDdEIsUUFBSUQsSUFBSUosU0FBUixFQUFtQkksTUFBTUEsSUFBSUosU0FBVjs7QUFFbkIsUUFBSTVDLE1BQU0sSUFBSWtELHNCQUFKLENBQWlCRixHQUFqQixFQUFzQixLQUFLekMsTUFBTCxDQUFZVixJQUFsQyxFQUF3QyxLQUFLVSxNQUFMLENBQVliLElBQXBELENBQVY7QUFDQSxRQUFJeUQsT0FBT25ELElBQUlvRCxRQUFKLEVBQVg7QUFDQSxTQUFLN0MsTUFBTCxDQUFZZCxHQUFaLEdBQWtCMEQsS0FBSyxDQUFMLENBQWxCO0FBQ0EsU0FBSzVDLE1BQUwsQ0FBWVAsR0FBWixHQUFrQm1ELEtBQUssQ0FBTCxDQUFsQjs7QUFFQSxXQUFPLEtBQUs1QyxNQUFaO0FBQ0QsRzs7Ozt3QkFqVWdCO0FBQ2YsYUFBTyxLQUFLQSxNQUFMLENBQVlmLFNBQW5CO0FBQ0Q7O0FBRUQ7Ozs7Ozs7O3dCQUtZO0FBQ1YsYUFBTyxLQUFLZSxNQUFMLENBQVliLElBQW5CO0FBQ0Q7O0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozt3QkFZVztBQUNULGFBQU8sS0FBS2tELFNBQUwsR0FBaUJuRCxHQUF4QjtBQUNEOztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7d0JBWWU7QUFDYixhQUFPLEtBQUttRCxTQUFMLEdBQWlCUyxPQUF4QjtBQUNEOztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7d0JBWVc7QUFDVCxhQUFPLEtBQUtULFNBQUwsR0FBaUI1QyxHQUF4QjtBQUNEOztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7O3dCQWFZO0FBQ1YsYUFBTyxLQUFLUyxJQUFMLEdBQVlaLElBQW5CO0FBQ0Q7O0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7d0JBYWdCO0FBQ2QsYUFBTyxLQUFLWSxJQUFMLEdBQVk2QyxRQUFuQjtBQUNEOzs7Ozs7a0JBdU9ZL0QsVTs7QUFFZjs7Ozs7QUFLQSIsImZpbGUiOiJsYXp5LXJlc3VsdC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBNYXBHZW5lcmF0b3IgZnJvbSAnLi9tYXAtZ2VuZXJhdG9yJ1xuaW1wb3J0IHN0cmluZ2lmeSBmcm9tICcuL3N0cmluZ2lmeSdcbmltcG9ydCB3YXJuT25jZSBmcm9tICcuL3dhcm4tb25jZSdcbmltcG9ydCBSZXN1bHQgZnJvbSAnLi9yZXN1bHQnXG5pbXBvcnQgcGFyc2UgZnJvbSAnLi9wYXJzZSdcblxuZnVuY3Rpb24gaXNQcm9taXNlIChvYmopIHtcbiAgcmV0dXJuIHR5cGVvZiBvYmogPT09ICdvYmplY3QnICYmIHR5cGVvZiBvYmoudGhlbiA9PT0gJ2Z1bmN0aW9uJ1xufVxuXG4vKipcbiAqIEEgUHJvbWlzZSBwcm94eSBmb3IgdGhlIHJlc3VsdCBvZiBQb3N0Q1NTIHRyYW5zZm9ybWF0aW9ucy5cbiAqXG4gKiBBIGBMYXp5UmVzdWx0YCBpbnN0YW5jZSBpcyByZXR1cm5lZCBieSB7QGxpbmsgUHJvY2Vzc29yI3Byb2Nlc3N9LlxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBsYXp5ID0gcG9zdGNzcyhbY3NzbmV4dF0pLnByb2Nlc3MoY3NzKVxuICovXG5jbGFzcyBMYXp5UmVzdWx0IHtcbiAgY29uc3RydWN0b3IgKHByb2Nlc3NvciwgY3NzLCBvcHRzKSB7XG4gICAgdGhpcy5zdHJpbmdpZmllZCA9IGZhbHNlXG4gICAgdGhpcy5wcm9jZXNzZWQgPSBmYWxzZVxuXG4gICAgbGV0IHJvb3RcbiAgICBpZiAodHlwZW9mIGNzcyA9PT0gJ29iamVjdCcgJiYgY3NzICE9PSBudWxsICYmIGNzcy50eXBlID09PSAncm9vdCcpIHtcbiAgICAgIHJvb3QgPSBjc3NcbiAgICB9IGVsc2UgaWYgKGNzcyBpbnN0YW5jZW9mIExhenlSZXN1bHQgfHwgY3NzIGluc3RhbmNlb2YgUmVzdWx0KSB7XG4gICAgICByb290ID0gY3NzLnJvb3RcbiAgICAgIGlmIChjc3MubWFwKSB7XG4gICAgICAgIGlmICh0eXBlb2Ygb3B0cy5tYXAgPT09ICd1bmRlZmluZWQnKSBvcHRzLm1hcCA9IHsgfVxuICAgICAgICBpZiAoIW9wdHMubWFwLmlubGluZSkgb3B0cy5tYXAuaW5saW5lID0gZmFsc2VcbiAgICAgICAgb3B0cy5tYXAucHJldiA9IGNzcy5tYXBcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IHBhcnNlciA9IHBhcnNlXG4gICAgICBpZiAob3B0cy5zeW50YXgpIHBhcnNlciA9IG9wdHMuc3ludGF4LnBhcnNlXG4gICAgICBpZiAob3B0cy5wYXJzZXIpIHBhcnNlciA9IG9wdHMucGFyc2VyXG4gICAgICBpZiAocGFyc2VyLnBhcnNlKSBwYXJzZXIgPSBwYXJzZXIucGFyc2VcblxuICAgICAgdHJ5IHtcbiAgICAgICAgcm9vdCA9IHBhcnNlcihjc3MsIG9wdHMpXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICB0aGlzLmVycm9yID0gZXJyb3JcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnJlc3VsdCA9IG5ldyBSZXN1bHQocHJvY2Vzc29yLCByb290LCBvcHRzKVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSB7QGxpbmsgUHJvY2Vzc29yfSBpbnN0YW5jZSwgd2hpY2ggd2lsbCBiZSB1c2VkXG4gICAqIGZvciBDU1MgdHJhbnNmb3JtYXRpb25zLlxuICAgKlxuICAgKiBAdHlwZSB7UHJvY2Vzc29yfVxuICAgKi9cbiAgZ2V0IHByb2Nlc3NvciAoKSB7XG4gICAgcmV0dXJuIHRoaXMucmVzdWx0LnByb2Nlc3NvclxuICB9XG5cbiAgLyoqXG4gICAqIE9wdGlvbnMgZnJvbSB0aGUge0BsaW5rIFByb2Nlc3NvciNwcm9jZXNzfSBjYWxsLlxuICAgKlxuICAgKiBAdHlwZSB7cHJvY2Vzc09wdGlvbnN9XG4gICAqL1xuICBnZXQgb3B0cyAoKSB7XG4gICAgcmV0dXJuIHRoaXMucmVzdWx0Lm9wdHNcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9jZXNzZXMgaW5wdXQgQ1NTIHRocm91Z2ggc3luY2hyb25vdXMgcGx1Z2lucywgY29udmVydHMgYFJvb3RgXG4gICAqIHRvIGEgQ1NTIHN0cmluZyBhbmQgcmV0dXJucyB7QGxpbmsgUmVzdWx0I2Nzc30uXG4gICAqXG4gICAqIFRoaXMgcHJvcGVydHkgd2lsbCBvbmx5IHdvcmsgd2l0aCBzeW5jaHJvbm91cyBwbHVnaW5zLlxuICAgKiBJZiB0aGUgcHJvY2Vzc29yIGNvbnRhaW5zIGFueSBhc3luY2hyb25vdXMgcGx1Z2luc1xuICAgKiBpdCB3aWxsIHRocm93IGFuIGVycm9yLiBUaGlzIGlzIHdoeSB0aGlzIG1ldGhvZCBpcyBvbmx5XG4gICAqIGZvciBkZWJ1ZyBwdXJwb3NlLCB5b3Ugc2hvdWxkIGFsd2F5cyB1c2Uge0BsaW5rIExhenlSZXN1bHQjdGhlbn0uXG4gICAqXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqIEBzZWUgUmVzdWx0I2Nzc1xuICAgKi9cbiAgZ2V0IGNzcyAoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RyaW5naWZ5KCkuY3NzXG4gIH1cblxuICAvKipcbiAgICogQW4gYWxpYXMgZm9yIHRoZSBgY3NzYCBwcm9wZXJ0eS4gVXNlIGl0IHdpdGggc3ludGF4ZXNcbiAgICogdGhhdCBnZW5lcmF0ZSBub24tQ1NTIG91dHB1dC5cbiAgICpcbiAgICogVGhpcyBwcm9wZXJ0eSB3aWxsIG9ubHkgd29yayB3aXRoIHN5bmNocm9ub3VzIHBsdWdpbnMuXG4gICAqIElmIHRoZSBwcm9jZXNzb3IgY29udGFpbnMgYW55IGFzeW5jaHJvbm91cyBwbHVnaW5zXG4gICAqIGl0IHdpbGwgdGhyb3cgYW4gZXJyb3IuIFRoaXMgaXMgd2h5IHRoaXMgbWV0aG9kIGlzIG9ubHlcbiAgICogZm9yIGRlYnVnIHB1cnBvc2UsIHlvdSBzaG91bGQgYWx3YXlzIHVzZSB7QGxpbmsgTGF6eVJlc3VsdCN0aGVufS5cbiAgICpcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICogQHNlZSBSZXN1bHQjY29udGVudFxuICAgKi9cbiAgZ2V0IGNvbnRlbnQgKCkge1xuICAgIHJldHVybiB0aGlzLnN0cmluZ2lmeSgpLmNvbnRlbnRcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9jZXNzZXMgaW5wdXQgQ1NTIHRocm91Z2ggc3luY2hyb25vdXMgcGx1Z2luc1xuICAgKiBhbmQgcmV0dXJucyB7QGxpbmsgUmVzdWx0I21hcH0uXG4gICAqXG4gICAqIFRoaXMgcHJvcGVydHkgd2lsbCBvbmx5IHdvcmsgd2l0aCBzeW5jaHJvbm91cyBwbHVnaW5zLlxuICAgKiBJZiB0aGUgcHJvY2Vzc29yIGNvbnRhaW5zIGFueSBhc3luY2hyb25vdXMgcGx1Z2luc1xuICAgKiBpdCB3aWxsIHRocm93IGFuIGVycm9yLiBUaGlzIGlzIHdoeSB0aGlzIG1ldGhvZCBpcyBvbmx5XG4gICAqIGZvciBkZWJ1ZyBwdXJwb3NlLCB5b3Ugc2hvdWxkIGFsd2F5cyB1c2Uge0BsaW5rIExhenlSZXN1bHQjdGhlbn0uXG4gICAqXG4gICAqIEB0eXBlIHtTb3VyY2VNYXBHZW5lcmF0b3J9XG4gICAqIEBzZWUgUmVzdWx0I21hcFxuICAgKi9cbiAgZ2V0IG1hcCAoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RyaW5naWZ5KCkubWFwXG4gIH1cblxuICAvKipcbiAgICogUHJvY2Vzc2VzIGlucHV0IENTUyB0aHJvdWdoIHN5bmNocm9ub3VzIHBsdWdpbnNcbiAgICogYW5kIHJldHVybnMge0BsaW5rIFJlc3VsdCNyb290fS5cbiAgICpcbiAgICogVGhpcyBwcm9wZXJ0eSB3aWxsIG9ubHkgd29yayB3aXRoIHN5bmNocm9ub3VzIHBsdWdpbnMuIElmIHRoZSBwcm9jZXNzb3JcbiAgICogY29udGFpbnMgYW55IGFzeW5jaHJvbm91cyBwbHVnaW5zIGl0IHdpbGwgdGhyb3cgYW4gZXJyb3IuXG4gICAqXG4gICAqIFRoaXMgaXMgd2h5IHRoaXMgbWV0aG9kIGlzIG9ubHkgZm9yIGRlYnVnIHB1cnBvc2UsXG4gICAqIHlvdSBzaG91bGQgYWx3YXlzIHVzZSB7QGxpbmsgTGF6eVJlc3VsdCN0aGVufS5cbiAgICpcbiAgICogQHR5cGUge1Jvb3R9XG4gICAqIEBzZWUgUmVzdWx0I3Jvb3RcbiAgICovXG4gIGdldCByb290ICgpIHtcbiAgICByZXR1cm4gdGhpcy5zeW5jKCkucm9vdFxuICB9XG5cbiAgLyoqXG4gICAqIFByb2Nlc3NlcyBpbnB1dCBDU1MgdGhyb3VnaCBzeW5jaHJvbm91cyBwbHVnaW5zXG4gICAqIGFuZCByZXR1cm5zIHtAbGluayBSZXN1bHQjbWVzc2FnZXN9LlxuICAgKlxuICAgKiBUaGlzIHByb3BlcnR5IHdpbGwgb25seSB3b3JrIHdpdGggc3luY2hyb25vdXMgcGx1Z2lucy4gSWYgdGhlIHByb2Nlc3NvclxuICAgKiBjb250YWlucyBhbnkgYXN5bmNocm9ub3VzIHBsdWdpbnMgaXQgd2lsbCB0aHJvdyBhbiBlcnJvci5cbiAgICpcbiAgICogVGhpcyBpcyB3aHkgdGhpcyBtZXRob2QgaXMgb25seSBmb3IgZGVidWcgcHVycG9zZSxcbiAgICogeW91IHNob3VsZCBhbHdheXMgdXNlIHtAbGluayBMYXp5UmVzdWx0I3RoZW59LlxuICAgKlxuICAgKiBAdHlwZSB7TWVzc2FnZVtdfVxuICAgKiBAc2VlIFJlc3VsdCNtZXNzYWdlc1xuICAgKi9cbiAgZ2V0IG1lc3NhZ2VzICgpIHtcbiAgICByZXR1cm4gdGhpcy5zeW5jKCkubWVzc2FnZXNcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9jZXNzZXMgaW5wdXQgQ1NTIHRocm91Z2ggc3luY2hyb25vdXMgcGx1Z2luc1xuICAgKiBhbmQgY2FsbHMge0BsaW5rIFJlc3VsdCN3YXJuaW5ncygpfS5cbiAgICpcbiAgICogQHJldHVybiB7V2FybmluZ1tdfSBXYXJuaW5ncyBmcm9tIHBsdWdpbnMuXG4gICAqL1xuICB3YXJuaW5ncyAoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3luYygpLndhcm5pbmdzKClcbiAgfVxuXG4gIC8qKlxuICAgKiBBbGlhcyBmb3IgdGhlIHtAbGluayBMYXp5UmVzdWx0I2Nzc30gcHJvcGVydHkuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGxhenkgKyAnJyA9PT0gbGF6eS5jc3NcbiAgICpcbiAgICogQHJldHVybiB7c3RyaW5nfSBPdXRwdXQgQ1NTLlxuICAgKi9cbiAgdG9TdHJpbmcgKCkge1xuICAgIHJldHVybiB0aGlzLmNzc1xuICB9XG5cbiAgLyoqXG4gICAqIFByb2Nlc3NlcyBpbnB1dCBDU1MgdGhyb3VnaCBzeW5jaHJvbm91cyBhbmQgYXN5bmNocm9ub3VzIHBsdWdpbnNcbiAgICogYW5kIGNhbGxzIGBvbkZ1bGZpbGxlZGAgd2l0aCBhIFJlc3VsdCBpbnN0YW5jZS4gSWYgYSBwbHVnaW4gdGhyb3dzXG4gICAqIGFuIGVycm9yLCB0aGUgYG9uUmVqZWN0ZWRgIGNhbGxiYWNrIHdpbGwgYmUgZXhlY3V0ZWQuXG4gICAqXG4gICAqIEl0IGltcGxlbWVudHMgc3RhbmRhcmQgUHJvbWlzZSBBUEkuXG4gICAqXG4gICAqIEBwYXJhbSB7b25GdWxmaWxsZWR9IG9uRnVsZmlsbGVkIENhbGxiYWNrIHdpbGwgYmUgZXhlY3V0ZWRcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBhbGwgcGx1Z2lucyB3aWxsIGZpbmlzaCB3b3JrLlxuICAgKiBAcGFyYW0ge29uUmVqZWN0ZWR9ICBvblJlamVjdGVkICBDYWxsYmFjayB3aWxsIGJlIGV4ZWN1dGVkIG9uIGFueSBlcnJvci5cbiAgICpcbiAgICogQHJldHVybiB7UHJvbWlzZX0gUHJvbWlzZSBBUEkgdG8gbWFrZSBxdWV1ZS5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogcG9zdGNzcyhbY3NzbmV4dF0pLnByb2Nlc3MoY3NzLCB7IGZyb206IGNzc1BhdGggfSkudGhlbihyZXN1bHQgPT4ge1xuICAgKiAgIGNvbnNvbGUubG9nKHJlc3VsdC5jc3MpXG4gICAqIH0pXG4gICAqL1xuICB0aGVuIChvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBpZiAoISgnZnJvbScgaW4gdGhpcy5vcHRzKSkge1xuICAgICAgICB3YXJuT25jZShcbiAgICAgICAgICAnV2l0aG91dCBgZnJvbWAgb3B0aW9uIFBvc3RDU1MgY291bGQgZ2VuZXJhdGUgd3Jvbmcgc291cmNlIG1hcCAnICtcbiAgICAgICAgICAnYW5kIHdpbGwgbm90IGZpbmQgQnJvd3NlcnNsaXN0IGNvbmZpZy4gU2V0IGl0IHRvIENTUyBmaWxlIHBhdGggJyArXG4gICAgICAgICAgJ29yIHRvIGB1bmRlZmluZWRgIHRvIHByZXZlbnQgdGhpcyB3YXJuaW5nLidcbiAgICAgICAgKVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5hc3luYygpLnRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpXG4gIH1cblxuICAvKipcbiAgICogUHJvY2Vzc2VzIGlucHV0IENTUyB0aHJvdWdoIHN5bmNocm9ub3VzIGFuZCBhc3luY2hyb25vdXMgcGx1Z2luc1xuICAgKiBhbmQgY2FsbHMgb25SZWplY3RlZCBmb3IgZWFjaCBlcnJvciB0aHJvd24gaW4gYW55IHBsdWdpbi5cbiAgICpcbiAgICogSXQgaW1wbGVtZW50cyBzdGFuZGFyZCBQcm9taXNlIEFQSS5cbiAgICpcbiAgICogQHBhcmFtIHtvblJlamVjdGVkfSBvblJlamVjdGVkIENhbGxiYWNrIHdpbGwgYmUgZXhlY3V0ZWQgb24gYW55IGVycm9yLlxuICAgKlxuICAgKiBAcmV0dXJuIHtQcm9taXNlfSBQcm9taXNlIEFQSSB0byBtYWtlIHF1ZXVlLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBwb3N0Y3NzKFtjc3NuZXh0XSkucHJvY2Vzcyhjc3MpLnRoZW4ocmVzdWx0ID0+IHtcbiAgICogICBjb25zb2xlLmxvZyhyZXN1bHQuY3NzKVxuICAgKiB9KS5jYXRjaChlcnJvciA9PiB7XG4gICAqICAgY29uc29sZS5lcnJvcihlcnJvcilcbiAgICogfSlcbiAgICovXG4gIGNhdGNoIChvblJlamVjdGVkKSB7XG4gICAgcmV0dXJuIHRoaXMuYXN5bmMoKS5jYXRjaChvblJlamVjdGVkKVxuICB9XG4gIC8qKlxuICAgKiBQcm9jZXNzZXMgaW5wdXQgQ1NTIHRocm91Z2ggc3luY2hyb25vdXMgYW5kIGFzeW5jaHJvbm91cyBwbHVnaW5zXG4gICAqIGFuZCBjYWxscyBvbkZpbmFsbHkgb24gYW55IGVycm9yIG9yIHdoZW4gYWxsIHBsdWdpbnMgd2lsbCBmaW5pc2ggd29yay5cbiAgICpcbiAgICogSXQgaW1wbGVtZW50cyBzdGFuZGFyZCBQcm9taXNlIEFQSS5cbiAgICpcbiAgICogQHBhcmFtIHtvbkZpbmFsbHl9IG9uRmluYWxseSBDYWxsYmFjayB3aWxsIGJlIGV4ZWN1dGVkIG9uIGFueSBlcnJvciBvclxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gYWxsIHBsdWdpbnMgd2lsbCBmaW5pc2ggd29yay5cbiAgICpcbiAgICogQHJldHVybiB7UHJvbWlzZX0gUHJvbWlzZSBBUEkgdG8gbWFrZSBxdWV1ZS5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogcG9zdGNzcyhbY3NzbmV4dF0pLnByb2Nlc3MoY3NzKS5maW5hbGx5KCgpID0+IHtcbiAgICogICBjb25zb2xlLmxvZygncHJvY2Vzc2luZyBlbmRlZCcpXG4gICAqIH0pXG4gICAqL1xuICBmaW5hbGx5IChvbkZpbmFsbHkpIHtcbiAgICByZXR1cm4gdGhpcy5hc3luYygpLnRoZW4ob25GaW5hbGx5LCBvbkZpbmFsbHkpXG4gIH1cblxuICBoYW5kbGVFcnJvciAoZXJyb3IsIHBsdWdpbikge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLmVycm9yID0gZXJyb3JcbiAgICAgIGlmIChlcnJvci5uYW1lID09PSAnQ3NzU3ludGF4RXJyb3InICYmICFlcnJvci5wbHVnaW4pIHtcbiAgICAgICAgZXJyb3IucGx1Z2luID0gcGx1Z2luLnBvc3Rjc3NQbHVnaW5cbiAgICAgICAgZXJyb3Iuc2V0TWVzc2FnZSgpXG4gICAgICB9IGVsc2UgaWYgKHBsdWdpbi5wb3N0Y3NzVmVyc2lvbikge1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgIGxldCBwbHVnaW5OYW1lID0gcGx1Z2luLnBvc3Rjc3NQbHVnaW5cbiAgICAgICAgICBsZXQgcGx1Z2luVmVyID0gcGx1Z2luLnBvc3Rjc3NWZXJzaW9uXG4gICAgICAgICAgbGV0IHJ1bnRpbWVWZXIgPSB0aGlzLnJlc3VsdC5wcm9jZXNzb3IudmVyc2lvblxuICAgICAgICAgIGxldCBhID0gcGx1Z2luVmVyLnNwbGl0KCcuJylcbiAgICAgICAgICBsZXQgYiA9IHJ1bnRpbWVWZXIuc3BsaXQoJy4nKVxuXG4gICAgICAgICAgaWYgKGFbMF0gIT09IGJbMF0gfHwgcGFyc2VJbnQoYVsxXSkgPiBwYXJzZUludChiWzFdKSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgJ1Vua25vd24gZXJyb3IgZnJvbSBQb3N0Q1NTIHBsdWdpbi4gWW91ciBjdXJyZW50IFBvc3RDU1MgJyArXG4gICAgICAgICAgICAgICd2ZXJzaW9uIGlzICcgKyBydW50aW1lVmVyICsgJywgYnV0ICcgKyBwbHVnaW5OYW1lICsgJyB1c2VzICcgK1xuICAgICAgICAgICAgICBwbHVnaW5WZXIgKyAnLiBQZXJoYXBzIHRoaXMgaXMgdGhlIHNvdXJjZSBvZiB0aGUgZXJyb3IgYmVsb3cuJ1xuICAgICAgICAgICAgKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgaWYgKGNvbnNvbGUgJiYgY29uc29sZS5lcnJvcikgY29uc29sZS5lcnJvcihlcnIpXG4gICAgfVxuICB9XG5cbiAgYXN5bmNUaWNrIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICBpZiAodGhpcy5wbHVnaW4gPj0gdGhpcy5wcm9jZXNzb3IucGx1Z2lucy5sZW5ndGgpIHtcbiAgICAgIHRoaXMucHJvY2Vzc2VkID0gdHJ1ZVxuICAgICAgcmV0dXJuIHJlc29sdmUoKVxuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBsZXQgcGx1Z2luID0gdGhpcy5wcm9jZXNzb3IucGx1Z2luc1t0aGlzLnBsdWdpbl1cbiAgICAgIGxldCBwcm9taXNlID0gdGhpcy5ydW4ocGx1Z2luKVxuICAgICAgdGhpcy5wbHVnaW4gKz0gMVxuXG4gICAgICBpZiAoaXNQcm9taXNlKHByb21pc2UpKSB7XG4gICAgICAgIHByb21pc2UudGhlbigoKSA9PiB7XG4gICAgICAgICAgdGhpcy5hc3luY1RpY2socmVzb2x2ZSwgcmVqZWN0KVxuICAgICAgICB9KS5jYXRjaChlcnJvciA9PiB7XG4gICAgICAgICAgdGhpcy5oYW5kbGVFcnJvcihlcnJvciwgcGx1Z2luKVxuICAgICAgICAgIHRoaXMucHJvY2Vzc2VkID0gdHJ1ZVxuICAgICAgICAgIHJlamVjdChlcnJvcilcbiAgICAgICAgfSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuYXN5bmNUaWNrKHJlc29sdmUsIHJlamVjdClcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhpcy5wcm9jZXNzZWQgPSB0cnVlXG4gICAgICByZWplY3QoZXJyb3IpXG4gICAgfVxuICB9XG5cbiAgYXN5bmMgKCkge1xuICAgIGlmICh0aGlzLnByb2Nlc3NlZCkge1xuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuZXJyb3IpIHtcbiAgICAgICAgICByZWplY3QodGhpcy5lcnJvcilcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXNvbHZlKHRoaXMuc3RyaW5naWZ5KCkpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuICAgIGlmICh0aGlzLnByb2Nlc3NpbmcpIHtcbiAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NpbmdcbiAgICB9XG5cbiAgICB0aGlzLnByb2Nlc3NpbmcgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBpZiAodGhpcy5lcnJvcikgcmV0dXJuIHJlamVjdCh0aGlzLmVycm9yKVxuICAgICAgdGhpcy5wbHVnaW4gPSAwXG4gICAgICB0aGlzLmFzeW5jVGljayhyZXNvbHZlLCByZWplY3QpXG4gICAgfSkudGhlbigoKSA9PiB7XG4gICAgICB0aGlzLnByb2Nlc3NlZCA9IHRydWVcbiAgICAgIHJldHVybiB0aGlzLnN0cmluZ2lmeSgpXG4gICAgfSlcblxuICAgIHJldHVybiB0aGlzLnByb2Nlc3NpbmdcbiAgfVxuXG4gIHN5bmMgKCkge1xuICAgIGlmICh0aGlzLnByb2Nlc3NlZCkgcmV0dXJuIHRoaXMucmVzdWx0XG4gICAgdGhpcy5wcm9jZXNzZWQgPSB0cnVlXG5cbiAgICBpZiAodGhpcy5wcm9jZXNzaW5nKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdVc2UgcHJvY2Vzcyhjc3MpLnRoZW4oY2IpIHRvIHdvcmsgd2l0aCBhc3luYyBwbHVnaW5zJylcbiAgICB9XG5cbiAgICBpZiAodGhpcy5lcnJvcikgdGhyb3cgdGhpcy5lcnJvclxuXG4gICAgZm9yIChsZXQgcGx1Z2luIG9mIHRoaXMucmVzdWx0LnByb2Nlc3Nvci5wbHVnaW5zKSB7XG4gICAgICBsZXQgcHJvbWlzZSA9IHRoaXMucnVuKHBsdWdpbilcbiAgICAgIGlmIChpc1Byb21pc2UocHJvbWlzZSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICdVc2UgcHJvY2Vzcyhjc3MpLnRoZW4oY2IpIHRvIHdvcmsgd2l0aCBhc3luYyBwbHVnaW5zJylcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5yZXN1bHRcbiAgfVxuXG4gIHJ1biAocGx1Z2luKSB7XG4gICAgdGhpcy5yZXN1bHQubGFzdFBsdWdpbiA9IHBsdWdpblxuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBwbHVnaW4odGhpcy5yZXN1bHQucm9vdCwgdGhpcy5yZXN1bHQpXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRoaXMuaGFuZGxlRXJyb3IoZXJyb3IsIHBsdWdpbilcbiAgICAgIHRocm93IGVycm9yXG4gICAgfVxuICB9XG5cbiAgc3RyaW5naWZ5ICgpIHtcbiAgICBpZiAodGhpcy5zdHJpbmdpZmllZCkgcmV0dXJuIHRoaXMucmVzdWx0XG4gICAgdGhpcy5zdHJpbmdpZmllZCA9IHRydWVcblxuICAgIHRoaXMuc3luYygpXG5cbiAgICBsZXQgb3B0cyA9IHRoaXMucmVzdWx0Lm9wdHNcbiAgICBsZXQgc3RyID0gc3RyaW5naWZ5XG4gICAgaWYgKG9wdHMuc3ludGF4KSBzdHIgPSBvcHRzLnN5bnRheC5zdHJpbmdpZnlcbiAgICBpZiAob3B0cy5zdHJpbmdpZmllcikgc3RyID0gb3B0cy5zdHJpbmdpZmllclxuICAgIGlmIChzdHIuc3RyaW5naWZ5KSBzdHIgPSBzdHIuc3RyaW5naWZ5XG5cbiAgICBsZXQgbWFwID0gbmV3IE1hcEdlbmVyYXRvcihzdHIsIHRoaXMucmVzdWx0LnJvb3QsIHRoaXMucmVzdWx0Lm9wdHMpXG4gICAgbGV0IGRhdGEgPSBtYXAuZ2VuZXJhdGUoKVxuICAgIHRoaXMucmVzdWx0LmNzcyA9IGRhdGFbMF1cbiAgICB0aGlzLnJlc3VsdC5tYXAgPSBkYXRhWzFdXG5cbiAgICByZXR1cm4gdGhpcy5yZXN1bHRcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBMYXp5UmVzdWx0XG5cbi8qKlxuICogQGNhbGxiYWNrIG9uRnVsZmlsbGVkXG4gKiBAcGFyYW0ge1Jlc3VsdH0gcmVzdWx0XG4gKi9cblxuLyoqXG4gKiBAY2FsbGJhY2sgb25SZWplY3RlZFxuICogQHBhcmFtIHtFcnJvcn0gZXJyb3JcbiAqL1xuIl19\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","/*\n * Copyright 2009-2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE.txt or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\nexports.SourceMapGenerator = require('./lib/source-map-generator').SourceMapGenerator;\nexports.SourceMapConsumer = require('./lib/source-map-consumer').SourceMapConsumer;\nexports.SourceNode = require('./lib/source-node').SourceNode;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar base64VLQ = require('./base64-vlq');\nvar util = require('./util');\nvar ArraySet = require('./array-set').ArraySet;\nvar MappingList = require('./mapping-list').MappingList;\n\n/**\n * An instance of the SourceMapGenerator represents a source map which is\n * being built incrementally. You may pass an object with the following\n * properties:\n *\n * - file: The filename of the generated source.\n * - sourceRoot: A root for all relative URLs in this source map.\n */\nfunction SourceMapGenerator(aArgs) {\n if (!aArgs) {\n aArgs = {};\n }\n this._file = util.getArg(aArgs, 'file', null);\n this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null);\n this._skipValidation = util.getArg(aArgs, 'skipValidation', false);\n this._sources = new ArraySet();\n this._names = new ArraySet();\n this._mappings = new MappingList();\n this._sourcesContents = null;\n}\n\nSourceMapGenerator.prototype._version = 3;\n\n/**\n * Creates a new SourceMapGenerator based on a SourceMapConsumer\n *\n * @param aSourceMapConsumer The SourceMap.\n */\nSourceMapGenerator.fromSourceMap =\n function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) {\n var sourceRoot = aSourceMapConsumer.sourceRoot;\n var generator = new SourceMapGenerator({\n file: aSourceMapConsumer.file,\n sourceRoot: sourceRoot\n });\n aSourceMapConsumer.eachMapping(function (mapping) {\n var newMapping = {\n generated: {\n line: mapping.generatedLine,\n column: mapping.generatedColumn\n }\n };\n\n if (mapping.source != null) {\n newMapping.source = mapping.source;\n if (sourceRoot != null) {\n newMapping.source = util.relative(sourceRoot, newMapping.source);\n }\n\n newMapping.original = {\n line: mapping.originalLine,\n column: mapping.originalColumn\n };\n\n if (mapping.name != null) {\n newMapping.name = mapping.name;\n }\n }\n\n generator.addMapping(newMapping);\n });\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var sourceRelative = sourceFile;\n if (sourceRoot !== null) {\n sourceRelative = util.relative(sourceRoot, sourceFile);\n }\n\n if (!generator._sources.has(sourceRelative)) {\n generator._sources.add(sourceRelative);\n }\n\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n generator.setSourceContent(sourceFile, content);\n }\n });\n return generator;\n };\n\n/**\n * Add a single mapping from original source line and column to the generated\n * source's line and column for this source map being created. The mapping\n * object should have the following properties:\n *\n * - generated: An object with the generated line and column positions.\n * - original: An object with the original line and column positions.\n * - source: The original source file (relative to the sourceRoot).\n * - name: An optional original token name for this mapping.\n */\nSourceMapGenerator.prototype.addMapping =\n function SourceMapGenerator_addMapping(aArgs) {\n var generated = util.getArg(aArgs, 'generated');\n var original = util.getArg(aArgs, 'original', null);\n var source = util.getArg(aArgs, 'source', null);\n var name = util.getArg(aArgs, 'name', null);\n\n if (!this._skipValidation) {\n this._validateMapping(generated, original, source, name);\n }\n\n if (source != null) {\n source = String(source);\n if (!this._sources.has(source)) {\n this._sources.add(source);\n }\n }\n\n if (name != null) {\n name = String(name);\n if (!this._names.has(name)) {\n this._names.add(name);\n }\n }\n\n this._mappings.add({\n generatedLine: generated.line,\n generatedColumn: generated.column,\n originalLine: original != null && original.line,\n originalColumn: original != null && original.column,\n source: source,\n name: name\n });\n };\n\n/**\n * Set the source content for a source file.\n */\nSourceMapGenerator.prototype.setSourceContent =\n function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) {\n var source = aSourceFile;\n if (this._sourceRoot != null) {\n source = util.relative(this._sourceRoot, source);\n }\n\n if (aSourceContent != null) {\n // Add the source content to the _sourcesContents map.\n // Create a new _sourcesContents map if the property is null.\n if (!this._sourcesContents) {\n this._sourcesContents = Object.create(null);\n }\n this._sourcesContents[util.toSetString(source)] = aSourceContent;\n } else if (this._sourcesContents) {\n // Remove the source file from the _sourcesContents map.\n // If the _sourcesContents map is empty, set the property to null.\n delete this._sourcesContents[util.toSetString(source)];\n if (Object.keys(this._sourcesContents).length === 0) {\n this._sourcesContents = null;\n }\n }\n };\n\n/**\n * Applies the mappings of a sub-source-map for a specific source file to the\n * source map being generated. Each mapping to the supplied source file is\n * rewritten using the supplied source map. Note: The resolution for the\n * resulting mappings is the minimium of this map and the supplied map.\n *\n * @param aSourceMapConsumer The source map to be applied.\n * @param aSourceFile Optional. The filename of the source file.\n * If omitted, SourceMapConsumer's file property will be used.\n * @param aSourceMapPath Optional. The dirname of the path to the source map\n * to be applied. If relative, it is relative to the SourceMapConsumer.\n * This parameter is needed when the two source maps aren't in the same\n * directory, and the source map to be applied contains relative source\n * paths. If so, those relative source paths need to be rewritten\n * relative to the SourceMapGenerator.\n */\nSourceMapGenerator.prototype.applySourceMap =\n function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) {\n var sourceFile = aSourceFile;\n // If aSourceFile is omitted, we will use the file property of the SourceMap\n if (aSourceFile == null) {\n if (aSourceMapConsumer.file == null) {\n throw new Error(\n 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' +\n 'or the source map\\'s \"file\" property. Both were omitted.'\n );\n }\n sourceFile = aSourceMapConsumer.file;\n }\n var sourceRoot = this._sourceRoot;\n // Make \"sourceFile\" relative if an absolute Url is passed.\n if (sourceRoot != null) {\n sourceFile = util.relative(sourceRoot, sourceFile);\n }\n // Applying the SourceMap can add and remove items from the sources and\n // the names array.\n var newSources = new ArraySet();\n var newNames = new ArraySet();\n\n // Find mappings for the \"sourceFile\"\n this._mappings.unsortedForEach(function (mapping) {\n if (mapping.source === sourceFile && mapping.originalLine != null) {\n // Check if it can be mapped by the source map, then update the mapping.\n var original = aSourceMapConsumer.originalPositionFor({\n line: mapping.originalLine,\n column: mapping.originalColumn\n });\n if (original.source != null) {\n // Copy mapping\n mapping.source = original.source;\n if (aSourceMapPath != null) {\n mapping.source = util.join(aSourceMapPath, mapping.source)\n }\n if (sourceRoot != null) {\n mapping.source = util.relative(sourceRoot, mapping.source);\n }\n mapping.originalLine = original.line;\n mapping.originalColumn = original.column;\n if (original.name != null) {\n mapping.name = original.name;\n }\n }\n }\n\n var source = mapping.source;\n if (source != null && !newSources.has(source)) {\n newSources.add(source);\n }\n\n var name = mapping.name;\n if (name != null && !newNames.has(name)) {\n newNames.add(name);\n }\n\n }, this);\n this._sources = newSources;\n this._names = newNames;\n\n // Copy sourcesContents of applied map.\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n if (aSourceMapPath != null) {\n sourceFile = util.join(aSourceMapPath, sourceFile);\n }\n if (sourceRoot != null) {\n sourceFile = util.relative(sourceRoot, sourceFile);\n }\n this.setSourceContent(sourceFile, content);\n }\n }, this);\n };\n\n/**\n * A mapping can have one of the three levels of data:\n *\n * 1. Just the generated position.\n * 2. The Generated position, original position, and original source.\n * 3. Generated and original position, original source, as well as a name\n * token.\n *\n * To maintain consistency, we validate that any new mapping being added falls\n * in to one of these categories.\n */\nSourceMapGenerator.prototype._validateMapping =\n function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource,\n aName) {\n // When aOriginal is truthy but has empty values for .line and .column,\n // it is most likely a programmer error. In this case we throw a very\n // specific error message to try to guide them the right way.\n // For example: https://github.com/Polymer/polymer-bundler/pull/519\n if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') {\n throw new Error(\n 'original.line and original.column are not numbers -- you probably meant to omit ' +\n 'the original mapping entirely and only map the generated position. If so, pass ' +\n 'null for the original mapping instead of an object with empty or null values.'\n );\n }\n\n if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n && aGenerated.line > 0 && aGenerated.column >= 0\n && !aOriginal && !aSource && !aName) {\n // Case 1.\n return;\n }\n else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n && aOriginal && 'line' in aOriginal && 'column' in aOriginal\n && aGenerated.line > 0 && aGenerated.column >= 0\n && aOriginal.line > 0 && aOriginal.column >= 0\n && aSource) {\n // Cases 2 and 3.\n return;\n }\n else {\n throw new Error('Invalid mapping: ' + JSON.stringify({\n generated: aGenerated,\n source: aSource,\n original: aOriginal,\n name: aName\n }));\n }\n };\n\n/**\n * Serialize the accumulated mappings in to the stream of base 64 VLQs\n * specified by the source map format.\n */\nSourceMapGenerator.prototype._serializeMappings =\n function SourceMapGenerator_serializeMappings() {\n var previousGeneratedColumn = 0;\n var previousGeneratedLine = 1;\n var previousOriginalColumn = 0;\n var previousOriginalLine = 0;\n var previousName = 0;\n var previousSource = 0;\n var result = '';\n var next;\n var mapping;\n var nameIdx;\n var sourceIdx;\n\n var mappings = this._mappings.toArray();\n for (var i = 0, len = mappings.length; i < len; i++) {\n mapping = mappings[i];\n next = ''\n\n if (mapping.generatedLine !== previousGeneratedLine) {\n previousGeneratedColumn = 0;\n while (mapping.generatedLine !== previousGeneratedLine) {\n next += ';';\n previousGeneratedLine++;\n }\n }\n else {\n if (i > 0) {\n if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) {\n continue;\n }\n next += ',';\n }\n }\n\n next += base64VLQ.encode(mapping.generatedColumn\n - previousGeneratedColumn);\n previousGeneratedColumn = mapping.generatedColumn;\n\n if (mapping.source != null) {\n sourceIdx = this._sources.indexOf(mapping.source);\n next += base64VLQ.encode(sourceIdx - previousSource);\n previousSource = sourceIdx;\n\n // lines are stored 0-based in SourceMap spec version 3\n next += base64VLQ.encode(mapping.originalLine - 1\n - previousOriginalLine);\n previousOriginalLine = mapping.originalLine - 1;\n\n next += base64VLQ.encode(mapping.originalColumn\n - previousOriginalColumn);\n previousOriginalColumn = mapping.originalColumn;\n\n if (mapping.name != null) {\n nameIdx = this._names.indexOf(mapping.name);\n next += base64VLQ.encode(nameIdx - previousName);\n previousName = nameIdx;\n }\n }\n\n result += next;\n }\n\n return result;\n };\n\nSourceMapGenerator.prototype._generateSourcesContent =\n function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {\n return aSources.map(function (source) {\n if (!this._sourcesContents) {\n return null;\n }\n if (aSourceRoot != null) {\n source = util.relative(aSourceRoot, source);\n }\n var key = util.toSetString(source);\n return Object.prototype.hasOwnProperty.call(this._sourcesContents, key)\n ? this._sourcesContents[key]\n : null;\n }, this);\n };\n\n/**\n * Externalize the source map.\n */\nSourceMapGenerator.prototype.toJSON =\n function SourceMapGenerator_toJSON() {\n var map = {\n version: this._version,\n sources: this._sources.toArray(),\n names: this._names.toArray(),\n mappings: this._serializeMappings()\n };\n if (this._file != null) {\n map.file = this._file;\n }\n if (this._sourceRoot != null) {\n map.sourceRoot = this._sourceRoot;\n }\n if (this._sourcesContents) {\n map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);\n }\n\n return map;\n };\n\n/**\n * Render the source map being generated to a string.\n */\nSourceMapGenerator.prototype.toString =\n function SourceMapGenerator_toString() {\n return JSON.stringify(this.toJSON());\n };\n\nexports.SourceMapGenerator = SourceMapGenerator;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n *\n * Based on the Base 64 VLQ implementation in Closure Compiler:\n * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java\n *\n * Copyright 2011 The Closure Compiler Authors. All rights reserved.\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are\n * met:\n *\n * * Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above\n * copyright notice, this list of conditions and the following\n * disclaimer in the documentation and/or other materials provided\n * with the distribution.\n * * Neither the name of Google Inc. nor the names of its\n * contributors may be used to endorse or promote products derived\n * from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nvar base64 = require('./base64');\n\n// A single base 64 digit can contain 6 bits of data. For the base 64 variable\n// length quantities we use in the source map spec, the first bit is the sign,\n// the next four bits are the actual value, and the 6th bit is the\n// continuation bit. The continuation bit tells us whether there are more\n// digits in this value following this digit.\n//\n// Continuation\n// | Sign\n// | |\n// V V\n// 101011\n\nvar VLQ_BASE_SHIFT = 5;\n\n// binary: 100000\nvar VLQ_BASE = 1 << VLQ_BASE_SHIFT;\n\n// binary: 011111\nvar VLQ_BASE_MASK = VLQ_BASE - 1;\n\n// binary: 100000\nvar VLQ_CONTINUATION_BIT = VLQ_BASE;\n\n/**\n * Converts from a two-complement value to a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary)\n * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary)\n */\nfunction toVLQSigned(aValue) {\n return aValue < 0\n ? ((-aValue) << 1) + 1\n : (aValue << 1) + 0;\n}\n\n/**\n * Converts to a two-complement value from a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1\n * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2\n */\nfunction fromVLQSigned(aValue) {\n var isNegative = (aValue & 1) === 1;\n var shifted = aValue >> 1;\n return isNegative\n ? -shifted\n : shifted;\n}\n\n/**\n * Returns the base 64 VLQ encoded value.\n */\nexports.encode = function base64VLQ_encode(aValue) {\n var encoded = \"\";\n var digit;\n\n var vlq = toVLQSigned(aValue);\n\n do {\n digit = vlq & VLQ_BASE_MASK;\n vlq >>>= VLQ_BASE_SHIFT;\n if (vlq > 0) {\n // There are still more digits in this value, so we must make sure the\n // continuation bit is marked.\n digit |= VLQ_CONTINUATION_BIT;\n }\n encoded += base64.encode(digit);\n } while (vlq > 0);\n\n return encoded;\n};\n\n/**\n * Decodes the next base 64 VLQ value from the given string and returns the\n * value and the rest of the string via the out parameter.\n */\nexports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) {\n var strLen = aStr.length;\n var result = 0;\n var shift = 0;\n var continuation, digit;\n\n do {\n if (aIndex >= strLen) {\n throw new Error(\"Expected more digits in base 64 VLQ value.\");\n }\n\n digit = base64.decode(aStr.charCodeAt(aIndex++));\n if (digit === -1) {\n throw new Error(\"Invalid base64 digit: \" + aStr.charAt(aIndex - 1));\n }\n\n continuation = !!(digit & VLQ_CONTINUATION_BIT);\n digit &= VLQ_BASE_MASK;\n result = result + (digit << shift);\n shift += VLQ_BASE_SHIFT;\n } while (continuation);\n\n aOutParam.value = fromVLQSigned(result);\n aOutParam.rest = aIndex;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar has = Object.prototype.hasOwnProperty;\nvar hasNativeMap = typeof Map !== \"undefined\";\n\n/**\n * A data structure which is a combination of an array and a set. Adding a new\n * member is O(1), testing for membership is O(1), and finding the index of an\n * element is O(1). Removing elements from the set is not supported. Only\n * strings are supported for membership.\n */\nfunction ArraySet() {\n this._array = [];\n this._set = hasNativeMap ? new Map() : Object.create(null);\n}\n\n/**\n * Static method for creating ArraySet instances from an existing array.\n */\nArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {\n var set = new ArraySet();\n for (var i = 0, len = aArray.length; i < len; i++) {\n set.add(aArray[i], aAllowDuplicates);\n }\n return set;\n};\n\n/**\n * Return how many unique items are in this ArraySet. If duplicates have been\n * added, than those do not count towards the size.\n *\n * @returns Number\n */\nArraySet.prototype.size = function ArraySet_size() {\n return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length;\n};\n\n/**\n * Add the given string to this set.\n *\n * @param String aStr\n */\nArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {\n var sStr = hasNativeMap ? aStr : util.toSetString(aStr);\n var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr);\n var idx = this._array.length;\n if (!isDuplicate || aAllowDuplicates) {\n this._array.push(aStr);\n }\n if (!isDuplicate) {\n if (hasNativeMap) {\n this._set.set(aStr, idx);\n } else {\n this._set[sStr] = idx;\n }\n }\n};\n\n/**\n * Is the given string a member of this set?\n *\n * @param String aStr\n */\nArraySet.prototype.has = function ArraySet_has(aStr) {\n if (hasNativeMap) {\n return this._set.has(aStr);\n } else {\n var sStr = util.toSetString(aStr);\n return has.call(this._set, sStr);\n }\n};\n\n/**\n * What is the index of the given string in the array?\n *\n * @param String aStr\n */\nArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {\n if (hasNativeMap) {\n var idx = this._set.get(aStr);\n if (idx >= 0) {\n return idx;\n }\n } else {\n var sStr = util.toSetString(aStr);\n if (has.call(this._set, sStr)) {\n return this._set[sStr];\n }\n }\n\n throw new Error('\"' + aStr + '\" is not in the set.');\n};\n\n/**\n * What is the element at the given index?\n *\n * @param Number aIdx\n */\nArraySet.prototype.at = function ArraySet_at(aIdx) {\n if (aIdx >= 0 && aIdx < this._array.length) {\n return this._array[aIdx];\n }\n throw new Error('No element indexed by ' + aIdx);\n};\n\n/**\n * Returns the array representation of this set (which has the proper indices\n * indicated by indexOf). Note that this is a copy of the internal array used\n * for storing the members so that no one can mess with internal state.\n */\nArraySet.prototype.toArray = function ArraySet_toArray() {\n return this._array.slice();\n};\n\nexports.ArraySet = ArraySet;\n","'use strict';\n\nexports.__esModule = true;\n/**\n * Contains helpers for safely splitting lists of CSS values,\n * preserving parentheses and quotes.\n *\n * @example\n * const list = postcss.list\n *\n * @namespace list\n */\nvar list = {\n split: function split(string, separators, last) {\n var array = [];\n var current = '';\n var split = false;\n\n var func = 0;\n var quote = false;\n var escape = false;\n\n for (var i = 0; i < string.length; i++) {\n var letter = string[i];\n\n if (quote) {\n if (escape) {\n escape = false;\n } else if (letter === '\\\\') {\n escape = true;\n } else if (letter === quote) {\n quote = false;\n }\n } else if (letter === '\"' || letter === '\\'') {\n quote = letter;\n } else if (letter === '(') {\n func += 1;\n } else if (letter === ')') {\n if (func > 0) func -= 1;\n } else if (func === 0) {\n if (separators.indexOf(letter) !== -1) split = true;\n }\n\n if (split) {\n if (current !== '') array.push(current.trim());\n current = '';\n split = false;\n } else {\n current += letter;\n }\n }\n\n if (last || current !== '') array.push(current.trim());\n return array;\n },\n\n\n /**\n * Safely splits space-separated values (such as those for `background`,\n * `border-radius`, and other shorthand properties).\n *\n * @param {string} string Space-separated values.\n *\n * @return {string[]} Split values.\n *\n * @example\n * postcss.list.space('1px calc(10% + 1px)') //=> ['1px', 'calc(10% + 1px)']\n */\n space: function space(string) {\n var spaces = [' ', '\\n', '\\t'];\n return list.split(string, spaces);\n },\n\n\n /**\n * Safely splits comma-separated values (such as those for `transition-*`\n * and `background` properties).\n *\n * @param {string} string Comma-separated values.\n *\n * @return {string[]} Split values.\n *\n * @example\n * postcss.list.comma('black, linear-gradient(white, black)')\n * //=> ['black', 'linear-gradient(white, black)']\n */\n comma: function comma(string) {\n return list.split(string, [','], true);\n }\n};\n\nexports.default = list;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpc3QuZXM2Il0sIm5hbWVzIjpbImxpc3QiLCJzcGxpdCIsInN0cmluZyIsInNlcGFyYXRvcnMiLCJsYXN0IiwiYXJyYXkiLCJjdXJyZW50IiwiZnVuYyIsInF1b3RlIiwiZXNjYXBlIiwiaSIsImxlbmd0aCIsImxldHRlciIsImluZGV4T2YiLCJwdXNoIiwidHJpbSIsInNwYWNlIiwic3BhY2VzIiwiY29tbWEiXSwibWFwcGluZ3MiOiI7OztBQUFBOzs7Ozs7Ozs7QUFTQSxJQUFJQSxPQUFPO0FBRVRDLE9BRlMsaUJBRUZDLE1BRkUsRUFFTUMsVUFGTixFQUVrQkMsSUFGbEIsRUFFd0I7QUFDL0IsUUFBSUMsUUFBUSxFQUFaO0FBQ0EsUUFBSUMsVUFBVSxFQUFkO0FBQ0EsUUFBSUwsUUFBUSxLQUFaOztBQUVBLFFBQUlNLE9BQU8sQ0FBWDtBQUNBLFFBQUlDLFFBQVEsS0FBWjtBQUNBLFFBQUlDLFNBQVMsS0FBYjs7QUFFQSxTQUFLLElBQUlDLElBQUksQ0FBYixFQUFnQkEsSUFBSVIsT0FBT1MsTUFBM0IsRUFBbUNELEdBQW5DLEVBQXdDO0FBQ3RDLFVBQUlFLFNBQVNWLE9BQU9RLENBQVAsQ0FBYjs7QUFFQSxVQUFJRixLQUFKLEVBQVc7QUFDVCxZQUFJQyxNQUFKLEVBQVk7QUFDVkEsbUJBQVMsS0FBVDtBQUNELFNBRkQsTUFFTyxJQUFJRyxXQUFXLElBQWYsRUFBcUI7QUFDMUJILG1CQUFTLElBQVQ7QUFDRCxTQUZNLE1BRUEsSUFBSUcsV0FBV0osS0FBZixFQUFzQjtBQUMzQkEsa0JBQVEsS0FBUjtBQUNEO0FBQ0YsT0FSRCxNQVFPLElBQUlJLFdBQVcsR0FBWCxJQUFrQkEsV0FBVyxJQUFqQyxFQUF1QztBQUM1Q0osZ0JBQVFJLE1BQVI7QUFDRCxPQUZNLE1BRUEsSUFBSUEsV0FBVyxHQUFmLEVBQW9CO0FBQ3pCTCxnQkFBUSxDQUFSO0FBQ0QsT0FGTSxNQUVBLElBQUlLLFdBQVcsR0FBZixFQUFvQjtBQUN6QixZQUFJTCxPQUFPLENBQVgsRUFBY0EsUUFBUSxDQUFSO0FBQ2YsT0FGTSxNQUVBLElBQUlBLFNBQVMsQ0FBYixFQUFnQjtBQUNyQixZQUFJSixXQUFXVSxPQUFYLENBQW1CRCxNQUFuQixNQUErQixDQUFDLENBQXBDLEVBQXVDWCxRQUFRLElBQVI7QUFDeEM7O0FBRUQsVUFBSUEsS0FBSixFQUFXO0FBQ1QsWUFBSUssWUFBWSxFQUFoQixFQUFvQkQsTUFBTVMsSUFBTixDQUFXUixRQUFRUyxJQUFSLEVBQVg7QUFDcEJULGtCQUFVLEVBQVY7QUFDQUwsZ0JBQVEsS0FBUjtBQUNELE9BSkQsTUFJTztBQUNMSyxtQkFBV00sTUFBWDtBQUNEO0FBQ0Y7O0FBRUQsUUFBSVIsUUFBUUUsWUFBWSxFQUF4QixFQUE0QkQsTUFBTVMsSUFBTixDQUFXUixRQUFRUyxJQUFSLEVBQVg7QUFDNUIsV0FBT1YsS0FBUDtBQUNELEdBM0NROzs7QUE2Q1Q7Ozs7Ozs7Ozs7O0FBV0FXLE9BeERTLGlCQXdERmQsTUF4REUsRUF3RE07QUFDYixRQUFJZSxTQUFTLENBQUMsR0FBRCxFQUFNLElBQU4sRUFBWSxJQUFaLENBQWI7QUFDQSxXQUFPakIsS0FBS0MsS0FBTCxDQUFXQyxNQUFYLEVBQW1CZSxNQUFuQixDQUFQO0FBQ0QsR0EzRFE7OztBQTZEVDs7Ozs7Ozs7Ozs7O0FBWUFDLE9BekVTLGlCQXlFRmhCLE1BekVFLEVBeUVNO0FBQ2IsV0FBT0YsS0FBS0MsS0FBTCxDQUFXQyxNQUFYLEVBQW1CLENBQUMsR0FBRCxDQUFuQixFQUEwQixJQUExQixDQUFQO0FBQ0Q7QUEzRVEsQ0FBWDs7a0JBK0VlRixJIiwiZmlsZSI6Imxpc3QuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvbnRhaW5zIGhlbHBlcnMgZm9yIHNhZmVseSBzcGxpdHRpbmcgbGlzdHMgb2YgQ1NTIHZhbHVlcyxcbiAqIHByZXNlcnZpbmcgcGFyZW50aGVzZXMgYW5kIHF1b3Rlcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3QgbGlzdCA9IHBvc3Rjc3MubGlzdFxuICpcbiAqIEBuYW1lc3BhY2UgbGlzdFxuICovXG5sZXQgbGlzdCA9IHtcblxuICBzcGxpdCAoc3RyaW5nLCBzZXBhcmF0b3JzLCBsYXN0KSB7XG4gICAgbGV0IGFycmF5ID0gW11cbiAgICBsZXQgY3VycmVudCA9ICcnXG4gICAgbGV0IHNwbGl0ID0gZmFsc2VcblxuICAgIGxldCBmdW5jID0gMFxuICAgIGxldCBxdW90ZSA9IGZhbHNlXG4gICAgbGV0IGVzY2FwZSA9IGZhbHNlXG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN0cmluZy5sZW5ndGg7IGkrKykge1xuICAgICAgbGV0IGxldHRlciA9IHN0cmluZ1tpXVxuXG4gICAgICBpZiAocXVvdGUpIHtcbiAgICAgICAgaWYgKGVzY2FwZSkge1xuICAgICAgICAgIGVzY2FwZSA9IGZhbHNlXG4gICAgICAgIH0gZWxzZSBpZiAobGV0dGVyID09PSAnXFxcXCcpIHtcbiAgICAgICAgICBlc2NhcGUgPSB0cnVlXG4gICAgICAgIH0gZWxzZSBpZiAobGV0dGVyID09PSBxdW90ZSkge1xuICAgICAgICAgIHF1b3RlID0gZmFsc2VcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChsZXR0ZXIgPT09ICdcIicgfHwgbGV0dGVyID09PSAnXFwnJykge1xuICAgICAgICBxdW90ZSA9IGxldHRlclxuICAgICAgfSBlbHNlIGlmIChsZXR0ZXIgPT09ICcoJykge1xuICAgICAgICBmdW5jICs9IDFcbiAgICAgIH0gZWxzZSBpZiAobGV0dGVyID09PSAnKScpIHtcbiAgICAgICAgaWYgKGZ1bmMgPiAwKSBmdW5jIC09IDFcbiAgICAgIH0gZWxzZSBpZiAoZnVuYyA9PT0gMCkge1xuICAgICAgICBpZiAoc2VwYXJhdG9ycy5pbmRleE9mKGxldHRlcikgIT09IC0xKSBzcGxpdCA9IHRydWVcbiAgICAgIH1cblxuICAgICAgaWYgKHNwbGl0KSB7XG4gICAgICAgIGlmIChjdXJyZW50ICE9PSAnJykgYXJyYXkucHVzaChjdXJyZW50LnRyaW0oKSlcbiAgICAgICAgY3VycmVudCA9ICcnXG4gICAgICAgIHNwbGl0ID0gZmFsc2VcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGN1cnJlbnQgKz0gbGV0dGVyXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGxhc3QgfHwgY3VycmVudCAhPT0gJycpIGFycmF5LnB1c2goY3VycmVudC50cmltKCkpXG4gICAgcmV0dXJuIGFycmF5XG4gIH0sXG5cbiAgLyoqXG4gICAqIFNhZmVseSBzcGxpdHMgc3BhY2Utc2VwYXJhdGVkIHZhbHVlcyAoc3VjaCBhcyB0aG9zZSBmb3IgYGJhY2tncm91bmRgLFxuICAgKiBgYm9yZGVyLXJhZGl1c2AsIGFuZCBvdGhlciBzaG9ydGhhbmQgcHJvcGVydGllcykuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgU3BhY2Utc2VwYXJhdGVkIHZhbHVlcy5cbiAgICpcbiAgICogQHJldHVybiB7c3RyaW5nW119IFNwbGl0IHZhbHVlcy5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogcG9zdGNzcy5saXN0LnNwYWNlKCcxcHggY2FsYygxMCUgKyAxcHgpJykgLy89PiBbJzFweCcsICdjYWxjKDEwJSArIDFweCknXVxuICAgKi9cbiAgc3BhY2UgKHN0cmluZykge1xuICAgIGxldCBzcGFjZXMgPSBbJyAnLCAnXFxuJywgJ1xcdCddXG4gICAgcmV0dXJuIGxpc3Quc3BsaXQoc3RyaW5nLCBzcGFjZXMpXG4gIH0sXG5cbiAgLyoqXG4gICAqIFNhZmVseSBzcGxpdHMgY29tbWEtc2VwYXJhdGVkIHZhbHVlcyAoc3VjaCBhcyB0aG9zZSBmb3IgYHRyYW5zaXRpb24tKmBcbiAgICogYW5kIGBiYWNrZ3JvdW5kYCBwcm9wZXJ0aWVzKS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBDb21tYS1zZXBhcmF0ZWQgdmFsdWVzLlxuICAgKlxuICAgKiBAcmV0dXJuIHtzdHJpbmdbXX0gU3BsaXQgdmFsdWVzLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBwb3N0Y3NzLmxpc3QuY29tbWEoJ2JsYWNrLCBsaW5lYXItZ3JhZGllbnQod2hpdGUsIGJsYWNrKScpXG4gICAqIC8vPT4gWydibGFjaycsICdsaW5lYXItZ3JhZGllbnQod2hpdGUsIGJsYWNrKSddXG4gICAqL1xuICBjb21tYSAoc3RyaW5nKSB7XG4gICAgcmV0dXJuIGxpc3Quc3BsaXQoc3RyaW5nLCBbJywnXSwgdHJ1ZSlcbiAgfVxuXG59XG5cbmV4cG9ydCBkZWZhdWx0IGxpc3RcbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\n\nvar _container = require('./container');\n\nvar _container2 = _interopRequireDefault(_container);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/**\n * Represents a CSS file and contains all its parsed nodes.\n *\n * @extends Container\n *\n * @example\n * const root = postcss.parse('a{color:black} b{z-index:2}')\n * root.type //=> 'root'\n * root.nodes.length //=> 2\n */\nvar Root = function (_Container) {\n _inherits(Root, _Container);\n\n function Root(defaults) {\n _classCallCheck(this, Root);\n\n var _this = _possibleConstructorReturn(this, _Container.call(this, defaults));\n\n _this.type = 'root';\n if (!_this.nodes) _this.nodes = [];\n return _this;\n }\n\n Root.prototype.removeChild = function removeChild(child, ignore) {\n var index = this.index(child);\n\n if (!ignore && index === 0 && this.nodes.length > 1) {\n this.nodes[1].raws.before = this.nodes[index].raws.before;\n }\n\n return _Container.prototype.removeChild.call(this, child);\n };\n\n Root.prototype.normalize = function normalize(child, sample, type) {\n var nodes = _Container.prototype.normalize.call(this, child);\n\n if (sample) {\n if (type === 'prepend') {\n if (this.nodes.length > 1) {\n sample.raws.before = this.nodes[1].raws.before;\n } else {\n delete sample.raws.before;\n }\n } else if (this.first !== sample) {\n for (var _iterator = nodes, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var node = _ref;\n\n node.raws.before = sample.raws.before;\n }\n }\n }\n\n return nodes;\n };\n\n /**\n * Returns a {@link Result} instance representing the root’s CSS.\n *\n * @param {processOptions} [opts] Options with only `to` and `map` keys.\n *\n * @return {Result} Result with current root’s CSS.\n *\n * @example\n * const root1 = postcss.parse(css1, { from: 'a.css' })\n * const root2 = postcss.parse(css2, { from: 'b.css' })\n * root1.append(root2)\n * const result = root1.toResult({ to: 'all.css', map: true })\n */\n\n\n Root.prototype.toResult = function toResult() {\n var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var LazyResult = require('./lazy-result');\n var Processor = require('./processor');\n\n var lazy = new LazyResult(new Processor(), this, opts);\n return lazy.stringify();\n };\n\n /**\n * @memberof Root#\n * @member {object} raws Information to generate byte-to-byte equal\n * node string as it was in the origin input.\n *\n * Every parser saves its own properties,\n * but the default CSS parser uses:\n *\n * * `after`: the space symbols after the last child to the end of file.\n * * `semicolon`: is the last child has an (optional) semicolon.\n *\n * @example\n * postcss.parse('a {}\\n').raws //=> { after: '\\n' }\n * postcss.parse('a {}').raws //=> { after: '' }\n */\n\n\n return Root;\n}(_container2.default);\n\nexports.default = Root;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJvb3QuZXM2Il0sIm5hbWVzIjpbIlJvb3QiLCJkZWZhdWx0cyIsInR5cGUiLCJub2RlcyIsInJlbW92ZUNoaWxkIiwiY2hpbGQiLCJpZ25vcmUiLCJpbmRleCIsImxlbmd0aCIsInJhd3MiLCJiZWZvcmUiLCJub3JtYWxpemUiLCJzYW1wbGUiLCJmaXJzdCIsIm5vZGUiLCJ0b1Jlc3VsdCIsIm9wdHMiLCJMYXp5UmVzdWx0IiwicmVxdWlyZSIsIlByb2Nlc3NvciIsImxhenkiLCJzdHJpbmdpZnkiLCJDb250YWluZXIiXSwibWFwcGluZ3MiOiI7Ozs7QUFBQTs7Ozs7Ozs7Ozs7O0FBRUE7Ozs7Ozs7Ozs7SUFVTUEsSTs7O0FBQ0osZ0JBQWFDLFFBQWIsRUFBdUI7QUFBQTs7QUFBQSxpREFDckIsc0JBQU1BLFFBQU4sQ0FEcUI7O0FBRXJCLFVBQUtDLElBQUwsR0FBWSxNQUFaO0FBQ0EsUUFBSSxDQUFDLE1BQUtDLEtBQVYsRUFBaUIsTUFBS0EsS0FBTCxHQUFhLEVBQWI7QUFISTtBQUl0Qjs7aUJBRURDLFcsd0JBQWFDLEssRUFBT0MsTSxFQUFRO0FBQzFCLFFBQUlDLFFBQVEsS0FBS0EsS0FBTCxDQUFXRixLQUFYLENBQVo7O0FBRUEsUUFBSSxDQUFDQyxNQUFELElBQVdDLFVBQVUsQ0FBckIsSUFBMEIsS0FBS0osS0FBTCxDQUFXSyxNQUFYLEdBQW9CLENBQWxELEVBQXFEO0FBQ25ELFdBQUtMLEtBQUwsQ0FBVyxDQUFYLEVBQWNNLElBQWQsQ0FBbUJDLE1BQW5CLEdBQTRCLEtBQUtQLEtBQUwsQ0FBV0ksS0FBWCxFQUFrQkUsSUFBbEIsQ0FBdUJDLE1BQW5EO0FBQ0Q7O0FBRUQsV0FBTyxxQkFBTU4sV0FBTixZQUFrQkMsS0FBbEIsQ0FBUDtBQUNELEc7O2lCQUVETSxTLHNCQUFXTixLLEVBQU9PLE0sRUFBUVYsSSxFQUFNO0FBQzlCLFFBQUlDLFFBQVEscUJBQU1RLFNBQU4sWUFBZ0JOLEtBQWhCLENBQVo7O0FBRUEsUUFBSU8sTUFBSixFQUFZO0FBQ1YsVUFBSVYsU0FBUyxTQUFiLEVBQXdCO0FBQ3RCLFlBQUksS0FBS0MsS0FBTCxDQUFXSyxNQUFYLEdBQW9CLENBQXhCLEVBQTJCO0FBQ3pCSSxpQkFBT0gsSUFBUCxDQUFZQyxNQUFaLEdBQXFCLEtBQUtQLEtBQUwsQ0FBVyxDQUFYLEVBQWNNLElBQWQsQ0FBbUJDLE1BQXhDO0FBQ0QsU0FGRCxNQUVPO0FBQ0wsaUJBQU9FLE9BQU9ILElBQVAsQ0FBWUMsTUFBbkI7QUFDRDtBQUNGLE9BTkQsTUFNTyxJQUFJLEtBQUtHLEtBQUwsS0FBZUQsTUFBbkIsRUFBMkI7QUFDaEMsNkJBQWlCVCxLQUFqQixrSEFBd0I7QUFBQTs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUFBLGNBQWZXLElBQWU7O0FBQ3RCQSxlQUFLTCxJQUFMLENBQVVDLE1BQVYsR0FBbUJFLE9BQU9ILElBQVAsQ0FBWUMsTUFBL0I7QUFDRDtBQUNGO0FBQ0Y7O0FBRUQsV0FBT1AsS0FBUDtBQUNELEc7O0FBRUQ7Ozs7Ozs7Ozs7Ozs7OztpQkFhQVksUSx1QkFBc0I7QUFBQSxRQUFaQyxJQUFZLHVFQUFMLEVBQUs7O0FBQ3BCLFFBQUlDLGFBQWFDLFFBQVEsZUFBUixDQUFqQjtBQUNBLFFBQUlDLFlBQVlELFFBQVEsYUFBUixDQUFoQjs7QUFFQSxRQUFJRSxPQUFPLElBQUlILFVBQUosQ0FBZSxJQUFJRSxTQUFKLEVBQWYsRUFBZ0MsSUFBaEMsRUFBc0NILElBQXRDLENBQVg7QUFDQSxXQUFPSSxLQUFLQyxTQUFMLEVBQVA7QUFDRCxHOztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7RUExRGlCQyxtQjs7a0JBMkVKdEIsSSIsImZpbGUiOiJyb290LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IENvbnRhaW5lciBmcm9tICcuL2NvbnRhaW5lcidcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgQ1NTIGZpbGUgYW5kIGNvbnRhaW5zIGFsbCBpdHMgcGFyc2VkIG5vZGVzLlxuICpcbiAqIEBleHRlbmRzIENvbnRhaW5lclxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCByb290ID0gcG9zdGNzcy5wYXJzZSgnYXtjb2xvcjpibGFja30gYnt6LWluZGV4OjJ9JylcbiAqIHJvb3QudHlwZSAgICAgICAgIC8vPT4gJ3Jvb3QnXG4gKiByb290Lm5vZGVzLmxlbmd0aCAvLz0+IDJcbiAqL1xuY2xhc3MgUm9vdCBleHRlbmRzIENvbnRhaW5lciB7XG4gIGNvbnN0cnVjdG9yIChkZWZhdWx0cykge1xuICAgIHN1cGVyKGRlZmF1bHRzKVxuICAgIHRoaXMudHlwZSA9ICdyb290J1xuICAgIGlmICghdGhpcy5ub2RlcykgdGhpcy5ub2RlcyA9IFtdXG4gIH1cblxuICByZW1vdmVDaGlsZCAoY2hpbGQsIGlnbm9yZSkge1xuICAgIGxldCBpbmRleCA9IHRoaXMuaW5kZXgoY2hpbGQpXG5cbiAgICBpZiAoIWlnbm9yZSAmJiBpbmRleCA9PT0gMCAmJiB0aGlzLm5vZGVzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHRoaXMubm9kZXNbMV0ucmF3cy5iZWZvcmUgPSB0aGlzLm5vZGVzW2luZGV4XS5yYXdzLmJlZm9yZVxuICAgIH1cblxuICAgIHJldHVybiBzdXBlci5yZW1vdmVDaGlsZChjaGlsZClcbiAgfVxuXG4gIG5vcm1hbGl6ZSAoY2hpbGQsIHNhbXBsZSwgdHlwZSkge1xuICAgIGxldCBub2RlcyA9IHN1cGVyLm5vcm1hbGl6ZShjaGlsZClcblxuICAgIGlmIChzYW1wbGUpIHtcbiAgICAgIGlmICh0eXBlID09PSAncHJlcGVuZCcpIHtcbiAgICAgICAgaWYgKHRoaXMubm9kZXMubGVuZ3RoID4gMSkge1xuICAgICAgICAgIHNhbXBsZS5yYXdzLmJlZm9yZSA9IHRoaXMubm9kZXNbMV0ucmF3cy5iZWZvcmVcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkZWxldGUgc2FtcGxlLnJhd3MuYmVmb3JlXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodGhpcy5maXJzdCAhPT0gc2FtcGxlKSB7XG4gICAgICAgIGZvciAobGV0IG5vZGUgb2Ygbm9kZXMpIHtcbiAgICAgICAgICBub2RlLnJhd3MuYmVmb3JlID0gc2FtcGxlLnJhd3MuYmVmb3JlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbm9kZXNcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEge0BsaW5rIFJlc3VsdH0gaW5zdGFuY2UgcmVwcmVzZW50aW5nIHRoZSByb2904oCZcyBDU1MuXG4gICAqXG4gICAqIEBwYXJhbSB7cHJvY2Vzc09wdGlvbnN9IFtvcHRzXSBPcHRpb25zIHdpdGggb25seSBgdG9gIGFuZCBgbWFwYCBrZXlzLlxuICAgKlxuICAgKiBAcmV0dXJuIHtSZXN1bHR9IFJlc3VsdCB3aXRoIGN1cnJlbnQgcm9vdOKAmXMgQ1NTLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBjb25zdCByb290MSA9IHBvc3Rjc3MucGFyc2UoY3NzMSwgeyBmcm9tOiAnYS5jc3MnIH0pXG4gICAqIGNvbnN0IHJvb3QyID0gcG9zdGNzcy5wYXJzZShjc3MyLCB7IGZyb206ICdiLmNzcycgfSlcbiAgICogcm9vdDEuYXBwZW5kKHJvb3QyKVxuICAgKiBjb25zdCByZXN1bHQgPSByb290MS50b1Jlc3VsdCh7IHRvOiAnYWxsLmNzcycsIG1hcDogdHJ1ZSB9KVxuICAgKi9cbiAgdG9SZXN1bHQgKG9wdHMgPSB7IH0pIHtcbiAgICBsZXQgTGF6eVJlc3VsdCA9IHJlcXVpcmUoJy4vbGF6eS1yZXN1bHQnKVxuICAgIGxldCBQcm9jZXNzb3IgPSByZXF1aXJlKCcuL3Byb2Nlc3NvcicpXG5cbiAgICBsZXQgbGF6eSA9IG5ldyBMYXp5UmVzdWx0KG5ldyBQcm9jZXNzb3IoKSwgdGhpcywgb3B0cylcbiAgICByZXR1cm4gbGF6eS5zdHJpbmdpZnkoKVxuICB9XG5cbiAgLyoqXG4gICAqIEBtZW1iZXJvZiBSb290I1xuICAgKiBAbWVtYmVyIHtvYmplY3R9IHJhd3MgSW5mb3JtYXRpb24gdG8gZ2VuZXJhdGUgYnl0ZS10by1ieXRlIGVxdWFsXG4gICAqICAgICAgICAgICAgICAgICAgICAgICBub2RlIHN0cmluZyBhcyBpdCB3YXMgaW4gdGhlIG9yaWdpbiBpbnB1dC5cbiAgICpcbiAgICogRXZlcnkgcGFyc2VyIHNhdmVzIGl0cyBvd24gcHJvcGVydGllcyxcbiAgICogYnV0IHRoZSBkZWZhdWx0IENTUyBwYXJzZXIgdXNlczpcbiAgICpcbiAgICogKiBgYWZ0ZXJgOiB0aGUgc3BhY2Ugc3ltYm9scyBhZnRlciB0aGUgbGFzdCBjaGlsZCB0byB0aGUgZW5kIG9mIGZpbGUuXG4gICAqICogYHNlbWljb2xvbmA6IGlzIHRoZSBsYXN0IGNoaWxkIGhhcyBhbiAob3B0aW9uYWwpIHNlbWljb2xvbi5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogcG9zdGNzcy5wYXJzZSgnYSB7fVxcbicpLnJhd3MgLy89PiB7IGFmdGVyOiAnXFxuJyB9XG4gICAqIHBvc3Rjc3MucGFyc2UoJ2Ege30nKS5yYXdzICAgLy89PiB7IGFmdGVyOiAnJyB9XG4gICAqL1xufVxuXG5leHBvcnQgZGVmYXVsdCBSb290XG4iXX0=\n","import parser from './parser';\n\nexport default (editor, opts = {}) => {\n const options = { ...{\n // default options\n }, ...opts };\n\n editor.setCustomParserCss(parser);\n};\n","import postcss from 'postcss';\n\n/**\n * Log stuff\n * @param {Editor} editor\n * @param {*} msg\n */\nexport const log = (editor, msg) =>\n editor && editor.log(msg, { ns: 'parser-poscss' });\n\n/**\n * Create rule from node\n * @param {Object} node\n * @return {Object}\n */\nexport const createRule = node => {\n const declarations = node.nodes || [];\n const style = {};\n\n declarations.forEach(({ prop, value, important }) => {\n style[prop] = value + (important ? ' !important' : '');\n });\n\n return {\n selectors: node.selector || '',\n style,\n }\n};\n\n/**\n * Create at rule from node\n * @param {Object} node\n * @param {Array} result\n * @return {Object}\n */\nexport const createAtRule = (node, result) => {\n const { name, params } = node;\n const isNested = ['media', 'keyframes'].indexOf(name) >= 0;\n\n if (isNested) {\n node.nodes.forEach(node => {\n result.push({\n ...createRule(node),\n atRule: name,\n params,\n })\n });\n } else {\n result.push({\n ...createRule(node),\n atRule: name,\n })\n }\n};\n\nexport default (css, editor) => {\n const result = [];\n log(editor, ['Input CSS', css]);\n\n const ast = postcss.parse(css);\n log(editor, ['PostCSS AST', ast]);\n\n ast.nodes.forEach(node => {\n const { type } = node;\n\n switch (type) {\n case 'rule':\n result.push(createRule(node));\n break;\n case 'atrule':\n createAtRule(node, result);\n break;\n }\n });\n\n log(editor, ['Output', result]);\n\n return result;\n}\n","'use strict';\n\nexports.__esModule = true;\n\nvar _declaration = require('./declaration');\n\nvar _declaration2 = _interopRequireDefault(_declaration);\n\nvar _processor = require('./processor');\n\nvar _processor2 = _interopRequireDefault(_processor);\n\nvar _stringify = require('./stringify');\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _comment = require('./comment');\n\nvar _comment2 = _interopRequireDefault(_comment);\n\nvar _atRule = require('./at-rule');\n\nvar _atRule2 = _interopRequireDefault(_atRule);\n\nvar _vendor = require('./vendor');\n\nvar _vendor2 = _interopRequireDefault(_vendor);\n\nvar _parse = require('./parse');\n\nvar _parse2 = _interopRequireDefault(_parse);\n\nvar _list = require('./list');\n\nvar _list2 = _interopRequireDefault(_list);\n\nvar _rule = require('./rule');\n\nvar _rule2 = _interopRequireDefault(_rule);\n\nvar _root = require('./root');\n\nvar _root2 = _interopRequireDefault(_root);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Create a new {@link Processor} instance that will apply `plugins`\n * as CSS processors.\n *\n * @param {Array.|Processor} plugins PostCSS plugins.\n * See {@link Processor#use} for plugin format.\n *\n * @return {Processor} Processor to process multiple CSS.\n *\n * @example\n * import postcss from 'postcss'\n *\n * postcss(plugins).process(css, { from, to }).then(result => {\n * console.log(result.css)\n * })\n *\n * @namespace postcss\n */\nfunction postcss() {\n for (var _len = arguments.length, plugins = Array(_len), _key = 0; _key < _len; _key++) {\n plugins[_key] = arguments[_key];\n }\n\n if (plugins.length === 1 && Array.isArray(plugins[0])) {\n plugins = plugins[0];\n }\n return new _processor2.default(plugins);\n}\n\n/**\n * Creates a PostCSS plugin with a standard API.\n *\n * The newly-wrapped function will provide both the name and PostCSS\n * version of the plugin.\n *\n * ```js\n * const processor = postcss([replace])\n * processor.plugins[0].postcssPlugin //=> 'postcss-replace'\n * processor.plugins[0].postcssVersion //=> '6.0.0'\n * ```\n *\n * The plugin function receives 2 arguments: {@link Root}\n * and {@link Result} instance. The function should mutate the provided\n * `Root` node. Alternatively, you can create a new `Root` node\n * and override the `result.root` property.\n *\n * ```js\n * const cleaner = postcss.plugin('postcss-cleaner', () => {\n * return (root, result) => {\n * result.root = postcss.root()\n * }\n * })\n * ```\n *\n * As a convenience, plugins also expose a `process` method so that you can use\n * them as standalone tools.\n *\n * ```js\n * cleaner.process(css, processOpts, pluginOpts)\n * // This is equivalent to:\n * postcss([ cleaner(pluginOpts) ]).process(css, processOpts)\n * ```\n *\n * Asynchronous plugins should return a `Promise` instance.\n *\n * ```js\n * postcss.plugin('postcss-import', () => {\n * return (root, result) => {\n * return new Promise( (resolve, reject) => {\n * fs.readFile('base.css', (base) => {\n * root.prepend(base)\n * resolve()\n * })\n * })\n * }\n * })\n * ```\n *\n * Add warnings using the {@link Node#warn} method.\n * Send data to other plugins using the {@link Result#messages} array.\n *\n * ```js\n * postcss.plugin('postcss-caniuse-test', () => {\n * return (root, result) => {\n * root.walkDecls(decl => {\n * if (!caniuse.support(decl.prop)) {\n * decl.warn(result, 'Some browsers do not support ' + decl.prop)\n * }\n * })\n * }\n * })\n * ```\n *\n * @param {string} name PostCSS plugin name. Same as in `name`\n * property in `package.json`. It will be saved\n * in `plugin.postcssPlugin` property.\n * @param {function} initializer Will receive plugin options\n * and should return {@link pluginFunction}\n *\n * @return {Plugin} PostCSS plugin.\n */\npostcss.plugin = function plugin(name, initializer) {\n function creator() {\n var transformer = initializer.apply(undefined, arguments);\n transformer.postcssPlugin = name;\n transformer.postcssVersion = new _processor2.default().version;\n return transformer;\n }\n\n var cache = void 0;\n Object.defineProperty(creator, 'postcss', {\n get: function get() {\n if (!cache) cache = creator();\n return cache;\n }\n });\n\n creator.process = function (css, processOpts, pluginOpts) {\n return postcss([creator(pluginOpts)]).process(css, processOpts);\n };\n\n return creator;\n};\n\n/**\n * Default function to convert a node tree into a CSS string.\n *\n * @param {Node} node Start node for stringifing. Usually {@link Root}.\n * @param {builder} builder Function to concatenate CSS from node’s parts\n * or generate string and source map.\n *\n * @return {void}\n *\n * @function\n */\npostcss.stringify = _stringify2.default;\n\n/**\n * Parses source css and returns a new {@link Root} node,\n * which contains the source CSS nodes.\n *\n * @param {string|toString} css String with input CSS or any object\n * with toString() method, like a Buffer\n * @param {processOptions} [opts] Options with only `from` and `map` keys.\n *\n * @return {Root} PostCSS AST.\n *\n * @example\n * // Simple CSS concatenation with source map support\n * const root1 = postcss.parse(css1, { from: file1 })\n * const root2 = postcss.parse(css2, { from: file2 })\n * root1.append(root2).toResult().css\n *\n * @function\n */\npostcss.parse = _parse2.default;\n\n/**\n * Contains the {@link vendor} module.\n *\n * @type {vendor}\n *\n * @example\n * postcss.vendor.unprefixed('-moz-tab') //=> ['tab']\n */\npostcss.vendor = _vendor2.default;\n\n/**\n * Contains the {@link list} module.\n *\n * @member {list}\n *\n * @example\n * postcss.list.space('5px calc(10% + 5px)') //=> ['5px', 'calc(10% + 5px)']\n */\npostcss.list = _list2.default;\n\n/**\n * Creates a new {@link Comment} node.\n *\n * @param {object} [defaults] Properties for the new node.\n *\n * @return {Comment} New comment node\n *\n * @example\n * postcss.comment({ text: 'test' })\n */\npostcss.comment = function (defaults) {\n return new _comment2.default(defaults);\n};\n\n/**\n * Creates a new {@link AtRule} node.\n *\n * @param {object} [defaults] Properties for the new node.\n *\n * @return {AtRule} new at-rule node\n *\n * @example\n * postcss.atRule({ name: 'charset' }).toString() //=> \"@charset\"\n */\npostcss.atRule = function (defaults) {\n return new _atRule2.default(defaults);\n};\n\n/**\n * Creates a new {@link Declaration} node.\n *\n * @param {object} [defaults] Properties for the new node.\n *\n * @return {Declaration} new declaration node\n *\n * @example\n * postcss.decl({ prop: 'color', value: 'red' }).toString() //=> \"color: red\"\n */\npostcss.decl = function (defaults) {\n return new _declaration2.default(defaults);\n};\n\n/**\n * Creates a new {@link Rule} node.\n *\n * @param {object} [defaults] Properties for the new node.\n *\n * @return {Rule} new rule node\n *\n * @example\n * postcss.rule({ selector: 'a' }).toString() //=> \"a {\\n}\"\n */\npostcss.rule = function (defaults) {\n return new _rule2.default(defaults);\n};\n\n/**\n * Creates a new {@link Root} node.\n *\n * @param {object} [defaults] Properties for the new node.\n *\n * @return {Root} new root node.\n *\n * @example\n * postcss.root({ after: '\\n' }).toString() //=> \"\\n\"\n */\npostcss.root = function (defaults) {\n return new _root2.default(defaults);\n};\n\nexports.default = postcss;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBvc3Rjc3MuZXM2Il0sIm5hbWVzIjpbInBvc3Rjc3MiLCJwbHVnaW5zIiwibGVuZ3RoIiwiQXJyYXkiLCJpc0FycmF5IiwiUHJvY2Vzc29yIiwicGx1Z2luIiwibmFtZSIsImluaXRpYWxpemVyIiwiY3JlYXRvciIsInRyYW5zZm9ybWVyIiwicG9zdGNzc1BsdWdpbiIsInBvc3Rjc3NWZXJzaW9uIiwidmVyc2lvbiIsImNhY2hlIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXQiLCJwcm9jZXNzIiwiY3NzIiwicHJvY2Vzc09wdHMiLCJwbHVnaW5PcHRzIiwic3RyaW5naWZ5IiwicGFyc2UiLCJ2ZW5kb3IiLCJsaXN0IiwiY29tbWVudCIsIkNvbW1lbnQiLCJkZWZhdWx0cyIsImF0UnVsZSIsIkF0UnVsZSIsImRlY2wiLCJEZWNsYXJhdGlvbiIsInJ1bGUiLCJSdWxlIiwicm9vdCIsIlJvb3QiXSwibWFwcGluZ3MiOiI7Ozs7QUFBQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7Ozs7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWtCQSxTQUFTQSxPQUFULEdBQThCO0FBQUEsb0NBQVRDLE9BQVM7QUFBVEEsV0FBUztBQUFBOztBQUM1QixNQUFJQSxRQUFRQyxNQUFSLEtBQW1CLENBQW5CLElBQXdCQyxNQUFNQyxPQUFOLENBQWNILFFBQVEsQ0FBUixDQUFkLENBQTVCLEVBQXVEO0FBQ3JEQSxjQUFVQSxRQUFRLENBQVIsQ0FBVjtBQUNEO0FBQ0QsU0FBTyxJQUFJSSxtQkFBSixDQUFjSixPQUFkLENBQVA7QUFDRDs7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBd0VBRCxRQUFRTSxNQUFSLEdBQWlCLFNBQVNBLE1BQVQsQ0FBaUJDLElBQWpCLEVBQXVCQyxXQUF2QixFQUFvQztBQUNuRCxXQUFTQyxPQUFULEdBQTJCO0FBQ3pCLFFBQUlDLGNBQWNGLHVDQUFsQjtBQUNBRSxnQkFBWUMsYUFBWixHQUE0QkosSUFBNUI7QUFDQUcsZ0JBQVlFLGNBQVosR0FBOEIsSUFBSVAsbUJBQUosRUFBRCxDQUFrQlEsT0FBL0M7QUFDQSxXQUFPSCxXQUFQO0FBQ0Q7O0FBRUQsTUFBSUksY0FBSjtBQUNBQyxTQUFPQyxjQUFQLENBQXNCUCxPQUF0QixFQUErQixTQUEvQixFQUEwQztBQUN4Q1EsT0FEd0MsaUJBQ2pDO0FBQ0wsVUFBSSxDQUFDSCxLQUFMLEVBQVlBLFFBQVFMLFNBQVI7QUFDWixhQUFPSyxLQUFQO0FBQ0Q7QUFKdUMsR0FBMUM7O0FBT0FMLFVBQVFTLE9BQVIsR0FBa0IsVUFBVUMsR0FBVixFQUFlQyxXQUFmLEVBQTRCQyxVQUE1QixFQUF3QztBQUN4RCxXQUFPckIsUUFBUSxDQUFDUyxRQUFRWSxVQUFSLENBQUQsQ0FBUixFQUErQkgsT0FBL0IsQ0FBdUNDLEdBQXZDLEVBQTRDQyxXQUE1QyxDQUFQO0FBQ0QsR0FGRDs7QUFJQSxTQUFPWCxPQUFQO0FBQ0QsQ0FyQkQ7O0FBdUJBOzs7Ozs7Ozs7OztBQVdBVCxRQUFRc0IsU0FBUixHQUFvQkEsbUJBQXBCOztBQUVBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFrQkF0QixRQUFRdUIsS0FBUixHQUFnQkEsZUFBaEI7O0FBRUE7Ozs7Ozs7O0FBUUF2QixRQUFRd0IsTUFBUixHQUFpQkEsZ0JBQWpCOztBQUVBOzs7Ozs7OztBQVFBeEIsUUFBUXlCLElBQVIsR0FBZUEsY0FBZjs7QUFFQTs7Ozs7Ozs7OztBQVVBekIsUUFBUTBCLE9BQVIsR0FBa0I7QUFBQSxTQUFZLElBQUlDLGlCQUFKLENBQVlDLFFBQVosQ0FBWjtBQUFBLENBQWxCOztBQUVBOzs7Ozs7Ozs7O0FBVUE1QixRQUFRNkIsTUFBUixHQUFpQjtBQUFBLFNBQVksSUFBSUMsZ0JBQUosQ0FBV0YsUUFBWCxDQUFaO0FBQUEsQ0FBakI7O0FBRUE7Ozs7Ozs7Ozs7QUFVQTVCLFFBQVErQixJQUFSLEdBQWU7QUFBQSxTQUFZLElBQUlDLHFCQUFKLENBQWdCSixRQUFoQixDQUFaO0FBQUEsQ0FBZjs7QUFFQTs7Ozs7Ozs7OztBQVVBNUIsUUFBUWlDLElBQVIsR0FBZTtBQUFBLFNBQVksSUFBSUMsY0FBSixDQUFTTixRQUFULENBQVo7QUFBQSxDQUFmOztBQUVBOzs7Ozs7Ozs7O0FBVUE1QixRQUFRbUMsSUFBUixHQUFlO0FBQUEsU0FBWSxJQUFJQyxjQUFKLENBQVNSLFFBQVQsQ0FBWjtBQUFBLENBQWY7O2tCQUVlNUIsTyIsImZpbGUiOiJwb3N0Y3NzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERlY2xhcmF0aW9uIGZyb20gJy4vZGVjbGFyYXRpb24nXG5pbXBvcnQgUHJvY2Vzc29yIGZyb20gJy4vcHJvY2Vzc29yJ1xuaW1wb3J0IHN0cmluZ2lmeSBmcm9tICcuL3N0cmluZ2lmeSdcbmltcG9ydCBDb21tZW50IGZyb20gJy4vY29tbWVudCdcbmltcG9ydCBBdFJ1bGUgZnJvbSAnLi9hdC1ydWxlJ1xuaW1wb3J0IHZlbmRvciBmcm9tICcuL3ZlbmRvcidcbmltcG9ydCBwYXJzZSBmcm9tICcuL3BhcnNlJ1xuaW1wb3J0IGxpc3QgZnJvbSAnLi9saXN0J1xuaW1wb3J0IFJ1bGUgZnJvbSAnLi9ydWxlJ1xuaW1wb3J0IFJvb3QgZnJvbSAnLi9yb290J1xuXG4vKipcbiAqIENyZWF0ZSBhIG5ldyB7QGxpbmsgUHJvY2Vzc29yfSBpbnN0YW5jZSB0aGF0IHdpbGwgYXBwbHkgYHBsdWdpbnNgXG4gKiBhcyBDU1MgcHJvY2Vzc29ycy5cbiAqXG4gKiBAcGFyYW0ge0FycmF5LjxQbHVnaW58cGx1Z2luRnVuY3Rpb24+fFByb2Nlc3Nvcn0gcGx1Z2lucyBQb3N0Q1NTIHBsdWdpbnMuXG4gKiAgICAgICAgU2VlIHtAbGluayBQcm9jZXNzb3IjdXNlfSBmb3IgcGx1Z2luIGZvcm1hdC5cbiAqXG4gKiBAcmV0dXJuIHtQcm9jZXNzb3J9IFByb2Nlc3NvciB0byBwcm9jZXNzIG11bHRpcGxlIENTUy5cbiAqXG4gKiBAZXhhbXBsZVxuICogaW1wb3J0IHBvc3Rjc3MgZnJvbSAncG9zdGNzcydcbiAqXG4gKiBwb3N0Y3NzKHBsdWdpbnMpLnByb2Nlc3MoY3NzLCB7IGZyb20sIHRvIH0pLnRoZW4ocmVzdWx0ID0+IHtcbiAqICAgY29uc29sZS5sb2cocmVzdWx0LmNzcylcbiAqIH0pXG4gKlxuICogQG5hbWVzcGFjZSBwb3N0Y3NzXG4gKi9cbmZ1bmN0aW9uIHBvc3Rjc3MgKC4uLnBsdWdpbnMpIHtcbiAgaWYgKHBsdWdpbnMubGVuZ3RoID09PSAxICYmIEFycmF5LmlzQXJyYXkocGx1Z2luc1swXSkpIHtcbiAgICBwbHVnaW5zID0gcGx1Z2luc1swXVxuICB9XG4gIHJldHVybiBuZXcgUHJvY2Vzc29yKHBsdWdpbnMpXG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIFBvc3RDU1MgcGx1Z2luIHdpdGggYSBzdGFuZGFyZCBBUEkuXG4gKlxuICogVGhlIG5ld2x5LXdyYXBwZWQgZnVuY3Rpb24gd2lsbCBwcm92aWRlIGJvdGggdGhlIG5hbWUgYW5kIFBvc3RDU1NcbiAqIHZlcnNpb24gb2YgdGhlIHBsdWdpbi5cbiAqXG4gKiBgYGBqc1xuICogY29uc3QgcHJvY2Vzc29yID0gcG9zdGNzcyhbcmVwbGFjZV0pXG4gKiBwcm9jZXNzb3IucGx1Z2luc1swXS5wb3N0Y3NzUGx1Z2luICAvLz0+ICdwb3N0Y3NzLXJlcGxhY2UnXG4gKiBwcm9jZXNzb3IucGx1Z2luc1swXS5wb3N0Y3NzVmVyc2lvbiAvLz0+ICc2LjAuMCdcbiAqIGBgYFxuICpcbiAqIFRoZSBwbHVnaW4gZnVuY3Rpb24gcmVjZWl2ZXMgMiBhcmd1bWVudHM6IHtAbGluayBSb290fVxuICogYW5kIHtAbGluayBSZXN1bHR9IGluc3RhbmNlLiBUaGUgZnVuY3Rpb24gc2hvdWxkIG11dGF0ZSB0aGUgcHJvdmlkZWRcbiAqIGBSb290YCBub2RlLiBBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIGNyZWF0ZSBhIG5ldyBgUm9vdGAgbm9kZVxuICogYW5kIG92ZXJyaWRlIHRoZSBgcmVzdWx0LnJvb3RgIHByb3BlcnR5LlxuICpcbiAqIGBgYGpzXG4gKiBjb25zdCBjbGVhbmVyID0gcG9zdGNzcy5wbHVnaW4oJ3Bvc3Rjc3MtY2xlYW5lcicsICgpID0+IHtcbiAqICAgcmV0dXJuIChyb290LCByZXN1bHQpID0+IHtcbiAqICAgICByZXN1bHQucm9vdCA9IHBvc3Rjc3Mucm9vdCgpXG4gKiAgIH1cbiAqIH0pXG4gKiBgYGBcbiAqXG4gKiBBcyBhIGNvbnZlbmllbmNlLCBwbHVnaW5zIGFsc28gZXhwb3NlIGEgYHByb2Nlc3NgIG1ldGhvZCBzbyB0aGF0IHlvdSBjYW4gdXNlXG4gKiB0aGVtIGFzIHN0YW5kYWxvbmUgdG9vbHMuXG4gKlxuICogYGBganNcbiAqIGNsZWFuZXIucHJvY2Vzcyhjc3MsIHByb2Nlc3NPcHRzLCBwbHVnaW5PcHRzKVxuICogLy8gVGhpcyBpcyBlcXVpdmFsZW50IHRvOlxuICogcG9zdGNzcyhbIGNsZWFuZXIocGx1Z2luT3B0cykgXSkucHJvY2Vzcyhjc3MsIHByb2Nlc3NPcHRzKVxuICogYGBgXG4gKlxuICogQXN5bmNocm9ub3VzIHBsdWdpbnMgc2hvdWxkIHJldHVybiBhIGBQcm9taXNlYCBpbnN0YW5jZS5cbiAqXG4gKiBgYGBqc1xuICogcG9zdGNzcy5wbHVnaW4oJ3Bvc3Rjc3MtaW1wb3J0JywgKCkgPT4ge1xuICogICByZXR1cm4gKHJvb3QsIHJlc3VsdCkgPT4ge1xuICogICAgIHJldHVybiBuZXcgUHJvbWlzZSggKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICogICAgICAgZnMucmVhZEZpbGUoJ2Jhc2UuY3NzJywgKGJhc2UpID0+IHtcbiAqICAgICAgICAgcm9vdC5wcmVwZW5kKGJhc2UpXG4gKiAgICAgICAgIHJlc29sdmUoKVxuICogICAgICAgfSlcbiAqICAgICB9KVxuICogICB9XG4gKiB9KVxuICogYGBgXG4gKlxuICogQWRkIHdhcm5pbmdzIHVzaW5nIHRoZSB7QGxpbmsgTm9kZSN3YXJufSBtZXRob2QuXG4gKiBTZW5kIGRhdGEgdG8gb3RoZXIgcGx1Z2lucyB1c2luZyB0aGUge0BsaW5rIFJlc3VsdCNtZXNzYWdlc30gYXJyYXkuXG4gKlxuICogYGBganNcbiAqIHBvc3Rjc3MucGx1Z2luKCdwb3N0Y3NzLWNhbml1c2UtdGVzdCcsICgpID0+IHtcbiAqICAgcmV0dXJuIChyb290LCByZXN1bHQpID0+IHtcbiAqICAgICByb290LndhbGtEZWNscyhkZWNsID0+IHtcbiAqICAgICAgIGlmICghY2FuaXVzZS5zdXBwb3J0KGRlY2wucHJvcCkpIHtcbiAqICAgICAgICAgZGVjbC53YXJuKHJlc3VsdCwgJ1NvbWUgYnJvd3NlcnMgZG8gbm90IHN1cHBvcnQgJyArIGRlY2wucHJvcClcbiAqICAgICAgIH1cbiAqICAgICB9KVxuICogICB9XG4gKiB9KVxuICogYGBgXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgICAgICAgICAgUG9zdENTUyBwbHVnaW4gbmFtZS4gU2FtZSBhcyBpbiBgbmFtZWBcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5IGluIGBwYWNrYWdlLmpzb25gLiBJdCB3aWxsIGJlIHNhdmVkXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBgcGx1Z2luLnBvc3Rjc3NQbHVnaW5gIHByb3BlcnR5LlxuICogQHBhcmFtIHtmdW5jdGlvbn0gaW5pdGlhbGl6ZXIgV2lsbCByZWNlaXZlIHBsdWdpbiBvcHRpb25zXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgc2hvdWxkIHJldHVybiB7QGxpbmsgcGx1Z2luRnVuY3Rpb259XG4gKlxuICogQHJldHVybiB7UGx1Z2lufSBQb3N0Q1NTIHBsdWdpbi5cbiAqL1xucG9zdGNzcy5wbHVnaW4gPSBmdW5jdGlvbiBwbHVnaW4gKG5hbWUsIGluaXRpYWxpemVyKSB7XG4gIGZ1bmN0aW9uIGNyZWF0b3IgKC4uLmFyZ3MpIHtcbiAgICBsZXQgdHJhbnNmb3JtZXIgPSBpbml0aWFsaXplciguLi5hcmdzKVxuICAgIHRyYW5zZm9ybWVyLnBvc3Rjc3NQbHVnaW4gPSBuYW1lXG4gICAgdHJhbnNmb3JtZXIucG9zdGNzc1ZlcnNpb24gPSAobmV3IFByb2Nlc3NvcigpKS52ZXJzaW9uXG4gICAgcmV0dXJuIHRyYW5zZm9ybWVyXG4gIH1cblxuICBsZXQgY2FjaGVcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNyZWF0b3IsICdwb3N0Y3NzJywge1xuICAgIGdldCAoKSB7XG4gICAgICBpZiAoIWNhY2hlKSBjYWNoZSA9IGNyZWF0b3IoKVxuICAgICAgcmV0dXJuIGNhY2hlXG4gICAgfVxuICB9KVxuXG4gIGNyZWF0b3IucHJvY2VzcyA9IGZ1bmN0aW9uIChjc3MsIHByb2Nlc3NPcHRzLCBwbHVnaW5PcHRzKSB7XG4gICAgcmV0dXJuIHBvc3Rjc3MoW2NyZWF0b3IocGx1Z2luT3B0cyldKS5wcm9jZXNzKGNzcywgcHJvY2Vzc09wdHMpXG4gIH1cblxuICByZXR1cm4gY3JlYXRvclxufVxuXG4vKipcbiAqIERlZmF1bHQgZnVuY3Rpb24gdG8gY29udmVydCBhIG5vZGUgdHJlZSBpbnRvIGEgQ1NTIHN0cmluZy5cbiAqXG4gKiBAcGFyYW0ge05vZGV9IG5vZGUgICAgICAgU3RhcnQgbm9kZSBmb3Igc3RyaW5naWZpbmcuIFVzdWFsbHkge0BsaW5rIFJvb3R9LlxuICogQHBhcmFtIHtidWlsZGVyfSBidWlsZGVyIEZ1bmN0aW9uIHRvIGNvbmNhdGVuYXRlIENTUyBmcm9tIG5vZGXigJlzIHBhcnRzXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgb3IgZ2VuZXJhdGUgc3RyaW5nIGFuZCBzb3VyY2UgbWFwLlxuICpcbiAqIEByZXR1cm4ge3ZvaWR9XG4gKlxuICogQGZ1bmN0aW9uXG4gKi9cbnBvc3Rjc3Muc3RyaW5naWZ5ID0gc3RyaW5naWZ5XG5cbi8qKlxuICogUGFyc2VzIHNvdXJjZSBjc3MgYW5kIHJldHVybnMgYSBuZXcge0BsaW5rIFJvb3R9IG5vZGUsXG4gKiB3aGljaCBjb250YWlucyB0aGUgc291cmNlIENTUyBub2Rlcy5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ3x0b1N0cmluZ30gY3NzICAgU3RyaW5nIHdpdGggaW5wdXQgQ1NTIG9yIGFueSBvYmplY3RcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHRvU3RyaW5nKCkgbWV0aG9kLCBsaWtlIGEgQnVmZmVyXG4gKiBAcGFyYW0ge3Byb2Nlc3NPcHRpb25zfSBbb3B0c10gT3B0aW9ucyB3aXRoIG9ubHkgYGZyb21gIGFuZCBgbWFwYCBrZXlzLlxuICpcbiAqIEByZXR1cm4ge1Jvb3R9IFBvc3RDU1MgQVNULlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTaW1wbGUgQ1NTIGNvbmNhdGVuYXRpb24gd2l0aCBzb3VyY2UgbWFwIHN1cHBvcnRcbiAqIGNvbnN0IHJvb3QxID0gcG9zdGNzcy5wYXJzZShjc3MxLCB7IGZyb206IGZpbGUxIH0pXG4gKiBjb25zdCByb290MiA9IHBvc3Rjc3MucGFyc2UoY3NzMiwgeyBmcm9tOiBmaWxlMiB9KVxuICogcm9vdDEuYXBwZW5kKHJvb3QyKS50b1Jlc3VsdCgpLmNzc1xuICpcbiAqIEBmdW5jdGlvblxuICovXG5wb3N0Y3NzLnBhcnNlID0gcGFyc2VcblxuLyoqXG4gKiBDb250YWlucyB0aGUge0BsaW5rIHZlbmRvcn0gbW9kdWxlLlxuICpcbiAqIEB0eXBlIHt2ZW5kb3J9XG4gKlxuICogQGV4YW1wbGVcbiAqIHBvc3Rjc3MudmVuZG9yLnVucHJlZml4ZWQoJy1tb3otdGFiJykgLy89PiBbJ3RhYiddXG4gKi9cbnBvc3Rjc3MudmVuZG9yID0gdmVuZG9yXG5cbi8qKlxuICogQ29udGFpbnMgdGhlIHtAbGluayBsaXN0fSBtb2R1bGUuXG4gKlxuICogQG1lbWJlciB7bGlzdH1cbiAqXG4gKiBAZXhhbXBsZVxuICogcG9zdGNzcy5saXN0LnNwYWNlKCc1cHggY2FsYygxMCUgKyA1cHgpJykgLy89PiBbJzVweCcsICdjYWxjKDEwJSArIDVweCknXVxuICovXG5wb3N0Y3NzLmxpc3QgPSBsaXN0XG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyB7QGxpbmsgQ29tbWVudH0gbm9kZS5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gW2RlZmF1bHRzXSBQcm9wZXJ0aWVzIGZvciB0aGUgbmV3IG5vZGUuXG4gKlxuICogQHJldHVybiB7Q29tbWVudH0gTmV3IGNvbW1lbnQgbm9kZVxuICpcbiAqIEBleGFtcGxlXG4gKiBwb3N0Y3NzLmNvbW1lbnQoeyB0ZXh0OiAndGVzdCcgfSlcbiAqL1xucG9zdGNzcy5jb21tZW50ID0gZGVmYXVsdHMgPT4gbmV3IENvbW1lbnQoZGVmYXVsdHMpXG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyB7QGxpbmsgQXRSdWxlfSBub2RlLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBbZGVmYXVsdHNdIFByb3BlcnRpZXMgZm9yIHRoZSBuZXcgbm9kZS5cbiAqXG4gKiBAcmV0dXJuIHtBdFJ1bGV9IG5ldyBhdC1ydWxlIG5vZGVcbiAqXG4gKiBAZXhhbXBsZVxuICogcG9zdGNzcy5hdFJ1bGUoeyBuYW1lOiAnY2hhcnNldCcgfSkudG9TdHJpbmcoKSAvLz0+IFwiQGNoYXJzZXRcIlxuICovXG5wb3N0Y3NzLmF0UnVsZSA9IGRlZmF1bHRzID0+IG5ldyBBdFJ1bGUoZGVmYXVsdHMpXG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyB7QGxpbmsgRGVjbGFyYXRpb259IG5vZGUuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IFtkZWZhdWx0c10gUHJvcGVydGllcyBmb3IgdGhlIG5ldyBub2RlLlxuICpcbiAqIEByZXR1cm4ge0RlY2xhcmF0aW9ufSBuZXcgZGVjbGFyYXRpb24gbm9kZVxuICpcbiAqIEBleGFtcGxlXG4gKiBwb3N0Y3NzLmRlY2woeyBwcm9wOiAnY29sb3InLCB2YWx1ZTogJ3JlZCcgfSkudG9TdHJpbmcoKSAvLz0+IFwiY29sb3I6IHJlZFwiXG4gKi9cbnBvc3Rjc3MuZGVjbCA9IGRlZmF1bHRzID0+IG5ldyBEZWNsYXJhdGlvbihkZWZhdWx0cylcblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IHtAbGluayBSdWxlfSBub2RlLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBbZGVmYXVsdHNdIFByb3BlcnRpZXMgZm9yIHRoZSBuZXcgbm9kZS5cbiAqXG4gKiBAcmV0dXJuIHtSdWxlfSBuZXcgcnVsZSBub2RlXG4gKlxuICogQGV4YW1wbGVcbiAqIHBvc3Rjc3MucnVsZSh7IHNlbGVjdG9yOiAnYScgfSkudG9TdHJpbmcoKSAvLz0+IFwiYSB7XFxufVwiXG4gKi9cbnBvc3Rjc3MucnVsZSA9IGRlZmF1bHRzID0+IG5ldyBSdWxlKGRlZmF1bHRzKVxuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcge0BsaW5rIFJvb3R9IG5vZGUuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IFtkZWZhdWx0c10gUHJvcGVydGllcyBmb3IgdGhlIG5ldyBub2RlLlxuICpcbiAqIEByZXR1cm4ge1Jvb3R9IG5ldyByb290IG5vZGUuXG4gKlxuICogQGV4YW1wbGVcbiAqIHBvc3Rjc3Mucm9vdCh7IGFmdGVyOiAnXFxuJyB9KS50b1N0cmluZygpIC8vPT4gXCJcXG5cIlxuICovXG5wb3N0Y3NzLnJvb3QgPSBkZWZhdWx0cyA9PiBuZXcgUm9vdChkZWZhdWx0cylcblxuZXhwb3J0IGRlZmF1bHQgcG9zdGNzc1xuIl19\n","'use strict';\n\nexports.__esModule = true;\n\nvar _sourceMap = require('source-map');\n\nvar _sourceMap2 = _interopRequireDefault(_sourceMap);\n\nvar _path = require('path');\n\nvar _path2 = _interopRequireDefault(_path);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar MapGenerator = function () {\n function MapGenerator(stringify, root, opts) {\n _classCallCheck(this, MapGenerator);\n\n this.stringify = stringify;\n this.mapOpts = opts.map || {};\n this.root = root;\n this.opts = opts;\n }\n\n MapGenerator.prototype.isMap = function isMap() {\n if (typeof this.opts.map !== 'undefined') {\n return !!this.opts.map;\n } else {\n return this.previous().length > 0;\n }\n };\n\n MapGenerator.prototype.previous = function previous() {\n var _this = this;\n\n if (!this.previousMaps) {\n this.previousMaps = [];\n this.root.walk(function (node) {\n if (node.source && node.source.input.map) {\n var map = node.source.input.map;\n if (_this.previousMaps.indexOf(map) === -1) {\n _this.previousMaps.push(map);\n }\n }\n });\n }\n\n return this.previousMaps;\n };\n\n MapGenerator.prototype.isInline = function isInline() {\n if (typeof this.mapOpts.inline !== 'undefined') {\n return this.mapOpts.inline;\n }\n\n var annotation = this.mapOpts.annotation;\n if (typeof annotation !== 'undefined' && annotation !== true) {\n return false;\n }\n\n if (this.previous().length) {\n return this.previous().some(function (i) {\n return i.inline;\n });\n } else {\n return true;\n }\n };\n\n MapGenerator.prototype.isSourcesContent = function isSourcesContent() {\n if (typeof this.mapOpts.sourcesContent !== 'undefined') {\n return this.mapOpts.sourcesContent;\n }\n if (this.previous().length) {\n return this.previous().some(function (i) {\n return i.withContent();\n });\n } else {\n return true;\n }\n };\n\n MapGenerator.prototype.clearAnnotation = function clearAnnotation() {\n if (this.mapOpts.annotation === false) return;\n\n var node = void 0;\n for (var i = this.root.nodes.length - 1; i >= 0; i--) {\n node = this.root.nodes[i];\n if (node.type !== 'comment') continue;\n if (node.text.indexOf('# sourceMappingURL=') === 0) {\n this.root.removeChild(i);\n }\n }\n };\n\n MapGenerator.prototype.setSourcesContent = function setSourcesContent() {\n var _this2 = this;\n\n var already = {};\n this.root.walk(function (node) {\n if (node.source) {\n var from = node.source.input.from;\n if (from && !already[from]) {\n already[from] = true;\n var relative = _this2.relative(from);\n _this2.map.setSourceContent(relative, node.source.input.css);\n }\n }\n });\n };\n\n MapGenerator.prototype.applyPrevMaps = function applyPrevMaps() {\n for (var _iterator = this.previous(), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var prev = _ref;\n\n var from = this.relative(prev.file);\n var root = prev.root || _path2.default.dirname(prev.file);\n var map = void 0;\n\n if (this.mapOpts.sourcesContent === false) {\n map = new _sourceMap2.default.SourceMapConsumer(prev.text);\n if (map.sourcesContent) {\n map.sourcesContent = map.sourcesContent.map(function () {\n return null;\n });\n }\n } else {\n map = prev.consumer();\n }\n\n this.map.applySourceMap(map, from, this.relative(root));\n }\n };\n\n MapGenerator.prototype.isAnnotation = function isAnnotation() {\n if (this.isInline()) {\n return true;\n } else if (typeof this.mapOpts.annotation !== 'undefined') {\n return this.mapOpts.annotation;\n } else if (this.previous().length) {\n return this.previous().some(function (i) {\n return i.annotation;\n });\n } else {\n return true;\n }\n };\n\n MapGenerator.prototype.toBase64 = function toBase64(str) {\n if (Buffer) {\n return Buffer.from(str).toString('base64');\n } else {\n return window.btoa(unescape(encodeURIComponent(str)));\n }\n };\n\n MapGenerator.prototype.addAnnotation = function addAnnotation() {\n var content = void 0;\n\n if (this.isInline()) {\n content = 'data:application/json;base64,' + this.toBase64(this.map.toString());\n } else if (typeof this.mapOpts.annotation === 'string') {\n content = this.mapOpts.annotation;\n } else {\n content = this.outputFile() + '.map';\n }\n\n var eol = '\\n';\n if (this.css.indexOf('\\r\\n') !== -1) eol = '\\r\\n';\n\n this.css += eol + '/*# sourceMappingURL=' + content + ' */';\n };\n\n MapGenerator.prototype.outputFile = function outputFile() {\n if (this.opts.to) {\n return this.relative(this.opts.to);\n } else if (this.opts.from) {\n return this.relative(this.opts.from);\n } else {\n return 'to.css';\n }\n };\n\n MapGenerator.prototype.generateMap = function generateMap() {\n this.generateString();\n if (this.isSourcesContent()) this.setSourcesContent();\n if (this.previous().length > 0) this.applyPrevMaps();\n if (this.isAnnotation()) this.addAnnotation();\n\n if (this.isInline()) {\n return [this.css];\n } else {\n return [this.css, this.map];\n }\n };\n\n MapGenerator.prototype.relative = function relative(file) {\n if (file.indexOf('<') === 0) return file;\n if (/^\\w+:\\/\\//.test(file)) return file;\n\n var from = this.opts.to ? _path2.default.dirname(this.opts.to) : '.';\n\n if (typeof this.mapOpts.annotation === 'string') {\n from = _path2.default.dirname(_path2.default.resolve(from, this.mapOpts.annotation));\n }\n\n file = _path2.default.relative(from, file);\n if (_path2.default.sep === '\\\\') {\n return file.replace(/\\\\/g, '/');\n } else {\n return file;\n }\n };\n\n MapGenerator.prototype.sourcePath = function sourcePath(node) {\n if (this.mapOpts.from) {\n return this.mapOpts.from;\n } else {\n return this.relative(node.source.input.from);\n }\n };\n\n MapGenerator.prototype.generateString = function generateString() {\n var _this3 = this;\n\n this.css = '';\n this.map = new _sourceMap2.default.SourceMapGenerator({ file: this.outputFile() });\n\n var line = 1;\n var column = 1;\n\n var lines = void 0,\n last = void 0;\n this.stringify(this.root, function (str, node, type) {\n _this3.css += str;\n\n if (node && type !== 'end') {\n if (node.source && node.source.start) {\n _this3.map.addMapping({\n source: _this3.sourcePath(node),\n generated: { line: line, column: column - 1 },\n original: {\n line: node.source.start.line,\n column: node.source.start.column - 1\n }\n });\n } else {\n _this3.map.addMapping({\n source: '',\n original: { line: 1, column: 0 },\n generated: { line: line, column: column - 1 }\n });\n }\n }\n\n lines = str.match(/\\n/g);\n if (lines) {\n line += lines.length;\n last = str.lastIndexOf('\\n');\n column = str.length - last;\n } else {\n column += str.length;\n }\n\n if (node && type !== 'start') {\n if (node.source && node.source.end) {\n _this3.map.addMapping({\n source: _this3.sourcePath(node),\n generated: { line: line, column: column - 1 },\n original: {\n line: node.source.end.line,\n column: node.source.end.column\n }\n });\n } else {\n _this3.map.addMapping({\n source: '',\n original: { line: 1, column: 0 },\n generated: { line: line, column: column - 1 }\n });\n }\n }\n });\n };\n\n MapGenerator.prototype.generate = function generate() {\n this.clearAnnotation();\n\n if (this.isMap()) {\n return this.generateMap();\n } else {\n var result = '';\n this.stringify(this.root, function (i) {\n result += i;\n });\n return [result];\n }\n };\n\n return MapGenerator;\n}();\n\nexports.default = MapGenerator;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1hcC1nZW5lcmF0b3IuZXM2Il0sIm5hbWVzIjpbIk1hcEdlbmVyYXRvciIsInN0cmluZ2lmeSIsInJvb3QiLCJvcHRzIiwibWFwT3B0cyIsIm1hcCIsImlzTWFwIiwicHJldmlvdXMiLCJsZW5ndGgiLCJwcmV2aW91c01hcHMiLCJ3YWxrIiwibm9kZSIsInNvdXJjZSIsImlucHV0IiwiaW5kZXhPZiIsInB1c2giLCJpc0lubGluZSIsImlubGluZSIsImFubm90YXRpb24iLCJzb21lIiwiaSIsImlzU291cmNlc0NvbnRlbnQiLCJzb3VyY2VzQ29udGVudCIsIndpdGhDb250ZW50IiwiY2xlYXJBbm5vdGF0aW9uIiwibm9kZXMiLCJ0eXBlIiwidGV4dCIsInJlbW92ZUNoaWxkIiwic2V0U291cmNlc0NvbnRlbnQiLCJhbHJlYWR5IiwiZnJvbSIsInJlbGF0aXZlIiwic2V0U291cmNlQ29udGVudCIsImNzcyIsImFwcGx5UHJldk1hcHMiLCJwcmV2IiwiZmlsZSIsInBhdGgiLCJkaXJuYW1lIiwibW96aWxsYSIsIlNvdXJjZU1hcENvbnN1bWVyIiwiY29uc3VtZXIiLCJhcHBseVNvdXJjZU1hcCIsImlzQW5ub3RhdGlvbiIsInRvQmFzZTY0Iiwic3RyIiwiQnVmZmVyIiwidG9TdHJpbmciLCJ3aW5kb3ciLCJidG9hIiwidW5lc2NhcGUiLCJlbmNvZGVVUklDb21wb25lbnQiLCJhZGRBbm5vdGF0aW9uIiwiY29udGVudCIsIm91dHB1dEZpbGUiLCJlb2wiLCJ0byIsImdlbmVyYXRlTWFwIiwiZ2VuZXJhdGVTdHJpbmciLCJ0ZXN0IiwicmVzb2x2ZSIsInNlcCIsInJlcGxhY2UiLCJzb3VyY2VQYXRoIiwiU291cmNlTWFwR2VuZXJhdG9yIiwibGluZSIsImNvbHVtbiIsImxpbmVzIiwibGFzdCIsInN0YXJ0IiwiYWRkTWFwcGluZyIsImdlbmVyYXRlZCIsIm9yaWdpbmFsIiwibWF0Y2giLCJsYXN0SW5kZXhPZiIsImVuZCIsImdlbmVyYXRlIiwicmVzdWx0Il0s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QXBCLEVBQTBCLGFBQUs7QUFDN0I0RSxrQkFBVTFELENBQVY7QUFDRCxPQUZEO0FBR0EsYUFBTyxDQUFDMEQsTUFBRCxDQUFQO0FBQ0Q7QUFDRixHOzs7OztrQkFHWTlFLFkiLCJmaWxlIjoibWFwLWdlbmVyYXRvci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb3ppbGxhIGZyb20gJ3NvdXJjZS1tYXAnXG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJ1xuXG5jbGFzcyBNYXBHZW5lcmF0b3Ige1xuICBjb25zdHJ1Y3RvciAoc3RyaW5naWZ5LCByb290LCBvcHRzKSB7XG4gICAgdGhpcy5zdHJpbmdpZnkgPSBzdHJpbmdpZnlcbiAgICB0aGlzLm1hcE9wdHMgPSBvcHRzLm1hcCB8fCB7IH1cbiAgICB0aGlzLnJvb3QgPSByb290XG4gICAgdGhpcy5vcHRzID0gb3B0c1xuICB9XG5cbiAgaXNNYXAgKCkge1xuICAgIGlmICh0eXBlb2YgdGhpcy5vcHRzLm1hcCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybiAhIXRoaXMub3B0cy5tYXBcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMucHJldmlvdXMoKS5sZW5ndGggPiAwXG4gICAgfVxuICB9XG5cbiAgcHJldmlvdXMgKCkge1xuICAgIGlmICghdGhpcy5wcmV2aW91c01hcHMpIHtcbiAgICAgIHRoaXMucHJldmlvdXNNYXBzID0gW11cbiAgICAgIHRoaXMucm9vdC53YWxrKG5vZGUgPT4ge1xuICAgICAgICBpZiAobm9kZS5zb3VyY2UgJiYgbm9kZS5zb3VyY2UuaW5wdXQubWFwKSB7XG4gICAgICAgICAgbGV0IG1hcCA9IG5vZGUuc291cmNlLmlucHV0Lm1hcFxuICAgICAgICAgIGlmICh0aGlzLnByZXZpb3VzTWFwcy5pbmRleE9mKG1hcCkgPT09IC0xKSB7XG4gICAgICAgICAgICB0aGlzLnByZXZpb3VzTWFwcy5wdXNoKG1hcClcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMucHJldmlvdXNNYXBzXG4gIH1cblxuICBpc0lubGluZSAoKSB7XG4gICAgaWYgKHR5cGVvZiB0aGlzLm1hcE9wdHMuaW5saW5lICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgcmV0dXJuIHRoaXMubWFwT3B0cy5pbmxpbmVcbiAgICB9XG5cbiAgICBsZXQgYW5ub3RhdGlvbiA9IHRoaXMubWFwT3B0cy5hbm5vdGF0aW9uXG4gICAgaWYgKHR5cGVvZiBhbm5vdGF0aW9uICE9PSAndW5kZWZpbmVkJyAmJiBhbm5vdGF0aW9uICE9PSB0cnVlKSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG5cbiAgICBpZiAodGhpcy5wcmV2aW91cygpLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHRoaXMucHJldmlvdXMoKS5zb21lKGkgPT4gaS5pbmxpbmUpXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuICB9XG5cbiAgaXNTb3VyY2VzQ29udGVudCAoKSB7XG4gICAgaWYgKHR5cGVvZiB0aGlzLm1hcE9wdHMuc291cmNlc0NvbnRlbnQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXR1cm4gdGhpcy5tYXBPcHRzLnNvdXJjZXNDb250ZW50XG4gICAgfVxuICAgIGlmICh0aGlzLnByZXZpb3VzKCkubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gdGhpcy5wcmV2aW91cygpLnNvbWUoaSA9PiBpLndpdGhDb250ZW50KCkpXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuICB9XG5cbiAgY2xlYXJBbm5vdGF0aW9uICgpIHtcbiAgICBpZiAodGhpcy5tYXBPcHRzLmFubm90YXRpb24gPT09IGZhbHNlKSByZXR1cm5cblxuICAgIGxldCBub2RlXG4gICAgZm9yIChsZXQgaSA9IHRoaXMucm9vdC5ub2Rlcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgbm9kZSA9IHRoaXMucm9vdC5ub2Rlc1tpXVxuICAgICAgaWYgKG5vZGUudHlwZSAhPT0gJ2NvbW1lbnQnKSBjb250aW51ZVxuICAgICAgaWYgKG5vZGUudGV4dC5pbmRleE9mKCcjIHNvdXJjZU1hcHBpbmdVUkw9JykgPT09IDApIHtcbiAgICAgICAgdGhpcy5yb290LnJlbW92ZUNoaWxkKGkpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2V0U291cmNlc0NvbnRlbnQgKCkge1xuICAgIGxldCBhbHJlYWR5ID0geyB9XG4gICAgdGhpcy5yb290LndhbGsobm9kZSA9PiB7XG4gICAgICBpZiAobm9kZS5zb3VyY2UpIHtcbiAgICAgICAgbGV0IGZyb20gPSBub2RlLnNvdXJjZS5pbnB1dC5mcm9tXG4gICAgICAgIGlmIChmcm9tICYmICFhbHJlYWR5W2Zyb21dKSB7XG4gICAgICAgICAgYWxyZWFkeVtmcm9tXSA9IHRydWVcbiAgICAgICAgICBsZXQgcmVsYXRpdmUgPSB0aGlzLnJlbGF0aXZlKGZyb20pXG4gICAgICAgICAgdGhpcy5tYXAuc2V0U291cmNlQ29udGVudChyZWxhdGl2ZSwgbm9kZS5zb3VyY2UuaW5wdXQuY3NzKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIGFwcGx5UHJldk1hcHMgKCkge1xuICAgIGZvciAobGV0IHByZXYgb2YgdGhpcy5wcmV2aW91cygpKSB7XG4gICAgICBsZXQgZnJvbSA9IHRoaXMucmVsYXRpdmUocHJldi5maWxlKVxuICAgICAgbGV0IHJvb3QgPSBwcmV2LnJvb3QgfHwgcGF0aC5kaXJuYW1lKHByZXYuZmlsZSlcbiAgICAgIGxldCBtYXBcblxuICAgICAgaWYgKHRoaXMubWFwT3B0cy5zb3VyY2VzQ29udGVudCA9PT0gZmFsc2UpIHtcbiAgICAgICAgbWFwID0gbmV3IG1vemlsbGEuU291cmNlTWFwQ29uc3VtZXIocHJldi50ZXh0KVxuICAgICAgICBpZiAobWFwLnNvdXJjZXNDb250ZW50KSB7XG4gICAgICAgICAgbWFwLnNvdXJjZXNDb250ZW50ID0gbWFwLnNvdXJjZXNDb250ZW50Lm1hcCgoKSA9PiBudWxsKVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtYXAgPSBwcmV2LmNvbnN1bWVyKClcbiAgICAgIH1cblxuICAgICAgdGhpcy5tYXAuYXBwbHlTb3VyY2VNYXAobWFwLCBmcm9tLCB0aGlzLnJlbGF0aXZlKHJvb3QpKVxuICAgIH1cbiAgfVxuXG4gIGlzQW5ub3RhdGlvbiAoKSB7XG4gICAgaWYgKHRoaXMuaXNJbmxpbmUoKSkge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB0aGlzLm1hcE9wdHMuYW5ub3RhdGlvbiAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybiB0aGlzLm1hcE9wdHMuYW5ub3RhdGlvblxuICAgIH0gZWxzZSBpZiAodGhpcy5wcmV2aW91cygpLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHRoaXMucHJldmlvdXMoKS5zb21lKGkgPT4gaS5hbm5vdGF0aW9uKVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cbiAgfVxuXG4gIHRvQmFzZTY0IChzdHIpIHtcbiAgICBpZiAoQnVmZmVyKSB7XG4gICAgICByZXR1cm4gQnVmZmVyLmZyb20oc3RyKS50b1N0cmluZygnYmFzZTY0JylcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHdpbmRvdy5idG9hKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChzdHIpKSlcbiAgICB9XG4gIH1cblxuICBhZGRBbm5vdGF0aW9uICgpIHtcbiAgICBsZXQgY29udGVudFxuXG4gICAgaWYgKHRoaXMuaXNJbmxpbmUoKSkge1xuICAgICAgY29udGVudCA9ICdkYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LCcgK1xuICAgICAgICAgICAgICAgIHRoaXMudG9CYXNlNjQodGhpcy5tYXAudG9TdHJpbmcoKSlcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB0aGlzLm1hcE9wdHMuYW5ub3RhdGlvbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGNvbnRlbnQgPSB0aGlzLm1hcE9wdHMuYW5ub3RhdGlvblxuICAgIH0gZWxzZSB7XG4gICAgICBjb250ZW50ID0gdGhpcy5vdXRwdXRGaWxlKCkgKyAnLm1hcCdcbiAgICB9XG5cbiAgICBsZXQgZW9sID0gJ1xcbidcbiAgICBpZiAodGhpcy5jc3MuaW5kZXhPZignXFxyXFxuJykgIT09IC0xKSBlb2wgPSAnXFxyXFxuJ1xuXG4gICAgdGhpcy5jc3MgKz0gZW9sICsgJy8qIyBzb3VyY2VNYXBwaW5nVVJMPScgKyBjb250ZW50ICsgJyAqLydcbiAgfVxuXG4gIG91dHB1dEZpbGUgKCkge1xuICAgIGlmICh0aGlzLm9wdHMudG8pIHtcbiAgICAgIHJldHVybiB0aGlzLnJlbGF0aXZlKHRoaXMub3B0cy50bylcbiAgICB9IGVsc2UgaWYgKHRoaXMub3B0cy5mcm9tKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZWxhdGl2ZSh0aGlzLm9wdHMuZnJvbSlcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICd0by5jc3MnXG4gICAgfVxuICB9XG5cbiAgZ2VuZXJhdGVNYXAgKCkge1xuICAgIHRoaXMuZ2VuZXJhdGVTdHJpbmcoKVxuICAgIGlmICh0aGlzLmlzU291cmNlc0NvbnRlbnQoKSkgdGhpcy5zZXRTb3VyY2VzQ29udGVudCgpXG4gICAgaWYgKHRoaXMucHJldmlvdXMoKS5sZW5ndGggPiAwKSB0aGlzLmFwcGx5UHJldk1hcHMoKVxuICAgIGlmICh0aGlzLmlzQW5ub3RhdGlvbigpKSB0aGlzLmFkZEFubm90YXRpb24oKVxuXG4gICAgaWYgKHRoaXMuaXNJbmxpbmUoKSkge1xuICAgICAgcmV0dXJuIFt0aGlzLmNzc11cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFt0aGlzLmNzcywgdGhpcy5tYXBdXG4gICAgfVxuICB9XG5cbiAgcmVsYXRpdmUgKGZpbGUpIHtcbiAgICBpZiAoZmlsZS5pbmRleE9mKCc8JykgPT09IDApIHJldHVybiBmaWxlXG4gICAgaWYgKC9eXFx3KzpcXC9cXC8vLnRlc3QoZmlsZSkpIHJldHVybiBmaWxlXG5cbiAgICBsZXQgZnJvbSA9IHRoaXMub3B0cy50byA/IHBhdGguZGlybmFtZSh0aGlzLm9wdHMudG8pIDogJy4nXG5cbiAgICBpZiAodHlwZW9mIHRoaXMubWFwT3B0cy5hbm5vdGF0aW9uID09PSAnc3RyaW5nJykge1xuICAgICAgZnJvbSA9IHBhdGguZGlybmFtZShwYXRoLnJlc29sdmUoZnJvbSwgdGhpcy5tYXBPcHRzLmFubm90YXRpb24pKVxuICAgIH1cblxuICAgIGZpbGUgPSBwYXRoLnJlbGF0aXZlKGZyb20sIGZpbGUpXG4gICAgaWYgKHBhdGguc2VwID09PSAnXFxcXCcpIHtcbiAgICAgIHJldHVybiBmaWxlLnJlcGxhY2UoL1xcXFwvZywgJy8nKVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmlsZVxuICAgIH1cbiAgfVxuXG4gIHNvdXJjZVBhdGggKG5vZGUpIHtcbiAgICBpZiAodGhpcy5tYXBPcHRzLmZyb20pIHtcbiAgICAgIHJldHVybiB0aGlzLm1hcE9wdHMuZnJvbVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5yZWxhdGl2ZShub2RlLnNvdXJjZS5pbnB1dC5mcm9tKVxuICAgIH1cbiAgfVxuXG4gIGdlbmVyYXRlU3RyaW5nICgpIHtcbiAgICB0aGlzLmNzcyA9ICcnXG4gICAgdGhpcy5tYXAgPSBuZXcgbW96aWxsYS5Tb3VyY2VNYXBHZW5lcmF0b3IoeyBmaWxlOiB0aGlzLm91dHB1dEZpbGUoKSB9KVxuXG4gICAgbGV0IGxpbmUgPSAxXG4gICAgbGV0IGNvbHVtbiA9IDFcblxuICAgIGxldCBsaW5lcywgbGFzdFxuICAgIHRoaXMuc3RyaW5naWZ5KHRoaXMucm9vdCwgKHN0ciwgbm9kZSwgdHlwZSkgPT4ge1xuICAgICAgdGhpcy5jc3MgKz0gc3RyXG5cbiAgICAgIGlmIChub2RlICYmIHR5cGUgIT09ICdlbmQnKSB7XG4gICAgICAgIGlmIChub2RlLnNvdXJjZSAmJiBub2RlLnNvdXJjZS5zdGFydCkge1xuICAgICAgICAgIHRoaXMubWFwLmFkZE1hcHBpbmcoe1xuICAgICAgICAgICAgc291cmNlOiB0aGlzLnNvdXJjZVBhdGgobm9kZSksXG4gICAgICAgICAgICBnZW5lcmF0ZWQ6IHsgbGluZSwgY29sdW1uOiBjb2x1bW4gLSAxIH0sXG4gICAgICAgICAgICBvcmlnaW5hbDoge1xuICAgICAgICAgICAgICBsaW5lOiBub2RlLnNvdXJjZS5zdGFydC5saW5lLFxuICAgICAgICAgICAgICBjb2x1bW46IG5vZGUuc291cmNlLnN0YXJ0LmNvbHVtbiAtIDFcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMubWFwLmFkZE1hcHBpbmcoe1xuICAgICAgICAgICAgc291cmNlOiAnPG5vIHNvdXJjZT4nLFxuICAgICAgICAgICAgb3JpZ2luYWw6IHsgbGluZTogMSwgY29sdW1uOiAwIH0sXG4gICAgICAgICAgICBnZW5lcmF0ZWQ6IHsgbGluZSwgY29sdW1uOiBjb2x1bW4gLSAxIH1cbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGxpbmVzID0gc3RyLm1hdGNoKC9cXG4vZylcbiAgICAgIGlmIChsaW5lcykge1xuICAgICAgICBsaW5lICs9IGxpbmVzLmxlbmd0aFxuICAgICAgICBsYXN0ID0gc3RyLmxhc3RJbmRleE9mKCdcXG4nKVxuICAgICAgICBjb2x1bW4gPSBzdHIubGVuZ3RoIC0gbGFzdFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29sdW1uICs9IHN0ci5sZW5ndGhcbiAgICAgIH1cblxuICAgICAgaWYgKG5vZGUgJiYgdHlwZSAhPT0gJ3N0YXJ0Jykge1xuICAgICAgICBpZiAobm9kZS5zb3VyY2UgJiYgbm9kZS5zb3VyY2UuZW5kKSB7XG4gICAgICAgICAgdGhpcy5tYXAuYWRkTWFwcGluZyh7XG4gICAgICAgICAgICBzb3VyY2U6IHRoaXMuc291cmNlUGF0aChub2RlKSxcbiAgICAgICAgICAgIGdlbmVyYXRlZDogeyBsaW5lLCBjb2x1bW46IGNvbHVtbiAtIDEgfSxcbiAgICAgICAgICAgIG9yaWdpbmFsOiB7XG4gICAgICAgICAgICAgIGxpbmU6IG5vZGUuc291cmNlLmVuZC5saW5lLFxuICAgICAgICAgICAgICBjb2x1bW46IG5vZGUuc291cmNlLmVuZC5jb2x1bW5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMubWFwLmFkZE1hcHBpbmcoe1xuICAgICAgICAgICAgc291cmNlOiAnPG5vIHNvdXJjZT4nLFxuICAgICAgICAgICAgb3JpZ2luYWw6IHsgbGluZTogMSwgY29sdW1uOiAwIH0sXG4gICAgICAgICAgICBnZW5lcmF0ZWQ6IHsgbGluZSwgY29sdW1uOiBjb2x1bW4gLSAxIH1cbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIGdlbmVyYXRlICgpIHtcbiAgICB0aGlzLmNsZWFyQW5ub3RhdGlvbigpXG5cbiAgICBpZiAodGhpcy5pc01hcCgpKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZW5lcmF0ZU1hcCgpXG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCByZXN1bHQgPSAnJ1xuICAgICAgdGhpcy5zdHJpbmdpZnkodGhpcy5yb290LCBpID0+IHtcbiAgICAgICAgcmVzdWx0ICs9IGlcbiAgICAgIH0pXG4gICAgICByZXR1cm4gW3Jlc3VsdF1cbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgTWFwR2VuZXJhdG9yXG4iXX0=\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || Function(\"return this\")() || (1, eval)(\"this\");\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n for (var i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(\n uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)\n ))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","exports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');\n\n/**\n * Encode an integer in the range of 0 to 63 to a single base 64 digit.\n */\nexports.encode = function (number) {\n if (0 <= number && number < intToCharMap.length) {\n return intToCharMap[number];\n }\n throw new TypeError(\"Must be between 0 and 63: \" + number);\n};\n\n/**\n * Decode a single base 64 character code digit to an integer. Returns -1 on\n * failure.\n */\nexports.decode = function (charCode) {\n var bigA = 65; // 'A'\n var bigZ = 90; // 'Z'\n\n var littleA = 97; // 'a'\n var littleZ = 122; // 'z'\n\n var zero = 48; // '0'\n var nine = 57; // '9'\n\n var plus = 43; // '+'\n var slash = 47; // '/'\n\n var littleOffset = 26;\n var numberOffset = 52;\n\n // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ\n if (bigA <= charCode && charCode <= bigZ) {\n return (charCode - bigA);\n }\n\n // 26 - 51: abcdefghijklmnopqrstuvwxyz\n if (littleA <= charCode && charCode <= littleZ) {\n return (charCode - littleA + littleOffset);\n }\n\n // 52 - 61: 0123456789\n if (zero <= charCode && charCode <= nine) {\n return (charCode - zero + numberOffset);\n }\n\n // 62: +\n if (charCode == plus) {\n return 62;\n }\n\n // 63: /\n if (charCode == slash) {\n return 63;\n }\n\n // Invalid base64 digit.\n return -1;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2014 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\n\n/**\n * Determine whether mappingB is after mappingA with respect to generated\n * position.\n */\nfunction generatedPositionAfter(mappingA, mappingB) {\n // Optimized for most common case\n var lineA = mappingA.generatedLine;\n var lineB = mappingB.generatedLine;\n var columnA = mappingA.generatedColumn;\n var columnB = mappingB.generatedColumn;\n return lineB > lineA || lineB == lineA && columnB >= columnA ||\n util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0;\n}\n\n/**\n * A data structure to provide a sorted view of accumulated mappings in a\n * performance conscious manner. It trades a neglibable overhead in general\n * case for a large speedup in case of mappings being added in order.\n */\nfunction MappingList() {\n this._array = [];\n this._sorted = true;\n // Serves as infimum\n this._last = {generatedLine: -1, generatedColumn: 0};\n}\n\n/**\n * Iterate through internal items. This method takes the same arguments that\n * `Array.prototype.forEach` takes.\n *\n * NOTE: The order of the mappings is NOT guaranteed.\n */\nMappingList.prototype.unsortedForEach =\n function MappingList_forEach(aCallback, aThisArg) {\n this._array.forEach(aCallback, aThisArg);\n };\n\n/**\n * Add the given source mapping.\n *\n * @param Object aMapping\n */\nMappingList.prototype.add = function MappingList_add(aMapping) {\n if (generatedPositionAfter(this._last, aMapping)) {\n this._last = aMapping;\n this._array.push(aMapping);\n } else {\n this._sorted = false;\n this._array.push(aMapping);\n }\n};\n\n/**\n * Returns the flat, sorted array of mappings. The mappings are sorted by\n * generated position.\n *\n * WARNING: This method returns internal data without copying, for\n * performance. The return value must NOT be mutated, and should be treated as\n * an immutable borrow. If you want to take ownership, you must make your own\n * copy.\n */\nMappingList.prototype.toArray = function MappingList_toArray() {\n if (!this._sorted) {\n this._array.sort(util.compareByGeneratedPositionsInflated);\n this._sorted = true;\n }\n return this._array;\n};\n\nexports.MappingList = MappingList;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar binarySearch = require('./binary-search');\nvar ArraySet = require('./array-set').ArraySet;\nvar base64VLQ = require('./base64-vlq');\nvar quickSort = require('./quick-sort').quickSort;\n\nfunction SourceMapConsumer(aSourceMap, aSourceMapURL) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = util.parseSourceMapInput(aSourceMap);\n }\n\n return sourceMap.sections != null\n ? new IndexedSourceMapConsumer(sourceMap, aSourceMapURL)\n : new BasicSourceMapConsumer(sourceMap, aSourceMapURL);\n}\n\nSourceMapConsumer.fromSourceMap = function(aSourceMap, aSourceMapURL) {\n return BasicSourceMapConsumer.fromSourceMap(aSourceMap, aSourceMapURL);\n}\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nSourceMapConsumer.prototype._version = 3;\n\n// `__generatedMappings` and `__originalMappings` are arrays that hold the\n// parsed mapping coordinates from the source map's \"mappings\" attribute. They\n// are lazily instantiated, accessed via the `_generatedMappings` and\n// `_originalMappings` getters respectively, and we only parse the mappings\n// and create these arrays once queried for a source location. We jump through\n// these hoops because there can be many thousands of mappings, and parsing\n// them is expensive, so we only want to do it if we must.\n//\n// Each object in the arrays is of the form:\n//\n// {\n// generatedLine: The line number in the generated code,\n// generatedColumn: The column number in the generated code,\n// source: The path to the original source file that generated this\n// chunk of code,\n// originalLine: The line number in the original source that\n// corresponds to this chunk of generated code,\n// originalColumn: The column number in the original source that\n// corresponds to this chunk of generated code,\n// name: The name of the original symbol which generated this chunk of\n// code.\n// }\n//\n// All properties except for `generatedLine` and `generatedColumn` can be\n// `null`.\n//\n// `_generatedMappings` is ordered by the generated positions.\n//\n// `_originalMappings` is ordered by the original positions.\n\nSourceMapConsumer.prototype.__generatedMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', {\n configurable: true,\n enumerable: true,\n get: function () {\n if (!this.__generatedMappings) {\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n\n return this.__generatedMappings;\n }\n});\n\nSourceMapConsumer.prototype.__originalMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {\n configurable: true,\n enumerable: true,\n get: function () {\n if (!this.__originalMappings) {\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n\n return this.__originalMappings;\n }\n});\n\nSourceMapConsumer.prototype._charIsMappingSeparator =\n function SourceMapConsumer_charIsMappingSeparator(aStr, index) {\n var c = aStr.charAt(index);\n return c === \";\" || c === \",\";\n };\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nSourceMapConsumer.prototype._parseMappings =\n function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n throw new Error(\"Subclasses must implement _parseMappings\");\n };\n\nSourceMapConsumer.GENERATED_ORDER = 1;\nSourceMapConsumer.ORIGINAL_ORDER = 2;\n\nSourceMapConsumer.GREATEST_LOWER_BOUND = 1;\nSourceMapConsumer.LEAST_UPPER_BOUND = 2;\n\n/**\n * Iterate over each mapping between an original source/line/column and a\n * generated line/column in this source map.\n *\n * @param Function aCallback\n * The function that is called with each mapping.\n * @param Object aContext\n * Optional. If specified, this object will be the value of `this` every\n * time that `aCallback` is called.\n * @param aOrder\n * Either `SourceMapConsumer.GENERATED_ORDER` or\n * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to\n * iterate over the mappings sorted by the generated file's line/column\n * order or the original's source/line/column order, respectively. Defaults to\n * `SourceMapConsumer.GENERATED_ORDER`.\n */\nSourceMapConsumer.prototype.eachMapping =\n function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {\n var context = aContext || null;\n var order = aOrder || SourceMapConsumer.GENERATED_ORDER;\n\n var mappings;\n switch (order) {\n case SourceMapConsumer.GENERATED_ORDER:\n mappings = this._generatedMappings;\n break;\n case SourceMapConsumer.ORIGINAL_ORDER:\n mappings = this._originalMappings;\n break;\n default:\n throw new Error(\"Unknown order of iteration.\");\n }\n\n var sourceRoot = this.sourceRoot;\n mappings.map(function (mapping) {\n var source = mapping.source === null ? null : this._sources.at(mapping.source);\n source = util.computeSourceURL(sourceRoot, source, this._sourceMapURL);\n return {\n source: source,\n generatedLine: mapping.generatedLine,\n generatedColumn: mapping.generatedColumn,\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: mapping.name === null ? null : this._names.at(mapping.name)\n };\n }, this).forEach(aCallback, context);\n };\n\n/**\n * Returns all generated line and column information for the original source,\n * line, and column provided. If no column is provided, returns all mappings\n * corresponding to a either the line we are searching for or the next\n * closest line that has any mappings. Otherwise, returns all mappings\n * corresponding to the given line and either the column we are searching for\n * or the next closest column that has any offsets.\n *\n * The only argument is an object with the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source. The line number is 1-based.\n * - column: Optional. the column number in the original source.\n * The column number is 0-based.\n *\n * and an array of objects is returned, each with the following properties:\n *\n * - line: The line number in the generated source, or null. The\n * line number is 1-based.\n * - column: The column number in the generated source, or null.\n * The column number is 0-based.\n */\nSourceMapConsumer.prototype.allGeneratedPositionsFor =\n function SourceMapConsumer_allGeneratedPositionsFor(aArgs) {\n var line = util.getArg(aArgs, 'line');\n\n // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping\n // returns the index of the closest mapping less than the needle. By\n // setting needle.originalColumn to 0, we thus find the last mapping for\n // the given line, provided such a mapping exists.\n var needle = {\n source: util.getArg(aArgs, 'source'),\n originalLine: line,\n originalColumn: util.getArg(aArgs, 'column', 0)\n };\n\n needle.source = this._findSourceIndex(needle.source);\n if (needle.source < 0) {\n return [];\n }\n\n var mappings = [];\n\n var index = this._findMapping(needle,\n this._originalMappings,\n \"originalLine\",\n \"originalColumn\",\n util.compareByOriginalPositions,\n binarySearch.LEAST_UPPER_BOUND);\n if (index >= 0) {\n var mapping = this._originalMappings[index];\n\n if (aArgs.column === undefined) {\n var originalLine = mapping.originalLine;\n\n // Iterate until either we run out of mappings, or we run into\n // a mapping for a different line than the one we found. Since\n // mappings are sorted, this is guaranteed to find all mappings for\n // the line we found.\n while (mapping && mapping.originalLine === originalLine) {\n mappings.push({\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n });\n\n mapping = this._originalMappings[++index];\n }\n } else {\n var originalColumn = mapping.originalColumn;\n\n // Iterate until either we run out of mappings, or we run into\n // a mapping for a different line than the one we were searching for.\n // Since mappings are sorted, this is guaranteed to find all mappings for\n // the line we are searching for.\n while (mapping &&\n mapping.originalLine === line &&\n mapping.originalColumn == originalColumn) {\n mappings.push({\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n });\n\n mapping = this._originalMappings[++index];\n }\n }\n }\n\n return mappings;\n };\n\nexports.SourceMapConsumer = SourceMapConsumer;\n\n/**\n * A BasicSourceMapConsumer instance represents a parsed source map which we can\n * query for information about the original file positions by giving it a file\n * position in the generated source.\n *\n * The first parameter is the raw source map (either as a JSON string, or\n * already parsed to an object). According to the spec, source maps have the\n * following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - sources: An array of URLs to the original source files.\n * - names: An array of identifiers which can be referrenced by individual mappings.\n * - sourceRoot: Optional. The URL root from which all sources are relative.\n * - sourcesContent: Optional. An array of contents of the original source files.\n * - mappings: A string of base64 VLQs which contain the actual mappings.\n * - file: Optional. The generated file this source map is associated with.\n *\n * Here is an example source map, taken from the source map spec[0]:\n *\n * {\n * version : 3,\n * file: \"out.js\",\n * sourceRoot : \"\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AA,AB;;ABCDE;\"\n * }\n *\n * The second parameter, if given, is a string whose value is the URL\n * at which the source map was found. This URL is used to compute the\n * sources array.\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#\n */\nfunction BasicSourceMapConsumer(aSourceMap, aSourceMapURL) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = util.parseSourceMapInput(aSourceMap);\n }\n\n var version = util.getArg(sourceMap, 'version');\n var sources = util.getArg(sourceMap, 'sources');\n // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which\n // requires the array) to play nice here.\n var names = util.getArg(sourceMap, 'names', []);\n var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null);\n var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null);\n var mappings = util.getArg(sourceMap, 'mappings');\n var file = util.getArg(sourceMap, 'file', null);\n\n // Once again, Sass deviates from the spec and supplies the version as a\n // string rather than a number, so we use loose equality checking here.\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n\n if (sourceRoot) {\n sourceRoot = util.normalize(sourceRoot);\n }\n\n sources = sources\n .map(String)\n // Some source maps produce relative source paths like \"./foo.js\" instead of\n // \"foo.js\". Normalize these first so that future comparisons will succeed.\n // See bugzil.la/1090768.\n .map(util.normalize)\n // Always ensure that absolute sources are internally stored relative to\n // the source root, if the source root is absolute. Not doing this would\n // be particularly problematic when the source root is a prefix of the\n // source (valid, but why??). See github issue #199 and bugzil.la/1188982.\n .map(function (source) {\n return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source)\n ? util.relative(sourceRoot, source)\n : source;\n });\n\n // Pass `true` below to allow duplicate names and sources. While source maps\n // are intended to be compressed and deduplicated, the TypeScript compiler\n // sometimes generates source maps with duplicates in them. See Github issue\n // #72 and bugzil.la/889492.\n this._names = ArraySet.fromArray(names.map(String), true);\n this._sources = ArraySet.fromArray(sources, true);\n\n this._absoluteSources = this._sources.toArray().map(function (s) {\n return util.computeSourceURL(sourceRoot, s, aSourceMapURL);\n });\n\n this.sourceRoot = sourceRoot;\n this.sourcesContent = sourcesContent;\n this._mappings = mappings;\n this._sourceMapURL = aSourceMapURL;\n this.file = file;\n}\n\nBasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nBasicSourceMapConsumer.prototype.consumer = SourceMapConsumer;\n\n/**\n * Utility function to find the index of a source. Returns -1 if not\n * found.\n */\nBasicSourceMapConsumer.prototype._findSourceIndex = function(aSource) {\n var relativeSource = aSource;\n if (this.sourceRoot != null) {\n relativeSource = util.relative(this.sourceRoot, relativeSource);\n }\n\n if (this._sources.has(relativeSource)) {\n return this._sources.indexOf(relativeSource);\n }\n\n // Maybe aSource is an absolute URL as returned by |sources|. In\n // this case we can't simply undo the transform.\n var i;\n for (i = 0; i < this._absoluteSources.length; ++i) {\n if (this._absoluteSources[i] == aSource) {\n return i;\n }\n }\n\n return -1;\n};\n\n/**\n * Create a BasicSourceMapConsumer from a SourceMapGenerator.\n *\n * @param SourceMapGenerator aSourceMap\n * The source map that will be consumed.\n * @param String aSourceMapURL\n * The URL at which the source map can be found (optional)\n * @returns BasicSourceMapConsumer\n */\nBasicSourceMapConsumer.fromSourceMap =\n function SourceMapConsumer_fromSourceMap(aSourceMap, aSourceMapURL) {\n var smc = Object.create(BasicSourceMapConsumer.prototype);\n\n var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);\n var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);\n smc.sourceRoot = aSourceMap._sourceRoot;\n smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(),\n smc.sourceRoot);\n smc.file = aSourceMap._file;\n smc._sourceMapURL = aSourceMapURL;\n smc._absoluteSources = smc._sources.toArray().map(function (s) {\n return util.computeSourceURL(smc.sourceRoot, s, aSourceMapURL);\n });\n\n // Because we are modifying the entries (by converting string sources and\n // names to indices into the sources and names ArraySets), we have to make\n // a copy of the entry or else bad things happen. Shared mutable state\n // strikes again! See github issue #191.\n\n var generatedMappings = aSourceMap._mappings.toArray().slice();\n var destGeneratedMappings = smc.__generatedMappings = [];\n var destOriginalMappings = smc.__originalMappings = [];\n\n for (var i = 0, length = generatedMappings.length; i < length; i++) {\n var srcMapping = generatedMappings[i];\n var destMapping = new Mapping;\n destMapping.generatedLine = srcMapping.generatedLine;\n destMapping.generatedColumn = srcMapping.generatedColumn;\n\n if (srcMapping.source) {\n destMapping.source = sources.indexOf(srcMapping.source);\n destMapping.originalLine = srcMapping.originalLine;\n destMapping.originalColumn = srcMapping.originalColumn;\n\n if (srcMapping.name) {\n destMapping.name = names.indexOf(srcMapping.name);\n }\n\n destOriginalMappings.push(destMapping);\n }\n\n destGeneratedMappings.push(destMapping);\n }\n\n quickSort(smc.__originalMappings, util.compareByOriginalPositions);\n\n return smc;\n };\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nBasicSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(BasicSourceMapConsumer.prototype, 'sources', {\n get: function () {\n return this._absoluteSources.slice();\n }\n});\n\n/**\n * Provide the JIT with a nice shape / hidden class.\n */\nfunction Mapping() {\n this.generatedLine = 0;\n this.generatedColumn = 0;\n this.source = null;\n this.originalLine = null;\n this.originalColumn = null;\n this.name = null;\n}\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nBasicSourceMapConsumer.prototype._parseMappings =\n function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n var generatedLine = 1;\n var previousGeneratedColumn = 0;\n var previousOriginalLine = 0;\n var previousOriginalColumn = 0;\n var previousSource = 0;\n var previousName = 0;\n var length = aStr.length;\n var index = 0;\n var cachedSegments = {};\n var temp = {};\n var originalMappings = [];\n var generatedMappings = [];\n var mapping, str, segment, end, value;\n\n while (index < length) {\n if (aStr.charAt(index) === ';') {\n generatedLine++;\n index++;\n previousGeneratedColumn = 0;\n }\n else if (aStr.charAt(index) === ',') {\n index++;\n }\n else {\n mapping = new Mapping();\n mapping.generatedLine = generatedLine;\n\n // Because each offset is encoded relative to the previous one,\n // many segments often have the same encoding. We can exploit this\n // fact by caching the parsed variable length fields of each segment,\n // allowing us to avoid a second parse if we encounter the same\n // segment again.\n for (end = index; end < length; end++) {\n if (this._charIsMappingSeparator(aStr, end)) {\n break;\n }\n }\n str = aStr.slice(index, end);\n\n segment = cachedSegments[str];\n if (segment) {\n index += str.length;\n } else {\n segment = [];\n while (index < end) {\n base64VLQ.decode(aStr, index, temp);\n value = temp.value;\n index = temp.rest;\n segment.push(value);\n }\n\n if (segment.length === 2) {\n throw new Error('Found a source, but no line and column');\n }\n\n if (segment.length === 3) {\n throw new Error('Found a source and line, but no column');\n }\n\n cachedSegments[str] = segment;\n }\n\n // Generated column.\n mapping.generatedColumn = previousGeneratedColumn + segment[0];\n previousGeneratedColumn = mapping.generatedColumn;\n\n if (segment.length > 1) {\n // Original source.\n mapping.source = previousSource + segment[1];\n previousSource += segment[1];\n\n // Original line.\n mapping.originalLine = previousOriginalLine + segment[2];\n previousOriginalLine = mapping.originalLine;\n // Lines are stored 0-based\n mapping.originalLine += 1;\n\n // Original column.\n mapping.originalColumn = previousOriginalColumn + segment[3];\n previousOriginalColumn = mapping.originalColumn;\n\n if (segment.length > 4) {\n // Original name.\n mapping.name = previousName + segment[4];\n previousName += segment[4];\n }\n }\n\n generatedMappings.push(mapping);\n if (typeof mapping.originalLine === 'number') {\n originalMappings.push(mapping);\n }\n }\n }\n\n quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated);\n this.__generatedMappings = generatedMappings;\n\n quickSort(originalMappings, util.compareByOriginalPositions);\n this.__originalMappings = originalMappings;\n };\n\n/**\n * Find the mapping that best matches the hypothetical \"needle\" mapping that\n * we are searching for in the given \"haystack\" of mappings.\n */\nBasicSourceMapConsumer.prototype._findMapping =\n function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName,\n aColumnName, aComparator, aBias) {\n // To return the position we are searching for, we must first find the\n // mapping for the given position and then return the opposite position it\n // points to. Because the mappings are sorted, we can use binary search to\n // find the best mapping.\n\n if (aNeedle[aLineName] <= 0) {\n throw new TypeError('Line must be greater than or equal to 1, got '\n + aNeedle[aLineName]);\n }\n if (aNeedle[aColumnName] < 0) {\n throw new TypeError('Column must be greater than or equal to 0, got '\n + aNeedle[aColumnName]);\n }\n\n return binarySearch.search(aNeedle, aMappings, aComparator, aBias);\n };\n\n/**\n * Compute the last column for each generated mapping. The last column is\n * inclusive.\n */\nBasicSourceMapConsumer.prototype.computeColumnSpans =\n function SourceMapConsumer_computeColumnSpans() {\n for (var index = 0; index < this._generatedMappings.length; ++index) {\n var mapping = this._generatedMappings[index];\n\n // Mappings do not contain a field for the last generated columnt. We\n // can come up with an optimistic estimate, however, by assuming that\n // mappings are contiguous (i.e. given two consecutive mappings, the\n // first mapping ends where the second one starts).\n if (index + 1 < this._generatedMappings.length) {\n var nextMapping = this._generatedMappings[index + 1];\n\n if (mapping.generatedLine === nextMapping.generatedLine) {\n mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;\n continue;\n }\n }\n\n // The last mapping for each line spans the entire line.\n mapping.lastGeneratedColumn = Infinity;\n }\n };\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source. The line number\n * is 1-based.\n * - column: The column number in the generated source. The column\n * number is 0-based.\n * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null. The\n * line number is 1-based.\n * - column: The column number in the original source, or null. The\n * column number is 0-based.\n * - name: The original identifier, or null.\n */\nBasicSourceMapConsumer.prototype.originalPositionFor =\n function SourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n\n var index = this._findMapping(\n needle,\n this._generatedMappings,\n \"generatedLine\",\n \"generatedColumn\",\n util.compareByGeneratedPositionsDeflated,\n util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n );\n\n if (index >= 0) {\n var mapping = this._generatedMappings[index];\n\n if (mapping.generatedLine === needle.generatedLine) {\n var source = util.getArg(mapping, 'source', null);\n if (source !== null) {\n source = this._sources.at(source);\n source = util.computeSourceURL(this.sourceRoot, source, this._sourceMapURL);\n }\n var name = util.getArg(mapping, 'name', null);\n if (name !== null) {\n name = this._names.at(name);\n }\n return {\n source: source,\n line: util.getArg(mapping, 'originalLine', null),\n column: util.getArg(mapping, 'originalColumn', null),\n name: name\n };\n }\n }\n\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n };\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nBasicSourceMapConsumer.prototype.hasContentsOfAllSources =\n function BasicSourceMapConsumer_hasContentsOfAllSources() {\n if (!this.sourcesContent) {\n return false;\n }\n return this.sourcesContent.length >= this._sources.size() &&\n !this.sourcesContent.some(function (sc) { return sc == null; });\n };\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nBasicSourceMapConsumer.prototype.sourceContentFor =\n function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n if (!this.sourcesContent) {\n return null;\n }\n\n var index = this._findSourceIndex(aSource);\n if (index >= 0) {\n return this.sourcesContent[index];\n }\n\n var relativeSource = aSource;\n if (this.sourceRoot != null) {\n relativeSource = util.relative(this.sourceRoot, relativeSource);\n }\n\n var url;\n if (this.sourceRoot != null\n && (url = util.urlParse(this.sourceRoot))) {\n // XXX: file:// URIs and absolute paths lead to unexpected behavior for\n // many users. We can help them out when they expect file:// URIs to\n // behave like it would if they were running a local HTTP server. See\n // https://bugzilla.mozilla.org/show_bug.cgi?id=885597.\n var fileUriAbsPath = relativeSource.replace(/^file:\\/\\//, \"\");\n if (url.scheme == \"file\"\n && this._sources.has(fileUriAbsPath)) {\n return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]\n }\n\n if ((!url.path || url.path == \"/\")\n && this._sources.has(\"/\" + relativeSource)) {\n return this.sourcesContent[this._sources.indexOf(\"/\" + relativeSource)];\n }\n }\n\n // This function is used recursively from\n // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we\n // don't want to throw if we can't find the source - we just want to\n // return null, so we provide a flag to exit gracefully.\n if (nullOnMissing) {\n return null;\n }\n else {\n throw new Error('\"' + relativeSource + '\" is not in the SourceMap.');\n }\n };\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source. The line number\n * is 1-based.\n * - column: The column number in the original source. The column\n * number is 0-based.\n * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null. The\n * line number is 1-based.\n * - column: The column number in the generated source, or null.\n * The column number is 0-based.\n */\nBasicSourceMapConsumer.prototype.generatedPositionFor =\n function SourceMapConsumer_generatedPositionFor(aArgs) {\n var source = util.getArg(aArgs, 'source');\n source = this._findSourceIndex(source);\n if (source < 0) {\n return {\n line: null,\n column: null,\n lastColumn: null\n };\n }\n\n var needle = {\n source: source,\n originalLine: util.getArg(aArgs, 'line'),\n originalColumn: util.getArg(aArgs, 'column')\n };\n\n var index = this._findMapping(\n needle,\n this._originalMappings,\n \"originalLine\",\n \"originalColumn\",\n util.compareByOriginalPositions,\n util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n );\n\n if (index >= 0) {\n var mapping = this._originalMappings[index];\n\n if (mapping.source === needle.source) {\n return {\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n };\n }\n }\n\n return {\n line: null,\n column: null,\n lastColumn: null\n };\n };\n\nexports.BasicSourceMapConsumer = BasicSourceMapConsumer;\n\n/**\n * An IndexedSourceMapConsumer instance represents a parsed source map which\n * we can query for information. It differs from BasicSourceMapConsumer in\n * that it takes \"indexed\" source maps (i.e. ones with a \"sections\" field) as\n * input.\n *\n * The first parameter is a raw source map (either as a JSON string, or already\n * parsed to an object). According to the spec for indexed source maps, they\n * have the following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - file: Optional. The generated file this source map is associated with.\n * - sections: A list of section definitions.\n *\n * Each value under the \"sections\" field has two fields:\n * - offset: The offset into the original specified at which this section\n * begins to apply, defined as an object with a \"line\" and \"column\"\n * field.\n * - map: A source map definition. This source map could also be indexed,\n * but doesn't have to be.\n *\n * Instead of the \"map\" field, it's also possible to have a \"url\" field\n * specifying a URL to retrieve a source map from, but that's currently\n * unsupported.\n *\n * Here's an example source map, taken from the source map spec[0], but\n * modified to omit a section which uses the \"url\" field.\n *\n * {\n * version : 3,\n * file: \"app.js\",\n * sections: [{\n * offset: {line:100, column:10},\n * map: {\n * version : 3,\n * file: \"section.js\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AAAA,E;;ABCDE;\"\n * }\n * }],\n * }\n *\n * The second parameter, if given, is a string whose value is the URL\n * at which the source map was found. This URL is used to compute the\n * sources array.\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt\n */\nfunction IndexedSourceMapConsumer(aSourceMap, aSourceMapURL) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = util.parseSourceMapInput(aSourceMap);\n }\n\n var version = util.getArg(sourceMap, 'version');\n var sections = util.getArg(sourceMap, 'sections');\n\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n\n this._sources = new ArraySet();\n this._names = new ArraySet();\n\n var lastOffset = {\n line: -1,\n column: 0\n };\n this._sections = sections.map(function (s) {\n if (s.url) {\n // The url field will require support for asynchronicity.\n // See https://github.com/mozilla/source-map/issues/16\n throw new Error('Support for url field in sections not implemented.');\n }\n var offset = util.getArg(s, 'offset');\n var offsetLine = util.getArg(offset, 'line');\n var offsetColumn = util.getArg(offset, 'column');\n\n if (offsetLine < lastOffset.line ||\n (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) {\n throw new Error('Section offsets must be ordered and non-overlapping.');\n }\n lastOffset = offset;\n\n return {\n generatedOffset: {\n // The offset fields are 0-based, but we use 1-based indices when\n // encoding/decoding from VLQ.\n generatedLine: offsetLine + 1,\n generatedColumn: offsetColumn + 1\n },\n consumer: new SourceMapConsumer(util.getArg(s, 'map'), aSourceMapURL)\n }\n });\n}\n\nIndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nIndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer;\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nIndexedSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', {\n get: function () {\n var sources = [];\n for (var i = 0; i < this._sections.length; i++) {\n for (var j = 0; j < this._sections[i].consumer.sources.length; j++) {\n sources.push(this._sections[i].consumer.sources[j]);\n }\n }\n return sources;\n }\n});\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source. The line number\n * is 1-based.\n * - column: The column number in the generated source. The column\n * number is 0-based.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null. The\n * line number is 1-based.\n * - column: The column number in the original source, or null. The\n * column number is 0-based.\n * - name: The original identifier, or null.\n */\nIndexedSourceMapConsumer.prototype.originalPositionFor =\n function IndexedSourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n\n // Find the section containing the generated position we're trying to map\n // to an original position.\n var sectionIndex = binarySearch.search(needle, this._sections,\n function(needle, section) {\n var cmp = needle.generatedLine - section.generatedOffset.generatedLine;\n if (cmp) {\n return cmp;\n }\n\n return (needle.generatedColumn -\n section.generatedOffset.generatedColumn);\n });\n var section = this._sections[sectionIndex];\n\n if (!section) {\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n }\n\n return section.consumer.originalPositionFor({\n line: needle.generatedLine -\n (section.generatedOffset.generatedLine - 1),\n column: needle.generatedColumn -\n (section.generatedOffset.generatedLine === needle.generatedLine\n ? section.generatedOffset.generatedColumn - 1\n : 0),\n bias: aArgs.bias\n });\n };\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nIndexedSourceMapConsumer.prototype.hasContentsOfAllSources =\n function IndexedSourceMapConsumer_hasContentsOfAllSources() {\n return this._sections.every(function (s) {\n return s.consumer.hasContentsOfAllSources();\n });\n };\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nIndexedSourceMapConsumer.prototype.sourceContentFor =\n function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n\n var content = section.consumer.sourceContentFor(aSource, true);\n if (content) {\n return content;\n }\n }\n if (nullOnMissing) {\n return null;\n }\n else {\n throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n }\n };\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source. The line number\n * is 1-based.\n * - column: The column number in the original source. The column\n * number is 0-based.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null. The\n * line number is 1-based. \n * - column: The column number in the generated source, or null.\n * The column number is 0-based.\n */\nIndexedSourceMapConsumer.prototype.generatedPositionFor =\n function IndexedSourceMapConsumer_generatedPositionFor(aArgs) {\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n\n // Only consider this section if the requested source is in the list of\n // sources of the consumer.\n if (section.consumer._findSourceIndex(util.getArg(aArgs, 'source')) === -1) {\n continue;\n }\n var generatedPosition = section.consumer.generatedPositionFor(aArgs);\n if (generatedPosition) {\n var ret = {\n line: generatedPosition.line +\n (section.generatedOffset.generatedLine - 1),\n column: generatedPosition.column +\n (section.generatedOffset.generatedLine === generatedPosition.line\n ? section.generatedOffset.generatedColumn - 1\n : 0)\n };\n return ret;\n }\n }\n\n return {\n line: null,\n column: null\n };\n };\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nIndexedSourceMapConsumer.prototype._parseMappings =\n function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n this.__generatedMappings = [];\n this.__originalMappings = [];\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n var sectionMappings = section.consumer._generatedMappings;\n for (var j = 0; j < sectionMappings.length; j++) {\n var mapping = sectionMappings[j];\n\n var source = section.consumer._sources.at(mapping.source);\n source = util.computeSourceURL(section.consumer.sourceRoot, source, this._sourceMapURL);\n this._sources.add(source);\n source = this._sources.indexOf(source);\n\n var name = null;\n if (mapping.name) {\n name = section.consumer._names.at(mapping.name);\n this._names.add(name);\n name = this._names.indexOf(name);\n }\n\n // The mappings coming from the consumer for the section have\n // generated positions relative to the start of the section, so we\n // need to offset them to be relative to the start of the concatenated\n // generated file.\n var adjustedMapping = {\n source: source,\n generatedLine: mapping.generatedLine +\n (section.generatedOffset.generatedLine - 1),\n generatedColumn: mapping.generatedColumn +\n (section.generatedOffset.generatedLine === mapping.generatedLine\n ? section.generatedOffset.generatedColumn - 1\n : 0),\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: name\n };\n\n this.__generatedMappings.push(adjustedMapping);\n if (typeof adjustedMapping.originalLine === 'number') {\n this.__originalMappings.push(adjustedMapping);\n }\n }\n }\n\n quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated);\n quickSort(this.__originalMappings, util.compareByOriginalPositions);\n };\n\nexports.IndexedSourceMapConsumer = IndexedSourceMapConsumer;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nexports.GREATEST_LOWER_BOUND = 1;\nexports.LEAST_UPPER_BOUND = 2;\n\n/**\n * Recursive implementation of binary search.\n *\n * @param aLow Indices here and lower do not contain the needle.\n * @param aHigh Indices here and higher do not contain the needle.\n * @param aNeedle The element being searched for.\n * @param aHaystack The non-empty array being searched.\n * @param aCompare Function which takes two elements and returns -1, 0, or 1.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n */\nfunction recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) {\n // This function terminates when one of the following is true:\n //\n // 1. We find the exact element we are looking for.\n //\n // 2. We did not find the exact element, but we can return the index of\n // the next-closest element.\n //\n // 3. We did not find the exact element, and there is no next-closest\n // element than the one we are searching for, so we return -1.\n var mid = Math.floor((aHigh - aLow) / 2) + aLow;\n var cmp = aCompare(aNeedle, aHaystack[mid], true);\n if (cmp === 0) {\n // Found the element we are looking for.\n return mid;\n }\n else if (cmp > 0) {\n // Our needle is greater than aHaystack[mid].\n if (aHigh - mid > 1) {\n // The element is in the upper half.\n return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias);\n }\n\n // The exact needle element was not found in this haystack. Determine if\n // we are in termination case (3) or (2) and return the appropriate thing.\n if (aBias == exports.LEAST_UPPER_BOUND) {\n return aHigh < aHaystack.length ? aHigh : -1;\n } else {\n return mid;\n }\n }\n else {\n // Our needle is less than aHaystack[mid].\n if (mid - aLow > 1) {\n // The element is in the lower half.\n return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias);\n }\n\n // we are in termination case (3) or (2) and return the appropriate thing.\n if (aBias == exports.LEAST_UPPER_BOUND) {\n return mid;\n } else {\n return aLow < 0 ? -1 : aLow;\n }\n }\n}\n\n/**\n * This is an implementation of binary search which will always try and return\n * the index of the closest element if there is no exact hit. This is because\n * mappings between original and generated line/col pairs are single points,\n * and there is an implicit region between each of them, so a miss just means\n * that you aren't on the very start of a region.\n *\n * @param aNeedle The element you are looking for.\n * @param aHaystack The array that is being searched.\n * @param aCompare A function which takes the needle and an element in the\n * array and returns -1, 0, or 1 depending on whether the needle is less\n * than, equal to, or greater than the element, respectively.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'.\n */\nexports.search = function search(aNeedle, aHaystack, aCompare, aBias) {\n if (aHaystack.length === 0) {\n return -1;\n }\n\n var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack,\n aCompare, aBias || exports.GREATEST_LOWER_BOUND);\n if (index < 0) {\n return -1;\n }\n\n // We have found either the exact element, or the next-closest element than\n // the one we are searching for. However, there may be more than one such\n // element. Make sure we always return the smallest of these.\n while (index - 1 >= 0) {\n if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) {\n break;\n }\n --index;\n }\n\n return index;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n// It turns out that some (most?) JavaScript engines don't self-host\n// `Array.prototype.sort`. This makes sense because C++ will likely remain\n// faster than JS when doing raw CPU-intensive sorting. However, when using a\n// custom comparator function, calling back and forth between the VM's C++ and\n// JIT'd JS is rather slow *and* loses JIT type information, resulting in\n// worse generated code for the comparator function than would be optimal. In\n// fact, when sorting with a comparator, these costs outweigh the benefits of\n// sorting in C++. By using our own JS-implemented Quick Sort (below), we get\n// a ~3500ms mean speed-up in `bench/bench.html`.\n\n/**\n * Swap the elements indexed by `x` and `y` in the array `ary`.\n *\n * @param {Array} ary\n * The array.\n * @param {Number} x\n * The index of the first item.\n * @param {Number} y\n * The index of the second item.\n */\nfunction swap(ary, x, y) {\n var temp = ary[x];\n ary[x] = ary[y];\n ary[y] = temp;\n}\n\n/**\n * Returns a random integer within the range `low .. high` inclusive.\n *\n * @param {Number} low\n * The lower bound on the range.\n * @param {Number} high\n * The upper bound on the range.\n */\nfunction randomIntInRange(low, high) {\n return Math.round(low + (Math.random() * (high - low)));\n}\n\n/**\n * The Quick Sort algorithm.\n *\n * @param {Array} ary\n * An array to sort.\n * @param {function} comparator\n * Function to use to compare two items.\n * @param {Number} p\n * Start index of the array\n * @param {Number} r\n * End index of the array\n */\nfunction doQuickSort(ary, comparator, p, r) {\n // If our lower bound is less than our upper bound, we (1) partition the\n // array into two pieces and (2) recurse on each half. If it is not, this is\n // the empty array and our base case.\n\n if (p < r) {\n // (1) Partitioning.\n //\n // The partitioning chooses a pivot between `p` and `r` and moves all\n // elements that are less than or equal to the pivot to the before it, and\n // all the elements that are greater than it after it. The effect is that\n // once partition is done, the pivot is in the exact place it will be when\n // the array is put in sorted order, and it will not need to be moved\n // again. This runs in O(n) time.\n\n // Always choose a random pivot so that an input array which is reverse\n // sorted does not cause O(n^2) running time.\n var pivotIndex = randomIntInRange(p, r);\n var i = p - 1;\n\n swap(ary, pivotIndex, r);\n var pivot = ary[r];\n\n // Immediately after `j` is incremented in this loop, the following hold\n // true:\n //\n // * Every element in `ary[p .. i]` is less than or equal to the pivot.\n //\n // * Every element in `ary[i+1 .. j-1]` is greater than the pivot.\n for (var j = p; j < r; j++) {\n if (comparator(ary[j], pivot) <= 0) {\n i += 1;\n swap(ary, i, j);\n }\n }\n\n swap(ary, i + 1, j);\n var q = i + 1;\n\n // (2) Recurse on each half.\n\n doQuickSort(ary, comparator, p, q - 1);\n doQuickSort(ary, comparator, q + 1, r);\n }\n}\n\n/**\n * Sort the given array in-place with the given comparator function.\n *\n * @param {Array} ary\n * An array to sort.\n * @param {function} comparator\n * Function to use to compare two items.\n */\nexports.quickSort = function (ary, comparator) {\n doQuickSort(ary, comparator, 0, ary.length - 1);\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar SourceMapGenerator = require('./source-map-generator').SourceMapGenerator;\nvar util = require('./util');\n\n// Matches a Windows-style `\\r\\n` newline or a `\\n` newline used by all other\n// operating systems these days (capturing the result).\nvar REGEX_NEWLINE = /(\\r?\\n)/;\n\n// Newline character code for charCodeAt() comparisons\nvar NEWLINE_CODE = 10;\n\n// Private symbol for identifying `SourceNode`s when multiple versions of\n// the source-map library are loaded. This MUST NOT CHANGE across\n// versions!\nvar isSourceNode = \"$$$isSourceNode$$$\";\n\n/**\n * SourceNodes provide a way to abstract over interpolating/concatenating\n * snippets of generated JavaScript source code while maintaining the line and\n * column information associated with the original source code.\n *\n * @param aLine The original line number.\n * @param aColumn The original column number.\n * @param aSource The original source's filename.\n * @param aChunks Optional. An array of strings which are snippets of\n * generated JS, or other SourceNodes.\n * @param aName The original identifier.\n */\nfunction SourceNode(aLine, aColumn, aSource, aChunks, aName) {\n this.children = [];\n this.sourceContents = {};\n this.line = aLine == null ? null : aLine;\n this.column = aColumn == null ? null : aColumn;\n this.source = aSource == null ? null : aSource;\n this.name = aName == null ? null : aName;\n this[isSourceNode] = true;\n if (aChunks != null) this.add(aChunks);\n}\n\n/**\n * Creates a SourceNode from generated code and a SourceMapConsumer.\n *\n * @param aGeneratedCode The generated code\n * @param aSourceMapConsumer The SourceMap for the generated code\n * @param aRelativePath Optional. The path that relative sources in the\n * SourceMapConsumer should be relative to.\n */\nSourceNode.fromStringWithSourceMap =\n function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) {\n // The SourceNode we want to fill with the generated code\n // and the SourceMap\n var node = new SourceNode();\n\n // All even indices of this array are one line of the generated code,\n // while all odd indices are the newlines between two adjacent lines\n // (since `REGEX_NEWLINE` captures its match).\n // Processed fragments are accessed by calling `shiftNextLine`.\n var remainingLines = aGeneratedCode.split(REGEX_NEWLINE);\n var remainingLinesIndex = 0;\n var shiftNextLine = function() {\n var lineContents = getNextLine();\n // The last line of a file might not have a newline.\n var newLine = getNextLine() || \"\";\n return lineContents + newLine;\n\n function getNextLine() {\n return remainingLinesIndex < remainingLines.length ?\n remainingLines[remainingLinesIndex++] : undefined;\n }\n };\n\n // We need to remember the position of \"remainingLines\"\n var lastGeneratedLine = 1, lastGeneratedColumn = 0;\n\n // The generate SourceNodes we need a code range.\n // To extract it current and last mapping is used.\n // Here we store the last mapping.\n var lastMapping = null;\n\n aSourceMapConsumer.eachMapping(function (mapping) {\n if (lastMapping !== null) {\n // We add the code from \"lastMapping\" to \"mapping\":\n // First check if there is a new line in between.\n if (lastGeneratedLine < mapping.generatedLine) {\n // Associate first line with \"lastMapping\"\n addMappingWithCode(lastMapping, shiftNextLine());\n lastGeneratedLine++;\n lastGeneratedColumn = 0;\n // The remaining code is added without mapping\n } else {\n // There is no new line in between.\n // Associate the code between \"lastGeneratedColumn\" and\n // \"mapping.generatedColumn\" with \"lastMapping\"\n var nextLine = remainingLines[remainingLinesIndex] || '';\n var code = nextLine.substr(0, mapping.generatedColumn -\n lastGeneratedColumn);\n remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn -\n lastGeneratedColumn);\n lastGeneratedColumn = mapping.generatedColumn;\n addMappingWithCode(lastMapping, code);\n // No more remaining code, continue\n lastMapping = mapping;\n return;\n }\n }\n // We add the generated code until the first mapping\n // to the SourceNode without any mapping.\n // Each line is added as separate string.\n while (lastGeneratedLine < mapping.generatedLine) {\n node.add(shiftNextLine());\n lastGeneratedLine++;\n }\n if (lastGeneratedColumn < mapping.generatedColumn) {\n var nextLine = remainingLines[remainingLinesIndex] || '';\n node.add(nextLine.substr(0, mapping.generatedColumn));\n remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn);\n lastGeneratedColumn = mapping.generatedColumn;\n }\n lastMapping = mapping;\n }, this);\n // We have processed all mappings.\n if (remainingLinesIndex < remainingLines.length) {\n if (lastMapping) {\n // Associate the remaining code in the current line with \"lastMapping\"\n addMappingWithCode(lastMapping, shiftNextLine());\n }\n // and add the remaining lines without any mapping\n node.add(remainingLines.splice(remainingLinesIndex).join(\"\"));\n }\n\n // Copy sourcesContent into SourceNode\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n if (aRelativePath != null) {\n sourceFile = util.join(aRelativePath, sourceFile);\n }\n node.setSourceContent(sourceFile, content);\n }\n });\n\n return node;\n\n function addMappingWithCode(mapping, code) {\n if (mapping === null || mapping.source === undefined) {\n node.add(code);\n } else {\n var source = aRelativePath\n ? util.join(aRelativePath, mapping.source)\n : mapping.source;\n node.add(new SourceNode(mapping.originalLine,\n mapping.originalColumn,\n source,\n code,\n mapping.name));\n }\n }\n };\n\n/**\n * Add a chunk of generated JS to this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n * SourceNode, or an array where each member is one of those things.\n */\nSourceNode.prototype.add = function SourceNode_add(aChunk) {\n if (Array.isArray(aChunk)) {\n aChunk.forEach(function (chunk) {\n this.add(chunk);\n }, this);\n }\n else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n if (aChunk) {\n this.children.push(aChunk);\n }\n }\n else {\n throw new TypeError(\n \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n );\n }\n return this;\n};\n\n/**\n * Add a chunk of generated JS to the beginning of this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n * SourceNode, or an array where each member is one of those things.\n */\nSourceNode.prototype.prepend = function SourceNode_prepend(aChunk) {\n if (Array.isArray(aChunk)) {\n for (var i = aChunk.length-1; i >= 0; i--) {\n this.prepend(aChunk[i]);\n }\n }\n else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n this.children.unshift(aChunk);\n }\n else {\n throw new TypeError(\n \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n );\n }\n return this;\n};\n\n/**\n * Walk over the tree of JS snippets in this node and its children. The\n * walking function is called once for each snippet of JS and is passed that\n * snippet and the its original associated source's line/column location.\n *\n * @param aFn The traversal function.\n */\nSourceNode.prototype.walk = function SourceNode_walk(aFn) {\n var chunk;\n for (var i = 0, len = this.children.length; i < len; i++) {\n chunk = this.children[i];\n if (chunk[isSourceNode]) {\n chunk.walk(aFn);\n }\n else {\n if (chunk !== '') {\n aFn(chunk, { source: this.source,\n line: this.line,\n column: this.column,\n name: this.name });\n }\n }\n }\n};\n\n/**\n * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between\n * each of `this.children`.\n *\n * @param aSep The separator.\n */\nSourceNode.prototype.join = function SourceNode_join(aSep) {\n var newChildren;\n var i;\n var len = this.children.length;\n if (len > 0) {\n newChildren = [];\n for (i = 0; i < len-1; i++) {\n newChildren.push(this.children[i]);\n newChildren.push(aSep);\n }\n newChildren.push(this.children[i]);\n this.children = newChildren;\n }\n return this;\n};\n\n/**\n * Call String.prototype.replace on the very right-most source snippet. Useful\n * for trimming whitespace from the end of a source node, etc.\n *\n * @param aPattern The pattern to replace.\n * @param aReplacement The thing to replace the pattern with.\n */\nSourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) {\n var lastChild = this.children[this.children.length - 1];\n if (lastChild[isSourceNode]) {\n lastChild.replaceRight(aPattern, aReplacement);\n }\n else if (typeof lastChild === 'string') {\n this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement);\n }\n else {\n this.children.push(''.replace(aPattern, aReplacement));\n }\n return this;\n};\n\n/**\n * Set the source content for a source file. This will be added to the SourceMapGenerator\n * in the sourcesContent field.\n *\n * @param aSourceFile The filename of the source file\n * @param aSourceContent The content of the source file\n */\nSourceNode.prototype.setSourceContent =\n function SourceNode_setSourceContent(aSourceFile, aSourceContent) {\n this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent;\n };\n\n/**\n * Walk over the tree of SourceNodes. The walking function is called for each\n * source file content and is passed the filename and source content.\n *\n * @param aFn The traversal function.\n */\nSourceNode.prototype.walkSourceContents =\n function SourceNode_walkSourceContents(aFn) {\n for (var i = 0, len = this.children.length; i < len; i++) {\n if (this.children[i][isSourceNode]) {\n this.children[i].walkSourceContents(aFn);\n }\n }\n\n var sources = Object.keys(this.sourceContents);\n for (var i = 0, len = sources.length; i < len; i++) {\n aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]);\n }\n };\n\n/**\n * Return the string representation of this source node. Walks over the tree\n * and concatenates all the various snippets together to one string.\n */\nSourceNode.prototype.toString = function SourceNode_toString() {\n var str = \"\";\n this.walk(function (chunk) {\n str += chunk;\n });\n return str;\n};\n\n/**\n * Returns the string representation of this source node along with a source\n * map.\n */\nSourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) {\n var generated = {\n code: \"\",\n line: 1,\n column: 0\n };\n var map = new SourceMapGenerator(aArgs);\n var sourceMappingActive = false;\n var lastOriginalSource = null;\n var lastOriginalLine = null;\n var lastOriginalColumn = null;\n var lastOriginalName = null;\n this.walk(function (chunk, original) {\n generated.code += chunk;\n if (original.source !== null\n && original.line !== null\n && original.column !== null) {\n if(lastOriginalSource !== original.source\n || lastOriginalLine !== original.line\n || lastOriginalColumn !== original.column\n || lastOriginalName !== original.name) {\n map.addMapping({\n source: original.source,\n original: {\n line: original.line,\n column: original.column\n },\n generated: {\n line: generated.line,\n column: generated.column\n },\n name: original.name\n });\n }\n lastOriginalSource = original.source;\n lastOriginalLine = original.line;\n lastOriginalColumn = original.column;\n lastOriginalName = original.name;\n sourceMappingActive = true;\n } else if (sourceMappingActive) {\n map.addMapping({\n generated: {\n line: generated.line,\n column: generated.column\n }\n });\n lastOriginalSource = null;\n sourceMappingActive = false;\n }\n for (var idx = 0, length = chunk.length; idx < length; idx++) {\n if (chunk.charCodeAt(idx) === NEWLINE_CODE) {\n generated.line++;\n generated.column = 0;\n // Mappings end at eol\n if (idx + 1 === length) {\n lastOriginalSource = null;\n sourceMappingActive = false;\n } else if (sourceMappingActive) {\n map.addMapping({\n source: original.source,\n original: {\n line: original.line,\n column: original.column\n },\n generated: {\n line: generated.line,\n column: generated.column\n },\n name: original.name\n });\n }\n } else {\n generated.column++;\n }\n }\n });\n this.walkSourceContents(function (sourceFile, sourceContent) {\n map.setSourceContent(sourceFile, sourceContent);\n });\n\n return { code: generated.code, map: map };\n};\n\nexports.SourceNode = SourceNode;\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","'use strict';\n\nexports.__esModule = true;\nexports.default = warnOnce;\nvar printed = {};\n\nfunction warnOnce(message) {\n if (printed[message]) return;\n printed[message] = true;\n\n if (typeof console !== 'undefined' && console.warn) {\n console.warn(message);\n }\n}\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndhcm4tb25jZS5lczYiXSwibmFtZXMiOlsid2Fybk9uY2UiLCJwcmludGVkIiwibWVzc2FnZSIsImNvbnNvbGUiLCJ3YXJuIl0sIm1hcHBpbmdzIjoiOzs7a0JBRXdCQSxRO0FBRnhCLElBQUlDLFVBQVUsRUFBZDs7QUFFZSxTQUFTRCxRQUFULENBQW1CRSxPQUFuQixFQUE0QjtBQUN6QyxNQUFJRCxRQUFRQyxPQUFSLENBQUosRUFBc0I7QUFDdEJELFVBQVFDLE9BQVIsSUFBbUIsSUFBbkI7O0FBRUEsTUFBSSxPQUFPQyxPQUFQLEtBQW1CLFdBQW5CLElBQWtDQSxRQUFRQyxJQUE5QyxFQUFvRDtBQUNsREQsWUFBUUMsSUFBUixDQUFhRixPQUFiO0FBQ0Q7QUFDRiIsImZpbGUiOiJ3YXJuLW9uY2UuanMiLCJzb3VyY2VzQ29udGVudCI6WyJsZXQgcHJpbnRlZCA9IHsgfVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB3YXJuT25jZSAobWVzc2FnZSkge1xuICBpZiAocHJpbnRlZFttZXNzYWdlXSkgcmV0dXJuXG4gIHByaW50ZWRbbWVzc2FnZV0gPSB0cnVlXG5cbiAgaWYgKHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJyAmJiBjb25zb2xlLndhcm4pIHtcbiAgICBjb25zb2xlLndhcm4obWVzc2FnZSlcbiAgfVxufVxuIl19\n","'use strict';\n\nexports.__esModule = true;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _warning = require('./warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * Provides the result of the PostCSS transformations.\n *\n * A Result instance is returned by {@link LazyResult#then}\n * or {@link Root#toResult} methods.\n *\n * @example\n * postcss([cssnext]).process(css).then(result => {\n * console.log(result.css)\n * })\n *\n * @example\n * const result2 = postcss.parse(css).toResult()\n */\nvar Result = function () {\n /**\n * @param {Processor} processor Processor used for this transformation.\n * @param {Root} root Root node after all transformations.\n * @param {processOptions} opts Options from the {@link Processor#process}\n * or {@link Root#toResult}.\n */\n function Result(processor, root, opts) {\n _classCallCheck(this, Result);\n\n /**\n * The Processor instance used for this transformation.\n *\n * @type {Processor}\n *\n * @example\n * for (const plugin of result.processor.plugins) {\n * if (plugin.postcssPlugin === 'postcss-bad') {\n * throw 'postcss-good is incompatible with postcss-bad'\n * }\n * })\n */\n this.processor = processor;\n /**\n * Contains messages from plugins (e.g., warnings or custom messages).\n * Each message should have type and plugin properties.\n *\n * @type {Message[]}\n *\n * @example\n * postcss.plugin('postcss-min-browser', () => {\n * return (root, result) => {\n * const browsers = detectMinBrowsersByCanIUse(root)\n * result.messages.push({\n * type: 'min-browser',\n * plugin: 'postcss-min-browser',\n * browsers\n * })\n * }\n * })\n */\n this.messages = [];\n /**\n * Root node after all transformations.\n *\n * @type {Root}\n *\n * @example\n * root.toResult().root === root\n */\n this.root = root;\n /**\n * Options from the {@link Processor#process} or {@link Root#toResult} call\n * that produced this Result instance.\n *\n * @type {processOptions}\n *\n * @example\n * root.toResult(opts).opts === opts\n */\n this.opts = opts;\n /**\n * A CSS string representing of {@link Result#root}.\n *\n * @type {string}\n *\n * @example\n * postcss.parse('a{}').toResult().css //=> \"a{}\"\n */\n this.css = undefined;\n /**\n * An instance of `SourceMapGenerator` class from the `source-map` library,\n * representing changes to the {@link Result#root} instance.\n *\n * @type {SourceMapGenerator}\n *\n * @example\n * result.map.toJSON() //=> { version: 3, file: 'a.css', … }\n *\n * @example\n * if (result.map) {\n * fs.writeFileSync(result.opts.to + '.map', result.map.toString())\n * }\n */\n this.map = undefined;\n }\n\n /**\n * Returns for @{link Result#css} content.\n *\n * @example\n * result + '' === result.css\n *\n * @return {string} String representing of {@link Result#root}.\n */\n\n\n Result.prototype.toString = function toString() {\n return this.css;\n };\n\n /**\n * Creates an instance of {@link Warning} and adds it\n * to {@link Result#messages}.\n *\n * @param {string} text Warning message.\n * @param {Object} [opts] Warning options.\n * @param {Node} opts.node CSS node that caused the warning.\n * @param {string} opts.word Word in CSS source that caused the warning.\n * @param {number} opts.index Index in CSS node string that caused\n * the warning.\n * @param {string} opts.plugin Name of the plugin that created\n * this warning. {@link Result#warn} fills\n * this property automatically.\n *\n * @return {Warning} Created warning.\n */\n\n\n Result.prototype.warn = function warn(text) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (!opts.plugin) {\n if (this.lastPlugin && this.lastPlugin.postcssPlugin) {\n opts.plugin = this.lastPlugin.postcssPlugin;\n }\n }\n\n var warning = new _warning2.default(text, opts);\n this.messages.push(warning);\n\n return warning;\n };\n\n /**\n * Returns warnings from plugins. Filters {@link Warning} instances\n * from {@link Result#messages}.\n *\n * @example\n * result.warnings().forEach(warn => {\n * console.warn(warn.toString())\n * })\n *\n * @return {Warning[]} Warnings from plugins.\n */\n\n\n Result.prototype.warnings = function warnings() {\n return this.messages.filter(function (i) {\n return i.type === 'warning';\n });\n };\n\n /**\n * An alias for the {@link Result#css} property.\n * Use it with syntaxes that generate non-CSS output.\n *\n * @type {string}\n *\n * @example\n * result.css === result.content\n */\n\n\n _createClass(Result, [{\n key: 'content',\n get: function get() {\n return this.css;\n }\n }]);\n\n return Result;\n}();\n\nexports.default = Result;\n\n/**\n * @typedef {object} Message\n * @property {string} type Message type.\n * @property {string} plugin Source PostCSS plugin name.\n */\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJlc3VsdC5lczYiXSwibmFtZXMiOlsiUmVzdWx0IiwicHJvY2Vzc29yIiwicm9vdCIsIm9wdHMiLCJtZXNzYWdlcyIsImNzcyIsInVuZGVmaW5lZCIsIm1hcCIsInRvU3RyaW5nIiwid2FybiIsInRleHQiLCJwbHVnaW4iLCJsYXN0UGx1Z2luIiwicG9zdGNzc1BsdWdpbiIsIndhcm5pbmciLCJXYXJuaW5nIiwicHVzaCIsIndhcm5pbmdzIiwiZmlsdGVyIiwiaSIsInR5cGUiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBOzs7Ozs7OztBQUVBOzs7Ozs7Ozs7Ozs7OztJQWNNQSxNO0FBQ0o7Ozs7OztBQU1BLGtCQUFhQyxTQUFiLEVBQXdCQyxJQUF4QixFQUE4QkMsSUFBOUIsRUFBb0M7QUFBQTs7QUFDbEM7Ozs7Ozs7Ozs7OztBQVlBLFNBQUtGLFNBQUwsR0FBaUJBLFNBQWpCO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWtCQSxTQUFLRyxRQUFMLEdBQWdCLEVBQWhCO0FBQ0E7Ozs7Ozs7O0FBUUEsU0FBS0YsSUFBTCxHQUFZQSxJQUFaO0FBQ0E7Ozs7Ozs7OztBQVNBLFNBQUtDLElBQUwsR0FBWUEsSUFBWjtBQUNBOzs7Ozs7OztBQVFBLFNBQUtFLEdBQUwsR0FBV0MsU0FBWDtBQUNBOzs7Ozs7Ozs7Ozs7OztBQWNBLFNBQUtDLEdBQUwsR0FBV0QsU0FBWDtBQUNEOztBQUVEOzs7Ozs7Ozs7O21CQVFBRSxRLHVCQUFZO0FBQ1YsV0FBTyxLQUFLSCxHQUFaO0FBQ0QsRzs7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7O21CQWdCQUksSSxpQkFBTUMsSSxFQUFrQjtBQUFBLFFBQVpQLElBQVksdUVBQUwsRUFBSzs7QUFDdEIsUUFBSSxDQUFDQSxLQUFLUSxNQUFWLEVBQWtCO0FBQ2hCLFVBQUksS0FBS0MsVUFBTCxJQUFtQixLQUFLQSxVQUFMLENBQWdCQyxhQUF2QyxFQUFzRDtBQUNwRFYsYUFBS1EsTUFBTCxHQUFjLEtBQUtDLFVBQUwsQ0FBZ0JDLGFBQTlCO0FBQ0Q7QUFDRjs7QUFFRCxRQUFJQyxVQUFVLElBQUlDLGlCQUFKLENBQVlMLElBQVosRUFBa0JQLElBQWxCLENBQWQ7QUFDQSxTQUFLQyxRQUFMLENBQWNZLElBQWQsQ0FBbUJGLE9BQW5COztBQUVBLFdBQU9BLE9BQVA7QUFDRCxHOztBQUVEOzs7Ozs7Ozs7Ozs7O21CQVdBRyxRLHVCQUFZO0FBQ1YsV0FBTyxLQUFLYixRQUFMLENBQWNjLE1BQWQsQ0FBcUI7QUFBQSxhQUFLQyxFQUFFQyxJQUFGLEtBQVcsU0FBaEI7QUFBQSxLQUFyQixDQUFQO0FBQ0QsRzs7QUFFRDs7Ozs7Ozs7Ozs7Ozt3QkFTZTtBQUNiLGFBQU8sS0FBS2YsR0FBWjtBQUNEOzs7Ozs7a0JBR1lMLE07O0FBRWYiLCJmaWxlIjoicmVzdWx0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFdhcm5pbmcgZnJvbSAnLi93YXJuaW5nJ1xuXG4vKipcbiAqIFByb3ZpZGVzIHRoZSByZXN1bHQgb2YgdGhlIFBvc3RDU1MgdHJhbnNmb3JtYXRpb25zLlxuICpcbiAqIEEgUmVzdWx0IGluc3RhbmNlIGlzIHJldHVybmVkIGJ5IHtAbGluayBMYXp5UmVzdWx0I3RoZW59XG4gKiBvciB7QGxpbmsgUm9vdCN0b1Jlc3VsdH0gbWV0aG9kcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogcG9zdGNzcyhbY3NzbmV4dF0pLnByb2Nlc3MoY3NzKS50aGVuKHJlc3VsdCA9PiB7XG4gKiAgY29uc29sZS5sb2cocmVzdWx0LmNzcylcbiAqIH0pXG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IHJlc3VsdDIgPSBwb3N0Y3NzLnBhcnNlKGNzcykudG9SZXN1bHQoKVxuICovXG5jbGFzcyBSZXN1bHQge1xuICAvKipcbiAgICogQHBhcmFtIHtQcm9jZXNzb3J9IHByb2Nlc3NvciBQcm9jZXNzb3IgdXNlZCBmb3IgdGhpcyB0cmFuc2Zvcm1hdGlvbi5cbiAgICogQHBhcmFtIHtSb290fSAgICAgIHJvb3QgICAgICBSb290IG5vZGUgYWZ0ZXIgYWxsIHRyYW5zZm9ybWF0aW9ucy5cbiAgICogQHBhcmFtIHtwcm9jZXNzT3B0aW9uc30gb3B0cyBPcHRpb25zIGZyb20gdGhlIHtAbGluayBQcm9jZXNzb3IjcHJvY2Vzc31cbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciB7QGxpbmsgUm9vdCN0b1Jlc3VsdH0uXG4gICAqL1xuICBjb25zdHJ1Y3RvciAocHJvY2Vzc29yLCByb290LCBvcHRzKSB7XG4gICAgLyoqXG4gICAgICogVGhlIFByb2Nlc3NvciBpbnN0YW5jZSB1c2VkIGZvciB0aGlzIHRyYW5zZm9ybWF0aW9uLlxuICAgICAqXG4gICAgICogQHR5cGUge1Byb2Nlc3Nvcn1cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogZm9yIChjb25zdCBwbHVnaW4gb2YgcmVzdWx0LnByb2Nlc3Nvci5wbHVnaW5zKSB7XG4gICAgICogICBpZiAocGx1Z2luLnBvc3Rjc3NQbHVnaW4gPT09ICdwb3N0Y3NzLWJhZCcpIHtcbiAgICAgKiAgICAgdGhyb3cgJ3Bvc3Rjc3MtZ29vZCBpcyBpbmNvbXBhdGlibGUgd2l0aCBwb3N0Y3NzLWJhZCdcbiAgICAgKiAgIH1cbiAgICAgKiB9KVxuICAgICAqL1xuICAgIHRoaXMucHJvY2Vzc29yID0gcHJvY2Vzc29yXG4gICAgLyoqXG4gICAgICogQ29udGFpbnMgbWVzc2FnZXMgZnJvbSBwbHVnaW5zIChlLmcuLCB3YXJuaW5ncyBvciBjdXN0b20gbWVzc2FnZXMpLlxuICAgICAqIEVhY2ggbWVzc2FnZSBzaG91bGQgaGF2ZSB0eXBlIGFuZCBwbHVnaW4gcHJvcGVydGllcy5cbiAgICAgKlxuICAgICAqIEB0eXBlIHtNZXNzYWdlW119XG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIHBvc3Rjc3MucGx1Z2luKCdwb3N0Y3NzLW1pbi1icm93c2VyJywgKCkgPT4ge1xuICAgICAqICAgcmV0dXJuIChyb290LCByZXN1bHQpID0+IHtcbiAgICAgKiAgICAgY29uc3QgYnJvd3NlcnMgPSBkZXRlY3RNaW5Ccm93c2Vyc0J5Q2FuSVVzZShyb290KVxuICAgICAqICAgICByZXN1bHQubWVzc2FnZXMucHVzaCh7XG4gICAgICogICAgICAgdHlwZTogJ21pbi1icm93c2VyJyxcbiAgICAgKiAgICAgICBwbHVnaW46ICdwb3N0Y3NzLW1pbi1icm93c2VyJyxcbiAgICAgKiAgICAgICBicm93c2Vyc1xuICAgICAqICAgICB9KVxuICAgICAqICAgfVxuICAgICAqIH0pXG4gICAgICovXG4gICAgdGhpcy5tZXNzYWdlcyA9IFtdXG4gICAgLyoqXG4gICAgICogUm9vdCBub2RlIGFmdGVyIGFsbCB0cmFuc2Zvcm1hdGlvbnMuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7Um9vdH1cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogcm9vdC50b1Jlc3VsdCgpLnJvb3QgPT09IHJvb3RcbiAgICAgKi9cbiAgICB0aGlzLnJvb3QgPSByb290XG4gICAgLyoqXG4gICAgICogT3B0aW9ucyBmcm9tIHRoZSB7QGxpbmsgUHJvY2Vzc29yI3Byb2Nlc3N9IG9yIHtAbGluayBSb290I3RvUmVzdWx0fSBjYWxsXG4gICAgICogdGhhdCBwcm9kdWNlZCB0aGlzIFJlc3VsdCBpbnN0YW5jZS5cbiAgICAgKlxuICAgICAqIEB0eXBlIHtwcm9jZXNzT3B0aW9uc31cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogcm9vdC50b1Jlc3VsdChvcHRzKS5vcHRzID09PSBvcHRzXG4gICAgICovXG4gICAgdGhpcy5vcHRzID0gb3B0c1xuICAgIC8qKlxuICAgICAqIEEgQ1NTIHN0cmluZyByZXByZXNlbnRpbmcgb2Yge0BsaW5rIFJlc3VsdCNyb290fS5cbiAgICAgKlxuICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIHBvc3Rjc3MucGFyc2UoJ2F7fScpLnRvUmVzdWx0KCkuY3NzIC8vPT4gXCJhe31cIlxuICAgICAqL1xuICAgIHRoaXMuY3NzID0gdW5kZWZpbmVkXG4gICAgLyoqXG4gICAgICogQW4gaW5zdGFuY2Ugb2YgYFNvdXJjZU1hcEdlbmVyYXRvcmAgY2xhc3MgZnJvbSB0aGUgYHNvdXJjZS1tYXBgIGxpYnJhcnksXG4gICAgICogcmVwcmVzZW50aW5nIGNoYW5nZXMgdG8gdGhlIHtAbGluayBSZXN1bHQjcm9vdH0gaW5zdGFuY2UuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7U291cmNlTWFwR2VuZXJhdG9yfVxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiByZXN1bHQubWFwLnRvSlNPTigpIC8vPT4geyB2ZXJzaW9uOiAzLCBmaWxlOiAnYS5jc3MnLCDigKYgfVxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBpZiAocmVzdWx0Lm1hcCkge1xuICAgICAqICAgZnMud3JpdGVGaWxlU3luYyhyZXN1bHQub3B0cy50byArICcubWFwJywgcmVzdWx0Lm1hcC50b1N0cmluZygpKVxuICAgICAqIH1cbiAgICAgKi9cbiAgICB0aGlzLm1hcCA9IHVuZGVmaW5lZFxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgZm9yIEB7bGluayBSZXN1bHQjY3NzfSBjb250ZW50LlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiByZXN1bHQgKyAnJyA9PT0gcmVzdWx0LmNzc1xuICAgKlxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IFN0cmluZyByZXByZXNlbnRpbmcgb2Yge0BsaW5rIFJlc3VsdCNyb290fS5cbiAgICovXG4gIHRvU3RyaW5nICgpIHtcbiAgICByZXR1cm4gdGhpcy5jc3NcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIHtAbGluayBXYXJuaW5nfSBhbmQgYWRkcyBpdFxuICAgKiB0byB7QGxpbmsgUmVzdWx0I21lc3NhZ2VzfS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgICAgICAgIFdhcm5pbmcgbWVzc2FnZS5cbiAgICogQHBhcmFtIHtPYmplY3R9IFtvcHRzXSAgICAgIFdhcm5pbmcgb3B0aW9ucy5cbiAgICogQHBhcmFtIHtOb2RlfSAgIG9wdHMubm9kZSAgIENTUyBub2RlIHRoYXQgY2F1c2VkIHRoZSB3YXJuaW5nLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy53b3JkICAgV29yZCBpbiBDU1Mgc291cmNlIHRoYXQgY2F1c2VkIHRoZSB3YXJuaW5nLlxuICAgKiBAcGFyYW0ge251bWJlcn0gb3B0cy5pbmRleCAgSW5kZXggaW4gQ1NTIG5vZGUgc3RyaW5nIHRoYXQgY2F1c2VkXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgd2FybmluZy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMucGx1Z2luIE5hbWUgb2YgdGhlIHBsdWdpbiB0aGF0IGNyZWF0ZWRcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMgd2FybmluZy4ge0BsaW5rIFJlc3VsdCN3YXJufSBmaWxsc1xuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyBwcm9wZXJ0eSBhdXRvbWF0aWNhbGx5LlxuICAgKlxuICAgKiBAcmV0dXJuIHtXYXJuaW5nfSBDcmVhdGVkIHdhcm5pbmcuXG4gICAqL1xuICB3YXJuICh0ZXh0LCBvcHRzID0geyB9KSB7XG4gICAgaWYgKCFvcHRzLnBsdWdpbikge1xuICAgICAgaWYgKHRoaXMubGFzdFBsdWdpbiAmJiB0aGlzLmxhc3RQbHVnaW4ucG9zdGNzc1BsdWdpbikge1xuICAgICAgICBvcHRzLnBsdWdpbiA9IHRoaXMubGFzdFBsdWdpbi5wb3N0Y3NzUGx1Z2luXG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IHdhcm5pbmcgPSBuZXcgV2FybmluZyh0ZXh0LCBvcHRzKVxuICAgIHRoaXMubWVzc2FnZXMucHVzaCh3YXJuaW5nKVxuXG4gICAgcmV0dXJuIHdhcm5pbmdcbiAgfVxuXG4gIC8qKlxuICAgICAqIFJldHVybnMgd2FybmluZ3MgZnJvbSBwbHVnaW5zLiBGaWx0ZXJzIHtAbGluayBXYXJuaW5nfSBpbnN0YW5jZXNcbiAgICAgKiBmcm9tIHtAbGluayBSZXN1bHQjbWVzc2FnZXN9LlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiByZXN1bHQud2FybmluZ3MoKS5mb3JFYWNoKHdhcm4gPT4ge1xuICAgICAqICAgY29uc29sZS53YXJuKHdhcm4udG9TdHJpbmcoKSlcbiAgICAgKiB9KVxuICAgICAqXG4gICAgICogQHJldHVybiB7V2FybmluZ1tdfSBXYXJuaW5ncyBmcm9tIHBsdWdpbnMuXG4gICAgICovXG4gIHdhcm5pbmdzICgpIHtcbiAgICByZXR1cm4gdGhpcy5tZXNzYWdlcy5maWx0ZXIoaSA9PiBpLnR5cGUgPT09ICd3YXJuaW5nJylcbiAgfVxuXG4gIC8qKlxuICAgKiBBbiBhbGlhcyBmb3IgdGhlIHtAbGluayBSZXN1bHQjY3NzfSBwcm9wZXJ0eS5cbiAgICogVXNlIGl0IHdpdGggc3ludGF4ZXMgdGhhdCBnZW5lcmF0ZSBub24tQ1NTIG91dHB1dC5cbiAgICpcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogcmVzdWx0LmNzcyA9PT0gcmVzdWx0LmNvbnRlbnRcbiAgICovXG4gIGdldCBjb250ZW50ICgpIHtcbiAgICByZXR1cm4gdGhpcy5jc3NcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBSZXN1bHRcblxuLyoqXG4gKiBAdHlwZWRlZiAge29iamVjdH0gTWVzc2FnZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IHR5cGUgICBNZXNzYWdlIHR5cGUuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gcGx1Z2luIFNvdXJjZSBQb3N0Q1NTIHBsdWdpbiBuYW1lLlxuICovXG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * Represents a plugin’s warning. It can be created using {@link Node#warn}.\n *\n * @example\n * if (decl.important) {\n * decl.warn(result, 'Avoid !important', { word: '!important' })\n * }\n */\nvar Warning = function () {\n /**\n * @param {string} text Warning message.\n * @param {Object} [opts] Warning options.\n * @param {Node} opts.node CSS node that caused the warning.\n * @param {string} opts.word Word in CSS source that caused the warning.\n * @param {number} opts.index Index in CSS node string that caused\n * the warning.\n * @param {string} opts.plugin Name of the plugin that created\n * this warning. {@link Result#warn} fills\n * this property automatically.\n */\n function Warning(text) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Warning);\n\n /**\n * Type to filter warnings from {@link Result#messages}.\n * Always equal to `\"warning\"`.\n *\n * @type {string}\n *\n * @example\n * const nonWarning = result.messages.filter(i => i.type !== 'warning')\n */\n this.type = 'warning';\n /**\n * The warning message.\n *\n * @type {string}\n *\n * @example\n * warning.text //=> 'Try to avoid !important'\n */\n this.text = text;\n\n if (opts.node && opts.node.source) {\n var pos = opts.node.positionBy(opts);\n /**\n * Line in the input file with this warning’s source.\n * @type {number}\n *\n * @example\n * warning.line //=> 5\n */\n this.line = pos.line;\n /**\n * Column in the input file with this warning’s source.\n *\n * @type {number}\n *\n * @example\n * warning.column //=> 6\n */\n this.column = pos.column;\n }\n\n for (var opt in opts) {\n this[opt] = opts[opt];\n }\n }\n\n /**\n * Returns a warning position and message.\n *\n * @example\n * warning.toString() //=> 'postcss-lint:a.css:10:14: Avoid !important'\n *\n * @return {string} Warning position and message.\n */\n\n\n Warning.prototype.toString = function toString() {\n if (this.node) {\n return this.node.error(this.text, {\n plugin: this.plugin,\n index: this.index,\n word: this.word\n }).message;\n } else if (this.plugin) {\n return this.plugin + ': ' + this.text;\n } else {\n return this.text;\n }\n };\n\n /**\n * @memberof Warning#\n * @member {string} plugin The name of the plugin that created\n * it will fill this property automatically.\n * this warning. When you call {@link Node#warn}\n *\n * @example\n * warning.plugin //=> 'postcss-important'\n */\n\n /**\n * @memberof Warning#\n * @member {Node} node Contains the CSS node that caused the warning.\n *\n * @example\n * warning.node.toString() //=> 'color: white !important'\n */\n\n\n return Warning;\n}();\n\nexports.default = Warning;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndhcm5pbmcuZXM2Il0sIm5hbWVzIjpbIldhcm5pbmciLCJ0ZXh0Iiwib3B0cyIsInR5cGUiLCJub2RlIiwic291cmNlIiwicG9zIiwicG9zaXRpb25CeSIsImxpbmUiLCJjb2x1bW4iLCJvcHQiLCJ0b1N0cmluZyIsImVycm9yIiwicGx1Z2luIiwiaW5kZXgiLCJ3b3JkIiwibWVzc2FnZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7Ozs7Ozs7O0lBUU1BLE87QUFDSjs7Ozs7Ozs7Ozs7QUFXQSxtQkFBYUMsSUFBYixFQUErQjtBQUFBLFFBQVpDLElBQVksdUVBQUwsRUFBSzs7QUFBQTs7QUFDN0I7Ozs7Ozs7OztBQVNBLFNBQUtDLElBQUwsR0FBWSxTQUFaO0FBQ0E7Ozs7Ozs7O0FBUUEsU0FBS0YsSUFBTCxHQUFZQSxJQUFaOztBQUVBLFFBQUlDLEtBQUtFLElBQUwsSUFBYUYsS0FBS0UsSUFBTCxDQUFVQyxNQUEzQixFQUFtQztBQUNqQyxVQUFJQyxNQUFNSixLQUFLRSxJQUFMLENBQVVHLFVBQVYsQ0FBcUJMLElBQXJCLENBQVY7QUFDQTs7Ozs7OztBQU9BLFdBQUtNLElBQUwsR0FBWUYsSUFBSUUsSUFBaEI7QUFDQTs7Ozs7Ozs7QUFRQSxXQUFLQyxNQUFMLEdBQWNILElBQUlHLE1BQWxCO0FBQ0Q7O0FBRUQsU0FBSyxJQUFJQyxHQUFULElBQWdCUixJQUFoQjtBQUFzQixXQUFLUSxHQUFMLElBQVlSLEtBQUtRLEdBQUwsQ0FBWjtBQUF0QjtBQUNEOztBQUVEOzs7Ozs7Ozs7O29CQVFBQyxRLHVCQUFZO0FBQ1YsUUFBSSxLQUFLUCxJQUFULEVBQWU7QUFDYixhQUFPLEtBQUtBLElBQUwsQ0FBVVEsS0FBVixDQUFnQixLQUFLWCxJQUFyQixFQUEyQjtBQUNoQ1ksZ0JBQVEsS0FBS0EsTUFEbUI7QUFFaENDLGVBQU8sS0FBS0EsS0FGb0I7QUFHaENDLGNBQU0sS0FBS0E7QUFIcUIsT0FBM0IsRUFJSkMsT0FKSDtBQUtELEtBTkQsTUFNTyxJQUFJLEtBQUtILE1BQVQsRUFBaUI7QUFDdEIsYUFBTyxLQUFLQSxNQUFMLEdBQWMsSUFBZCxHQUFxQixLQUFLWixJQUFqQztBQUNELEtBRk0sTUFFQTtBQUNMLGFBQU8sS0FBS0EsSUFBWjtBQUNEO0FBQ0YsRzs7QUFFRDs7Ozs7Ozs7OztBQVVBOzs7Ozs7Ozs7Ozs7a0JBU2FELE8iLCJmaWxlIjoid2FybmluZy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUmVwcmVzZW50cyBhIHBsdWdpbuKAmXMgd2FybmluZy4gSXQgY2FuIGJlIGNyZWF0ZWQgdXNpbmcge0BsaW5rIE5vZGUjd2Fybn0uXG4gKlxuICogQGV4YW1wbGVcbiAqIGlmIChkZWNsLmltcG9ydGFudCkge1xuICogICBkZWNsLndhcm4ocmVzdWx0LCAnQXZvaWQgIWltcG9ydGFudCcsIHsgd29yZDogJyFpbXBvcnRhbnQnIH0pXG4gKiB9XG4gKi9cbmNsYXNzIFdhcm5pbmcge1xuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgICAgICAgIFdhcm5pbmcgbWVzc2FnZS5cbiAgICogQHBhcmFtIHtPYmplY3R9IFtvcHRzXSAgICAgIFdhcm5pbmcgb3B0aW9ucy5cbiAgICogQHBhcmFtIHtOb2RlfSAgIG9wdHMubm9kZSAgIENTUyBub2RlIHRoYXQgY2F1c2VkIHRoZSB3YXJuaW5nLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy53b3JkICAgV29yZCBpbiBDU1Mgc291cmNlIHRoYXQgY2F1c2VkIHRoZSB3YXJuaW5nLlxuICAgKiBAcGFyYW0ge251bWJlcn0gb3B0cy5pbmRleCAgSW5kZXggaW4gQ1NTIG5vZGUgc3RyaW5nIHRoYXQgY2F1c2VkXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgd2FybmluZy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMucGx1Z2luIE5hbWUgb2YgdGhlIHBsdWdpbiB0aGF0IGNyZWF0ZWRcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMgd2FybmluZy4ge0BsaW5rIFJlc3VsdCN3YXJufSBmaWxsc1xuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyBwcm9wZXJ0eSBhdXRvbWF0aWNhbGx5LlxuICAgKi9cbiAgY29uc3RydWN0b3IgKHRleHQsIG9wdHMgPSB7IH0pIHtcbiAgICAvKipcbiAgICAgKiBUeXBlIHRvIGZpbHRlciB3YXJuaW5ncyBmcm9tIHtAbGluayBSZXN1bHQjbWVzc2FnZXN9LlxuICAgICAqIEFsd2F5cyBlcXVhbCB0byBgXCJ3YXJuaW5nXCJgLlxuICAgICAqXG4gICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogY29uc3Qgbm9uV2FybmluZyA9IHJlc3VsdC5tZXNzYWdlcy5maWx0ZXIoaSA9PiBpLnR5cGUgIT09ICd3YXJuaW5nJylcbiAgICAgKi9cbiAgICB0aGlzLnR5cGUgPSAnd2FybmluZydcbiAgICAvKipcbiAgICAgKiBUaGUgd2FybmluZyBtZXNzYWdlLlxuICAgICAqXG4gICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogd2FybmluZy50ZXh0IC8vPT4gJ1RyeSB0byBhdm9pZCAhaW1wb3J0YW50J1xuICAgICAqL1xuICAgIHRoaXMudGV4dCA9IHRleHRcblxuICAgIGlmIChvcHRzLm5vZGUgJiYgb3B0cy5ub2RlLnNvdXJjZSkge1xuICAgICAgbGV0IHBvcyA9IG9wdHMubm9kZS5wb3NpdGlvbkJ5KG9wdHMpXG4gICAgICAvKipcbiAgICAgICAqIExpbmUgaW4gdGhlIGlucHV0IGZpbGUgd2l0aCB0aGlzIHdhcm5pbmfigJlzIHNvdXJjZS5cbiAgICAgICAqIEB0eXBlIHtudW1iZXJ9XG4gICAgICAgKlxuICAgICAgICogQGV4YW1wbGVcbiAgICAgICAqIHdhcm5pbmcubGluZSAvLz0+IDVcbiAgICAgICAqL1xuICAgICAgdGhpcy5saW5lID0gcG9zLmxpbmVcbiAgICAgIC8qKlxuICAgICAgICogQ29sdW1uIGluIHRoZSBpbnB1dCBmaWxlIHdpdGggdGhpcyB3YXJuaW5n4oCZcyBzb3VyY2UuXG4gICAgICAgKlxuICAgICAgICogQHR5cGUge251bWJlcn1cbiAgICAgICAqXG4gICAgICAgKiBAZXhhbXBsZVxuICAgICAgICogd2FybmluZy5jb2x1bW4gLy89PiA2XG4gICAgICAgKi9cbiAgICAgIHRoaXMuY29sdW1uID0gcG9zLmNvbHVtblxuICAgIH1cblxuICAgIGZvciAobGV0IG9wdCBpbiBvcHRzKSB0aGlzW29wdF0gPSBvcHRzW29wdF1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgd2FybmluZyBwb3NpdGlvbiBhbmQgbWVzc2FnZS5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogd2FybmluZy50b1N0cmluZygpIC8vPT4gJ3Bvc3Rjc3MtbGludDphLmNzczoxMDoxNDogQXZvaWQgIWltcG9ydGFudCdcbiAgICpcbiAgICogQHJldHVybiB7c3RyaW5nfSBXYXJuaW5nIHBvc2l0aW9uIGFuZCBtZXNzYWdlLlxuICAgKi9cbiAgdG9TdHJpbmcgKCkge1xuICAgIGlmICh0aGlzLm5vZGUpIHtcbiAgICAgIHJldHVybiB0aGlzLm5vZGUuZXJyb3IodGhpcy50ZXh0LCB7XG4gICAgICAgIHBsdWdpbjogdGhpcy5wbHVnaW4sXG4gICAgICAgIGluZGV4OiB0aGlzLmluZGV4LFxuICAgICAgICB3b3JkOiB0aGlzLndvcmRcbiAgICAgIH0pLm1lc3NhZ2VcbiAgICB9IGVsc2UgaWYgKHRoaXMucGx1Z2luKSB7XG4gICAgICByZXR1cm4gdGhpcy5wbHVnaW4gKyAnOiAnICsgdGhpcy50ZXh0XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLnRleHRcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQG1lbWJlcm9mIFdhcm5pbmcjXG4gICAqIEBtZW1iZXIge3N0cmluZ30gcGx1Z2luIFRoZSBuYW1lIG9mIHRoZSBwbHVnaW4gdGhhdCBjcmVhdGVkXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgIGl0IHdpbGwgZmlsbCB0aGlzIHByb3BlcnR5IGF1dG9tYXRpY2FsbHkuXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMgd2FybmluZy4gV2hlbiB5b3UgY2FsbCB7QGxpbmsgTm9kZSN3YXJufVxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiB3YXJuaW5nLnBsdWdpbiAvLz0+ICdwb3N0Y3NzLWltcG9ydGFudCdcbiAgICovXG5cbiAgLyoqXG4gICAqIEBtZW1iZXJvZiBXYXJuaW5nI1xuICAgKiBAbWVtYmVyIHtOb2RlfSBub2RlIENvbnRhaW5zIHRoZSBDU1Mgbm9kZSB0aGF0IGNhdXNlZCB0aGUgd2FybmluZy5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogd2FybmluZy5ub2RlLnRvU3RyaW5nKCkgLy89PiAnY29sb3I6IHdoaXRlICFpbXBvcnRhbnQnXG4gICAqL1xufVxuXG5leHBvcnQgZGVmYXVsdCBXYXJuaW5nXG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\n\nvar _declaration = require('./declaration');\n\nvar _declaration2 = _interopRequireDefault(_declaration);\n\nvar _tokenize = require('./tokenize');\n\nvar _tokenize2 = _interopRequireDefault(_tokenize);\n\nvar _comment = require('./comment');\n\nvar _comment2 = _interopRequireDefault(_comment);\n\nvar _atRule = require('./at-rule');\n\nvar _atRule2 = _interopRequireDefault(_atRule);\n\nvar _root = require('./root');\n\nvar _root2 = _interopRequireDefault(_root);\n\nvar _rule = require('./rule');\n\nvar _rule2 = _interopRequireDefault(_rule);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Parser = function () {\n function Parser(input) {\n _classCallCheck(this, Parser);\n\n this.input = input;\n\n this.root = new _root2.default();\n this.current = this.root;\n this.spaces = '';\n this.semicolon = false;\n\n this.createTokenizer();\n this.root.source = { input: input, start: { line: 1, column: 1 } };\n }\n\n Parser.prototype.createTokenizer = function createTokenizer() {\n this.tokenizer = (0, _tokenize2.default)(this.input);\n };\n\n Parser.prototype.parse = function parse() {\n var token = void 0;\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken();\n\n switch (token[0]) {\n case 'space':\n this.spaces += token[1];\n break;\n\n case ';':\n this.freeSemicolon(token);\n break;\n\n case '}':\n this.end(token);\n break;\n\n case 'comment':\n this.comment(token);\n break;\n\n case 'at-word':\n this.atrule(token);\n break;\n\n case '{':\n this.emptyRule(token);\n break;\n\n default:\n this.other(token);\n break;\n }\n }\n this.endFile();\n };\n\n Parser.prototype.comment = function comment(token) {\n var node = new _comment2.default();\n this.init(node, token[2], token[3]);\n node.source.end = { line: token[4], column: token[5] };\n\n var text = token[1].slice(2, -2);\n if (/^\\s*$/.test(text)) {\n node.text = '';\n node.raws.left = text;\n node.raws.right = '';\n } else {\n var match = text.match(/^(\\s*)([^]*[^\\s])(\\s*)$/);\n node.text = match[2];\n node.raws.left = match[1];\n node.raws.right = match[3];\n }\n };\n\n Parser.prototype.emptyRule = function emptyRule(token) {\n var node = new _rule2.default();\n this.init(node, token[2], token[3]);\n node.selector = '';\n node.raws.between = '';\n this.current = node;\n };\n\n Parser.prototype.other = function other(start) {\n var end = false;\n var type = null;\n var colon = false;\n var bracket = null;\n var brackets = [];\n\n var tokens = [];\n var token = start;\n while (token) {\n type = token[0];\n tokens.push(token);\n\n if (type === '(' || type === '[') {\n if (!bracket) bracket = token;\n brackets.push(type === '(' ? ')' : ']');\n } else if (brackets.length === 0) {\n if (type === ';') {\n if (colon) {\n this.decl(tokens);\n return;\n } else {\n break;\n }\n } else if (type === '{') {\n this.rule(tokens);\n return;\n } else if (type === '}') {\n this.tokenizer.back(tokens.pop());\n end = true;\n break;\n } else if (type === ':') {\n colon = true;\n }\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop();\n if (brackets.length === 0) bracket = null;\n }\n\n token = this.tokenizer.nextToken();\n }\n\n if (this.tokenizer.endOfFile()) end = true;\n if (brackets.length > 0) this.unclosedBracket(bracket);\n\n if (end && colon) {\n while (tokens.length) {\n token = tokens[tokens.length - 1][0];\n if (token !== 'space' && token !== 'comment') break;\n this.tokenizer.back(tokens.pop());\n }\n this.decl(tokens);\n } else {\n this.unknownWord(tokens);\n }\n };\n\n Parser.prototype.rule = function rule(tokens) {\n tokens.pop();\n\n var node = new _rule2.default();\n this.init(node, tokens[0][2], tokens[0][3]);\n\n node.raws.between = this.spacesAndCommentsFromEnd(tokens);\n this.raw(node, 'selector', tokens);\n this.current = node;\n };\n\n Parser.prototype.decl = function decl(tokens) {\n var node = new _declaration2.default();\n this.init(node);\n\n var last = tokens[tokens.length - 1];\n if (last[0] === ';') {\n this.semicolon = true;\n tokens.pop();\n }\n if (last[4]) {\n node.source.end = { line: last[4], column: last[5] };\n } else {\n node.source.end = { line: last[2], column: last[3] };\n }\n\n while (tokens[0][0] !== 'word') {\n if (tokens.length === 1) this.unknownWord(tokens);\n node.raws.before += tokens.shift()[1];\n }\n node.source.start = { line: tokens[0][2], column: tokens[0][3] };\n\n node.prop = '';\n while (tokens.length) {\n var type = tokens[0][0];\n if (type === ':' || type === 'space' || type === 'comment') {\n break;\n }\n node.prop += tokens.shift()[1];\n }\n\n node.raws.between = '';\n\n var token = void 0;\n while (tokens.length) {\n token = tokens.shift();\n\n if (token[0] === ':') {\n node.raws.between += token[1];\n break;\n } else {\n node.raws.between += token[1];\n }\n }\n\n if (node.prop[0] === '_' || node.prop[0] === '*') {\n node.raws.before += node.prop[0];\n node.prop = node.prop.slice(1);\n }\n node.raws.between += this.spacesAndCommentsFromStart(tokens);\n this.precheckMissedSemicolon(tokens);\n\n for (var i = tokens.length - 1; i > 0; i--) {\n token = tokens[i];\n if (token[1].toLowerCase() === '!important') {\n node.important = true;\n var string = this.stringFrom(tokens, i);\n string = this.spacesFromEnd(tokens) + string;\n if (string !== ' !important') node.raws.important = string;\n break;\n } else if (token[1].toLowerCase() === 'important') {\n var cache = tokens.slice(0);\n var str = '';\n for (var j = i; j > 0; j--) {\n var _type = cache[j][0];\n if (str.trim().indexOf('!') === 0 && _type !== 'space') {\n break;\n }\n str = cache.pop()[1] + str;\n }\n if (str.trim().indexOf('!') === 0) {\n node.important = true;\n node.raws.important = str;\n tokens = cache;\n }\n }\n\n if (token[0] !== 'space' && token[0] !== 'comment') {\n break;\n }\n }\n\n this.raw(node, 'value', tokens);\n\n if (node.value.indexOf(':') !== -1) this.checkMissedSemicolon(tokens);\n };\n\n Parser.prototype.atrule = function atrule(token) {\n var node = new _atRule2.default();\n node.name = token[1].slice(1);\n if (node.name === '') {\n this.unnamedAtrule(node, token);\n }\n this.init(node, token[2], token[3]);\n\n var prev = void 0;\n var shift = void 0;\n var last = false;\n var open = false;\n var params = [];\n\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken();\n\n if (token[0] === ';') {\n node.source.end = { line: token[2], column: token[3] };\n this.semicolon = true;\n break;\n } else if (token[0] === '{') {\n open = true;\n break;\n } else if (token[0] === '}') {\n if (params.length > 0) {\n shift = params.length - 1;\n prev = params[shift];\n while (prev && prev[0] === 'space') {\n prev = params[--shift];\n }\n if (prev) {\n node.source.end = { line: prev[4], column: prev[5] };\n }\n }\n this.end(token);\n break;\n } else {\n params.push(token);\n }\n\n if (this.tokenizer.endOfFile()) {\n last = true;\n break;\n }\n }\n\n node.raws.between = this.spacesAndCommentsFromEnd(params);\n if (params.length) {\n node.raws.afterName = this.spacesAndCommentsFromStart(params);\n this.raw(node, 'params', params);\n if (last) {\n token = params[params.length - 1];\n node.source.end = { line: token[4], column: token[5] };\n this.spaces = node.raws.between;\n node.raws.between = '';\n }\n } else {\n node.raws.afterName = '';\n node.params = '';\n }\n\n if (open) {\n node.nodes = [];\n this.current = node;\n }\n };\n\n Parser.prototype.end = function end(token) {\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.semicolon = false;\n\n this.current.raws.after = (this.current.raws.after || '') + this.spaces;\n this.spaces = '';\n\n if (this.current.parent) {\n this.current.source.end = { line: token[2], column: token[3] };\n this.current = this.current.parent;\n } else {\n this.unexpectedClose(token);\n }\n };\n\n Parser.prototype.endFile = function endFile() {\n if (this.current.parent) this.unclosedBlock();\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.current.raws.after = (this.current.raws.after || '') + this.spaces;\n };\n\n Parser.prototype.freeSemicolon = function freeSemicolon(token) {\n this.spaces += token[1];\n if (this.current.nodes) {\n var prev = this.current.nodes[this.current.nodes.length - 1];\n if (prev && prev.type === 'rule' && !prev.raws.ownSemicolon) {\n prev.raws.ownSemicolon = this.spaces;\n this.spaces = '';\n }\n }\n };\n\n // Helpers\n\n Parser.prototype.init = function init(node, line, column) {\n this.current.push(node);\n\n node.source = { start: { line: line, column: column }, input: this.input };\n node.raws.before = this.spaces;\n this.spaces = '';\n if (node.type !== 'comment') this.semicolon = false;\n };\n\n Parser.prototype.raw = function raw(node, prop, tokens) {\n var token = void 0,\n type = void 0;\n var length = tokens.length;\n var value = '';\n var clean = true;\n var next = void 0,\n prev = void 0;\n var pattern = /^([.|#])?([\\w])+/i;\n\n for (var i = 0; i < length; i += 1) {\n token = tokens[i];\n type = token[0];\n\n if (type === 'comment' && node.type === 'rule') {\n prev = tokens[i - 1];\n next = tokens[i + 1];\n\n if (prev[0] !== 'space' && next[0] !== 'space' && pattern.test(prev[1]) && pattern.test(next[1])) {\n value += token[1];\n } else {\n clean = false;\n }\n\n continue;\n }\n\n if (type === 'comment' || type === 'space' && i === length - 1) {\n clean = false;\n } else {\n value += token[1];\n }\n }\n if (!clean) {\n var raw = tokens.reduce(function (all, i) {\n return all + i[1];\n }, '');\n node.raws[prop] = { value: value, raw: raw };\n }\n node[prop] = value;\n };\n\n Parser.prototype.spacesAndCommentsFromEnd = function spacesAndCommentsFromEnd(tokens) {\n var lastTokenType = void 0;\n var spaces = '';\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== 'space' && lastTokenType !== 'comment') break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n };\n\n Parser.prototype.spacesAndCommentsFromStart = function spacesAndCommentsFromStart(tokens) {\n var next = void 0;\n var spaces = '';\n while (tokens.length) {\n next = tokens[0][0];\n if (next !== 'space' && next !== 'comment') break;\n spaces += tokens.shift()[1];\n }\n return spaces;\n };\n\n Parser.prototype.spacesFromEnd = function spacesFromEnd(tokens) {\n var lastTokenType = void 0;\n var spaces = '';\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== 'space') break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n };\n\n Parser.prototype.stringFrom = function stringFrom(tokens, from) {\n var result = '';\n for (var i = from; i < tokens.length; i++) {\n result += tokens[i][1];\n }\n tokens.splice(from, tokens.length - from);\n return result;\n };\n\n Parser.prototype.colon = function colon(tokens) {\n var brackets = 0;\n var token = void 0,\n type = void 0,\n prev = void 0;\n for (var i = 0; i < tokens.length; i++) {\n token = tokens[i];\n type = token[0];\n\n if (type === '(') {\n brackets += 1;\n } else if (type === ')') {\n brackets -= 1;\n } else if (brackets === 0 && type === ':') {\n if (!prev) {\n this.doubleColon(token);\n } else if (prev[0] === 'word' && prev[1] === 'progid') {\n continue;\n } else {\n return i;\n }\n }\n\n prev = token;\n }\n return false;\n };\n\n // Errors\n\n Parser.prototype.unclosedBracket = function unclosedBracket(bracket) {\n throw this.input.error('Unclosed bracket', bracket[2], bracket[3]);\n };\n\n Parser.prototype.unknownWord = function unknownWord(tokens) {\n throw this.input.error('Unknown word', tokens[0][2], tokens[0][3]);\n };\n\n Parser.prototype.unexpectedClose = function unexpectedClose(token) {\n throw this.input.error('Unexpected }', token[2], token[3]);\n };\n\n Parser.prototype.unclosedBlock = function unclosedBlock() {\n var pos = this.current.source.start;\n throw this.input.error('Unclosed block', pos.line, pos.column);\n };\n\n Parser.prototype.doubleColon = function doubleColon(token) {\n throw this.input.error('Double colon', token[2], token[3]);\n };\n\n Parser.prototype.unnamedAtrule = function unnamedAtrule(node, token) {\n throw this.input.error('At-rule without name', token[2], token[3]);\n };\n\n Parser.prototype.precheckMissedSemicolon = function precheckMissedSemicolon() /* tokens */{\n // Hook for Safe Parser\n };\n\n Parser.prototype.checkMissedSemicolon = function checkMissedSemicolon(tokens) {\n var colon = this.colon(tokens);\n if (colon === false) return;\n\n var founded = 0;\n var token = void 0;\n for (var j = colon - 1; j >= 0; j--) {\n token = tokens[j];\n if (token[0] !== 'space') {\n founded += 1;\n if (founded === 2) break;\n }\n }\n throw this.input.error('Missed semicolon', token[2], token[3]);\n };\n\n return Parser;\n}();\n\nexports.default = Parser;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhcnNlci5lczYiXSwibmFtZXMiOlsiUGFyc2VyIiwiaW5wdXQiLCJyb290IiwiUm9vdCIsImN1cnJlbnQiLCJzcGFjZXMiLCJzZW1pY29sb24iLCJjcmVhdGVUb2tlbml6ZXIiLCJzb3VyY2UiLCJzdGFydCIsImxpbmUiLCJjb2x1bW4iLCJ0b2tlbml6ZXIiLCJwYXJzZSIsInRva2VuIiwiZW5kT2ZGaWxlIiwibmV4dFRva2VuIiwiZnJlZVNlbWljb2xvbiIsImVuZCIsImNvbW1lbnQiLCJhdHJ1bGUiLCJlbXB0eVJ1bGUiLCJvdGhlciIsImVuZEZpbGUiLCJub2RlIiwiQ29tbWVudCIsImluaXQiLCJ0ZXh0Iiwic2xpY2UiLCJ0ZXN0IiwicmF3cyIsImxlZnQiLCJyaWdodCIsIm1hdGNoIiwiUnVsZSIsInNlbGVjdG9yIiwiYmV0d2VlbiIsInR5cGUiLCJjb2xvbiIsImJyYWNrZXQiLCJicmFja2V0cyIsInRva2VucyIsInB1c2giLCJsZW5ndGgiLCJkZWNsIiwicnVsZSIsImJhY2siLCJwb3AiLCJ1bmNsb3NlZEJyYWNrZXQiLCJ1bmtub3duV29yZCIsInNwYWNlc0FuZENvbW1lbnRzRnJvbUVuZCIsInJhdyIsIkRlY2xhcmF0aW9uIiwibGFzdCIsImJlZm9yZSIsInNoaWZ0IiwicHJvcCIsInNwYWNlc0FuZENvbW1lbnRzRnJvbVN0YXJ0IiwicHJlY2hlY2tNaXNzZWRTZW1pY29sb24iLCJpIiwidG9Mb3dlckNhc2UiLCJpbXBvcnRhbnQiLCJzdHJpbmciLCJzdHJpbmdGcm9tIiwic3BhY2VzRnJvbUVuZCIsImNhY2hlIiwic3RyIiwiaiIsInRyaW0iLCJpbmRleE9mIiwidmFsdWUiLCJjaGVja01pc3NlZFNlbWljb2xvbiIsIkF0UnVsZSIsIm5hbWUiLCJ1bm5hbWVkQXRydWxlIiwicHJldiIsIm9wZW4iLCJwYXJhbXMiLCJhZnRlck5hbWUiLCJub2RlcyIsImFmdGVyIiwicGFyZW50IiwidW5leHBlY3RlZENsb3NlIiwidW5jbG9zZWRCbG9jayIsIm93blNlbWljb2xvbiIsImNsZWFuIiwibmV4dCIsInBhdHRlcm4iLCJyZWR1Y2UiLCJhbGwiLCJsYXN0VG9rZW5UeXBlIiwiZnJvbSIsInJlc3VsdCIsInNwbGljZSIsImRvdWJsZUNvbG9uIiwiZXJyb3IiLCJwb3MiLCJmb3VuZGVkIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUE7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7Ozs7OztJQUVxQkEsTTtBQUNuQixrQkFBYUMsS0FBYixFQUFvQjtBQUFBOztBQUNsQixTQUFLQSxLQUFMLEdBQWFBLEtBQWI7O0FBRUEsU0FBS0MsSUFBTCxHQUFZLElBQUlDLGNBQUosRUFBWjtBQUNBLFNBQUtDLE9BQUwsR0FBZSxLQUFLRixJQUFwQjtBQUNBLFNBQUtHLE1BQUwsR0FBYyxFQUFkO0FBQ0EsU0FBS0MsU0FBTCxHQUFpQixLQUFqQjs7QUFFQSxTQUFLQyxlQUFMO0FBQ0EsU0FBS0wsSUFBTCxDQUFVTSxNQUFWLEdBQW1CLEVBQUVQLFlBQUYsRUFBU1EsT0FBTyxFQUFFQyxNQUFNLENBQVIsRUFBV0MsUUFBUSxDQUFuQixFQUFoQixFQUFuQjtBQUNEOzttQkFFREosZSw4QkFBbUI7QUFDakIsU0FBS0ssU0FBTCxHQUFpQix3QkFBVSxLQUFLWCxLQUFmLENBQWpCO0FBQ0QsRzs7bUJBRURZLEssb0JBQVM7QUFDUCxRQUFJQyxjQUFKO0FBQ0EsV0FBTyxDQUFDLEtBQUtGLFNBQUwsQ0FBZUcsU0FBZixFQUFSLEVBQW9DO0FBQ2xDRCxjQUFRLEtBQUtGLFNBQUwsQ0FBZUksU0FBZixFQUFSOztBQUVBLGNBQVFGLE1BQU0sQ0FBTixDQUFSO0FBQ0UsYUFBSyxPQUFMO0FBQ0UsZUFBS1QsTUFBTCxJQUFlUyxNQUFNLENBQU4sQ0FBZjtBQUNBOztBQUVGLGFBQUssR0FBTDtBQUNFLGVBQUtHLGFBQUwsQ0FBbUJILEtBQW5CO0FBQ0E7O0FBRUYsYUFBSyxHQUFMO0FBQ0UsZUFBS0ksR0FBTCxDQUFTSixLQUFUO0FBQ0E7O0FBRUYsYUFBSyxT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QW1DQyxJQUFJdEYsSUFBdkMsRUFBNkNzRixJQUFJckYsTUFBakQsQ0FBTjtBQUNELEc7O21CQUVEbUYsVyx3QkFBYWhGLEssRUFBTztBQUNsQixVQUFNLEtBQUtiLEtBQUwsQ0FBVzhGLEtBQVgsQ0FBaUIsY0FBakIsRUFBaUNqRixNQUFNLENBQU4sQ0FBakMsRUFBMkNBLE1BQU0sQ0FBTixDQUEzQyxDQUFOO0FBQ0QsRzs7bUJBRUQ0RCxhLDBCQUFlbEQsSSxFQUFNVixLLEVBQU87QUFDMUIsVUFBTSxLQUFLYixLQUFMLENBQVc4RixLQUFYLENBQWlCLHNCQUFqQixFQUF5Q2pGLE1BQU0sQ0FBTixDQUF6QyxFQUFtREEsTUFBTSxDQUFOLENBQW5ELENBQU47QUFDRCxHOzttQkFFRDRDLHVCLHNDQUF5QixZQUFjO0FBQ3JDO0FBQ0QsRzs7bUJBRURhLG9CLGlDQUFzQjlCLE0sRUFBUTtBQUM1QixRQUFJSCxRQUFRLEtBQUtBLEtBQUwsQ0FBV0csTUFBWCxDQUFaO0FBQ0EsUUFBSUgsVUFBVSxLQUFkLEVBQXFCOztBQUVyQixRQUFJMkQsVUFBVSxDQUFkO0FBQ0EsUUFBSW5GLGNBQUo7QUFDQSxTQUFLLElBQUlxRCxJQUFJN0IsUUFBUSxDQUFyQixFQUF3QjZCLEtBQUssQ0FBN0IsRUFBZ0NBLEdBQWhDLEVBQXFDO0FBQ25DckQsY0FBUTJCLE9BQU8wQixDQUFQLENBQVI7QUFDQSxVQUFJckQsTUFBTSxDQUFOLE1BQWEsT0FBakIsRUFBMEI7QUFDeEJtRixtQkFBVyxDQUFYO0FBQ0EsWUFBSUEsWUFBWSxDQUFoQixFQUFtQjtBQUNwQjtBQUNGO0FBQ0QsVUFBTSxLQUFLaEcsS0FBTCxDQUFXOEYsS0FBWCxDQUFpQixrQkFBakIsRUFBcUNqRixNQUFNLENBQU4sQ0FBckMsRUFBK0NBLE1BQU0sQ0FBTixDQUEvQyxDQUFOO0FBQ0QsRzs7Ozs7a0JBMWZrQmQsTSIsImZpbGUiOiJwYXJzZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRGVjbGFyYXRpb24gZnJvbSAnLi9kZWNsYXJhdGlvbidcbmltcG9ydCB0b2tlbml6ZXIgZnJvbSAnLi90b2tlbml6ZSdcbmltcG9ydCBDb21tZW50IGZyb20gJy4vY29tbWVudCdcbmltcG9ydCBBdFJ1bGUgZnJvbSAnLi9hdC1ydWxlJ1xuaW1wb3J0IFJvb3QgZnJvbSAnLi9yb290J1xuaW1wb3J0IFJ1bGUgZnJvbSAnLi9ydWxlJ1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQYXJzZXIge1xuICBjb25zdHJ1Y3RvciAoaW5wdXQpIHtcbiAgICB0aGlzLmlucHV0ID0gaW5wdXRcblxuICAgIHRoaXMucm9vdCA9IG5ldyBSb290KClcbiAgICB0aGlzLmN1cnJlbnQgPSB0aGlzLnJvb3RcbiAgICB0aGlzLnNwYWNlcyA9ICcnXG4gICAgdGhpcy5zZW1pY29sb24gPSBmYWxzZVxuXG4gICAgdGhpcy5jcmVhdGVUb2tlbml6ZXIoKVxuICAgIHRoaXMucm9vdC5zb3VyY2UgPSB7IGlucHV0LCBzdGFydDogeyBsaW5lOiAxLCBjb2x1bW46IDEgfSB9XG4gIH1cblxuICBjcmVhdGVUb2tlbml6ZXIgKCkge1xuICAgIHRoaXMudG9rZW5pemVyID0gdG9rZW5pemVyKHRoaXMuaW5wdXQpXG4gIH1cblxuICBwYXJzZSAoKSB7XG4gICAgbGV0IHRva2VuXG4gICAgd2hpbGUgKCF0aGlzLnRva2VuaXplci5lbmRPZkZpbGUoKSkge1xuICAgICAgdG9rZW4gPSB0aGlzLnRva2VuaXplci5uZXh0VG9rZW4oKVxuXG4gICAgICBzd2l0Y2ggKHRva2VuWzBdKSB7XG4gICAgICAgIGNhc2UgJ3NwYWNlJzpcbiAgICAgICAgICB0aGlzLnNwYWNlcyArPSB0b2tlblsxXVxuICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgY2FzZSAnOyc6XG4gICAgICAgICAgdGhpcy5mcmVlU2VtaWNvbG9uKHRva2VuKVxuICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgY2FzZSAnfSc6XG4gICAgICAgICAgdGhpcy5lbmQodG9rZW4pXG4gICAgICAgICAgYnJlYWtcblxuICAgICAgICBjYXNlICdjb21tZW50JzpcbiAgICAgICAgICB0aGlzLmNvbW1lbnQodG9rZW4pXG4gICAgICAgICAgYnJlYWtcblxuICAgICAgICBjYXNlICdhdC13b3JkJzpcbiAgICAgICAgICB0aGlzLmF0cnVsZSh0b2tlbilcbiAgICAgICAgICBicmVha1xuXG4gICAgICAgIGNhc2UgJ3snOlxuICAgICAgICAgIHRoaXMuZW1wdHlSdWxlKHRva2VuKVxuICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aGlzLm90aGVyKHRva2VuKVxuICAgICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuZW5kRmlsZSgpXG4gIH1cblxuICBjb21tZW50ICh0b2tlbikge1xuICAgIGxldCBub2RlID0gbmV3IENvbW1lbnQoKVxuICAgIHRoaXMuaW5pdChub2RlLCB0b2tlblsyXSwgdG9rZW5bM10pXG4gICAgbm9kZS5zb3VyY2UuZW5kID0geyBsaW5lOiB0b2tlbls0XSwgY29sdW1uOiB0b2tlbls1XSB9XG5cbiAgICBsZXQgdGV4dCA9IHRva2VuWzFdLnNsaWNlKDIsIC0yKVxuICAgIGlmICgvXlxccyokLy50ZXN0KHRleHQpKSB7XG4gICAgICBub2RlLnRleHQgPSAnJ1xuICAgICAgbm9kZS5yYXdzLmxlZnQgPSB0ZXh0XG4gICAgICBub2RlLnJhd3MucmlnaHQgPSAnJ1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgbWF0Y2ggPSB0ZXh0Lm1hdGNoKC9eKFxccyopKFteXSpbXlxcc10pKFxccyopJC8pXG4gICAgICBub2RlLnRleHQgPSBtYXRjaFsyXVxuICAgICAgbm9kZS5yYXdzLmxlZnQgPSBtYXRjaFsxXVxuICAgICAgbm9kZS5yYXdzLnJpZ2h0ID0gbWF0Y2hbM11cbiAgICB9XG4gIH1cblxuICBlbXB0eVJ1bGUgKHRva2VuKSB7XG4gICAgbGV0IG5vZGUgPSBuZXcgUnVsZSgpXG4gICAgdGhpcy5pbml0KG5vZGUsIHRva2VuWzJdLCB0b2tlblszXSlcbiAgICBub2RlLnNlbGVjdG9yID0gJydcbiAgICBub2RlLnJhd3MuYmV0d2VlbiA9ICcnXG4gICAgdGhpcy5jdXJyZW50ID0gbm9kZVxuICB9XG5cbiAgb3RoZXIgKHN0YXJ0KSB7XG4gICAgbGV0IGVuZCA9IGZhbHNlXG4gICAgbGV0IHR5cGUgPSBudWxsXG4gICAgbGV0IGNvbG9uID0gZmFsc2VcbiAgICBsZXQgYnJhY2tldCA9IG51bGxcbiAgICBsZXQgYnJhY2tldHMgPSBbXVxuXG4gICAgbGV0IHRva2VucyA9IFtdXG4gICAgbGV0IHRva2VuID0gc3RhcnRcbiAgICB3aGlsZSAodG9rZW4pIHtcbiAgICAgIHR5cGUgPSB0b2tlblswXVxuICAgICAgdG9rZW5zLnB1c2godG9rZW4pXG5cbiAgICAgIGlmICh0eXBlID09PSAnKCcgfHwgdHlwZSA9PT0gJ1snKSB7XG4gICAgICAgIGlmICghYnJhY2tldCkgYnJhY2tldCA9IHRva2VuXG4gICAgICAgIGJyYWNrZXRzLnB1c2godHlwZSA9PT0gJygnID8gJyknIDogJ10nKVxuICAgICAgfSBlbHNlIGlmIChicmFja2V0cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgaWYgKHR5cGUgPT09ICc7Jykge1xuICAgICAgICAgIGlmIChjb2xvbikge1xuICAgICAgICAgICAgdGhpcy5kZWNsKHRva2VucylcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAneycpIHtcbiAgICAgICAgICB0aGlzLnJ1bGUodG9rZW5zKVxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICd9Jykge1xuICAgICAgICAgIHRoaXMudG9rZW5pemVyLmJhY2sodG9rZW5zLnBvcCgpKVxuICAgICAgICAgIGVuZCA9IHRydWVcbiAgICAgICAgICBicmVha1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICc6Jykge1xuICAgICAgICAgIGNvbG9uID0gdHJ1ZVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHR5cGUgPT09IGJyYWNrZXRzW2JyYWNrZXRzLmxlbmd0aCAtIDFdKSB7XG4gICAgICAgIGJyYWNrZXRzLnBvcCgpXG4gICAgICAgIGlmIChicmFja2V0cy5sZW5ndGggPT09IDApIGJyYWNrZXQgPSBudWxsXG4gICAgICB9XG5cbiAgICAgIHRva2VuID0gdGhpcy50b2tlbml6ZXIubmV4dFRva2VuKClcbiAgICB9XG5cbiAgICBpZiAodGhpcy50b2tlbml6ZXIuZW5kT2ZGaWxlKCkpIGVuZCA9IHRydWVcbiAgICBpZiAoYnJhY2tldHMubGVuZ3RoID4gMCkgdGhpcy51bmNsb3NlZEJyYWNrZXQoYnJhY2tldClcblxuICAgIGlmIChlbmQgJiYgY29sb24pIHtcbiAgICAgIHdoaWxlICh0b2tlbnMubGVuZ3RoKSB7XG4gICAgICAgIHRva2VuID0gdG9rZW5zW3Rva2Vucy5sZW5ndGggLSAxXVswXVxuICAgICAgICBpZiAodG9rZW4gIT09ICdzcGFjZScgJiYgdG9rZW4gIT09ICdjb21tZW50JykgYnJlYWtcbiAgICAgICAgdGhpcy50b2tlbml6ZXIuYmFjayh0b2tlbnMucG9wKCkpXG4gICAgICB9XG4gICAgICB0aGlzLmRlY2wodG9rZW5zKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnVua25vd25Xb3JkKHRva2VucylcbiAgICB9XG4gIH1cblxuICBydWxlICh0b2tlbnMpIHtcbiAgICB0b2tlbnMucG9wKClcblxuICAgIGxldCBub2RlID0gbmV3IFJ1bGUoKVxuICAgIHRoaXMuaW5pdChub2RlLCB0b2tlbnNbMF1bMl0sIHRva2Vuc1swXVszXSlcblxuICAgIG5vZGUucmF3cy5iZXR3ZWVuID0gdGhpcy5zcGFjZXNBbmRDb21tZW50c0Zyb21FbmQodG9rZW5zKVxuICAgIHRoaXMucmF3KG5vZGUsICdzZWxlY3RvcicsIHRva2VucylcbiAgICB0aGlzLmN1cnJlbnQgPSBub2RlXG4gIH1cblxuICBkZWNsICh0b2tlbnMpIHtcbiAgICBsZXQgbm9kZSA9IG5ldyBEZWNsYXJhdGlvbigpXG4gICAgdGhpcy5pbml0KG5vZGUpXG5cbiAgICBsZXQgbGFzdCA9IHRva2Vuc1t0b2tlbnMubGVuZ3RoIC0gMV1cbiAgICBpZiAobGFzdFswXSA9PT0gJzsnKSB7XG4gICAgICB0aGlzLnNlbWljb2xvbiA9IHRydWVcbiAgICAgIHRva2Vucy5wb3AoKVxuICAgIH1cbiAgICBpZiAobGFzdFs0XSkge1xuICAgICAgbm9kZS5zb3VyY2UuZW5kID0geyBsaW5lOiBsYXN0WzRdLCBjb2x1bW46IGxhc3RbNV0gfVxuICAgIH0gZWxzZSB7XG4gICAgICBub2RlLnNvdXJjZS5lbmQgPSB7IGxpbmU6IGxhc3RbMl0sIGNvbHVtbjogbGFzdFszXSB9XG4gICAgfVxuXG4gICAgd2hpbGUgKHRva2Vuc1swXVswXSAhPT0gJ3dvcmQnKSB7XG4gICAgICBpZiAodG9rZW5zLmxlbmd0aCA9PT0gMSkgdGhpcy51bmtub3duV29yZCh0b2tlbnMpXG4gICAgICBub2RlLnJhd3MuYmVmb3JlICs9IHRva2Vucy5zaGlmdCgpWzFdXG4gICAgfVxuICAgIG5vZGUuc291cmNlLnN0YXJ0ID0geyBsaW5lOiB0b2tlbnNbMF1bMl0sIGNvbHVtbjogdG9rZW5zWzBdWzNdIH1cblxuICAgIG5vZGUucHJvcCA9ICcnXG4gICAgd2hpbGUgKHRva2Vucy5sZW5ndGgpIHtcbiAgICAgIGxldCB0eXBlID0gdG9rZW5zWzBdWzBdXG4gICAgICBpZiAodHlwZSA9PT0gJzonIHx8IHR5cGUgPT09ICdzcGFjZScgfHwgdHlwZSA9PT0gJ2NvbW1lbnQnKSB7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgICBub2RlLnByb3AgKz0gdG9rZW5zLnNoaWZ0KClbMV1cbiAgICB9XG5cbiAgICBub2RlLnJhd3MuYmV0d2VlbiA9ICcnXG5cbiAgICBsZXQgdG9rZW5cbiAgICB3aGlsZSAodG9rZW5zLmxlbmd0aCkge1xuICAgICAgdG9rZW4gPSB0b2tlbnMuc2hpZnQoKVxuXG4gICAgICBpZiAodG9rZW5bMF0gPT09ICc6Jykge1xuICAgICAgICBub2RlLnJhd3MuYmV0d2VlbiArPSB0b2tlblsxXVxuICAgICAgICBicmVha1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbm9kZS5yYXdzLmJldHdlZW4gKz0gdG9rZW5bMV1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobm9kZS5wcm9wWzBdID09PSAnXycgfHwgbm9kZS5wcm9wWzBdID09PSAnKicpIHtcbiAgICAgIG5vZGUucmF3cy5iZWZvcmUgKz0gbm9kZS5wcm9wWzBdXG4gICAgICBub2RlLnByb3AgPSBub2RlLnByb3Auc2xpY2UoMSlcbiAgICB9XG4gICAgbm9kZS5yYXdzLmJldHdlZW4gKz0gdGhpcy5zcGFjZXNBbmRDb21tZW50c0Zyb21TdGFydCh0b2tlbnMpXG4gICAgdGhpcy5wcmVjaGVja01pc3NlZFNlbWljb2xvbih0b2tlbnMpXG5cbiAgICBmb3IgKGxldCBpID0gdG9rZW5zLmxlbmd0aCAtIDE7IGkgPiAwOyBpLS0pIHtcbiAgICAgIHRva2VuID0gdG9rZW5zW2ldXG4gICAgICBpZiAodG9rZW5bMV0udG9Mb3dlckNhc2UoKSA9PT0gJyFpbXBvcnRhbnQnKSB7XG4gICAgICAgIG5vZGUuaW1wb3J0YW50ID0gdHJ1ZVxuICAgICAgICBsZXQgc3RyaW5nID0gdGhpcy5zdHJpbmdGcm9tKHRva2VucywgaSlcbiAgICAgICAgc3RyaW5nID0gdGhpcy5zcGFjZXNGcm9tRW5kKHRva2VucykgKyBzdHJpbmdcbiAgICAgICAgaWYgKHN0cmluZyAhPT0gJyAhaW1wb3J0YW50Jykgbm9kZS5yYXdzLmltcG9ydGFudCA9IHN0cmluZ1xuICAgICAgICBicmVha1xuICAgICAgfSBlbHNlIGlmICh0b2tlblsxXS50b0xvd2VyQ2FzZSgpID09PSAnaW1wb3J0YW50Jykge1xuICAgICAgICBsZXQgY2FjaGUgPSB0b2tlbnMuc2xpY2UoMClcbiAgICAgICAgbGV0IHN0ciA9ICcnXG4gICAgICAgIGZvciAobGV0IGogPSBpOyBqID4gMDsgai0tKSB7XG4gICAgICAgICAgbGV0IHR5cGUgPSBjYWNoZVtqXVswXVxuICAgICAgICAgIGlmIChzdHIudHJpbSgpLmluZGV4T2YoJyEnKSA9PT0gMCAmJiB0eXBlICE9PSAnc3BhY2UnKSB7XG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBzdHIgPSBjYWNoZS5wb3AoKVsxXSArIHN0clxuICAgICAgICB9XG4gICAgICAgIGlmIChzdHIudHJpbSgpLmluZGV4T2YoJyEnKSA9PT0gMCkge1xuICAgICAgICAgIG5vZGUuaW1wb3J0YW50ID0gdHJ1ZVxuICAgICAgICAgIG5vZGUucmF3cy5pbXBvcnRhbnQgPSBzdHJcbiAgICAgICAgICB0b2tlbnMgPSBjYWNoZVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh0b2tlblswXSAhPT0gJ3NwYWNlJyAmJiB0b2tlblswXSAhPT0gJ2NvbW1lbnQnKSB7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5yYXcobm9kZSwgJ3ZhbHVlJywgdG9rZW5zKVxuXG4gICAgaWYgKG5vZGUudmFsdWUuaW5kZXhPZignOicpICE9PSAtMSkgdGhpcy5jaGVja01pc3NlZFNlbWljb2xvbih0b2tlbnMpXG4gIH1cblxuICBhdHJ1bGUgKHRva2VuKSB7XG4gICAgbGV0IG5vZGUgPSBuZXcgQXRSdWxlKClcbiAgICBub2RlLm5hbWUgPSB0b2tlblsxXS5zbGljZSgxKVxuICAgIGlmIChub2RlLm5hbWUgPT09ICcnKSB7XG4gICAgICB0aGlzLnVubmFtZWRBdHJ1bGUobm9kZSwgdG9rZW4pXG4gICAgfVxuICAgIHRoaXMuaW5pdChub2RlLCB0b2tlblsyXSwgdG9rZW5bM10pXG5cbiAgICBsZXQgcHJldlxuICAgIGxldCBzaGlmdFxuICAgIGxldCBsYXN0ID0gZmFsc2VcbiAgICBsZXQgb3BlbiA9IGZhbHNlXG4gICAgbGV0IHBhcmFtcyA9IFtdXG5cbiAgICB3aGlsZSAoIXRoaXMudG9rZW5pemVyLmVuZE9mRmlsZSgpKSB7XG4gICAgICB0b2tlbiA9IHRoaXMudG9rZW5pemVyLm5leHRUb2tlbigpXG5cbiAgICAgIGlmICh0b2tlblswXSA9PT0gJzsnKSB7XG4gICAgICAgIG5vZGUuc291cmNlLmVuZCA9IHsgbGluZTogdG9rZW5bMl0sIGNvbHVtbjogdG9rZW5bM10gfVxuICAgICAgICB0aGlzLnNlbWljb2xvbiA9IHRydWVcbiAgICAgICAgYnJlYWtcbiAgICAgIH0gZWxzZSBpZiAodG9rZW5bMF0gPT09ICd7Jykge1xuICAgICAgICBvcGVuID0gdHJ1ZVxuICAgICAgICBicmVha1xuICAgICAgfSBlbHNlIGlmICh0b2tlblswXSA9PT0gJ30nKSB7XG4gICAgICAgIGlmIChwYXJhbXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHNoaWZ0ID0gcGFyYW1zLmxlbmd0aCAtIDFcbiAgICAgICAgICBwcmV2ID0gcGFyYW1zW3NoaWZ0XVxuICAgICAgICAgIHdoaWxlIChwcmV2ICYmIHByZXZbMF0gPT09ICdzcGFjZScpIHtcbiAgICAgICAgICAgIHByZXYgPSBwYXJhbXNbLS1zaGlmdF1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHByZXYpIHtcbiAgICAgICAgICAgIG5vZGUuc291cmNlLmVuZCA9IHsgbGluZTogcHJldls0XSwgY29sdW1uOiBwcmV2WzVdIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5lbmQodG9rZW4pXG4gICAgICAgIGJyZWFrXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXJhbXMucHVzaCh0b2tlbilcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMudG9rZW5pemVyLmVuZE9mRmlsZSgpKSB7XG4gICAgICAgIGxhc3QgPSB0cnVlXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuXG4gICAgbm9kZS5yYXdzLmJldHdlZW4gPSB0aGlzLnNwYWNlc0FuZENvbW1lbnRzRnJvbUVuZChwYXJhbXMpXG4gICAgaWYgKHBhcmFtcy5sZW5ndGgpIHtcbiAgICAgIG5vZGUucmF3cy5hZnRlck5hbWUgPSB0aGlzLnNwYWNlc0FuZENvbW1lbnRzRnJvbVN0YXJ0KHBhcmFtcylcbiAgICAgIHRoaXMucmF3KG5vZGUsICdwYXJhbXMnLCBwYXJhbXMpXG4gICAgICBpZiAobGFzdCkge1xuICAgICAgICB0b2tlbiA9IHBhcmFtc1twYXJhbXMubGVuZ3RoIC0gMV1cbiAgICAgICAgbm9kZS5zb3VyY2UuZW5kID0geyBsaW5lOiB0b2tlbls0XSwgY29sdW1uOiB0b2tlbls1XSB9XG4gICAgICAgIHRoaXMuc3BhY2VzID0gbm9kZS5yYXdzLmJldHdlZW5cbiAgICAgICAgbm9kZS5yYXdzLmJldHdlZW4gPSAnJ1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBub2RlLnJhd3MuYWZ0ZXJOYW1lID0gJydcbiAgICAgIG5vZGUucGFyYW1zID0gJydcbiAgICB9XG5cbiAgICBpZiAob3Blbikge1xuICAgICAgbm9kZS5ub2RlcyA9IFtdXG4gICAgICB0aGlzLmN1cnJlbnQgPSBub2RlXG4gICAgfVxuICB9XG5cbiAgZW5kICh0b2tlbikge1xuICAgIGlmICh0aGlzLmN1cnJlbnQubm9kZXMgJiYgdGhpcy5jdXJyZW50Lm5vZGVzLmxlbmd0aCkge1xuICAgICAgdGhpcy5jdXJyZW50LnJhd3Muc2VtaWNvbG9uID0gdGhpcy5zZW1pY29sb25cbiAgICB9XG4gICAgdGhpcy5zZW1pY29sb24gPSBmYWxzZVxuXG4gICAgdGhpcy5jdXJyZW50LnJhd3MuYWZ0ZXIgPSAodGhpcy5jdXJyZW50LnJhd3MuYWZ0ZXIgfHwgJycpICsgdGhpcy5zcGFjZXNcbiAgICB0aGlzLnNwYWNlcyA9ICcnXG5cbiAgICBpZiAodGhpcy5jdXJyZW50LnBhcmVudCkge1xuICAgICAgdGhpcy5jdXJyZW50LnNvdXJjZS5lbmQgPSB7IGxpbmU6IHRva2VuWzJdLCBjb2x1bW46IHRva2VuWzNdIH1cbiAgICAgIHRoaXMuY3VycmVudCA9IHRoaXMuY3VycmVudC5wYXJlbnRcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy51bmV4cGVjdGVkQ2xvc2UodG9rZW4pXG4gICAgfVxuICB9XG5cbiAgZW5kRmlsZSAoKSB7XG4gICAgaWYgKHRoaXMuY3VycmVudC5wYXJlbnQpIHRoaXMudW5jbG9zZWRCbG9jaygpXG4gICAgaWYgKHRoaXMuY3VycmVudC5ub2RlcyAmJiB0aGlzLmN1cnJlbnQubm9kZXMubGVuZ3RoKSB7XG4gICAgICB0aGlzLmN1cnJlbnQucmF3cy5zZW1pY29sb24gPSB0aGlzLnNlbWljb2xvblxuICAgIH1cbiAgICB0aGlzLmN1cnJlbnQucmF3cy5hZnRlciA9ICh0aGlzLmN1cnJlbnQucmF3cy5hZnRlciB8fCAnJykgKyB0aGlzLnNwYWNlc1xuICB9XG5cbiAgZnJlZVNlbWljb2xvbiAodG9rZW4pIHtcbiAgICB0aGlzLnNwYWNlcyArPSB0b2tlblsxXVxuICAgIGlmICh0aGlzLmN1cnJlbnQubm9kZXMpIHtcbiAgICAgIGxldCBwcmV2ID0gdGhpcy5jdXJyZW50Lm5vZGVzW3RoaXMuY3VycmVudC5ub2Rlcy5sZW5ndGggLSAxXVxuICAgICAgaWYgKHByZXYgJiYgcHJldi50eXBlID09PSAncnVsZScgJiYgIXByZXYucmF3cy5vd25TZW1pY29sb24pIHtcbiAgICAgICAgcHJldi5yYXdzLm93blNlbWljb2xvbiA9IHRoaXMuc3BhY2VzXG4gICAgICAgIHRoaXMuc3BhY2VzID0gJydcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBIZWxwZXJzXG5cbiAgaW5pdCAobm9kZSwgbGluZSwgY29sdW1uKSB7XG4gICAgdGhpcy5jdXJyZW50LnB1c2gobm9kZSlcblxuICAgIG5vZGUuc291cmNlID0geyBzdGFydDogeyBsaW5lLCBjb2x1bW4gfSwgaW5wdXQ6IHRoaXMuaW5wdXQgfVxuICAgIG5vZGUucmF3cy5iZWZvcmUgPSB0aGlzLnNwYWNlc1xuICAgIHRoaXMuc3BhY2VzID0gJydcbiAgICBpZiAobm9kZS50eXBlICE9PSAnY29tbWVudCcpIHRoaXMuc2VtaWNvbG9uID0gZmFsc2VcbiAgfVxuXG4gIHJhdyAobm9kZSwgcHJvcCwgdG9rZW5zKSB7XG4gICAgbGV0IHRva2VuLCB0eXBlXG4gICAgbGV0IGxlbmd0aCA9IHRva2Vucy5sZW5ndGhcbiAgICBsZXQgdmFsdWUgPSAnJ1xuICAgIGxldCBjbGVhbiA9IHRydWVcbiAgICBsZXQgbmV4dCwgcHJldlxuICAgIGxldCBwYXR0ZXJuID0gL14oWy58I10pPyhbXFx3XSkrL2lcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIHRva2VuID0gdG9rZW5zW2ldXG4gICAgICB0eXBlID0gdG9rZW5bMF1cblxuICAgICAgaWYgKHR5cGUgPT09ICdjb21tZW50JyAmJiBub2RlLnR5cGUgPT09ICdydWxlJykge1xuICAgICAgICBwcmV2ID0gdG9rZW5zW2kgLSAxXVxuICAgICAgICBuZXh0ID0gdG9rZW5zW2kgKyAxXVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICBwcmV2WzBdICE9PSAnc3BhY2UnICYmXG4gICAgICAgICAgbmV4dFswXSAhPT0gJ3NwYWNlJyAmJlxuICAgICAgICAgIHBhdHRlcm4udGVzdChwcmV2WzFdKSAmJlxuICAgICAgICAgIHBhdHRlcm4udGVzdChuZXh0WzFdKVxuICAgICAgICApIHtcbiAgICAgICAgICB2YWx1ZSArPSB0b2tlblsxXVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNsZWFuID0gZmFsc2VcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlID09PSAnY29tbWVudCcgfHwgKHR5cGUgPT09ICdzcGFjZScgJiYgaSA9PT0gbGVuZ3RoIC0gMSkpIHtcbiAgICAgICAgY2xlYW4gPSBmYWxzZVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFsdWUgKz0gdG9rZW5bMV1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKCFjbGVhbikge1xuICAgICAgbGV0IHJhdyA9IHRva2Vucy5yZWR1Y2UoKGFsbCwgaSkgPT4gYWxsICsgaVsxXSwgJycpXG4gICAgICBub2RlLnJhd3NbcHJvcF0gPSB7IHZhbHVlLCByYXcgfVxuICAgIH1cbiAgICBub2RlW3Byb3BdID0gdmFsdWVcbiAgfVxuXG4gIHNwYWNlc0FuZENvbW1lbnRzRnJvbUVuZCAodG9rZW5zKSB7XG4gICAgbGV0IGxhc3RUb2tlblR5cGVcbiAgICBsZXQgc3BhY2VzID0gJydcbiAgICB3aGlsZSAodG9rZW5zLmxlbmd0aCkge1xuICAgICAgbGFzdFRva2VuVHlwZSA9IHRva2Vuc1t0b2tlbnMubGVuZ3RoIC0gMV1bMF1cbiAgICAgIGlmIChsYXN0VG9rZW5UeXBlICE9PSAnc3BhY2UnICYmIGxhc3RUb2tlblR5cGUgIT09ICdjb21tZW50JykgYnJlYWtcbiAgICAgIHNwYWNlcyA9IHRva2Vucy5wb3AoKVsxXSArIHNwYWNlc1xuICAgIH1cbiAgICByZXR1cm4gc3BhY2VzXG4gIH1cblxuICBzcGFjZXNBbmRDb21tZW50c0Zyb21TdGFydCAodG9rZW5zKSB7XG4gICAgbGV0IG5leHRcbiAgICBsZXQgc3BhY2VzID0gJydcbiAgICB3aGlsZSAodG9rZW5zLmxlbmd0aCkge1xuICAgICAgbmV4dCA9IHRva2Vuc1swXVswXVxuICAgICAgaWYgKG5leHQgIT09ICdzcGFjZScgJiYgbmV4dCAhPT0gJ2NvbW1lbnQnKSBicmVha1xuICAgICAgc3BhY2VzICs9IHRva2Vucy5zaGlmdCgpWzFdXG4gICAgfVxuICAgIHJldHVybiBzcGFjZXNcbiAgfVxuXG4gIHNwYWNlc0Zyb21FbmQgKHRva2Vucykge1xuICAgIGxldCBsYXN0VG9rZW5UeXBlXG4gICAgbGV0IHNwYWNlcyA9ICcnXG4gICAgd2hpbGUgKHRva2Vucy5sZW5ndGgpIHtcbiAgICAgIGxhc3RUb2tlblR5cGUgPSB0b2tlbnNbdG9rZW5zLmxlbmd0aCAtIDFdWzBdXG4gICAgICBpZiAobGFzdFRva2VuVHlwZSAhPT0gJ3NwYWNlJykgYnJlYWtcbiAgICAgIHNwYWNlcyA9IHRva2Vucy5wb3AoKVsxXSArIHNwYWNlc1xuICAgIH1cbiAgICByZXR1cm4gc3BhY2VzXG4gIH1cblxuICBzdHJpbmdGcm9tICh0b2tlbnMsIGZyb20pIHtcbiAgICBsZXQgcmVzdWx0ID0gJydcbiAgICBmb3IgKGxldCBpID0gZnJvbTsgaSA8IHRva2Vucy5sZW5ndGg7IGkrKykge1xuICAgICAgcmVzdWx0ICs9IHRva2Vuc1tpXVsxXVxuICAgIH1cbiAgICB0b2tlbnMuc3BsaWNlKGZyb20sIHRva2Vucy5sZW5ndGggLSBmcm9tKVxuICAgIHJldHVybiByZXN1bHRcbiAgfVxuXG4gIGNvbG9uICh0b2tlbnMpIHtcbiAgICBsZXQgYnJhY2tldHMgPSAwXG4gICAgbGV0IHRva2VuLCB0eXBlLCBwcmV2XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0b2tlbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRva2VuID0gdG9rZW5zW2ldXG4gICAgICB0eXBlID0gdG9rZW5bMF1cblxuICAgICAgaWYgKHR5cGUgPT09ICcoJykge1xuICAgICAgICBicmFja2V0cyArPSAxXG4gICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICcpJykge1xuICAgICAgICBicmFja2V0cyAtPSAxXG4gICAgICB9IGVsc2UgaWYgKGJyYWNrZXRzID09PSAwICYmIHR5cGUgPT09ICc6Jykge1xuICAgICAgICBpZiAoIXByZXYpIHtcbiAgICAgICAgICB0aGlzLmRvdWJsZUNvbG9uKHRva2VuKVxuICAgICAgICB9IGVsc2UgaWYgKHByZXZbMF0gPT09ICd3b3JkJyAmJiBwcmV2WzFdID09PSAncHJvZ2lkJykge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIGlcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBwcmV2ID0gdG9rZW5cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICAvLyBFcnJvcnNcblxuICB1bmNsb3NlZEJyYWNrZXQgKGJyYWNrZXQpIHtcbiAgICB0aHJvdyB0aGlzLmlucHV0LmVycm9yKCdVbmNsb3NlZCBicmFja2V0JywgYnJhY2tldFsyXSwgYnJhY2tldFszXSlcbiAgfVxuXG4gIHVua25vd25Xb3JkICh0b2tlbnMpIHtcbiAgICB0aHJvdyB0aGlzLmlucHV0LmVycm9yKCdVbmtub3duIHdvcmQnLCB0b2tlbnNbMF1bMl0sIHRva2Vuc1swXVszXSlcbiAgfVxuXG4gIHVuZXhwZWN0ZWRDbG9zZSAodG9rZW4pIHtcbiAgICB0aHJvdyB0aGlzLmlucHV0LmVycm9yKCdVbmV4cGVjdGVkIH0nLCB0b2tlblsyXSwgdG9rZW5bM10pXG4gIH1cblxuICB1bmNsb3NlZEJsb2NrICgpIHtcbiAgICBsZXQgcG9zID0gdGhpcy5jdXJyZW50LnNvdXJjZS5zdGFydFxuICAgIHRocm93IHRoaXMuaW5wdXQuZXJyb3IoJ1VuY2xvc2VkIGJsb2NrJywgcG9zLmxpbmUsIHBvcy5jb2x1bW4pXG4gIH1cblxuICBkb3VibGVDb2xvbiAodG9rZW4pIHtcbiAgICB0aHJvdyB0aGlzLmlucHV0LmVycm9yKCdEb3VibGUgY29sb24nLCB0b2tlblsyXSwgdG9rZW5bM10pXG4gIH1cblxuICB1bm5hbWVkQXRydWxlIChub2RlLCB0b2tlbikge1xuICAgIHRocm93IHRoaXMuaW5wdXQuZXJyb3IoJ0F0LXJ1bGUgd2l0aG91dCBuYW1lJywgdG9rZW5bMl0sIHRva2VuWzNdKVxuICB9XG5cbiAgcHJlY2hlY2tNaXNzZWRTZW1pY29sb24gKC8qIHRva2VucyAqLykge1xuICAgIC8vIEhvb2sgZm9yIFNhZmUgUGFyc2VyXG4gIH1cblxuICBjaGVja01pc3NlZFNlbWljb2xvbiAodG9rZW5zKSB7XG4gICAgbGV0IGNvbG9uID0gdGhpcy5jb2xvbih0b2tlbnMpXG4gICAgaWYgKGNvbG9uID09PSBmYWxzZSkgcmV0dXJuXG5cbiAgICBsZXQgZm91bmRlZCA9IDBcbiAgICBsZXQgdG9rZW5cbiAgICBmb3IgKGxldCBqID0gY29sb24gLSAxOyBqID49IDA7IGotLSkge1xuICAgICAgdG9rZW4gPSB0b2tlbnNbal1cbiAgICAgIGlmICh0b2tlblswXSAhPT0gJ3NwYWNlJykge1xuICAgICAgICBmb3VuZGVkICs9IDFcbiAgICAgICAgaWYgKGZvdW5kZWQgPT09IDIpIGJyZWFrXG4gICAgICB9XG4gICAgfVxuICAgIHRocm93IHRoaXMuaW5wdXQuZXJyb3IoJ01pc3NlZCBzZW1pY29sb24nLCB0b2tlblsyXSwgdG9rZW5bM10pXG4gIH1cbn1cbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\nexports.default = tokenizer;\nvar SINGLE_QUOTE = 39;\nvar DOUBLE_QUOTE = 34;\nvar BACKSLASH = 92;\nvar SLASH = 47;\nvar NEWLINE = 10;\nvar SPACE = 32;\nvar FEED = 12;\nvar TAB = 9;\nvar CR = 13;\nvar OPEN_SQUARE = 91;\nvar CLOSE_SQUARE = 93;\nvar OPEN_PARENTHESES = 40;\nvar CLOSE_PARENTHESES = 41;\nvar OPEN_CURLY = 123;\nvar CLOSE_CURLY = 125;\nvar SEMICOLON = 59;\nvar ASTERISK = 42;\nvar COLON = 58;\nvar AT = 64;\n\nvar RE_AT_END = /[ \\n\\t\\r\\f{}()'\"\\\\;/[\\]#]/g;\nvar RE_WORD_END = /[ \\n\\t\\r\\f(){}:;@!'\"\\\\\\][#]|\\/(?=\\*)/g;\nvar RE_BAD_BRACKET = /.[\\\\/(\"'\\n]/;\nvar RE_HEX_ESCAPE = /[a-f0-9]/i;\n\nfunction tokenizer(input) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var css = input.css.valueOf();\n var ignore = options.ignoreErrors;\n\n var code = void 0,\n next = void 0,\n quote = void 0,\n lines = void 0,\n last = void 0,\n content = void 0,\n escape = void 0;\n var nextLine = void 0,\n nextOffset = void 0,\n escaped = void 0,\n escapePos = void 0,\n prev = void 0,\n n = void 0,\n currentToken = void 0;\n\n var length = css.length;\n var offset = -1;\n var line = 1;\n var pos = 0;\n var buffer = [];\n var returned = [];\n\n function unclosed(what) {\n throw input.error('Unclosed ' + what, line, pos - offset);\n }\n\n function endOfFile() {\n return returned.length === 0 && pos >= length;\n }\n\n function nextToken() {\n if (returned.length) return returned.pop();\n if (pos >= length) return;\n\n code = css.charCodeAt(pos);\n if (code === NEWLINE || code === FEED || code === CR && css.charCodeAt(pos + 1) !== NEWLINE) {\n offset = pos;\n line += 1;\n }\n\n switch (code) {\n case NEWLINE:\n case SPACE:\n case TAB:\n case CR:\n case FEED:\n next = pos;\n do {\n next += 1;\n code = css.charCodeAt(next);\n if (code === NEWLINE) {\n offset = next;\n line += 1;\n }\n } while (code === SPACE || code === NEWLINE || code === TAB || code === CR || code === FEED);\n\n currentToken = ['space', css.slice(pos, next)];\n pos = next - 1;\n break;\n\n case OPEN_SQUARE:\n currentToken = ['[', '[', line, pos - offset];\n break;\n\n case CLOSE_SQUARE:\n currentToken = [']', ']', line, pos - offset];\n break;\n\n case OPEN_CURLY:\n currentToken = ['{', '{', line, pos - offset];\n break;\n\n case CLOSE_CURLY:\n currentToken = ['}', '}', line, pos - offset];\n break;\n\n case COLON:\n currentToken = [':', ':', line, pos - offset];\n break;\n\n case SEMICOLON:\n currentToken = [';', ';', line, pos - offset];\n break;\n\n case OPEN_PARENTHESES:\n prev = buffer.length ? buffer.pop()[1] : '';\n n = css.charCodeAt(pos + 1);\n if (prev === 'url' && n !== SINGLE_QUOTE && n !== DOUBLE_QUOTE && n !== SPACE && n !== NEWLINE && n !== TAB && n !== FEED && n !== CR) {\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(')', next + 1);\n if (next === -1) {\n if (ignore) {\n next = pos;\n break;\n } else {\n unclosed('bracket');\n }\n }\n escapePos = next;\n while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n escapePos -= 1;\n escaped = !escaped;\n }\n } while (escaped);\n\n currentToken = ['brackets', css.slice(pos, next + 1), line, pos - offset, line, next - offset];\n\n pos = next;\n } else {\n next = css.indexOf(')', pos + 1);\n content = css.slice(pos, next + 1);\n\n if (next === -1 || RE_BAD_BRACKET.test(content)) {\n currentToken = ['(', '(', line, pos - offset];\n } else {\n currentToken = ['brackets', content, line, pos - offset, line, next - offset];\n pos = next;\n }\n }\n\n break;\n\n case CLOSE_PARENTHESES:\n currentToken = [')', ')', line, pos - offset];\n break;\n\n case SINGLE_QUOTE:\n case DOUBLE_QUOTE:\n quote = code === SINGLE_QUOTE ? '\\'' : '\"';\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(quote, next + 1);\n if (next === -1) {\n if (ignore) {\n next = pos + 1;\n break;\n } else {\n unclosed('string');\n }\n }\n escapePos = next;\n while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n escapePos -= 1;\n escaped = !escaped;\n }\n } while (escaped);\n\n content = css.slice(pos, next + 1);\n lines = content.split('\\n');\n last = lines.length - 1;\n\n if (last > 0) {\n nextLine = line + last;\n nextOffset = next - lines[last].length;\n } else {\n nextLine = line;\n nextOffset = offset;\n }\n\n currentToken = ['string', css.slice(pos, next + 1), line, pos - offset, nextLine, next - nextOffset];\n\n offset = nextOffset;\n line = nextLine;\n pos = next;\n break;\n\n case AT:\n RE_AT_END.lastIndex = pos + 1;\n RE_AT_END.test(css);\n if (RE_AT_END.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_AT_END.lastIndex - 2;\n }\n\n currentToken = ['at-word', css.slice(pos, next + 1), line, pos - offset, line, next - offset];\n\n pos = next;\n break;\n\n case BACKSLASH:\n next = pos;\n escape = true;\n while (css.charCodeAt(next + 1) === BACKSLASH) {\n next += 1;\n escape = !escape;\n }\n code = css.charCodeAt(next + 1);\n if (escape && code !== SLASH && code !== SPACE && code !== NEWLINE && code !== TAB && code !== CR && code !== FEED) {\n next += 1;\n if (RE_HEX_ESCAPE.test(css.charAt(next))) {\n while (RE_HEX_ESCAPE.test(css.charAt(next + 1))) {\n next += 1;\n }\n if (css.charCodeAt(next + 1) === SPACE) {\n next += 1;\n }\n }\n }\n\n currentToken = ['word', css.slice(pos, next + 1), line, pos - offset, line, next - offset];\n\n pos = next;\n break;\n\n default:\n if (code === SLASH && css.charCodeAt(pos + 1) === ASTERISK) {\n next = css.indexOf('*/', pos + 2) + 1;\n if (next === 0) {\n if (ignore) {\n next = css.length;\n } else {\n unclosed('comment');\n }\n }\n\n content = css.slice(pos, next + 1);\n lines = content.split('\\n');\n last = lines.length - 1;\n\n if (last > 0) {\n nextLine = line + last;\n nextOffset = next - lines[last].length;\n } else {\n nextLine = line;\n nextOffset = offset;\n }\n\n currentToken = ['comment', content, line, pos - offset, nextLine, next - nextOffset];\n\n offset = nextOffset;\n line = nextLine;\n pos = next;\n } else {\n RE_WORD_END.lastIndex = pos + 1;\n RE_WORD_END.test(css);\n if (RE_WORD_END.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_WORD_END.lastIndex - 2;\n }\n\n currentToken = ['word', css.slice(pos, next + 1), line, pos - offset, line, next - offset];\n\n buffer.push(currentToken);\n\n pos = next;\n }\n\n break;\n }\n\n pos++;\n return currentToken;\n }\n\n function back(token) {\n returned.push(token);\n }\n\n return {\n back: back,\n nextToken: nextToken,\n endOfFile: endOfFile\n };\n}\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRva2VuaXplLmVzNiJdLCJuYW1lcyI6WyJ0b2tlbml6ZXIiLCJTSU5HTEVfUVVPVEUiLCJET1VCTEVfUVVPVEUiLCJCQUNLU0xBU0giLCJTTEFTSCIsIk5FV0xJTkUiLCJTUEFDRSIsIkZFRUQiLCJUQUIiLCJDUiIsIk9QRU5fU1FVQVJFIiwiQ0xPU0VfU1FVQVJFIiwiT1BFTl9QQVJFTlRIRVNFUyIsIkNMT1NFX1BBUkVOVEhFU0VTIiwiT1BFTl9DVVJMWSIsIkNMT1NFX0NVUkxZIiwiU0VNSUNPTE9OIiwiQVNURVJJU0siLCJDT0xPTiIsIkFUIiwiUkVfQVRfRU5EIiwiUkVfV09SRF9FTkQiLCJSRV9CQURfQlJBQ0tFVCIsIlJFX0hFWF9FU0NBUEUiLCJpbnB1dCIsIm9wdGlvbnMiLCJjc3MiLCJ2YWx1ZU9mIiwiaWdub3JlIiwiaWdub3JlRXJyb3JzIiwiY29kZSIsIm5leHQiLCJxdW90ZSIsImxpbmVzIiwibGFzdCIsImNvbnRlbnQiLCJlc2NhcGUiLCJuZXh0TGluZSIsIm5leHRPZmZzZXQiLCJlc2NhcGVkIiwiZXNjYXBlUG9zIiwicHJldiIsIm4iLCJjdXJyZW50VG9rZW4iLCJsZW5ndGgiLCJvZmZzZXQiLCJsaW5lIiwicG9zIiwiYnVmZmVyIiwicmV0dXJuZWQiLCJ1bmNsb3NlZCIsIndoYXQiLCJlcnJvciIsImVuZE9mRmlsZSIsIm5leHRUb2tlbiIsInBvcCIsImNoYXJDb2RlQXQiLCJzbGljZSIsImluZGV4T2YiLCJ0ZXN0Iiwic3BsaXQiLCJsYXN0SW5kZXgiLCJjaGFyQXQiLCJwdXNoIiwiYmFjayIsInRva2VuIl0sIm1hcHBpbmdzIjoiOzs7a0JBeUJ3QkEsUztBQXpCeEIsSUFBTUMsaUJBQU47QUFDQSxJQUFNQyxpQkFBTjtBQUNBLElBQU1DLGNBQU47QUFDQSxJQUFNQyxVQUFOO0FBQ0EsSUFBTUMsWUFBTjtBQUNBLElBQU1DLFVBQU47QUFDQSxJQUFNQyxTQUFOO0FBQ0EsSUFBTUMsT0FBTjtBQUNBLElBQU1DLE9BQU47QUFDQSxJ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SUFBWDtBQUNBUix5QkFBYU8sTUFBYjtBQUNEOztBQUVERix5QkFBZSxDQUFDLFNBQUQsRUFBWVIsT0FBWixFQUNiVyxJQURhLEVBQ1BDLE1BQU1GLE1BREMsRUFFYlIsUUFGYSxFQUVITixPQUFPTyxVQUZKLENBQWY7O0FBS0FPLG1CQUFTUCxVQUFUO0FBQ0FRLGlCQUFPVCxRQUFQO0FBQ0FVLGdCQUFNaEIsSUFBTjtBQUNELFNBOUJELE1BOEJPO0FBQ0xWLHNCQUFZd0MsU0FBWixHQUF3QmQsTUFBTSxDQUE5QjtBQUNBMUIsc0JBQVlzQyxJQUFaLENBQWlCakMsR0FBakI7QUFDQSxjQUFJTCxZQUFZd0MsU0FBWixLQUEwQixDQUE5QixFQUFpQztBQUMvQjlCLG1CQUFPTCxJQUFJa0IsTUFBSixHQUFhLENBQXBCO0FBQ0QsV0FGRCxNQUVPO0FBQ0xiLG1CQUFPVixZQUFZd0MsU0FBWixHQUF3QixDQUEvQjtBQUNEOztBQUVEbEIseUJBQWUsQ0FBQyxNQUFELEVBQVNqQixJQUFJK0IsS0FBSixDQUFVVixHQUFWLEVBQWVoQixPQUFPLENBQXRCLENBQVQsRUFDYmUsSUFEYSxFQUNQQyxNQUFNRixNQURDLEVBRWJDLElBRmEsRUFFUGYsT0FBT2MsTUFGQSxDQUFmOztBQUtBRyxpQkFBT2UsSUFBUCxDQUFZcEIsWUFBWjs7QUFFQUksZ0JBQU1oQixJQUFOO0FBQ0Q7O0FBRUQ7QUE1UEo7O0FBK1BBZ0I7QUFDQSxXQUFPSixZQUFQO0FBQ0Q7O0FBRUQsV0FBU3FCLElBQVQsQ0FBZUMsS0FBZixFQUFzQjtBQUNwQmhCLGFBQVNjLElBQVQsQ0FBY0UsS0FBZDtBQUNEOztBQUVELFNBQU87QUFDTEQsY0FESztBQUVMVix3QkFGSztBQUdMRDtBQUhLLEdBQVA7QUFLRCIsImZpbGUiOiJ0b2tlbml6ZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IFNJTkdMRV9RVU9URSA9ICdcXCcnLmNoYXJDb2RlQXQoMClcbmNvbnN0IERPVUJMRV9RVU9URSA9ICdcIicuY2hhckNvZGVBdCgwKVxuY29uc3QgQkFDS1NMQVNIID0gJ1xcXFwnLmNoYXJDb2RlQXQoMClcbmNvbnN0IFNMQVNIID0gJy8nLmNoYXJDb2RlQXQoMClcbmNvbnN0IE5FV0xJTkUgPSAnXFxuJy5jaGFyQ29kZUF0KDApXG5jb25zdCBTUEFDRSA9ICcgJy5jaGFyQ29kZUF0KDApXG5jb25zdCBGRUVEID0gJ1xcZicuY2hhckNvZGVBdCgwKVxuY29uc3QgVEFCID0gJ1xcdCcuY2hhckNvZGVBdCgwKVxuY29uc3QgQ1IgPSAnXFxyJy5jaGFyQ29kZUF0KDApXG5jb25zdCBPUEVOX1NRVUFSRSA9ICdbJy5jaGFyQ29kZUF0KDApXG5jb25zdCBDTE9TRV9TUVVBUkUgPSAnXScuY2hhckNvZGVBdCgwKVxuY29uc3QgT1BFTl9QQVJFTlRIRVNFUyA9ICcoJy5jaGFyQ29kZUF0KDApXG5jb25zdCBDTE9TRV9QQVJFTlRIRVNFUyA9ICcpJy5jaGFyQ29kZUF0KDApXG5jb25zdCBPUEVOX0NVUkxZID0gJ3snLmNoYXJDb2RlQXQoMClcbmNvbnN0IENMT1NFX0NVUkxZID0gJ30nLmNoYXJDb2RlQXQoMClcbmNvbnN0IFNFTUlDT0xPTiA9ICc7Jy5jaGFyQ29kZUF0KDApXG5jb25zdCBBU1RFUklTSyA9ICcqJy5jaGFyQ29kZUF0KDApXG5jb25zdCBDT0xPTiA9ICc6Jy5jaGFyQ29kZUF0KDApXG5jb25zdCBBVCA9ICdAJy5jaGFyQ29kZUF0KDApXG5cbmNvbnN0IFJFX0FUX0VORCA9IC9bIFxcblxcdFxcclxcZnt9KCknXCJcXFxcOy9bXFxdI10vZ1xuY29uc3QgUkVfV09SRF9FTkQgPSAvWyBcXG5cXHRcXHJcXGYoKXt9OjtAISdcIlxcXFxcXF1bI118XFwvKD89XFwqKS9nXG5jb25zdCBSRV9CQURfQlJBQ0tFVCA9IC8uW1xcXFwvKFwiJ1xcbl0vXG5jb25zdCBSRV9IRVhfRVNDQVBFID0gL1thLWYwLTldL2lcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdG9rZW5pemVyIChpbnB1dCwgb3B0aW9ucyA9IHt9KSB7XG4gIGxldCBjc3MgPSBpbnB1dC5jc3MudmFsdWVPZigpXG4gIGxldCBpZ25vcmUgPSBvcHRpb25zLmlnbm9yZUVycm9yc1xuXG4gIGxldCBjb2RlLCBuZXh0LCBxdW90ZSwgbGluZXMsIGxhc3QsIGNvbnRlbnQsIGVzY2FwZVxuICBsZXQgbmV4dExpbmUsIG5leHRPZmZzZXQsIGVzY2FwZWQsIGVzY2FwZVBvcywgcHJldiwgbiwgY3VycmVudFRva2VuXG5cbiAgbGV0IGxlbmd0aCA9IGNzcy5sZW5ndGhcbiAgbGV0IG9mZnNldCA9IC0xXG4gIGxldCBsaW5lID0gMVxuICBsZXQgcG9zID0gMFxuICBsZXQgYnVmZmVyID0gW11cbiAgbGV0IHJldHVybmVkID0gW11cblxuICBmdW5jdGlvbiB1bmNsb3NlZCAod2hhdCkge1xuICAgIHRocm93IGlucHV0LmVycm9yKCdVbmNsb3NlZCAnICsgd2hhdCwgbGluZSwgcG9zIC0gb2Zmc2V0KVxuICB9XG5cbiAgZnVuY3Rpb24gZW5kT2ZGaWxlICgpIHtcbiAgICByZXR1cm4gcmV0dXJuZWQubGVuZ3RoID09PSAwICYmIHBvcyA+PSBsZW5ndGhcbiAgfVxuXG4gIGZ1bmN0aW9uIG5leHRUb2tlbiAoKSB7XG4gICAgaWYgKHJldHVybmVkLmxlbmd0aCkgcmV0dXJuIHJldHVybmVkLnBvcCgpXG4gICAgaWYgKHBvcyA+PSBsZW5ndGgpIHJldHVyblxuXG4gICAgY29kZSA9IGNzcy5jaGFyQ29kZUF0KHBvcylcbiAgICBpZiAoXG4gICAgICBjb2RlID09PSBORVdMSU5FIHx8IGNvZGUgPT09IEZFRUQgfHxcbiAgICAgIChjb2RlID09PSBDUiAmJiBjc3MuY2hhckNvZGVBdChwb3MgKyAxKSAhPT0gTkVXTElORSlcbiAgICApIHtcbiAgICAgIG9mZnNldCA9IHBvc1xuICAgICAgbGluZSArPSAxXG4gICAgfVxuXG4gICAgc3dpdGNoIChjb2RlKSB7XG4gICAgICBjYXNlIE5FV0xJTkU6XG4gICAgICBjYXNlIFNQQUNFOlxuICAgICAgY2FzZSBUQUI6XG4gICAgICBjYXNlIENSOlxuICAgICAgY2FzZSBGRUVEOlxuICAgICAgICBuZXh0ID0gcG9zXG4gICAgICAgIGRvIHtcbiAgICAgICAgICBuZXh0ICs9IDFcbiAgICAgICAgICBjb2RlID0gY3NzLmNoYXJDb2RlQXQobmV4dClcbiAgICAgICAgICBpZiAoY29kZSA9PT0gTkVXTElORSkge1xuICAgICAgICAgICAgb2Zmc2V0ID0gbmV4dFxuICAgICAgICAgICAgbGluZSArPSAxXG4gICAgICAgICAgfVxuICAgICAgICB9IHdoaWxlIChcbiAgICAgICAgICBjb2RlID09PSBTUEFDRSB8fFxuICAgICAgICAgIGNvZGUgPT09IE5FV0xJTkUgfHxcbiAgICAgICAgICBjb2RlID09PSBUQUIgfHxcbiAgICAgICAgICBjb2RlID09PSBDUiB8fFxuICAgICAgICAgIGNvZGUgPT09IEZFRURcbiAgICAgICAgKVxuXG4gICAgICAgIGN1cnJlbnRUb2tlbiA9IFsnc3BhY2UnLCBjc3Muc2xpY2UocG9zLCBuZXh0KV1cbiAgICAgICAgcG9zID0gbmV4dCAtIDFcbiAgICAgICAgYnJlYWtcblxuICAgICAgY2FzZSBPUEVOX1NRVUFSRTpcbiAgICAgICAgY3VycmVudFRva2VuID0gWydbJywgJ1snLCBsaW5lLCBwb3MgLSBvZmZzZXRdXG4gICAgICAgIGJyZWFrXG5cbiAgICAgIGNhc2UgQ0xPU0VfU1FVQVJFOlxuICAgICAgICBjdXJyZW50VG9rZW4gPSBbJ10nLCAnXScsIGxpbmUsIHBvcyAtIG9mZnNldF1cbiAgICAgICAgYnJlYWtcblxuICAgICAgY2FzZSBPUEVOX0NVUkxZOlxuICAgICAgICBjdXJyZW50VG9rZW4gPSBbJ3snLCAneycsIGxpbmUsIHBvcyAtIG9mZnNldF1cbiAgICAgICAgYnJlYWtcblxuICAgICAgY2FzZSBDTE9TRV9DVVJMWTpcbiAgICAgICAgY3VycmVudFRva2VuID0gWyd9JywgJ30nLCBsaW5lLCBwb3MgLSBvZmZzZXRdXG4gICAgICAgIGJyZWFrXG5cbiAgICAgIGNhc2UgQ09MT046XG4gICAgICAgIGN1cnJlbnRUb2tlbiA9IFsnOicsICc6JywgbGluZSwgcG9zIC0gb2Zmc2V0XVxuICAgICAgICBicmVha1xuXG4gICAgICBjYXNlIFNFTUlDT0xPTjpcbiAgICAgICAgY3VycmVudFRva2VuID0gWyc7JywgJzsnLCBsaW5lLCBwb3MgLSBvZmZzZXRdXG4gICAgICAgIGJyZWFrXG5cbiAgICAgIGNhc2UgT1BFTl9QQVJFTlRIRVNFUzpcbiAgICAgICAgcHJldiA9IGJ1ZmZlci5sZW5ndGggPyBidWZmZXIucG9wKClbMV0gOiAnJ1xuICAgICAgICBuID0gY3NzLmNoYXJDb2RlQXQocG9zICsgMSlcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHByZXYgPT09ICd1cmwnICYmXG4gICAgICAgICAgbiAhPT0gU0lOR0xFX1FVT1RFICYmIG4gIT09IERPVUJMRV9RVU9URSAmJlxuICAgICAgICAgIG4gIT09IFNQQUNFICYmIG4gIT09IE5FV0xJTkUgJiYgbiAhPT0gVEFCICYmXG4gICAgICAgICAgbiAhPT0gRkVFRCAmJiBuICE9PSBDUlxuICAgICAgICApIHtcbiAgICAgICAgICBuZXh0ID0gcG9zXG4gICAgICAgICAgZG8ge1xuICAgICAgICAgICAgZXNjYXBlZCA9IGZhbHNlXG4gICAgICAgICAgICBuZXh0ID0gY3NzLmluZGV4T2YoJyknLCBuZXh0ICsgMSlcbiAgICAgICAgICAgIGlmIChuZXh0ID09PSAtMSkge1xuICAgICAgICAgICAgICBpZiAoaWdub3JlKSB7XG4gICAgICAgICAgICAgICAgbmV4dCA9IHBvc1xuICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdW5jbG9zZWQoJ2JyYWNrZXQnKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlc2NhcGVQb3MgPSBuZXh0XG4gICAgICAgICAgICB3aGlsZSAoY3NzLmNoYXJDb2RlQXQoZXNjYXBlUG9zIC0gMSkgPT09IEJBQ0tTTEFTSCkge1xuICAgICAgICAgICAgICBlc2NhcGVQb3MgLT0gMVxuICAgICAgICAgICAgICBlc2NhcGVkID0gIWVzY2FwZWRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IHdoaWxlIChlc2NhcGVkKVxuXG4gICAgICAgICAgY3VycmVudFRva2VuID0gWydicmFja2V0cycsIGNzcy5zbGljZShwb3MsIG5leHQgKyAxKSxcbiAgICAgICAgICAgIGxpbmUsIHBvcyAtIG9mZnNldCxcbiAgICAgICAgICAgIGxpbmUsIG5leHQgLSBvZmZzZXRcbiAgICAgICAgICBdXG5cbiAgICAgICAgICBwb3MgPSBuZXh0XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbmV4dCA9IGNzcy5pbmRleE9mKCcpJywgcG9zICsgMSlcbiAgICAgICAgICBjb250ZW50ID0gY3NzLnNsaWNlKHBvcywgbmV4dCArIDEpXG5cbiAgICAgICAgICBpZiAobmV4dCA9PT0gLTEgfHwgUkVfQkFEX0JSQUNLRVQudGVzdChjb250ZW50KSkge1xuICAgICAgICAgICAgY3VycmVudFRva2VuID0gWycoJywgJygnLCBsaW5lLCBwb3MgLSBvZmZzZXRdXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGN1cnJlbnRUb2tlbiA9IFsnYnJhY2tldHMnLCBjb250ZW50LFxuICAgICAgICAgICAgICBsaW5lLCBwb3MgLSBvZmZzZXQsXG4gICAgICAgICAgICAgIGxpbmUsIG5leHQgLSBvZmZzZXRcbiAgICAgICAgICAgIF1cbiAgICAgICAgICAgIHBvcyA9IG5leHRcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBicmVha1xuXG4gICAgICBjYXNlIENMT1NFX1BBUkVOVEhFU0VTOlxuICAgICAgICBjdXJyZW50VG9rZW4gPSBbJyknLCAnKScsIGxpbmUsIHBvcyAtIG9mZnNldF1cbiAgICAgICAgYnJlYWtcblxuICAgICAgY2FzZSBTSU5HTEVfUVVPVEU6XG4gICAgICBjYXNlIERPVUJMRV9RVU9URTpcbiAgICAgICAgcXVvdGUgPSBjb2RlID09PSBTSU5HTEVfUVVPVEUgPyAnXFwnJyA6ICdcIidcbiAgICAgICAgbmV4dCA9IHBvc1xuICAgICAgICBkbyB7XG4gICAgICAgICAgZXNjYXBlZCA9IGZhbHNlXG4gICAgICAgICAgbmV4dCA9IGNzcy5pbmRleE9mKHF1b3RlLCBuZXh0ICsgMSlcbiAgICAgICAgICBpZiAobmV4dCA9PT0gLTEpIHtcbiAgICAgICAgICAgIGlmIChpZ25vcmUpIHtcbiAgICAgICAgICAgICAgbmV4dCA9IHBvcyArIDFcbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHVuY2xvc2VkKCdzdHJpbmcnKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBlc2NhcGVQb3MgPSBuZXh0XG4gICAgICAgICAgd2hpbGUgKGNzcy5jaGFyQ29kZUF0KGVzY2FwZVBvcyAtIDEpID09PSBCQUNLU0xBU0gpIHtcbiAgICAgICAgICAgIGVzY2FwZVBvcyAtPSAxXG4gICAgICAgICAgICBlc2NhcGVkID0gIWVzY2FwZWRcbiAgICAgICAgICB9XG4gICAgICAgIH0gd2hpbGUgKGVzY2FwZWQpXG5cbiAgICAgICAgY29udGVudCA9IGNzcy5zbGljZShwb3MsIG5leHQgKyAxKVxuICAgICAgICBsaW5lcyA9IGNvbnRlbnQuc3BsaXQoJ1xcbicpXG4gICAgICAgIGxhc3QgPSBsaW5lcy5sZW5ndGggLSAxXG5cbiAgICAgICAgaWYgKGxhc3QgPiAwKSB7XG4gICAgICAgICAgbmV4dExpbmUgPSBsaW5lICsgbGFzdFxuICAgICAgICAgIG5leHRPZmZzZXQgPSBuZXh0IC0gbGluZXNbbGFzdF0ubGVuZ3RoXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbmV4dExpbmUgPSBsaW5lXG4gICAgICAgICAgbmV4dE9mZnNldCA9IG9mZnNldFxuICAgICAgICB9XG5cbiAgICAgICAgY3VycmVudFRva2VuID0gWydzdHJpbmcnLCBjc3Muc2xpY2UocG9zLCBuZXh0ICsgMSksXG4gICAgICAgICAgbGluZSwgcG9zIC0gb2Zmc2V0LFxuICAgICAgICAgIG5leHRMaW5lLCBuZXh0IC0gbmV4dE9mZnNldFxuICAgICAgICBdXG5cbiAgICAgICAgb2Zmc2V0ID0gbmV4dE9mZnNldFxuICAgICAgICBsaW5lID0gbmV4dExpbmVcbiAgICAgICAgcG9zID0gbmV4dFxuICAgICAgICBicmVha1xuXG4gICAgICBjYXNlIEFUOlxuICAgICAgICBSRV9BVF9FTkQubGFzdEluZGV4ID0gcG9zICsgMVxuICAgICAgICBSRV9BVF9FTkQudGVzdChjc3MpXG4gICAgICAgIGlmIChSRV9BVF9FTkQubGFzdEluZGV4ID09PSAwKSB7XG4gICAgICAgICAgbmV4dCA9IGNzcy5sZW5ndGggLSAxXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbmV4dCA9IFJFX0FUX0VORC5sYXN0SW5kZXggLSAyXG4gICAgICAgIH1cblxuICAgICAgICBjdXJyZW50VG9rZW4gPSBbJ2F0LXdvcmQnLCBjc3Muc2xpY2UocG9zLCBuZXh0ICsgMSksXG4gICAgICAgICAgbGluZSwgcG9zIC0gb2Zmc2V0LFxuICAgICAgICAgIGxpbmUsIG5leHQgLSBvZmZzZXRcbiAgICAgICAgXVxuXG4gICAgICAgIHBvcyA9IG5leHRcbiAgICAgICAgYnJlYWtcblxuICAgICAgY2FzZSBCQUNLU0xBU0g6XG4gICAgICAgIG5leHQgPSBwb3NcbiAgICAgICAgZXNjYXBlID0gdHJ1ZVxuICAgICAgICB3aGlsZSAoY3NzLmNoYXJDb2RlQXQobmV4dCArIDEpID09PSBCQUNLU0xBU0gpIHtcbiAgICAgICAgICBuZXh0ICs9IDFcbiAgICAgICAgICBlc2NhcGUgPSAhZXNjYXBlXG4gICAgICAgIH1cbiAgICAgICAgY29kZSA9IGNzcy5jaGFyQ29kZUF0KG5leHQgKyAxKVxuICAgICAgICBpZiAoXG4gICAgICAgICAgZXNjYXBlICYmXG4gICAgICAgICAgY29kZSAhPT0gU0xBU0ggJiZcbiAgICAgICAgICBjb2RlICE9PSBTUEFDRSAmJlxuICAgICAgICAgIGNvZGUgIT09IE5FV0xJTkUgJiZcbiAgICAgICAgICBjb2RlICE9PSBUQUIgJiZcbiAgICAgICAgICBjb2RlICE9PSBDUiAmJlxuICAgICAgICAgIGNvZGUgIT09IEZFRURcbiAgICAgICAgKSB7XG4gICAgICAgICAgbmV4dCArPSAxXG4gICAgICAgICAgaWYgKFJFX0hFWF9FU0NBUEUudGVzdChjc3MuY2hhckF0KG5leHQpKSkge1xuICAgICAgICAgICAgd2hpbGUgKFJFX0hFWF9FU0NBUEUudGVzdChjc3MuY2hhckF0KG5leHQgKyAxKSkpIHtcbiAgICAgICAgICAgICAgbmV4dCArPSAxXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY3NzLmNoYXJDb2RlQXQobmV4dCArIDEpID09PSBTUEFDRSkge1xuICAgICAgICAgICAgICBuZXh0ICs9IDFcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjdXJyZW50VG9rZW4gPSBbJ3dvcmQnLCBjc3Muc2xpY2UocG9zLCBuZXh0ICsgMSksXG4gICAgICAgICAgbGluZSwgcG9zIC0gb2Zmc2V0LFxuICAgICAgICAgIGxpbmUsIG5leHQgLSBvZmZzZXRcbiAgICAgICAgXVxuXG4gICAgICAgIHBvcyA9IG5leHRcbiAgICAgICAgYnJlYWtcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYgKGNvZGUgPT09IFNMQVNIICYmIGNzcy5jaGFyQ29kZUF0KHBvcyArIDEpID09PSBBU1RFUklTSykge1xuICAgICAgICAgIG5leHQgPSBjc3MuaW5kZXhPZignKi8nLCBwb3MgKyAyKSArIDFcbiAgICAgICAgICBpZiAobmV4dCA9PT0gMCkge1xuICAgICAgICAgICAgaWYgKGlnbm9yZSkge1xuICAgICAgICAgICAgICBuZXh0ID0gY3NzLmxlbmd0aFxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdW5jbG9zZWQoJ2NvbW1lbnQnKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnRlbnQgPSBjc3Muc2xpY2UocG9zLCBuZXh0ICsgMSlcbiAgICAgICAgICBsaW5lcyA9IGNvbnRlbnQuc3BsaXQoJ1xcbicpXG4gICAgICAgICAgbGFzdCA9IGxpbmVzLmxlbmd0aCAtIDFcblxuICAgICAgICAgIGlmIChsYXN0ID4gMCkge1xuICAgICAgICAgICAgbmV4dExpbmUgPSBsaW5lICsgbGFzdFxuICAgICAgICAgICAgbmV4dE9mZnNldCA9IG5leHQgLSBsaW5lc1tsYXN0XS5sZW5ndGhcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbmV4dExpbmUgPSBsaW5lXG4gICAgICAgICAgICBuZXh0T2Zmc2V0ID0gb2Zmc2V0XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY3VycmVudFRva2VuID0gWydjb21tZW50JywgY29udGVudCxcbiAgICAgICAgICAgIGxpbmUsIHBvcyAtIG9mZnNldCxcbiAgICAgICAgICAgIG5leHRMaW5lLCBuZXh0IC0gbmV4dE9mZnNldFxuICAgICAgICAgIF1cblxuICAgICAgICAgIG9mZnNldCA9IG5leHRPZmZzZXRcbiAgICAgICAgICBsaW5lID0gbmV4dExpbmVcbiAgICAgICAgICBwb3MgPSBuZXh0XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgUkVfV09SRF9FTkQubGFzdEluZGV4ID0gcG9zICsgMVxuICAgICAgICAgIFJFX1dPUkRfRU5ELnRlc3QoY3NzKVxuICAgICAgICAgIGlmIChSRV9XT1JEX0VORC5sYXN0SW5kZXggPT09IDApIHtcbiAgICAgICAgICAgIG5leHQgPSBjc3MubGVuZ3RoIC0gMVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBuZXh0ID0gUkVfV09SRF9FTkQubGFzdEluZGV4IC0gMlxuICAgICAgICAgIH1cblxuICAgICAgICAgIGN1cnJlbnRUb2tlbiA9IFsnd29yZCcsIGNzcy5zbGljZShwb3MsIG5leHQgKyAxKSxcbiAgICAgICAgICAgIGxpbmUsIHBvcyAtIG9mZnNldCxcbiAgICAgICAgICAgIGxpbmUsIG5leHQgLSBvZmZzZXRcbiAgICAgICAgICBdXG5cbiAgICAgICAgICBidWZmZXIucHVzaChjdXJyZW50VG9rZW4pXG5cbiAgICAgICAgICBwb3MgPSBuZXh0XG4gICAgICAgIH1cblxuICAgICAgICBicmVha1xuICAgIH1cblxuICAgIHBvcysrXG4gICAgcmV0dXJuIGN1cnJlbnRUb2tlblxuICB9XG5cbiAgZnVuY3Rpb24gYmFjayAodG9rZW4pIHtcbiAgICByZXR1cm5lZC5wdXNoKHRva2VuKVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBiYWNrLFxuICAgIG5leHRUb2tlbixcbiAgICBlbmRPZkZpbGVcbiAgfVxufVxuIl19\n","'use strict';\n\nexports.__esModule = true;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _cssSyntaxError = require('./css-syntax-error');\n\nvar _cssSyntaxError2 = _interopRequireDefault(_cssSyntaxError);\n\nvar _previousMap = require('./previous-map');\n\nvar _previousMap2 = _interopRequireDefault(_previousMap);\n\nvar _path = require('path');\n\nvar _path2 = _interopRequireDefault(_path);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar sequence = 0;\n\n/**\n * Represents the source CSS.\n *\n * @example\n * const root = postcss.parse(css, { from: file })\n * const input = root.source.input\n */\n\nvar Input = function () {\n /**\n * @param {string} css Input CSS source.\n * @param {object} [opts] {@link Processor#process} options.\n */\n function Input(css) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Input);\n\n if (css === null || (typeof css === 'undefined' ? 'undefined' : _typeof(css)) === 'object' && !css.toString) {\n throw new Error('PostCSS received ' + css + ' instead of CSS string');\n }\n\n /**\n * Input CSS source\n *\n * @type {string}\n *\n * @example\n * const input = postcss.parse('a{}', { from: file }).input\n * input.css //=> \"a{}\"\n */\n this.css = css.toString();\n\n if (this.css[0] === '\\uFEFF' || this.css[0] === '\\uFFFE') {\n this.css = this.css.slice(1);\n }\n\n if (opts.from) {\n if (/^\\w+:\\/\\//.test(opts.from)) {\n /**\n * The absolute path to the CSS source file defined\n * with the `from` option.\n *\n * @type {string}\n *\n * @example\n * const root = postcss.parse(css, { from: 'a.css' })\n * root.source.input.file //=> '/home/ai/a.css'\n */\n this.file = opts.from;\n } else {\n this.file = _path2.default.resolve(opts.from);\n }\n }\n\n var map = new _previousMap2.default(this.css, opts);\n if (map.text) {\n /**\n * The input source map passed from a compilation step before PostCSS\n * (for example, from Sass compiler).\n *\n * @type {PreviousMap}\n *\n * @example\n * root.source.input.map.consumer().sources //=> ['a.sass']\n */\n this.map = map;\n var file = map.consumer().file;\n if (!this.file && file) this.file = this.mapResolve(file);\n }\n\n if (!this.file) {\n sequence += 1;\n /**\n * The unique ID of the CSS source. It will be created if `from` option\n * is not provided (because PostCSS does not know the file path).\n *\n * @type {string}\n *\n * @example\n * const root = postcss.parse(css)\n * root.source.input.file //=> undefined\n * root.source.input.id //=> \"\"\n */\n this.id = '';\n }\n if (this.map) this.map.file = this.from;\n }\n\n Input.prototype.error = function error(message, line, column) {\n var opts = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n var result = void 0;\n var origin = this.origin(line, column);\n if (origin) {\n result = new _cssSyntaxError2.default(message, origin.line, origin.column, origin.source, origin.file, opts.plugin);\n } else {\n result = new _cssSyntaxError2.default(message, line, column, this.css, this.file, opts.plugin);\n }\n\n result.input = { line: line, column: column, source: this.css };\n if (this.file) result.input.file = this.file;\n\n return result;\n };\n\n /**\n * Reads the input source map and returns a symbol position\n * in the input source (e.g., in a Sass file that was compiled\n * to CSS before being passed to PostCSS).\n *\n * @param {number} line Line in input CSS.\n * @param {number} column Column in input CSS.\n *\n * @return {filePosition} Position in input source.\n *\n * @example\n * root.source.input.origin(1, 1) //=> { file: 'a.css', line: 3, column: 1 }\n */\n\n\n Input.prototype.origin = function origin(line, column) {\n if (!this.map) return false;\n var consumer = this.map.consumer();\n\n var from = consumer.originalPositionFor({ line: line, column: column });\n if (!from.source) return false;\n\n var result = {\n file: this.mapResolve(from.source),\n line: from.line,\n column: from.column\n };\n\n var source = consumer.sourceContentFor(from.source);\n if (source) result.source = source;\n\n return result;\n };\n\n Input.prototype.mapResolve = function mapResolve(file) {\n if (/^\\w+:\\/\\//.test(file)) {\n return file;\n } else {\n return _path2.default.resolve(this.map.consumer().sourceRoot || '.', file);\n }\n };\n\n /**\n * The CSS source identifier. Contains {@link Input#file} if the user\n * set the `from` option, or {@link Input#id} if they did not.\n *\n * @type {string}\n *\n * @example\n * const root = postcss.parse(css, { from: 'a.css' })\n * root.source.input.from //=> \"/home/ai/a.css\"\n *\n * const root = postcss.parse(css)\n * root.source.input.from //=> \"\"\n */\n\n\n _createClass(Input, [{\n key: 'from',\n get: function get() {\n return this.file || this.id;\n }\n }]);\n\n return Input;\n}();\n\nexports.default = Input;\n\n/**\n * @typedef {object} filePosition\n * @property {string} file Path to file.\n * @property {number} line Source line in file.\n * @property {number} column Source column in file.\n */\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImlucHV0LmVzNiJdLCJuYW1lcyI6WyJzZXF1ZW5jZSIsIklucHV0IiwiY3NzIiwib3B0cyIsInRvU3RyaW5nIiwiRXJyb3IiLCJzbGljZSIsImZyb20iLCJ0ZXN0IiwiZmlsZSIsInBhdGgiLCJyZXNvbHZlIiwibWFwIiwiUHJldmlvdXNNYXAiLCJ0ZXh0IiwiY29uc3VtZXIiLCJtYXBSZXNvbHZlIiwiaWQiLCJlcnJvciIsIm1lc3NhZ2UiLCJsaW5lIiwiY29sdW1uIiwicmVzdWx0Iiwib3JpZ2luIiwiQ3NzU3ludGF4RXJyb3IiLCJzb3VyY2UiLCJwbHVnaW4iLCJpbnB1dCIsIm9yaWdpbmFsUG9zaXRpb25Gb3IiLCJzb3VyY2VDb250ZW50Rm9yIiwic291cmNlUm9vdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTs7OztBQUNBOzs7O0FBRUE7Ozs7Ozs7O0FBRUEsSUFBSUEsV0FBVyxDQUFmOztBQUVBOzs7Ozs7OztJQU9NQyxLO0FBQ0o7Ozs7QUFJQSxpQkFBYUMsR0FBYixFQUE4QjtBQUFBLFFBQVpDLElBQVksdUVBQUwsRUFBSzs7QUFBQTs7QUFDNUIsUUFBSUQsUUFBUSxJQUFSLElBQWlCLFFBQU9BLEdBQVAseUNBQU9BLEdBQVAsT0FBZSxRQUFmLElBQTJCLENBQUNBLElBQUlFLFFBQXJELEVBQWdFO0FBQzlELFlBQU0sSUFBSUMsS0FBSix1QkFBK0JILEdBQS9CLDRCQUFOO0FBQ0Q7O0FBRUQ7Ozs7Ozs7OztBQVNBLFNBQUtBLEdBQUwsR0FBV0EsSUFBSUUsUUFBSixFQUFYOztBQUVBLFFBQUksS0FBS0YsR0FBTCxDQUFTLENBQVQsTUFBZ0IsUUFBaEIsSUFBNEIsS0FBS0EsR0FBTCxDQUFTLENBQVQsTUFBZ0IsUUFBaEQsRUFBMEQ7QUFDeEQsV0FBS0EsR0FBTCxHQUFXLEtBQUtBLEdBQUwsQ0FBU0ksS0FBVCxDQUFlLENBQWYsQ0FBWDtBQUNEOztBQUVELFFBQUlILEtBQUtJLElBQVQsRUFBZTtBQUNiLFVBQUksWUFBWUMsSUFBWixDQUFp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QUVPO0FBQ0wsYUFBT0MsZUFBS0MsT0FBTCxDQUFhLEtBQUtDLEdBQUwsQ0FBU0csUUFBVCxHQUFvQmUsVUFBcEIsSUFBa0MsR0FBL0MsRUFBb0RyQixJQUFwRCxDQUFQO0FBQ0Q7QUFDRixHOztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozt3QkFhWTtBQUNWLGFBQU8sS0FBS0EsSUFBTCxJQUFhLEtBQUtRLEVBQXpCO0FBQ0Q7Ozs7OztrQkFHWWhCLEs7O0FBRWYiLCJmaWxlIjoiaW5wdXQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQ3NzU3ludGF4RXJyb3IgZnJvbSAnLi9jc3Mtc3ludGF4LWVycm9yJ1xuaW1wb3J0IFByZXZpb3VzTWFwIGZyb20gJy4vcHJldmlvdXMtbWFwJ1xuXG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJ1xuXG5sZXQgc2VxdWVuY2UgPSAwXG5cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgc291cmNlIENTUy5cbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3Qgcm9vdCAgPSBwb3N0Y3NzLnBhcnNlKGNzcywgeyBmcm9tOiBmaWxlIH0pXG4gKiBjb25zdCBpbnB1dCA9IHJvb3Quc291cmNlLmlucHV0XG4gKi9cbmNsYXNzIElucHV0IHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjc3MgICAgSW5wdXQgQ1NTIHNvdXJjZS5cbiAgICogQHBhcmFtIHtvYmplY3R9IFtvcHRzXSB7QGxpbmsgUHJvY2Vzc29yI3Byb2Nlc3N9IG9wdGlvbnMuXG4gICAqL1xuICBjb25zdHJ1Y3RvciAoY3NzLCBvcHRzID0geyB9KSB7XG4gICAgaWYgKGNzcyA9PT0gbnVsbCB8fCAodHlwZW9mIGNzcyA9PT0gJ29iamVjdCcgJiYgIWNzcy50b1N0cmluZykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgUG9zdENTUyByZWNlaXZlZCAkeyBjc3MgfSBpbnN0ZWFkIG9mIENTUyBzdHJpbmdgKVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIElucHV0IENTUyBzb3VyY2VcbiAgICAgKlxuICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGNvbnN0IGlucHV0ID0gcG9zdGNzcy5wYXJzZSgnYXt9JywgeyBmcm9tOiBmaWxlIH0pLmlucHV0XG4gICAgICogaW5wdXQuY3NzIC8vPT4gXCJhe31cIlxuICAgICAqL1xuICAgIHRoaXMuY3NzID0gY3NzLnRvU3RyaW5nKClcblxuICAgIGlmICh0aGlzLmNzc1swXSA9PT0gJ1xcdUZFRkYnIHx8IHRoaXMuY3NzWzBdID09PSAnXFx1RkZGRScpIHtcbiAgICAgIHRoaXMuY3NzID0gdGhpcy5jc3Muc2xpY2UoMSlcbiAgICB9XG5cbiAgICBpZiAob3B0cy5mcm9tKSB7XG4gICAgICBpZiAoL15cXHcrOlxcL1xcLy8udGVzdChvcHRzLmZyb20pKSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUaGUgYWJzb2x1dGUgcGF0aCB0byB0aGUgQ1NTIHNvdXJjZSBmaWxlIGRlZmluZWRcbiAgICAgICAgICogd2l0aCB0aGUgYGZyb21gIG9wdGlvbi5cbiAgICAgICAgICpcbiAgICAgICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgICAgICpcbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICogY29uc3Qgcm9vdCA9IHBvc3Rjc3MucGFyc2UoY3NzLCB7IGZyb206ICdhLmNzcycgfSlcbiAgICAgICAgICogcm9vdC5zb3VyY2UuaW5wdXQuZmlsZSAvLz0+ICcvaG9tZS9haS9hLmNzcydcbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuZmlsZSA9IG9wdHMuZnJvbVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5maWxlID0gcGF0aC5yZXNvbHZlKG9wdHMuZnJvbSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgbWFwID0gbmV3IFByZXZpb3VzTWFwKHRoaXMuY3NzLCBvcHRzKVxuICAgIGlmIChtYXAudGV4dCkge1xuICAgICAgLyoqXG4gICAgICAgKiBUaGUgaW5wdXQgc291cmNlIG1hcCBwYXNzZWQgZnJvbSBhIGNvbXBpbGF0aW9uIHN0ZXAgYmVmb3JlIFBvc3RDU1NcbiAgICAgICAqIChmb3IgZXhhbXBsZSwgZnJvbSBTYXNzIGNvbXBpbGVyKS5cbiAgICAgICAqXG4gICAgICAgKiBAdHlwZSB7UHJldmlvdXNNYXB9XG4gICAgICAgKlxuICAgICAgICogQGV4YW1wbGVcbiAgICAgICAqIHJvb3Quc291cmNlLmlucHV0Lm1hcC5jb25zdW1lcigpLnNvdXJjZXMgLy89PiBbJ2Euc2FzcyddXG4gICAgICAgKi9cbiAgICAgIHRoaXMubWFwID0gbWFwXG4gICAgICBsZXQgZmlsZSA9IG1hcC5jb25zdW1lcigpLmZpbGVcbiAgICAgIGlmICghdGhpcy5maWxlICYmIGZpbGUpIHRoaXMuZmlsZSA9IHRoaXMubWFwUmVzb2x2ZShmaWxlKVxuICAgIH1cblxuICAgIGlmICghdGhpcy5maWxlKSB7XG4gICAgICBzZXF1ZW5jZSArPSAxXG4gICAgICAvKipcbiAgICAgICAqIFRoZSB1bmlxdWUgSUQgb2YgdGhlIENTUyBzb3VyY2UuIEl0IHdpbGwgYmUgY3JlYXRlZCBpZiBgZnJvbWAgb3B0aW9uXG4gICAgICAgKiBpcyBub3QgcHJvdmlkZWQgKGJlY2F1c2UgUG9zdENTUyBkb2VzIG5vdCBrbm93IHRoZSBmaWxlIHBhdGgpLlxuICAgICAgICpcbiAgICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICAgKlxuICAgICAgICogQGV4YW1wbGVcbiAgICAgICAqIGNvbnN0IHJvb3QgPSBwb3N0Y3NzLnBhcnNlKGNzcylcbiAgICAgICAqIHJvb3Quc291cmNlLmlucHV0LmZpbGUgLy89PiB1bmRlZmluZWRcbiAgICAgICAqIHJvb3Quc291cmNlLmlucHV0LmlkICAgLy89PiBcIjxpbnB1dCBjc3MgMT5cIlxuICAgICAgICovXG4gICAgICB0aGlzLmlkID0gJzxpbnB1dCBjc3MgJyArIHNlcXVlbmNlICsgJz4nXG4gICAgfVxuICAgIGlmICh0aGlzLm1hcCkgdGhpcy5tYXAuZmlsZSA9IHRoaXMuZnJvbVxuICB9XG5cbiAgZXJyb3IgKG1lc3NhZ2UsIGxpbmUsIGNvbHVtbiwgb3B0cyA9IHsgfSkge1xuICAgIGxldCByZXN1bHRcbiAgICBsZXQgb3JpZ2luID0gdGhpcy5vcmlnaW4obGluZSwgY29sdW1uKVxuICAgIGlmIChvcmlnaW4pIHtcbiAgICAgIHJlc3VsdCA9IG5ldyBDc3NTeW50YXhFcnJvcihcbiAgICAgICAgbWVzc2FnZSwgb3JpZ2luLmxpbmUsIG9yaWdpbi5jb2x1bW4sXG4gICAgICAgIG9yaWdpbi5zb3VyY2UsIG9yaWdpbi5maWxlLCBvcHRzLnBsdWdpblxuICAgICAgKVxuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHQgPSBuZXcgQ3NzU3ludGF4RXJyb3IoXG4gICAgICAgIG1lc3NhZ2UsIGxpbmUsIGNvbHVtbiwgdGhpcy5jc3MsIHRoaXMuZmlsZSwgb3B0cy5wbHVnaW4pXG4gICAgfVxuXG4gICAgcmVzdWx0LmlucHV0ID0geyBsaW5lLCBjb2x1bW4sIHNvdXJjZTogdGhpcy5jc3MgfVxuICAgIGlmICh0aGlzLmZpbGUpIHJlc3VsdC5pbnB1dC5maWxlID0gdGhpcy5maWxlXG5cbiAgICByZXR1cm4gcmVzdWx0XG4gIH1cblxuICAvKipcbiAgICogUmVhZHMgdGhlIGlucHV0IHNvdXJjZSBtYXAgYW5kIHJldHVybnMgYSBzeW1ib2wgcG9zaXRpb25cbiAgICogaW4gdGhlIGlucHV0IHNvdXJjZSAoZS5nLiwgaW4gYSBTYXNzIGZpbGUgdGhhdCB3YXMgY29tcGlsZWRcbiAgICogdG8gQ1NTIGJlZm9yZSBiZWluZyBwYXNzZWQgdG8gUG9zdENTUykuXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBsaW5lICAgTGluZSBpbiBpbnB1dCBDU1MuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBjb2x1bW4gQ29sdW1uIGluIGlucHV0IENTUy5cbiAgICpcbiAgICogQHJldHVybiB7ZmlsZVBvc2l0aW9ufSBQb3NpdGlvbiBpbiBpbnB1dCBzb3VyY2UuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIHJvb3Quc291cmNlLmlucHV0Lm9yaWdpbigxLCAxKSAvLz0+IHsgZmlsZTogJ2EuY3NzJywgbGluZTogMywgY29sdW1uOiAxIH1cbiAgICovXG4gIG9yaWdpbiAobGluZSwgY29sdW1uKSB7XG4gICAgaWYgKCF0aGlzLm1hcCkgcmV0dXJuIGZhbHNlXG4gICAgbGV0IGNvbnN1bWVyID0gdGhpcy5tYXAuY29uc3VtZXIoKVxuXG4gICAgbGV0IGZyb20gPSBjb25zdW1lci5vcmlnaW5hbFBvc2l0aW9uRm9yKHsgbGluZSwgY29sdW1uIH0pXG4gICAgaWYgKCFmcm9tLnNvdXJjZSkgcmV0dXJuIGZhbHNlXG5cbiAgICBsZXQgcmVzdWx0ID0ge1xuICAgICAgZmlsZTogdGhpcy5tYXBSZXNvbHZlKGZyb20uc291cmNlKSxcbiAgICAgIGxpbmU6IGZyb20ubGluZSxcbiAgICAgIGNvbHVtbjogZnJvbS5jb2x1bW5cbiAgICB9XG5cbiAgICBsZXQgc291cmNlID0gY29uc3VtZXIuc291cmNlQ29udGVudEZvcihmcm9tLnNvdXJjZSlcbiAgICBpZiAoc291cmNlKSByZXN1bHQuc291cmNlID0gc291cmNlXG5cbiAgICByZXR1cm4gcmVzdWx0XG4gIH1cblxuICBtYXBSZXNvbHZlIChmaWxlKSB7XG4gICAgaWYgKC9eXFx3KzpcXC9cXC8vLnRlc3QoZmlsZSkpIHtcbiAgICAgIHJldHVybiBmaWxlXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBwYXRoLnJlc29sdmUodGhpcy5tYXAuY29uc3VtZXIoKS5zb3VyY2VSb290IHx8ICcuJywgZmlsZSlcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVGhlIENTUyBzb3VyY2UgaWRlbnRpZmllci4gQ29udGFpbnMge0BsaW5rIElucHV0I2ZpbGV9IGlmIHRoZSB1c2VyXG4gICAqIHNldCB0aGUgYGZyb21gIG9wdGlvbiwgb3Ige0BsaW5rIElucHV0I2lkfSBpZiB0aGV5IGRpZCBub3QuXG4gICAqXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGNvbnN0IHJvb3QgPSBwb3N0Y3NzLnBhcnNlKGNzcywgeyBmcm9tOiAnYS5jc3MnIH0pXG4gICAqIHJvb3Quc291cmNlLmlucHV0LmZyb20gLy89PiBcIi9ob21lL2FpL2EuY3NzXCJcbiAgICpcbiAgICogY29uc3Qgcm9vdCA9IHBvc3Rjc3MucGFyc2UoY3NzKVxuICAgKiByb290LnNvdXJjZS5pbnB1dC5mcm9tIC8vPT4gXCI8aW5wdXQgY3NzIDE+XCJcbiAgICovXG4gIGdldCBmcm9tICgpIHtcbiAgICByZXR1cm4gdGhpcy5maWxlIHx8IHRoaXMuaWRcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBJbnB1dFxuXG4vKipcbiAqIEB0eXBlZGVmICB7b2JqZWN0fSBmaWxlUG9zaXRpb25cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBmaWxlICAgUGF0aCB0byBmaWxlLlxuICogQHByb3BlcnR5IHtudW1iZXJ9IGxpbmUgICBTb3VyY2UgbGluZSBpbiBmaWxlLlxuICogQHByb3BlcnR5IHtudW1iZXJ9IGNvbHVtbiBTb3VyY2UgY29sdW1uIGluIGZpbGUuXG4gKi9cbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _sourceMap = require('source-map');\n\nvar _sourceMap2 = _interopRequireDefault(_sourceMap);\n\nvar _path = require('path');\n\nvar _path2 = _interopRequireDefault(_path);\n\nvar _fs = require('fs');\n\nvar _fs2 = _interopRequireDefault(_fs);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction fromBase64(str) {\n if (Buffer) {\n return Buffer.from(str, 'base64').toString();\n } else {\n return window.atob(str);\n }\n}\n\n/**\n * Source map information from input CSS.\n * For example, source map after Sass compiler.\n *\n * This class will automatically find source map in input CSS or in file system\n * near input file (according `from` option).\n *\n * @example\n * const root = postcss.parse(css, { from: 'a.sass.css' })\n * root.input.map //=> PreviousMap\n */\n\nvar PreviousMap = function () {\n /**\n * @param {string} css Input CSS source.\n * @param {processOptions} [opts] {@link Processor#process} options.\n */\n function PreviousMap(css, opts) {\n _classCallCheck(this, PreviousMap);\n\n this.loadAnnotation(css);\n /**\n * Was source map inlined by data-uri to input CSS.\n *\n * @type {boolean}\n */\n this.inline = this.startWith(this.annotation, 'data:');\n\n var prev = opts.map ? opts.map.prev : undefined;\n var text = this.loadMap(opts.from, prev);\n if (text) this.text = text;\n }\n\n /**\n * Create a instance of `SourceMapGenerator` class\n * from the `source-map` library to work with source map information.\n *\n * It is lazy method, so it will create object only on first call\n * and then it will use cache.\n *\n * @return {SourceMapGenerator} Object with source map information.\n */\n\n\n PreviousMap.prototype.consumer = function consumer() {\n if (!this.consumerCache) {\n this.consumerCache = new _sourceMap2.default.SourceMapConsumer(this.text);\n }\n return this.consumerCache;\n };\n\n /**\n * Does source map contains `sourcesContent` with input source text.\n *\n * @return {boolean} Is `sourcesContent` present.\n */\n\n\n PreviousMap.prototype.withContent = function withContent() {\n return !!(this.consumer().sourcesContent && this.consumer().sourcesContent.length > 0);\n };\n\n PreviousMap.prototype.startWith = function startWith(string, start) {\n if (!string) return false;\n return string.substr(0, start.length) === start;\n };\n\n PreviousMap.prototype.loadAnnotation = function loadAnnotation(css) {\n var match = css.match(/\\/\\*\\s*# sourceMappingURL=(.*)\\s*\\*\\//);\n if (match) this.annotation = match[1].trim();\n };\n\n PreviousMap.prototype.decodeInline = function decodeInline(text) {\n var baseCharsetUri = /^data:application\\/json;charset=utf-?8;base64,/;\n var baseUri = /^data:application\\/json;base64,/;\n var uri = 'data:application/json,';\n\n if (this.startWith(text, uri)) {\n return decodeURIComponent(text.substr(uri.length));\n } else if (baseCharsetUri.test(text) || baseUri.test(text)) {\n return fromBase64(text.substr(RegExp.lastMatch.length));\n } else {\n var encoding = text.match(/data:application\\/json;([^,]+),/)[1];\n throw new Error('Unsupported source map encoding ' + encoding);\n }\n };\n\n PreviousMap.prototype.loadMap = function loadMap(file, prev) {\n if (prev === false) return false;\n\n if (prev) {\n if (typeof prev === 'string') {\n return prev;\n } else if (typeof prev === 'function') {\n var prevPath = prev(file);\n if (prevPath && _fs2.default.existsSync && _fs2.default.existsSync(prevPath)) {\n return _fs2.default.readFileSync(prevPath, 'utf-8').toString().trim();\n } else {\n throw new Error('Unable to load previous source map: ' + prevPath.toString());\n }\n } else if (prev instanceof _sourceMap2.default.SourceMapConsumer) {\n return _sourceMap2.default.SourceMapGenerator.fromSourceMap(prev).toString();\n } else if (prev instanceof _sourceMap2.default.SourceMapGenerator) {\n return prev.toString();\n } else if (this.isMap(prev)) {\n return JSON.stringify(prev);\n } else {\n throw new Error('Unsupported previous source map format: ' + prev.toString());\n }\n } else if (this.inline) {\n return this.decodeInline(this.annotation);\n } else if (this.annotation) {\n var map = this.annotation;\n if (file) map = _path2.default.join(_path2.default.dirname(file), map);\n\n this.root = _path2.default.dirname(map);\n if (_fs2.default.existsSync && _fs2.default.existsSync(map)) {\n return _fs2.default.readFileSync(map, 'utf-8').toString().trim();\n } else {\n return false;\n }\n }\n };\n\n PreviousMap.prototype.isMap = function isMap(map) {\n if ((typeof map === 'undefined' ? 'undefined' : _typeof(map)) !== 'object') return false;\n return typeof map.mappings === 'string' || typeof map._mappings === 'string';\n };\n\n return PreviousMap;\n}();\n\nexports.default = PreviousMap;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInByZXZpb3VzLW1hcC5lczYiXSwibmFtZXMiOlsiZnJvbUJhc2U2NCIsInN0ciIsIkJ1ZmZlciIsImZyb20iLCJ0b1N0cmluZyIsIndpbmRvdyIsImF0b2IiLCJQcmV2aW91c01hcCIsImNzcyIsIm9wdHMiLCJsb2FkQW5ub3RhdGlvbiIsImlubGluZSIsInN0YXJ0V2l0aCIsImFubm90YXRpb24iLCJwcmV2IiwibWFwIiwidW5kZWZpbmVkIiwidGV4dCIsImxvYWRNYXAiLCJjb25zdW1lciIsImNvbnN1bWVyQ2FjaGUiLCJtb3ppbGxhIiwiU291cmNlTWFwQ29uc3VtZXIiLCJ3aXRoQ29udGVudCIsInNvdXJjZXNDb250ZW50IiwibGVuZ3RoIiwic3RyaW5nIiwic3RhcnQiLCJzdWJzdHIiLCJtYXRjaCIsInRyaW0iLCJkZWNvZGVJbmxpbmUiLCJiYXNlQ2hhcnNldFVyaSIsImJhc2VVcmkiLCJ1cmkiLCJkZWNvZGVVUklDb21wb25lbnQiLCJ0ZXN0IiwiUmVnRXhwIiwibGFzdE1hdGNoIiwiZW5jb2RpbmciLCJFcnJvciIsImZpbGUiLCJwcmV2UGF0aCIsImZzIiwiZXhpc3RzU3luYyIsInJlYWRGaWxlU3luYyIsIlNvdXJjZU1hcEdlbmVyYXRvciIsImZyb21Tb3VyY2VNYXAiLCJpc01hcCIsIkpTT04iLCJzdHJpbmdpZnkiLCJwYXRoIiwiam9pbiIsImRpcm5hbWUiLCJyb290IiwibWFwcGluZ3MiLCJfbWFwcGluZ3MiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBOzs7O0FBQ0E7Ozs7QUFDQTs7Ozs7Ozs7QUFFQSxTQUFTQSxVQUFULENBQXFCQyxHQUFyQixFQUEwQjtBQUN4QixNQUFJQyxNQUFKLEVBQVk7QUFDVixXQUFPQSxPQUFPQyxJQUFQLENBQVlGLEdBQVosRUFBaUIsUUFBakIsRUFBMkJHLFFBQTNCLEVBQVA7QUFDRCxHQUZELE1BRU87QUFDTCxXQUFPQyxPQUFPQyxJQUFQLENBQVlMLEdBQVosQ0FBUDtBQUNEO0FBQ0Y7O0FBRUQ7Ozs7Ozs7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UUFBOUIsR0FBeUMwQixJQUF6QyxFQUFQO0FBQ0QsT0FGRCxNQUVPO0FBQ0wsZUFBTyxLQUFQO0FBQ0Q7QUFDRjtBQUNGLEc7O3dCQUVEa0IsSyxrQkFBT2pDLEcsRUFBSztBQUNWLFFBQUksUUFBT0EsR0FBUCx5Q0FBT0EsR0FBUCxPQUFlLFFBQW5CLEVBQTZCLE9BQU8sS0FBUDtBQUM3QixXQUFPLE9BQU9BLElBQUl3QyxRQUFYLEtBQXdCLFFBQXhCLElBQW9DLE9BQU94QyxJQUFJeUMsU0FBWCxLQUF5QixRQUFwRTtBQUNELEc7Ozs7O2tCQUdZakQsVyIsImZpbGUiOiJwcmV2aW91cy1tYXAuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW96aWxsYSBmcm9tICdzb3VyY2UtbWFwJ1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCdcbmltcG9ydCBmcyBmcm9tICdmcydcblxuZnVuY3Rpb24gZnJvbUJhc2U2NCAoc3RyKSB7XG4gIGlmIChCdWZmZXIpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20oc3RyLCAnYmFzZTY0JykudG9TdHJpbmcoKVxuICB9IGVsc2Uge1xuICAgIHJldHVybiB3aW5kb3cuYXRvYihzdHIpXG4gIH1cbn1cblxuLyoqXG4gKiBTb3VyY2UgbWFwIGluZm9ybWF0aW9uIGZyb20gaW5wdXQgQ1NTLlxuICogRm9yIGV4YW1wbGUsIHNvdXJjZSBtYXAgYWZ0ZXIgU2FzcyBjb21waWxlci5cbiAqXG4gKiBUaGlzIGNsYXNzIHdpbGwgYXV0b21hdGljYWxseSBmaW5kIHNvdXJjZSBtYXAgaW4gaW5wdXQgQ1NTIG9yIGluIGZpbGUgc3lzdGVtXG4gKiBuZWFyIGlucHV0IGZpbGUgKGFjY29yZGluZyBgZnJvbWAgb3B0aW9uKS5cbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3Qgcm9vdCA9IHBvc3Rjc3MucGFyc2UoY3NzLCB7IGZyb206ICdhLnNhc3MuY3NzJyB9KVxuICogcm9vdC5pbnB1dC5tYXAgLy89PiBQcmV2aW91c01hcFxuICovXG5jbGFzcyBQcmV2aW91c01hcCB7XG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gICAgICAgICBjc3MgICAgSW5wdXQgQ1NTIHNvdXJjZS5cbiAgICogQHBhcmFtIHtwcm9jZXNzT3B0aW9uc30gW29wdHNdIHtAbGluayBQcm9jZXNzb3IjcHJvY2Vzc30gb3B0aW9ucy5cbiAgICovXG4gIGNvbnN0cnVjdG9yIChjc3MsIG9wdHMpIHtcbiAgICB0aGlzLmxvYWRBbm5vdGF0aW9uKGNzcylcbiAgICAvKipcbiAgICAgKiBXYXMgc291cmNlIG1hcCBpbmxpbmVkIGJ5IGRhdGEtdXJpIHRvIGlucHV0IENTUy5cbiAgICAgKlxuICAgICAqIEB0eXBlIHtib29sZWFufVxuICAgICAqL1xuICAgIHRoaXMuaW5saW5lID0gdGhpcy5zdGFydFdpdGgodGhpcy5hbm5vdGF0aW9uLCAnZGF0YTonKVxuXG4gICAgbGV0IHByZXYgPSBvcHRzLm1hcCA/IG9wdHMubWFwLnByZXYgOiB1bmRlZmluZWRcbiAgICBsZXQgdGV4dCA9IHRoaXMubG9hZE1hcChvcHRzLmZyb20sIHByZXYpXG4gICAgaWYgKHRleHQpIHRoaXMudGV4dCA9IHRleHRcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBpbnN0YW5jZSBvZiBgU291cmNlTWFwR2VuZXJhdG9yYCBjbGFzc1xuICAgKiBmcm9tIHRoZSBgc291cmNlLW1hcGAgbGlicmFyeSB0byB3b3JrIHdpdGggc291cmNlIG1hcCBpbmZvcm1hdGlvbi5cbiAgICpcbiAgICogSXQgaXMgbGF6eSBtZXRob2QsIHNvIGl0IHdpbGwgY3JlYXRlIG9iamVjdCBvbmx5IG9uIGZpcnN0IGNhbGxcbiAgICogYW5kIHRoZW4gaXQgd2lsbCB1c2UgY2FjaGUuXG4gICAqXG4gICAqIEByZXR1cm4ge1NvdXJjZU1hcEdlbmVyYXRvcn0gT2JqZWN0IHdpdGggc291cmNlIG1hcCBpbmZvcm1hdGlvbi5cbiAgICovXG4gIGNvbnN1bWVyICgpIHtcbiAgICBpZiAoIXRoaXMuY29uc3VtZXJDYWNoZSkge1xuICAgICAgdGhpcy5jb25zdW1lckNhY2hlID0gbmV3IG1vemlsbGEuU291cmNlTWFwQ29uc3VtZXIodGhpcy50ZXh0KVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5jb25zdW1lckNhY2hlXG4gIH1cblxuICAvKipcbiAgICogRG9lcyBzb3VyY2UgbWFwIGNvbnRhaW5zIGBzb3VyY2VzQ29udGVudGAgd2l0aCBpbnB1dCBzb3VyY2UgdGV4dC5cbiAgICpcbiAgICogQHJldHVybiB7Ym9vbGVhbn0gSXMgYHNvdXJjZXNDb250ZW50YCBwcmVzZW50LlxuICAgKi9cbiAgd2l0aENvbnRlbnQgKCkge1xuICAgIHJldHVybiAhISh0aGlzLmNvbnN1bWVyKCkuc291cmNlc0NvbnRlbnQgJiZcbiAgICAgICAgICAgICAgdGhpcy5jb25zdW1lcigpLnNvdXJjZXNDb250ZW50Lmxlbmd0aCA+IDApXG4gIH1cblxuICBzdGFydFdpdGggKHN0cmluZywgc3RhcnQpIHtcbiAgICBpZiAoIXN0cmluZykgcmV0dXJuIGZhbHNlXG4gICAgcmV0dXJuIHN0cmluZy5zdWJzdHIoMCwgc3RhcnQubGVuZ3RoKSA9PT0gc3RhcnRcbiAgfVxuXG4gIGxvYWRBbm5vdGF0aW9uIChjc3MpIHtcbiAgICBsZXQgbWF0Y2ggPSBjc3MubWF0Y2goL1xcL1xcKlxccyojIHNvdXJjZU1hcHBpbmdVUkw9KC4qKVxccypcXCpcXC8vKVxuICAgIGlmIChtYXRjaCkgdGhpcy5hbm5vdGF0aW9uID0gbWF0Y2hbMV0udHJpbSgpXG4gIH1cblxuICBkZWNvZGVJbmxpbmUgKHRleHQpIHtcbiAgICBsZXQgYmFzZUNoYXJzZXRVcmkgPSAvXmRhdGE6YXBwbGljYXRpb25cXC9qc29uO2NoYXJzZXQ9dXRmLT84O2Jhc2U2NCwvXG4gICAgbGV0IGJhc2VVcmkgPSAvXmRhdGE6YXBwbGljYXRpb25cXC9qc29uO2Jhc2U2NCwvXG4gICAgbGV0IHVyaSA9ICdkYXRhOmFwcGxpY2F0aW9uL2pzb24sJ1xuXG4gICAgaWYgKHRoaXMuc3RhcnRXaXRoKHRleHQsIHVyaSkpIHtcbiAgICAgIHJldHVybiBkZWNvZGVVUklDb21wb25lbnQodGV4dC5zdWJzdHIodXJpLmxlbmd0aCkpXG4gICAgfSBlbHNlIGlmIChiYXNlQ2hhcnNldFVyaS50ZXN0KHRleHQpIHx8IGJhc2VVcmkudGVzdCh0ZXh0KSkge1xuICAgICAgcmV0dXJuIGZyb21CYXNlNjQodGV4dC5zdWJzdHIoUmVnRXhwLmxhc3RNYXRjaC5sZW5ndGgpKVxuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgZW5jb2RpbmcgPSB0ZXh0Lm1hdGNoKC9kYXRhOmFwcGxpY2F0aW9uXFwvanNvbjsoW14sXSspLC8pWzFdXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIHNvdXJjZSBtYXAgZW5jb2RpbmcgJyArIGVuY29kaW5nKVxuICAgIH1cbiAgfVxuXG4gIGxvYWRNYXAgKGZpbGUsIHByZXYpIHtcbiAgICBpZiAocHJldiA9PT0gZmFsc2UpIHJldHVybiBmYWxzZVxuXG4gICAgaWYgKHByZXYpIHtcbiAgICAgIGlmICh0eXBlb2YgcHJldiA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIHByZXZcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHByZXYgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgbGV0IHByZXZQYXRoID0gcHJldihmaWxlKVxuICAgICAgICBpZiAocHJldlBhdGggJiYgZnMuZXhpc3RzU3luYyAmJiBmcy5leGlzdHNTeW5jKHByZXZQYXRoKSkge1xuICAgICAgICAgIHJldHVybiBmcy5yZWFkRmlsZVN5bmMocHJldlBhdGgsICd1dGYtOCcpLnRvU3RyaW5nKCkudHJpbSgpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgJ1VuYWJsZSB0byBsb2FkIHByZXZpb3VzIHNvdXJjZSBtYXA6ICcgKyBwcmV2UGF0aC50b1N0cmluZygpKVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHByZXYgaW5zdGFuY2VvZiBtb3ppbGxhLlNvdXJjZU1hcENvbnN1bWVyKSB7XG4gICAgICAgIHJldHVybiBtb3ppbGxhLlNvdXJjZU1hcEdlbmVyYXRvci5mcm9tU291cmNlTWFwKHByZXYpLnRvU3RyaW5nKClcbiAgICAgIH0gZWxzZSBpZiAocHJldiBpbnN0YW5jZW9mIG1vemlsbGEuU291cmNlTWFwR2VuZXJhdG9yKSB7XG4gICAgICAgIHJldHVybiBwcmV2LnRvU3RyaW5nKClcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5pc01hcChwcmV2KSkge1xuICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkocHJldilcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAnVW5zdXBwb3J0ZWQgcHJldmlvdXMgc291cmNlIG1hcCBmb3JtYXQ6ICcgKyBwcmV2LnRvU3RyaW5nKCkpXG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLmlubGluZSkge1xuICAgICAgcmV0dXJuIHRoaXMuZGVjb2RlSW5saW5lKHRoaXMuYW5ub3RhdGlvbilcbiAgICB9IGVsc2UgaWYgKHRoaXMuYW5ub3RhdGlvbikge1xuICAgICAgbGV0IG1hcCA9IHRoaXMuYW5ub3RhdGlvblxuICAgICAgaWYgKGZpbGUpIG1hcCA9IHBhdGguam9pbihwYXRoLmRpcm5hbWUoZmlsZSksIG1hcClcblxuICAgICAgdGhpcy5yb290ID0gcGF0aC5kaXJuYW1lKG1hcClcbiAgICAgIGlmIChmcy5leGlzdHNTeW5jICYmIGZzLmV4aXN0c1N5bmMobWFwKSkge1xuICAgICAgICByZXR1cm4gZnMucmVhZEZpbGVTeW5jKG1hcCwgJ3V0Zi04JykudG9TdHJpbmcoKS50cmltKClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlzTWFwIChtYXApIHtcbiAgICBpZiAodHlwZW9mIG1hcCAhPT0gJ29iamVjdCcpIHJldHVybiBmYWxzZVxuICAgIHJldHVybiB0eXBlb2YgbWFwLm1hcHBpbmdzID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgbWFwLl9tYXBwaW5ncyA9PT0gJ3N0cmluZydcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBQcmV2aW91c01hcFxuIl19\n","'use strict';\n\nexports.__esModule = true;\n/**\n * Contains helpers for working with vendor prefixes.\n *\n * @example\n * const vendor = postcss.vendor\n *\n * @namespace vendor\n */\nvar vendor = {\n\n /**\n * Returns the vendor prefix extracted from an input string.\n *\n * @param {string} prop String with or without vendor prefix.\n *\n * @return {string} vendor prefix or empty string\n *\n * @example\n * postcss.vendor.prefix('-moz-tab-size') //=> '-moz-'\n * postcss.vendor.prefix('tab-size') //=> ''\n */\n prefix: function prefix(prop) {\n var match = prop.match(/^(-\\w+-)/);\n if (match) {\n return match[0];\n } else {\n return '';\n }\n },\n\n\n /**\n * Returns the input string stripped of its vendor prefix.\n *\n * @param {string} prop String with or without vendor prefix.\n *\n * @return {string} String name without vendor prefixes.\n *\n * @example\n * postcss.vendor.unprefixed('-moz-tab-size') //=> 'tab-size'\n */\n unprefixed: function unprefixed(prop) {\n return prop.replace(/^-\\w+-/, '');\n }\n};\n\nexports.default = vendor;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInZlbmRvci5lczYiXSwibmFtZXMiOlsidmVuZG9yIiwicHJlZml4IiwicHJvcCIsIm1hdGNoIiwidW5wcmVmaXhlZCIsInJlcGxhY2UiXSwibWFwcGluZ3MiOiI7OztBQUFBOzs7Ozs7OztBQVFBLElBQUlBLFNBQVM7O0FBRVg7Ozs7Ozs7Ozs7O0FBV0FDLFFBYlcsa0JBYUhDLElBYkcsRUFhRztBQUNaLFFBQUlDLFFBQVFELEtBQUtDLEtBQUwsQ0FBVyxVQUFYLENBQVo7QUFDQSxRQUFJQSxLQUFKLEVBQVc7QUFDVCxhQUFPQSxNQUFNLENBQU4sQ0FBUDtBQUNELEtBRkQsTUFFTztBQUNMLGFBQU8sRUFBUDtBQUNEO0FBQ0YsR0FwQlU7OztBQXNCWDs7Ozs7Ozs7OztBQVVBQyxZQWhDVyxzQkFnQ0NGLElBaENELEVBZ0NPO0FBQ2hCLFdBQU9BLEtBQUtHLE9BQUwsQ0FBYSxRQUFiLEVBQXVCLEVBQXZCLENBQVA7QUFDRDtBQWxDVSxDQUFiOztrQkFzQ2VMLE0iLCJmaWxlIjoidmVuZG9yLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb250YWlucyBoZWxwZXJzIGZvciB3b3JraW5nIHdpdGggdmVuZG9yIHByZWZpeGVzLlxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCB2ZW5kb3IgPSBwb3N0Y3NzLnZlbmRvclxuICpcbiAqIEBuYW1lc3BhY2UgdmVuZG9yXG4gKi9cbmxldCB2ZW5kb3IgPSB7XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHZlbmRvciBwcmVmaXggZXh0cmFjdGVkIGZyb20gYW4gaW5wdXQgc3RyaW5nLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcHJvcCBTdHJpbmcgd2l0aCBvciB3aXRob3V0IHZlbmRvciBwcmVmaXguXG4gICAqXG4gICAqIEByZXR1cm4ge3N0cmluZ30gdmVuZG9yIHByZWZpeCBvciBlbXB0eSBzdHJpbmdcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogcG9zdGNzcy52ZW5kb3IucHJlZml4KCctbW96LXRhYi1zaXplJykgLy89PiAnLW1vei0nXG4gICAqIHBvc3Rjc3MudmVuZG9yLnByZWZpeCgndGFiLXNpemUnKSAgICAgIC8vPT4gJydcbiAgICovXG4gIHByZWZpeCAocHJvcCkge1xuICAgIGxldCBtYXRjaCA9IHByb3AubWF0Y2goL14oLVxcdystKS8pXG4gICAgaWYgKG1hdGNoKSB7XG4gICAgICByZXR1cm4gbWF0Y2hbMF1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICcnXG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGlucHV0IHN0cmluZyBzdHJpcHBlZCBvZiBpdHMgdmVuZG9yIHByZWZpeC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBwcm9wIFN0cmluZyB3aXRoIG9yIHdpdGhvdXQgdmVuZG9yIHByZWZpeC5cbiAgICAgKlxuICAgICAqIEByZXR1cm4ge3N0cmluZ30gU3RyaW5nIG5hbWUgd2l0aG91dCB2ZW5kb3IgcHJlZml4ZXMuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIHBvc3Rjc3MudmVuZG9yLnVucHJlZml4ZWQoJy1tb3otdGFiLXNpemUnKSAvLz0+ICd0YWItc2l6ZSdcbiAgICAgKi9cbiAgdW5wcmVmaXhlZCAocHJvcCkge1xuICAgIHJldHVybiBwcm9wLnJlcGxhY2UoL14tXFx3Ky0vLCAnJylcbiAgfVxuXG59XG5cbmV4cG9ydCBkZWZhdWx0IHZlbmRvclxuIl19\n"],"sourceRoot":""}