(window.webpackJsonp=window.webpackJsonp||[]).push([[2],{1:function(module,__webpack_exports__,__webpack_require__){"use strict";eval("/* unused harmony export empty */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"i\", function() { return globalHandleError; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"j\", function() { return interopDefault; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return applyAsyncData; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"o\", function() { return sanitizeComponent; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"e\", function() { return getMatchedComponents; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"f\", function() { return getMatchedComponentsInstances; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return flatMapComponents; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"n\", function() { return resolveRouteComponents; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"h\", function() { return getRouteData; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"p\", function() { return setContext; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"k\", function() { return middlewareSeries; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"m\", function() { return promisify; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"d\", function() { return getLocation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return compile; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"g\", function() { return getQueryDiff; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"l\", function() { return normalizeError; });\n/* harmony import */ var core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(25);\n/* harmony import */ var core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es7_object_get_own_property_descriptors__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es6_symbol__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10);\n/* harmony import */ var core_js_modules_es6_symbol__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_symbol__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(18);\n/* harmony import */ var core_js_modules_es6_regexp_split__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(47);\n/* harmony import */ var core_js_modules_es6_regexp_split__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_regexp_split__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es6_string_starts_with__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(49);\n/* harmony import */ var core_js_modules_es6_string_starts_with__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_string_starts_with__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es6_string_repeat__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(74);\n/* harmony import */ var core_js_modules_es6_string_repeat__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_string_repeat__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_esm_typeof__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(19);\n/* harmony import */ var core_js_modules_es6_regexp_to_string__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(60);\n/* harmony import */ var core_js_modules_es6_regexp_to_string__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_regexp_to_string__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es6_date_to_string__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(61);\n/* harmony import */ var core_js_modules_es6_date_to_string__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_date_to_string__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es6_regexp_constructor__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(166);\n/* harmony import */ var core_js_modules_es6_regexp_constructor__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_regexp_constructor__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es6_regexp_search__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(168);\n/* harmony import */ var core_js_modules_es6_regexp_search__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_regexp_search__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es6_regexp_replace__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(36);\n/* harmony import */ var core_js_modules_es6_regexp_replace__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_regexp_replace__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var regenerator_runtime_runtime__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(63);\n/* harmony import */ var regenerator_runtime_runtime__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var _babel_runtime_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(12);\n/* harmony import */ var core_js_modules_es6_string_iterator__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(62);\n/* harmony import */ var core_js_modules_es6_string_iterator__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_string_iterator__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(7);\n/* harmony import */ var core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_15__);\n/* harmony import */ var core_js_modules_es6_object_to_string__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(6);\n/* harmony import */ var core_js_modules_es6_object_to_string__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_to_string__WEBPACK_IMPORTED_MODULE_16__);\n/* harmony import */ var core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(23);\n/* harmony import */ var core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_17__);\n/* harmony import */ var core_js_modules_es6_function_name__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(29);\n/* harmony import */ var core_js_modules_es6_function_name__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_function_name__WEBPACK_IMPORTED_MODULE_18__);\n/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(3);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(0);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { Object(_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_19__[/* default */ \"a\"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n // window.{{globals.loadedCallback}} hook\n// Useful for jsdom testing or plugins (https://github.com/tmpvar/jsdom#dealing-with-asynchronous-script-loading)\n\nif (true) {\n window.onNuxtReadyCbs = [];\n\n window.onNuxtReady = function (cb) {\n window.onNuxtReadyCbs.push(cb);\n };\n}\n\nfunction empty() {}\nfunction globalHandleError(error) {\n if (vue__WEBPACK_IMPORTED_MODULE_20__[/* default */ \"a\"].config.errorHandler) {\n vue__WEBPACK_IMPORTED_MODULE_20__[/* default */ \"a\"].config.errorHandler(error);\n }\n}\nfunction interopDefault(promise) {\n return promise.then(function (m) {\n return m.default || m;\n });\n}\nfunction applyAsyncData(Component, asyncData) {\n if ( // For SSR, we once all this function without second param to just apply asyncData\n // Prevent doing this for each SSR request\n !asyncData && Component.options.__hasNuxtData) {\n return;\n }\n\n var ComponentData = Component.options._originDataFn || Component.options.data || function () {\n return {};\n };\n\n Component.options._originDataFn = ComponentData;\n\n Component.options.data = function () {\n var data = ComponentData.call(this, this);\n\n if (this.$ssrContext) {\n asyncData = this.$ssrContext.asyncData[Component.cid];\n }\n\n return _objectSpread({}, data, {}, asyncData);\n };\n\n Component.options.__hasNuxtData = true;\n\n if (Component._Ctor && Component._Ctor.options) {\n Component._Ctor.options.data = Component.options.data;\n }\n}\nfunction sanitizeComponent(Component) {\n // If Component already sanitized\n if (Component.options && Component._Ctor === Component) {\n return Component;\n }\n\n if (!Component.options) {\n Component = vue__WEBPACK_IMPORTED_MODULE_20__[/* default */ \"a\"].extend(Component); // fix issue #6\n\n Component._Ctor = Component;\n } else {\n Component._Ctor = Component;\n Component.extendOptions = Component.options;\n } // For debugging purpose\n\n\n if (!Component.options.name && Component.options.__file) {\n Component.options.name = Component.options.__file;\n }\n\n return Component;\n}\nfunction getMatchedComponents(route) {\n var matches = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var prop = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'components';\n return Array.prototype.concat.apply([], route.matched.map(function (m, index) {\n return Object.keys(m[prop]).map(function (key) {\n matches && matches.push(index);\n return m[prop][key];\n });\n }));\n}\nfunction getMatchedComponentsInstances(route) {\n var matches = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n return getMatchedComponents(route, matches, 'instances');\n}\nfunction flatMapComponents(route, fn) {\n return Array.prototype.concat.apply([], route.matched.map(function (m, index) {\n return Object.keys(m.components).reduce(function (promises, key) {\n if (m.components[key]) {\n promises.push(fn(m.components[key], m.instances[key], m, key, index));\n } else {\n delete m.components[key];\n }\n\n return promises;\n }, []);\n }));\n}\nfunction resolveRouteComponents(route, fn) {\n return Promise.all(flatMapComponents(route,\n /*#__PURE__*/\n function () {\n var _ref = Object(_babel_runtime_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_13__[/* default */ \"a\"])(\n /*#__PURE__*/\n regeneratorRuntime.mark(function _callee(Component, instance, match, key) {\n return regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (!(typeof Component === 'function' && !Component.options)) {\n _context.next = 4;\n break;\n }\n\n _context.next = 3;\n return Component();\n\n case 3:\n Component = _context.sent;\n\n case 4:\n match.components[key] = Component = sanitizeComponent(Component);\n return _context.abrupt(\"return\", typeof fn === 'function' ? fn(Component, instance, match, key) : Component);\n\n case 6:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n\n return function (_x, _x2, _x3, _x4) {\n return _ref.apply(this, arguments);\n };\n }()));\n}\nfunction getRouteData(_x5) {\n return _getRouteData.apply(this, arguments);\n}\n\nfunction _getRouteData() {\n _getRouteData = Object(_babel_runtime_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_13__[/* default */ \"a\"])(\n /*#__PURE__*/\n regeneratorRuntime.mark(function _callee2(route) {\n return regeneratorRuntime.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n if (route) {\n _context2.next = 2;\n break;\n }\n\n return _context2.abrupt(\"return\");\n\n case 2:\n _context2.next = 4;\n return resolveRouteComponents(route);\n\n case 4:\n return _context2.abrupt(\"return\", _objectSpread({}, route, {\n meta: getMatchedComponents(route).map(function (Component, index) {\n return _objectSpread({}, Component.options.meta, {}, (route.matched[index] || {}).meta);\n })\n }));\n\n case 5:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2);\n }));\n return _getRouteData.apply(this, arguments);\n}\n\nfunction setContext(_x6, _x7) {\n return _setContext.apply(this, arguments);\n}\n\nfunction _setContext() {\n _setContext = Object(_babel_runtime_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_13__[/* default */ \"a\"])(\n /*#__PURE__*/\n regeneratorRuntime.mark(function _callee3(app, context) {\n var _ref2, _ref3, currentRouteData, fromRouteData;\n\n return regeneratorRuntime.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n // If context not defined, create it\n if (!app.context) {\n app.context = {\n isStatic: true,\n isDev: false,\n isHMR: false,\n app: app,\n store: app.store,\n payload: context.payload,\n error: context.error,\n base: '/',\n env: {}\n }; // Only set once\n\n if (context.req) {\n app.context.req = context.req;\n }\n\n if (context.res) {\n app.context.res = context.res;\n }\n\n if (context.ssrContext) {\n app.context.ssrContext = context.ssrContext;\n }\n\n app.context.redirect = function (status, path, query) {\n if (!status) {\n return;\n }\n\n app.context._redirected = true; // if only 1 or 2 arguments: redirect('/') or redirect('/', { foo: 'bar' })\n\n var pathType = Object(_babel_runtime_helpers_esm_typeof__WEBPACK_IMPORTED_MODULE_6__[/* default */ \"a\"])(path);\n\n if (typeof status !== 'number' && (pathType === 'undefined' || pathType === 'object')) {\n query = path || {};\n path = status;\n pathType = Object(_babel_runtime_helpers_esm_typeof__WEBPACK_IMPORTED_MODULE_6__[/* default */ \"a\"])(path);\n status = 302;\n }\n\n if (pathType === 'object') {\n path = app.router.resolve(path).route.fullPath;\n } // \"/absolute/route\", \"./relative/route\" or \"../relative/route\"\n\n\n if (/(^[.]{1,2}\\/)|(^\\/(?!\\/))/.test(path)) {\n app.context.next({\n path: path,\n query: query,\n status: status\n });\n } else {\n path = formatUrl(path, query);\n\n if (false) {}\n\n if (true) {\n // https://developer.mozilla.org/en-US/docs/Web/API/Location/replace\n window.location.replace(path); // Throw a redirect error\n\n throw new Error('ERR_REDIRECT');\n }\n }\n };\n\n if (false) {}\n\n if (true) {\n app.context.nuxtState = window.__NUXT__;\n }\n } // Dynamic keys\n\n\n _context3.next = 3;\n return Promise.all([getRouteData(context.route), getRouteData(context.from)]);\n\n case 3:\n _ref2 = _context3.sent;\n _ref3 = Object(_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_2__[/* default */ \"a\"])(_ref2, 2);\n currentRouteData = _ref3[0];\n fromRouteData = _ref3[1];\n\n if (context.route) {\n app.context.route = currentRouteData;\n }\n\n if (context.from) {\n app.context.from = fromRouteData;\n }\n\n app.context.next = context.next;\n app.context._redirected = false;\n app.context._errored = false;\n app.context.isHMR = false;\n app.context.params = app.context.route.params || {};\n app.context.query = app.context.route.query || {};\n\n case 15:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3);\n }));\n return _setContext.apply(this, arguments);\n}\n\nfunction middlewareSeries(promises, appContext) {\n if (!promises.length || appContext._redirected || appContext._errored) {\n return Promise.resolve();\n }\n\n return promisify(promises[0], appContext).then(function () {\n return middlewareSeries(promises.slice(1), appContext);\n });\n}\nfunction promisify(fn, context) {\n var promise;\n\n if (fn.length === 2) {\n // fn(context, callback)\n promise = new Promise(function (resolve) {\n fn(context, function (err, data) {\n if (err) {\n context.error(err);\n }\n\n data = data || {};\n resolve(data);\n });\n });\n } else {\n promise = fn(context);\n }\n\n if (promise && promise instanceof Promise && typeof promise.then === 'function') {\n return promise;\n }\n\n return Promise.resolve(promise);\n} // Imported from vue-router\n\nfunction getLocation(base, mode) {\n var path = decodeURI(window.location.pathname);\n\n if (mode === 'hash') {\n return window.location.hash.replace(/^#\\//, '');\n }\n\n if (base && path.indexOf(base) === 0) {\n path = path.slice(base.length);\n }\n\n return (path || '/') + window.location.search + window.location.hash;\n} // Imported from path-to-regexp\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\n\nfunction compile(str, options) {\n return tokensToFunction(parse(str, options), options);\n}\nfunction getQueryDiff(toQuery, fromQuery) {\n var diff = {};\n\n var queries = _objectSpread({}, toQuery, {}, fromQuery);\n\n for (var k in queries) {\n if (String(toQuery[k]) !== String(fromQuery[k])) {\n diff[k] = true;\n }\n }\n\n return diff;\n}\nfunction normalizeError(err) {\n var message;\n\n if (!(err.message || typeof err === 'string')) {\n try {\n message = JSON.stringify(err, null, 2);\n } catch (e) {\n message = \"[\".concat(err.constructor.name, \"]\");\n }\n } else {\n message = err.message || err;\n }\n\n return _objectSpread({}, err, {\n message: message,\n statusCode: err.statusCode || err.status || err.response && err.response.status || 500\n });\n}\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\n\nvar PATH_REGEXP = new RegExp([// Match escaped characters that would otherwise appear in future matches.\n// This allows the user to escape special characters that won't transform.\n'(\\\\\\\\.)', // Match Express-style parameters and un-named parameters with a prefix\n// and optional suffixes. Matches appear as:\n//\n// \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n// \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n// \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n'([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'].join('|'), 'g');\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\n\nfunction parse(str, options) {\n var tokens = [];\n var key = 0;\n var index = 0;\n var path = '';\n var defaultDelimiter = options && options.delimiter || '/';\n var res;\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0];\n var escaped = res[1];\n var offset = res.index;\n path += str.slice(index, offset);\n index = offset + m.length; // Ignore already escaped sequences.\n\n if (escaped) {\n path += escaped[1];\n continue;\n }\n\n var next = str[index];\n var prefix = res[2];\n var name = res[3];\n var capture = res[4];\n var group = res[5];\n var modifier = res[6];\n var asterisk = res[7]; // Push the current path onto the tokens.\n\n if (path) {\n tokens.push(path);\n path = '';\n }\n\n var partial = prefix != null && next != null && next !== prefix;\n var repeat = modifier === '+' || modifier === '*';\n var optional = modifier === '?' || modifier === '*';\n var delimiter = res[2] || defaultDelimiter;\n var pattern = capture || group;\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: Boolean(asterisk),\n pattern: pattern ? escapeGroup(pattern) : asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?'\n });\n } // Match any characters still remaining.\n\n\n if (index < str.length) {\n path += str.substr(index);\n } // If the path exists, push it onto the end.\n\n\n if (path) {\n tokens.push(path);\n }\n\n return tokens;\n}\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\n\n\nfunction encodeURIComponentPretty(str, slashAllowed) {\n var re = slashAllowed ? /[?#]/g : /[/?#]/g;\n return encodeURI(str).replace(re, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase();\n });\n}\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\n\n\nfunction encodeAsterisk(str) {\n return encodeURIComponentPretty(str, true);\n}\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\n\n\nfunction escapeString(str) {\n return str.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, '\\\\$1');\n}\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\n\n\nfunction escapeGroup(group) {\n return group.replace(/([=!:$/()])/g, '\\\\$1');\n}\n/**\n * Expose a method for transforming tokens into the path function.\n */\n\n\nfunction tokensToFunction(tokens, options) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length); // Compile all the patterns before compilation.\n\n for (var i = 0; i < tokens.length; i++) {\n if (Object(_babel_runtime_helpers_esm_typeof__WEBPACK_IMPORTED_MODULE_6__[/* default */ \"a\"])(tokens[i]) === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options));\n }\n }\n\n return function (obj, opts) {\n var path = '';\n var data = obj || {};\n var options = opts || {};\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent;\n\n for (var _i = 0; _i < tokens.length; _i++) {\n var token = tokens[_i];\n\n if (typeof token === 'string') {\n path += token;\n continue;\n }\n\n var value = data[token.name || 'pathMatch'];\n var segment = void 0;\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix;\n }\n\n continue;\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined');\n }\n }\n\n if (Array.isArray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`');\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue;\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty');\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j]);\n\n if (!matches[_i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`');\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment;\n }\n\n continue;\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value);\n\n if (!matches[_i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"');\n }\n\n path += token.prefix + segment;\n }\n\n return path;\n };\n}\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\n\n\nfunction flags(options) {\n return options && options.sensitive ? '' : 'i';\n}\n/**\n * Format given url, append query to url query string\n *\n * @param {string} url\n * @param {string} query\n * @return {string}\n */\n\n\nfunction formatUrl(url, query) {\n var protocol;\n var index = url.indexOf('://');\n\n if (index !== -1) {\n protocol = url.substring(0, index);\n url = url.substring(index + 3);\n } else if (url.startsWith('//')) {\n url = url.substring(2);\n }\n\n var parts = url.split('/');\n var result = (protocol ? protocol + '://' : '//') + parts.shift();\n var path = parts.filter(Boolean).join('/');\n var hash;\n parts = path.split('#');\n\n if (parts.length === 2) {\n var _parts = parts;\n\n var _parts2 = Object(_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_2__[/* default */ \"a\"])(_parts, 2);\n\n path = _parts2[0];\n hash = _parts2[1];\n }\n\n result += path ? '/' + path : '';\n\n if (query && JSON.stringify(query) !== '{}') {\n result += (url.split('?').length === 2 ? '&' : '?') + formatQuery(query);\n }\n\n result += hash ? '#' + hash : '';\n return result;\n}\n/**\n * Transform data object to query string\n *\n * @param {object} query\n * @return {string}\n */\n\n\nfunction formatQuery(query) {\n return Object.keys(query).sort().map(function (key) {\n var val = query[key];\n\n if (val == null) {\n return '';\n }\n\n if (Array.isArray(val)) {\n return val.slice().map(function (val2) {\n return [key, '=', val2].join('');\n }).join('&');\n }\n\n return key + '=' + val;\n }).filter(Boolean).join('&');\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi8ubnV4dC91dGlscy5qcz9lYmVkIl0sIm5hbWVzIjpbInByb2Nlc3MiLCJ3aW5kb3ciLCJvbk51eHRSZWFkeUNicyIsIm9uTnV4dFJlYWR5IiwiY2IiLCJwdXNoIiwiZW1wdHkiLCJnbG9iYWxIYW5kbGVFcnJvciIsImVycm9yIiwiVnVlIiwiY29uZmlnIiwiZXJyb3JIYW5kbGVyIiwiaW50ZXJvcERlZmF1bHQiLCJwcm9taXNlIiwidGhlbiIsIm0iLCJkZWZhdWx0IiwiYXBwbHlBc3luY0RhdGEiLCJDb21wb25lbnQiLCJhc3luY0RhdGEiLCJvcHRpb25zIiwiX19oYXNOdXh0RGF0YSIsIkNvbXBvbmVudERhdGEiLCJfb3JpZ2luRGF0YUZuIiwiZGF0YSIsImNhbGwiLCIkc3NyQ29udGV4dCIsImNpZCIsIl9DdG9yIiwic2FuaXRpemVDb21wb25lbnQiLCJleHRlbmQiLCJleHRlbmRPcHRpb25zIiwibmFtZSIsIl9fZmlsZSIsImdldE1hdGNoZWRDb21wb25lbnRzIiwicm91dGUiLCJtYXRjaGVzIiwicHJvcCIsIkFycmF5IiwicHJvdG90eXBlIiwiY29uY2F0IiwiYXBwbHkiLCJtYXRjaGVkIiwibWFwIiwiaW5kZXgiLCJPYmplY3QiLCJrZXlzIiwia2V5IiwiZ2V0TWF0Y2hlZENvbXBvbmVudHNJbnN0YW5jZXMiLCJmbGF0TWFwQ29tcG9uZW50cyIsImZuIiwiY29tcG9uZW50cyIsInJlZHVjZSIsInByb21pc2VzIiwiaW5zdGFuY2VzIiwicmVzb2x2ZVJvdXRlQ29tcG9uZW50cyIsIlByb21pc2UiLCJhbGwiLCJpbnN0YW5jZSIsIm1hdGNoIiwiZ2V0Um91dGVEYXRhIiwibWV0YSIsInNldENvbnRleHQiLCJhcHAiLCJjb250ZXh0IiwiaXNTdGF0aWMiLCJpc0RldiIsImlzSE1SIiwic3RvcmUiLCJwYXlsb2FkIiwiYmFzZSIsImVudiIsInJlcSIsInJlcyIsInNzckNvbnRleHQiLCJyZWRpcmVjdCIsInN0YXR1cyIsInBhdGgiLCJxdWVyeSIsIl9yZWRpcmVjdGVkIiwicGF0aFR5cGUiLCJyb3V0ZXIiLCJyZXNvbHZlIiwiZnVsbFBhdGgiLCJ0ZXN0IiwibmV4dCIsImZvcm1hdFVybCIsImxvY2F0aW9uIiwicmVwbGFjZSIsIkVycm9yIiwibnV4dFN0YXRlIiwiX19OVVhUX18iLCJmcm9tIiwiY3VycmVudFJvdXRlRGF0YSIsImZyb21Sb3V0ZURhdGEiLCJfZXJyb3JlZCIsInBhcmFtcyIsIm1pZGRsZXdhcmVTZXJpZXMiLCJhcHBDb250ZXh0IiwibGVuZ3RoIiwicHJvbWlzaWZ5Iiwic2xpY2UiLCJlcnIiLCJnZXRMb2NhdGlvbiIsIm1vZGUiLCJkZWNvZGVVUkkiLCJwYXRobmFtZSIsImhhc2giLCJpbmRleE9mIiwic2VhcmNoIiwiY29tcGlsZSIsInN0ciIsInRva2Vuc1RvRnVuY3Rpb24iLCJwYXJzZSIsImdldFF1ZXJ5RGlmZiIsInRvUXVlcnkiLCJmcm9tUXVlcnkiLCJkaWZmIiwicXVlcmllcyIsImsiLCJTdHJpbmciLCJub3JtYWxpemVFcnJvciIsIm1lc3NhZ2UiLCJKU09OIiwic3RyaW5naWZ5IiwiZSIsImNvbnN0cnVjdG9yIiwic3RhdHVzQ29kZSIsInJlc3BvbnNlIiwiUEFUSF9SRUdFWFAiLCJSZWdFeHAiLCJqb2luIiwidG9rZW5zIiwiZGVmYXVsdERlbGltaXRlciIsImRlbGltaXRlciIsImV4ZWMiLCJlc2NhcGVkIiwib2Zmc2V0IiwicHJlZml4IiwiY2FwdHVyZSIsImdyb3VwIiwibW9kaWZpZXIiLCJhc3RlcmlzayIsInBhcnRpYWwiLCJyZXBlYXQiLCJvcHRpb25hbCIsInBhdHRlcm4iLCJCb29sZWFuIiwiZXNjYXBlR3JvdXAiLCJlc2NhcGVTdHJpbmciLCJzdWJzdHIiLCJlbmNvZGVVUklDb21wb25lbnRQcmV0dHkiLCJzbGFzaEFsbG93ZWQiLCJyZSIsImVuY29kZVVSSSIsImMiLCJjaGFyQ29kZUF0IiwidG9TdHJpbmciLCJ0b1VwcGVyQ2FzZSIsImVuY29kZUFzdGVyaXNrIiwiaSIsImZsYWdzIiwib2JqIiwib3B0cyIsImVuY29kZSIsInByZXR0eSIsImVuY29kZVVSSUNvbXBvbmVudCIsInRva2VuIiwidmFsdWUiLCJzZWdtZW50IiwiVHlwZUVycm9yIiwiaXNBcnJheSIsImoiLCJzZW5zaXRpdmUiLCJ1cmwiLCJwcm90b2NvbCIsInN1YnN0cmluZyIsInN0YXJ0c1dpdGgiLCJwYXJ0cyIsInNwbGl0IiwicmVzdWx0Iiwic2hpZnQiLCJmaWx0ZXIiLCJmb3JtYXRRdWVyeSIsInNvcnQiLCJ2YWwiLCJ2YWwyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBRUE7QUFDQTs7QUFDQSxJQUFJQSxJQUFKLEVBQW9CO0FBQ2xCQyxRQUFNLENBQUNDLGNBQVAsR0FBd0IsRUFBeEI7O0FBQ0FELFFBQU0sQ0FBQ0UsV0FBUCxHQUFxQixVQUFDQyxFQUFELEVBQVE7QUFDM0JILFVBQU0sQ0FBQ0MsY0FBUCxDQUFzQkcsSUFBdEIsQ0FBMkJELEVBQTNCO0FBQ0QsR0FGRDtBQUdEOztBQUVNLFNBQVNFLEtBQVQsR0FBa0IsQ0FBRTtBQUVwQixTQUFTQyxpQkFBVCxDQUE0QkMsS0FBNUIsRUFBbUM7QUFDeEMsTUFBSUMsb0RBQUcsQ0FBQ0MsTUFBSixDQUFXQyxZQUFmLEVBQTZCO0FBQzNCRix3REFBRyxDQUFDQyxNQUFKLENBQVdDLFlBQVgsQ0FBd0JILEtBQXhCO0FBQ0Q7QUFDRjtBQUVNLFNBQVNJLGNBQVQsQ0FBeUJDLE9BQXpCLEVBQWtDO0FBQ3ZDLFNBQU9BLE9BQU8sQ0FBQ0MsSUFBUixDQUFhLFVBQUFDLENBQUM7QUFBQSxXQUFJQSxDQUFDLENBQUNDLE9BQUYsSUFBYUQsQ0FBakI7QUFBQSxHQUFkLENBQVA7QUFDRDtBQUVNLFNBQVNFLGNBQVQsQ0FBeUJDLFNBQXpCLEVBQW9DQyxTQUFwQyxFQUErQztBQUNwRCxPQUNFO0FBQ0E7QUFDQSxHQUFDQSxTQUFELElBQWNELFNB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Ozs7QUFNQSxTQUFTRyxXQUFULENBQXNCekcsS0FBdEIsRUFBNkI7QUFDM0IsU0FBT2pDLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZZ0MsS0FBWixFQUFtQjBHLElBQW5CLEdBQTBCN0ksR0FBMUIsQ0FBOEIsVUFBQ0ksR0FBRCxFQUFTO0FBQzVDLFFBQU0wSSxHQUFHLEdBQUczRyxLQUFLLENBQUMvQixHQUFELENBQWpCOztBQUNBLFFBQUkwSSxHQUFHLElBQUksSUFBWCxFQUFpQjtBQUNmLGFBQU8sRUFBUDtBQUNEOztBQUNELFFBQUluSixLQUFLLENBQUNxSSxPQUFOLENBQWNjLEdBQWQsQ0FBSixFQUF3QjtBQUN0QixhQUFPQSxHQUFHLENBQUNwRixLQUFKLEdBQVkxRCxHQUFaLENBQWdCLFVBQUErSSxJQUFJO0FBQUEsZUFBSSxDQUFDM0ksR0FBRCxFQUFNLEdBQU4sRUFBVzJJLElBQVgsRUFBaUJ2RCxJQUFqQixDQUFzQixFQUF0QixDQUFKO0FBQUEsT0FBcEIsRUFBbURBLElBQW5ELENBQXdELEdBQXhELENBQVA7QUFDRDs7QUFDRCxXQUFPcEYsR0FBRyxHQUFHLEdBQU4sR0FBWTBJLEdBQW5CO0FBQ0QsR0FUTSxFQVNKSCxNQVRJLENBU0duQyxPQVRILEVBU1loQixJQVRaLENBU2lCLEdBVGpCLENBQVA7QUFVRCIsImZpbGUiOiIxLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFZ1ZSBmcm9tICd2dWUnXG5cbi8vIHdpbmRvdy57e2dsb2JhbHMubG9hZGVkQ2FsbGJhY2t9fSBob29rXG4vLyBVc2VmdWwgZm9yIGpzZG9tIHRlc3Rpbmcgb3IgcGx1Z2lucyAoaHR0cHM6Ly9naXRodWIuY29tL3RtcHZhci9qc2RvbSNkZWFsaW5nLXdpdGgtYXN5bmNocm9ub3VzLXNjcmlwdC1sb2FkaW5nKVxuaWYgKHByb2Nlc3MuY2xpZW50KSB7XG4gIHdpbmRvdy5vbk51eHRSZWFkeUNicyA9IFtdXG4gIHdpbmRvdy5vbk51eHRSZWFkeSA9IChjYikgPT4ge1xuICAgIHdpbmRvdy5vbk51eHRSZWFkeUNicy5wdXNoKGNiKVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbXB0eSAoKSB7fVxuXG5leHBvcnQgZnVuY3Rpb24gZ2xvYmFsSGFuZGxlRXJyb3IgKGVycm9yKSB7XG4gIGlmIChWdWUuY29uZmlnLmVycm9ySGFuZGxlcikge1xuICAgIFZ1ZS5jb25maWcuZXJyb3JIYW5kbGVyKGVycm9yKVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnRlcm9wRGVmYXVsdCAocHJvbWlzZSkge1xuICByZXR1cm4gcHJvbWlzZS50aGVuKG0gPT4gbS5kZWZhdWx0IHx8IG0pXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBseUFzeW5jRGF0YSAoQ29tcG9uZW50LCBhc3luY0RhdGEpIHtcbiAgaWYgKFxuICAgIC8vIEZvciBTU1IsIHdlIG9uY2UgYWxsIHRoaXMgZnVuY3Rpb24gd2l0aG91dCBzZWNvbmQgcGFyYW0gdG8ganVzdCBhcHBseSBhc3luY0RhdGFcbiAgICAvLyBQcmV2ZW50IGRvaW5nIHRoaXMgZm9yIGVhY2ggU1NSIHJlcXVlc3RcbiAgICAhYXN5bmNEYXRhICYmIENvbXBvbmVudC5vcHRpb25zLl9faGFzTnV4dERhdGFcbiAgKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBjb25zdCBDb21wb25lbnREYXRhID0gQ29tcG9uZW50Lm9wdGlvbnMuX29yaWdpbkRhdGFGbiB8fCBDb21wb25lbnQub3B0aW9ucy5kYXRhIHx8IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHt9IH1cbiAgQ29tcG9uZW50Lm9wdGlvbnMuX29yaWdpbkRhdGFGbiA9IENvbXBvbmVudERhdGFcblxuICBDb21wb25lbnQub3B0aW9ucy5kYXRhID0gZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IGRhdGEgPSBDb21wb25lbnREYXRhLmNhbGwodGhpcywgdGhpcylcbiAgICBpZiAodGhpcy4kc3NyQ29udGV4dCkge1xuICAgICAgYXN5bmNEYXRhID0gdGhpcy4kc3NyQ29udGV4dC5hc3luY0RhdGFbQ29tcG9uZW50LmNpZF1cbiAgICB9XG4gICAgcmV0dXJuIHsgLi4uZGF0YSwgLi4uYXN5bmNEYXRhIH1cbiAgfVxuXG4gIENvbXBvbmVudC5vcHRpb25zLl9faGFzTnV4dERhdGEgPSB0cnVlXG5cbiAgaWYgKENvbXBvbmVudC5fQ3RvciAmJiBDb21wb25lbnQuX0N0b3Iub3B0aW9ucykge1xuICAgIENvbXBvbmVudC5fQ3Rvci5vcHRpb25zLmRhdGEgPSBDb21wb25lbnQub3B0aW9ucy5kYXRhXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNhbml0aXplQ29tcG9uZW50IChDb21wb25lbnQpIHtcbiAgLy8gSWYgQ29tcG9uZW50IGFscmVhZHkgc2FuaXRpemVkXG4gIGlmIChDb21wb25lbnQub3B0aW9ucyAmJiBDb21wb25lbnQuX0N0b3IgPT09IENvbXBvbmVudCkge1xuICAgIHJldHVybiBDb21wb25lbnRcbiAgfVxuICBpZiAoIUNvbXBvbmVudC5vcHRpb25zKSB7XG4gICAgQ29tcG9uZW50ID0gVnVlLmV4dGVuZChDb21wb25lbnQpIC8vIGZpeCBpc3N1ZSAjNlxuICAgIENvbXBvbmVudC5fQ3RvciA9IENvbXBvbmVudFxuICB9IGVsc2Uge1xuICAgIENvbXBvbmVudC5fQ3RvciA9IENvbXBvbmVudFxuICAgIENvbXBvbmVudC5leHRlbmRPcHRpb25zID0gQ29tcG9uZW50Lm9wdGlvbnNcbiAgfVxuICAvLyBGb3IgZGVidWdnaW5nIHB1cnBvc2VcbiAgaWYgKCFDb21wb25lbnQub3B0aW9ucy5uYW1lICYmIENvbXBvbmVudC5vcHRpb25zLl9fZmlsZSkge1xuICAgIENvbXBvbmVudC5vcHRpb25zLm5hbWUgPSBDb21wb25lbnQub3B0aW9ucy5fX2ZpbGVcbiAgfVxuICByZXR1cm4gQ29tcG9uZW50XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRNYXRjaGVkQ29tcG9uZW50cyAocm91dGUsIG1hdGNoZXMgPSBmYWxzZSwgcHJvcCA9ICdjb21wb25lbnRzJykge1xuICByZXR1cm4gQXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSwgcm91dGUubWF0Y2hlZC5tYXAoKG0sIGluZGV4KSA9PiB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKG1bcHJvcF0pLm1hcCgoa2V5KSA9PiB7XG4gICAgICBtYXRjaGVzICYmIG1hdGNoZXMucHVzaChpbmRleClcbiAgICAgIHJldHVybiBtW3Byb3BdW2tleV1cbiAgICB9KVxuICB9KSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE1hdGNoZWRDb21wb25lbnRzSW5zdGFuY2VzIChyb3V0ZSwgbWF0Y2hlcyA9IGZhbHNlKSB7XG4gIHJldHVybiBnZXRNYXRjaGVkQ29tcG9uZW50cyhyb3V0ZSwgbWF0Y2hlcywgJ2luc3RhbmNlcycpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmbGF0TWFwQ29tcG9uZW50cyAocm91dGUsIGZuKSB7XG4gIHJldHVybiBBcnJheS5wcm90b3R5cGUuY29uY2F0LmFwcGx5KFtdLCByb3V0ZS5tYXRjaGVkLm1hcCgobSwgaW5kZXgpID0+IHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMobS5jb21wb25lbnRzKS5yZWR1Y2UoKHByb21pc2VzLCBrZXkpID0+IHtcbiAgICAgIGlmIChtLmNvbXBvbmVudHNba2V5XSkge1xuICAgICAgICBwcm9taXNlcy5wdXNoKGZuKG0uY29tcG9uZW50c1trZXldLCBtLmluc3RhbmNlc1trZXldLCBtLCBrZXksIGluZGV4KSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRlbGV0ZSBtLmNvbXBvbmVudHNba2V5XVxuICAgICAgfVxuICAgICAgcmV0dXJuIHByb21pc2VzXG4gICAgfSwgW10pXG4gIH0pKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVJvdXRlQ29tcG9uZW50cyAocm91dGUsIGZuKSB7XG4gIHJldHVybiBQcm9taXNlLmFsbChcbiAgICBmbGF0TWFwQ29tcG9uZW50cyhyb3V0ZSwgYXN5bmMgKENvbXBvbmVudCwgaW5zdGFuY2UsIG1hdGNoLCBrZXkpID0+IHtcbiAgICAgIC8vIElmIGNvbXBvbmVudCBpcyBhIGZ1bmN0aW9uLCByZXNvbHZlIGl0XG4gICAgICBpZiAodHlwZW9mIENvbXBvbmVudCA9PT0gJ2Z1bmN0aW9uJyAmJiAhQ29tcG9uZW50Lm9wdGlvbnMpIHtcbiAgICAgICAgQ29tcG9uZW50ID0gYXdhaXQgQ29tcG9uZW50KClcbiAgICAgIH1cbiAgICAgIG1hdGNoLmNvbXBvbmVudHNba2V5XSA9IENvbXBvbmVudCA9IHNhbml0aXplQ29tcG9uZW50KENvbXBvbmVudClcbiAgICAgIHJldHVybiB0eXBlb2YgZm4gPT09ICdmdW5jdGlvbicgPyBmbihDb21wb25lbnQsIGluc3RhbmNlLCBtYXRjaCwga2V5KSA6IENvbXBvbmVudFxuICAgIH0pXG4gIClcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFJvdXRlRGF0YSAocm91dGUpIHtcbiAgaWYgKCFyb3V0ZSkge1xuICAgIHJldHVyblxuICB9XG4gIC8vIE1ha2Ugc3VyZSB0aGUgY29tcG9uZW50cyBhcmUgcmVzb2x2ZWQgKGNvZGUtc3BsaXR0aW5nKVxuICBhd2FpdCByZXNvbHZlUm91dGVDb21wb25lbnRzKHJvdXRlKVxuICAvLyBTZW5kIGJhY2sgYSBjb3B5IG9mIHJvdXRlIHdpdGggbWV0YSBiYXNlZCBvbiBDb21wb25lbnQgZGVmaW5pdGlvblxuICByZXR1cm4ge1xuICAgIC4uLnJvdXRlLFxuICAgIG1ldGE6IGdldE1hdGNoZWRDb21wb25lbnRzKHJvdXRlKS5tYXAoKENvbXBvbmVudCwgaW5kZXgpID0+IHtcbiAgICAgIHJldHVybiB7IC4uLkNvbXBvbmVudC5vcHRpb25zLm1ldGEsIC4uLihyb3V0ZS5tYXRjaGVkW2luZGV4XSB8fCB7fSkubWV0YSB9XG4gICAgfSlcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2V0Q29udGV4dCAoYXBwLCBjb250ZXh0KSB7XG4gIC8vIElmIGNvbnRleHQgbm90IGRlZmluZWQsIGNyZWF0ZSBpdFxuICBpZiAoIWFwcC5jb250ZXh0KSB7XG4gICAgYXBwLmNvbnRleHQgPSB7XG4gICAgICBpc1N0YXRpYzogcHJvY2Vzcy5zdGF0aWMsXG4gICAgICBpc0RldjogZmFsc2UsXG4gICAgICBpc0hNUjogZmFsc2UsXG4gICAgICBhcHAsXG4gICAgICBzdG9yZTogYXBwLnN0b3JlLFxuICAgICAgcGF5bG9hZDogY29udGV4dC5wYXlsb2FkLFxuICAgICAgZXJyb3I6IGNvbnRleHQuZXJyb3IsXG4gICAgICBiYXNlOiAnLycsXG4gICAgICBlbnY6IHt9XG4gICAgfVxuICAgIC8vIE9ubHkgc2V0IG9uY2VcbiAgICBpZiAoY29udGV4dC5yZXEpIHtcbiAgICAgIGFwcC5jb250ZXh0LnJlcSA9IGNvbnRleHQucmVxXG4gICAgfVxuICAgIGlmIChjb250ZXh0LnJlcykge1xuICAgICAgYXBwLmNvbnRleHQucmVzID0gY29udGV4dC5yZXNcbiAgICB9XG4gICAgaWYgKGNvbnRleHQuc3NyQ29udGV4dCkge1xuICAgICAgYXBwLmNvbnRleHQuc3NyQ29udGV4dCA9IGNvbnRleHQuc3NyQ29udGV4dFxuICAgIH1cbiAgICBhcHAuY29udGV4dC5yZWRpcmVjdCA9IChzdGF0dXMsIHBhdGgsIHF1ZXJ5KSA9PiB7XG4gICAgICBpZiAoIXN0YXR1cykge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGFwcC5jb250ZXh0Ll9yZWRpcmVjdGVkID0gdHJ1ZVxuICAgICAgLy8gaWYgb25seSAxIG9yIDIgYXJndW1lbnRzOiByZWRpcmVjdCgnLycpIG9yIHJlZGlyZWN0KCcvJywgeyBmb286ICdiYXInIH0pXG4gICAgICBsZXQgcGF0aFR5cGUgPSB0eXBlb2YgcGF0aFxuICAgICAgaWYgKHR5cGVvZiBzdGF0dXMgIT09ICdudW1iZXInICYmIChwYXRoVHlwZSA9PT0gJ3VuZGVmaW5lZCcgfHwgcGF0aFR5cGUgPT09ICdvYmplY3QnKSkge1xuICAgICAgICBxdWVyeSA9IHBhdGggfHwge31cbiAgICAgICAgcGF0aCA9IHN0YXR1c1xuICAgICAgICBwYXRoVHlwZSA9IHR5cGVvZiBwYXRoXG4gICAgICAgIHN0YXR1cyA9IDMwMlxuICAgICAgfVxuICAgICAgaWYgKHBhdGhUeXBlID09PSAnb2JqZWN0Jykge1xuICAgICAgICBwYXRoID0gYXBwLnJvdXRlci5yZXNvbHZlKHBhdGgpLnJvdXRlLmZ1bGxQYXRoXG4gICAgICB9XG4gICAgICAvLyBcIi9hYnNvbHV0ZS9yb3V0ZVwiLCBcIi4vcmVsYXRpdmUvcm91dGVcIiBvciBcIi4uL3JlbGF0aXZlL3JvdXRlXCJcbiAgICAgIGlmICgvKF5bLl17MSwyfVxcLyl8KF5cXC8oPyFcXC8pKS8udGVzdChwYXRoKSkge1xuICAgICAgICBhcHAuY29udGV4dC5uZXh0KHtcbiAgICAgICAgICBwYXRoLFxuICAgICAgICAgIHF1ZXJ5LFxuICAgICAgICAgIHN0YXR1c1xuICAgICAgICB9KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGF0aCA9IGZvcm1hdFVybChwYXRoLCBxdWVyeSlcbiAgICAgICAgaWYgKHByb2Nlc3Muc2VydmVyKSB7XG4gICAgICAgICAgYXBwLmNvbnRleHQubmV4dCh7XG4gICAgICAgICAgICBwYXRoLFxuICAgICAgICAgICAgc3RhdHVzXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgICBpZiAocHJvY2Vzcy5jbGllbnQpIHtcbiAgICAgICAgICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvTG9jYXRpb24vcmVwbGFjZVxuICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZXBsYWNlKHBhdGgpXG5cbiAgICAgICAgICAvLyBUaHJvdyBhIHJlZGlyZWN0IGVycm9yXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdFUlJfUkVESVJFQ1QnKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChwcm9jZXNzLnNlcnZlcikge1xuICAgICAgYXBwLmNvbnRleHQuYmVmb3JlTnV4dFJlbmRlciA9IGZuID0+IGNvbnRleHQuYmVmb3JlUmVuZGVyRm5zLnB1c2goZm4pXG4gICAgfVxuICAgIGlmIChwcm9jZXNzLmNsaWVudCkge1xuICAgICAgYXBwLmNvbnRleHQubnV4dFN0YXRlID0gd2luZG93Ll9fTlVYVF9fXG4gICAgfVxuICB9XG5cbiAgLy8gRHluYW1pYyBrZXlzXG4gIGNvbnN0IFtjdXJyZW50Um91dGVEYXRhLCBmcm9tUm91dGVEYXRhXSA9IGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICBnZXRSb3V0ZURhdGEoY29udGV4dC5yb3V0ZSksXG4gICAgZ2V0Um91dGVEYXRhKGNvbnRleHQuZnJvbSlcbiAgXSlcblxuICBpZiAoY29udGV4dC5yb3V0ZSkge1xuICAgIGFwcC5jb250ZXh0LnJvdXRlID0gY3VycmVudFJvdXRlRGF0YVxuICB9XG5cbiAgaWYgKGNvbnRleHQuZnJvbSkge1xuICAgIGFwcC5jb250ZXh0LmZyb20gPSBmcm9tUm91dGVEYXRhXG4gIH1cblxuICBhcHAuY29udGV4dC5uZXh0ID0gY29udGV4dC5uZXh0XG4gIGFwcC5jb250ZXh0Ll9yZWRpcmVjdGVkID0gZmFsc2VcbiAgYXBwLmNvbnRleHQuX2Vycm9yZWQgPSBmYWxzZVxuICBhcHAuY29udGV4dC5pc0hNUiA9IGZhbHNlXG4gIGFwcC5jb250ZXh0LnBhcmFtcyA9IGFwcC5jb250ZXh0LnJvdXRlLnBhcmFtcyB8fCB7fVxuICBhcHAuY29udGV4dC5xdWVyeSA9IGFwcC5jb250ZXh0LnJvdXRlLnF1ZXJ5IHx8IHt9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtaWRkbGV3YXJlU2VyaWVzIChwcm9taXNlcywgYXBwQ29udGV4dCkge1xuICBpZiAoIXByb21pc2VzLmxlbmd0aCB8fCBhcHBDb250ZXh0Ll9yZWRpcmVjdGVkIHx8IGFwcENvbnRleHQuX2Vycm9yZWQpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKClcbiAgfVxuICByZXR1cm4gcHJvbWlzaWZ5KHByb21pc2VzWzBdLCBhcHBDb250ZXh0KVxuICAgIC50aGVuKCgpID0+IHtcbiAgICAgIHJldHVybiBtaWRkbGV3YXJlU2VyaWVzKHByb21pc2VzLnNsaWNlKDEpLCBhcHBDb250ZXh0KVxuICAgIH0pXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9taXNpZnkgKGZuLCBjb250ZXh0KSB7XG4gIGxldCBwcm9taXNlXG4gIGlmIChmbi5sZW5ndGggPT09IDIpIHtcbiAgICAvLyBmbihjb250ZXh0LCBjYWxsYmFjaylcbiAgICBwcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgIGZuKGNvbnRleHQsIGZ1bmN0aW9uIChlcnIsIGRhdGEpIHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIGNvbnRleHQuZXJyb3IoZXJyKVxuICAgICAgICB9XG4gICAgICAgIGRhdGEgPSBkYXRhIHx8IHt9XG4gICAgICAgIHJlc29sdmUoZGF0YSlcbiAgICAgIH0pXG4gICAgfSlcbiAgfSBlbHNlIHtcbiAgICBwcm9taXNlID0gZm4oY29udGV4dClcbiAgfVxuXG4gIGlmIChwcm9taXNlICYmIHByb21pc2UgaW5zdGFuY2VvZiBQcm9taXNlICYmIHR5cGVvZiBwcm9taXNlLnRoZW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gcHJvbWlzZVxuICB9XG4gIHJldHVybiBQcm9taXNlLnJlc29sdmUocHJvbWlzZSlcbn1cblxuLy8gSW1wb3J0ZWQgZnJvbSB2dWUtcm91dGVyXG5leHBvcnQgZnVuY3Rpb24gZ2V0TG9jYXRpb24gKGJhc2UsIG1vZGUpIHtcbiAgbGV0IHBhdGggPSBkZWNvZGVVUkkod2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKVxuICBpZiAobW9kZSA9PT0gJ2hhc2gnKSB7XG4gICAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5oYXNoLnJlcGxhY2UoL14jXFwvLywgJycpXG4gIH1cbiAgaWYgKGJhc2UgJiYgcGF0aC5pbmRleE9mKGJhc2UpID09PSAwKSB7XG4gICAgcGF0aCA9IHBhdGguc2xpY2UoYmFzZS5sZW5ndGgpXG4gIH1cbiAgcmV0dXJuIChwYXRoIHx8ICcvJykgKyB3aW5kb3cubG9jYXRpb24uc2VhcmNoICsgd2luZG93LmxvY2F0aW9uLmhhc2hcbn1cblxuLy8gSW1wb3J0ZWQgZnJvbSBwYXRoLXRvLXJlZ2V4cFxuXG4vKipcbiAqIENvbXBpbGUgYSBzdHJpbmcgdG8gYSB0ZW1wbGF0ZSBmdW5jdGlvbiBmb3IgdGhlIHBhdGguXG4gKlxuICogQHBhcmFtICB7c3RyaW5nfSAgICAgICAgICAgICBzdHJcbiAqIEBwYXJhbSAge09iamVjdD19ICAgICAgICAgICAgb3B0aW9uc1xuICogQHJldHVybiB7IWZ1bmN0aW9uKE9iamVjdD0sIE9iamVjdD0pfVxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tcGlsZSAoc3RyLCBvcHRpb25zKSB7XG4gIHJldHVybiB0b2tlbnNUb0Z1bmN0aW9uKHBhcnNlKHN0ciwgb3B0aW9ucyksIG9wdGlvbnMpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRRdWVyeURpZmYgKHRvUXVlcnksIGZyb21RdWVyeSkge1xuICBjb25zdCBkaWZmID0ge31cbiAgY29uc3QgcXVlcmllcyA9IHsgLi4udG9RdWVyeSwgLi4uZnJvbVF1ZXJ5IH1cbiAgZm9yIChjb25zdCBrIGluIHF1ZXJpZXMpIHtcbiAgICBpZiAoU3RyaW5nKHRvUXVlcnlba10pICE9PSBTdHJpbmcoZnJvbVF1ZXJ5W2tdKSkge1xuICAgICAgZGlmZltrXSA9IHRydWVcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGRpZmZcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZUVycm9yIChlcnIpIHtcbiAgbGV0IG1lc3NhZ2VcbiAgaWYgKCEoZXJyLm1lc3NhZ2UgfHwgdHlwZW9mIGVyciA9PT0gJ3N0cmluZycpKSB7XG4gICAgdHJ5IHtcbiAgICAgIG1lc3NhZ2UgPSBKU09OLnN0cmluZ2lmeShlcnIsIG51bGwsIDIpXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgbWVzc2FnZSA9IGBbJHtlcnIuY29uc3RydWN0b3IubmFtZX1dYFxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBtZXNzYWdlID0gZXJyLm1lc3NhZ2UgfHwgZXJyXG4gIH1cbiAgcmV0dXJuIHtcbiAgICAuLi5lcnIsXG4gICAgbWVzc2FnZSxcbiAgICBzdGF0dXNDb2RlOiAoZXJyLnN0YXR1c0NvZGUgfHwgZXJyLnN0YXR1cyB8fCAoZXJyLnJlc3BvbnNlICYmIGVyci5yZXNwb25zZS5zdGF0dXMpIHx8IDUwMClcbiAgfVxufVxuXG4vKipcbiAqIFRoZSBtYWluIHBhdGggbWF0Y2hpbmcgcmVnZXhwIHV0aWxpdHkuXG4gKlxuICogQHR5cGUge1JlZ0V4cH1cbiAqL1xuY29uc3QgUEFUSF9SRUdFWFAgPSBuZXcgUmVnRXhwKFtcbiAgLy8gTWF0Y2ggZXNjYXBlZCBjaGFyYWN0ZXJzIHRoYXQgd291bGQgb3RoZXJ3aXNlIGFwcGVhciBpbiBmdXR1cmUgbWF0Y2hlcy5cbiAgLy8gVGhpcyBhbGxvd3MgdGhlIHVzZXIgdG8gZXNjYXBlIHNwZWNpYWwgY2hhcmFjdGVycyB0aGF0IHdvbid0IHRyYW5zZm9ybS5cbiAgJyhcXFxcXFxcXC4pJyxcbiAgLy8gTWF0Y2ggRXhwcmVzcy1zdHlsZSBwYXJhbWV0ZXJzIGFuZCB1bi1uYW1lZCBwYXJhbWV0ZXJzIHdpdGggYSBwcmVmaXhcbiAgLy8gYW5kIG9wdGlvbmFsIHN1ZmZpeGVzLiBNYXRjaGVzIGFwcGVhciBhczpcbiAgLy9cbiAgLy8gXCIvOnRlc3QoXFxcXGQrKT9cIiA9PiBbXCIvXCIsIFwidGVzdFwiLCBcIlxcZCtcIiwgdW5kZWZpbmVkLCBcIj9cIiwgdW5kZWZpbmVkXVxuICAvLyBcIi9yb3V0ZShcXFxcZCspXCIgID0+IFt1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBcIlxcZCtcIiwgdW5kZWZpbmVkLCB1bmRlZmluZWRdXG4gIC8vIFwiLypcIiAgICAgICAgICAgID0+IFtcIi9cIiwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBcIipcIl1cbiAgJyhbXFxcXC8uXSk/KD86KD86XFxcXDooXFxcXHcrKSg/OlxcXFwoKCg/OlxcXFxcXFxcLnxbXlxcXFxcXFxcKCldKSspXFxcXCkpP3xcXFxcKCgoPzpcXFxcXFxcXC58W15cXFxcXFxcXCgpXSkrKVxcXFwpKShbKyo/XSk/fChcXFxcKikpJ1xuXS5qb2luKCd8JyksICdnJylcblxuLyoqXG4gKiBQYXJzZSBhIHN0cmluZyBmb3IgdGhlIHJhdyB0b2tlbnMuXG4gKlxuICogQHBhcmFtICB7c3RyaW5nfSAgc3RyXG4gKiBAcGFyYW0gIHtPYmplY3Q9fSBvcHRpb25zXG4gKiBAcmV0dXJuIHshQXJyYXl9XG4gKi9cbmZ1bmN0aW9uIHBhcnNlIChzdHIsIG9wdGlvbnMpIHtcbiAgY29uc3QgdG9rZW5zID0gW11cbiAgbGV0IGtleSA9IDBcbiAgbGV0IGluZGV4ID0gMFxuICBsZXQgcGF0aCA9ICcnXG4gIGNvbnN0IGRlZmF1bHREZWxpbWl0ZXIgPSAob3B0aW9ucyAmJiBvcHRpb25zLmRlbGltaXRlcikgfHwgJy8nXG4gIGxldCByZXNcblxuICB3aGlsZSAoKHJlcyA9IFBBVEhfUkVHRVhQLmV4ZWMoc3RyKSkgIT0gbnVsbCkge1xuICAgIGNvbnN0IG0gPSByZXNbMF1cbiAgICBjb25zdCBlc2NhcGVkID0gcmVzWzFdXG4gICAgY29uc3Qgb2Zmc2V0ID0gcmVzLmluZGV4XG4gICAgcGF0aCArPSBzdHIuc2xpY2UoaW5kZXgsIG9mZnNldClcbiAgICBpbmRleCA9IG9mZnNldCArIG0ubGVuZ3RoXG5cbiAgICAvLyBJZ25vcmUgYWxyZWFkeSBlc2NhcGVkIHNlcXVlbmNlcy5cbiAgICBpZiAoZXNjYXBlZCkge1xuICAgICAgcGF0aCArPSBlc2NhcGVkWzFdXG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIGNvbnN0IG5leHQgPSBzdHJbaW5kZXhdXG4gICAgY29uc3QgcHJlZml4ID0gcmVzWzJdXG4gICAgY29uc3QgbmFtZSA9IHJlc1szXVxuICAgIGNvbnN0IGNhcHR1cmUgPSByZXNbNF1cbiAgICBjb25zdCBncm91cCA9IHJlc1s1XVxuICAgIGNvbnN0IG1vZGlmaWVyID0gcmVzWzZdXG4gICAgY29uc3QgYXN0ZXJpc2sgPSByZXNbN11cblxuICAgIC8vIFB1c2ggdGhlIGN1cnJlbnQgcGF0aCBvbnRvIHRoZSB0b2tlbnMuXG4gICAgaWYgKHBhdGgpIHtcbiAgICAgIHRva2Vucy5wdXNoKHBhdGgpXG4gICAgICBwYXRoID0gJydcbiAgICB9XG5cbiAgICBjb25zdCBwYXJ0aWFsID0gcHJlZml4ICE9IG51bGwgJiYgbmV4dCAhPSBudWxsICYmIG5leHQgIT09IHByZWZpeFxuICAgIGNvbnN0IHJlcGVhdCA9IG1vZGlmaWVyID09PSAnKycgfHwgbW9kaWZpZXIgPT09ICcqJ1xuICAgIGNvbnN0IG9wdGlvbmFsID0gbW9kaWZpZXIgPT09ICc/JyB8fCBtb2RpZmllciA9PT0gJyonXG4gICAgY29uc3QgZGVsaW1pdGVyID0gcmVzWzJdIHx8IGRlZmF1bHREZWxpbWl0ZXJcbiAgICBjb25zdCBwYXR0ZXJuID0gY2FwdHVyZSB8fCBncm91cFxuXG4gICAgdG9rZW5zLnB1c2goe1xuICAgICAgbmFtZTogbmFtZSB8fCBrZXkrKyxcbiAgICAgIHByZWZpeDogcHJlZml4IHx8ICcnLFxuICAgICAgZGVsaW1pdGVyLFxuICAgICAgb3B0aW9uYWwsXG4gICAgICByZXBlYXQsXG4gICAgICBwYXJ0aWFsLFxuICAgICAgYXN0ZXJpc2s6IEJvb2xlYW4oYXN0ZXJpc2spLFxuICAgICAgcGF0dGVybjogcGF0dGVybiA/IGVzY2FwZUdyb3VwKHBhdHRlcm4pIDogKGFzdGVyaXNrID8gJy4qJyA6ICdbXicgKyBlc2NhcGVTdHJpbmcoZGVsaW1pdGVyKSArICddKz8nKVxuICAgIH0pXG4gIH1cblxuICAvLyBNYXRjaCBhbnkgY2hhcmFjdGVycyBzdGlsbCByZW1haW5pbmcuXG4gIGlmIChpbmRleCA8IHN0ci5sZW5ndGgpIHtcbiAgICBwYXRoICs9IHN0ci5zdWJzdHIoaW5kZXgpXG4gIH1cblxuICAvLyBJZiB0aGUgcGF0aCBleGlzdHMsIHB1c2ggaXQgb250byB0aGUgZW5kLlxuICBpZiAocGF0aCkge1xuICAgIHRva2Vucy5wdXNoKHBhdGgpXG4gIH1cblxuICByZXR1cm4gdG9rZW5zXG59XG5cbi8qKlxuICogUHJldHRpZXIgZW5jb2Rpbmcgb2YgVVJJIHBhdGggc2VnbWVudHMuXG4gKlxuICogQHBhcmFtICB7c3RyaW5nfVxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBlbmNvZGVVUklDb21wb25lbnRQcmV0dHkgKHN0ciwgc2xhc2hBbGxvd2VkKSB7XG4gIGNvbnN0IHJlID0gc2xhc2hBbGxvd2VkID8gL1s/I10vZyA6IC9bLz8jXS9nXG4gIHJldHVybiBlbmNvZGVVUkkoc3RyKS5yZXBsYWNlKHJlLCAoYykgPT4ge1xuICAgIHJldHVybiAnJScgKyBjLmNoYXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKClcbiAgfSlcbn1cblxuLyoqXG4gKiBFbmNvZGUgdGhlIGFzdGVyaXNrIHBhcmFtZXRlci4gU2ltaWxhciB0byBgcHJldHR5YCwgYnV0IGFsbG93cyBzbGFzaGVzLlxuICpcbiAqIEBwYXJhbSAge3N0cmluZ31cbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gZW5jb2RlQXN0ZXJpc2sgKHN0cikge1xuICByZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50UHJldHR5KHN0ciwgdHJ1ZSlcbn1cblxuLyoqXG4gKiBFc2NhcGUgYSByZWd1bGFyIGV4cHJlc3Npb24gc3RyaW5nLlxuICpcbiAqIEBwYXJhbSAge3N0cmluZ30gc3RyXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIGVzY2FwZVN0cmluZyAoc3RyKSB7XG4gIHJldHVybiBzdHIucmVwbGFjZSgvKFsuKyo/PV4hOiR7fSgpW1xcXXwvXFxcXF0pL2csICdcXFxcJDEnKVxufVxuXG4vKipcbiAqIEVzY2FwZSB0aGUgY2FwdHVyaW5nIGdyb3VwIGJ5IGVzY2FwaW5nIHNwZWNpYWwgY2hhcmFjdGVycyBhbmQgbWVhbmluZy5cbiAqXG4gKiBAcGFyYW0gIHtzdHJpbmd9IGdyb3VwXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIGVzY2FwZUdyb3VwIChncm91cCkge1xuICByZXR1cm4gZ3JvdXAucmVwbGFjZSgvKFs9ITokLygpXSkvZywgJ1xcXFwkMScpXG59XG5cbi8qKlxuICogRXhwb3NlIGEgbWV0aG9kIGZvciB0cmFuc2Zvcm1pbmcgdG9rZW5zIGludG8gdGhlIHBhdGggZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIHRva2Vuc1RvRnVuY3Rpb24gKHRva2Vucywgb3B0aW9ucykge1xuICAvLyBDb21waWxlIGFsbCB0aGUgdG9rZW5zIGludG8gcmVnZXhwcy5cbiAgY29uc3QgbWF0Y2hlcyA9IG5ldyBBcnJheSh0b2tlbnMubGVuZ3RoKVxuXG4gIC8vIENvbXBpbGUgYWxsIHRoZSBwYXR0ZXJucyBiZWZvcmUgY29tcGlsYXRpb24uXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdG9rZW5zLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHR5cGVvZiB0b2tlbnNbaV0gPT09ICdvYmplY3QnKSB7XG4gICAgICBtYXRjaGVzW2ldID0gbmV3IFJlZ0V4cCgnXig/OicgKyB0b2tlbnNbaV0ucGF0dGVybiArICcpJCcsIGZsYWdzKG9wdGlvbnMpKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiAob2JqLCBvcHRzKSB7XG4gICAgbGV0IHBhdGggPSAnJ1xuICAgIGNvbnN0IGRhdGEgPSBvYmogfHwge31cbiAgICBjb25zdCBvcHRpb25zID0gb3B0cyB8fCB7fVxuICAgIGNvbnN0IGVuY29kZSA9IG9wdGlvbnMucHJldHR5ID8gZW5jb2RlVVJJQ29tcG9uZW50UHJldHR5IDogZW5jb2RlVVJJQ29tcG9uZW50XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRva2Vucy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgdG9rZW4gPSB0b2tlbnNbaV1cblxuICAgICAgaWYgKHR5cGVvZiB0b2tlbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcGF0aCArPSB0b2tlblxuXG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHZhbHVlID0gZGF0YVt0b2tlbi5uYW1lIHx8ICdwYXRoTWF0Y2gnXVxuICAgICAgbGV0IHNlZ21lbnRcblxuICAgICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgICAgaWYgKHRva2VuLm9wdGlvbmFsKSB7XG4gICAgICAgICAgLy8gUHJlcGVuZCBwYXJ0aWFsIHNlZ21lbnQgcHJlZml4ZXMuXG4gICAgICAgICAgaWYgKHRva2VuLnBhcnRpYWwpIHtcbiAgICAgICAgICAgIHBhdGggKz0gdG9rZW4ucHJlZml4XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBcIicgKyB0b2tlbi5uYW1lICsgJ1wiIHRvIGJlIGRlZmluZWQnKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICBpZiAoIXRva2VuLnJlcGVhdCkge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIFwiJyArIHRva2VuLm5hbWUgKyAnXCIgdG8gbm90IHJlcGVhdCwgYnV0IHJlY2VpdmVkIGAnICsgSlNPTi5zdHJpbmdpZnkodmFsdWUpICsgJ2AnKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIGlmICh0b2tlbi5vcHRpb25hbCkge1xuICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgXCInICsgdG9rZW4ubmFtZSArICdcIiB0byBub3QgYmUgZW1wdHknKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdmFsdWUubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICBzZWdtZW50ID0gZW5jb2RlKHZhbHVlW2pdKVxuXG4gICAgICAgICAgaWYgKCFtYXRjaGVzW2ldLnRlc3Qoc2VnbWVudCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIGFsbCBcIicgKyB0b2tlbi5uYW1lICsgJ1wiIHRvIG1hdGNoIFwiJyArIHRva2VuLnBhdHRlcm4gKyAnXCIsIGJ1dCByZWNlaXZlZCBgJyArIEpTT04uc3RyaW5naWZ5KHNlZ21lbnQpICsgJ2AnKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHBhdGggKz0gKGogPT09IDAgPyB0b2tlbi5wcmVmaXggOiB0b2tlbi5kZWxpbWl0ZXIpICsgc2VnbWVudFxuICAgICAgICB9XG5cbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgc2VnbWVudCA9IHRva2VuLmFzdGVyaXNrID8gZW5jb2RlQXN0ZXJpc2sodmFsdWUpIDogZW5jb2RlKHZhbHVlKVxuXG4gICAgICBpZiAoIW1hdGNoZXNbaV0udGVzdChzZWdtZW50KSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBcIicgKyB0b2tlbi5uYW1lICsgJ1wiIHRvIG1hdGNoIFwiJyArIHRva2VuLnBhdHRlcm4gKyAnXCIsIGJ1dCByZWNlaXZlZCBcIicgKyBzZWdtZW50ICsgJ1wiJylcbiAgICAgIH1cblxuICAgICAgcGF0aCArPSB0b2tlbi5wcmVmaXggKyBzZWdtZW50XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhdGhcbiAgfVxufVxuXG4vKipcbiAqIEdldCB0aGUgZmxhZ3MgZm9yIGEgcmVnZXhwIGZyb20gdGhlIG9wdGlvbnMuXG4gKlxuICogQHBhcmFtICB7T2JqZWN0fSBvcHRpb25zXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIGZsYWdzIChvcHRpb25zKSB7XG4gIHJldHVybiBvcHRpb25zICYmIG9wdGlvbnMuc2Vuc2l0aXZlID8gJycgOiAnaSdcbn1cblxuLyoqXG4gKiBGb3JtYXQgZ2l2ZW4gdXJsLCBhcHBlbmQgcXVlcnkgdG8gdXJsIHF1ZXJ5IHN0cmluZ1xuICpcbiAqIEBwYXJhbSAge3N0cmluZ30gdXJsXG4gKiBAcGFyYW0gIHtzdHJpbmd9IHF1ZXJ5XG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIGZvcm1hdFVybCAodXJsLCBxdWVyeSkge1xuICBsZXQgcHJvdG9jb2xcbiAgY29uc3QgaW5kZXggPSB1cmwuaW5kZXhPZignOi8vJylcbiAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgIHByb3RvY29sID0gdXJsLnN1YnN0cmluZygwLCBpbmRleClcbiAgICB1cmwgPSB1cmwuc3Vic3RyaW5nKGluZGV4ICsgMylcbiAgfSBlbHNlIGlmICh1cmwuc3RhcnRzV2l0aCgnLy8nKSkge1xuICAgIHVybCA9IHVybC5zdWJzdHJpbmcoMilcbiAgfVxuXG4gIGxldCBwYXJ0cyA9IHVybC5zcGxpdCgnLycpXG4gIGxldCByZXN1bHQgPSAocHJvdG9jb2wgPyBwcm90b2NvbCArICc6Ly8nIDogJy8vJykgKyBwYXJ0cy5zaGlmdCgpXG5cbiAgbGV0IHBhdGggPSBwYXJ0cy5maWx0ZXIoQm9vbGVhbikuam9pbignLycpXG4gIGxldCBoYXNoXG4gIHBhcnRzID0gcGF0aC5zcGxpdCgnIycpXG4gIGlmIChwYXJ0cy5sZW5ndGggPT09IDIpIHtcbiAgICBbcGF0aCwgaGFzaF0gPSBwYXJ0c1xuICB9XG5cbiAgcmVzdWx0ICs9IHBhdGggPyAnLycgKyBwYXRoIDogJydcblxuICBpZiAocXVlcnkgJiYgSlNPTi5zdHJpbmdpZnkocXVlcnkpICE9PSAne30nKSB7XG4gICAgcmVzdWx0ICs9ICh1cmwuc3BsaXQoJz8nKS5sZW5ndGggPT09IDIgPyAnJicgOiAnPycpICsgZm9ybWF0UXVlcnkocXVlcnkpXG4gIH1cbiAgcmVzdWx0ICs9IGhhc2ggPyAnIycgKyBoYXNoIDogJydcblxuICByZXR1cm4gcmVzdWx0XG59XG5cbi8qKlxuICogVHJhbnNmb3JtIGRhdGEgb2JqZWN0IHRvIHF1ZXJ5IHN0cmluZ1xuICpcbiAqIEBwYXJhbSAge29iamVjdH0gcXVlcnlcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gZm9ybWF0UXVlcnkgKHF1ZXJ5KSB7XG4gIHJldHVybiBPYmplY3Qua2V5cyhxdWVyeSkuc29ydCgpLm1hcCgoa2V5KSA9PiB7XG4gICAgY29uc3QgdmFsID0gcXVlcnlba2V5XVxuICAgIGlmICh2YWwgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuICcnXG4gICAgfVxuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbCkpIHtcbiAgICAgIHJldHVybiB2YWwuc2xpY2UoKS5tYXAodmFsMiA9PiBba2V5LCAnPScsIHZhbDJdLmpvaW4oJycpKS5qb2luKCcmJylcbiAgICB9XG4gICAgcmV0dXJuIGtleSArICc9JyArIHZhbFxuICB9KS5maWx0ZXIoQm9vbGVhbikuam9pbignJicpXG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///1\n")},145:function(Q,B,n){Q.exports=n(146)},146:function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* WEBPACK VAR INJECTION */(function(global) {/* harmony import */ var core_js_modules_es6_string_iterator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(62);\n/* harmony import */ var core_js_modules_es6_string_iterator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_string_iterator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es7_symbol_async_iterator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(48);\n/* harmony import */ var core_js_modules_es7_symbol_async_iterator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es7_symbol_async_iterator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es6_symbol__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(10);\n/* harmony import */ var core_js_modules_es6_symbol__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_symbol__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _babel_runtime_helpers_esm_typeof__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(19);\n/* harmony import */ var regenerator_runtime_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(63);\n/* harmony import */ var regenerator_runtime_runtime__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(regenerator_runtime_runtime__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_es6_regexp_match__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(96);\n/* harmony import */ var core_js_modules_es6_regexp_match__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_regexp_match__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _babel_runtime_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(12);\n/* harmony import */ var core_js_modules_es7_array_includes__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(46);\n/* harmony import */ var core_js_modules_es7_array_includes__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es7_array_includes__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_es6_string_includes__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(59);\n/* harmony import */ var core_js_modules_es6_string_includes__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_string_includes__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(7);\n/* harmony import */ var core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_iterable__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es6_object_to_string__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(6);\n/* harmony import */ var core_js_modules_es6_object_to_string__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_to_string__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(23);\n/* harmony import */ var core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_keys__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_es6_function_name__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(29);\n/* harmony import */ var core_js_modules_es6_function_name__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_function_name__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var core_js_modules_es6_array_iterator__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(114);\n/* harmony import */ var core_js_modules_es6_array_iterator__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_array_iterator__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var core_js_modules_es6_promise__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(155);\n/* harmony import */ var core_js_modules_es6_promise__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_promise__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var core_js_modules_es6_object_assign__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(160);\n/* harmony import */ var core_js_modules_es6_object_assign__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_object_assign__WEBPACK_IMPORTED_MODULE_15__);\n/* harmony import */ var core_js_modules_es7_promise_finally__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(162);\n/* harmony import */ var core_js_modules_es7_promise_finally__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es7_promise_finally__WEBPACK_IMPORTED_MODULE_16__);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(0);\n/* harmony import */ var unfetch__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(131);\n/* harmony import */ var _middleware_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(90);\n/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(1);\n/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(28);\n/* harmony import */ var _components_nuxt_link_client_js__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(78);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n // should be included after ./index.js\n// Component: \n\nvue__WEBPACK_IMPORTED_MODULE_17__[/* default */ "a"].component(_components_nuxt_link_client_js__WEBPACK_IMPORTED_MODULE_22__[/* default */ "a"].name, _components_nuxt_link_client_js__WEBPACK_IMPORTED_MODULE_22__[/* default */ "a"]);\nvue__WEBPACK_IMPORTED_MODULE_17__[/* default */ "a"].component(\'NLink\', _components_nuxt_link_client_js__WEBPACK_IMPORTED_MODULE_22__[/* default */ "a"]);\n\nif (!global.fetch) {\n global.fetch = unfetch__WEBPACK_IMPORTED_MODULE_18__[/* default */ "a"];\n} // Global shared references\n\n\nvar _lastPaths = [];\nvar app;\nvar router;\nvar store; // Try to rehydrate SSR data from window\n\nvar NUXT = window.__NUXT__ || {};\nObject.assign(vue__WEBPACK_IMPORTED_MODULE_17__[/* default */ "a"].config, {\n "silent": true,\n "performance": false\n});\nvar errorHandler = vue__WEBPACK_IMPORTED_MODULE_17__[/* default */ "a"].config.errorHandler || console.error; // Create and mount App\n\nObject(_index_js__WEBPACK_IMPORTED_MODULE_21__[/* createApp */ "b"])().then(mountApp).catch(errorHandler);\n\nfunction componentOption(component, key) {\n if (!component || !component.options || !component.options[key]) {\n return {};\n }\n\n var option = component.options[key];\n\n if (typeof option === \'function\') {\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n\n return option.apply(void 0, args);\n }\n\n return option;\n}\n\nfunction mapTransitions(Components, to, from) {\n var componentTransitions = function componentTransitions(component) {\n var transition = componentOption(component, \'transition\', to, from) || {};\n return typeof transition === \'string\' ? {\n name: transition\n } : transition;\n };\n\n return Components.map(function (Component) {\n // Clone original object to prevent overrides\n var transitions = Object.assign({}, componentTransitions(Component)); // Combine transitions & prefer `leave` transitions of \'from\' route\n\n if (from && from.matched.length && from.matched[0].components.default) {\n var fromTransitions = componentTransitions(from.matched[0].components.default);\n Object.keys(fromTransitions).filter(function (key) {\n return fromTransitions[key] && key.toLowerCase().includes(\'leave\');\n }).forEach(function (key) {\n transitions[key] = fromTransitions[key];\n });\n }\n\n return transitions;\n });\n}\n\nfunction loadAsyncComponents(_x, _x2, _x3) {\n return _loadAsyncComponents.apply(this, arguments);\n}\n\nfunction _loadAsyncComponents() {\n _loadAsyncComponents = Object(_babel_runtime_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_6__[/* default */ "a"])(\n /*#__PURE__*/\n regeneratorRuntime.mark(function _callee2(to, from, next) {\n var _this3 = this;\n\n var Components, startLoader, err, statusCode, message;\n return regeneratorRuntime.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n // Check if route path changed (this._pathChanged), only if the page is not an error (for validate())\n this._pathChanged = Boolean(app.nuxt.err) || from.path !== to.path;\n this._queryChanged = JSON.stringify(to.query) !== JSON.stringify(from.query);\n this._diffQuery = this._queryChanged ? Object(_utils_js__WEBPACK_IMPORTED_MODULE_20__[/* getQueryDiff */ "g"])(to.query, from.query) : [];\n\n if (this._pathChanged && this.$loading.start && !this.$loading.manual) {\n this.$loading.start();\n }\n\n _context2.prev = 4;\n\n if (!(!this._pathChanged && this._queryChanged)) {\n _context2.next = 11;\n break;\n }\n\n _context2.next = 8;\n return Object(_utils_js__WEBPACK_IMPORTED_MODULE_20__[/* resolveRouteComponents */ "n"])(to, function (Component, instance) {\n return {\n Component: Component,\n instance: instance\n };\n });\n\n case 8:\n Components = _context2.sent;\n // Add a marker on each component that it needs to refresh or not\n startLoader = Components.some(function (_ref2) {\n var Component = _ref2.Component,\n instance = _ref2.instance;\n var watchQuery = Component.options.watchQuery;\n\n if (watchQuery === true) {\n return true;\n }\n\n if (Array.isArray(watchQuery)) {\n return watchQuery.some(function (key) {\n return _this3._diffQuery[key];\n });\n }\n\n if (typeof watchQuery === \'function\') {\n return watchQuery.apply(instance, [to.query, from.query]);\n }\n\n return false;\n });\n\n if (startLoader && this.$loading.start && !this.$loading.manual) {\n this.$loading.start();\n }\n\n case 11:\n // Call next()\n next();\n _context2.next = 25;\n break;\n\n case 14:\n _context2.prev = 14;\n _context2.t0 = _context2["catch"](4);\n err = _context2.t0 || {};\n statusCode = err.statusCode || err.status || err.response && err.response.status || 500;\n message = err.message || \'\'; // Handle chunk loading errors\n // This may be due to a new deployment or a network problem\n\n if (!/^Loading( CSS)? chunk (\\d)+ failed\\./.test(message)) {\n _context2.next = 22;\n break;\n }\n\n window.location.reload(true\n /* skip cache */\n );\n return _context2.abrupt("return");\n\n case 22:\n this.error({\n statusCode: statusCode,\n message: message\n });\n this.$nuxt.$emit(\'routeChanged\', to, from, err);\n next();\n\n case 25:\n case "end":\n return _context2.stop();\n }\n }\n }, _callee2, this, [[4, 14]]);\n }));\n return _loadAsyncComponents.apply(this, arguments);\n}\n\nfunction applySSRData(Component, ssrData) {\n if (NUXT.serverRendered && ssrData) {\n Object(_utils_js__WEBPACK_IMPORTED_MODULE_20__[/* applyAsyncData */ "a"])(Component, ssrData);\n }\n\n Component._Ctor = Component;\n return Component;\n} // Get matched components\n\n\nfunction resolveComponents(router) {\n var path = Object(_utils_js__WEBPACK_IMPORTED_MODULE_20__[/* getLocation */ "d"])(router.options.base, router.options.mode);\n return Object(_utils_js__WEBPACK_IMPORTED_MODULE_20__[/* flatMapComponents */ "c"])(router.match(path),\n /*#__PURE__*/\n function () {\n var _ref = Object(_babel_runtime_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_6__[/* default */ "a"])(\n /*#__PURE__*/\n regeneratorRuntime.mark(function _callee(Component, _, match, key, index) {\n var _Component;\n\n return regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (!(typeof Component === \'function\' && !Component.options)) {\n _context.next = 4;\n break;\n }\n\n _context.next = 3;\n return Component();\n\n case 3:\n Component = _context.sent;\n\n case 4:\n // Sanitize it and save it\n _Component = applySSRData(Object(_utils_js__WEBPACK_IMPORTED_MODULE_20__[/* sanitizeComponent */ "o"])(Component), NUXT.data ? NUXT.data[index] : null);\n match.components[key] = _Component;\n return _context.abrupt("return", _Component);\n\n case 7:\n case "end":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n\n return function (_x4, _x5, _x6, _x7, _x8) {\n return _ref.apply(this, arguments);\n };\n }());\n}\n\nfunction callMiddleware(Components, context, layout) {\n var _this = this;\n\n var midd = [];\n var unknownMiddleware = false; // If layout is undefined, only call global middleware\n\n if (typeof layout !== \'undefined\') {\n midd = []; // Exclude global middleware if layout defined (already called before)\n\n layout = Object(_utils_js__WEBPACK_IMPORTED_MODULE_20__[/* sanitizeComponent */ "o"])(layout);\n\n if (layout.options.middleware) {\n midd = midd.concat(layout.options.middleware);\n }\n\n Components.forEach(function (Component) {\n if (Component.options.middleware) {\n midd = midd.concat(Component.options.middleware);\n }\n });\n }\n\n midd = midd.map(function (name) {\n if (typeof name === \'function\') {\n return name;\n }\n\n if (typeof _middleware_js__WEBPACK_IMPORTED_MODULE_19__[/* default */ "a"][name] !== \'function\') {\n unknownMiddleware = true;\n\n _this.error({\n statusCode: 500,\n message: \'Unknown middleware \' + name\n });\n }\n\n return _middleware_js__WEBPACK_IMPORTED_MODULE_19__[/* default */ "a"][name];\n });\n\n if (unknownMiddleware) {\n return;\n }\n\n return Object(_utils_js__WEBPACK_IMPORTED_MODULE_20__[/* middlewareSeries */ "k"])(midd, context);\n}\n\nfunction render(_x9, _x10, _x11) {\n return _render.apply(this, arguments);\n} // Fix components format in matched, it\'s due to code-splitting of vue-router\n\n\nfunction _render() {\n _render = Object(_babel_runtime_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_6__[/* default */ "a"])(\n /*#__PURE__*/\n regeneratorRuntime.mark(function _callee3(to, from, next) {\n var _this4 = this;\n\n var fromMatches, nextCalled, _next, matches, Components, errorLayout, layout, _layout, isValid, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, Component, instances, error, _layout2;\n\n return regeneratorRuntime.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n if (!(this._pathChanged === false && this._queryChanged === false)) {\n _context3.next = 2;\n break;\n }\n\n return _context3.abrupt("return", next());\n\n case 2:\n // Handle first render on SPA mode\n if (to === from) {\n _lastPaths = [];\n } else {\n fromMatches = [];\n _lastPaths = Object(_utils_js__WEBPACK_IMPORTED_MODULE_20__[/* getMatchedComponents */ "e"])(from, fromMatches).map(function (Component, i) {\n return Object(_utils_js__WEBPACK_IMPORTED_MODULE_20__[/* compile */ "b"])(from.matched[fromMatches[i]].path)(from.params);\n });\n } // nextCalled is true when redirected\n\n\n nextCalled = false;\n\n _next = function _next(path) {\n if (from.path === path.path && _this4.$loading.finish) {\n _this4.$loading.finish();\n }\n\n if (from.path !== path.path && _this4.$loading.pause) {\n _this4.$loading.pause();\n }\n\n if (nextCalled) {\n return;\n }\n\n nextCalled = true;\n next(path);\n }; // Update context\n\n\n _context3.next = 7;\n return Object(_utils_js__WEBPACK_IMPORTED_MODULE_20__[/* setContext */ "p"])(app, {\n route: to,\n from: from,\n next: _next.bind(this)\n });\n\n case 7:\n this._dateLastError = app.nuxt.dateErr;\n this._hadError = Boolean(app.nuxt.err); // Get route\'s matched components\n\n matches = [];\n Components = Object(_utils_js__WEBPACK_IMPORTED_MODULE_20__[/* getMatchedComponents */ "e"])(to, matches); // If no Components matched, generate 404\n\n if (Components.length) {\n _context3.next = 26;\n break;\n }\n\n _context3.next = 14;\n return callMiddleware.call(this, Components, app.context);\n\n case 14:\n if (!nextCalled) {\n _context3.next = 16;\n break;\n }\n\n return _context3.abrupt("return");\n\n case 16:\n // Load layout for error page\n errorLayout = (_index_js__WEBPACK_IMPORTED_MODULE_21__[/* NuxtError */ "a"].options || _index_js__WEBPACK_IMPORTED_MODULE_21__[/* NuxtError */ "a"]).layout;\n _context3.next = 19;\n return this.loadLayout(typeof errorLayout === \'function\' ? errorLayout.call(_index_js__WEBPACK_IMPORTED_MODULE_21__[/* NuxtError */ "a"], app.context) : errorLayout);\n\n case 19:\n layout = _context3.sent;\n _context3.next = 22;\n return callMiddleware.call(this, Components, app.context, layout);\n\n case 22:\n if (!nextCalled) {\n _context3.next = 24;\n break;\n }\n\n return _context3.abrupt("return");\n\n case 24:\n // Show error page\n app.context.error({\n statusCode: 404,\n message: \'This page could not be found\'\n });\n return _context3.abrupt("return", next());\n\n case 26:\n // Update ._data and other properties if hot reloaded\n Components.forEach(function (Component) {\n if (Component._Ctor && Component._Ctor.options) {\n Component.options.asyncData = Component._Ctor.options.asyncData;\n Component.options.fetch = Component._Ctor.options.fetch;\n }\n }); // Apply transitions\n\n this.setTransitions(mapTransitions(Components, to, from));\n _context3.prev = 28;\n _context3.next = 31;\n return callMiddleware.call(this, Components, app.context);\n\n case 31:\n if (!nextCalled) {\n _context3.next = 33;\n break;\n }\n\n return _context3.abrupt("return");\n\n case 33:\n if (!app.context._errored) {\n _context3.next = 35;\n break;\n }\n\n return _context3.abrupt("return", next());\n\n case 35:\n // Set layout\n _layout = Components[0].options.layout;\n\n if (typeof _layout === \'function\') {\n _layout = _layout(app.context);\n }\n\n _context3.next = 39;\n return this.loadLayout(_layout);\n\n case 39:\n _layout = _context3.sent;\n _context3.next = 42;\n return callMiddleware.call(this, Components, app.context, _layout);\n\n case 42:\n if (!nextCalled) {\n _context3.next = 44;\n break;\n }\n\n return _context3.abrupt("return");\n\n case 44:\n if (!app.context._errored) {\n _context3.next = 46;\n break;\n }\n\n return _context3.abrupt("return", next());\n\n case 46:\n // Call .validate()\n isValid = true;\n _context3.prev = 47;\n _iteratorNormalCompletion = true;\n _didIteratorError = false;\n _iteratorError = undefined;\n _context3.prev = 51;\n _iterator = Components[Symbol.iterator]();\n\n case 53:\n if (_iteratorNormalCompletion = (_step = _iterator.next()).done) {\n _context3.next = 65;\n break;\n }\n\n Component = _step.value;\n\n if (!(typeof Component.options.validate !== \'function\')) {\n _context3.next = 57;\n break;\n }\n\n return _context3.abrupt("continue", 62);\n\n case 57:\n _context3.next = 59;\n return Component.options.validate(app.context);\n\n case 59:\n isValid = _context3.sent;\n\n if (isValid) {\n _context3.next = 62;\n break;\n }\n\n return _context3.abrupt("break", 65);\n\n case 62:\n _iteratorNormalCompletion = true;\n _context3.next = 53;\n break;\n\n case 65:\n _context3.next = 71;\n break;\n\n case 67:\n _context3.prev = 67;\n _context3.t0 = _context3["catch"](51);\n _didIteratorError = true;\n _iteratorError = _context3.t0;\n\n case 71:\n _context3.prev = 71;\n _context3.prev = 72;\n\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n\n case 74:\n _context3.prev = 74;\n\n if (!_didIteratorError) {\n _context3.next = 77;\n break;\n }\n\n throw _iteratorError;\n\n case 77:\n return _context3.finish(74);\n\n case 78:\n return _context3.finish(71);\n\n case 79:\n _context3.next = 85;\n break;\n\n case 81:\n _context3.prev = 81;\n _context3.t1 = _context3["catch"](47);\n // ...If .validate() threw an error\n this.error({\n statusCode: _context3.t1.statusCode || \'500\',\n message: _context3.t1.message\n });\n return _context3.abrupt("return", next());\n\n case 85:\n if (isValid) {\n _context3.next = 88;\n break;\n }\n\n this.error({\n statusCode: 404,\n message: \'This page could not be found\'\n });\n return _context3.abrupt("return", next());\n\n case 88:\n _context3.next = 90;\n return Promise.all(Components.map(function (Component, i) {\n // Check if only children route changed\n Component._path = Object(_utils_js__WEBPACK_IMPORTED_MODULE_20__[/* compile */ "b"])(to.matched[matches[i]].path)(to.params);\n Component._dataRefresh = false; // Check if Component need to be refreshed (call asyncData & fetch)\n // Only if its slug has changed or is watch query changes\n\n if (_this4._pathChanged && _this4._queryChanged || Component._path !== _lastPaths[i]) {\n Component._dataRefresh = true;\n } else if (!_this4._pathChanged && _this4._queryChanged) {\n var watchQuery = Component.options.watchQuery;\n\n if (watchQuery === true) {\n Component._dataRefresh = true;\n } else if (Array.isArray(watchQuery)) {\n Component._dataRefresh = watchQuery.some(function (key) {\n return _this4._diffQuery[key];\n });\n } else if (typeof watchQuery === \'function\') {\n if (!instances) {\n instances = Object(_utils_js__WEBPACK_IMPORTED_MODULE_20__[/* getMatchedComponentsInstances */ "f"])(to);\n }\n\n Component._dataRefresh = watchQuery.apply(instances[i], [to.query, from.query]);\n }\n }\n\n if (!_this4._hadError && _this4._isMounted && !Component._dataRefresh) {\n return;\n }\n\n var promises = [];\n var hasAsyncData = Component.options.asyncData && typeof Component.options.asyncData === \'function\';\n var hasFetch = Boolean(Component.options.fetch);\n var loadingIncrease = hasAsyncData && hasFetch ? 30 : 45; // Call asyncData(context)\n\n if (hasAsyncData) {\n var promise = Object(_utils_js__WEBPACK_IMPORTED_MODULE_20__[/* promisify */ "m"])(Component.options.asyncData, app.context).then(function (asyncDataResult) {\n Object(_utils_js__WEBPACK_IMPORTED_MODULE_20__[/* applyAsyncData */ "a"])(Component, asyncDataResult);\n\n if (_this4.$loading.increase) {\n _this4.$loading.increase(loadingIncrease);\n }\n });\n promises.push(promise);\n } // Check disabled page loading\n\n\n _this4.$loading.manual = Component.options.loading === false; // Call fetch(context)\n\n if (hasFetch) {\n var p = Component.options.fetch(app.context);\n\n if (!p || !(p instanceof Promise) && typeof p.then !== \'function\') {\n p = Promise.resolve(p);\n }\n\n p.then(function (fetchResult) {\n if (_this4.$loading.increase) {\n _this4.$loading.increase(loadingIncrease);\n }\n });\n promises.push(p);\n }\n\n return Promise.all(promises);\n }));\n\n case 90:\n // If not redirected\n if (!nextCalled) {\n if (this.$loading.finish && !this.$loading.manual) {\n this.$loading.finish();\n }\n\n next();\n }\n\n _context3.next = 107;\n break;\n\n case 93:\n _context3.prev = 93;\n _context3.t2 = _context3["catch"](28);\n error = _context3.t2 || {};\n\n if (!(error.message === \'ERR_REDIRECT\')) {\n _context3.next = 98;\n break;\n }\n\n return _context3.abrupt("return", this.$nuxt.$emit(\'routeChanged\', to, from, error));\n\n case 98:\n _lastPaths = [];\n Object(_utils_js__WEBPACK_IMPORTED_MODULE_20__[/* globalHandleError */ "i"])(error); // Load error layout\n\n _layout2 = (_index_js__WEBPACK_IMPORTED_MODULE_21__[/* NuxtError */ "a"].options || _index_js__WEBPACK_IMPORTED_MODULE_21__[/* NuxtError */ "a"]).layout;\n\n if (typeof _layout2 === \'function\') {\n _layout2 = _layout2(app.context);\n }\n\n _context3.next = 104;\n return this.loadLayout(_layout2);\n\n case 104:\n this.error(error);\n this.$nuxt.$emit(\'routeChanged\', to, from, error);\n next();\n\n case 107:\n case "end":\n return _context3.stop();\n }\n }\n }, _callee3, this, [[28, 93], [47, 81], [51, 67, 71, 79], [72,, 74, 78]]);\n }));\n return _render.apply(this, arguments);\n}\n\nfunction normalizeComponents(to, ___) {\n Object(_utils_js__WEBPACK_IMPORTED_MODULE_20__[/* flatMapComponents */ "c"])(to, function (Component, _, match, key) {\n if (Object(_babel_runtime_helpers_esm_typeof__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"])(Component) === \'object\' && !Component.options) {\n // Updated via vue-router resolveAsyncComponents()\n Component = vue__WEBPACK_IMPORTED_MODULE_17__[/* default */ "a"].extend(Component);\n Component._Ctor = Component;\n match.components[key] = Component;\n }\n\n return Component;\n });\n}\n\nfunction showNextPage(to) {\n // Hide error component if no error\n if (this._hadError && this._dateLastError === this.$options.nuxt.dateErr) {\n this.error();\n } // Set layout\n\n\n var layout = this.$options.nuxt.err ? (_index_js__WEBPACK_IMPORTED_MODULE_21__[/* NuxtError */ "a"].options || _index_js__WEBPACK_IMPORTED_MODULE_21__[/* NuxtError */ "a"]).layout : to.matched[0].components.default.options.layout;\n\n if (typeof layout === \'function\') {\n layout = layout(app.context);\n }\n\n this.setLayout(layout);\n} // When navigating on a different route but the same component is used, Vue.js\n// Will not update the instance data, so we have to update $data ourselves\n\n\nfunction fixPrepatch(to, ___) {\n var _this2 = this;\n\n if (this._pathChanged === false && this._queryChanged === false) {\n return;\n }\n\n var instances = Object(_utils_js__WEBPACK_IMPORTED_MODULE_20__[/* getMatchedComponentsInstances */ "f"])(to);\n var Components = Object(_utils_js__WEBPACK_IMPORTED_MODULE_20__[/* getMatchedComponents */ "e"])(to);\n vue__WEBPACK_IMPORTED_MODULE_17__[/* default */ "a"].nextTick(function () {\n instances.forEach(function (instance, i) {\n if (!instance || instance._isDestroyed) {\n return;\n }\n\n if (instance.constructor._dataRefresh && Components[i] === instance.constructor && instance.$vnode.data.keepAlive !== true && typeof instance.constructor.options.data === \'function\') {\n var newData = instance.constructor.options.data.call(instance);\n\n for (var key in newData) {\n vue__WEBPACK_IMPORTED_MODULE_17__[/* default */ "a"].set(instance.$data, key, newData[key]);\n } // Ensure to trigger scroll event after calling scrollBehavior\n\n\n window.$nuxt.$nextTick(function () {\n window.$nuxt.$emit(\'triggerScroll\');\n });\n }\n });\n showNextPage.call(_this2, to);\n });\n}\n\nfunction nuxtReady(_app) {\n window.onNuxtReadyCbs.forEach(function (cb) {\n if (typeof cb === \'function\') {\n cb(_app);\n }\n }); // Special JSDOM\n\n if (typeof window._onNuxtLoaded === \'function\') {\n window._onNuxtLoaded(_app);\n } // Add router hooks\n\n\n router.afterEach(function (to, from) {\n // Wait for fixPrepatch + $data updates\n vue__WEBPACK_IMPORTED_MODULE_17__[/* default */ "a"].nextTick(function () {\n return _app.$nuxt.$emit(\'routeChanged\', to, from);\n });\n });\n}\n\nfunction mountApp(_x12) {\n return _mountApp.apply(this, arguments);\n}\n\nfunction _mountApp() {\n _mountApp = Object(_babel_runtime_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_6__[/* default */ "a"])(\n /*#__PURE__*/\n regeneratorRuntime.mark(function _callee4(__app) {\n var _app, mount, Components, clientFirstMount;\n\n return regeneratorRuntime.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n // Set global variables\n app = __app.app;\n router = __app.router;\n store = __app.store; // Create Vue instance\n\n _app = new vue__WEBPACK_IMPORTED_MODULE_17__[/* default */ "a"](app); // Mounts Vue app to DOM element\n\n mount = function mount() {\n _app.$mount(\'#__nuxt\'); // Add afterEach router hooks\n\n\n router.afterEach(normalizeComponents);\n router.afterEach(fixPrepatch.bind(_app)); // Listen for first Vue update\n\n vue__WEBPACK_IMPORTED_MODULE_17__[/* default */ "a"].nextTick(function () {\n // Call window.{{globals.readyCallback}} callbacks\n nuxtReady(_app);\n });\n }; // Resolve route components\n\n\n _context4.next = 7;\n return Promise.all(resolveComponents(router));\n\n case 7:\n Components = _context4.sent;\n // Enable transitions\n _app.setTransitions = _app.$options.nuxt.setTransitions.bind(_app);\n\n if (Components.length) {\n _app.setTransitions(mapTransitions(Components, router.currentRoute));\n\n _lastPaths = router.currentRoute.matched.map(function (route) {\n return Object(_utils_js__WEBPACK_IMPORTED_MODULE_20__[/* compile */ "b"])(route.path)(router.currentRoute.params);\n });\n } // Initialize error handler\n\n\n _app.$loading = {}; // To avoid error while _app.$nuxt does not exist\n\n if (NUXT.error) {\n _app.error(NUXT.error);\n } // Add beforeEach router hooks\n\n\n router.beforeEach(loadAsyncComponents.bind(_app));\n router.beforeEach(render.bind(_app)); // If page already is server rendered\n\n if (!NUXT.serverRendered) {\n _context4.next = 17;\n break;\n }\n\n mount();\n return _context4.abrupt("return");\n\n case 17:\n // First render on client-side\n clientFirstMount = function clientFirstMount() {\n normalizeComponents(router.currentRoute, router.currentRoute);\n showNextPage.call(_app, router.currentRoute); // Don\'t call fixPrepatch.call(_app, router.currentRoute, router.currentRoute) since it\'s first render\n\n mount();\n };\n\n render.call(_app, router.currentRoute, router.currentRoute, function (path) {\n // If not redirected\n if (!path) {\n clientFirstMount();\n return;\n } // Add a one-time afterEach hook to\n // mount the app wait for redirect and route gets resolved\n\n\n var unregisterHook = router.afterEach(function (to, from) {\n unregisterHook();\n clientFirstMount();\n }); // Push the path and let route to be resolved\n\n router.push(path, undefined, function (err) {\n if (err) {\n errorHandler(err);\n }\n });\n });\n\n case 19:\n case "end":\n return _context4.stop();\n }\n }\n }, _callee4);\n }));\n return _mountApp.apply(this, arguments);\n}\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(42)))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi8ubnV4dC9jbGllbnQuanM/MDZhMCJdLCJuYW1lcyI6WyJWdWUiLCJjb21wb25lbnQiLCJOdXh0TGluayIsIm5hbWUiLCJnbG9iYWwiLCJmZXRjaCIsIl9sYXN0UGF0aHMiLCJhcHAiLCJyb3V0ZXIiLCJzdG9yZSIsIk5VWFQiLCJ3aW5kb3ciLCJfX05VWFRfXyIsIk9iamVjdCIsImFzc2lnbiIsImNvbmZpZyIsImVycm9ySGFuZGxlciIsImNvbnNvbGUiLCJlcnJvciIsImNyZWF0ZUFwcCIsInRoZW4iLCJtb3VudEFwcCIsImNhdGNoIiwiY29tcG9uZW50T3B0aW9uIiwia2V5Iiwib3B0aW9ucyIsIm9wdGlvbiIsImFyZ3MiLCJtYXBUcmFuc2l0aW9ucyIsIkNvbXBvbmVudHMiLCJ0byIsImZyb20iLCJjb21wb25lbnRUcmFuc2l0aW9ucyIsInRyYW5zaXRpb24iLCJtYXAiLCJDb21wb25lbnQiLCJ0cmFuc2l0aW9ucyIsIm1hdGNoZWQiLCJsZW5ndGgiLCJjb21wb25lbnRzIiwiZGVmYXVsdCIsImZyb21UcmFuc2l0aW9ucyIsImtleXMiLCJmaWx0ZXIiLCJ0b0xvd2VyQ2FzZSIsImluY2x1ZGVzIiwiZm9yRWFjaCIsImxvYWRBc3luY0NvbXBvbmVudHMiLCJuZXh0IiwiX3BhdGhDaGFuZ2VkIiwiQm9vbGVhbiIsIm51eHQiLCJlcnIiLCJwYXRoIiwiX3F1ZXJ5Q2hhbmdlZCIsIkpTT04iLCJzdHJpbmdpZnkiLCJxdWVyeSIsIl9kaWZmUXVlcnkiLCJnZXRRdWVyeURpZmYiLCIkbG9hZGluZyIsInN0YXJ0IiwibWFudWFsIiwicmVzb2x2ZVJvdXRlQ29tcG9uZW50cyIsImluc3RhbmNlIiwic3RhcnRMb2FkZXIiLCJzb21lIiwid2F0Y2hRdWVyeSIsIkFycmF5IiwiaXNBcnJheSIsImFwcGx5Iiwic3RhdHVzQ29kZSIsInN0YXR1cyIsInJlc3BvbnNlIiwibWVzc2FnZSIsInRlc3QiLCJsb2NhdGlvbiIsInJlbG9hZCIsIiRudXh0IiwiJGVtaXQiLCJhcHBseVNTUkRhdGEiLCJzc3JEYXRhIiwic2VydmVyUmVuZGVyZWQiLCJhcHBseUFzeW5jRGF0YSIsIl9DdG9yIiwicmVzb2x2ZUNvbXBvbmVudHMiLCJnZXRMb2NhdGlvbiIsImJhc2UiLCJtb2RlIiwiZmxhdE1hcENvbXBvbmVudHMiLCJtYXRjaCIsIl8iLCJpbmRleCIsIl9Db21wb25lbnQiLCJzYW5pdGl6ZUNvbXBvbmVudCIsImRhdGEiLCJjYWxsTWlkZGxld2FyZSIsImNvbnRleHQiLCJsYXlvdXQiLCJtaWRkIiwidW5rbm93bk1pZGRsZXdhcmUiLCJtaWRkbGV3YXJlIiwiY29uY2F0IiwibWlkZGxld2FyZVNlcmllcyIsInJlbmRlciIsImZyb21NYXRjaGVzIiwiZ2V0TWF0Y2hlZENvbXBvbmVudHMiLCJpIiwiY29tcGlsZSIsInBhcmFtcyIsIm5leHRDYWxsZWQiLCJfbmV4dCIsImZpbmlzaCIsInBhdXNlIiwic2V0Q29udGV4dCIsInJvdXRlIiwiYmluZCIsIl9kYXRlTGFzdEVycm9yIiwiZGF0ZUVyciIsIl9oYWRFcnJvciIsIm1hdGNoZXMiLCJjYWxsIiwiZXJyb3JMYXlvdXQiLCJOdXh0RXJyb3IiLCJsb2FkTGF5b3V0IiwiYXN5bmNEYXRhIiwic2V0VHJhbnNpdGlvbnMiLCJfZXJyb3JlZCIsImlzVmFsaWQiLCJ2YWxpZGF0ZSIsIlByb21pc2UiLCJhbGwiLCJfcGF0aCIsIl9kYXRhUmVmcmVzaCIsImluc3RhbmNlcyIsImdldE1hdGNoZWRDb21wb25lbnRzSW5zdGFuY2VzIiwiX2lzTW91bnRlZCIsInByb21pc2VzIiwiaGFzQXN5bmNEYXRhIiwiaGFzRmV0Y2giLCJsb2FkaW5nSW5jcmVhc2UiLCJwcm9taXNlIiwicHJvbWlzaWZ5IiwiYXN5bmNEYXRhUmVzdWx0IiwiaW5jcmVhc2UiLCJwdXNoIiwibG9hZGluZyIsInAiLCJyZXNvbHZlIiwiZmV0Y2hSZXN1bHQiLCJnbG9iYWxIYW5kbGVFcnJvciIsIm5vcm1hbGl6ZUNvbXBvbmVudHMiLCJfX18iLCJleHRlbmQiLCJzaG93TmV4dFBhZ2UiLCIkb3B0aW9ucyIsInNldExheW91dCIsImZpeFByZXBhdGNoIiwibmV4dFRpY2siLCJfaXNEZXN0cm95ZWQiLCJjb25zdHJ1Y3RvciIsIiR2bm9kZSIsImtlZXBBbGl2ZSIsIm5ld0RhdGEiLCJzZXQiLCIkZGF0YSIsIiRuZXh0VGljayIsIm51eHRSZWFkeSIsIl9hcHAiLCJvbk51eHRSZWFkeUNicyIsImNiIiwiX29uTnV4dExvYWRlZCIsImFmdGVyRWFjaCIsIl9fYXBwIiwibW91bnQiLCIkbW91bnQiLCJjdXJyZW50Um91dGUiLCJiZWZvcmVFYWNoIiwiY2xpZW50Rmlyc3RNb3VudCIsInVucmVnaXN0ZXJIb29rIiwidW5kZWZpbmVkIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBZUE7Q0FDd0Q7QUFFeEQ7O0FBQ0FBLG9EQUFHLENBQUNDLFNBQUosQ0FBY0MsZ0ZBQVEsQ0FBQ0MsSUFBdkIsRUFBNkJELGdGQUE3QjtBQUNBRixvREFBRyxDQUFDQyxTQUFKLENBQWMsT0FBZCxFQUF1QkMsZ0ZBQXZCOztBQUVBLElBQUksQ0FBQ0UsTUFBTSxDQUFDQyxLQUFaLEVBQW1CO0FBQUVELFFBQU0sQ0FBQ0MsS0FBUCxHQUFlQSx3REFBZjtBQUFzQixDLENBRTNDOzs7QUFDQSxJQUFJQyxVQUFVLEdBQUcsRUFBakI7QUFDQSxJQUFJQyxHQUFKO0FBQ0EsSUFBSUMsTUFBSjtBQUNBLElBQUlDLEtBQUosQyxDQUVBOztBQUNBLElBQU1DLElBQUksR0FBR0MsTUFBTSxDQUFDQyxRQUFQLElBQW1CLEVBQWhDO0FBRUFDLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjZCxvREFBRyxDQUFDZSxNQUFsQixFQUEwQjtBQUFDLFlBQVMsSUFBVjtBQUFlLGlCQUFjO0FBQTdCLENBQTFCO0FBRUEsSUFBTUMsWUFBWSxHQUFHaEIsb0RBQUcsQ0FBQ2UsTUFBSixDQUFXQyxZQUFY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QW1EMkIsU0FBbkJBLGdCQUFtQixHQUFNO0FBQzdCM0IsaUNBQW1CLENBQUMvSSxNQUFNLENBQUN3SyxZQUFSLEVBQXNCeEssTUFBTSxDQUFDd0ssWUFBN0IsQ0FBbkI7QUFDQXRCLDBCQUFZLENBQUNqQyxJQUFiLENBQWtCK0MsSUFBbEIsRUFBd0JoSyxNQUFNLENBQUN3SyxZQUEvQixFQUY2QixDQUc3Qjs7QUFDQUYsbUJBQUs7QUFDTixhQXhESDs7QUEwREV0RSxrQkFBTSxDQUFDaUIsSUFBUCxDQUFZK0MsSUFBWixFQUFrQmhLLE1BQU0sQ0FBQ3dLLFlBQXpCLEVBQXVDeEssTUFBTSxDQUFDd0ssWUFBOUMsRUFBNEQsVUFBQzNILElBQUQsRUFBVTtBQUNwRTtBQUNBLGtCQUFJLENBQUNBLElBQUwsRUFBVztBQUNUNkgsZ0NBQWdCO0FBQ2hCO0FBQ0QsZUFMbUUsQ0FPcEU7QUFDQTs7O0FBQ0Esa0JBQU1DLGNBQWMsR0FBRzNLLE1BQU0sQ0FBQ29LLFNBQVAsQ0FBaUIsVUFBQzlJLEVBQUQsRUFBS0MsSUFBTCxFQUFjO0FBQ3BEb0osOEJBQWM7QUFDZEQsZ0NBQWdCO0FBQ2pCLGVBSHNCLENBQXZCLENBVG9FLENBY3BFOztBQUNBMUssb0JBQU0sQ0FBQ3lJLElBQVAsQ0FBWTVGLElBQVosRUFBa0IrSCxTQUFsQixFQUE2QixVQUFDaEksR0FBRCxFQUFTO0FBQ3BDLG9CQUFJQSxHQUFKLEVBQVM7QUFDUHBDLDhCQUFZLENBQUNvQyxHQUFELENBQVo7QUFDRDtBQUNGLGVBSkQ7QUFLRCxhQXBCRDs7QUExREY7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRyIsImZpbGUiOiIxNDYuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgVnVlIGZyb20gJ3Z1ZSdcbmltcG9ydCBmZXRjaCBmcm9tICd1bmZldGNoJ1xuaW1wb3J0IG1pZGRsZXdhcmUgZnJvbSAnLi9taWRkbGV3YXJlLmpzJ1xuaW1wb3J0IHtcbiAgYXBwbHlBc3luY0RhdGEsXG4gIHByb21pc2lmeSxcbiAgbWlkZGxld2FyZVNlcmllcyxcbiAgc2FuaXRpemVDb21wb25lbnQsXG4gIHJlc29sdmVSb3V0ZUNvbXBvbmVudHMsXG4gIGdldE1hdGNoZWRDb21wb25lbnRzLFxuICBnZXRNYXRjaGVkQ29tcG9uZW50c0luc3RhbmNlcyxcbiAgZmxhdE1hcENvbXBvbmVudHMsXG4gIHNldENvbnRleHQsXG4gIGdldExvY2F0aW9uLFxuICBjb21waWxlLFxuICBnZXRRdWVyeURpZmYsXG4gIGdsb2JhbEhhbmRsZUVycm9yXG59IGZyb20gJy4vdXRpbHMuanMnXG5pbXBvcnQgeyBjcmVhdGVBcHAsIE51eHRFcnJvciB9IGZyb20gJy4vaW5kZXguanMnXG5pbXBvcnQgTnV4dExpbmsgZnJvbSAnLi9jb21wb25lbnRzL251eHQtbGluay5jbGllbnQuanMnIC8vIHNob3VsZCBiZSBpbmNsdWRlZCBhZnRlciAuL2luZGV4LmpzXG5cbi8vIENvbXBvbmVudDogPE51eHRMaW5rPlxuVnVlLmNvbXBvbmVudChOdXh0TGluay5uYW1lLCBOdXh0TGluaylcblZ1ZS5jb21wb25lbnQoJ05MaW5rJywgTnV4dExpbmspXG5cbmlmICghZ2xvYmFsLmZldGNoKSB7IGdsb2JhbC5mZXRjaCA9IGZldGNoIH1cblxuLy8gR2xvYmFsIHNoYXJlZCByZWZlcmVuY2VzXG5sZXQgX2xhc3RQYXRocyA9IFtdXG5sZXQgYXBwXG5sZXQgcm91dGVyXG5sZXQgc3RvcmVcblxuLy8gVHJ5IHRvIHJlaHlkcmF0ZSBTU1IgZGF0YSBmcm9tIHdpbmRvd1xuY29uc3QgTlVYVCA9IHdpbmRvdy5fX05VWFRfXyB8fCB7fVxuXG5PYmplY3QuYXNzaWduKFZ1ZS5jb25maWcsIHtcInNpbGVudFwiOnRydWUsXCJwZXJmb3JtYW5jZVwiOmZhbHNlfSlcblxuY29uc3QgZXJyb3JIYW5kbGVyID0gVnVlLmNvbmZpZy5lcnJvckhhbmRsZXIgfHwgY29uc29sZS5lcnJvclxuXG4vLyBDcmVhdGUgYW5kIG1vdW50IEFwcFxuY3JlYXRlQXBwKCkudGhlbihtb3VudEFwcCkuY2F0Y2goZXJyb3JIYW5kbGVyKVxuXG5mdW5jdGlvbiBjb21wb25lbnRPcHRpb24gKGNvbXBvbmVudCwga2V5LCAuLi5hcmdzKSB7XG4gIGlmICghY29tcG9uZW50IHx8ICFjb21wb25lbnQub3B0aW9ucyB8fCAhY29tcG9uZW50Lm9wdGlvbnNba2V5XSkge1xuICAgIHJldHVybiB7fVxuICB9XG4gIGNvbnN0IG9wdGlvbiA9IGNvbXBvbmVudC5vcHRpb25zW2tleV1cbiAgaWYgKHR5cGVvZiBvcHRpb24gPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gb3B0aW9uKC4uLmFyZ3MpXG4gIH1cbiAgcmV0dXJuIG9wdGlvblxufVxuXG5mdW5jdGlvbiBtYXBUcmFuc2l0aW9ucyAoQ29tcG9uZW50cywgdG8sIGZyb20pIHtcbiAgY29uc3QgY29tcG9uZW50VHJhbnNpdGlvbnMgPSAoY29tcG9uZW50KSA9PiB7XG4gICAgY29uc3QgdHJhbnNpdGlvbiA9IGNvbXBvbmVudE9wdGlvbihjb21wb25lbnQsICd0cmFuc2l0aW9uJywgdG8sIGZyb20pIHx8IHt9XG4gICAgcmV0dXJuICh0eXBlb2YgdHJhbnNpdGlvbiA9PT0gJ3N0cmluZycgPyB7IG5hbWU6IHRyYW5zaXRpb24gfSA6IHRyYW5zaXRpb24pXG4gIH1cblxuICByZXR1cm4gQ29tcG9uZW50cy5tYXAoKENvbXBvbmVudCkgPT4ge1xuICAgIC8vIENsb25lIG9yaWdpbmFsIG9iamVjdCB0byBwcmV2ZW50IG92ZXJyaWRlc1xuICAgIGNvbnN0IHRyYW5zaXRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgY29tcG9uZW50VHJhbnNpdGlvbnMoQ29tcG9uZW50KSlcblxuICAgIC8vIENvbWJpbmUgdHJhbnNpdGlvbnMgJiBwcmVmZXIgYGxlYXZlYCB0cmFuc2l0aW9ucyBvZiAnZnJvbScgcm91dGVcbiAgICBpZiAoZnJvbSAmJiBmcm9tLm1hdGNoZWQubGVuZ3RoICYmIGZyb20ubWF0Y2hlZFswXS5jb21wb25lbnRzLmRlZmF1bHQpIHtcbiAgICAgIGNvbnN0IGZyb21UcmFuc2l0aW9ucyA9IGNvbXBvbmVudFRyYW5zaXRpb25zKGZyb20ubWF0Y2hlZFswXS5jb21wb25lbnRzLmRlZmF1bHQpXG4gICAgICBPYmplY3Qua2V5cyhmcm9tVHJhbnNpdGlvbnMpXG4gICAgICAgIC5maWx0ZXIoa2V5ID0+IGZyb21UcmFuc2l0aW9uc1trZXldICYmIGtleS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCdsZWF2ZScpKVxuICAgICAgICAuZm9yRWFjaCgoa2V5KSA9PiB7IHRyYW5zaXRpb25zW2tleV0gPSBmcm9tVHJhbnNpdGlvbnNba2V5XSB9KVxuICAgIH1cblxuICAgIHJldHVybiB0cmFuc2l0aW9uc1xuICB9KVxufVxuXG5hc3luYyBmdW5jdGlvbiBsb2FkQXN5bmNDb21wb25lbnRzICh0bywgZnJvbSwgbmV4dCkge1xuICAvLyBDaGVjayBpZiByb3V0ZSBwYXRoIGNoYW5nZWQgKHRoaXMuX3BhdGhDaGFuZ2VkKSwgb25seSBpZiB0aGUgcGFnZSBpcyBub3QgYW4gZXJyb3IgKGZvciB2YWxpZGF0ZSgpKVxuICB0aGlzLl9wYXRoQ2hhbmdlZCA9IEJvb2xlYW4oYXBwLm51eHQuZXJyKSB8fCBmcm9tLnBhdGggIT09IHRvLnBhdGhcbiAgdGhpcy5fcXVlcnlDaGFuZ2VkID0gSlNPTi5zdHJpbmdpZnkodG8ucXVlcnkpICE9PSBKU09OLnN0cmluZ2lmeShmcm9tLnF1ZXJ5KVxuICB0aGlzLl9kaWZmUXVlcnkgPSAodGhpcy5fcXVlcnlDaGFuZ2VkID8gZ2V0UXVlcnlEaWZmKHRvLnF1ZXJ5LCBmcm9tLnF1ZXJ5KSA6IFtdKVxuXG4gIGlmICh0aGlzLl9wYXRoQ2hhbmdlZCAmJiB0aGlzLiRsb2FkaW5nLnN0YXJ0ICYmICF0aGlzLiRsb2FkaW5nLm1hbnVhbCkge1xuICAgIHRoaXMuJGxvYWRpbmcuc3RhcnQoKVxuICB9XG5cbiAgdHJ5IHtcbiAgICBpZiAoIXRoaXMuX3BhdGhDaGFuZ2VkICYmIHRoaXMuX3F1ZXJ5Q2hhbmdlZCkge1xuICAgICAgY29uc3QgQ29tcG9uZW50cyA9IGF3YWl0IHJlc29sdmVSb3V0ZUNvbXBvbmVudHMoXG4gICAgICAgIHRvLFxuICAgICAgICAoQ29tcG9uZW50LCBpbnN0YW5jZSkgPT4gKHsgQ29tcG9uZW50LCBpbnN0YW5jZSB9KVxuICAgICAgKVxuICAgICAgLy8gQWRkIGEgbWFya2VyIG9uIGVhY2ggY29tcG9uZW50IHRoYXQgaXQgbmVlZHMgdG8gcmVmcmVzaCBvciBub3RcbiAgICAgIGNvbnN0IHN0YXJ0TG9hZGVyID0gQ29tcG9uZW50cy5zb21lKCh7IENvbXBvbmVudCwgaW5zdGFuY2UgfSkgPT4ge1xuICAgICAgICBjb25zdCB3YXRjaFF1ZXJ5ID0gQ29tcG9uZW50Lm9wdGlvbnMud2F0Y2hRdWVyeVxuICAgICAgICBpZiAod2F0Y2hRdWVyeSA9PT0gdHJ1ZSkge1xuICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgIH1cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkod2F0Y2hRdWVyeSkpIHtcbiAgICAgICAgICByZXR1cm4gd2F0Y2hRdWVyeS5zb21lKGtleSA9PiB0aGlzLl9kaWZmUXVlcnlba2V5XSlcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIHdhdGNoUXVlcnkgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICByZXR1cm4gd2F0Y2hRdWVyeS5hcHBseShpbnN0YW5jZSwgW3RvLnF1ZXJ5LCBmcm9tLnF1ZXJ5XSlcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH0pXG4gICAgICBpZiAoc3RhcnRMb2FkZXIgJiYgdGhpcy4kbG9hZGluZy5zdGFydCAmJiAhdGhpcy4kbG9hZGluZy5tYW51YWwpIHtcbiAgICAgICAgdGhpcy4kbG9hZGluZy5zdGFydCgpXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQ2FsbCBuZXh0KClcbiAgICBuZXh0KClcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBjb25zdCBlcnIgPSBlcnJvciB8fCB7fVxuICAgIGNvbnN0IHN0YXR1c0NvZGUgPSBlcnIuc3RhdHVzQ29kZSB8fCBlcnIuc3RhdHVzIHx8IChlcnIucmVzcG9uc2UgJiYgZXJyLnJlc3BvbnNlLnN0YXR1cykgfHwgNTAwXG4gICAgY29uc3QgbWVzc2FnZSA9IGVyci5tZXNzYWdlIHx8ICcnXG5cbiAgICAvLyBIYW5kbGUgY2h1bmsgbG9hZGluZyBlcnJvcnNcbiAgICAvLyBUaGlzIG1heSBiZSBkdWUgdG8gYSBuZXcgZGVwbG95bWVudCBvciBhIG5ldHdvcmsgcHJvYmxlbVxuICAgIGlmICgvXkxvYWRpbmcoIENTUyk/IGNodW5rIChcXGQpKyBmYWlsZWRcXC4vLnRlc3QobWVzc2FnZSkpIHtcbiAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQodHJ1ZSAvKiBza2lwIGNhY2hlICovKVxuICAgICAgcmV0dXJuIC8vIHByZXZlbnQgZXJyb3IgcGFnZSBibGlua2luZyBmb3IgdXNlclxuICAgIH1cblxuICAgIHRoaXMuZXJyb3IoeyBzdGF0dXNDb2RlLCBtZXNzYWdlIH0pXG4gICAgdGhpcy4kbnV4dC4kZW1pdCgncm91dGVDaGFuZ2VkJywgdG8sIGZyb20sIGVycilcbiAgICBuZXh0KClcbiAgfVxufVxuXG5mdW5jdGlvbiBhcHBseVNTUkRhdGEgKENvbXBvbmVudCwgc3NyRGF0YSkge1xuICBpZiAoTlVYVC5zZXJ2ZXJSZW5kZXJlZCAmJiBzc3JEYXRhKSB7XG4gICAgYXBwbHlBc3luY0RhdGEoQ29tcG9uZW50LCBzc3JEYXRhKVxuICB9XG5cbiAgQ29tcG9uZW50Ll9DdG9yID0gQ29tcG9uZW50XG4gIHJldHVybiBDb21wb25lbnRcbn1cblxuLy8gR2V0IG1hdGNoZWQgY29tcG9uZW50c1xuZnVuY3Rpb24gcmVzb2x2ZUNvbXBvbmVudHMgKHJvdXRlcikge1xuICBjb25zdCBwYXRoID0gZ2V0TG9jYXRpb24ocm91dGVyLm9wdGlvbnMuYmFzZSwgcm91dGVyLm9wdGlvbnMubW9kZSlcblxuICByZXR1cm4gZmxhdE1hcENvbXBvbmVudHMocm91dGVyLm1hdGNoKHBhdGgpLCBhc3luYyAoQ29tcG9uZW50LCBfLCBtYXRjaCwga2V5LCBpbmRleCkgPT4ge1xuICAgIC8vIElmIGNvbXBvbmVudCBpcyBub3QgcmVzb2x2ZWQgeWV0LCByZXNvbHZlIGl0XG4gICAgaWYgKHR5cGVvZiBDb21wb25lbnQgPT09ICdmdW5jdGlvbicgJiYgIUNvbXBvbmVudC5vcHRpb25zKSB7XG4gICAgICBDb21wb25lbnQgPSBhd2FpdCBDb21wb25lbnQoKVxuICAgIH1cbiAgICAvLyBTYW5pdGl6ZSBpdCBhbmQgc2F2ZSBpdFxuICAgIGNvbnN0IF9Db21wb25lbnQgPSBhcHBseVNTUkRhdGEoc2FuaXRpemVDb21wb25lbnQoQ29tcG9uZW50KSwgTlVYVC5kYXRhID8gTlVYVC5kYXRhW2luZGV4XSA6IG51bGwpXG4gICAgbWF0Y2guY29tcG9uZW50c1trZXldID0gX0NvbXBvbmVudFxuICAgIHJldHVybiBfQ29tcG9uZW50XG4gIH0pXG59XG5cbmZ1bmN0aW9uIGNhbGxNaWRkbGV3YXJlIChDb21wb25lbnRzLCBjb250ZXh0LCBsYXlvdXQpIHtcbiAgbGV0IG1pZGQgPSBbXVxuICBsZXQgdW5rbm93bk1pZGRsZXdhcmUgPSBmYWxzZVxuXG4gIC8vIElmIGxheW91dCBpcyB1bmRlZmluZWQsIG9ubHkgY2FsbCBnbG9iYWwgbWlkZGxld2FyZVxuICBpZiAodHlwZW9mIGxheW91dCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBtaWRkID0gW10gLy8gRXhjbHVkZSBnbG9iYWwgbWlkZGxld2FyZSBpZiBsYXlvdXQgZGVmaW5lZCAoYWxyZWFkeSBjYWxsZWQgYmVmb3JlKVxuICAgIGxheW91dCA9IHNhbml0aXplQ29tcG9uZW50KGxheW91dClcbiAgICBpZiAobGF5b3V0Lm9wdGlvbnMubWlkZGxld2FyZSkge1xuICAgICAgbWlkZCA9IG1pZGQuY29uY2F0KGxheW91dC5vcHRpb25zLm1pZGRsZXdhcmUpXG4gICAgfVxuICAgIENvbXBvbmVudHMuZm9yRWFjaCgoQ29tcG9uZW50KSA9PiB7XG4gICAgICBpZiAoQ29tcG9uZW50Lm9wdGlvbnMubWlkZGxld2FyZSkge1xuICAgICAgICBtaWRkID0gbWlkZC5jb25jYXQoQ29tcG9uZW50Lm9wdGlvbnMubWlkZGxld2FyZSlcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgbWlkZCA9IG1pZGQubWFwKChuYW1lKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBuYW1lID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gbmFtZVxuICAgIH1cbiAgICBpZiAodHlwZW9mIG1pZGRsZXdhcmVbbmFtZV0gIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHVua25vd25NaWRkbGV3YXJlID0gdHJ1ZVxuICAgICAgdGhpcy5lcnJvcih7IHN0YXR1c0NvZGU6IDUwMCwgbWVzc2FnZTogJ1Vua25vd24gbWlkZGxld2FyZSAnICsgbmFtZSB9KVxuICAgIH1cbiAgICByZXR1cm4gbWlkZGxld2FyZVtuYW1lXVxuICB9KVxuXG4gIGlmICh1bmtub3duTWlkZGxld2FyZSkge1xuICAgIHJldHVyblxuICB9XG4gIHJldHVybiBtaWRkbGV3YXJlU2VyaWVzKG1pZGQsIGNvbnRleHQpXG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlbmRlciAodG8sIGZyb20sIG5leHQpIHtcbiAgaWYgKHRoaXMuX3BhdGhDaGFuZ2VkID09PSBmYWxzZSAmJiB0aGlzLl9xdWVyeUNoYW5nZWQgPT09IGZhbHNlKSB7XG4gICAgcmV0dXJuIG5leHQoKVxuICB9XG4gIC8vIEhhbmRsZSBmaXJzdCByZW5kZXIgb24gU1BBIG1vZGVcbiAgaWYgKHRvID09PSBmcm9tKSB7XG4gICAgX2xhc3RQYXRocyA9IFtdXG4gIH0gZWxzZSB7XG4gICAgY29uc3QgZnJvbU1hdGNoZXMgPSBbXVxuICAgIF9sYXN0UGF0aHMgPSBnZXRNYXRjaGVkQ29tcG9uZW50cyhmcm9tLCBmcm9tTWF0Y2hlcykubWFwKChDb21wb25lbnQsIGkpID0+IHtcbiAgICAgIHJldHVybiBjb21waWxlKGZyb20ubWF0Y2hlZFtmcm9tTWF0Y2hlc1tpXV0ucGF0aCkoZnJvbS5wYXJhbXMpXG4gICAgfSlcbiAgfVxuXG4gIC8vIG5leHRDYWxsZWQgaXMgdHJ1ZSB3aGVuIHJlZGlyZWN0ZWRcbiAgbGV0IG5leHRDYWxsZWQgPSBmYWxzZVxuICBjb25zdCBfbmV4dCA9IChwYXRoKSA9PiB7XG4gICAgaWYgKGZyb20ucGF0aCA9PT0gcGF0aC5wYXRoICYmIHRoaXMuJGxvYWRpbmcuZmluaXNoKSB7XG4gICAgICB0aGlzLiRsb2FkaW5nLmZpbmlzaCgpXG4gICAgfVxuXG4gICAgaWYgKGZyb20ucGF0aCAhPT0gcGF0aC5wYXRoICYmIHRoaXMuJGxvYWRpbmcucGF1c2UpIHtcbiAgICAgIHRoaXMuJGxvYWRpbmcucGF1c2UoKVxuICAgIH1cblxuICAgIGlmIChuZXh0Q2FsbGVkKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBuZXh0Q2FsbGVkID0gdHJ1ZVxuICAgIG5leHQocGF0aClcbiAgfVxuXG4gIC8vIFVwZGF0ZSBjb250ZXh0XG4gIGF3YWl0IHNldENvbnRleHQoYXBwLCB7XG4gICAgcm91dGU6IHRvLFxuICAgIGZyb20sXG4gICAgbmV4dDogX25leHQuYmluZCh0aGlzKVxuICB9KVxuICB0aGlzLl9kYXRlTGFzdEVycm9yID0gYXBwLm51eHQuZGF0ZUVyclxuICB0aGlzLl9oYWRFcnJvciA9IEJvb2xlYW4oYXBwLm51eHQuZXJyKVxuXG4gIC8vIEdldCByb3V0ZSdzIG1hdGNoZWQgY29tcG9uZW50c1xuICBjb25zdCBtYXRjaGVzID0gW11cbiAgY29uc3QgQ29tcG9uZW50cyA9IGdldE1hdGNoZWRDb21wb25lbnRzKHRvLCBtYXRjaGVzKVxuXG4gIC8vIElmIG5vIENvbXBvbmVudHMgbWF0Y2hlZCwgZ2VuZXJhdGUgNDA0XG4gIGlmICghQ29tcG9uZW50cy5sZW5ndGgpIHtcbiAgICAvLyBEZWZhdWx0IGxheW91dFxuICAgIGF3YWl0IGNhbGxNaWRkbGV3YXJlLmNhbGwodGhpcywgQ29tcG9uZW50cywgYXBwLmNvbnRleHQpXG4gICAgaWYgKG5leHRDYWxsZWQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIExvYWQgbGF5b3V0IGZvciBlcnJvciBwYWdlXG4gICAgY29uc3QgZXJyb3JMYXlvdXQgPSAoTnV4dEVycm9yLm9wdGlvbnMgfHwgTnV4dEVycm9yKS5sYXlvdXRcbiAgICBjb25zdCBsYXlvdXQgPSBhd2FpdCB0aGlzLmxvYWRMYXlvdXQoXG4gICAgICB0eXBlb2YgZXJyb3JMYXlvdXQgPT09ICdmdW5jdGlvbidcbiAgICAgICAgPyBlcnJvckxheW91dC5jYWxsKE51eHRFcnJvciwgYXBwLmNvbnRleHQpXG4gICAgICAgIDogZXJyb3JMYXlvdXRcbiAgICApXG5cbiAgICBhd2FpdCBjYWxsTWlkZGxld2FyZS5jYWxsKHRoaXMsIENvbXBvbmVudHMsIGFwcC5jb250ZXh0LCBsYXlvdXQpXG4gICAgaWYgKG5leHRDYWxsZWQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIFNob3cgZXJyb3IgcGFnZVxuICAgIGFwcC5jb250ZXh0LmVycm9yKHsgc3RhdHVzQ29kZTogNDA0LCBtZXNzYWdlOiAnVGhpcyBwYWdlIGNvdWxkIG5vdCBiZSBmb3VuZCcgfSlcbiAgICByZXR1cm4gbmV4dCgpXG4gIH1cblxuICAvLyBVcGRhdGUgLl9kYXRhIGFuZCBvdGhlciBwcm9wZXJ0aWVzIGlmIGhvdCByZWxvYWRlZFxuICBDb21wb25lbnRzLmZvckVhY2goKENvbXBvbmVudCkgPT4ge1xuICAgIGlmIChDb21wb25lbnQuX0N0b3IgJiYgQ29tcG9uZW50Ll9DdG9yLm9wdGlvbnMpIHtcbiAgICAgIENvbXBvbmVudC5vcHRpb25zLmFzeW5jRGF0YSA9IENvbXBvbmVudC5fQ3Rvci5vcHRpb25zLmFzeW5jRGF0YVxuICAgICAgQ29tcG9uZW50Lm9wdGlvbnMuZmV0Y2ggPSBDb21wb25lbnQuX0N0b3Iub3B0aW9ucy5mZXRjaFxuICAgIH1cbiAgfSlcblxuICAvLyBBcHBseSB0cmFuc2l0aW9uc1xuICB0aGlzLnNldFRyYW5zaXRpb25zKG1hcFRyYW5zaXRpb25zKENvbXBvbmVudHMsIHRvLCBmcm9tKSlcblxuICB0cnkge1xuICAgIC8vIENhbGwgbWlkZGxld2FyZVxuICAgIGF3YWl0IGNhbGxNaWRkbGV3YXJlLmNhbGwodGhpcywgQ29tcG9uZW50cywgYXBwLmNvbnRleHQpXG4gICAgaWYgKG5leHRDYWxsZWQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoYXBwLmNvbnRleHQuX2Vycm9yZWQpIHtcbiAgICAgIHJldHVybiBuZXh0KClcbiAgICB9XG5cbiAgICAvLyBTZXQgbGF5b3V0XG4gICAgbGV0IGxheW91dCA9IENvbXBvbmVudHNbMF0ub3B0aW9ucy5sYXlvdXRcbiAgICBpZiAodHlwZW9mIGxheW91dCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgbGF5b3V0ID0gbGF5b3V0KGFwcC5jb250ZXh0KVxuICAgIH1cbiAgICBsYXlvdXQgPSBhd2FpdCB0aGlzLmxvYWRMYXlvdXQobGF5b3V0KVxuXG4gICAgLy8gQ2FsbCBtaWRkbGV3YXJlIGZvciBsYXlvdXRcbiAgICBhd2FpdCBjYWxsTWlkZGxld2FyZS5jYWxsKHRoaXMsIENvbXBvbmVudHMsIGFwcC5jb250ZXh0LCBsYXlvdXQpXG4gICAgaWYgKG5leHRDYWxsZWQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoYXBwLmNvbnRleHQuX2Vycm9yZWQpIHtcbiAgICAgIHJldHVybiBuZXh0KClcbiAgICB9XG5cbiAgICAvLyBDYWxsIC52YWxpZGF0ZSgpXG4gICAgbGV0IGlzVmFsaWQgPSB0cnVlXG4gICAgdHJ5IHtcbiAgICAgIGZvciAoY29uc3QgQ29tcG9uZW50IG9mIENvbXBvbmVudHMpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBDb21wb25lbnQub3B0aW9ucy52YWxpZGF0ZSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cblxuICAgICAgICBpc1ZhbGlkID0gYXdhaXQgQ29tcG9uZW50Lm9wdGlvbnMudmFsaWRhdGUoYXBwLmNvbnRleHQpXG5cbiAgICAgICAgaWYgKCFpc1ZhbGlkKSB7XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKHZhbGlkYXRpb25FcnJvcikge1xuICAgICAgLy8gLi4uSWYgLnZhbGlkYXRlKCkgdGhyZXcgYW4gZXJyb3JcbiAgICAgIHRoaXMuZXJyb3Ioe1xuICAgICAgICBzdGF0dXNDb2RlOiB2YWxpZGF0aW9uRXJyb3Iuc3RhdHVzQ29kZSB8fCAnNTAwJyxcbiAgICAgICAgbWVzc2FnZTogdmFsaWRhdGlvbkVycm9yLm1lc3NhZ2VcbiAgICAgIH0pXG4gICAgICByZXR1cm4gbmV4dCgpXG4gICAgfVxuXG4gICAgLy8gLi4uSWYgLnZhbGlkYXRlKCkgcmV0dXJuZWQgZmFsc2VcbiAgICBpZiAoIWlzVmFsaWQpIHtcbiAgICAgIHRoaXMuZXJyb3IoeyBzdGF0dXNDb2RlOiA0MDQsIG1lc3NhZ2U6ICdUaGlzIHBhZ2UgY291bGQgbm90IGJlIGZvdW5kJyB9KVxuICAgICAgcmV0dXJuIG5leHQoKVxuICAgIH1cblxuICAgIGxldCBpbnN0YW5jZXNcbiAgICAvLyBDYWxsIGFzeW5jRGF0YSAmIGZldGNoIGhvb2tzIG9uIGNvbXBvbmVudHMgbWF0Y2hlZCBieSB0aGUgcm91dGUuXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoQ29tcG9uZW50cy5tYXAoKENvbXBvbmVudCwgaSkgPT4ge1xuICAgICAgLy8gQ2hlY2sgaWYgb25seSBjaGlsZHJlbiByb3V0ZSBjaGFuZ2VkXG4gICAgICBDb21wb25lbnQuX3BhdGggPSBjb21waWxlKHRvLm1hdGNoZWRbbWF0Y2hlc1tpXV0ucGF0aCkodG8ucGFyYW1zKVxuICAgICAgQ29tcG9uZW50Ll9kYXRhUmVmcmVzaCA9IGZhbHNlXG4gICAgICAvLyBDaGVjayBpZiBDb21wb25lbnQgbmVlZCB0byBiZSByZWZyZXNoZWQgKGNhbGwgYXN5bmNEYXRhICYgZmV0Y2gpXG4gICAgICAvLyBPbmx5IGlmIGl0cyBzbHVnIGhhcyBjaGFuZ2VkIG9yIGlzIHdhdGNoIHF1ZXJ5IGNoYW5nZXNcbiAgICAgIGlmICgodGhpcy5fcGF0aENoYW5nZWQgJiYgdGhpcy5fcXVlcnlDaGFuZ2VkKSB8fCBDb21wb25lbnQuX3BhdGggIT09IF9sYXN0UGF0aHNbaV0pIHtcbiAgICAgICAgQ29tcG9uZW50Ll9kYXRhUmVmcmVzaCA9IHRydWVcbiAgICAgIH0gZWxzZSBpZiAoIXRoaXMuX3BhdGhDaGFuZ2VkICYmIHRoaXMuX3F1ZXJ5Q2hhbmdlZCkge1xuICAgICAgICBjb25zdCB3YXRjaFF1ZXJ5ID0gQ29tcG9uZW50Lm9wdGlvbnMud2F0Y2hRdWVyeVxuICAgICAgICBpZiAod2F0Y2hRdWVyeSA9PT0gdHJ1ZSkge1xuICAgICAgICAgIENvbXBvbmVudC5fZGF0YVJlZnJlc2ggPSB0cnVlXG4gICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh3YXRjaFF1ZXJ5KSkge1xuICAgICAgICAgIENvbXBvbmVudC5fZGF0YVJlZnJlc2ggPSB3YXRjaFF1ZXJ5LnNvbWUoa2V5ID0+IHRoaXMuX2RpZmZRdWVyeVtrZXldKVxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB3YXRjaFF1ZXJ5ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgaWYgKCFpbnN0YW5jZXMpIHtcbiAgICAgICAgICAgIGluc3RhbmNlcyA9IGdldE1hdGNoZWRDb21wb25lbnRzSW5zdGFuY2VzKHRvKVxuICAgICAgICAgIH1cbiAgICAgICAgICBDb21wb25lbnQuX2RhdGFSZWZyZXNoID0gd2F0Y2hRdWVyeS5hcHBseShpbnN0YW5jZXNbaV0sIFt0by5xdWVyeSwgZnJvbS5xdWVyeV0pXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICghdGhpcy5faGFkRXJyb3IgJiYgdGhpcy5faXNNb3VudGVkICYmICFDb21wb25lbnQuX2RhdGFSZWZyZXNoKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCBwcm9taXNlcyA9IFtdXG5cbiAgICAgIGNvbnN0IGhhc0FzeW5jRGF0YSA9IChcbiAgICAgICAgQ29tcG9uZW50Lm9wdGlvbnMuYXN5bmNEYXRhICYmXG4gICAgICAgIHR5cGVvZiBDb21wb25lbnQub3B0aW9ucy5hc3luY0RhdGEgPT09ICdmdW5jdGlvbidcbiAgICAgIClcblxuICAgICAgY29uc3QgaGFzRmV0Y2ggPSBCb29sZWFuKENvbXBvbmVudC5vcHRpb25zLmZldGNoKVxuXG4gICAgICBjb25zdCBsb2FkaW5nSW5jcmVhc2UgPSAoaGFzQXN5bmNEYXRhICYmIGhhc0ZldGNoKSA/IDMwIDogNDVcblxuICAgICAgLy8gQ2FsbCBhc3luY0RhdGEoY29udGV4dClcbiAgICAgIGlmIChoYXNBc3luY0RhdGEpIHtcbiAgICAgICAgY29uc3QgcHJvbWlzZSA9IHByb21pc2lmeShDb21wb25lbnQub3B0aW9ucy5hc3luY0RhdGEsIGFwcC5jb250ZXh0KVxuICAgICAgICAgIC50aGVuKChhc3luY0RhdGFSZXN1bHQpID0+IHtcbiAgICAgICAgICAgIGFwcGx5QXN5bmNEYXRhKENvbXBvbmVudCwgYXN5bmNEYXRhUmVzdWx0KVxuXG4gICAgICAgICAgICBpZiAodGhpcy4kbG9hZGluZy5pbmNyZWFzZSkge1xuICAgICAgICAgICAgICB0aGlzLiRsb2FkaW5nLmluY3JlYXNlKGxvYWRpbmdJbmNyZWFzZSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICBwcm9taXNlcy5wdXNoKHByb21pc2UpXG4gICAgICB9XG5cbiAgICAgIC8vIENoZWNrIGRpc2FibGVkIHBhZ2UgbG9hZGluZ1xuICAgICAgdGhpcy4kbG9hZGluZy5tYW51YWwgPSBDb21wb25lbnQub3B0aW9ucy5sb2FkaW5nID09PSBmYWxzZVxuXG4gICAgICAvLyBDYWxsIGZldGNoKGNvbnRleHQpXG4gICAgICBpZiAoaGFzRmV0Y2gpIHtcbiAgICAgICAgbGV0IHAgPSBDb21wb25lbnQub3B0aW9ucy5mZXRjaChhcHAuY29udGV4dClcbiAgICAgICAgaWYgKCFwIHx8ICghKHAgaW5zdGFuY2VvZiBQcm9taXNlKSAmJiAodHlwZW9mIHAudGhlbiAhPT0gJ2Z1bmN0aW9uJykpKSB7XG4gICAgICAgICAgcCA9IFByb21pc2UucmVzb2x2ZShwKVxuICAgICAgICB9XG4gICAgICAgIHAudGhlbigoZmV0Y2hSZXN1bHQpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy4kbG9hZGluZy5pbmNyZWFzZSkge1xuICAgICAgICAgICAgdGhpcy4kbG9hZGluZy5pbmNyZWFzZShsb2FkaW5nSW5jcmVhc2UpXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICBwcm9taXNlcy5wdXNoKHApXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBQcm9taXNlLmFsbChwcm9taXNlcylcbiAgICB9KSlcblxuICAgIC8vIElmIG5vdCByZWRpcmVjdGVkXG4gICAgaWYgKCFuZXh0Q2FsbGVkKSB7XG4gICAgICBpZiAodGhpcy4kbG9hZGluZy5maW5pc2ggJiYgIXRoaXMuJGxvYWRpbmcubWFudWFsKSB7XG4gICAgICAgIHRoaXMuJGxvYWRpbmcuZmluaXNoKClcbiAgICAgIH1cblxuICAgICAgbmV4dCgpXG4gICAgfVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjb25zdCBlcnJvciA9IGVyciB8fCB7fVxuICAgIGlmIChlcnJvci5tZXNzYWdlID09PSAnRVJSX1JFRElSRUNUJykge1xuICAgICAgcmV0dXJuIHRoaXMuJG51eHQuJGVtaXQoJ3JvdXRlQ2hhbmdlZCcsIHRvLCBmcm9tLCBlcnJvcilcbiAgICB9XG4gICAgX2xhc3RQYXRocyA9IFtdXG5cbiAgICBnbG9iYWxIYW5kbGVFcnJvcihlcnJvcilcblxuICAgIC8vIExvYWQgZXJyb3IgbGF5b3V0XG4gICAgbGV0IGxheW91dCA9IChOdXh0RXJyb3Iub3B0aW9ucyB8fCBOdXh0RXJyb3IpLmxheW91dFxuICAgIGlmICh0eXBlb2YgbGF5b3V0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBsYXlvdXQgPSBsYXlvdXQoYXBwLmNvbnRleHQpXG4gICAgfVxuICAgIGF3YWl0IHRoaXMubG9hZExheW91dChsYXlvdXQpXG5cbiAgICB0aGlzLmVycm9yKGVycm9yKVxuICAgIHRoaXMuJG51eHQuJGVtaXQoJ3JvdXRlQ2hhbmdlZCcsIHRvLCBmcm9tLCBlcnJvcilcbiAgICBuZXh0KClcbiAgfVxufVxuXG4vLyBGaXggY29tcG9uZW50cyBmb3JtYXQgaW4gbWF0Y2hlZCwgaXQncyBkdWUgdG8gY29kZS1zcGxpdHRpbmcgb2YgdnVlLXJvdXRlclxuZnVuY3Rpb24gbm9ybWFsaXplQ29tcG9uZW50cyAodG8sIF9fXykge1xuICBmbGF0TWFwQ29tcG9uZW50cyh0bywgKENvbXBvbmVudCwgXywgbWF0Y2gsIGtleSkgPT4ge1xuICAgIGlmICh0eXBlb2YgQ29tcG9uZW50ID09PSAnb2JqZWN0JyAmJiAhQ29tcG9uZW50Lm9wdGlvbnMpIHtcbiAgICAgIC8vIFVwZGF0ZWQgdmlhIHZ1ZS1yb3V0ZXIgcmVzb2x2ZUFzeW5jQ29tcG9uZW50cygpXG4gICAgICBDb21wb25lbnQgPSBWdWUuZXh0ZW5kKENvbXBvbmVudClcbiAgICAgIENvbXBvbmVudC5fQ3RvciA9IENvbXBvbmVudFxuICAgICAgbWF0Y2guY29tcG9uZW50c1trZXldID0gQ29tcG9uZW50XG4gICAgfVxuICAgIHJldHVybiBDb21wb25lbnRcbiAgfSlcbn1cblxuZnVuY3Rpb24gc2hvd05leHRQYWdlICh0bykge1xuICAvLyBIaWRlIGVycm9yIGNvbXBvbmVudCBpZiBubyBlcnJvclxuICBpZiAodGhpcy5faGFkRXJyb3IgJiYgdGhpcy5fZGF0ZUxhc3RFcnJvciA9PT0gdGhpcy4kb3B0aW9ucy5udXh0LmRhdGVFcnIpIHtcbiAgICB0aGlzLmVycm9yKClcbiAgfVxuXG4gIC8vIFNldCBsYXlvdXRcbiAgbGV0IGxheW91dCA9IHRoaXMuJG9wdGlvbnMubnV4dC5lcnJcbiAgICA/IChOdXh0RXJyb3Iub3B0aW9ucyB8fCBOdXh0RXJyb3IpLmxheW91dFxuICAgIDogdG8ubWF0Y2hlZFswXS5jb21wb25lbnRzLmRlZmF1bHQub3B0aW9ucy5sYXlvdXRcblxuICBpZiAodHlwZW9mIGxheW91dCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGxheW91dCA9IGxheW91dChhcHAuY29udGV4dClcbiAgfVxuICB0aGlzLnNldExheW91dChsYXlvdXQpXG59XG5cbi8vIFdoZW4gbmF2aWdhdGluZyBvbiBhIGRpZmZlcmVudCByb3V0ZSBidXQgdGhlIHNhbWUgY29tcG9uZW50IGlzIHVzZWQsIFZ1ZS5qc1xuLy8gV2lsbCBub3QgdXBkYXRlIHRoZSBpbnN0YW5jZSBkYXRhLCBzbyB3ZSBoYXZlIHRvIHVwZGF0ZSAkZGF0YSBvdXJzZWx2ZXNcbmZ1bmN0aW9uIGZpeFByZXBhdGNoICh0bywgX19fKSB7XG4gIGlmICh0aGlzLl9wYXRoQ2hhbmdlZCA9PT0gZmFsc2UgJiYgdGhpcy5fcXVlcnlDaGFuZ2VkID09PSBmYWxzZSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgY29uc3QgaW5zdGFuY2VzID0gZ2V0TWF0Y2hlZENvbXBvbmVudHNJbnN0YW5jZXModG8pXG4gIGNvbnN0IENvbXBvbmVudHMgPSBnZXRNYXRjaGVkQ29tcG9uZW50cyh0bylcblxuICBWdWUubmV4dFRpY2soKCkgPT4ge1xuICAgIGluc3RhbmNlcy5mb3JFYWNoKChpbnN0YW5jZSwgaSkgPT4ge1xuICAgICAgaWYgKCFpbnN0YW5jZSB8fCBpbnN0YW5jZS5faXNEZXN0cm95ZWQpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGlmIChcbiAgICAgICAgaW5zdGFuY2UuY29uc3RydWN0b3IuX2RhdGFSZWZyZXNoICYmXG4gICAgICAgIENvbXBvbmVudHNbaV0gPT09IGluc3RhbmNlLmNvbnN0cnVjdG9yICYmXG4gICAgICAgIGluc3RhbmNlLiR2bm9kZS5kYXRhLmtlZXBBbGl2ZSAhPT0gdHJ1ZSAmJlxuICAgICAgICB0eXBlb2YgaW5zdGFuY2UuY29uc3RydWN0b3Iub3B0aW9ucy5kYXRhID09PSAnZnVuY3Rpb24nXG4gICAgICApIHtcbiAgICAgICAgY29uc3QgbmV3RGF0YSA9IGluc3RhbmNlLmNvbnN0cnVjdG9yLm9wdGlvbnMuZGF0YS5jYWxsKGluc3RhbmNlKVxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBuZXdEYXRhKSB7XG4gICAgICAgICAgVnVlLnNldChpbnN0YW5jZS4kZGF0YSwga2V5LCBuZXdEYXRhW2tleV0pXG4gICAgICAgIH1cblxuICAgICAgICAvLyBFbnN1cmUgdG8gdHJpZ2dlciBzY3JvbGwgZXZlbnQgYWZ0ZXIgY2FsbGluZyBzY3JvbGxCZWhhdmlvclxuICAgICAgICB3aW5kb3cuJG51eHQuJG5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgICB3aW5kb3cuJG51eHQuJGVtaXQoJ3RyaWdnZXJTY3JvbGwnKVxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0pXG4gICAgc2hvd05leHRQYWdlLmNhbGwodGhpcywgdG8pXG4gIH0pXG59XG5cbmZ1bmN0aW9uIG51eHRSZWFkeSAoX2FwcCkge1xuICB3aW5kb3cub25OdXh0UmVhZHlDYnMuZm9yRWFjaCgoY2IpID0+IHtcbiAgICBpZiAodHlwZW9mIGNiID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBjYihfYXBwKVxuICAgIH1cbiAgfSlcbiAgLy8gU3BlY2lhbCBKU0RPTVxuICBpZiAodHlwZW9mIHdpbmRvdy5fb25OdXh0TG9hZGVkID09PSAnZnVuY3Rpb24nKSB7XG4gICAgd2luZG93Ll9vbk51eHRMb2FkZWQoX2FwcClcbiAgfVxuICAvLyBBZGQgcm91dGVyIGhvb2tzXG4gIHJvdXRlci5hZnRlckVhY2goKHRvLCBmcm9tKSA9PiB7XG4gICAgLy8gV2FpdCBmb3IgZml4UHJlcGF0Y2ggKyAkZGF0YSB1cGRhdGVzXG4gICAgVnVlLm5leHRUaWNrKCgpID0+IF9hcHAuJG51eHQuJGVtaXQoJ3JvdXRlQ2hhbmdlZCcsIHRvLCBmcm9tKSlcbiAgfSlcbn1cblxuYXN5bmMgZnVuY3Rpb24gbW91bnRBcHAgKF9fYXBwKSB7XG4gIC8vIFNldCBnbG9iYWwgdmFyaWFibGVzXG4gIGFwcCA9IF9fYXBwLmFwcFxuICByb3V0ZXIgPSBfX2FwcC5yb3V0ZXJcbiAgc3RvcmUgPSBfX2FwcC5zdG9yZVxuXG4gIC8vIENyZWF0ZSBWdWUgaW5zdGFuY2VcbiAgY29uc3QgX2FwcCA9IG5ldyBWdWUoYXBwKVxuXG4gIC8vIE1vdW50cyBWdWUgYXBwIHRvIERPTSBlbGVtZW50XG4gIGNvbnN0IG1vdW50ID0gKCkgPT4ge1xuICAgIF9hcHAuJG1vdW50KCcjX19udXh0JylcblxuICAgIC8vIEFkZCBhZnRlckVhY2ggcm91dGVyIGhvb2tzXG4gICAgcm91dGVyLmFmdGVyRWFjaChub3JtYWxpemVDb21wb25lbnRzKVxuICAgIHJvdXRlci5hZnRlckVhY2goZml4UHJlcGF0Y2guYmluZChfYXBwKSlcblxuICAgIC8vIExpc3RlbiBmb3IgZmlyc3QgVnVlIHVwZGF0ZVxuICAgIFZ1ZS5uZXh0VGljaygoKSA9PiB7XG4gICAgICAvLyBDYWxsIHdpbmRvdy57e2dsb2JhbHMucmVhZHlDYWxsYmFja319IGNhbGxiYWNrc1xuICAgICAgbnV4dFJlYWR5KF9hcHApXG4gICAgfSlcbiAgfVxuXG4gIC8vIFJlc29sdmUgcm91dGUgY29tcG9uZW50c1xuICBjb25zdCBDb21wb25lbnRzID0gYXdhaXQgUHJvbWlzZS5hbGwocmVzb2x2ZUNvbXBvbmVudHMocm91dGVyKSlcblxuICAvLyBFbmFibGUgdHJhbnNpdGlvbnNcbiAgX2FwcC5zZXRUcmFuc2l0aW9ucyA9IF9hcHAuJG9wdGlvbnMubnV4dC5zZXRUcmFuc2l0aW9ucy5iaW5kKF9hcHApXG4gIGlmIChDb21wb25lbnRzLmxlbmd0aCkge1xuICAgIF9hcHAuc2V0VHJhbnNpdGlvbnMobWFwVHJhbnNpdGlvbnMoQ29tcG9uZW50cywgcm91dGVyLmN1cnJlbnRSb3V0ZSkpXG4gICAgX2xhc3RQYXRocyA9IHJvdXRlci5jdXJyZW50Um91dGUubWF0Y2hlZC5tYXAocm91dGUgPT4gY29tcGlsZShyb3V0ZS5wYXRoKShyb3V0ZXIuY3VycmVudFJvdXRlLnBhcmFtcykpXG4gIH1cblxuICAvLyBJbml0aWFsaXplIGVycm9yIGhhbmRsZXJcbiAgX2FwcC4kbG9hZGluZyA9IHt9IC8vIFRvIGF2b2lkIGVycm9yIHdoaWxlIF9hcHAuJG51eHQgZG9lcyBub3QgZXhpc3RcbiAgaWYgKE5VWFQuZXJyb3IpIHtcbiAgICBfYXBwLmVycm9yKE5VWFQuZXJyb3IpXG4gIH1cblxuICAvLyBBZGQgYmVmb3JlRWFjaCByb3V0ZXIgaG9va3NcbiAgcm91dGVyLmJlZm9yZUVhY2gobG9hZEFzeW5jQ29tcG9uZW50cy5iaW5kKF9hcHApKVxuICByb3V0ZXIuYmVmb3JlRWFjaChyZW5kZXIuYmluZChfYXBwKSlcblxuICAvLyBJZiBwYWdlIGFscmVhZHkgaXMgc2VydmVyIHJlbmRlcmVkXG4gIGlmIChOVVhULnNlcnZlclJlbmRlcmVkKSB7XG4gICAgbW91bnQoKVxuICAgIHJldHVyblxuICB9XG5cbiAgLy8gRmlyc3QgcmVuZGVyIG9uIGNsaWVudC1zaWRlXG4gIGNvbnN0IGNsaWVudEZpcnN0TW91bnQgPSAoKSA9PiB7XG4gICAgbm9ybWFsaXplQ29tcG9uZW50cyhyb3V0ZXIuY3VycmVudFJvdXRlLCByb3V0ZXIuY3VycmVudFJvdXRlKVxuICAgIHNob3dOZXh0UGFnZS5jYWxsKF9hcHAsIHJvdXRlci5jdXJyZW50Um91dGUpXG4gICAgLy8gRG9uJ3QgY2FsbCBmaXhQcmVwYXRjaC5jYWxsKF9hcHAsIHJvdXRlci5jdXJyZW50Um91dGUsIHJvdXRlci5jdXJyZW50Um91dGUpIHNpbmNlIGl0J3MgZmlyc3QgcmVuZGVyXG4gICAgbW91bnQoKVxuICB9XG5cbiAgcmVuZGVyLmNhbGwoX2FwcCwgcm91dGVyLmN1cnJlbnRSb3V0ZSwgcm91dGVyLmN1cnJlbnRSb3V0ZSwgKHBhdGgpID0+IHtcbiAgICAvLyBJZiBub3QgcmVkaXJlY3RlZFxuICAgIGlmICghcGF0aCkge1xuICAgICAgY2xpZW50Rmlyc3RNb3VudCgpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICAvLyBBZGQgYSBvbmUtdGltZSBhZnRlckVhY2ggaG9vayB0b1xuICAgIC8vIG1vdW50IHRoZSBhcHAgd2FpdCBmb3IgcmVkaXJlY3QgYW5kIHJvdXRlIGdldHMgcmVzb2x2ZWRcbiAgICBjb25zdCB1bnJlZ2lzdGVySG9vayA9IHJvdXRlci5hZnRlckVhY2goKHRvLCBmcm9tKSA9PiB7XG4gICAgICB1bnJlZ2lzdGVySG9vaygpXG4gICAgICBjbGllbnRGaXJzdE1vdW50KClcbiAgICB9KVxuXG4gICAgLy8gUHVzaCB0aGUgcGF0aCBhbmQgbGV0IHJvdXRlIHRvIGJlIHJlc29sdmVkXG4gICAgcm91dGVyLnB1c2gocGF0aCwgdW5kZWZpbmVkLCAoZXJyKSA9PiB7XG4gICAgICBpZiAoZXJyKSB7XG4gICAgICAgIGVycm9ySGFuZGxlcihlcnIpXG4gICAgICB9XG4gICAgfSlcbiAgfSlcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///146\n')},171:function(module,__webpack_exports__,__webpack_require__){"use strict";eval("/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_3_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_3_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_3_oneOf_1_2_node_modules_vuetify_loader_lib_loader_js_ref_16_0_node_modules_vue_loader_lib_index_js_vue_loader_options_error_vue_vue_type_style_index_0_id_481e28b8_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(75);\n/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_3_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_3_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_3_oneOf_1_2_node_modules_vuetify_loader_lib_loader_js_ref_16_0_node_modules_vue_loader_lib_index_js_vue_loader_options_error_vue_vue_type_style_index_0_id_481e28b8_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_style_loader_index_js_ref_3_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_3_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_3_oneOf_1_2_node_modules_vuetify_loader_lib_loader_js_ref_16_0_node_modules_vue_loader_lib_index_js_vue_loader_options_error_vue_vue_type_style_index_0_id_481e28b8_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__);\n/* unused harmony reexport * */\n /* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_vue_style_loader_index_js_ref_3_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_3_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_3_oneOf_1_2_node_modules_vuetify_loader_lib_loader_js_ref_16_0_node_modules_vue_loader_lib_index_js_vue_loader_options_error_vue_vue_type_style_index_0_id_481e28b8_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9sYXlvdXRzL2Vycm9yLnZ1ZT9kZTAyIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUEwYixDQUFnQiwwZkFBRyxFQUFDIiwiZmlsZSI6IjE3MS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vbm9kZV9tb2R1bGVzL3Z1ZS1zdHlsZS1sb2FkZXIvaW5kZXguanM/P3JlZi0tMy1vbmVPZi0xLTAhLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMy1vbmVPZi0xLTEhLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanM/P3JlZi0tMy1vbmVPZi0xLTIhLi4vbm9kZV9tb2R1bGVzL3Z1ZXRpZnktbG9hZGVyL2xpYi9sb2FkZXIuanM/P3JlZi0tMTYtMCEuLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL2Vycm9yLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTQ4MWUyOGI4JnNjb3BlZD10cnVlJmxhbmc9Y3NzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uL25vZGVfbW9kdWxlcy92dWUtc3R5bGUtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTMtb25lT2YtMS0wIS4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTMtb25lT2YtMS0xIS4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3N0eWxlUG9zdExvYWRlci5qcyEuLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPz9yZWYtLTMtb25lT2YtMS0yIS4uL25vZGVfbW9kdWxlcy92dWV0aWZ5LWxvYWRlci9saWIvbG9hZGVyLmpzPz9yZWYtLTE2LTAhLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9lcnJvci52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD00ODFlMjhiOCZzY29wZWQ9dHJ1ZSZsYW5nPWNzcyZcIiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///171\n")},172:function(module,exports,__webpack_require__){eval('// Imports\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(44);\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.i, "h1[data-v-481e28b8]{font-size:20px}", ""]);\n// Exports\nmodule.exports = exports;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9sYXlvdXRzL2Vycm9yLnZ1ZT9lYTc1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0Esa0NBQWtDLG1CQUFPLENBQUMsRUFBZ0Q7QUFDMUY7QUFDQTtBQUNBLGNBQWMsUUFBUyx1QkFBdUIsZUFBZTtBQUM3RDtBQUNBIiwiZmlsZSI6IjE3Mi5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEltcG9ydHNcbnZhciBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gPSByZXF1aXJlKFwiLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiKTtcbmV4cG9ydHMgPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oZmFsc2UpO1xuLy8gTW9kdWxlXG5leHBvcnRzLnB1c2goW21vZHVsZS5pZCwgXCJoMVtkYXRhLXYtNDgxZTI4Yjhde2ZvbnQtc2l6ZToyMHB4fVwiLCBcIlwiXSk7XG4vLyBFeHBvcnRzXG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHM7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///172\n')},175:function(module,__webpack_exports__,__webpack_require__){"use strict";eval("/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_3_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_3_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_3_oneOf_1_2_node_modules_vuetify_loader_lib_loader_js_ref_16_0_node_modules_vue_loader_lib_index_js_vue_loader_options_nuxt_loading_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(76);\n/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_3_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_3_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_3_oneOf_1_2_node_modules_vuetify_loader_lib_loader_js_ref_16_0_node_modules_vue_loader_lib_index_js_vue_loader_options_nuxt_loading_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_style_loader_index_js_ref_3_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_3_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_3_oneOf_1_2_node_modules_vuetify_loader_lib_loader_js_ref_16_0_node_modules_vue_loader_lib_index_js_vue_loader_options_nuxt_loading_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__);\n/* unused harmony reexport * */\n /* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_vue_style_loader_index_js_ref_3_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_3_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_3_oneOf_1_2_node_modules_vuetify_loader_lib_loader_js_ref_16_0_node_modules_vue_loader_lib_index_js_vue_loader_options_nuxt_loading_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi8ubnV4dC9jb21wb25lbnRzL251eHQtbG9hZGluZy52dWU/NDkyMSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBMmIsQ0FBZ0IseWVBQUcsRUFBQyIsImZpbGUiOiIxNzUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9kIGZyb20gXCItIS4uLy4uL25vZGVfbW9kdWxlcy92dWUtc3R5bGUtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTMtb25lT2YtMS0wIS4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9yZWYtLTMtb25lT2YtMS0xIS4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPz9yZWYtLTMtb25lT2YtMS0yIS4uLy4uL25vZGVfbW9kdWxlcy92dWV0aWZ5LWxvYWRlci9saWIvbG9hZGVyLmpzPz9yZWYtLTE2LTAhLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9udXh0LWxvYWRpbmcudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmbGFuZz1jc3MmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1zdHlsZS1sb2FkZXIvaW5kZXguanM/P3JlZi0tMy1vbmVPZi0xLTAhLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P3JlZi0tMy1vbmVPZi0xLTEhLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4uLy4uL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanM/P3JlZi0tMy1vbmVPZi0xLTIhLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZXRpZnktbG9hZGVyL2xpYi9sb2FkZXIuanM/P3JlZi0tMTYtMCEuLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL251eHQtbG9hZGluZy52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZsYW5nPWNzcyZcIiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///175\n")},176:function(module,exports,__webpack_require__){eval('// Imports\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(44);\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.i, ".nuxt-progress{position:fixed;top:0;left:0;right:0;height:2px;width:0;opacity:1;-webkit-transition:width .1s,opacity .4s;transition:width .1s,opacity .4s;background-color:#fff;z-index:999999}.nuxt-progress.nuxt-progress-notransition{-webkit-transition:none;transition:none}.nuxt-progress-failed{background-color:red}", ""]);\n// Exports\nmodule.exports = exports;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi8ubnV4dC9jb21wb25lbnRzL251eHQtbG9hZGluZy52dWU/NWI1YiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBLGtDQUFrQyxtQkFBTyxDQUFDLEVBQW1EO0FBQzdGO0FBQ0E7QUFDQSxjQUFjLFFBQVMsa0JBQWtCLGVBQWUsTUFBTSxPQUFPLFFBQVEsV0FBVyxRQUFRLFVBQVUseUNBQXlDLGlDQUFpQyxzQkFBc0IsZUFBZSwwQ0FBMEMsd0JBQXdCLGdCQUFnQixzQkFBc0IscUJBQXFCO0FBQ3RWO0FBQ0EiLCJmaWxlIjoiMTc2LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gSW1wb3J0c1xudmFyIF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyA9IHJlcXVpcmUoXCIuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCIpO1xuZXhwb3J0cyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhmYWxzZSk7XG4vLyBNb2R1bGVcbmV4cG9ydHMucHVzaChbbW9kdWxlLmlkLCBcIi5udXh0LXByb2dyZXNze3Bvc2l0aW9uOmZpeGVkO3RvcDowO2xlZnQ6MDtyaWdodDowO2hlaWdodDoycHg7d2lkdGg6MDtvcGFjaXR5OjE7LXdlYmtpdC10cmFuc2l0aW9uOndpZHRoIC4xcyxvcGFjaXR5IC40czt0cmFuc2l0aW9uOndpZHRoIC4xcyxvcGFjaXR5IC40cztiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7ei1pbmRleDo5OTk5OTl9Lm51eHQtcHJvZ3Jlc3MubnV4dC1wcm9ncmVzcy1ub3RyYW5zaXRpb257LXdlYmtpdC10cmFuc2l0aW9uOm5vbmU7dHJhbnNpdGlvbjpub25lfS5udXh0LXByb2dyZXNzLWZhaWxlZHtiYWNrZ3JvdW5kLWNvbG9yOnJlZH1cIiwgXCJcIl0pO1xuLy8gRXhwb3J0c1xubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///176\n')},177:function(module,__webpack_exports__,__webpack_require__){"use strict";eval("/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_3_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_3_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_3_oneOf_1_2_node_modules_vuetify_loader_lib_loader_js_ref_16_0_node_modules_vue_loader_lib_index_js_vue_loader_options_default_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(77);\n/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_3_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_3_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_3_oneOf_1_2_node_modules_vuetify_loader_lib_loader_js_ref_16_0_node_modules_vue_loader_lib_index_js_vue_loader_options_default_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_style_loader_index_js_ref_3_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_3_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_3_oneOf_1_2_node_modules_vuetify_loader_lib_loader_js_ref_16_0_node_modules_vue_loader_lib_index_js_vue_loader_options_default_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__);\n/* unused harmony reexport * */\n /* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_vue_style_loader_index_js_ref_3_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_3_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_3_oneOf_1_2_node_modules_vuetify_loader_lib_loader_js_ref_16_0_node_modules_vue_loader_lib_index_js_vue_loader_options_default_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9sYXlvdXRzL2RlZmF1bHQudnVlP2Y5MjIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQW9hLENBQWdCLG9lQUFHLEVBQUMiLCJmaWxlIjoiMTc3LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG1vZCBmcm9tIFwiLSEuLi9ub2RlX21vZHVsZXMvdnVlLXN0eWxlLWxvYWRlci9pbmRleC5qcz8/cmVmLS0zLW9uZU9mLTEtMCEuLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0zLW9uZU9mLTEtMSEuLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcz8/cmVmLS0zLW9uZU9mLTEtMiEuLi9ub2RlX21vZHVsZXMvdnVldGlmeS1sb2FkZXIvbGliL2xvYWRlci5qcz8/cmVmLS0xNi0wIS4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vZGVmYXVsdC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZsYW5nPWNzcyZcIjsgZXhwb3J0IGRlZmF1bHQgbW9kOyBleHBvcnQgKiBmcm9tIFwiLSEuLi9ub2RlX21vZHVsZXMvdnVlLXN0eWxlLWxvYWRlci9pbmRleC5qcz8/cmVmLS0zLW9uZU9mLTEtMCEuLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cmVmLS0zLW9uZU9mLTEtMSEuLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcz8/cmVmLS0zLW9uZU9mLTEtMiEuLi9ub2RlX21vZHVsZXMvdnVldGlmeS1sb2FkZXIvbGliL2xvYWRlci5qcz8/cmVmLS0xNi0wIS4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vZGVmYXVsdC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZsYW5nPWNzcyZcIiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///177\n")},178:function(module,exports,__webpack_require__){eval('// Imports\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(44);\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.i, "html{font-family:Source Sans Pro,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:16px;word-spacing:1px;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;box-sizing:border-box}*,:after,:before{box-sizing:border-box;margin:0}.button--purple{display:inline-block;border-radius:4px;border:1px solid #0c1439;color:#0c1439;text-decoration:none;padding:10px 30px}.button--purple:hover{color:#fff;background-color:#0c1439}.button--grey{display:inline-block;border-radius:4px;border:1px solid #35495e;color:#35495e;text-decoration:none;padding:10px 30px;margin-left:15px}.button--grey:hover{color:#fff;background-color:#35495e}", ""]);\n// Exports\nmodule.exports = exports;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9sYXlvdXRzL2RlZmF1bHQudnVlPzBlZjEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQSxrQ0FBa0MsbUJBQU8sQ0FBQyxFQUFnRDtBQUMxRjtBQUNBO0FBQ0EsY0FBYyxRQUFTLFFBQVEsNkdBQTZHLGVBQWUsaUJBQWlCLDBCQUEwQiw4QkFBOEIsa0NBQWtDLG1DQUFtQyxzQkFBc0IsaUJBQWlCLHNCQUFzQixTQUFTLGdCQUFnQixxQkFBcUIsa0JBQWtCLHlCQUF5QixjQUFjLHFCQUFxQixrQkFBa0Isc0JBQXNCLFdBQVcseUJBQXlCLGNBQWMscUJBQXFCLGtCQUFrQix5QkFBeUIsY0FBYyxxQkFBcUIsa0JBQWtCLGlCQUFpQixvQkFBb0IsV0FBVyx5QkFBeUI7QUFDMXZCO0FBQ0EiLCJmaWxlIjoiMTc4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gSW1wb3J0c1xudmFyIF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyA9IHJlcXVpcmUoXCIuLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCIpO1xuZXhwb3J0cyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhmYWxzZSk7XG4vLyBNb2R1bGVcbmV4cG9ydHMucHVzaChbbW9kdWxlLmlkLCBcImh0bWx7Zm9udC1mYW1pbHk6U291cmNlIFNhbnMgUHJvLC1hcHBsZS1zeXN0ZW0sQmxpbmtNYWNTeXN0ZW1Gb250LFNlZ29lIFVJLFJvYm90byxIZWx2ZXRpY2EgTmV1ZSxBcmlhbCxzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4O3dvcmQtc3BhY2luZzoxcHg7LW1zLXRleHQtc2l6ZS1hZGp1c3Q6MTAwJTstd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6MTAwJTstbW96LW9zeC1mb250LXNtb290aGluZzpncmF5c2NhbGU7LXdlYmtpdC1mb250LXNtb290aGluZzphbnRpYWxpYXNlZDtib3gtc2l6aW5nOmJvcmRlci1ib3h9Kiw6YWZ0ZXIsOmJlZm9yZXtib3gtc2l6aW5nOmJvcmRlci1ib3g7bWFyZ2luOjB9LmJ1dHRvbi0tcHVycGxle2Rpc3BsYXk6aW5saW5lLWJsb2NrO2JvcmRlci1yYWRpdXM6NHB4O2JvcmRlcjoxcHggc29saWQgIzBjMTQzOTtjb2xvcjojMGMxNDM5O3RleHQtZGVjb3JhdGlvbjpub25lO3BhZGRpbmc6MTBweCAzMHB4fS5idXR0b24tLXB1cnBsZTpob3Zlcntjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6IzBjMTQzOX0uYnV0dG9uLS1ncmV5e2Rpc3BsYXk6aW5saW5lLWJsb2NrO2JvcmRlci1yYWRpdXM6NHB4O2JvcmRlcjoxcHggc29saWQgIzM1NDk1ZTtjb2xvcjojMzU0OTVlO3RleHQtZGVjb3JhdGlvbjpub25lO3BhZGRpbmc6MTBweCAzMHB4O21hcmdpbi1sZWZ0OjE1cHh9LmJ1dHRvbi0tZ3JleTpob3Zlcntjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6IzM1NDk1ZX1cIiwgXCJcIl0pO1xuLy8gRXhwb3J0c1xubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///178\n')},179:function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "state", function() { return state; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getters", function() { return getters; });\nvar state = function state() {\n return {};\n};\nvar getters = {};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zdG9yZS9pbmRleC5qcz85MTAxIl0sIm5hbWVzIjpbInN0YXRlIiwiZ2V0dGVycyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQU8sSUFBTUEsS0FBSyxHQUFHLFNBQVJBLEtBQVE7QUFBQSxTQUFPLEVBQVA7QUFBQSxDQUFkO0FBSUEsSUFBTUMsT0FBTyxHQUFHLEVBQWhCIiwiZmlsZSI6IjE3OS5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBzdGF0ZSA9ICgpID0+ICh7XG5cbn0pXG5cbmV4cG9ydCBjb25zdCBnZXR0ZXJzID0ge30iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///179\n')},180:function(module,__webpack_exports__,__webpack_require__){"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"state\", function() { return state; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mutations\", function() { return mutations; });\n// https://www.mikestreety.co.uk/blog/vue-js-using-localstorage-with-the-vuex-store\nvar state = function state() {\n return {\n isDrawerOpen: true,\n isDrawerPinned: false\n };\n};\nvar mutations = {\n // initializeStore(state) {\n // if(localStorage.getItem('store')) {\n // this.replaceState(\n // Object.assign(state,JSON.parse(localStorage.getItem('store')))\n // );\n // }\n // },\n toggleDrawerState: function toggleDrawerState(state, newDrawerState) {\n if (state.isDrawerPinned) {\n return;\n }\n\n state.isDrawerOpen = !state.isDrawerOpen;\n },\n setDrawer: function setDrawer(state, newDrawerState) {\n if (state.isDrawerPinned) {\n return;\n }\n\n state.isDrawerOpen = newDrawerState;\n },\n setMenuLock: function setMenuLock(state, newLockState) {\n state.isDrawerPinned = newLockState;\n }\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zdG9yZS9kb2NzLmpzPzNiYjAiXSwibmFtZXMiOlsic3RhdGUiLCJpc0RyYXdlck9wZW4iLCJpc0RyYXdlclBpbm5lZCIsIm11dGF0aW9ucyIsInRvZ2dsZURyYXdlclN0YXRlIiwibmV3RHJhd2VyU3RhdGUiLCJzZXREcmF3ZXIiLCJzZXRNZW51TG9jayIsIm5ld0xvY2tTdGF0ZSJdLCJtYXBwaW5ncyI6IkFBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDTyxJQUFNQSxLQUFLLEdBQUcsU0FBUkEsS0FBUTtBQUFBLFNBQU87QUFDeEJDLGdCQUFZLEVBQUUsSUFEVTtBQUV4QkMsa0JBQWMsRUFBRTtBQUZRLEdBQVA7QUFBQSxDQUFkO0FBS0EsSUFBTUMsU0FBUyxHQUFHO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0FDLG1CQVJxQiw2QkFRSEosS0FSRyxFQVFJSyxjQVJKLEVBUW9CO0FBQ3JDLFFBQUlMLEtBQUssQ0FBQ0UsY0FBVixFQUEwQjtBQUN0QjtBQUNIOztBQUNERixTQUFLLENBQUNDLFlBQU4sR0FBbUIsQ0FBQ0QsS0FBSyxDQUFDQyxZQUExQjtBQUNILEdBYm9CO0FBY3JCSyxXQWRxQixxQkFjWE4sS0FkVyxFQWNKSyxjQWRJLEVBY1k7QUFDN0IsUUFBSUwsS0FBSyxDQUFDRSxjQUFWLEVBQTBCO0FBQ3RCO0FBQ0g7O0FBQ0RGLFNBQUssQ0FBQ0MsWUFBTixHQUFtQkksY0FBbkI7QUFDSCxHQW5Cb0I7QUFvQnJCRSxhQXBCcUIsdUJBb0JUUCxLQXBCUyxFQW9CRlEsWUFwQkUsRUFvQlk7QUFDN0JSLFNBQUssQ0FBQ0UsY0FBTixHQUFxQk0sWUFBckI7QUFDSDtBQXRCb0IsQ0FBbEIiLCJmaWxlIjoiMTgwLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXG4vLyBodHRwczovL3d3dy5taWtlc3RyZWV0eS5jby51ay9ibG9nL3Z1ZS1qcy11c2luZy1sb2NhbHN0b3JhZ2Utd2l0aC10aGUtdnVleC1zdG9yZVxuZXhwb3J0IGNvbnN0IHN0YXRlID0gKCkgPT4gKHtcbiAgICBpc0RyYXdlck9wZW46IHRydWUsXG4gICAgaXNEcmF3ZXJQaW5uZWQ6IGZhbHNlXG59KTtcblxuZXhwb3J0IGNvbnN0IG11dGF0aW9ucyA9IHtcbiAgICAvLyBpbml0aWFsaXplU3RvcmUoc3RhdGUpIHtcbiAgICAvLyAgICAgaWYobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3N0b3JlJykpIHtcbiAgICAvLyAgICAgICAgIHRoaXMucmVwbGFjZVN0YXRlKFxuICAgIC8vICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oc3RhdGUsSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnc3RvcmUnKSkpXG4gICAgLy8gICAgICAgICApO1xuICAgIC8vICAgICB9XG4gICAgLy8gfSxcbiAgICB0b2dnbGVEcmF3ZXJTdGF0ZShzdGF0ZSwgbmV3RHJhd2VyU3RhdGUpIHtcbiAgICAgICAgaWYgKHN0YXRlLmlzRHJhd2VyUGlubmVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgc3RhdGUuaXNEcmF3ZXJPcGVuPSFzdGF0ZS5pc0RyYXdlck9wZW47XG4gICAgfSxcbiAgICBzZXREcmF3ZXIoc3RhdGUsIG5ld0RyYXdlclN0YXRlKSB7XG4gICAgICAgIGlmIChzdGF0ZS5pc0RyYXdlclBpbm5lZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHN0YXRlLmlzRHJhd2VyT3Blbj1uZXdEcmF3ZXJTdGF0ZTtcbiAgICB9LFxuICAgIHNldE1lbnVMb2NrKHN0YXRlLCBuZXdMb2NrU3RhdGUpIHtcbiAgICAgICAgc3RhdGUuaXNEcmF3ZXJQaW5uZWQ9bmV3TG9ja1N0YXRlO1xuICAgIH1cbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///180\n")},28:function(module,__webpack_exports__,__webpack_require__){"use strict";eval("\n// EXTERNAL MODULE: ./node_modules/regenerator-runtime/runtime.js\nvar runtime = __webpack_require__(63);\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es7.object.get-own-property-descriptors.js\nvar es7_object_get_own_property_descriptors = __webpack_require__(25);\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.symbol.js\nvar es6_symbol = __webpack_require__(10);\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/web.dom.iterable.js\nvar web_dom_iterable = __webpack_require__(7);\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.object.to-string.js\nvar es6_object_to_string = __webpack_require__(6);\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.object.keys.js\nvar es6_object_keys = __webpack_require__(23);\n\n// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js\nvar asyncToGenerator = __webpack_require__(12);\n\n// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/defineProperty.js\nvar defineProperty = __webpack_require__(3);\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.function.name.js\nvar es6_function_name = __webpack_require__(29);\n\n// EXTERNAL MODULE: ./node_modules/vue/dist/vue.runtime.esm.js\nvar vue_runtime_esm = __webpack_require__(0);\n\n// EXTERNAL MODULE: ./node_modules/vue-meta/dist/vue-meta.esm.browser.js\nvar vue_meta_esm_browser = __webpack_require__(132);\n\n// EXTERNAL MODULE: ./node_modules/vue-client-only/dist/vue-client-only.common.js\nvar vue_client_only_common = __webpack_require__(91);\nvar vue_client_only_common_default = /*#__PURE__*/__webpack_require__.n(vue_client_only_common);\n\n// EXTERNAL MODULE: ./node_modules/vue-no-ssr/dist/vue-no-ssr.common.js\nvar vue_no_ssr_common = __webpack_require__(43);\nvar vue_no_ssr_common_default = /*#__PURE__*/__webpack_require__.n(vue_no_ssr_common);\n\n// EXTERNAL MODULE: ./node_modules/vue-router/dist/vue-router.esm.js\nvar vue_router_esm = __webpack_require__(57);\n\n// EXTERNAL MODULE: ./.nuxt/utils.js\nvar utils = __webpack_require__(1);\n\n// CONCATENATED MODULE: ./.nuxt/router.scrollBehavior.js\n\n\n\nif (true) {\n if ('scrollRestoration' in window.history) {\n window.history.scrollRestoration = 'manual'; // reset scrollRestoration to auto when leaving page, allowing page reload\n // and back-navigation from other pages to use the browser to restore the\n // scrolling position.\n\n window.addEventListener('beforeunload', function () {\n window.history.scrollRestoration = 'auto';\n }); // Setting scrollRestoration to manual again when returning to this page.\n\n window.addEventListener('load', function () {\n window.history.scrollRestoration = 'manual';\n });\n }\n}\n\n/* harmony default export */ var router_scrollBehavior = (function (to, from, savedPosition) {\n // if the returned position is falsy or an empty object,\n // will retain current scroll position.\n var position = false; // if no children detected and scrollToTop is not explicitly disabled\n\n var Pages = Object(utils[\"e\" /* getMatchedComponents */])(to);\n\n if (Pages.length < 2 && Pages.every(function (Page) {\n return Page.options.scrollToTop !== false;\n })) {\n // scroll to the top of the page\n position = {\n x: 0,\n y: 0\n };\n } else if (Pages.some(function (Page) {\n return Page.options.scrollToTop;\n })) {\n // if one of the children has scrollToTop option set to true\n position = {\n x: 0,\n y: 0\n };\n } // savedPosition is only available for popstate navigations (back button)\n\n\n if (savedPosition) {\n position = savedPosition;\n }\n\n var nuxt = window.$nuxt; // triggerScroll is only fired when a new component is loaded\n\n if (to.path === from.path && to.hash !== from.hash) {\n nuxt.$nextTick(function () {\n return nuxt.$emit('triggerScroll');\n });\n }\n\n return new Promise(function (resolve) {\n // wait for the out transition to complete (if necessary)\n nuxt.$once('triggerScroll', function () {\n // coords will be used if no selector is provided,\n // or if the selector didn't match any element.\n if (to.hash) {\n var hash = to.hash; // CSS.escape() is not supported with IE and Edge.\n\n if (typeof window.CSS !== 'undefined' && typeof window.CSS.escape !== 'undefined') {\n hash = '#' + window.CSS.escape(hash.substr(1));\n }\n\n try {\n if (document.querySelector(hash)) {\n // scroll to anchor by returning the selector\n position = {\n selector: hash\n };\n }\n } catch (e) {\n console.warn('Failed to save scroll position. Please add CSS.escape() polyfill (https://github.com/mathiasbynens/CSS.escape).');\n }\n }\n\n resolve(position);\n });\n });\n});\n// CONCATENATED MODULE: ./.nuxt/router.js\n\n\n\n\n\nvar router_8962b8b0 = function _8962b8b0() {\n return Object(utils[\"j\" /* interopDefault */])(Promise.all(/* import() | pages/docs/index */[__webpack_require__.e(0), __webpack_require__.e(1), __webpack_require__.e(5)]).then(__webpack_require__.bind(null, 373)));\n};\n\nvar router_38f1a292 = function _38f1a292() {\n return Object(utils[\"j\" /* interopDefault */])(Promise.all(/* import() | pages/docs/namespaces */[__webpack_require__.e(0), __webpack_require__.e(6)]).then(__webpack_require__.bind(null, 372)));\n};\n\nvar router_8ccffb40 = function _8ccffb40() {\n return Object(utils[\"j\" /* interopDefault */])(Promise.all(/* import() | pages/docs/_slug */[__webpack_require__.e(0), __webpack_require__.e(1), __webpack_require__.e(4)]).then(__webpack_require__.bind(null, 374)));\n};\n\nvar router_5ad8f718 = function _5ad8f718() {\n return Object(utils[\"j\" /* interopDefault */])(__webpack_require__.e(/* import() | pages/index */ 7).then(__webpack_require__.bind(null, 371)));\n}; // TODO: remove in Nuxt 3\n\n\nvar emptyFn = function emptyFn() {};\n\nvar originalPush = vue_router_esm[\"a\" /* default */].prototype.push;\n\nvue_router_esm[\"a\" /* default */].prototype.push = function push(location) {\n var onComplete = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : emptyFn;\n var onAbort = arguments.length > 2 ? arguments[2] : undefined;\n return originalPush.call(this, location, onComplete, onAbort);\n};\n\nvue_runtime_esm[\"a\" /* default */].use(vue_router_esm[\"a\" /* default */]);\nvar routerOptions = {\n mode: 'hash',\n base: decodeURI('/'),\n linkActiveClass: 'nuxt-link-active',\n linkExactActiveClass: 'nuxt-link-exact-active',\n scrollBehavior: router_scrollBehavior,\n routes: [{\n path: \"/docs\",\n component: router_8962b8b0,\n name: \"docs\"\n }, {\n path: \"/docs/namespaces\",\n component: router_38f1a292,\n name: \"docs-namespaces\"\n }, {\n path: \"/docs/:slug\",\n component: router_8ccffb40,\n name: \"docs-slug\"\n }, {\n path: \"/\",\n component: router_5ad8f718,\n name: \"index\"\n }],\n fallback: false\n};\nfunction createRouter() {\n return new vue_router_esm[\"a\" /* default */](routerOptions);\n}\n// CONCATENATED MODULE: ./.nuxt/components/nuxt-child.js\n/* harmony default export */ var nuxt_child = ({\n name: 'NuxtChild',\n functional: true,\n props: {\n nuxtChildKey: {\n type: String,\n default: ''\n },\n keepAlive: Boolean,\n keepAliveProps: {\n type: Object,\n default: undefined\n }\n },\n render: function render(h, _ref) {\n var parent = _ref.parent,\n data = _ref.data,\n props = _ref.props;\n data.nuxtChild = true;\n var _parent = parent;\n var transitions = parent.$nuxt.nuxt.transitions;\n var defaultTransition = parent.$nuxt.nuxt.defaultTransition;\n var depth = 0;\n\n while (parent) {\n if (parent.$vnode && parent.$vnode.data.nuxtChild) {\n depth++;\n }\n\n parent = parent.$parent;\n }\n\n data.nuxtChildDepth = depth;\n var transition = transitions[depth] || defaultTransition;\n var transitionProps = {};\n transitionsKeys.forEach(function (key) {\n if (typeof transition[key] !== 'undefined') {\n transitionProps[key] = transition[key];\n }\n });\n var listeners = {};\n listenersKeys.forEach(function (key) {\n if (typeof transition[key] === 'function') {\n listeners[key] = transition[key].bind(_parent);\n }\n }); // Add triggerScroll event on beforeEnter (fix #1376)\n\n var beforeEnter = listeners.beforeEnter;\n\n listeners.beforeEnter = function (el) {\n // Ensure to trigger scroll event after calling scrollBehavior\n window.$nuxt.$nextTick(function () {\n window.$nuxt.$emit('triggerScroll');\n });\n\n if (beforeEnter) {\n return beforeEnter.call(_parent, el);\n }\n }; // make sure that leave is called asynchronous (fix #5703)\n\n\n if (transition.css === false) {\n var leave = listeners.leave; // only add leave listener when user didnt provide one\n // or when it misses the done argument\n\n if (!leave || leave.length < 2) {\n listeners.leave = function (el, done) {\n if (leave) {\n leave.call(_parent, el);\n }\n\n _parent.$nextTick(done);\n };\n }\n }\n\n var routerView = h('routerView', data);\n\n if (props.keepAlive) {\n routerView = h('keep-alive', {\n props: props.keepAliveProps\n }, [routerView]);\n }\n\n return h('transition', {\n props: transitionProps,\n on: listeners\n }, [routerView]);\n }\n});\nvar transitionsKeys = ['name', 'mode', 'appear', 'css', 'type', 'duration', 'enterClass', 'leaveClass', 'appearClass', 'enterActiveClass', 'enterActiveClass', 'leaveActiveClass', 'appearActiveClass', 'enterToClass', 'leaveToClass', 'appearToClass'];\nvar listenersKeys = ['beforeEnter', 'enter', 'afterEnter', 'enterCancelled', 'beforeLeave', 'leave', 'afterLeave', 'leaveCancelled', 'beforeAppear', 'appear', 'afterAppear', 'appearCancelled'];\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vuetify-loader/lib/loader.js??ref--16-0!./node_modules/vue-loader/lib??vue-loader-options!./layouts/error.vue?vue&type=template&id=481e28b8&scoped=true&\nvar errorvue_type_template_id_481e28b8_scoped_true_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-app',{attrs:{\"dark\":\"\"}},[(_vm.error.statusCode === 404)?_c('h1',[_vm._v(\"\\n \"+_vm._s(_vm.pageNotFound)+\"\\n \")]):_c('h1',[_vm._v(\"\\n \"+_vm._s(_vm.otherError)+\"\\n \")]),_vm._v(\" \"),_c('a',{attrs:{\"href\":\"https://github.com/datastax/nosqlbench-labs/issues/new?labels=APPUSE,UX,documentation\"}},[_vm._v(\"\\n File A UI Bug Report\\n \")]),_vm._v(\" \"),_c('NuxtLink',{attrs:{\"to\":\"/\"}},[_vm._v(\"\\n Home page\\n \")])],1)}\nvar staticRenderFns = []\n\n\n// CONCATENATED MODULE: ./layouts/error.vue?vue&type=template&id=481e28b8&scoped=true&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib??ref--2-0!./node_modules/vuetify-loader/lib/loader.js??ref--16-0!./node_modules/vue-loader/lib??vue-loader-options!./layouts/error.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n/* harmony default export */ var errorvue_type_script_lang_js_ = ({\n layout: 'empty',\n props: {\n error: {\n type: Object,\n default: null\n }\n },\n head: function head() {\n var title = this.error.statusCode === 404 ? this.pageNotFound : this.otherError;\n return {\n title: title\n };\n },\n data: function data() {\n return {\n pageNotFound: '404 Not Found',\n otherError: 'An error occurred'\n };\n }\n});\n// CONCATENATED MODULE: ./layouts/error.vue?vue&type=script&lang=js&\n /* harmony default export */ var layouts_errorvue_type_script_lang_js_ = (errorvue_type_script_lang_js_); \n// EXTERNAL MODULE: ./layouts/error.vue?vue&type=style&index=0&id=481e28b8&scoped=true&lang=css&\nvar errorvue_type_style_index_0_id_481e28b8_scoped_true_lang_css_ = __webpack_require__(171);\n\n// EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js\nvar componentNormalizer = __webpack_require__(41);\n\n// EXTERNAL MODULE: ./node_modules/vuetify-loader/lib/runtime/installComponents.js\nvar installComponents = __webpack_require__(97);\nvar installComponents_default = /*#__PURE__*/__webpack_require__.n(installComponents);\n\n// EXTERNAL MODULE: ./node_modules/vuetify/lib/components/VApp/VApp.js\nvar VApp = __webpack_require__(212);\n\n// CONCATENATED MODULE: ./layouts/error.vue\n\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(componentNormalizer[\"a\" /* default */])(\n layouts_errorvue_type_script_lang_js_,\n errorvue_type_template_id_481e28b8_scoped_true_render,\n staticRenderFns,\n false,\n null,\n \"481e28b8\",\n null\n \n)\n\n/* harmony default export */ var layouts_error = (component.exports);\n\n/* vuetify-loader */\n\n\ninstallComponents_default()(component, {VApp: VApp[\"a\" /* default */]})\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.regexp.to-string.js\nvar es6_regexp_to_string = __webpack_require__(60);\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.date.to-string.js\nvar es6_date_to_string = __webpack_require__(61);\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.regexp.replace.js\nvar es6_regexp_replace = __webpack_require__(36);\n\n// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/slicedToArray.js + 3 modules\nvar slicedToArray = __webpack_require__(18);\n\n// CONCATENATED MODULE: ./.nuxt/components/nuxt.js\n\n\n\n\n\n\n\n\n\n/* harmony default export */ var components_nuxt = ({\n name: 'Nuxt',\n components: {\n NuxtChild: nuxt_child,\n NuxtError: layouts_error\n },\n props: {\n nuxtChildKey: {\n type: String,\n default: undefined\n },\n keepAlive: Boolean,\n keepAliveProps: {\n type: Object,\n default: undefined\n },\n name: {\n type: String,\n default: 'default'\n }\n },\n errorCaptured: function errorCaptured(error) {\n // if we receive and error while showing the NuxtError component\n // capture the error and force an immediate update so we re-render\n // without the NuxtError component\n if (this.displayingNuxtError) {\n this.errorFromNuxtError = error;\n this.$forceUpdate();\n }\n },\n computed: {\n routerViewKey: function routerViewKey() {\n // If nuxtChildKey prop is given or current route has children\n if (typeof this.nuxtChildKey !== 'undefined' || this.$route.matched.length > 1) {\n return this.nuxtChildKey || Object(utils[\"b\" /* compile */])(this.$route.matched[0].path)(this.$route.params);\n }\n\n var _this$$route$matched = Object(slicedToArray[\"a\" /* default */])(this.$route.matched, 1),\n matchedRoute = _this$$route$matched[0];\n\n if (!matchedRoute) {\n return this.$route.path;\n }\n\n var Component = matchedRoute.components.default;\n\n if (Component && Component.options) {\n var options = Component.options;\n\n if (options.key) {\n return typeof options.key === 'function' ? options.key(this.$route) : options.key;\n }\n }\n\n var strict = /\\/$/.test(matchedRoute.path);\n return strict ? this.$route.path : this.$route.path.replace(/\\/$/, '');\n }\n },\n beforeCreate: function beforeCreate() {\n vue_runtime_esm[\"a\" /* default */].util.defineReactive(this, 'nuxt', this.$root.$options.nuxt);\n },\n render: function render(h) {\n var _this = this;\n\n // if there is no error\n if (!this.nuxt.err) {\n // Directly return nuxt child\n return h('NuxtChild', {\n key: this.routerViewKey,\n props: this.$props\n });\n } // if an error occured within NuxtError show a simple\n // error message instead to prevent looping\n\n\n if (this.errorFromNuxtError) {\n this.$nextTick(function () {\n return _this.errorFromNuxtError = false;\n });\n return h('div', {}, [h('h2', 'An error occured while showing the error page'), h('p', 'Unfortunately an error occured and while showing the error page another error occured'), h('p', \"Error details: \".concat(this.errorFromNuxtError.toString())), h('nuxt-link', {\n props: {\n to: '/'\n }\n }, 'Go back to home')]);\n } // track if we are showing the NuxtError component\n\n\n this.displayingNuxtError = true;\n this.$nextTick(function () {\n return _this.displayingNuxtError = false;\n });\n return h(layouts_error, {\n props: {\n error: this.nuxt.err\n }\n });\n }\n});\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.string.iterator.js\nvar es6_string_iterator = __webpack_require__(62);\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib??ref--2-0!./node_modules/vuetify-loader/lib/loader.js??ref--16-0!./node_modules/vue-loader/lib??vue-loader-options!./.nuxt/components/nuxt-loading.vue?vue&type=script&lang=js&\n/* harmony default export */ var nuxt_loadingvue_type_script_lang_js_ = ({\n name: 'NuxtLoading',\n data: function data() {\n return {\n percent: 0,\n show: false,\n canSucceed: true,\n reversed: false,\n skipTimerCount: 0,\n rtl: false,\n throttle: 200,\n duration: 5000,\n continuous: false\n };\n },\n computed: {\n left: function left() {\n if (!this.continuous && !this.rtl) {\n return false;\n }\n\n return this.rtl ? this.reversed ? '0px' : 'auto' : !this.reversed ? '0px' : 'auto';\n }\n },\n beforeDestroy: function beforeDestroy() {\n this.clear();\n },\n methods: {\n clear: function clear() {\n clearInterval(this._timer);\n clearTimeout(this._throttle);\n this._timer = null;\n },\n start: function start() {\n var _this = this;\n\n this.clear();\n this.percent = 0;\n this.reversed = false;\n this.skipTimerCount = 0;\n this.canSucceed = true;\n\n if (this.throttle) {\n this._throttle = setTimeout(function () {\n return _this.startTimer();\n }, this.throttle);\n } else {\n this.startTimer();\n }\n\n return this;\n },\n set: function set(num) {\n this.show = true;\n this.canSucceed = true;\n this.percent = Math.min(100, Math.max(0, Math.floor(num)));\n return this;\n },\n get: function get() {\n return this.percent;\n },\n increase: function increase(num) {\n this.percent = Math.min(100, Math.floor(this.percent + num));\n return this;\n },\n decrease: function decrease(num) {\n this.percent = Math.max(0, Math.floor(this.percent - num));\n return this;\n },\n pause: function pause() {\n clearInterval(this._timer);\n return this;\n },\n resume: function resume() {\n this.startTimer();\n return this;\n },\n finish: function finish() {\n this.percent = this.reversed ? 0 : 100;\n this.hide();\n return this;\n },\n hide: function hide() {\n var _this2 = this;\n\n this.clear();\n setTimeout(function () {\n _this2.show = false;\n\n _this2.$nextTick(function () {\n _this2.percent = 0;\n _this2.reversed = false;\n });\n }, 500);\n return this;\n },\n fail: function fail() {\n this.canSucceed = false;\n return this;\n },\n startTimer: function startTimer() {\n var _this3 = this;\n\n if (!this.show) {\n this.show = true;\n }\n\n if (typeof this._cut === 'undefined') {\n this._cut = 10000 / Math.floor(this.duration);\n }\n\n this._timer = setInterval(function () {\n /**\n * When reversing direction skip one timers\n * so 0, 100 are displayed for two iterations\n * also disable css width transitioning\n * which otherwise interferes and shows\n * a jojo effect\n */\n if (_this3.skipTimerCount > 0) {\n _this3.skipTimerCount--;\n return;\n }\n\n if (_this3.reversed) {\n _this3.decrease(_this3._cut);\n } else {\n _this3.increase(_this3._cut);\n }\n\n if (_this3.continuous) {\n if (_this3.percent >= 100) {\n _this3.skipTimerCount = 1;\n _this3.reversed = !_this3.reversed;\n } else if (_this3.percent <= 0) {\n _this3.skipTimerCount = 1;\n _this3.reversed = !_this3.reversed;\n }\n }\n }, 100);\n }\n },\n render: function render(h) {\n var el = h(false);\n\n if (this.show) {\n el = h('div', {\n staticClass: 'nuxt-progress',\n class: {\n 'nuxt-progress-notransition': this.skipTimerCount > 0,\n 'nuxt-progress-failed': !this.canSucceed\n },\n style: {\n width: this.percent + '%',\n left: this.left\n }\n });\n }\n\n return el;\n }\n});\n// CONCATENATED MODULE: ./.nuxt/components/nuxt-loading.vue?vue&type=script&lang=js&\n /* harmony default export */ var components_nuxt_loadingvue_type_script_lang_js_ = (nuxt_loadingvue_type_script_lang_js_); \n// EXTERNAL MODULE: ./.nuxt/components/nuxt-loading.vue?vue&type=style&index=0&lang=css&\nvar nuxt_loadingvue_type_style_index_0_lang_css_ = __webpack_require__(175);\n\n// CONCATENATED MODULE: ./.nuxt/components/nuxt-loading.vue\nvar nuxt_loading_render, nuxt_loading_staticRenderFns\n\n\n\n\n\n/* normalize component */\n\nvar nuxt_loading_component = Object(componentNormalizer[\"a\" /* default */])(\n components_nuxt_loadingvue_type_script_lang_js_,\n nuxt_loading_render,\n nuxt_loading_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* harmony default export */ var nuxt_loading = (nuxt_loading_component.exports);\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vuetify-loader/lib/loader.js??ref--16-0!./node_modules/vue-loader/lib??vue-loader-options!./layouts/default.vue?vue&type=template&id=760914e3&\nvar defaultvue_type_template_id_760914e3_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('nuxt')],1)}\nvar defaultvue_type_template_id_760914e3_staticRenderFns = []\n\n\n// CONCATENATED MODULE: ./layouts/default.vue?vue&type=template&id=760914e3&\n\n// EXTERNAL MODULE: ./layouts/default.vue?vue&type=style&index=0&lang=css&\nvar defaultvue_type_style_index_0_lang_css_ = __webpack_require__(177);\n\n// CONCATENATED MODULE: ./layouts/default.vue\n\nvar script = {}\n\n\n\n/* normalize component */\n\nvar default_component = Object(componentNormalizer[\"a\" /* default */])(\n script,\n defaultvue_type_template_id_760914e3_render,\n defaultvue_type_template_id_760914e3_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* harmony default export */ var layouts_default = (default_component.exports);\n// CONCATENATED MODULE: ./.nuxt/App.js\n\n\n\n\n\n\n\n\n\n\nvar layouts = {\n \"_default\": layouts_default\n};\n/* harmony default export */ var App = ({\n head: {\n \"titleTemplate\": \"%sNoSqlBench Guidebook\",\n \"title\": \"guidebook\",\n \"meta\": [{\n \"charset\": \"utf-8\"\n }, {\n \"name\": \"viewport\",\n \"content\": \"width=device-width, initial-scale=1\"\n }, {\n \"hid\": \"description\",\n \"name\": \"description\",\n \"content\": \"Docs App for NoSQLBench\"\n }],\n \"link\": [{\n \"rel\": \"icon\",\n \"type\": \"image/x-icon\",\n \"href\": \"/favicon.ico\"\n }, {\n \"rel\": \"stylesheet\",\n \"type\": \"text/css\",\n \"href\": \"https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700,900&display=swap\"\n }, {\n \"rel\": \"stylesheet\",\n \"type\": \"text/css\",\n \"href\": \"https://cdn.jsdelivr.net/npm/@mdi/font@latest/css/materialdesignicons.min.css\"\n }],\n \"style\": [],\n \"script\": []\n },\n render: function render(h, props) {\n var loadingEl = h('NuxtLoading', {\n ref: 'loading'\n });\n\n if (this.nuxt.err && layouts_error) {\n var errorLayout = (layouts_error.options || layouts_error).layout;\n\n if (errorLayout) {\n this.setLayout(typeof errorLayout === 'function' ? errorLayout.call(layouts_error, this.context) : errorLayout);\n }\n }\n\n var layoutEl = h(this.layout || 'nuxt');\n var templateEl = h('div', {\n domProps: {\n id: '__layout'\n },\n key: this.layoutName\n }, [layoutEl]);\n var transitionEl = h('transition', {\n props: {\n name: 'layout',\n mode: 'out-in'\n },\n on: {\n beforeEnter: function beforeEnter(el) {\n // Ensure to trigger scroll event after calling scrollBehavior\n window.$nuxt.$nextTick(function () {\n window.$nuxt.$emit('triggerScroll');\n });\n }\n }\n }, [templateEl]);\n return h('div', {\n domProps: {\n id: '__nuxt'\n }\n }, [loadingEl, transitionEl]);\n },\n data: function data() {\n return {\n isOnline: true,\n layout: null,\n layoutName: ''\n };\n },\n beforeCreate: function beforeCreate() {\n vue_runtime_esm[\"a\" /* default */].util.defineReactive(this, 'nuxt', this.$options.nuxt);\n },\n created: function created() {\n // Add this.$nuxt in child instances\n vue_runtime_esm[\"a\" /* default */].prototype.$nuxt = this; // add to window so we can listen when ready\n\n if (true) {\n window.$nuxt = this;\n this.refreshOnlineStatus(); // Setup the listeners\n\n window.addEventListener('online', this.refreshOnlineStatus);\n window.addEventListener('offline', this.refreshOnlineStatus);\n } // Add $nuxt.error()\n\n\n this.error = this.nuxt.error; // Add $nuxt.context\n\n this.context = this.$options.context;\n },\n mounted: function mounted() {\n this.$loading = this.$refs.loading;\n },\n watch: {\n 'nuxt.err': 'errorChanged'\n },\n computed: {\n isOffline: function isOffline() {\n return !this.isOnline;\n }\n },\n methods: {\n refreshOnlineStatus: function refreshOnlineStatus() {\n if (true) {\n if (typeof window.navigator.onLine === 'undefined') {\n // If the browser doesn't support connection status reports\n // assume that we are online because most apps' only react\n // when they now that the connection has been interrupted\n this.isOnline = true;\n } else {\n this.isOnline = window.navigator.onLine;\n }\n }\n },\n refresh: function () {\n var _refresh = Object(asyncToGenerator[\"a\" /* default */])(\n /*#__PURE__*/\n regeneratorRuntime.mark(function _callee() {\n var _this = this;\n\n var pages, promises;\n return regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n pages = Object(utils[\"f\" /* getMatchedComponentsInstances */])(this.$route);\n\n if (pages.length) {\n _context.next = 3;\n break;\n }\n\n return _context.abrupt(\"return\");\n\n case 3:\n this.$loading.start();\n promises = pages.map(function (page) {\n var p = [];\n\n if (page.$options.fetch) {\n p.push(Object(utils[\"m\" /* promisify */])(page.$options.fetch, _this.context));\n }\n\n if (page.$options.asyncData) {\n p.push(Object(utils[\"m\" /* promisify */])(page.$options.asyncData, _this.context).then(function (newData) {\n for (var key in newData) {\n vue_runtime_esm[\"a\" /* default */].set(page.$data, key, newData[key]);\n }\n }));\n }\n\n return Promise.all(p);\n });\n _context.prev = 5;\n _context.next = 8;\n return Promise.all(promises);\n\n case 8:\n _context.next = 15;\n break;\n\n case 10:\n _context.prev = 10;\n _context.t0 = _context[\"catch\"](5);\n this.$loading.fail();\n Object(utils[\"i\" /* globalHandleError */])(_context.t0);\n this.error(_context.t0);\n\n case 15:\n this.$loading.finish();\n\n case 16:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this, [[5, 10]]);\n }));\n\n function refresh() {\n return _refresh.apply(this, arguments);\n }\n\n return refresh;\n }(),\n errorChanged: function errorChanged() {\n if (this.nuxt.err && this.$loading) {\n if (this.$loading.fail) {\n this.$loading.fail();\n }\n\n if (this.$loading.finish) {\n this.$loading.finish();\n }\n }\n },\n setLayout: function setLayout(layout) {\n if (!layout || !layouts['_' + layout]) {\n layout = 'default';\n }\n\n this.layoutName = layout;\n this.layout = layouts['_' + layout];\n return this.layout;\n },\n loadLayout: function loadLayout(layout) {\n if (!layout || !layouts['_' + layout]) {\n layout = 'default';\n }\n\n return Promise.resolve(layouts['_' + layout]);\n }\n },\n components: {\n NuxtLoading: nuxt_loading\n }\n});\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es7.symbol.async-iterator.js\nvar es7_symbol_async_iterator = __webpack_require__(48);\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es7.array.includes.js\nvar es7_array_includes = __webpack_require__(46);\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.regexp.split.js\nvar es6_regexp_split = __webpack_require__(47);\n\n// EXTERNAL MODULE: ./node_modules/vuex/dist/vuex.esm.js\nvar vuex_esm = __webpack_require__(92);\n\n// CONCATENATED MODULE: ./.nuxt/store.js\n\n\n\n\n\n\n\n\nvue_runtime_esm[\"a\" /* default */].use(vuex_esm[\"a\" /* default */]);\nvar VUEX_PROPERTIES = ['state', 'getters', 'actions', 'mutations'];\nvar store_store = {};\n\n(function updateModules() {\n store_store = normalizeRoot(__webpack_require__(179), 'store/index.js'); // If store is an exported method = classic mode (deprecated)\n // Enforce store modules\n\n store_store.modules = store_store.modules || {};\n resolveStoreModules(__webpack_require__(180), 'docs.js'); // If the environment supports hot reloading...\n})(); // createStore\n\n\nvar createStore = store_store instanceof Function ? store_store : function () {\n return new vuex_esm[\"a\" /* default */].Store(Object.assign({\n strict: \"production\" !== 'production'\n }, store_store));\n};\n\nfunction normalizeRoot(moduleData, filePath) {\n moduleData = moduleData.default || moduleData;\n\n if (moduleData.commit) {\n throw new Error(\"[nuxt] \".concat(filePath, \" should export a method that returns a Vuex instance.\"));\n }\n\n if (typeof moduleData !== 'function') {\n // Avoid TypeError: setting a property that has only a getter when overwriting top level keys\n moduleData = Object.assign({}, moduleData);\n }\n\n return normalizeModule(moduleData, filePath);\n}\n\nfunction normalizeModule(moduleData, filePath) {\n if (moduleData.state && typeof moduleData.state !== 'function') {\n console.warn(\"'state' should be a method that returns an object in \".concat(filePath));\n\n var _state = Object.assign({}, moduleData.state); // Avoid TypeError: setting a property that has only a getter when overwriting top level keys\n\n\n moduleData = Object.assign({}, moduleData, {\n state: function state() {\n return _state;\n }\n });\n }\n\n return moduleData;\n}\n\nfunction resolveStoreModules(moduleData, filename) {\n moduleData = moduleData.default || moduleData; // Remove store src + extension (./foo/index.js -> foo/index)\n\n var namespace = filename.replace(/\\.(js|mjs)$/, '');\n var namespaces = namespace.split('/');\n var moduleName = namespaces[namespaces.length - 1];\n var filePath = \"store/\".concat(filename);\n moduleData = moduleName === 'state' ? normalizeState(moduleData, filePath) : normalizeModule(moduleData, filePath); // If src is a known Vuex property\n\n if (VUEX_PROPERTIES.includes(moduleName)) {\n var property = moduleName;\n\n var _storeModule = getStoreModule(store_store, namespaces, {\n isProperty: true\n }); // Replace state since it's a function\n\n\n mergeProperty(_storeModule, moduleData, property);\n return;\n } // If file is foo/index.js, it should be saved as foo\n\n\n var isIndexModule = moduleName === 'index';\n\n if (isIndexModule) {\n namespaces.pop();\n moduleName = namespaces[namespaces.length - 1];\n }\n\n var storeModule = getStoreModule(store_store, namespaces);\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = VUEX_PROPERTIES[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var _property = _step.value;\n mergeProperty(storeModule, moduleData[_property], _property);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n if (moduleData.namespaced === false) {\n delete storeModule.namespaced;\n }\n}\n\nfunction normalizeState(moduleData, filePath) {\n if (typeof moduleData !== 'function') {\n console.warn(\"\".concat(filePath, \" should export a method that returns an object\"));\n var state = Object.assign({}, moduleData);\n return function () {\n return state;\n };\n }\n\n return normalizeModule(moduleData, filePath);\n}\n\nfunction getStoreModule(storeModule, namespaces) {\n var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n _ref$isProperty = _ref.isProperty,\n isProperty = _ref$isProperty === void 0 ? false : _ref$isProperty;\n\n // If ./mutations.js\n if (!namespaces.length || isProperty && namespaces.length === 1) {\n return storeModule;\n }\n\n var namespace = namespaces.shift();\n storeModule.modules[namespace] = storeModule.modules[namespace] || {};\n storeModule.modules[namespace].namespaced = true;\n storeModule.modules[namespace].modules = storeModule.modules[namespace].modules || {};\n return getStoreModule(storeModule.modules[namespace], namespaces, {\n isProperty: isProperty\n });\n}\n\nfunction mergeProperty(storeModule, moduleData, property) {\n if (!moduleData) {\n return;\n }\n\n if (property === 'state') {\n storeModule.state = moduleData || storeModule.state;\n } else {\n storeModule[property] = Object.assign({}, storeModule[property], moduleData);\n }\n}\n// EXTERNAL MODULE: ./node_modules/vuetify/lib/framework.js + 21 modules\nvar framework = __webpack_require__(213);\n\n// CONCATENATED MODULE: ./.nuxt/vuetify/options.js\n/* harmony default export */ var vuetify_options = ({\n \"theme\": {\n \"dark\": false,\n \"themes\": {\n \"light\": {\n \"primary\": \"#51DDBD\",\n \"secondary\": \"#2D4ADE\",\n \"accent\": \"#FA7D2B\"\n }\n }\n }\n});\n// CONCATENATED MODULE: ./.nuxt/vuetify/plugin.js\n\n\n\nvue_runtime_esm[\"a\" /* default */].use(framework[\"a\" /* default */], {});\n/* harmony default export */ var vuetify_plugin = (function (ctx) {\n var vuetifyOptions = typeof vuetify_options === 'function' ? vuetify_options(ctx) : vuetify_options;\n vuetifyOptions.icons = vuetifyOptions.icons || {};\n vuetifyOptions.icons.iconfont = 'mdi';\n var vuetify = new framework[\"a\" /* default */](vuetifyOptions);\n ctx.app.vuetify = vuetify;\n ctx.$vuetify = vuetify.framework;\n});\n// EXTERNAL MODULE: ./node_modules/axios/index.js\nvar node_modules_axios = __webpack_require__(58);\nvar axios_default = /*#__PURE__*/__webpack_require__.n(node_modules_axios);\n\n// EXTERNAL MODULE: ./node_modules/defu/lib/index.js\nvar lib = __webpack_require__(134);\nvar lib_default = /*#__PURE__*/__webpack_require__.n(lib);\n\n// CONCATENATED MODULE: ./.nuxt/axios.js\n\n\n\n\n\n // Axios.prototype cannot be modified\n\nvar axiosExtra = {\n setBaseURL: function setBaseURL(baseURL) {\n this.defaults.baseURL = baseURL;\n },\n setHeader: function setHeader(name, value) {\n var scopes = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'common';\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (Array.isArray(scopes) ? scopes : [scopes])[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var scope = _step.value;\n\n if (!value) {\n delete this.defaults.headers[scope][name];\n return;\n }\n\n this.defaults.headers[scope][name] = value;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n },\n setToken: function setToken(token, type) {\n var scopes = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'common';\n var value = !token ? null : (type ? type + ' ' : '') + token;\n this.setHeader('Authorization', value, scopes);\n },\n onRequest: function onRequest(fn) {\n this.interceptors.request.use(function (config) {\n return fn(config) || config;\n });\n },\n onResponse: function onResponse(fn) {\n this.interceptors.response.use(function (response) {\n return fn(response) || response;\n });\n },\n onRequestError: function onRequestError(fn) {\n this.interceptors.request.use(undefined, function (error) {\n return fn(error) || Promise.reject(error);\n });\n },\n onResponseError: function onResponseError(fn) {\n this.interceptors.response.use(undefined, function (error) {\n return fn(error) || Promise.reject(error);\n });\n },\n onError: function onError(fn) {\n this.onRequestError(fn);\n this.onResponseError(fn);\n },\n create: function create(options) {\n return axios_createAxiosInstance(lib_default()(options, this.defaults));\n }\n}; // Request helpers ($get, $post, ...)\n\nvar _loop = function _loop() {\n var method = _arr[_i];\n\n axiosExtra['$' + method] = function () {\n return this[method].apply(this, arguments).then(function (res) {\n return res && res.data;\n });\n };\n};\n\nfor (var _i = 0, _arr = ['request', 'delete', 'get', 'head', 'options', 'post', 'put', 'patch']; _i < _arr.length; _i++) {\n _loop();\n}\n\nvar extendAxiosInstance = function extendAxiosInstance(axios) {\n for (var key in axiosExtra) {\n axios[key] = axiosExtra[key].bind(axios);\n }\n};\n\nvar axios_createAxiosInstance = function createAxiosInstance(axiosOptions) {\n // Create new axios instance\n var axios = axios_default.a.create(axiosOptions);\n axios.CancelToken = axios_default.a.CancelToken;\n axios.isCancel = axios_default.a.isCancel; // Extend axios proto\n\n extendAxiosInstance(axios); // Setup interceptors\n\n axios_setupProgress(axios);\n return axios;\n};\n\nvar axios_setupProgress = function setupProgress(axios) {\n if (false) {} // A noop loading inteterface for when $nuxt is not yet ready\n\n\n var noopLoading = {\n finish: function finish() {},\n start: function start() {},\n fail: function fail() {},\n set: function set() {}\n };\n\n var $loading = function $loading() {\n return window.$nuxt && window.$nuxt.$loading && window.$nuxt.$loading.set ? window.$nuxt.$loading : noopLoading;\n };\n\n var currentRequests = 0;\n axios.onRequest(function (config) {\n if (config && config.progress === false) {\n return;\n }\n\n currentRequests++;\n });\n axios.onResponse(function (response) {\n if (response && response.config && response.config.progress === false) {\n return;\n }\n\n currentRequests--;\n\n if (currentRequests <= 0) {\n currentRequests = 0;\n $loading().finish();\n }\n });\n axios.onError(function (error) {\n if (error && error.config && error.config.progress === false) {\n return;\n }\n\n currentRequests--;\n\n if (axios_default.a.isCancel(error)) {\n return;\n }\n\n $loading().fail();\n $loading().finish();\n });\n\n var onProgress = function onProgress(e) {\n if (!currentRequests) {\n return;\n }\n\n var progress = e.loaded * 100 / (e.total * currentRequests);\n $loading().set(Math.min(100, progress));\n };\n\n axios.defaults.onUploadProgress = onProgress;\n axios.defaults.onDownloadProgress = onProgress;\n};\n\n/* harmony default export */ var _nuxt_axios = (function (ctx, inject) {\n // baseURL\n var baseURL = true ? 'http://localhost:3000/' : undefined; // Create fresh objects for all default header scopes\n // Axios creates only one which is shared across SSR requests!\n // https://github.com/mzabriskie/axios/blob/master/lib/defaults.js\n\n var headers = {\n \"common\": {\n \"Accept\": \"application/json, text/plain, */*\"\n },\n \"delete\": {},\n \"get\": {},\n \"head\": {},\n \"post\": {},\n \"put\": {},\n \"patch\": {}\n };\n var axiosOptions = {\n baseURL: baseURL,\n headers: headers\n }; // Proxy SSR request headers headers\n\n axiosOptions.headers.common = ctx.req && ctx.req.headers ? Object.assign({}, ctx.req.headers) : {};\n delete axiosOptions.headers.common['accept'];\n delete axiosOptions.headers.common['host'];\n delete axiosOptions.headers.common['cf-ray'];\n delete axiosOptions.headers.common['cf-connecting-ip'];\n delete axiosOptions.headers.common['content-length'];\n delete axiosOptions.headers.common['content-md5'];\n delete axiosOptions.headers.common['content-type'];\n\n if (false) {}\n\n var axios = axios_createAxiosInstance(axiosOptions); // Inject axios to the context as $axios\n\n ctx.$axios = axios;\n inject('axios', axios);\n});\n// CONCATENATED MODULE: ./.nuxt/index.js\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return createApp; });\n/* concated harmony reexport NuxtError */__webpack_require__.d(__webpack_exports__, \"a\", function() { return layouts_error; });\n\n\n\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { Object(defineProperty[\"a\" /* default */])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n\n\n\n\n\n\n\n\n\n\n\n/* Plugins */\n\n // Source: ./vuetify/plugin.js (mode: 'all')\n\n // Source: ./axios.js (mode: 'all')\n// Component: \n\nvue_runtime_esm[\"a\" /* default */].component(vue_client_only_common_default.a.name, vue_client_only_common_default.a); // TODO: Remove in Nuxt 3: \n\nvue_runtime_esm[\"a\" /* default */].component(vue_no_ssr_common_default.a.name, _objectSpread({}, vue_no_ssr_common_default.a, {\n render: function render(h, ctx) {\n if ( true && !vue_no_ssr_common_default.a._warned) {\n vue_no_ssr_common_default.a._warned = true;\n console.warn(' has been deprecated and will be removed in Nuxt 3, please use instead');\n }\n\n return vue_no_ssr_common_default.a.render(h, ctx);\n }\n})); // Component: \n\nvue_runtime_esm[\"a\" /* default */].component(nuxt_child.name, nuxt_child);\nvue_runtime_esm[\"a\" /* default */].component('NChild', nuxt_child); // Component NuxtLink is imported in server.js or client.js\n// Component: \n\nvue_runtime_esm[\"a\" /* default */].component(components_nuxt.name, components_nuxt);\nvue_runtime_esm[\"a\" /* default */].use(vue_meta_esm_browser[\"a\" /* default */], {\n \"keyName\": \"head\",\n \"attribute\": \"data-n-head\",\n \"ssrAttribute\": \"data-n-head-ssr\",\n \"tagIDKeyName\": \"hid\"\n});\nvar defaultTransition = {\n \"name\": \"page\",\n \"mode\": \"out-in\",\n \"appear\": true,\n \"appearClass\": \"appear\",\n \"appearActiveClass\": \"appear-active\",\n \"appearToClass\": \"appear-to\"\n};\n\nfunction createApp(_x) {\n return _createApp.apply(this, arguments);\n}\n\nfunction _createApp() {\n _createApp = Object(asyncToGenerator[\"a\" /* default */])(\n /*#__PURE__*/\n regeneratorRuntime.mark(function _callee2(ssrContext) {\n var router, store, app, next, route, path, inject;\n return regeneratorRuntime.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return createRouter(ssrContext);\n\n case 2:\n router = _context2.sent;\n store = createStore(ssrContext); // Add this.$router into store actions/mutations\n\n store.$router = router; // Create Root instance\n // here we inject the router and store to all child components,\n // making them available everywhere as `this.$router` and `this.$store`.\n\n app = _objectSpread({\n store: store,\n router: router,\n nuxt: {\n defaultTransition: defaultTransition,\n transitions: [defaultTransition],\n setTransitions: function setTransitions(transitions) {\n if (!Array.isArray(transitions)) {\n transitions = [transitions];\n }\n\n transitions = transitions.map(function (transition) {\n if (!transition) {\n transition = defaultTransition;\n } else if (typeof transition === 'string') {\n transition = Object.assign({}, defaultTransition, {\n name: transition\n });\n } else {\n transition = Object.assign({}, defaultTransition, transition);\n }\n\n return transition;\n });\n this.$options.nuxt.transitions = transitions;\n return transitions;\n },\n err: null,\n dateErr: null,\n error: function error(err) {\n err = err || null;\n app.context._errored = Boolean(err);\n err = err ? Object(utils[\"l\" /* normalizeError */])(err) : null;\n var nuxt = this.nuxt || this.$options.nuxt;\n nuxt.dateErr = Date.now();\n nuxt.err = err; // Used in src/server.js\n\n if (ssrContext) {\n ssrContext.nuxt.error = err;\n }\n\n return err;\n }\n }\n }, App); // Make app available into store via this.app\n\n store.app = app;\n next = ssrContext ? ssrContext.next : function (location) {\n return app.router.push(location);\n }; // Resolve route\n\n if (ssrContext) {\n route = router.resolve(ssrContext.url).route;\n } else {\n path = Object(utils[\"d\" /* getLocation */])(router.options.base, router.options.mode);\n route = router.resolve(path).route;\n } // Set context to app.context\n\n\n _context2.next = 11;\n return Object(utils[\"p\" /* setContext */])(app, {\n store: store,\n route: route,\n next: next,\n error: app.nuxt.error.bind(app),\n payload: ssrContext ? ssrContext.payload : undefined,\n req: ssrContext ? ssrContext.req : undefined,\n res: ssrContext ? ssrContext.res : undefined,\n beforeRenderFns: ssrContext ? ssrContext.beforeRenderFns : undefined,\n ssrContext: ssrContext\n });\n\n case 11:\n inject = function inject(key, value) {\n if (!key) {\n throw new Error('inject(key, value) has no key provided');\n }\n\n if (value === undefined) {\n throw new Error('inject(key, value) has no value provided');\n }\n\n key = '$' + key; // Add into app\n\n app[key] = value; // Add into store\n\n store[key] = app[key]; // Check if plugin not already installed\n\n var installKey = '__nuxt_' + key + '_installed__';\n\n if (vue_runtime_esm[\"a\" /* default */][installKey]) {\n return;\n }\n\n vue_runtime_esm[\"a\" /* default */][installKey] = true; // Call Vue.use() to install the plugin into vm\n\n vue_runtime_esm[\"a\" /* default */].use(function () {\n if (!Object.prototype.hasOwnProperty.call(vue_runtime_esm[\"a\" /* default */], key)) {\n Object.defineProperty(vue_runtime_esm[\"a\" /* default */].prototype, key, {\n get: function get() {\n return this.$root.$options[key];\n }\n });\n }\n });\n };\n\n if (true) {\n // Replace store state before plugins execution\n if (window.__NUXT__ && window.__NUXT__.state) {\n store.replaceState(window.__NUXT__.state);\n }\n } // Plugin execution\n\n\n if (!(typeof vuetify_plugin === 'function')) {\n _context2.next = 16;\n break;\n }\n\n _context2.next = 16;\n return vuetify_plugin(app.context, inject);\n\n case 16:\n if (!(typeof _nuxt_axios === 'function')) {\n _context2.next = 19;\n break;\n }\n\n _context2.next = 19;\n return _nuxt_axios(app.context, inject);\n\n case 19:\n if (true) {\n _context2.next = 22;\n break;\n }\n\n _context2.next = 22;\n return new Promise(function (resolve, reject) {\n router.push(ssrContext.url, resolve, function () {\n // navigated to a different route in router guard\n var unregister = router.afterEach(\n /*#__PURE__*/\n function () {\n var _ref = Object(asyncToGenerator[\"a\" /* default */])(\n /*#__PURE__*/\n regeneratorRuntime.mark(function _callee(to, from, next) {\n return regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n ssrContext.url = to.fullPath;\n _context.next = 3;\n return Object(utils[\"h\" /* getRouteData */])(to);\n\n case 3:\n app.context.route = _context.sent;\n app.context.params = to.params || {};\n app.context.query = to.query || {};\n unregister();\n resolve();\n\n case 8:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n\n return function (_x2, _x3, _x4) {\n return _ref.apply(this, arguments);\n };\n }());\n });\n });\n\n case 22:\n return _context2.abrupt(\"return\", {\n store: store,\n app: app,\n router: router\n });\n\n case 23:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2);\n }));\n return _createApp.apply(this, arguments);\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi8ubnV4dC9yb3V0ZXIuc2Nyb2xsQmVoYXZpb3IuanM/NTVjNCIsIndlYnBhY2s6Ly8vLi8ubnV4dC9yb3V0ZXIuanM/NTc4MyIsIndlYnBhY2s6Ly8vLi8ubnV4dC9jb21wb25lbnRzL251eHQtY2hpbGQuanM/MjQ1MiIsIndlYnBhY2s6Ly8vLi9sYXlvdXRzL2Vycm9yLnZ1ZT9kM2FlIiwid2VicGFjazovLy9sYXlvdXRzL2Vycm9yLnZ1ZT82NzZkIiwid2VicGFjazovLy8uL2xheW91dHMvZXJyb3IudnVlP2UyMGQiLCJ3ZWJwYWNrOi8vLy4vbGF5b3V0cy9lcnJvci52dWU/YzRiMyIsIndlYnBhY2s6Ly8vLi8ubnV4dC9jb21wb25lbnRzL251eHQuanM/Yjg5YiIsIndlYnBhY2s6Ly8vLm51eHQvY29tcG9uZW50cy9udXh0LWxvYWRpbmcudnVlP2ZlOGYiLCJ3ZWJwYWNrOi8vLy4vLm51eHQvY29tcG9uZW50cy9udXh0LWxvYWRpbmcudnVlPzVhNDciLCJ3ZWJwYWNrOi8vLy4vLm51eHQvY29tcG9uZW50cy9udXh0LWxvYWRpbmcudnVlPzNhN2MiLCJ3ZWJwYWNrOi8vLy4vbGF5b3V0cy9kZWZhdWx0LnZ1ZT9kZTcyIiwid2VicGFjazovLy8uL2xheW91dHMvZGVmYXVsdC52dWU/ZWJhMCIsIndlYnBhY2s6Ly8vLi8ubnV4dC9BcHAuanM/ZWZlNyIsIndlYnBhY2s6Ly8vLi8ubnV4dC9zdG9yZS5qcz82YzZiIiwid2VicGFjazovLy8uLy5udXh0L3Z1ZXRpZnkvb3B0aW9ucy5qcz83ZTI3Iiwid2VicGFjazovLy8uLy5udXh0L3Z1ZXRpZnkvcGx1Z2luLmpzP2M4YmMiLCJ3ZWJwYWNrOi8vLy4vLm51eHQvYXhpb3MuanM/MTBlOCIsIndlYnBhY2s6Ly8vLi8ubnV4dC9pbmRleC5qcz9mMjZlIl0sIm5hbWVzIjpbInByb2Nlc3MiLCJ3aW5kb3ciLCJoaXN0b3J5Iiwic2Nyb2xsUmVzdG9yYXRpb24iLCJhZGRFdmVudExpc3RlbmVyIiwidG8iLCJmcm9tIiwic2F2ZWRQb3NpdGlvbiIsInBvc2l0aW9uIiwiUGFnZXMiLCJnZXRNYXRjaGVkQ29tcG9uZW50cyIsImxlbmd0aCIsImV2ZXJ5IiwiUGFnZSIsIm9wdGlvbnMiLCJzY3JvbGxUb1RvcCIsIngiLCJ5Iiwic29tZSIsIm51eHQiLCIkbnV4dCIsInBhdGgiLCJoYXNoIiwiJG5leHRUaWNrIiwiJGVtaXQiLCJQcm9taXNlIiwicmVzb2x2ZSIsIiRvbmNlIiwiQ1NTIiwiZXNjYXBlIiwic3Vic3RyIiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwic2VsZWN0b3IiLCJlIiwiY29uc29sZSIsIndhcm4iLCJfODk2MmI4YjAiLCJpbnRlcm9wRGVmYXVsdCIsIl8zOGYxYTI5MiIsIl84Y2NmZmI0MCIsIl81YWQ4ZjcxOCIsImVtcHR5Rm4iLCJvcmlnaW5hbFB1c2giLCJSb3V0ZXIiLCJwcm90b3R5cGUiLCJwdXNoIiwibG9jYXRpb24iLCJvbkNvbXBsZXRlIiwib25BYm9ydCIsImNhbGwiLCJWdWUiLCJ1c2UiLCJyb3V0ZXJPcHRpb25zIiwibW9kZSIsImJhc2UiLCJkZWNvZGVVUkkiLCJsaW5rQWN0aXZlQ2xhc3MiLCJsaW5rRXhhY3RBY3RpdmVDbGFzcyIsInNjcm9sbEJlaGF2aW9yIiwicm91dGVzIiwiY29tcG9uZW50IiwibmFtZSIsImZhbGxiYWNrIiwiY3JlYXRlUm91dGVyIiwiZnVuY3Rpb25hbCIsInByb3BzIiwibnV4dENoaWxkS2V5IiwidHlwZSIsIlN0cmluZyIsImRlZmF1bHQiLCJrZWVwQWxpdmUiLCJCb29sZWFuIiwia2VlcEFsaXZlUHJvcHMiLCJPYmplY3QiLCJ1bmRlZmluZWQiLCJyZW5kZXIiLCJoIiwicGFyZW50IiwiZGF0YSIsIm51eHRDaGlsZCIsIl9wYXJlbnQiLCJ0cmFuc2l0aW9ucyIsImRlZmF1bHRUcmFuc2l0aW9uIiwiZGVwdGgiLCIkdm5vZGUiLCIkcGFyZW50IiwibnV4dENoaWxkRGVwdGgiLCJ0cmFuc2l0aW9uIiwidHJhbnNpdGlvblByb3BzIiwidHJhbnNpdGlvbnNLZXlzIiwiZm9yRWFjaCIsImtleSIsImxpc3RlbmVycyIsImxpc3RlbmVyc0tleXMiLCJiaW5kIiwiYmVmb3JlRW50ZXIiLCJlbCIsImNzcyIsImxlYXZlIiwiZG9uZSIsInJvdXRlclZpZXciLCJvbiIsImNvbXBvbmVudHMiLCJOdXh0Q2hpbGQiLCJOdXh0RXJyb3IiLCJlcnJvckNhcHR1cmVkIiwiZXJyb3IiLCJkaXNwbGF5aW5nTnV4dEVycm9yIiwiZXJyb3JGcm9tTnV4dEVycm9yIiwiJGZvcmNlVXBkYXRlIiwiY29tcHV0ZWQiLCJyb3V0ZXJWaWV3S2V5IiwiJHJvdXRlIiwibWF0Y2hlZCIsImNvbXBpbGUiLCJwYXJhbXMiLCJtYXRjaGVkUm91dGUiLCJDb21wb25lbnQiLCJzdHJpY3QiLCJ0ZXN0IiwicmVwbGFjZSIsImJlZm9yZUNyZWF0ZSIsInV0aWwiLCJkZWZpbmVSZWFjdGl2ZSIsIiRyb290IiwiJG9wdGlvbnMiLCJlcnIiLCIkcHJvcHMiLCJ0b1N0cmluZyIsImxheW91dHMiLCJfNmY2YzA5OGIiLCJoZWFkIiwibG9hZGluZ0VsIiwicmVmIiwiZXJyb3JMYXlvdXQiLCJsYXlvdXQiLCJzZXRMYXlvdXQiLCJjb250ZXh0IiwibGF5b3V0RWwiLCJ0ZW1wbGF0ZUVsIiwiZG9tUHJvcHMiLCJpZCIsImxheW91dE5hbWUiLCJ0cmFuc2l0aW9uRWwiLCJpc09ubGluZSIsImNyZWF0ZWQiLCJyZWZyZXNoT25saW5lU3RhdHVzIiwibW91bnRlZCIsIiRsb2FkaW5nIiwiJHJlZnMiLCJsb2FkaW5nIiwid2F0Y2giLCJpc09mZmxpbmUiLCJtZXRob2RzIiwibmF2aWdhdG9yIiwib25MaW5lIiwicmVmcmVzaCIsInBhZ2VzIiwiZ2V0TWF0Y2hlZENvbXBvbmVudHNJbnN0YW5jZXMiLCJzdGFydCIsInByb21pc2VzIiwibWFwIiwicGFnZSIsInAiLCJmZXRjaCIsInByb21pc2lmeSIsImFzeW5jRGF0YSIsInRoZW4iLCJuZXdEYXRhIiwic2V0IiwiJGRhdGEiLCJhbGwiLCJmYWlsIiwiZ2xvYmFsSGFuZGxlRXJyb3IiLCJmaW5pc2giLCJlcnJvckNoYW5nZWQiLCJsb2FkTGF5b3V0IiwiTnV4dExvYWRpbmciLCJWdWV4IiwiVlVFWF9QUk9QRVJUSUVTIiwic3RvcmUiLCJ1cGRhdGVNb2R1bGVzIiwibm9ybWFsaXplUm9vdCIsInJlcXVpcmUiLCJtb2R1bGVzIiwicmVzb2x2ZVN0b3JlTW9kdWxlcyIsImNyZWF0ZVN0b3JlIiwiRnVuY3Rpb24iLCJTdG9yZSIsImFzc2lnbiIsIm1vZHVsZURhdGEiLCJmaWxlUGF0aCIsImNvbW1pdCIsIkVycm9yIiwibm9ybWFsaXplTW9kdWxlIiwic3RhdGUiLCJmaWxlbmFtZSIsIm5hbWVzcGFjZSIsIm5hbWVzcGFjZXMiLCJzcGxpdCIsIm1vZHVsZU5hbWUiLCJub3JtYWxpemVTdGF0ZSIsImluY2x1ZGVzIiwicHJvcGVydHkiLCJzdG9yZU1vZHVsZSIsImdldFN0b3JlTW9kdWxlIiwiaXNQcm9wZXJ0eSIsIm1lcmdlUHJvcGVydHkiLCJpc0luZGV4TW9kdWxlIiwicG9wIiwibmFtZXNwYWNlZCIsInNoaWZ0IiwiVnVldGlmeSIsImN0eCIsInZ1ZXRpZnlPcHRpb25zIiwiaWNvbnMiLCJpY29uZm9udCIsInZ1ZXRpZnkiLCJhcHAiLCIkdnVldGlmeSIsImZyYW1ld29yayIsImF4aW9zRXh0cmEiLCJzZXRCYXNlVVJMIiwiYmFzZVVSTCIsImRlZmF1bHRzIiwic2V0SGVhZGVyIiwidmFsdWUiLCJzY29wZXMiLCJBcnJheSIsImlzQXJyYXkiLCJzY29wZSIsImhlYWRlcnMiLCJzZXRUb2tlbiIsInRva2VuIiwib25SZXF1ZXN0IiwiZm4iLCJpbnRlcmNlcHRvcnMiLCJyZXF1ZXN0IiwiY29uZmlnIiwib25SZXNwb25zZSIsInJlc3BvbnNlIiwib25SZXF1ZXN0RXJyb3IiLCJyZWplY3QiLCJvblJlc3BvbnNlRXJyb3IiLCJvbkVycm9yIiwiY3JlYXRlIiwiY3JlYXRlQXhpb3NJbnN0YW5jZSIsImRlZnUiLCJtZXRob2QiLCJhcHBseSIsImFyZ3VtZW50cyIsInJlcyIsImV4dGVuZEF4aW9zSW5zdGFuY2UiLCJheGlvcyIsImF4aW9zT3B0aW9ucyIsIkF4aW9zIiwiQ2FuY2VsVG9rZW4iLCJpc0NhbmNlbCIsInNldHVwUHJvZ3Jlc3MiLCJub29wTG9hZGluZyIsImN1cnJlbnRSZXF1ZXN0cyIsInByb2dyZXNzIiwib25Qcm9ncmVzcyIsImxvYWRlZCIsInRvdGFsIiwiTWF0aCIsIm1pbiIsIm9uVXBsb2FkUHJvZ3Jlc3MiLCJvbkRvd25sb2FkUHJvZ3Jlc3MiLCJpbmplY3QiLCJjb21tb24iLCJyZXEiLCIkYXhpb3MiLCJDbGllbnRPbmx5IiwiTm9Tc3IiLCJfd2FybmVkIiwiTnV4dCIsIk1ldGEiLCJjcmVhdGVBcHAiLCJzc3JDb250ZXh0Iiwicm91dGVyIiwiJHJvdXRlciIsInNldFRyYW5zaXRpb25zIiwiZGF0ZUVyciIsIl9lcnJvcmVkIiwibm9ybWFsaXplRXJyb3IiLCJEYXRlIiwibm93IiwiQXBwIiwibmV4dCIsInJvdXRlIiwidXJsIiwiZ2V0TG9jYXRpb24iLCJzZXRDb250ZXh0IiwicGF5bG9hZCIsImJlZm9yZVJlbmRlckZucyIsImluc3RhbGxLZXkiLCJoYXNPd25Qcm9wZXJ0eSIsImRlZmluZVByb3BlcnR5IiwiZ2V0IiwiX19OVVhUX18iLCJyZXBsYWNlU3RhdGUiLCJudXh0X3BsdWdpbl9wbHVnaW5fMmNlNDM5MDQiLCJudXh0X3BsdWdpbl9heGlvc18wMzFlYzk4NiIsInVucmVnaXN0ZXIiLCJhZnRlckVhY2giLCJmdWxsUGF0aCIsImdldFJvdXRlRGF0YSIsInF1ZXJ5Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUVBLElBQUlBLElBQUosRUFBb0I7QUFDbEIsTUFBSSx1QkFBdUJDLE1BQU0sQ0FBQ0MsT0FBbEMsRUFBMkM7QUFDekNELFVBQU0sQ0FBQ0MsT0FBUCxDQUFlQyxpQkFBZixHQUFtQyxRQUFuQyxDQUR5QyxDQUd6QztBQUNB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QTtBQUFBLDBDQUFpQixpQkFBTzdTLEVBQVAsRUFBV0MsSUFBWCxFQUFpQjRSLElBQWpCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDbENWLHNDQUFVLENBQUNZLEdBQVgsR0FBaUIvUixFQUFFLENBQUM4UyxRQUFwQjtBQURrQztBQUFBLG1DQUVSQyxxQ0FBWSxDQUFDL1MsRUFBRCxDQUZKOztBQUFBO0FBRWxDc04sK0JBQUcsQ0FBQ2pGLE9BQUosQ0FBWXlKLEtBRnNCO0FBR2xDeEUsK0JBQUcsQ0FBQ2pGLE9BQUosQ0FBWXRCLE1BQVosR0FBcUIvRyxFQUFFLENBQUMrRyxNQUFILElBQWEsRUFBbEM7QUFDQXVHLCtCQUFHLENBQUNqRixPQUFKLENBQVkySyxLQUFaLEdBQW9CaFQsRUFBRSxDQUFDZ1QsS0FBSCxJQUFZLEVBQWhDO0FBQ0FKLHNDQUFVO0FBQ1Z2UixtQ0FBTzs7QUFOMkI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsbUJBQWpCOztBQUFBO0FBQUE7QUFBQTtBQUFBLG9CQUFuQjtBQVFELGVBVkQ7QUFXRCxhQVpLLENBcElWOztBQUFBO0FBQUEsOENBbUpTO0FBQ0wySixtQkFBSyxFQUFMQSxLQURLO0FBRUxzQyxpQkFBRyxFQUFIQSxHQUZLO0FBR0w4RCxvQkFBTSxFQUFOQTtBQUhLLGFBbkpUOztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEciLCJmaWxlIjoiMjguanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXRNYXRjaGVkQ29tcG9uZW50cyB9IGZyb20gJy4vdXRpbHMnXG5cbmlmIChwcm9jZXNzLmNsaWVudCkge1xuICBpZiAoJ3Njcm9sbFJlc3RvcmF0aW9uJyBpbiB3aW5kb3cuaGlzdG9yeSkge1xuICAgIHdpbmRvdy5oaXN0b3J5LnNjcm9sbFJlc3RvcmF0aW9uID0gJ21hbnVhbCdcblxuICAgIC8vIHJlc2V0IHNjcm9sbFJlc3RvcmF0aW9uIHRvIGF1dG8gd2hlbiBsZWF2aW5nIHBhZ2UsIGFsbG93aW5nIHBhZ2UgcmVsb2FkXG4gICAgLy8gYW5kIGJhY2stbmF2aWdhdGlvbiBmcm9tIG90aGVyIHBhZ2VzIHRvIHVzZSB0aGUgYnJvd3NlciB0byByZXN0b3JlIHRoZVxuICAgIC8vIHNjcm9sbGluZyBwb3NpdGlvbi5cbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignYmVmb3JldW5sb2FkJywgKCkgPT4ge1xuICAgICAgd2luZG93Lmhpc3Rvcnkuc2Nyb2xsUmVzdG9yYXRpb24gPSAnYXV0bydcbiAgICB9KVxuXG4gICAgLy8gU2V0dGluZyBzY3JvbGxSZXN0b3JhdGlvbiB0byBtYW51YWwgYWdhaW4gd2hlbiByZXR1cm5pbmcgdG8gdGhpcyBwYWdlLlxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgKCkgPT4ge1xuICAgICAgd2luZG93Lmhpc3Rvcnkuc2Nyb2xsUmVzdG9yYXRpb24gPSAnbWFudWFsJ1xuICAgIH0pXG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKHRvLCBmcm9tLCBzYXZlZFBvc2l0aW9uKSB7XG4gIC8vIGlmIHRoZSByZXR1cm5lZCBwb3NpdGlvbiBpcyBmYWxzeSBvciBhbiBlbXB0eSBvYmplY3QsXG4gIC8vIHdpbGwgcmV0YWluIGN1cnJlbnQgc2Nyb2xsIHBvc2l0aW9uLlxuICBsZXQgcG9zaXRpb24gPSBmYWxzZVxuXG4gIC8vIGlmIG5vIGNoaWxkcmVuIGRldGVjdGVkIGFuZCBzY3JvbGxUb1RvcCBpcyBub3QgZXhwbGljaXRseSBkaXNhYmxlZFxuICBjb25zdCBQYWdlcyA9IGdldE1hdGNoZWRDb21wb25lbnRzKHRvKVxuICBpZiAoXG4gICAgUGFnZXMubGVuZ3RoIDwgMiAmJlxuICAgIFBhZ2VzLmV2ZXJ5KFBhZ2UgPT4gUGFnZS5vcHRpb25zLnNjcm9sbFRvVG9wICE9PSBmYWxzZSlcbiAgKSB7XG4gICAgLy8gc2Nyb2xsIHRvIHRoZSB0b3Agb2YgdGhlIHBhZ2VcbiAgICBwb3NpdGlvbiA9IHsgeDogMCwgeTogMCB9XG4gIH0gZWxzZSBpZiAoUGFnZXMuc29tZShQYWdlID0+IFBhZ2Uub3B0aW9ucy5zY3JvbGxUb1RvcCkpIHtcbiAgICAvLyBpZiBvbmUgb2YgdGhlIGNoaWxkcmVuIGhhcyBzY3JvbGxUb1RvcCBvcHRpb24gc2V0IHRvIHRydWVcbiAgICBwb3NpdGlvbiA9IHsgeDogMCwgeTogMCB9XG4gIH1cblxuICAvLyBzYXZlZFBvc2l0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIGZvciBwb3BzdGF0ZSBuYXZpZ2F0aW9ucyAoYmFjayBidXR0b24pXG4gIGlmIChzYXZlZFBvc2l0aW9uKSB7XG4gICAgcG9zaXRpb24gPSBzYXZlZFBvc2l0aW9uXG4gIH1cblxuICBjb25zdCBudXh0ID0gd2luZG93LiRudXh0XG5cbiAgLy8gdHJpZ2dlclNjcm9sbCBpcyBvbmx5IGZpcmVkIHdoZW4gYSBuZXcgY29tcG9uZW50IGlzIGxvYWRlZFxuICBpZiAodG8ucGF0aCA9PT0gZnJvbS5wYXRoICYmIHRvLmhhc2ggIT09IGZyb20uaGFzaCkge1xuICAgIG51eHQuJG5leHRUaWNrKCgpID0+IG51eHQuJGVtaXQoJ3RyaWdnZXJTY3JvbGwnKSlcbiAgfVxuXG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgIC8vIHdhaXQgZm9yIHRoZSBvdXQgdHJhbnNpdGlvbiB0byBjb21wbGV0ZSAoaWYgbmVjZXNzYXJ5KVxuICAgIG51eHQuJG9uY2UoJ3RyaWdnZXJTY3JvbGwnLCAoKSA9PiB7XG4gICAgICAvLyBjb29yZHMgd2lsbCBiZSB1c2VkIGlmIG5vIHNlbGVjdG9yIGlzIHByb3ZpZGVkLFxuICAgICAgLy8gb3IgaWYgdGhlIHNlbGVjdG9yIGRpZG4ndCBtYXRjaCBhbnkgZWxlbWVudC5cbiAgICAgIGlmICh0by5oYXNoKSB7XG4gICAgICAgIGxldCBoYXNoID0gdG8uaGFzaFxuICAgICAgICAvLyBDU1MuZXNjYXBlKCkgaXMgbm90IHN1cHBvcnRlZCB3aXRoIElFIGFuZCBFZGdlLlxuICAgICAgICBpZiAodHlwZW9mIHdpbmRvdy5DU1MgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiB3aW5kb3cuQ1NTLmVzY2FwZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICBoYXNoID0gJyMnICsgd2luZG93LkNTUy5lc2NhcGUoaGFzaC5zdWJzdHIoMSkpXG4gICAgICAgIH1cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBpZiAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcihoYXNoKSkge1xuICAgICAgICAgICAgLy8gc2Nyb2xsIHRvIGFuY2hvciBieSByZXR1cm5pbmcgdGhlIHNlbGVjdG9yXG4gICAgICAgICAgICBwb3NpdGlvbiA9IHsgc2VsZWN0b3I6IGhhc2ggfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGNvbnNvbGUud2FybignRmFpbGVkIHRvIHNhdmUgc2Nyb2xsIHBvc2l0aW9uLiBQbGVhc2UgYWRkIENTUy5lc2NhcGUoKSBwb2x5ZmlsbCAoaHR0cHM6Ly9naXRodWIuY29tL21hdGhpYXNieW5lbnMvQ1NTLmVzY2FwZSkuJylcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmVzb2x2ZShwb3NpdGlvbilcbiAgICB9KVxuICB9KVxufVxuIiwiaW1wb3J0IFZ1ZSBmcm9tICd2dWUnXG5pbXBvcnQgUm91dGVyIGZyb20gJ3Z1ZS1yb3V0ZXInXG5pbXBvcnQgeyBpbnRlcm9wRGVmYXVsdCB9IGZyb20gJy4vdXRpbHMnXG5pbXBvcnQgc2Nyb2xsQmVoYXZpb3IgZnJvbSAnLi9yb3V0ZXIuc2Nyb2xsQmVoYXZpb3IuanMnXG5cbmNvbnN0IF84OTYyYjhiMCA9ICgpID0+IGludGVyb3BEZWZhdWx0KGltcG9ydCgnLi4vcGFnZXMvZG9jcy9pbmRleC52dWUnIC8qIHdlYnBhY2tDaHVua05hbWU6IFwicGFnZXMvZG9jcy9pbmRleFwiICovKSlcbmNvbnN0IF8zOGYxYTI5MiA9ICgpID0+IGludGVyb3BEZWZhdWx0KGltcG9ydCgnLi4vcGFnZXMvZG9jcy9uYW1lc3BhY2VzLnZ1ZScgLyogd2VicGFja0NodW5rTmFtZTogXCJwYWdlcy9kb2NzL25hbWVzcGFjZXNcIiAqLykpXG5jb25zdCBfOGNjZmZiNDAgPSAoKSA9PiBpbnRlcm9wRGVmYXVsdChpbXBvcnQoJy4uL3BhZ2VzL2RvY3MvX3NsdWcudnVlJyAvKiB3ZWJwYWNrQ2h1bmtOYW1lOiBcInBhZ2VzL2RvY3MvX3NsdWdcIiAqLykpXG5jb25zdCBfNWFkOGY3MTggPSAoKSA9PiBpbnRlcm9wRGVmYXVsdChpbXBvcnQoJy4uL3BhZ2VzL2luZGV4LnZ1ZScgLyogd2VicGFja0NodW5rTmFtZTogXCJwYWdlcy9pbmRleFwiICovKSlcblxuLy8gVE9ETzogcmVtb3ZlIGluIE51eHQgM1xuY29uc3QgZW1wdHlGbiA9ICgpID0+IHt9XG5jb25zdCBvcmlnaW5hbFB1c2ggPSBSb3V0ZXIucHJvdG90eXBlLnB1c2hcblJvdXRlci5wcm90b3R5cGUucHVzaCA9IGZ1bmN0aW9uIHB1c2ggKGxvY2F0aW9uLCBvbkNvbXBsZXRlID0gZW1wdHlGbiwgb25BYm9ydCkge1xuICByZXR1cm4gb3JpZ2luYWxQdXNoLmNhbGwodGhpcywgbG9jYXRpb24sIG9uQ29tcGxldGUsIG9uQWJvcnQpXG59XG5cblZ1ZS51c2UoUm91dGVyKVxuXG5leHBvcnQgY29uc3Qgcm91dGVyT3B0aW9ucyA9IHtcbiAgbW9kZTogJ2hhc2gnLFxuICBiYXNlOiBkZWNvZGVVUkkoJy8nKSxcbiAgbGlua0FjdGl2ZUNsYXNzOiAnbnV4dC1saW5rLWFjdGl2ZScsXG4gIGxpbmtFeGFjdEFjdGl2ZUNsYXNzOiAnbnV4dC1saW5rLWV4YWN0LWFjdGl2ZScsXG4gIHNjcm9sbEJlaGF2aW9yLFxuXG4gIHJvdXRlczogW3tcbiAgICBwYXRoOiBcIi9kb2NzXCIsXG4gICAgY29tcG9uZW50OiBfODk2MmI4YjAsXG4gICAgbmFtZTogXCJkb2NzXCJcbiAgfSwge1xuICAgIHBhdGg6IFwiL2RvY3MvbmFtZXNwYWNlc1wiLFxuICAgIGNvbXBvbmVudDogXzM4ZjFhMjkyLFxuICAgIG5hbWU6IFwiZG9jcy1uYW1lc3BhY2VzXCJcbiAgfSwge1xuICAgIHBhdGg6IFwiL2RvY3MvOnNsdWdcIixcbiAgICBjb21wb25lbnQ6IF84Y2NmZmI0MCxcbiAgICBuYW1lOiBcImRvY3Mtc2x1Z1wiXG4gIH0sIHtcbiAgICBwYXRoOiBcIi9cIixcbiAgICBjb21wb25lbnQ6IF81YWQ4ZjcxOCxcbiAgICBuYW1lOiBcImluZGV4XCJcbiAgfV0sXG5cbiAgZmFsbGJhY2s6IGZhbHNlXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVSb3V0ZXIgKCkge1xuICByZXR1cm4gbmV3IFJvdXRlcihyb3V0ZXJPcHRpb25zKVxufVxuIiwiXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdOdXh0Q2hpbGQnLFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICBwcm9wczoge1xuICAgIG51eHRDaGlsZEtleToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJydcbiAgICB9LFxuICAgIGtlZXBBbGl2ZTogQm9vbGVhbixcbiAgICBrZWVwQWxpdmVQcm9wczoge1xuICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgZGVmYXVsdDogdW5kZWZpbmVkXG4gICAgfVxuICB9LFxuICByZW5kZXIgKGgsIHsgcGFyZW50LCBkYXRhLCBwcm9wcyB9KSB7XG4gICAgZGF0YS5udXh0Q2hpbGQgPSB0cnVlXG4gICAgY29uc3QgX3BhcmVudCA9IHBhcmVudFxuICAgIGNvbnN0IHRyYW5zaXRpb25zID0gcGFyZW50LiRudXh0Lm51eHQudHJhbnNpdGlvbnNcbiAgICBjb25zdCBkZWZhdWx0VHJhbnNpdGlvbiA9IHBhcmVudC4kbnV4dC5udXh0LmRlZmF1bHRUcmFuc2l0aW9uXG5cbiAgICBsZXQgZGVwdGggPSAwXG4gICAgd2hpbGUgKHBhcmVudCkge1xuICAgICAgaWYgKHBhcmVudC4kdm5vZGUgJiYgcGFyZW50LiR2bm9kZS5kYXRhLm51eHRDaGlsZCkge1xuICAgICAgICBkZXB0aCsrXG4gICAgICB9XG4gICAgICBwYXJlbnQgPSBwYXJlbnQuJHBhcmVudFxuICAgIH1cbiAgICBkYXRhLm51eHRDaGlsZERlcHRoID0gZGVwdGhcbiAgICBjb25zdCB0cmFuc2l0aW9uID0gdHJhbnNpdGlvbnNbZGVwdGhdIHx8IGRlZmF1bHRUcmFuc2l0aW9uXG4gICAgY29uc3QgdHJhbnNpdGlvblByb3BzID0ge31cbiAgICB0cmFuc2l0aW9uc0tleXMuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICBpZiAodHlwZW9mIHRyYW5zaXRpb25ba2V5XSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgdHJhbnNpdGlvblByb3BzW2tleV0gPSB0cmFuc2l0aW9uW2tleV1cbiAgICAgIH1cbiAgICB9KVxuXG4gICAgY29uc3QgbGlzdGVuZXJzID0ge31cbiAgICBsaXN0ZW5lcnNLZXlzLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiB0cmFuc2l0aW9uW2tleV0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgbGlzdGVuZXJzW2tleV0gPSB0cmFuc2l0aW9uW2tleV0uYmluZChfcGFyZW50KVxuICAgICAgfVxuICAgIH0pXG4gICAgLy8gQWRkIHRyaWdnZXJTY3JvbGwgZXZlbnQgb24gYmVmb3JlRW50ZXIgKGZpeCAjMTM3NilcbiAgICBjb25zdCBiZWZvcmVFbnRlciA9IGxpc3RlbmVycy5iZWZvcmVFbnRlclxuICAgIGxpc3RlbmVycy5iZWZvcmVFbnRlciA9IChlbCkgPT4ge1xuICAgICAgLy8gRW5zdXJlIHRvIHRyaWdnZXIgc2Nyb2xsIGV2ZW50IGFmdGVyIGNhbGxpbmcgc2Nyb2xsQmVoYXZpb3JcbiAgICAgIHdpbmRvdy4kbnV4dC4kbmV4dFRpY2soKCkgPT4ge1xuICAgICAgICB3aW5kb3cuJG51eHQuJGVtaXQoJ3RyaWdnZXJTY3JvbGwnKVxuICAgICAgfSlcbiAgICAgIGlmIChiZWZvcmVFbnRlcikge1xuICAgICAgICByZXR1cm4gYmVmb3JlRW50ZXIuY2FsbChfcGFyZW50LCBlbClcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBtYWtlIHN1cmUgdGhhdCBsZWF2ZSBpcyBjYWxsZWQgYXN5bmNocm9ub3VzIChmaXggIzU3MDMpXG4gICAgaWYgKHRyYW5zaXRpb24uY3NzID09PSBmYWxzZSkge1xuICAgICAgY29uc3QgbGVhdmUgPSBsaXN0ZW5lcnMubGVhdmVcblxuICAgICAgLy8gb25seSBhZGQgbGVhdmUgbGlzdGVuZXIgd2hlbiB1c2VyIGRpZG50IHByb3ZpZGUgb25lXG4gICAgICAvLyBvciB3aGVuIGl0IG1pc3NlcyB0aGUgZG9uZSBhcmd1bWVudFxuICAgICAgaWYgKCFsZWF2ZSB8fCBsZWF2ZS5sZW5ndGggPCAyKSB7XG4gICAgICAgIGxpc3RlbmVycy5sZWF2ZSA9IChlbCwgZG9uZSkgPT4ge1xuICAgICAgICAgIGlmIChsZWF2ZSkge1xuICAgICAgICAgICAgbGVhdmUuY2FsbChfcGFyZW50LCBlbClcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBfcGFyZW50LiRuZXh0VGljayhkb25lKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IHJvdXRlclZpZXcgPSBoKCdyb3V0ZXJWaWV3JywgZGF0YSlcblxuICAgIGlmIChwcm9wcy5rZWVwQWxpdmUpIHtcbiAgICAgIHJvdXRlclZpZXcgPSBoKCdrZWVwLWFsaXZlJywgeyBwcm9wczogcHJvcHMua2VlcEFsaXZlUHJvcHMgfSwgW3JvdXRlclZpZXddKVxuICAgIH1cblxuICAgIHJldHVybiBoKCd0cmFuc2l0aW9uJywge1xuICAgICAgcHJvcHM6IHRyYW5zaXRpb25Qcm9wcyxcbiAgICAgIG9uOiBsaXN0ZW5lcnNcbiAgICB9LCBbcm91dGVyVmlld10pXG4gIH1cbn1cblxuY29uc3QgdHJhbnNpdGlvbnNLZXlzID0gW1xuICAnbmFtZScsXG4gICdtb2RlJyxcbiAgJ2FwcGVhcicsXG4gICdjc3MnLFxuICAndHlwZScsXG4gICdkdXJhdGlvbicsXG4gICdlbnRlckNsYXNzJyxcbiAgJ2xlYXZlQ2xhc3MnLFxuICAnYXBwZWFyQ2xhc3MnLFxuICAnZW50ZXJBY3RpdmVDbGFzcycsXG4gICdlbnRlckFjdGl2ZUNsYXNzJyxcbiAgJ2xlYXZlQWN0aXZlQ2xhc3MnLFxuICAnYXBwZWFyQWN0aXZlQ2xhc3MnLFxuICAnZW50ZXJUb0NsYXNzJyxcbiAgJ2xlYXZlVG9DbGFzcycsXG4gICdhcHBlYXJUb0NsYXNzJ1xuXVxuXG5jb25zdCBsaXN0ZW5lcnNLZXlzID0gW1xuICAnYmVmb3JlRW50ZXInLFxuICAnZW50ZXInLFxuICAnYWZ0ZXJFbnRlcicsXG4gICdlbnRlckNhbmNlbGxlZCcsXG4gICdiZWZvcmVMZWF2ZScsXG4gICdsZWF2ZScsXG4gICdhZnRlckxlYXZlJyxcbiAgJ2xlYXZlQ2FuY2VsbGVkJyxcbiAgJ2JlZm9yZUFwcGVhcicsXG4gICdhcHBlYXInLFxuICAnYWZ0ZXJBcHBlYXInLFxuICAnYXBwZWFyQ2FuY2VsbGVkJ1xuXVxuIiwidmFyIHJlbmRlciA9IGZ1bmN0aW9uICgpIHt2YXIgX3ZtPXRoaXM7dmFyIF9oPV92bS4kY3JlYXRlRWxlbWVudDt2YXIgX2M9X3ZtLl9zZWxmLl9jfHxfaDtyZXR1cm4gX2MoJ3YtYXBwJyx7YXR0cnM6e1wiZGFya1wiOlwiXCJ9fSxbKF92bS5lcnJvci5zdGF0dXNDb2RlID09PSA0MDQpP19jKCdoMScsW192bS5fdihcIlxcbiAgICAgICAgXCIrX3ZtLl9zKF92bS5wYWdlTm90Rm91bmQpK1wiXFxuICAgIFwiKV0pOl9jKCdoMScsW192bS5fdihcIlxcbiAgICAgICAgXCIrX3ZtLl9zKF92bS5vdGhlckVycm9yKStcIlxcbiAgICBcIildKSxfdm0uX3YoXCIgXCIpLF9jKCdhJyx7YXR0cnM6e1wiaHJlZlwiOlwiaHR0cHM6Ly9naXRodWIuY29tL2RhdGFzdGF4L25vc3FsYmVuY2gtbGFicy9pc3N1ZXMvbmV3P2xhYmVscz1BUFBVU0UsVVgsZG9jdW1lbnRhdGlvblwifX0sW192bS5fdihcIlxcbiAgICAgICAgRmlsZSBBIFVJIEJ1ZyBSZXBvcnRcXG4gICAgXCIpXSksX3ZtLl92KFwiIFwiKSxfYygnTnV4dExpbmsnLHthdHRyczp7XCJ0b1wiOlwiL1wifX0sW192bS5fdihcIlxcbiAgICAgICAgSG9tZSBwYWdlXFxuICAgIFwiKV0pXSwxKX1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxuXG5leHBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9IiwiPHRlbXBsYXRlPlxuICAgIDx2LWFwcCBkYXJrPlxuICAgICAgICA8aDEgdi1pZj1cImVycm9yLnN0YXR1c0NvZGUgPT09IDQwNFwiPlxuICAgICAgICAgICAge3sgcGFnZU5vdEZvdW5kIH19XG4gICAgICAgIDwvaDE+XG4gICAgICAgIDxoMSB2LWVsc2U+XG4gICAgICAgICAgICB7eyBvdGhlckVycm9yIH19XG4gICAgICAgIDwvaDE+XG4gICAgICAgIDxhIGhyZWY9XCJodHRwczovL2dpdGh1Yi5jb20vZGF0YXN0YXgvbm9zcWxiZW5jaC1sYWJzL2lzc3Vlcy9uZXc/bGFiZWxzPUFQUFVTRSxVWCxkb2N1bWVudGF0aW9uXCI+XG4gICAgICAgICAgICBGaWxlIEEgVUkgQnVnIFJlcG9ydFxuICAgICAgICA8L2E+XG4gICAgICAgIDxOdXh0TGluayB0bz1cIi9cIj5cbiAgICAgICAgICAgIEhvbWUgcGFnZVxuICAgICAgICA8L051eHRMaW5rPlxuICAgIDwvdi1hcHA+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuICAgIGV4cG9ydCBkZWZhdWx0IHtcbiAgICAgICAgbGF5b3V0OiAnZW1wdHknLFxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgZXJyb3I6IHtcbiAgICAgICAgICAgICAgICB0eXBlOiBPYmplY3QsXG4gICAgICAgICAgICAgICAgZGVmYXVsdDogbnVsbFxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBoZWFkKCkge1xuICAgICAgICAgICAgY29uc3QgdGl0bGUgPVxuICAgICAgICAgICAgICAgIHRoaXMuZXJyb3Iuc3RhdHVzQ29kZSA9PT0gNDA0ID8gdGhpcy5wYWdlTm90Rm91bmQgOiB0aGlzLm90aGVyRXJyb3JcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdGl0bGVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZGF0YSgpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgcGFnZU5vdEZvdW5kOiAnNDA0IE5vdCBGb3VuZCcsXG4gICAgICAgICAgICAgICAgb3RoZXJFcnJvcjogJ0FuIGVycm9yIG9jY3VycmVkJ1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuPC9zY3JpcHQ+XG5cbjxzdHlsZSBzY29wZWQ+XG4gICAgaDEge1xuICAgICAgICBmb250LXNpemU6IDIwcHg7XG4gICAgfVxuPC9zdHlsZT5cbiIsImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P3JlZi0tMi0wIS4uL25vZGVfbW9kdWxlcy92dWV0aWZ5LWxvYWRlci9saWIvbG9hZGVyLmpzPz9yZWYtLTE2LTAhLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9lcnJvci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P3JlZi0tMi0wIS4uL25vZGVfbW9kdWxlcy92dWV0aWZ5LWxvYWRlci9saWIvbG9hZGVyLmpzPz9yZWYtLTE2LTAhLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9lcnJvci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCIiLCJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9IGZyb20gXCIuL2Vycm9yLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00ODFlMjhiOCZzY29wZWQ9dHJ1ZSZcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9lcnJvci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmV4cG9ydCAqIGZyb20gXCIuL2Vycm9yLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuaW1wb3J0IHN0eWxlMCBmcm9tIFwiLi9lcnJvci52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD00ODFlMjhiOCZzY29wZWQ9dHJ1ZSZsYW5nPWNzcyZcIlxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cbmltcG9ydCBub3JtYWxpemVyIGZyb20gXCIhLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3J1bnRpbWUvY29tcG9uZW50Tm9ybWFsaXplci5qc1wiXG52YXIgY29tcG9uZW50ID0gbm9ybWFsaXplcihcbiAgc2NyaXB0LFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIFwiNDgxZTI4YjhcIixcbiAgbnVsbFxuICBcbilcblxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHNcblxuLyogdnVldGlmeS1sb2FkZXIgKi9cbmltcG9ydCBpbnN0YWxsQ29tcG9uZW50cyBmcm9tIFwiIS4uL25vZGVfbW9kdWxlcy92dWV0aWZ5LWxvYWRlci9saWIvcnVudGltZS9pbnN0YWxsQ29tcG9uZW50cy5qc1wiXG5pbXBvcnQgeyBWQXBwIH0gZnJvbSAndnVldGlmeS9saWIvY29tcG9uZW50cy9WQXBwJztcbmluc3RhbGxDb21wb25lbnRzKGNvbXBvbmVudCwge1ZBcHB9KVxuIiwiaW1wb3J0IFZ1ZSBmcm9tICd2dWUnXG5pbXBvcnQgeyBjb21waWxlIH0gZnJvbSAnLi4vdXRpbHMnXG5cbmltcG9ydCBOdXh0RXJyb3IgZnJvbSAnLi4vLi4vbGF5b3V0cy9lcnJvci52dWUnXG5cbmltcG9ydCBOdXh0Q2hpbGQgZnJvbSAnLi9udXh0LWNoaWxkJ1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdOdXh0JyxcbiAgY29tcG9uZW50czoge1xuICAgIE51eHRDaGlsZCxcbiAgICBOdXh0RXJyb3JcbiAgfSxcbiAgcHJvcHM6IHtcbiAgICBudXh0Q2hpbGRLZXk6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZFxuICAgIH0sXG4gICAga2VlcEFsaXZlOiBCb29sZWFuLFxuICAgIGtlZXBBbGl2ZVByb3BzOiB7XG4gICAgICB0eXBlOiBPYmplY3QsXG4gICAgICBkZWZhdWx0OiB1bmRlZmluZWRcbiAgICB9LFxuICAgIG5hbWU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6ICdkZWZhdWx0J1xuICAgIH1cbiAgfSxcbiAgZXJyb3JDYXB0dXJlZCAoZXJyb3IpIHtcbiAgICAvLyBpZiB3ZSByZWNlaXZlIGFuZCBlcnJvciB3aGlsZSBzaG93aW5nIHRoZSBOdXh0RXJyb3IgY29tcG9uZW50XG4gICAgLy8gY2FwdHVyZSB0aGUgZXJyb3IgYW5kIGZvcmNlIGFuIGltbWVkaWF0ZSB1cGRhdGUgc28gd2UgcmUtcmVuZGVyXG4gICAgLy8gd2l0aG91dCB0aGUgTnV4dEVycm9yIGNvbXBvbmVudFxuICAgIGlmICh0aGlzLmRpc3BsYXlpbmdOdXh0RXJyb3IpIHtcbiAgICAgIHRoaXMuZXJyb3JGcm9tTnV4dEVycm9yID0gZXJyb3JcbiAgICAgIHRoaXMuJGZvcmNlVXBkYXRlKClcbiAgICB9XG4gIH0sXG4gIGNvbXB1dGVkOiB7XG4gICAgcm91dGVyVmlld0tleSAoKSB7XG4gICAgICAvLyBJZiBudXh0Q2hpbGRLZXkgcHJvcCBpcyBnaXZlbiBvciBjdXJyZW50IHJvdXRlIGhhcyBjaGlsZHJlblxuICAgICAgaWYgKHR5cGVvZiB0aGlzLm51eHRDaGlsZEtleSAhPT0gJ3VuZGVmaW5lZCcgfHwgdGhpcy4kcm91dGUubWF0Y2hlZC5sZW5ndGggPiAxKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm51eHRDaGlsZEtleSB8fCBjb21waWxlKHRoaXMuJHJvdXRlLm1hdGNoZWRbMF0ucGF0aCkodGhpcy4kcm91dGUucGFyYW1zKVxuICAgICAgfVxuXG4gICAgICBjb25zdCBbbWF0Y2hlZFJvdXRlXSA9IHRoaXMuJHJvdXRlLm1hdGNoZWRcblxuICAgICAgaWYgKCFtYXRjaGVkUm91dGUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuJHJvdXRlLnBhdGhcbiAgICAgIH1cblxuICAgICAgY29uc3QgQ29tcG9uZW50ID0gbWF0Y2hlZFJvdXRlLmNvbXBvbmVudHMuZGVmYXVsdFxuXG4gICAgICBpZiAoQ29tcG9uZW50ICYmIENvbXBvbmVudC5vcHRpb25zKSB7XG4gICAgICAgIGNvbnN0IHsgb3B0aW9ucyB9ID0gQ29tcG9uZW50XG5cbiAgICAgICAgaWYgKG9wdGlvbnMua2V5KSB7XG4gICAgICAgICAgcmV0dXJuICh0eXBlb2Ygb3B0aW9ucy5rZXkgPT09ICdmdW5jdGlvbicgPyBvcHRpb25zLmtleSh0aGlzLiRyb3V0ZSkgOiBvcHRpb25zLmtleSlcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCBzdHJpY3QgPSAvXFwvJC8udGVzdChtYXRjaGVkUm91dGUucGF0aClcbiAgICAgIHJldHVybiBzdHJpY3QgPyB0aGlzLiRyb3V0ZS5wYXRoIDogdGhpcy4kcm91dGUucGF0aC5yZXBsYWNlKC9cXC8kLywgJycpXG4gICAgfVxuICB9LFxuICBiZWZvcmVDcmVhdGUgKCkge1xuICAgIFZ1ZS51dGlsLmRlZmluZVJlYWN0aXZlKHRoaXMsICdudXh0JywgdGhpcy4kcm9vdC4kb3B0aW9ucy5udXh0KVxuICB9LFxuICByZW5kZXIgKGgpIHtcbiAgICAvLyBpZiB0aGVyZSBpcyBubyBlcnJvclxuICAgIGlmICghdGhpcy5udXh0LmVycikge1xuICAgICAgLy8gRGlyZWN0bHkgcmV0dXJuIG51eHQgY2hpbGRcbiAgICAgIHJldHVybiBoKCdOdXh0Q2hpbGQnLCB7XG4gICAgICAgIGtleTogdGhpcy5yb3V0ZXJWaWV3S2V5LFxuICAgICAgICBwcm9wczogdGhpcy4kcHJvcHNcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgLy8gaWYgYW4gZXJyb3Igb2NjdXJlZCB3aXRoaW4gTnV4dEVycm9yIHNob3cgYSBzaW1wbGVcbiAgICAvLyBlcnJvciBtZXNzYWdlIGluc3RlYWQgdG8gcHJldmVudCBsb29waW5nXG4gICAgaWYgKHRoaXMuZXJyb3JGcm9tTnV4dEVycm9yKSB7XG4gICAgICB0aGlzLiRuZXh0VGljaygoKSA9PiAodGhpcy5lcnJvckZyb21OdXh0RXJyb3IgPSBmYWxzZSkpXG5cbiAgICAgIHJldHVybiBoKCdkaXYnLCB7fSwgW1xuICAgICAgICBoKCdoMicsICdBbiBlcnJvciBvY2N1cmVkIHdoaWxlIHNob3dpbmcgdGhlIGVycm9yIHBhZ2UnKSxcbiAgICAgICAgaCgncCcsICdVbmZvcnR1bmF0ZWx5IGFuIGVycm9yIG9jY3VyZWQgYW5kIHdoaWxlIHNob3dpbmcgdGhlIGVycm9yIHBhZ2UgYW5vdGhlciBlcnJvciBvY2N1cmVkJyksXG4gICAgICAgIGgoJ3AnLCBgRXJyb3IgZGV0YWlsczogJHt0aGlzLmVycm9yRnJvbU51eHRFcnJvci50b1N0cmluZygpfWApLFxuICAgICAgICBoKCdudXh0LWxpbmsnLCB7IHByb3BzOiB7IHRvOiAnLycgfSB9LCAnR28gYmFjayB0byBob21lJylcbiAgICAgIF0pXG4gICAgfVxuXG4gICAgLy8gdHJhY2sgaWYgd2UgYXJlIHNob3dpbmcgdGhlIE51eHRFcnJvciBjb21wb25lbnRcbiAgICB0aGlzLmRpc3BsYXlpbmdOdXh0RXJyb3IgPSB0cnVlXG4gICAgdGhpcy4kbmV4dFRpY2soKCkgPT4gKHRoaXMuZGlzcGxheWluZ051eHRFcnJvciA9IGZhbHNlKSlcblxuICAgIHJldHVybiBoKE51eHRFcnJvciwge1xuICAgICAgcHJvcHM6IHtcbiAgICAgICAgZXJyb3I6IHRoaXMubnV4dC5lcnJcbiAgICAgIH1cbiAgICB9KVxuICB9XG59XG4iLCI8c2NyaXB0PlxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnTnV4dExvYWRpbmcnLFxuICBkYXRhICgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgcGVyY2VudDogMCxcbiAgICAgIHNob3c6IGZhbHNlLFxuICAgICAgY2FuU3VjY2VlZDogdHJ1ZSxcbiAgICAgIHJldmVyc2VkOiBmYWxzZSxcbiAgICAgIHNraXBUaW1lckNvdW50OiAwLFxuICAgICAgcnRsOiBmYWxzZSxcbiAgICAgIHRocm90dGxlOiAyMDAsXG4gICAgICBkdXJhdGlvbjogNTAwMCxcbiAgICAgIGNvbnRpbnVvdXM6IGZhbHNlXG4gICAgfVxuICB9LFxuICBjb21wdXRlZDoge1xuICAgIGxlZnQgKCkge1xuICAgICAgaWYgKCF0aGlzLmNvbnRpbnVvdXMgJiYgIXRoaXMucnRsKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMucnRsXG4gICAgICAgID8gKHRoaXMucmV2ZXJzZWQgPyAnMHB4JyA6ICdhdXRvJylcbiAgICAgICAgOiAoIXRoaXMucmV2ZXJzZWQgPyAnMHB4JyA6ICdhdXRvJylcbiAgICB9XG4gIH0sXG4gIGJlZm9yZURlc3Ryb3kgKCkge1xuICAgIHRoaXMuY2xlYXIoKVxuICB9LFxuICBtZXRob2RzOiB7XG4gICAgY2xlYXIgKCkge1xuICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLl90aW1lcilcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLl90aHJvdHRsZSlcbiAgICAgIHRoaXMuX3RpbWVyID0gbnVsbFxuICAgIH0sXG4gICAgc3RhcnQgKCkge1xuICAgICAgdGhpcy5jbGVhcigpXG4gICAgICB0aGlzLnBlcmNlbnQgPSAwXG4gICAgICB0aGlzLnJldmVyc2VkID0gZmFsc2VcbiAgICAgIHRoaXMuc2tpcFRpbWVyQ291bnQgPSAwXG4gICAgICB0aGlzLmNhblN1Y2NlZWQgPSB0cnVlXG5cbiAgICAgIGlmICh0aGlzLnRocm90dGxlKSB7XG4gICAgICAgIHRoaXMuX3Rocm90dGxlID0gc2V0VGltZW91dCgoKSA9PiB0aGlzLnN0YXJ0VGltZXIoKSwgdGhpcy50aHJvdHRsZSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc3RhcnRUaW1lcigpXG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpc1xuICAgIH0sXG4gICAgc2V0IChudW0pIHtcbiAgICAgIHRoaXMuc2hvdyA9IHRydWVcbiAgICAgIHRoaXMuY2FuU3VjY2VlZCA9IHRydWVcbiAgICAgIHRoaXMucGVyY2VudCA9IE1hdGgubWluKDEwMCwgTWF0aC5tYXgoMCwgTWF0aC5mbG9vcihudW0pKSlcbiAgICAgIHJldHVybiB0aGlzXG4gICAgfSxcbiAgICBnZXQgKCkge1xuICAgICAgcmV0dXJuIHRoaXMucGVyY2VudFxuICAgIH0sXG4gICAgaW5jcmVhc2UgKG51bSkge1xuICAgICAgdGhpcy5wZXJjZW50ID0gTWF0aC5taW4oMTAwLCBNYXRoLmZsb29yKHRoaXMucGVyY2VudCArIG51bSkpXG4gICAgICByZXR1cm4gdGhpc1xuICAgIH0sXG4gICAgZGVjcmVhc2UgKG51bSkge1xuICAgICAgdGhpcy5wZXJjZW50ID0gTWF0aC5tYXgoMCwgTWF0aC5mbG9vcih0aGlzLnBlcmNlbnQgLSBudW0pKVxuICAgICAgcmV0dXJuIHRoaXNcbiAgICB9LFxuICAgIHBhdXNlICgpIHtcbiAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5fdGltZXIpXG4gICAgICByZXR1cm4gdGhpc1xuICAgIH0sXG4gICAgcmVzdW1lICgpIHtcbiAgICAgIHRoaXMuc3RhcnRUaW1lcigpXG4gICAgICByZXR1cm4gdGhpc1xuICAgIH0sXG4gICAgZmluaXNoICgpIHtcbiAgICAgIHRoaXMucGVyY2VudCA9IHRoaXMucmV2ZXJzZWQgPyAwIDogMTAwXG4gICAgICB0aGlzLmhpZGUoKVxuICAgICAgcmV0dXJuIHRoaXNcbiAgICB9LFxuICAgIGhpZGUgKCkge1xuICAgICAgdGhpcy5jbGVhcigpXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5zaG93ID0gZmFsc2VcbiAgICAgICAgdGhpcy4kbmV4dFRpY2soKCkgPT4ge1xuICAgICAgICAgIHRoaXMucGVyY2VudCA9IDBcbiAgICAgICAgICB0aGlzLnJldmVyc2VkID0gZmFsc2VcbiAgICAgICAgfSlcbiAgICAgIH0sIDUwMClcbiAgICAgIHJldHVybiB0aGlzXG4gICAgfSxcbiAgICBmYWlsICgpIHtcbiAgICAgIHRoaXMuY2FuU3VjY2VlZCA9IGZhbHNlXG4gICAgICByZXR1cm4gdGhpc1xuICAgIH0sXG4gICAgc3RhcnRUaW1lciAoKSB7XG4gICAgICBpZiAoIXRoaXMuc2hvdykge1xuICAgICAgICB0aGlzLnNob3cgPSB0cnVlXG4gICAgICB9XG4gICAgICBpZiAodHlwZW9mIHRoaXMuX2N1dCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgdGhpcy5fY3V0ID0gMTAwMDAgLyBNYXRoLmZsb29yKHRoaXMuZHVyYXRpb24pXG4gICAgICB9XG5cbiAgICAgIHRoaXMuX3RpbWVyID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICAvKipcbiAgICAgICAgICogV2hlbiByZXZlcnNpbmcgZGlyZWN0aW9uIHNraXAgb25lIHRpbWVyc1xuICAgICAgICAgKiBzbyAwLCAxMDAgYXJlIGRpc3BsYXllZCBmb3IgdHdvIGl0ZXJhdGlvbnNcbiAgICAgICAgICogYWxzbyBkaXNhYmxlIGNzcyB3aWR0aCB0cmFuc2l0aW9uaW5nXG4gICAgICAgICAqIHdoaWNoIG90aGVyd2lzZSBpbnRlcmZlcmVzIGFuZCBzaG93c1xuICAgICAgICAgKiBhIGpvam8gZWZmZWN0XG4gICAgICAgICAqL1xuICAgICAgICBpZiAodGhpcy5za2lwVGltZXJDb3VudCA+IDApIHtcbiAgICAgICAgICB0aGlzLnNraXBUaW1lckNvdW50LS1cbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnJldmVyc2VkKSB7XG4gICAgICAgICAgdGhpcy5kZWNyZWFzZSh0aGlzLl9jdXQpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5pbmNyZWFzZSh0aGlzLl9jdXQpXG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5jb250aW51b3VzKSB7XG4gICAgICAgICAgaWYgKHRoaXMucGVyY2VudCA+PSAxMDApIHtcbiAgICAgICAgICAgIHRoaXMuc2tpcFRpbWVyQ291bnQgPSAxXG5cbiAgICAgICAgICAgIHRoaXMucmV2ZXJzZWQgPSAhdGhpcy5yZXZlcnNlZFxuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5wZXJjZW50IDw9IDApIHtcbiAgICAgICAgICAgIHRoaXMuc2tpcFRpbWVyQ291bnQgPSAxXG5cbiAgICAgICAgICAgIHRoaXMucmV2ZXJzZWQgPSAhdGhpcy5yZXZlcnNlZFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSwgMTAwKVxuICAgIH1cbiAgfSxcbiAgcmVuZGVyIChoKSB7XG4gICAgbGV0IGVsID0gaChmYWxzZSlcbiAgICBpZiAodGhpcy5zaG93KSB7XG4gICAgICBlbCA9IGgoJ2RpdicsIHtcbiAgICAgICAgc3RhdGljQ2xhc3M6ICdudXh0LXByb2dyZXNzJyxcbiAgICAgICAgY2xhc3M6IHtcbiAgICAgICAgICAnbnV4dC1wcm9ncmVzcy1ub3RyYW5zaXRpb24nOiB0aGlzLnNraXBUaW1lckNvdW50ID4gMCxcbiAgICAgICAgICAnbnV4dC1wcm9ncmVzcy1mYWlsZWQnOiAhdGhpcy5jYW5TdWNjZWVkXG4gICAgICAgIH0sXG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgd2lkdGg6IHRoaXMucGVyY2VudCArICclJyxcbiAgICAgICAgICBsZWZ0OiB0aGlzLmxlZnRcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gICAgcmV0dXJuIGVsXG4gIH1cbn1cbjwvc2NyaXB0PlxuXG48c3R5bGU+XG4ubnV4dC1wcm9ncmVzcyB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiAwcHg7XG4gIGxlZnQ6IDBweDtcbiAgcmlnaHQ6IDBweDtcbiAgaGVpZ2h0OiAycHg7XG4gIHdpZHRoOiAwJTtcbiAgb3BhY2l0eTogMTtcbiAgdHJhbnNpdGlvbjogd2lkdGggMC4xcywgb3BhY2l0eSAwLjRzO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICB6LWluZGV4OiA5OTk5OTk7XG59XG5cbi5udXh0LXByb2dyZXNzLm51eHQtcHJvZ3Jlc3Mtbm90cmFuc2l0aW9uIHtcbiAgdHJhbnNpdGlvbjogbm9uZTtcbn1cblxuLm51eHQtcHJvZ3Jlc3MtZmFpbGVkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmVkO1xufVxuPC9zdHlsZT5cbiIsImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P3JlZi0tMi0wIS4uLy4uL25vZGVfbW9kdWxlcy92dWV0aWZ5LWxvYWRlci9saWIvbG9hZGVyLmpzPz9yZWYtLTE2LTAhLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9udXh0LWxvYWRpbmcudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9yZWYtLTItMCEuLi8uLi9ub2RlX21vZHVsZXMvdnVldGlmeS1sb2FkZXIvbGliL2xvYWRlci5qcz8/cmVmLS0xNi0wIS4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vbnV4dC1sb2FkaW5nLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIiIsInZhciByZW5kZXIsIHN0YXRpY1JlbmRlckZuc1xuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9udXh0LWxvYWRpbmcudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5leHBvcnQgKiBmcm9tIFwiLi9udXh0LWxvYWRpbmcudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5pbXBvcnQgc3R5bGUwIGZyb20gXCIuL251eHQtbG9hZGluZy52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZsYW5nPWNzcyZcIlxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cbmltcG9ydCBub3JtYWxpemVyIGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3J1bnRpbWUvY29tcG9uZW50Tm9ybWFsaXplci5qc1wiXG52YXIgY29tcG9uZW50ID0gbm9ybWFsaXplcihcbiAgc2NyaXB0LFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcbiAgXG4pXG5cbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIiwidmFyIHJlbmRlciA9IGZ1bmN0aW9uICgpIHt2YXIgX3ZtPXRoaXM7dmFyIF9oPV92bS4kY3JlYXRlRWxlbWVudDt2YXIgX2M9X3ZtLl9zZWxmLl9jfHxfaDtyZXR1cm4gX2MoJ2RpdicsW19jKCdudXh0JyldLDEpfVxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtdXG5cbmV4cG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0iLCJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9IGZyb20gXCIuL2RlZmF1bHQudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTc2MDkxNGUzJlwiXG52YXIgc2NyaXB0ID0ge31cbmltcG9ydCBzdHlsZTAgZnJvbSBcIi4vZGVmYXVsdC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZsYW5nPWNzcyZcIlxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cbmltcG9ydCBub3JtYWxpemVyIGZyb20gXCIhLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3J1bnRpbWUvY29tcG9uZW50Tm9ybWFsaXplci5qc1wiXG52YXIgY29tcG9uZW50ID0gbm9ybWFsaXplcihcbiAgc2NyaXB0LFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcbiAgXG4pXG5cbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIiwiaW1wb3J0IFZ1ZSBmcm9tICd2dWUnXG5cbmltcG9ydCB7XG4gIGdldE1hdGNoZWRDb21wb25lbnRzSW5zdGFuY2VzLFxuICBwcm9taXNpZnksXG4gIGdsb2JhbEhhbmRsZUVycm9yXG59IGZyb20gJy4vdXRpbHMnXG5cbmltcG9ydCBOdXh0RXJyb3IgZnJvbSAnLi4vbGF5b3V0cy9lcnJvci52dWUnXG5pbXBvcnQgTnV4dExvYWRpbmcgZnJvbSAnLi9jb21wb25lbnRzL251eHQtbG9hZGluZy52dWUnXG5cbmltcG9ydCBfNmY2YzA5OGIgZnJvbSAnLi4vbGF5b3V0cy9kZWZhdWx0LnZ1ZSdcblxuY29uc3QgbGF5b3V0cyA9IHsgXCJfZGVmYXVsdFwiOiBfNmY2YzA5OGIgfVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGhlYWQ6IHtcInRpdGxlVGVtcGxhdGVcIjpcIiVzTm9TcWxCZW5jaCBHdWlkZWJvb2tcIixcInRpdGxlXCI6XCJndWlkZWJvb2tcIixcIm1ldGFcIjpbe1wiY2hhcnNldFwiOlwidXRmLThcIn0se1wibmFtZVwiOlwidmlld3BvcnRcIixcImNvbnRlbnRcIjpcIndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xXCJ9LHtcImhpZFwiOlwiZGVzY3JpcHRpb25cIixcIm5hbWVcIjpcImRlc2NyaXB0aW9uXCIsXCJjb250ZW50XCI6XCJEb2NzIEFwcCBmb3IgTm9TUUxCZW5jaFwifV0sXCJsaW5rXCI6W3tcInJlbFwiOlwiaWNvblwiLFwidHlwZVwiOlwiaW1hZ2VcXHUwMDJGeC1pY29uXCIsXCJocmVmXCI6XCJcXHUwMDJGZmF2aWNvbi5pY29cIn0se1wicmVsXCI6XCJzdHlsZXNoZWV0XCIsXCJ0eXBlXCI6XCJ0ZXh0XFx1MDAyRmNzc1wiLFwiaHJlZlwiOlwiaHR0cHM6XFx1MDAyRlxcdTAwMkZmb250cy5nb29nbGVhcGlzLmNvbVxcdTAwMkZjc3M/ZmFtaWx5PVJvYm90bzoxMDAsMzAwLDQwMCw1MDAsNzAwLDkwMCZkaXNwbGF5PXN3YXBcIn0se1wicmVsXCI6XCJzdHlsZXNoZWV0XCIsXCJ0eXBlXCI6XCJ0ZXh0XFx1MDAyRmNzc1wiLFwiaHJlZlwiOlwiaHR0cHM6XFx1MDAyRlxcdTAwMkZjZG4uanNkZWxpdnIubmV0XFx1MDAyRm5wbVxcdTAwMkZAbWRpXFx1MDAyRmZvbnRAbGF0ZXN0XFx1MDAyRmNzc1xcdTAwMkZtYXRlcmlhbGRlc2lnbmljb25zLm1pbi5jc3NcIn1dLFwic3R5bGVcIjpbXSxcInNjcmlwdFwiOltdfSxcblxuICByZW5kZXIgKGgsIHByb3BzKSB7XG4gICAgY29uc3QgbG9hZGluZ0VsID0gaCgnTnV4dExvYWRpbmcnLCB7IHJlZjogJ2xvYWRpbmcnIH0pXG5cbiAgICBpZiAodGhpcy5udXh0LmVyciAmJiBOdXh0RXJyb3IpIHtcbiAgICAgIGNvbnN0IGVycm9yTGF5b3V0ID0gKE51eHRFcnJvci5vcHRpb25zIHx8IE51eHRFcnJvcikubGF5b3V0XG4gICAgICBpZiAoZXJyb3JMYXlvdXQpIHtcbiAgICAgICAgdGhpcy5zZXRMYXlvdXQoXG4gICAgICAgICAgdHlwZW9mIGVycm9yTGF5b3V0ID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgICA/IGVycm9yTGF5b3V0LmNhbGwoTnV4dEVycm9yLCB0aGlzLmNvbnRleHQpXG4gICAgICAgICAgICA6IGVycm9yTGF5b3V0XG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBsYXlvdXRFbCA9IGgodGhpcy5sYXlvdXQgfHwgJ251eHQnKVxuICAgIGNvbnN0IHRlbXBsYXRlRWwgPSBoKCdkaXYnLCB7XG4gICAgICBkb21Qcm9wczoge1xuICAgICAgICBpZDogJ19fbGF5b3V0J1xuICAgICAgfSxcbiAgICAgIGtleTogdGhpcy5sYXlvdXROYW1lXG4gICAgfSwgW2xheW91dEVsXSlcblxuICAgIGNvbnN0IHRyYW5zaXRpb25FbCA9IGgoJ3RyYW5zaXRpb24nLCB7XG4gICAgICBwcm9wczoge1xuICAgICAgICBuYW1lOiAnbGF5b3V0JyxcbiAgICAgICAgbW9kZTogJ291dC1pbidcbiAgICAgIH0sXG4gICAgICBvbjoge1xuICAgICAgICBiZWZvcmVFbnRlciAoZWwpIHtcbiAgICAgICAgICAvLyBFbnN1cmUgdG8gdHJpZ2dlciBzY3JvbGwgZXZlbnQgYWZ0ZXIgY2FsbGluZyBzY3JvbGxCZWhhdmlvclxuICAgICAgICAgIHdpbmRvdy4kbnV4dC4kbmV4dFRpY2soKCkgPT4ge1xuICAgICAgICAgICAgd2luZG93LiRudXh0LiRlbWl0KCd0cmlnZ2VyU2Nyb2xsJylcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSwgW3RlbXBsYXRlRWxdKVxuXG4gICAgcmV0dXJuIGgoJ2RpdicsIHtcbiAgICAgIGRvbVByb3BzOiB7XG4gICAgICAgIGlkOiAnX19udXh0J1xuICAgICAgfVxuICAgIH0sIFtcbiAgICAgIGxvYWRpbmdFbCxcblxuICAgICAgdHJhbnNpdGlvbkVsXG4gICAgXSlcbiAgfSxcblxuICBkYXRhOiAoKSA9PiAoe1xuICAgIGlzT25saW5lOiB0cnVlLFxuXG4gICAgbGF5b3V0OiBudWxsLFxuICAgIGxheW91dE5hbWU6ICcnXG4gIH0pLFxuXG4gIGJlZm9yZUNyZWF0ZSAoKSB7XG4gICAgVnVlLnV0aWwuZGVmaW5lUmVhY3RpdmUodGhpcywgJ251eHQnLCB0aGlzLiRvcHRpb25zLm51eHQpXG4gIH0sXG4gIGNyZWF0ZWQgKCkge1xuICAgIC8vIEFkZCB0aGlzLiRudXh0IGluIGNoaWxkIGluc3RhbmNlc1xuICAgIFZ1ZS5wcm90b3R5cGUuJG51eHQgPSB0aGlzXG4gICAgLy8gYWRkIHRvIHdpbmRvdyBzbyB3ZSBjYW4gbGlzdGVuIHdoZW4gcmVhZHlcbiAgICBpZiAocHJvY2Vzcy5jbGllbnQpIHtcbiAgICAgIHdpbmRvdy4kbnV4dCA9IHRoaXNcblxuICAgICAgdGhpcy5yZWZyZXNoT25saW5lU3RhdHVzKClcbiAgICAgIC8vIFNldHVwIHRoZSBsaXN0ZW5lcnNcbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdvbmxpbmUnLCB0aGlzLnJlZnJlc2hPbmxpbmVTdGF0dXMpXG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignb2ZmbGluZScsIHRoaXMucmVmcmVzaE9ubGluZVN0YXR1cylcbiAgICB9XG4gICAgLy8gQWRkICRudXh0LmVycm9yKClcbiAgICB0aGlzLmVycm9yID0gdGhpcy5udXh0LmVycm9yXG4gICAgLy8gQWRkICRudXh0LmNvbnRleHRcbiAgICB0aGlzLmNvbnRleHQgPSB0aGlzLiRvcHRpb25zLmNvbnRleHRcbiAgfSxcblxuICBtb3VudGVkICgpIHtcbiAgICB0aGlzLiRsb2FkaW5nID0gdGhpcy4kcmVmcy5sb2FkaW5nXG4gIH0sXG4gIHdhdGNoOiB7XG4gICAgJ251eHQuZXJyJzogJ2Vycm9yQ2hhbmdlZCdcbiAgfSxcblxuICBjb21wdXRlZDoge1xuICAgIGlzT2ZmbGluZSAoKSB7XG4gICAgICByZXR1cm4gIXRoaXMuaXNPbmxpbmVcbiAgICB9XG4gIH0sXG5cbiAgbWV0aG9kczoge1xuICAgIHJlZnJlc2hPbmxpbmVTdGF0dXMgKCkge1xuICAgICAgaWYgKHByb2Nlc3MuY2xpZW50KSB7XG4gICAgICAgIGlmICh0eXBlb2Ygd2luZG93Lm5hdmlnYXRvci5vbkxpbmUgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgLy8gSWYgdGhlIGJyb3dzZXIgZG9lc24ndCBzdXBwb3J0IGNvbm5lY3Rpb24gc3RhdHVzIHJlcG9ydHNcbiAgICAgICAgICAvLyBhc3N1bWUgdGhhdCB3ZSBhcmUgb25saW5lIGJlY2F1c2UgbW9zdCBhcHBzJyBvbmx5IHJlYWN0XG4gICAgICAgICAgLy8gd2hlbiB0aGV5IG5vdyB0aGF0IHRoZSBjb25uZWN0aW9uIGhhcyBiZWVuIGludGVycnVwdGVkXG4gICAgICAgICAgdGhpcy5pc09ubGluZSA9IHRydWVcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmlzT25saW5lID0gd2luZG93Lm5hdmlnYXRvci5vbkxpbmVcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG5cbiAgICBhc3luYyByZWZyZXNoICgpIHtcbiAgICAgIGNvbnN0IHBhZ2VzID0gZ2V0TWF0Y2hlZENvbXBvbmVudHNJbnN0YW5jZXModGhpcy4kcm91dGUpXG5cbiAgICAgIGlmICghcGFnZXMubGVuZ3RoKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgdGhpcy4kbG9hZGluZy5zdGFydCgpXG5cbiAgICAgIGNvbnN0IHByb21pc2VzID0gcGFnZXMubWFwKChwYWdlKSA9PiB7XG4gICAgICAgIGNvbnN0IHAgPSBbXVxuXG4gICAgICAgIGlmIChwYWdlLiRvcHRpb25zLmZldGNoKSB7XG4gICAgICAgICAgcC5wdXNoKHByb21pc2lmeShwYWdlLiRvcHRpb25zLmZldGNoLCB0aGlzLmNvbnRleHQpKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHBhZ2UuJG9wdGlvbnMuYXN5bmNEYXRhKSB7XG4gICAgICAgICAgcC5wdXNoKFxuICAgICAgICAgICAgcHJvbWlzaWZ5KHBhZ2UuJG9wdGlvbnMuYXN5bmNEYXRhLCB0aGlzLmNvbnRleHQpXG4gICAgICAgICAgICAgIC50aGVuKChuZXdEYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gbmV3RGF0YSkge1xuICAgICAgICAgICAgICAgICAgVnVlLnNldChwYWdlLiRkYXRhLCBrZXksIG5ld0RhdGFba2V5XSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgKVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKHApXG4gICAgICB9KVxuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICB0aGlzLiRsb2FkaW5nLmZhaWwoKVxuICAgICAgICBnbG9iYWxIYW5kbGVFcnJvcihlcnJvcilcbiAgICAgICAgdGhpcy5lcnJvcihlcnJvcilcbiAgICAgIH1cbiAgICAgIHRoaXMuJGxvYWRpbmcuZmluaXNoKClcbiAgICB9LFxuXG4gICAgZXJyb3JDaGFuZ2VkICgpIHtcbiAgICAgIGlmICh0aGlzLm51eHQuZXJyICYmIHRoaXMuJGxvYWRpbmcpIHtcbiAgICAgICAgaWYgKHRoaXMuJGxvYWRpbmcuZmFpbCkge1xuICAgICAgICAgIHRoaXMuJGxvYWRpbmcuZmFpbCgpXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuJGxvYWRpbmcuZmluaXNoKSB7XG4gICAgICAgICAgdGhpcy4kbG9hZGluZy5maW5pc2goKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcblxuICAgIHNldExheW91dCAobGF5b3V0KSB7XG4gICAgICBpZiAoIWxheW91dCB8fCAhbGF5b3V0c1snXycgKyBsYXlvdXRdKSB7XG4gICAgICAgIGxheW91dCA9ICdkZWZhdWx0J1xuICAgICAgfVxuICAgICAgdGhpcy5sYXlvdXROYW1lID0gbGF5b3V0XG4gICAgICB0aGlzLmxheW91dCA9IGxheW91dHNbJ18nICsgbGF5b3V0XVxuICAgICAgcmV0dXJuIHRoaXMubGF5b3V0XG4gICAgfSxcbiAgICBsb2FkTGF5b3V0IChsYXlvdXQpIHtcbiAgICAgIGlmICghbGF5b3V0IHx8ICFsYXlvdXRzWydfJyArIGxheW91dF0pIHtcbiAgICAgICAgbGF5b3V0ID0gJ2RlZmF1bHQnXG4gICAgICB9XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGxheW91dHNbJ18nICsgbGF5b3V0XSlcbiAgICB9XG4gIH0sXG5cbiAgY29tcG9uZW50czoge1xuICAgIE51eHRMb2FkaW5nXG4gIH1cbn1cbiIsImltcG9ydCBWdWUgZnJvbSAndnVlJ1xuaW1wb3J0IFZ1ZXggZnJvbSAndnVleCdcblxuVnVlLnVzZShWdWV4KVxuXG5jb25zdCBWVUVYX1BST1BFUlRJRVMgPSBbJ3N0YXRlJywgJ2dldHRlcnMnLCAnYWN0aW9ucycsICdtdXRhdGlvbnMnXVxuXG5sZXQgc3RvcmUgPSB7fTtcblxuKGZ1bmN0aW9uIHVwZGF0ZU1vZHVsZXMgKCkge1xuICBzdG9yZSA9IG5vcm1hbGl6ZVJvb3QocmVxdWlyZSgnLi4vc3RvcmUvaW5kZXguanMnKSwgJ3N0b3JlL2luZGV4LmpzJylcblxuICAvLyBJZiBzdG9yZSBpcyBhbiBleHBvcnRlZCBtZXRob2QgPSBjbGFzc2ljIG1vZGUgKGRlcHJlY2F0ZWQpXG5cbiAgLy8gRW5mb3JjZSBzdG9yZSBtb2R1bGVzXG4gIHN0b3JlLm1vZHVsZXMgPSBzdG9yZS5tb2R1bGVzIHx8IHt9XG5cbiAgcmVzb2x2ZVN0b3JlTW9kdWxlcyhyZXF1aXJlKCcuLi9zdG9yZS9kb2NzLmpzJyksICdkb2NzLmpzJylcblxuICAvLyBJZiB0aGUgZW52aXJvbm1lbnQgc3VwcG9ydHMgaG90IHJlbG9hZGluZy4uLlxufSkoKVxuXG4vLyBjcmVhdGVTdG9yZVxuZXhwb3J0IGNvbnN0IGNyZWF0ZVN0b3JlID0gc3RvcmUgaW5zdGFuY2VvZiBGdW5jdGlvbiA/IHN0b3JlIDogKCkgPT4ge1xuICByZXR1cm4gbmV3IFZ1ZXguU3RvcmUoT2JqZWN0LmFzc2lnbih7XG4gICAgc3RyaWN0OiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJylcbiAgfSwgc3RvcmUpKVxufVxuXG5mdW5jdGlvbiBub3JtYWxpemVSb290IChtb2R1bGVEYXRhLCBmaWxlUGF0aCkge1xuICBtb2R1bGVEYXRhID0gbW9kdWxlRGF0YS5kZWZhdWx0IHx8IG1vZHVsZURhdGFcblxuICBpZiAobW9kdWxlRGF0YS5jb21taXQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFtudXh0XSAke2ZpbGVQYXRofSBzaG91bGQgZXhwb3J0IGEgbWV0aG9kIHRoYXQgcmV0dXJucyBhIFZ1ZXggaW5zdGFuY2UuYClcbiAgfVxuXG4gIGlmICh0eXBlb2YgbW9kdWxlRGF0YSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIC8vIEF2b2lkIFR5cGVFcnJvcjogc2V0dGluZyBhIHByb3BlcnR5IHRoYXQgaGFzIG9ubHkgYSBnZXR0ZXIgd2hlbiBvdmVyd3JpdGluZyB0b3AgbGV2ZWwga2V5c1xuICAgIG1vZHVsZURhdGEgPSBPYmplY3QuYXNzaWduKHt9LCBtb2R1bGVEYXRhKVxuICB9XG4gIHJldHVybiBub3JtYWxpemVNb2R1bGUobW9kdWxlRGF0YSwgZmlsZVBhdGgpXG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZU1vZHVsZSAobW9kdWxlRGF0YSwgZmlsZVBhdGgpIHtcbiAgaWYgKG1vZHVsZURhdGEuc3RhdGUgJiYgdHlwZW9mIG1vZHVsZURhdGEuc3RhdGUgIT09ICdmdW5jdGlvbicpIHtcbiAgICBjb25zb2xlLndhcm4oYCdzdGF0ZScgc2hvdWxkIGJlIGEgbWV0aG9kIHRoYXQgcmV0dXJucyBhbiBvYmplY3QgaW4gJHtmaWxlUGF0aH1gKVxuXG4gICAgY29uc3Qgc3RhdGUgPSBPYmplY3QuYXNzaWduKHt9LCBtb2R1bGVEYXRhLnN0YXRlKVxuICAgIC8vIEF2b2lkIFR5cGVFcnJvcjogc2V0dGluZyBhIHByb3BlcnR5IHRoYXQgaGFzIG9ubHkgYSBnZXR0ZXIgd2hlbiBvdmVyd3JpdGluZyB0b3AgbGV2ZWwga2V5c1xuICAgIG1vZHVsZURhdGEgPSBPYmplY3QuYXNzaWduKHt9LCBtb2R1bGVEYXRhLCB7IHN0YXRlOiAoKSA9PiBzdGF0ZSB9KVxuICB9XG4gIHJldHVybiBtb2R1bGVEYXRhXG59XG5cbmZ1bmN0aW9uIHJlc29sdmVTdG9yZU1vZHVsZXMgKG1vZHVsZURhdGEsIGZpbGVuYW1lKSB7XG4gIG1vZHVsZURhdGEgPSBtb2R1bGVEYXRhLmRlZmF1bHQgfHwgbW9kdWxlRGF0YVxuICAvLyBSZW1vdmUgc3RvcmUgc3JjICsgZXh0ZW5zaW9uICguL2Zvby9pbmRleC5qcyAtPiBmb28vaW5kZXgpXG4gIGNvbnN0IG5hbWVzcGFjZSA9IGZpbGVuYW1lLnJlcGxhY2UoL1xcLihqc3xtanMpJC8sICcnKVxuICBjb25zdCBuYW1lc3BhY2VzID0gbmFtZXNwYWNlLnNwbGl0KCcvJylcbiAgbGV0IG1vZHVsZU5hbWUgPSBuYW1lc3BhY2VzW25hbWVzcGFjZXMubGVuZ3RoIC0gMV1cbiAgY29uc3QgZmlsZVBhdGggPSBgc3RvcmUvJHtmaWxlbmFtZX1gXG5cbiAgbW9kdWxlRGF0YSA9IG1vZHVsZU5hbWUgPT09ICdzdGF0ZSdcbiAgICA/IG5vcm1hbGl6ZVN0YXRlKG1vZHVsZURhdGEsIGZpbGVQYXRoKVxuICAgIDogbm9ybWFsaXplTW9kdWxlKG1vZHVsZURhdGEsIGZpbGVQYXRoKVxuXG4gIC8vIElmIHNyYyBpcyBhIGtub3duIFZ1ZXggcHJvcGVydHlcbiAgaWYgKFZVRVhfUFJPUEVSVElFUy5pbmNsdWRlcyhtb2R1bGVOYW1lKSkge1xuICAgIGNvbnN0IHByb3BlcnR5ID0gbW9kdWxlTmFtZVxuICAgIGNvbnN0IHN0b3JlTW9kdWxlID0gZ2V0U3RvcmVNb2R1bGUoc3RvcmUsIG5hbWVzcGFjZXMsIHsgaXNQcm9wZXJ0eTogdHJ1ZSB9KVxuXG4gICAgLy8gUmVwbGFjZSBzdGF0ZSBzaW5jZSBpdCdzIGEgZnVuY3Rpb25cbiAgICBtZXJnZVByb3BlcnR5KHN0b3JlTW9kdWxlLCBtb2R1bGVEYXRhLCBwcm9wZXJ0eSlcbiAgICByZXR1cm5cbiAgfVxuXG4gIC8vIElmIGZpbGUgaXMgZm9vL2luZGV4LmpzLCBpdCBzaG91bGQgYmUgc2F2ZWQgYXMgZm9vXG4gIGNvbnN0IGlzSW5kZXhNb2R1bGUgPSAobW9kdWxlTmFtZSA9PT0gJ2luZGV4JylcbiAgaWYgKGlzSW5kZXhNb2R1bGUpIHtcbiAgICBuYW1lc3BhY2VzLnBvcCgpXG4gICAgbW9kdWxlTmFtZSA9IG5hbWVzcGFjZXNbbmFtZXNwYWNlcy5sZW5ndGggLSAxXVxuICB9XG5cbiAgY29uc3Qgc3RvcmVNb2R1bGUgPSBnZXRTdG9yZU1vZHVsZShzdG9yZSwgbmFtZXNwYWNlcylcblxuICBmb3IgKGNvbnN0IHByb3BlcnR5IG9mIFZVRVhfUFJPUEVSVElFUykge1xuICAgIG1lcmdlUHJvcGVydHkoc3RvcmVNb2R1bGUsIG1vZHVsZURhdGFbcHJvcGVydHldLCBwcm9wZXJ0eSlcbiAgfVxuXG4gIGlmIChtb2R1bGVEYXRhLm5hbWVzcGFjZWQgPT09IGZhbHNlKSB7XG4gICAgZGVsZXRlIHN0b3JlTW9kdWxlLm5hbWVzcGFjZWRcbiAgfVxufVxuXG5mdW5jdGlvbiBub3JtYWxpemVTdGF0ZSAobW9kdWxlRGF0YSwgZmlsZVBhdGgpIHtcbiAgaWYgKHR5cGVvZiBtb2R1bGVEYXRhICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgY29uc29sZS53YXJuKGAke2ZpbGVQYXRofSBzaG91bGQgZXhwb3J0IGEgbWV0aG9kIHRoYXQgcmV0dXJucyBhbiBvYmplY3RgKVxuICAgIGNvbnN0IHN0YXRlID0gT2JqZWN0LmFzc2lnbih7fSwgbW9kdWxlRGF0YSlcbiAgICByZXR1cm4gKCkgPT4gc3RhdGVcbiAgfVxuICByZXR1cm4gbm9ybWFsaXplTW9kdWxlKG1vZHVsZURhdGEsIGZpbGVQYXRoKVxufVxuXG5mdW5jdGlvbiBnZXRTdG9yZU1vZHVsZSAoc3RvcmVNb2R1bGUsIG5hbWVzcGFjZXMsIHsgaXNQcm9wZXJ0eSA9IGZhbHNlIH0gPSB7fSkge1xuICAvLyBJZiAuL211dGF0aW9ucy5qc1xuICBpZiAoIW5hbWVzcGFjZXMubGVuZ3RoIHx8IChpc1Byb3BlcnR5ICYmIG5hbWVzcGFjZXMubGVuZ3RoID09PSAxKSkge1xuICAgIHJldHVybiBzdG9yZU1vZHVsZVxuICB9XG5cbiAgY29uc3QgbmFtZXNwYWNlID0gbmFtZXNwYWNlcy5zaGlmdCgpXG5cbiAgc3RvcmVNb2R1bGUubW9kdWxlc1tuYW1lc3BhY2VdID0gc3RvcmVNb2R1bGUubW9kdWxlc1tuYW1lc3BhY2VdIHx8IHt9XG4gIHN0b3JlTW9kdWxlLm1vZHVsZXNbbmFtZXNwYWNlXS5uYW1lc3BhY2VkID0gdHJ1ZVxuICBzdG9yZU1vZHVsZS5tb2R1bGVzW25hbWVzcGFjZV0ubW9kdWxlcyA9IHN0b3JlTW9kdWxlLm1vZHVsZXNbbmFtZXNwYWNlXS5tb2R1bGVzIHx8IHt9XG5cbiAgcmV0dXJuIGdldFN0b3JlTW9kdWxlKHN0b3JlTW9kdWxlLm1vZHVsZXNbbmFtZXNwYWNlXSwgbmFtZXNwYWNlcywgeyBpc1Byb3BlcnR5IH0pXG59XG5cbmZ1bmN0aW9uIG1lcmdlUHJvcGVydHkgKHN0b3JlTW9kdWxlLCBtb2R1bGVEYXRhLCBwcm9wZXJ0eSkge1xuICBpZiAoIW1vZHVsZURhdGEpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIGlmIChwcm9wZXJ0eSA9PT0gJ3N0YXRlJykge1xuICAgIHN0b3JlTW9kdWxlLnN0YXRlID0gbW9kdWxlRGF0YSB8fCBzdG9yZU1vZHVsZS5zdGF0ZVxuICB9IGVsc2Uge1xuICAgIHN0b3JlTW9kdWxlW3Byb3BlcnR5XSA9IE9iamVjdC5hc3NpZ24oe30sIHN0b3JlTW9kdWxlW3Byb3BlcnR5XSwgbW9kdWxlRGF0YSlcbiAgfVxufVxuIiwiZXhwb3J0IGRlZmF1bHQge1widGhlbWVcIjp7XCJkYXJrXCI6ZmFsc2UsXCJ0aGVtZXNcIjp7XCJsaWdodFwiOntcInByaW1hcnlcIjpcIiM1MUREQkRcIixcInNlY29uZGFyeVwiOlwiIzJENEFERVwiLFwiYWNjZW50XCI6XCIjRkE3RDJCXCJ9fX19XG4iLCJpbXBvcnQgVnVlIGZyb20gJ3Z1ZSdcbmltcG9ydCBWdWV0aWZ5IGZyb20gJ3Z1ZXRpZnkvbGliJ1xuXG5pbXBvcnQgb3B0aW9ucyBmcm9tICcuL29wdGlvbnMnXG5cblZ1ZS51c2UoVnVldGlmeSwge1xufSlcblxuZXhwb3J0IGRlZmF1bHQgKGN0eCkgPT4ge1xuICBjb25zdCB2dWV0aWZ5T3B0aW9ucyA9IHR5cGVvZiBvcHRpb25zID09PSAnZnVuY3Rpb24nID8gb3B0aW9ucyhjdHgpIDogb3B0aW9uc1xuXG4gIHZ1ZXRpZnlPcHRpb25zLmljb25zID0gdnVldGlmeU9wdGlvbnMuaWNvbnMgfHwge31cbiAgdnVldGlmeU9wdGlvbnMuaWNvbnMuaWNvbmZvbnQgPSAnbWRpJ1xuXG4gIGNvbnN0IHZ1ZXRpZnkgPSBuZXcgVnVldGlmeSh2dWV0aWZ5T3B0aW9ucylcblxuICBjdHguYXBwLnZ1ZXRpZnkgPSB2dWV0aWZ5XG4gIGN0eC4kdnVldGlmeSA9IHZ1ZXRpZnkuZnJhbWV3b3JrXG59XG4iLCJpbXBvcnQgQXhpb3MgZnJvbSAnYXhpb3MnXG5pbXBvcnQgZGVmdSBmcm9tICdkZWZ1J1xuXG4vLyBBeGlvcy5wcm90b3R5cGUgY2Fubm90IGJlIG1vZGlmaWVkXG5jb25zdCBheGlvc0V4dHJhID0ge1xuICBzZXRCYXNlVVJMIChiYXNlVVJMKSB7XG4gICAgdGhpcy5kZWZhdWx0cy5iYXNlVVJMID0gYmFzZVVSTFxuICB9LFxuICBzZXRIZWFkZXIgKG5hbWUsIHZhbHVlLCBzY29wZXMgPSAnY29tbW9uJykge1xuICAgIGZvciAobGV0IHNjb3BlIG9mIEFycmF5LmlzQXJyYXkoc2NvcGVzKSA/IHNjb3BlcyA6IFsgc2NvcGVzIF0pIHtcbiAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgZGVsZXRlIHRoaXMuZGVmYXVsdHMuaGVhZGVyc1tzY29wZV1bbmFtZV07XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgdGhpcy5kZWZhdWx0cy5oZWFkZXJzW3Njb3BlXVtuYW1lXSA9IHZhbHVlXG4gICAgfVxuICB9LFxuICBzZXRUb2tlbiAodG9rZW4sIHR5cGUsIHNjb3BlcyA9ICdjb21tb24nKSB7XG4gICAgY29uc3QgdmFsdWUgPSAhdG9rZW4gPyBudWxsIDogKHR5cGUgPyB0eXBlICsgJyAnIDogJycpICsgdG9rZW5cbiAgICB0aGlzLnNldEhlYWRlcignQXV0aG9yaXphdGlvbicsIHZhbHVlLCBzY29wZXMpXG4gIH0sXG4gIG9uUmVxdWVzdChmbikge1xuICAgIHRoaXMuaW50ZXJjZXB0b3JzLnJlcXVlc3QudXNlKGNvbmZpZyA9PiBmbihjb25maWcpIHx8IGNvbmZpZylcbiAgfSxcbiAgb25SZXNwb25zZShmbikge1xuICAgIHRoaXMuaW50ZXJjZXB0b3JzLnJlc3BvbnNlLnVzZShyZXNwb25zZSA9PiBmbihyZXNwb25zZSkgfHwgcmVzcG9uc2UpXG4gIH0sXG4gIG9uUmVxdWVzdEVycm9yKGZuKSB7XG4gICAgdGhpcy5pbnRlcmNlcHRvcnMucmVxdWVzdC51c2UodW5kZWZpbmVkLCBlcnJvciA9PiBmbihlcnJvcikgfHwgUHJvbWlzZS5yZWplY3QoZXJyb3IpKVxuICB9LFxuICBvblJlc3BvbnNlRXJyb3IoZm4pIHtcbiAgICB0aGlzLmludGVyY2VwdG9ycy5yZXNwb25zZS51c2UodW5kZWZpbmVkLCBlcnJvciA9PiBmbihlcnJvcikgfHwgUHJvbWlzZS5yZWplY3QoZXJyb3IpKVxuICB9LFxuICBvbkVycm9yKGZuKSB7XG4gICAgdGhpcy5vblJlcXVlc3RFcnJvcihmbilcbiAgICB0aGlzLm9uUmVzcG9uc2VFcnJvcihmbilcbiAgfSxcbiAgY3JlYXRlKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gY3JlYXRlQXhpb3NJbnN0YW5jZShkZWZ1KG9wdGlvbnMsIHRoaXMuZGVmYXVsdHMpKVxuICB9XG59XG5cbi8vIFJlcXVlc3QgaGVscGVycyAoJGdldCwgJHBvc3QsIC4uLilcbmZvciAobGV0IG1ldGhvZCBvZiBbJ3JlcXVlc3QnLCAnZGVsZXRlJywgJ2dldCcsICdoZWFkJywgJ29wdGlvbnMnLCAncG9zdCcsICdwdXQnLCAncGF0Y2gnXSkge1xuICBheGlvc0V4dHJhWyckJyArIG1ldGhvZF0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzW21ldGhvZF0uYXBwbHkodGhpcywgYXJndW1lbnRzKS50aGVuKHJlcyA9PiByZXMgJiYgcmVzLmRhdGEpIH1cbn1cblxuY29uc3QgZXh0ZW5kQXhpb3NJbnN0YW5jZSA9IGF4aW9zID0+IHtcbiAgZm9yIChsZXQga2V5IGluIGF4aW9zRXh0cmEpIHtcbiAgICBheGlvc1trZXldID0gYXhpb3NFeHRyYVtrZXldLmJpbmQoYXhpb3MpXG4gIH1cbn1cblxuY29uc3QgY3JlYXRlQXhpb3NJbnN0YW5jZSA9IGF4aW9zT3B0aW9ucyA9PiB7XG4gIC8vIENyZWF0ZSBuZXcgYXhpb3MgaW5zdGFuY2VcbiAgY29uc3QgYXhpb3MgPSBBeGlvcy5jcmVhdGUoYXhpb3NPcHRpb25zKVxuICBheGlvcy5DYW5jZWxUb2tlbiA9IEF4aW9zLkNhbmNlbFRva2VuXG4gIGF4aW9zLmlzQ2FuY2VsID0gQXhpb3MuaXNDYW5jZWxcblxuICAvLyBFeHRlbmQgYXhpb3MgcHJvdG9cbiAgZXh0ZW5kQXhpb3NJbnN0YW5jZShheGlvcylcblxuICAvLyBTZXR1cCBpbnRlcmNlcHRvcnNcblxuICBzZXR1cFByb2dyZXNzKGF4aW9zKVxuXG4gIHJldHVybiBheGlvc1xufVxuXG5jb25zdCBzZXR1cFByb2dyZXNzID0gKGF4aW9zKSA9PiB7XG4gIGlmIChwcm9jZXNzLnNlcnZlcikge1xuICAgIHJldHVyblxuICB9XG5cbiAgLy8gQSBub29wIGxvYWRpbmcgaW50ZXRlcmZhY2UgZm9yIHdoZW4gJG51eHQgaXMgbm90IHlldCByZWFkeVxuICBjb25zdCBub29wTG9hZGluZyA9IHtcbiAgICBmaW5pc2g6ICgpID0+IHsgfSxcbiAgICBzdGFydDogKCkgPT4geyB9LFxuICAgIGZhaWw6ICgpID0+IHsgfSxcbiAgICBzZXQ6ICgpID0+IHsgfVxuICB9XG5cbiAgY29uc3QgJGxvYWRpbmcgPSAoKSA9PiAod2luZG93LiRudXh0ICYmIHdpbmRvdy4kbnV4dC4kbG9hZGluZyAmJiB3aW5kb3cuJG51eHQuJGxvYWRpbmcuc2V0KSA/IHdpbmRvdy4kbnV4dC4kbG9hZGluZyA6IG5vb3BMb2FkaW5nXG5cbiAgbGV0IGN1cnJlbnRSZXF1ZXN0cyA9IDBcblxuICBheGlvcy5vblJlcXVlc3QoY29uZmlnID0+IHtcbiAgICBpZiAoY29uZmlnICYmIGNvbmZpZy5wcm9ncmVzcyA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGN1cnJlbnRSZXF1ZXN0cysrXG4gIH0pXG5cbiAgYXhpb3Mub25SZXNwb25zZShyZXNwb25zZSA9PiB7XG4gICAgaWYgKHJlc3BvbnNlICYmIHJlc3BvbnNlLmNvbmZpZyAmJiByZXNwb25zZS5jb25maWcucHJvZ3Jlc3MgPT09IGZhbHNlKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjdXJyZW50UmVxdWVzdHMtLVxuICAgIGlmIChjdXJyZW50UmVxdWVzdHMgPD0gMCkge1xuICAgICAgY3VycmVudFJlcXVlc3RzID0gMFxuICAgICAgJGxvYWRpbmcoKS5maW5pc2goKVxuICAgIH1cbiAgfSlcblxuICBheGlvcy5vbkVycm9yKGVycm9yID0+IHtcbiAgICBpZiAoZXJyb3IgJiYgZXJyb3IuY29uZmlnICYmIGVycm9yLmNvbmZpZy5wcm9ncmVzcyA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGN1cnJlbnRSZXF1ZXN0cy0tXG5cbiAgICBpZiAoQXhpb3MuaXNDYW5jZWwoZXJyb3IpKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICAkbG9hZGluZygpLmZhaWwoKVxuICAgICRsb2FkaW5nKCkuZmluaXNoKClcbiAgfSlcblxuICBjb25zdCBvblByb2dyZXNzID0gZSA9PiB7XG4gICAgaWYgKCFjdXJyZW50UmVxdWVzdHMpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjb25zdCBwcm9ncmVzcyA9ICgoZS5sb2FkZWQgKiAxMDApIC8gKGUudG90YWwgKiBjdXJyZW50UmVxdWVzdHMpKVxuICAgICRsb2FkaW5nKCkuc2V0KE1hdGgubWluKDEwMCwgcHJvZ3Jlc3MpKVxuICB9XG5cbiAgYXhpb3MuZGVmYXVsdHMub25VcGxvYWRQcm9ncmVzcyA9IG9uUHJvZ3Jlc3NcbiAgYXhpb3MuZGVmYXVsdHMub25Eb3dubG9hZFByb2dyZXNzID0gb25Qcm9ncmVzc1xufVxuXG5leHBvcnQgZGVmYXVsdCAoY3R4LCBpbmplY3QpID0+IHtcbiAgLy8gYmFzZVVSTFxuICBjb25zdCBiYXNlVVJMID0gcHJvY2Vzcy5icm93c2VyXG4gICAgICA/ICdodHRwOi8vbG9jYWxob3N0OjMwMDAvJ1xuICAgICAgOiAocHJvY2Vzcy5lbnYuX0FYSU9TX0JBU0VfVVJMXyB8fCAnaHR0cDovL2xvY2FsaG9zdDozMDAwLycpXG5cbiAgLy8gQ3JlYXRlIGZyZXNoIG9iamVjdHMgZm9yIGFsbCBkZWZhdWx0IGhlYWRlciBzY29wZXNcbiAgLy8gQXhpb3MgY3JlYXRlcyBvbmx5IG9uZSB3aGljaCBpcyBzaGFyZWQgYWNyb3NzIFNTUiByZXF1ZXN0cyFcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL216YWJyaXNraWUvYXhpb3MvYmxvYi9tYXN0ZXIvbGliL2RlZmF1bHRzLmpzXG4gIGNvbnN0IGhlYWRlcnMgPSB7XG4gICAgXCJjb21tb25cIjoge1xuICAgICAgICBcIkFjY2VwdFwiOiBcImFwcGxpY2F0aW9uL2pzb24sIHRleHQvcGxhaW4sICovKlwiXG4gICAgfSxcbiAgICBcImRlbGV0ZVwiOiB7fSxcbiAgICBcImdldFwiOiB7fSxcbiAgICBcImhlYWRcIjoge30sXG4gICAgXCJwb3N0XCI6IHt9LFxuICAgIFwicHV0XCI6IHt9LFxuICAgIFwicGF0Y2hcIjoge31cbn1cblxuICBjb25zdCBheGlvc09wdGlvbnMgPSB7XG4gICAgYmFzZVVSTCxcbiAgICBoZWFkZXJzXG4gIH1cblxuICAvLyBQcm94eSBTU1IgcmVxdWVzdCBoZWFkZXJzIGhlYWRlcnNcbiAgYXhpb3NPcHRpb25zLmhlYWRlcnMuY29tbW9uID0gKGN0eC5yZXEgJiYgY3R4LnJlcS5oZWFkZXJzKSA/IE9iamVjdC5hc3NpZ24oe30sIGN0eC5yZXEuaGVhZGVycykgOiB7fVxuICBkZWxldGUgYXhpb3NPcHRpb25zLmhlYWRlcnMuY29tbW9uWydhY2NlcHQnXVxuICBkZWxldGUgYXhpb3NPcHRpb25zLmhlYWRlcnMuY29tbW9uWydob3N0J11cbiAgZGVsZXRlIGF4aW9zT3B0aW9ucy5oZWFkZXJzLmNvbW1vblsnY2YtcmF5J11cbiAgZGVsZXRlIGF4aW9zT3B0aW9ucy5oZWFkZXJzLmNvbW1vblsnY2YtY29ubmVjdGluZy1pcCddXG4gIGRlbGV0ZSBheGlvc09wdGlvbnMuaGVhZGVycy5jb21tb25bJ2NvbnRlbnQtbGVuZ3RoJ11cbiAgZGVsZXRlIGF4aW9zT3B0aW9ucy5oZWFkZXJzLmNvbW1vblsnY29udGVudC1tZDUnXVxuICBkZWxldGUgYXhpb3NPcHRpb25zLmhlYWRlcnMuY29tbW9uWydjb250ZW50LXR5cGUnXVxuXG4gIGlmIChwcm9jZXNzLnNlcnZlcikge1xuICAgIC8vIERvbid0IGFjY2VwdCBicm90bGkgZW5jb2RpbmcgYmVjYXVzZSBOb2RlIGNhbid0IHBhcnNlIGl0XG4gICAgYXhpb3NPcHRpb25zLmhlYWRlcnMuY29tbW9uWydhY2NlcHQtZW5jb2RpbmcnXSA9ICdnemlwLCBkZWZsYXRlJ1xuICB9XG5cbiAgY29uc3QgYXhpb3MgPSBjcmVhdGVBeGlvc0luc3RhbmNlKGF4aW9zT3B0aW9ucylcblxuICAvLyBJbmplY3QgYXhpb3MgdG8gdGhlIGNvbnRleHQgYXMgJGF4aW9zXG4gIGN0eC4kYXhpb3MgPSBheGlvc1xuICBpbmplY3QoJ2F4aW9zJywgYXhpb3MpXG59XG4iLCJpbXBvcnQgVnVlIGZyb20gJ3Z1ZSdcbmltcG9ydCBNZXRhIGZyb20gJ3Z1ZS1tZXRhJ1xuaW1wb3J0IENsaWVudE9ubHkgZnJvbSAndnVlLWNsaWVudC1vbmx5J1xuaW1wb3J0IE5vU3NyIGZyb20gJ3Z1ZS1uby1zc3InXG5pbXBvcnQgeyBjcmVhdGVSb3V0ZXIgfSBmcm9tICcuL3JvdXRlci5qcydcbmltcG9ydCBOdXh0Q2hpbGQgZnJvbSAnLi9jb21wb25lbnRzL251eHQtY2hpbGQuanMnXG5pbXBvcnQgTnV4dEVycm9yIGZyb20gJy4uL2xheW91dHMvZXJyb3IudnVlJ1xuaW1wb3J0IE51eHQgZnJvbSAnLi9jb21wb25lbnRzL251eHQuanMnXG5pbXBvcnQgQXBwIGZyb20gJy4vQXBwLmpzJ1xuaW1wb3J0IHsgc2V0Q29udGV4dCwgZ2V0TG9jYXRpb24sIGdldFJvdXRlRGF0YSwgbm9ybWFsaXplRXJyb3IgfSBmcm9tICcuL3V0aWxzJ1xuaW1wb3J0IHsgY3JlYXRlU3RvcmUgfSBmcm9tICcuL3N0b3JlLmpzJ1xuXG4vKiBQbHVnaW5zICovXG5cbmltcG9ydCBudXh0X3BsdWdpbl9wbHVnaW5fMmNlNDM5MDQgZnJvbSAnbnV4dF9wbHVnaW5fcGx1Z2luXzJjZTQzOTA0JyAvLyBTb3VyY2U6IC4vdnVldGlmeS9wbHVnaW4uanMgKG1vZGU6ICdhbGwnKVxuaW1wb3J0IG51eHRfcGx1Z2luX2F4aW9zXzAzMWVjOTg2IGZyb20gJ251eHRfcGx1Z2luX2F4aW9zXzAzMWVjOTg2JyAvLyBTb3VyY2U6IC4vYXhpb3MuanMgKG1vZGU6ICdhbGwnKVxuXG4vLyBDb21wb25lbnQ6IDxDbGllbnRPbmx5PlxuVnVlLmNvbXBvbmVudChDbGllbnRPbmx5Lm5hbWUsIENsaWVudE9ubHkpXG5cbi8vIFRPRE86IFJlbW92ZSBpbiBOdXh0IDM6IDxOb1Nzcj5cblZ1ZS5jb21wb25lbnQoTm9Tc3IubmFtZSwge1xuICAuLi5Ob1NzcixcbiAgcmVuZGVyIChoLCBjdHgpIHtcbiAgICBpZiAocHJvY2Vzcy5jbGllbnQgJiYgIU5vU3NyLl93YXJuZWQpIHtcbiAgICAgIE5vU3NyLl93YXJuZWQgPSB0cnVlXG5cbiAgICAgIGNvbnNvbGUud2FybignPG5vLXNzcj4gaGFzIGJlZW4gZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIE51eHQgMywgcGxlYXNlIHVzZSA8Y2xpZW50LW9ubHk+IGluc3RlYWQnKVxuICAgIH1cbiAgICByZXR1cm4gTm9Tc3IucmVuZGVyKGgsIGN0eClcbiAgfVxufSlcblxuLy8gQ29tcG9uZW50OiA8TnV4dENoaWxkPlxuVnVlLmNvbXBvbmVudChOdXh0Q2hpbGQubmFtZSwgTnV4dENoaWxkKVxuVnVlLmNvbXBvbmVudCgnTkNoaWxkJywgTnV4dENoaWxkKVxuXG4vLyBDb21wb25lbnQgTnV4dExpbmsgaXMgaW1wb3J0ZWQgaW4gc2VydmVyLmpzIG9yIGNsaWVudC5qc1xuXG4vLyBDb21wb25lbnQ6IDxOdXh0PlxuVnVlLmNvbXBvbmVudChOdXh0Lm5hbWUsIE51eHQpXG5cblZ1ZS51c2UoTWV0YSwge1wia2V5TmFtZVwiOlwiaGVhZFwiLFwiYXR0cmlidXRlXCI6XCJkYXRhLW4taGVhZFwiLFwic3NyQXR0cmlidXRlXCI6XCJkYXRhLW4taGVhZC1zc3JcIixcInRhZ0lES2V5TmFtZVwiOlwiaGlkXCJ9KVxuXG5jb25zdCBkZWZhdWx0VHJhbnNpdGlvbiA9IHtcIm5hbWVcIjpcInBhZ2VcIixcIm1vZGVcIjpcIm91dC1pblwiLFwiYXBwZWFyXCI6dHJ1ZSxcImFwcGVhckNsYXNzXCI6XCJhcHBlYXJcIixcImFwcGVhckFjdGl2ZUNsYXNzXCI6XCJhcHBlYXItYWN0aXZlXCIsXCJhcHBlYXJUb0NsYXNzXCI6XCJhcHBlYXItdG9cIn1cblxuYXN5bmMgZnVuY3Rpb24gY3JlYXRlQXBwIChzc3JDb250ZXh0KSB7XG4gIGNvbnN0IHJvdXRlciA9IGF3YWl0IGNyZWF0ZVJvdXRlcihzc3JDb250ZXh0KVxuXG4gIGNvbnN0IHN0b3JlID0gY3JlYXRlU3RvcmUoc3NyQ29udGV4dClcbiAgLy8gQWRkIHRoaXMuJHJvdXRlciBpbnRvIHN0b3JlIGFjdGlvbnMvbXV0YXRpb25zXG4gIHN0b3JlLiRyb3V0ZXIgPSByb3V0ZXJcblxuICAvLyBDcmVhdGUgUm9vdCBpbnN0YW5jZVxuXG4gIC8vIGhlcmUgd2UgaW5qZWN0IHRoZSByb3V0ZXIgYW5kIHN0b3JlIHRvIGFsbCBjaGlsZCBjb21wb25lbnRzLFxuICAvLyBtYWtpbmcgdGhlbSBhdmFpbGFibGUgZXZlcnl3aGVyZSBhcyBgdGhpcy4kcm91dGVyYCBhbmQgYHRoaXMuJHN0b3JlYC5cbiAgY29uc3QgYXBwID0ge1xuICAgIHN0b3JlLFxuICAgIHJvdXRlcixcbiAgICBudXh0OiB7XG4gICAgICBkZWZhdWx0VHJhbnNpdGlvbixcbiAgICAgIHRyYW5zaXRpb25zOiBbZGVmYXVsdFRyYW5zaXRpb25dLFxuICAgICAgc2V0VHJhbnNpdGlvbnMgKHRyYW5zaXRpb25zKSB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheSh0cmFuc2l0aW9ucykpIHtcbiAgICAgICAgICB0cmFuc2l0aW9ucyA9IFt0cmFuc2l0aW9uc11cbiAgICAgICAgfVxuICAgICAgICB0cmFuc2l0aW9ucyA9IHRyYW5zaXRpb25zLm1hcCgodHJhbnNpdGlvbikgPT4ge1xuICAgICAgICAgIGlmICghdHJhbnNpdGlvbikge1xuICAgICAgICAgICAgdHJhbnNpdGlvbiA9IGRlZmF1bHRUcmFuc2l0aW9uXG4gICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdHJhbnNpdGlvbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHRyYW5zaXRpb24gPSBPYmplY3QuYXNzaWduKHt9LCBkZWZhdWx0VHJhbnNpdGlvbiwgeyBuYW1lOiB0cmFuc2l0aW9uIH0pXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRyYW5zaXRpb24gPSBPYmplY3QuYXNzaWduKHt9LCBkZWZhdWx0VHJhbnNpdGlvbiwgdHJhbnNpdGlvbilcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRyYW5zaXRpb25cbiAgICAgICAgfSlcbiAgICAgICAgdGhpcy4kb3B0aW9ucy5udXh0LnRyYW5zaXRpb25zID0gdHJhbnNpdGlvbnNcbiAgICAgICAgcmV0dXJuIHRyYW5zaXRpb25zXG4gICAgICB9LFxuXG4gICAgICBlcnI6IG51bGwsXG4gICAgICBkYXRlRXJyOiBudWxsLFxuICAgICAgZXJyb3IgKGVycikge1xuICAgICAgICBlcnIgPSBlcnIgfHwgbnVsbFxuICAgICAgICBhcHAuY29udGV4dC5fZXJyb3JlZCA9IEJvb2xlYW4oZXJyKVxuICAgICAgICBlcnIgPSBlcnIgPyBub3JtYWxpemVFcnJvcihlcnIpIDogbnVsbFxuICAgICAgICBjb25zdCBudXh0ID0gdGhpcy5udXh0IHx8IHRoaXMuJG9wdGlvbnMubnV4dFxuICAgICAgICBudXh0LmRhdGVFcnIgPSBEYXRlLm5vdygpXG4gICAgICAgIG51eHQuZXJyID0gZXJyXG4gICAgICAgIC8vIFVzZWQgaW4gc3JjL3NlcnZlci5qc1xuICAgICAgICBpZiAoc3NyQ29udGV4dCkge1xuICAgICAgICAgIHNzckNvbnRleHQubnV4dC5lcnJvciA9IGVyclxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBlcnJcbiAgICAgIH1cbiAgICB9LFxuICAgIC4uLkFwcFxuICB9XG5cbiAgLy8gTWFrZSBhcHAgYXZhaWxhYmxlIGludG8gc3RvcmUgdmlhIHRoaXMuYXBwXG4gIHN0b3JlLmFwcCA9IGFwcFxuXG4gIGNvbnN0IG5leHQgPSBzc3JDb250ZXh0ID8gc3NyQ29udGV4dC5uZXh0IDogbG9jYXRpb24gPT4gYXBwLnJvdXRlci5wdXNoKGxvY2F0aW9uKVxuICAvLyBSZXNvbHZlIHJvdXRlXG4gIGxldCByb3V0ZVxuICBpZiAoc3NyQ29udGV4dCkge1xuICAgIHJvdXRlID0gcm91dGVyLnJlc29sdmUoc3NyQ29udGV4dC51cmwpLnJvdXRlXG4gIH0gZWxzZSB7XG4gICAgY29uc3QgcGF0aCA9IGdldExvY2F0aW9uKHJvdXRlci5vcHRpb25zLmJhc2UsIHJvdXRlci5vcHRpb25zLm1vZGUpXG4gICAgcm91dGUgPSByb3V0ZXIucmVzb2x2ZShwYXRoKS5yb3V0ZVxuICB9XG5cbiAgLy8gU2V0IGNvbnRleHQgdG8gYXBwLmNvbnRleHRcbiAgYXdhaXQgc2V0Q29udGV4dChhcHAsIHtcbiAgICBzdG9yZSxcbiAgICByb3V0ZSxcbiAgICBuZXh0LFxuICAgIGVycm9yOiBhcHAubnV4dC5lcnJvci5iaW5kKGFwcCksXG4gICAgcGF5bG9hZDogc3NyQ29udGV4dCA/IHNzckNvbnRleHQucGF5bG9hZCA6IHVuZGVmaW5lZCxcbiAgICByZXE6IHNzckNvbnRleHQgPyBzc3JDb250ZXh0LnJlcSA6IHVuZGVmaW5lZCxcbiAgICByZXM6IHNzckNvbnRleHQgPyBzc3JDb250ZXh0LnJlcyA6IHVuZGVmaW5lZCxcbiAgICBiZWZvcmVSZW5kZXJGbnM6IHNzckNvbnRleHQgPyBzc3JDb250ZXh0LmJlZm9yZVJlbmRlckZucyA6IHVuZGVmaW5lZCxcbiAgICBzc3JDb250ZXh0XG4gIH0pXG5cbiAgY29uc3QgaW5qZWN0ID0gZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcbiAgICBpZiAoIWtleSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbmplY3Qoa2V5LCB2YWx1ZSkgaGFzIG5vIGtleSBwcm92aWRlZCcpXG4gICAgfVxuICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2luamVjdChrZXksIHZhbHVlKSBoYXMgbm8gdmFsdWUgcHJvdmlkZWQnKVxuICAgIH1cblxuICAgIGtleSA9ICckJyArIGtleVxuICAgIC8vIEFkZCBpbnRvIGFwcFxuICAgIGFwcFtrZXldID0gdmFsdWVcblxuICAgIC8vIEFkZCBpbnRvIHN0b3JlXG4gICAgc3RvcmVba2V5XSA9IGFwcFtrZXldXG5cbiAgICAvLyBDaGVjayBpZiBwbHVnaW4gbm90IGFscmVhZHkgaW5zdGFsbGVkXG4gICAgY29uc3QgaW5zdGFsbEtleSA9ICdfX251eHRfJyArIGtleSArICdfaW5zdGFsbGVkX18nXG4gICAgaWYgKFZ1ZVtpbnN0YWxsS2V5XSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIFZ1ZVtpbnN0YWxsS2V5XSA9IHRydWVcbiAgICAvLyBDYWxsIFZ1ZS51c2UoKSB0byBpbnN0YWxsIHRoZSBwbHVnaW4gaW50byB2bVxuICAgIFZ1ZS51c2UoKCkgPT4ge1xuICAgICAgaWYgKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoVnVlLCBrZXkpKSB7XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShWdWUucHJvdG90eXBlLCBrZXksIHtcbiAgICAgICAgICBnZXQgKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuJHJvb3QuJG9wdGlvbnNba2V5XVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgaWYgKHByb2Nlc3MuY2xpZW50KSB7XG4gICAgLy8gUmVwbGFjZSBzdG9yZSBzdGF0ZSBiZWZvcmUgcGx1Z2lucyBleGVjdXRpb25cbiAgICBpZiAod2luZG93Ll9fTlVYVF9fICYmIHdpbmRvdy5fX05VWFRfXy5zdGF0ZSkge1xuICAgICAgc3RvcmUucmVwbGFjZVN0YXRlKHdpbmRvdy5fX05VWFRfXy5zdGF0ZSlcbiAgICB9XG4gIH1cblxuICAvLyBQbHVnaW4gZXhlY3V0aW9uXG5cbiAgaWYgKHR5cGVvZiBudXh0X3BsdWdpbl9wbHVnaW5fMmNlNDM5MDQgPT09ICdmdW5jdGlvbicpIHtcbiAgICBhd2FpdCBudXh0X3BsdWdpbl9wbHVnaW5fMmNlNDM5MDQoYXBwLmNvbnRleHQsIGluamVjdClcbiAgfVxuXG4gIGlmICh0eXBlb2YgbnV4dF9wbHVnaW5fYXhpb3NfMDMxZWM5ODYgPT09ICdmdW5jdGlvbicpIHtcbiAgICBhd2FpdCBudXh0X3BsdWdpbl9heGlvc18wMzFlYzk4NihhcHAuY29udGV4dCwgaW5qZWN0KVxuICB9XG5cbiAgLy8gSWYgc2VydmVyLXNpZGUsIHdhaXQgZm9yIGFzeW5jIGNvbXBvbmVudCB0byBiZSByZXNvbHZlZCBmaXJzdFxuICBpZiAocHJvY2Vzcy5zZXJ2ZXIgJiYgc3NyQ29udGV4dCAmJiBzc3JDb250ZXh0LnVybCkge1xuICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHJvdXRlci5wdXNoKHNzckNvbnRleHQudXJsLCByZXNvbHZlLCAoKSA9PiB7XG4gICAgICAgIC8vIG5hdmlnYXRlZCB0byBhIGRpZmZlcmVudCByb3V0ZSBpbiByb3V0ZXIgZ3VhcmRcbiAgICAgICAgY29uc3QgdW5yZWdpc3RlciA9IHJvdXRlci5hZnRlckVhY2goYXN5bmMgKHRvLCBmcm9tLCBuZXh0KSA9PiB7XG4gICAgICAgICAgc3NyQ29udGV4dC51cmwgPSB0by5mdWxsUGF0aFxuICAgICAgICAgIGFwcC5jb250ZXh0LnJvdXRlID0gYXdhaXQgZ2V0Um91dGVEYXRhKHRvKVxuICAgICAgICAgIGFwcC5jb250ZXh0LnBhcmFtcyA9IHRvLnBhcmFtcyB8fCB7fVxuICAgICAgICAgIGFwcC5jb250ZXh0LnF1ZXJ5ID0gdG8ucXVlcnkgfHwge31cbiAgICAgICAgICB1bnJlZ2lzdGVyKClcbiAgICAgICAgICByZXNvbHZlKClcbiAgICAgICAgfSlcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgc3RvcmUsXG4gICAgYXBwLFxuICAgIHJvdXRlclxuICB9XG59XG5cbmV4cG9ydCB7IGNyZWF0ZUFwcCwgTnV4dEVycm9yIH1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///28\n")},75:function(module,exports,__webpack_require__){eval("// style-loader: Adds some css to the DOM by adding a