@openmrs/esm-app-shell 5.0.3-pre.834 → 5.0.3-pre.836
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +100 -101
- package/dist/{72eedfc21af55e01.js → 7e0379d905e0c74e.js} +1 -1
- package/dist/{72eedfc21af55e01.js.map → 7e0379d905e0c74e.js.map} +1 -1
- package/dist/91e24f5acc9a22e6.js +1 -0
- package/dist/91e24f5acc9a22e6.js.map +1 -0
- package/dist/index.html +1 -1
- package/dist/{openmrs.81a7c1845c4acf01.js → openmrs.c8fcc90336c2dc2c.js} +2 -2
- package/dist/{openmrs.81a7c1845c4acf01.js.map → openmrs.c8fcc90336c2dc2c.js.map} +1 -1
- package/dist/service-worker.js +1 -1
- package/lib/{3abf1a801225dc2a.js → 0fc8f840e8b90dae.js} +1 -1
- package/lib/esm-devtools-app/889.js +1 -1
- package/lib/esm-devtools-app/889.js.map +1 -1
- package/lib/esm-devtools-app/main.js +1 -1
- package/lib/esm-devtools-app/openmrs-esm-devtools-app.js +1 -1
- package/lib/esm-devtools-app/openmrs-esm-devtools-app.js.buildmanifest.json +5 -5
- package/lib/esm-devtools-app/routes.json +1 -1
- package/lib/esm-implementer-tools-app/889.js +1 -1
- package/lib/esm-implementer-tools-app/889.js.map +1 -1
- package/lib/esm-implementer-tools-app/main.js +1 -1
- package/lib/esm-implementer-tools-app/openmrs-esm-implementer-tools-app.js +1 -1
- package/lib/esm-implementer-tools-app/openmrs-esm-implementer-tools-app.js.buildmanifest.json +5 -5
- package/lib/esm-implementer-tools-app/routes.json +1 -1
- package/lib/esm-primary-navigation-app/889.js +1 -1
- package/lib/esm-primary-navigation-app/889.js.map +1 -1
- package/lib/esm-primary-navigation-app/main.js +1 -1
- package/lib/esm-primary-navigation-app/openmrs-esm-primary-navigation-app.js +1 -1
- package/lib/esm-primary-navigation-app/openmrs-esm-primary-navigation-app.js.buildmanifest.json +5 -5
- package/lib/esm-primary-navigation-app/routes.json +1 -1
- package/lib/index.html +2 -2
- package/lib/openmrs.js +9 -9
- package/lib/service-worker.js +1 -1
- package/package.json +4 -4
- package/src/run.ts +27 -5
- package/dist/ee24058a1f56d4a9.js +0 -1
- package/dist/ee24058a1f56d4a9.js.map +0 -1
- package/lib/esm-login-app/236.js +0 -1
- package/lib/esm-login-app/240.js +0 -1
- package/lib/esm-login-app/261.js +0 -1
- package/lib/esm-login-app/261.js.map +0 -1
- package/lib/esm-login-app/263.js +0 -1
- package/lib/esm-login-app/263.js.map +0 -1
- package/lib/esm-login-app/272.js +0 -1
- package/lib/esm-login-app/319.js +0 -1
- package/lib/esm-login-app/336.js +0 -1
- package/lib/esm-login-app/337.js +0 -1
- package/lib/esm-login-app/337.js.map +0 -1
- package/lib/esm-login-app/390.js +0 -1
- package/lib/esm-login-app/390.js.map +0 -1
- package/lib/esm-login-app/438.js +0 -2
- package/lib/esm-login-app/438.js.LICENSE.txt +0 -9
- package/lib/esm-login-app/438.js.map +0 -1
- package/lib/esm-login-app/539.js +0 -1
- package/lib/esm-login-app/574.js +0 -1
- package/lib/esm-login-app/610.js +0 -1
- package/lib/esm-login-app/610.js.map +0 -1
- package/lib/esm-login-app/611.js +0 -1
- package/lib/esm-login-app/611.js.map +0 -1
- package/lib/esm-login-app/63.js +0 -2
- package/lib/esm-login-app/63.js.LICENSE.txt +0 -32
- package/lib/esm-login-app/63.js.map +0 -1
- package/lib/esm-login-app/642.js +0 -1
- package/lib/esm-login-app/642.js.map +0 -1
- package/lib/esm-login-app/644.js +0 -1
- package/lib/esm-login-app/673.js +0 -1
- package/lib/esm-login-app/735.js +0 -2
- package/lib/esm-login-app/735.js.LICENSE.txt +0 -9
- package/lib/esm-login-app/735.js.map +0 -1
- package/lib/esm-login-app/737.js +0 -2
- package/lib/esm-login-app/737.js.LICENSE.txt +0 -5
- package/lib/esm-login-app/737.js.map +0 -1
- package/lib/esm-login-app/757.js +0 -1
- package/lib/esm-login-app/788.js +0 -2
- package/lib/esm-login-app/788.js.LICENSE.txt +0 -19
- package/lib/esm-login-app/788.js.map +0 -1
- package/lib/esm-login-app/829.js +0 -1
- package/lib/esm-login-app/829.js.map +0 -1
- package/lib/esm-login-app/833.js +0 -1
- package/lib/esm-login-app/889.js +0 -2
- package/lib/esm-login-app/889.js.LICENSE.txt +0 -5
- package/lib/esm-login-app/889.js.map +0 -1
- package/lib/esm-login-app/main.js +0 -1
- package/lib/esm-login-app/main.js.map +0 -1
- package/lib/esm-login-app/openmrs-esm-login-app.js +0 -1
- package/lib/esm-login-app/openmrs-esm-login-app.js.buildmanifest.json +0 -702
- package/lib/esm-login-app/openmrs-esm-login-app.js.map +0 -1
- package/lib/esm-login-app/routes.json +0 -1
- /package/dist/{openmrs.81a7c1845c4acf01.js.LICENSE.txt → openmrs.c8fcc90336c2dc2c.js.LICENSE.txt} +0 -0
|
@@ -48,7 +48,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
48
48
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
49
49
|
|
|
50
50
|
"use strict";
|
|
51
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ run: () => (/* binding */ run)\n/* harmony export */ });\n/* harmony import */ var single_spa__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! single-spa */ \"webpack/sharing/consume/default/single-spa/single-spa\");\n/* harmony import */ var single_spa__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(single_spa__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @openmrs/esm-framework/src/internal */ \"webpack/sharing/consume/default/@openmrs/esm-framework/src/internal/@openmrs/esm-framework/src/internal\");\n/* harmony import */ var _openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _apps__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./apps */ \"./src/apps.ts\");\n/* harmony import */ var _locale__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./locale */ \"./src/locale.ts\");\n/* harmony import */ var _ui__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./ui */ \"./src/ui/index.ts\");\nfunction _array_like_to_array(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction _array_with_holes(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nfunction _async_to_generator(fn) {\n return function() {\n var self = this, args = arguments;\n return new Promise(function(resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}\nfunction _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _iterable_to_array_limit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _s, _e;\n try {\n for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){\n _arr.push(_s.value);\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally{\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally{\n if (_d) throw _e;\n }\n }\n return _arr;\n}\nfunction _non_iterable_rest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _object_spread(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n if (typeof Object.getOwnPropertySymbols === \"function\") {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n ownKeys.forEach(function(key) {\n _define_property(target, key, source[key]);\n });\n }\n return target;\n}\nfunction _sliced_to_array(arr, i) {\n return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();\n}\nfunction _unsupported_iterable_to_array(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _array_like_to_array(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);\n}\nfunction _ts_generator(thisArg, body) {\n var f, y, t, g, _ = {\n label: 0,\n sent: function() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n };\n return(g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() {\n return this;\n }), g);\n function verb(n) {\n return function(v) {\n return step([\n n,\n v\n ]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while(_)try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [\n op[0] & 2,\n t.value\n ];\n switch(op[0]){\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [\n 0\n ];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [\n 6,\n e\n ];\n y = 0;\n } finally{\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n}\n\n\n\n\n\nfunction setupApps() {\n return _setupApps.apply(this, arguments);\n}\nfunction _setupApps() {\n _setupApps = /**\n * Sets up the frontend modules (apps). Uses the defined export\n * from the root modules of the apps. This is done by reading the\n * list of apps from the routes.registry.json file, which serves\n * as the registry of all apps in the application.\n */ _async_to_generator(function() {\n var scriptTags, promises, i, routes, modules;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n scriptTags = document.querySelectorAll(\"script[type='openmrs-routes']\");\n promises = [];\n for(i = 0; i < scriptTags.length; i++){\n promises.push((function() {\n var _ref = _async_to_generator(function(scriptTag) {\n var routes, e, _scriptTag_src;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n routes = undefined;\n _state.label = 1;\n case 1:\n _state.trys.push([\n 1,\n 5,\n ,\n 6\n ]);\n if (!scriptTag.textContent) return [\n 3,\n 2\n ];\n routes = JSON.parse(scriptTag.textContent);\n return [\n 3,\n 4\n ];\n case 2:\n if (!scriptTag.src) return [\n 3,\n 4\n ];\n return [\n 4,\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.openmrsFetch)(scriptTag.src)\n ];\n case 3:\n routes = _state.sent().data;\n _state.label = 4;\n case 4:\n return [\n 3,\n 6\n ];\n case 5:\n e = _state.sent();\n console.error(\"Caught error while loading routes from \".concat((_scriptTag_src = scriptTag.src) !== null && _scriptTag_src !== void 0 ? _scriptTag_src : \"JSON script tag content\"), e);\n return [\n 2,\n {}\n ];\n case 6:\n return [\n 2,\n Promise.resolve(routes !== null && routes !== void 0 ? routes : {})\n ];\n }\n });\n });\n return function(scriptTag) {\n return _ref.apply(this, arguments);\n };\n })()(scriptTags.item(i)));\n }\n return [\n 4,\n Promise.all(promises)\n ];\n case 1:\n routes = _state.sent().reduce(function(accumulatedRoutes, routes) {\n return _object_spread({}, accumulatedRoutes, routes);\n }, {});\n modules = [];\n Object.entries(routes).forEach(function() {\n var _ref = _async_to_generator(function(param) {\n var _param, module, routes;\n return _ts_generator(this, function(_state) {\n _param = _sliced_to_array(param, 2), module = _param[0], routes = _param[1];\n modules.push([\n module,\n routes\n ]);\n (0,_apps__WEBPACK_IMPORTED_MODULE_2__.registerApp)(module, routes);\n return [\n 2\n ];\n });\n });\n return function(_) {\n return _ref.apply(this, arguments);\n };\n }());\n window.installedModules = modules;\n return [\n 2\n ];\n }\n });\n });\n return _setupApps.apply(this, arguments);\n}\nfunction loadConfigs(configs) {\n return _loadConfigs.apply(this, arguments);\n}\nfunction _loadConfigs() {\n _loadConfigs = /**\n * Loads the provided configurations and sets them in the system.\n */ _async_to_generator(function(configs) {\n var _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, config;\n return _ts_generator(this, function(_state) {\n _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(_iterator = configs[Symbol.iterator](); !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n config = _step.value;\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.provide)(config.value, config.name);\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 return [\n 2\n ];\n });\n });\n return _loadConfigs.apply(this, arguments);\n}\n/**\n * Invoked when the connectivity is changed.\n */ function connectivityChanged() {\n var online = navigator.onLine;\n // NB We do not wait for this to be done; it is simply scheduled\n (0,single_spa__WEBPACK_IMPORTED_MODULE_0__.triggerAppChange)();\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.dispatchConnectivityChanged)(online);\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.showToast)({\n critical: true,\n description: \"Connection: \".concat(online ? \"online\" : \"offline\"),\n title: \"App\",\n kind: online ? \"success\" : \"warning\"\n });\n}\n/**\n * Runs the shell by importing the translations and starting single SPA.\n */ function runShell() {\n window.addEventListener(\"offline\", connectivityChanged);\n window.addEventListener(\"online\", connectivityChanged);\n return (0,_locale__WEBPACK_IMPORTED_MODULE_3__.setupI18n)().catch(function(err) {\n return console.error(\"Failed to initialize translations\", err);\n }).then(function() {\n return (0,single_spa__WEBPACK_IMPORTED_MODULE_0__.start)();\n });\n}\nfunction handleInitFailure(e) {\n console.error(e);\n renderFatalErrorPage(e);\n}\nfunction renderFatalErrorPage(e) {\n var template = document.querySelector(\"#app-error\");\n if (template) {\n var fragment = template.content.cloneNode(true);\n var messageContainer = fragment.querySelector('[data-var=\"message\"]');\n if (messageContainer) {\n messageContainer.textContent = (e === null || e === void 0 ? void 0 : e.message) || \"No additional information available.\";\n }\n if (localStorage.getItem(\"openmrs:devtools\") && Object.keys(localStorage).some(function(k) {\n return k.startsWith(\"import-map-override:\");\n })) {\n var appErrorActionButtons = fragment === null || fragment === void 0 ? void 0 : fragment.querySelector(\"#buttons\");\n if (appErrorActionButtons) {\n var clearDevOverridesButton = document.createElement(\"button\");\n clearDevOverridesButton.className = \"cds--btn\";\n clearDevOverridesButton.innerHTML = \"Clear dev overrides\";\n clearDevOverridesButton.onclick = clearDevOverrides;\n appErrorActionButtons.appendChild(clearDevOverridesButton);\n }\n }\n document.body.appendChild(fragment);\n }\n}\nfunction clearDevOverrides() {\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = Object.keys(localStorage)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var key = _step.value;\n if (key.startsWith(\"import-map-override:\") && ![\n \"import-map-override:react\",\n \"import-map-override:react-dom\"\n ].includes(key)) {\n localStorage.removeItem(key);\n }\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 location.reload();\n}\nfunction createConfigLoader(configUrls) {\n var loadingConfigs = Promise.all(configUrls.map(function(configUrl) {\n var interpolatedUrl = (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.interpolateUrl)(configUrl);\n return fetch(interpolatedUrl).then(function(res) {\n return res.json();\n }).then(function(config) {\n return {\n name: configUrl,\n value: config\n };\n }).catch(function(err) {\n console.error('Loading the config from \"'.concat(configUrl, '\" failed.'), err);\n return {\n name: configUrl,\n value: {}\n };\n });\n }));\n return function() {\n return loadingConfigs.then(loadConfigs);\n };\n}\nfunction showNotifications() {\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.renderInlineNotifications)(document.querySelector(\".omrs-inline-notifications-container\"));\n return;\n}\nfunction showActionableNotifications() {\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.renderActionableNotifications)(document.querySelector(\".omrs-actionable-notifications-container\"));\n}\nfunction showToasts() {\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.renderToasts)(document.querySelector(\".omrs-toasts-container\"));\n}\nfunction showModals() {\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.renderModals)(document.querySelector(\".omrs-modals-container\"));\n}\nfunction showLoadingSpinner() {\n return (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.renderLoadingSpinner)(document.body);\n}\n/**\n * Registers the extensions coming from the app shell itself.\n */ function registerCoreExtensions() {\n var extensions = (0,_ui__WEBPACK_IMPORTED_MODULE_4__.getCoreExtensions)();\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = extensions[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var extension = _step.value;\n (0,_apps__WEBPACK_IMPORTED_MODULE_2__.tryRegisterExtension)(_ui__WEBPACK_IMPORTED_MODULE_4__.appName, extension);\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}\nfunction setupOffline() {\n return _setupOffline.apply(this, arguments);\n}\nfunction _setupOffline() {\n _setupOffline = _async_to_generator(function() {\n var error;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n _state.trys.push([\n 0,\n 3,\n ,\n 4\n ]);\n return [\n 4,\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.registerOmrsServiceWorker)(\"\".concat(window.getOpenmrsSpaBase(), \"service-worker.js\"))\n ];\n case 1:\n _state.sent();\n return [\n 4,\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.activateOfflineCapability)()\n ];\n case 2:\n _state.sent();\n setupOfflineStaticDependencyPrecaching();\n return [\n 3,\n 4\n ];\n case 3:\n error = _state.sent();\n console.error(\"Error while setting up offline mode.\", error);\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.showNotification)({\n kind: \"error\",\n title: \"Offline Setup Error\",\n description: error.message\n });\n return [\n 3,\n 4\n ];\n case 4:\n return [\n 2\n ];\n }\n });\n });\n return _setupOffline.apply(this, arguments);\n}\nfunction setupOfflineStaticDependencyPrecaching() {\n var precacheDelay = 1000 * 60 * 5;\n var lastPrecache = null;\n subscribeOnlineAndLoginChange(function(online, hasLoggedInUser) {\n var hasExceededPrecacheDelay = !lastPrecache || new Date().getTime() - lastPrecache.getTime() > precacheDelay;\n if (hasLoggedInUser && online && hasExceededPrecacheDelay) {\n lastPrecache = new Date();\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.dispatchPrecacheStaticDependencies)();\n }\n });\n}\nfunction subscribeOnlineAndLoginChange(cb) {\n var isOnline = false;\n var hasLoggedInUser = false;\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.getCurrentUser)({\n includeAuthStatus: false\n }).subscribe(function(user) {\n hasLoggedInUser = !!user;\n cb(isOnline, hasLoggedInUser);\n });\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.subscribeConnectivity)(function(param) {\n var online = param.online;\n isOnline = online;\n cb(online, hasLoggedInUser);\n });\n}\nfunction precacheGlobalStaticDependencies() {\n return _precacheGlobalStaticDependencies.apply(this, arguments);\n}\nfunction _precacheGlobalStaticDependencies() {\n _precacheGlobalStaticDependencies = _async_to_generator(function() {\n var sessionPathUrl;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n return [\n 4,\n precacheImportMap()\n ];\n case 1:\n _state.sent();\n sessionPathUrl = new URL(\"\".concat(window.openmrsBase, \"/ws/rest/v1/session\"), window.location.origin).href;\n return [\n 4,\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.messageOmrsServiceWorker)({\n type: \"registerDynamicRoute\",\n url: sessionPathUrl,\n strategy: \"network-first\"\n })\n ];\n case 2:\n _state.sent();\n return [\n 4,\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.openmrsFetch)(\"/ws/rest/v1/session\").catch(function(e) {\n return console.warn(\"Failed to precache the user session data from the app shell. MFs depending on this data may run into problems while offline.\", e);\n })\n ];\n case 3:\n _state.sent();\n return [\n 2\n ];\n }\n });\n });\n return _precacheGlobalStaticDependencies.apply(this, arguments);\n}\nfunction precacheImportMap() {\n return _precacheImportMap.apply(this, arguments);\n}\nfunction _precacheImportMap() {\n _precacheImportMap = _async_to_generator(function() {\n var importMap;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n return [\n 4,\n window.importMapOverrides.getCurrentPageMap()\n ];\n case 1:\n importMap = _state.sent();\n return [\n 4,\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.messageOmrsServiceWorker)({\n type: \"onImportMapChanged\",\n importMap: importMap\n })\n ];\n case 2:\n _state.sent();\n return [\n 2\n ];\n }\n });\n });\n return _precacheImportMap.apply(this, arguments);\n}\nfunction setupOfflineCssClasses() {\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.subscribeConnectivity)(function(param) {\n var online = param.online;\n var body = document.querySelector(\"body\");\n if (online) {\n body.classList.remove(\"omrs-offline\");\n } else {\n body.classList.add(\"omrs-offline\");\n }\n });\n}\nfunction run(configUrls, offline) {\n var closeLoading = showLoadingSpinner();\n var provideConfigs = createConfigLoader(configUrls);\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.integrateBreakpoints)();\n showToasts();\n showModals();\n showNotifications();\n showActionableNotifications();\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.createAppState)({});\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.subscribeNotificationShown)(_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.showNotification);\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.subscribeActionableNotificationShown)(_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.showActionableNotification);\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.subscribeToastShown)(_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.showToast);\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.subscribePrecacheStaticDependencies)(precacheGlobalStaticDependencies);\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.setupApiModule)();\n registerCoreExtensions();\n return setupApps().then(_apps__WEBPACK_IMPORTED_MODULE_2__.finishRegisteringAllApps).then(setupOfflineCssClasses).then(provideConfigs).then(runShell).catch(handleInitFailure).then(closeLoading).then(function() {\n return offline ? setupOffline() : undefined;\n });\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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O0lBSUY7V0FOZVQ7O0FBUWYsU0FBU1kseUJBQXlCO0lBQ2hDM0ksMEZBQXFCQSxDQUFDLGdCQUFnQjtZQUFib0QsZUFBQUE7UUFDdkIsSUFBTW1DLE9BQU9uRSxTQUFTK0MsYUFBYSxDQUFDO1FBQ3BDLElBQUlmLFFBQVE7WUFDVm1DLEtBQUtxRCxTQUFTLENBQUNDLE1BQU0sQ0FBQztRQUN4QixPQUFPO1lBQ0x0RCxLQUFLcUQsU0FBUyxDQUFDRSxHQUFHLENBQUM7UUFDckIsQ0FBQztJQUNIO0FBQ0Y7QUFFTyxTQUFTQyxJQUFJakQsVUFBeUIsRUFBRWtELE9BQWdCLEVBQUU7SUFDL0QsSUFBTUMsZUFBZXZDO0lBQ3JCLElBQU13QyxpQkFBaUJyRCxtQkFBbUJDO0lBRTFDckcseUZBQW9CQTtJQUNwQitHO0lBQ0FDO0lBQ0FIO0lBQ0FDO0lBQ0F0SCxtRkFBY0EsQ0FBQyxDQUFDO0lBQ2hCVSwrRkFBMEJBLENBQUNSLGlGQUFnQkE7SUFDM0NTLHlHQUFvQ0EsQ0FBQ1IsMkZBQTBCQTtJQUMvRFMsd0ZBQW1CQSxDQUFDUiwwRUFBU0E7SUFDN0JnQix3R0FBbUNBLENBQUN3SDtJQUNwQzlJLG1GQUFjQTtJQUNkNEg7SUFFQSxPQUFPN0YsWUFDSmlELElBQUksQ0FBQ3ZELDJEQUF3QkEsRUFDN0J1RCxJQUFJLENBQUM0RSx3QkFDTDVFLElBQUksQ0FBQ21GLGdCQUNMbkYsSUFBSSxDQUFDSixVQUNMRSxLQUFLLENBQUNHLG1CQUNORCxJQUFJLENBQUNrRixjQUNMbEYsSUFBSSxDQUFDO2VBQU9pRixVQUFVbEMsaUJBQWlCcEYsU0FBUzs7QUFDckQsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovL0BvcGVubXJzL2VzbS1hcHAtc2hlbGwvLi9zcmMvcnVuLnRzP2JjMjYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc3RhcnQsIHRyaWdnZXJBcHBDaGFuZ2UgfSBmcm9tIFwic2luZ2xlLXNwYVwiO1xuaW1wb3J0IHtcbiAgc2V0dXBBcGlNb2R1bGUsXG4gIHJlbmRlckxvYWRpbmdTcGlubmVyLFxuICBjcmVhdGVBcHBTdGF0ZSxcbiAgQ29uZmlnLFxuICBwcm92aWRlLFxuICBzaG93Tm90aWZpY2F0aW9uLFxuICBzaG93QWN0aW9uYWJsZU5vdGlmaWNhdGlvbixcbiAgc2hvd1RvYXN0LFxuICByZW5kZXJJbmxpbmVOb3RpZmljYXRpb25zLFxuICByZW5kZXJBY3Rpb25hYmxlTm90aWZpY2F0aW9ucyxcbiAgcmVuZGVyVG9hc3RzLFxuICBpbnRlZ3JhdGVCcmVha3BvaW50cyxcbiAgZGlzcGF0Y2hDb25uZWN0aXZpdHlDaGFuZ2VkLFxuICBzdWJzY3JpYmVOb3RpZmljYXRpb25TaG93bixcbiAgc3Vic2NyaWJlQWN0aW9uYWJsZU5vdGlmaWNhdGlvblNob3duLFxuICBzdWJzY3JpYmVUb2FzdFNob3duLFxuICByZWdpc3Rlck9tcnNTZXJ2aWNlV29ya2VyLFxuICBtZXNzYWdlT21yc1NlcnZpY2VXb3JrZXIsXG4gIHN1YnNjcmliZUNvbm5lY3Rpdml0eSxcbiAgZ2V0Q3VycmVudFVzZXIsXG4gIHJlbmRlck1vZGFscyxcbiAgZGlzcGF0Y2hQcmVjYWNoZVN0YXRpY0RlcGVuZGVuY2llcyxcbiAgYWN0aXZhdGVPZmZsaW5lQ2FwYWJpbGl0eSxcbiAgc3Vic2NyaWJlUHJlY2FjaGVTdGF0aWNEZXBlbmRlbmNpZXMsXG4gIG9wZW5tcnNGZXRjaCxcbiAgaW50ZXJwb2xhdGVVcmwsXG4gIE9wZW5tcnNSb3V0ZXMsXG59IGZyb20gXCJAb3Blbm1ycy9lc20tZnJhbWV3b3JrL3NyYy9pbnRlcm5hbFwiO1xuaW1wb3J0IHtcbiAgZmluaXNoUmVnaXN0ZXJpbmdBbGxBcHBzLFxuICByZWdpc3RlckFwcCxcbiAgdHJ5UmVnaXN0ZXJFeHRlbnNpb24sXG59IGZyb20gXCIuL2FwcHNcIjtcbmltcG9ydCB7IHNldHVwSTE4biB9IGZyb20gXCIuL2xvY2FsZVwiO1xuaW1wb3J0IHsgYXBwTmFtZSwgZ2V0Q29yZUV4dGVuc2lvbnMgfSBmcm9tIFwiLi91aVwiO1xuXG4vKipcbiAqIFNldHMgdXAgdGhlIGZyb250ZW5kIG1vZHVsZXMgKGFwcHMpLiBVc2VzIHRoZSBkZWZpbmVkIGV4cG9ydFxuICogZnJvbSB0aGUgcm9vdCBtb2R1bGVzIG9mIHRoZSBhcHBzLiBUaGlzIGlzIGRvbmUgYnkgcmVhZGluZyB0aGVcbiAqIGxpc3Qgb2YgYXBwcyBmcm9tIHRoZSByb3V0ZXMucmVnaXN0cnkuanNvbiBmaWxlLCB3aGljaCBzZXJ2ZXNcbiAqIGFzIHRoZSByZWdpc3RyeSBvZiBhbGwgYXBwcyBpbiB0aGUgYXBwbGljYXRpb24uXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHNldHVwQXBwcygpIHtcbiAgY29uc3Qgc2NyaXB0VGFncyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGw8SFRNTFNjcmlwdEVsZW1lbnQ+KFxuICAgIFwic2NyaXB0W3R5cGU9J29wZW5tcnMtcm91dGVzJ11cIlxuICApO1xuXG4gIGNvbnN0IHByb21pc2VzOiBBcnJheTxQcm9taXNlPE9wZW5tcnNSb3V0ZXM+PiA9IFtdO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHNjcmlwdFRhZ3MubGVuZ3RoOyBpKyspIHtcbiAgICBwcm9taXNlcy5wdXNoKFxuICAgICAgKGFzeW5jIChzY3JpcHRUYWcpID0+IHtcbiAgICAgICAgbGV0IHJvdXRlczogT3Blbm1yc1JvdXRlcyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBpZiAoc2NyaXB0VGFnLnRleHRDb250ZW50KSB7XG4gICAgICAgICAgICByb3V0ZXMgPSBKU09OLnBhcnNlKHNjcmlwdFRhZy50ZXh0Q29udGVudCkgYXMgT3Blbm1yc1JvdXRlcztcbiAgICAgICAgICB9IGVsc2UgaWYgKHNjcmlwdFRhZy5zcmMpIHtcbiAgICAgICAgICAgIHJvdXRlcyA9IChhd2FpdCBvcGVubXJzRmV0Y2g8T3Blbm1yc1JvdXRlcz4oc2NyaXB0VGFnLnNyYykpLmRhdGE7XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgIGBDYXVnaHQgZXJyb3Igd2hpbGUgbG9hZGluZyByb3V0ZXMgZnJvbSAke1xuICAgICAgICAgICAgICBzY3JpcHRUYWcuc3JjID8/IFwiSlNPTiBzY3JpcHQgdGFnIGNvbnRlbnRcIlxuICAgICAgICAgICAgfWAsXG4gICAgICAgICAgICBlXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIHJldHVybiB7fTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocm91dGVzID8/IHt9KTtcbiAgICAgIH0pKHNjcmlwdFRhZ3MuaXRlbShpKSlcbiAgICApO1xuICB9XG5cbiAgY29uc3Qgcm91dGVzID0gKGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKSkucmVkdWNlKFxuICAgIChhY2N1bXVsYXRlZFJvdXRlcywgcm91dGVzKSA9PiAoeyAuLi5hY2N1bXVsYXRlZFJvdXRlcywgLi4ucm91dGVzIH0pLFxuICAgIHt9XG4gICk7XG5cbiAgY29uc3QgbW9kdWxlczogdHlwZW9mIHdpbmRvdy5pbnN0YWxsZWRNb2R1bGVzID0gW107XG4gIE9iamVjdC5lbnRyaWVzKHJvdXRlcykuZm9yRWFjaChhc3luYyAoW21vZHVsZSwgcm91dGVzXSkgPT4ge1xuICAgIG1vZHVsZXMucHVzaChbbW9kdWxlLCByb3V0ZXNdKTtcbiAgICByZWdpc3RlckFwcChtb2R1bGUsIHJvdXRlcyk7XG4gIH0pO1xuXG4gIHdpbmRvdy5pbnN0YWxsZWRNb2R1bGVzID0gbW9kdWxlcztcbn1cblxuLyoqXG4gKiBMb2FkcyB0aGUgcHJvdmlkZWQgY29uZmlndXJhdGlvbnMgYW5kIHNldHMgdGhlbSBpbiB0aGUgc3lzdGVtLlxuICovXG5hc3luYyBmdW5jdGlvbiBsb2FkQ29uZmlncyhjb25maWdzOiBBcnJheTx7IG5hbWU6IHN0cmluZzsgdmFsdWU6IENvbmZpZyB9Pikge1xuICBmb3IgKGNvbnN0IGNvbmZpZyBvZiBjb25maWdzKSB7XG4gICAgcHJvdmlkZShjb25maWcudmFsdWUsIGNvbmZpZy5uYW1lKTtcbiAgfVxufVxuXG4vKipcbiAqIEludm9rZWQgd2hlbiB0aGUgY29ubmVjdGl2aXR5IGlzIGNoYW5nZWQuXG4gKi9cbmZ1bmN0aW9uIGNvbm5lY3Rpdml0eUNoYW5nZWQoKSB7XG4gIGNvbnN0IG9ubGluZSA9IG5hdmlnYXRvci5vbkxpbmU7XG4gIC8vIE5CIFdlIGRvIG5vdCB3YWl0IGZvciB0aGlzIHRvIGJlIGRvbmU7IGl0IGlzIHNpbXBseSBzY2hlZHVsZWRcbiAgdHJpZ2dlckFwcENoYW5nZSgpO1xuXG4gIGRpc3BhdGNoQ29ubmVjdGl2aXR5Q2hhbmdlZChvbmxpbmUpO1xuICBzaG93VG9hc3Qoe1xuICAgIGNyaXRpY2FsOiB0cnVlLFxuICAgIGRlc2NyaXB0aW9uOiBgQ29ubmVjdGlvbjogJHtvbmxpbmUgPyBcIm9ubGluZVwiIDogXCJvZmZsaW5lXCJ9YCxcbiAgICB0aXRsZTogXCJBcHBcIixcbiAgICBraW5kOiBvbmxpbmUgPyBcInN1Y2Nlc3NcIiA6IFwid2FybmluZ1wiLFxuICB9KTtcbn1cblxuLyoqXG4gKiBSdW5zIHRoZSBzaGVsbCBieSBpbXBvcnRpbmcgdGhlIHRyYW5zbGF0aW9ucyBhbmQgc3RhcnRpbmcgc2luZ2xlIFNQQS5cbiAqL1xuZnVuY3Rpb24gcnVuU2hlbGwoKSB7XG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwib2ZmbGluZVwiLCBjb25uZWN0aXZpdHlDaGFuZ2VkKTtcbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJvbmxpbmVcIiwgY29ubmVjdGl2aXR5Q2hhbmdlZCk7XG4gIHJldHVybiBzZXR1cEkxOG4oKVxuICAgIC5jYXRjaCgoZXJyKSA9PiBjb25zb2xlLmVycm9yKGBGYWlsZWQgdG8gaW5pdGlhbGl6ZSB0cmFuc2xhdGlvbnNgLCBlcnIpKVxuICAgIC50aGVuKCgpID0+IHN0YXJ0KCkpO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVJbml0RmFpbHVyZShlOiBFcnJvcikge1xuICBjb25zb2xlLmVycm9yKGUpO1xuICByZW5kZXJGYXRhbEVycm9yUGFnZShlKTtcbn1cblxuZnVuY3Rpb24gcmVuZGVyRmF0YWxFcnJvclBhZ2UoZT86IEVycm9yKSB7XG4gIGNvbnN0IHRlbXBsYXRlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcjxIVE1MVGVtcGxhdGVFbGVtZW50PihcIiNhcHAtZXJyb3JcIik7XG5cbiAgaWYgKHRlbXBsYXRlKSB7XG4gICAgY29uc3QgZnJhZ21lbnQgPSB0ZW1wbGF0ZS5jb250ZW50LmNsb25lTm9kZSh0cnVlKSBhcyBEb2N1bWVudEZyYWdtZW50O1xuICAgIGNvbnN0IG1lc3NhZ2VDb250YWluZXIgPSBmcmFnbWVudC5xdWVyeVNlbGVjdG9yKCdbZGF0YS12YXI9XCJtZXNzYWdlXCJdJyk7XG5cbiAgICBpZiAobWVzc2FnZUNvbnRhaW5lcikge1xuICAgICAgbWVzc2FnZUNvbnRhaW5lci50ZXh0Q29udGVudCA9XG4gICAgICAgIGU/Lm1lc3NhZ2UgfHwgXCJObyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGF2YWlsYWJsZS5cIjtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcIm9wZW5tcnM6ZGV2dG9vbHNcIikgJiZcbiAgICAgIE9iamVjdC5rZXlzKGxvY2FsU3RvcmFnZSkuc29tZSgoaykgPT5cbiAgICAgICAgay5zdGFydHNXaXRoKFwiaW1wb3J0LW1hcC1vdmVycmlkZTpcIilcbiAgICAgIClcbiAgICApIHtcbiAgICAgIGNvbnN0IGFwcEVycm9yQWN0aW9uQnV0dG9ucyA9IGZyYWdtZW50Py5xdWVyeVNlbGVjdG9yKFwiI2J1dHRvbnNcIik7XG4gICAgICBpZiAoYXBwRXJyb3JBY3Rpb25CdXR0b25zKSB7XG4gICAgICAgIGNvbnN0IGNsZWFyRGV2T3ZlcnJpZGVzQnV0dG9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImJ1dHRvblwiKTtcbiAgICAgICAgY2xlYXJEZXZPdmVycmlkZXNCdXR0b24uY2xhc3NOYW1lID0gXCJjZHMtLWJ0blwiO1xuICAgICAgICBjbGVhckRldk92ZXJyaWRlc0J1dHRvbi5pbm5lckhUTUwgPSBcIkNsZWFyIGRldiBvdmVycmlkZXNcIjtcbiAgICAgICAgY2xlYXJEZXZPdmVycmlkZXNCdXR0b24ub25jbGljayA9IGNsZWFyRGV2T3ZlcnJpZGVzO1xuICAgICAgICBhcHBFcnJvckFjdGlvbkJ1dHRvbnMuYXBwZW5kQ2hpbGQoY2xlYXJEZXZPdmVycmlkZXNCdXR0b24pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZnJhZ21lbnQpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNsZWFyRGV2T3ZlcnJpZGVzKCkge1xuICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhsb2NhbFN0b3JhZ2UpKSB7XG4gICAgaWYgKFxuICAgICAga2V5LnN0YXJ0c1dpdGgoXCJpbXBvcnQtbWFwLW92ZXJyaWRlOlwiKSAmJlxuICAgICAgIVtcImltcG9ydC1tYXAtb3ZlcnJpZGU6cmVhY3RcIiwgXCJpbXBvcnQtbWFwLW92ZXJyaWRlOnJlYWN0LWRvbVwiXS5pbmNsdWRlcyhcbiAgICAgICAga2V5XG4gICAgICApXG4gICAgKSB7XG4gICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShrZXkpO1xuICAgIH1cbiAgfVxuICBsb2NhdGlvbi5yZWxvYWQoKTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlQ29uZmlnTG9hZGVyKGNvbmZpZ1VybHM6IEFycmF5PHN0cmluZz4pIHtcbiAgY29uc3QgbG9hZGluZ0NvbmZpZ3MgPSBQcm9taXNlLmFsbChcbiAgICBjb25maWdVcmxzLm1hcCgoY29uZmlnVXJsKSA9PiB7XG4gICAgICBjb25zdCBpbnRlcnBvbGF0ZWRVcmwgPSBpbnRlcnBvbGF0ZVVybChjb25maWdVcmwpO1xuICAgICAgcmV0dXJuIGZldGNoKGludGVycG9sYXRlZFVybClcbiAgICAgICAgLnRoZW4oKHJlcykgPT4gcmVzLmpzb24oKSlcbiAgICAgICAgLnRoZW4oKGNvbmZpZykgPT4gKHtcbiAgICAgICAgICBuYW1lOiBjb25maWdVcmwsXG4gICAgICAgICAgdmFsdWU6IGNvbmZpZyxcbiAgICAgICAgfSkpXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihgTG9hZGluZyB0aGUgY29uZmlnIGZyb20gXCIke2NvbmZpZ1VybH1cIiBmYWlsZWQuYCwgZXJyKTtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbmFtZTogY29uZmlnVXJsLFxuICAgICAgICAgICAgdmFsdWU6IHt9LFxuICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgIH0pXG4gICk7XG4gIHJldHVybiAoKSA9PiBsb2FkaW5nQ29uZmlncy50aGVuKGxvYWRDb25maWdzKTtcbn1cblxuZnVuY3Rpb24gc2hvd05vdGlmaWNhdGlvbnMoKSB7XG4gIHJlbmRlcklubGluZU5vdGlmaWNhdGlvbnMoXG4gICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIi5vbXJzLWlubGluZS1ub3RpZmljYXRpb25zLWNvbnRhaW5lclwiKVxuICApO1xuICByZXR1cm47XG59XG5cbmZ1bmN0aW9uIHNob3dBY3Rpb25hYmxlTm90aWZpY2F0aW9ucygpIHtcbiAgcmVuZGVyQWN0aW9uYWJsZU5vdGlmaWNhdGlvbnMoXG4gICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIi5vbXJzLWFjdGlvbmFibGUtbm90aWZpY2F0aW9ucy1jb250YWluZXJcIilcbiAgKTtcbn1cblxuZnVuY3Rpb24gc2hvd1RvYXN0cygpIHtcbiAgcmVuZGVyVG9hc3RzKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIub21ycy10b2FzdHMtY29udGFpbmVyXCIpKTtcbn1cblxuZnVuY3Rpb24gc2hvd01vZGFscygpIHtcbiAgcmVuZGVyTW9kYWxzKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIub21ycy1tb2RhbHMtY29udGFpbmVyXCIpKTtcbn1cblxuZnVuY3Rpb24gc2hvd0xvYWRpbmdTcGlubmVyKCkge1xuICByZXR1cm4gcmVuZGVyTG9hZGluZ1NwaW5uZXIoZG9jdW1lbnQuYm9keSk7XG59XG5cbi8qKlxuICogUmVnaXN0ZXJzIHRoZSBleHRlbnNpb25zIGNvbWluZyBmcm9tIHRoZSBhcHAgc2hlbGwgaXRzZWxmLlxuICovXG5mdW5jdGlvbiByZWdpc3RlckNvcmVFeHRlbnNpb25zKCkge1xuICBjb25zdCBleHRlbnNpb25zID0gZ2V0Q29yZUV4dGVuc2lvbnMoKTtcbiAgZm9yIChjb25zdCBleHRlbnNpb24gb2YgZXh0ZW5zaW9ucykge1xuICAgIHRyeVJlZ2lzdGVyRXh0ZW5zaW9uKGFwcE5hbWUsIGV4dGVuc2lvbik7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gc2V0dXBPZmZsaW5lKCkge1xuICB0cnkge1xuICAgIGF3YWl0IHJlZ2lzdGVyT21yc1NlcnZpY2VXb3JrZXIoXG4gICAgICBgJHt3aW5kb3cuZ2V0T3Blbm1yc1NwYUJhc2UoKX1zZXJ2aWNlLXdvcmtlci5qc2BcbiAgICApO1xuICAgIGF3YWl0IGFjdGl2YXRlT2ZmbGluZUNhcGFiaWxpdHkoKTtcbiAgICBzZXR1cE9mZmxpbmVTdGF0aWNEZXBlbmRlbmN5UHJlY2FjaGluZygpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciB3aGlsZSBzZXR0aW5nIHVwIG9mZmxpbmUgbW9kZS5cIiwgZXJyb3IpO1xuICAgIHNob3dOb3RpZmljYXRpb24oe1xuICAgICAga2luZDogXCJlcnJvclwiLFxuICAgICAgdGl0bGU6IFwiT2ZmbGluZSBTZXR1cCBFcnJvclwiLFxuICAgICAgZGVzY3JpcHRpb246IGVycm9yLm1lc3NhZ2UsXG4gICAgfSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gc2V0dXBPZmZsaW5lU3RhdGljRGVwZW5kZW5jeVByZWNhY2hpbmcoKSB7XG4gIGNvbnN0IHByZWNhY2hlRGVsYXkgPSAxMDAwICogNjAgKiA1O1xuICBsZXQgbGFzdFByZWNhY2hlOiBEYXRlIHwgbnVsbCA9IG51bGw7XG5cbiAgc3Vic2NyaWJlT25saW5lQW5kTG9naW5DaGFuZ2UoKG9ubGluZSwgaGFzTG9nZ2VkSW5Vc2VyKSA9PiB7XG4gICAgY29uc3QgaGFzRXhjZWVkZWRQcmVjYWNoZURlbGF5ID1cbiAgICAgICFsYXN0UHJlY2FjaGUgfHxcbiAgICAgIG5ldyBEYXRlKCkuZ2V0VGltZSgpIC0gbGFzdFByZWNhY2hlLmdldFRpbWUoKSA+IHByZWNhY2hlRGVsYXk7XG5cbiAgICBpZiAoaGFzTG9nZ2VkSW5Vc2VyICYmIG9ubGluZSAmJiBoYXNFeGNlZWRlZFByZWNhY2hlRGVsYXkpIHtcbiAgICAgIGxhc3RQcmVjYWNoZSA9IG5ldyBEYXRlKCk7XG4gICAgICBkaXNwYXRjaFByZWNhY2hlU3RhdGljRGVwZW5kZW5jaWVzKCk7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gc3Vic2NyaWJlT25saW5lQW5kTG9naW5DaGFuZ2UoXG4gIGNiOiAob25saW5lOiBib29sZWFuLCBoYXNMb2dnZWRJblVzZXI6IGJvb2xlYW4pID0+IHZvaWRcbikge1xuICBsZXQgaXNPbmxpbmUgPSBmYWxzZTtcbiAgbGV0IGhhc0xvZ2dlZEluVXNlciA9IGZhbHNlO1xuXG4gIGdldEN1cnJlbnRVc2VyKHsgaW5jbHVkZUF1dGhTdGF0dXM6IGZhbHNlIH0pLnN1YnNjcmliZSgodXNlcikgPT4ge1xuICAgIGhhc0xvZ2dlZEluVXNlciA9ICEhdXNlcjtcbiAgICBjYihpc09ubGluZSwgaGFzTG9nZ2VkSW5Vc2VyKTtcbiAgfSk7XG5cbiAgc3Vic2NyaWJlQ29ubmVjdGl2aXR5KCh7IG9ubGluZSB9KSA9PiB7XG4gICAgaXNPbmxpbmUgPSBvbmxpbmU7XG4gICAgY2Iob25saW5lLCBoYXNMb2dnZWRJblVzZXIpO1xuICB9KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcHJlY2FjaGVHbG9iYWxTdGF0aWNEZXBlbmRlbmNpZXMoKSB7XG4gIGF3YWl0IHByZWNhY2hlSW1wb3J0TWFwKCk7XG5cbiAgLy8gQnkgZGVmYXVsdCwgY2FjaGUgdGhlIHNlc3Npb24gZW5kcG9pbnQuXG4gIC8vIFRoaXMgZW5zdXJlcyB0aGF0IGEgbG90IG9mIHVzZXIvc2Vzc2lvbiByZWxhdGVkIGZ1bmN0aW9ucyBhbHNvIHdvcmsgb2ZmbGluZS5cbiAgY29uc3Qgc2Vzc2lvblBhdGhVcmwgPSBuZXcgVVJMKFxuICAgIGAke3dpbmRvdy5vcGVubXJzQmFzZX0vd3MvcmVzdC92MS9zZXNzaW9uYCxcbiAgICB3aW5kb3cubG9jYXRpb24ub3JpZ2luXG4gICkuaHJlZjtcblxuICBhd2FpdCBtZXNzYWdlT21yc1NlcnZpY2VXb3JrZXIoe1xuICAgIHR5cGU6IFwicmVnaXN0ZXJEeW5hbWljUm91dGVcIixcbiAgICB1cmw6IHNlc3Npb25QYXRoVXJsLFxuICAgIHN0cmF0ZWd5OiBcIm5ldHdvcmstZmlyc3RcIixcbiAgfSk7XG5cbiAgYXdhaXQgb3Blbm1yc0ZldGNoKFwiL3dzL3Jlc3QvdjEvc2Vzc2lvblwiKS5jYXRjaCgoZSkgPT5cbiAgICBjb25zb2xlLndhcm4oXG4gICAgICBcIkZhaWxlZCB0byBwcmVjYWNoZSB0aGUgdXNlciBzZXNzaW9uIGRhdGEgZnJvbSB0aGUgYXBwIHNoZWxsLiBNRnMgZGVwZW5kaW5nIG9uIHRoaXMgZGF0YSBtYXkgcnVuIGludG8gcHJvYmxlbXMgd2hpbGUgb2ZmbGluZS5cIixcbiAgICAgIGVcbiAgICApXG4gICk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHByZWNhY2hlSW1wb3J0TWFwKCkge1xuICBjb25zdCBpbXBvcnRNYXAgPSBhd2FpdCB3aW5kb3cuaW1wb3J0TWFwT3ZlcnJpZGVzLmdldEN1cnJlbnRQYWdlTWFwKCk7XG4gIGF3YWl0IG1lc3NhZ2VPbXJzU2VydmljZVdvcmtlcih7XG4gICAgdHlwZTogXCJvbkltcG9ydE1hcENoYW5nZWRcIixcbiAgICBpbXBvcnRNYXAsXG4gIH0pO1xufVxuXG5mdW5jdGlvbiBzZXR1cE9mZmxpbmVDc3NDbGFzc2VzKCkge1xuICBzdWJzY3JpYmVDb25uZWN0aXZpdHkoKHsgb25saW5lIH0pID0+IHtcbiAgICBjb25zdCBib2R5ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcImJvZHlcIikhO1xuICAgIGlmIChvbmxpbmUpIHtcbiAgICAgIGJvZHkuY2xhc3NMaXN0LnJlbW92ZShcIm9tcnMtb2ZmbGluZVwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYm9keS5jbGFzc0xpc3QuYWRkKFwib21ycy1vZmZsaW5lXCIpO1xuICAgIH1cbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBydW4oY29uZmlnVXJsczogQXJyYXk8c3RyaW5nPiwgb2ZmbGluZTogYm9vbGVhbikge1xuICBjb25zdCBjbG9zZUxvYWRpbmcgPSBzaG93TG9hZGluZ1NwaW5uZXIoKTtcbiAgY29uc3QgcHJvdmlkZUNvbmZpZ3MgPSBjcmVhdGVDb25maWdMb2FkZXIoY29uZmlnVXJscyk7XG5cbiAgaW50ZWdyYXRlQnJlYWtwb2ludHMoKTtcbiAgc2hvd1RvYXN0cygpO1xuICBzaG93TW9kYWxzKCk7XG4gIHNob3dOb3RpZmljYXRpb25zKCk7XG4gIHNob3dBY3Rpb25hYmxlTm90aWZpY2F0aW9ucygpO1xuICBjcmVhdGVBcHBTdGF0ZSh7fSk7XG4gIHN1YnNjcmliZU5vdGlmaWNhdGlvblNob3duKHNob3dOb3RpZmljYXRpb24pO1xuICBzdWJzY3JpYmVBY3Rpb25hYmxlTm90aWZpY2F0aW9uU2hvd24oc2hvd0FjdGlvbmFibGVOb3RpZmljYXRpb24pO1xuICBzdWJzY3JpYmVUb2FzdFNob3duKHNob3dUb2FzdCk7XG4gIHN1YnNjcmliZVByZWNhY2hlU3RhdGljRGVwZW5kZW5jaWVzKHByZWNhY2hlR2xvYmFsU3RhdGljRGVwZW5kZW5jaWVzKTtcbiAgc2V0dXBBcGlNb2R1bGUoKTtcbiAgcmVnaXN0ZXJDb3JlRXh0ZW5zaW9ucygpO1xuXG4gIHJldHVybiBzZXR1cEFwcHMoKVxuICAgIC50aGVuKGZpbmlzaFJlZ2lzdGVyaW5nQWxsQXBwcylcbiAgICAudGhlbihzZXR1cE9mZmxpbmVDc3NDbGFzc2VzKVxuICAgIC50aGVuKHByb3ZpZGVDb25maWdzKVxuICAgIC50aGVuKHJ1blNoZWxsKVxuICAgIC5jYXRjaChoYW5kbGVJbml0RmFpbHVyZSlcbiAgICAudGhlbihjbG9zZUxvYWRpbmcpXG4gICAgLnRoZW4oKCkgPT4gKG9mZmxpbmUgPyBzZXR1cE9mZmxpbmUoKSA6IHVuZGVmaW5lZCkpO1xufVxuIl0sIm5hbWVzIjpbInN0YXJ0IiwidHJpZ2dlckFwcENoYW5nZSIsInNldHVwQXBpTW9kdWxlIiwicmVuZGVyTG9hZGluZ1NwaW5uZXIiLCJjcmVhdGVBcHBTdGF0ZSIsInByb3ZpZGUiLCJzaG93Tm90aWZpY2F0aW9uIiwic2hvd0FjdGlvbmFibGVOb3RpZmljYXRpb24iLCJzaG93VG9hc3QiLCJyZW5kZXJJbmxpbmVOb3RpZmljYXRpb25zIiwicmVuZGVyQWN0aW9uYWJsZU5vdGlmaWNhdGlvbnMiLCJyZW5kZXJUb2FzdHMiLCJpbnRlZ3JhdGVCcmVha3BvaW50cyIsImRpc3BhdGNoQ29ubmVjdGl2aXR5Q2hhbmdlZCIsInN1YnNjcmliZU5vdGlmaWNhdGlvblNob3duIiwic3Vic2NyaWJlQWN0aW9uYWJsZU5vdGlmaWNhdGlvblNob3duIiwic3Vic2NyaWJlVG9hc3RTaG93biIsInJlZ2lzdGVyT21yc1NlcnZpY2VXb3JrZXIiLCJtZXNzYWdlT21yc1NlcnZpY2VXb3JrZXIiLCJzdWJzY3JpYmVDb25uZWN0aXZpdHkiLCJnZXRDdXJyZW50VXNlciIsInJlbmRlck1vZGFscyIsImRpc3BhdGNoUHJlY2FjaGVTdGF0aWNEZXBlbmRlbmNpZXMiLCJhY3RpdmF0ZU9mZmxpbmVDYXBhYmlsaXR5Iiwic3Vic2NyaWJlUHJlY2FjaGVTdGF0aWNEZXBlbmRlbmNpZXMiLCJvcGVubXJzRmV0Y2giLCJpbnRlcnBvbGF0ZVVybCIsImZpbmlzaFJlZ2lzdGVyaW5nQWxsQXBwcyIsInJlZ2lzdGVyQXBwIiwidHJ5UmVnaXN0ZXJFeHRlbnNpb24iLCJzZXR1cEkxOG4iLCJhcHBOYW1lIiwiZ2V0Q29yZUV4dGVuc2lvbnMiLCJzZXR1cEFwcHMiLCJzY3JpcHRUYWdzIiwicHJvbWlzZXMiLCJpIiwicm91dGVzIiwibW9kdWxlcyIsImRvY3VtZW50IiwicXVlcnlTZWxlY3RvckFsbCIsImxlbmd0aCIsInB1c2giLCJzY3JpcHRUYWciLCJlIiwidW5kZWZpbmVkIiwidGV4dENvbnRlbnQiLCJKU09OIiwicGFyc2UiLCJzcmMiLCJkYXRhIiwiY29uc29sZSIsImVycm9yIiwiUHJvbWlzZSIsInJlc29sdmUiLCJpdGVtIiwiYWxsIiwicmVkdWNlIiwiYWNjdW11bGF0ZWRSb3V0ZXMiLCJPYmplY3QiLCJlbnRyaWVzIiwiZm9yRWFjaCIsIm1vZHVsZSIsIndpbmRvdyIsImluc3RhbGxlZE1vZHVsZXMiLCJsb2FkQ29uZmlncyIsImNvbmZpZ3MiLCJjb25maWciLCJ2YWx1ZSIsIm5hbWUiLCJjb25uZWN0aXZpdHlDaGFuZ2VkIiwib25saW5lIiwibmF2aWdhdG9yIiwib25MaW5lIiwiY3JpdGljYWwiLCJkZXNjcmlwdGlvbiIsInRpdGxlIiwia2luZCIsInJ1blNoZWxsIiwiYWRkRXZlbnRMaXN0ZW5lciIsImNhdGNoIiwiZXJyIiwidGhlbiIsImhhbmRsZUluaXRGYWlsdXJlIiwicmVuZGVyRmF0YWxFcnJvclBhZ2UiLCJ0ZW1wbGF0ZSIsInF1ZXJ5U2VsZWN0b3IiLCJmcmFnbWVudCIsImNvbnRlbnQiLCJjbG9uZU5vZGUiLCJtZXNzYWdlQ29udGFpbmVyIiwibWVzc2FnZSIsImxvY2FsU3RvcmFnZSIsImdldEl0ZW0iLCJrZXlzIiwic29tZSIsImsiLCJzdGFydHNXaXRoIiwiYXBwRXJyb3JBY3Rpb25CdXR0b25zIiwiY2xlYXJEZXZPdmVycmlkZXNCdXR0b24iLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NOYW1lIiwiaW5uZXJIVE1MIiwib25jbGljayIsImNsZWFyRGV2T3ZlcnJpZGVzIiwiYXBwZW5kQ2hpbGQiLCJib2R5Iiwia2V5IiwiaW5jbHVkZXMiLCJyZW1vdmVJdGVtIiwibG9jYXRpb24iLCJyZWxvYWQiLCJjcmVhdGVDb25maWdMb2FkZXIiLCJjb25maWdVcmxzIiwibG9hZGluZ0NvbmZpZ3MiLCJtYXAiLCJjb25maWdVcmwiLCJpbnRlcnBvbGF0ZWRVcmwiLCJmZXRjaCIsInJlcyIsImpzb24iLCJzaG93Tm90aWZpY2F0aW9ucyIsInNob3dBY3Rpb25hYmxlTm90aWZpY2F0aW9ucyIsInNob3dUb2FzdHMiLCJzaG93TW9kYWxzIiwic2hvd0xvYWRpbmdTcGlubmVyIiwicmVnaXN0ZXJDb3JlRXh0ZW5zaW9ucyIsImV4dGVuc2lvbnMiLCJleHRlbnNpb24iLCJzZXR1cE9mZmxpbmUiLCJnZXRPcGVubXJzU3BhQmFzZSIsInNldHVwT2ZmbGluZVN0YXRpY0RlcGVuZGVuY3lQcmVjYWNoaW5nIiwicHJlY2FjaGVEZWxheSIsImxhc3RQcmVjYWNoZSIsInN1YnNjcmliZU9ubGluZUFuZExvZ2luQ2hhbmdlIiwiaGFzTG9nZ2VkSW5Vc2VyIiwiaGFzRXhjZWVkZWRQcmVjYWNoZURlbGF5IiwiRGF0ZSIsImdldFRpbWUiLCJjYiIsImlzT25saW5lIiwiaW5jbHVkZUF1dGhTdGF0dXMiLCJzdWJzY3JpYmUiLCJ1c2VyIiwicHJlY2FjaGVHbG9iYWxTdGF0aWNEZXBlbmRlbmNpZXMiLCJzZXNzaW9uUGF0aFVybCIsInByZWNhY2hlSW1wb3J0TWFwIiwiVVJMIiwib3Blbm1yc0Jhc2UiLCJvcmlnaW4iLCJocmVmIiwidHlwZSIsInVybCIsInN0cmF0ZWd5Iiwid2FybiIsImltcG9ydE1hcCIsImltcG9ydE1hcE92ZXJyaWRlcyIsImdldEN1cnJlbnRQYWdlTWFwIiwic2V0dXBPZmZsaW5lQ3NzQ2xhc3NlcyIsImNsYXNzTGlzdCIsInJlbW92ZSIsImFkZCIsInJ1biIsIm9mZmxpbmUiLCJjbG9zZUxvYWRpbmciLCJwcm92aWRlQ29uZmlncyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/run.ts\n");
|
|
51
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ run: () => (/* binding */ run)\n/* harmony export */ });\n/* harmony import */ var single_spa__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! single-spa */ \"webpack/sharing/consume/default/single-spa/single-spa\");\n/* harmony import */ var single_spa__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(single_spa__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @openmrs/esm-framework/src/internal */ \"webpack/sharing/consume/default/@openmrs/esm-framework/src/internal/@openmrs/esm-framework/src/internal\");\n/* harmony import */ var _openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _apps__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./apps */ \"./src/apps.ts\");\n/* harmony import */ var _locale__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./locale */ \"./src/locale.ts\");\n/* harmony import */ var _ui__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./ui */ \"./src/ui/index.ts\");\nfunction _array_like_to_array(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction _array_with_holes(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nfunction _async_to_generator(fn) {\n return function() {\n var self = this, args = arguments;\n return new Promise(function(resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}\nfunction _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _iterable_to_array_limit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _s, _e;\n try {\n for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){\n _arr.push(_s.value);\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally{\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally{\n if (_d) throw _e;\n }\n }\n return _arr;\n}\nfunction _non_iterable_rest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _object_spread(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n if (typeof Object.getOwnPropertySymbols === \"function\") {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n ownKeys.forEach(function(key) {\n _define_property(target, key, source[key]);\n });\n }\n return target;\n}\nfunction _sliced_to_array(arr, i) {\n return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();\n}\nfunction _unsupported_iterable_to_array(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _array_like_to_array(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);\n}\nfunction _ts_generator(thisArg, body) {\n var f, y, t, g, _ = {\n label: 0,\n sent: function() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n };\n return(g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() {\n return this;\n }), g);\n function verb(n) {\n return function(v) {\n return step([\n n,\n v\n ]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while(_)try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [\n op[0] & 2,\n t.value\n ];\n switch(op[0]){\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [\n 0\n ];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [\n 6,\n e\n ];\n y = 0;\n } finally{\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n}\n\n\n\n\n\n// @internal\n// used to track when the window.installedModules global is finalised\n// so we can pre-load all modules\nvar REGISTRATION_PROMISES = Symbol(\"openmrs_registration_promises\");\nfunction setupApps() {\n return _setupApps.apply(this, arguments);\n}\nfunction _setupApps() {\n _setupApps = /**\n * Sets up the frontend modules (apps). Uses the defined export\n * from the root modules of the apps. This is done by reading the\n * list of apps from the routes.registry.json file, which serves\n * as the registry of all apps in the application.\n */ _async_to_generator(function() {\n var scriptTags, promises, i, routes, modules, registrationPromises;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n scriptTags = document.querySelectorAll(\"script[type='openmrs-routes']\");\n promises = [];\n for(i = 0; i < scriptTags.length; i++){\n promises.push((function() {\n var _ref = _async_to_generator(function(scriptTag) {\n var routes, e, _scriptTag_src;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n routes = undefined;\n _state.label = 1;\n case 1:\n _state.trys.push([\n 1,\n 5,\n ,\n 6\n ]);\n if (!scriptTag.textContent) return [\n 3,\n 2\n ];\n routes = JSON.parse(scriptTag.textContent);\n return [\n 3,\n 4\n ];\n case 2:\n if (!scriptTag.src) return [\n 3,\n 4\n ];\n return [\n 4,\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.openmrsFetch)(scriptTag.src)\n ];\n case 3:\n routes = _state.sent().data;\n _state.label = 4;\n case 4:\n return [\n 3,\n 6\n ];\n case 5:\n e = _state.sent();\n console.error(\"Caught error while loading routes from \".concat((_scriptTag_src = scriptTag.src) !== null && _scriptTag_src !== void 0 ? _scriptTag_src : \"JSON script tag content\"), e);\n return [\n 2,\n {}\n ];\n case 6:\n return [\n 2,\n Promise.resolve(routes !== null && routes !== void 0 ? routes : {})\n ];\n }\n });\n });\n return function(scriptTag) {\n return _ref.apply(this, arguments);\n };\n })()(scriptTags.item(i)));\n }\n return [\n 4,\n Promise.all(promises)\n ];\n case 1:\n routes = _state.sent().reduce(function(accumulatedRoutes, routes) {\n return _object_spread({}, accumulatedRoutes, routes);\n }, {});\n modules = [];\n registrationPromises = Object.entries(routes).map(function() {\n var _ref = _async_to_generator(function(param) {\n var _param, module, routes;\n return _ts_generator(this, function(_state) {\n _param = _sliced_to_array(param, 2), module = _param[0], routes = _param[1];\n modules.push([\n module,\n routes\n ]);\n (0,_apps__WEBPACK_IMPORTED_MODULE_2__.registerApp)(module, routes);\n return [\n 2\n ];\n });\n });\n return function(_) {\n return _ref.apply(this, arguments);\n };\n }());\n window[REGISTRATION_PROMISES] = Promise.all(registrationPromises);\n window.installedModules = modules;\n return [\n 2\n ];\n }\n });\n });\n return _setupApps.apply(this, arguments);\n}\nfunction loadConfigs(configs) {\n return _loadConfigs.apply(this, arguments);\n}\nfunction _loadConfigs() {\n _loadConfigs = /**\n * Loads the provided configurations and sets them in the system.\n */ _async_to_generator(function(configs) {\n var _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, config;\n return _ts_generator(this, function(_state) {\n _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(_iterator = configs[Symbol.iterator](); !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n config = _step.value;\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.provide)(config.value, config.name);\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 return [\n 2\n ];\n });\n });\n return _loadConfigs.apply(this, arguments);\n}\n/**\n * Invoked when the connectivity is changed.\n */ function connectivityChanged() {\n var online = navigator.onLine;\n // NB We do not wait for this to be done; it is simply scheduled\n (0,single_spa__WEBPACK_IMPORTED_MODULE_0__.triggerAppChange)();\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.dispatchConnectivityChanged)(online);\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.showToast)({\n critical: true,\n description: \"Connection: \".concat(online ? \"online\" : \"offline\"),\n title: \"App\",\n kind: online ? \"success\" : \"warning\"\n });\n}\n/**\n * Runs the shell by importing the translations and starting single SPA.\n */ function runShell() {\n window.addEventListener(\"offline\", connectivityChanged);\n window.addEventListener(\"online\", connectivityChanged);\n return (0,_locale__WEBPACK_IMPORTED_MODULE_3__.setupI18n)().catch(function(err) {\n return console.error(\"Failed to initialize translations\", err);\n }).then(function() {\n return (0,single_spa__WEBPACK_IMPORTED_MODULE_0__.start)();\n });\n}\nfunction preloadScripts() {\n return _preloadScripts.apply(this, arguments);\n}\nfunction _preloadScripts() {\n _preloadScripts = _async_to_generator(function() {\n var _ref, importMap;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n return [\n 4,\n Promise.all([\n window[REGISTRATION_PROMISES],\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.getCurrentImportMap)()\n ])\n ];\n case 1:\n _ref = _sliced_to_array.apply(void 0, [\n _state.sent(),\n 2\n ]), importMap = _ref[1];\n window.installedModules.map(function() {\n var _ref = _async_to_generator(function(param) {\n var _param, module;\n return _ts_generator(this, function(_state) {\n _param = _sliced_to_array(param, 1), module = _param[0];\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.importDynamic)(module, undefined, {\n importMap: importMap\n });\n return [\n 2\n ];\n });\n });\n return function(_) {\n return _ref.apply(this, arguments);\n };\n }());\n return [\n 2\n ];\n }\n });\n });\n return _preloadScripts.apply(this, arguments);\n}\nfunction handleInitFailure(e) {\n console.error(e);\n renderFatalErrorPage(e);\n}\nfunction renderFatalErrorPage(e) {\n var template = document.querySelector(\"#app-error\");\n if (template) {\n var fragment = template.content.cloneNode(true);\n var messageContainer = fragment.querySelector('[data-var=\"message\"]');\n if (messageContainer) {\n messageContainer.textContent = (e === null || e === void 0 ? void 0 : e.message) || \"No additional information available.\";\n }\n if (localStorage.getItem(\"openmrs:devtools\") && Object.keys(localStorage).some(function(k) {\n return k.startsWith(\"import-map-override:\");\n })) {\n var appErrorActionButtons = fragment === null || fragment === void 0 ? void 0 : fragment.querySelector(\"#buttons\");\n if (appErrorActionButtons) {\n var clearDevOverridesButton = document.createElement(\"button\");\n clearDevOverridesButton.className = \"cds--btn\";\n clearDevOverridesButton.innerHTML = \"Clear dev overrides\";\n clearDevOverridesButton.onclick = clearDevOverrides;\n appErrorActionButtons.appendChild(clearDevOverridesButton);\n }\n }\n document.body.appendChild(fragment);\n }\n}\nfunction clearDevOverrides() {\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = Object.keys(localStorage)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var key = _step.value;\n if (key.startsWith(\"import-map-override:\") && ![\n \"import-map-override:react\",\n \"import-map-override:react-dom\"\n ].includes(key)) {\n localStorage.removeItem(key);\n }\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 location.reload();\n}\nfunction createConfigLoader(configUrls) {\n var loadingConfigs = Promise.all(configUrls.map(function(configUrl) {\n var interpolatedUrl = (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.interpolateUrl)(configUrl);\n return fetch(interpolatedUrl).then(function(res) {\n return res.json();\n }).then(function(config) {\n return {\n name: configUrl,\n value: config\n };\n }).catch(function(err) {\n console.error('Loading the config from \"'.concat(configUrl, '\" failed.'), err);\n return {\n name: configUrl,\n value: {}\n };\n });\n }));\n return function() {\n return loadingConfigs.then(loadConfigs);\n };\n}\nfunction showNotifications() {\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.renderInlineNotifications)(document.querySelector(\".omrs-inline-notifications-container\"));\n return;\n}\nfunction showActionableNotifications() {\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.renderActionableNotifications)(document.querySelector(\".omrs-actionable-notifications-container\"));\n}\nfunction showToasts() {\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.renderToasts)(document.querySelector(\".omrs-toasts-container\"));\n}\nfunction showModals() {\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.renderModals)(document.querySelector(\".omrs-modals-container\"));\n}\nfunction showLoadingSpinner() {\n return (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.renderLoadingSpinner)(document.body);\n}\n/**\n * Registers the extensions coming from the app shell itself.\n */ function registerCoreExtensions() {\n var extensions = (0,_ui__WEBPACK_IMPORTED_MODULE_4__.getCoreExtensions)();\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = extensions[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var extension = _step.value;\n (0,_apps__WEBPACK_IMPORTED_MODULE_2__.tryRegisterExtension)(_ui__WEBPACK_IMPORTED_MODULE_4__.appName, extension);\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}\nfunction setupOffline() {\n return _setupOffline.apply(this, arguments);\n}\nfunction _setupOffline() {\n _setupOffline = _async_to_generator(function() {\n var error;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n _state.trys.push([\n 0,\n 3,\n ,\n 4\n ]);\n return [\n 4,\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.registerOmrsServiceWorker)(\"\".concat(window.getOpenmrsSpaBase(), \"service-worker.js\"))\n ];\n case 1:\n _state.sent();\n return [\n 4,\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.activateOfflineCapability)()\n ];\n case 2:\n _state.sent();\n setupOfflineStaticDependencyPrecaching();\n return [\n 3,\n 4\n ];\n case 3:\n error = _state.sent();\n console.error(\"Error while setting up offline mode.\", error);\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.showNotification)({\n kind: \"error\",\n title: \"Offline Setup Error\",\n description: error.message\n });\n return [\n 3,\n 4\n ];\n case 4:\n return [\n 2\n ];\n }\n });\n });\n return _setupOffline.apply(this, arguments);\n}\nfunction setupOfflineStaticDependencyPrecaching() {\n var precacheDelay = 1000 * 60 * 5;\n var lastPrecache = null;\n subscribeOnlineAndLoginChange(function(online, hasLoggedInUser) {\n var hasExceededPrecacheDelay = !lastPrecache || new Date().getTime() - lastPrecache.getTime() > precacheDelay;\n if (hasLoggedInUser && online && hasExceededPrecacheDelay) {\n lastPrecache = new Date();\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.dispatchPrecacheStaticDependencies)();\n }\n });\n}\nfunction subscribeOnlineAndLoginChange(cb) {\n var isOnline = false;\n var hasLoggedInUser = false;\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.getCurrentUser)({\n includeAuthStatus: false\n }).subscribe(function(user) {\n hasLoggedInUser = !!user;\n cb(isOnline, hasLoggedInUser);\n });\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.subscribeConnectivity)(function(param) {\n var online = param.online;\n isOnline = online;\n cb(online, hasLoggedInUser);\n });\n}\nfunction precacheGlobalStaticDependencies() {\n return _precacheGlobalStaticDependencies.apply(this, arguments);\n}\nfunction _precacheGlobalStaticDependencies() {\n _precacheGlobalStaticDependencies = _async_to_generator(function() {\n var sessionPathUrl;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n return [\n 4,\n precacheImportMap()\n ];\n case 1:\n _state.sent();\n sessionPathUrl = new URL(\"\".concat(window.openmrsBase, \"/ws/rest/v1/session\"), window.location.origin).href;\n return [\n 4,\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.messageOmrsServiceWorker)({\n type: \"registerDynamicRoute\",\n url: sessionPathUrl,\n strategy: \"network-first\"\n })\n ];\n case 2:\n _state.sent();\n return [\n 4,\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.openmrsFetch)(\"/ws/rest/v1/session\").catch(function(e) {\n return console.warn(\"Failed to precache the user session data from the app shell. MFs depending on this data may run into problems while offline.\", e);\n })\n ];\n case 3:\n _state.sent();\n return [\n 2\n ];\n }\n });\n });\n return _precacheGlobalStaticDependencies.apply(this, arguments);\n}\nfunction precacheImportMap() {\n return _precacheImportMap.apply(this, arguments);\n}\nfunction _precacheImportMap() {\n _precacheImportMap = _async_to_generator(function() {\n var importMap;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n return [\n 4,\n window.importMapOverrides.getCurrentPageMap()\n ];\n case 1:\n importMap = _state.sent();\n return [\n 4,\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.messageOmrsServiceWorker)({\n type: \"onImportMapChanged\",\n importMap: importMap\n })\n ];\n case 2:\n _state.sent();\n return [\n 2\n ];\n }\n });\n });\n return _precacheImportMap.apply(this, arguments);\n}\nfunction setupOfflineCssClasses() {\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.subscribeConnectivity)(function(param) {\n var online = param.online;\n var body = document.querySelector(\"body\");\n if (online) {\n body.classList.remove(\"omrs-offline\");\n } else {\n body.classList.add(\"omrs-offline\");\n }\n });\n}\nfunction run(configUrls, offline) {\n var closeLoading = showLoadingSpinner();\n var provideConfigs = createConfigLoader(configUrls);\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.integrateBreakpoints)();\n showToasts();\n showModals();\n showNotifications();\n showActionableNotifications();\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.createAppState)({});\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.subscribeNotificationShown)(_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.showNotification);\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.subscribeActionableNotificationShown)(_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.showActionableNotification);\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.subscribeToastShown)(_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.showToast);\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.subscribePrecacheStaticDependencies)(precacheGlobalStaticDependencies);\n (0,_openmrs_esm_framework_src_internal__WEBPACK_IMPORTED_MODULE_1__.setupApiModule)();\n registerCoreExtensions();\n return setupApps().then(_apps__WEBPACK_IMPORTED_MODULE_2__.finishRegisteringAllApps).then(setupOfflineCssClasses).then(provideConfigs).then(runShell).catch(handleInitFailure).then(closeLoading).then(offline ? setupOffline : undefined).then(preloadScripts);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvcnVuLnRzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQXFEO0FBK0JSO0FBSzdCO0FBQ3FCO0FBQ2E7QUFFbEQsWUFBWTtBQUNaLHFFQUFxRTtBQUNyRSxpQ0FBaUM7QUFDakMsSUFBTW1DLHdCQUF3QkMsT0FBTztTQVF0QkM7V0FBQUE7O1NBQUFBO0lBQUFBLGFBTmY7Ozs7O0NBS0MsR0FDRCwrQkFBMkI7WUFDbkJDLFlBSUFDLFVBQ0dDLEdBMEJIQyxRQUtBQyxTQUNBQzs7OztvQkFyQ0FMLGFBQWFNLFNBQVNDLGdCQUFnQixDQUMxQztvQkFHSU47b0JBQ04sSUFBU0MsSUFBSSxHQUFHQSxJQUFJRixXQUFXUSxNQUFNLEVBQUVOLElBQUs7d0JBQzFDRCxTQUFTUSxJQUFJLENBQ1g7dUNBQUMsNkJBQU9DLFdBQWM7b0NBQ2hCUCxRQU9LUSxHQUdIRDs7Ozs0Q0FWRlAsU0FBb0NTOzs7Ozs7Ozs7aURBRWxDRixVQUFVRyxXQUFXLEVBQXJCSDs7Ozs0Q0FDRlAsU0FBU1csS0FBS0MsS0FBSyxDQUFDTCxVQUFVRyxXQUFXOzs7Ozs7aURBQ2hDSCxVQUFVTSxHQUFHLEVBQWJOOzs7OzRDQUNDOztnREFBTXZCLGlGQUFZQSxDQUFnQnVCLFVBQVVNLEdBQUc7Ozs0Q0FBekRiLFNBQVMsY0FBbURjLElBQUk7Ozs7Ozs7OzRDQUUzRE47NENBQ1BPLFFBQVFDLEtBQUssQ0FDWCwwQ0FFQyxPQURDVCxDQUFBQSxpQkFBQUEsVUFBVU0sR0FBRyxjQUFiTiw0QkFBQUEsaUJBQWlCLHlCQUF5QixHQUU1Q0M7NENBR0Y7O2dEQUFPLENBQUM7Ozs0Q0FHVjs7Z0RBQU9TLFFBQVFDLE9BQU8sQ0FBQ2xCLG1CQUFBQSxvQkFBQUEsU0FBVSxDQUFDLENBQUM7Ozs7NEJBQ3JDOzRDQXBCUU87Ozs2QkFvQkxWLFdBQVdzQixJQUFJLENBQUNwQjtvQkFFdkI7b0JBRWdCOzt3QkFBTWtCLFFBQVFHLEdBQUcsQ0FBQ3RCOzs7b0JBQTVCRSxTQUFTLGNBQThCcUIsTUFBTSxDQUNqRCxTQUFDQyxtQkFBbUJ0QjsrQkFBWSxtQkFBS3NCLG1CQUFzQnRCO3VCQUMzRCxDQUFDO29CQUdHQztvQkFDQUMsdUJBQXVCcUIsT0FBT0MsT0FBTyxDQUFDeEIsUUFBUXlCLEdBQUc7bUNBQ3JELG9DQUE0Qjt3Q0FBcEJDLFFBQVExQjs7cUVBQVIwQixvQkFBUTFCO2dDQUNkQyxRQUFRSyxJQUFJO29DQUFFb0I7b0NBQVExQjs7Z0NBQ3RCWCxrREFBV0EsQ0FBQ3FDLFFBQVExQjs7Ozs7d0JBQ3RCOzs7OztvQkFHRjJCLE1BQU0sQ0FBQ2pDLHNCQUFzQixHQUFHdUIsUUFBUUcsR0FBRyxDQUFDbEI7b0JBQzVDeUIsT0FBT0MsZ0JBQWdCLEdBQUczQjs7Ozs7O0lBQzVCO1dBL0NlTDs7U0FvREFpQyxZQUFZQyxPQUErQztXQUEzREQ7O1NBQUFBO0lBQUFBLGVBSGY7O0NBRUMsR0FDRCw2QkFBMkJDLE9BQStDLEVBQUU7WUFDckUsZ0ZBQU1DOztZQUFOOztnQkFBTCxJQUFLLFlBQWdCRCw4QkFBaEIsK0ZBQXlCO29CQUFuQkMsU0FBTjtvQkFDSG5FLDRFQUFPQSxDQUFDbUUsT0FBT0MsS0FBSyxFQUFFRCxPQUFPRSxJQUFJO2dCQUNuQzs7Z0JBRks7Z0JBQUE7Ozt5QkFBQTt3QkFBQTs7O3dCQUFBOzhCQUFBOzs7Ozs7OztJQUdQO1dBSmVKOztBQU1mOztDQUVDLEdBQ0QsU0FBU0ssc0JBQXNCO0lBQzdCLElBQU1DLFNBQVNDLFVBQVVDLE1BQU07SUFDL0IsZ0VBQWdFO0lBQ2hFN0UsNERBQWdCQTtJQUVoQlksZ0dBQTJCQSxDQUFDK0Q7SUFDNUJwRSw4RUFBU0EsQ0FBQztRQUNSdUUsVUFBVSxJQUFJO1FBQ2RDLGFBQWEsZUFBNkMsT0FBOUJKLFNBQVMsV0FBVyxTQUFTO1FBQ3pESyxPQUFPO1FBQ1BDLE1BQU1OLFNBQVMsWUFBWSxTQUFTO0lBQ3RDO0FBQ0Y7QUFFQTs7Q0FFQyxHQUNELFNBQVNPLFdBQVc7SUFDbEJmLE9BQU9nQixnQkFBZ0IsQ0FBQyxXQUFXVDtJQUNuQ1AsT0FBT2dCLGdCQUFnQixDQUFDLFVBQVVUO0lBQ2xDLE9BQU8zQyxrREFBU0EsR0FDYnFELEtBQUssQ0FBQyxTQUFDQztlQUFROUIsUUFBUUMsS0FBSyxDQUFFLHFDQUFvQzZCO09BQ2xFQyxJQUFJLENBQUM7ZUFBTXZGLGlEQUFLQTs7QUFDckI7U0FFZXdGO1dBQUFBOztTQUFBQTtJQUFBQSxrQkFBZiwrQkFBZ0M7WUFDUixNQUFiQzs7OztvQkFBYTs7d0JBQU0vQixRQUFRRyxHQUFHOzRCQUNyQ08sTUFBTSxDQUFDakMsc0JBQXNCOzRCQUM3QlIsd0ZBQW1CQTs7OztvQkFGQzt3QkFBQTs7d0JBQWI4RCxZQUFhO29CQUt0QnJCLE9BQU9DLGdCQUFnQixDQUFDSCxHQUFHO21DQUFDLG9DQUFvQjt3Q0FBWkM7O3FFQUFBQTtnQ0FDbEN2QyxrRkFBYUEsQ0FBQ3VDLFFBQVFqQixXQUFXO29DQUFFdUMsV0FBQUE7Z0NBQVU7Ozs7O3dCQUMvQzs7Ozs7Ozs7OztJQUNGO1dBVGVEOztBQVdmLFNBQVNFLGtCQUFrQnpDLENBQVEsRUFBRTtJQUNuQ08sUUFBUUMsS0FBSyxDQUFDUjtJQUNkMEMscUJBQXFCMUM7QUFDdkI7QUFFQSxTQUFTMEMscUJBQXFCMUMsQ0FBUyxFQUFFO0lBQ3ZDLElBQU0yQyxXQUFXaEQsU0FBU2lELGFBQWEsQ0FBc0I7SUFFN0QsSUFBSUQsVUFBVTtRQUNaLElBQU1FLFdBQVdGLFNBQVNHLE9BQU8sQ0FBQ0MsU0FBUyxDQUFDLElBQUk7UUFDaEQsSUFBTUMsbUJBQW1CSCxTQUFTRCxhQUFhLENBQUM7UUFFaEQsSUFBSUksa0JBQWtCO1lBQ3BCQSxpQkFBaUI5QyxXQUFXLEdBQzFCRixDQUFBQSxjQUFBQSxlQUFBQSxLQUFBQSxJQUFBQSxFQUFHaUQsT0FBTyxLQUFJO1FBQ2xCLENBQUM7UUFFRCxJQUNFQyxhQUFhQyxPQUFPLENBQUMsdUJBQ3JCcEMsT0FBT3FDLElBQUksQ0FBQ0YsY0FBY0csSUFBSSxDQUFDLFNBQUNDO21CQUM5QkEsRUFBRUMsVUFBVSxDQUFDO1lBRWY7WUFDQSxJQUFNQyx3QkFBd0JYLHFCQUFBQSxzQkFBQUEsS0FBQUEsSUFBQUEsU0FBVUQsYUFBYSxDQUFDO1lBQ3RELElBQUlZLHVCQUF1QjtnQkFDekIsSUFBTUMsMEJBQTBCOUQsU0FBUytELGFBQWEsQ0FBQztnQkFDdkRELHdCQUF3QkUsU0FBUyxHQUFHO2dCQUNwQ0Ysd0JBQXdCRyxTQUFTLEdBQUc7Z0JBQ3BDSCx3QkFBd0JJLE9BQU8sR0FBR0M7Z0JBQ2xDTixzQkFBc0JPLFdBQVcsQ0FBQ047WUFDcEMsQ0FBQztRQUNILENBQUM7UUFFRDlELFNBQVNxRSxJQUFJLENBQUNELFdBQVcsQ0FBQ2xCO0lBQzVCLENBQUM7QUFDSDtBQUVBLFNBQVNpQixvQkFBb0I7UUFDdEI7O1FBQUwsUUFBSyxZQUFhL0MsT0FBT3FDLElBQUksQ0FBQ0Ysa0NBQXpCLHdHQUF3QztZQUF4QyxJQUFNZSxNQUFOO1lBQ0gsSUFDRUEsSUFBSVYsVUFBVSxDQUFDLDJCQUNmLENBQUM7Z0JBQUM7Z0JBQTZCO2FBQWdDLENBQUNXLFFBQVEsQ0FDdEVELE1BRUY7Z0JBQ0FmLGFBQWFpQixVQUFVLENBQUNGO1lBQzFCLENBQUM7UUFDSDs7UUFUSztRQUFBOzs7aUJBQUE7Z0JBQUE7OztnQkFBQTtzQkFBQTs7OztJQVVMRyxTQUFTQyxNQUFNO0FBQ2pCO0FBRUEsU0FBU0MsbUJBQW1CQyxVQUF5QixFQUFFO0lBQ3JELElBQU1DLGlCQUFpQi9ELFFBQVFHLEdBQUcsQ0FDaEMyRCxXQUFXdEQsR0FBRyxDQUFDLFNBQUN3RCxXQUFjO1FBQzVCLElBQU1DLGtCQUFrQmpHLG1GQUFjQSxDQUFDZ0c7UUFDdkMsT0FBT0UsTUFBTUQsaUJBQ1ZwQyxJQUFJLENBQUMsU0FBQ3NDO21CQUFRQSxJQUFJQyxJQUFJO1dBQ3RCdkMsSUFBSSxDQUFDLFNBQUNmO21CQUFZO2dCQUNqQkUsTUFBTWdEO2dCQUNOakQsT0FBT0Q7WUFDVDtXQUNDYSxLQUFLLENBQUMsU0FBQ0MsS0FBUTtZQUNkOUIsUUFBUUMsS0FBSyxDQUFDLDRCQUFzQyxPQUFWaUUsV0FBVSxjQUFZcEM7WUFDaEUsT0FBTztnQkFDTFosTUFBTWdEO2dCQUNOakQsT0FBTyxDQUFDO1lBQ1Y7UUFDRjtJQUNKO0lBRUYsT0FBTztlQUFNZ0QsZUFBZWxDLElBQUksQ0FBQ2pCOztBQUNuQztBQUVBLFNBQVN5RCxvQkFBb0I7SUFDM0J0SCw4RkFBeUJBLENBQ3ZCbUMsU0FBU2lELGFBQWEsQ0FBQztJQUV6QjtBQUNGO0FBRUEsU0FBU21DLDhCQUE4QjtJQUNyQ3RILGtHQUE2QkEsQ0FDM0JrQyxTQUFTaUQsYUFBYSxDQUFDO0FBRTNCO0FBRUEsU0FBU29DLGFBQWE7SUFDcEJ0SCxpRkFBWUEsQ0FBQ2lDLFNBQVNpRCxhQUFhLENBQUM7QUFDdEM7QUFFQSxTQUFTcUMsYUFBYTtJQUNwQjdHLGlGQUFZQSxDQUFDdUIsU0FBU2lELGFBQWEsQ0FBQztBQUN0QztBQUVBLFNBQVNzQyxxQkFBcUI7SUFDNUIsT0FBT2hJLHlGQUFvQkEsQ0FBQ3lDLFNBQVNxRSxJQUFJO0FBQzNDO0FBRUE7O0NBRUMsR0FDRCxTQUFTbUIseUJBQXlCO0lBQ2hDLElBQU1DLGFBQWFuRyxzREFBaUJBO1FBQy9COztRQUFMLFFBQUssWUFBbUJtRywrQkFBbkIsd0dBQStCO1lBQS9CLElBQU1DLFlBQU47WUFDSHZHLDJEQUFvQkEsQ0FBQ0Usd0NBQU9BLEVBQUVxRztRQUNoQzs7UUFGSztRQUFBOzs7aUJBQUE7Z0JBQUE7OztnQkFBQTtzQkFBQTs7OztBQUdQO1NBRWVDO1dBQUFBOztTQUFBQTtJQUFBQSxnQkFBZiwrQkFBOEI7WUFPbkI5RTs7Ozs7Ozs7OztvQkFMUDs7d0JBQU14Qyw4RkFBeUJBLENBQzdCLEdBQThCLE9BQTNCbUQsT0FBT29FLGlCQUFpQixJQUFHOzs7b0JBRGhDO29CQUdBOzt3QkFBTWpILDhGQUF5QkE7OztvQkFBL0I7b0JBQ0FrSDs7Ozs7O29CQUNPaEY7b0JBQ1BELFFBQVFDLEtBQUssQ0FBQyx3Q0FBd0NBO29CQUN0RG5ELHFGQUFnQkEsQ0FBQzt3QkFDZjRFLE1BQU07d0JBQ05ELE9BQU87d0JBQ1BELGFBQWF2QixNQUFNeUMsT0FBTztvQkFDNUI7Ozs7Ozs7Ozs7O0lBRUo7V0FmZXFDOztBQWlCZixTQUFTRSx5Q0FBeUM7SUFDaEQsSUFBTUMsZ0JBQWdCLE9BQU8sS0FBSztJQUNsQyxJQUFJQyxlQUE0QixJQUFJO0lBRXBDQyw4QkFBOEIsU0FBQ2hFLFFBQVFpRSxpQkFBb0I7UUFDekQsSUFBTUMsMkJBQ0osQ0FBQ0gsZ0JBQ0QsSUFBSUksT0FBT0MsT0FBTyxLQUFLTCxhQUFhSyxPQUFPLEtBQUtOO1FBRWxELElBQUlHLG1CQUFtQmpFLFVBQVVrRSwwQkFBMEI7WUFDekRILGVBQWUsSUFBSUk7WUFDbkJ6SCx1R0FBa0NBO1FBQ3BDLENBQUM7SUFDSDtBQUNGO0FBRUEsU0FBU3NILDhCQUNQSyxFQUF1RCxFQUN2RDtJQUNBLElBQUlDLFdBQVcsS0FBSztJQUNwQixJQUFJTCxrQkFBa0IsS0FBSztJQUUzQnpILG1GQUFjQSxDQUFDO1FBQUUrSCxtQkFBbUIsS0FBSztJQUFDLEdBQUdDLFNBQVMsQ0FBQyxTQUFDQyxNQUFTO1FBQy9EUixrQkFBa0IsQ0FBQyxDQUFDUTtRQUNwQkosR0FBR0MsVUFBVUw7SUFDZjtJQUVBMUgsMEZBQXFCQSxDQUFDLGdCQUFnQjtZQUFieUQsZUFBQUE7UUFDdkJzRSxXQUFXdEU7UUFDWHFFLEdBQUdyRSxRQUFRaUU7SUFDYjtBQUNGO1NBRWVTO1dBQUFBOztTQUFBQTtJQUFBQSxvQ0FBZiwrQkFBa0Q7WUFLMUNDOzs7O29CQUpOOzt3QkFBTUM7OztvQkFBTjtvQkFJTUQsaUJBQWlCLElBQUlFLElBQ3pCLEdBQXNCLE9BQW5CckYsT0FBT3NGLFdBQVcsRUFBQyx3QkFDdEJ0RixPQUFPaUQsUUFBUSxDQUFDc0MsTUFBTSxFQUN0QkMsSUFBSTtvQkFFTjs7d0JBQU0xSSw2RkFBd0JBLENBQUM7NEJBQzdCMkksTUFBTTs0QkFDTkMsS0FBS1A7NEJBQ0xRLFVBQVU7d0JBQ1o7OztvQkFKQTtvQkFNQTs7d0JBQU10SSxpRkFBWUEsQ0FBQyx1QkFBdUI0RCxLQUFLLENBQUMsU0FBQ3BDO21DQUMvQ08sUUFBUXdHLElBQUksQ0FDVixnSUFDQS9HOzs7O29CQUhKOzs7Ozs7SUFNRjtXQXRCZXFHOztTQXdCQUU7V0FBQUE7O1NBQUFBO0lBQUFBLHFCQUFmLCtCQUFtQztZQUMzQi9EOzs7O29CQUFZOzt3QkFBTXJCLE9BQU82RixrQkFBa0IsQ0FBQ0MsaUJBQWlCOzs7b0JBQTdEekUsWUFBWTtvQkFDbEI7O3dCQUFNdkUsNkZBQXdCQSxDQUFDOzRCQUM3QjJJLE1BQU07NEJBQ05wRSxXQUFBQTt3QkFDRjs7O29CQUhBOzs7Ozs7SUFJRjtXQU5lK0Q7O0FBUWYsU0FBU1cseUJBQXlCO0lBQ2hDaEosMEZBQXFCQSxDQUFDLGdCQUFnQjtZQUFieUQsZUFBQUE7UUFDdkIsSUFBTXFDLE9BQU9yRSxTQUFTaUQsYUFBYSxDQUFDO1FBQ3BDLElBQUlqQixRQUFRO1lBQ1ZxQyxLQUFLbUQsU0FBUyxDQUFDQyxNQUFNLENBQUM7UUFDeEIsT0FBTztZQUNMcEQsS0FBS21ELFNBQVMsQ0FBQ0UsR0FBRyxDQUFDO1FBQ3JCLENBQUM7SUFDSDtBQUNGO0FBRU8sU0FBU0MsSUFBSS9DLFVBQXlCLEVBQUVnRCxPQUFnQixFQUFFO0lBQy9ELElBQU1DLGVBQWV0QztJQUNyQixJQUFNdUMsaUJBQWlCbkQsbUJBQW1CQztJQUUxQzVHLHlGQUFvQkE7SUFDcEJxSDtJQUNBQztJQUNBSDtJQUNBQztJQUNBNUgsbUZBQWNBLENBQUMsQ0FBQztJQUNoQlUsK0ZBQTBCQSxDQUFDUixpRkFBZ0JBO0lBQzNDUyx5R0FBb0NBLENBQUNSLDJGQUEwQkE7SUFDL0RTLHdGQUFtQkEsQ0FBQ1IsMEVBQVNBO0lBQzdCZ0Isd0dBQW1DQSxDQUFDOEg7SUFDcENwSixtRkFBY0E7SUFDZGtJO0lBRUEsT0FBTy9GLFlBQ0prRCxJQUFJLENBQUMxRCwyREFBd0JBLEVBQzdCMEQsSUFBSSxDQUFDNEUsd0JBQ0w1RSxJQUFJLENBQUNtRixnQkFDTG5GLElBQUksQ0FBQ0osVUFDTEUsS0FBSyxDQUFDSyxtQkFDTkgsSUFBSSxDQUFDa0YsY0FDTGxGLElBQUksQ0FBQ2lGLFVBQVVqQyxlQUFlckYsU0FBUyxFQUN2Q3FDLElBQUksQ0FBQ0M7QUFDVixDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQG9wZW5tcnMvZXNtLWFwcC1zaGVsbC8uL3NyYy9ydW4udHM/YmMyNiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzdGFydCwgdHJpZ2dlckFwcENoYW5nZSB9IGZyb20gXCJzaW5nbGUtc3BhXCI7XG5pbXBvcnQge1xuICBzZXR1cEFwaU1vZHVsZSxcbiAgcmVuZGVyTG9hZGluZ1NwaW5uZXIsXG4gIGNyZWF0ZUFwcFN0YXRlLFxuICBDb25maWcsXG4gIHByb3ZpZGUsXG4gIHNob3dOb3RpZmljYXRpb24sXG4gIHNob3dBY3Rpb25hYmxlTm90aWZpY2F0aW9uLFxuICBzaG93VG9hc3QsXG4gIHJlbmRlcklubGluZU5vdGlmaWNhdGlvbnMsXG4gIHJlbmRlckFjdGlvbmFibGVOb3RpZmljYXRpb25zLFxuICByZW5kZXJUb2FzdHMsXG4gIGludGVncmF0ZUJyZWFrcG9pbnRzLFxuICBkaXNwYXRjaENvbm5lY3Rpdml0eUNoYW5nZWQsXG4gIHN1YnNjcmliZU5vdGlmaWNhdGlvblNob3duLFxuICBzdWJzY3JpYmVBY3Rpb25hYmxlTm90aWZpY2F0aW9uU2hvd24sXG4gIHN1YnNjcmliZVRvYXN0U2hvd24sXG4gIHJlZ2lzdGVyT21yc1NlcnZpY2VXb3JrZXIsXG4gIG1lc3NhZ2VPbXJzU2VydmljZVdvcmtlcixcbiAgc3Vic2NyaWJlQ29ubmVjdGl2aXR5LFxuICBnZXRDdXJyZW50VXNlcixcbiAgcmVuZGVyTW9kYWxzLFxuICBkaXNwYXRjaFByZWNhY2hlU3RhdGljRGVwZW5kZW5jaWVzLFxuICBhY3RpdmF0ZU9mZmxpbmVDYXBhYmlsaXR5LFxuICBzdWJzY3JpYmVQcmVjYWNoZVN0YXRpY0RlcGVuZGVuY2llcyxcbiAgb3Blbm1yc0ZldGNoLFxuICBpbnRlcnBvbGF0ZVVybCxcbiAgT3Blbm1yc1JvdXRlcyxcbiAgZ2V0Q3VycmVudEltcG9ydE1hcCxcbiAgaW1wb3J0RHluYW1pYyxcbn0gZnJvbSBcIkBvcGVubXJzL2VzbS1mcmFtZXdvcmsvc3JjL2ludGVybmFsXCI7XG5pbXBvcnQge1xuICBmaW5pc2hSZWdpc3RlcmluZ0FsbEFwcHMsXG4gIHJlZ2lzdGVyQXBwLFxuICB0cnlSZWdpc3RlckV4dGVuc2lvbixcbn0gZnJvbSBcIi4vYXBwc1wiO1xuaW1wb3J0IHsgc2V0dXBJMThuIH0gZnJvbSBcIi4vbG9jYWxlXCI7XG5pbXBvcnQgeyBhcHBOYW1lLCBnZXRDb3JlRXh0ZW5zaW9ucyB9IGZyb20gXCIuL3VpXCI7XG5cbi8vIEBpbnRlcm5hbFxuLy8gdXNlZCB0byB0cmFjayB3aGVuIHRoZSB3aW5kb3cuaW5zdGFsbGVkTW9kdWxlcyBnbG9iYWwgaXMgZmluYWxpc2VkXG4vLyBzbyB3ZSBjYW4gcHJlLWxvYWQgYWxsIG1vZHVsZXNcbmNvbnN0IFJFR0lTVFJBVElPTl9QUk9NSVNFUyA9IFN5bWJvbChcIm9wZW5tcnNfcmVnaXN0cmF0aW9uX3Byb21pc2VzXCIpO1xuXG4vKipcbiAqIFNldHMgdXAgdGhlIGZyb250ZW5kIG1vZHVsZXMgKGFwcHMpLiBVc2VzIHRoZSBkZWZpbmVkIGV4cG9ydFxuICogZnJvbSB0aGUgcm9vdCBtb2R1bGVzIG9mIHRoZSBhcHBzLiBUaGlzIGlzIGRvbmUgYnkgcmVhZGluZyB0aGVcbiAqIGxpc3Qgb2YgYXBwcyBmcm9tIHRoZSByb3V0ZXMucmVnaXN0cnkuanNvbiBmaWxlLCB3aGljaCBzZXJ2ZXNcbiAqIGFzIHRoZSByZWdpc3RyeSBvZiBhbGwgYXBwcyBpbiB0aGUgYXBwbGljYXRpb24uXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHNldHVwQXBwcygpIHtcbiAgY29uc3Qgc2NyaXB0VGFncyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGw8SFRNTFNjcmlwdEVsZW1lbnQ+KFxuICAgIFwic2NyaXB0W3R5cGU9J29wZW5tcnMtcm91dGVzJ11cIlxuICApO1xuXG4gIGNvbnN0IHByb21pc2VzOiBBcnJheTxQcm9taXNlPE9wZW5tcnNSb3V0ZXM+PiA9IFtdO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHNjcmlwdFRhZ3MubGVuZ3RoOyBpKyspIHtcbiAgICBwcm9taXNlcy5wdXNoKFxuICAgICAgKGFzeW5jIChzY3JpcHRUYWcpID0+IHtcbiAgICAgICAgbGV0IHJvdXRlczogT3Blbm1yc1JvdXRlcyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBpZiAoc2NyaXB0VGFnLnRleHRDb250ZW50KSB7XG4gICAgICAgICAgICByb3V0ZXMgPSBKU09OLnBhcnNlKHNjcmlwdFRhZy50ZXh0Q29udGVudCkgYXMgT3Blbm1yc1JvdXRlcztcbiAgICAgICAgICB9IGVsc2UgaWYgKHNjcmlwdFRhZy5zcmMpIHtcbiAgICAgICAgICAgIHJvdXRlcyA9IChhd2FpdCBvcGVubXJzRmV0Y2g8T3Blbm1yc1JvdXRlcz4oc2NyaXB0VGFnLnNyYykpLmRhdGE7XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgIGBDYXVnaHQgZXJyb3Igd2hpbGUgbG9hZGluZyByb3V0ZXMgZnJvbSAke1xuICAgICAgICAgICAgICBzY3JpcHRUYWcuc3JjID8/IFwiSlNPTiBzY3JpcHQgdGFnIGNvbnRlbnRcIlxuICAgICAgICAgICAgfWAsXG4gICAgICAgICAgICBlXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIHJldHVybiB7fTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocm91dGVzID8/IHt9KTtcbiAgICAgIH0pKHNjcmlwdFRhZ3MuaXRlbShpKSlcbiAgICApO1xuICB9XG5cbiAgY29uc3Qgcm91dGVzID0gKGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKSkucmVkdWNlKFxuICAgIChhY2N1bXVsYXRlZFJvdXRlcywgcm91dGVzKSA9PiAoeyAuLi5hY2N1bXVsYXRlZFJvdXRlcywgLi4ucm91dGVzIH0pLFxuICAgIHt9XG4gICk7XG5cbiAgY29uc3QgbW9kdWxlczogdHlwZW9mIHdpbmRvdy5pbnN0YWxsZWRNb2R1bGVzID0gW107XG4gIGNvbnN0IHJlZ2lzdHJhdGlvblByb21pc2VzID0gT2JqZWN0LmVudHJpZXMocm91dGVzKS5tYXAoXG4gICAgYXN5bmMgKFttb2R1bGUsIHJvdXRlc10pID0+IHtcbiAgICAgIG1vZHVsZXMucHVzaChbbW9kdWxlLCByb3V0ZXNdKTtcbiAgICAgIHJlZ2lzdGVyQXBwKG1vZHVsZSwgcm91dGVzKTtcbiAgICB9XG4gICk7XG5cbiAgd2luZG93W1JFR0lTVFJBVElPTl9QUk9NSVNFU10gPSBQcm9taXNlLmFsbChyZWdpc3RyYXRpb25Qcm9taXNlcyk7XG4gIHdpbmRvdy5pbnN0YWxsZWRNb2R1bGVzID0gbW9kdWxlcztcbn1cblxuLyoqXG4gKiBMb2FkcyB0aGUgcHJvdmlkZWQgY29uZmlndXJhdGlvbnMgYW5kIHNldHMgdGhlbSBpbiB0aGUgc3lzdGVtLlxuICovXG5hc3luYyBmdW5jdGlvbiBsb2FkQ29uZmlncyhjb25maWdzOiBBcnJheTx7IG5hbWU6IHN0cmluZzsgdmFsdWU6IENvbmZpZyB9Pikge1xuICBmb3IgKGNvbnN0IGNvbmZpZyBvZiBjb25maWdzKSB7XG4gICAgcHJvdmlkZShjb25maWcudmFsdWUsIGNvbmZpZy5uYW1lKTtcbiAgfVxufVxuXG4vKipcbiAqIEludm9rZWQgd2hlbiB0aGUgY29ubmVjdGl2aXR5IGlzIGNoYW5nZWQuXG4gKi9cbmZ1bmN0aW9uIGNvbm5lY3Rpdml0eUNoYW5nZWQoKSB7XG4gIGNvbnN0IG9ubGluZSA9IG5hdmlnYXRvci5vbkxpbmU7XG4gIC8vIE5CIFdlIGRvIG5vdCB3YWl0IGZvciB0aGlzIHRvIGJlIGRvbmU7IGl0IGlzIHNpbXBseSBzY2hlZHVsZWRcbiAgdHJpZ2dlckFwcENoYW5nZSgpO1xuXG4gIGRpc3BhdGNoQ29ubmVjdGl2aXR5Q2hhbmdlZChvbmxpbmUpO1xuICBzaG93VG9hc3Qoe1xuICAgIGNyaXRpY2FsOiB0cnVlLFxuICAgIGRlc2NyaXB0aW9uOiBgQ29ubmVjdGlvbjogJHtvbmxpbmUgPyBcIm9ubGluZVwiIDogXCJvZmZsaW5lXCJ9YCxcbiAgICB0aXRsZTogXCJBcHBcIixcbiAgICBraW5kOiBvbmxpbmUgPyBcInN1Y2Nlc3NcIiA6IFwid2FybmluZ1wiLFxuICB9KTtcbn1cblxuLyoqXG4gKiBSdW5zIHRoZSBzaGVsbCBieSBpbXBvcnRpbmcgdGhlIHRyYW5zbGF0aW9ucyBhbmQgc3RhcnRpbmcgc2luZ2xlIFNQQS5cbiAqL1xuZnVuY3Rpb24gcnVuU2hlbGwoKSB7XG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwib2ZmbGluZVwiLCBjb25uZWN0aXZpdHlDaGFuZ2VkKTtcbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJvbmxpbmVcIiwgY29ubmVjdGl2aXR5Q2hhbmdlZCk7XG4gIHJldHVybiBzZXR1cEkxOG4oKVxuICAgIC5jYXRjaCgoZXJyKSA9PiBjb25zb2xlLmVycm9yKGBGYWlsZWQgdG8gaW5pdGlhbGl6ZSB0cmFuc2xhdGlvbnNgLCBlcnIpKVxuICAgIC50aGVuKCgpID0+IHN0YXJ0KCkpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBwcmVsb2FkU2NyaXB0cygpIHtcbiAgY29uc3QgWywgaW1wb3J0TWFwXSA9IGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICB3aW5kb3dbUkVHSVNUUkFUSU9OX1BST01JU0VTXSxcbiAgICBnZXRDdXJyZW50SW1wb3J0TWFwKCksXG4gIF0pO1xuXG4gIHdpbmRvdy5pbnN0YWxsZWRNb2R1bGVzLm1hcChhc3luYyAoW21vZHVsZV0pID0+IHtcbiAgICBpbXBvcnREeW5hbWljKG1vZHVsZSwgdW5kZWZpbmVkLCB7IGltcG9ydE1hcCB9KTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGhhbmRsZUluaXRGYWlsdXJlKGU6IEVycm9yKSB7XG4gIGNvbnNvbGUuZXJyb3IoZSk7XG4gIHJlbmRlckZhdGFsRXJyb3JQYWdlKGUpO1xufVxuXG5mdW5jdGlvbiByZW5kZXJGYXRhbEVycm9yUGFnZShlPzogRXJyb3IpIHtcbiAgY29uc3QgdGVtcGxhdGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yPEhUTUxUZW1wbGF0ZUVsZW1lbnQ+KFwiI2FwcC1lcnJvclwiKTtcblxuICBpZiAodGVtcGxhdGUpIHtcbiAgICBjb25zdCBmcmFnbWVudCA9IHRlbXBsYXRlLmNvbnRlbnQuY2xvbmVOb2RlKHRydWUpIGFzIERvY3VtZW50RnJhZ21lbnQ7XG4gICAgY29uc3QgbWVzc2FnZUNvbnRhaW5lciA9IGZyYWdtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLXZhcj1cIm1lc3NhZ2VcIl0nKTtcblxuICAgIGlmIChtZXNzYWdlQ29udGFpbmVyKSB7XG4gICAgICBtZXNzYWdlQ29udGFpbmVyLnRleHRDb250ZW50ID1cbiAgICAgICAgZT8ubWVzc2FnZSB8fCBcIk5vIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYXZhaWxhYmxlLlwiO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwib3Blbm1yczpkZXZ0b29sc1wiKSAmJlxuICAgICAgT2JqZWN0LmtleXMobG9jYWxTdG9yYWdlKS5zb21lKChrKSA9PlxuICAgICAgICBrLnN0YXJ0c1dpdGgoXCJpbXBvcnQtbWFwLW92ZXJyaWRlOlwiKVxuICAgICAgKVxuICAgICkge1xuICAgICAgY29uc3QgYXBwRXJyb3JBY3Rpb25CdXR0b25zID0gZnJhZ21lbnQ/LnF1ZXJ5U2VsZWN0b3IoXCIjYnV0dG9uc1wiKTtcbiAgICAgIGlmIChhcHBFcnJvckFjdGlvbkJ1dHRvbnMpIHtcbiAgICAgICAgY29uc3QgY2xlYXJEZXZPdmVycmlkZXNCdXR0b24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYnV0dG9uXCIpO1xuICAgICAgICBjbGVhckRldk92ZXJyaWRlc0J1dHRvbi5jbGFzc05hbWUgPSBcImNkcy0tYnRuXCI7XG4gICAgICAgIGNsZWFyRGV2T3ZlcnJpZGVzQnV0dG9uLmlubmVySFRNTCA9IFwiQ2xlYXIgZGV2IG92ZXJyaWRlc1wiO1xuICAgICAgICBjbGVhckRldk92ZXJyaWRlc0J1dHRvbi5vbmNsaWNrID0gY2xlYXJEZXZPdmVycmlkZXM7XG4gICAgICAgIGFwcEVycm9yQWN0aW9uQnV0dG9ucy5hcHBlbmRDaGlsZChjbGVhckRldk92ZXJyaWRlc0J1dHRvbik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChmcmFnbWVudCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gY2xlYXJEZXZPdmVycmlkZXMoKSB7XG4gIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKGxvY2FsU3RvcmFnZSkpIHtcbiAgICBpZiAoXG4gICAgICBrZXkuc3RhcnRzV2l0aChcImltcG9ydC1tYXAtb3ZlcnJpZGU6XCIpICYmXG4gICAgICAhW1wiaW1wb3J0LW1hcC1vdmVycmlkZTpyZWFjdFwiLCBcImltcG9ydC1tYXAtb3ZlcnJpZGU6cmVhY3QtZG9tXCJdLmluY2x1ZGVzKFxuICAgICAgICBrZXlcbiAgICAgIClcbiAgICApIHtcbiAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGtleSk7XG4gICAgfVxuICB9XG4gIGxvY2F0aW9uLnJlbG9hZCgpO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVDb25maWdMb2FkZXIoY29uZmlnVXJsczogQXJyYXk8c3RyaW5nPikge1xuICBjb25zdCBsb2FkaW5nQ29uZmlncyA9IFByb21pc2UuYWxsKFxuICAgIGNvbmZpZ1VybHMubWFwKChjb25maWdVcmwpID0+IHtcbiAgICAgIGNvbnN0IGludGVycG9sYXRlZFVybCA9IGludGVycG9sYXRlVXJsKGNvbmZpZ1VybCk7XG4gICAgICByZXR1cm4gZmV0Y2goaW50ZXJwb2xhdGVkVXJsKVxuICAgICAgICAudGhlbigocmVzKSA9PiByZXMuanNvbigpKVxuICAgICAgICAudGhlbigoY29uZmlnKSA9PiAoe1xuICAgICAgICAgIG5hbWU6IGNvbmZpZ1VybCxcbiAgICAgICAgICB2YWx1ZTogY29uZmlnLFxuICAgICAgICB9KSlcbiAgICAgICAgLmNhdGNoKChlcnIpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGBMb2FkaW5nIHRoZSBjb25maWcgZnJvbSBcIiR7Y29uZmlnVXJsfVwiIGZhaWxlZC5gLCBlcnIpO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBuYW1lOiBjb25maWdVcmwsXG4gICAgICAgICAgICB2YWx1ZToge30sXG4gICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgfSlcbiAgKTtcbiAgcmV0dXJuICgpID0+IGxvYWRpbmdDb25maWdzLnRoZW4obG9hZENvbmZpZ3MpO1xufVxuXG5mdW5jdGlvbiBzaG93Tm90aWZpY2F0aW9ucygpIHtcbiAgcmVuZGVySW5saW5lTm90aWZpY2F0aW9ucyhcbiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiLm9tcnMtaW5saW5lLW5vdGlmaWNhdGlvbnMtY29udGFpbmVyXCIpXG4gICk7XG4gIHJldHVybjtcbn1cblxuZnVuY3Rpb24gc2hvd0FjdGlvbmFibGVOb3RpZmljYXRpb25zKCkge1xuICByZW5kZXJBY3Rpb25hYmxlTm90aWZpY2F0aW9ucyhcbiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiLm9tcnMtYWN0aW9uYWJsZS1ub3RpZmljYXRpb25zLWNvbnRhaW5lclwiKVxuICApO1xufVxuXG5mdW5jdGlvbiBzaG93VG9hc3RzKCkge1xuICByZW5kZXJUb2FzdHMoZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIi5vbXJzLXRvYXN0cy1jb250YWluZXJcIikpO1xufVxuXG5mdW5jdGlvbiBzaG93TW9kYWxzKCkge1xuICByZW5kZXJNb2RhbHMoZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIi5vbXJzLW1vZGFscy1jb250YWluZXJcIikpO1xufVxuXG5mdW5jdGlvbiBzaG93TG9hZGluZ1NwaW5uZXIoKSB7XG4gIHJldHVybiByZW5kZXJMb2FkaW5nU3Bpbm5lcihkb2N1bWVudC5ib2R5KTtcbn1cblxuLyoqXG4gKiBSZWdpc3RlcnMgdGhlIGV4dGVuc2lvbnMgY29taW5nIGZyb20gdGhlIGFwcCBzaGVsbCBpdHNlbGYuXG4gKi9cbmZ1bmN0aW9uIHJlZ2lzdGVyQ29yZUV4dGVuc2lvbnMoKSB7XG4gIGNvbnN0IGV4dGVuc2lvbnMgPSBnZXRDb3JlRXh0ZW5zaW9ucygpO1xuICBmb3IgKGNvbnN0IGV4dGVuc2lvbiBvZiBleHRlbnNpb25zKSB7XG4gICAgdHJ5UmVnaXN0ZXJFeHRlbnNpb24oYXBwTmFtZSwgZXh0ZW5zaW9uKTtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBzZXR1cE9mZmxpbmUoKSB7XG4gIHRyeSB7XG4gICAgYXdhaXQgcmVnaXN0ZXJPbXJzU2VydmljZVdvcmtlcihcbiAgICAgIGAke3dpbmRvdy5nZXRPcGVubXJzU3BhQmFzZSgpfXNlcnZpY2Utd29ya2VyLmpzYFxuICAgICk7XG4gICAgYXdhaXQgYWN0aXZhdGVPZmZsaW5lQ2FwYWJpbGl0eSgpO1xuICAgIHNldHVwT2ZmbGluZVN0YXRpY0RlcGVuZGVuY3lQcmVjYWNoaW5nKCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgY29uc29sZS5lcnJvcihcIkVycm9yIHdoaWxlIHNldHRpbmcgdXAgb2ZmbGluZSBtb2RlLlwiLCBlcnJvcik7XG4gICAgc2hvd05vdGlmaWNhdGlvbih7XG4gICAgICBraW5kOiBcImVycm9yXCIsXG4gICAgICB0aXRsZTogXCJPZmZsaW5lIFNldHVwIEVycm9yXCIsXG4gICAgICBkZXNjcmlwdGlvbjogZXJyb3IubWVzc2FnZSxcbiAgICB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBzZXR1cE9mZmxpbmVTdGF0aWNEZXBlbmRlbmN5UHJlY2FjaGluZygpIHtcbiAgY29uc3QgcHJlY2FjaGVEZWxheSA9IDEwMDAgKiA2MCAqIDU7XG4gIGxldCBsYXN0UHJlY2FjaGU6IERhdGUgfCBudWxsID0gbnVsbDtcblxuICBzdWJzY3JpYmVPbmxpbmVBbmRMb2dpbkNoYW5nZSgob25saW5lLCBoYXNMb2dnZWRJblVzZXIpID0+IHtcbiAgICBjb25zdCBoYXNFeGNlZWRlZFByZWNhY2hlRGVsYXkgPVxuICAgICAgIWxhc3RQcmVjYWNoZSB8fFxuICAgICAgbmV3IERhdGUoKS5nZXRUaW1lKCkgLSBsYXN0UHJlY2FjaGUuZ2V0VGltZSgpID4gcHJlY2FjaGVEZWxheTtcblxuICAgIGlmIChoYXNMb2dnZWRJblVzZXIgJiYgb25saW5lICYmIGhhc0V4Y2VlZGVkUHJlY2FjaGVEZWxheSkge1xuICAgICAgbGFzdFByZWNhY2hlID0gbmV3IERhdGUoKTtcbiAgICAgIGRpc3BhdGNoUHJlY2FjaGVTdGF0aWNEZXBlbmRlbmNpZXMoKTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBzdWJzY3JpYmVPbmxpbmVBbmRMb2dpbkNoYW5nZShcbiAgY2I6IChvbmxpbmU6IGJvb2xlYW4sIGhhc0xvZ2dlZEluVXNlcjogYm9vbGVhbikgPT4gdm9pZFxuKSB7XG4gIGxldCBpc09ubGluZSA9IGZhbHNlO1xuICBsZXQgaGFzTG9nZ2VkSW5Vc2VyID0gZmFsc2U7XG5cbiAgZ2V0Q3VycmVudFVzZXIoeyBpbmNsdWRlQXV0aFN0YXR1czogZmFsc2UgfSkuc3Vic2NyaWJlKCh1c2VyKSA9PiB7XG4gICAgaGFzTG9nZ2VkSW5Vc2VyID0gISF1c2VyO1xuICAgIGNiKGlzT25saW5lLCBoYXNMb2dnZWRJblVzZXIpO1xuICB9KTtcblxuICBzdWJzY3JpYmVDb25uZWN0aXZpdHkoKHsgb25saW5lIH0pID0+IHtcbiAgICBpc09ubGluZSA9IG9ubGluZTtcbiAgICBjYihvbmxpbmUsIGhhc0xvZ2dlZEluVXNlcik7XG4gIH0pO1xufVxuXG5hc3luYyBmdW5jdGlvbiBwcmVjYWNoZUdsb2JhbFN0YXRpY0RlcGVuZGVuY2llcygpIHtcbiAgYXdhaXQgcHJlY2FjaGVJbXBvcnRNYXAoKTtcblxuICAvLyBCeSBkZWZhdWx0LCBjYWNoZSB0aGUgc2Vzc2lvbiBlbmRwb2ludC5cbiAgLy8gVGhpcyBlbnN1cmVzIHRoYXQgYSBsb3Qgb2YgdXNlci9zZXNzaW9uIHJlbGF0ZWQgZnVuY3Rpb25zIGFsc28gd29yayBvZmZsaW5lLlxuICBjb25zdCBzZXNzaW9uUGF0aFVybCA9IG5ldyBVUkwoXG4gICAgYCR7d2luZG93Lm9wZW5tcnNCYXNlfS93cy9yZXN0L3YxL3Nlc3Npb25gLFxuICAgIHdpbmRvdy5sb2NhdGlvbi5vcmlnaW5cbiAgKS5ocmVmO1xuXG4gIGF3YWl0IG1lc3NhZ2VPbXJzU2VydmljZVdvcmtlcih7XG4gICAgdHlwZTogXCJyZWdpc3RlckR5bmFtaWNSb3V0ZVwiLFxuICAgIHVybDogc2Vzc2lvblBhdGhVcmwsXG4gICAgc3RyYXRlZ3k6IFwibmV0d29yay1maXJzdFwiLFxuICB9KTtcblxuICBhd2FpdCBvcGVubXJzRmV0Y2goXCIvd3MvcmVzdC92MS9zZXNzaW9uXCIpLmNhdGNoKChlKSA9PlxuICAgIGNvbnNvbGUud2FybihcbiAgICAgIFwiRmFpbGVkIHRvIHByZWNhY2hlIHRoZSB1c2VyIHNlc3Npb24gZGF0YSBmcm9tIHRoZSBhcHAgc2hlbGwuIE1GcyBkZXBlbmRpbmcgb24gdGhpcyBkYXRhIG1heSBydW4gaW50byBwcm9ibGVtcyB3aGlsZSBvZmZsaW5lLlwiLFxuICAgICAgZVxuICAgIClcbiAgKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcHJlY2FjaGVJbXBvcnRNYXAoKSB7XG4gIGNvbnN0IGltcG9ydE1hcCA9IGF3YWl0IHdpbmRvdy5pbXBvcnRNYXBPdmVycmlkZXMuZ2V0Q3VycmVudFBhZ2VNYXAoKTtcbiAgYXdhaXQgbWVzc2FnZU9tcnNTZXJ2aWNlV29ya2VyKHtcbiAgICB0eXBlOiBcIm9uSW1wb3J0TWFwQ2hhbmdlZFwiLFxuICAgIGltcG9ydE1hcCxcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHNldHVwT2ZmbGluZUNzc0NsYXNzZXMoKSB7XG4gIHN1YnNjcmliZUNvbm5lY3Rpdml0eSgoeyBvbmxpbmUgfSkgPT4ge1xuICAgIGNvbnN0IGJvZHkgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiYm9keVwiKSE7XG4gICAgaWYgKG9ubGluZSkge1xuICAgICAgYm9keS5jbGFzc0xpc3QucmVtb3ZlKFwib21ycy1vZmZsaW5lXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBib2R5LmNsYXNzTGlzdC5hZGQoXCJvbXJzLW9mZmxpbmVcIik7XG4gICAgfVxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJ1bihjb25maWdVcmxzOiBBcnJheTxzdHJpbmc+LCBvZmZsaW5lOiBib29sZWFuKSB7XG4gIGNvbnN0IGNsb3NlTG9hZGluZyA9IHNob3dMb2FkaW5nU3Bpbm5lcigpO1xuICBjb25zdCBwcm92aWRlQ29uZmlncyA9IGNyZWF0ZUNvbmZpZ0xvYWRlcihjb25maWdVcmxzKTtcblxuICBpbnRlZ3JhdGVCcmVha3BvaW50cygpO1xuICBzaG93VG9hc3RzKCk7XG4gIHNob3dNb2RhbHMoKTtcbiAgc2hvd05vdGlmaWNhdGlvbnMoKTtcbiAgc2hvd0FjdGlvbmFibGVOb3RpZmljYXRpb25zKCk7XG4gIGNyZWF0ZUFwcFN0YXRlKHt9KTtcbiAgc3Vic2NyaWJlTm90aWZpY2F0aW9uU2hvd24oc2hvd05vdGlmaWNhdGlvbik7XG4gIHN1YnNjcmliZUFjdGlvbmFibGVOb3RpZmljYXRpb25TaG93bihzaG93QWN0aW9uYWJsZU5vdGlmaWNhdGlvbik7XG4gIHN1YnNjcmliZVRvYXN0U2hvd24oc2hvd1RvYXN0KTtcbiAgc3Vic2NyaWJlUHJlY2FjaGVTdGF0aWNEZXBlbmRlbmNpZXMocHJlY2FjaGVHbG9iYWxTdGF0aWNEZXBlbmRlbmNpZXMpO1xuICBzZXR1cEFwaU1vZHVsZSgpO1xuICByZWdpc3RlckNvcmVFeHRlbnNpb25zKCk7XG5cbiAgcmV0dXJuIHNldHVwQXBwcygpXG4gICAgLnRoZW4oZmluaXNoUmVnaXN0ZXJpbmdBbGxBcHBzKVxuICAgIC50aGVuKHNldHVwT2ZmbGluZUNzc0NsYXNzZXMpXG4gICAgLnRoZW4ocHJvdmlkZUNvbmZpZ3MpXG4gICAgLnRoZW4ocnVuU2hlbGwpXG4gICAgLmNhdGNoKGhhbmRsZUluaXRGYWlsdXJlKVxuICAgIC50aGVuKGNsb3NlTG9hZGluZylcbiAgICAudGhlbihvZmZsaW5lID8gc2V0dXBPZmZsaW5lIDogdW5kZWZpbmVkKVxuICAgIC50aGVuKHByZWxvYWRTY3JpcHRzKTtcbn1cbiJdLCJuYW1lcyI6WyJzdGFydCIsInRyaWdnZXJBcHBDaGFuZ2UiLCJzZXR1cEFwaU1vZHVsZSIsInJlbmRlckxvYWRpbmdTcGlubmVyIiwiY3JlYXRlQXBwU3RhdGUiLCJwcm92aWRlIiwic2hvd05vdGlmaWNhdGlvbiIsInNob3dBY3Rpb25hYmxlTm90aWZpY2F0aW9uIiwic2hvd1RvYXN0IiwicmVuZGVySW5saW5lTm90aWZpY2F0aW9ucyIsInJlbmRlckFjdGlvbmFibGVOb3RpZmljYXRpb25zIiwicmVuZGVyVG9hc3RzIiwiaW50ZWdyYXRlQnJlYWtwb2ludHMiLCJkaXNwYXRjaENvbm5lY3Rpdml0eUNoYW5nZWQiLCJzdWJzY3JpYmVOb3RpZmljYXRpb25TaG93biIsInN1YnNjcmliZUFjdGlvbmFibGVOb3RpZmljYXRpb25TaG93biIsInN1YnNjcmliZVRvYXN0U2hvd24iLCJyZWdpc3Rlck9tcnNTZXJ2aWNlV29ya2VyIiwibWVzc2FnZU9tcnNTZXJ2aWNlV29ya2VyIiwic3Vic2NyaWJlQ29ubmVjdGl2aXR5IiwiZ2V0Q3VycmVudFVzZXIiLCJyZW5kZXJNb2RhbHMiLCJkaXNwYXRjaFByZWNhY2hlU3RhdGljRGVwZW5kZW5jaWVzIiwiYWN0aXZhdGVPZmZsaW5lQ2FwYWJpbGl0eSIsInN1YnNjcmliZVByZWNhY2hlU3RhdGljRGVwZW5kZW5jaWVzIiwib3Blbm1yc0ZldGNoIiwiaW50ZXJwb2xhdGVVcmwiLCJnZXRDdXJyZW50SW1wb3J0TWFwIiwiaW1wb3J0RHluYW1pYyIsImZpbmlzaFJlZ2lzdGVyaW5nQWxsQXBwcyIsInJlZ2lzdGVyQXBwIiwidHJ5UmVnaXN0ZXJFeHRlbnNpb24iLCJzZXR1cEkxOG4iLCJhcHBOYW1lIiwiZ2V0Q29yZUV4dGVuc2lvbnMiLCJSRUdJU1RSQVRJT05fUFJPTUlTRVMiLCJTeW1ib2wiLCJzZXR1cEFwcHMiLCJzY3JpcHRUYWdzIiwicHJvbWlzZXMiLCJpIiwicm91dGVzIiwibW9kdWxlcyIsInJlZ2lzdHJhdGlvblByb21pc2VzIiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yQWxsIiwibGVuZ3RoIiwicHVzaCIsInNjcmlwdFRhZyIsImUiLCJ1bmRlZmluZWQiLCJ0ZXh0Q29udGVudCIsIkpTT04iLCJwYXJzZSIsInNyYyIsImRhdGEiLCJjb25zb2xlIiwiZXJyb3IiLCJQcm9taXNlIiwicmVzb2x2ZSIsIml0ZW0iLCJhbGwiLCJyZWR1Y2UiLCJhY2N1bXVsYXRlZFJvdXRlcyIsIk9iamVjdCIsImVudHJpZXMiLCJtYXAiLCJtb2R1bGUiLCJ3aW5kb3ciLCJpbnN0YWxsZWRNb2R1bGVzIiwibG9hZENvbmZpZ3MiLCJjb25maWdzIiwiY29uZmlnIiwidmFsdWUiLCJuYW1lIiwiY29ubmVjdGl2aXR5Q2hhbmdlZCIsIm9ubGluZSIsIm5hdmlnYXRvciIsIm9uTGluZSIsImNyaXRpY2FsIiwiZGVzY3JpcHRpb24iLCJ0aXRsZSIsImtpbmQiLCJydW5TaGVsbCIsImFkZEV2ZW50TGlzdGVuZXIiLCJjYXRjaCIsImVyciIsInRoZW4iLCJwcmVsb2FkU2NyaXB0cyIsImltcG9ydE1hcCIsImhhbmRsZUluaXRGYWlsdXJlIiwicmVuZGVyRmF0YWxFcnJvclBhZ2UiLCJ0ZW1wbGF0ZSIsInF1ZXJ5U2VsZWN0b3IiLCJmcmFnbWVudCIsImNvbnRlbnQiLCJjbG9uZU5vZGUiLCJtZXNzYWdlQ29udGFpbmVyIiwibWVzc2FnZSIsImxvY2FsU3RvcmFnZSIsImdldEl0ZW0iLCJrZXlzIiwic29tZSIsImsiLCJzdGFydHNXaXRoIiwiYXBwRXJyb3JBY3Rpb25CdXR0b25zIiwiY2xlYXJEZXZPdmVycmlkZXNCdXR0b24iLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NOYW1lIiwiaW5uZXJIVE1MIiwib25jbGljayIsImNsZWFyRGV2T3ZlcnJpZGVzIiwiYXBwZW5kQ2hpbGQiLCJib2R5Iiwia2V5IiwiaW5jbHVkZXMiLCJyZW1vdmVJdGVtIiwibG9jYXRpb24iLCJyZWxvYWQiLCJjcmVhdGVDb25maWdMb2FkZXIiLCJjb25maWdVcmxzIiwibG9hZGluZ0NvbmZpZ3MiLCJjb25maWdVcmwiLCJpbnRlcnBvbGF0ZWRVcmwiLCJmZXRjaCIsInJlcyIsImpzb24iLCJzaG93Tm90aWZpY2F0aW9ucyIsInNob3dBY3Rpb25hYmxlTm90aWZpY2F0aW9ucyIsInNob3dUb2FzdHMiLCJzaG93TW9kYWxzIiwic2hvd0xvYWRpbmdTcGlubmVyIiwicmVnaXN0ZXJDb3JlRXh0ZW5zaW9ucyIsImV4dGVuc2lvbnMiLCJleHRlbnNpb24iLCJzZXR1cE9mZmxpbmUiLCJnZXRPcGVubXJzU3BhQmFzZSIsInNldHVwT2ZmbGluZVN0YXRpY0RlcGVuZGVuY3lQcmVjYWNoaW5nIiwicHJlY2FjaGVEZWxheSIsImxhc3RQcmVjYWNoZSIsInN1YnNjcmliZU9ubGluZUFuZExvZ2luQ2hhbmdlIiwiaGFzTG9nZ2VkSW5Vc2VyIiwiaGFzRXhjZWVkZWRQcmVjYWNoZURlbGF5IiwiRGF0ZSIsImdldFRpbWUiLCJjYiIsImlzT25saW5lIiwiaW5jbHVkZUF1dGhTdGF0dXMiLCJzdWJzY3JpYmUiLCJ1c2VyIiwicHJlY2FjaGVHbG9iYWxTdGF0aWNEZXBlbmRlbmNpZXMiLCJzZXNzaW9uUGF0aFVybCIsInByZWNhY2hlSW1wb3J0TWFwIiwiVVJMIiwib3Blbm1yc0Jhc2UiLCJvcmlnaW4iLCJocmVmIiwidHlwZSIsInVybCIsInN0cmF0ZWd5Iiwid2FybiIsImltcG9ydE1hcE92ZXJyaWRlcyIsImdldEN1cnJlbnRQYWdlTWFwIiwic2V0dXBPZmZsaW5lQ3NzQ2xhc3NlcyIsImNsYXNzTGlzdCIsInJlbW92ZSIsImFkZCIsInJ1biIsIm9mZmxpbmUiLCJjbG9zZUxvYWRpbmciLCJwcm92aWRlQ29uZmlncyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/run.ts\n");
|
|
52
52
|
|
|
53
53
|
/***/ }),
|
|
54
54
|
|