diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index 8923d61..0000000 --- a/.gitattributes +++ /dev/null @@ -1,2 +0,0 @@ -build/* linguist-vendored -docs/* linguist-vendored diff --git a/.gitignore b/.gitignore index a921a69..4d29575 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,23 @@ -node_modules -/*.log -.idea/ -.sentryclirc +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js + +# testing +/coverage + +# production +/build + +# misc +.DS_Store +.env.local +.env.development.local +.env.test.local +.env.production.local + +npm-debug.log* +yarn-debug.log* +yarn-error.log* diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..73f69e0 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml +# Editor-based HTTP Client requests +/httpRequests/ diff --git a/.idea/discord.xml b/.idea/discord.xml new file mode 100644 index 0000000..30bab2a --- /dev/null +++ b/.idea/discord.xml @@ -0,0 +1,7 @@ + + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..0c991a5 --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,74 @@ + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..6eadb3b --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,9 @@ + + + + IDE + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..da21036 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.run/Start development server.run.xml b/.idea/runConfigurations/run.xml similarity index 76% rename from .run/Start development server.run.xml rename to .idea/runConfigurations/run.xml index fdbda48..3c9048c 100644 --- a/.run/Start development server.run.xml +++ b/.idea/runConfigurations/run.xml @@ -1,5 +1,5 @@ - + diff --git a/.idea/steffoweb.iml b/.idea/steffoweb.iml new file mode 100644 index 0000000..d6ebd48 --- /dev/null +++ b/.idea/steffoweb.iml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.run/Build, publish and submit everything.run.xml b/.run/Build, publish and submit everything.run.xml deleted file mode 100644 index c4d11f6..0000000 --- a/.run/Build, publish and submit everything.run.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - \n if (val === '') return true;\n if (val === 'false') return false;\n if (val === 'true') return true;\n return val;\n}\n\nif (DOCUMENT && typeof DOCUMENT.querySelector === 'function') {\n var attrs = [['data-family-prefix', 'familyPrefix'], ['data-replacement-class', 'replacementClass'], ['data-auto-replace-svg', 'autoReplaceSvg'], ['data-auto-add-css', 'autoAddCss'], ['data-auto-a11y', 'autoA11y'], ['data-search-pseudo-elements', 'searchPseudoElements'], ['data-observe-mutations', 'observeMutations'], ['data-mutate-approach', 'mutateApproach'], ['data-keep-original-source', 'keepOriginalSource'], ['data-measure-performance', 'measurePerformance'], ['data-show-missing-icons', 'showMissingIcons']];\n attrs.forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n attr = _ref2[0],\n key = _ref2[1];\n\n var val = coerce(getAttrConfig(attr));\n\n if (val !== undefined && val !== null) {\n initial[key] = val;\n }\n });\n}\n\nvar _default = {\n familyPrefix: DEFAULT_FAMILY_PREFIX,\n replacementClass: DEFAULT_REPLACEMENT_CLASS,\n autoReplaceSvg: true,\n autoAddCss: true,\n autoA11y: true,\n searchPseudoElements: false,\n observeMutations: true,\n mutateApproach: 'async',\n keepOriginalSource: true,\n measurePerformance: false,\n showMissingIcons: true\n};\n\nvar _config = _objectSpread({}, _default, initial);\n\nif (!_config.autoReplaceSvg) _config.observeMutations = false;\n\nvar config = _objectSpread({}, _config);\n\nWINDOW.FontAwesomeConfig = config;\n\nvar w = WINDOW || {};\nif (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {};\nif (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {};\nif (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {};\nif (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = [];\nvar namespace = w[NAMESPACE_IDENTIFIER];\n\nvar functions = [];\n\nvar listener = function listener() {\n DOCUMENT.removeEventListener('DOMContentLoaded', listener);\n loaded = 1;\n functions.map(function (fn) {\n return fn();\n });\n};\n\nvar loaded = false;\n\nif (IS_DOM) {\n loaded = (DOCUMENT.documentElement.doScroll ? /^loaded|^c/ : /^loaded|^i|^c/).test(DOCUMENT.readyState);\n if (!loaded) DOCUMENT.addEventListener('DOMContentLoaded', listener);\n}\n\nfunction domready (fn) {\n if (!IS_DOM) return;\n loaded ? setTimeout(fn, 0) : functions.push(fn);\n}\n\nvar PENDING = 'pending';\nvar SETTLED = 'settled';\nvar FULFILLED = 'fulfilled';\nvar REJECTED = 'rejected';\n\nvar NOOP = function NOOP() {};\n\nvar isNode = typeof global !== 'undefined' && typeof global.process !== 'undefined' && typeof global.process.emit === 'function';\nvar asyncSetTimer = typeof setImmediate === 'undefined' ? setTimeout : setImmediate;\nvar asyncQueue = [];\nvar asyncTimer;\n\nfunction asyncFlush() {\n // run promise callbacks\n for (var i = 0; i < asyncQueue.length; i++) {\n asyncQueue[i][0](asyncQueue[i][1]);\n } // reset async asyncQueue\n\n\n asyncQueue = [];\n asyncTimer = false;\n}\n\nfunction asyncCall(callback, arg) {\n asyncQueue.push([callback, arg]);\n\n if (!asyncTimer) {\n asyncTimer = true;\n asyncSetTimer(asyncFlush, 0);\n }\n}\n\nfunction invokeResolver(resolver, promise) {\n function resolvePromise(value) {\n resolve(promise, value);\n }\n\n function rejectPromise(reason) {\n reject(promise, reason);\n }\n\n try {\n resolver(resolvePromise, rejectPromise);\n } catch (e) {\n rejectPromise(e);\n }\n}\n\nfunction invokeCallback(subscriber) {\n var owner = subscriber.owner;\n var settled = owner._state;\n var value = owner._data;\n var callback = subscriber[settled];\n var promise = subscriber.then;\n\n if (typeof callback === 'function') {\n settled = FULFILLED;\n\n try {\n value = callback(value);\n } catch (e) {\n reject(promise, e);\n }\n }\n\n if (!handleThenable(promise, value)) {\n if (settled === FULFILLED) {\n resolve(promise, value);\n }\n\n if (settled === REJECTED) {\n reject(promise, value);\n }\n }\n}\n\nfunction handleThenable(promise, value) {\n var resolved;\n\n try {\n if (promise === value) {\n throw new TypeError('A promises callback cannot return that same promise.');\n }\n\n if (value && (typeof value === 'function' || _typeof(value) === 'object')) {\n // then should be retrieved only once\n var then = value.then;\n\n if (typeof then === 'function') {\n then.call(value, function (val) {\n if (!resolved) {\n resolved = true;\n\n if (value === val) {\n fulfill(promise, val);\n } else {\n resolve(promise, val);\n }\n }\n }, function (reason) {\n if (!resolved) {\n resolved = true;\n reject(promise, reason);\n }\n });\n return true;\n }\n }\n } catch (e) {\n if (!resolved) {\n reject(promise, e);\n }\n\n return true;\n }\n\n return false;\n}\n\nfunction resolve(promise, value) {\n if (promise === value || !handleThenable(promise, value)) {\n fulfill(promise, value);\n }\n}\n\nfunction fulfill(promise, value) {\n if (promise._state === PENDING) {\n promise._state = SETTLED;\n promise._data = value;\n asyncCall(publishFulfillment, promise);\n }\n}\n\nfunction reject(promise, reason) {\n if (promise._state === PENDING) {\n promise._state = SETTLED;\n promise._data = reason;\n asyncCall(publishRejection, promise);\n }\n}\n\nfunction publish(promise) {\n promise._then = promise._then.forEach(invokeCallback);\n}\n\nfunction publishFulfillment(promise) {\n promise._state = FULFILLED;\n publish(promise);\n}\n\nfunction publishRejection(promise) {\n promise._state = REJECTED;\n publish(promise);\n\n if (!promise._handled && isNode) {\n global.process.emit('unhandledRejection', promise._data, promise);\n }\n}\n\nfunction notifyRejectionHandled(promise) {\n global.process.emit('rejectionHandled', promise);\n}\n/**\n * @class\n */\n\n\nfunction P(resolver) {\n if (typeof resolver !== 'function') {\n throw new TypeError('Promise resolver ' + resolver + ' is not a function');\n }\n\n if (this instanceof P === false) {\n throw new TypeError('Failed to construct \\'Promise\\': Please use the \\'new\\' operator, this object constructor cannot be called as a function.');\n }\n\n this._then = [];\n invokeResolver(resolver, this);\n}\n\nP.prototype = {\n constructor: P,\n _state: PENDING,\n _then: null,\n _data: undefined,\n _handled: false,\n then: function then(onFulfillment, onRejection) {\n var subscriber = {\n owner: this,\n then: new this.constructor(NOOP),\n fulfilled: onFulfillment,\n rejected: onRejection\n };\n\n if ((onRejection || onFulfillment) && !this._handled) {\n this._handled = true;\n\n if (this._state === REJECTED && isNode) {\n asyncCall(notifyRejectionHandled, this);\n }\n }\n\n if (this._state === FULFILLED || this._state === REJECTED) {\n // already resolved, call callback async\n asyncCall(invokeCallback, subscriber);\n } else {\n // subscribe\n this._then.push(subscriber);\n }\n\n return subscriber.then;\n },\n catch: function _catch(onRejection) {\n return this.then(null, onRejection);\n }\n};\n\nP.all = function (promises) {\n if (!Array.isArray(promises)) {\n throw new TypeError('You must pass an array to Promise.all().');\n }\n\n return new P(function (resolve, reject) {\n var results = [];\n var remaining = 0;\n\n function resolver(index) {\n remaining++;\n return function (value) {\n results[index] = value;\n\n if (! --remaining) {\n resolve(results);\n }\n };\n }\n\n for (var i = 0, promise; i < promises.length; i++) {\n promise = promises[i];\n\n if (promise && typeof promise.then === 'function') {\n promise.then(resolver(i), reject);\n } else {\n results[i] = promise;\n }\n }\n\n if (!remaining) {\n resolve(results);\n }\n });\n};\n\nP.race = function (promises) {\n if (!Array.isArray(promises)) {\n throw new TypeError('You must pass an array to Promise.race().');\n }\n\n return new P(function (resolve, reject) {\n for (var i = 0, promise; i < promises.length; i++) {\n promise = promises[i];\n\n if (promise && typeof promise.then === 'function') {\n promise.then(resolve, reject);\n } else {\n resolve(promise);\n }\n }\n });\n};\n\nP.resolve = function (value) {\n if (value && _typeof(value) === 'object' && value.constructor === P) {\n return value;\n }\n\n return new P(function (resolve) {\n resolve(value);\n });\n};\n\nP.reject = function (reason) {\n return new P(function (resolve, reject) {\n reject(reason);\n });\n};\n\nvar picked = typeof Promise === 'function' ? Promise : P;\n\nvar d = UNITS_IN_GRID;\nvar meaninglessTransform = {\n size: 16,\n x: 0,\n y: 0,\n rotate: 0,\n flipX: false,\n flipY: false\n};\n\nfunction isReserved(name) {\n return ~RESERVED_CLASSES.indexOf(name);\n}\nfunction insertCss(css) {\n if (!css || !IS_DOM) {\n return;\n }\n\n var style = DOCUMENT.createElement('style');\n style.setAttribute('type', 'text/css');\n style.innerHTML = css;\n var headChildren = DOCUMENT.head.childNodes;\n var beforeChild = null;\n\n for (var i = headChildren.length - 1; i > -1; i--) {\n var child = headChildren[i];\n var tagName = (child.tagName || '').toUpperCase();\n\n if (['STYLE', 'LINK'].indexOf(tagName) > -1) {\n beforeChild = child;\n }\n }\n\n DOCUMENT.head.insertBefore(style, beforeChild);\n return css;\n}\nvar idPool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\nfunction nextUniqueId() {\n var size = 12;\n var id = '';\n\n while (size-- > 0) {\n id += idPool[Math.random() * 62 | 0];\n }\n\n return id;\n}\nfunction toArray(obj) {\n var array = [];\n\n for (var i = (obj || []).length >>> 0; i--;) {\n array[i] = obj[i];\n }\n\n return array;\n}\nfunction classArray(node) {\n if (node.classList) {\n return toArray(node.classList);\n } else {\n return (node.getAttribute('class') || '').split(' ').filter(function (i) {\n return i;\n });\n }\n}\nfunction getIconName(familyPrefix, cls) {\n var parts = cls.split('-');\n var prefix = parts[0];\n var iconName = parts.slice(1).join('-');\n\n if (prefix === familyPrefix && iconName !== '' && !isReserved(iconName)) {\n return iconName;\n } else {\n return null;\n }\n}\nfunction htmlEscape(str) {\n return \"\".concat(str).replace(/&/g, '&').replace(/\"/g, '"').replace(/'/g, ''').replace(//g, '>');\n}\nfunction joinAttributes(attributes) {\n return Object.keys(attributes || {}).reduce(function (acc, attributeName) {\n return acc + \"\".concat(attributeName, \"=\\\"\").concat(htmlEscape(attributes[attributeName]), \"\\\" \");\n }, '').trim();\n}\nfunction joinStyles(styles) {\n return Object.keys(styles || {}).reduce(function (acc, styleName) {\n return acc + \"\".concat(styleName, \": \").concat(styles[styleName], \";\");\n }, '');\n}\nfunction transformIsMeaningful(transform) {\n return transform.size !== meaninglessTransform.size || transform.x !== meaninglessTransform.x || transform.y !== meaninglessTransform.y || transform.rotate !== meaninglessTransform.rotate || transform.flipX || transform.flipY;\n}\nfunction transformForSvg(_ref) {\n var transform = _ref.transform,\n containerWidth = _ref.containerWidth,\n iconWidth = _ref.iconWidth;\n var outer = {\n transform: \"translate(\".concat(containerWidth / 2, \" 256)\")\n };\n var innerTranslate = \"translate(\".concat(transform.x * 32, \", \").concat(transform.y * 32, \") \");\n var innerScale = \"scale(\".concat(transform.size / 16 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / 16 * (transform.flipY ? -1 : 1), \") \");\n var innerRotate = \"rotate(\".concat(transform.rotate, \" 0 0)\");\n var inner = {\n transform: \"\".concat(innerTranslate, \" \").concat(innerScale, \" \").concat(innerRotate)\n };\n var path = {\n transform: \"translate(\".concat(iconWidth / 2 * -1, \" -256)\")\n };\n return {\n outer: outer,\n inner: inner,\n path: path\n };\n}\nfunction transformForCss(_ref2) {\n var transform = _ref2.transform,\n _ref2$width = _ref2.width,\n width = _ref2$width === void 0 ? UNITS_IN_GRID : _ref2$width,\n _ref2$height = _ref2.height,\n height = _ref2$height === void 0 ? UNITS_IN_GRID : _ref2$height,\n _ref2$startCentered = _ref2.startCentered,\n startCentered = _ref2$startCentered === void 0 ? false : _ref2$startCentered;\n var val = '';\n\n if (startCentered && IS_IE) {\n val += \"translate(\".concat(transform.x / d - width / 2, \"em, \").concat(transform.y / d - height / 2, \"em) \");\n } else if (startCentered) {\n val += \"translate(calc(-50% + \".concat(transform.x / d, \"em), calc(-50% + \").concat(transform.y / d, \"em)) \");\n } else {\n val += \"translate(\".concat(transform.x / d, \"em, \").concat(transform.y / d, \"em) \");\n }\n\n val += \"scale(\".concat(transform.size / d * (transform.flipX ? -1 : 1), \", \").concat(transform.size / d * (transform.flipY ? -1 : 1), \") \");\n val += \"rotate(\".concat(transform.rotate, \"deg) \");\n return val;\n}\n\nvar ALL_SPACE = {\n x: 0,\n y: 0,\n width: '100%',\n height: '100%'\n};\n\nfunction fillBlack(abstract) {\n var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n if (abstract.attributes && (abstract.attributes.fill || force)) {\n abstract.attributes.fill = 'black';\n }\n\n return abstract;\n}\n\nfunction deGroup(abstract) {\n if (abstract.tag === 'g') {\n return abstract.children;\n } else {\n return [abstract];\n }\n}\n\nfunction makeIconMasking (_ref) {\n var children = _ref.children,\n attributes = _ref.attributes,\n main = _ref.main,\n mask = _ref.mask,\n explicitMaskId = _ref.maskId,\n transform = _ref.transform;\n var mainWidth = main.width,\n mainPath = main.icon;\n var maskWidth = mask.width,\n maskPath = mask.icon;\n var trans = transformForSvg({\n transform: transform,\n containerWidth: maskWidth,\n iconWidth: mainWidth\n });\n var maskRect = {\n tag: 'rect',\n attributes: _objectSpread({}, ALL_SPACE, {\n fill: 'white'\n })\n };\n var maskInnerGroupChildrenMixin = mainPath.children ? {\n children: mainPath.children.map(fillBlack)\n } : {};\n var maskInnerGroup = {\n tag: 'g',\n attributes: _objectSpread({}, trans.inner),\n children: [fillBlack(_objectSpread({\n tag: mainPath.tag,\n attributes: _objectSpread({}, mainPath.attributes, trans.path)\n }, maskInnerGroupChildrenMixin))]\n };\n var maskOuterGroup = {\n tag: 'g',\n attributes: _objectSpread({}, trans.outer),\n children: [maskInnerGroup]\n };\n var maskId = \"mask-\".concat(explicitMaskId || nextUniqueId());\n var clipId = \"clip-\".concat(explicitMaskId || nextUniqueId());\n var maskTag = {\n tag: 'mask',\n attributes: _objectSpread({}, ALL_SPACE, {\n id: maskId,\n maskUnits: 'userSpaceOnUse',\n maskContentUnits: 'userSpaceOnUse'\n }),\n children: [maskRect, maskOuterGroup]\n };\n var defs = {\n tag: 'defs',\n children: [{\n tag: 'clipPath',\n attributes: {\n id: clipId\n },\n children: deGroup(maskPath)\n }, maskTag]\n };\n children.push(defs, {\n tag: 'rect',\n attributes: _objectSpread({\n fill: 'currentColor',\n 'clip-path': \"url(#\".concat(clipId, \")\"),\n mask: \"url(#\".concat(maskId, \")\")\n }, ALL_SPACE)\n });\n return {\n children: children,\n attributes: attributes\n };\n}\n\nfunction makeIconStandard (_ref) {\n var children = _ref.children,\n attributes = _ref.attributes,\n main = _ref.main,\n transform = _ref.transform,\n styles = _ref.styles;\n var styleString = joinStyles(styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n if (transformIsMeaningful(transform)) {\n var trans = transformForSvg({\n transform: transform,\n containerWidth: main.width,\n iconWidth: main.width\n });\n children.push({\n tag: 'g',\n attributes: _objectSpread({}, trans.outer),\n children: [{\n tag: 'g',\n attributes: _objectSpread({}, trans.inner),\n children: [{\n tag: main.icon.tag,\n children: main.icon.children,\n attributes: _objectSpread({}, main.icon.attributes, trans.path)\n }]\n }]\n });\n } else {\n children.push(main.icon);\n }\n\n return {\n children: children,\n attributes: attributes\n };\n}\n\nfunction asIcon (_ref) {\n var children = _ref.children,\n main = _ref.main,\n mask = _ref.mask,\n attributes = _ref.attributes,\n styles = _ref.styles,\n transform = _ref.transform;\n\n if (transformIsMeaningful(transform) && main.found && !mask.found) {\n var width = main.width,\n height = main.height;\n var offset = {\n x: width / height / 2,\n y: 0.5\n };\n attributes['style'] = joinStyles(_objectSpread({}, styles, {\n 'transform-origin': \"\".concat(offset.x + transform.x / 16, \"em \").concat(offset.y + transform.y / 16, \"em\")\n }));\n }\n\n return [{\n tag: 'svg',\n attributes: attributes,\n children: children\n }];\n}\n\nfunction asSymbol (_ref) {\n var prefix = _ref.prefix,\n iconName = _ref.iconName,\n children = _ref.children,\n attributes = _ref.attributes,\n symbol = _ref.symbol;\n var id = symbol === true ? \"\".concat(prefix, \"-\").concat(config.familyPrefix, \"-\").concat(iconName) : symbol;\n return [{\n tag: 'svg',\n attributes: {\n style: 'display: none;'\n },\n children: [{\n tag: 'symbol',\n attributes: _objectSpread({}, attributes, {\n id: id\n }),\n children: children\n }]\n }];\n}\n\nfunction makeInlineSvgAbstract(params) {\n var _params$icons = params.icons,\n main = _params$icons.main,\n mask = _params$icons.mask,\n prefix = params.prefix,\n iconName = params.iconName,\n transform = params.transform,\n symbol = params.symbol,\n title = params.title,\n maskId = params.maskId,\n titleId = params.titleId,\n extra = params.extra,\n _params$watchable = params.watchable,\n watchable = _params$watchable === void 0 ? false : _params$watchable;\n\n var _ref = mask.found ? mask : main,\n width = _ref.width,\n height = _ref.height;\n\n var widthClass = \"fa-w-\".concat(Math.ceil(width / height * 16));\n var attrClass = [config.replacementClass, iconName ? \"\".concat(config.familyPrefix, \"-\").concat(iconName) : '', widthClass].filter(function (c) {\n return extra.classes.indexOf(c) === -1;\n }).concat(extra.classes).join(' ');\n var content = {\n children: [],\n attributes: _objectSpread({}, extra.attributes, {\n 'data-prefix': prefix,\n 'data-icon': iconName,\n 'class': attrClass,\n 'role': extra.attributes.role || 'img',\n 'xmlns': 'http://www.w3.org/2000/svg',\n 'viewBox': \"0 0 \".concat(width, \" \").concat(height)\n })\n };\n\n if (watchable) {\n content.attributes[DATA_FA_I2SVG] = '';\n }\n\n if (title) content.children.push({\n tag: 'title',\n attributes: {\n id: content.attributes['aria-labelledby'] || \"title-\".concat(titleId || nextUniqueId())\n },\n children: [title]\n });\n\n var args = _objectSpread({}, content, {\n prefix: prefix,\n iconName: iconName,\n main: main,\n mask: mask,\n maskId: maskId,\n transform: transform,\n symbol: symbol,\n styles: extra.styles\n });\n\n var _ref2 = mask.found && main.found ? makeIconMasking(args) : makeIconStandard(args),\n children = _ref2.children,\n attributes = _ref2.attributes;\n\n args.children = children;\n args.attributes = attributes;\n\n if (symbol) {\n return asSymbol(args);\n } else {\n return asIcon(args);\n }\n}\nfunction makeLayersTextAbstract(params) {\n var content = params.content,\n width = params.width,\n height = params.height,\n transform = params.transform,\n title = params.title,\n extra = params.extra,\n _params$watchable2 = params.watchable,\n watchable = _params$watchable2 === void 0 ? false : _params$watchable2;\n\n var attributes = _objectSpread({}, extra.attributes, title ? {\n 'title': title\n } : {}, {\n 'class': extra.classes.join(' ')\n });\n\n if (watchable) {\n attributes[DATA_FA_I2SVG] = '';\n }\n\n var styles = _objectSpread({}, extra.styles);\n\n if (transformIsMeaningful(transform)) {\n styles['transform'] = transformForCss({\n transform: transform,\n startCentered: true,\n width: width,\n height: height\n });\n styles['-webkit-transform'] = styles['transform'];\n }\n\n var styleString = joinStyles(styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n var val = [];\n val.push({\n tag: 'span',\n attributes: attributes,\n children: [content]\n });\n\n if (title) {\n val.push({\n tag: 'span',\n attributes: {\n class: 'sr-only'\n },\n children: [title]\n });\n }\n\n return val;\n}\nfunction makeLayersCounterAbstract(params) {\n var content = params.content,\n title = params.title,\n extra = params.extra;\n\n var attributes = _objectSpread({}, extra.attributes, title ? {\n 'title': title\n } : {}, {\n 'class': extra.classes.join(' ')\n });\n\n var styleString = joinStyles(extra.styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n var val = [];\n val.push({\n tag: 'span',\n attributes: attributes,\n children: [content]\n });\n\n if (title) {\n val.push({\n tag: 'span',\n attributes: {\n class: 'sr-only'\n },\n children: [title]\n });\n }\n\n return val;\n}\n\nvar noop$1 = function noop() {};\n\nvar p = config.measurePerformance && PERFORMANCE && PERFORMANCE.mark && PERFORMANCE.measure ? PERFORMANCE : {\n mark: noop$1,\n measure: noop$1\n};\nvar preamble = \"FA \\\"5.14.0\\\"\";\n\nvar begin = function begin(name) {\n p.mark(\"\".concat(preamble, \" \").concat(name, \" begins\"));\n return function () {\n return end(name);\n };\n};\n\nvar end = function end(name) {\n p.mark(\"\".concat(preamble, \" \").concat(name, \" ends\"));\n p.measure(\"\".concat(preamble, \" \").concat(name), \"\".concat(preamble, \" \").concat(name, \" begins\"), \"\".concat(preamble, \" \").concat(name, \" ends\"));\n};\n\nvar perf = {\n begin: begin,\n end: end\n};\n\n/**\n * Internal helper to bind a function known to have 4 arguments\n * to a given context.\n */\n\nvar bindInternal4 = function bindInternal4(func, thisContext) {\n return function (a, b, c, d) {\n return func.call(thisContext, a, b, c, d);\n };\n};\n\n/**\n * # Reduce\n *\n * A fast object `.reduce()` implementation.\n *\n * @param {Object} subject The object to reduce over.\n * @param {Function} fn The reducer function.\n * @param {mixed} initialValue The initial value for the reducer, defaults to subject[0].\n * @param {Object} thisContext The context for the reducer.\n * @return {mixed} The final result.\n */\n\n\nvar reduce = function fastReduceObject(subject, fn, initialValue, thisContext) {\n var keys = Object.keys(subject),\n length = keys.length,\n iterator = thisContext !== undefined ? bindInternal4(fn, thisContext) : fn,\n i,\n key,\n result;\n\n if (initialValue === undefined) {\n i = 1;\n result = subject[keys[0]];\n } else {\n i = 0;\n result = initialValue;\n }\n\n for (; i < length; i++) {\n key = keys[i];\n result = iterator(result, subject[key], key, subject);\n }\n\n return result;\n};\n\nfunction toHex(unicode) {\n var result = '';\n\n for (var i = 0; i < unicode.length; i++) {\n var hex = unicode.charCodeAt(i).toString(16);\n result += ('000' + hex).slice(-4);\n }\n\n return result;\n}\n\nfunction defineIcons(prefix, icons) {\n var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var _params$skipHooks = params.skipHooks,\n skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks;\n var normalized = Object.keys(icons).reduce(function (acc, iconName) {\n var icon = icons[iconName];\n var expanded = !!icon.icon;\n\n if (expanded) {\n acc[icon.iconName] = icon.icon;\n } else {\n acc[iconName] = icon;\n }\n\n return acc;\n }, {});\n\n if (typeof namespace.hooks.addPack === 'function' && !skipHooks) {\n namespace.hooks.addPack(prefix, normalized);\n } else {\n namespace.styles[prefix] = _objectSpread({}, namespace.styles[prefix] || {}, normalized);\n }\n /**\n * Font Awesome 4 used the prefix of `fa` for all icons. With the introduction\n * of new styles we needed to differentiate between them. Prefix `fa` is now an alias\n * for `fas` so we'll easy the upgrade process for our users by automatically defining\n * this as well.\n */\n\n\n if (prefix === 'fas') {\n defineIcons('fa', icons);\n }\n}\n\nvar styles = namespace.styles,\n shims = namespace.shims;\nvar _byUnicode = {};\nvar _byLigature = {};\nvar _byOldName = {};\nvar build = function build() {\n var lookup = function lookup(reducer) {\n return reduce(styles, function (o, style, prefix) {\n o[prefix] = reduce(style, reducer, {});\n return o;\n }, {});\n };\n\n _byUnicode = lookup(function (acc, icon, iconName) {\n if (icon[3]) {\n acc[icon[3]] = iconName;\n }\n\n return acc;\n });\n _byLigature = lookup(function (acc, icon, iconName) {\n var ligatures = icon[2];\n acc[iconName] = iconName;\n ligatures.forEach(function (ligature) {\n acc[ligature] = iconName;\n });\n return acc;\n });\n var hasRegular = 'far' in styles;\n _byOldName = reduce(shims, function (acc, shim) {\n var oldName = shim[0];\n var prefix = shim[1];\n var iconName = shim[2];\n\n if (prefix === 'far' && !hasRegular) {\n prefix = 'fas';\n }\n\n acc[oldName] = {\n prefix: prefix,\n iconName: iconName\n };\n return acc;\n }, {});\n};\nbuild();\nfunction byUnicode(prefix, unicode) {\n return (_byUnicode[prefix] || {})[unicode];\n}\nfunction byLigature(prefix, ligature) {\n return (_byLigature[prefix] || {})[ligature];\n}\nfunction byOldName(name) {\n return _byOldName[name] || {\n prefix: null,\n iconName: null\n };\n}\n\nvar styles$1 = namespace.styles;\nvar emptyCanonicalIcon = function emptyCanonicalIcon() {\n return {\n prefix: null,\n iconName: null,\n rest: []\n };\n};\nfunction getCanonicalIcon(values) {\n return values.reduce(function (acc, cls) {\n var iconName = getIconName(config.familyPrefix, cls);\n\n if (styles$1[cls]) {\n acc.prefix = cls;\n } else if (config.autoFetchSvg && ['fas', 'far', 'fal', 'fad', 'fab', 'fa'].indexOf(cls) > -1) {\n acc.prefix = cls;\n } else if (iconName) {\n var shim = acc.prefix === 'fa' ? byOldName(iconName) : {};\n acc.iconName = shim.iconName || iconName;\n acc.prefix = shim.prefix || acc.prefix;\n } else if (cls !== config.replacementClass && cls.indexOf('fa-w-') !== 0) {\n acc.rest.push(cls);\n }\n\n return acc;\n }, emptyCanonicalIcon());\n}\nfunction iconFromMapping(mapping, prefix, iconName) {\n if (mapping && mapping[prefix] && mapping[prefix][iconName]) {\n return {\n prefix: prefix,\n iconName: iconName,\n icon: mapping[prefix][iconName]\n };\n }\n}\n\nfunction toHtml(abstractNodes) {\n var tag = abstractNodes.tag,\n _abstractNodes$attrib = abstractNodes.attributes,\n attributes = _abstractNodes$attrib === void 0 ? {} : _abstractNodes$attrib,\n _abstractNodes$childr = abstractNodes.children,\n children = _abstractNodes$childr === void 0 ? [] : _abstractNodes$childr;\n\n if (typeof abstractNodes === 'string') {\n return htmlEscape(abstractNodes);\n } else {\n return \"<\".concat(tag, \" \").concat(joinAttributes(attributes), \">\").concat(children.map(toHtml).join(''), \"\");\n }\n}\n\nvar noop$2 = function noop() {};\n\nfunction isWatched(node) {\n var i2svg = node.getAttribute ? node.getAttribute(DATA_FA_I2SVG) : null;\n return typeof i2svg === 'string';\n}\n\nfunction getMutator() {\n if (config.autoReplaceSvg === true) {\n return mutators.replace;\n }\n\n var mutator = mutators[config.autoReplaceSvg];\n return mutator || mutators.replace;\n}\n\nvar mutators = {\n replace: function replace(mutation) {\n var node = mutation[0];\n var abstract = mutation[1];\n var newOuterHTML = abstract.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n\n if (node.parentNode && node.outerHTML) {\n node.outerHTML = newOuterHTML + (config.keepOriginalSource && node.tagName.toLowerCase() !== 'svg' ? \"\") : '');\n } else if (node.parentNode) {\n var newNode = document.createElement('span');\n node.parentNode.replaceChild(newNode, node);\n newNode.outerHTML = newOuterHTML;\n }\n },\n nest: function nest(mutation) {\n var node = mutation[0];\n var abstract = mutation[1]; // If we already have a replaced node we do not want to continue nesting within it.\n // Short-circuit to the standard replacement\n\n if (~classArray(node).indexOf(config.replacementClass)) {\n return mutators.replace(mutation);\n }\n\n var forSvg = new RegExp(\"\".concat(config.familyPrefix, \"-.*\"));\n delete abstract[0].attributes.style;\n delete abstract[0].attributes.id;\n var splitClasses = abstract[0].attributes.class.split(' ').reduce(function (acc, cls) {\n if (cls === config.replacementClass || cls.match(forSvg)) {\n acc.toSvg.push(cls);\n } else {\n acc.toNode.push(cls);\n }\n\n return acc;\n }, {\n toNode: [],\n toSvg: []\n });\n abstract[0].attributes.class = splitClasses.toSvg.join(' ');\n var newInnerHTML = abstract.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n node.setAttribute('class', splitClasses.toNode.join(' '));\n node.setAttribute(DATA_FA_I2SVG, '');\n node.innerHTML = newInnerHTML;\n }\n};\n\nfunction performOperationSync(op) {\n op();\n}\n\nfunction perform(mutations, callback) {\n var callbackFunction = typeof callback === 'function' ? callback : noop$2;\n\n if (mutations.length === 0) {\n callbackFunction();\n } else {\n var frame = performOperationSync;\n\n if (config.mutateApproach === MUTATION_APPROACH_ASYNC) {\n frame = WINDOW.requestAnimationFrame || performOperationSync;\n }\n\n frame(function () {\n var mutator = getMutator();\n var mark = perf.begin('mutate');\n mutations.map(mutator);\n mark();\n callbackFunction();\n });\n }\n}\nvar disabled = false;\nfunction disableObservation() {\n disabled = true;\n}\nfunction enableObservation() {\n disabled = false;\n}\nvar mo = null;\nfunction observe(options) {\n if (!MUTATION_OBSERVER) {\n return;\n }\n\n if (!config.observeMutations) {\n return;\n }\n\n var treeCallback = options.treeCallback,\n nodeCallback = options.nodeCallback,\n pseudoElementsCallback = options.pseudoElementsCallback,\n _options$observeMutat = options.observeMutationsRoot,\n observeMutationsRoot = _options$observeMutat === void 0 ? DOCUMENT : _options$observeMutat;\n mo = new MUTATION_OBSERVER(function (objects) {\n if (disabled) return;\n toArray(objects).forEach(function (mutationRecord) {\n if (mutationRecord.type === 'childList' && mutationRecord.addedNodes.length > 0 && !isWatched(mutationRecord.addedNodes[0])) {\n if (config.searchPseudoElements) {\n pseudoElementsCallback(mutationRecord.target);\n }\n\n treeCallback(mutationRecord.target);\n }\n\n if (mutationRecord.type === 'attributes' && mutationRecord.target.parentNode && config.searchPseudoElements) {\n pseudoElementsCallback(mutationRecord.target.parentNode);\n }\n\n if (mutationRecord.type === 'attributes' && isWatched(mutationRecord.target) && ~ATTRIBUTES_WATCHED_FOR_MUTATION.indexOf(mutationRecord.attributeName)) {\n if (mutationRecord.attributeName === 'class') {\n var _getCanonicalIcon = getCanonicalIcon(classArray(mutationRecord.target)),\n prefix = _getCanonicalIcon.prefix,\n iconName = _getCanonicalIcon.iconName;\n\n if (prefix) mutationRecord.target.setAttribute('data-prefix', prefix);\n if (iconName) mutationRecord.target.setAttribute('data-icon', iconName);\n } else {\n nodeCallback(mutationRecord.target);\n }\n }\n });\n });\n if (!IS_DOM) return;\n mo.observe(observeMutationsRoot, {\n childList: true,\n attributes: true,\n characterData: true,\n subtree: true\n });\n}\nfunction disconnect() {\n if (!mo) return;\n mo.disconnect();\n}\n\nfunction styleParser (node) {\n var style = node.getAttribute('style');\n var val = [];\n\n if (style) {\n val = style.split(';').reduce(function (acc, style) {\n var styles = style.split(':');\n var prop = styles[0];\n var value = styles.slice(1);\n\n if (prop && value.length > 0) {\n acc[prop] = value.join(':').trim();\n }\n\n return acc;\n }, {});\n }\n\n return val;\n}\n\nfunction classParser (node) {\n var existingPrefix = node.getAttribute('data-prefix');\n var existingIconName = node.getAttribute('data-icon');\n var innerText = node.innerText !== undefined ? node.innerText.trim() : '';\n var val = getCanonicalIcon(classArray(node));\n\n if (existingPrefix && existingIconName) {\n val.prefix = existingPrefix;\n val.iconName = existingIconName;\n }\n\n if (val.prefix && innerText.length > 1) {\n val.iconName = byLigature(val.prefix, node.innerText);\n } else if (val.prefix && innerText.length === 1) {\n val.iconName = byUnicode(val.prefix, toHex(node.innerText));\n }\n\n return val;\n}\n\nvar parseTransformString = function parseTransformString(transformString) {\n var transform = {\n size: 16,\n x: 0,\n y: 0,\n flipX: false,\n flipY: false,\n rotate: 0\n };\n\n if (!transformString) {\n return transform;\n } else {\n return transformString.toLowerCase().split(' ').reduce(function (acc, n) {\n var parts = n.toLowerCase().split('-');\n var first = parts[0];\n var rest = parts.slice(1).join('-');\n\n if (first && rest === 'h') {\n acc.flipX = true;\n return acc;\n }\n\n if (first && rest === 'v') {\n acc.flipY = true;\n return acc;\n }\n\n rest = parseFloat(rest);\n\n if (isNaN(rest)) {\n return acc;\n }\n\n switch (first) {\n case 'grow':\n acc.size = acc.size + rest;\n break;\n\n case 'shrink':\n acc.size = acc.size - rest;\n break;\n\n case 'left':\n acc.x = acc.x - rest;\n break;\n\n case 'right':\n acc.x = acc.x + rest;\n break;\n\n case 'up':\n acc.y = acc.y - rest;\n break;\n\n case 'down':\n acc.y = acc.y + rest;\n break;\n\n case 'rotate':\n acc.rotate = acc.rotate + rest;\n break;\n }\n\n return acc;\n }, transform);\n }\n};\nfunction transformParser (node) {\n return parseTransformString(node.getAttribute('data-fa-transform'));\n}\n\nfunction symbolParser (node) {\n var symbol = node.getAttribute('data-fa-symbol');\n return symbol === null ? false : symbol === '' ? true : symbol;\n}\n\nfunction attributesParser (node) {\n var extraAttributes = toArray(node.attributes).reduce(function (acc, attr) {\n if (acc.name !== 'class' && acc.name !== 'style') {\n acc[attr.name] = attr.value;\n }\n\n return acc;\n }, {});\n var title = node.getAttribute('title');\n var titleId = node.getAttribute('data-fa-title-id');\n\n if (config.autoA11y) {\n if (title) {\n extraAttributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(titleId || nextUniqueId());\n } else {\n extraAttributes['aria-hidden'] = 'true';\n extraAttributes['focusable'] = 'false';\n }\n }\n\n return extraAttributes;\n}\n\nfunction maskParser (node) {\n var mask = node.getAttribute('data-fa-mask');\n\n if (!mask) {\n return emptyCanonicalIcon();\n } else {\n return getCanonicalIcon(mask.split(' ').map(function (i) {\n return i.trim();\n }));\n }\n}\n\nfunction blankMeta() {\n return {\n iconName: null,\n title: null,\n titleId: null,\n prefix: null,\n transform: meaninglessTransform,\n symbol: false,\n mask: null,\n maskId: null,\n extra: {\n classes: [],\n styles: {},\n attributes: {}\n }\n };\n}\nfunction parseMeta(node) {\n var _classParser = classParser(node),\n iconName = _classParser.iconName,\n prefix = _classParser.prefix,\n extraClasses = _classParser.rest;\n\n var extraStyles = styleParser(node);\n var transform = transformParser(node);\n var symbol = symbolParser(node);\n var extraAttributes = attributesParser(node);\n var mask = maskParser(node);\n return {\n iconName: iconName,\n title: node.getAttribute('title'),\n titleId: node.getAttribute('data-fa-title-id'),\n prefix: prefix,\n transform: transform,\n symbol: symbol,\n mask: mask,\n maskId: node.getAttribute('data-fa-mask-id'),\n extra: {\n classes: extraClasses,\n styles: extraStyles,\n attributes: extraAttributes\n }\n };\n}\n\nfunction MissingIcon(error) {\n this.name = 'MissingIcon';\n this.message = error || 'Icon unavailable';\n this.stack = new Error().stack;\n}\nMissingIcon.prototype = Object.create(Error.prototype);\nMissingIcon.prototype.constructor = MissingIcon;\n\nvar FILL = {\n fill: 'currentColor'\n};\nvar ANIMATION_BASE = {\n attributeType: 'XML',\n repeatCount: 'indefinite',\n dur: '2s'\n};\nvar RING = {\n tag: 'path',\n attributes: _objectSpread({}, FILL, {\n d: 'M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z'\n })\n};\n\nvar OPACITY_ANIMATE = _objectSpread({}, ANIMATION_BASE, {\n attributeName: 'opacity'\n});\n\nvar DOT = {\n tag: 'circle',\n attributes: _objectSpread({}, FILL, {\n cx: '256',\n cy: '364',\n r: '28'\n }),\n children: [{\n tag: 'animate',\n attributes: _objectSpread({}, ANIMATION_BASE, {\n attributeName: 'r',\n values: '28;14;28;28;14;28;'\n })\n }, {\n tag: 'animate',\n attributes: _objectSpread({}, OPACITY_ANIMATE, {\n values: '1;0;1;1;0;1;'\n })\n }]\n};\nvar QUESTION = {\n tag: 'path',\n attributes: _objectSpread({}, FILL, {\n opacity: '1',\n d: 'M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z'\n }),\n children: [{\n tag: 'animate',\n attributes: _objectSpread({}, OPACITY_ANIMATE, {\n values: '1;0;0;0;0;1;'\n })\n }]\n};\nvar EXCLAMATION = {\n tag: 'path',\n attributes: _objectSpread({}, FILL, {\n opacity: '0',\n d: 'M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z'\n }),\n children: [{\n tag: 'animate',\n attributes: _objectSpread({}, OPACITY_ANIMATE, {\n values: '0;0;1;1;0;0;'\n })\n }]\n};\nvar missing = {\n tag: 'g',\n children: [RING, DOT, QUESTION, EXCLAMATION]\n};\n\nvar styles$2 = namespace.styles;\nfunction asFoundIcon(icon) {\n var width = icon[0];\n var height = icon[1];\n\n var _icon$slice = icon.slice(4),\n _icon$slice2 = _slicedToArray(_icon$slice, 1),\n vectorData = _icon$slice2[0];\n\n var element = null;\n\n if (Array.isArray(vectorData)) {\n element = {\n tag: 'g',\n attributes: {\n class: \"\".concat(config.familyPrefix, \"-\").concat(DUOTONE_CLASSES.GROUP)\n },\n children: [{\n tag: 'path',\n attributes: {\n class: \"\".concat(config.familyPrefix, \"-\").concat(DUOTONE_CLASSES.SECONDARY),\n fill: 'currentColor',\n d: vectorData[0]\n }\n }, {\n tag: 'path',\n attributes: {\n class: \"\".concat(config.familyPrefix, \"-\").concat(DUOTONE_CLASSES.PRIMARY),\n fill: 'currentColor',\n d: vectorData[1]\n }\n }]\n };\n } else {\n element = {\n tag: 'path',\n attributes: {\n fill: 'currentColor',\n d: vectorData\n }\n };\n }\n\n return {\n found: true,\n width: width,\n height: height,\n icon: element\n };\n}\nfunction findIcon(iconName, prefix) {\n return new picked(function (resolve, reject) {\n var val = {\n found: false,\n width: 512,\n height: 512,\n icon: missing\n };\n\n if (iconName && prefix && styles$2[prefix] && styles$2[prefix][iconName]) {\n var icon = styles$2[prefix][iconName];\n return resolve(asFoundIcon(icon));\n }\n\n var headers = {};\n\n if (_typeof(WINDOW.FontAwesomeKitConfig) === 'object' && typeof window.FontAwesomeKitConfig.token === 'string') {\n headers['fa-kit-token'] = WINDOW.FontAwesomeKitConfig.token;\n }\n\n if (iconName && prefix && !config.showMissingIcons) {\n reject(new MissingIcon(\"Icon is missing for prefix \".concat(prefix, \" with icon name \").concat(iconName)));\n } else {\n resolve(val);\n }\n });\n}\n\nvar styles$3 = namespace.styles;\n\nfunction generateSvgReplacementMutation(node, nodeMeta) {\n var iconName = nodeMeta.iconName,\n title = nodeMeta.title,\n titleId = nodeMeta.titleId,\n prefix = nodeMeta.prefix,\n transform = nodeMeta.transform,\n symbol = nodeMeta.symbol,\n mask = nodeMeta.mask,\n maskId = nodeMeta.maskId,\n extra = nodeMeta.extra;\n return new picked(function (resolve, reject) {\n picked.all([findIcon(iconName, prefix), findIcon(mask.iconName, mask.prefix)]).then(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n main = _ref2[0],\n mask = _ref2[1];\n\n resolve([node, makeInlineSvgAbstract({\n icons: {\n main: main,\n mask: mask\n },\n prefix: prefix,\n iconName: iconName,\n transform: transform,\n symbol: symbol,\n mask: mask,\n maskId: maskId,\n title: title,\n titleId: titleId,\n extra: extra,\n watchable: true\n })]);\n });\n });\n}\n\nfunction generateLayersText(node, nodeMeta) {\n var title = nodeMeta.title,\n transform = nodeMeta.transform,\n extra = nodeMeta.extra;\n var width = null;\n var height = null;\n\n if (IS_IE) {\n var computedFontSize = parseInt(getComputedStyle(node).fontSize, 10);\n var boundingClientRect = node.getBoundingClientRect();\n width = boundingClientRect.width / computedFontSize;\n height = boundingClientRect.height / computedFontSize;\n }\n\n if (config.autoA11y && !title) {\n extra.attributes['aria-hidden'] = 'true';\n }\n\n return picked.resolve([node, makeLayersTextAbstract({\n content: node.innerHTML,\n width: width,\n height: height,\n transform: transform,\n title: title,\n extra: extra,\n watchable: true\n })]);\n}\n\nfunction generateMutation(node) {\n var nodeMeta = parseMeta(node);\n\n if (~nodeMeta.extra.classes.indexOf(LAYERS_TEXT_CLASSNAME)) {\n return generateLayersText(node, nodeMeta);\n } else {\n return generateSvgReplacementMutation(node, nodeMeta);\n }\n}\n\nfunction onTree(root) {\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n if (!IS_DOM) return;\n var htmlClassList = DOCUMENT.documentElement.classList;\n\n var hclAdd = function hclAdd(suffix) {\n return htmlClassList.add(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n };\n\n var hclRemove = function hclRemove(suffix) {\n return htmlClassList.remove(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n };\n\n var prefixes = config.autoFetchSvg ? Object.keys(PREFIX_TO_STYLE) : Object.keys(styles$3);\n var prefixesDomQuery = [\".\".concat(LAYERS_TEXT_CLASSNAME, \":not([\").concat(DATA_FA_I2SVG, \"])\")].concat(prefixes.map(function (p) {\n return \".\".concat(p, \":not([\").concat(DATA_FA_I2SVG, \"])\");\n })).join(', ');\n\n if (prefixesDomQuery.length === 0) {\n return;\n }\n\n var candidates = [];\n\n try {\n candidates = toArray(root.querySelectorAll(prefixesDomQuery));\n } catch (e) {// noop\n }\n\n if (candidates.length > 0) {\n hclAdd('pending');\n hclRemove('complete');\n } else {\n return;\n }\n\n var mark = perf.begin('onTree');\n var mutations = candidates.reduce(function (acc, node) {\n try {\n var mutation = generateMutation(node);\n\n if (mutation) {\n acc.push(mutation);\n }\n } catch (e) {\n if (!PRODUCTION) {\n if (e instanceof MissingIcon) {\n console.error(e);\n }\n }\n }\n\n return acc;\n }, []);\n return new picked(function (resolve, reject) {\n picked.all(mutations).then(function (resolvedMutations) {\n perform(resolvedMutations, function () {\n hclAdd('active');\n hclAdd('complete');\n hclRemove('pending');\n if (typeof callback === 'function') callback();\n mark();\n resolve();\n });\n }).catch(function () {\n mark();\n reject();\n });\n });\n}\nfunction onNode(node) {\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n generateMutation(node).then(function (mutation) {\n if (mutation) {\n perform([mutation], callback);\n }\n });\n}\n\nfunction replaceForPosition(node, position) {\n var pendingAttribute = \"\".concat(DATA_FA_PSEUDO_ELEMENT_PENDING).concat(position.replace(':', '-'));\n return new picked(function (resolve, reject) {\n if (node.getAttribute(pendingAttribute) !== null) {\n // This node is already being processed\n return resolve();\n }\n\n var children = toArray(node.children);\n var alreadyProcessedPseudoElement = children.filter(function (c) {\n return c.getAttribute(DATA_FA_PSEUDO_ELEMENT) === position;\n })[0];\n var styles = WINDOW.getComputedStyle(node, position);\n var fontFamily = styles.getPropertyValue('font-family').match(FONT_FAMILY_PATTERN);\n var fontWeight = styles.getPropertyValue('font-weight');\n var content = styles.getPropertyValue('content');\n\n if (alreadyProcessedPseudoElement && !fontFamily) {\n // If we've already processed it but the current computed style does not result in a font-family,\n // that probably means that a class name that was previously present to make the icon has been\n // removed. So we now should delete the icon.\n node.removeChild(alreadyProcessedPseudoElement);\n return resolve();\n } else if (fontFamily && content !== 'none' && content !== '') {\n var prefix = ~['Solid', 'Regular', 'Light', 'Duotone', 'Brands'].indexOf(fontFamily[1]) ? STYLE_TO_PREFIX[fontFamily[1].toLowerCase()] : FONT_WEIGHT_TO_PREFIX[fontWeight];\n var hexValue = toHex(content.length === 3 ? content.substr(1, 1) : content);\n var iconName = byUnicode(prefix, hexValue);\n var iconIdentifier = iconName; // Only convert the pseudo element in this :before/:after position into an icon if we haven't\n // already done so with the same prefix and iconName\n\n if (iconName && (!alreadyProcessedPseudoElement || alreadyProcessedPseudoElement.getAttribute(DATA_PREFIX) !== prefix || alreadyProcessedPseudoElement.getAttribute(DATA_ICON) !== iconIdentifier)) {\n node.setAttribute(pendingAttribute, iconIdentifier);\n\n if (alreadyProcessedPseudoElement) {\n // Delete the old one, since we're replacing it with a new one\n node.removeChild(alreadyProcessedPseudoElement);\n }\n\n var meta = blankMeta();\n var extra = meta.extra;\n extra.attributes[DATA_FA_PSEUDO_ELEMENT] = position;\n findIcon(iconName, prefix).then(function (main) {\n var abstract = makeInlineSvgAbstract(_objectSpread({}, meta, {\n icons: {\n main: main,\n mask: emptyCanonicalIcon()\n },\n prefix: prefix,\n iconName: iconIdentifier,\n extra: extra,\n watchable: true\n }));\n var element = DOCUMENT.createElement('svg');\n\n if (position === ':before') {\n node.insertBefore(element, node.firstChild);\n } else {\n node.appendChild(element);\n }\n\n element.outerHTML = abstract.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n node.removeAttribute(pendingAttribute);\n resolve();\n }).catch(reject);\n } else {\n resolve();\n }\n } else {\n resolve();\n }\n });\n}\n\nfunction replace(node) {\n return picked.all([replaceForPosition(node, ':before'), replaceForPosition(node, ':after')]);\n}\n\nfunction processable(node) {\n return node.parentNode !== document.head && !~TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS.indexOf(node.tagName.toUpperCase()) && !node.getAttribute(DATA_FA_PSEUDO_ELEMENT) && (!node.parentNode || node.parentNode.tagName !== 'svg');\n}\n\nfunction searchPseudoElements (root) {\n if (!IS_DOM) return;\n return new picked(function (resolve, reject) {\n var operations = toArray(root.querySelectorAll('*')).filter(processable).map(replace);\n var end = perf.begin('searchPseudoElements');\n disableObservation();\n picked.all(operations).then(function () {\n end();\n enableObservation();\n resolve();\n }).catch(function () {\n end();\n enableObservation();\n reject();\n });\n });\n}\n\nvar baseStyles = \"svg:not(:root).svg-inline--fa {\\n overflow: visible;\\n}\\n\\n.svg-inline--fa {\\n display: inline-block;\\n font-size: inherit;\\n height: 1em;\\n overflow: visible;\\n vertical-align: -0.125em;\\n}\\n.svg-inline--fa.fa-lg {\\n vertical-align: -0.225em;\\n}\\n.svg-inline--fa.fa-w-1 {\\n width: 0.0625em;\\n}\\n.svg-inline--fa.fa-w-2 {\\n width: 0.125em;\\n}\\n.svg-inline--fa.fa-w-3 {\\n width: 0.1875em;\\n}\\n.svg-inline--fa.fa-w-4 {\\n width: 0.25em;\\n}\\n.svg-inline--fa.fa-w-5 {\\n width: 0.3125em;\\n}\\n.svg-inline--fa.fa-w-6 {\\n width: 0.375em;\\n}\\n.svg-inline--fa.fa-w-7 {\\n width: 0.4375em;\\n}\\n.svg-inline--fa.fa-w-8 {\\n width: 0.5em;\\n}\\n.svg-inline--fa.fa-w-9 {\\n width: 0.5625em;\\n}\\n.svg-inline--fa.fa-w-10 {\\n width: 0.625em;\\n}\\n.svg-inline--fa.fa-w-11 {\\n width: 0.6875em;\\n}\\n.svg-inline--fa.fa-w-12 {\\n width: 0.75em;\\n}\\n.svg-inline--fa.fa-w-13 {\\n width: 0.8125em;\\n}\\n.svg-inline--fa.fa-w-14 {\\n width: 0.875em;\\n}\\n.svg-inline--fa.fa-w-15 {\\n width: 0.9375em;\\n}\\n.svg-inline--fa.fa-w-16 {\\n width: 1em;\\n}\\n.svg-inline--fa.fa-w-17 {\\n width: 1.0625em;\\n}\\n.svg-inline--fa.fa-w-18 {\\n width: 1.125em;\\n}\\n.svg-inline--fa.fa-w-19 {\\n width: 1.1875em;\\n}\\n.svg-inline--fa.fa-w-20 {\\n width: 1.25em;\\n}\\n.svg-inline--fa.fa-pull-left {\\n margin-right: 0.3em;\\n width: auto;\\n}\\n.svg-inline--fa.fa-pull-right {\\n margin-left: 0.3em;\\n width: auto;\\n}\\n.svg-inline--fa.fa-border {\\n height: 1.5em;\\n}\\n.svg-inline--fa.fa-li {\\n width: 2em;\\n}\\n.svg-inline--fa.fa-fw {\\n width: 1.25em;\\n}\\n\\n.fa-layers svg.svg-inline--fa {\\n bottom: 0;\\n left: 0;\\n margin: auto;\\n position: absolute;\\n right: 0;\\n top: 0;\\n}\\n\\n.fa-layers {\\n display: inline-block;\\n height: 1em;\\n position: relative;\\n text-align: center;\\n vertical-align: -0.125em;\\n width: 1em;\\n}\\n.fa-layers svg.svg-inline--fa {\\n -webkit-transform-origin: center center;\\n transform-origin: center center;\\n}\\n\\n.fa-layers-counter, .fa-layers-text {\\n display: inline-block;\\n position: absolute;\\n text-align: center;\\n}\\n\\n.fa-layers-text {\\n left: 50%;\\n top: 50%;\\n -webkit-transform: translate(-50%, -50%);\\n transform: translate(-50%, -50%);\\n -webkit-transform-origin: center center;\\n transform-origin: center center;\\n}\\n\\n.fa-layers-counter {\\n background-color: #ff253a;\\n border-radius: 1em;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n color: #fff;\\n height: 1.5em;\\n line-height: 1;\\n max-width: 5em;\\n min-width: 1.5em;\\n overflow: hidden;\\n padding: 0.25em;\\n right: 0;\\n text-overflow: ellipsis;\\n top: 0;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: top right;\\n transform-origin: top right;\\n}\\n\\n.fa-layers-bottom-right {\\n bottom: 0;\\n right: 0;\\n top: auto;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: bottom right;\\n transform-origin: bottom right;\\n}\\n\\n.fa-layers-bottom-left {\\n bottom: 0;\\n left: 0;\\n right: auto;\\n top: auto;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: bottom left;\\n transform-origin: bottom left;\\n}\\n\\n.fa-layers-top-right {\\n right: 0;\\n top: 0;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: top right;\\n transform-origin: top right;\\n}\\n\\n.fa-layers-top-left {\\n left: 0;\\n right: auto;\\n top: 0;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: top left;\\n transform-origin: top left;\\n}\\n\\n.fa-lg {\\n font-size: 1.3333333333em;\\n line-height: 0.75em;\\n vertical-align: -0.0667em;\\n}\\n\\n.fa-xs {\\n font-size: 0.75em;\\n}\\n\\n.fa-sm {\\n font-size: 0.875em;\\n}\\n\\n.fa-1x {\\n font-size: 1em;\\n}\\n\\n.fa-2x {\\n font-size: 2em;\\n}\\n\\n.fa-3x {\\n font-size: 3em;\\n}\\n\\n.fa-4x {\\n font-size: 4em;\\n}\\n\\n.fa-5x {\\n font-size: 5em;\\n}\\n\\n.fa-6x {\\n font-size: 6em;\\n}\\n\\n.fa-7x {\\n font-size: 7em;\\n}\\n\\n.fa-8x {\\n font-size: 8em;\\n}\\n\\n.fa-9x {\\n font-size: 9em;\\n}\\n\\n.fa-10x {\\n font-size: 10em;\\n}\\n\\n.fa-fw {\\n text-align: center;\\n width: 1.25em;\\n}\\n\\n.fa-ul {\\n list-style-type: none;\\n margin-left: 2.5em;\\n padding-left: 0;\\n}\\n.fa-ul > li {\\n position: relative;\\n}\\n\\n.fa-li {\\n left: -2em;\\n position: absolute;\\n text-align: center;\\n width: 2em;\\n line-height: inherit;\\n}\\n\\n.fa-border {\\n border: solid 0.08em #eee;\\n border-radius: 0.1em;\\n padding: 0.2em 0.25em 0.15em;\\n}\\n\\n.fa-pull-left {\\n float: left;\\n}\\n\\n.fa-pull-right {\\n float: right;\\n}\\n\\n.fa.fa-pull-left,\\n.fas.fa-pull-left,\\n.far.fa-pull-left,\\n.fal.fa-pull-left,\\n.fab.fa-pull-left {\\n margin-right: 0.3em;\\n}\\n.fa.fa-pull-right,\\n.fas.fa-pull-right,\\n.far.fa-pull-right,\\n.fal.fa-pull-right,\\n.fab.fa-pull-right {\\n margin-left: 0.3em;\\n}\\n\\n.fa-spin {\\n -webkit-animation: fa-spin 2s infinite linear;\\n animation: fa-spin 2s infinite linear;\\n}\\n\\n.fa-pulse {\\n -webkit-animation: fa-spin 1s infinite steps(8);\\n animation: fa-spin 1s infinite steps(8);\\n}\\n\\n@-webkit-keyframes fa-spin {\\n 0% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n\\n@keyframes fa-spin {\\n 0% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n.fa-rotate-90 {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)\\\";\\n -webkit-transform: rotate(90deg);\\n transform: rotate(90deg);\\n}\\n\\n.fa-rotate-180 {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)\\\";\\n -webkit-transform: rotate(180deg);\\n transform: rotate(180deg);\\n}\\n\\n.fa-rotate-270 {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)\\\";\\n -webkit-transform: rotate(270deg);\\n transform: rotate(270deg);\\n}\\n\\n.fa-flip-horizontal {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)\\\";\\n -webkit-transform: scale(-1, 1);\\n transform: scale(-1, 1);\\n}\\n\\n.fa-flip-vertical {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\\\";\\n -webkit-transform: scale(1, -1);\\n transform: scale(1, -1);\\n}\\n\\n.fa-flip-both, .fa-flip-horizontal.fa-flip-vertical {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\\\";\\n -webkit-transform: scale(-1, -1);\\n transform: scale(-1, -1);\\n}\\n\\n:root .fa-rotate-90,\\n:root .fa-rotate-180,\\n:root .fa-rotate-270,\\n:root .fa-flip-horizontal,\\n:root .fa-flip-vertical,\\n:root .fa-flip-both {\\n -webkit-filter: none;\\n filter: none;\\n}\\n\\n.fa-stack {\\n display: inline-block;\\n height: 2em;\\n position: relative;\\n width: 2.5em;\\n}\\n\\n.fa-stack-1x,\\n.fa-stack-2x {\\n bottom: 0;\\n left: 0;\\n margin: auto;\\n position: absolute;\\n right: 0;\\n top: 0;\\n}\\n\\n.svg-inline--fa.fa-stack-1x {\\n height: 1em;\\n width: 1.25em;\\n}\\n.svg-inline--fa.fa-stack-2x {\\n height: 2em;\\n width: 2.5em;\\n}\\n\\n.fa-inverse {\\n color: #fff;\\n}\\n\\n.sr-only {\\n border: 0;\\n clip: rect(0, 0, 0, 0);\\n height: 1px;\\n margin: -1px;\\n overflow: hidden;\\n padding: 0;\\n position: absolute;\\n width: 1px;\\n}\\n\\n.sr-only-focusable:active, .sr-only-focusable:focus {\\n clip: auto;\\n height: auto;\\n margin: 0;\\n overflow: visible;\\n position: static;\\n width: auto;\\n}\\n\\n.svg-inline--fa .fa-primary {\\n fill: var(--fa-primary-color, currentColor);\\n opacity: 1;\\n opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa .fa-secondary {\\n fill: var(--fa-secondary-color, currentColor);\\n opacity: 0.4;\\n opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-primary {\\n opacity: 0.4;\\n opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-secondary {\\n opacity: 1;\\n opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa mask .fa-primary,\\n.svg-inline--fa mask .fa-secondary {\\n fill: black;\\n}\\n\\n.fad.fa-inverse {\\n color: #fff;\\n}\";\n\nfunction css () {\n var dfp = DEFAULT_FAMILY_PREFIX;\n var drc = DEFAULT_REPLACEMENT_CLASS;\n var fp = config.familyPrefix;\n var rc = config.replacementClass;\n var s = baseStyles;\n\n if (fp !== dfp || rc !== drc) {\n var dPatt = new RegExp(\"\\\\.\".concat(dfp, \"\\\\-\"), 'g');\n var customPropPatt = new RegExp(\"\\\\--\".concat(dfp, \"\\\\-\"), 'g');\n var rPatt = new RegExp(\"\\\\.\".concat(drc), 'g');\n s = s.replace(dPatt, \".\".concat(fp, \"-\")).replace(customPropPatt, \"--\".concat(fp, \"-\")).replace(rPatt, \".\".concat(rc));\n }\n\n return s;\n}\n\nvar Library =\n/*#__PURE__*/\nfunction () {\n function Library() {\n _classCallCheck(this, Library);\n\n this.definitions = {};\n }\n\n _createClass(Library, [{\n key: \"add\",\n value: function add() {\n var _this = this;\n\n for (var _len = arguments.length, definitions = new Array(_len), _key = 0; _key < _len; _key++) {\n definitions[_key] = arguments[_key];\n }\n\n var additions = definitions.reduce(this._pullDefinitions, {});\n Object.keys(additions).forEach(function (key) {\n _this.definitions[key] = _objectSpread({}, _this.definitions[key] || {}, additions[key]);\n defineIcons(key, additions[key]);\n build();\n });\n }\n }, {\n key: \"reset\",\n value: function reset() {\n this.definitions = {};\n }\n }, {\n key: \"_pullDefinitions\",\n value: function _pullDefinitions(additions, definition) {\n var normalized = definition.prefix && definition.iconName && definition.icon ? {\n 0: definition\n } : definition;\n Object.keys(normalized).map(function (key) {\n var _normalized$key = normalized[key],\n prefix = _normalized$key.prefix,\n iconName = _normalized$key.iconName,\n icon = _normalized$key.icon;\n if (!additions[prefix]) additions[prefix] = {};\n additions[prefix][iconName] = icon;\n });\n return additions;\n }\n }]);\n\n return Library;\n}();\n\nfunction ensureCss() {\n if (config.autoAddCss && !_cssInserted) {\n insertCss(css());\n\n _cssInserted = true;\n }\n}\n\nfunction apiObject(val, abstractCreator) {\n Object.defineProperty(val, 'abstract', {\n get: abstractCreator\n });\n Object.defineProperty(val, 'html', {\n get: function get() {\n return val.abstract.map(function (a) {\n return toHtml(a);\n });\n }\n });\n Object.defineProperty(val, 'node', {\n get: function get() {\n if (!IS_DOM) return;\n var container = DOCUMENT.createElement('div');\n container.innerHTML = val.html;\n return container.children;\n }\n });\n return val;\n}\n\nfunction findIconDefinition(iconLookup) {\n var _iconLookup$prefix = iconLookup.prefix,\n prefix = _iconLookup$prefix === void 0 ? 'fa' : _iconLookup$prefix,\n iconName = iconLookup.iconName;\n if (!iconName) return;\n return iconFromMapping(library.definitions, prefix, iconName) || iconFromMapping(namespace.styles, prefix, iconName);\n}\n\nfunction resolveIcons(next) {\n return function (maybeIconDefinition) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var iconDefinition = (maybeIconDefinition || {}).icon ? maybeIconDefinition : findIconDefinition(maybeIconDefinition || {});\n var mask = params.mask;\n\n if (mask) {\n mask = (mask || {}).icon ? mask : findIconDefinition(mask || {});\n }\n\n return next(iconDefinition, _objectSpread({}, params, {\n mask: mask\n }));\n };\n}\n\nvar library = new Library();\nvar noAuto = function noAuto() {\n config.autoReplaceSvg = false;\n config.observeMutations = false;\n disconnect();\n};\nvar _cssInserted = false;\nvar dom = {\n i2svg: function i2svg() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (IS_DOM) {\n ensureCss();\n var _params$node = params.node,\n node = _params$node === void 0 ? DOCUMENT : _params$node,\n _params$callback = params.callback,\n callback = _params$callback === void 0 ? function () {} : _params$callback;\n\n if (config.searchPseudoElements) {\n searchPseudoElements(node);\n }\n\n return onTree(node, callback);\n } else {\n return picked.reject('Operation requires a DOM of some kind.');\n }\n },\n css: css,\n insertCss: function insertCss$$1() {\n if (!_cssInserted) {\n insertCss(css());\n\n _cssInserted = true;\n }\n },\n watch: function watch() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var autoReplaceSvgRoot = params.autoReplaceSvgRoot,\n observeMutationsRoot = params.observeMutationsRoot;\n\n if (config.autoReplaceSvg === false) {\n config.autoReplaceSvg = true;\n }\n\n config.observeMutations = true;\n domready(function () {\n autoReplace({\n autoReplaceSvgRoot: autoReplaceSvgRoot\n });\n observe({\n treeCallback: onTree,\n nodeCallback: onNode,\n pseudoElementsCallback: searchPseudoElements,\n observeMutationsRoot: observeMutationsRoot\n });\n });\n }\n};\nvar parse = {\n transform: function transform(transformString) {\n return parseTransformString(transformString);\n }\n};\nvar icon = resolveIcons(function (iconDefinition) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$transform = params.transform,\n transform = _params$transform === void 0 ? meaninglessTransform : _params$transform,\n _params$symbol = params.symbol,\n symbol = _params$symbol === void 0 ? false : _params$symbol,\n _params$mask = params.mask,\n mask = _params$mask === void 0 ? null : _params$mask,\n _params$maskId = params.maskId,\n maskId = _params$maskId === void 0 ? null : _params$maskId,\n _params$title = params.title,\n title = _params$title === void 0 ? null : _params$title,\n _params$titleId = params.titleId,\n titleId = _params$titleId === void 0 ? null : _params$titleId,\n _params$classes = params.classes,\n classes = _params$classes === void 0 ? [] : _params$classes,\n _params$attributes = params.attributes,\n attributes = _params$attributes === void 0 ? {} : _params$attributes,\n _params$styles = params.styles,\n styles = _params$styles === void 0 ? {} : _params$styles;\n if (!iconDefinition) return;\n var prefix = iconDefinition.prefix,\n iconName = iconDefinition.iconName,\n icon = iconDefinition.icon;\n return apiObject(_objectSpread({\n type: 'icon'\n }, iconDefinition), function () {\n ensureCss();\n\n if (config.autoA11y) {\n if (title) {\n attributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(titleId || nextUniqueId());\n } else {\n attributes['aria-hidden'] = 'true';\n attributes['focusable'] = 'false';\n }\n }\n\n return makeInlineSvgAbstract({\n icons: {\n main: asFoundIcon(icon),\n mask: mask ? asFoundIcon(mask.icon) : {\n found: false,\n width: null,\n height: null,\n icon: {}\n }\n },\n prefix: prefix,\n iconName: iconName,\n transform: _objectSpread({}, meaninglessTransform, transform),\n symbol: symbol,\n title: title,\n maskId: maskId,\n titleId: titleId,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: classes\n }\n });\n });\n});\nvar text = function text(content) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$transform2 = params.transform,\n transform = _params$transform2 === void 0 ? meaninglessTransform : _params$transform2,\n _params$title2 = params.title,\n title = _params$title2 === void 0 ? null : _params$title2,\n _params$classes2 = params.classes,\n classes = _params$classes2 === void 0 ? [] : _params$classes2,\n _params$attributes2 = params.attributes,\n attributes = _params$attributes2 === void 0 ? {} : _params$attributes2,\n _params$styles2 = params.styles,\n styles = _params$styles2 === void 0 ? {} : _params$styles2;\n return apiObject({\n type: 'text',\n content: content\n }, function () {\n ensureCss();\n return makeLayersTextAbstract({\n content: content,\n transform: _objectSpread({}, meaninglessTransform, transform),\n title: title,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: [\"\".concat(config.familyPrefix, \"-layers-text\")].concat(_toConsumableArray(classes))\n }\n });\n });\n};\nvar counter = function counter(content) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$title3 = params.title,\n title = _params$title3 === void 0 ? null : _params$title3,\n _params$classes3 = params.classes,\n classes = _params$classes3 === void 0 ? [] : _params$classes3,\n _params$attributes3 = params.attributes,\n attributes = _params$attributes3 === void 0 ? {} : _params$attributes3,\n _params$styles3 = params.styles,\n styles = _params$styles3 === void 0 ? {} : _params$styles3;\n return apiObject({\n type: 'counter',\n content: content\n }, function () {\n ensureCss();\n return makeLayersCounterAbstract({\n content: content.toString(),\n title: title,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: [\"\".concat(config.familyPrefix, \"-layers-counter\")].concat(_toConsumableArray(classes))\n }\n });\n });\n};\nvar layer = function layer(assembler) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$classes4 = params.classes,\n classes = _params$classes4 === void 0 ? [] : _params$classes4;\n return apiObject({\n type: 'layer'\n }, function () {\n ensureCss();\n var children = [];\n assembler(function (args) {\n Array.isArray(args) ? args.map(function (a) {\n children = children.concat(a.abstract);\n }) : children = children.concat(args.abstract);\n });\n return [{\n tag: 'span',\n attributes: {\n class: [\"\".concat(config.familyPrefix, \"-layers\")].concat(_toConsumableArray(classes)).join(' ')\n },\n children: children\n }];\n });\n};\nvar api = {\n noAuto: noAuto,\n config: config,\n dom: dom,\n library: library,\n parse: parse,\n findIconDefinition: findIconDefinition,\n icon: icon,\n text: text,\n counter: counter,\n layer: layer,\n toHtml: toHtml\n};\n\nvar autoReplace = function autoReplace() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _params$autoReplaceSv = params.autoReplaceSvgRoot,\n autoReplaceSvgRoot = _params$autoReplaceSv === void 0 ? DOCUMENT : _params$autoReplaceSv;\n if ((Object.keys(namespace.styles).length > 0 || config.autoFetchSvg) && IS_DOM && config.autoReplaceSvg) api.dom.i2svg({\n node: autoReplaceSvgRoot\n });\n};\n\nexport { icon, noAuto, config, toHtml, layer, text, counter, library, dom, parse, findIconDefinition };\n","module.exports = function(hljs) {\n return {\n keywords: {\n built_in:\n 'spawn spawn_link self',\n keyword:\n 'after and andalso|10 band begin bnot bor bsl bsr bxor case catch cond div end fun if ' +\n 'let not of or orelse|10 query receive rem try when xor'\n },\n contains: [\n {\n className: 'meta', begin: '^[0-9]+> ',\n relevance: 10\n },\n hljs.COMMENT('%', '$'),\n {\n className: 'number',\n begin: '\\\\b(\\\\d+#[a-fA-F0-9]+|\\\\d+(\\\\.\\\\d+)?([eE][-+]?\\\\d+)?)',\n relevance: 0\n },\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n {\n begin: '\\\\?(::)?([A-Z]\\\\w*(::)?)+'\n },\n {\n begin: '->'\n },\n {\n begin: 'ok'\n },\n {\n begin: '!'\n },\n {\n begin: '(\\\\b[a-z\\'][a-zA-Z0-9_\\']*:[a-z\\'][a-zA-Z0-9_\\']*)|(\\\\b[a-z\\'][a-zA-Z0-9_\\']*)',\n relevance: 0\n },\n {\n begin: '[A-Z][a-zA-Z0-9_\\']*',\n relevance: 0\n }\n ]\n };\n};","'use strict'\n\nvar formatter = require('format')\n\nvar fault = create(Error)\n\nmodule.exports = fault\n\nfault.eval = create(EvalError)\nfault.range = create(RangeError)\nfault.reference = create(ReferenceError)\nfault.syntax = create(SyntaxError)\nfault.type = create(TypeError)\nfault.uri = create(URIError)\n\nfault.create = create\n\n// Create a new `EConstructor`, with the formatted `format` as a first argument.\nfunction create(EConstructor) {\n FormattedError.displayName = EConstructor.displayName || EConstructor.name\n\n return FormattedError\n\n function FormattedError(format) {\n if (format) {\n format = formatter.apply(null, arguments)\n }\n\n return new EConstructor(format)\n }\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = {\n \"hljs\": {\n \"display\": \"block\",\n \"overflowX\": \"auto\",\n \"lineHeight\": \"1.45\",\n \"padding\": \"2rem\",\n \"background\": \"#2d2b57\",\n \"fontWeight\": \"normal\",\n \"color\": \"#e3dfff\"\n },\n \"hljs-title\": {\n \"color\": \"#fad000\",\n \"fontWeight\": \"normal\"\n },\n \"hljs-name\": {\n \"color\": \"#a1feff\",\n \"fontWeight\": \"normal\"\n },\n \"hljs-tag\": {\n \"color\": \"#ffffff\"\n },\n \"hljs-attr\": {\n \"color\": \"#f8d000\",\n \"fontStyle\": \"italic\"\n },\n \"hljs-built_in\": {\n \"color\": \"#fb9e00\"\n },\n \"hljs-selector-tag\": {\n \"color\": \"#fb9e00\",\n \"fontWeight\": \"normal\"\n },\n \"hljs-section\": {\n \"color\": \"#fb9e00\"\n },\n \"hljs-keyword\": {\n \"color\": \"#fb9e00\",\n \"fontWeight\": \"normal\"\n },\n \"hljs-subst\": {\n \"color\": \"#e3dfff\"\n },\n \"hljs-string\": {\n \"color\": \"#4cd213\"\n },\n \"hljs-attribute\": {\n \"color\": \"#4cd213\"\n },\n \"hljs-symbol\": {\n \"color\": \"#4cd213\"\n },\n \"hljs-bullet\": {\n \"color\": \"#4cd213\"\n },\n \"hljs-addition\": {\n \"color\": \"#4cd213\"\n },\n \"hljs-code\": {\n \"color\": \"#4cd213\"\n },\n \"hljs-regexp\": {\n \"color\": \"#4cd213\"\n },\n \"hljs-selector-class\": {\n \"color\": \"#4cd213\"\n },\n \"hljs-selector-attr\": {\n \"color\": \"#4cd213\"\n },\n \"hljs-selector-pseudo\": {\n \"color\": \"#4cd213\"\n },\n \"hljs-template-tag\": {\n \"color\": \"#4cd213\"\n },\n \"hljs-quote\": {\n \"color\": \"#4cd213\"\n },\n \"hljs-deletion\": {\n \"color\": \"#4cd213\"\n },\n \"hljs-meta\": {\n \"color\": \"#fb9e00\"\n },\n \"hljs-meta-string\": {\n \"color\": \"#fb9e00\"\n },\n \"hljs-comment\": {\n \"color\": \"#ac65ff\"\n },\n \"hljs-literal\": {\n \"fontWeight\": \"normal\",\n \"color\": \"#fa658d\"\n },\n \"hljs-strong\": {\n \"fontWeight\": \"bold\"\n },\n \"hljs-number\": {\n \"color\": \"#fa658d\"\n },\n \"hljs-emphasis\": {\n \"fontStyle\": \"italic\"\n }\n};\nexports.default = _default;","module.exports = function (hljs) {\n var PARAM = {\n begin: /[\\w-]+ *=/, returnBegin: true,\n relevance: 0,\n contains: [{className: 'attr', begin: /[\\w-]+/}]\n };\n var PARAMSBLOCK = {\n className: 'params',\n begin: /\\(/,\n end: /\\)/,\n contains: [PARAM],\n relevance : 0\n };\n var OPERATION = {\n className: 'function',\n begin: /:[\\w\\-.]+/,\n relevance: 0\n };\n var PATH = {\n className: 'string',\n begin: /\\B(([\\/.])[\\w\\-.\\/=]+)+/,\n };\n var COMMAND_PARAMS = {\n className: 'params',\n begin: /--[\\w\\-=\\/]+/,\n };\n return {\n aliases: ['wildfly-cli'],\n lexemes: '[a-z\\-]+',\n keywords: {\n keyword: 'alias batch cd clear command connect connection-factory connection-info data-source deploy ' +\n 'deployment-info deployment-overlay echo echo-dmr help history if jdbc-driver-info jms-queue|20 jms-topic|20 ls ' +\n 'patch pwd quit read-attribute read-operation reload rollout-plan run-batch set shutdown try unalias ' +\n 'undeploy unset version xa-data-source', // module\n literal: 'true false'\n },\n contains: [\n hljs.HASH_COMMENT_MODE,\n hljs.QUOTE_STRING_MODE,\n COMMAND_PARAMS,\n OPERATION,\n PATH,\n PARAMSBLOCK\n ]\n }\n};","module.exports = function (hljs) {\n return {\n aliases: ['feature'],\n keywords: 'Feature Background Ability Business\\ Need Scenario Scenarios Scenario\\ Outline Scenario\\ Template Examples Given And Then But When',\n contains: [\n {\n className: 'symbol',\n begin: '\\\\*',\n relevance: 0\n },\n {\n className: 'meta',\n begin: '@[^@\\\\s]+'\n },\n {\n begin: '\\\\|', end: '\\\\|\\\\w*$',\n contains: [\n {\n className: 'string',\n begin: '[^|]+'\n }\n ]\n },\n {\n className: 'variable',\n begin: '<', end: '>'\n },\n hljs.HASH_COMMENT_MODE,\n {\n className: 'string',\n begin: '\"\"\"', end: '\"\"\"'\n },\n hljs.QUOTE_STRING_MODE\n ]\n };\n};","module.exports = function(hljs) {\n return {\n contains: [\n // IP\n {\n className: 'number',\n begin: '\\\\b\\\\d{1,3}\\\\.\\\\d{1,3}\\\\.\\\\d{1,3}\\\\.\\\\d{1,3}(:\\\\d{1,5})?\\\\b'\n },\n // Other numbers\n {\n className: 'number',\n begin: '\\\\b\\\\d+\\\\b',\n relevance: 0\n },\n // Requests\n {\n className: 'string',\n begin: '\"(GET|POST|HEAD|PUT|DELETE|CONNECT|OPTIONS|PATCH|TRACE)', end: '\"',\n keywords: 'GET POST HEAD PUT DELETE CONNECT OPTIONS PATCH TRACE',\n illegal: '\\\\n',\n relevance: 10\n },\n // Dates\n {\n className: 'string',\n begin: /\\[/, end: /\\]/,\n illegal: '\\\\n'\n },\n // Strings\n {\n className: 'string',\n begin: '\"', end: '\"',\n illegal: '\\\\n'\n }\n ]\n };\n};","module.exports = function(hljs){\n\n // общий паттерн для определения идентификаторов\n var UNDERSCORE_IDENT_RE = '[A-Za-zА-Яа-яёЁ_][A-Za-zА-Яа-яёЁ_0-9]+';\n \n // v7 уникальные ключевые слова, отсутствующие в v8 ==> keyword\n var v7_keywords =\n 'далее ';\n\n // v8 ключевые слова ==> keyword\n var v8_keywords =\n 'возврат вызватьисключение выполнить для если и из или иначе иначеесли исключение каждого конецесли ' +\n 'конецпопытки конеццикла не новый перейти перем по пока попытка прервать продолжить тогда цикл экспорт ';\n\n // keyword : ключевые слова\n var KEYWORD = v7_keywords + v8_keywords;\n \n // v7 уникальные директивы, отсутствующие в v8 ==> meta-keyword\n var v7_meta_keywords =\n 'загрузитьизфайла ';\n\n // v8 ключевые слова в инструкциях препроцессора, директивах компиляции, аннотациях ==> meta-keyword\n var v8_meta_keywords =\n 'вебклиент вместо внешнеесоединение клиент конецобласти мобильноеприложениеклиент мобильноеприложениесервер ' +\n 'наклиенте наклиентенасервере наклиентенасерверебезконтекста насервере насерверебезконтекста область перед ' +\n 'после сервер толстыйклиентобычноеприложение толстыйклиентуправляемоеприложение тонкийклиент ';\n\n // meta-keyword : ключевые слова в инструкциях препроцессора, директивах компиляции, аннотациях\n var METAKEYWORD = v7_meta_keywords + v8_meta_keywords;\n\n // v7 системные константы ==> built_in\n var v7_system_constants =\n 'разделительстраниц разделительстрок символтабуляции ';\n \n // v7 уникальные методы глобального контекста, отсутствующие в v8 ==> built_in\n var v7_global_context_methods =\n 'ansitooem oemtoansi ввестивидсубконто ввестиперечисление ввестипериод ввестиплансчетов выбранныйплансчетов ' +\n 'датагод датамесяц датачисло заголовоксистемы значениевстроку значениеизстроки каталогиб каталогпользователя ' +\n 'кодсимв конгода конецпериодаби конецрассчитанногопериодаби конецстандартногоинтервала конквартала конмесяца ' +\n 'коннедели лог лог10 максимальноеколичествосубконто названиеинтерфейса названиенабораправ назначитьвид ' +\n 'назначитьсчет найтиссылки началопериодаби началостандартногоинтервала начгода начквартала начмесяца ' +\n 'начнедели номерднягода номерднянедели номернеделигода обработкаожидания основнойжурналрасчетов ' +\n 'основнойплансчетов основнойязык очиститьокносообщений периодстр получитьвремята получитьдатута ' +\n 'получитьдокументта получитьзначенияотбора получитьпозициюта получитьпустоезначение получитьта ' +\n 'префиксавтонумерации пропись пустоезначение разм разобратьпозициюдокумента рассчитатьрегистрына ' +\n 'рассчитатьрегистрыпо симв создатьобъект статусвозврата стрколичествострок сформироватьпозициюдокумента ' +\n 'счетпокоду текущеевремя типзначения типзначениястр установитьтана установитьтапо фиксшаблон шаблон ';\n \n // v8 методы глобального контекста ==> built_in\n var v8_global_context_methods =\n 'acos asin atan base64значение base64строка cos exp log log10 pow sin sqrt tan xmlзначение xmlстрока ' +\n 'xmlтип xmlтипзнч активноеокно безопасныйрежим безопасныйрежимразделенияданных булево ввестидату ввестизначение ' +\n 'ввестистроку ввестичисло возможностьчтенияxml вопрос восстановитьзначение врег выгрузитьжурналрегистрации ' +\n 'выполнитьобработкуоповещения выполнитьпроверкуправдоступа вычислить год данныеформывзначение дата день деньгода ' +\n 'деньнедели добавитьмесяц заблокироватьданныедляредактирования заблокироватьработупользователя завершитьработусистемы ' +\n 'загрузитьвнешнююкомпоненту закрытьсправку записатьjson записатьxml записатьдатуjson записьжурналарегистрации ' +\n 'заполнитьзначениясвойств запроситьразрешениепользователя запуститьприложение запуститьсистему зафиксироватьтранзакцию ' +\n 'значениевданныеформы значениевстрокувнутр значениевфайл значениезаполнено значениеизстрокивнутр значениеизфайла ' +\n 'изxmlтипа импортмоделиxdto имякомпьютера имяпользователя инициализироватьпредопределенныеданные информацияобошибке ' +\n 'каталогбиблиотекимобильногоустройства каталогвременныхфайлов каталогдокументов каталогпрограммы кодироватьстроку ' +\n 'кодлокализацииинформационнойбазы кодсимвола командасистемы конецгода конецдня конецквартала конецмесяца конецминуты ' +\n 'конецнедели конецчаса конфигурациябазыданныхизмененадинамически конфигурацияизменена копироватьданныеформы ' +\n 'копироватьфайл краткоепредставлениеошибки лев макс местноевремя месяц мин минута монопольныйрежим найти ' +\n 'найтинедопустимыесимволыxml найтиокнопонавигационнойссылке найтипомеченныенаудаление найтипоссылкам найтифайлы ' +\n 'началогода началодня началоквартала началомесяца началоминуты началонедели началочаса начатьзапросразрешенияпользователя ' +\n 'начатьзапускприложения начатькопированиефайла начатьперемещениефайла начатьподключениевнешнейкомпоненты ' +\n 'начатьподключениерасширенияработыскриптографией начатьподключениерасширенияработысфайлами начатьпоискфайлов ' +\n 'начатьполучениекаталогавременныхфайлов начатьполучениекаталогадокументов начатьполучениерабочегокаталогаданныхпользователя ' +\n 'начатьполучениефайлов начатьпомещениефайла начатьпомещениефайлов начатьсозданиедвоичныхданныхизфайла начатьсозданиекаталога ' +\n 'начатьтранзакцию начатьудалениефайлов начатьустановкувнешнейкомпоненты начатьустановкурасширенияработыскриптографией ' +\n 'начатьустановкурасширенияработысфайлами неделягода необходимостьзавершениясоединения номерсеансаинформационнойбазы ' +\n 'номерсоединенияинформационнойбазы нрег нстр обновитьинтерфейс обновитьнумерациюобъектов обновитьповторноиспользуемыезначения ' +\n 'обработкапрерыванияпользователя объединитьфайлы окр описаниеошибки оповестить оповеститьобизменении ' +\n 'отключитьобработчикзапросанастроекклиенталицензирования отключитьобработчикожидания отключитьобработчикоповещения ' +\n 'открытьзначение открытьиндекссправки открытьсодержаниесправки открытьсправку открытьформу открытьформумодально ' +\n 'отменитьтранзакцию очиститьжурналрегистрации очиститьнастройкипользователя очиститьсообщения параметрыдоступа ' +\n 'перейтипонавигационнойссылке переместитьфайл подключитьвнешнююкомпоненту ' +\n 'подключитьобработчикзапросанастроекклиенталицензирования подключитьобработчикожидания подключитьобработчикоповещения ' +\n 'подключитьрасширениеработыскриптографией подключитьрасширениеработысфайлами подробноепредставлениеошибки ' +\n 'показатьвводдаты показатьвводзначения показатьвводстроки показатьвводчисла показатьвопрос показатьзначение ' +\n 'показатьинформациюобошибке показатьнакарте показатьоповещениепользователя показатьпредупреждение полноеимяпользователя ' +\n 'получитьcomобъект получитьxmlтип получитьадреспоместоположению получитьблокировкусеансов получитьвремязавершенияспящегосеанса ' +\n 'получитьвремязасыпанияпассивногосеанса получитьвремяожиданияблокировкиданных получитьданныевыбора ' +\n 'получитьдополнительныйпараметрклиенталицензирования получитьдопустимыекодылокализации получитьдопустимыечасовыепояса ' +\n 'получитьзаголовокклиентскогоприложения получитьзаголовоксистемы получитьзначенияотборажурналарегистрации ' +\n 'получитьидентификаторконфигурации получитьизвременногохранилища получитьимявременногофайла ' +\n 'получитьимяклиенталицензирования получитьинформациюэкрановклиента получитьиспользованиежурналарегистрации ' +\n 'получитьиспользованиесобытияжурналарегистрации получитькраткийзаголовокприложения получитьмакетоформления ' +\n 'получитьмаскувсефайлы получитьмаскувсефайлыклиента получитьмаскувсефайлысервера получитьместоположениепоадресу ' +\n 'получитьминимальнуюдлинупаролейпользователей получитьнавигационнуюссылку получитьнавигационнуюссылкуинформационнойбазы ' +\n 'получитьобновлениеконфигурациибазыданных получитьобновлениепредопределенныхданныхинформационнойбазы получитьобщиймакет ' +\n 'получитьобщуюформу получитьокна получитьоперативнуюотметкувремени получитьотключениебезопасногорежима ' +\n 'получитьпараметрыфункциональныхопцийинтерфейса получитьполноеимяпредопределенногозначения ' +\n 'получитьпредставлениянавигационныхссылок получитьпроверкусложностипаролейпользователей получитьразделительпути ' +\n 'получитьразделительпутиклиента получитьразделительпутисервера получитьсеансыинформационнойбазы ' +\n 'получитьскоростьклиентскогосоединения получитьсоединенияинформационнойбазы получитьсообщенияпользователю ' +\n 'получитьсоответствиеобъектаиформы получитьсоставстандартногоинтерфейсаodata получитьструктурухранениябазыданных ' +\n 'получитьтекущийсеансинформационнойбазы получитьфайл получитьфайлы получитьформу получитьфункциональнуюопцию ' +\n 'получитьфункциональнуюопциюинтерфейса получитьчасовойпоясинформационнойбазы пользователиос поместитьвовременноехранилище ' +\n 'поместитьфайл поместитьфайлы прав праводоступа предопределенноезначение представлениекодалокализации представлениепериода ' +\n 'представлениеправа представлениеприложения представлениесобытияжурналарегистрации представлениечасовогопояса предупреждение ' +\n 'прекратитьработусистемы привилегированныйрежим продолжитьвызов прочитатьjson прочитатьxml прочитатьдатуjson пустаястрока ' +\n 'рабочийкаталогданныхпользователя разблокироватьданныедляредактирования разделитьфайл разорватьсоединениесвнешнимисточникомданных ' +\n 'раскодироватьстроку рольдоступна секунда сигнал символ скопироватьжурналрегистрации смещениелетнеговремени ' +\n 'смещениестандартноговремени соединитьбуферыдвоичныхданных создатькаталог создатьфабрикуxdto сокрл сокрлп сокрп сообщить ' +\n 'состояние сохранитьзначение сохранитьнастройкипользователя сред стрдлина стрзаканчиваетсяна стрзаменить стрнайти стрначинаетсяс ' +\n 'строка строкасоединенияинформационнойбазы стрполучитьстроку стрразделить стрсоединить стрсравнить стрчисловхождений '+\n 'стрчислострок стршаблон текущаядата текущаядатасеанса текущаяуниверсальнаядата текущаяуниверсальнаядатавмиллисекундах ' +\n 'текущийвариантинтерфейсаклиентскогоприложения текущийвариантосновногошрифтаклиентскогоприложения текущийкодлокализации ' +\n 'текущийрежимзапуска текущийязык текущийязыксистемы тип типзнч транзакцияактивна трег удалитьданныеинформационнойбазы ' +\n 'удалитьизвременногохранилища удалитьобъекты удалитьфайлы универсальноевремя установитьбезопасныйрежим ' +\n 'установитьбезопасныйрежимразделенияданных установитьблокировкусеансов установитьвнешнююкомпоненту ' +\n 'установитьвремязавершенияспящегосеанса установитьвремязасыпанияпассивногосеанса установитьвремяожиданияблокировкиданных ' +\n 'установитьзаголовокклиентскогоприложения установитьзаголовоксистемы установитьиспользованиежурналарегистрации ' +\n 'установитьиспользованиесобытияжурналарегистрации установитькраткийзаголовокприложения ' +\n 'установитьминимальнуюдлинупаролейпользователей установитьмонопольныйрежим установитьнастройкиклиенталицензирования ' +\n 'установитьобновлениепредопределенныхданныхинформационнойбазы установитьотключениебезопасногорежима ' +\n 'установитьпараметрыфункциональныхопцийинтерфейса установитьпривилегированныйрежим ' +\n 'установитьпроверкусложностипаролейпользователей установитьрасширениеработыскриптографией ' +\n 'установитьрасширениеработысфайлами установитьсоединениесвнешнимисточникомданных установитьсоответствиеобъектаиформы ' +\n 'установитьсоставстандартногоинтерфейсаodata установитьчасовойпоясинформационнойбазы установитьчасовойпояссеанса ' +\n 'формат цел час часовойпояс часовойпояссеанса число числопрописью этоадресвременногохранилища ';\n\n // v8 свойства глобального контекста ==> built_in\n var v8_global_context_property =\n 'wsссылки библиотекакартинок библиотекамакетовоформлениякомпоновкиданных библиотекастилей бизнеспроцессы ' +\n 'внешниеисточникиданных внешниеобработки внешниеотчеты встроенныепокупки главныйинтерфейс главныйстиль ' +\n 'документы доставляемыеуведомления журналыдокументов задачи информацияобинтернетсоединении использованиерабочейдаты ' +\n 'историяработыпользователя константы критерииотбора метаданные обработки отображениерекламы отправкадоставляемыхуведомлений ' +\n 'отчеты панельзадачос параметрзапуска параметрысеанса перечисления планывидоврасчета планывидовхарактеристик ' +\n 'планыобмена планысчетов полнотекстовыйпоиск пользователиинформационнойбазы последовательности проверкавстроенныхпокупок ' +\n 'рабочаядата расширенияконфигурации регистрыбухгалтерии регистрынакопления регистрырасчета регистрысведений ' +\n 'регламентныезадания сериализаторxdto справочники средствагеопозиционирования средствакриптографии средствамультимедиа ' +\n 'средстваотображениярекламы средствапочты средствателефонии фабрикаxdto файловыепотоки фоновыезадания хранилищанастроек ' +\n 'хранилищевариантовотчетов хранилищенастроекданныхформ хранилищеобщихнастроек хранилищепользовательскихнастроекдинамическихсписков ' +\n 'хранилищепользовательскихнастроекотчетов хранилищесистемныхнастроек ';\n\n // built_in : встроенные или библиотечные объекты (константы, классы, функции)\n var BUILTIN =\n v7_system_constants +\n v7_global_context_methods + v8_global_context_methods +\n v8_global_context_property;\n \n // v8 системные наборы значений ==> class\n var v8_system_sets_of_values =\n 'webцвета windowsцвета windowsшрифты библиотекакартинок рамкистиля символы цветастиля шрифтыстиля ';\n\n // v8 системные перечисления - интерфейсные ==> class\n var v8_system_enums_interface =\n 'автоматическоесохранениеданныхформывнастройках автонумерациявформе автораздвижениесерий ' +\n 'анимациядиаграммы вариантвыравниванияэлементовизаголовков вариантуправлениявысотойтаблицы ' +\n 'вертикальнаяпрокруткаформы вертикальноеположение вертикальноеположениеэлемента видгруппыформы ' +\n 'виддекорацииформы виддополненияэлементаформы видизмененияданных видкнопкиформы видпереключателя ' +\n 'видподписейкдиаграмме видполяформы видфлажка влияниеразмеранапузырекдиаграммы горизонтальноеположение ' +\n 'горизонтальноеположениеэлемента группировкаколонок группировкаподчиненныхэлементовформы ' +\n 'группыиэлементы действиеперетаскивания дополнительныйрежимотображения допустимыедействияперетаскивания ' +\n 'интервалмеждуэлементамиформы использованиевывода использованиеполосыпрокрутки ' +\n 'используемоезначениеточкибиржевойдиаграммы историявыборапривводе источникзначенийоситочекдиаграммы ' +\n 'источникзначенияразмерапузырькадиаграммы категориягруппыкоманд максимумсерий начальноеотображениедерева ' +\n 'начальноеотображениесписка обновлениетекстаредактирования ориентациядендрограммы ориентациядиаграммы ' +\n 'ориентацияметокдиаграммы ориентацияметоксводнойдиаграммы ориентацияэлементаформы отображениевдиаграмме ' +\n 'отображениевлегендедиаграммы отображениегруппыкнопок отображениезаголовкашкалыдиаграммы ' +\n 'отображениезначенийсводнойдиаграммы отображениезначенияизмерительнойдиаграммы ' +\n 'отображениеинтерваладиаграммыганта отображениекнопки отображениекнопкивыбора отображениеобсужденийформы ' +\n 'отображениеобычнойгруппы отображениеотрицательныхзначенийпузырьковойдиаграммы отображениепанелипоиска ' +\n 'отображениеподсказки отображениепредупрежденияприредактировании отображениеразметкиполосырегулирования ' +\n 'отображениестраницформы отображениетаблицы отображениетекстазначениядиаграммыганта ' +\n 'отображениеуправленияобычнойгруппы отображениефигурыкнопки палитрацветовдиаграммы поведениеобычнойгруппы ' +\n 'поддержкамасштабадендрограммы поддержкамасштабадиаграммыганта поддержкамасштабасводнойдиаграммы ' +\n 'поисквтаблицепривводе положениезаголовкаэлементаформы положениекартинкикнопкиформы ' +\n 'положениекартинкиэлементаграфическойсхемы положениекоманднойпанелиформы положениекоманднойпанелиэлементаформы ' +\n 'положениеопорнойточкиотрисовки положениеподписейкдиаграмме положениеподписейшкалызначенийизмерительнойдиаграммы ' +\n 'положениесостоянияпросмотра положениестрокипоиска положениетекстасоединительнойлинии положениеуправленияпоиском ' +\n 'положениешкалывремени порядокотображенияточекгоризонтальнойгистограммы порядоксерийвлегендедиаграммы ' +\n 'размеркартинки расположениезаголовкашкалыдиаграммы растягиваниеповертикалидиаграммыганта ' +\n 'режимавтоотображениясостояния режимвводастроктаблицы режимвыборанезаполненного режимвыделениядаты ' +\n 'режимвыделениястрокитаблицы режимвыделениятаблицы режимизмененияразмера режимизменениясвязанногозначения ' +\n 'режимиспользованиядиалогапечати режимиспользованияпараметракоманды режиммасштабированияпросмотра ' +\n 'режимосновногоокнаклиентскогоприложения режимоткрытияокнаформы режимотображениявыделения ' +\n 'режимотображениягеографическойсхемы режимотображениязначенийсерии режимотрисовкисеткиграфическойсхемы ' +\n 'режимполупрозрачностидиаграммы режимпробеловдиаграммы режимразмещениянастранице режимредактированияколонки ' +\n 'режимсглаживаниядиаграммы режимсглаживанияиндикатора режимсписказадач сквозноевыравнивание ' +\n 'сохранениеданныхформывнастройках способзаполнениятекстазаголовкашкалыдиаграммы ' +\n 'способопределенияограничивающегозначениядиаграммы стандартнаягруппакоманд стандартноеоформление ' +\n 'статусоповещенияпользователя стильстрелки типаппроксимациилиниитрендадиаграммы типдиаграммы ' +\n 'типединицышкалывремени типимпортасерийслоягеографическойсхемы типлиниигеографическойсхемы типлиниидиаграммы ' +\n 'типмаркерагеографическойсхемы типмаркерадиаграммы типобластиоформления ' +\n 'типорганизацииисточникаданныхгеографическойсхемы типотображениясериислоягеографическойсхемы ' +\n 'типотображенияточечногообъектагеографическойсхемы типотображенияшкалыэлементалегендыгеографическойсхемы ' +\n 'типпоискаобъектовгеографическойсхемы типпроекциигеографическойсхемы типразмещенияизмерений ' +\n 'типразмещенияреквизитовизмерений типрамкиэлементауправления типсводнойдиаграммы ' +\n 'типсвязидиаграммыганта типсоединениязначенийпосериямдиаграммы типсоединенияточекдиаграммы ' +\n 'типсоединительнойлинии типстороныэлементаграфическойсхемы типформыотчета типшкалырадарнойдиаграммы ' +\n 'факторлиниитрендадиаграммы фигуракнопки фигурыграфическойсхемы фиксациявтаблице форматдняшкалывремени ' +\n 'форматкартинки ширинаподчиненныхэлементовформы ';\n\n // v8 системные перечисления - свойства прикладных объектов ==> class\n var v8_system_enums_objects_properties =\n 'виддвижениябухгалтерии виддвижениянакопления видпериодарегистрарасчета видсчета видточкимаршрутабизнеспроцесса ' +\n 'использованиеагрегатарегистранакопления использованиегруппиэлементов использованиережимапроведения ' +\n 'использованиесреза периодичностьагрегатарегистранакопления режимавтовремя режимзаписидокумента режимпроведениядокумента ';\n\n // v8 системные перечисления - планы обмена ==> class\n var v8_system_enums_exchange_plans =\n 'авторегистрацияизменений допустимыйномерсообщения отправкаэлементаданных получениеэлементаданных ';\n\n // v8 системные перечисления - табличный документ ==> class\n var v8_system_enums_tabular_document =\n 'использованиерасшифровкитабличногодокумента ориентациястраницы положениеитоговколоноксводнойтаблицы ' +\n 'положениеитоговстроксводнойтаблицы положениетекстаотносительнокартинки расположениезаголовкагруппировкитабличногодокумента ' +\n 'способчтениязначенийтабличногодокумента типдвустороннейпечати типзаполненияобластитабличногодокумента ' +\n 'типкурсоровтабличногодокумента типлиниирисункатабличногодокумента типлинииячейкитабличногодокумента ' +\n 'типнаправленияпереходатабличногодокумента типотображениявыделениятабличногодокумента типотображениялинийсводнойтаблицы ' +\n 'типразмещениятекстатабличногодокумента типрисункатабличногодокумента типсмещениятабличногодокумента ' +\n 'типузоратабличногодокумента типфайлатабличногодокумента точностьпечати чередованиерасположениястраниц ';\n\n // v8 системные перечисления - планировщик ==> class\n var v8_system_enums_sheduler =\n 'отображениевремениэлементовпланировщика ';\n\n // v8 системные перечисления - форматированный документ ==> class\n var v8_system_enums_formatted_document =\n 'типфайлаформатированногодокумента ';\n\n // v8 системные перечисления - запрос ==> class\n var v8_system_enums_query =\n 'обходрезультатазапроса типзаписизапроса ';\n\n // v8 системные перечисления - построитель отчета ==> class\n var v8_system_enums_report_builder =\n 'видзаполнениярасшифровкипостроителяотчета типдобавленияпредставлений типизмеренияпостроителяотчета типразмещенияитогов ';\n\n // v8 системные перечисления - работа с файлами ==> class\n var v8_system_enums_files =\n 'доступкфайлу режимдиалогавыборафайла режимоткрытияфайла ';\n\n // v8 системные перечисления - построитель запроса ==> class\n var v8_system_enums_query_builder =\n 'типизмеренияпостроителязапроса ';\n\n // v8 системные перечисления - анализ данных ==> class\n var v8_system_enums_data_analysis =\n 'видданныханализа методкластеризации типединицыинтервалавременианализаданных типзаполнениятаблицырезультатаанализаданных ' +\n 'типиспользованиячисловыхзначенийанализаданных типисточникаданныхпоискаассоциаций типколонкианализаданныхдереворешений ' +\n 'типколонкианализаданныхкластеризация типколонкианализаданныхобщаястатистика типколонкианализаданныхпоискассоциаций ' +\n 'типколонкианализаданныхпоискпоследовательностей типколонкимоделипрогноза типмерырасстоянияанализаданных ' +\n 'типотсеченияправилассоциации типполяанализаданных типстандартизациианализаданных типупорядочиванияправилассоциациианализаданных ' +\n 'типупорядочиванияшаблоновпоследовательностейанализаданных типупрощениядереварешений ';\n\n // v8 системные перечисления - xml, json, xs, dom, xdto, web-сервисы ==> class\n var v8_system_enums_xml_json_xs_dom_xdto_ws =\n 'wsнаправлениепараметра вариантxpathxs вариантзаписидатыjson вариантпростоготипаxs видгруппымоделиxs видфасетаxdto ' +\n 'действиепостроителяdom завершенностьпростоготипаxs завершенностьсоставноготипаxs завершенностьсхемыxs запрещенныеподстановкиxs ' +\n 'исключениягруппподстановкиxs категорияиспользованияатрибутаxs категорияограниченияидентичностиxs категорияограниченияпространствименxs ' +\n 'методнаследованияxs модельсодержимогоxs назначениетипаxml недопустимыеподстановкиxs обработкапробельныхсимволовxs обработкасодержимогоxs ' +\n 'ограничениезначенияxs параметрыотбораузловdom переносстрокjson позициявдокументеdom пробельныесимволыxml типатрибутаxml типзначенияjson ' +\n 'типканоническогоxml типкомпонентыxs типпроверкиxml типрезультатаdomxpath типузлаdom типузлаxml формаxml формапредставленияxs ' +\n 'форматдатыjson экранированиесимволовjson ';\n\n // v8 системные перечисления - система компоновки данных ==> class\n var v8_system_enums_data_composition_system =\n 'видсравнениякомпоновкиданных действиеобработкирасшифровкикомпоновкиданных направлениесортировкикомпоновкиданных ' +\n 'расположениевложенныхэлементоврезультатакомпоновкиданных расположениеитоговкомпоновкиданных расположениегруппировкикомпоновкиданных ' +\n 'расположениеполейгруппировкикомпоновкиданных расположениеполякомпоновкиданных расположениереквизитовкомпоновкиданных ' +\n 'расположениересурсовкомпоновкиданных типбухгалтерскогоостаткакомпоновкиданных типвыводатекстакомпоновкиданных ' +\n 'типгруппировкикомпоновкиданных типгруппыэлементовотборакомпоновкиданных типдополненияпериодакомпоновкиданных ' +\n 'типзаголовкаполейкомпоновкиданных типмакетагруппировкикомпоновкиданных типмакетаобластикомпоновкиданных типостаткакомпоновкиданных ' +\n 'типпериодакомпоновкиданных типразмещениятекстакомпоновкиданных типсвязинаборовданныхкомпоновкиданных типэлементарезультатакомпоновкиданных ' +\n 'расположениелегендыдиаграммыкомпоновкиданных типпримененияотборакомпоновкиданных режимотображенияэлементанастройкикомпоновкиданных ' +\n 'режимотображениянастроеккомпоновкиданных состояниеэлементанастройкикомпоновкиданных способвосстановлениянастроеккомпоновкиданных ' +\n 'режимкомпоновкирезультата использованиепараметракомпоновкиданных автопозицияресурсовкомпоновкиданных '+\n 'вариантиспользованиягруппировкикомпоновкиданных расположениересурсоввдиаграммекомпоновкиданных фиксациякомпоновкиданных ' +\n 'использованиеусловногооформлениякомпоновкиданных ';\n\n // v8 системные перечисления - почта ==> class\n var v8_system_enums_email =\n 'важностьинтернетпочтовогосообщения обработкатекстаинтернетпочтовогосообщения способкодированияинтернетпочтовоговложения ' +\n 'способкодированиянеasciiсимволовинтернетпочтовогосообщения типтекстапочтовогосообщения протоколинтернетпочты ' +\n 'статусразборапочтовогосообщения ';\n\n // v8 системные перечисления - журнал регистрации ==> class\n var v8_system_enums_logbook =\n 'режимтранзакциизаписижурналарегистрации статустранзакциизаписижурналарегистрации уровеньжурналарегистрации ';\n\n // v8 системные перечисления - криптография ==> class\n var v8_system_enums_cryptography =\n 'расположениехранилищасертификатовкриптографии режимвключениясертификатовкриптографии режимпроверкисертификатакриптографии ' +\n 'типхранилищасертификатовкриптографии ';\n\n // v8 системные перечисления - ZIP ==> class\n var v8_system_enums_zip =\n 'кодировкаименфайловвzipфайле методсжатияzip методшифрованияzip режимвосстановленияпутейфайловzip режимобработкиподкаталоговzip ' +\n 'режимсохраненияпутейzip уровеньсжатияzip ';\n\n // v8 системные перечисления - \n // Блокировка данных, Фоновые задания, Автоматизированное тестирование,\n // Доставляемые уведомления, Встроенные покупки, Интернет, Работа с двоичными данными ==> class\n var v8_system_enums_other =\n 'звуковоеоповещение направлениепереходакстроке позициявпотоке порядокбайтов режимблокировкиданных режимуправленияблокировкойданных ' +\n 'сервисвстроенныхпокупок состояниефоновогозадания типподписчикадоставляемыхуведомлений уровеньиспользованиязащищенногосоединенияftp ';\n\n // v8 системные перечисления - схема запроса ==> class\n var v8_system_enums_request_schema =\n 'направлениепорядкасхемызапроса типдополненияпериодамисхемызапроса типконтрольнойточкисхемызапроса типобъединениясхемызапроса ' +\n 'типпараметрадоступнойтаблицысхемызапроса типсоединениясхемызапроса ';\n\n // v8 системные перечисления - свойства объектов метаданных ==> class\n var v8_system_enums_properties_of_metadata_objects =\n 'httpметод автоиспользованиеобщегореквизита автопрефиксномеразадачи вариантвстроенногоязыка видиерархии видрегистранакопления ' +\n 'видтаблицывнешнегоисточникаданных записьдвиженийприпроведении заполнениепоследовательностей индексирование ' +\n 'использованиебазыпланавидоврасчета использованиебыстроговыбора использованиеобщегореквизита использованиеподчинения ' +\n 'использованиеполнотекстовогопоиска использованиеразделяемыхданныхобщегореквизита использованиереквизита ' +\n 'назначениеиспользованияприложения назначениерасширенияконфигурации направлениепередачи обновлениепредопределенныхданных ' +\n 'оперативноепроведение основноепредставлениевидарасчета основноепредставлениевидахарактеристики основноепредставлениезадачи ' +\n 'основноепредставлениепланаобмена основноепредставлениесправочника основноепредставлениесчета перемещениеграницыприпроведении ' +\n 'периодичностьномерабизнеспроцесса периодичностьномерадокумента периодичностьрегистрарасчета периодичностьрегистрасведений ' +\n 'повторноеиспользованиевозвращаемыхзначений полнотекстовыйпоискпривводепостроке принадлежностьобъекта проведение ' +\n 'разделениеаутентификацииобщегореквизита разделениеданныхобщегореквизита разделениерасширенийконфигурацииобщегореквизита '+\n 'режимавтонумерацииобъектов режимзаписирегистра режимиспользованиямодальности ' +\n 'режимиспользованиясинхронныхвызововрасширенийплатформыивнешнихкомпонент режимповторногоиспользованиясеансов ' +\n 'режимполученияданныхвыборапривводепостроке режимсовместимости режимсовместимостиинтерфейса ' +\n 'режимуправленияблокировкойданныхпоумолчанию сериикодовпланавидовхарактеристик сериикодовпланасчетов ' +\n 'сериикодовсправочника созданиепривводе способвыбора способпоискастрокипривводепостроке способредактирования ' +\n 'типданныхтаблицывнешнегоисточникаданных типкодапланавидоврасчета типкодасправочника типмакета типномерабизнеспроцесса ' +\n 'типномерадокумента типномеразадачи типформы удалениедвижений ';\n\n // v8 системные перечисления - разные ==> class\n var v8_system_enums_differents =\n 'важностьпроблемыприменениярасширенияконфигурации вариантинтерфейсаклиентскогоприложения вариантмасштабаформклиентскогоприложения ' +\n 'вариантосновногошрифтаклиентскогоприложения вариантстандартногопериода вариантстандартнойдатыначала видграницы видкартинки ' +\n 'видотображенияполнотекстовогопоиска видрамки видсравнения видцвета видчисловогозначения видшрифта допустимаядлина допустимыйзнак ' +\n 'использованиеbyteordermark использованиеметаданныхполнотекстовогопоиска источникрасширенийконфигурации клавиша кодвозвратадиалога ' +\n 'кодировкаxbase кодировкатекста направлениепоиска направлениесортировки обновлениепредопределенныхданных обновлениеприизмененииданных ' +\n 'отображениепанелиразделов проверказаполнения режимдиалогавопрос режимзапускаклиентскогоприложения режимокругления режимоткрытияформприложения ' +\n 'режимполнотекстовогопоиска скоростьклиентскогосоединения состояниевнешнегоисточникаданных состояниеобновленияконфигурациибазыданных ' +\n 'способвыборасертификатаwindows способкодированиястроки статуссообщения типвнешнейкомпоненты типплатформы типповеденияклавишиenter ' +\n 'типэлементаинформацииовыполненииобновленияконфигурациибазыданных уровеньизоляциитранзакций хешфункция частидаты';\n\n // class: встроенные наборы значений, системные перечисления (содержат дочерние значения, обращения к которым через разыменование)\n var CLASS =\n v8_system_sets_of_values +\n v8_system_enums_interface +\n v8_system_enums_objects_properties +\n v8_system_enums_exchange_plans +\n v8_system_enums_tabular_document +\n v8_system_enums_sheduler +\n v8_system_enums_formatted_document +\n v8_system_enums_query +\n v8_system_enums_report_builder +\n v8_system_enums_files +\n v8_system_enums_query_builder +\n v8_system_enums_data_analysis +\n v8_system_enums_xml_json_xs_dom_xdto_ws +\n v8_system_enums_data_composition_system +\n v8_system_enums_email +\n v8_system_enums_logbook +\n v8_system_enums_cryptography +\n v8_system_enums_zip +\n v8_system_enums_other +\n v8_system_enums_request_schema +\n v8_system_enums_properties_of_metadata_objects +\n v8_system_enums_differents;\n\n // v8 общие объекты (у объектов есть конструктор, экземпляры создаются методом НОВЫЙ) ==> type\n var v8_shared_object =\n 'comобъект ftpсоединение httpзапрос httpсервисответ httpсоединение wsопределения wsпрокси xbase анализданных аннотацияxs ' +\n 'блокировкаданных буфердвоичныхданных включениеxs выражениекомпоновкиданных генераторслучайныхчисел географическаясхема ' +\n 'географическиекоординаты графическаясхема группамоделиxs данныерасшифровкикомпоновкиданных двоичныеданные дендрограмма ' +\n 'диаграмма диаграммаганта диалогвыборафайла диалогвыборацвета диалогвыборашрифта диалограсписаниярегламентногозадания ' +\n 'диалогредактированиястандартногопериода диапазон документdom документhtml документацияxs доставляемоеуведомление ' +\n 'записьdom записьfastinfoset записьhtml записьjson записьxml записьzipфайла записьданных записьтекста записьузловdom ' +\n 'запрос защищенноесоединениеopenssl значенияполейрасшифровкикомпоновкиданных извлечениетекста импортxs интернетпочта ' +\n 'интернетпочтовоесообщение интернетпочтовыйпрофиль интернетпрокси интернетсоединение информациядляприложенияxs ' +\n 'использованиеатрибутаxs использованиесобытияжурналарегистрации источникдоступныхнастроеккомпоновкиданных ' +\n 'итераторузловdom картинка квалификаторыдаты квалификаторыдвоичныхданных квалификаторыстроки квалификаторычисла ' +\n 'компоновщикмакетакомпоновкиданных компоновщикнастроеккомпоновкиданных конструктормакетаоформлениякомпоновкиданных ' +\n 'конструкторнастроеккомпоновкиданных конструкторформатнойстроки линия макеткомпоновкиданных макетобластикомпоновкиданных ' +\n 'макетоформлениякомпоновкиданных маскаxs менеджеркриптографии наборсхемxml настройкикомпоновкиданных настройкисериализацииjson ' +\n 'обработкакартинок обработкарасшифровкикомпоновкиданных обходдереваdom объявлениеатрибутаxs объявлениенотацииxs ' +\n 'объявлениеэлементаxs описаниеиспользованиясобытиядоступжурналарегистрации ' +\n 'описаниеиспользованиясобытияотказвдоступежурналарегистрации описаниеобработкирасшифровкикомпоновкиданных ' +\n 'описаниепередаваемогофайла описаниетипов определениегруппыатрибутовxs определениегруппымоделиxs ' +\n 'определениеограниченияидентичностиxs определениепростоготипаxs определениесоставноготипаxs определениетипадокументаdom ' +\n 'определенияxpathxs отборкомпоновкиданных пакетотображаемыхдокументов параметрвыбора параметркомпоновкиданных ' +\n 'параметрызаписиjson параметрызаписиxml параметрычтенияxml переопределениеxs планировщик полеанализаданных ' +\n 'полекомпоновкиданных построительdom построительзапроса построительотчета построительотчетаанализаданных ' +\n 'построительсхемxml поток потоквпамяти почта почтовоесообщение преобразованиеxsl преобразованиекканоническомуxml ' +\n 'процессорвыводарезультатакомпоновкиданныхвколлекциюзначений процессорвыводарезультатакомпоновкиданныхвтабличныйдокумент ' +\n 'процессоркомпоновкиданных разыменовательпространствименdom рамка расписаниерегламентногозадания расширенноеимяxml ' +\n 'результатчтенияданных своднаядиаграмма связьпараметравыбора связьпотипу связьпотипукомпоновкиданных сериализаторxdto ' +\n 'сертификатклиентаwindows сертификатклиентафайл сертификаткриптографии сертификатыудостоверяющихцентровwindows ' +\n 'сертификатыудостоверяющихцентровфайл сжатиеданных системнаяинформация сообщениепользователю сочетаниеклавиш ' +\n 'сравнениезначений стандартнаядатаначала стандартныйпериод схемаxml схемакомпоновкиданных табличныйдокумент ' +\n 'текстовыйдокумент тестируемоеприложение типданныхxml уникальныйидентификатор фабрикаxdto файл файловыйпоток ' +\n 'фасетдлиныxs фасетколичестваразрядовдробнойчастиxs фасетмаксимальноговключающегозначенияxs ' +\n 'фасетмаксимальногоисключающегозначенияxs фасетмаксимальнойдлиныxs фасетминимальноговключающегозначенияxs ' +\n 'фасетминимальногоисключающегозначенияxs фасетминимальнойдлиныxs фасетобразцаxs фасетобщегоколичестваразрядовxs ' +\n 'фасетперечисленияxs фасетпробельныхсимволовxs фильтрузловdom форматированнаястрока форматированныйдокумент ' +\n 'фрагментxs хешированиеданных хранилищезначения цвет чтениеfastinfoset чтениеhtml чтениеjson чтениеxml чтениеzipфайла ' +\n 'чтениеданных чтениетекста чтениеузловdom шрифт элементрезультатакомпоновкиданных ';\n\n // v8 универсальные коллекции значений ==> type\n var v8_universal_collection =\n 'comsafearray деревозначений массив соответствие списокзначений структура таблицазначений фиксированнаяструктура ' +\n 'фиксированноесоответствие фиксированныймассив ';\n\n // type : встроенные типы\n var TYPE =\n v8_shared_object +\n v8_universal_collection;\n\n // literal : примитивные типы\n var LITERAL = 'null истина ложь неопределено';\n \n // number : числа\n var NUMBERS = hljs.inherit(hljs.NUMBER_MODE);\n\n // string : строки\n var STRINGS = {\n className: 'string',\n begin: '\"|\\\\|', end: '\"|$',\n contains: [{begin: '\"\"'}]\n };\n\n // number : даты\n var DATE = {\n begin: \"'\", end: \"'\", excludeBegin: true, excludeEnd: true,\n contains: [\n {\n className: 'number',\n begin: '\\\\d{4}([\\\\.\\\\\\\\/:-]?\\\\d{2}){0,5}'\n }\n ]\n };\n \n // comment : комментарии\n var COMMENTS = hljs.inherit(hljs.C_LINE_COMMENT_MODE);\n \n // meta : инструкции препроцессора, директивы компиляции\n var META = {\n className: 'meta',\n lexemes: UNDERSCORE_IDENT_RE,\n begin: '#|&', end: '$',\n keywords: {'meta-keyword': KEYWORD + METAKEYWORD},\n contains: [\n COMMENTS\n ]\n };\n \n // symbol : метка goto\n var SYMBOL = {\n className: 'symbol',\n begin: '~', end: ';|:', excludeEnd: true\n }; \n \n // function : объявление процедур и функций\n var FUNCTION = {\n className: 'function',\n lexemes: UNDERSCORE_IDENT_RE,\n variants: [\n {begin: 'процедура|функция', end: '\\\\)', keywords: 'процедура функция'},\n {begin: 'конецпроцедуры|конецфункции', keywords: 'конецпроцедуры конецфункции'}\n ],\n contains: [\n {\n begin: '\\\\(', end: '\\\\)', endsParent : true,\n contains: [\n {\n className: 'params',\n lexemes: UNDERSCORE_IDENT_RE,\n begin: UNDERSCORE_IDENT_RE, end: ',', excludeEnd: true, endsWithParent: true,\n keywords: {\n keyword: 'знач',\n literal: LITERAL\n },\n contains: [\n NUMBERS,\n STRINGS,\n DATE\n ]\n },\n COMMENTS\n ]\n },\n hljs.inherit(hljs.TITLE_MODE, {begin: UNDERSCORE_IDENT_RE})\n ]\n };\n\n return {\n case_insensitive: true,\n lexemes: UNDERSCORE_IDENT_RE,\n keywords: {\n keyword: KEYWORD,\n built_in: BUILTIN,\n class: CLASS,\n type: TYPE,\n literal: LITERAL\n },\n contains: [\n META,\n FUNCTION,\n COMMENTS,\n SYMBOL,\n NUMBERS,\n STRINGS,\n DATE\n ] \n }\n};","/**\n * Assign properties from `props` to `obj`\n * @template O, P The obj and props types\n * @param {O} obj The object to copy properties to\n * @param {P} props The object to copy properties from\n * @returns {O & P}\n */\nexport function assign(obj, props) {\n\tfor (let i in props) obj[i] = props[i];\n\treturn /** @type {O & P} */ (obj);\n}\n\n/**\n * Check if two objects have a different shape\n * @param {object} a\n * @param {object} b\n * @returns {boolean}\n */\nexport function shallowDiffers(a, b) {\n\tfor (let i in a) if (i !== '__source' && !(i in b)) return true;\n\tfor (let i in b) if (i !== '__source' && a[i] !== b[i]) return true;\n\treturn false;\n}\n","module.exports = function(hljs) {\n var COMMENT = {\n variants: [\n hljs.COMMENT('--', '$'),\n hljs.COMMENT(\n '{-',\n '-}',\n {\n contains: ['self']\n }\n )\n ]\n };\n\n var CONSTRUCTOR = {\n className: 'type',\n begin: '\\\\b[A-Z][\\\\w\\']*', // TODO: other constructors (built-in, infix).\n relevance: 0\n };\n\n var LIST = {\n begin: '\\\\(', end: '\\\\)',\n illegal: '\"',\n contains: [\n {className: 'type', begin: '\\\\b[A-Z][\\\\w]*(\\\\((\\\\.\\\\.|,|\\\\w+)\\\\))?'},\n COMMENT\n ]\n };\n\n var RECORD = {\n begin: '{', end: '}',\n contains: LIST.contains\n };\n\n var CHARACTER = {\n className: 'string',\n begin: '\\'\\\\\\\\?.', end: '\\'',\n illegal: '.'\n };\n\n return {\n keywords:\n 'let in if then else case of where module import exposing ' +\n 'type alias as infix infixl infixr port effect command subscription',\n contains: [\n\n // Top-level constructions.\n\n {\n beginKeywords: 'port effect module', end: 'exposing',\n keywords: 'port effect module where command subscription exposing',\n contains: [LIST, COMMENT],\n illegal: '\\\\W\\\\.|;'\n },\n {\n begin: 'import', end: '$',\n keywords: 'import as exposing',\n contains: [LIST, COMMENT],\n illegal: '\\\\W\\\\.|;'\n },\n {\n begin: 'type', end: '$',\n keywords: 'type alias',\n contains: [CONSTRUCTOR, LIST, RECORD, COMMENT]\n },\n {\n beginKeywords: 'infix infixl infixr', end: '$',\n contains: [hljs.C_NUMBER_MODE, COMMENT]\n },\n {\n begin: 'port', end: '$',\n keywords: 'port',\n contains: [COMMENT]\n },\n\n // Literals and names.\n\n CHARACTER,\n hljs.QUOTE_STRING_MODE,\n hljs.C_NUMBER_MODE,\n CONSTRUCTOR,\n hljs.inherit(hljs.TITLE_MODE, {begin: '^[_a-z][\\\\w\\']*'}),\n COMMENT,\n\n {begin: '->|<-'} // No markup, relevance booster\n ],\n illegal: /;/\n };\n};","import ErrorAbbr from './ErrorAbbr';\nimport {\n faDiscord,\n faGithub, faGoogleDrive,\n faRedditAlien,\n faSteam,\n faTelegram,\n faTwitch,\n faTwitter,\n faWikipediaW,\n faYoutube\n} from '@fortawesome/free-brands-svg-icons';\nimport {\n faDownload,\n faEnvelope,\n faExternalLinkAlt,\n faLockOpen,\n faMagnet,\n faMugHot,\n faQuestion\n} from '@fortawesome/free-solid-svg-icons';\nimport {FontAwesomeIcon} from '@fortawesome/react-fontawesome';\nimport {BaseLink} from 'bluelib';\n\nconst icons = Object.freeze({\n \"github.com\": faGithub,\n\n \"en.wikipedia.org\": faWikipediaW,\n \"it.wikipedia.org\": faWikipediaW,\n\n \"old.reddit.com\": faRedditAlien,\n \"new.reddit.com\": faRedditAlien,\n \"www.reddit.com\": faRedditAlien,\n \"reddit.com\": faRedditAlien,\n\n \"twitch.tv\": faTwitch,\n\n \"twitter.com\": faTwitter,\n\n \"www.youtube.com\": faYoutube,\n \"youtube.com\": faYoutube,\n \"youtu.be\": faYoutube,\n\n \"t.me\": faTelegram,\n\n \"steampowered.com\": faSteam,\n \"steamcommunity.com\": faSteam,\n\n \"discord.gg\": faDiscord,\n \"discordapp.com\": faDiscord,\n \"discord.com\": faDiscord,\n\n \"ko-fi.com\": faMugHot,\n\n \"drive.google.com\": faGoogleDrive,\n\n \"ryg.s3.fr-par.scw.cloud\": faDownload,\n});\n\nexport default function (props) {\n // Parse URL\n let url;\n try {\n url = new URL(props.href, window.location.href)\n } catch (e) {\n return (\n {props.children}\n );\n }\n\n // Icon\n let iconEl = null;\n if (props.icon !== false) {\n let iconObj;\n\n if (url.host === window.location.host) {\n iconObj = null;\n } else if (url.protocol === \"http:\") {\n iconObj = faLockOpen;\n } else if (url.protocol === \"mailto:\") {\n iconObj = faEnvelope;\n } else if (url.protocol === \"https:\") {\n iconObj = icons[url.host];\n if (iconObj === undefined) {\n iconObj = faExternalLinkAlt;\n }\n } else if (url.protocol === \"magnet:\") {\n iconObj = faMagnet;\n } else {\n iconObj = faQuestion;\n }\n\n iconEl =  ;\n }\n\n return {iconEl}{props.children};\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = {\n \"hljs-comment\": {\n \"color\": \"#809980\"\n },\n \"hljs-quote\": {\n \"color\": \"#809980\"\n },\n \"hljs-variable\": {\n \"color\": \"#e6193c\"\n },\n \"hljs-template-variable\": {\n \"color\": \"#e6193c\"\n },\n \"hljs-attribute\": {\n \"color\": \"#e6193c\"\n },\n \"hljs-tag\": {\n \"color\": \"#e6193c\"\n },\n \"hljs-name\": {\n \"color\": \"#e6193c\"\n },\n \"hljs-regexp\": {\n \"color\": \"#e6193c\"\n },\n \"hljs-link\": {\n \"color\": \"#e6193c\"\n },\n \"hljs-selector-id\": {\n \"color\": \"#e6193c\"\n },\n \"hljs-selector-class\": {\n \"color\": \"#e6193c\"\n },\n \"hljs-number\": {\n \"color\": \"#87711d\"\n },\n \"hljs-meta\": {\n \"color\": \"#87711d\"\n },\n \"hljs-built_in\": {\n \"color\": \"#87711d\"\n },\n \"hljs-builtin-name\": {\n \"color\": \"#87711d\"\n },\n \"hljs-literal\": {\n \"color\": \"#87711d\"\n },\n \"hljs-type\": {\n \"color\": \"#87711d\"\n },\n \"hljs-params\": {\n \"color\": \"#87711d\"\n },\n \"hljs-string\": {\n \"color\": \"#29a329\"\n },\n \"hljs-symbol\": {\n \"color\": \"#29a329\"\n },\n \"hljs-bullet\": {\n \"color\": \"#29a329\"\n },\n \"hljs-title\": {\n \"color\": \"#3d62f5\"\n },\n \"hljs-section\": {\n \"color\": \"#3d62f5\"\n },\n \"hljs-keyword\": {\n \"color\": \"#ad2bee\"\n },\n \"hljs-selector-tag\": {\n \"color\": \"#ad2bee\"\n },\n \"hljs\": {\n \"display\": \"block\",\n \"overflowX\": \"auto\",\n \"background\": \"#131513\",\n \"color\": \"#8ca68c\",\n \"padding\": \"0.5em\"\n },\n \"hljs-emphasis\": {\n \"fontStyle\": \"italic\"\n },\n \"hljs-strong\": {\n \"fontWeight\": \"bold\"\n }\n};\nexports.default = _default;","module.exports = function(hljs) {\n\n // whitespaces: space, tab, formfeed\n var WS0 = '[ \\\\t\\\\f]*';\n var WS1 = '[ \\\\t\\\\f]+';\n // delimiter\n var DELIM = '(' + WS0+'[:=]'+WS0+ '|' + WS1 + ')';\n var KEY_ALPHANUM = '([^\\\\\\\\\\\\W:= \\\\t\\\\f\\\\n]|\\\\\\\\.)+';\n var KEY_OTHER = '([^\\\\\\\\:= \\\\t\\\\f\\\\n]|\\\\\\\\.)+';\n\n var DELIM_AND_VALUE = {\n // skip DELIM\n end: DELIM,\n relevance: 0,\n starts: {\n // value: everything until end of line (again, taking into account backslashes)\n className: 'string',\n end: /$/,\n relevance: 0,\n contains: [\n { begin: '\\\\\\\\\\\\n' }\n ]\n }\n };\n\n return {\n case_insensitive: true,\n illegal: /\\S/,\n contains: [\n hljs.COMMENT('^\\\\s*[!#]', '$'),\n // key: everything until whitespace or = or : (taking into account backslashes)\n // case of a \"normal\" key\n {\n begin: KEY_ALPHANUM + DELIM,\n returnBegin: true,\n contains: [\n {\n className: 'attr',\n begin: KEY_ALPHANUM,\n endsParent: true,\n relevance: 0\n }\n ],\n starts: DELIM_AND_VALUE\n },\n // case of key containing non-alphanumeric chars => relevance = 0\n {\n begin: KEY_OTHER + DELIM,\n returnBegin: true,\n relevance: 0,\n contains: [\n {\n className: 'meta',\n begin: KEY_OTHER,\n endsParent: true,\n relevance: 0\n }\n ],\n starts: DELIM_AND_VALUE\n },\n // case of an empty key\n {\n className: 'attr',\n relevance: 0,\n begin: KEY_OTHER + WS0 + '$'\n }\n ]\n };\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = {\n \"hljs\": {\n \"display\": \"block\",\n \"overflowX\": \"auto\",\n \"padding\": \"0.5em\",\n \"background\": \"#222\",\n \"color\": \"#fff\"\n },\n \"hljs-comment\": {\n \"color\": \"#777\"\n },\n \"hljs-quote\": {\n \"color\": \"#777\"\n },\n \"hljs-variable\": {\n \"color\": \"#ab875d\"\n },\n \"hljs-template-variable\": {\n \"color\": \"#ab875d\"\n },\n \"hljs-tag\": {\n \"color\": \"#ab875d\"\n },\n \"hljs-regexp\": {\n \"color\": \"#ab875d\"\n },\n \"hljs-meta\": {\n \"color\": \"#ab875d\"\n },\n \"hljs-number\": {\n \"color\": \"#ab875d\"\n },\n \"hljs-built_in\": {\n \"color\": \"#ab875d\"\n },\n \"hljs-builtin-name\": {\n \"color\": \"#ab875d\"\n },\n \"hljs-literal\": {\n \"color\": \"#ab875d\"\n },\n \"hljs-params\": {\n \"color\": \"#ab875d\"\n },\n \"hljs-symbol\": {\n \"color\": \"#ab875d\"\n },\n \"hljs-bullet\": {\n \"color\": \"#ab875d\"\n },\n \"hljs-link\": {\n \"color\": \"#ab875d\"\n },\n \"hljs-deletion\": {\n \"color\": \"#ab875d\"\n },\n \"hljs-section\": {\n \"color\": \"#9b869b\"\n },\n \"hljs-title\": {\n \"color\": \"#9b869b\"\n },\n \"hljs-name\": {\n \"color\": \"#9b869b\"\n },\n \"hljs-selector-id\": {\n \"color\": \"#9b869b\"\n },\n \"hljs-selector-class\": {\n \"color\": \"#9b869b\"\n },\n \"hljs-type\": {\n \"color\": \"#9b869b\"\n },\n \"hljs-attribute\": {\n \"color\": \"#9b869b\"\n },\n \"hljs-string\": {\n \"color\": \"#8f9c6c\"\n },\n \"hljs-keyword\": {\n \"color\": \"#8f9c6c\"\n },\n \"hljs-selector-tag\": {\n \"color\": \"#8f9c6c\"\n },\n \"hljs-addition\": {\n \"color\": \"#8f9c6c\"\n },\n \"hljs-emphasis\": {\n \"fontStyle\": \"italic\"\n },\n \"hljs-strong\": {\n \"fontWeight\": \"bold\"\n }\n};\nexports.default = _default;","module.exports = function(hljs) {\n\tvar SPECIAL_VARS = {\n\t\tclassName: 'keyword',\n\t\tbegin: '\\\\$(f[asn]|t|vp[rtd]|children)'\n\t},\n\tLITERALS = {\n\t\tclassName: 'literal',\n\t\tbegin: 'false|true|PI|undef'\n\t},\n\tNUMBERS = {\n\t\tclassName: 'number',\n\t\tbegin: '\\\\b\\\\d+(\\\\.\\\\d+)?(e-?\\\\d+)?', //adds 1e5, 1e-10\n\t\trelevance: 0\n\t},\n\tSTRING = hljs.inherit(hljs.QUOTE_STRING_MODE,{illegal: null}),\n\tPREPRO = {\n\t\tclassName: 'meta',\n\t\tkeywords: {'meta-keyword': 'include use'},\n\t\tbegin: 'include|use <',\n\t\tend: '>'\n\t},\n\tPARAMS = {\n\t\tclassName: 'params',\n\t\tbegin: '\\\\(', end: '\\\\)',\n\t\tcontains: ['self', NUMBERS, STRING, SPECIAL_VARS, LITERALS]\n\t},\n\tMODIFIERS = {\n\t\tbegin: '[*!#%]',\n\t\trelevance: 0\n\t},\n\tFUNCTIONS = {\n\t\tclassName: 'function',\n\t\tbeginKeywords: 'module function',\n\t\tend: '\\\\=|\\\\{',\n\t\tcontains: [PARAMS, hljs.UNDERSCORE_TITLE_MODE]\n\t};\n\n\treturn {\n\t\taliases: ['scad'],\n\t\tkeywords: {\n\t\t\tkeyword: 'function module include use for intersection_for if else \\\\%',\n\t\t\tliteral: 'false true PI undef',\n\t\t\tbuilt_in: 'circle square polygon text sphere cube cylinder polyhedron translate rotate scale resize mirror multmatrix color offset hull minkowski union difference intersection abs sign sin cos tan acos asin atan atan2 floor round ceil ln log pow sqrt exp rands min max concat lookup str chr search version version_num norm cross parent_module echo import import_dxf dxf_linear_extrude linear_extrude rotate_extrude surface projection render children dxf_cross dxf_dim let assign'\n\t\t},\n\t\tcontains: [\n\t\t\thljs.C_LINE_COMMENT_MODE,\n\t\t\thljs.C_BLOCK_COMMENT_MODE,\n\t\t\tNUMBERS,\n\t\t\tPREPRO,\n\t\t\tSTRING,\n\t\t\tSPECIAL_VARS,\n\t\t\tMODIFIERS,\n\t\t\tFUNCTIONS\n\t\t]\n\t}\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = {\n \"hljs\": {\n \"display\": \"block\",\n \"overflowX\": \"auto\",\n \"padding\": \"0.5em\",\n \"background\": \"#000\",\n \"color\": \"#f8f8f8\"\n },\n \"hljs-comment\": {\n \"color\": \"#7c7c7c\"\n },\n \"hljs-quote\": {\n \"color\": \"#7c7c7c\"\n },\n \"hljs-meta\": {\n \"color\": \"#7c7c7c\"\n },\n \"hljs-keyword\": {\n \"color\": \"#96cbfe\"\n },\n \"hljs-selector-tag\": {\n \"color\": \"#96cbfe\"\n },\n \"hljs-tag\": {\n \"color\": \"#96cbfe\"\n },\n \"hljs-name\": {\n \"color\": \"#96cbfe\"\n },\n \"hljs-attribute\": {\n \"color\": \"#ffffb6\"\n },\n \"hljs-selector-id\": {\n \"color\": \"#ffffb6\"\n },\n \"hljs-string\": {\n \"color\": \"#a8ff60\"\n },\n \"hljs-selector-attr\": {\n \"color\": \"#a8ff60\"\n },\n \"hljs-selector-pseudo\": {\n \"color\": \"#a8ff60\"\n },\n \"hljs-addition\": {\n \"color\": \"#a8ff60\"\n },\n \"hljs-subst\": {\n \"color\": \"#daefa3\"\n },\n \"hljs-regexp\": {\n \"color\": \"#e9c062\"\n },\n \"hljs-link\": {\n \"color\": \"#e9c062\"\n },\n \"hljs-title\": {\n \"color\": \"#ffffb6\"\n },\n \"hljs-section\": {\n \"color\": \"#ffffb6\"\n },\n \"hljs-type\": {\n \"color\": \"#ffffb6\"\n },\n \"hljs-doctag\": {\n \"color\": \"#ffffb6\"\n },\n \"hljs-symbol\": {\n \"color\": \"#c6c5fe\"\n },\n \"hljs-bullet\": {\n \"color\": \"#c6c5fe\"\n },\n \"hljs-variable\": {\n \"color\": \"#c6c5fe\"\n },\n \"hljs-template-variable\": {\n \"color\": \"#c6c5fe\"\n },\n \"hljs-literal\": {\n \"color\": \"#c6c5fe\"\n },\n \"hljs-number\": {\n \"color\": \"#ff73fd\"\n },\n \"hljs-deletion\": {\n \"color\": \"#ff73fd\"\n },\n \"hljs-emphasis\": {\n \"fontStyle\": \"italic\"\n },\n \"hljs-strong\": {\n \"fontWeight\": \"bold\"\n }\n};\nexports.default = _default;","module.exports = function(hljs) {\n var COMMENT = hljs.COMMENT(\n /^\\s*@?rem\\b/, /$/,\n {\n relevance: 10\n }\n );\n var LABEL = {\n className: 'symbol',\n begin: '^\\\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\\\s+label)',\n relevance: 0\n };\n return {\n aliases: ['bat', 'cmd'],\n case_insensitive: true,\n illegal: /\\/\\*/,\n keywords: {\n keyword:\n 'if else goto for in do call exit not exist errorlevel defined ' +\n 'equ neq lss leq gtr geq',\n built_in:\n 'prn nul lpt3 lpt2 lpt1 con com4 com3 com2 com1 aux ' +\n 'shift cd dir echo setlocal endlocal set pause copy ' +\n 'append assoc at attrib break cacls cd chcp chdir chkdsk chkntfs cls cmd color ' +\n 'comp compact convert date dir diskcomp diskcopy doskey erase fs ' +\n 'find findstr format ftype graftabl help keyb label md mkdir mode more move path ' +\n 'pause print popd pushd promt rd recover rem rename replace restore rmdir shift' +\n 'sort start subst time title tree type ver verify vol ' +\n // winutils\n 'ping net ipconfig taskkill xcopy ren del'\n },\n contains: [\n {\n className: 'variable', begin: /%%[^ ]|%[^ ]+?%|![^ ]+?!/\n },\n {\n className: 'function',\n begin: LABEL.begin, end: 'goto:eof',\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {begin: '([_a-zA-Z]\\\\w*\\\\.)*([_a-zA-Z]\\\\w*:)?[_a-zA-Z]\\\\w*'}),\n COMMENT\n ]\n },\n {\n className: 'number', begin: '\\\\b\\\\d+',\n relevance: 0\n },\n COMMENT\n ]\n };\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = {\n \"hljs-comment\": {\n \"color\": \"#999999\"\n },\n \"hljs-quote\": {\n \"color\": \"#999999\"\n },\n \"hljs-variable\": {\n \"color\": \"#f2777a\"\n },\n \"hljs-template-variable\": {\n \"color\": \"#f2777a\"\n },\n \"hljs-tag\": {\n \"color\": \"#f2777a\"\n },\n \"hljs-name\": {\n \"color\": \"#f2777a\"\n },\n \"hljs-selector-id\": {\n \"color\": \"#f2777a\"\n },\n \"hljs-selector-class\": {\n \"color\": \"#f2777a\"\n },\n \"hljs-regexp\": {\n \"color\": \"#f2777a\"\n },\n \"hljs-deletion\": {\n \"color\": \"#f2777a\"\n },\n \"hljs-number\": {\n \"color\": \"#f99157\"\n },\n \"hljs-built_in\": {\n \"color\": \"#f99157\"\n },\n \"hljs-builtin-name\": {\n \"color\": \"#f99157\"\n },\n \"hljs-literal\": {\n \"color\": \"#f99157\"\n },\n \"hljs-type\": {\n \"color\": \"#f99157\"\n },\n \"hljs-params\": {\n \"color\": \"#f99157\"\n },\n \"hljs-meta\": {\n \"color\": \"#f99157\"\n },\n \"hljs-link\": {\n \"color\": \"#f99157\"\n },\n \"hljs-attribute\": {\n \"color\": \"#ffcc66\"\n },\n \"hljs-string\": {\n \"color\": \"#99cc99\"\n },\n \"hljs-symbol\": {\n \"color\": \"#99cc99\"\n },\n \"hljs-bullet\": {\n \"color\": \"#99cc99\"\n },\n \"hljs-addition\": {\n \"color\": \"#99cc99\"\n },\n \"hljs-title\": {\n \"color\": \"#6699cc\"\n },\n \"hljs-section\": {\n \"color\": \"#6699cc\"\n },\n \"hljs-keyword\": {\n \"color\": \"#cc99cc\"\n },\n \"hljs-selector-tag\": {\n \"color\": \"#cc99cc\"\n },\n \"hljs\": {\n \"display\": \"block\",\n \"overflowX\": \"auto\",\n \"background\": \"#2d2d2d\",\n \"color\": \"#cccccc\",\n \"padding\": \"0.5em\"\n },\n \"hljs-emphasis\": {\n \"fontStyle\": \"italic\"\n },\n \"hljs-strong\": {\n \"fontWeight\": \"bold\"\n }\n};\nexports.default = _default;","'use strict'\n\nvar high = require('highlight.js/lib/highlight.js')\nvar fault = require('fault')\n\n// The lowlight interface, which has to be compatible with highlight.js, as\n// this object is passed to highlight.js syntaxes.\n\nfunction High() {}\n\nHigh.prototype = high\n\n// Expose.\nvar low = new High() // Ha!\n\nmodule.exports = low\n\nlow.highlight = highlight\nlow.highlightAuto = autoHighlight\nlow.registerLanguage = registerLanguage\nlow.listLanguages = listLanguages\nlow.registerAlias = registerAlias\nlow.getLanguage = getLanguage\n\nvar inherit = high.inherit\nvar own = {}.hasOwnProperty\nvar concat = [].concat\n\nvar defaultPrefix = 'hljs-'\nvar keyInsensitive = 'case_insensitive'\nvar keyCachedVariants = 'cached_variants'\nvar space = ' '\nvar verticalBar = '|'\n\n// Maps of syntaxes.\nvar languageNames = []\nvar languages = {}\nvar aliases = {}\n\n// Highlighting with language detection.\n// Accepts a string with the code to highlight.\n// Returns an object with the following properties:\n//\n// * `language` — Detected language\n// * `relevance` — Integer\n// * `value` — HAST tree with highlighting markup\n// * `secondBest` — Object with the same structure for second-best\n// heuristically detected language, may be absent.\nfunction autoHighlight(value, options) {\n var settings = options || {}\n var subset = settings.subset || languageNames\n var prefix = settings.prefix\n var length = subset.length\n var index = -1\n var result\n var secondBest\n var current\n var name\n\n if (prefix === null || prefix === undefined) {\n prefix = defaultPrefix\n }\n\n if (typeof value !== 'string') {\n throw fault('Expected `string` for value, got `%s`', value)\n }\n\n secondBest = normalize({})\n result = normalize({})\n\n while (++index < length) {\n name = subset[index]\n\n if (!getLanguage(name)) {\n continue\n }\n\n current = normalize(coreHighlight(name, value, false, prefix))\n\n current.language = name\n\n if (current.relevance > secondBest.relevance) {\n secondBest = current\n }\n\n if (current.relevance > result.relevance) {\n secondBest = result\n result = current\n }\n }\n\n if (secondBest.language) {\n result.secondBest = secondBest\n }\n\n return result\n}\n\n// Highlighting `value` in the language `language`.\nfunction highlight(language, value, options) {\n var settings = options || {}\n var prefix = settings.prefix\n\n if (prefix === null || prefix === undefined) {\n prefix = defaultPrefix\n }\n\n return normalize(coreHighlight(language, value, true, prefix))\n}\n\n// Register a language.\nfunction registerLanguage(name, syntax) {\n var lang = syntax(low)\n\n languages[name] = lang\n\n languageNames.push(name)\n\n if (lang.aliases) {\n registerAlias(name, lang.aliases)\n }\n}\n\n// Get a list of all registered languages.\nfunction listLanguages() {\n return languageNames.concat()\n}\n\n// Register more aliases for an already registered language.\nfunction registerAlias(name, alias) {\n var map = name\n var key\n var list\n var length\n var index\n\n if (alias) {\n map = {}\n map[name] = alias\n }\n\n for (key in map) {\n list = map[key]\n list = typeof list === 'string' ? [list] : list\n length = list.length\n index = -1\n\n while (++index < length) {\n aliases[list[index]] = key\n }\n }\n}\n\n// Core highlighting function.\n// Accepts a language name, or an alias, and a string with the code to\n// highlight.\n// eslint-disable-next-line max-params\nfunction coreHighlight(name, value, ignore, prefix, continuation) {\n var continuations = {}\n var stack = []\n var modeBuffer = ''\n var relevance = 0\n var language\n var top\n var current\n var currentChildren\n var offset\n var count\n var match\n var children\n\n if (typeof name !== 'string') {\n throw fault('Expected `string` for name, got `%s`', name)\n }\n\n if (typeof value !== 'string') {\n throw fault('Expected `string` for value, got `%s`', value)\n }\n\n language = getLanguage(name)\n top = continuation || language\n children = []\n\n current = top\n currentChildren = children\n\n if (!language) {\n throw fault('Unknown language: `%s` is not registered', name)\n }\n\n compileLanguage(language)\n\n try {\n top.terminators.lastIndex = 0\n offset = 0\n match = top.terminators.exec(value)\n\n while (match) {\n count = processLexeme(value.substring(offset, match.index), match[0])\n offset = match.index + count\n top.terminators.lastIndex = offset\n match = top.terminators.exec(value)\n }\n\n processLexeme(value.substr(offset))\n current = top\n\n while (current.parent) {\n if (current.className) {\n pop()\n }\n\n current = current.parent\n }\n\n return {\n relevance: relevance,\n value: currentChildren,\n language: name,\n top: top\n }\n } catch (error) {\n /* istanbul ignore if - Catch-all */\n if (error.message.indexOf('Illegal') === -1) {\n throw error\n }\n\n return {relevance: 0, value: addText(value, [])}\n }\n\n // Process a lexeme. Returns next position.\n function processLexeme(buffer, lexeme) {\n var newMode\n var endMode\n var origin\n\n modeBuffer += buffer\n\n if (lexeme === undefined) {\n addSiblings(processBuffer(), currentChildren)\n\n return 0\n }\n\n newMode = subMode(lexeme, top)\n\n if (newMode) {\n addSiblings(processBuffer(), currentChildren)\n\n startNewMode(newMode, lexeme)\n\n return newMode.returnBegin ? 0 : lexeme.length\n }\n\n endMode = endOfMode(top, lexeme)\n\n if (endMode) {\n origin = top\n\n if (!(origin.returnEnd || origin.excludeEnd)) {\n modeBuffer += lexeme\n }\n\n addSiblings(processBuffer(), currentChildren)\n\n // Close open modes.\n do {\n if (top.className) {\n pop()\n }\n\n relevance += top.relevance\n top = top.parent\n } while (top !== endMode.parent)\n\n if (origin.excludeEnd) {\n addText(lexeme, currentChildren)\n }\n\n modeBuffer = ''\n\n if (endMode.starts) {\n startNewMode(endMode.starts, '')\n }\n\n return origin.returnEnd ? 0 : lexeme.length\n }\n\n if (isIllegal(lexeme, top)) {\n throw fault(\n 'Illegal lexeme \"%s\" for mode \"%s\"',\n lexeme,\n top.className || ''\n )\n }\n\n // Parser should not reach this point as all types of lexemes should be\n // caught earlier, but if it does due to some bug make sure it advances\n // at least one character forward to prevent infinite looping.\n modeBuffer += lexeme\n\n return lexeme.length || /* istanbul ignore next */ 1\n }\n\n // Start a new mode with a `lexeme` to process.\n function startNewMode(mode, lexeme) {\n var node\n\n if (mode.className) {\n node = build(mode.className, [])\n }\n\n if (mode.returnBegin) {\n modeBuffer = ''\n } else if (mode.excludeBegin) {\n addText(lexeme, currentChildren)\n\n modeBuffer = ''\n } else {\n modeBuffer = lexeme\n }\n\n // Enter a new mode.\n if (node) {\n currentChildren.push(node)\n stack.push(currentChildren)\n currentChildren = node.children\n }\n\n top = Object.create(mode, {parent: {value: top}})\n }\n\n // Process the buffer.\n function processBuffer() {\n var result = top.subLanguage ? processSubLanguage() : processKeywords()\n modeBuffer = ''\n return result\n }\n\n // Process a sublanguage (returns a list of nodes).\n function processSubLanguage() {\n var explicit = typeof top.subLanguage === 'string'\n var subvalue\n\n /* istanbul ignore if - support non-loaded sublanguages */\n if (explicit && !languages[top.subLanguage]) {\n return addText(modeBuffer, [])\n }\n\n if (explicit) {\n subvalue = coreHighlight(\n top.subLanguage,\n modeBuffer,\n true,\n prefix,\n continuations[top.subLanguage]\n )\n } else {\n subvalue = autoHighlight(modeBuffer, {\n subset: top.subLanguage.length === 0 ? undefined : top.subLanguage,\n prefix: prefix\n })\n }\n\n // If we couldn’t highlight, for example because the requests subset isn’t\n // loaded, return a text node.\n if (!subvalue.language) {\n return [buildText(modeBuffer)]\n }\n\n // Counting embedded language score towards the host language may be\n // disabled with zeroing the containing mode relevance.\n // Usecase in point is Markdown that allows XML everywhere and makes every\n // XML snippet to have a much larger Markdown score.\n if (top.relevance > 0) {\n relevance += subvalue.relevance\n }\n\n if (explicit) {\n continuations[top.subLanguage] = subvalue.top\n }\n\n return [build(subvalue.language, subvalue.value, true)]\n }\n\n // Process keywords. Returns nodes.\n function processKeywords() {\n var nodes = []\n var lastIndex\n var keyword\n var node\n var submatch\n\n if (!top.keywords) {\n return addText(modeBuffer, nodes)\n }\n\n lastIndex = 0\n\n top.lexemesRe.lastIndex = 0\n\n keyword = top.lexemesRe.exec(modeBuffer)\n\n while (keyword) {\n addText(modeBuffer.substring(lastIndex, keyword.index), nodes)\n\n submatch = keywordMatch(top, keyword)\n\n if (submatch) {\n relevance += submatch[1]\n\n node = build(submatch[0], [])\n\n nodes.push(node)\n\n addText(keyword[0], node.children)\n } else {\n addText(keyword[0], nodes)\n }\n\n lastIndex = top.lexemesRe.lastIndex\n keyword = top.lexemesRe.exec(modeBuffer)\n }\n\n addText(modeBuffer.substr(lastIndex), nodes)\n\n return nodes\n }\n\n // Add siblings.\n function addSiblings(siblings, nodes) {\n var length = siblings.length\n var index = -1\n var sibling\n\n while (++index < length) {\n sibling = siblings[index]\n\n if (sibling.type === 'text') {\n addText(sibling.value, nodes)\n } else {\n nodes.push(sibling)\n }\n }\n }\n\n // Add a text.\n function addText(value, nodes) {\n var tail\n\n if (value) {\n tail = nodes[nodes.length - 1]\n\n if (tail && tail.type === 'text') {\n tail.value += value\n } else {\n nodes.push(buildText(value))\n }\n }\n\n return nodes\n }\n\n // Build a text.\n function buildText(value) {\n return {type: 'text', value: value}\n }\n\n // Build a span.\n function build(name, contents, noPrefix) {\n return {\n type: 'element',\n tagName: 'span',\n properties: {\n className: [(noPrefix ? '' : prefix) + name]\n },\n children: contents\n }\n }\n\n // Check if the first word in `keywords` is a keyword.\n function keywordMatch(mode, keywords) {\n var keyword = keywords[0]\n\n if (language[keyInsensitive]) {\n keyword = keyword.toLowerCase()\n }\n\n return own.call(mode.keywords, keyword) && mode.keywords[keyword]\n }\n\n // Check if `lexeme` is illegal according to `mode`.\n function isIllegal(lexeme, mode) {\n return !ignore && test(mode.illegalRe, lexeme)\n }\n\n // Check if `lexeme` ends `mode`.\n function endOfMode(mode, lexeme) {\n if (test(mode.endRe, lexeme)) {\n while (mode.endsParent && mode.parent) {\n mode = mode.parent\n }\n\n return mode\n }\n\n if (mode.endsWithParent) {\n return endOfMode(mode.parent, lexeme)\n }\n }\n\n // Check a sub-mode.\n function subMode(lexeme, mode) {\n var values = mode.contains\n var length = values.length\n var index = -1\n\n while (++index < length) {\n if (test(values[index].beginRe, lexeme)) {\n return values[index]\n }\n }\n }\n\n // Exit the current context.\n function pop() {\n /* istanbul ignore next - removed in hljs 9.3 */\n currentChildren = stack.pop() || children\n }\n}\n\nfunction expandMode(mode) {\n var length\n var index\n var variants\n var result\n\n if (mode.variants && !mode[keyCachedVariants]) {\n variants = mode.variants\n length = variants.length\n index = -1\n result = []\n\n while (++index < length) {\n result[index] = inherit(mode, {variants: null}, variants[index])\n }\n\n mode[keyCachedVariants] = result\n }\n\n return (\n mode[keyCachedVariants] || (mode.endsWithParent ? [inherit(mode)] : [mode])\n )\n}\n\n// Compile a language.\nfunction compileLanguage(language) {\n compileMode(language)\n\n // Compile a language mode, optionally with a parent.\n // eslint-disable-next-line complexity\n function compileMode(mode, parent) {\n var compiledKeywords = {}\n var terminators\n\n if (mode.compiled) {\n return\n }\n\n mode.compiled = true\n\n mode.keywords = mode.keywords || mode.beginKeywords\n\n if (mode.keywords) {\n if (typeof mode.keywords === 'string') {\n flatten('keyword', mode.keywords)\n } else {\n Object.keys(mode.keywords).forEach(function(className) {\n flatten(className, mode.keywords[className])\n })\n }\n\n mode.keywords = compiledKeywords\n }\n\n mode.lexemesRe = langRe(mode.lexemes || /\\w+/, true)\n\n if (parent) {\n if (mode.beginKeywords) {\n mode.begin =\n '\\\\b(' + mode.beginKeywords.split(space).join(verticalBar) + ')\\\\b'\n }\n\n if (!mode.begin) {\n mode.begin = /\\B|\\b/\n }\n\n mode.beginRe = langRe(mode.begin)\n\n if (!mode.end && !mode.endsWithParent) {\n mode.end = /\\B|\\b/\n }\n\n if (mode.end) {\n mode.endRe = langRe(mode.end)\n }\n\n mode.terminatorEnd = source(mode.end) || ''\n\n if (mode.endsWithParent && parent.terminatorEnd) {\n mode.terminatorEnd +=\n (mode.end ? verticalBar : '') + parent.terminatorEnd\n }\n }\n\n if (mode.illegal) {\n mode.illegalRe = langRe(mode.illegal)\n }\n\n if (mode.relevance === undefined) {\n mode.relevance = 1\n }\n\n if (!mode.contains) {\n mode.contains = []\n }\n\n mode.contains = concat.apply(\n [],\n mode.contains.map(function(c) {\n return expandMode(c === 'self' ? mode : c)\n })\n )\n\n mode.contains.forEach(function(c) {\n compileMode(c, mode)\n })\n\n if (mode.starts) {\n compileMode(mode.starts, parent)\n }\n\n terminators = mode.contains\n .map(map)\n .concat([mode.terminatorEnd, mode.illegal])\n .map(source)\n .filter(Boolean)\n\n mode.terminators =\n terminators.length === 0\n ? {exec: execNoop}\n : langRe(terminators.join(verticalBar), true)\n\n function map(c) {\n return c.beginKeywords ? '\\\\.?(' + c.begin + ')\\\\.?' : c.begin\n }\n\n // Flatten a classname.\n function flatten(className, value) {\n var pairs\n var pair\n var index\n var length\n\n if (language[keyInsensitive]) {\n value = value.toLowerCase()\n }\n\n pairs = value.split(space)\n length = pairs.length\n index = -1\n\n while (++index < length) {\n pair = pairs[index].split(verticalBar)\n\n compiledKeywords[pair[0]] = [className, pair[1] ? Number(pair[1]) : 1]\n }\n }\n }\n\n // Create a regex for `value`.\n function langRe(value, global) {\n return new RegExp(\n source(value),\n 'm' + (language[keyInsensitive] ? 'i' : '') + (global ? 'g' : '')\n )\n }\n\n // Get the source of an expression or string.\n function source(re) {\n return (re && re.source) || re\n }\n}\n\n// Normalize a syntax result.\nfunction normalize(result) {\n return {\n relevance: result.relevance || 0,\n language: result.language || null,\n value: result.value || []\n }\n}\n\n// Check if `expression` matches `lexeme`.\nfunction test(expression, lexeme) {\n var match = expression && expression.exec(lexeme)\n return match && match.index === 0\n}\n\n// No-op exec.\nfunction execNoop() {\n return null\n}\n\n// Get a language by `name`.\nfunction getLanguage(name) {\n name = name.toLowerCase()\n\n return languages[name] || languages[aliases[name]]\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = {\n \"hljs\": {\n \"display\": \"block\",\n \"overflowX\": \"auto\",\n \"padding\": \"0.5em\",\n \"background\": \"#eee\",\n \"color\": \"black\"\n },\n \"hljs-link\": {\n \"color\": \"#070\"\n },\n \"hljs-emphasis\": {\n \"color\": \"#070\",\n \"fontStyle\": \"italic\"\n },\n \"hljs-attribute\": {\n \"color\": \"#070\"\n },\n \"hljs-addition\": {\n \"color\": \"#070\"\n },\n \"hljs-strong\": {\n \"color\": \"#d14\",\n \"fontWeight\": \"bold\"\n },\n \"hljs-string\": {\n \"color\": \"#d14\"\n },\n \"hljs-deletion\": {\n \"color\": \"#d14\"\n },\n \"hljs-quote\": {\n \"color\": \"#998\",\n \"fontStyle\": \"italic\"\n },\n \"hljs-comment\": {\n \"color\": \"#998\",\n \"fontStyle\": \"italic\"\n },\n \"hljs-section\": {\n \"color\": \"#900\"\n },\n \"hljs-title\": {\n \"color\": \"#900\"\n },\n \"hljs-class .hljs-title\": {\n \"color\": \"#458\"\n },\n \"hljs-type\": {\n \"color\": \"#458\"\n },\n \"hljs-variable\": {\n \"color\": \"#336699\"\n },\n \"hljs-template-variable\": {\n \"color\": \"#336699\"\n },\n \"hljs-bullet\": {\n \"color\": \"#997700\"\n },\n \"hljs-meta\": {\n \"color\": \"#3344bb\"\n },\n \"hljs-code\": {\n \"color\": \"#099\"\n },\n \"hljs-number\": {\n \"color\": \"#099\"\n },\n \"hljs-literal\": {\n \"color\": \"#099\"\n },\n \"hljs-keyword\": {\n \"color\": \"#099\"\n },\n \"hljs-selector-tag\": {\n \"color\": \"#099\"\n },\n \"hljs-regexp\": {\n \"backgroundColor\": \"#fff0ff\",\n \"color\": \"#880088\"\n },\n \"hljs-symbol\": {\n \"color\": \"#990073\"\n },\n \"hljs-tag\": {\n \"color\": \"#007700\"\n },\n \"hljs-name\": {\n \"color\": \"#007700\"\n },\n \"hljs-selector-id\": {\n \"color\": \"#007700\"\n },\n \"hljs-selector-class\": {\n \"color\": \"#007700\"\n }\n};\nexports.default = _default;","/*!\n localForage -- Offline Storage, Improved\n Version 1.8.1\n https://localforage.github.io/localForage\n (c) 2013-2017 Mozilla, Apache License 2.0\n*/\n(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.localforage = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw (f.code=\"MODULE_NOT_FOUND\", f)}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o element; its readystatechange event will be fired asynchronously once it is inserted\n // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n var scriptEl = global.document.createElement('script');\n scriptEl.onreadystatechange = function () {\n nextTick();\n\n scriptEl.onreadystatechange = null;\n scriptEl.parentNode.removeChild(scriptEl);\n scriptEl = null;\n };\n global.document.documentElement.appendChild(scriptEl);\n };\n } else {\n scheduleDrain = function () {\n setTimeout(nextTick, 0);\n };\n }\n}\n\nvar draining;\nvar queue = [];\n//named nextTick for less confusing stack traces\nfunction nextTick() {\n draining = true;\n var i, oldQueue;\n var len = queue.length;\n while (len) {\n oldQueue = queue;\n queue = [];\n i = -1;\n while (++i < len) {\n oldQueue[i]();\n }\n len = queue.length;\n }\n draining = false;\n}\n\nmodule.exports = immediate;\nfunction immediate(task) {\n if (queue.push(task) === 1 && !draining) {\n scheduleDrain();\n }\n}\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{}],2:[function(_dereq_,module,exports){\n'use strict';\nvar immediate = _dereq_(1);\n\n/* istanbul ignore next */\nfunction INTERNAL() {}\n\nvar handlers = {};\n\nvar REJECTED = ['REJECTED'];\nvar FULFILLED = ['FULFILLED'];\nvar PENDING = ['PENDING'];\n\nmodule.exports = Promise;\n\nfunction Promise(resolver) {\n if (typeof resolver !== 'function') {\n throw new TypeError('resolver must be a function');\n }\n this.state = PENDING;\n this.queue = [];\n this.outcome = void 0;\n if (resolver !== INTERNAL) {\n safelyResolveThenable(this, resolver);\n }\n}\n\nPromise.prototype[\"catch\"] = function (onRejected) {\n return this.then(null, onRejected);\n};\nPromise.prototype.then = function (onFulfilled, onRejected) {\n if (typeof onFulfilled !== 'function' && this.state === FULFILLED ||\n typeof onRejected !== 'function' && this.state === REJECTED) {\n return this;\n }\n var promise = new this.constructor(INTERNAL);\n if (this.state !== PENDING) {\n var resolver = this.state === FULFILLED ? onFulfilled : onRejected;\n unwrap(promise, resolver, this.outcome);\n } else {\n this.queue.push(new QueueItem(promise, onFulfilled, onRejected));\n }\n\n return promise;\n};\nfunction QueueItem(promise, onFulfilled, onRejected) {\n this.promise = promise;\n if (typeof onFulfilled === 'function') {\n this.onFulfilled = onFulfilled;\n this.callFulfilled = this.otherCallFulfilled;\n }\n if (typeof onRejected === 'function') {\n this.onRejected = onRejected;\n this.callRejected = this.otherCallRejected;\n }\n}\nQueueItem.prototype.callFulfilled = function (value) {\n handlers.resolve(this.promise, value);\n};\nQueueItem.prototype.otherCallFulfilled = function (value) {\n unwrap(this.promise, this.onFulfilled, value);\n};\nQueueItem.prototype.callRejected = function (value) {\n handlers.reject(this.promise, value);\n};\nQueueItem.prototype.otherCallRejected = function (value) {\n unwrap(this.promise, this.onRejected, value);\n};\n\nfunction unwrap(promise, func, value) {\n immediate(function () {\n var returnValue;\n try {\n returnValue = func(value);\n } catch (e) {\n return handlers.reject(promise, e);\n }\n if (returnValue === promise) {\n handlers.reject(promise, new TypeError('Cannot resolve promise with itself'));\n } else {\n handlers.resolve(promise, returnValue);\n }\n });\n}\n\nhandlers.resolve = function (self, value) {\n var result = tryCatch(getThen, value);\n if (result.status === 'error') {\n return handlers.reject(self, result.value);\n }\n var thenable = result.value;\n\n if (thenable) {\n safelyResolveThenable(self, thenable);\n } else {\n self.state = FULFILLED;\n self.outcome = value;\n var i = -1;\n var len = self.queue.length;\n while (++i < len) {\n self.queue[i].callFulfilled(value);\n }\n }\n return self;\n};\nhandlers.reject = function (self, error) {\n self.state = REJECTED;\n self.outcome = error;\n var i = -1;\n var len = self.queue.length;\n while (++i < len) {\n self.queue[i].callRejected(error);\n }\n return self;\n};\n\nfunction getThen(obj) {\n // Make sure we only access the accessor once as required by the spec\n var then = obj && obj.then;\n if (obj && (typeof obj === 'object' || typeof obj === 'function') && typeof then === 'function') {\n return function appyThen() {\n then.apply(obj, arguments);\n };\n }\n}\n\nfunction safelyResolveThenable(self, thenable) {\n // Either fulfill, reject or reject with error\n var called = false;\n function onError(value) {\n if (called) {\n return;\n }\n called = true;\n handlers.reject(self, value);\n }\n\n function onSuccess(value) {\n if (called) {\n return;\n }\n called = true;\n handlers.resolve(self, value);\n }\n\n function tryToUnwrap() {\n thenable(onSuccess, onError);\n }\n\n var result = tryCatch(tryToUnwrap);\n if (result.status === 'error') {\n onError(result.value);\n }\n}\n\nfunction tryCatch(func, value) {\n var out = {};\n try {\n out.value = func(value);\n out.status = 'success';\n } catch (e) {\n out.status = 'error';\n out.value = e;\n }\n return out;\n}\n\nPromise.resolve = resolve;\nfunction resolve(value) {\n if (value instanceof this) {\n return value;\n }\n return handlers.resolve(new this(INTERNAL), value);\n}\n\nPromise.reject = reject;\nfunction reject(reason) {\n var promise = new this(INTERNAL);\n return handlers.reject(promise, reason);\n}\n\nPromise.all = all;\nfunction all(iterable) {\n var self = this;\n if (Object.prototype.toString.call(iterable) !== '[object Array]') {\n return this.reject(new TypeError('must be an array'));\n }\n\n var len = iterable.length;\n var called = false;\n if (!len) {\n return this.resolve([]);\n }\n\n var values = new Array(len);\n var resolved = 0;\n var i = -1;\n var promise = new this(INTERNAL);\n\n while (++i < len) {\n allResolver(iterable[i], i);\n }\n return promise;\n function allResolver(value, i) {\n self.resolve(value).then(resolveFromAll, function (error) {\n if (!called) {\n called = true;\n handlers.reject(promise, error);\n }\n });\n function resolveFromAll(outValue) {\n values[i] = outValue;\n if (++resolved === len && !called) {\n called = true;\n handlers.resolve(promise, values);\n }\n }\n }\n}\n\nPromise.race = race;\nfunction race(iterable) {\n var self = this;\n if (Object.prototype.toString.call(iterable) !== '[object Array]') {\n return this.reject(new TypeError('must be an array'));\n }\n\n var len = iterable.length;\n var called = false;\n if (!len) {\n return this.resolve([]);\n }\n\n var i = -1;\n var promise = new this(INTERNAL);\n\n while (++i < len) {\n resolver(iterable[i]);\n }\n return promise;\n function resolver(value) {\n self.resolve(value).then(function (response) {\n if (!called) {\n called = true;\n handlers.resolve(promise, response);\n }\n }, function (error) {\n if (!called) {\n called = true;\n handlers.reject(promise, error);\n }\n });\n }\n}\n\n},{\"1\":1}],3:[function(_dereq_,module,exports){\n(function (global){\n'use strict';\nif (typeof global.Promise !== 'function') {\n global.Promise = _dereq_(2);\n}\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{\"2\":2}],4:[function(_dereq_,module,exports){\n'use strict';\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\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction getIDB() {\n /* global indexedDB,webkitIndexedDB,mozIndexedDB,OIndexedDB,msIndexedDB */\n try {\n if (typeof indexedDB !== 'undefined') {\n return indexedDB;\n }\n if (typeof webkitIndexedDB !== 'undefined') {\n return webkitIndexedDB;\n }\n if (typeof mozIndexedDB !== 'undefined') {\n return mozIndexedDB;\n }\n if (typeof OIndexedDB !== 'undefined') {\n return OIndexedDB;\n }\n if (typeof msIndexedDB !== 'undefined') {\n return msIndexedDB;\n }\n } catch (e) {\n return;\n }\n}\n\nvar idb = getIDB();\n\nfunction isIndexedDBValid() {\n try {\n // Initialize IndexedDB; fall back to vendor-prefixed versions\n // if needed.\n if (!idb || !idb.open) {\n return false;\n }\n // We mimic PouchDB here;\n //\n // We test for openDatabase because IE Mobile identifies itself\n // as Safari. Oh the lulz...\n var isSafari = typeof openDatabase !== 'undefined' && /(Safari|iPhone|iPad|iPod)/.test(navigator.userAgent) && !/Chrome/.test(navigator.userAgent) && !/BlackBerry/.test(navigator.platform);\n\n var hasFetch = typeof fetch === 'function' && fetch.toString().indexOf('[native code') !== -1;\n\n // Safari <10.1 does not meet our requirements for IDB support\n // (see: https://github.com/pouchdb/pouchdb/issues/5572).\n // Safari 10.1 shipped with fetch, we can use that to detect it.\n // Note: this creates issues with `window.fetch` polyfills and\n // overrides; see:\n // https://github.com/localForage/localForage/issues/856\n return (!isSafari || hasFetch) && typeof indexedDB !== 'undefined' &&\n // some outdated implementations of IDB that appear on Samsung\n // and HTC Android devices <4.4 are missing IDBKeyRange\n // See: https://github.com/mozilla/localForage/issues/128\n // See: https://github.com/mozilla/localForage/issues/272\n typeof IDBKeyRange !== 'undefined';\n } catch (e) {\n return false;\n }\n}\n\n// Abstracts constructing a Blob object, so it also works in older\n// browsers that don't support the native Blob constructor. (i.e.\n// old QtWebKit versions, at least).\n// Abstracts constructing a Blob object, so it also works in older\n// browsers that don't support the native Blob constructor. (i.e.\n// old QtWebKit versions, at least).\nfunction createBlob(parts, properties) {\n /* global BlobBuilder,MSBlobBuilder,MozBlobBuilder,WebKitBlobBuilder */\n parts = parts || [];\n properties = properties || {};\n try {\n return new Blob(parts, properties);\n } catch (e) {\n if (e.name !== 'TypeError') {\n throw e;\n }\n var Builder = typeof BlobBuilder !== 'undefined' ? BlobBuilder : typeof MSBlobBuilder !== 'undefined' ? MSBlobBuilder : typeof MozBlobBuilder !== 'undefined' ? MozBlobBuilder : WebKitBlobBuilder;\n var builder = new Builder();\n for (var i = 0; i < parts.length; i += 1) {\n builder.append(parts[i]);\n }\n return builder.getBlob(properties.type);\n }\n}\n\n// This is CommonJS because lie is an external dependency, so Rollup\n// can just ignore it.\nif (typeof Promise === 'undefined') {\n // In the \"nopromises\" build this will just throw if you don't have\n // a global promise object, but it would throw anyway later.\n _dereq_(3);\n}\nvar Promise$1 = Promise;\n\nfunction executeCallback(promise, callback) {\n if (callback) {\n promise.then(function (result) {\n callback(null, result);\n }, function (error) {\n callback(error);\n });\n }\n}\n\nfunction executeTwoCallbacks(promise, callback, errorCallback) {\n if (typeof callback === 'function') {\n promise.then(callback);\n }\n\n if (typeof errorCallback === 'function') {\n promise[\"catch\"](errorCallback);\n }\n}\n\nfunction normalizeKey(key) {\n // Cast the key to a string, as that's all we can set as a key.\n if (typeof key !== 'string') {\n console.warn(key + ' used as a key, but it is not a string.');\n key = String(key);\n }\n\n return key;\n}\n\nfunction getCallback() {\n if (arguments.length && typeof arguments[arguments.length - 1] === 'function') {\n return arguments[arguments.length - 1];\n }\n}\n\n// Some code originally from async_storage.js in\n// [Gaia](https://github.com/mozilla-b2g/gaia).\n\nvar DETECT_BLOB_SUPPORT_STORE = 'local-forage-detect-blob-support';\nvar supportsBlobs = void 0;\nvar dbContexts = {};\nvar toString = Object.prototype.toString;\n\n// Transaction Modes\nvar READ_ONLY = 'readonly';\nvar READ_WRITE = 'readwrite';\n\n// Transform a binary string to an array buffer, because otherwise\n// weird stuff happens when you try to work with the binary string directly.\n// It is known.\n// From http://stackoverflow.com/questions/14967647/ (continues on next line)\n// encode-decode-image-with-base64-breaks-image (2013-04-21)\nfunction _binStringToArrayBuffer(bin) {\n var length = bin.length;\n var buf = new ArrayBuffer(length);\n var arr = new Uint8Array(buf);\n for (var i = 0; i < length; i++) {\n arr[i] = bin.charCodeAt(i);\n }\n return buf;\n}\n\n//\n// Blobs are not supported in all versions of IndexedDB, notably\n// Chrome <37 and Android <5. In those versions, storing a blob will throw.\n//\n// Various other blob bugs exist in Chrome v37-42 (inclusive).\n// Detecting them is expensive and confusing to users, and Chrome 37-42\n// is at very low usage worldwide, so we do a hacky userAgent check instead.\n//\n// content-type bug: https://code.google.com/p/chromium/issues/detail?id=408120\n// 404 bug: https://code.google.com/p/chromium/issues/detail?id=447916\n// FileReader bug: https://code.google.com/p/chromium/issues/detail?id=447836\n//\n// Code borrowed from PouchDB. See:\n// https://github.com/pouchdb/pouchdb/blob/master/packages/node_modules/pouchdb-adapter-idb/src/blobSupport.js\n//\nfunction _checkBlobSupportWithoutCaching(idb) {\n return new Promise$1(function (resolve) {\n var txn = idb.transaction(DETECT_BLOB_SUPPORT_STORE, READ_WRITE);\n var blob = createBlob(['']);\n txn.objectStore(DETECT_BLOB_SUPPORT_STORE).put(blob, 'key');\n\n txn.onabort = function (e) {\n // If the transaction aborts now its due to not being able to\n // write to the database, likely due to the disk being full\n e.preventDefault();\n e.stopPropagation();\n resolve(false);\n };\n\n txn.oncomplete = function () {\n var matchedChrome = navigator.userAgent.match(/Chrome\\/(\\d+)/);\n var matchedEdge = navigator.userAgent.match(/Edge\\//);\n // MS Edge pretends to be Chrome 42:\n // https://msdn.microsoft.com/en-us/library/hh869301%28v=vs.85%29.aspx\n resolve(matchedEdge || !matchedChrome || parseInt(matchedChrome[1], 10) >= 43);\n };\n })[\"catch\"](function () {\n return false; // error, so assume unsupported\n });\n}\n\nfunction _checkBlobSupport(idb) {\n if (typeof supportsBlobs === 'boolean') {\n return Promise$1.resolve(supportsBlobs);\n }\n return _checkBlobSupportWithoutCaching(idb).then(function (value) {\n supportsBlobs = value;\n return supportsBlobs;\n });\n}\n\nfunction _deferReadiness(dbInfo) {\n var dbContext = dbContexts[dbInfo.name];\n\n // Create a deferred object representing the current database operation.\n var deferredOperation = {};\n\n deferredOperation.promise = new Promise$1(function (resolve, reject) {\n deferredOperation.resolve = resolve;\n deferredOperation.reject = reject;\n });\n\n // Enqueue the deferred operation.\n dbContext.deferredOperations.push(deferredOperation);\n\n // Chain its promise to the database readiness.\n if (!dbContext.dbReady) {\n dbContext.dbReady = deferredOperation.promise;\n } else {\n dbContext.dbReady = dbContext.dbReady.then(function () {\n return deferredOperation.promise;\n });\n }\n}\n\nfunction _advanceReadiness(dbInfo) {\n var dbContext = dbContexts[dbInfo.name];\n\n // Dequeue a deferred operation.\n var deferredOperation = dbContext.deferredOperations.pop();\n\n // Resolve its promise (which is part of the database readiness\n // chain of promises).\n if (deferredOperation) {\n deferredOperation.resolve();\n return deferredOperation.promise;\n }\n}\n\nfunction _rejectReadiness(dbInfo, err) {\n var dbContext = dbContexts[dbInfo.name];\n\n // Dequeue a deferred operation.\n var deferredOperation = dbContext.deferredOperations.pop();\n\n // Reject its promise (which is part of the database readiness\n // chain of promises).\n if (deferredOperation) {\n deferredOperation.reject(err);\n return deferredOperation.promise;\n }\n}\n\nfunction _getConnection(dbInfo, upgradeNeeded) {\n return new Promise$1(function (resolve, reject) {\n dbContexts[dbInfo.name] = dbContexts[dbInfo.name] || createDbContext();\n\n if (dbInfo.db) {\n if (upgradeNeeded) {\n _deferReadiness(dbInfo);\n dbInfo.db.close();\n } else {\n return resolve(dbInfo.db);\n }\n }\n\n var dbArgs = [dbInfo.name];\n\n if (upgradeNeeded) {\n dbArgs.push(dbInfo.version);\n }\n\n var openreq = idb.open.apply(idb, dbArgs);\n\n if (upgradeNeeded) {\n openreq.onupgradeneeded = function (e) {\n var db = openreq.result;\n try {\n db.createObjectStore(dbInfo.storeName);\n if (e.oldVersion <= 1) {\n // Added when support for blob shims was added\n db.createObjectStore(DETECT_BLOB_SUPPORT_STORE);\n }\n } catch (ex) {\n if (ex.name === 'ConstraintError') {\n console.warn('The database \"' + dbInfo.name + '\"' + ' has been upgraded from version ' + e.oldVersion + ' to version ' + e.newVersion + ', but the storage \"' + dbInfo.storeName + '\" already exists.');\n } else {\n throw ex;\n }\n }\n };\n }\n\n openreq.onerror = function (e) {\n e.preventDefault();\n reject(openreq.error);\n };\n\n openreq.onsuccess = function () {\n resolve(openreq.result);\n _advanceReadiness(dbInfo);\n };\n });\n}\n\nfunction _getOriginalConnection(dbInfo) {\n return _getConnection(dbInfo, false);\n}\n\nfunction _getUpgradedConnection(dbInfo) {\n return _getConnection(dbInfo, true);\n}\n\nfunction _isUpgradeNeeded(dbInfo, defaultVersion) {\n if (!dbInfo.db) {\n return true;\n }\n\n var isNewStore = !dbInfo.db.objectStoreNames.contains(dbInfo.storeName);\n var isDowngrade = dbInfo.version < dbInfo.db.version;\n var isUpgrade = dbInfo.version > dbInfo.db.version;\n\n if (isDowngrade) {\n // If the version is not the default one\n // then warn for impossible downgrade.\n if (dbInfo.version !== defaultVersion) {\n console.warn('The database \"' + dbInfo.name + '\"' + \" can't be downgraded from version \" + dbInfo.db.version + ' to version ' + dbInfo.version + '.');\n }\n // Align the versions to prevent errors.\n dbInfo.version = dbInfo.db.version;\n }\n\n if (isUpgrade || isNewStore) {\n // If the store is new then increment the version (if needed).\n // This will trigger an \"upgradeneeded\" event which is required\n // for creating a store.\n if (isNewStore) {\n var incVersion = dbInfo.db.version + 1;\n if (incVersion > dbInfo.version) {\n dbInfo.version = incVersion;\n }\n }\n\n return true;\n }\n\n return false;\n}\n\n// encode a blob for indexeddb engines that don't support blobs\nfunction _encodeBlob(blob) {\n return new Promise$1(function (resolve, reject) {\n var reader = new FileReader();\n reader.onerror = reject;\n reader.onloadend = function (e) {\n var base64 = btoa(e.target.result || '');\n resolve({\n __local_forage_encoded_blob: true,\n data: base64,\n type: blob.type\n });\n };\n reader.readAsBinaryString(blob);\n });\n}\n\n// decode an encoded blob\nfunction _decodeBlob(encodedBlob) {\n var arrayBuff = _binStringToArrayBuffer(atob(encodedBlob.data));\n return createBlob([arrayBuff], { type: encodedBlob.type });\n}\n\n// is this one of our fancy encoded blobs?\nfunction _isEncodedBlob(value) {\n return value && value.__local_forage_encoded_blob;\n}\n\n// Specialize the default `ready()` function by making it dependent\n// on the current database operations. Thus, the driver will be actually\n// ready when it's been initialized (default) *and* there are no pending\n// operations on the database (initiated by some other instances).\nfunction _fullyReady(callback) {\n var self = this;\n\n var promise = self._initReady().then(function () {\n var dbContext = dbContexts[self._dbInfo.name];\n\n if (dbContext && dbContext.dbReady) {\n return dbContext.dbReady;\n }\n });\n\n executeTwoCallbacks(promise, callback, callback);\n return promise;\n}\n\n// Try to establish a new db connection to replace the\n// current one which is broken (i.e. experiencing\n// InvalidStateError while creating a transaction).\nfunction _tryReconnect(dbInfo) {\n _deferReadiness(dbInfo);\n\n var dbContext = dbContexts[dbInfo.name];\n var forages = dbContext.forages;\n\n for (var i = 0; i < forages.length; i++) {\n var forage = forages[i];\n if (forage._dbInfo.db) {\n forage._dbInfo.db.close();\n forage._dbInfo.db = null;\n }\n }\n dbInfo.db = null;\n\n return _getOriginalConnection(dbInfo).then(function (db) {\n dbInfo.db = db;\n if (_isUpgradeNeeded(dbInfo)) {\n // Reopen the database for upgrading.\n return _getUpgradedConnection(dbInfo);\n }\n return db;\n }).then(function (db) {\n // store the latest db reference\n // in case the db was upgraded\n dbInfo.db = dbContext.db = db;\n for (var i = 0; i < forages.length; i++) {\n forages[i]._dbInfo.db = db;\n }\n })[\"catch\"](function (err) {\n _rejectReadiness(dbInfo, err);\n throw err;\n });\n}\n\n// FF doesn't like Promises (micro-tasks) and IDDB store operations,\n// so we have to do it with callbacks\nfunction createTransaction(dbInfo, mode, callback, retries) {\n if (retries === undefined) {\n retries = 1;\n }\n\n try {\n var tx = dbInfo.db.transaction(dbInfo.storeName, mode);\n callback(null, tx);\n } catch (err) {\n if (retries > 0 && (!dbInfo.db || err.name === 'InvalidStateError' || err.name === 'NotFoundError')) {\n return Promise$1.resolve().then(function () {\n if (!dbInfo.db || err.name === 'NotFoundError' && !dbInfo.db.objectStoreNames.contains(dbInfo.storeName) && dbInfo.version <= dbInfo.db.version) {\n // increase the db version, to create the new ObjectStore\n if (dbInfo.db) {\n dbInfo.version = dbInfo.db.version + 1;\n }\n // Reopen the database for upgrading.\n return _getUpgradedConnection(dbInfo);\n }\n }).then(function () {\n return _tryReconnect(dbInfo).then(function () {\n createTransaction(dbInfo, mode, callback, retries - 1);\n });\n })[\"catch\"](callback);\n }\n\n callback(err);\n }\n}\n\nfunction createDbContext() {\n return {\n // Running localForages sharing a database.\n forages: [],\n // Shared database.\n db: null,\n // Database readiness (promise).\n dbReady: null,\n // Deferred operations on the database.\n deferredOperations: []\n };\n}\n\n// Open the IndexedDB database (automatically creates one if one didn't\n// previously exist), using any options set in the config.\nfunction _initStorage(options) {\n var self = this;\n var dbInfo = {\n db: null\n };\n\n if (options) {\n for (var i in options) {\n dbInfo[i] = options[i];\n }\n }\n\n // Get the current context of the database;\n var dbContext = dbContexts[dbInfo.name];\n\n // ...or create a new context.\n if (!dbContext) {\n dbContext = createDbContext();\n // Register the new context in the global container.\n dbContexts[dbInfo.name] = dbContext;\n }\n\n // Register itself as a running localForage in the current context.\n dbContext.forages.push(self);\n\n // Replace the default `ready()` function with the specialized one.\n if (!self._initReady) {\n self._initReady = self.ready;\n self.ready = _fullyReady;\n }\n\n // Create an array of initialization states of the related localForages.\n var initPromises = [];\n\n function ignoreErrors() {\n // Don't handle errors here,\n // just makes sure related localForages aren't pending.\n return Promise$1.resolve();\n }\n\n for (var j = 0; j < dbContext.forages.length; j++) {\n var forage = dbContext.forages[j];\n if (forage !== self) {\n // Don't wait for itself...\n initPromises.push(forage._initReady()[\"catch\"](ignoreErrors));\n }\n }\n\n // Take a snapshot of the related localForages.\n var forages = dbContext.forages.slice(0);\n\n // Initialize the connection process only when\n // all the related localForages aren't pending.\n return Promise$1.all(initPromises).then(function () {\n dbInfo.db = dbContext.db;\n // Get the connection or open a new one without upgrade.\n return _getOriginalConnection(dbInfo);\n }).then(function (db) {\n dbInfo.db = db;\n if (_isUpgradeNeeded(dbInfo, self._defaultConfig.version)) {\n // Reopen the database for upgrading.\n return _getUpgradedConnection(dbInfo);\n }\n return db;\n }).then(function (db) {\n dbInfo.db = dbContext.db = db;\n self._dbInfo = dbInfo;\n // Share the final connection amongst related localForages.\n for (var k = 0; k < forages.length; k++) {\n var forage = forages[k];\n if (forage !== self) {\n // Self is already up-to-date.\n forage._dbInfo.db = dbInfo.db;\n forage._dbInfo.version = dbInfo.version;\n }\n }\n });\n}\n\nfunction getItem(key, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n var req = store.get(key);\n\n req.onsuccess = function () {\n var value = req.result;\n if (value === undefined) {\n value = null;\n }\n if (_isEncodedBlob(value)) {\n value = _decodeBlob(value);\n }\n resolve(value);\n };\n\n req.onerror = function () {\n reject(req.error);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Iterate over all items stored in database.\nfunction iterate(iterator, callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n var req = store.openCursor();\n var iterationNumber = 1;\n\n req.onsuccess = function () {\n var cursor = req.result;\n\n if (cursor) {\n var value = cursor.value;\n if (_isEncodedBlob(value)) {\n value = _decodeBlob(value);\n }\n var result = iterator(value, cursor.key, iterationNumber++);\n\n // when the iterator callback returns any\n // (non-`undefined`) value, then we stop\n // the iteration immediately\n if (result !== void 0) {\n resolve(result);\n } else {\n cursor[\"continue\"]();\n }\n } else {\n resolve();\n }\n };\n\n req.onerror = function () {\n reject(req.error);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n\n return promise;\n}\n\nfunction setItem(key, value, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = new Promise$1(function (resolve, reject) {\n var dbInfo;\n self.ready().then(function () {\n dbInfo = self._dbInfo;\n if (toString.call(value) === '[object Blob]') {\n return _checkBlobSupport(dbInfo.db).then(function (blobSupport) {\n if (blobSupport) {\n return value;\n }\n return _encodeBlob(value);\n });\n }\n return value;\n }).then(function (value) {\n createTransaction(self._dbInfo, READ_WRITE, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n\n // The reason we don't _save_ null is because IE 10 does\n // not support saving the `null` type in IndexedDB. How\n // ironic, given the bug below!\n // See: https://github.com/mozilla/localForage/issues/161\n if (value === null) {\n value = undefined;\n }\n\n var req = store.put(value, key);\n\n transaction.oncomplete = function () {\n // Cast to undefined so the value passed to\n // callback/promise is the same as what one would get out\n // of `getItem()` later. This leads to some weirdness\n // (setItem('foo', undefined) will return `null`), but\n // it's not my fault localStorage is our baseline and that\n // it's weird.\n if (value === undefined) {\n value = null;\n }\n\n resolve(value);\n };\n transaction.onabort = transaction.onerror = function () {\n var err = req.error ? req.error : req.transaction.error;\n reject(err);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction removeItem(key, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_WRITE, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n // We use a Grunt task to make this safe for IE and some\n // versions of Android (including those used by Cordova).\n // Normally IE won't like `.delete()` and will insist on\n // using `['delete']()`, but we have a build step that\n // fixes this for us now.\n var req = store[\"delete\"](key);\n transaction.oncomplete = function () {\n resolve();\n };\n\n transaction.onerror = function () {\n reject(req.error);\n };\n\n // The request will be also be aborted if we've exceeded our storage\n // space.\n transaction.onabort = function () {\n var err = req.error ? req.error : req.transaction.error;\n reject(err);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction clear(callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_WRITE, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n var req = store.clear();\n\n transaction.oncomplete = function () {\n resolve();\n };\n\n transaction.onabort = transaction.onerror = function () {\n var err = req.error ? req.error : req.transaction.error;\n reject(err);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction length(callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n var req = store.count();\n\n req.onsuccess = function () {\n resolve(req.result);\n };\n\n req.onerror = function () {\n reject(req.error);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction key(n, callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n if (n < 0) {\n resolve(null);\n\n return;\n }\n\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n var advanced = false;\n var req = store.openKeyCursor();\n\n req.onsuccess = function () {\n var cursor = req.result;\n if (!cursor) {\n // this means there weren't enough keys\n resolve(null);\n\n return;\n }\n\n if (n === 0) {\n // We have the first key, return it if that's what they\n // wanted.\n resolve(cursor.key);\n } else {\n if (!advanced) {\n // Otherwise, ask the cursor to skip ahead n\n // records.\n advanced = true;\n cursor.advance(n);\n } else {\n // When we get here, we've got the nth key.\n resolve(cursor.key);\n }\n }\n };\n\n req.onerror = function () {\n reject(req.error);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction keys(callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n var req = store.openKeyCursor();\n var keys = [];\n\n req.onsuccess = function () {\n var cursor = req.result;\n\n if (!cursor) {\n resolve(keys);\n return;\n }\n\n keys.push(cursor.key);\n cursor[\"continue\"]();\n };\n\n req.onerror = function () {\n reject(req.error);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction dropInstance(options, callback) {\n callback = getCallback.apply(this, arguments);\n\n var currentConfig = this.config();\n options = typeof options !== 'function' && options || {};\n if (!options.name) {\n options.name = options.name || currentConfig.name;\n options.storeName = options.storeName || currentConfig.storeName;\n }\n\n var self = this;\n var promise;\n if (!options.name) {\n promise = Promise$1.reject('Invalid arguments');\n } else {\n var isCurrentDb = options.name === currentConfig.name && self._dbInfo.db;\n\n var dbPromise = isCurrentDb ? Promise$1.resolve(self._dbInfo.db) : _getOriginalConnection(options).then(function (db) {\n var dbContext = dbContexts[options.name];\n var forages = dbContext.forages;\n dbContext.db = db;\n for (var i = 0; i < forages.length; i++) {\n forages[i]._dbInfo.db = db;\n }\n return db;\n });\n\n if (!options.storeName) {\n promise = dbPromise.then(function (db) {\n _deferReadiness(options);\n\n var dbContext = dbContexts[options.name];\n var forages = dbContext.forages;\n\n db.close();\n for (var i = 0; i < forages.length; i++) {\n var forage = forages[i];\n forage._dbInfo.db = null;\n }\n\n var dropDBPromise = new Promise$1(function (resolve, reject) {\n var req = idb.deleteDatabase(options.name);\n\n req.onerror = req.onblocked = function (err) {\n var db = req.result;\n if (db) {\n db.close();\n }\n reject(err);\n };\n\n req.onsuccess = function () {\n var db = req.result;\n if (db) {\n db.close();\n }\n resolve(db);\n };\n });\n\n return dropDBPromise.then(function (db) {\n dbContext.db = db;\n for (var i = 0; i < forages.length; i++) {\n var _forage = forages[i];\n _advanceReadiness(_forage._dbInfo);\n }\n })[\"catch\"](function (err) {\n (_rejectReadiness(options, err) || Promise$1.resolve())[\"catch\"](function () {});\n throw err;\n });\n });\n } else {\n promise = dbPromise.then(function (db) {\n if (!db.objectStoreNames.contains(options.storeName)) {\n return;\n }\n\n var newVersion = db.version + 1;\n\n _deferReadiness(options);\n\n var dbContext = dbContexts[options.name];\n var forages = dbContext.forages;\n\n db.close();\n for (var i = 0; i < forages.length; i++) {\n var forage = forages[i];\n forage._dbInfo.db = null;\n forage._dbInfo.version = newVersion;\n }\n\n var dropObjectPromise = new Promise$1(function (resolve, reject) {\n var req = idb.open(options.name, newVersion);\n\n req.onerror = function (err) {\n var db = req.result;\n db.close();\n reject(err);\n };\n\n req.onupgradeneeded = function () {\n var db = req.result;\n db.deleteObjectStore(options.storeName);\n };\n\n req.onsuccess = function () {\n var db = req.result;\n db.close();\n resolve(db);\n };\n });\n\n return dropObjectPromise.then(function (db) {\n dbContext.db = db;\n for (var j = 0; j < forages.length; j++) {\n var _forage2 = forages[j];\n _forage2._dbInfo.db = db;\n _advanceReadiness(_forage2._dbInfo);\n }\n })[\"catch\"](function (err) {\n (_rejectReadiness(options, err) || Promise$1.resolve())[\"catch\"](function () {});\n throw err;\n });\n });\n }\n }\n\n executeCallback(promise, callback);\n return promise;\n}\n\nvar asyncStorage = {\n _driver: 'asyncStorage',\n _initStorage: _initStorage,\n _support: isIndexedDBValid(),\n iterate: iterate,\n getItem: getItem,\n setItem: setItem,\n removeItem: removeItem,\n clear: clear,\n length: length,\n key: key,\n keys: keys,\n dropInstance: dropInstance\n};\n\nfunction isWebSQLValid() {\n return typeof openDatabase === 'function';\n}\n\n// Sadly, the best way to save binary data in WebSQL/localStorage is serializing\n// it to Base64, so this is how we store it to prevent very strange errors with less\n// verbose ways of binary <-> string data storage.\nvar BASE_CHARS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\nvar BLOB_TYPE_PREFIX = '~~local_forage_type~';\nvar BLOB_TYPE_PREFIX_REGEX = /^~~local_forage_type~([^~]+)~/;\n\nvar SERIALIZED_MARKER = '__lfsc__:';\nvar SERIALIZED_MARKER_LENGTH = SERIALIZED_MARKER.length;\n\n// OMG the serializations!\nvar TYPE_ARRAYBUFFER = 'arbf';\nvar TYPE_BLOB = 'blob';\nvar TYPE_INT8ARRAY = 'si08';\nvar TYPE_UINT8ARRAY = 'ui08';\nvar TYPE_UINT8CLAMPEDARRAY = 'uic8';\nvar TYPE_INT16ARRAY = 'si16';\nvar TYPE_INT32ARRAY = 'si32';\nvar TYPE_UINT16ARRAY = 'ur16';\nvar TYPE_UINT32ARRAY = 'ui32';\nvar TYPE_FLOAT32ARRAY = 'fl32';\nvar TYPE_FLOAT64ARRAY = 'fl64';\nvar TYPE_SERIALIZED_MARKER_LENGTH = SERIALIZED_MARKER_LENGTH + TYPE_ARRAYBUFFER.length;\n\nvar toString$1 = Object.prototype.toString;\n\nfunction stringToBuffer(serializedString) {\n // Fill the string into a ArrayBuffer.\n var bufferLength = serializedString.length * 0.75;\n var len = serializedString.length;\n var i;\n var p = 0;\n var encoded1, encoded2, encoded3, encoded4;\n\n if (serializedString[serializedString.length - 1] === '=') {\n bufferLength--;\n if (serializedString[serializedString.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n var buffer = new ArrayBuffer(bufferLength);\n var bytes = new Uint8Array(buffer);\n\n for (i = 0; i < len; i += 4) {\n encoded1 = BASE_CHARS.indexOf(serializedString[i]);\n encoded2 = BASE_CHARS.indexOf(serializedString[i + 1]);\n encoded3 = BASE_CHARS.indexOf(serializedString[i + 2]);\n encoded4 = BASE_CHARS.indexOf(serializedString[i + 3]);\n\n /*jslint bitwise: true */\n bytes[p++] = encoded1 << 2 | encoded2 >> 4;\n bytes[p++] = (encoded2 & 15) << 4 | encoded3 >> 2;\n bytes[p++] = (encoded3 & 3) << 6 | encoded4 & 63;\n }\n return buffer;\n}\n\n// Converts a buffer to a string to store, serialized, in the backend\n// storage library.\nfunction bufferToString(buffer) {\n // base64-arraybuffer\n var bytes = new Uint8Array(buffer);\n var base64String = '';\n var i;\n\n for (i = 0; i < bytes.length; i += 3) {\n /*jslint bitwise: true */\n base64String += BASE_CHARS[bytes[i] >> 2];\n base64String += BASE_CHARS[(bytes[i] & 3) << 4 | bytes[i + 1] >> 4];\n base64String += BASE_CHARS[(bytes[i + 1] & 15) << 2 | bytes[i + 2] >> 6];\n base64String += BASE_CHARS[bytes[i + 2] & 63];\n }\n\n if (bytes.length % 3 === 2) {\n base64String = base64String.substring(0, base64String.length - 1) + '=';\n } else if (bytes.length % 3 === 1) {\n base64String = base64String.substring(0, base64String.length - 2) + '==';\n }\n\n return base64String;\n}\n\n// Serialize a value, afterwards executing a callback (which usually\n// instructs the `setItem()` callback/promise to be executed). This is how\n// we store binary data with localStorage.\nfunction serialize(value, callback) {\n var valueType = '';\n if (value) {\n valueType = toString$1.call(value);\n }\n\n // Cannot use `value instanceof ArrayBuffer` or such here, as these\n // checks fail when running the tests using casper.js...\n //\n // TODO: See why those tests fail and use a better solution.\n if (value && (valueType === '[object ArrayBuffer]' || value.buffer && toString$1.call(value.buffer) === '[object ArrayBuffer]')) {\n // Convert binary arrays to a string and prefix the string with\n // a special marker.\n var buffer;\n var marker = SERIALIZED_MARKER;\n\n if (value instanceof ArrayBuffer) {\n buffer = value;\n marker += TYPE_ARRAYBUFFER;\n } else {\n buffer = value.buffer;\n\n if (valueType === '[object Int8Array]') {\n marker += TYPE_INT8ARRAY;\n } else if (valueType === '[object Uint8Array]') {\n marker += TYPE_UINT8ARRAY;\n } else if (valueType === '[object Uint8ClampedArray]') {\n marker += TYPE_UINT8CLAMPEDARRAY;\n } else if (valueType === '[object Int16Array]') {\n marker += TYPE_INT16ARRAY;\n } else if (valueType === '[object Uint16Array]') {\n marker += TYPE_UINT16ARRAY;\n } else if (valueType === '[object Int32Array]') {\n marker += TYPE_INT32ARRAY;\n } else if (valueType === '[object Uint32Array]') {\n marker += TYPE_UINT32ARRAY;\n } else if (valueType === '[object Float32Array]') {\n marker += TYPE_FLOAT32ARRAY;\n } else if (valueType === '[object Float64Array]') {\n marker += TYPE_FLOAT64ARRAY;\n } else {\n callback(new Error('Failed to get type for BinaryArray'));\n }\n }\n\n callback(marker + bufferToString(buffer));\n } else if (valueType === '[object Blob]') {\n // Conver the blob to a binaryArray and then to a string.\n var fileReader = new FileReader();\n\n fileReader.onload = function () {\n // Backwards-compatible prefix for the blob type.\n var str = BLOB_TYPE_PREFIX + value.type + '~' + bufferToString(this.result);\n\n callback(SERIALIZED_MARKER + TYPE_BLOB + str);\n };\n\n fileReader.readAsArrayBuffer(value);\n } else {\n try {\n callback(JSON.stringify(value));\n } catch (e) {\n console.error(\"Couldn't convert value into a JSON string: \", value);\n\n callback(null, e);\n }\n }\n}\n\n// Deserialize data we've inserted into a value column/field. We place\n// special markers into our strings to mark them as encoded; this isn't\n// as nice as a meta field, but it's the only sane thing we can do whilst\n// keeping localStorage support intact.\n//\n// Oftentimes this will just deserialize JSON content, but if we have a\n// special marker (SERIALIZED_MARKER, defined above), we will extract\n// some kind of arraybuffer/binary data/typed array out of the string.\nfunction deserialize(value) {\n // If we haven't marked this string as being specially serialized (i.e.\n // something other than serialized JSON), we can just return it and be\n // done with it.\n if (value.substring(0, SERIALIZED_MARKER_LENGTH) !== SERIALIZED_MARKER) {\n return JSON.parse(value);\n }\n\n // The following code deals with deserializing some kind of Blob or\n // TypedArray. First we separate out the type of data we're dealing\n // with from the data itself.\n var serializedString = value.substring(TYPE_SERIALIZED_MARKER_LENGTH);\n var type = value.substring(SERIALIZED_MARKER_LENGTH, TYPE_SERIALIZED_MARKER_LENGTH);\n\n var blobType;\n // Backwards-compatible blob type serialization strategy.\n // DBs created with older versions of localForage will simply not have the blob type.\n if (type === TYPE_BLOB && BLOB_TYPE_PREFIX_REGEX.test(serializedString)) {\n var matcher = serializedString.match(BLOB_TYPE_PREFIX_REGEX);\n blobType = matcher[1];\n serializedString = serializedString.substring(matcher[0].length);\n }\n var buffer = stringToBuffer(serializedString);\n\n // Return the right type based on the code/type set during\n // serialization.\n switch (type) {\n case TYPE_ARRAYBUFFER:\n return buffer;\n case TYPE_BLOB:\n return createBlob([buffer], { type: blobType });\n case TYPE_INT8ARRAY:\n return new Int8Array(buffer);\n case TYPE_UINT8ARRAY:\n return new Uint8Array(buffer);\n case TYPE_UINT8CLAMPEDARRAY:\n return new Uint8ClampedArray(buffer);\n case TYPE_INT16ARRAY:\n return new Int16Array(buffer);\n case TYPE_UINT16ARRAY:\n return new Uint16Array(buffer);\n case TYPE_INT32ARRAY:\n return new Int32Array(buffer);\n case TYPE_UINT32ARRAY:\n return new Uint32Array(buffer);\n case TYPE_FLOAT32ARRAY:\n return new Float32Array(buffer);\n case TYPE_FLOAT64ARRAY:\n return new Float64Array(buffer);\n default:\n throw new Error('Unkown type: ' + type);\n }\n}\n\nvar localforageSerializer = {\n serialize: serialize,\n deserialize: deserialize,\n stringToBuffer: stringToBuffer,\n bufferToString: bufferToString\n};\n\n/*\n * Includes code from:\n *\n * base64-arraybuffer\n * https://github.com/niklasvh/base64-arraybuffer\n *\n * Copyright (c) 2012 Niklas von Hertzen\n * Licensed under the MIT license.\n */\n\nfunction createDbTable(t, dbInfo, callback, errorCallback) {\n t.executeSql('CREATE TABLE IF NOT EXISTS ' + dbInfo.storeName + ' ' + '(id INTEGER PRIMARY KEY, key unique, value)', [], callback, errorCallback);\n}\n\n// Open the WebSQL database (automatically creates one if one didn't\n// previously exist), using any options set in the config.\nfunction _initStorage$1(options) {\n var self = this;\n var dbInfo = {\n db: null\n };\n\n if (options) {\n for (var i in options) {\n dbInfo[i] = typeof options[i] !== 'string' ? options[i].toString() : options[i];\n }\n }\n\n var dbInfoPromise = new Promise$1(function (resolve, reject) {\n // Open the database; the openDatabase API will automatically\n // create it for us if it doesn't exist.\n try {\n dbInfo.db = openDatabase(dbInfo.name, String(dbInfo.version), dbInfo.description, dbInfo.size);\n } catch (e) {\n return reject(e);\n }\n\n // Create our key/value table if it doesn't exist.\n dbInfo.db.transaction(function (t) {\n createDbTable(t, dbInfo, function () {\n self._dbInfo = dbInfo;\n resolve();\n }, function (t, error) {\n reject(error);\n });\n }, reject);\n });\n\n dbInfo.serializer = localforageSerializer;\n return dbInfoPromise;\n}\n\nfunction tryExecuteSql(t, dbInfo, sqlStatement, args, callback, errorCallback) {\n t.executeSql(sqlStatement, args, callback, function (t, error) {\n if (error.code === error.SYNTAX_ERR) {\n t.executeSql('SELECT name FROM sqlite_master ' + \"WHERE type='table' AND name = ?\", [dbInfo.storeName], function (t, results) {\n if (!results.rows.length) {\n // if the table is missing (was deleted)\n // re-create it table and retry\n createDbTable(t, dbInfo, function () {\n t.executeSql(sqlStatement, args, callback, errorCallback);\n }, errorCallback);\n } else {\n errorCallback(t, error);\n }\n }, errorCallback);\n } else {\n errorCallback(t, error);\n }\n }, errorCallback);\n}\n\nfunction getItem$1(key, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'SELECT * FROM ' + dbInfo.storeName + ' WHERE key = ? LIMIT 1', [key], function (t, results) {\n var result = results.rows.length ? results.rows.item(0).value : null;\n\n // Check to see if this is serialized content we need to\n // unpack.\n if (result) {\n result = dbInfo.serializer.deserialize(result);\n }\n\n resolve(result);\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction iterate$1(iterator, callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'SELECT * FROM ' + dbInfo.storeName, [], function (t, results) {\n var rows = results.rows;\n var length = rows.length;\n\n for (var i = 0; i < length; i++) {\n var item = rows.item(i);\n var result = item.value;\n\n // Check to see if this is serialized content\n // we need to unpack.\n if (result) {\n result = dbInfo.serializer.deserialize(result);\n }\n\n result = iterator(result, item.key, i + 1);\n\n // void(0) prevents problems with redefinition\n // of `undefined`.\n if (result !== void 0) {\n resolve(result);\n return;\n }\n }\n\n resolve();\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction _setItem(key, value, callback, retriesLeft) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n // The localStorage API doesn't return undefined values in an\n // \"expected\" way, so undefined is always cast to null in all\n // drivers. See: https://github.com/mozilla/localForage/pull/42\n if (value === undefined) {\n value = null;\n }\n\n // Save the original value to pass to the callback.\n var originalValue = value;\n\n var dbInfo = self._dbInfo;\n dbInfo.serializer.serialize(value, function (value, error) {\n if (error) {\n reject(error);\n } else {\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'INSERT OR REPLACE INTO ' + dbInfo.storeName + ' ' + '(key, value) VALUES (?, ?)', [key, value], function () {\n resolve(originalValue);\n }, function (t, error) {\n reject(error);\n });\n }, function (sqlError) {\n // The transaction failed; check\n // to see if it's a quota error.\n if (sqlError.code === sqlError.QUOTA_ERR) {\n // We reject the callback outright for now, but\n // it's worth trying to re-run the transaction.\n // Even if the user accepts the prompt to use\n // more storage on Safari, this error will\n // be called.\n //\n // Try to re-run the transaction.\n if (retriesLeft > 0) {\n resolve(_setItem.apply(self, [key, originalValue, callback, retriesLeft - 1]));\n return;\n }\n reject(sqlError);\n }\n });\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction setItem$1(key, value, callback) {\n return _setItem.apply(this, [key, value, callback, 1]);\n}\n\nfunction removeItem$1(key, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'DELETE FROM ' + dbInfo.storeName + ' WHERE key = ?', [key], function () {\n resolve();\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Deletes every item in the table.\n// TODO: Find out if this resets the AUTO_INCREMENT number.\nfunction clear$1(callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'DELETE FROM ' + dbInfo.storeName, [], function () {\n resolve();\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Does a simple `COUNT(key)` to get the number of items stored in\n// localForage.\nfunction length$1(callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n dbInfo.db.transaction(function (t) {\n // Ahhh, SQL makes this one soooooo easy.\n tryExecuteSql(t, dbInfo, 'SELECT COUNT(key) as c FROM ' + dbInfo.storeName, [], function (t, results) {\n var result = results.rows.item(0).c;\n resolve(result);\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Return the key located at key index X; essentially gets the key from a\n// `WHERE id = ?`. This is the most efficient way I can think to implement\n// this rarely-used (in my experience) part of the API, but it can seem\n// inconsistent, because we do `INSERT OR REPLACE INTO` on `setItem()`, so\n// the ID of each key will change every time it's updated. Perhaps a stored\n// procedure for the `setItem()` SQL would solve this problem?\n// TODO: Don't change ID on `setItem()`.\nfunction key$1(n, callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'SELECT key FROM ' + dbInfo.storeName + ' WHERE id = ? LIMIT 1', [n + 1], function (t, results) {\n var result = results.rows.length ? results.rows.item(0).key : null;\n resolve(result);\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction keys$1(callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'SELECT key FROM ' + dbInfo.storeName, [], function (t, results) {\n var keys = [];\n\n for (var i = 0; i < results.rows.length; i++) {\n keys.push(results.rows.item(i).key);\n }\n\n resolve(keys);\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// https://www.w3.org/TR/webdatabase/#databases\n// > There is no way to enumerate or delete the databases available for an origin from this API.\nfunction getAllStoreNames(db) {\n return new Promise$1(function (resolve, reject) {\n db.transaction(function (t) {\n t.executeSql('SELECT name FROM sqlite_master ' + \"WHERE type='table' AND name <> '__WebKitDatabaseInfoTable__'\", [], function (t, results) {\n var storeNames = [];\n\n for (var i = 0; i < results.rows.length; i++) {\n storeNames.push(results.rows.item(i).name);\n }\n\n resolve({\n db: db,\n storeNames: storeNames\n });\n }, function (t, error) {\n reject(error);\n });\n }, function (sqlError) {\n reject(sqlError);\n });\n });\n}\n\nfunction dropInstance$1(options, callback) {\n callback = getCallback.apply(this, arguments);\n\n var currentConfig = this.config();\n options = typeof options !== 'function' && options || {};\n if (!options.name) {\n options.name = options.name || currentConfig.name;\n options.storeName = options.storeName || currentConfig.storeName;\n }\n\n var self = this;\n var promise;\n if (!options.name) {\n promise = Promise$1.reject('Invalid arguments');\n } else {\n promise = new Promise$1(function (resolve) {\n var db;\n if (options.name === currentConfig.name) {\n // use the db reference of the current instance\n db = self._dbInfo.db;\n } else {\n db = openDatabase(options.name, '', '', 0);\n }\n\n if (!options.storeName) {\n // drop all database tables\n resolve(getAllStoreNames(db));\n } else {\n resolve({\n db: db,\n storeNames: [options.storeName]\n });\n }\n }).then(function (operationInfo) {\n return new Promise$1(function (resolve, reject) {\n operationInfo.db.transaction(function (t) {\n function dropTable(storeName) {\n return new Promise$1(function (resolve, reject) {\n t.executeSql('DROP TABLE IF EXISTS ' + storeName, [], function () {\n resolve();\n }, function (t, error) {\n reject(error);\n });\n });\n }\n\n var operations = [];\n for (var i = 0, len = operationInfo.storeNames.length; i < len; i++) {\n operations.push(dropTable(operationInfo.storeNames[i]));\n }\n\n Promise$1.all(operations).then(function () {\n resolve();\n })[\"catch\"](function (e) {\n reject(e);\n });\n }, function (sqlError) {\n reject(sqlError);\n });\n });\n });\n }\n\n executeCallback(promise, callback);\n return promise;\n}\n\nvar webSQLStorage = {\n _driver: 'webSQLStorage',\n _initStorage: _initStorage$1,\n _support: isWebSQLValid(),\n iterate: iterate$1,\n getItem: getItem$1,\n setItem: setItem$1,\n removeItem: removeItem$1,\n clear: clear$1,\n length: length$1,\n key: key$1,\n keys: keys$1,\n dropInstance: dropInstance$1\n};\n\nfunction isLocalStorageValid() {\n try {\n return typeof localStorage !== 'undefined' && 'setItem' in localStorage &&\n // in IE8 typeof localStorage.setItem === 'object'\n !!localStorage.setItem;\n } catch (e) {\n return false;\n }\n}\n\nfunction _getKeyPrefix(options, defaultConfig) {\n var keyPrefix = options.name + '/';\n\n if (options.storeName !== defaultConfig.storeName) {\n keyPrefix += options.storeName + '/';\n }\n return keyPrefix;\n}\n\n// Check if localStorage throws when saving an item\nfunction checkIfLocalStorageThrows() {\n var localStorageTestKey = '_localforage_support_test';\n\n try {\n localStorage.setItem(localStorageTestKey, true);\n localStorage.removeItem(localStorageTestKey);\n\n return false;\n } catch (e) {\n return true;\n }\n}\n\n// Check if localStorage is usable and allows to save an item\n// This method checks if localStorage is usable in Safari Private Browsing\n// mode, or in any other case where the available quota for localStorage\n// is 0 and there wasn't any saved items yet.\nfunction _isLocalStorageUsable() {\n return !checkIfLocalStorageThrows() || localStorage.length > 0;\n}\n\n// Config the localStorage backend, using options set in the config.\nfunction _initStorage$2(options) {\n var self = this;\n var dbInfo = {};\n if (options) {\n for (var i in options) {\n dbInfo[i] = options[i];\n }\n }\n\n dbInfo.keyPrefix = _getKeyPrefix(options, self._defaultConfig);\n\n if (!_isLocalStorageUsable()) {\n return Promise$1.reject();\n }\n\n self._dbInfo = dbInfo;\n dbInfo.serializer = localforageSerializer;\n\n return Promise$1.resolve();\n}\n\n// Remove all keys from the datastore, effectively destroying all data in\n// the app's key/value store!\nfunction clear$2(callback) {\n var self = this;\n var promise = self.ready().then(function () {\n var keyPrefix = self._dbInfo.keyPrefix;\n\n for (var i = localStorage.length - 1; i >= 0; i--) {\n var key = localStorage.key(i);\n\n if (key.indexOf(keyPrefix) === 0) {\n localStorage.removeItem(key);\n }\n }\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Retrieve an item from the store. Unlike the original async_storage\n// library in Gaia, we don't modify return values at all. If a key's value\n// is `undefined`, we pass that value to the callback function.\nfunction getItem$2(key, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = self.ready().then(function () {\n var dbInfo = self._dbInfo;\n var result = localStorage.getItem(dbInfo.keyPrefix + key);\n\n // If a result was found, parse it from the serialized\n // string into a JS object. If result isn't truthy, the key\n // is likely undefined and we'll pass it straight to the\n // callback.\n if (result) {\n result = dbInfo.serializer.deserialize(result);\n }\n\n return result;\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Iterate over all items in the store.\nfunction iterate$2(iterator, callback) {\n var self = this;\n\n var promise = self.ready().then(function () {\n var dbInfo = self._dbInfo;\n var keyPrefix = dbInfo.keyPrefix;\n var keyPrefixLength = keyPrefix.length;\n var length = localStorage.length;\n\n // We use a dedicated iterator instead of the `i` variable below\n // so other keys we fetch in localStorage aren't counted in\n // the `iterationNumber` argument passed to the `iterate()`\n // callback.\n //\n // See: github.com/mozilla/localForage/pull/435#discussion_r38061530\n var iterationNumber = 1;\n\n for (var i = 0; i < length; i++) {\n var key = localStorage.key(i);\n if (key.indexOf(keyPrefix) !== 0) {\n continue;\n }\n var value = localStorage.getItem(key);\n\n // If a result was found, parse it from the serialized\n // string into a JS object. If result isn't truthy, the\n // key is likely undefined and we'll pass it straight\n // to the iterator.\n if (value) {\n value = dbInfo.serializer.deserialize(value);\n }\n\n value = iterator(value, key.substring(keyPrefixLength), iterationNumber++);\n\n if (value !== void 0) {\n return value;\n }\n }\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Same as localStorage's key() method, except takes a callback.\nfunction key$2(n, callback) {\n var self = this;\n var promise = self.ready().then(function () {\n var dbInfo = self._dbInfo;\n var result;\n try {\n result = localStorage.key(n);\n } catch (error) {\n result = null;\n }\n\n // Remove the prefix from the key, if a key is found.\n if (result) {\n result = result.substring(dbInfo.keyPrefix.length);\n }\n\n return result;\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction keys$2(callback) {\n var self = this;\n var promise = self.ready().then(function () {\n var dbInfo = self._dbInfo;\n var length = localStorage.length;\n var keys = [];\n\n for (var i = 0; i < length; i++) {\n var itemKey = localStorage.key(i);\n if (itemKey.indexOf(dbInfo.keyPrefix) === 0) {\n keys.push(itemKey.substring(dbInfo.keyPrefix.length));\n }\n }\n\n return keys;\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Supply the number of keys in the datastore to the callback function.\nfunction length$2(callback) {\n var self = this;\n var promise = self.keys().then(function (keys) {\n return keys.length;\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Remove an item from the store, nice and simple.\nfunction removeItem$2(key, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = self.ready().then(function () {\n var dbInfo = self._dbInfo;\n localStorage.removeItem(dbInfo.keyPrefix + key);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Set a key's value and run an optional callback once the value is set.\n// Unlike Gaia's implementation, the callback function is passed the value,\n// in case you want to operate on that value only after you're sure it\n// saved, or something like that.\nfunction setItem$2(key, value, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = self.ready().then(function () {\n // Convert undefined values to null.\n // https://github.com/mozilla/localForage/pull/42\n if (value === undefined) {\n value = null;\n }\n\n // Save the original value to pass to the callback.\n var originalValue = value;\n\n return new Promise$1(function (resolve, reject) {\n var dbInfo = self._dbInfo;\n dbInfo.serializer.serialize(value, function (value, error) {\n if (error) {\n reject(error);\n } else {\n try {\n localStorage.setItem(dbInfo.keyPrefix + key, value);\n resolve(originalValue);\n } catch (e) {\n // localStorage capacity exceeded.\n // TODO: Make this a specific error/event.\n if (e.name === 'QuotaExceededError' || e.name === 'NS_ERROR_DOM_QUOTA_REACHED') {\n reject(e);\n }\n reject(e);\n }\n }\n });\n });\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction dropInstance$2(options, callback) {\n callback = getCallback.apply(this, arguments);\n\n options = typeof options !== 'function' && options || {};\n if (!options.name) {\n var currentConfig = this.config();\n options.name = options.name || currentConfig.name;\n options.storeName = options.storeName || currentConfig.storeName;\n }\n\n var self = this;\n var promise;\n if (!options.name) {\n promise = Promise$1.reject('Invalid arguments');\n } else {\n promise = new Promise$1(function (resolve) {\n if (!options.storeName) {\n resolve(options.name + '/');\n } else {\n resolve(_getKeyPrefix(options, self._defaultConfig));\n }\n }).then(function (keyPrefix) {\n for (var i = localStorage.length - 1; i >= 0; i--) {\n var key = localStorage.key(i);\n\n if (key.indexOf(keyPrefix) === 0) {\n localStorage.removeItem(key);\n }\n }\n });\n }\n\n executeCallback(promise, callback);\n return promise;\n}\n\nvar localStorageWrapper = {\n _driver: 'localStorageWrapper',\n _initStorage: _initStorage$2,\n _support: isLocalStorageValid(),\n iterate: iterate$2,\n getItem: getItem$2,\n setItem: setItem$2,\n removeItem: removeItem$2,\n clear: clear$2,\n length: length$2,\n key: key$2,\n keys: keys$2,\n dropInstance: dropInstance$2\n};\n\nvar sameValue = function sameValue(x, y) {\n return x === y || typeof x === 'number' && typeof y === 'number' && isNaN(x) && isNaN(y);\n};\n\nvar includes = function includes(array, searchElement) {\n var len = array.length;\n var i = 0;\n while (i < len) {\n if (sameValue(array[i], searchElement)) {\n return true;\n }\n i++;\n }\n\n return false;\n};\n\nvar isArray = Array.isArray || function (arg) {\n return Object.prototype.toString.call(arg) === '[object Array]';\n};\n\n// Drivers are stored here when `defineDriver()` is called.\n// They are shared across all instances of localForage.\nvar DefinedDrivers = {};\n\nvar DriverSupport = {};\n\nvar DefaultDrivers = {\n INDEXEDDB: asyncStorage,\n WEBSQL: webSQLStorage,\n LOCALSTORAGE: localStorageWrapper\n};\n\nvar DefaultDriverOrder = [DefaultDrivers.INDEXEDDB._driver, DefaultDrivers.WEBSQL._driver, DefaultDrivers.LOCALSTORAGE._driver];\n\nvar OptionalDriverMethods = ['dropInstance'];\n\nvar LibraryMethods = ['clear', 'getItem', 'iterate', 'key', 'keys', 'length', 'removeItem', 'setItem'].concat(OptionalDriverMethods);\n\nvar DefaultConfig = {\n description: '',\n driver: DefaultDriverOrder.slice(),\n name: 'localforage',\n // Default DB size is _JUST UNDER_ 5MB, as it's the highest size\n // we can use without a prompt.\n size: 4980736,\n storeName: 'keyvaluepairs',\n version: 1.0\n};\n\nfunction callWhenReady(localForageInstance, libraryMethod) {\n localForageInstance[libraryMethod] = function () {\n var _args = arguments;\n return localForageInstance.ready().then(function () {\n return localForageInstance[libraryMethod].apply(localForageInstance, _args);\n });\n };\n}\n\nfunction extend() {\n for (var i = 1; i < arguments.length; i++) {\n var arg = arguments[i];\n\n if (arg) {\n for (var _key in arg) {\n if (arg.hasOwnProperty(_key)) {\n if (isArray(arg[_key])) {\n arguments[0][_key] = arg[_key].slice();\n } else {\n arguments[0][_key] = arg[_key];\n }\n }\n }\n }\n }\n\n return arguments[0];\n}\n\nvar LocalForage = function () {\n function LocalForage(options) {\n _classCallCheck(this, LocalForage);\n\n for (var driverTypeKey in DefaultDrivers) {\n if (DefaultDrivers.hasOwnProperty(driverTypeKey)) {\n var driver = DefaultDrivers[driverTypeKey];\n var driverName = driver._driver;\n this[driverTypeKey] = driverName;\n\n if (!DefinedDrivers[driverName]) {\n // we don't need to wait for the promise,\n // since the default drivers can be defined\n // in a blocking manner\n this.defineDriver(driver);\n }\n }\n }\n\n this._defaultConfig = extend({}, DefaultConfig);\n this._config = extend({}, this._defaultConfig, options);\n this._driverSet = null;\n this._initDriver = null;\n this._ready = false;\n this._dbInfo = null;\n\n this._wrapLibraryMethodsWithReady();\n this.setDriver(this._config.driver)[\"catch\"](function () {});\n }\n\n // Set any config values for localForage; can be called anytime before\n // the first API call (e.g. `getItem`, `setItem`).\n // We loop through options so we don't overwrite existing config\n // values.\n\n\n LocalForage.prototype.config = function config(options) {\n // If the options argument is an object, we use it to set values.\n // Otherwise, we return either a specified config value or all\n // config values.\n if ((typeof options === 'undefined' ? 'undefined' : _typeof(options)) === 'object') {\n // If localforage is ready and fully initialized, we can't set\n // any new configuration values. Instead, we return an error.\n if (this._ready) {\n return new Error(\"Can't call config() after localforage \" + 'has been used.');\n }\n\n for (var i in options) {\n if (i === 'storeName') {\n options[i] = options[i].replace(/\\W/g, '_');\n }\n\n if (i === 'version' && typeof options[i] !== 'number') {\n return new Error('Database version must be a number.');\n }\n\n this._config[i] = options[i];\n }\n\n // after all config options are set and\n // the driver option is used, try setting it\n if ('driver' in options && options.driver) {\n return this.setDriver(this._config.driver);\n }\n\n return true;\n } else if (typeof options === 'string') {\n return this._config[options];\n } else {\n return this._config;\n }\n };\n\n // Used to define a custom driver, shared across all instances of\n // localForage.\n\n\n LocalForage.prototype.defineDriver = function defineDriver(driverObject, callback, errorCallback) {\n var promise = new Promise$1(function (resolve, reject) {\n try {\n var driverName = driverObject._driver;\n var complianceError = new Error('Custom driver not compliant; see ' + 'https://mozilla.github.io/localForage/#definedriver');\n\n // A driver name should be defined and not overlap with the\n // library-defined, default drivers.\n if (!driverObject._driver) {\n reject(complianceError);\n return;\n }\n\n var driverMethods = LibraryMethods.concat('_initStorage');\n for (var i = 0, len = driverMethods.length; i < len; i++) {\n var driverMethodName = driverMethods[i];\n\n // when the property is there,\n // it should be a method even when optional\n var isRequired = !includes(OptionalDriverMethods, driverMethodName);\n if ((isRequired || driverObject[driverMethodName]) && typeof driverObject[driverMethodName] !== 'function') {\n reject(complianceError);\n return;\n }\n }\n\n var configureMissingMethods = function configureMissingMethods() {\n var methodNotImplementedFactory = function methodNotImplementedFactory(methodName) {\n return function () {\n var error = new Error('Method ' + methodName + ' is not implemented by the current driver');\n var promise = Promise$1.reject(error);\n executeCallback(promise, arguments[arguments.length - 1]);\n return promise;\n };\n };\n\n for (var _i = 0, _len = OptionalDriverMethods.length; _i < _len; _i++) {\n var optionalDriverMethod = OptionalDriverMethods[_i];\n if (!driverObject[optionalDriverMethod]) {\n driverObject[optionalDriverMethod] = methodNotImplementedFactory(optionalDriverMethod);\n }\n }\n };\n\n configureMissingMethods();\n\n var setDriverSupport = function setDriverSupport(support) {\n if (DefinedDrivers[driverName]) {\n console.info('Redefining LocalForage driver: ' + driverName);\n }\n DefinedDrivers[driverName] = driverObject;\n DriverSupport[driverName] = support;\n // don't use a then, so that we can define\n // drivers that have simple _support methods\n // in a blocking manner\n resolve();\n };\n\n if ('_support' in driverObject) {\n if (driverObject._support && typeof driverObject._support === 'function') {\n driverObject._support().then(setDriverSupport, reject);\n } else {\n setDriverSupport(!!driverObject._support);\n }\n } else {\n setDriverSupport(true);\n }\n } catch (e) {\n reject(e);\n }\n });\n\n executeTwoCallbacks(promise, callback, errorCallback);\n return promise;\n };\n\n LocalForage.prototype.driver = function driver() {\n return this._driver || null;\n };\n\n LocalForage.prototype.getDriver = function getDriver(driverName, callback, errorCallback) {\n var getDriverPromise = DefinedDrivers[driverName] ? Promise$1.resolve(DefinedDrivers[driverName]) : Promise$1.reject(new Error('Driver not found.'));\n\n executeTwoCallbacks(getDriverPromise, callback, errorCallback);\n return getDriverPromise;\n };\n\n LocalForage.prototype.getSerializer = function getSerializer(callback) {\n var serializerPromise = Promise$1.resolve(localforageSerializer);\n executeTwoCallbacks(serializerPromise, callback);\n return serializerPromise;\n };\n\n LocalForage.prototype.ready = function ready(callback) {\n var self = this;\n\n var promise = self._driverSet.then(function () {\n if (self._ready === null) {\n self._ready = self._initDriver();\n }\n\n return self._ready;\n });\n\n executeTwoCallbacks(promise, callback, callback);\n return promise;\n };\n\n LocalForage.prototype.setDriver = function setDriver(drivers, callback, errorCallback) {\n var self = this;\n\n if (!isArray(drivers)) {\n drivers = [drivers];\n }\n\n var supportedDrivers = this._getSupportedDrivers(drivers);\n\n function setDriverToConfig() {\n self._config.driver = self.driver();\n }\n\n function extendSelfWithDriver(driver) {\n self._extend(driver);\n setDriverToConfig();\n\n self._ready = self._initStorage(self._config);\n return self._ready;\n }\n\n function initDriver(supportedDrivers) {\n return function () {\n var currentDriverIndex = 0;\n\n function driverPromiseLoop() {\n while (currentDriverIndex < supportedDrivers.length) {\n var driverName = supportedDrivers[currentDriverIndex];\n currentDriverIndex++;\n\n self._dbInfo = null;\n self._ready = null;\n\n return self.getDriver(driverName).then(extendSelfWithDriver)[\"catch\"](driverPromiseLoop);\n }\n\n setDriverToConfig();\n var error = new Error('No available storage method found.');\n self._driverSet = Promise$1.reject(error);\n return self._driverSet;\n }\n\n return driverPromiseLoop();\n };\n }\n\n // There might be a driver initialization in progress\n // so wait for it to finish in order to avoid a possible\n // race condition to set _dbInfo\n var oldDriverSetDone = this._driverSet !== null ? this._driverSet[\"catch\"](function () {\n return Promise$1.resolve();\n }) : Promise$1.resolve();\n\n this._driverSet = oldDriverSetDone.then(function () {\n var driverName = supportedDrivers[0];\n self._dbInfo = null;\n self._ready = null;\n\n return self.getDriver(driverName).then(function (driver) {\n self._driver = driver._driver;\n setDriverToConfig();\n self._wrapLibraryMethodsWithReady();\n self._initDriver = initDriver(supportedDrivers);\n });\n })[\"catch\"](function () {\n setDriverToConfig();\n var error = new Error('No available storage method found.');\n self._driverSet = Promise$1.reject(error);\n return self._driverSet;\n });\n\n executeTwoCallbacks(this._driverSet, callback, errorCallback);\n return this._driverSet;\n };\n\n LocalForage.prototype.supports = function supports(driverName) {\n return !!DriverSupport[driverName];\n };\n\n LocalForage.prototype._extend = function _extend(libraryMethodsAndProperties) {\n extend(this, libraryMethodsAndProperties);\n };\n\n LocalForage.prototype._getSupportedDrivers = function _getSupportedDrivers(drivers) {\n var supportedDrivers = [];\n for (var i = 0, len = drivers.length; i < len; i++) {\n var driverName = drivers[i];\n if (this.supports(driverName)) {\n supportedDrivers.push(driverName);\n }\n }\n return supportedDrivers;\n };\n\n LocalForage.prototype._wrapLibraryMethodsWithReady = function _wrapLibraryMethodsWithReady() {\n // Add a stub for each driver API method that delays the call to the\n // corresponding driver method until localForage is ready. These stubs\n // will be replaced by the driver methods as soon as the driver is\n // loaded, so there is no performance impact.\n for (var i = 0, len = LibraryMethods.length; i < len; i++) {\n callWhenReady(this, LibraryMethods[i]);\n }\n };\n\n LocalForage.prototype.createInstance = function createInstance(options) {\n return new LocalForage(options);\n };\n\n return LocalForage;\n}();\n\n// The actual localForage object that we expose as a module or via a\n// global. It's extended by pulling in one of our other libraries.\n\n\nvar localforage_js = new LocalForage();\n\nmodule.exports = localforage_js;\n\n},{\"3\":3}]},{},[4])(4)\n});\n","module.exports = function(hljs) {\n var smali_instr_low_prio = ['add', 'and', 'cmp', 'cmpg', 'cmpl', 'const', 'div', 'double', 'float', 'goto', 'if', 'int', 'long', 'move', 'mul', 'neg', 'new', 'nop', 'not', 'or', 'rem', 'return', 'shl', 'shr', 'sput', 'sub', 'throw', 'ushr', 'xor'];\n var smali_instr_high_prio = ['aget', 'aput', 'array', 'check', 'execute', 'fill', 'filled', 'goto/16', 'goto/32', 'iget', 'instance', 'invoke', 'iput', 'monitor', 'packed', 'sget', 'sparse'];\n var smali_keywords = ['transient', 'constructor', 'abstract', 'final', 'synthetic', 'public', 'private', 'protected', 'static', 'bridge', 'system'];\n return {\n aliases: ['smali'],\n contains: [\n {\n className: 'string',\n begin: '\"', end: '\"',\n relevance: 0\n },\n hljs.COMMENT(\n '#',\n '$',\n {\n relevance: 0\n }\n ),\n {\n className: 'keyword',\n variants: [\n {begin: '\\\\s*\\\\.end\\\\s[a-zA-Z0-9]*'},\n {begin: '^[ ]*\\\\.[a-zA-Z]*', relevance: 0},\n {begin: '\\\\s:[a-zA-Z_0-9]*', relevance: 0},\n {begin: '\\\\s(' + smali_keywords.join('|') + ')'}\n ]\n },\n {\n className: 'built_in',\n variants : [\n {\n begin: '\\\\s('+smali_instr_low_prio.join('|')+')\\\\s'\n },\n {\n begin: '\\\\s('+smali_instr_low_prio.join('|')+')((\\\\-|/)[a-zA-Z0-9]+)+\\\\s',\n relevance: 10\n },\n {\n begin: '\\\\s('+smali_instr_high_prio.join('|')+')((\\\\-|/)[a-zA-Z0-9]+)*\\\\s',\n relevance: 10\n },\n ]\n },\n {\n className: 'class',\n begin: 'L[^\\(;:\\n]*;',\n relevance: 0\n },\n {\n begin: '[vp][0-9]+',\n }\n ]\n };\n};","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","module.exports = function(hljs) {\n var QUOTED_PROPERTY = {\n className: 'string',\n begin: /\"/, end: /\"/\n };\n var APOS_PROPERTY = {\n className: 'string',\n begin: /'/, end: /'/\n };\n var UNQUOTED_PROPERTY = {\n className: 'string',\n begin: '[\\\\w-?]+:\\\\w+', end: '\\\\W',\n relevance: 0\n };\n var VALUELESS_PROPERTY = {\n className: 'string',\n begin: '\\\\w+-?\\\\w+', end: '\\\\W',\n relevance: 0\n };\n\n return {\n keywords: 'dsconfig',\n contains: [\n {\n className: 'keyword',\n begin: '^dsconfig', end: '\\\\s', excludeEnd: true,\n relevance: 10\n },\n {\n className: 'built_in',\n begin: '(list|create|get|set|delete)-(\\\\w+)', end: '\\\\s', excludeEnd: true,\n illegal: '!@#$%^&*()',\n relevance: 10\n },\n {\n className: 'built_in',\n begin: '--(\\\\w+)', end: '\\\\s', excludeEnd: true\n },\n QUOTED_PROPERTY,\n APOS_PROPERTY,\n UNQUOTED_PROPERTY,\n VALUELESS_PROPERTY,\n hljs.HASH_COMMENT_MODE\n ]\n };\n};","module.exports = function (hljs) {\n var SUBST = {\n className: 'subst',\n variants: [\n {begin: '\\\\$[A-Za-z0-9_]+'}\n ],\n };\n\n var BRACED_SUBST = {\n className: 'subst',\n variants: [\n {begin: '\\\\${', end: '}'},\n ],\n keywords: 'true false null this is new super',\n };\n\n var STRING = {\n className: 'string',\n variants: [\n {\n begin: 'r\\'\\'\\'', end: '\\'\\'\\''\n },\n {\n begin: 'r\"\"\"', end: '\"\"\"'\n },\n {\n begin: 'r\\'', end: '\\'',\n illegal: '\\\\n'\n },\n {\n begin: 'r\"', end: '\"',\n illegal: '\\\\n'\n },\n {\n begin: '\\'\\'\\'', end: '\\'\\'\\'',\n contains: [hljs.BACKSLASH_ESCAPE, SUBST, BRACED_SUBST]\n },\n {\n begin: '\"\"\"', end: '\"\"\"',\n contains: [hljs.BACKSLASH_ESCAPE, SUBST, BRACED_SUBST]\n },\n {\n begin: '\\'', end: '\\'',\n illegal: '\\\\n',\n contains: [hljs.BACKSLASH_ESCAPE, SUBST, BRACED_SUBST]\n },\n {\n begin: '\"', end: '\"',\n illegal: '\\\\n',\n contains: [hljs.BACKSLASH_ESCAPE, SUBST, BRACED_SUBST]\n }\n ]\n };\n BRACED_SUBST.contains = [\n hljs.C_NUMBER_MODE, STRING\n ];\n\n var KEYWORDS = {\n keyword: 'assert async await break case catch class const continue default do else enum extends false final ' +\n 'finally for if in is new null rethrow return super switch sync this throw true try var void while with yield ' +\n 'abstract as dynamic export external factory get implements import library operator part set static typedef',\n built_in:\n // dart:core\n 'print Comparable DateTime Duration Function Iterable Iterator List Map Match Null Object Pattern RegExp Set ' +\n 'Stopwatch String StringBuffer StringSink Symbol Type Uri bool double int num ' +\n // dart:html\n 'document window querySelector querySelectorAll Element ElementList'\n };\n\n return {\n keywords: KEYWORDS,\n contains: [\n STRING,\n hljs.COMMENT(\n '/\\\\*\\\\*',\n '\\\\*/',\n {\n subLanguage: 'markdown'\n }\n ),\n hljs.COMMENT(\n '///',\n '$',\n {\n subLanguage: 'markdown'\n }\n ),\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {\n className: 'class',\n beginKeywords: 'class interface', end: '{', excludeEnd: true,\n contains: [\n {\n beginKeywords: 'extends implements'\n },\n hljs.UNDERSCORE_TITLE_MODE\n ]\n },\n hljs.C_NUMBER_MODE,\n {\n className: 'meta', begin: '@[A-Za-z]+'\n },\n {\n begin: '=>' // No markup, just a relevance booster\n }\n ]\n }\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = {\n \"hljs\": {\n \"display\": \"block\",\n \"overflowX\": \"auto\",\n \"padding\": \"0.5em\",\n \"background\": \"#282a36\",\n \"color\": \"#f8f8f2\"\n },\n \"hljs-keyword\": {\n \"color\": \"#8be9fd\",\n \"fontWeight\": \"bold\"\n },\n \"hljs-selector-tag\": {\n \"color\": \"#8be9fd\",\n \"fontWeight\": \"bold\"\n },\n \"hljs-literal\": {\n \"color\": \"#8be9fd\",\n \"fontWeight\": \"bold\"\n },\n \"hljs-section\": {\n \"color\": \"#8be9fd\",\n \"fontWeight\": \"bold\"\n },\n \"hljs-link\": {\n \"color\": \"#8be9fd\"\n },\n \"hljs-function .hljs-keyword\": {\n \"color\": \"#ff79c6\"\n },\n \"hljs-subst\": {\n \"color\": \"#f8f8f2\"\n },\n \"hljs-string\": {\n \"color\": \"#f1fa8c\"\n },\n \"hljs-title\": {\n \"color\": \"#f1fa8c\",\n \"fontWeight\": \"bold\"\n },\n \"hljs-name\": {\n \"color\": \"#f1fa8c\",\n \"fontWeight\": \"bold\"\n },\n \"hljs-type\": {\n \"color\": \"#f1fa8c\",\n \"fontWeight\": \"bold\"\n },\n \"hljs-attribute\": {\n \"color\": \"#f1fa8c\"\n },\n \"hljs-symbol\": {\n \"color\": \"#f1fa8c\"\n },\n \"hljs-bullet\": {\n \"color\": \"#f1fa8c\"\n },\n \"hljs-addition\": {\n \"color\": \"#f1fa8c\"\n },\n \"hljs-variable\": {\n \"color\": \"#f1fa8c\"\n },\n \"hljs-template-tag\": {\n \"color\": \"#f1fa8c\"\n },\n \"hljs-template-variable\": {\n \"color\": \"#f1fa8c\"\n },\n \"hljs-comment\": {\n \"color\": \"#6272a4\"\n },\n \"hljs-quote\": {\n \"color\": \"#6272a4\"\n },\n \"hljs-deletion\": {\n \"color\": \"#6272a4\"\n },\n \"hljs-meta\": {\n \"color\": \"#6272a4\"\n },\n \"hljs-doctag\": {\n \"fontWeight\": \"bold\"\n },\n \"hljs-strong\": {\n \"fontWeight\": \"bold\"\n },\n \"hljs-emphasis\": {\n \"fontStyle\": \"italic\"\n }\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = {\n \"hljs\": {\n \"display\": \"block\",\n \"overflowX\": \"auto\",\n \"padding\": \"0.5em\",\n \"color\": \"#333\",\n \"background\": \"#f8f8f8\"\n },\n \"hljs-comment\": {\n \"color\": \"#998\",\n \"fontStyle\": \"italic\"\n },\n \"hljs-quote\": {\n \"color\": \"#998\",\n \"fontStyle\": \"italic\"\n },\n \"hljs-keyword\": {\n \"color\": \"#333\",\n \"fontWeight\": \"bold\"\n },\n \"hljs-selector-tag\": {\n \"color\": \"#333\",\n \"fontWeight\": \"bold\"\n },\n \"hljs-subst\": {\n \"color\": \"#333\",\n \"fontWeight\": \"normal\"\n },\n \"hljs-number\": {\n \"color\": \"#008080\"\n },\n \"hljs-literal\": {\n \"color\": \"#008080\"\n },\n \"hljs-variable\": {\n \"color\": \"#008080\"\n },\n \"hljs-template-variable\": {\n \"color\": \"#008080\"\n },\n \"hljs-tag .hljs-attr\": {\n \"color\": \"#008080\"\n },\n \"hljs-string\": {\n \"color\": \"#d14\"\n },\n \"hljs-doctag\": {\n \"color\": \"#d14\"\n },\n \"hljs-title\": {\n \"color\": \"#900\",\n \"fontWeight\": \"bold\"\n },\n \"hljs-section\": {\n \"color\": \"#900\",\n \"fontWeight\": \"bold\"\n },\n \"hljs-selector-id\": {\n \"color\": \"#900\",\n \"fontWeight\": \"bold\"\n },\n \"hljs-type\": {\n \"color\": \"#458\",\n \"fontWeight\": \"bold\"\n },\n \"hljs-class .hljs-title\": {\n \"color\": \"#458\",\n \"fontWeight\": \"bold\"\n },\n \"hljs-tag\": {\n \"color\": \"#000080\",\n \"fontWeight\": \"normal\"\n },\n \"hljs-name\": {\n \"color\": \"#000080\",\n \"fontWeight\": \"normal\"\n },\n \"hljs-attribute\": {\n \"color\": \"#000080\",\n \"fontWeight\": \"normal\"\n },\n \"hljs-regexp\": {\n \"color\": \"#009926\"\n },\n \"hljs-link\": {\n \"color\": \"#009926\"\n },\n \"hljs-symbol\": {\n \"color\": \"#990073\"\n },\n \"hljs-bullet\": {\n \"color\": \"#990073\"\n },\n \"hljs-built_in\": {\n \"color\": \"#0086b3\"\n },\n \"hljs-builtin-name\": {\n \"color\": \"#0086b3\"\n },\n \"hljs-meta\": {\n \"color\": \"#999\",\n \"fontWeight\": \"bold\"\n },\n \"hljs-deletion\": {\n \"background\": \"#fdd\"\n },\n \"hljs-addition\": {\n \"background\": \"#dfd\"\n },\n \"hljs-emphasis\": {\n \"fontStyle\": \"italic\"\n },\n \"hljs-strong\": {\n \"fontWeight\": \"bold\"\n }\n};\nexports.default = _default;","module.exports = function(hljs) {\n var IDENT_RE = '[a-zA-Z-][a-zA-Z0-9_-]*';\n var VARIABLE = {\n className: 'variable',\n begin: '(\\\\$' + IDENT_RE + ')\\\\b'\n };\n var HEXCOLOR = {\n className: 'number', begin: '#[0-9A-Fa-f]+'\n };\n var DEF_INTERNALS = {\n className: 'attribute',\n begin: '[A-Z\\\\_\\\\.\\\\-]+', end: ':',\n excludeEnd: true,\n illegal: '[^\\\\s]',\n starts: {\n endsWithParent: true, excludeEnd: true,\n contains: [\n HEXCOLOR,\n hljs.CSS_NUMBER_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {\n className: 'meta', begin: '!important'\n }\n ]\n }\n };\n return {\n case_insensitive: true,\n illegal: '[=/|\\']',\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {\n className: 'selector-id', begin: '\\\\#[A-Za-z0-9_-]+',\n relevance: 0\n },\n {\n className: 'selector-class', begin: '\\\\.[A-Za-z0-9_-]+',\n relevance: 0\n },\n {\n className: 'selector-attr', begin: '\\\\[', end: '\\\\]',\n illegal: '$'\n },\n {\n className: 'selector-tag', // begin: IDENT_RE, end: '[,|\\\\s]'\n begin: '\\\\b(a|abbr|acronym|address|area|article|aside|audio|b|base|big|blockquote|body|br|button|canvas|caption|cite|code|col|colgroup|command|datalist|dd|del|details|dfn|div|dl|dt|em|embed|fieldset|figcaption|figure|footer|form|frame|frameset|(h[1-6])|head|header|hgroup|hr|html|i|iframe|img|input|ins|kbd|keygen|label|legend|li|link|map|mark|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|rp|rt|ruby|samp|script|section|select|small|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|ul|var|video)\\\\b',\n relevance: 0\n },\n {\n begin: ':(visited|valid|root|right|required|read-write|read-only|out-range|optional|only-of-type|only-child|nth-of-type|nth-last-of-type|nth-last-child|nth-child|not|link|left|last-of-type|last-child|lang|invalid|indeterminate|in-range|hover|focus|first-of-type|first-line|first-letter|first-child|first|enabled|empty|disabled|default|checked|before|after|active)'\n },\n {\n begin: '::(after|before|choices|first-letter|first-line|repeat-index|repeat-item|selection|value)'\n },\n VARIABLE,\n {\n className: 'attribute',\n begin: '\\\\b(z-index|word-wrap|word-spacing|word-break|width|widows|white-space|visibility|vertical-align|unicode-bidi|transition-timing-function|transition-property|transition-duration|transition-delay|transition|transform-style|transform-origin|transform|top|text-underline-position|text-transform|text-shadow|text-rendering|text-overflow|text-indent|text-decoration-style|text-decoration-line|text-decoration-color|text-decoration|text-align-last|text-align|tab-size|table-layout|right|resize|quotes|position|pointer-events|perspective-origin|perspective|page-break-inside|page-break-before|page-break-after|padding-top|padding-right|padding-left|padding-bottom|padding|overflow-y|overflow-x|overflow-wrap|overflow|outline-width|outline-style|outline-offset|outline-color|outline|orphans|order|opacity|object-position|object-fit|normal|none|nav-up|nav-right|nav-left|nav-index|nav-down|min-width|min-height|max-width|max-height|mask|marks|margin-top|margin-right|margin-left|margin-bottom|margin|list-style-type|list-style-position|list-style-image|list-style|line-height|letter-spacing|left|justify-content|initial|inherit|ime-mode|image-orientation|image-resolution|image-rendering|icon|hyphens|height|font-weight|font-variant-ligatures|font-variant|font-style|font-stretch|font-size-adjust|font-size|font-language-override|font-kerning|font-feature-settings|font-family|font|float|flex-wrap|flex-shrink|flex-grow|flex-flow|flex-direction|flex-basis|flex|filter|empty-cells|display|direction|cursor|counter-reset|counter-increment|content|column-width|column-span|column-rule-width|column-rule-style|column-rule-color|column-rule|column-gap|column-fill|column-count|columns|color|clip-path|clip|clear|caption-side|break-inside|break-before|break-after|box-sizing|box-shadow|box-decoration-break|bottom|border-width|border-top-width|border-top-style|border-top-right-radius|border-top-left-radius|border-top-color|border-top|border-style|border-spacing|border-right-width|border-right-style|border-right-color|border-right|border-radius|border-left-width|border-left-style|border-left-color|border-left|border-image-width|border-image-source|border-image-slice|border-image-repeat|border-image-outset|border-image|border-color|border-collapse|border-bottom-width|border-bottom-style|border-bottom-right-radius|border-bottom-left-radius|border-bottom-color|border-bottom|border|background-size|background-repeat|background-position|background-origin|background-image|background-color|background-clip|background-attachment|background-blend-mode|background|backface-visibility|auto|animation-timing-function|animation-play-state|animation-name|animation-iteration-count|animation-fill-mode|animation-duration|animation-direction|animation-delay|animation|align-self|align-items|align-content)\\\\b',\n illegal: '[^\\\\s]'\n },\n {\n begin: '\\\\b(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\\\\b'\n },\n {\n begin: ':', end: ';',\n contains: [\n VARIABLE,\n HEXCOLOR,\n hljs.CSS_NUMBER_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n {\n className: 'meta', begin: '!important'\n }\n ]\n },\n {\n begin: '@', end: '[{;]',\n keywords: 'mixin include extend for if else each while charset import debug media page content font-face namespace warn',\n contains: [\n VARIABLE,\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n HEXCOLOR,\n hljs.CSS_NUMBER_MODE,\n {\n begin: '\\\\s[A-Za-z0-9_.-]+',\n relevance: 0\n }\n ]\n }\n ]\n };\n};","import { isRegExp, isString } from './is';\n\n/**\n * Truncates given string to the maximum characters count\n *\n * @param str An object that contains serializable values\n * @param max Maximum number of characters in truncated string\n * @returns string Encoded\n */\nexport function truncate(str: string, max: number = 0): string {\n if (typeof str !== 'string' || max === 0) {\n return str;\n }\n return str.length <= max ? str : `${str.substr(0, max)}...`;\n}\n\n/**\n * This is basically just `trim_line` from\n * https://github.com/getsentry/sentry/blob/master/src/sentry/lang/javascript/processor.py#L67\n *\n * @param str An object that contains serializable values\n * @param max Maximum number of characters in truncated string\n * @returns string Encoded\n */\nexport function snipLine(line: string, colno: number): string {\n let newLine = line;\n const ll = newLine.length;\n if (ll <= 150) {\n return newLine;\n }\n if (colno > ll) {\n // eslint-disable-next-line no-param-reassign\n colno = ll;\n }\n\n let start = Math.max(colno - 60, 0);\n if (start < 5) {\n start = 0;\n }\n\n let end = Math.min(start + 140, ll);\n if (end > ll - 5) {\n end = ll;\n }\n if (end === ll) {\n start = Math.max(end - 140, 0);\n }\n\n newLine = newLine.slice(start, end);\n if (start > 0) {\n newLine = `'{snip} ${newLine}`;\n }\n if (end < ll) {\n newLine += ' {snip}';\n }\n\n return newLine;\n}\n\n/**\n * Join values in array\n * @param input array of values to be joined together\n * @param delimiter string to be placed in-between values\n * @returns Joined values\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function safeJoin(input: any[], delimiter?: string): string {\n if (!Array.isArray(input)) {\n return '';\n }\n\n const output = [];\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0; i < input.length; i++) {\n const value = input[i];\n try {\n output.push(String(value));\n } catch (e) {\n output.push('[value cannot be serialized]');\n }\n }\n\n return output.join(delimiter);\n}\n\n/**\n * Checks if the value matches a regex or includes the string\n * @param value The string value to be checked against\n * @param pattern Either a regex or a string that must be contained in value\n */\nexport function isMatchingPattern(value: string, pattern: RegExp | string): boolean {\n if (!isString(value)) {\n return false;\n }\n\n if (isRegExp(pattern)) {\n return (pattern as RegExp).test(value);\n }\n if (typeof pattern === 'string') {\n return value.indexOf(pattern) !== -1;\n }\n return false;\n}\n","module.exports = function(hljs) {\n var LITERALS = 'true false yes no null';\n\n var keyPrefix = '^[ \\\\-]*';\n var keyName = '[a-zA-Z_][\\\\w\\\\-]*';\n var KEY = {\n className: 'attr',\n variants: [\n { begin: keyPrefix + keyName + \":\"},\n { begin: keyPrefix + '\"' + keyName + '\"' + \":\"},\n { begin: keyPrefix + \"'\" + keyName + \"'\" + \":\"}\n ]\n };\n\n var TEMPLATE_VARIABLES = {\n className: 'template-variable',\n variants: [\n { begin: '\\{\\{', end: '\\}\\}' }, // jinja templates Ansible\n { begin: '%\\{', end: '\\}' } // Ruby i18n\n ]\n };\n var STRING = {\n className: 'string',\n relevance: 0,\n variants: [\n {begin: /'/, end: /'/},\n {begin: /\"/, end: /\"/},\n {begin: /\\S+/}\n ],\n contains: [\n hljs.BACKSLASH_ESCAPE,\n TEMPLATE_VARIABLES\n ]\n };\n\n return {\n case_insensitive: true,\n aliases: ['yml', 'YAML', 'yaml'],\n contains: [\n KEY,\n {\n className: 'meta',\n begin: '^---\\s*$',\n relevance: 10\n },\n { // multi line string\n className: 'string',\n begin: '[\\\\|>] *$',\n returnEnd: true,\n contains: STRING.contains,\n // very simple termination: next hash key\n end: KEY.variants[0].begin\n },\n { // Ruby/Rails erb\n begin: '<%[%=-]?', end: '[%-]?%>',\n subLanguage: 'ruby',\n excludeBegin: true,\n excludeEnd: true,\n relevance: 0\n },\n { // local tags\n className: 'type',\n begin: '!' + hljs.UNDERSCORE_IDENT_RE,\n },\n { // data type\n className: 'type',\n begin: '!!' + hljs.UNDERSCORE_IDENT_RE,\n },\n { // fragment id &ref\n className: 'meta',\n begin: '&' + hljs.UNDERSCORE_IDENT_RE + '$',\n },\n { // fragment reference *ref\n className: 'meta',\n begin: '\\\\*' + hljs.UNDERSCORE_IDENT_RE + '$'\n },\n { // array listing\n className: 'bullet',\n begin: '^ *-',\n relevance: 0\n },\n hljs.HASH_COMMENT_MODE,\n {\n beginKeywords: LITERALS,\n keywords: {literal: LITERALS}\n },\n hljs.C_NUMBER_MODE,\n STRING\n ]\n };\n};","module.exports = function(hljs) {\n var BUILT_INS = {'builtin-name': 'each in with if else unless bindattr action collection debugger log outlet template unbound view yield'};\n return {\n aliases: ['hbs', 'html.hbs', 'html.handlebars'],\n case_insensitive: true,\n subLanguage: 'xml',\n contains: [\n hljs.COMMENT('{{!(--)?', '(--)?}}'),\n {\n className: 'template-tag',\n begin: /\\{\\{[#\\/]/, end: /\\}\\}/,\n contains: [\n {\n className: 'name',\n begin: /[a-zA-Z\\.-]+/,\n keywords: BUILT_INS,\n starts: {\n endsWithParent: true, relevance: 0,\n contains: [\n hljs.QUOTE_STRING_MODE\n ]\n }\n }\n ]\n },\n {\n className: 'template-variable',\n begin: /\\{\\{/, end: /\\}\\}/,\n keywords: BUILT_INS\n }\n ]\n };\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = {\n \"hljs\": {\n \"display\": \"block\",\n \"overflowX\": \"auto\",\n \"padding\": \"0.5em\",\n \"background\": \"#F0F0F0\",\n \"color\": \"#444\"\n },\n \"hljs-subst\": {\n \"color\": \"#444\"\n },\n \"hljs-comment\": {\n \"color\": \"#888888\"\n },\n \"hljs-keyword\": {\n \"fontWeight\": \"bold\"\n },\n \"hljs-attribute\": {\n \"fontWeight\": \"bold\"\n },\n \"hljs-selector-tag\": {\n \"fontWeight\": \"bold\"\n },\n \"hljs-meta-keyword\": {\n \"fontWeight\": \"bold\"\n },\n \"hljs-doctag\": {\n \"fontWeight\": \"bold\"\n },\n \"hljs-name\": {\n \"fontWeight\": \"bold\"\n },\n \"hljs-type\": {\n \"color\": \"#880000\"\n },\n \"hljs-string\": {\n \"color\": \"#880000\"\n },\n \"hljs-number\": {\n \"color\": \"#880000\"\n },\n \"hljs-selector-id\": {\n \"color\": \"#880000\"\n },\n \"hljs-selector-class\": {\n \"color\": \"#880000\"\n },\n \"hljs-quote\": {\n \"color\": \"#880000\"\n },\n \"hljs-template-tag\": {\n \"color\": \"#880000\"\n },\n \"hljs-deletion\": {\n \"color\": \"#880000\"\n },\n \"hljs-title\": {\n \"color\": \"#880000\",\n \"fontWeight\": \"bold\"\n },\n \"hljs-section\": {\n \"color\": \"#880000\",\n \"fontWeight\": \"bold\"\n },\n \"hljs-regexp\": {\n \"color\": \"#BC6060\"\n },\n \"hljs-symbol\": {\n \"color\": \"#BC6060\"\n },\n \"hljs-variable\": {\n \"color\": \"#BC6060\"\n },\n \"hljs-template-variable\": {\n \"color\": \"#BC6060\"\n },\n \"hljs-link\": {\n \"color\": \"#BC6060\"\n },\n \"hljs-selector-attr\": {\n \"color\": \"#BC6060\"\n },\n \"hljs-selector-pseudo\": {\n \"color\": \"#BC6060\"\n },\n \"hljs-literal\": {\n \"color\": \"#78A960\"\n },\n \"hljs-built_in\": {\n \"color\": \"#397300\"\n },\n \"hljs-bullet\": {\n \"color\": \"#397300\"\n },\n \"hljs-code\": {\n \"color\": \"#397300\"\n },\n \"hljs-addition\": {\n \"color\": \"#397300\"\n },\n \"hljs-meta\": {\n \"color\": \"#1f7199\"\n },\n \"hljs-meta-string\": {\n \"color\": \"#4d99bf\"\n },\n \"hljs-emphasis\": {\n \"fontStyle\": \"italic\"\n },\n \"hljs-strong\": {\n \"fontWeight\": \"bold\"\n }\n};\nexports.default = _default;","module.exports = function (hljs) {\n var KEYWORDS = {\n 'keyword':\n 'abort acronym acronyms alias all and assign binary card diag display ' +\n 'else eq file files for free ge gt if integer le loop lt maximizing ' +\n 'minimizing model models ne negative no not option options or ord ' +\n 'positive prod put putpage puttl repeat sameas semicont semiint smax ' +\n 'smin solve sos1 sos2 sum system table then until using while xor yes',\n 'literal': 'eps inf na',\n 'built-in':\n 'abs arccos arcsin arctan arctan2 Beta betaReg binomial ceil centropy ' +\n 'cos cosh cvPower div div0 eDist entropy errorf execSeed exp fact ' +\n 'floor frac gamma gammaReg log logBeta logGamma log10 log2 mapVal max ' +\n 'min mod ncpCM ncpF ncpVUpow ncpVUsin normal pi poly power ' +\n 'randBinomial randLinear randTriangle round rPower sigmoid sign ' +\n 'signPower sin sinh slexp sllog10 slrec sqexp sqlog10 sqr sqrec sqrt ' +\n 'tan tanh trunc uniform uniformInt vcPower bool_and bool_eqv bool_imp ' +\n 'bool_not bool_or bool_xor ifThen rel_eq rel_ge rel_gt rel_le rel_lt ' +\n 'rel_ne gday gdow ghour gleap gmillisec gminute gmonth gsecond gyear ' +\n 'jdate jnow jstart jtime errorLevel execError gamsRelease gamsVersion ' +\n 'handleCollect handleDelete handleStatus handleSubmit heapFree ' +\n 'heapLimit heapSize jobHandle jobKill jobStatus jobTerminate ' +\n 'licenseLevel licenseStatus maxExecError sleep timeClose timeComp ' +\n 'timeElapsed timeExec timeStart'\n };\n var PARAMS = {\n className: 'params',\n begin: /\\(/, end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n };\n var SYMBOLS = {\n className: 'symbol',\n variants: [\n {begin: /\\=[lgenxc]=/},\n {begin: /\\$/},\n ]\n };\n var QSTR = { // One-line quoted comment string\n className: 'comment',\n variants: [\n {begin: '\\'', end: '\\''},\n {begin: '\"', end: '\"'},\n ],\n illegal: '\\\\n',\n contains: [hljs.BACKSLASH_ESCAPE]\n };\n var ASSIGNMENT = {\n begin: '/',\n end: '/',\n keywords: KEYWORDS,\n contains: [\n QSTR,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n hljs.C_NUMBER_MODE,\n ],\n };\n var DESCTEXT = { // Parameter/set/variable description text\n begin: /[a-z][a-z0-9_]*(\\([a-z0-9_, ]*\\))?[ \\t]+/,\n excludeBegin: true,\n end: '$',\n endsWithParent: true,\n contains: [\n QSTR,\n ASSIGNMENT,\n {\n className: 'comment',\n begin: /([ ]*[a-z0-9&#*=?@>\\\\<:\\-,()$\\[\\]_.{}!+%^]+)+/,\n relevance: 0\n },\n ],\n };\n\n return {\n aliases: ['gms'],\n case_insensitive: true,\n keywords: KEYWORDS,\n contains: [\n hljs.COMMENT(/^\\$ontext/, /^\\$offtext/),\n {\n className: 'meta',\n begin: '^\\\\$[a-z0-9]+',\n end: '$',\n returnBegin: true,\n contains: [\n {\n className: 'meta-keyword',\n begin: '^\\\\$[a-z0-9]+',\n }\n ]\n },\n hljs.COMMENT('^\\\\*', '$'),\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n // Declarations\n {\n beginKeywords:\n 'set sets parameter parameters variable variables ' +\n 'scalar scalars equation equations',\n end: ';',\n contains: [\n hljs.COMMENT('^\\\\*', '$'),\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n ASSIGNMENT,\n DESCTEXT,\n ]\n },\n { // table environment\n beginKeywords: 'table',\n end: ';',\n returnBegin: true,\n contains: [\n { // table header row\n beginKeywords: 'table',\n end: '$',\n contains: [DESCTEXT],\n },\n hljs.COMMENT('^\\\\*', '$'),\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n hljs.C_NUMBER_MODE,\n // Table does not contain DESCTEXT or ASSIGNMENT\n ]\n },\n // Function definitions\n {\n className: 'function',\n begin: /^[a-z][a-z0-9_,\\-+' ()$]+\\.{2}/,\n returnBegin: true,\n contains: [\n { // Function title\n className: 'title',\n begin: /^[a-z0-9_]+/,\n },\n PARAMS,\n SYMBOLS,\n ],\n },\n hljs.C_NUMBER_MODE,\n SYMBOLS,\n ]\n };\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = {\n \"hljs-comment\": {\n \"color\": \"#969896\"\n },\n \"hljs-quote\": {\n \"color\": \"#969896\"\n },\n \"hljs-variable\": {\n \"color\": \"#cc6666\"\n },\n \"hljs-template-variable\": {\n \"color\": \"#cc6666\"\n },\n \"hljs-tag\": {\n \"color\": \"#cc6666\"\n },\n \"hljs-name\": {\n \"color\": \"#cc6666\"\n },\n \"hljs-selector-id\": {\n \"color\": \"#cc6666\"\n },\n \"hljs-selector-class\": {\n \"color\": \"#cc6666\"\n },\n \"hljs-regexp\": {\n \"color\": \"#cc6666\"\n },\n \"hljs-deletion\": {\n \"color\": \"#cc6666\"\n },\n \"hljs-number\": {\n \"color\": \"#de935f\"\n },\n \"hljs-built_in\": {\n \"color\": \"#de935f\"\n },\n \"hljs-builtin-name\": {\n \"color\": \"#de935f\"\n },\n \"hljs-literal\": {\n \"color\": \"#de935f\"\n },\n \"hljs-type\": {\n \"color\": \"#de935f\"\n },\n \"hljs-params\": {\n \"color\": \"#de935f\"\n },\n \"hljs-meta\": {\n \"color\": \"#de935f\"\n },\n \"hljs-link\": {\n \"color\": \"#de935f\"\n },\n \"hljs-attribute\": {\n \"color\": \"#f0c674\"\n },\n \"hljs-string\": {\n \"color\": \"#b5bd68\"\n },\n \"hljs-symbol\": {\n \"color\": \"#b5bd68\"\n },\n \"hljs-bullet\": {\n \"color\": \"#b5bd68\"\n },\n \"hljs-addition\": {\n \"color\": \"#b5bd68\"\n },\n \"hljs-title\": {\n \"color\": \"#81a2be\"\n },\n \"hljs-section\": {\n \"color\": \"#81a2be\"\n },\n \"hljs-keyword\": {\n \"color\": \"#b294bb\"\n },\n \"hljs-selector-tag\": {\n \"color\": \"#b294bb\"\n },\n \"hljs\": {\n \"display\": \"block\",\n \"overflowX\": \"auto\",\n \"background\": \"#1d1f21\",\n \"color\": \"#c5c8c6\",\n \"padding\": \"0.5em\"\n },\n \"hljs-emphasis\": {\n \"fontStyle\": \"italic\"\n },\n \"hljs-strong\": {\n \"fontWeight\": \"bold\"\n }\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = {\n \"hljs\": {\n \"display\": \"block\",\n \"overflowX\": \"auto\",\n \"padding\": \"0.5em\",\n \"color\": \"#000\",\n \"background\": \"#fff\"\n },\n \"hljs-subst\": {\n \"fontWeight\": \"normal\",\n \"color\": \"#000\"\n },\n \"hljs-title\": {\n \"fontWeight\": \"normal\",\n \"color\": \"#000\"\n },\n \"hljs-comment\": {\n \"color\": \"#808080\",\n \"fontStyle\": \"italic\"\n },\n \"hljs-quote\": {\n \"color\": \"#808080\",\n \"fontStyle\": \"italic\"\n },\n \"hljs-meta\": {\n \"color\": \"#808000\"\n },\n \"hljs-tag\": {\n \"background\": \"#efefef\"\n },\n \"hljs-section\": {\n \"fontWeight\": \"bold\",\n \"color\": \"#000080\"\n },\n \"hljs-name\": {\n \"fontWeight\": \"bold\",\n \"color\": \"#000080\"\n },\n \"hljs-literal\": {\n \"fontWeight\": \"bold\",\n \"color\": \"#000080\"\n },\n \"hljs-keyword\": {\n \"fontWeight\": \"bold\",\n \"color\": \"#000080\"\n },\n \"hljs-selector-tag\": {\n \"fontWeight\": \"bold\",\n \"color\": \"#000080\"\n },\n \"hljs-type\": {\n \"fontWeight\": \"bold\",\n \"color\": \"#000080\"\n },\n \"hljs-selector-id\": {\n \"fontWeight\": \"bold\",\n \"color\": \"#000080\"\n },\n \"hljs-selector-class\": {\n \"fontWeight\": \"bold\",\n \"color\": \"#000080\"\n },\n \"hljs-attribute\": {\n \"fontWeight\": \"bold\",\n \"color\": \"#0000ff\"\n },\n \"hljs-number\": {\n \"fontWeight\": \"normal\",\n \"color\": \"#0000ff\"\n },\n \"hljs-regexp\": {\n \"fontWeight\": \"normal\",\n \"color\": \"#0000ff\"\n },\n \"hljs-link\": {\n \"fontWeight\": \"normal\",\n \"color\": \"#0000ff\"\n },\n \"hljs-string\": {\n \"color\": \"#008000\",\n \"fontWeight\": \"bold\"\n },\n \"hljs-symbol\": {\n \"color\": \"#000\",\n \"background\": \"#d0eded\",\n \"fontStyle\": \"italic\"\n },\n \"hljs-bullet\": {\n \"color\": \"#000\",\n \"background\": \"#d0eded\",\n \"fontStyle\": \"italic\"\n },\n \"hljs-formula\": {\n \"color\": \"#000\",\n \"background\": \"#d0eded\",\n \"fontStyle\": \"italic\"\n },\n \"hljs-doctag\": {\n \"textDecoration\": \"underline\"\n },\n \"hljs-variable\": {\n \"color\": \"#660e7a\"\n },\n \"hljs-template-variable\": {\n \"color\": \"#660e7a\"\n },\n \"hljs-addition\": {\n \"background\": \"#baeeba\"\n },\n \"hljs-deletion\": {\n \"background\": \"#ffc8bd\"\n },\n \"hljs-emphasis\": {\n \"fontStyle\": \"italic\"\n },\n \"hljs-strong\": {\n \"fontWeight\": \"bold\"\n }\n};\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"a11yDark\", {\n enumerable: true,\n get: function get() {\n return _a11yDark.default;\n }\n});\nObject.defineProperty(exports, \"a11yLight\", {\n enumerable: true,\n get: function get() {\n return _a11yLight.default;\n }\n});\nObject.defineProperty(exports, \"agate\", {\n enumerable: true,\n get: function get() {\n return _agate.default;\n }\n});\nObject.defineProperty(exports, \"anOldHope\", {\n enumerable: true,\n get: function get() {\n return _anOldHope.default;\n }\n});\nObject.defineProperty(exports, \"androidstudio\", {\n enumerable: true,\n get: function get() {\n return _androidstudio.default;\n }\n});\nObject.defineProperty(exports, \"arduinoLight\", {\n enumerable: true,\n get: function get() {\n return _arduinoLight.default;\n }\n});\nObject.defineProperty(exports, \"arta\", {\n enumerable: true,\n get: function get() {\n return _arta.default;\n }\n});\nObject.defineProperty(exports, \"ascetic\", {\n enumerable: true,\n get: function get() {\n return _ascetic.default;\n }\n});\nObject.defineProperty(exports, \"atelierCaveDark\", {\n enumerable: true,\n get: function get() {\n return _atelierCaveDark.default;\n }\n});\nObject.defineProperty(exports, \"atelierCaveLight\", {\n enumerable: true,\n get: function get() {\n return _atelierCaveLight.default;\n }\n});\nObject.defineProperty(exports, \"atelierDuneDark\", {\n enumerable: true,\n get: function get() {\n return _atelierDuneDark.default;\n }\n});\nObject.defineProperty(exports, \"atelierDuneLight\", {\n enumerable: true,\n get: function get() {\n return _atelierDuneLight.default;\n }\n});\nObject.defineProperty(exports, \"atelierEstuaryDark\", {\n enumerable: true,\n get: function get() {\n return _atelierEstuaryDark.default;\n }\n});\nObject.defineProperty(exports, \"atelierEstuaryLight\", {\n enumerable: true,\n get: function get() {\n return _atelierEstuaryLight.default;\n }\n});\nObject.defineProperty(exports, \"atelierForestDark\", {\n enumerable: true,\n get: function get() {\n return _atelierForestDark.default;\n }\n});\nObject.defineProperty(exports, \"atelierForestLight\", {\n enumerable: true,\n get: function get() {\n return _atelierForestLight.default;\n }\n});\nObject.defineProperty(exports, \"atelierHeathDark\", {\n enumerable: true,\n get: function get() {\n return _atelierHeathDark.default;\n }\n});\nObject.defineProperty(exports, \"atelierHeathLight\", {\n enumerable: true,\n get: function get() {\n return _atelierHeathLight.default;\n }\n});\nObject.defineProperty(exports, \"atelierLakesideDark\", {\n enumerable: true,\n get: function get() {\n return _atelierLakesideDark.default;\n }\n});\nObject.defineProperty(exports, \"atelierLakesideLight\", {\n enumerable: true,\n get: function get() {\n return _atelierLakesideLight.default;\n }\n});\nObject.defineProperty(exports, \"atelierPlateauDark\", {\n enumerable: true,\n get: function get() {\n return _atelierPlateauDark.default;\n }\n});\nObject.defineProperty(exports, \"atelierPlateauLight\", {\n enumerable: true,\n get: function get() {\n return _atelierPlateauLight.default;\n }\n});\nObject.defineProperty(exports, \"atelierSavannaDark\", {\n enumerable: true,\n get: function get() {\n return _atelierSavannaDark.default;\n }\n});\nObject.defineProperty(exports, \"atelierSavannaLight\", {\n enumerable: true,\n get: function get() {\n return _atelierSavannaLight.default;\n }\n});\nObject.defineProperty(exports, \"atelierSeasideDark\", {\n enumerable: true,\n get: function get() {\n return _atelierSeasideDark.default;\n }\n});\nObject.defineProperty(exports, \"atelierSeasideLight\", {\n enumerable: true,\n get: function get() {\n return _atelierSeasideLight.default;\n }\n});\nObject.defineProperty(exports, \"atelierSulphurpoolDark\", {\n enumerable: true,\n get: function get() {\n return _atelierSulphurpoolDark.default;\n }\n});\nObject.defineProperty(exports, \"atelierSulphurpoolLight\", {\n enumerable: true,\n get: function get() {\n return _atelierSulphurpoolLight.default;\n }\n});\nObject.defineProperty(exports, \"atomOneDarkReasonable\", {\n enumerable: true,\n get: function get() {\n return _atomOneDarkReasonable.default;\n }\n});\nObject.defineProperty(exports, \"atomOneDark\", {\n enumerable: true,\n get: function get() {\n return _atomOneDark.default;\n }\n});\nObject.defineProperty(exports, \"atomOneLight\", {\n enumerable: true,\n get: function get() {\n return _atomOneLight.default;\n }\n});\nObject.defineProperty(exports, \"brownPaper\", {\n enumerable: true,\n get: function get() {\n return _brownPaper.default;\n }\n});\nObject.defineProperty(exports, \"codepenEmbed\", {\n enumerable: true,\n get: function get() {\n return _codepenEmbed.default;\n }\n});\nObject.defineProperty(exports, \"colorBrewer\", {\n enumerable: true,\n get: function get() {\n return _colorBrewer.default;\n }\n});\nObject.defineProperty(exports, \"darcula\", {\n enumerable: true,\n get: function get() {\n return _darcula.default;\n }\n});\nObject.defineProperty(exports, \"dark\", {\n enumerable: true,\n get: function get() {\n return _dark.default;\n }\n});\nObject.defineProperty(exports, \"darkula\", {\n enumerable: true,\n get: function get() {\n return _darkula.default;\n }\n});\nObject.defineProperty(exports, \"defaultStyle\", {\n enumerable: true,\n get: function get() {\n return _defaultStyle.default;\n }\n});\nObject.defineProperty(exports, \"docco\", {\n enumerable: true,\n get: function get() {\n return _docco.default;\n }\n});\nObject.defineProperty(exports, \"dracula\", {\n enumerable: true,\n get: function get() {\n return _dracula.default;\n }\n});\nObject.defineProperty(exports, \"far\", {\n enumerable: true,\n get: function get() {\n return _far.default;\n }\n});\nObject.defineProperty(exports, \"foundation\", {\n enumerable: true,\n get: function get() {\n return _foundation.default;\n }\n});\nObject.defineProperty(exports, \"githubGist\", {\n enumerable: true,\n get: function get() {\n return _githubGist.default;\n }\n});\nObject.defineProperty(exports, \"github\", {\n enumerable: true,\n get: function get() {\n return _github.default;\n }\n});\nObject.defineProperty(exports, \"gml\", {\n enumerable: true,\n get: function get() {\n return _gml.default;\n }\n});\nObject.defineProperty(exports, \"googlecode\", {\n enumerable: true,\n get: function get() {\n return _googlecode.default;\n }\n});\nObject.defineProperty(exports, \"grayscale\", {\n enumerable: true,\n get: function get() {\n return _grayscale.default;\n }\n});\nObject.defineProperty(exports, \"gruvboxDark\", {\n enumerable: true,\n get: function get() {\n return _gruvboxDark.default;\n }\n});\nObject.defineProperty(exports, \"gruvboxLight\", {\n enumerable: true,\n get: function get() {\n return _gruvboxLight.default;\n }\n});\nObject.defineProperty(exports, \"hopscotch\", {\n enumerable: true,\n get: function get() {\n return _hopscotch.default;\n }\n});\nObject.defineProperty(exports, \"hybrid\", {\n enumerable: true,\n get: function get() {\n return _hybrid.default;\n }\n});\nObject.defineProperty(exports, \"idea\", {\n enumerable: true,\n get: function get() {\n return _idea.default;\n }\n});\nObject.defineProperty(exports, \"irBlack\", {\n enumerable: true,\n get: function get() {\n return _irBlack.default;\n }\n});\nObject.defineProperty(exports, \"isblEditorDark\", {\n enumerable: true,\n get: function get() {\n return _isblEditorDark.default;\n }\n});\nObject.defineProperty(exports, \"isblEditorLight\", {\n enumerable: true,\n get: function get() {\n return _isblEditorLight.default;\n }\n});\nObject.defineProperty(exports, \"kimbieDark\", {\n enumerable: true,\n get: function get() {\n return _kimbie.default;\n }\n});\nObject.defineProperty(exports, \"kimbieLight\", {\n enumerable: true,\n get: function get() {\n return _kimbie2.default;\n }\n});\nObject.defineProperty(exports, \"lightfair\", {\n enumerable: true,\n get: function get() {\n return _lightfair.default;\n }\n});\nObject.defineProperty(exports, \"magula\", {\n enumerable: true,\n get: function get() {\n return _magula.default;\n }\n});\nObject.defineProperty(exports, \"monoBlue\", {\n enumerable: true,\n get: function get() {\n return _monoBlue.default;\n }\n});\nObject.defineProperty(exports, \"monokaiSublime\", {\n enumerable: true,\n get: function get() {\n return _monokaiSublime.default;\n }\n});\nObject.defineProperty(exports, \"monokai\", {\n enumerable: true,\n get: function get() {\n return _monokai.default;\n }\n});\nObject.defineProperty(exports, \"nord\", {\n enumerable: true,\n get: function get() {\n return _nord.default;\n }\n});\nObject.defineProperty(exports, \"obsidian\", {\n enumerable: true,\n get: function get() {\n return _obsidian.default;\n }\n});\nObject.defineProperty(exports, \"ocean\", {\n enumerable: true,\n get: function get() {\n return _ocean.default;\n }\n});\nObject.defineProperty(exports, \"paraisoDark\", {\n enumerable: true,\n get: function get() {\n return _paraisoDark.default;\n }\n});\nObject.defineProperty(exports, \"paraisoLight\", {\n enumerable: true,\n get: function get() {\n return _paraisoLight.default;\n }\n});\nObject.defineProperty(exports, \"pojoaque\", {\n enumerable: true,\n get: function get() {\n return _pojoaque.default;\n }\n});\nObject.defineProperty(exports, \"purebasic\", {\n enumerable: true,\n get: function get() {\n return _purebasic.default;\n }\n});\nObject.defineProperty(exports, \"qtcreatorDark\", {\n enumerable: true,\n get: function get() {\n return _qtcreator_dark.default;\n }\n});\nObject.defineProperty(exports, \"qtcreatorLight\", {\n enumerable: true,\n get: function get() {\n return _qtcreator_light.default;\n }\n});\nObject.defineProperty(exports, \"railscasts\", {\n enumerable: true,\n get: function get() {\n return _railscasts.default;\n }\n});\nObject.defineProperty(exports, \"rainbow\", {\n enumerable: true,\n get: function get() {\n return _rainbow.default;\n }\n});\nObject.defineProperty(exports, \"routeros\", {\n enumerable: true,\n get: function get() {\n return _routeros.default;\n }\n});\nObject.defineProperty(exports, \"schoolBook\", {\n enumerable: true,\n get: function get() {\n return _schoolBook.default;\n }\n});\nObject.defineProperty(exports, \"shadesOfPurple\", {\n enumerable: true,\n get: function get() {\n return _shadesOfPurple.default;\n }\n});\nObject.defineProperty(exports, \"solarizedDark\", {\n enumerable: true,\n get: function get() {\n return _solarizedDark.default;\n }\n});\nObject.defineProperty(exports, \"solarizedLight\", {\n enumerable: true,\n get: function get() {\n return _solarizedLight.default;\n }\n});\nObject.defineProperty(exports, \"sunburst\", {\n enumerable: true,\n get: function get() {\n return _sunburst.default;\n }\n});\nObject.defineProperty(exports, \"tomorrowNightBlue\", {\n enumerable: true,\n get: function get() {\n return _tomorrowNightBlue.default;\n }\n});\nObject.defineProperty(exports, \"tomorrowNightBright\", {\n enumerable: true,\n get: function get() {\n return _tomorrowNightBright.default;\n }\n});\nObject.defineProperty(exports, \"tomorrowNightEighties\", {\n enumerable: true,\n get: function get() {\n return _tomorrowNightEighties.default;\n }\n});\nObject.defineProperty(exports, \"tomorrowNight\", {\n enumerable: true,\n get: function get() {\n return _tomorrowNight.default;\n }\n});\nObject.defineProperty(exports, \"tomorrow\", {\n enumerable: true,\n get: function get() {\n return _tomorrow.default;\n }\n});\nObject.defineProperty(exports, \"vs\", {\n enumerable: true,\n get: function get() {\n return _vs.default;\n }\n});\nObject.defineProperty(exports, \"vs2015\", {\n enumerable: true,\n get: function get() {\n return _vs2.default;\n }\n});\nObject.defineProperty(exports, \"xcode\", {\n enumerable: true,\n get: function get() {\n return _xcode.default;\n }\n});\nObject.defineProperty(exports, \"xt256\", {\n enumerable: true,\n get: function get() {\n return _xt.default;\n }\n});\nObject.defineProperty(exports, \"zenburn\", {\n enumerable: true,\n get: function get() {\n return _zenburn.default;\n }\n});\n\nvar _a11yDark = _interopRequireDefault(require(\"./a11y-dark\"));\n\nvar _a11yLight = _interopRequireDefault(require(\"./a11y-light\"));\n\nvar _agate = _interopRequireDefault(require(\"./agate\"));\n\nvar _anOldHope = _interopRequireDefault(require(\"./an-old-hope\"));\n\nvar _androidstudio = _interopRequireDefault(require(\"./androidstudio\"));\n\nvar _arduinoLight = _interopRequireDefault(require(\"./arduino-light\"));\n\nvar _arta = _interopRequireDefault(require(\"./arta\"));\n\nvar _ascetic = _interopRequireDefault(require(\"./ascetic\"));\n\nvar _atelierCaveDark = _interopRequireDefault(require(\"./atelier-cave-dark\"));\n\nvar _atelierCaveLight = _interopRequireDefault(require(\"./atelier-cave-light\"));\n\nvar _atelierDuneDark = _interopRequireDefault(require(\"./atelier-dune-dark\"));\n\nvar _atelierDuneLight = _interopRequireDefault(require(\"./atelier-dune-light\"));\n\nvar _atelierEstuaryDark = _interopRequireDefault(require(\"./atelier-estuary-dark\"));\n\nvar _atelierEstuaryLight = _interopRequireDefault(require(\"./atelier-estuary-light\"));\n\nvar _atelierForestDark = _interopRequireDefault(require(\"./atelier-forest-dark\"));\n\nvar _atelierForestLight = _interopRequireDefault(require(\"./atelier-forest-light\"));\n\nvar _atelierHeathDark = _interopRequireDefault(require(\"./atelier-heath-dark\"));\n\nvar _atelierHeathLight = _interopRequireDefault(require(\"./atelier-heath-light\"));\n\nvar _atelierLakesideDark = _interopRequireDefault(require(\"./atelier-lakeside-dark\"));\n\nvar _atelierLakesideLight = _interopRequireDefault(require(\"./atelier-lakeside-light\"));\n\nvar _atelierPlateauDark = _interopRequireDefault(require(\"./atelier-plateau-dark\"));\n\nvar _atelierPlateauLight = _interopRequireDefault(require(\"./atelier-plateau-light\"));\n\nvar _atelierSavannaDark = _interopRequireDefault(require(\"./atelier-savanna-dark\"));\n\nvar _atelierSavannaLight = _interopRequireDefault(require(\"./atelier-savanna-light\"));\n\nvar _atelierSeasideDark = _interopRequireDefault(require(\"./atelier-seaside-dark\"));\n\nvar _atelierSeasideLight = _interopRequireDefault(require(\"./atelier-seaside-light\"));\n\nvar _atelierSulphurpoolDark = _interopRequireDefault(require(\"./atelier-sulphurpool-dark\"));\n\nvar _atelierSulphurpoolLight = _interopRequireDefault(require(\"./atelier-sulphurpool-light\"));\n\nvar _atomOneDarkReasonable = _interopRequireDefault(require(\"./atom-one-dark-reasonable\"));\n\nvar _atomOneDark = _interopRequireDefault(require(\"./atom-one-dark\"));\n\nvar _atomOneLight = _interopRequireDefault(require(\"./atom-one-light\"));\n\nvar _brownPaper = _interopRequireDefault(require(\"./brown-paper\"));\n\nvar _codepenEmbed = _interopRequireDefault(require(\"./codepen-embed\"));\n\nvar _colorBrewer = _interopRequireDefault(require(\"./color-brewer\"));\n\nvar _darcula = _interopRequireDefault(require(\"./darcula\"));\n\nvar _dark = _interopRequireDefault(require(\"./dark\"));\n\nvar _darkula = _interopRequireDefault(require(\"./darkula\"));\n\nvar _defaultStyle = _interopRequireDefault(require(\"./default-style\"));\n\nvar _docco = _interopRequireDefault(require(\"./docco\"));\n\nvar _dracula = _interopRequireDefault(require(\"./dracula\"));\n\nvar _far = _interopRequireDefault(require(\"./far\"));\n\nvar _foundation = _interopRequireDefault(require(\"./foundation\"));\n\nvar _githubGist = _interopRequireDefault(require(\"./github-gist\"));\n\nvar _github = _interopRequireDefault(require(\"./github\"));\n\nvar _gml = _interopRequireDefault(require(\"./gml\"));\n\nvar _googlecode = _interopRequireDefault(require(\"./googlecode\"));\n\nvar _grayscale = _interopRequireDefault(require(\"./grayscale\"));\n\nvar _gruvboxDark = _interopRequireDefault(require(\"./gruvbox-dark\"));\n\nvar _gruvboxLight = _interopRequireDefault(require(\"./gruvbox-light\"));\n\nvar _hopscotch = _interopRequireDefault(require(\"./hopscotch\"));\n\nvar _hybrid = _interopRequireDefault(require(\"./hybrid\"));\n\nvar _idea = _interopRequireDefault(require(\"./idea\"));\n\nvar _irBlack = _interopRequireDefault(require(\"./ir-black\"));\n\nvar _isblEditorDark = _interopRequireDefault(require(\"./isbl-editor-dark\"));\n\nvar _isblEditorLight = _interopRequireDefault(require(\"./isbl-editor-light\"));\n\nvar _kimbie = _interopRequireDefault(require(\"./kimbie.dark\"));\n\nvar _kimbie2 = _interopRequireDefault(require(\"./kimbie.light\"));\n\nvar _lightfair = _interopRequireDefault(require(\"./lightfair\"));\n\nvar _magula = _interopRequireDefault(require(\"./magula\"));\n\nvar _monoBlue = _interopRequireDefault(require(\"./mono-blue\"));\n\nvar _monokaiSublime = _interopRequireDefault(require(\"./monokai-sublime\"));\n\nvar _monokai = _interopRequireDefault(require(\"./monokai\"));\n\nvar _nord = _interopRequireDefault(require(\"./nord\"));\n\nvar _obsidian = _interopRequireDefault(require(\"./obsidian\"));\n\nvar _ocean = _interopRequireDefault(require(\"./ocean\"));\n\nvar _paraisoDark = _interopRequireDefault(require(\"./paraiso-dark\"));\n\nvar _paraisoLight = _interopRequireDefault(require(\"./paraiso-light\"));\n\nvar _pojoaque = _interopRequireDefault(require(\"./pojoaque\"));\n\nvar _purebasic = _interopRequireDefault(require(\"./purebasic\"));\n\nvar _qtcreator_dark = _interopRequireDefault(require(\"./qtcreator_dark\"));\n\nvar _qtcreator_light = _interopRequireDefault(require(\"./qtcreator_light\"));\n\nvar _railscasts = _interopRequireDefault(require(\"./railscasts\"));\n\nvar _rainbow = _interopRequireDefault(require(\"./rainbow\"));\n\nvar _routeros = _interopRequireDefault(require(\"./routeros\"));\n\nvar _schoolBook = _interopRequireDefault(require(\"./school-book\"));\n\nvar _shadesOfPurple = _interopRequireDefault(require(\"./shades-of-purple\"));\n\nvar _solarizedDark = _interopRequireDefault(require(\"./solarized-dark\"));\n\nvar _solarizedLight = _interopRequireDefault(require(\"./solarized-light\"));\n\nvar _sunburst = _interopRequireDefault(require(\"./sunburst\"));\n\nvar _tomorrowNightBlue = _interopRequireDefault(require(\"./tomorrow-night-blue\"));\n\nvar _tomorrowNightBright = _interopRequireDefault(require(\"./tomorrow-night-bright\"));\n\nvar _tomorrowNightEighties = _interopRequireDefault(require(\"./tomorrow-night-eighties\"));\n\nvar _tomorrowNight = _interopRequireDefault(require(\"./tomorrow-night\"));\n\nvar _tomorrow = _interopRequireDefault(require(\"./tomorrow\"));\n\nvar _vs = _interopRequireDefault(require(\"./vs\"));\n\nvar _vs2 = _interopRequireDefault(require(\"./vs2015\"));\n\nvar _xcode = _interopRequireDefault(require(\"./xcode\"));\n\nvar _xt = _interopRequireDefault(require(\"./xt256\"));\n\nvar _zenburn = _interopRequireDefault(require(\"./zenburn\"));","module.exports = function(hljs) {\n var TYPEPARAM = {\n begin: '<', end: '>',\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {begin: /'[a-zA-Z0-9_]+/})\n ]\n };\n\n return {\n aliases: ['fs'],\n keywords:\n 'abstract and as assert base begin class default delegate do done ' +\n 'downcast downto elif else end exception extern false finally for ' +\n 'fun function global if in inherit inline interface internal lazy let ' +\n 'match member module mutable namespace new null of open or ' +\n 'override private public rec return sig static struct then to ' +\n 'true try type upcast use val void when while with yield',\n illegal: /\\/\\*/,\n contains: [\n {\n // monad builder keywords (matches before non-bang kws)\n className: 'keyword',\n begin: /\\b(yield|return|let|do)!/\n },\n {\n className: 'string',\n begin: '@\"', end: '\"',\n contains: [{begin: '\"\"'}]\n },\n {\n className: 'string',\n begin: '\"\"\"', end: '\"\"\"'\n },\n hljs.COMMENT('\\\\(\\\\*', '\\\\*\\\\)'),\n {\n className: 'class',\n beginKeywords: 'type', end: '\\\\(|=|$', excludeEnd: true,\n contains: [\n hljs.UNDERSCORE_TITLE_MODE,\n TYPEPARAM\n ]\n },\n {\n className: 'meta',\n begin: '\\\\[<', end: '>\\\\]',\n relevance: 10\n },\n {\n className: 'symbol',\n begin: '\\\\B(\\'[A-Za-z])\\\\b',\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n hljs.C_LINE_COMMENT_MODE,\n hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null}),\n hljs.C_NUMBER_MODE\n ]\n };\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = {};\nexports.default = _default;","module.exports = function(hljs) {\n return {\n keywords: {\n keyword:\n 'println readln print import module function local return let var ' +\n 'while for foreach times in case when match with break continue ' +\n 'augment augmentation each find filter reduce ' +\n 'if then else otherwise try catch finally raise throw orIfNull ' +\n 'DynamicObject|10 DynamicVariable struct Observable map set vector list array',\n literal:\n 'true false null'\n },\n contains: [\n hljs.HASH_COMMENT_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.C_NUMBER_MODE,\n {\n className: 'meta', begin: '@[A-Za-z]+'\n }\n ]\n }\n};","module.exports = function(hljs) {\n var SV_KEYWORDS = {\n keyword:\n 'accept_on alias always always_comb always_ff always_latch and assert assign ' +\n 'assume automatic before begin bind bins binsof bit break buf|0 bufif0 bufif1 ' +\n 'byte case casex casez cell chandle checker class clocking cmos config const ' +\n 'constraint context continue cover covergroup coverpoint cross deassign default ' +\n 'defparam design disable dist do edge else end endcase endchecker endclass ' +\n 'endclocking endconfig endfunction endgenerate endgroup endinterface endmodule ' +\n 'endpackage endprimitive endprogram endproperty endspecify endsequence endtable ' +\n 'endtask enum event eventually expect export extends extern final first_match for ' +\n 'force foreach forever fork forkjoin function generate|5 genvar global highz0 highz1 ' +\n 'if iff ifnone ignore_bins illegal_bins implements implies import incdir include ' +\n 'initial inout input inside instance int integer interconnect interface intersect ' +\n 'join join_any join_none large let liblist library local localparam logic longint ' +\n 'macromodule matches medium modport module nand negedge nettype new nexttime nmos ' +\n 'nor noshowcancelled not notif0 notif1 or output package packed parameter pmos ' +\n 'posedge primitive priority program property protected pull0 pull1 pulldown pullup ' +\n 'pulsestyle_ondetect pulsestyle_onevent pure rand randc randcase randsequence rcmos ' +\n 'real realtime ref reg reject_on release repeat restrict return rnmos rpmos rtran ' +\n 'rtranif0 rtranif1 s_always s_eventually s_nexttime s_until s_until_with scalared ' +\n 'sequence shortint shortreal showcancelled signed small soft solve specify specparam ' +\n 'static string strong strong0 strong1 struct super supply0 supply1 sync_accept_on ' +\n 'sync_reject_on table tagged task this throughout time timeprecision timeunit tran ' +\n 'tranif0 tranif1 tri tri0 tri1 triand trior trireg type typedef union unique unique0 ' +\n 'unsigned until until_with untyped use uwire var vectored virtual void wait wait_order ' +\n 'wand weak weak0 weak1 while wildcard wire with within wor xnor xor',\n literal:\n 'null',\n built_in:\n '$finish $stop $exit $fatal $error $warning $info $realtime $time $printtimescale ' +\n '$bitstoreal $bitstoshortreal $itor $signed $cast $bits $stime $timeformat ' +\n '$realtobits $shortrealtobits $rtoi $unsigned $asserton $assertkill $assertpasson ' +\n '$assertfailon $assertnonvacuouson $assertoff $assertcontrol $assertpassoff ' +\n '$assertfailoff $assertvacuousoff $isunbounded $sampled $fell $changed $past_gclk ' +\n '$fell_gclk $changed_gclk $rising_gclk $steady_gclk $coverage_control ' +\n '$coverage_get $coverage_save $set_coverage_db_name $rose $stable $past ' +\n '$rose_gclk $stable_gclk $future_gclk $falling_gclk $changing_gclk $display ' +\n '$coverage_get_max $coverage_merge $get_coverage $load_coverage_db $typename ' +\n '$unpacked_dimensions $left $low $increment $clog2 $ln $log10 $exp $sqrt $pow ' +\n '$floor $ceil $sin $cos $tan $countbits $onehot $isunknown $fatal $warning ' +\n '$dimensions $right $high $size $asin $acos $atan $atan2 $hypot $sinh $cosh ' +\n '$tanh $asinh $acosh $atanh $countones $onehot0 $error $info $random ' +\n '$dist_chi_square $dist_erlang $dist_exponential $dist_normal $dist_poisson ' +\n '$dist_t $dist_uniform $q_initialize $q_remove $q_exam $async$and$array ' +\n '$async$nand$array $async$or$array $async$nor$array $sync$and$array ' +\n '$sync$nand$array $sync$or$array $sync$nor$array $q_add $q_full $psprintf ' +\n '$async$and$plane $async$nand$plane $async$or$plane $async$nor$plane ' +\n '$sync$and$plane $sync$nand$plane $sync$or$plane $sync$nor$plane $system ' +\n '$display $displayb $displayh $displayo $strobe $strobeb $strobeh $strobeo ' +\n '$write $readmemb $readmemh $writememh $value$plusargs ' +\n '$dumpvars $dumpon $dumplimit $dumpports $dumpportson $dumpportslimit ' +\n '$writeb $writeh $writeo $monitor $monitorb $monitorh $monitoro $writememb ' +\n '$dumpfile $dumpoff $dumpall $dumpflush $dumpportsoff $dumpportsall ' +\n '$dumpportsflush $fclose $fdisplay $fdisplayb $fdisplayh $fdisplayo ' +\n '$fstrobe $fstrobeb $fstrobeh $fstrobeo $swrite $swriteb $swriteh ' +\n '$swriteo $fscanf $fread $fseek $fflush $feof $fopen $fwrite $fwriteb ' +\n '$fwriteh $fwriteo $fmonitor $fmonitorb $fmonitorh $fmonitoro $sformat ' +\n '$sformatf $fgetc $ungetc $fgets $sscanf $rewind $ftell $ferror'\n };\n return {\n aliases: ['v', 'sv', 'svh'],\n case_insensitive: false,\n keywords: SV_KEYWORDS, lexemes: /[\\w\\$]+/,\n contains: [\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.C_LINE_COMMENT_MODE,\n hljs.QUOTE_STRING_MODE,\n {\n className: 'number',\n contains: [hljs.BACKSLASH_ESCAPE],\n variants: [\n {begin: '\\\\b((\\\\d+\\'(b|h|o|d|B|H|O|D))[0-9xzXZa-fA-F_]+)'},\n {begin: '\\\\B((\\'(b|h|o|d|B|H|O|D))[0-9xzXZa-fA-F_]+)'},\n {begin: '\\\\b([0-9_])+', relevance: 0}\n ]\n },\n /* parameters to instances */\n {\n className: 'variable',\n variants: [\n {begin: '#\\\\((?!parameter).+\\\\)'},\n {begin: '\\\\.\\\\w+', relevance: 0},\n ]\n },\n {\n className: 'meta',\n begin: '`', end: '$',\n keywords: {'meta-keyword': 'define __FILE__ ' +\n '__LINE__ begin_keywords celldefine default_nettype define ' +\n 'else elsif end_keywords endcelldefine endif ifdef ifndef ' +\n 'include line nounconnected_drive pragma resetall timescale ' +\n 'unconnected_drive undef undefineall'},\n relevance: 0\n }\n ]\n }; // return\n};","var defineProperty = require(\"./defineProperty\");\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? Object(arguments[i]) : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nmodule.exports = _objectSpread;","module.exports = function(hljs) {\n var BACKTICK_ESCAPE = {\n begin: '`[\\\\s\\\\S]'\n };\n\n return {\n case_insensitive: true,\n aliases: [ 'ahk' ],\n keywords: {\n keyword: 'Break Continue Critical Exit ExitApp Gosub Goto New OnExit Pause return SetBatchLines SetTimer Suspend Thread Throw Until ahk_id ahk_class ahk_pid ahk_exe ahk_group',\n literal: 'true false NOT AND OR',\n built_in: 'ComSpec Clipboard ClipboardAll ErrorLevel',\n },\n contains: [\n BACKTICK_ESCAPE,\n hljs.inherit(hljs.QUOTE_STRING_MODE, {contains: [BACKTICK_ESCAPE]}),\n hljs.COMMENT(';', '$', {relevance: 0}),\n hljs.C_BLOCK_COMMENT_MODE,\n {\n className: 'number',\n begin: hljs.NUMBER_RE,\n relevance: 0\n },\n {\n className: 'variable', //subst would be the most accurate however fails the point of highlighting. variable is comparably the most accurate that actually has some effect\n begin: '%[a-zA-Z0-9#_$@]+%'\n },\n {\n className: 'built_in',\n begin: '^\\\\s*\\\\w+\\\\s*(,|%)'\n //I don't really know if this is totally relevant\n },\n {\n className: 'title', //symbol would be most accurate however is higlighted just like built_in and that makes up a lot of AutoHotkey code\n\t\t //meaning that it would fail to highlight anything\n variants: [\n {begin: '^[^\\\\n\";]+::(?!=)'},\n {begin: '^[^\\\\n\";]+:(?!=)', relevance: 0} // zero relevance as it catches a lot of things\n // followed by a single ':' in many languages\n ]\n },\n {\n className: 'meta', \n begin: '^\\\\s*#\\\\w+', end:'$',\n relevance: 0\n },\n\t {\n className: 'built_in',\n begin: 'A_[a-zA-Z0-9]+'\n },\n {\n // consecutive commas, not for highlighting but just for relevance\n begin: ',\\\\s*,'\n }\n ]\n }\n};","\n\t\timport Async from \"../../node_modules/@preact/async-loader/async-legacy.js\";\n\n\t\tfunction load(cb) {\n\t\t\trequire.ensure([], function (require) {\n\t\t\t\tcb( require(\"!!../../node_modules/babel-loader/lib/index.js??ref--4!./Home.js\") );\n\t\t\t}, \"route-Home\");\n\t\t}\n\n\t\texport default Async(load);\n\t","import { h, Component } from 'preact';\n\nexport default function(req) {\n\tfunction Async() {\n\t\tComponent.call(this);\n\n\t\tlet b, old;\n\t\tthis.componentWillMount = () => {\n\t\t\tb = this.base = this.nextBase || this.__b; // short circuits 1st render\n\t\t\treq(m => {\n\t\t\t\tthis.setState({ child: m.default || m });\n\t\t\t});\n\t\t};\n\n\t\tthis.shouldComponentUpdate = (_, nxt) => {\n\t\t\tnxt = nxt.child === void 0;\n\t\t\tif (nxt && old === void 0 && b) {\n\t\t\t\t// Node.TEXT_NODE\n\t\t\t\tif (b.nodeType === 3) {\n\t\t\t\t\told = b.data;\n\t\t\t\t} else {\n\t\t\t\t\told = h(b.nodeName, {\n\t\t\t\t\t\tdangerouslySetInnerHTML: { __html: b.innerHTML },\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\told = ''; // dump it\n\t\t\t}\n\t\t\treturn !nxt;\n\t\t};\n\n\t\tthis.render = (p, s) => (s.child ? h(s.child, p) : old);\n\t}\n\t(Async.prototype = new Component()).constructor = Async;\n\treturn Async;\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = {\n \"hljs-comment\": {\n \"color\": \"#969896\"\n },\n \"hljs-quote\": {\n \"color\": \"#969896\"\n },\n \"hljs-variable\": {\n \"color\": \"#d54e53\"\n },\n \"hljs-template-variable\": {\n \"color\": \"#d54e53\"\n },\n \"hljs-tag\": {\n \"color\": \"#d54e53\"\n },\n \"hljs-name\": {\n \"color\": \"#d54e53\"\n },\n \"hljs-selector-id\": {\n \"color\": \"#d54e53\"\n },\n \"hljs-selector-class\": {\n \"color\": \"#d54e53\"\n },\n \"hljs-regexp\": {\n \"color\": \"#d54e53\"\n },\n \"hljs-deletion\": {\n \"color\": \"#d54e53\"\n },\n \"hljs-number\": {\n \"color\": \"#e78c45\"\n },\n \"hljs-built_in\": {\n \"color\": \"#e78c45\"\n },\n \"hljs-builtin-name\": {\n \"color\": \"#e78c45\"\n },\n \"hljs-literal\": {\n \"color\": \"#e78c45\"\n },\n \"hljs-type\": {\n \"color\": \"#e78c45\"\n },\n \"hljs-params\": {\n \"color\": \"#e78c45\"\n },\n \"hljs-meta\": {\n \"color\": \"#e78c45\"\n },\n \"hljs-link\": {\n \"color\": \"#e78c45\"\n },\n \"hljs-attribute\": {\n \"color\": \"#e7c547\"\n },\n \"hljs-string\": {\n \"color\": \"#b9ca4a\"\n },\n \"hljs-symbol\": {\n \"color\": \"#b9ca4a\"\n },\n \"hljs-bullet\": {\n \"color\": \"#b9ca4a\"\n },\n \"hljs-addition\": {\n \"color\": \"#b9ca4a\"\n },\n \"hljs-title\": {\n \"color\": \"#7aa6da\"\n },\n \"hljs-section\": {\n \"color\": \"#7aa6da\"\n },\n \"hljs-keyword\": {\n \"color\": \"#c397d8\"\n },\n \"hljs-selector-tag\": {\n \"color\": \"#c397d8\"\n },\n \"hljs\": {\n \"display\": \"block\",\n \"overflowX\": \"auto\",\n \"background\": \"black\",\n \"color\": \"#eaeaea\",\n \"padding\": \"0.5em\"\n },\n \"hljs-emphasis\": {\n \"fontStyle\": \"italic\"\n },\n \"hljs-strong\": {\n \"fontWeight\": \"bold\"\n }\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = {\n \"hljs-comment\": {\n \"color\": \"#d6baad\"\n },\n \"hljs-quote\": {\n \"color\": \"#d6baad\"\n },\n \"hljs-variable\": {\n \"color\": \"#dc3958\"\n },\n \"hljs-template-variable\": {\n \"color\": \"#dc3958\"\n },\n \"hljs-tag\": {\n \"color\": \"#dc3958\"\n },\n \"hljs-name\": {\n \"color\": \"#dc3958\"\n },\n \"hljs-selector-id\": {\n \"color\": \"#dc3958\"\n },\n \"hljs-selector-class\": {\n \"color\": \"#dc3958\"\n },\n \"hljs-regexp\": {\n \"color\": \"#dc3958\"\n },\n \"hljs-meta\": {\n \"color\": \"#dc3958\"\n },\n \"hljs-number\": {\n \"color\": \"#f79a32\"\n },\n \"hljs-built_in\": {\n \"color\": \"#f79a32\"\n },\n \"hljs-builtin-name\": {\n \"color\": \"#f79a32\"\n },\n \"hljs-literal\": {\n \"color\": \"#f79a32\"\n },\n \"hljs-type\": {\n \"color\": \"#f79a32\"\n },\n \"hljs-params\": {\n \"color\": \"#f79a32\"\n },\n \"hljs-deletion\": {\n \"color\": \"#f79a32\"\n },\n \"hljs-link\": {\n \"color\": \"#f79a32\"\n },\n \"hljs-title\": {\n \"color\": \"#f06431\"\n },\n \"hljs-section\": {\n \"color\": \"#f06431\"\n },\n \"hljs-attribute\": {\n \"color\": \"#f06431\"\n },\n \"hljs-string\": {\n \"color\": \"#889b4a\"\n },\n \"hljs-symbol\": {\n \"color\": \"#889b4a\"\n },\n \"hljs-bullet\": {\n \"color\": \"#889b4a\"\n },\n \"hljs-addition\": {\n \"color\": \"#889b4a\"\n },\n \"hljs-keyword\": {\n \"color\": \"#98676a\"\n },\n \"hljs-selector-tag\": {\n \"color\": \"#98676a\"\n },\n \"hljs-function\": {\n \"color\": \"#98676a\"\n },\n \"hljs\": {\n \"display\": \"block\",\n \"overflowX\": \"auto\",\n \"background\": \"#221a0f\",\n \"color\": \"#d3af86\",\n \"padding\": \"0.5em\"\n },\n \"hljs-emphasis\": {\n \"fontStyle\": \"italic\"\n },\n \"hljs-strong\": {\n \"fontWeight\": \"bold\"\n }\n};\nexports.default = _default;","import options from './options';\n\n/**\n * Create an virtual node (used for JSX)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * constructor for this virtual node\n * @param {object | null | undefined} [props] The properties of the virtual node\n * @param {Array} [children] The children of the virtual node\n * @returns {import('./internal').VNode}\n */\nexport function createElement(type, props, children) {\n\tlet normalizedProps = {},\n\t\tkey,\n\t\tref,\n\t\ti;\n\tfor (i in props) {\n\t\tif (i == 'key') key = props[i];\n\t\telse if (i == 'ref') ref = props[i];\n\t\telse normalizedProps[i] = props[i];\n\t}\n\n\tif (arguments.length > 3) {\n\t\tchildren = [children];\n\t\t// https://github.com/preactjs/preact/issues/1916\n\t\tfor (i = 3; i < arguments.length; i++) {\n\t\t\tchildren.push(arguments[i]);\n\t\t}\n\t}\n\tif (children != null) {\n\t\tnormalizedProps.children = children;\n\t}\n\n\t// If a Component VNode, check for and apply defaultProps\n\t// Note: type may be undefined in development, must never error here.\n\tif (typeof type == 'function' && type.defaultProps != null) {\n\t\tfor (i in type.defaultProps) {\n\t\t\tif (normalizedProps[i] === undefined) {\n\t\t\t\tnormalizedProps[i] = type.defaultProps[i];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn createVNode(type, normalizedProps, key, ref, null);\n}\n\n/**\n * Create a VNode (used internally by Preact)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * Constructor for this virtual node\n * @param {object | string | number | null} props The properties of this virtual node.\n * If this virtual node represents a text node, this is the text of the node (string or number).\n * @param {string | number | null} key The key for this virtual node, used when\n * diffing it against its children\n * @param {import('./internal').VNode[\"ref\"]} ref The ref property that will\n * receive a reference to its created child\n * @returns {import('./internal').VNode}\n */\nexport function createVNode(type, props, key, ref, original) {\n\t// V8 seems to be better at detecting type shapes if the object is allocated from the same call site\n\t// Do not inline into createElement and coerceToVNode!\n\tconst vnode = {\n\t\ttype,\n\t\tprops,\n\t\tkey,\n\t\tref,\n\t\t_children: null,\n\t\t_parent: null,\n\t\t_depth: 0,\n\t\t_dom: null,\n\t\t// _nextDom must be initialized to undefined b/c it will eventually\n\t\t// be set to dom.nextSibling which can return `null` and it is important\n\t\t// to be able to distinguish between an uninitialized _nextDom and\n\t\t// a _nextDom that has been set to `null`\n\t\t_nextDom: undefined,\n\t\t_component: null,\n\t\tconstructor: undefined,\n\t\t_original: original\n\t};\n\n\tif (original == null) vnode._original = vnode;\n\tif (options.vnode != null) options.vnode(vnode);\n\n\treturn vnode;\n}\n\nexport function createRef() {\n\treturn { current: null };\n}\n\nexport function Fragment(props) {\n\treturn props.children;\n}\n\n/**\n * Check if a the argument is a valid Preact VNode.\n * @param {*} vnode\n * @returns {vnode is import('./internal').VNode}\n */\nexport const isValidElement = vnode =>\n\tvnode != null && vnode.constructor === undefined;\n","import { assign } from './util';\nimport { diff, commitRoot } from './diff/index';\nimport options from './options';\nimport { Fragment } from './create-element';\n\n/**\n * Base Component class. Provides `setState()` and `forceUpdate()`, which\n * trigger rendering\n * @param {object} props The initial component props\n * @param {object} context The initial context from parent components'\n * getChildContext\n */\nexport function Component(props, context) {\n\tthis.props = props;\n\tthis.context = context;\n}\n\n/**\n * Update component state and schedule a re-render.\n * @param {object | ((s: object, p: object) => object)} update A hash of state\n * properties to update with new values or a function that given the current\n * state and props returns a new partial state\n * @param {() => void} [callback] A function to be called once component state is\n * updated\n */\nComponent.prototype.setState = function(update, callback) {\n\t// only clone state when copying to nextState the first time.\n\tlet s;\n\tif (this._nextState != null && this._nextState !== this.state) {\n\t\ts = this._nextState;\n\t} else {\n\t\ts = this._nextState = assign({}, this.state);\n\t}\n\n\tif (typeof update == 'function') {\n\t\t// Some libraries like `immer` mark the current state as readonly,\n\t\t// preventing us from mutating it, so we need to clone it. See #2716\n\t\tupdate = update(assign({}, s), this.props);\n\t}\n\n\tif (update) {\n\t\tassign(s, update);\n\t}\n\n\t// Skip update if updater function returned null\n\tif (update == null) return;\n\n\tif (this._vnode) {\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Immediately perform a synchronous re-render of the component\n * @param {() => void} [callback] A function to be called after component is\n * re-rendered\n */\nComponent.prototype.forceUpdate = function(callback) {\n\tif (this._vnode) {\n\t\t// Set render mode so that we can differentiate where the render request\n\t\t// is coming from. We need this because forceUpdate should never call\n\t\t// shouldComponentUpdate\n\t\tthis._force = true;\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Accepts `props` and `state`, and returns a new Virtual DOM tree to build.\n * Virtual DOM is generally constructed via [JSX](http://jasonformat.com/wtf-is-jsx).\n * @param {object} props Props (eg: JSX attributes) received from parent\n * element/component\n * @param {object} state The component's current state\n * @param {object} context Context object, as returned by the nearest\n * ancestor's `getChildContext()`\n * @returns {import('./index').ComponentChildren | void}\n */\nComponent.prototype.render = Fragment;\n\n/**\n * @param {import('./internal').VNode} vnode\n * @param {number | null} [childIndex]\n */\nexport function getDomSibling(vnode, childIndex) {\n\tif (childIndex == null) {\n\t\t// Use childIndex==null as a signal to resume the search from the vnode's sibling\n\t\treturn vnode._parent\n\t\t\t? getDomSibling(vnode._parent, vnode._parent._children.indexOf(vnode) + 1)\n\t\t\t: null;\n\t}\n\n\tlet sibling;\n\tfor (; childIndex < vnode._children.length; childIndex++) {\n\t\tsibling = vnode._children[childIndex];\n\n\t\tif (sibling != null && sibling._dom != null) {\n\t\t\t// Since updateParentDomPointers keeps _dom pointer correct,\n\t\t\t// we can rely on _dom to tell us if this subtree contains a\n\t\t\t// rendered DOM node, and what the first rendered DOM node is\n\t\t\treturn sibling._dom;\n\t\t}\n\t}\n\n\t// If we get here, we have not found a DOM node in this vnode's children.\n\t// We must resume from this vnode's sibling (in it's parent _children array)\n\t// Only climb up and search the parent if we aren't searching through a DOM\n\t// VNode (meaning we reached the DOM parent of the original vnode that began\n\t// the search)\n\treturn typeof vnode.type == 'function' ? getDomSibling(vnode) : null;\n}\n\n/**\n * Trigger in-place re-rendering of a component.\n * @param {import('./internal').Component} component The component to rerender\n */\nfunction renderComponent(component) {\n\tlet vnode = component._vnode,\n\t\toldDom = vnode._dom,\n\t\tparentDom = component._parentDom;\n\n\tif (parentDom) {\n\t\tlet commitQueue = [];\n\t\tconst oldVNode = assign({}, vnode);\n\t\toldVNode._original = oldVNode;\n\n\t\tlet newDom = diff(\n\t\t\tparentDom,\n\t\t\tvnode,\n\t\t\toldVNode,\n\t\t\tcomponent._globalContext,\n\t\t\tparentDom.ownerSVGElement !== undefined,\n\t\t\tnull,\n\t\t\tcommitQueue,\n\t\t\toldDom == null ? getDomSibling(vnode) : oldDom\n\t\t);\n\t\tcommitRoot(commitQueue, vnode);\n\n\t\tif (newDom != oldDom) {\n\t\t\tupdateParentDomPointers(vnode);\n\t\t}\n\t}\n}\n\n/**\n * @param {import('./internal').VNode} vnode\n */\nfunction updateParentDomPointers(vnode) {\n\tif ((vnode = vnode._parent) != null && vnode._component != null) {\n\t\tvnode._dom = vnode._component.base = null;\n\t\tfor (let i = 0; i < vnode._children.length; i++) {\n\t\t\tlet child = vnode._children[i];\n\t\t\tif (child != null && child._dom != null) {\n\t\t\t\tvnode._dom = vnode._component.base = child._dom;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn updateParentDomPointers(vnode);\n\t}\n}\n\n/**\n * The render queue\n * @type {Array}\n */\nlet rerenderQueue = [];\n\n/**\n * Asynchronously schedule a callback\n * @type {(cb: () => void) => void}\n */\n/* istanbul ignore next */\n// Note the following line isn't tree-shaken by rollup cuz of rollup/rollup#2566\nconst defer =\n\ttypeof Promise == 'function'\n\t\t? Promise.prototype.then.bind(Promise.resolve())\n\t\t: setTimeout;\n\n/*\n * The value of `Component.debounce` must asynchronously invoke the passed in callback. It is\n * important that contributors to Preact can consistently reason about what calls to `setState`, etc.\n * do, and when their effects will be applied. See the links below for some further reading on designing\n * asynchronous APIs.\n * * [Designing APIs for Asynchrony](https://blog.izs.me/2013/08/designing-apis-for-asynchrony)\n * * [Callbacks synchronous and asynchronous](https://blog.ometer.com/2011/07/24/callbacks-synchronous-and-asynchronous/)\n */\n\nlet prevDebounce;\n\n/**\n * Enqueue a rerender of a component\n * @param {import('./internal').Component} c The component to rerender\n */\nexport function enqueueRender(c) {\n\tif (\n\t\t(!c._dirty &&\n\t\t\t(c._dirty = true) &&\n\t\t\trerenderQueue.push(c) &&\n\t\t\t!process._rerenderCount++) ||\n\t\tprevDebounce !== options.debounceRendering\n\t) {\n\t\tprevDebounce = options.debounceRendering;\n\t\t(prevDebounce || defer)(process);\n\t}\n}\n\n/** Flush the render queue by rerendering all queued components */\nfunction process() {\n\tlet queue;\n\twhile ((process._rerenderCount = rerenderQueue.length)) {\n\t\tqueue = rerenderQueue.sort((a, b) => a._vnode._depth - b._vnode._depth);\n\t\trerenderQueue = [];\n\t\t// Don't update `renderCount` yet. Keep its value non-zero to prevent unnecessary\n\t\t// process() calls from getting scheduled while `queue` is still being consumed.\n\t\tqueue.some(c => {\n\t\t\tif (c._dirty) renderComponent(c);\n\t\t});\n\t}\n}\nprocess._rerenderCount = 0;\n","import { diff, unmount, applyRef } from './index';\nimport { createVNode, Fragment } from '../create-element';\nimport { EMPTY_OBJ, EMPTY_ARR } from '../constants';\nimport { removeNode } from '../util';\nimport { getDomSibling } from '../component';\n\n/**\n * Diff the children of a virtual node\n * @param {import('../internal').PreactElement} parentDom The DOM element whose\n * children are being diffed\n * @param {import('../index').ComponentChildren[]} renderResult\n * @param {import('../internal').VNode} newParentVNode The new virtual\n * node whose children should be diff'ed against oldParentVNode\n * @param {import('../internal').VNode} oldParentVNode The old virtual\n * node whose children should be diff'ed against newParentVNode\n * @param {object} globalContext The current context object - modified by getChildContext\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {Array} excessDomChildren\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {Node | Text} oldDom The current attached DOM\n * element any new dom elements should be placed around. Likely `null` on first\n * render (except when hydrating). Can be a sibling DOM element when diffing\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} isHydrating Whether or not we are in hydration\n */\nexport function diffChildren(\n\tparentDom,\n\trenderResult,\n\tnewParentVNode,\n\toldParentVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating\n) {\n\tlet i, j, oldVNode, childVNode, newDom, firstChildDom, refs;\n\n\t// This is a compression of oldParentVNode!=null && oldParentVNode != EMPTY_OBJ && oldParentVNode._children || EMPTY_ARR\n\t// as EMPTY_OBJ._children should be `undefined`.\n\tlet oldChildren = (oldParentVNode && oldParentVNode._children) || EMPTY_ARR;\n\n\tlet oldChildrenLength = oldChildren.length;\n\n\t// Only in very specific places should this logic be invoked (top level `render` and `diffElementNodes`).\n\t// I'm using `EMPTY_OBJ` to signal when `diffChildren` is invoked in these situations. I can't use `null`\n\t// for this purpose, because `null` is a valid value for `oldDom` which can mean to skip to this logic\n\t// (e.g. if mounting a new tree in which the old DOM should be ignored (usually for Fragments).\n\tif (oldDom == EMPTY_OBJ) {\n\t\tif (excessDomChildren != null) {\n\t\t\toldDom = excessDomChildren[0];\n\t\t} else if (oldChildrenLength) {\n\t\t\toldDom = getDomSibling(oldParentVNode, 0);\n\t\t} else {\n\t\t\toldDom = null;\n\t\t}\n\t}\n\n\tnewParentVNode._children = [];\n\tfor (i = 0; i < renderResult.length; i++) {\n\t\tchildVNode = renderResult[i];\n\n\t\tif (childVNode == null || typeof childVNode == 'boolean') {\n\t\t\tchildVNode = newParentVNode._children[i] = null;\n\t\t}\n\t\t// If this newVNode is being reused (e.g.
{reuse}{reuse}
) in the same diff,\n\t\t// or we are rendering a component (e.g. setState) copy the oldVNodes so it can have\n\t\t// it's own DOM & etc. pointers\n\t\telse if (typeof childVNode == 'string' || typeof childVNode == 'number') {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tnull,\n\t\t\t\tchildVNode,\n\t\t\t\tnull,\n\t\t\t\tnull,\n\t\t\t\tchildVNode\n\t\t\t);\n\t\t} else if (Array.isArray(childVNode)) {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tFragment,\n\t\t\t\t{ children: childVNode },\n\t\t\t\tnull,\n\t\t\t\tnull,\n\t\t\t\tnull\n\t\t\t);\n\t\t} else if (childVNode._dom != null || childVNode._component != null) {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tchildVNode.type,\n\t\t\t\tchildVNode.props,\n\t\t\t\tchildVNode.key,\n\t\t\t\tnull,\n\t\t\t\tchildVNode._original\n\t\t\t);\n\t\t} else {\n\t\t\tchildVNode = newParentVNode._children[i] = childVNode;\n\t\t}\n\n\t\t// Terser removes the `continue` here and wraps the loop body\n\t\t// in a `if (childVNode) { ... } condition\n\t\tif (childVNode == null) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tchildVNode._parent = newParentVNode;\n\t\tchildVNode._depth = newParentVNode._depth + 1;\n\n\t\t// Check if we find a corresponding element in oldChildren.\n\t\t// If found, delete the array item by setting to `undefined`.\n\t\t// We use `undefined`, as `null` is reserved for empty placeholders\n\t\t// (holes).\n\t\toldVNode = oldChildren[i];\n\n\t\tif (\n\t\t\toldVNode === null ||\n\t\t\t(oldVNode &&\n\t\t\t\tchildVNode.key == oldVNode.key &&\n\t\t\t\tchildVNode.type === oldVNode.type)\n\t\t) {\n\t\t\toldChildren[i] = undefined;\n\t\t} else {\n\t\t\t// Either oldVNode === undefined or oldChildrenLength > 0,\n\t\t\t// so after this loop oldVNode == null or oldVNode is a valid value.\n\t\t\tfor (j = 0; j < oldChildrenLength; j++) {\n\t\t\t\toldVNode = oldChildren[j];\n\t\t\t\t// If childVNode is unkeyed, we only match similarly unkeyed nodes, otherwise we match by key.\n\t\t\t\t// We always match by type (in either case).\n\t\t\t\tif (\n\t\t\t\t\toldVNode &&\n\t\t\t\t\tchildVNode.key == oldVNode.key &&\n\t\t\t\t\tchildVNode.type === oldVNode.type\n\t\t\t\t) {\n\t\t\t\t\toldChildren[j] = undefined;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\toldVNode = null;\n\t\t\t}\n\t\t}\n\n\t\toldVNode = oldVNode || EMPTY_OBJ;\n\n\t\t// Morph the old element into the new one, but don't append it to the dom yet\n\t\tnewDom = diff(\n\t\t\tparentDom,\n\t\t\tchildVNode,\n\t\t\toldVNode,\n\t\t\tglobalContext,\n\t\t\tisSvg,\n\t\t\texcessDomChildren,\n\t\t\tcommitQueue,\n\t\t\toldDom,\n\t\t\tisHydrating\n\t\t);\n\n\t\tif ((j = childVNode.ref) && oldVNode.ref != j) {\n\t\t\tif (!refs) refs = [];\n\t\t\tif (oldVNode.ref) refs.push(oldVNode.ref, null, childVNode);\n\t\t\trefs.push(j, childVNode._component || newDom, childVNode);\n\t\t}\n\n\t\tif (newDom != null) {\n\t\t\tif (firstChildDom == null) {\n\t\t\t\tfirstChildDom = newDom;\n\t\t\t}\n\n\t\t\toldDom = placeChild(\n\t\t\t\tparentDom,\n\t\t\t\tchildVNode,\n\t\t\t\toldVNode,\n\t\t\t\toldChildren,\n\t\t\t\texcessDomChildren,\n\t\t\t\tnewDom,\n\t\t\t\toldDom\n\t\t\t);\n\n\t\t\t// Browsers will infer an option's `value` from `textContent` when\n\t\t\t// no value is present. This essentially bypasses our code to set it\n\t\t\t// later in `diff()`. It works fine in all browsers except for IE11\n\t\t\t// where it breaks setting `select.value`. There it will be always set\n\t\t\t// to an empty string. Re-applying an options value will fix that, so\n\t\t\t// there are probably some internal data structures that aren't\n\t\t\t// updated properly.\n\t\t\t//\n\t\t\t// To fix it we make sure to reset the inferred value, so that our own\n\t\t\t// value check in `diff()` won't be skipped.\n\t\t\tif (!isHydrating && newParentVNode.type == 'option') {\n\t\t\t\tparentDom.value = '';\n\t\t\t} else if (typeof newParentVNode.type == 'function') {\n\t\t\t\t// Because the newParentVNode is Fragment-like, we need to set it's\n\t\t\t\t// _nextDom property to the nextSibling of its last child DOM node.\n\t\t\t\t//\n\t\t\t\t// `oldDom` contains the correct value here because if the last child\n\t\t\t\t// is a Fragment-like, then oldDom has already been set to that child's _nextDom.\n\t\t\t\t// If the last child is a DOM VNode, then oldDom will be set to that DOM\n\t\t\t\t// node's nextSibling.\n\t\t\t\tnewParentVNode._nextDom = oldDom;\n\t\t\t}\n\t\t} else if (\n\t\t\toldDom &&\n\t\t\toldVNode._dom == oldDom &&\n\t\t\toldDom.parentNode != parentDom\n\t\t) {\n\t\t\t// The above condition is to handle null placeholders. See test in placeholder.test.js:\n\t\t\t// `efficiently replace null placeholders in parent rerenders`\n\t\t\toldDom = getDomSibling(oldVNode);\n\t\t}\n\t}\n\n\tnewParentVNode._dom = firstChildDom;\n\n\t// Remove children that are not part of any vnode.\n\tif (excessDomChildren != null && typeof newParentVNode.type != 'function') {\n\t\tfor (i = excessDomChildren.length; i--; ) {\n\t\t\tif (excessDomChildren[i] != null) removeNode(excessDomChildren[i]);\n\t\t}\n\t}\n\n\t// Remove remaining oldChildren if there are any.\n\tfor (i = oldChildrenLength; i--; ) {\n\t\tif (oldChildren[i] != null) unmount(oldChildren[i], oldChildren[i]);\n\t}\n\n\t// Set refs only after unmount\n\tif (refs) {\n\t\tfor (i = 0; i < refs.length; i++) {\n\t\t\tapplyRef(refs[i], refs[++i], refs[++i]);\n\t\t}\n\t}\n}\n\n/**\n * Flatten and loop through the children of a virtual node\n * @param {import('../index').ComponentChildren} children The unflattened\n * children of a virtual node\n * @returns {import('../internal').VNode[]}\n */\nexport function toChildArray(children, out) {\n\tout = out || [];\n\tif (children == null || typeof children == 'boolean') {\n\t} else if (Array.isArray(children)) {\n\t\tchildren.some(child => {\n\t\t\ttoChildArray(child, out);\n\t\t});\n\t} else {\n\t\tout.push(children);\n\t}\n\treturn out;\n}\n\nexport function placeChild(\n\tparentDom,\n\tchildVNode,\n\toldVNode,\n\toldChildren,\n\texcessDomChildren,\n\tnewDom,\n\toldDom\n) {\n\tlet nextDom;\n\tif (childVNode._nextDom !== undefined) {\n\t\t// Only Fragments or components that return Fragment like VNodes will\n\t\t// have a non-undefined _nextDom. Continue the diff from the sibling\n\t\t// of last DOM child of this child VNode\n\t\tnextDom = childVNode._nextDom;\n\n\t\t// Eagerly cleanup _nextDom. We don't need to persist the value because\n\t\t// it is only used by `diffChildren` to determine where to resume the diff after\n\t\t// diffing Components and Fragments. Once we store it the nextDOM local var, we\n\t\t// can clean up the property\n\t\tchildVNode._nextDom = undefined;\n\t} else if (\n\t\texcessDomChildren == oldVNode ||\n\t\tnewDom != oldDom ||\n\t\tnewDom.parentNode == null\n\t) {\n\t\t// NOTE: excessDomChildren==oldVNode above:\n\t\t// This is a compression of excessDomChildren==null && oldVNode==null!\n\t\t// The values only have the same type when `null`.\n\n\t\touter: if (oldDom == null || oldDom.parentNode !== parentDom) {\n\t\t\tparentDom.appendChild(newDom);\n\t\t\tnextDom = null;\n\t\t} else {\n\t\t\t// `j 1) {\n\t\t\t\t\treorderChildren(vnode, oldDom, parentDom);\n\t\t\t\t}\n\n\t\t\t\toldDom = placeChild(\n\t\t\t\t\tparentDom,\n\t\t\t\t\tvnode,\n\t\t\t\t\tvnode,\n\t\t\t\t\tnewVNode._children,\n\t\t\t\t\tnull,\n\t\t\t\t\tvnode._dom,\n\t\t\t\t\toldDom\n\t\t\t\t);\n\n\t\t\t\tif (typeof newVNode.type == 'function') {\n\t\t\t\t\tnewVNode._nextDom = oldDom;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * Diff two virtual nodes and apply proper changes to the DOM\n * @param {import('../internal').PreactElement} parentDom The parent of the DOM element\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object. Modified by getChildContext\n * @param {boolean} isSvg Whether or not this element is an SVG node\n * @param {Array} excessDomChildren\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {Element | Text} oldDom The current attached DOM\n * element any new dom elements should be placed around. Likely `null` on first\n * render (except when hydrating). Can be a sibling DOM element when diffing\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} [isHydrating] Whether or not we are in hydration\n */\nexport function diff(\n\tparentDom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating\n) {\n\tlet tmp,\n\t\tnewType = newVNode.type;\n\n\t// When passing through createElement it assigns the object\n\t// constructor as undefined. This to prevent JSON-injection.\n\tif (newVNode.constructor !== undefined) return null;\n\n\tif ((tmp = options._diff)) tmp(newVNode);\n\n\ttry {\n\t\touter: if (typeof newType == 'function') {\n\t\t\tlet c, isNew, oldProps, oldState, snapshot, clearProcessingException;\n\t\t\tlet newProps = newVNode.props;\n\n\t\t\t// Necessary for createContext api. Setting this property will pass\n\t\t\t// the context value as `this.context` just for this component.\n\t\t\ttmp = newType.contextType;\n\t\t\tlet provider = tmp && globalContext[tmp._id];\n\t\t\tlet componentContext = tmp\n\t\t\t\t? provider\n\t\t\t\t\t? provider.props.value\n\t\t\t\t\t: tmp._defaultValue\n\t\t\t\t: globalContext;\n\n\t\t\t// Get component and set it to `c`\n\t\t\tif (oldVNode._component) {\n\t\t\t\tc = newVNode._component = oldVNode._component;\n\t\t\t\tclearProcessingException = c._processingException = c._pendingError;\n\t\t\t} else {\n\t\t\t\t// Instantiate the new component\n\t\t\t\tif ('prototype' in newType && newType.prototype.render) {\n\t\t\t\t\tnewVNode._component = c = new newType(newProps, componentContext); // eslint-disable-line new-cap\n\t\t\t\t} else {\n\t\t\t\t\tnewVNode._component = c = new Component(newProps, componentContext);\n\t\t\t\t\tc.constructor = newType;\n\t\t\t\t\tc.render = doRender;\n\t\t\t\t}\n\t\t\t\tif (provider) provider.sub(c);\n\n\t\t\t\tc.props = newProps;\n\t\t\t\tif (!c.state) c.state = {};\n\t\t\t\tc.context = componentContext;\n\t\t\t\tc._globalContext = globalContext;\n\t\t\t\tisNew = c._dirty = true;\n\t\t\t\tc._renderCallbacks = [];\n\t\t\t}\n\n\t\t\t// Invoke getDerivedStateFromProps\n\t\t\tif (c._nextState == null) {\n\t\t\t\tc._nextState = c.state;\n\t\t\t}\n\t\t\tif (newType.getDerivedStateFromProps != null) {\n\t\t\t\tif (c._nextState == c.state) {\n\t\t\t\t\tc._nextState = assign({}, c._nextState);\n\t\t\t\t}\n\n\t\t\t\tassign(\n\t\t\t\t\tc._nextState,\n\t\t\t\t\tnewType.getDerivedStateFromProps(newProps, c._nextState)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\toldProps = c.props;\n\t\t\toldState = c.state;\n\n\t\t\t// Invoke pre-render lifecycle methods\n\t\t\tif (isNew) {\n\t\t\t\tif (\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tc.componentWillMount != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillMount();\n\t\t\t\t}\n\n\t\t\t\tif (c.componentDidMount != null) {\n\t\t\t\t\tc._renderCallbacks.push(c.componentDidMount);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tnewProps !== oldProps &&\n\t\t\t\t\tc.componentWillReceiveProps != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillReceiveProps(newProps, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t(!c._force &&\n\t\t\t\t\t\tc.shouldComponentUpdate != null &&\n\t\t\t\t\t\tc.shouldComponentUpdate(\n\t\t\t\t\t\t\tnewProps,\n\t\t\t\t\t\t\tc._nextState,\n\t\t\t\t\t\t\tcomponentContext\n\t\t\t\t\t\t) === false) ||\n\t\t\t\t\tnewVNode._original === oldVNode._original\n\t\t\t\t) {\n\t\t\t\t\tc.props = newProps;\n\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t\t// More info about this here: https://gist.github.com/JoviDeCroock/bec5f2ce93544d2e6070ef8e0036e4e8\n\t\t\t\t\tif (newVNode._original !== oldVNode._original) c._dirty = false;\n\t\t\t\t\tc._vnode = newVNode;\n\t\t\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t\t\t\tnewVNode._children = oldVNode._children;\n\t\t\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\t\t\tcommitQueue.push(c);\n\t\t\t\t\t}\n\n\t\t\t\t\treorderChildren(newVNode, oldDom, parentDom);\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\n\t\t\t\tif (c.componentWillUpdate != null) {\n\t\t\t\t\tc.componentWillUpdate(newProps, c._nextState, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (c.componentDidUpdate != null) {\n\t\t\t\t\tc._renderCallbacks.push(() => {\n\t\t\t\t\t\tc.componentDidUpdate(oldProps, oldState, snapshot);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tc.context = componentContext;\n\t\t\tc.props = newProps;\n\t\t\tc.state = c._nextState;\n\n\t\t\tif ((tmp = options._render)) tmp(newVNode);\n\n\t\t\tc._dirty = false;\n\t\t\tc._vnode = newVNode;\n\t\t\tc._parentDom = parentDom;\n\n\t\t\ttmp = c.render(c.props, c.state, c.context);\n\n\t\t\t// Handle setState called in render, see #2553\n\t\t\tc.state = c._nextState;\n\n\t\t\tif (c.getChildContext != null) {\n\t\t\t\tglobalContext = assign(assign({}, globalContext), c.getChildContext());\n\t\t\t}\n\n\t\t\tif (!isNew && c.getSnapshotBeforeUpdate != null) {\n\t\t\t\tsnapshot = c.getSnapshotBeforeUpdate(oldProps, oldState);\n\t\t\t}\n\n\t\t\tlet isTopLevelFragment =\n\t\t\t\ttmp != null && tmp.type == Fragment && tmp.key == null;\n\t\t\tlet renderResult = isTopLevelFragment ? tmp.props.children : tmp;\n\n\t\t\tdiffChildren(\n\t\t\t\tparentDom,\n\t\t\t\tArray.isArray(renderResult) ? renderResult : [renderResult],\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\toldDom,\n\t\t\t\tisHydrating\n\t\t\t);\n\n\t\t\tc.base = newVNode._dom;\n\n\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\tcommitQueue.push(c);\n\t\t\t}\n\n\t\t\tif (clearProcessingException) {\n\t\t\t\tc._pendingError = c._processingException = null;\n\t\t\t}\n\n\t\t\tc._force = false;\n\t\t} else if (\n\t\t\texcessDomChildren == null &&\n\t\t\tnewVNode._original === oldVNode._original\n\t\t) {\n\t\t\tnewVNode._children = oldVNode._children;\n\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t} else {\n\t\t\tnewVNode._dom = diffElementNodes(\n\t\t\t\toldVNode._dom,\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\tisHydrating\n\t\t\t);\n\t\t}\n\n\t\tif ((tmp = options.diffed)) tmp(newVNode);\n\t} catch (e) {\n\t\tnewVNode._original = null;\n\t\toptions._catchError(e, newVNode, oldVNode);\n\t}\n\n\treturn newVNode._dom;\n}\n\n/**\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').VNode} root\n */\nexport function commitRoot(commitQueue, root) {\n\tif (options._commit) options._commit(root, commitQueue);\n\n\tcommitQueue.some(c => {\n\t\ttry {\n\t\t\tcommitQueue = c._renderCallbacks;\n\t\t\tc._renderCallbacks = [];\n\t\t\tcommitQueue.some(cb => {\n\t\t\t\tcb.call(c);\n\t\t\t});\n\t\t} catch (e) {\n\t\t\toptions._catchError(e, c._vnode);\n\t\t}\n\t});\n}\n\n/**\n * Diff two virtual nodes representing DOM element\n * @param {import('../internal').PreactElement} dom The DOM element representing\n * the virtual nodes being diffed\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {*} excessDomChildren\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @returns {import('../internal').PreactElement}\n */\nfunction diffElementNodes(\n\tdom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\tisHydrating\n) {\n\tlet i;\n\tlet oldProps = oldVNode.props;\n\tlet newProps = newVNode.props;\n\n\t// Tracks entering and exiting SVG namespace when descending through the tree.\n\tisSvg = newVNode.type === 'svg' || isSvg;\n\n\tif (excessDomChildren != null) {\n\t\tfor (i = 0; i < excessDomChildren.length; i++) {\n\t\t\tconst child = excessDomChildren[i];\n\n\t\t\t// if newVNode matches an element in excessDomChildren or the `dom`\n\t\t\t// argument matches an element in excessDomChildren, remove it from\n\t\t\t// excessDomChildren so it isn't later removed in diffChildren\n\t\t\tif (\n\t\t\t\tchild != null &&\n\t\t\t\t((newVNode.type === null\n\t\t\t\t\t? child.nodeType === 3\n\t\t\t\t\t: child.localName === newVNode.type) ||\n\t\t\t\t\tdom == child)\n\t\t\t) {\n\t\t\t\tdom = child;\n\t\t\t\texcessDomChildren[i] = null;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (dom == null) {\n\t\tif (newVNode.type === null) {\n\t\t\treturn document.createTextNode(newProps);\n\t\t}\n\n\t\tdom = isSvg\n\t\t\t? document.createElementNS('http://www.w3.org/2000/svg', newVNode.type)\n\t\t\t: document.createElement(\n\t\t\t\t\tnewVNode.type,\n\t\t\t\t\tnewProps.is && { is: newProps.is }\n\t\t\t );\n\t\t// we created a new parent, so none of the previously attached children can be reused:\n\t\texcessDomChildren = null;\n\t\t// we are creating a new node, so we can assume this is a new subtree (in case we are hydrating), this deopts the hydrate\n\t\tisHydrating = false;\n\t}\n\n\tif (newVNode.type === null) {\n\t\tif (oldProps !== newProps && dom.data !== newProps) {\n\t\t\tdom.data = newProps;\n\t\t}\n\t} else {\n\t\tif (excessDomChildren != null) {\n\t\t\texcessDomChildren = EMPTY_ARR.slice.call(dom.childNodes);\n\t\t}\n\n\t\toldProps = oldVNode.props || EMPTY_OBJ;\n\n\t\tlet oldHtml = oldProps.dangerouslySetInnerHTML;\n\t\tlet newHtml = newProps.dangerouslySetInnerHTML;\n\n\t\t// During hydration, props are not diffed at all (including dangerouslySetInnerHTML)\n\t\t// @TODO we should warn in debug mode when props don't match here.\n\t\tif (!isHydrating) {\n\t\t\t// But, if we are in a situation where we are using existing DOM (e.g. replaceNode)\n\t\t\t// we should read the existing DOM attributes to diff them\n\t\t\tif (excessDomChildren != null) {\n\t\t\t\toldProps = {};\n\t\t\t\tfor (let i = 0; i < dom.attributes.length; i++) {\n\t\t\t\t\toldProps[dom.attributes[i].name] = dom.attributes[i].value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (newHtml || oldHtml) {\n\t\t\t\t// Avoid re-applying the same '__html' if it did not changed between re-render\n\t\t\t\tif (!newHtml || !oldHtml || newHtml.__html != oldHtml.__html) {\n\t\t\t\t\tdom.innerHTML = (newHtml && newHtml.__html) || '';\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tdiffProps(dom, newProps, oldProps, isSvg, isHydrating);\n\n\t\t// If the new vnode didn't have dangerouslySetInnerHTML, diff its children\n\t\tif (newHtml) {\n\t\t\tnewVNode._children = [];\n\t\t} else {\n\t\t\ti = newVNode.props.children;\n\t\t\tdiffChildren(\n\t\t\t\tdom,\n\t\t\t\tArray.isArray(i) ? i : [i],\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tnewVNode.type === 'foreignObject' ? false : isSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\tEMPTY_OBJ,\n\t\t\t\tisHydrating\n\t\t\t);\n\t\t}\n\n\t\t// (as above, don't diff props during hydration)\n\t\tif (!isHydrating) {\n\t\t\tif (\n\t\t\t\t'value' in newProps &&\n\t\t\t\t(i = newProps.value) !== undefined &&\n\t\t\t\ti !== dom.value\n\t\t\t) {\n\t\t\t\tsetProperty(dom, 'value', i, oldProps.value, false);\n\t\t\t}\n\t\t\tif (\n\t\t\t\t'checked' in newProps &&\n\t\t\t\t(i = newProps.checked) !== undefined &&\n\t\t\t\ti !== dom.checked\n\t\t\t) {\n\t\t\t\tsetProperty(dom, 'checked', i, oldProps.checked, false);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn dom;\n}\n\n/**\n * Invoke or update a ref, depending on whether it is a function or object ref.\n * @param {object|function} ref\n * @param {any} value\n * @param {import('../internal').VNode} vnode\n */\nexport function applyRef(ref, value, vnode) {\n\ttry {\n\t\tif (typeof ref == 'function') ref(value);\n\t\telse ref.current = value;\n\t} catch (e) {\n\t\toptions._catchError(e, vnode);\n\t}\n}\n\n/**\n * Unmount a virtual node from the tree and apply DOM changes\n * @param {import('../internal').VNode} vnode The virtual node to unmount\n * @param {import('../internal').VNode} parentVNode The parent of the VNode that\n * initiated the unmount\n * @param {boolean} [skipRemove] Flag that indicates that a parent node of the\n * current element is already detached from the DOM.\n */\nexport function unmount(vnode, parentVNode, skipRemove) {\n\tlet r;\n\tif (options.unmount) options.unmount(vnode);\n\n\tif ((r = vnode.ref)) {\n\t\tif (!r.current || r.current === vnode._dom) applyRef(r, null, parentVNode);\n\t}\n\n\tlet dom;\n\tif (!skipRemove && typeof vnode.type != 'function') {\n\t\tskipRemove = (dom = vnode._dom) != null;\n\t}\n\n\t// Must be set to `undefined` to properly clean up `_nextDom`\n\t// for which `null` is a valid value. See comment in `create-element.js`\n\tvnode._dom = vnode._nextDom = undefined;\n\n\tif ((r = vnode._component) != null) {\n\t\tif (r.componentWillUnmount) {\n\t\t\ttry {\n\t\t\t\tr.componentWillUnmount();\n\t\t\t} catch (e) {\n\t\t\t\toptions._catchError(e, parentVNode);\n\t\t\t}\n\t\t}\n\n\t\tr.base = r._parentDom = null;\n\t}\n\n\tif ((r = vnode._children)) {\n\t\tfor (let i = 0; i < r.length; i++) {\n\t\t\tif (r[i]) unmount(r[i], parentVNode, skipRemove);\n\t\t}\n\t}\n\n\tif (dom != null) removeNode(dom);\n}\n\n/** The `.render()` method for a PFC backing instance. */\nfunction doRender(props, state, context) {\n\treturn this.constructor(props, context);\n}\n","import {\n\trender as preactRender,\n\thydrate as preactHydrate,\n\toptions,\n\ttoChildArray,\n\tComponent\n} from 'preact';\nimport { applyEventNormalization } from './events';\n\nconst CAMEL_PROPS = /^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|fill|flood|font|glyph(?!R)|horiz|marker(?!H|W|U)|overline|paint|stop|strikethrough|stroke|text(?!L)|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/;\n\n// Some libraries like `react-virtualized` explicitly check for this.\nComponent.prototype.isReactComponent = {};\n\nexport const REACT_ELEMENT_TYPE =\n\t(typeof Symbol != 'undefined' && Symbol.for && Symbol.for('react.element')) ||\n\t0xeac7;\n\n/**\n * Proxy render() since React returns a Component reference.\n * @param {import('./internal').VNode} vnode VNode tree to render\n * @param {import('./internal').PreactElement} parent DOM node to render vnode tree into\n * @param {() => void} [callback] Optional callback that will be called after rendering\n * @returns {import('./internal').Component | null} The root component reference or null\n */\nexport function render(vnode, parent, callback) {\n\t// React destroys any existing DOM nodes, see #1727\n\t// ...but only on the first render, see #1828\n\tif (parent._children == null) {\n\t\twhile (parent.firstChild) {\n\t\t\tparent.removeChild(parent.firstChild);\n\t\t}\n\t}\n\n\tpreactRender(vnode, parent);\n\tif (typeof callback == 'function') callback();\n\n\treturn vnode ? vnode._component : null;\n}\n\nexport function hydrate(vnode, parent, callback) {\n\tpreactHydrate(vnode, parent);\n\tif (typeof callback == 'function') callback();\n\n\treturn vnode ? vnode._component : null;\n}\n\nlet oldEventHook = options.event;\noptions.event = e => {\n\tif (oldEventHook) e = oldEventHook(e);\n\te.persist = () => {};\n\tlet stoppedPropagating = false,\n\t\tdefaultPrevented = false;\n\n\tconst origStopPropagation = e.stopPropagation;\n\te.stopPropagation = () => {\n\t\torigStopPropagation.call(e);\n\t\tstoppedPropagating = true;\n\t};\n\n\tconst origPreventDefault = e.preventDefault;\n\te.preventDefault = () => {\n\t\torigPreventDefault.call(e);\n\t\tdefaultPrevented = true;\n\t};\n\n\te.isPropagationStopped = () => stoppedPropagating;\n\te.isDefaultPrevented = () => defaultPrevented;\n\treturn (e.nativeEvent = e);\n};\n\n// Patch in `UNSAFE_*` lifecycle hooks\nfunction setSafeDescriptor(proto, key) {\n\tif (proto['UNSAFE_' + key] && !proto[key]) {\n\t\tObject.defineProperty(proto, key, {\n\t\t\tget() {\n\t\t\t\treturn this['UNSAFE_' + key];\n\t\t\t},\n\t\t\t// This `set` is only used if a user sets a lifecycle like cWU\n\t\t\t// after setting a lifecycle like UNSAFE_cWU. I doubt anyone\n\t\t\t// actually does this in practice so not testing it\n\t\t\t/* istanbul ignore next */\n\t\t\tset(v) {\n\t\t\t\tthis['UNSAFE_' + key] = v;\n\t\t\t}\n\t\t});\n\t}\n}\n\nlet classNameDescriptor = {\n\tconfigurable: true,\n\tget() {\n\t\treturn this.class;\n\t}\n};\n\nlet oldVNodeHook = options.vnode;\noptions.vnode = vnode => {\n\tvnode.$$typeof = REACT_ELEMENT_TYPE;\n\n\tlet type = vnode.type;\n\tlet props = vnode.props;\n\n\tif (type) {\n\t\t// Alias `class` prop to `className` if available\n\t\tif (props.class != props.className) {\n\t\t\tclassNameDescriptor.enumerable = 'className' in props;\n\t\t\tif (props.className != null) props.class = props.className;\n\t\t\tObject.defineProperty(props, 'className', classNameDescriptor);\n\t\t}\n\n\t\t// Apply DOM VNode compat\n\t\tif (typeof type != 'function') {\n\t\t\t// Apply defaultValue to value\n\t\t\tif (props.defaultValue && props.value !== undefined) {\n\t\t\t\tif (!props.value && props.value !== 0) {\n\t\t\t\t\tprops.value = props.defaultValue;\n\t\t\t\t}\n\t\t\t\tprops.defaultValue = undefined;\n\t\t\t}\n\n\t\t\t// Add support for array select values: