@openmrs/esm-app-shell 10.0.1-pre.5396 → 10.0.1-pre.5426

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.
Files changed (55) hide show
  1. package/.turbo/turbo-build.log +3 -3
  2. package/dist/00781fd40b42efd3.js +1 -0
  3. package/dist/00781fd40b42efd3.js.map +1 -0
  4. package/dist/3626ab9863946c7b.js +1 -0
  5. package/dist/3626ab9863946c7b.js.map +1 -0
  6. package/dist/3dc3febe66b7c3f7.js +1 -0
  7. package/dist/3dc3febe66b7c3f7.js.map +1 -0
  8. package/dist/418e84790d85e1d2.js +1 -0
  9. package/dist/418e84790d85e1d2.js.map +1 -0
  10. package/dist/{1be580fd6d356569.js → 4ad2f003cb40853a.js} +14 -14
  11. package/dist/4ad2f003cb40853a.js.map +1 -0
  12. package/dist/59811cc6672f3c5e.js +1 -0
  13. package/dist/59811cc6672f3c5e.js.map +1 -0
  14. package/dist/5df0e0969c582637.js +1 -0
  15. package/dist/5df0e0969c582637.js.map +1 -0
  16. package/dist/60b81b0c3de3dbcc.js +1 -0
  17. package/dist/60b81b0c3de3dbcc.js.map +1 -0
  18. package/dist/61b616c98ab0405a.js +1 -0
  19. package/dist/61b616c98ab0405a.js.map +1 -0
  20. package/dist/6cd82326717c86ed.js +1 -0
  21. package/dist/6cd82326717c86ed.js.map +1 -0
  22. package/dist/7b8e1045c7cdfdd7.js +1 -0
  23. package/dist/{f160604b54c3f05b.js.map → 7b8e1045c7cdfdd7.js.map} +1 -1
  24. package/dist/a3a573a33ba2d559.js +1 -0
  25. package/dist/a3a573a33ba2d559.js.map +1 -0
  26. package/dist/c1f558fe1c434557.js +1 -0
  27. package/dist/c1f558fe1c434557.js.map +1 -0
  28. package/dist/f3f7ba7a281d137f.js +1 -0
  29. package/dist/f3f7ba7a281d137f.js.map +1 -0
  30. package/dist/index.html +1 -1
  31. package/dist/{openmrs.5b864b07da1b282d.js → openmrs.49f931a3acf2932c.js} +8 -8
  32. package/dist/openmrs.49f931a3acf2932c.js.map +1 -0
  33. package/lib/0a393d2628c92699.js +8 -0
  34. package/lib/10b4ef27e2197006.js +8 -0
  35. package/lib/2c82de43c389188c.js +8 -0
  36. package/lib/343561ee0709af1f.js +8 -0
  37. package/lib/{b0d5eb958b4696a7.js → 46f6744c9bdc7ce1.js} +1 -1
  38. package/lib/5135ee43a98e1957.js +8 -0
  39. package/lib/851dcadf831a3e95.js +8 -0
  40. package/lib/91a6d7bbfee7d3e9.js +8 -0
  41. package/lib/9728df55a98ebbd2.js +20 -0
  42. package/lib/{5762bcfe6f67051d.js → 9adcb5d8a33aa9b2.js} +15 -34
  43. package/lib/cd15c92ac4bf8df8.js +16 -0
  44. package/lib/d4217550e793514c.js +8 -0
  45. package/lib/f7c61d1509f22b7f.js +8 -0
  46. package/lib/openmrs.js +7 -7
  47. package/package.json +4 -4
  48. package/rspack.config.js +11 -15
  49. package/src/run.ts +3 -0
  50. package/dist/1be580fd6d356569.js.map +0 -1
  51. package/dist/925b110214f0bbf7.js +0 -1
  52. package/dist/925b110214f0bbf7.js.map +0 -1
  53. package/dist/f160604b54c3f05b.js +0 -1
  54. package/dist/openmrs.5b864b07da1b282d.js.map +0 -1
  55. package/lib/1c5b49134c999eee.js +0 -8
@@ -30,7 +30,7 @@ eval("{__webpack_require__.r(__webpack_exports__);\n/* import */ var _openmrs_es
30
30
  },
31
31
  "./src/run.ts"(__unused_rspack_module, __webpack_exports__, __webpack_require__) {
32
32
  "use strict";
33
- eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webpack_exports__, {\n run: () => (run)\n});\n/* import */ var single_spa__rspack_import_0 = __webpack_require__(\"webpack/sharing/consume/default/single-spa/single-spa\");\n/* import */ var single_spa__rspack_import_0_default = /*#__PURE__*/__webpack_require__.n(single_spa__rspack_import_0);\n/* import */ var _openmrs_esm_framework_src_internal__rspack_import_1 = __webpack_require__(\"webpack/sharing/consume/default/@openmrs/esm-framework/src/internal/@openmrs/esm-framework/src/internal\");\n/* import */ var _openmrs_esm_framework_src_internal__rspack_import_1_default = /*#__PURE__*/__webpack_require__.n(_openmrs_esm_framework_src_internal__rspack_import_1);\n/* import */ var _locale__rspack_import_2 = __webpack_require__(\"./src/locale.ts\");\n/* import */ var _routing_events__rspack_import_3 = __webpack_require__(\"./src/routing-events.ts\");\n/* import */ var _events__rspack_import_4 = __webpack_require__(\"./src/events.ts\");\n/* import */ var _ui__rspack_import_5 = __webpack_require__(\"./src/ui/index.ts\");\n/* import */ var _core_config__rspack_import_6 = __webpack_require__(\"./src/core-config.ts\");\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\nconst REGISTRATION_PROMISES = Symbol('openmrs_registration_promises');\nlet initialRouteMap;\n/**\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 function setupApps() {\n await (0,_openmrs_esm_framework_src_internal__rspack_import_1.setupRouteMapOverrides)();\n const routes = initialRouteMap = await (0,_openmrs_esm_framework_src_internal__rspack_import_1.getCurrentRouteMap)();\n const modules = [];\n const registrationPromises = Object.entries(routes.routes).map(async ([module, appRoutes])=>{\n modules.push([\n module,\n appRoutes\n ]);\n (0,_openmrs_esm_framework_src_internal__rspack_import_1.registerApp)(module, appRoutes);\n });\n window[REGISTRATION_PROMISES] = Promise.all(registrationPromises);\n Object.defineProperty(window, 'installedModules', {\n value: modules,\n writable: false,\n configurable: false\n });\n}\n/**\n * Loads the provided configurations and sets them in the system.\n */ async function loadConfigs(configs) {\n for (const config of configs){\n (0,_openmrs_esm_framework_src_internal__rspack_import_1.provide)(config.value, config.name);\n }\n}\n/**\n * Invoked when the connectivity is changed.\n */ function connectivityChanged() {\n if (!window.offlineEnabled) {\n return;\n }\n const online = navigator.onLine;\n // NB We do not wait for this to be done; it is simply scheduled\n (0,single_spa__rspack_import_0.triggerAppChange)();\n (0,_openmrs_esm_framework_src_internal__rspack_import_1.dispatchConnectivityChanged)(online);\n (0,_openmrs_esm_framework_src_internal__rspack_import_1.showToast)({\n critical: true,\n description: `Connection: ${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 */ async function runShell() {\n try {\n await (0,_locale__rspack_import_2.setupI18n)();\n } catch (err) {\n console.error(`Failed to initialize translation system`, err);\n }\n const applicationVersion = initialRouteMap.version;\n if (applicationVersion === undefined || applicationVersion === null || applicationVersion.trim().length === 0) {\n Object.defineProperty(window, 'applicationVersion', {\n value: undefined,\n writable: false,\n configurable: false\n });\n } else if (applicationVersion === 'prerelease') {\n Object.defineProperty(window, 'applicationVersion', {\n value: window.spaVersion === 'local' ? (0,_openmrs_esm_framework_src_internal__rspack_import_1.getCoreTranslation)('localVersion') : (0,_openmrs_esm_framework_src_internal__rspack_import_1.getCoreTranslation)('prereleaseVersion'),\n writable: false,\n configurable: false\n });\n } else {\n Object.defineProperty(window, 'applicationVersion', {\n value: applicationVersion,\n writable: false,\n configurable: false\n });\n }\n const { preferredCalendar } = await (0,_openmrs_esm_framework_src_internal__rspack_import_1.getConfig)('@openmrs/esm-styleguide');\n for (const entry of Object.entries(preferredCalendar)){\n (0,_openmrs_esm_framework_src_internal__rspack_import_1.registerDefaultCalendar)(entry[0], entry[1]);\n }\n (0,single_spa__rspack_import_0.start)();\n}\nfunction handleInitFailure(e) {\n console.error(e);\n renderFatalErrorPage(e);\n}\nfunction renderFatalErrorPage(e) {\n const template = document.querySelector('#app-error');\n if (template) {\n const fragment = template.content.cloneNode(true);\n const messageContainer = fragment.querySelector('[data-var=\"message\"]');\n if (messageContainer) {\n messageContainer.textContent = e?.message || 'No additional information available.';\n }\n if (localStorage.getItem('openmrs:devtools') && Object.keys(localStorage).some((k)=>k.startsWith('import-map-override:'))) {\n const appErrorActionButtons = fragment?.querySelector('#buttons');\n if (appErrorActionButtons) {\n const 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 const keysToRemove = Object.keys(localStorage).filter((key)=>key.startsWith('import-map-override:') && ![\n 'import-map-override:react',\n 'import-map-override:react-dom'\n ].includes(key));\n keysToRemove.forEach((key)=>localStorage.removeItem(key));\n location.reload();\n}\nfunction createConfigLoader(configUrls) {\n const loadingConfigs = Promise.all(configUrls.map((configUrl)=>{\n const interpolatedUrl = (0,_openmrs_esm_framework_src_internal__rspack_import_1.interpolateUrl)(configUrl);\n return fetch(interpolatedUrl).then((res)=>res.json()).then((config)=>({\n name: configUrl,\n value: config\n })).catch((err)=>{\n console.error(`Loading the config from \"${configUrl}\" failed.`, err);\n return {\n name: configUrl,\n value: {}\n };\n });\n }));\n return ()=>loadingConfigs.then(loadConfigs);\n}\nfunction showNotifications() {\n (0,_openmrs_esm_framework_src_internal__rspack_import_1.renderInlineNotifications)(document.querySelector('.omrs-inline-notifications-container'));\n return;\n}\nfunction showActionableNotifications() {\n (0,_openmrs_esm_framework_src_internal__rspack_import_1.renderActionableNotifications)(document.querySelector('.omrs-actionable-notifications-container'));\n}\nfunction showToasts() {\n (0,_openmrs_esm_framework_src_internal__rspack_import_1.renderToasts)(document.querySelector('.omrs-toasts-container'));\n}\nfunction showWorkspacesAndActionMenu() {\n (0,_openmrs_esm_framework_src_internal__rspack_import_1.renderWorkspaceWindowsAndMenu)(document.querySelector('#omrs-workspaces-container'));\n}\nfunction showSnackbars() {\n (0,_openmrs_esm_framework_src_internal__rspack_import_1.renderSnackbars)(document.querySelector('.omrs-snackbars-container'));\n}\nfunction showModals() {\n (0,_openmrs_esm_framework_src_internal__rspack_import_1.setupModals)(document.querySelector('.omrs-modals-container'));\n}\nfunction showLoadingSpinner() {\n return (0,_openmrs_esm_framework_src_internal__rspack_import_1.renderLoadingSpinner)(document.body);\n}\n/**\n * Registers the extensions coming from the app shell itself.\n */ function registerCoreExtensions() {\n const extensions = (0,_ui__rspack_import_5.getCoreExtensions)();\n for (const extension of extensions){\n // FIXME This \"core extensions\" concept should likely be retired\n (0,_openmrs_esm_framework_src_internal__rspack_import_1.tryRegisterExtension)(_ui__rspack_import_5.appName, extension);\n }\n}\nasync function setupOffline() {\n try {\n await (0,_openmrs_esm_framework_src_internal__rspack_import_1.registerOmrsServiceWorker)(`${window.getOpenmrsSpaBase()}service-worker.js`);\n await (0,_openmrs_esm_framework_src_internal__rspack_import_1.activateOfflineCapability)();\n setupOfflineStaticDependencyPrecaching();\n } catch (error) {\n console.error('Error while setting up offline mode.', error);\n (0,_openmrs_esm_framework_src_internal__rspack_import_1.showNotification)({\n kind: 'error',\n title: 'Offline Setup Error',\n description: error.message\n });\n }\n}\nfunction setupOfflineStaticDependencyPrecaching() {\n const precacheDelay = 1000 * 60 * 5;\n let lastPrecache = null;\n subscribeOnlineAndLoginChange((online, hasLoggedInUser)=>{\n const hasExceededPrecacheDelay = !lastPrecache || new Date().getTime() - lastPrecache.getTime() > precacheDelay;\n if (hasLoggedInUser && online && hasExceededPrecacheDelay) {\n lastPrecache = new Date();\n (0,_openmrs_esm_framework_src_internal__rspack_import_1.dispatchPrecacheStaticDependencies)();\n }\n });\n}\nfunction subscribeOnlineAndLoginChange(cb) {\n let isOnline = false;\n let hasLoggedInUser = false;\n (0,_openmrs_esm_framework_src_internal__rspack_import_1.getCurrentUser)({\n includeAuthStatus: false\n }).subscribe((user)=>{\n hasLoggedInUser = !!user;\n cb(isOnline, hasLoggedInUser);\n });\n (0,_openmrs_esm_framework_src_internal__rspack_import_1.subscribeConnectivity)(({ online })=>{\n isOnline = online;\n cb(online, hasLoggedInUser);\n });\n}\nasync function precacheGlobalStaticDependencies() {\n await precacheImportMap();\n // By default, cache the session endpoint.\n // This ensures that a lot of user/session related functions also work offline.\n const sessionPathUrl = new URL(`${window.openmrsBase}${_openmrs_esm_framework_src_internal__rspack_import_1.restBaseUrl}/session`, window.location.origin).href;\n await (0,_openmrs_esm_framework_src_internal__rspack_import_1.messageOmrsServiceWorker)({\n type: 'registerDynamicRoute',\n url: sessionPathUrl,\n strategy: 'network-first'\n });\n await (0,_openmrs_esm_framework_src_internal__rspack_import_1.openmrsFetch)(`${_openmrs_esm_framework_src_internal__rspack_import_1.restBaseUrl}/session`).catch((e)=>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}\nasync function precacheImportMap() {\n const importMap = await (0,_openmrs_esm_framework_src_internal__rspack_import_1.getCurrentPageMap)();\n await (0,_openmrs_esm_framework_src_internal__rspack_import_1.messageOmrsServiceWorker)({\n type: 'onImportMapChanged',\n importMap\n });\n}\nfunction registerOfflineHandlers() {\n window.addEventListener('offline', connectivityChanged);\n window.addEventListener('online', connectivityChanged);\n}\nfunction setupOfflineCssClasses() {\n (0,_openmrs_esm_framework_src_internal__rspack_import_1.subscribeConnectivity)(({ online })=>{\n const 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) {\n (0,_openmrs_esm_framework_src_internal__rspack_import_1.setupImportMapOverrides)();\n const offlineEnabled = window.offlineEnabled;\n const closeLoading = showLoadingSpinner();\n const provideConfigs = createConfigLoader(configUrls);\n return __webpack_require__.e(/* import() */ \"default-framework_esm-styleguide_dist_index_js\").then(__webpack_require__.bind(__webpack_require__, \"../../framework/esm-styleguide/dist/index.js\")).then(()=>{\n (0,_openmrs_esm_framework_src_internal__rspack_import_1.integrateBreakpoints)();\n showToasts();\n showModals();\n showNotifications();\n showActionableNotifications();\n showSnackbars();\n showWorkspacesAndActionMenu();\n (0,_openmrs_esm_framework_src_internal__rspack_import_1.subscribeNotificationShown)(_openmrs_esm_framework_src_internal__rspack_import_1.showNotification);\n (0,_openmrs_esm_framework_src_internal__rspack_import_1.subscribeActionableNotificationShown)(_openmrs_esm_framework_src_internal__rspack_import_1.showActionableNotification);\n (0,_openmrs_esm_framework_src_internal__rspack_import_1.subscribeToastShown)(_openmrs_esm_framework_src_internal__rspack_import_1.showToast);\n (0,_openmrs_esm_framework_src_internal__rspack_import_1.subscribeSnackbarShown)(_openmrs_esm_framework_src_internal__rspack_import_1.showSnackbar);\n (0,_openmrs_esm_framework_src_internal__rspack_import_1.subscribePrecacheStaticDependencies)(precacheGlobalStaticDependencies);\n (0,_openmrs_esm_framework_src_internal__rspack_import_1.setupApiModule)();\n (0,_openmrs_esm_framework_src_internal__rspack_import_1.setupHistory)();\n registerCoreExtensions();\n (0,_core_config__rspack_import_6.setupCoreConfig)();\n const polyfillReady = typeof Intl !== 'undefined' && 'DurationFormat' in Intl ? Promise.resolve() : Promise.all(/* import() | intl-durationformat-polyfill */ [__webpack_require__.e(\"default-node_modules_tslib_tslib_es6_mjs\"), __webpack_require__.e(\"intl-durationformat-polyfill\")]).then(__webpack_require__.bind(__webpack_require__, \"../../../node_modules/@formatjs/intl-durationformat/lib/polyfill.js\")).then(()=>undefined);\n return polyfillReady.then(setupApps).then(()=>Promise.resolve((0,_openmrs_esm_framework_src_internal__rspack_import_1.finishRegisteringAllApps)())).then(offlineEnabled ? setupOfflineCssClasses : undefined).then(offlineEnabled ? registerOfflineHandlers : undefined).then(provideConfigs).then(runShell).catch(handleInitFailure).then(closeLoading).then(offlineEnabled ? setupOffline : undefined).then(()=>{\n // intentionally not returned so that processing the \"started\" event doesn't block\n (0,_openmrs_esm_framework_src_internal__rspack_import_1.fireOpenmrsEvent)('started');\n });\n });\n}\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbHRpbjpzd2MtbG9hZGVyPz9ydWxlU2V0WzFdLnJ1bGVzWzVdLnVzZVswXSEvaG9tZS9ydW5uZXIvd29yay9vcGVubXJzLWVzbS1jb3JlL29wZW5tcnMtZXNtLWNvcmUvcGFja2FnZXMvc2hlbGwvZXNtLWFwcC1zaGVsbC9zcmMvcnVuLnRzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQG9wZW5tcnMvZXNtLWFwcC1zaGVsbC8uL3NyYy9ydW4udHM/Njg1ZSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzdGFydCwgdHJpZ2dlckFwcENoYW5nZSB9IGZyb20gJ3NpbmdsZS1zcGEnO1xuaW1wb3J0IHsgdHlwZSBDYWxlbmRhcklkZW50aWZpZXIgfSBmcm9tICdAaW50ZXJuYXRpb25hbGl6ZWQvZGF0ZSc7XG5pbXBvcnQge1xuICBhY3RpdmF0ZU9mZmxpbmVDYXBhYmlsaXR5LFxuICB0eXBlIENvbmZpZyxcbiAgZGlzcGF0Y2hDb25uZWN0aXZpdHlDaGFuZ2VkLFxuICBkaXNwYXRjaFByZWNhY2hlU3RhdGljRGVwZW5kZW5jaWVzLFxuICB0eXBlIEV4dGVuc2lvbkRlZmluaXRpb24sXG4gIGZpbmlzaFJlZ2lzdGVyaW5nQWxsQXBwcyxcbiAgZmlyZU9wZW5tcnNFdmVudCxcbiAgZ2V0Q29uZmlnLFxuICBnZXRDb3JlVHJhbnNsYXRpb24sXG4gIGdldEN1cnJlbnRQYWdlTWFwLFxuICBnZXRDdXJyZW50Um91dGVNYXAsXG4gIGdldEN1cnJlbnRVc2VyLFxuICBpbnRlZ3JhdGVCcmVha3BvaW50cyxcbiAgaW50ZXJwb2xhdGVVcmwsXG4gIG1lc3NhZ2VPbXJzU2VydmljZVdvcmtlcixcbiAgb3Blbm1yc0ZldGNoLFxuICB0eXBlIE9wZW5tcnNSb3V0ZXMsXG4gIHByb3ZpZGUsXG4gIHJlZ2lzdGVyQXBwLFxuICByZWdpc3RlckRlZmF1bHRDYWxlbmRhcixcbiAgcmVnaXN0ZXJPbXJzU2VydmljZVdvcmtlcixcbiAgcmVuZGVyQWN0aW9uYWJsZU5vdGlmaWNhdGlvbnMsXG4gIHJlbmRlcklubGluZU5vdGlmaWNhdGlvbnMsXG4gIHJlbmRlckxvYWRpbmdTcGlubmVyLFxuICByZW5kZXJTbmFja2JhcnMsXG4gIHJlbmRlclRvYXN0cyxcbiAgcmVuZGVyV29ya3NwYWNlV2luZG93c0FuZE1lbnUsXG4gIHJlc3RCYXNlVXJsLFxuICBzZXR1cEFwaU1vZHVsZSxcbiAgc2V0dXBIaXN0b3J5LFxuICBzZXR1cEltcG9ydE1hcE92ZXJyaWRlcyxcbiAgc2V0dXBNb2RhbHMsXG4gIHNldHVwUm91dGVNYXBPdmVycmlkZXMsXG4gIHNob3dBY3Rpb25hYmxlTm90aWZpY2F0aW9uLFxuICBzaG93Tm90aWZpY2F0aW9uLFxuICBzaG93U25hY2tiYXIsXG4gIHNob3dUb2FzdCxcbiAgc3Vic2NyaWJlQWN0aW9uYWJsZU5vdGlmaWNhdGlvblNob3duLFxuICBzdWJzY3JpYmVDb25uZWN0aXZpdHksXG4gIHN1YnNjcmliZU5vdGlmaWNhdGlvblNob3duLFxuICBzdWJzY3JpYmVQcmVjYWNoZVN0YXRpY0RlcGVuZGVuY2llcyxcbiAgc3Vic2NyaWJlU25hY2tiYXJTaG93bixcbiAgc3Vic2NyaWJlVG9hc3RTaG93bixcbiAgdHlwZSBTdHlsZWd1aWRlQ29uZmlnT2JqZWN0LFxuICB0cnlSZWdpc3RlckV4dGVuc2lvbixcbn0gZnJvbSAnQG9wZW5tcnMvZXNtLWZyYW1ld29yay9zcmMvaW50ZXJuYWwnO1xuaW1wb3J0IHsgc2V0dXBJMThuIH0gZnJvbSAnLi9sb2NhbGUnO1xuaW1wb3J0ICcuL3JvdXRpbmctZXZlbnRzJztcbmltcG9ydCAnLi9ldmVudHMnO1xuaW1wb3J0IHsgYXBwTmFtZSwgZ2V0Q29yZUV4dGVuc2lvbnMgfSBmcm9tICcuL3VpJztcbmltcG9ydCB7IHNldHVwQ29yZUNvbmZpZyB9IGZyb20gJy4vY29yZS1jb25maWcnO1xuXG4vLyBAaW50ZXJuYWxcbi8vIHVzZWQgdG8gdHJhY2sgd2hlbiB0aGUgd2luZG93Lmluc3RhbGxlZE1vZHVsZXMgZ2xvYmFsIGlzIGZpbmFsaXNlZFxuLy8gc28gd2UgY2FuIHByZS1sb2FkIGFsbCBtb2R1bGVzXG5jb25zdCBSRUdJU1RSQVRJT05fUFJPTUlTRVMgPSBTeW1ib2woJ29wZW5tcnNfcmVnaXN0cmF0aW9uX3Byb21pc2VzJyk7XG5cbmxldCBpbml0aWFsUm91dGVNYXA6IE9wZW5tcnNSb3V0ZXM7XG5cbi8qKlxuICogU2V0cyB1cCB0aGUgZnJvbnRlbmQgbW9kdWxlcyAoYXBwcykuIFVzZXMgdGhlIGRlZmluZWQgZXhwb3J0XG4gKiBmcm9tIHRoZSByb290IG1vZHVsZXMgb2YgdGhlIGFwcHMuIFRoaXMgaXMgZG9uZSBieSByZWFkaW5nIHRoZVxuICogbGlzdCBvZiBhcHBzIGZyb20gdGhlIHJvdXRlcy5yZWdpc3RyeS5qc29uIGZpbGUsIHdoaWNoIHNlcnZlc1xuICogYXMgdGhlIHJlZ2lzdHJ5IG9mIGFsbCBhcHBzIGluIHRoZSBhcHBsaWNhdGlvbi5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gc2V0dXBBcHBzKCkge1xuICBhd2FpdCBzZXR1cFJvdXRlTWFwT3ZlcnJpZGVzKCk7XG4gIGNvbnN0IHJvdXRlcyA9IChpbml0aWFsUm91dGVNYXAgPSBhd2FpdCBnZXRDdXJyZW50Um91dGVNYXAoKSk7XG5cbiAgY29uc3QgbW9kdWxlczogdHlwZW9mIHdpbmRvdy5pbnN0YWxsZWRNb2R1bGVzID0gW107XG4gIGNvbnN0IHJlZ2lzdHJhdGlvblByb21pc2VzID0gT2JqZWN0LmVudHJpZXMocm91dGVzLnJvdXRlcykubWFwKGFzeW5jIChbbW9kdWxlLCBhcHBSb3V0ZXNdKSA9PiB7XG4gICAgbW9kdWxlcy5wdXNoKFttb2R1bGUsIGFwcFJvdXRlc10pO1xuICAgIHJlZ2lzdGVyQXBwKG1vZHVsZSwgYXBwUm91dGVzKTtcbiAgfSk7XG5cbiAgd2luZG93W1JFR0lTVFJBVElPTl9QUk9NSVNFU10gPSBQcm9taXNlLmFsbChyZWdpc3RyYXRpb25Qcm9taXNlcyk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh3aW5kb3csICdpbnN0YWxsZWRNb2R1bGVzJywge1xuICAgIHZhbHVlOiBtb2R1bGVzLFxuICAgIHdyaXRhYmxlOiBmYWxzZSxcbiAgICBjb25maWd1cmFibGU6IGZhbHNlLFxuICB9KTtcbn1cblxuLyoqXG4gKiBMb2FkcyB0aGUgcHJvdmlkZWQgY29uZmlndXJhdGlvbnMgYW5kIHNldHMgdGhlbSBpbiB0aGUgc3lzdGVtLlxuICovXG5hc3luYyBmdW5jdGlvbiBsb2FkQ29uZmlncyhjb25maWdzOiBBcnJheTx7IG5hbWU6IHN0cmluZzsgdmFsdWU6IENvbmZpZyB9Pikge1xuICBmb3IgKGNvbnN0IGNvbmZpZyBvZiBjb25maWdzKSB7XG4gICAgcHJvdmlkZShjb25maWcudmFsdWUsIGNvbmZpZy5uYW1lKTtcbiAgfVxufVxuXG4vKipcbiAqIEludm9rZWQgd2hlbiB0aGUgY29ubmVjdGl2aXR5IGlzIGNoYW5nZWQuXG4gKi9cbmZ1bmN0aW9uIGNvbm5lY3Rpdml0eUNoYW5nZWQoKSB7XG4gIGlmICghd2luZG93Lm9mZmxpbmVFbmFibGVkKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3Qgb25saW5lID0gbmF2aWdhdG9yLm9uTGluZTtcbiAgLy8gTkIgV2UgZG8gbm90IHdhaXQgZm9yIHRoaXMgdG8gYmUgZG9uZTsgaXQgaXMgc2ltcGx5IHNjaGVkdWxlZFxuICB0cmlnZ2VyQXBwQ2hhbmdlKCk7XG5cbiAgZGlzcGF0Y2hDb25uZWN0aXZpdHlDaGFuZ2VkKG9ubGluZSk7XG4gIHNob3dUb2FzdCh7XG4gICAgY3JpdGljYWw6IHRydWUsXG4gICAgZGVzY3JpcHRpb246IGBDb25uZWN0aW9uOiAke29ubGluZSA/ICdvbmxpbmUnIDogJ29mZmxpbmUnfWAsXG4gICAgdGl0bGU6ICdBcHAnLFxuICAgIGtpbmQ6IG9ubGluZSA/ICdzdWNjZXNzJyA6ICd3YXJuaW5nJyxcbiAgfSk7XG59XG5cbi8qKlxuICogUnVucyB0aGUgc2hlbGwgYnkgaW1wb3J0aW5nIHRoZSB0cmFuc2xhdGlvbnMgYW5kIHN0YXJ0aW5nIHNpbmdsZSBTUEEuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHJ1blNoZWxsKCkge1xuICB0cnkge1xuICAgIGF3YWl0IHNldHVwSTE4bigpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjb25zb2xlLmVycm9yKGBGYWlsZWQgdG8gaW5pdGlhbGl6ZSB0cmFuc2xhdGlvbiBzeXN0ZW1gLCBlcnIpO1xuICB9XG5cbiAgY29uc3QgYXBwbGljYXRpb25WZXJzaW9uID0gaW5pdGlhbFJvdXRlTWFwLnZlcnNpb247XG4gIGlmIChhcHBsaWNhdGlvblZlcnNpb24gPT09IHVuZGVmaW5lZCB8fCBhcHBsaWNhdGlvblZlcnNpb24gPT09IG51bGwgfHwgYXBwbGljYXRpb25WZXJzaW9uLnRyaW0oKS5sZW5ndGggPT09IDApIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkod2luZG93LCAnYXBwbGljYXRpb25WZXJzaW9uJywge1xuICAgICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgIHdyaXRhYmxlOiBmYWxzZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgfSk7XG4gIH0gZWxzZSBpZiAoYXBwbGljYXRpb25WZXJzaW9uID09PSAncHJlcmVsZWFzZScpIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkod2luZG93LCAnYXBwbGljYXRpb25WZXJzaW9uJywge1xuICAgICAgdmFsdWU6XG4gICAgICAgIHdpbmRvdy5zcGFWZXJzaW9uID09PSAnbG9jYWwnID8gZ2V0Q29yZVRyYW5zbGF0aW9uKCdsb2NhbFZlcnNpb24nKSA6IGdldENvcmVUcmFuc2xhdGlvbigncHJlcmVsZWFzZVZlcnNpb24nKSxcbiAgICAgIHdyaXRhYmxlOiBmYWxzZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdywgJ2FwcGxpY2F0aW9uVmVyc2lvbicsIHtcbiAgICAgIHZhbHVlOiBhcHBsaWNhdGlvblZlcnNpb24sXG4gICAgICB3cml0YWJsZTogZmFsc2UsXG4gICAgICBjb25maWd1cmFibGU6IGZhbHNlLFxuICAgIH0pO1xuICB9XG5cbiAgY29uc3QgeyBwcmVmZXJyZWRDYWxlbmRhciB9ID0gYXdhaXQgZ2V0Q29uZmlnPFN0eWxlZ3VpZGVDb25maWdPYmplY3Q+KCdAb3Blbm1ycy9lc20tc3R5bGVndWlkZScpO1xuICBmb3IgKGNvbnN0IGVudHJ5IG9mIE9iamVjdC5lbnRyaWVzKHByZWZlcnJlZENhbGVuZGFyKSkge1xuICAgIHJlZ2lzdGVyRGVmYXVsdENhbGVuZGFyKGVudHJ5WzBdLCBlbnRyeVsxXSBhcyBDYWxlbmRhcklkZW50aWZpZXIpO1xuICB9XG5cbiAgc3RhcnQoKTtcbn1cblxuZnVuY3Rpb24gaGFuZGxlSW5pdEZhaWx1cmUoZTogRXJyb3IpIHtcbiAgY29uc29sZS5lcnJvcihlKTtcbiAgcmVuZGVyRmF0YWxFcnJvclBhZ2UoZSk7XG59XG5cbmZ1bmN0aW9uIHJlbmRlckZhdGFsRXJyb3JQYWdlKGU/OiBFcnJvcikge1xuICBjb25zdCB0ZW1wbGF0ZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3I8SFRNTFRlbXBsYXRlRWxlbWVudD4oJyNhcHAtZXJyb3InKTtcblxuICBpZiAodGVtcGxhdGUpIHtcbiAgICBjb25zdCBmcmFnbWVudCA9IHRlbXBsYXRlLmNvbnRlbnQuY2xvbmVOb2RlKHRydWUpIGFzIERvY3VtZW50RnJhZ21lbnQ7XG4gICAgY29uc3QgbWVzc2FnZUNvbnRhaW5lciA9IGZyYWdtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLXZhcj1cIm1lc3NhZ2VcIl0nKTtcblxuICAgIGlmIChtZXNzYWdlQ29udGFpbmVyKSB7XG4gICAgICBtZXNzYWdlQ29udGFpbmVyLnRleHRDb250ZW50ID0gZT8ubWVzc2FnZSB8fCAnTm8gYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhdmFpbGFibGUuJztcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnb3Blbm1yczpkZXZ0b29scycpICYmXG4gICAgICBPYmplY3Qua2V5cyhsb2NhbFN0b3JhZ2UpLnNvbWUoKGspID0+IGsuc3RhcnRzV2l0aCgnaW1wb3J0LW1hcC1vdmVycmlkZTonKSlcbiAgICApIHtcbiAgICAgIGNvbnN0IGFwcEVycm9yQWN0aW9uQnV0dG9ucyA9IGZyYWdtZW50Py5xdWVyeVNlbGVjdG9yKCcjYnV0dG9ucycpO1xuICAgICAgaWYgKGFwcEVycm9yQWN0aW9uQnV0dG9ucykge1xuICAgICAgICBjb25zdCBjbGVhckRldk92ZXJyaWRlc0J1dHRvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpO1xuICAgICAgICBjbGVhckRldk92ZXJyaWRlc0J1dHRvbi5jbGFzc05hbWUgPSAnY2RzLS1idG4nO1xuICAgICAgICBjbGVhckRldk92ZXJyaWRlc0J1dHRvbi5pbm5lckhUTUwgPSAnQ2xlYXIgZGV2IG92ZXJyaWRlcyc7XG4gICAgICAgIGNsZWFyRGV2T3ZlcnJpZGVzQnV0dG9uLm9uY2xpY2sgPSBjbGVhckRldk92ZXJyaWRlcztcbiAgICAgICAgYXBwRXJyb3JBY3Rpb25CdXR0b25zLmFwcGVuZENoaWxkKGNsZWFyRGV2T3ZlcnJpZGVzQnV0dG9uKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGZyYWdtZW50KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjbGVhckRldk92ZXJyaWRlcygpIHtcbiAgY29uc3Qga2V5c1RvUmVtb3ZlID0gT2JqZWN0LmtleXMobG9jYWxTdG9yYWdlKS5maWx0ZXIoXG4gICAgKGtleSkgPT5cbiAgICAgIGtleS5zdGFydHNXaXRoKCdpbXBvcnQtbWFwLW92ZXJyaWRlOicpICYmXG4gICAgICAhWydpbXBvcnQtbWFwLW92ZXJyaWRlOnJlYWN0JywgJ2ltcG9ydC1tYXAtb3ZlcnJpZGU6cmVhY3QtZG9tJ10uaW5jbHVkZXMoa2V5KSxcbiAgKTtcbiAga2V5c1RvUmVtb3ZlLmZvckVhY2goKGtleSkgPT4gbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oa2V5KSk7XG4gIGxvY2F0aW9uLnJlbG9hZCgpO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVDb25maWdMb2FkZXIoY29uZmlnVXJsczogQXJyYXk8c3RyaW5nPikge1xuICBjb25zdCBsb2FkaW5nQ29uZmlncyA9IFByb21pc2UuYWxsKFxuICAgIGNvbmZpZ1VybHMubWFwKChjb25maWdVcmwpID0+IHtcbiAgICAgIGNvbnN0IGludGVycG9sYXRlZFVybCA9IGludGVycG9sYXRlVXJsKGNvbmZpZ1VybCk7XG4gICAgICByZXR1cm4gZmV0Y2goaW50ZXJwb2xhdGVkVXJsKVxuICAgICAgICAudGhlbigocmVzKSA9PiByZXMuanNvbigpKVxuICAgICAgICAudGhlbigoY29uZmlnKSA9PiAoe1xuICAgICAgICAgIG5hbWU6IGNvbmZpZ1VybCxcbiAgICAgICAgICB2YWx1ZTogY29uZmlnLFxuICAgICAgICB9KSlcbiAgICAgICAgLmNhdGNoKChlcnIpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGBMb2FkaW5nIHRoZSBjb25maWcgZnJvbSBcIiR7Y29uZmlnVXJsfVwiIGZhaWxlZC5gLCBlcnIpO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBuYW1lOiBjb25maWdVcmwsXG4gICAgICAgICAgICB2YWx1ZToge30sXG4gICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgfSksXG4gICk7XG4gIHJldHVybiAoKSA9PiBsb2FkaW5nQ29uZmlncy50aGVuKGxvYWRDb25maWdzKTtcbn1cblxuZnVuY3Rpb24gc2hvd05vdGlmaWNhdGlvbnMoKSB7XG4gIHJlbmRlcklubGluZU5vdGlmaWNhdGlvbnMoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLm9tcnMtaW5saW5lLW5vdGlmaWNhdGlvbnMtY29udGFpbmVyJykpO1xuICByZXR1cm47XG59XG5cbmZ1bmN0aW9uIHNob3dBY3Rpb25hYmxlTm90aWZpY2F0aW9ucygpIHtcbiAgcmVuZGVyQWN0aW9uYWJsZU5vdGlmaWNhdGlvbnMoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLm9tcnMtYWN0aW9uYWJsZS1ub3RpZmljYXRpb25zLWNvbnRhaW5lcicpKTtcbn1cblxuZnVuY3Rpb24gc2hvd1RvYXN0cygpIHtcbiAgcmVuZGVyVG9hc3RzKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5vbXJzLXRvYXN0cy1jb250YWluZXInKSk7XG59XG5cbmZ1bmN0aW9uIHNob3dXb3Jrc3BhY2VzQW5kQWN0aW9uTWVudSgpIHtcbiAgcmVuZGVyV29ya3NwYWNlV2luZG93c0FuZE1lbnUoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI29tcnMtd29ya3NwYWNlcy1jb250YWluZXInKSk7XG59XG5cbmZ1bmN0aW9uIHNob3dTbmFja2JhcnMoKSB7XG4gIHJlbmRlclNuYWNrYmFycyhkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcub21ycy1zbmFja2JhcnMtY29udGFpbmVyJykpO1xufVxuXG5mdW5jdGlvbiBzaG93TW9kYWxzKCkge1xuICBzZXR1cE1vZGFscyhkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcub21ycy1tb2RhbHMtY29udGFpbmVyJykpO1xufVxuXG5mdW5jdGlvbiBzaG93TG9hZGluZ1NwaW5uZXIoKSB7XG4gIHJldHVybiByZW5kZXJMb2FkaW5nU3Bpbm5lcihkb2N1bWVudC5ib2R5KTtcbn1cblxuLyoqXG4gKiBSZWdpc3RlcnMgdGhlIGV4dGVuc2lvbnMgY29taW5nIGZyb20gdGhlIGFwcCBzaGVsbCBpdHNlbGYuXG4gKi9cbmZ1bmN0aW9uIHJlZ2lzdGVyQ29yZUV4dGVuc2lvbnMoKSB7XG4gIGNvbnN0IGV4dGVuc2lvbnMgPSBnZXRDb3JlRXh0ZW5zaW9ucygpO1xuICBmb3IgKGNvbnN0IGV4dGVuc2lvbiBvZiBleHRlbnNpb25zKSB7XG4gICAgLy8gRklYTUUgVGhpcyBcImNvcmUgZXh0ZW5zaW9uc1wiIGNvbmNlcHQgc2hvdWxkIGxpa2VseSBiZSByZXRpcmVkXG4gICAgdHJ5UmVnaXN0ZXJFeHRlbnNpb24oYXBwTmFtZSwgZXh0ZW5zaW9uIGFzIHVua25vd24gYXMgRXh0ZW5zaW9uRGVmaW5pdGlvbik7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gc2V0dXBPZmZsaW5lKCkge1xuICB0cnkge1xuICAgIGF3YWl0IHJlZ2lzdGVyT21yc1NlcnZpY2VXb3JrZXIoYCR7d2luZG93LmdldE9wZW5tcnNTcGFCYXNlKCl9c2VydmljZS13b3JrZXIuanNgKTtcbiAgICBhd2FpdCBhY3RpdmF0ZU9mZmxpbmVDYXBhYmlsaXR5KCk7XG4gICAgc2V0dXBPZmZsaW5lU3RhdGljRGVwZW5kZW5jeVByZWNhY2hpbmcoKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBjb25zb2xlLmVycm9yKCdFcnJvciB3aGlsZSBzZXR0aW5nIHVwIG9mZmxpbmUgbW9kZS4nLCBlcnJvcik7XG4gICAgc2hvd05vdGlmaWNhdGlvbih7XG4gICAgICBraW5kOiAnZXJyb3InLFxuICAgICAgdGl0bGU6ICdPZmZsaW5lIFNldHVwIEVycm9yJyxcbiAgICAgIGRlc2NyaXB0aW9uOiBlcnJvci5tZXNzYWdlLFxuICAgIH0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIHNldHVwT2ZmbGluZVN0YXRpY0RlcGVuZGVuY3lQcmVjYWNoaW5nKCkge1xuICBjb25zdCBwcmVjYWNoZURlbGF5ID0gMTAwMCAqIDYwICogNTtcbiAgbGV0IGxhc3RQcmVjYWNoZTogRGF0ZSB8IG51bGwgPSBudWxsO1xuXG4gIHN1YnNjcmliZU9ubGluZUFuZExvZ2luQ2hhbmdlKChvbmxpbmUsIGhhc0xvZ2dlZEluVXNlcikgPT4ge1xuICAgIGNvbnN0IGhhc0V4Y2VlZGVkUHJlY2FjaGVEZWxheSA9ICFsYXN0UHJlY2FjaGUgfHwgbmV3IERhdGUoKS5nZXRUaW1lKCkgLSBsYXN0UHJlY2FjaGUuZ2V0VGltZSgpID4gcHJlY2FjaGVEZWxheTtcblxuICAgIGlmIChoYXNMb2dnZWRJblVzZXIgJiYgb25saW5lICYmIGhhc0V4Y2VlZGVkUHJlY2FjaGVEZWxheSkge1xuICAgICAgbGFzdFByZWNhY2hlID0gbmV3IERhdGUoKTtcbiAgICAgIGRpc3BhdGNoUHJlY2FjaGVTdGF0aWNEZXBlbmRlbmNpZXMoKTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBzdWJzY3JpYmVPbmxpbmVBbmRMb2dpbkNoYW5nZShjYjogKG9ubGluZTogYm9vbGVhbiwgaGFzTG9nZ2VkSW5Vc2VyOiBib29sZWFuKSA9PiB2b2lkKSB7XG4gIGxldCBpc09ubGluZSA9IGZhbHNlO1xuICBsZXQgaGFzTG9nZ2VkSW5Vc2VyID0gZmFsc2U7XG5cbiAgZ2V0Q3VycmVudFVzZXIoeyBpbmNsdWRlQXV0aFN0YXR1czogZmFsc2UgfSkuc3Vic2NyaWJlKCh1c2VyKSA9PiB7XG4gICAgaGFzTG9nZ2VkSW5Vc2VyID0gISF1c2VyO1xuICAgIGNiKGlzT25saW5lLCBoYXNMb2dnZWRJblVzZXIpO1xuICB9KTtcblxuICBzdWJzY3JpYmVDb25uZWN0aXZpdHkoKHsgb25saW5lIH0pID0+IHtcbiAgICBpc09ubGluZSA9IG9ubGluZTtcbiAgICBjYihvbmxpbmUsIGhhc0xvZ2dlZEluVXNlcik7XG4gIH0pO1xufVxuXG5hc3luYyBmdW5jdGlvbiBwcmVjYWNoZUdsb2JhbFN0YXRpY0RlcGVuZGVuY2llcygpIHtcbiAgYXdhaXQgcHJlY2FjaGVJbXBvcnRNYXAoKTtcblxuICAvLyBCeSBkZWZhdWx0LCBjYWNoZSB0aGUgc2Vzc2lvbiBlbmRwb2ludC5cbiAgLy8gVGhpcyBlbnN1cmVzIHRoYXQgYSBsb3Qgb2YgdXNlci9zZXNzaW9uIHJlbGF0ZWQgZnVuY3Rpb25zIGFsc28gd29yayBvZmZsaW5lLlxuICBjb25zdCBzZXNzaW9uUGF0aFVybCA9IG5ldyBVUkwoYCR7d2luZG93Lm9wZW5tcnNCYXNlfSR7cmVzdEJhc2VVcmx9L3Nlc3Npb25gLCB3aW5kb3cubG9jYXRpb24ub3JpZ2luKS5ocmVmO1xuXG4gIGF3YWl0IG1lc3NhZ2VPbXJzU2VydmljZVdvcmtlcih7XG4gICAgdHlwZTogJ3JlZ2lzdGVyRHluYW1pY1JvdXRlJyxcbiAgICB1cmw6IHNlc3Npb25QYXRoVXJsLFxuICAgIHN0cmF0ZWd5OiAnbmV0d29yay1maXJzdCcsXG4gIH0pO1xuXG4gIGF3YWl0IG9wZW5tcnNGZXRjaChgJHtyZXN0QmFzZVVybH0vc2Vzc2lvbmApLmNhdGNoKChlKSA9PlxuICAgIGNvbnNvbGUud2FybihcbiAgICAgICdGYWlsZWQgdG8gcHJlY2FjaGUgdGhlIHVzZXIgc2Vzc2lvbiBkYXRhIGZyb20gdGhlIGFwcCBzaGVsbC4gTUZzIGRlcGVuZGluZyBvbiB0aGlzIGRhdGEgbWF5IHJ1biBpbnRvIHByb2JsZW1zIHdoaWxlIG9mZmxpbmUuJyxcbiAgICAgIGUsXG4gICAgKSxcbiAgKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcHJlY2FjaGVJbXBvcnRNYXAoKSB7XG4gIGNvbnN0IGltcG9ydE1hcCA9IGF3YWl0IGdldEN1cnJlbnRQYWdlTWFwKCk7XG4gIGF3YWl0IG1lc3NhZ2VPbXJzU2VydmljZVdvcmtlcih7XG4gICAgdHlwZTogJ29uSW1wb3J0TWFwQ2hhbmdlZCcsXG4gICAgaW1wb3J0TWFwLFxuICB9KTtcbn1cblxuZnVuY3Rpb24gcmVnaXN0ZXJPZmZsaW5lSGFuZGxlcnMoKSB7XG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdvZmZsaW5lJywgY29ubmVjdGl2aXR5Q2hhbmdlZCk7XG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdvbmxpbmUnLCBjb25uZWN0aXZpdHlDaGFuZ2VkKTtcbn1cblxuZnVuY3Rpb24gc2V0dXBPZmZsaW5lQ3NzQ2xhc3NlcygpIHtcbiAgc3Vic2NyaWJlQ29ubmVjdGl2aXR5KCh7IG9ubGluZSB9KSA9PiB7XG4gICAgY29uc3QgYm9keSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2JvZHknKSE7XG4gICAgaWYgKG9ubGluZSkge1xuICAgICAgYm9keS5jbGFzc0xpc3QucmVtb3ZlKCdvbXJzLW9mZmxpbmUnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYm9keS5jbGFzc0xpc3QuYWRkKCdvbXJzLW9mZmxpbmUnKTtcbiAgICB9XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcnVuKGNvbmZpZ1VybHM6IEFycmF5PHN0cmluZz4pIHtcbiAgc2V0dXBJbXBvcnRNYXBPdmVycmlkZXMoKTtcblxuICBjb25zdCBvZmZsaW5lRW5hYmxlZCA9IHdpbmRvdy5vZmZsaW5lRW5hYmxlZDtcbiAgY29uc3QgY2xvc2VMb2FkaW5nID0gc2hvd0xvYWRpbmdTcGlubmVyKCk7XG4gIGNvbnN0IHByb3ZpZGVDb25maWdzID0gY3JlYXRlQ29uZmlnTG9hZGVyKGNvbmZpZ1VybHMpO1xuXG4gIHJldHVybiBpbXBvcnQoJ0BvcGVubXJzL2VzbS1zdHlsZWd1aWRlL3NyYy9pbmRleCcpLnRoZW4oKCkgPT4ge1xuICAgIGludGVncmF0ZUJyZWFrcG9pbnRzKCk7XG4gICAgc2hvd1RvYXN0cygpO1xuICAgIHNob3dNb2RhbHMoKTtcbiAgICBzaG93Tm90aWZpY2F0aW9ucygpO1xuICAgIHNob3dBY3Rpb25hYmxlTm90aWZpY2F0aW9ucygpO1xuICAgIHNob3dTbmFja2JhcnMoKTtcbiAgICBzaG93V29ya3NwYWNlc0FuZEFjdGlvbk1lbnUoKTtcbiAgICBzdWJzY3JpYmVOb3RpZmljYXRpb25TaG93bihzaG93Tm90aWZpY2F0aW9uKTtcbiAgICBzdWJzY3JpYmVBY3Rpb25hYmxlTm90aWZpY2F0aW9uU2hvd24oc2hvd0FjdGlvbmFibGVOb3RpZmljYXRpb24pO1xuICAgIHN1YnNjcmliZVRvYXN0U2hvd24oc2hvd1RvYXN0KTtcbiAgICBzdWJzY3JpYmVTbmFja2JhclNob3duKHNob3dTbmFja2Jhcik7XG4gICAgc3Vic2NyaWJlUHJlY2FjaGVTdGF0aWNEZXBlbmRlbmNpZXMocHJlY2FjaGVHbG9iYWxTdGF0aWNEZXBlbmRlbmNpZXMpO1xuICAgIHNldHVwQXBpTW9kdWxlKCk7XG4gICAgc2V0dXBIaXN0b3J5KCk7XG4gICAgcmVnaXN0ZXJDb3JlRXh0ZW5zaW9ucygpO1xuICAgIHNldHVwQ29yZUNvbmZpZygpO1xuXG4gICAgY29uc3QgcG9seWZpbGxSZWFkeSA9XG4gICAgICB0eXBlb2YgSW50bCAhPT0gJ3VuZGVmaW5lZCcgJiYgJ0R1cmF0aW9uRm9ybWF0JyBpbiBJbnRsXG4gICAgICAgID8gUHJvbWlzZS5yZXNvbHZlKClcbiAgICAgICAgOiBpbXBvcnQoXG4gICAgICAgICAgICAvKiB3ZWJwYWNrQ2h1bmtOYW1lOiBcImludGwtZHVyYXRpb25mb3JtYXQtcG9seWZpbGxcIiAqL1xuICAgICAgICAgICAgJ0Bmb3JtYXRqcy9pbnRsLWR1cmF0aW9uZm9ybWF0L2xpYi9wb2x5ZmlsbCdcbiAgICAgICAgICApLnRoZW4oKCkgPT4gdW5kZWZpbmVkKTtcblxuICAgIHJldHVybiBwb2x5ZmlsbFJlYWR5XG4gICAgICAudGhlbihzZXR1cEFwcHMpXG4gICAgICAudGhlbigoKSA9PiBQcm9taXNlLnJlc29sdmUoZmluaXNoUmVnaXN0ZXJpbmdBbGxBcHBzKCkpKVxuICAgICAgLnRoZW4ob2ZmbGluZUVuYWJsZWQgPyBzZXR1cE9mZmxpbmVDc3NDbGFzc2VzIDogdW5kZWZpbmVkKVxuICAgICAgLnRoZW4ob2ZmbGluZUVuYWJsZWQgPyByZWdpc3Rlck9mZmxpbmVIYW5kbGVycyA6IHVuZGVmaW5lZClcbiAgICAgIC50aGVuKHByb3ZpZGVDb25maWdzKVxuICAgICAgLnRoZW4ocnVuU2hlbGwpXG4gICAgICAuY2F0Y2goaGFuZGxlSW5pdEZhaWx1cmUpXG4gICAgICAudGhlbihjbG9zZUxvYWRpbmcpXG4gICAgICAudGhlbihvZmZsaW5lRW5hYmxlZCA/IHNldHVwT2ZmbGluZSA6IHVuZGVmaW5lZClcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgLy8gaW50ZW50aW9uYWxseSBub3QgcmV0dXJuZWQgc28gdGhhdCBwcm9jZXNzaW5nIHRoZSBcInN0YXJ0ZWRcIiBldmVudCBkb2Vzbid0IGJsb2NrXG4gICAgICAgIGZpcmVPcGVubXJzRXZlbnQoJ3N0YXJ0ZWQnKTtcbiAgICAgIH0pO1xuICB9KTtcbn1cbiJdLCJuYW1lcyI6WyJzdGFydCIsInRyaWdnZXJBcHBDaGFuZ2UiLCJhY3RpdmF0ZU9mZmxpbmVDYXBhYmlsaXR5IiwiZGlzcGF0Y2hDb25uZWN0aXZpdHlDaGFuZ2VkIiwiZGlzcGF0Y2hQcmVjYWNoZVN0YXRpY0RlcGVuZGVuY2llcyIsImZpbmlzaFJlZ2lzdGVyaW5nQWxsQXBwcyIsImZpcmVPcGVubXJzRXZlbnQiLCJnZXRDb25maWciLCJnZXRDb3JlVHJhbnNsYXRpb24iLCJnZXRDdXJyZW50UGFnZU1hcCIsImdldEN1cnJlbnRSb3V0ZU1hcCIsImdldEN1cnJlbnRVc2VyIiwiaW50ZWdyYXRlQnJlYWtwb2ludHMiLCJpbnRlcnBvbGF0ZVVybCIsIm1lc3NhZ2VPbXJzU2VydmljZVdvcmtlciIsIm9wZW5tcnNGZXRjaCIsInByb3ZpZGUiLCJyZWdpc3RlckFwcCIsInJlZ2lzdGVyRGVmYXVsdENhbGVuZGFyIiwicmVnaXN0ZXJPbXJzU2VydmljZVdvcmtlciIsInJlbmRlckFjdGlvbmFibGVOb3RpZmljYXRpb25zIiwicmVuZGVySW5saW5lTm90aWZpY2F0aW9ucyIsInJlbmRlckxvYWRpbmdTcGlubmVyIiwicmVuZGVyU25hY2tiYXJzIiwicmVuZGVyVG9hc3RzIiwicmVuZGVyV29ya3NwYWNlV2luZG93c0FuZE1lbnUiLCJyZXN0QmFzZVVybCIsInNldHVwQXBpTW9kdWxlIiwic2V0dXBIaXN0b3J5Iiwic2V0dXBJbXBvcnRNYXBPdmVycmlkZXMiLCJzZXR1cE1vZGFscyIsInNldHVwUm91dGVNYXBPdmVycmlkZXMiLCJzaG93QWN0aW9uYWJsZU5vdGlmaWNhdGlvbiIsInNob3dOb3RpZmljYXRpb24iLCJzaG93U25hY2tiYXIiLCJzaG93VG9hc3QiLCJzdWJzY3JpYmVBY3Rpb25hYmxlTm90aWZpY2F0aW9uU2hvd24iLCJzdWJzY3JpYmVDb25uZWN0aXZpdHkiLCJzdWJzY3JpYmVOb3RpZmljYXRpb25TaG93biIsInN1YnNjcmliZVByZWNhY2hlU3RhdGljRGVwZW5kZW5jaWVzIiwic3Vic2NyaWJlU25hY2tiYXJTaG93biIsInN1YnNjcmliZVRvYXN0U2hvd24iLCJ0cnlSZWdpc3RlckV4dGVuc2lvbiIsInNldHVwSTE4biIsImFwcE5hbWUiLCJnZXRDb3JlRXh0ZW5zaW9ucyIsInNldHVwQ29yZUNvbmZpZyIsIlJFR0lTVFJBVElPTl9QUk9NSVNFUyIsIlN5bWJvbCIsImluaXRpYWxSb3V0ZU1hcCIsInNldHVwQXBwcyIsInJvdXRlcyIsIm1vZHVsZXMiLCJyZWdpc3RyYXRpb25Qcm9taXNlcyIsIk9iamVjdCIsIm1vZHVsZSIsImFwcFJvdXRlcyIsIndpbmRvdyIsIlByb21pc2UiLCJsb2FkQ29uZmlncyIsImNvbmZpZ3MiLCJjb25maWciLCJjb25uZWN0aXZpdHlDaGFuZ2VkIiwib25saW5lIiwibmF2aWdhdG9yIiwicnVuU2hlbGwiLCJlcnIiLCJjb25zb2xlIiwiYXBwbGljYXRpb25WZXJzaW9uIiwidW5kZWZpbmVkIiwicHJlZmVycmVkQ2FsZW5kYXIiLCJlbnRyeSIsImhhbmRsZUluaXRGYWlsdXJlIiwiZSIsInJlbmRlckZhdGFsRXJyb3JQYWdlIiwidGVtcGxhdGUiLCJkb2N1bWVudCIsImZyYWdtZW50IiwibWVzc2FnZUNvbnRhaW5lciIsImxvY2FsU3RvcmFnZSIsImsiLCJhcHBFcnJvckFjdGlvbkJ1dHRvbnMiLCJjbGVhckRldk92ZXJyaWRlc0J1dHRvbiIsImNsZWFyRGV2T3ZlcnJpZGVzIiwia2V5c1RvUmVtb3ZlIiwia2V5IiwibG9jYXRpb24iLCJjcmVhdGVDb25maWdMb2FkZXIiLCJjb25maWdVcmxzIiwibG9hZGluZ0NvbmZpZ3MiLCJjb25maWdVcmwiLCJpbnRlcnBvbGF0ZWRVcmwiLCJmZXRjaCIsInJlcyIsInNob3dOb3RpZmljYXRpb25zIiwic2hvd0FjdGlvbmFibGVOb3RpZmljYXRpb25zIiwic2hvd1RvYXN0cyIsInNob3dXb3Jrc3BhY2VzQW5kQWN0aW9uTWVudSIsInNob3dTbmFja2JhcnMiLCJzaG93TW9kYWxzIiwic2hvd0xvYWRpbmdTcGlubmVyIiwicmVnaXN0ZXJDb3JlRXh0ZW5zaW9ucyIsImV4dGVuc2lvbnMiLCJleHRlbnNpb24iLCJzZXR1cE9mZmxpbmUiLCJzZXR1cE9mZmxpbmVTdGF0aWNEZXBlbmRlbmN5UHJlY2FjaGluZyIsImVycm9yIiwicHJlY2FjaGVEZWxheSIsImxhc3RQcmVjYWNoZSIsInN1YnNjcmliZU9ubGluZUFuZExvZ2luQ2hhbmdlIiwiaGFzTG9nZ2VkSW5Vc2VyIiwiaGFzRXhjZWVkZWRQcmVjYWNoZURlbGF5IiwiRGF0ZSIsImNiIiwiaXNPbmxpbmUiLCJ1c2VyIiwicHJlY2FjaGVHbG9iYWxTdGF0aWNEZXBlbmRlbmNpZXMiLCJwcmVjYWNoZUltcG9ydE1hcCIsInNlc3Npb25QYXRoVXJsIiwiVVJMIiwiaW1wb3J0TWFwIiwicmVnaXN0ZXJPZmZsaW5lSGFuZGxlcnMiLCJzZXR1cE9mZmxpbmVDc3NDbGFzc2VzIiwiYm9keSIsInJ1biIsIm9mZmxpbmVFbmFibGVkIiwiY2xvc2VMb2FkaW5nIiwicHJvdmlkZUNvbmZpZ3MiLCJwb2x5ZmlsbFJlYWR5IiwiSW50bCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFxRDtBQWdEUjtBQUNSO0FBQ1g7QUFDUjtBQUNnQztBQUNGO0FBRWhELFlBQVk7QUFDWixxRUFBcUU7QUFDckUsaUNBQWlDO0FBQ2pDLE1BQU0rQyx3QkFBd0JDLE9BQU87QUFFckMsSUFBSUM7QUFFSjs7Ozs7Q0FLQyxHQUNELGVBQWVDO0lBQ2IsTUFBTW5CLCtFQUFzQkE7SUFDNUIsTUFBTW9CLFNBQVVGLGtCQUFrQixNQUFNdkMsMkVBQWtCQTtJQUUxRCxNQUFNMEMsVUFBMEMsRUFBRTtJQUNsRCxNQUFNQyx1QkFBdUJDLE9BQU8sT0FBTyxDQUFDSCxPQUFPLE1BQU0sRUFBRSxHQUFHLENBQUMsT0FBTyxDQUFDSSxRQUFRQyxVQUFVO1FBQ3ZGSixRQUFRLElBQUksQ0FBQztZQUFDRztZQUFRQztTQUFVO1FBQ2hDdkMsb0VBQVdBLENBQUNzQyxRQUFRQztJQUN0QjtJQUVBQyxNQUFNLENBQUNWLHNCQUFzQixHQUFHVyxR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\n//# sourceURL=webpack-internal:///./src/run.ts\n\n}");
33
+ eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webpack_exports__, {\n run: () => (run)\n});\n/* import */ var single_spa__rspack_import_0 = __webpack_require__(\"webpack/sharing/consume/default/single-spa/single-spa\");\n/* import */ var single_spa__rspack_import_0_default = /*#__PURE__*/__webpack_require__.n(single_spa__rspack_import_0);\n/* import */ var _openmrs_esm_framework_src_internal__rspack_import_1 = __webpack_require__(\"webpack/sharing/consume/default/@openmrs/esm-framework/src/internal/@openmrs/esm-framework/src/internal\");\n/* import */ var _openmrs_esm_framework_src_internal__rspack_import_1_default = /*#__PURE__*/__webpack_require__.n(_openmrs_esm_framework_src_internal__rspack_import_1);\n/* import */ var _locale__rspack_import_2 = __webpack_require__(\"./src/locale.ts\");\n/* import */ var swr_mutation__rspack_import_3 = __webpack_require__(\"webpack/sharing/consume/default/swr/mutation/swr/mutation\");\n/* import */ var swr_mutation__rspack_import_3_default = /*#__PURE__*/__webpack_require__.n(swr_mutation__rspack_import_3);\n/* import */ var swr_subscription__rspack_import_4 = __webpack_require__(\"webpack/sharing/consume/default/swr/subscription/swr/subscription\");\n/* import */ var swr_subscription__rspack_import_4_default = /*#__PURE__*/__webpack_require__.n(swr_subscription__rspack_import_4);\n/* import */ var _routing_events__rspack_import_5 = __webpack_require__(\"./src/routing-events.ts\");\n/* import */ var _events__rspack_import_6 = __webpack_require__(\"./src/events.ts\");\n/* import */ var _ui__rspack_import_7 = __webpack_require__(\"./src/ui/index.ts\");\n/* import */ var _core_config__rspack_import_8 = __webpack_require__(\"./src/core-config.ts\");\n\n\n\n// imported so we create the MF shares for these\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\nconst REGISTRATION_PROMISES = Symbol('openmrs_registration_promises');\nlet initialRouteMap;\n/**\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 function setupApps() {\n await (0,_openmrs_esm_framework_src_internal__rspack_import_1.setupRouteMapOverrides)();\n const routes = initialRouteMap = await (0,_openmrs_esm_framework_src_internal__rspack_import_1.getCurrentRouteMap)();\n const modules = [];\n const registrationPromises = Object.entries(routes.routes).map(async ([module, appRoutes])=>{\n modules.push([\n module,\n appRoutes\n ]);\n (0,_openmrs_esm_framework_src_internal__rspack_import_1.registerApp)(module, appRoutes);\n });\n window[REGISTRATION_PROMISES] = Promise.all(registrationPromises);\n Object.defineProperty(window, 'installedModules', {\n value: modules,\n writable: false,\n configurable: false\n });\n}\n/**\n * Loads the provided configurations and sets them in the system.\n */ async function loadConfigs(configs) {\n for (const config of configs){\n (0,_openmrs_esm_framework_src_internal__rspack_import_1.provide)(config.value, config.name);\n }\n}\n/**\n * Invoked when the connectivity is changed.\n */ function connectivityChanged() {\n if (!window.offlineEnabled) {\n return;\n }\n const online = navigator.onLine;\n // NB We do not wait for this to be done; it is simply scheduled\n (0,single_spa__rspack_import_0.triggerAppChange)();\n (0,_openmrs_esm_framework_src_internal__rspack_import_1.dispatchConnectivityChanged)(online);\n (0,_openmrs_esm_framework_src_internal__rspack_import_1.showToast)({\n critical: true,\n description: `Connection: ${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 */ async function runShell() {\n try {\n await (0,_locale__rspack_import_2.setupI18n)();\n } catch (err) {\n console.error(`Failed to initialize translation system`, err);\n }\n const applicationVersion = initialRouteMap.version;\n if (applicationVersion === undefined || applicationVersion === null || applicationVersion.trim().length === 0) {\n Object.defineProperty(window, 'applicationVersion', {\n value: undefined,\n writable: false,\n configurable: false\n });\n } else if (applicationVersion === 'prerelease') {\n Object.defineProperty(window, 'applicationVersion', {\n value: window.spaVersion === 'local' ? (0,_openmrs_esm_framework_src_internal__rspack_import_1.getCoreTranslation)('localVersion') : (0,_openmrs_esm_framework_src_internal__rspack_import_1.getCoreTranslation)('prereleaseVersion'),\n writable: false,\n configurable: false\n });\n } else {\n Object.defineProperty(window, 'applicationVersion', {\n value: applicationVersion,\n writable: false,\n configurable: false\n });\n }\n const { preferredCalendar } = await (0,_openmrs_esm_framework_src_internal__rspack_import_1.getConfig)('@openmrs/esm-styleguide');\n for (const entry of Object.entries(preferredCalendar)){\n (0,_openmrs_esm_framework_src_internal__rspack_import_1.registerDefaultCalendar)(entry[0], entry[1]);\n }\n (0,single_spa__rspack_import_0.start)();\n}\nfunction handleInitFailure(e) {\n console.error(e);\n renderFatalErrorPage(e);\n}\nfunction renderFatalErrorPage(e) {\n const template = document.querySelector('#app-error');\n if (template) {\n const fragment = template.content.cloneNode(true);\n const messageContainer = fragment.querySelector('[data-var=\"message\"]');\n if (messageContainer) {\n messageContainer.textContent = e?.message || 'No additional information available.';\n }\n if (localStorage.getItem('openmrs:devtools') && Object.keys(localStorage).some((k)=>k.startsWith('import-map-override:'))) {\n const appErrorActionButtons = fragment?.querySelector('#buttons');\n if (appErrorActionButtons) {\n const 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 const keysToRemove = Object.keys(localStorage).filter((key)=>key.startsWith('import-map-override:') && ![\n 'import-map-override:react',\n 'import-map-override:react-dom'\n ].includes(key));\n keysToRemove.forEach((key)=>localStorage.removeItem(key));\n location.reload();\n}\nfunction createConfigLoader(configUrls) {\n const loadingConfigs = Promise.all(configUrls.map((configUrl)=>{\n const interpolatedUrl = (0,_openmrs_esm_framework_src_internal__rspack_import_1.interpolateUrl)(configUrl);\n return fetch(interpolatedUrl).then((res)=>res.json()).then((config)=>({\n name: configUrl,\n value: config\n })).catch((err)=>{\n console.error(`Loading the config from \"${configUrl}\" failed.`, err);\n return {\n name: configUrl,\n value: {}\n };\n });\n }));\n return ()=>loadingConfigs.then(loadConfigs);\n}\nfunction showNotifications() {\n (0,_openmrs_esm_framework_src_internal__rspack_import_1.renderInlineNotifications)(document.querySelector('.omrs-inline-notifications-container'));\n return;\n}\nfunction showActionableNotifications() {\n (0,_openmrs_esm_framework_src_internal__rspack_import_1.renderActionableNotifications)(document.querySelector('.omrs-actionable-notifications-container'));\n}\nfunction showToasts() {\n (0,_openmrs_esm_framework_src_internal__rspack_import_1.renderToasts)(document.querySelector('.omrs-toasts-container'));\n}\nfunction showWorkspacesAndActionMenu() {\n (0,_openmrs_esm_framework_src_internal__rspack_import_1.renderWorkspaceWindowsAndMenu)(document.querySelector('#omrs-workspaces-container'));\n}\nfunction showSnackbars() {\n (0,_openmrs_esm_framework_src_internal__rspack_import_1.renderSnackbars)(document.querySelector('.omrs-snackbars-container'));\n}\nfunction showModals() {\n (0,_openmrs_esm_framework_src_internal__rspack_import_1.setupModals)(document.querySelector('.omrs-modals-container'));\n}\nfunction showLoadingSpinner() {\n return (0,_openmrs_esm_framework_src_internal__rspack_import_1.renderLoadingSpinner)(document.body);\n}\n/**\n * Registers the extensions coming from the app shell itself.\n */ function registerCoreExtensions() {\n const extensions = (0,_ui__rspack_import_7.getCoreExtensions)();\n for (const extension of extensions){\n // FIXME This \"core extensions\" concept should likely be retired\n (0,_openmrs_esm_framework_src_internal__rspack_import_1.tryRegisterExtension)(_ui__rspack_import_7.appName, extension);\n }\n}\nasync function setupOffline() {\n try {\n await (0,_openmrs_esm_framework_src_internal__rspack_import_1.registerOmrsServiceWorker)(`${window.getOpenmrsSpaBase()}service-worker.js`);\n await (0,_openmrs_esm_framework_src_internal__rspack_import_1.activateOfflineCapability)();\n setupOfflineStaticDependencyPrecaching();\n } catch (error) {\n console.error('Error while setting up offline mode.', error);\n (0,_openmrs_esm_framework_src_internal__rspack_import_1.showNotification)({\n kind: 'error',\n title: 'Offline Setup Error',\n description: error.message\n });\n }\n}\nfunction setupOfflineStaticDependencyPrecaching() {\n const precacheDelay = 1000 * 60 * 5;\n let lastPrecache = null;\n subscribeOnlineAndLoginChange((online, hasLoggedInUser)=>{\n const hasExceededPrecacheDelay = !lastPrecache || new Date().getTime() - lastPrecache.getTime() > precacheDelay;\n if (hasLoggedInUser && online && hasExceededPrecacheDelay) {\n lastPrecache = new Date();\n (0,_openmrs_esm_framework_src_internal__rspack_import_1.dispatchPrecacheStaticDependencies)();\n }\n });\n}\nfunction subscribeOnlineAndLoginChange(cb) {\n let isOnline = false;\n let hasLoggedInUser = false;\n (0,_openmrs_esm_framework_src_internal__rspack_import_1.getCurrentUser)({\n includeAuthStatus: false\n }).subscribe((user)=>{\n hasLoggedInUser = !!user;\n cb(isOnline, hasLoggedInUser);\n });\n (0,_openmrs_esm_framework_src_internal__rspack_import_1.subscribeConnectivity)(({ online })=>{\n isOnline = online;\n cb(online, hasLoggedInUser);\n });\n}\nasync function precacheGlobalStaticDependencies() {\n await precacheImportMap();\n // By default, cache the session endpoint.\n // This ensures that a lot of user/session related functions also work offline.\n const sessionPathUrl = new URL(`${window.openmrsBase}${_openmrs_esm_framework_src_internal__rspack_import_1.restBaseUrl}/session`, window.location.origin).href;\n await (0,_openmrs_esm_framework_src_internal__rspack_import_1.messageOmrsServiceWorker)({\n type: 'registerDynamicRoute',\n url: sessionPathUrl,\n strategy: 'network-first'\n });\n await (0,_openmrs_esm_framework_src_internal__rspack_import_1.openmrsFetch)(`${_openmrs_esm_framework_src_internal__rspack_import_1.restBaseUrl}/session`).catch((e)=>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}\nasync function precacheImportMap() {\n const importMap = await (0,_openmrs_esm_framework_src_internal__rspack_import_1.getCurrentPageMap)();\n await (0,_openmrs_esm_framework_src_internal__rspack_import_1.messageOmrsServiceWorker)({\n type: 'onImportMapChanged',\n importMap\n });\n}\nfunction registerOfflineHandlers() {\n window.addEventListener('offline', connectivityChanged);\n window.addEventListener('online', connectivityChanged);\n}\nfunction setupOfflineCssClasses() {\n (0,_openmrs_esm_framework_src_internal__rspack_import_1.subscribeConnectivity)(({ online })=>{\n const 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) {\n (0,_openmrs_esm_framework_src_internal__rspack_import_1.setupImportMapOverrides)();\n const offlineEnabled = window.offlineEnabled;\n const closeLoading = showLoadingSpinner();\n const provideConfigs = createConfigLoader(configUrls);\n return __webpack_require__.e(/* import() */ \"default-framework_esm-styleguide_dist_index_js\").then(__webpack_require__.bind(__webpack_require__, \"../../framework/esm-styleguide/dist/index.js\")).then(()=>{\n (0,_openmrs_esm_framework_src_internal__rspack_import_1.integrateBreakpoints)();\n showToasts();\n showModals();\n showNotifications();\n showActionableNotifications();\n showSnackbars();\n showWorkspacesAndActionMenu();\n (0,_openmrs_esm_framework_src_internal__rspack_import_1.subscribeNotificationShown)(_openmrs_esm_framework_src_internal__rspack_import_1.showNotification);\n (0,_openmrs_esm_framework_src_internal__rspack_import_1.subscribeActionableNotificationShown)(_openmrs_esm_framework_src_internal__rspack_import_1.showActionableNotification);\n (0,_openmrs_esm_framework_src_internal__rspack_import_1.subscribeToastShown)(_openmrs_esm_framework_src_internal__rspack_import_1.showToast);\n (0,_openmrs_esm_framework_src_internal__rspack_import_1.subscribeSnackbarShown)(_openmrs_esm_framework_src_internal__rspack_import_1.showSnackbar);\n (0,_openmrs_esm_framework_src_internal__rspack_import_1.subscribePrecacheStaticDependencies)(precacheGlobalStaticDependencies);\n (0,_openmrs_esm_framework_src_internal__rspack_import_1.setupApiModule)();\n (0,_openmrs_esm_framework_src_internal__rspack_import_1.setupHistory)();\n registerCoreExtensions();\n (0,_core_config__rspack_import_8.setupCoreConfig)();\n const polyfillReady = typeof Intl !== 'undefined' && 'DurationFormat' in Intl ? Promise.resolve() : Promise.all(/* import() | intl-durationformat-polyfill */ [__webpack_require__.e(\"default-node_modules_tslib_tslib_es6_mjs\"), __webpack_require__.e(\"intl-durationformat-polyfill\")]).then(__webpack_require__.bind(__webpack_require__, \"../../../node_modules/@formatjs/intl-durationformat/lib/polyfill.js\")).then(()=>undefined);\n return polyfillReady.then(setupApps).then(()=>Promise.resolve((0,_openmrs_esm_framework_src_internal__rspack_import_1.finishRegisteringAllApps)())).then(offlineEnabled ? setupOfflineCssClasses : undefined).then(offlineEnabled ? registerOfflineHandlers : undefined).then(provideConfigs).then(runShell).catch(handleInitFailure).then(closeLoading).then(offlineEnabled ? setupOffline : undefined).then(()=>{\n // intentionally not returned so that processing the \"started\" event doesn't block\n (0,_openmrs_esm_framework_src_internal__rspack_import_1.fireOpenmrsEvent)('started');\n });\n });\n}\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbHRpbjpzd2MtbG9hZGVyPz9ydWxlU2V0WzFdLnJ1bGVzWzVdLnVzZVswXSEvaG9tZS9ydW5uZXIvd29yay9vcGVubXJzLWVzbS1jb3JlL29wZW5tcnMtZXNtLWNvcmUvcGFja2FnZXMvc2hlbGwvZXNtLWFwcC1zaGVsbC9zcmMvcnVuLnRzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQG9wZW5tcnMvZXNtLWFwcC1zaGVsbC8uL3NyYy9ydW4udHM/Njg1ZSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzdGFydCwgdHJpZ2dlckFwcENoYW5nZSB9IGZyb20gJ3NpbmdsZS1zcGEnO1xuaW1wb3J0IHsgdHlwZSBDYWxlbmRhcklkZW50aWZpZXIgfSBmcm9tICdAaW50ZXJuYXRpb25hbGl6ZWQvZGF0ZSc7XG5pbXBvcnQge1xuICBhY3RpdmF0ZU9mZmxpbmVDYXBhYmlsaXR5LFxuICB0eXBlIENvbmZpZyxcbiAgZGlzcGF0Y2hDb25uZWN0aXZpdHlDaGFuZ2VkLFxuICBkaXNwYXRjaFByZWNhY2hlU3RhdGljRGVwZW5kZW5jaWVzLFxuICB0eXBlIEV4dGVuc2lvbkRlZmluaXRpb24sXG4gIGZpbmlzaFJlZ2lzdGVyaW5nQWxsQXBwcyxcbiAgZmlyZU9wZW5tcnNFdmVudCxcbiAgZ2V0Q29uZmlnLFxuICBnZXRDb3JlVHJhbnNsYXRpb24sXG4gIGdldEN1cnJlbnRQYWdlTWFwLFxuICBnZXRDdXJyZW50Um91dGVNYXAsXG4gIGdldEN1cnJlbnRVc2VyLFxuICBpbnRlZ3JhdGVCcmVha3BvaW50cyxcbiAgaW50ZXJwb2xhdGVVcmwsXG4gIG1lc3NhZ2VPbXJzU2VydmljZVdvcmtlcixcbiAgb3Blbm1yc0ZldGNoLFxuICB0eXBlIE9wZW5tcnNSb3V0ZXMsXG4gIHByb3ZpZGUsXG4gIHJlZ2lzdGVyQXBwLFxuICByZWdpc3RlckRlZmF1bHRDYWxlbmRhcixcbiAgcmVnaXN0ZXJPbXJzU2VydmljZVdvcmtlcixcbiAgcmVuZGVyQWN0aW9uYWJsZU5vdGlmaWNhdGlvbnMsXG4gIHJlbmRlcklubGluZU5vdGlmaWNhdGlvbnMsXG4gIHJlbmRlckxvYWRpbmdTcGlubmVyLFxuICByZW5kZXJTbmFja2JhcnMsXG4gIHJlbmRlclRvYXN0cyxcbiAgcmVuZGVyV29ya3NwYWNlV2luZG93c0FuZE1lbnUsXG4gIHJlc3RCYXNlVXJsLFxuICBzZXR1cEFwaU1vZHVsZSxcbiAgc2V0dXBIaXN0b3J5LFxuICBzZXR1cEltcG9ydE1hcE92ZXJyaWRlcyxcbiAgc2V0dXBNb2RhbHMsXG4gIHNldHVwUm91dGVNYXBPdmVycmlkZXMsXG4gIHNob3dBY3Rpb25hYmxlTm90aWZpY2F0aW9uLFxuICBzaG93Tm90aWZpY2F0aW9uLFxuICBzaG93U25hY2tiYXIsXG4gIHNob3dUb2FzdCxcbiAgc3Vic2NyaWJlQWN0aW9uYWJsZU5vdGlmaWNhdGlvblNob3duLFxuICBzdWJzY3JpYmVDb25uZWN0aXZpdHksXG4gIHN1YnNjcmliZU5vdGlmaWNhdGlvblNob3duLFxuICBzdWJzY3JpYmVQcmVjYWNoZVN0YXRpY0RlcGVuZGVuY2llcyxcbiAgc3Vic2NyaWJlU25hY2tiYXJTaG93bixcbiAgc3Vic2NyaWJlVG9hc3RTaG93bixcbiAgdHlwZSBTdHlsZWd1aWRlQ29uZmlnT2JqZWN0LFxuICB0cnlSZWdpc3RlckV4dGVuc2lvbixcbn0gZnJvbSAnQG9wZW5tcnMvZXNtLWZyYW1ld29yay9zcmMvaW50ZXJuYWwnO1xuaW1wb3J0IHsgc2V0dXBJMThuIH0gZnJvbSAnLi9sb2NhbGUnO1xuLy8gaW1wb3J0ZWQgc28gd2UgY3JlYXRlIHRoZSBNRiBzaGFyZXMgZm9yIHRoZXNlXG5pbXBvcnQgJ3N3ci9tdXRhdGlvbic7XG5pbXBvcnQgJ3N3ci9zdWJzY3JpcHRpb24nO1xuaW1wb3J0ICcuL3JvdXRpbmctZXZlbnRzJztcbmltcG9ydCAnLi9ldmVudHMnO1xuaW1wb3J0IHsgYXBwTmFtZSwgZ2V0Q29yZUV4dGVuc2lvbnMgfSBmcm9tICcuL3VpJztcbmltcG9ydCB7IHNldHVwQ29yZUNvbmZpZyB9IGZyb20gJy4vY29yZS1jb25maWcnO1xuXG4vLyBAaW50ZXJuYWxcbi8vIHVzZWQgdG8gdHJhY2sgd2hlbiB0aGUgd2luZG93Lmluc3RhbGxlZE1vZHVsZXMgZ2xvYmFsIGlzIGZpbmFsaXNlZFxuLy8gc28gd2UgY2FuIHByZS1sb2FkIGFsbCBtb2R1bGVzXG5jb25zdCBSRUdJU1RSQVRJT05fUFJPTUlTRVMgPSBTeW1ib2woJ29wZW5tcnNfcmVnaXN0cmF0aW9uX3Byb21pc2VzJyk7XG5cbmxldCBpbml0aWFsUm91dGVNYXA6IE9wZW5tcnNSb3V0ZXM7XG5cbi8qKlxuICogU2V0cyB1cCB0aGUgZnJvbnRlbmQgbW9kdWxlcyAoYXBwcykuIFVzZXMgdGhlIGRlZmluZWQgZXhwb3J0XG4gKiBmcm9tIHRoZSByb290IG1vZHVsZXMgb2YgdGhlIGFwcHMuIFRoaXMgaXMgZG9uZSBieSByZWFkaW5nIHRoZVxuICogbGlzdCBvZiBhcHBzIGZyb20gdGhlIHJvdXRlcy5yZWdpc3RyeS5qc29uIGZpbGUsIHdoaWNoIHNlcnZlc1xuICogYXMgdGhlIHJlZ2lzdHJ5IG9mIGFsbCBhcHBzIGluIHRoZSBhcHBsaWNhdGlvbi5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gc2V0dXBBcHBzKCkge1xuICBhd2FpdCBzZXR1cFJvdXRlTWFwT3ZlcnJpZGVzKCk7XG4gIGNvbnN0IHJvdXRlcyA9IChpbml0aWFsUm91dGVNYXAgPSBhd2FpdCBnZXRDdXJyZW50Um91dGVNYXAoKSk7XG5cbiAgY29uc3QgbW9kdWxlczogdHlwZW9mIHdpbmRvdy5pbnN0YWxsZWRNb2R1bGVzID0gW107XG4gIGNvbnN0IHJlZ2lzdHJhdGlvblByb21pc2VzID0gT2JqZWN0LmVudHJpZXMocm91dGVzLnJvdXRlcykubWFwKGFzeW5jIChbbW9kdWxlLCBhcHBSb3V0ZXNdKSA9PiB7XG4gICAgbW9kdWxlcy5wdXNoKFttb2R1bGUsIGFwcFJvdXRlc10pO1xuICAgIHJlZ2lzdGVyQXBwKG1vZHVsZSwgYXBwUm91dGVzKTtcbiAgfSk7XG5cbiAgd2luZG93W1JFR0lTVFJBVElPTl9QUk9NSVNFU10gPSBQcm9taXNlLmFsbChyZWdpc3RyYXRpb25Qcm9taXNlcyk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh3aW5kb3csICdpbnN0YWxsZWRNb2R1bGVzJywge1xuICAgIHZhbHVlOiBtb2R1bGVzLFxuICAgIHdyaXRhYmxlOiBmYWxzZSxcbiAgICBjb25maWd1cmFibGU6IGZhbHNlLFxuICB9KTtcbn1cblxuLyoqXG4gKiBMb2FkcyB0aGUgcHJvdmlkZWQgY29uZmlndXJhdGlvbnMgYW5kIHNldHMgdGhlbSBpbiB0aGUgc3lzdGVtLlxuICovXG5hc3luYyBmdW5jdGlvbiBsb2FkQ29uZmlncyhjb25maWdzOiBBcnJheTx7IG5hbWU6IHN0cmluZzsgdmFsdWU6IENvbmZpZyB9Pikge1xuICBmb3IgKGNvbnN0IGNvbmZpZyBvZiBjb25maWdzKSB7XG4gICAgcHJvdmlkZShjb25maWcudmFsdWUsIGNvbmZpZy5uYW1lKTtcbiAgfVxufVxuXG4vKipcbiAqIEludm9rZWQgd2hlbiB0aGUgY29ubmVjdGl2aXR5IGlzIGNoYW5nZWQuXG4gKi9cbmZ1bmN0aW9uIGNvbm5lY3Rpdml0eUNoYW5nZWQoKSB7XG4gIGlmICghd2luZG93Lm9mZmxpbmVFbmFibGVkKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3Qgb25saW5lID0gbmF2aWdhdG9yLm9uTGluZTtcbiAgLy8gTkIgV2UgZG8gbm90IHdhaXQgZm9yIHRoaXMgdG8gYmUgZG9uZTsgaXQgaXMgc2ltcGx5IHNjaGVkdWxlZFxuICB0cmlnZ2VyQXBwQ2hhbmdlKCk7XG5cbiAgZGlzcGF0Y2hDb25uZWN0aXZpdHlDaGFuZ2VkKG9ubGluZSk7XG4gIHNob3dUb2FzdCh7XG4gICAgY3JpdGljYWw6IHRydWUsXG4gICAgZGVzY3JpcHRpb246IGBDb25uZWN0aW9uOiAke29ubGluZSA/ICdvbmxpbmUnIDogJ29mZmxpbmUnfWAsXG4gICAgdGl0bGU6ICdBcHAnLFxuICAgIGtpbmQ6IG9ubGluZSA/ICdzdWNjZXNzJyA6ICd3YXJuaW5nJyxcbiAgfSk7XG59XG5cbi8qKlxuICogUnVucyB0aGUgc2hlbGwgYnkgaW1wb3J0aW5nIHRoZSB0cmFuc2xhdGlvbnMgYW5kIHN0YXJ0aW5nIHNpbmdsZSBTUEEuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHJ1blNoZWxsKCkge1xuICB0cnkge1xuICAgIGF3YWl0IHNldHVwSTE4bigpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjb25zb2xlLmVycm9yKGBGYWlsZWQgdG8gaW5pdGlhbGl6ZSB0cmFuc2xhdGlvbiBzeXN0ZW1gLCBlcnIpO1xuICB9XG5cbiAgY29uc3QgYXBwbGljYXRpb25WZXJzaW9uID0gaW5pdGlhbFJvdXRlTWFwLnZlcnNpb247XG4gIGlmIChhcHBsaWNhdGlvblZlcnNpb24gPT09IHVuZGVmaW5lZCB8fCBhcHBsaWNhdGlvblZlcnNpb24gPT09IG51bGwgfHwgYXBwbGljYXRpb25WZXJzaW9uLnRyaW0oKS5sZW5ndGggPT09IDApIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkod2luZG93LCAnYXBwbGljYXRpb25WZXJzaW9uJywge1xuICAgICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgIHdyaXRhYmxlOiBmYWxzZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgfSk7XG4gIH0gZWxzZSBpZiAoYXBwbGljYXRpb25WZXJzaW9uID09PSAncHJlcmVsZWFzZScpIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkod2luZG93LCAnYXBwbGljYXRpb25WZXJzaW9uJywge1xuICAgICAgdmFsdWU6XG4gICAgICAgIHdpbmRvdy5zcGFWZXJzaW9uID09PSAnbG9jYWwnID8gZ2V0Q29yZVRyYW5zbGF0aW9uKCdsb2NhbFZlcnNpb24nKSA6IGdldENvcmVUcmFuc2xhdGlvbigncHJlcmVsZWFzZVZlcnNpb24nKSxcbiAgICAgIHdyaXRhYmxlOiBmYWxzZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdywgJ2FwcGxpY2F0aW9uVmVyc2lvbicsIHtcbiAgICAgIHZhbHVlOiBhcHBsaWNhdGlvblZlcnNpb24sXG4gICAgICB3cml0YWJsZTogZmFsc2UsXG4gICAgICBjb25maWd1cmFibGU6IGZhbHNlLFxuICAgIH0pO1xuICB9XG5cbiAgY29uc3QgeyBwcmVmZXJyZWRDYWxlbmRhciB9ID0gYXdhaXQgZ2V0Q29uZmlnPFN0eWxlZ3VpZGVDb25maWdPYmplY3Q+KCdAb3Blbm1ycy9lc20tc3R5bGVndWlkZScpO1xuICBmb3IgKGNvbnN0IGVudHJ5IG9mIE9iamVjdC5lbnRyaWVzKHByZWZlcnJlZENhbGVuZGFyKSkge1xuICAgIHJlZ2lzdGVyRGVmYXVsdENhbGVuZGFyKGVudHJ5WzBdLCBlbnRyeVsxXSBhcyBDYWxlbmRhcklkZW50aWZpZXIpO1xuICB9XG5cbiAgc3RhcnQoKTtcbn1cblxuZnVuY3Rpb24gaGFuZGxlSW5pdEZhaWx1cmUoZTogRXJyb3IpIHtcbiAgY29uc29sZS5lcnJvcihlKTtcbiAgcmVuZGVyRmF0YWxFcnJvclBhZ2UoZSk7XG59XG5cbmZ1bmN0aW9uIHJlbmRlckZhdGFsRXJyb3JQYWdlKGU/OiBFcnJvcikge1xuICBjb25zdCB0ZW1wbGF0ZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3I8SFRNTFRlbXBsYXRlRWxlbWVudD4oJyNhcHAtZXJyb3InKTtcblxuICBpZiAodGVtcGxhdGUpIHtcbiAgICBjb25zdCBmcmFnbWVudCA9IHRlbXBsYXRlLmNvbnRlbnQuY2xvbmVOb2RlKHRydWUpIGFzIERvY3VtZW50RnJhZ21lbnQ7XG4gICAgY29uc3QgbWVzc2FnZUNvbnRhaW5lciA9IGZyYWdtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLXZhcj1cIm1lc3NhZ2VcIl0nKTtcblxuICAgIGlmIChtZXNzYWdlQ29udGFpbmVyKSB7XG4gICAgICBtZXNzYWdlQ29udGFpbmVyLnRleHRDb250ZW50ID0gZT8ubWVzc2FnZSB8fCAnTm8gYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhdmFpbGFibGUuJztcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnb3Blbm1yczpkZXZ0b29scycpICYmXG4gICAgICBPYmplY3Qua2V5cyhsb2NhbFN0b3JhZ2UpLnNvbWUoKGspID0+IGsuc3RhcnRzV2l0aCgnaW1wb3J0LW1hcC1vdmVycmlkZTonKSlcbiAgICApIHtcbiAgICAgIGNvbnN0IGFwcEVycm9yQWN0aW9uQnV0dG9ucyA9IGZyYWdtZW50Py5xdWVyeVNlbGVjdG9yKCcjYnV0dG9ucycpO1xuICAgICAgaWYgKGFwcEVycm9yQWN0aW9uQnV0dG9ucykge1xuICAgICAgICBjb25zdCBjbGVhckRldk92ZXJyaWRlc0J1dHRvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpO1xuICAgICAgICBjbGVhckRldk92ZXJyaWRlc0J1dHRvbi5jbGFzc05hbWUgPSAnY2RzLS1idG4nO1xuICAgICAgICBjbGVhckRldk92ZXJyaWRlc0J1dHRvbi5pbm5lckhUTUwgPSAnQ2xlYXIgZGV2IG92ZXJyaWRlcyc7XG4gICAgICAgIGNsZWFyRGV2T3ZlcnJpZGVzQnV0dG9uLm9uY2xpY2sgPSBjbGVhckRldk92ZXJyaWRlcztcbiAgICAgICAgYXBwRXJyb3JBY3Rpb25CdXR0b25zLmFwcGVuZENoaWxkKGNsZWFyRGV2T3ZlcnJpZGVzQnV0dG9uKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGZyYWdtZW50KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjbGVhckRldk92ZXJyaWRlcygpIHtcbiAgY29uc3Qga2V5c1RvUmVtb3ZlID0gT2JqZWN0LmtleXMobG9jYWxTdG9yYWdlKS5maWx0ZXIoXG4gICAgKGtleSkgPT5cbiAgICAgIGtleS5zdGFydHNXaXRoKCdpbXBvcnQtbWFwLW92ZXJyaWRlOicpICYmXG4gICAgICAhWydpbXBvcnQtbWFwLW92ZXJyaWRlOnJlYWN0JywgJ2ltcG9ydC1tYXAtb3ZlcnJpZGU6cmVhY3QtZG9tJ10uaW5jbHVkZXMoa2V5KSxcbiAgKTtcbiAga2V5c1RvUmVtb3ZlLmZvckVhY2goKGtleSkgPT4gbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oa2V5KSk7XG4gIGxvY2F0aW9uLnJlbG9hZCgpO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVDb25maWdMb2FkZXIoY29uZmlnVXJsczogQXJyYXk8c3RyaW5nPikge1xuICBjb25zdCBsb2FkaW5nQ29uZmlncyA9IFByb21pc2UuYWxsKFxuICAgIGNvbmZpZ1VybHMubWFwKChjb25maWdVcmwpID0+IHtcbiAgICAgIGNvbnN0IGludGVycG9sYXRlZFVybCA9IGludGVycG9sYXRlVXJsKGNvbmZpZ1VybCk7XG4gICAgICByZXR1cm4gZmV0Y2goaW50ZXJwb2xhdGVkVXJsKVxuICAgICAgICAudGhlbigocmVzKSA9PiByZXMuanNvbigpKVxuICAgICAgICAudGhlbigoY29uZmlnKSA9PiAoe1xuICAgICAgICAgIG5hbWU6IGNvbmZpZ1VybCxcbiAgICAgICAgICB2YWx1ZTogY29uZmlnLFxuICAgICAgICB9KSlcbiAgICAgICAgLmNhdGNoKChlcnIpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGBMb2FkaW5nIHRoZSBjb25maWcgZnJvbSBcIiR7Y29uZmlnVXJsfVwiIGZhaWxlZC5gLCBlcnIpO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBuYW1lOiBjb25maWdVcmwsXG4gICAgICAgICAgICB2YWx1ZToge30sXG4gICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgfSksXG4gICk7XG4gIHJldHVybiAoKSA9PiBsb2FkaW5nQ29uZmlncy50aGVuKGxvYWRDb25maWdzKTtcbn1cblxuZnVuY3Rpb24gc2hvd05vdGlmaWNhdGlvbnMoKSB7XG4gIHJlbmRlcklubGluZU5vdGlmaWNhdGlvbnMoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLm9tcnMtaW5saW5lLW5vdGlmaWNhdGlvbnMtY29udGFpbmVyJykpO1xuICByZXR1cm47XG59XG5cbmZ1bmN0aW9uIHNob3dBY3Rpb25hYmxlTm90aWZpY2F0aW9ucygpIHtcbiAgcmVuZGVyQWN0aW9uYWJsZU5vdGlmaWNhdGlvbnMoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLm9tcnMtYWN0aW9uYWJsZS1ub3RpZmljYXRpb25zLWNvbnRhaW5lcicpKTtcbn1cblxuZnVuY3Rpb24gc2hvd1RvYXN0cygpIHtcbiAgcmVuZGVyVG9hc3RzKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5vbXJzLXRvYXN0cy1jb250YWluZXInKSk7XG59XG5cbmZ1bmN0aW9uIHNob3dXb3Jrc3BhY2VzQW5kQWN0aW9uTWVudSgpIHtcbiAgcmVuZGVyV29ya3NwYWNlV2luZG93c0FuZE1lbnUoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI29tcnMtd29ya3NwYWNlcy1jb250YWluZXInKSk7XG59XG5cbmZ1bmN0aW9uIHNob3dTbmFja2JhcnMoKSB7XG4gIHJlbmRlclNuYWNrYmFycyhkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcub21ycy1zbmFja2JhcnMtY29udGFpbmVyJykpO1xufVxuXG5mdW5jdGlvbiBzaG93TW9kYWxzKCkge1xuICBzZXR1cE1vZGFscyhkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcub21ycy1tb2RhbHMtY29udGFpbmVyJykpO1xufVxuXG5mdW5jdGlvbiBzaG93TG9hZGluZ1NwaW5uZXIoKSB7XG4gIHJldHVybiByZW5kZXJMb2FkaW5nU3Bpbm5lcihkb2N1bWVudC5ib2R5KTtcbn1cblxuLyoqXG4gKiBSZWdpc3RlcnMgdGhlIGV4dGVuc2lvbnMgY29taW5nIGZyb20gdGhlIGFwcCBzaGVsbCBpdHNlbGYuXG4gKi9cbmZ1bmN0aW9uIHJlZ2lzdGVyQ29yZUV4dGVuc2lvbnMoKSB7XG4gIGNvbnN0IGV4dGVuc2lvbnMgPSBnZXRDb3JlRXh0ZW5zaW9ucygpO1xuICBmb3IgKGNvbnN0IGV4dGVuc2lvbiBvZiBleHRlbnNpb25zKSB7XG4gICAgLy8gRklYTUUgVGhpcyBcImNvcmUgZXh0ZW5zaW9uc1wiIGNvbmNlcHQgc2hvdWxkIGxpa2VseSBiZSByZXRpcmVkXG4gICAgdHJ5UmVnaXN0ZXJFeHRlbnNpb24oYXBwTmFtZSwgZXh0ZW5zaW9uIGFzIHVua25vd24gYXMgRXh0ZW5zaW9uRGVmaW5pdGlvbik7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gc2V0dXBPZmZsaW5lKCkge1xuICB0cnkge1xuICAgIGF3YWl0IHJlZ2lzdGVyT21yc1NlcnZpY2VXb3JrZXIoYCR7d2luZG93LmdldE9wZW5tcnNTcGFCYXNlKCl9c2VydmljZS13b3JrZXIuanNgKTtcbiAgICBhd2FpdCBhY3RpdmF0ZU9mZmxpbmVDYXBhYmlsaXR5KCk7XG4gICAgc2V0dXBPZmZsaW5lU3RhdGljRGVwZW5kZW5jeVByZWNhY2hpbmcoKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBjb25zb2xlLmVycm9yKCdFcnJvciB3aGlsZSBzZXR0aW5nIHVwIG9mZmxpbmUgbW9kZS4nLCBlcnJvcik7XG4gICAgc2hvd05vdGlmaWNhdGlvbih7XG4gICAgICBraW5kOiAnZXJyb3InLFxuICAgICAgdGl0bGU6ICdPZmZsaW5lIFNldHVwIEVycm9yJyxcbiAgICAgIGRlc2NyaXB0aW9uOiBlcnJvci5tZXNzYWdlLFxuICAgIH0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIHNldHVwT2ZmbGluZVN0YXRpY0RlcGVuZGVuY3lQcmVjYWNoaW5nKCkge1xuICBjb25zdCBwcmVjYWNoZURlbGF5ID0gMTAwMCAqIDYwICogNTtcbiAgbGV0IGxhc3RQcmVjYWNoZTogRGF0ZSB8IG51bGwgPSBudWxsO1xuXG4gIHN1YnNjcmliZU9ubGluZUFuZExvZ2luQ2hhbmdlKChvbmxpbmUsIGhhc0xvZ2dlZEluVXNlcikgPT4ge1xuICAgIGNvbnN0IGhhc0V4Y2VlZGVkUHJlY2FjaGVEZWxheSA9ICFsYXN0UHJlY2FjaGUgfHwgbmV3IERhdGUoKS5nZXRUaW1lKCkgLSBsYXN0UHJlY2FjaGUuZ2V0VGltZSgpID4gcHJlY2FjaGVEZWxheTtcblxuICAgIGlmIChoYXNMb2dnZWRJblVzZXIgJiYgb25saW5lICYmIGhhc0V4Y2VlZGVkUHJlY2FjaGVEZWxheSkge1xuICAgICAgbGFzdFByZWNhY2hlID0gbmV3IERhdGUoKTtcbiAgICAgIGRpc3BhdGNoUHJlY2FjaGVTdGF0aWNEZXBlbmRlbmNpZXMoKTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBzdWJzY3JpYmVPbmxpbmVBbmRMb2dpbkNoYW5nZShjYjogKG9ubGluZTogYm9vbGVhbiwgaGFzTG9nZ2VkSW5Vc2VyOiBib29sZWFuKSA9PiB2b2lkKSB7XG4gIGxldCBpc09ubGluZSA9IGZhbHNlO1xuICBsZXQgaGFzTG9nZ2VkSW5Vc2VyID0gZmFsc2U7XG5cbiAgZ2V0Q3VycmVudFVzZXIoeyBpbmNsdWRlQXV0aFN0YXR1czogZmFsc2UgfSkuc3Vic2NyaWJlKCh1c2VyKSA9PiB7XG4gICAgaGFzTG9nZ2VkSW5Vc2VyID0gISF1c2VyO1xuICAgIGNiKGlzT25saW5lLCBoYXNMb2dnZWRJblVzZXIpO1xuICB9KTtcblxuICBzdWJzY3JpYmVDb25uZWN0aXZpdHkoKHsgb25saW5lIH0pID0+IHtcbiAgICBpc09ubGluZSA9IG9ubGluZTtcbiAgICBjYihvbmxpbmUsIGhhc0xvZ2dlZEluVXNlcik7XG4gIH0pO1xufVxuXG5hc3luYyBmdW5jdGlvbiBwcmVjYWNoZUdsb2JhbFN0YXRpY0RlcGVuZGVuY2llcygpIHtcbiAgYXdhaXQgcHJlY2FjaGVJbXBvcnRNYXAoKTtcblxuICAvLyBCeSBkZWZhdWx0LCBjYWNoZSB0aGUgc2Vzc2lvbiBlbmRwb2ludC5cbiAgLy8gVGhpcyBlbnN1cmVzIHRoYXQgYSBsb3Qgb2YgdXNlci9zZXNzaW9uIHJlbGF0ZWQgZnVuY3Rpb25zIGFsc28gd29yayBvZmZsaW5lLlxuICBjb25zdCBzZXNzaW9uUGF0aFVybCA9IG5ldyBVUkwoYCR7d2luZG93Lm9wZW5tcnNCYXNlfSR7cmVzdEJhc2VVcmx9L3Nlc3Npb25gLCB3aW5kb3cubG9jYXRpb24ub3JpZ2luKS5ocmVmO1xuXG4gIGF3YWl0IG1lc3NhZ2VPbXJzU2VydmljZVdvcmtlcih7XG4gICAgdHlwZTogJ3JlZ2lzdGVyRHluYW1pY1JvdXRlJyxcbiAgICB1cmw6IHNlc3Npb25QYXRoVXJsLFxuICAgIHN0cmF0ZWd5OiAnbmV0d29yay1maXJzdCcsXG4gIH0pO1xuXG4gIGF3YWl0IG9wZW5tcnNGZXRjaChgJHtyZXN0QmFzZVVybH0vc2Vzc2lvbmApLmNhdGNoKChlKSA9PlxuICAgIGNvbnNvbGUud2FybihcbiAgICAgICdGYWlsZWQgdG8gcHJlY2FjaGUgdGhlIHVzZXIgc2Vzc2lvbiBkYXRhIGZyb20gdGhlIGFwcCBzaGVsbC4gTUZzIGRlcGVuZGluZyBvbiB0aGlzIGRhdGEgbWF5IHJ1biBpbnRvIHByb2JsZW1zIHdoaWxlIG9mZmxpbmUuJyxcbiAgICAgIGUsXG4gICAgKSxcbiAgKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcHJlY2FjaGVJbXBvcnRNYXAoKSB7XG4gIGNvbnN0IGltcG9ydE1hcCA9IGF3YWl0IGdldEN1cnJlbnRQYWdlTWFwKCk7XG4gIGF3YWl0IG1lc3NhZ2VPbXJzU2VydmljZVdvcmtlcih7XG4gICAgdHlwZTogJ29uSW1wb3J0TWFwQ2hhbmdlZCcsXG4gICAgaW1wb3J0TWFwLFxuICB9KTtcbn1cblxuZnVuY3Rpb24gcmVnaXN0ZXJPZmZsaW5lSGFuZGxlcnMoKSB7XG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdvZmZsaW5lJywgY29ubmVjdGl2aXR5Q2hhbmdlZCk7XG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdvbmxpbmUnLCBjb25uZWN0aXZpdHlDaGFuZ2VkKTtcbn1cblxuZnVuY3Rpb24gc2V0dXBPZmZsaW5lQ3NzQ2xhc3NlcygpIHtcbiAgc3Vic2NyaWJlQ29ubmVjdGl2aXR5KCh7IG9ubGluZSB9KSA9PiB7XG4gICAgY29uc3QgYm9keSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2JvZHknKSE7XG4gICAgaWYgKG9ubGluZSkge1xuICAgICAgYm9keS5jbGFzc0xpc3QucmVtb3ZlKCdvbXJzLW9mZmxpbmUnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYm9keS5jbGFzc0xpc3QuYWRkKCdvbXJzLW9mZmxpbmUnKTtcbiAgICB9XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcnVuKGNvbmZpZ1VybHM6IEFycmF5PHN0cmluZz4pIHtcbiAgc2V0dXBJbXBvcnRNYXBPdmVycmlkZXMoKTtcblxuICBjb25zdCBvZmZsaW5lRW5hYmxlZCA9IHdpbmRvdy5vZmZsaW5lRW5hYmxlZDtcbiAgY29uc3QgY2xvc2VMb2FkaW5nID0gc2hvd0xvYWRpbmdTcGlubmVyKCk7XG4gIGNvbnN0IHByb3ZpZGVDb25maWdzID0gY3JlYXRlQ29uZmlnTG9hZGVyKGNvbmZpZ1VybHMpO1xuXG4gIHJldHVybiBpbXBvcnQoJ0BvcGVubXJzL2VzbS1zdHlsZWd1aWRlL3NyYy9pbmRleCcpLnRoZW4oKCkgPT4ge1xuICAgIGludGVncmF0ZUJyZWFrcG9pbnRzKCk7XG4gICAgc2hvd1RvYXN0cygpO1xuICAgIHNob3dNb2RhbHMoKTtcbiAgICBzaG93Tm90aWZpY2F0aW9ucygpO1xuICAgIHNob3dBY3Rpb25hYmxlTm90aWZpY2F0aW9ucygpO1xuICAgIHNob3dTbmFja2JhcnMoKTtcbiAgICBzaG93V29ya3NwYWNlc0FuZEFjdGlvbk1lbnUoKTtcbiAgICBzdWJzY3JpYmVOb3RpZmljYXRpb25TaG93bihzaG93Tm90aWZpY2F0aW9uKTtcbiAgICBzdWJzY3JpYmVBY3Rpb25hYmxlTm90aWZpY2F0aW9uU2hvd24oc2hvd0FjdGlvbmFibGVOb3RpZmljYXRpb24pO1xuICAgIHN1YnNjcmliZVRvYXN0U2hvd24oc2hvd1RvYXN0KTtcbiAgICBzdWJzY3JpYmVTbmFja2JhclNob3duKHNob3dTbmFja2Jhcik7XG4gICAgc3Vic2NyaWJlUHJlY2FjaGVTdGF0aWNEZXBlbmRlbmNpZXMocHJlY2FjaGVHbG9iYWxTdGF0aWNEZXBlbmRlbmNpZXMpO1xuICAgIHNldHVwQXBpTW9kdWxlKCk7XG4gICAgc2V0dXBIaXN0b3J5KCk7XG4gICAgcmVnaXN0ZXJDb3JlRXh0ZW5zaW9ucygpO1xuICAgIHNldHVwQ29yZUNvbmZpZygpO1xuXG4gICAgY29uc3QgcG9seWZpbGxSZWFkeSA9XG4gICAgICB0eXBlb2YgSW50bCAhPT0gJ3VuZGVmaW5lZCcgJiYgJ0R1cmF0aW9uRm9ybWF0JyBpbiBJbnRsXG4gICAgICAgID8gUHJvbWlzZS5yZXNvbHZlKClcbiAgICAgICAgOiBpbXBvcnQoXG4gICAgICAgICAgICAvKiB3ZWJwYWNrQ2h1bmtOYW1lOiBcImludGwtZHVyYXRpb25mb3JtYXQtcG9seWZpbGxcIiAqL1xuICAgICAgICAgICAgJ0Bmb3JtYXRqcy9pbnRsLWR1cmF0aW9uZm9ybWF0L2xpYi9wb2x5ZmlsbCdcbiAgICAgICAgICApLnRoZW4oKCkgPT4gdW5kZWZpbmVkKTtcblxuICAgIHJldHVybiBwb2x5ZmlsbFJlYWR5XG4gICAgICAudGhlbihzZXR1cEFwcHMpXG4gICAgICAudGhlbigoKSA9PiBQcm9taXNlLnJlc29sdmUoZmluaXNoUmVnaXN0ZXJpbmdBbGxBcHBzKCkpKVxuICAgICAgLnRoZW4ob2ZmbGluZUVuYWJsZWQgPyBzZXR1cE9mZmxpbmVDc3NDbGFzc2VzIDogdW5kZWZpbmVkKVxuICAgICAgLnRoZW4ob2ZmbGluZUVuYWJsZWQgPyByZWdpc3Rlck9mZmxpbmVIYW5kbGVycyA6IHVuZGVmaW5lZClcbiAgICAgIC50aGVuKHByb3ZpZGVDb25maWdzKVxuICAgICAgLnRoZW4ocnVuU2hlbGwpXG4gICAgICAuY2F0Y2goaGFuZGxlSW5pdEZhaWx1cmUpXG4gICAgICAudGhlbihjbG9zZUxvYWRpbmcpXG4gICAgICAudGhlbihvZmZsaW5lRW5hYmxlZCA/IHNldHVwT2ZmbGluZSA6IHVuZGVmaW5lZClcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgLy8gaW50ZW50aW9uYWxseSBub3QgcmV0dXJuZWQgc28gdGhhdCBwcm9jZXNzaW5nIHRoZSBcInN0YXJ0ZWRcIiBldmVudCBkb2Vzbid0IGJsb2NrXG4gICAgICAgIGZpcmVPcGVubXJzRXZlbnQoJ3N0YXJ0ZWQnKTtcbiAgICAgIH0pO1xuICB9KTtcbn1cbiJdLCJuYW1lcyI6WyJzdGFydCIsInRyaWdnZXJBcHBDaGFuZ2UiLCJhY3RpdmF0ZU9mZmxpbmVDYXBhYmlsaXR5IiwiZGlzcGF0Y2hDb25uZWN0aXZpdHlDaGFuZ2VkIiwiZGlzcGF0Y2hQcmVjYWNoZVN0YXRpY0RlcGVuZGVuY2llcyIsImZpbmlzaFJlZ2lzdGVyaW5nQWxsQXBwcyIsImZpcmVPcGVubXJzRXZlbnQiLCJnZXRDb25maWciLCJnZXRDb3JlVHJhbnNsYXRpb24iLCJnZXRDdXJyZW50UGFnZU1hcCIsImdldEN1cnJlbnRSb3V0ZU1hcCIsImdldEN1cnJlbnRVc2VyIiwiaW50ZWdyYXRlQnJlYWtwb2ludHMiLCJpbnRlcnBvbGF0ZVVybCIsIm1lc3NhZ2VPbXJzU2VydmljZVdvcmtlciIsIm9wZW5tcnNGZXRjaCIsInByb3ZpZGUiLCJyZWdpc3RlckFwcCIsInJlZ2lzdGVyRGVmYXVsdENhbGVuZGFyIiwicmVnaXN0ZXJPbXJzU2VydmljZVdvcmtlciIsInJlbmRlckFjdGlvbmFibGVOb3RpZmljYXRpb25zIiwicmVuZGVySW5saW5lTm90aWZpY2F0aW9ucyIsInJlbmRlckxvYWRpbmdTcGlubmVyIiwicmVuZGVyU25hY2tiYXJzIiwicmVuZGVyVG9hc3RzIiwicmVuZGVyV29ya3NwYWNlV2luZG93c0FuZE1lbnUiLCJyZXN0QmFzZVVybCIsInNldHVwQXBpTW9kdWxlIiwic2V0dXBIaXN0b3J5Iiwic2V0dXBJbXBvcnRNYXBPdmVycmlkZXMiLCJzZXR1cE1vZGFscyIsInNldHVwUm91dGVNYXBPdmVycmlkZXMiLCJzaG93QWN0aW9uYWJsZU5vdGlmaWNhdGlvbiIsInNob3dOb3RpZmljYXRpb24iLCJzaG93U25hY2tiYXIiLCJzaG93VG9hc3QiLCJzdWJzY3JpYmVBY3Rpb25hYmxlTm90aWZpY2F0aW9uU2hvd24iLCJzdWJzY3JpYmVDb25uZWN0aXZpdHkiLCJzdWJzY3JpYmVOb3RpZmljYXRpb25TaG93biIsInN1YnNjcmliZVByZWNhY2hlU3RhdGljRGVwZW5kZW5jaWVzIiwic3Vic2NyaWJlU25hY2tiYXJTaG93biIsInN1YnNjcmliZVRvYXN0U2hvd24iLCJ0cnlSZWdpc3RlckV4dGVuc2lvbiIsInNldHVwSTE4biIsImFwcE5hbWUiLCJnZXRDb3JlRXh0ZW5zaW9ucyIsInNldHVwQ29yZUNvbmZpZyIsIlJFR0lTVFJBVElPTl9QUk9NSVNFUyIsIlN5bWJvbCIsImluaXRpYWxSb3V0ZU1hcCIsInNldHVwQXBwcyIsInJvdXRlcyIsIm1vZHVsZXMiLCJyZWdpc3RyYXRpb25Qcm9taXNlcyIsIk9iamVjdCIsIm1vZHVsZSIsImFwcFJvdXRlcyIsIndpbmRvdyIsIlByb21pc2UiLCJsb2FkQ29uZmlncyIsImNvbmZpZ3MiLCJjb25maWciLCJjb25uZWN0aXZpdHlDaGFuZ2VkIiwib25saW5lIiwibmF2aWdhdG9yIiwicnVuU2hlbGwiLCJlcnIiLCJjb25zb2xlIiwiYXBwbGljYXRpb25WZXJzaW9uIiwidW5kZWZpbmVkIiwicHJlZmVycmVkQ2FsZW5kYXIiLCJlbnRyeSIsImhhbmRsZUluaXRGYWlsdXJlIiwiZSIsInJlbmRlckZhdGFsRXJyb3JQYWdlIiwidGVtcGxhdGUiLCJkb2N1bWVudCIsImZyYWdtZW50IiwibWVzc2FnZUNvbnRhaW5lciIsImxvY2FsU3RvcmFnZSIsImsiLCJhcHBFcnJvckFjdGlvbkJ1dHRvbnMiLCJjbGVhckRldk92ZXJyaWRlc0J1dHRvbiIsImNsZWFyRGV2T3ZlcnJpZGVzIiwia2V5c1RvUmVtb3ZlIiwia2V5IiwibG9jYXRpb24iLCJjcmVhdGVDb25maWdMb2FkZXIiLCJjb25maWdVcmxzIiwibG9hZGluZ0NvbmZpZ3MiLCJjb25maWdVcmwiLCJpbnRlcnBvbGF0ZWRVcmwiLCJmZXRjaCIsInJlcyIsInNob3dOb3RpZmljYXRpb25zIiwic2hvd0FjdGlvbmFibGVOb3RpZmljYXRpb25zIiwic2hvd1RvYXN0cyIsInNob3dXb3Jrc3BhY2VzQW5kQWN0aW9uTWVudSIsInNob3dTbmFja2JhcnMiLCJzaG93TW9kYWxzIiwic2hvd0xvYWRpbmdTcGlubmVyIiwicmVnaXN0ZXJDb3JlRXh0ZW5zaW9ucyIsImV4dGVuc2lvbnMiLCJleHRlbnNpb24iLCJzZXR1cE9mZmxpbmUiLCJzZXR1cE9mZmxpbmVTdGF0aWNEZXBlbmRlbmN5UHJlY2FjaGluZyIsImVycm9yIiwicHJlY2FjaGVEZWxheSIsImxhc3RQcmVjYWNoZSIsInN1YnNjcmliZU9ubGluZUFuZExvZ2luQ2hhbmdlIiwiaGFzTG9nZ2VkSW5Vc2VyIiwiaGFzRXhjZWVkZWRQcmVjYWNoZURlbGF5IiwiRGF0ZSIsImNiIiwiaXNPbmxpbmUiLCJ1c2VyIiwicHJlY2FjaGVHbG9iYWxTdGF0aWNEZXBlbmRlbmNpZXMiLCJwcmVjYWNoZUltcG9ydE1hcCIsInNlc3Npb25QYXRoVXJsIiwiVVJMIiwiaW1wb3J0TWFwIiwicmVnaXN0ZXJPZmZsaW5lSGFuZGxlcnMiLCJzZXR1cE9mZmxpbmVDc3NDbGFzc2VzIiwiYm9keSIsInJ1biIsIm9mZmxpbmVFbmFibGVkIiwiY2xvc2VMb2FkaW5nIiwicHJvdmlkZUNvbmZpZ3MiLCJwb2x5ZmlsbFJlYWR5IiwiSW50bCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBcUQ7QUFnRFI7QUFDUjtBQUNyQyxnREFBZ0Q7QUFDMUI7QUFDSTtBQUNBO0FBQ1I7QUFDZ0M7QUFDRjtBQUVoRCxZQUFZO0FBQ1oscUVBQXFFO0FBQ3JFLGlDQUFpQztBQUNqQyxNQUFNK0Msd0JBQXdCQyxPQUFPO0FBRXJDLElBQUlDO0FBRUo7Ozs7O0NBS0MsR0FDRCxlQUFlQztJQUNiLE1BQU1uQiwrRUFBc0JBO0lBQzVCLE1BQU1vQixTQUFVRixrQkFBa0IsTUFBTXZDLDJFQUFrQkE7SUFFMUQsTUFBTTBDLFVBQTBDLEVBQUU7SUFDbEQsTUFBTUMsdUJBQXVCQyxPQUFPLE9BQU8sQ0FBQ0gsT0FBTyxNQUFNLEVBQUUsR0FBRyxD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\n//# sourceURL=webpack-internal:///./src/run.ts\n\n}");
34
34
 
35
35
  },
36
36
  "./src/ui/index.ts"(__unused_rspack_module, __webpack_exports__, __webpack_require__) {
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ (globalThis["webpackChunk_openmrs_esm_app_shell"] = globalThis["webpackChunk_openmrs_esm_app_shell"] || []).push([["node_modules_swr_dist_index_index_mjs-_1a941"], {
3
+ "../../../node_modules/swr/dist/index/index.mjs"(__unused_rspack___webpack_module__, __webpack_exports__, __webpack_require__) {
4
+ eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webpack_exports__, {\n SWRConfig: () => (/* reexport safe */ _use_swr_emll9s78_mjs__rspack_import_0.S),\n \"default\": () => (/* reexport safe */ _use_swr_emll9s78_mjs__rspack_import_0.u),\n mutate: () => (/* reexport safe */ _config_context_ext53wcz_mjs__rspack_import_1.k),\n preload: () => (/* reexport safe */ _internal_index_mjs__rspack_import_2.preload),\n unload: () => (/* reexport safe */ _config_context_ext53wcz_mjs__rspack_import_1.l),\n unstable_serialize: () => (unstable_serialize),\n useSWRConfig: () => (/* reexport safe */ _internal_index_mjs__rspack_import_2.useSWRConfig)\n});\n/* import */ var _use_swr_emll9s78_mjs__rspack_import_0 = __webpack_require__(\"../../../node_modules/swr/dist/use-swr-emll9s78.mjs\");\n/* import */ var _config_context_ext53wcz_mjs__rspack_import_1 = __webpack_require__(\"../../../node_modules/swr/dist/config-context-ext53wcz.mjs\");\n/* import */ var _internal_index_mjs__rspack_import_2 = __webpack_require__(\"../../../node_modules/swr/dist/_internal/index.mjs\");\n\n\n\n\n\n\nconst unstable_serialize = (key)=>(0,_config_context_ext53wcz_mjs__rspack_import_1.s)(key)[0];\n\n// useSWR\n\n\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YXNjcmlwdC9lc218L2hvbWUvcnVubmVyL3dvcmsvb3Blbm1ycy1lc20tY29yZS9vcGVubXJzLWVzbS1jb3JlL25vZGVfbW9kdWxlcy9zd3IvZGlzdC9pbmRleC9pbmRleC5tanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zd3IvZGlzdC9pbmRleC9pbmRleC5tanM/MjNlNiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1IGFzIHVzZVNXUiB9IGZyb20gJy4uL3VzZS1zd3ItZW1sbDlzNzgubWpzJztcbmV4cG9ydCB7IFMgYXMgU1dSQ29uZmlnIH0gZnJvbSAnLi4vdXNlLXN3ci1lbWxsOXM3OC5tanMnO1xuaW1wb3J0IHsgcyBhcyBzZXJpYWxpemUgfSBmcm9tICcuLi9jb25maWctY29udGV4dC1leHQ1M3djei5tanMnO1xuZXhwb3J0IHsgayBhcyBtdXRhdGUsIGwgYXMgdW5sb2FkIH0gZnJvbSAnLi4vY29uZmlnLWNvbnRleHQtZXh0NTN3Y3oubWpzJztcbmV4cG9ydCB7IHByZWxvYWQsIHVzZVNXUkNvbmZpZyB9IGZyb20gJy4uL19pbnRlcm5hbC9pbmRleC5tanMnO1xuXG5jb25zdCB1bnN0YWJsZV9zZXJpYWxpemUgPSAoa2V5KT0+c2VyaWFsaXplKGtleSlbMF07XG5cbi8vIHVzZVNXUlxuXG5leHBvcnQgeyB1c2VTV1IgYXMgZGVmYXVsdCwgdW5zdGFibGVfc2VyaWFsaXplIH07XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFzRDtBQUNHO0FBQ087QUFDVTtBQUNYOztBQUUvRCxrQ0FBa0MsbURBQVM7O0FBRTNDOztBQUVpRCJ9\n//# sourceURL=webpack-internal:///../../../node_modules/swr/dist/index/index.mjs\n\n}");
5
+
6
+ },
7
+
8
+ }]);
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ (globalThis["webpackChunk_openmrs_esm_app_shell"] = globalThis["webpackChunk_openmrs_esm_app_shell"] || []).push([["node_modules_swr_dist_subscription_index_mjs-_d2cc0"], {
3
+ "../../../node_modules/swr/dist/subscription/index.mjs"(__unused_rspack___webpack_module__, __webpack_exports__, __webpack_require__) {
4
+ eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webpack_exports__, {\n \"default\": () => (useSWRSubscription),\n subscription: () => (subscription)\n});\n/* import */ var _use_swr_emll9s78_mjs__rspack_import_2 = __webpack_require__(\"../../../node_modules/swr/dist/use-swr-emll9s78.mjs\");\n/* import */ var _config_context_ext53wcz_mjs__rspack_import_0 = __webpack_require__(\"../../../node_modules/swr/dist/config-context-ext53wcz.mjs\");\n/* import */ var _internal_index_mjs__rspack_import_1 = __webpack_require__(\"../../../node_modules/swr/dist/_internal/index.mjs\");\n\n\n\n\nconst subscriptionStorage = new WeakMap();\nconst SUBSCRIPTION_PREFIX = '$sub$';\nconst subscription = (useSWRNext)=>(_key, subscribe, config)=>{\n const [key, args] = (0,_config_context_ext53wcz_mjs__rspack_import_0.s)(_key);\n // Prefix the key to avoid conflicts with other SWR resources.\n const subscriptionKey = key ? SUBSCRIPTION_PREFIX + key : undefined;\n const swr = useSWRNext(subscriptionKey, null, config);\n const { cache } = config;\n // Ensure that the subscription state is scoped by the cache boundary, so\n // you can have multiple SWR zones with subscriptions having the same key.\n if (!subscriptionStorage.has(cache)) {\n subscriptionStorage.set(cache, [\n new Map(),\n new Map()\n ]);\n }\n const [subscriptions, disposers] = subscriptionStorage.get(cache);\n (0,_config_context_ext53wcz_mjs__rspack_import_0.u)(()=>{\n if (!subscriptionKey) return;\n const [, set] = (0,_config_context_ext53wcz_mjs__rspack_import_0.c)(cache, subscriptionKey);\n const refCount = subscriptions.get(subscriptionKey) || 0;\n const next = (error, data)=>{\n if (error !== null && typeof error !== 'undefined') {\n set({\n error\n });\n } else {\n set({\n error: undefined\n });\n swr.mutate(data, false);\n }\n };\n // Increment the ref count.\n subscriptions.set(subscriptionKey, refCount + 1);\n if (!refCount) {\n const dispose = subscribe(args, {\n next\n });\n if (typeof dispose !== 'function') {\n throw new Error('The `subscribe` function must return a function to unsubscribe.');\n }\n disposers.set(subscriptionKey, dispose);\n }\n return ()=>{\n const count = subscriptions.get(subscriptionKey) - 1;\n subscriptions.set(subscriptionKey, count);\n // Dispose if it's the last one.\n if (!count) {\n const dispose = disposers.get(subscriptionKey);\n dispose == null ? void 0 : dispose();\n // Remove both entries, so the internal states only retain the\n // subscription keys that currently have active subscribers.\n subscriptions.delete(subscriptionKey);\n disposers.delete(subscriptionKey);\n }\n };\n }, [\n subscriptionKey\n ]);\n return {\n get data () {\n return swr.data;\n },\n get error () {\n return swr.error;\n }\n };\n };\n/**\n * A hook to subscribe a SWR resource to an external data source for continuous updates.\n * @experimental This API is experimental and might change in the future.\n * @example\n * ```jsx\n * import useSWRSubscription from 'swr/subscription'\n *\n * const { data, error } = useSWRSubscription(key, (key, { next }) => {\n * const unsubscribe = dataSource.subscribe(key, (err, data) => {\n * next(err, data)\n * })\n * return unsubscribe\n * })\n * ```\n */ const useSWRSubscription = (0,_internal_index_mjs__rspack_import_1.withMiddleware)(_use_swr_emll9s78_mjs__rspack_import_2.u, subscription);\n\n\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YXNjcmlwdC9lc218L2hvbWUvcnVubmVyL3dvcmsvb3Blbm1ycy1lc20tY29yZS9vcGVubXJzLWVzbS1jb3JlL25vZGVfbW9kdWxlcy9zd3IvZGlzdC9zdWJzY3JpcHRpb24vaW5kZXgubWpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQG9wZW5tcnMvZXNtLWFwcC1zaGVsbC8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3dyL2Rpc3Qvc3Vic2NyaXB0aW9uL2luZGV4Lm1qcz9lODE2Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHUgYXMgdXNlU1dSIH0gZnJvbSAnLi4vdXNlLXN3ci1lbWxsOXM3OC5tanMnO1xuaW1wb3J0IHsgcyBhcyBzZXJpYWxpemUsIHUgYXMgdXNlSXNvbW9ycGhpY0xheW91dEVmZmVjdCwgYyBhcyBjcmVhdGVDYWNoZUhlbHBlciB9IGZyb20gJy4uL2NvbmZpZy1jb250ZXh0LWV4dDUzd2N6Lm1qcyc7XG5pbXBvcnQgeyB3aXRoTWlkZGxld2FyZSB9IGZyb20gJy4uL19pbnRlcm5hbC9pbmRleC5tanMnO1xuXG5jb25zdCBzdWJzY3JpcHRpb25TdG9yYWdlID0gbmV3IFdlYWtNYXAoKTtcbmNvbnN0IFNVQlNDUklQVElPTl9QUkVGSVggPSAnJHN1YiQnO1xuY29uc3Qgc3Vic2NyaXB0aW9uID0gKHVzZVNXUk5leHQpPT4oX2tleSwgc3Vic2NyaWJlLCBjb25maWcpPT57XG4gICAgICAgIGNvbnN0IFtrZXksIGFyZ3NdID0gc2VyaWFsaXplKF9rZXkpO1xuICAgICAgICAvLyBQcmVmaXggdGhlIGtleSB0byBhdm9pZCBjb25mbGljdHMgd2l0aCBvdGhlciBTV1IgcmVzb3VyY2VzLlxuICAgICAgICBjb25zdCBzdWJzY3JpcHRpb25LZXkgPSBrZXkgPyBTVUJTQ1JJUFRJT05fUFJFRklYICsga2V5IDogdW5kZWZpbmVkO1xuICAgICAgICBjb25zdCBzd3IgPSB1c2VTV1JOZXh0KHN1YnNjcmlwdGlvbktleSwgbnVsbCwgY29uZmlnKTtcbiAgICAgICAgY29uc3QgeyBjYWNoZSB9ID0gY29uZmlnO1xuICAgICAgICAvLyBFbnN1cmUgdGhhdCB0aGUgc3Vic2NyaXB0aW9uIHN0YXRlIGlzIHNjb3BlZCBieSB0aGUgY2FjaGUgYm91bmRhcnksIHNvXG4gICAgICAgIC8vIHlvdSBjYW4gaGF2ZSBtdWx0aXBsZSBTV1Igem9uZXMgd2l0aCBzdWJzY3JpcHRpb25zIGhhdmluZyB0aGUgc2FtZSBrZXkuXG4gICAgICAgIGlmICghc3Vic2NyaXB0aW9uU3RvcmFnZS5oYXMoY2FjaGUpKSB7XG4gICAgICAgICAgICBzdWJzY3JpcHRpb25TdG9yYWdlLnNldChjYWNoZSwgW1xuICAgICAgICAgICAgICAgIG5ldyBNYXAoKSxcbiAgICAgICAgICAgICAgICBuZXcgTWFwKClcbiAgICAgICAgICAgIF0pO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IFtzdWJzY3JpcHRpb25zLCBkaXNwb3NlcnNdID0gc3Vic2NyaXB0aW9uU3RvcmFnZS5nZXQoY2FjaGUpO1xuICAgICAgICB1c2VJc29tb3JwaGljTGF5b3V0RWZmZWN0KCgpPT57XG4gICAgICAgICAgICBpZiAoIXN1YnNjcmlwdGlvbktleSkgcmV0dXJuO1xuICAgICAgICAgICAgY29uc3QgWywgc2V0XSA9IGNyZWF0ZUNhY2hlSGVscGVyKGNhY2hlLCBzdWJzY3JpcHRpb25LZXkpO1xuICAgICAgICAgICAgY29uc3QgcmVmQ291bnQgPSBzdWJzY3JpcHRpb25zLmdldChzdWJzY3JpcHRpb25LZXkpIHx8IDA7XG4gICAgICAgICAgICBjb25zdCBuZXh0ID0gKGVycm9yLCBkYXRhKT0+e1xuICAgICAgICAgICAgICAgIGlmIChlcnJvciAhPT0gbnVsbCAmJiB0eXBlb2YgZXJyb3IgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvclxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzZXQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgc3dyLm11dGF0ZShkYXRhLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIC8vIEluY3JlbWVudCB0aGUgcmVmIGNvdW50LlxuICAgICAgICAgICAgc3Vic2NyaXB0aW9ucy5zZXQoc3Vic2NyaXB0aW9uS2V5LCByZWZDb3VudCArIDEpO1xuICAgICAgICAgICAgaWYgKCFyZWZDb3VudCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRpc3Bvc2UgPSBzdWJzY3JpYmUoYXJncywge1xuICAgICAgICAgICAgICAgICAgICBuZXh0XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBkaXNwb3NlICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIGBzdWJzY3JpYmVgIGZ1bmN0aW9uIG11c3QgcmV0dXJuIGEgZnVuY3Rpb24gdG8gdW5zdWJzY3JpYmUuJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGRpc3Bvc2Vycy5zZXQoc3Vic2NyaXB0aW9uS2V5LCBkaXNwb3NlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAoKT0+e1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvdW50ID0gc3Vic2NyaXB0aW9ucy5nZXQoc3Vic2NyaXB0aW9uS2V5KSAtIDE7XG4gICAgICAgICAgICAgICAgc3Vic2NyaXB0aW9ucy5zZXQoc3Vic2NyaXB0aW9uS2V5LCBjb3VudCk7XG4gICAgICAgICAgICAgICAgLy8gRGlzcG9zZSBpZiBpdCdzIHRoZSBsYXN0IG9uZS5cbiAgICAgICAgICAgICAgICBpZiAoIWNvdW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRpc3Bvc2UgPSBkaXNwb3NlcnMuZ2V0KHN1YnNjcmlwdGlvbktleSk7XG4gICAgICAgICAgICAgICAgICAgIGRpc3Bvc2UgPT0gbnVsbCA/IHZvaWQgMCA6IGRpc3Bvc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gUmVtb3ZlIGJvdGggZW50cmllcywgc28gdGhlIGludGVybmFsIHN0YXRlcyBvbmx5IHJldGFpbiB0aGVcbiAgICAgICAgICAgICAgICAgICAgLy8gc3Vic2NyaXB0aW9uIGtleXMgdGhhdCBjdXJyZW50bHkgaGF2ZSBhY3RpdmUgc3Vic2NyaWJlcnMuXG4gICAgICAgICAgICAgICAgICAgIHN1YnNjcmlwdGlvbnMuZGVsZXRlKHN1YnNjcmlwdGlvbktleSk7XG4gICAgICAgICAgICAgICAgICAgIGRpc3Bvc2Vycy5kZWxldGUoc3Vic2NyaXB0aW9uS2V5KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICB9LCBbXG4gICAgICAgICAgICBzdWJzY3JpcHRpb25LZXlcbiAgICAgICAgXSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBnZXQgZGF0YSAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN3ci5kYXRhO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldCBlcnJvciAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN3ci5lcnJvcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9O1xuLyoqXG4gKiBBIGhvb2sgdG8gc3Vic2NyaWJlIGEgU1dSIHJlc291cmNlIHRvIGFuIGV4dGVybmFsIGRhdGEgc291cmNlIGZvciBjb250aW51b3VzIHVwZGF0ZXMuXG4gKiBAZXhwZXJpbWVudGFsIFRoaXMgQVBJIGlzIGV4cGVyaW1lbnRhbCBhbmQgbWlnaHQgY2hhbmdlIGluIHRoZSBmdXR1cmUuXG4gKiBAZXhhbXBsZVxuICogYGBganN4XG4gKiBpbXBvcnQgdXNlU1dSU3Vic2NyaXB0aW9uIGZyb20gJ3N3ci9zdWJzY3JpcHRpb24nXG4gKlxuICogY29uc3QgeyBkYXRhLCBlcnJvciB9ID0gdXNlU1dSU3Vic2NyaXB0aW9uKGtleSwgKGtleSwgeyBuZXh0IH0pID0+IHtcbiAqICAgY29uc3QgdW5zdWJzY3JpYmUgPSBkYXRhU291cmNlLnN1YnNjcmliZShrZXksIChlcnIsIGRhdGEpID0+IHtcbiAqICAgICBuZXh0KGVyciwgZGF0YSlcbiAqICAgfSlcbiAqICAgcmV0dXJuIHVuc3Vic2NyaWJlXG4gKiB9KVxuICogYGBgXG4gKi8gY29uc3QgdXNlU1dSU3Vic2NyaXB0aW9uID0gd2l0aE1pZGRsZXdhcmUodXNlU1dSLCBzdWJzY3JpcHRpb24pO1xuXG5leHBvcnQgeyB1c2VTV1JTdWJzY3JpcHRpb24gYXMgZGVmYXVsdCwgc3Vic2NyaXB0aW9uIH07XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBc0Q7QUFDa0U7QUFDaEU7O0FBRXhEO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QixtREFBUztBQUNyQztBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsUUFBUTtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLG1EQUF5QjtBQUNqQztBQUNBLDRCQUE0QixtREFBaUI7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQixrQkFBa0I7QUFDbEI7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsY0FBYyxrQ0FBa0MsTUFBTTtBQUNqRTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0EsSUFBSTtBQUNKO0FBQ0EsK0JBQStCLHVEQUFjLENBQUMsd0NBQU07O0FBRUcifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/swr/dist/subscription/index.mjs\n\n}");
5
+
6
+ },
7
+
8
+ }]);
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ (globalThis["webpackChunk_openmrs_esm_app_shell"] = globalThis["webpackChunk_openmrs_esm_app_shell"] || []).push([["default-node_modules_swr_dist_infinite_index_mjs"], {
3
+ "../../../node_modules/swr/dist/infinite/index.mjs"(__unused_rspack___webpack_module__, __webpack_exports__, __webpack_require__) {
4
+ eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webpack_exports__, {\n \"default\": () => (useSWRInfinite),\n infinite: () => (infinite),\n unstable_serialize: () => (unstable_serialize)\n});\n/* import */ var react__rspack_import_0 = __webpack_require__(\"webpack/sharing/consume/default/react/react\");\n/* import */ var react__rspack_import_0_default = /*#__PURE__*/__webpack_require__.n(react__rspack_import_0);\n/* import */ var _use_swr_emll9s78_mjs__rspack_import_5 = __webpack_require__(\"../../../node_modules/swr/dist/use-swr-emll9s78.mjs\");\n/* import */ var _config_context_ext53wcz_mjs__rspack_import_2 = __webpack_require__(\"../../../node_modules/swr/dist/config-context-ext53wcz.mjs\");\n/* import */ var _internal_index_mjs__rspack_import_4 = __webpack_require__(\"../../../node_modules/swr/dist/_internal/index.mjs\");\n/* import */ var use_sync_external_store_shim__rspack_import_1 = __webpack_require__(\"../../../node_modules/swr/node_modules/use-sync-external-store/shim/index.js\");\n/* import */ var _internal_constants_mjs__rspack_import_3 = __webpack_require__(\"../../../node_modules/swr/dist/_internal/constants.mjs\");\n\n\n\n\n\n\n\nconst getFirstPageKey = (getKey)=>{\n return (0,_config_context_ext53wcz_mjs__rspack_import_2.s)(getKey ? getKey(0, null) : null)[0];\n};\nconst unstable_serialize = (getKey)=>{\n return _internal_constants_mjs__rspack_import_3.INFINITE_PREFIX + getFirstPageKey(getKey);\n};\n\n// We have to several type castings here because `useSWRInfinite` is a special\n// hook where `key` and return type are not like the normal `useSWR` types.\nconst EMPTY_PROMISE = Promise.resolve();\nconst infinite = (useSWRNext)=>(getKey, fn, config)=>{\n const didMountRef = (0,react__rspack_import_0.useRef)(false);\n const { cache: cache$1, initialSize = 1, revalidateAll = false, persistSize = false, revalidateFirstPage = true, revalidateOnMount = false, parallel = false } = config;\n const [, , , PRELOAD] = _config_context_ext53wcz_mjs__rspack_import_2.a.get(_config_context_ext53wcz_mjs__rspack_import_2.o);\n // The serialized key of the first page. This key will be used to store\n // metadata of this SWR infinite hook.\n let infiniteKey;\n try {\n infiniteKey = getFirstPageKey(getKey);\n if (infiniteKey) infiniteKey = _internal_constants_mjs__rspack_import_3.INFINITE_PREFIX + infiniteKey;\n } catch (err) {\n // Not ready yet.\n }\n const [get, set, subscribeCache] = (0,_config_context_ext53wcz_mjs__rspack_import_2.c)(cache$1, infiniteKey);\n const getSnapshot = (0,react__rspack_import_0.useCallback)(()=>{\n const size = (0,_config_context_ext53wcz_mjs__rspack_import_2.i)(get()._l) ? initialSize : get()._l;\n return size;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n cache$1,\n infiniteKey,\n initialSize\n ]);\n (0,use_sync_external_store_shim__rspack_import_1.useSyncExternalStore)((0,react__rspack_import_0.useCallback)((callback)=>{\n if (infiniteKey) return subscribeCache(infiniteKey, ()=>{\n callback();\n });\n return ()=>{};\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n cache$1,\n infiniteKey\n ]), getSnapshot, getSnapshot);\n const resolvePageSize = (0,react__rspack_import_0.useCallback)(()=>{\n const cachedPageSize = get()._l;\n return (0,_config_context_ext53wcz_mjs__rspack_import_2.i)(cachedPageSize) ? initialSize : cachedPageSize;\n // `cache` isn't allowed to change during the lifecycle\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n infiniteKey,\n initialSize\n ]);\n // keep the last page size to restore it with the persistSize option\n const lastPageSizeRef = (0,react__rspack_import_0.useRef)(resolvePageSize());\n // When the page key changes, we reset the page size if it's not persisted\n (0,_config_context_ext53wcz_mjs__rspack_import_2.u)(()=>{\n if (!didMountRef.current) {\n didMountRef.current = true;\n return;\n }\n if (infiniteKey) {\n // If the key has been changed, we keep the current page size if persistSize is enabled\n // Otherwise, we reset the page size to cached pageSize\n set({\n _l: persistSize ? lastPageSizeRef.current : resolvePageSize()\n });\n }\n // `initialSize` isn't allowed to change during the lifecycle\n }, [\n infiniteKey,\n cache$1\n ]);\n // Needs to check didMountRef during mounting, not in the fetcher\n const shouldRevalidateOnMount = revalidateOnMount && !didMountRef.current;\n // Actual SWR hook to load all pages in one fetcher.\n const swr = useSWRNext(infiniteKey, async (key)=>{\n // get the revalidate context\n const forceRevalidateAll = get()._i;\n const shouldRevalidatePage = get()._r;\n // Capture the cache's unload generation (bumped by every `unload()`\n // call) so page responses that resolve after an unload are not\n // written back to the cleared cache.\n const state = _config_context_ext53wcz_mjs__rspack_import_2.a.get(cache$1);\n const unloadGeneration = state[8];\n const unloadedDuringRequest = ()=>state[8] !== unloadGeneration;\n set({\n _r: _config_context_ext53wcz_mjs__rspack_import_2.U\n });\n // return an array of page data\n const data = [];\n const pageSize = resolvePageSize();\n const [getCache] = (0,_config_context_ext53wcz_mjs__rspack_import_2.c)(cache$1, key);\n const cacheData = getCache().data;\n const revalidators = [];\n let previousPageData = null;\n for(let i = 0; i < pageSize; ++i){\n const [pageKey, pageArg] = (0,_config_context_ext53wcz_mjs__rspack_import_2.s)(getKey(i, parallel ? null : previousPageData));\n if (!pageKey) {\n break;\n }\n const [getSWRCache, setSWRCache] = (0,_config_context_ext53wcz_mjs__rspack_import_2.c)(cache$1, pageKey);\n // Get the cached page data.\n let pageData = getSWRCache().data;\n // should fetch (or revalidate) if:\n // - `revalidateAll` is enabled\n // - `mutate()` called\n // - the cache is missing\n // - it's the first page and it's not the initial render\n // - `revalidateOnMount` is enabled and it's on mount\n // - cache for that page has changed\n const shouldFetchPage = revalidateAll || forceRevalidateAll || (0,_config_context_ext53wcz_mjs__rspack_import_2.i)(pageData) || revalidateFirstPage && !i && !(0,_config_context_ext53wcz_mjs__rspack_import_2.i)(cacheData) || shouldRevalidateOnMount || cacheData && !(0,_config_context_ext53wcz_mjs__rspack_import_2.i)(cacheData[i]) && !config.compare(cacheData[i], pageData);\n if (fn && (typeof shouldRevalidatePage === 'function' ? shouldRevalidatePage(pageData, pageArg) : shouldFetchPage)) {\n const revalidate = async ()=>{\n const hasPreloadedRequest = pageKey in PRELOAD;\n if (!hasPreloadedRequest) {\n pageData = await fn(pageArg);\n } else {\n const req = PRELOAD[pageKey];\n // delete the preload cache key before resolving it\n // in case there's an error\n delete PRELOAD[pageKey];\n // get the page data from the preload cache\n pageData = await req;\n }\n if (!unloadedDuringRequest()) {\n setSWRCache({\n data: pageData,\n _k: pageArg\n });\n }\n data[i] = pageData;\n };\n if (parallel) {\n revalidators.push(revalidate);\n } else {\n await revalidate();\n }\n } else {\n data[i] = pageData;\n }\n if (!parallel) {\n previousPageData = pageData;\n }\n }\n // flush all revalidateions in parallel\n if (parallel) {\n await Promise.all(revalidators.map((r)=>r()));\n }\n // once we executed the data fetching based on the context, clear the\n // context. Skipped after an unload so the cleared meta entry isn't\n // re-created.\n if (!unloadedDuringRequest()) {\n set({\n _i: _config_context_ext53wcz_mjs__rspack_import_2.U\n });\n }\n // return the data\n return data;\n }, config);\n const mutate = (0,react__rspack_import_0.useCallback)(// eslint-disable-next-line func-names\n function(data, opts) {\n // When passing as a boolean, it's explicitly used to disable/enable\n // revalidation.\n const options = typeof opts === 'boolean' ? {\n revalidate: opts\n } : opts || {};\n // Default to true.\n const shouldRevalidate = options.revalidate !== false;\n // It is possible that the key is still falsy.\n if (!infiniteKey) return EMPTY_PROMISE;\n if (shouldRevalidate) {\n if (!(0,_config_context_ext53wcz_mjs__rspack_import_2.i)(data)) {\n // We only revalidate the pages that are changed\n set({\n _i: false,\n _r: options.revalidate\n });\n } else {\n // Calling `mutate()`, we revalidate all pages\n set({\n _i: true,\n _r: options.revalidate\n });\n }\n }\n return arguments.length ? swr.mutate(data, {\n ...options,\n revalidate: shouldRevalidate\n }) : swr.mutate();\n }, // swr.mutate is always the same reference\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n infiniteKey,\n cache$1\n ]);\n // Extend the SWR API\n const setSize = (0,react__rspack_import_0.useCallback)((arg)=>{\n // It is possible that the key is still falsy.\n if (!infiniteKey) return EMPTY_PROMISE;\n const [, changeSize] = (0,_config_context_ext53wcz_mjs__rspack_import_2.c)(cache$1, infiniteKey);\n let size;\n if ((0,_config_context_ext53wcz_mjs__rspack_import_2.e)(arg)) {\n size = arg(resolvePageSize());\n } else if (typeof arg == 'number') {\n size = arg;\n }\n if (typeof size != 'number') return EMPTY_PROMISE;\n changeSize({\n _l: size\n });\n lastPageSizeRef.current = size;\n // Calculate the page data after the size change.\n const data = [];\n const [getInfiniteCache] = (0,_config_context_ext53wcz_mjs__rspack_import_2.c)(cache$1, infiniteKey);\n let previousPageData = null;\n for(let i = 0; i < size; ++i){\n const [pageKey] = (0,_config_context_ext53wcz_mjs__rspack_import_2.s)(getKey(i, previousPageData));\n const [getCache] = (0,_config_context_ext53wcz_mjs__rspack_import_2.c)(cache$1, pageKey);\n // Get the cached page data.\n const pageData = pageKey ? getCache().data : _config_context_ext53wcz_mjs__rspack_import_2.U;\n // Call `mutate` with infinte cache data if we can't get it from the page cache.\n if ((0,_config_context_ext53wcz_mjs__rspack_import_2.i)(pageData)) {\n return mutate(getInfiniteCache().data);\n }\n data.push(pageData);\n previousPageData = pageData;\n }\n return mutate(data);\n }, // exclude getKey from the dependencies, which isn't allowed to change during the lifecycle\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n infiniteKey,\n cache$1,\n mutate,\n resolvePageSize\n ]);\n // Use getter functions to avoid unnecessary re-renders caused by triggering\n // all the getters of the returned swr object.\n return {\n size: resolvePageSize(),\n setSize,\n mutate,\n get data () {\n return swr.data;\n },\n get error () {\n return swr.error;\n },\n get isValidating () {\n return swr.isValidating;\n },\n get isLoading () {\n return swr.isLoading;\n }\n };\n };\nconst useSWRInfinite = (0,_internal_index_mjs__rspack_import_4.withMiddleware)(_use_swr_emll9s78_mjs__rspack_import_5.u, infinite);\n\n\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YXNjcmlwdC9lc218L2hvbWUvcnVubmVyL3dvcmsvb3Blbm1ycy1lc20tY29yZS9vcGVubXJzLWVzbS1jb3JlL25vZGVfbW9kdWxlcy9zd3IvZGlzdC9pbmZpbml0ZS9pbmRleC5tanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zd3IvZGlzdC9pbmZpbml0ZS9pbmRleC5tanM/YTljNCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VSZWYsIHVzZUNhbGxiYWNrIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdSBhcyB1c2VTV1IgfSBmcm9tICcuLi91c2Utc3dyLWVtbGw5czc4Lm1qcyc7XG5pbXBvcnQgeyBzIGFzIHNlcmlhbGl6ZSwgYSBhcyBTV1JHbG9iYWxTdGF0ZSwgbyBhcyBjYWNoZSwgYyBhcyBjcmVhdGVDYWNoZUhlbHBlciwgaSBhcyBpc1VuZGVmaW5lZCwgdSBhcyB1c2VJc29tb3JwaGljTGF5b3V0RWZmZWN0LCBVIGFzIFVOREVGSU5FRCwgZSBhcyBpc0Z1bmN0aW9uIH0gZnJvbSAnLi4vY29uZmlnLWNvbnRleHQtZXh0NTN3Y3oubWpzJztcbmltcG9ydCB7IHdpdGhNaWRkbGV3YXJlIH0gZnJvbSAnLi4vX2ludGVybmFsL2luZGV4Lm1qcyc7XG5pbXBvcnQgeyB1c2VTeW5jRXh0ZXJuYWxTdG9yZSB9IGZyb20gJ3VzZS1zeW5jLWV4dGVybmFsLXN0b3JlL3NoaW0nO1xuaW1wb3J0IHsgSU5GSU5JVEVfUFJFRklYIH0gZnJvbSAnLi4vX2ludGVybmFsL2NvbnN0YW50cy5tanMnO1xuXG5jb25zdCBnZXRGaXJzdFBhZ2VLZXkgPSAoZ2V0S2V5KT0+e1xuICAgIHJldHVybiBzZXJpYWxpemUoZ2V0S2V5ID8gZ2V0S2V5KDAsIG51bGwpIDogbnVsbClbMF07XG59O1xuY29uc3QgdW5zdGFibGVfc2VyaWFsaXplID0gKGdldEtleSk9PntcbiAgICByZXR1cm4gSU5GSU5JVEVfUFJFRklYICsgZ2V0Rmlyc3RQYWdlS2V5KGdldEtleSk7XG59O1xuXG4vLyBXZSBoYXZlIHRvIHNldmVyYWwgdHlwZSBjYXN0aW5ncyBoZXJlIGJlY2F1c2UgYHVzZVNXUkluZmluaXRlYCBpcyBhIHNwZWNpYWxcbi8vIGhvb2sgd2hlcmUgYGtleWAgYW5kIHJldHVybiB0eXBlIGFyZSBub3QgbGlrZSB0aGUgbm9ybWFsIGB1c2VTV1JgIHR5cGVzLlxuY29uc3QgRU1QVFlfUFJPTUlTRSA9IFByb21pc2UucmVzb2x2ZSgpO1xuY29uc3QgaW5maW5pdGUgPSAodXNlU1dSTmV4dCk9PihnZXRLZXksIGZuLCBjb25maWcpPT57XG4gICAgICAgIGNvbnN0IGRpZE1vdW50UmVmID0gdXNlUmVmKGZhbHNlKTtcbiAgICAgICAgY29uc3QgeyBjYWNoZTogY2FjaGUkMSwgaW5pdGlhbFNpemUgPSAxLCByZXZhbGlkYXRlQWxsID0gZmFsc2UsIHBlcnNpc3RTaXplID0gZmFsc2UsIHJldmFsaWRhdGVGaXJzdFBhZ2UgPSB0cnVlLCByZXZhbGlkYXRlT25Nb3VudCA9IGZhbHNlLCBwYXJhbGxlbCA9IGZhbHNlIH0gPSBjb25maWc7XG4gICAgICAgIGNvbnN0IFssICwgLCBQUkVMT0FEXSA9IFNXUkdsb2JhbFN0YXRlLmdldChjYWNoZSk7XG4gICAgICAgIC8vIFRoZSBzZXJpYWxpemVkIGtleSBvZiB0aGUgZmlyc3QgcGFnZS4gVGhpcyBrZXkgd2lsbCBiZSB1c2VkIHRvIHN0b3JlXG4gICAgICAgIC8vIG1ldGFkYXRhIG9mIHRoaXMgU1dSIGluZmluaXRlIGhvb2suXG4gICAgICAgIGxldCBpbmZpbml0ZUtleTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGluZmluaXRlS2V5ID0gZ2V0Rmlyc3RQYWdlS2V5KGdldEtleSk7XG4gICAgICAgICAgICBpZiAoaW5maW5pdGVLZXkpIGluZmluaXRlS2V5ID0gSU5GSU5JVEVfUFJFRklYICsgaW5maW5pdGVLZXk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAvLyBOb3QgcmVhZHkgeWV0LlxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IFtnZXQsIHNldCwgc3Vic2NyaWJlQ2FjaGVdID0gY3JlYXRlQ2FjaGVIZWxwZXIoY2FjaGUkMSwgaW5maW5pdGVLZXkpO1xuICAgICAgICBjb25zdCBnZXRTbmFwc2hvdCA9IHVzZUNhbGxiYWNrKCgpPT57XG4gICAgICAgICAgICBjb25zdCBzaXplID0gaXNVbmRlZmluZWQoZ2V0KCkuX2wpID8gaW5pdGlhbFNpemUgOiBnZXQoKS5fbDtcbiAgICAgICAgICAgIHJldHVybiBzaXplO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gICAgICAgIH0sIFtcbiAgICAgICAgICAgIGNhY2hlJDEsXG4gICAgICAgICAgICBpbmZpbml0ZUtleSxcbiAgICAgICAgICAgIGluaXRpYWxTaXplXG4gICAgICAgIF0pO1xuICAgICAgICB1c2VTeW5jRXh0ZXJuYWxTdG9yZSh1c2VDYWxsYmFjaygoY2FsbGJhY2spPT57XG4gICAgICAgICAgICBpZiAoaW5maW5pdGVLZXkpIHJldHVybiBzdWJzY3JpYmVDYWNoZShpbmZpbml0ZUtleSwgKCk9PntcbiAgICAgICAgICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gKCk9Pnt9O1xuICAgICAgICB9LCAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gICAgICAgIFtcbiAgICAgICAgICAgIGNhY2hlJDEsXG4gICAgICAgICAgICBpbmZpbml0ZUtleVxuICAgICAgICBdKSwgZ2V0U25hcHNob3QsIGdldFNuYXBzaG90KTtcbiAgICAgICAgY29uc3QgcmVzb2x2ZVBhZ2VTaXplID0gdXNlQ2FsbGJhY2soKCk9PntcbiAgICAgICAgICAgIGNvbnN0IGNhY2hlZFBhZ2VTaXplID0gZ2V0KCkuX2w7XG4gICAgICAgICAgICByZXR1cm4gaXNVbmRlZmluZWQoY2FjaGVkUGFnZVNpemUpID8gaW5pdGlhbFNpemUgOiBjYWNoZWRQYWdlU2l6ZTtcbiAgICAgICAgLy8gYGNhY2hlYCBpc24ndCBhbGxvd2VkIHRvIGNoYW5nZSBkdXJpbmcgdGhlIGxpZmVjeWNsZVxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gICAgICAgIH0sIFtcbiAgICAgICAgICAgIGluZmluaXRlS2V5LFxuICAgICAgICAgICAgaW5pdGlhbFNpemVcbiAgICAgICAgXSk7XG4gICAgICAgIC8vIGtlZXAgdGhlIGxhc3QgcGFnZSBzaXplIHRvIHJlc3RvcmUgaXQgd2l0aCB0aGUgcGVyc2lzdFNpemUgb3B0aW9uXG4gICAgICAgIGNvbnN0IGxhc3RQYWdlU2l6ZVJlZiA9IHVzZVJlZihyZXNvbHZlUGFnZVNpemUoKSk7XG4gICAgICAgIC8vIFdoZW4gdGhlIHBhZ2Uga2V5IGNoYW5nZXMsIHdlIHJlc2V0IHRoZSBwYWdlIHNpemUgaWYgaXQncyBub3QgcGVyc2lzdGVkXG4gICAgICAgIHVzZUlzb21vcnBoaWNMYXlvdXRFZmZlY3QoKCk9PntcbiAgICAgICAgICAgIGlmICghZGlkTW91bnRSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgICAgIGRpZE1vdW50UmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpbmZpbml0ZUtleSkge1xuICAgICAgICAgICAgICAgIC8vIElmIHRoZSBrZXkgaGFzIGJlZW4gY2hhbmdlZCwgd2Uga2VlcCB0aGUgY3VycmVudCBwYWdlIHNpemUgaWYgcGVyc2lzdFNpemUgaXMgZW5hYmxlZFxuICAgICAgICAgICAgICAgIC8vIE90aGVyd2lzZSwgd2UgcmVzZXQgdGhlIHBhZ2Ugc2l6ZSB0byBjYWNoZWQgcGFnZVNpemVcbiAgICAgICAgICAgICAgICBzZXQoe1xuICAgICAgICAgICAgICAgICAgICBfbDogcGVyc2lzdFNpemUgPyBsYXN0UGFnZVNpemVSZWYuY3VycmVudCA6IHJlc29sdmVQYWdlU2l6ZSgpXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIC8vIGBpbml0aWFsU2l6ZWAgaXNuJ3QgYWxsb3dlZCB0byBjaGFuZ2UgZHVyaW5nIHRoZSBsaWZlY3ljbGVcbiAgICAgICAgfSwgW1xuICAgICAgICAgICAgaW5maW5pdGVLZXksXG4gICAgICAgICAgICBjYWNoZSQxXG4gICAgICAgIF0pO1xuICAgICAgICAvLyBOZWVkcyB0byBjaGVjayBkaWRNb3VudFJlZiBkdXJpbmcgbW91bnRpbmcsIG5vdCBpbiB0aGUgZmV0Y2hlclxuICAgICAgICBjb25zdCBzaG91bGRSZXZhbGlkYXRlT25Nb3VudCA9IHJldmFsaWRhdGVPbk1vdW50ICYmICFkaWRNb3VudFJlZi5jdXJyZW50O1xuICAgICAgICAvLyBBY3R1YWwgU1dSIGhvb2sgdG8gbG9hZCBhbGwgcGFnZXMgaW4gb25lIGZldGNoZXIuXG4gICAgICAgIGNvbnN0IHN3ciA9IHVzZVNXUk5leHQoaW5maW5pdGVLZXksIGFzeW5jIChrZXkpPT57XG4gICAgICAgICAgICAvLyBnZXQgdGhlIHJldmFsaWRhdGUgY29udGV4dFxuICAgICAgICAgICAgY29uc3QgZm9yY2VSZXZhbGlkYXRlQWxsID0gZ2V0KCkuX2k7XG4gICAgICAgICAgICBjb25zdCBzaG91bGRSZXZhbGlkYXRlUGFnZSA9IGdldCgpLl9yO1xuICAgICAgICAgICAgLy8gQ2FwdHVyZSB0aGUgY2FjaGUncyB1bmxvYWQgZ2VuZXJhdGlvbiAoYnVtcGVkIGJ5IGV2ZXJ5IGB1bmxvYWQoKWBcbiAgICAgICAgICAgIC8vIGNhbGwpIHNvIHBhZ2UgcmVzcG9uc2VzIHRoYXQgcmVzb2x2ZSBhZnRlciBhbiB1bmxvYWQgYXJlIG5vdFxuICAgICAgICAgICAgLy8gd3JpdHRlbiBiYWNrIHRvIHRoZSBjbGVhcmVkIGNhY2hlLlxuICAgICAgICAgICAgY29uc3Qgc3RhdGUgPSBTV1JHbG9iYWxTdGF0ZS5nZXQoY2FjaGUkMSk7XG4gICAgICAgICAgICBjb25zdCB1bmxvYWRHZW5lcmF0aW9uID0gc3RhdGVbOF07XG4gICAgICAgICAgICBjb25zdCB1bmxvYWRlZER1cmluZ1JlcXVlc3QgPSAoKT0+c3RhdGVbOF0gIT09IHVubG9hZEdlbmVyYXRpb247XG4gICAgICAgICAgICBzZXQoe1xuICAgICAgICAgICAgICAgIF9yOiBVTkRFRklORURcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgLy8gcmV0dXJuIGFuIGFycmF5IG9mIHBhZ2UgZGF0YVxuICAgICAgICAgICAgY29uc3QgZGF0YSA9IFtdO1xuICAgICAgICAgICAgY29uc3QgcGFnZVNpemUgPSByZXNvbHZlUGFnZVNpemUoKTtcbiAgICAgICAgICAgIGNvbnN0IFtnZXRDYWNoZV0gPSBjcmVhdGVDYWNoZUhlbHBlcihjYWNoZSQxLCBrZXkpO1xuICAgICAgICAgICAgY29uc3QgY2FjaGVEYXRhID0gZ2V0Q2FjaGUoKS5kYXRhO1xuICAgICAgICAgICAgY29uc3QgcmV2YWxpZGF0b3JzID0gW107XG4gICAgICAgICAgICBsZXQgcHJldmlvdXNQYWdlRGF0YSA9IG51bGw7XG4gICAgICAgICAgICBmb3IobGV0IGkgPSAwOyBpIDwgcGFnZVNpemU7ICsraSl7XG4gICAgICAgICAgICAgICAgY29uc3QgW3BhZ2VLZXksIHBhZ2VBcmddID0gc2VyaWFsaXplKGdldEtleShpLCBwYXJhbGxlbCA/IG51bGwgOiBwcmV2aW91c1BhZ2VEYXRhKSk7XG4gICAgICAgICAgICAgICAgaWYgKCFwYWdlS2V5KSB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBbZ2V0U1dSQ2FjaGUsIHNldFNXUkNhY2hlXSA9IGNyZWF0ZUNhY2hlSGVscGVyKGNhY2hlJDEsIHBhZ2VLZXkpO1xuICAgICAgICAgICAgICAgIC8vIEdldCB0aGUgY2FjaGVkIHBhZ2UgZGF0YS5cbiAgICAgICAgICAgICAgICBsZXQgcGFnZURhdGEgPSBnZXRTV1JDYWNoZSgpLmRhdGE7XG4gICAgICAgICAgICAgICAgLy8gc2hvdWxkIGZldGNoIChvciByZXZhbGlkYXRlKSBpZjpcbiAgICAgICAgICAgICAgICAvLyAtIGByZXZhbGlkYXRlQWxsYCBpcyBlbmFibGVkXG4gICAgICAgICAgICAgICAgLy8gLSBgbXV0YXRlKClgIGNhbGxlZFxuICAgICAgICAgICAgICAgIC8vIC0gdGhlIGNhY2hlIGlzIG1pc3NpbmdcbiAgICAgICAgICAgICAgICAvLyAtIGl0J3MgdGhlIGZpcnN0IHBhZ2UgYW5kIGl0J3Mgbm90IHRoZSBpbml0aWFsIHJlbmRlclxuICAgICAgICAgICAgICAgIC8vIC0gYHJldmFsaWRhdGVPbk1vdW50YCBpcyBlbmFibGVkIGFuZCBpdCdzIG9uIG1vdW50XG4gICAgICAgICAgICAgICAgLy8gLSBjYWNoZSBmb3IgdGhhdCBwYWdlIGhhcyBjaGFuZ2VkXG4gICAgICAgICAgICAgICAgY29uc3Qgc2hvdWxkRmV0Y2hQYWdlID0gcmV2YWxpZGF0ZUFsbCB8fCBmb3JjZVJldmFsaWRhdGVBbGwgfHwgaXNVbmRlZmluZWQocGFnZURhdGEpIHx8IHJldmFsaWRhdGVGaXJzdFBhZ2UgJiYgIWkgJiYgIWlzVW5kZWZpbmVkKGNhY2hlRGF0YSkgfHwgc2hvdWxkUmV2YWxpZGF0ZU9uTW91bnQgfHwgY2FjaGVEYXRhICYmICFpc1VuZGVmaW5lZChjYWNoZURhdGFbaV0pICYmICFjb25maWcuY29tcGFyZShjYWNoZURhdGFbaV0sIHBhZ2VEYXRhKTtcbiAgICAgICAgICAgICAgICBpZiAoZm4gJiYgKHR5cGVvZiBzaG91bGRSZXZhbGlkYXRlUGFnZSA9PT0gJ2Z1bmN0aW9uJyA/IHNob3VsZFJldmFsaWRhdGVQYWdlKHBhZ2VEYXRhLCBwYWdlQXJnKSA6IHNob3VsZEZldGNoUGFnZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmV2YWxpZGF0ZSA9IGFzeW5jICgpPT57XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBoYXNQcmVsb2FkZWRSZXF1ZXN0ID0gcGFnZUtleSBpbiBQUkVMT0FEO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFoYXNQcmVsb2FkZWRSZXF1ZXN0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZURhdGEgPSBhd2FpdCBmbihwYWdlQXJnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVxID0gUFJFTE9BRFtwYWdlS2V5XTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkZWxldGUgdGhlIHByZWxvYWQgY2FjaGUga2V5IGJlZm9yZSByZXNvbHZpbmcgaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbiBjYXNlIHRoZXJlJ3MgYW4gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgUFJFTE9BRFtwYWdlS2V5XTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnZXQgdGhlIHBhZ2UgZGF0YSBmcm9tIHRoZSBwcmVsb2FkIGNhY2hlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZURhdGEgPSBhd2FpdCByZXE7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXVubG9hZGVkRHVyaW5nUmVxdWVzdCgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U1dSQ2FjaGUoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiBwYWdlRGF0YSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2s6IHBhZ2VBcmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFbaV0gPSBwYWdlRGF0YTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmFsbGVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXZhbGlkYXRvcnMucHVzaChyZXZhbGlkYXRlKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IHJldmFsaWRhdGUoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGFbaV0gPSBwYWdlRGF0YTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCFwYXJhbGxlbCkge1xuICAgICAgICAgICAgICAgICAgICBwcmV2aW91c1BhZ2VEYXRhID0gcGFnZURhdGE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gZmx1c2ggYWxsIHJldmFsaWRhdGVpb25zIGluIHBhcmFsbGVsXG4gICAgICAgICAgICBpZiAocGFyYWxsZWwpIHtcbiAgICAgICAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChyZXZhbGlkYXRvcnMubWFwKChyKT0+cigpKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBvbmNlIHdlIGV4ZWN1dGVkIHRoZSBkYXRhIGZldGNoaW5nIGJhc2VkIG9uIHRoZSBjb250ZXh0LCBjbGVhciB0aGVcbiAgICAgICAgICAgIC8vIGNvbnRleHQuIFNraXBwZWQgYWZ0ZXIgYW4gdW5sb2FkIHNvIHRoZSBjbGVhcmVkIG1ldGEgZW50cnkgaXNuJ3RcbiAgICAgICAgICAgIC8vIHJlLWNyZWF0ZWQuXG4gICAgICAgICAgICBpZiAoIXVubG9hZGVkRHVyaW5nUmVxdWVzdCgpKSB7XG4gICAgICAgICAgICAgICAgc2V0KHtcbiAgICAgICAgICAgICAgICAgICAgX2k6IFVOREVGSU5FRFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gcmV0dXJuIHRoZSBkYXRhXG4gICAgICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgICAgfSwgY29uZmlnKTtcbiAgICAgICAgY29uc3QgbXV0YXRlID0gdXNlQ2FsbGJhY2soLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcbiAgICAgICAgZnVuY3Rpb24oZGF0YSwgb3B0cykge1xuICAgICAgICAgICAgLy8gV2hlbiBwYXNzaW5nIGFzIGEgYm9vbGVhbiwgaXQncyBleHBsaWNpdGx5IHVzZWQgdG8gZGlzYWJsZS9lbmFibGVcbiAgICAgICAgICAgIC8vIHJldmFsaWRhdGlvbi5cbiAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB0eXBlb2Ygb3B0cyA9PT0gJ2Jvb2xlYW4nID8ge1xuICAgICAgICAgICAgICAgIHJldmFsaWRhdGU6IG9wdHNcbiAgICAgICAgICAgIH0gOiBvcHRzIHx8IHt9O1xuICAgICAgICAgICAgLy8gRGVmYXVsdCB0byB0cnVlLlxuICAgICAgICAgICAgY29uc3Qgc2hvdWxkUmV2YWxpZGF0ZSA9IG9wdGlvbnMucmV2YWxpZGF0ZSAhPT0gZmFsc2U7XG4gICAgICAgICAgICAvLyBJdCBpcyBwb3NzaWJsZSB0aGF0IHRoZSBrZXkgaXMgc3RpbGwgZmFsc3kuXG4gICAgICAgICAgICBpZiAoIWluZmluaXRlS2V5KSByZXR1cm4gRU1QVFlfUFJPTUlTRTtcbiAgICAgICAgICAgIGlmIChzaG91bGRSZXZhbGlkYXRlKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFpc1VuZGVmaW5lZChkYXRhKSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBXZSBvbmx5IHJldmFsaWRhdGUgdGhlIHBhZ2VzIHRoYXQgYXJlIGNoYW5nZWRcbiAgICAgICAgICAgICAgICAgICAgc2V0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIF9pOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF9yOiBvcHRpb25zLnJldmFsaWRhdGVcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gQ2FsbGluZyBgbXV0YXRlKClgLCB3ZSByZXZhbGlkYXRlIGFsbCBwYWdlc1xuICAgICAgICAgICAgICAgICAgICBzZXQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgX2k6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBfcjogb3B0aW9ucy5yZXZhbGlkYXRlXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gc3dyLm11dGF0ZShkYXRhLCB7XG4gICAgICAgICAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgICAgICAgICByZXZhbGlkYXRlOiBzaG91bGRSZXZhbGlkYXRlXG4gICAgICAgICAgICB9KSA6IHN3ci5tdXRhdGUoKTtcbiAgICAgICAgfSwgLy8gc3dyLm11dGF0ZSBpcyBhbHdheXMgdGhlIHNhbWUgcmVmZXJlbmNlXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgICAgICAgW1xuICAgICAgICAgICAgaW5maW5pdGVLZXksXG4gICAgICAgICAgICBjYWNoZSQxXG4gICAgICAgIF0pO1xuICAgICAgICAvLyBFeHRlbmQgdGhlIFNXUiBBUElcbiAgICAgICAgY29uc3Qgc2V0U2l6ZSA9IHVzZUNhbGxiYWNrKChhcmcpPT57XG4gICAgICAgICAgICAvLyBJdCBpcyBwb3NzaWJsZSB0aGF0IHRoZSBrZXkgaXMgc3RpbGwgZmFsc3kuXG4gICAgICAgICAgICBpZiAoIWluZmluaXRlS2V5KSByZXR1cm4gRU1QVFlfUFJPTUlTRTtcbiAgICAgICAgICAgIGNvbnN0IFssIGNoYW5nZVNpemVdID0gY3JlYXRlQ2FjaGVIZWxwZXIoY2FjaGUkMSwgaW5maW5pdGVLZXkpO1xuICAgICAgICAgICAgbGV0IHNpemU7XG4gICAgICAgICAgICBpZiAoaXNGdW5jdGlvbihhcmcpKSB7XG4gICAgICAgICAgICAgICAgc2l6ZSA9IGFyZyhyZXNvbHZlUGFnZVNpemUoKSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBhcmcgPT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgICBzaXplID0gYXJnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHR5cGVvZiBzaXplICE9ICdudW1iZXInKSByZXR1cm4gRU1QVFlfUFJPTUlTRTtcbiAgICAgICAgICAgIGNoYW5nZVNpemUoe1xuICAgICAgICAgICAgICAgIF9sOiBzaXplXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGxhc3RQYWdlU2l6ZVJlZi5jdXJyZW50ID0gc2l6ZTtcbiAgICAgICAgICAgIC8vIENhbGN1bGF0ZSB0aGUgcGFnZSBkYXRhIGFmdGVyIHRoZSBzaXplIGNoYW5nZS5cbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBbXTtcbiAgICAgICAgICAgIGNvbnN0IFtnZXRJbmZpbml0ZUNhY2hlXSA9IGNyZWF0ZUNhY2hlSGVscGVyKGNhY2hlJDEsIGluZmluaXRlS2V5KTtcbiAgICAgICAgICAgIGxldCBwcmV2aW91c1BhZ2VEYXRhID0gbnVsbDtcbiAgICAgICAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCBzaXplOyArK2kpe1xuICAgICAgICAgICAgICAgIGNvbnN0IFtwYWdlS2V5XSA9IHNlcmlhbGl6ZShnZXRLZXkoaSwgcHJldmlvdXNQYWdlRGF0YSkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IFtnZXRDYWNoZV0gPSBjcmVhdGVDYWNoZUhlbHBlcihjYWNoZSQxLCBwYWdlS2V5KTtcbiAgICAgICAgICAgICAgICAvLyBHZXQgdGhlIGNhY2hlZCBwYWdlIGRhdGEuXG4gICAgICAgICAgICAgICAgY29uc3QgcGFnZURhdGEgPSBwYWdlS2V5ID8gZ2V0Q2FjaGUoKS5kYXRhIDogVU5ERUZJTkVEO1xuICAgICAgICAgICAgICAgIC8vIENhbGwgYG11dGF0ZWAgd2l0aCBpbmZpbnRlIGNhY2hlIGRhdGEgaWYgd2UgY2FuJ3QgZ2V0IGl0IGZyb20gdGhlIHBhZ2UgY2FjaGUuXG4gICAgICAgICAgICAgICAgaWYgKGlzVW5kZWZpbmVkKHBhZ2VEYXRhKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbXV0YXRlKGdldEluZmluaXRlQ2FjaGUoKS5kYXRhKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZGF0YS5wdXNoKHBhZ2VEYXRhKTtcbiAgICAgICAgICAgICAgICBwcmV2aW91c1BhZ2VEYXRhID0gcGFnZURhdGE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbXV0YXRlKGRhdGEpO1xuICAgICAgICB9LCAvLyBleGNsdWRlIGdldEtleSBmcm9tIHRoZSBkZXBlbmRlbmNpZXMsIHdoaWNoIGlzbid0IGFsbG93ZWQgdG8gY2hhbmdlIGR1cmluZyB0aGUgbGlmZWN5Y2xlXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgICAgICAgW1xuICAgICAgICAgICAgaW5maW5pdGVLZXksXG4gICAgICAgICAgICBjYWNoZSQxLFxuICAgICAgICAgICAgbXV0YXRlLFxuICAgICAgICAgICAgcmVzb2x2ZVBhZ2VTaXplXG4gICAgICAgIF0pO1xuICAgICAgICAvLyBVc2UgZ2V0dGVyIGZ1bmN0aW9ucyB0byBhdm9pZCB1bm5lY2Vzc2FyeSByZS1yZW5kZXJzIGNhdXNlZCBieSB0cmlnZ2VyaW5nXG4gICAgICAgIC8vIGFsbCB0aGUgZ2V0dGVycyBvZiB0aGUgcmV0dXJuZWQgc3dyIG9iamVjdC5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHNpemU6IHJlc29sdmVQYWdlU2l6ZSgpLFxuICAgICAgICAgICAgc2V0U2l6ZSxcbiAgICAgICAgICAgIG11dGF0ZSxcbiAgICAgICAgICAgIGdldCBkYXRhICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3dyLmRhdGE7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0IGVycm9yICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3dyLmVycm9yO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldCBpc1ZhbGlkYXRpbmcgKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzd3IuaXNWYWxpZGF0aW5nO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldCBpc0xvYWRpbmcgKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzd3IuaXNMb2FkaW5nO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH07XG5jb25zdCB1c2VTV1JJbmZpbml0ZSA9IHdpdGhNaWRkbGV3YXJlKHVzZVNXUiwgaW5maW5pdGUpO1xuXG5leHBvcnQgeyB1c2VTV1JJbmZpbml0ZSBhcyBkZWZhdWx0LCBpbmZpbml0ZSwgdW5zdGFibGVfc2VyaWFsaXplIH07XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUE0QztBQUNVO0FBQ3NKO0FBQ3BKO0FBQ1k7QUFDUDs7QUFFN0Q7QUFDQSxXQUFXLG1EQUFTO0FBQ3BCO0FBQ0E7QUFDQSxXQUFXLHdEQUFlO0FBQzFCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLGlDQUFNO0FBQ2xDLGdCQUFnQix1SkFBdUo7QUFDdkssZ0NBQWdDLG1EQUFrQixDQUFDLCtDQUFLO0FBQ3hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkMsd0RBQWU7QUFDMUQsVUFBVTtBQUNWO0FBQ0E7QUFDQSwyQ0FBMkMsbURBQWlCO0FBQzVELDRCQUE0QixzQ0FBVztBQUN2Qyx5QkFBeUIsbURB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\n//# sourceURL=webpack-internal:///../../../node_modules/swr/dist/infinite/index.mjs\n\n}");
5
+
6
+ },
7
+
8
+ }]);
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ (globalThis["webpackChunk_openmrs_esm_app_shell"] = globalThis["webpackChunk_openmrs_esm_app_shell"] || []).push([["default-node_modules_swr_dist__internal_index_mjs"], {
3
+ "../../../node_modules/dequal/lite/index.mjs"(__unused_rspack___webpack_module__, __webpack_exports__, __webpack_require__) {
4
+ eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webpack_exports__, {\n dequal: () => (dequal)\n});\nvar has = Object.prototype.hasOwnProperty;\n\nfunction dequal(foo, bar) {\n\tvar ctor, len;\n\tif (foo === bar) return true;\n\n\tif (foo && bar && (ctor=foo.constructor) === bar.constructor) {\n\t\tif (ctor === Date) return foo.getTime() === bar.getTime();\n\t\tif (ctor === RegExp) return foo.toString() === bar.toString();\n\n\t\tif (ctor === Array) {\n\t\t\tif ((len=foo.length) === bar.length) {\n\t\t\t\twhile (len-- && dequal(foo[len], bar[len]));\n\t\t\t}\n\t\t\treturn len === -1;\n\t\t}\n\n\t\tif (!ctor || typeof foo === 'object') {\n\t\t\tlen = 0;\n\t\t\tfor (ctor in foo) {\n\t\t\t\tif (has.call(foo, ctor) && ++len && !has.call(bar, ctor)) return false;\n\t\t\t\tif (!(ctor in bar) || !dequal(foo[ctor], bar[ctor])) return false;\n\t\t\t}\n\t\t\treturn Object.keys(bar).length === len;\n\t\t}\n\t}\n\n\treturn foo !== foo && bar !== bar;\n}\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YXNjcmlwdC9lc218L2hvbWUvcnVubmVyL3dvcmsvb3Blbm1ycy1lc20tY29yZS9vcGVubXJzLWVzbS1jb3JlL25vZGVfbW9kdWxlcy9kZXF1YWwvbGl0ZS9pbmRleC5tanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kZXF1YWwvbGl0ZS9pbmRleC5tanM/NDgzYiJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgaGFzID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcblxuZXhwb3J0IGZ1bmN0aW9uIGRlcXVhbChmb28sIGJhcikge1xuXHR2YXIgY3RvciwgbGVuO1xuXHRpZiAoZm9vID09PSBiYXIpIHJldHVybiB0cnVlO1xuXG5cdGlmIChmb28gJiYgYmFyICYmIChjdG9yPWZvby5jb25zdHJ1Y3RvcikgPT09IGJhci5jb25zdHJ1Y3Rvcikge1xuXHRcdGlmIChjdG9yID09PSBEYXRlKSByZXR1cm4gZm9vLmdldFRpbWUoKSA9PT0gYmFyLmdldFRpbWUoKTtcblx0XHRpZiAoY3RvciA9PT0gUmVnRXhwKSByZXR1cm4gZm9vLnRvU3RyaW5nKCkgPT09IGJhci50b1N0cmluZygpO1xuXG5cdFx0aWYgKGN0b3IgPT09IEFycmF5KSB7XG5cdFx0XHRpZiAoKGxlbj1mb28ubGVuZ3RoKSA9PT0gYmFyLmxlbmd0aCkge1xuXHRcdFx0XHR3aGlsZSAobGVuLS0gJiYgZGVxdWFsKGZvb1tsZW5dLCBiYXJbbGVuXSkpO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGxlbiA9PT0gLTE7XG5cdFx0fVxuXG5cdFx0aWYgKCFjdG9yIHx8IHR5cGVvZiBmb28gPT09ICdvYmplY3QnKSB7XG5cdFx0XHRsZW4gPSAwO1xuXHRcdFx0Zm9yIChjdG9yIGluIGZvbykge1xuXHRcdFx0XHRpZiAoaGFzLmNhbGwoZm9vLCBjdG9yKSAmJiArK2xlbiAmJiAhaGFzLmNhbGwoYmFyLCBjdG9yKSkgcmV0dXJuIGZhbHNlO1xuXHRcdFx0XHRpZiAoIShjdG9yIGluIGJhcikgfHwgIWRlcXVhbChmb29bY3Rvcl0sIGJhcltjdG9yXSkpIHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBPYmplY3Qua2V5cyhiYXIpLmxlbmd0aCA9PT0gbGVuO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiBmb28gIT09IGZvbyAmJiBiYXIgIT09IGJhcjtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUE7O0FBRU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/dequal/lite/index.mjs\n\n}");
5
+
6
+ },
7
+ "../../../node_modules/swr/dist/_internal/constants.mjs"(__unused_rspack___webpack_module__, __webpack_exports__, __webpack_require__) {
8
+ eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webpack_exports__, {\n INFINITE_PREFIX: () => (INFINITE_PREFIX)\n});\nconst INFINITE_PREFIX = '$inf$';\n\n\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YXNjcmlwdC9lc218L2hvbWUvcnVubmVyL3dvcmsvb3Blbm1ycy1lc20tY29yZS9vcGVubXJzLWVzbS1jb3JlL25vZGVfbW9kdWxlcy9zd3IvZGlzdC9faW50ZXJuYWwvY29uc3RhbnRzLm1qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0BvcGVubXJzL2VzbS1hcHAtc2hlbGwvLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N3ci9kaXN0L19pbnRlcm5hbC9jb25zdGFudHMubWpzPzlhYzEiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgSU5GSU5JVEVfUFJFRklYID0gJyRpbmYkJztcblxuZXhwb3J0IHsgSU5GSU5JVEVfUFJFRklYIH07XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBOztBQUUyQiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/swr/dist/_internal/constants.mjs\n\n}");
9
+
10
+ },
11
+ "../../../node_modules/swr/dist/_internal/index.mjs"(__unused_rspack___webpack_module__, __webpack_exports__, __webpack_require__) {
12
+ eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webpack_exports__, {\n INFINITE_PREFIX: () => (/* reexport safe */ _constants_mjs__rspack_import_2.INFINITE_PREFIX),\n IS_REACT_LEGACY: () => (/* reexport safe */ _config_context_ext53wcz_mjs__rspack_import_0.j),\n IS_SERVER: () => (/* reexport safe */ _config_context_ext53wcz_mjs__rspack_import_0.I),\n OBJECT: () => (/* reexport safe */ _config_context_ext53wcz_mjs__rspack_import_0.O),\n SWRConfig: () => (/* reexport safe */ _config_context_ext53wcz_mjs__rspack_import_0.S),\n SWRGlobalState: () => (/* reexport safe */ _config_context_ext53wcz_mjs__rspack_import_0.a),\n UNDEFINED: () => (/* reexport safe */ _config_context_ext53wcz_mjs__rspack_import_0.U),\n cache: () => (/* reexport safe */ _config_context_ext53wcz_mjs__rspack_import_0.o),\n compare: () => (/* reexport safe */ _config_context_ext53wcz_mjs__rspack_import_0.v),\n createCacheHelper: () => (/* reexport safe */ _config_context_ext53wcz_mjs__rspack_import_0.c),\n defaultConfig: () => (/* reexport safe */ _config_context_ext53wcz_mjs__rspack_import_0.d),\n defaultConfigOptions: () => (/* reexport safe */ _config_context_ext53wcz_mjs__rspack_import_0.w),\n getTimestamp: () => (/* reexport safe */ _config_context_ext53wcz_mjs__rspack_import_0.g),\n hasRequestAnimationFrame: () => (/* reexport safe */ _config_context_ext53wcz_mjs__rspack_import_0.x),\n initCache: () => (/* reexport safe */ _config_context_ext53wcz_mjs__rspack_import_0.y),\n internalMutate: () => (/* reexport safe */ _config_context_ext53wcz_mjs__rspack_import_0.f),\n isDocumentDefined: () => (/* reexport safe */ _config_context_ext53wcz_mjs__rspack_import_0.z),\n isFunction: () => (/* reexport safe */ _config_context_ext53wcz_mjs__rspack_import_0.e),\n isLegacyDeno: () => (/* reexport safe */ _config_context_ext53wcz_mjs__rspack_import_0.A),\n isPromiseLike: () => (/* reexport safe */ _config_context_ext53wcz_mjs__rspack_import_0.b),\n isUndefined: () => (/* reexport safe */ _config_context_ext53wcz_mjs__rspack_import_0.i),\n isWindowDefined: () => (/* reexport safe */ _config_context_ext53wcz_mjs__rspack_import_0.p),\n mergeConfigs: () => (/* reexport safe */ _config_context_ext53wcz_mjs__rspack_import_0.t),\n mergeObjects: () => (/* reexport safe */ _config_context_ext53wcz_mjs__rspack_import_0.m),\n mutate: () => (/* reexport safe */ _config_context_ext53wcz_mjs__rspack_import_0.k),\n noop: () => (/* reexport safe */ _config_context_ext53wcz_mjs__rspack_import_0.n),\n normalize: () => (normalize),\n preload: () => (preload),\n preset: () => (/* reexport safe */ _config_context_ext53wcz_mjs__rspack_import_0.B),\n rAF: () => (/* reexport safe */ _config_context_ext53wcz_mjs__rspack_import_0.r),\n revalidateEvents: () => (/* reexport safe */ _config_context_ext53wcz_mjs__rspack_import_0.C),\n serialize: () => (/* reexport safe */ _config_context_ext53wcz_mjs__rspack_import_0.s),\n slowConnection: () => (/* reexport safe */ _config_context_ext53wcz_mjs__rspack_import_0.D),\n stableHash: () => (/* reexport safe */ _config_context_ext53wcz_mjs__rspack_import_0.G),\n subscribeCallback: () => (subscribeCallback),\n unload: () => (/* reexport safe */ _config_context_ext53wcz_mjs__rspack_import_0.l),\n useIsomorphicLayoutEffect: () => (/* reexport safe */ _config_context_ext53wcz_mjs__rspack_import_0.u),\n useSWRConfig: () => (useSWRConfig),\n withArgs: () => (withArgs),\n withMiddleware: () => (withMiddleware)\n});\n/* import */ var _config_context_ext53wcz_mjs__rspack_import_0 = __webpack_require__(\"../../../node_modules/swr/dist/config-context-ext53wcz.mjs\");\n/* import */ var _constants_mjs__rspack_import_2 = __webpack_require__(\"../../../node_modules/swr/dist/_internal/constants.mjs\");\n/* import */ var react__rspack_import_1 = __webpack_require__(\"webpack/sharing/consume/default/react/react\");\n/* import */ var react__rspack_import_1_default = /*#__PURE__*/__webpack_require__.n(react__rspack_import_1);\n\n\n\n\n\n// @ts-expect-error\nconst enableDevtools = _config_context_ext53wcz_mjs__rspack_import_0.p && window.__SWR_DEVTOOLS_USE__;\nconst use = enableDevtools ? window.__SWR_DEVTOOLS_USE__ : [];\nconst setupDevTools = ()=>{\n if (enableDevtools) {\n // @ts-expect-error\n window.__SWR_DEVTOOLS_REACT__ = (react__rspack_import_1_default());\n }\n};\n\nconst normalize = (args)=>{\n return (0,_config_context_ext53wcz_mjs__rspack_import_0.e)(args[1]) ? [\n args[0],\n args[1],\n args[2] || {}\n ] : [\n args[0],\n null,\n (args[1] === null ? args[2] : args[1]) || {}\n ];\n};\n\nconst useSWRConfig = ()=>{\n const parentConfig = (0,react__rspack_import_1.useContext)(_config_context_ext53wcz_mjs__rspack_import_0.q);\n const mergedConfig = (0,react__rspack_import_1.useMemo)(()=>(0,_config_context_ext53wcz_mjs__rspack_import_0.m)(_config_context_ext53wcz_mjs__rspack_import_0.d, parentConfig), [\n parentConfig\n ]);\n return mergedConfig;\n};\n\nconst preload = (key_, fetcher)=>{\n // preload should be a no-op on the server\n if (_config_context_ext53wcz_mjs__rspack_import_0.I) {\n return undefined;\n }\n const [key, fnArg] = (0,_config_context_ext53wcz_mjs__rspack_import_0.s)(key_);\n const [, , , PRELOAD] = _config_context_ext53wcz_mjs__rspack_import_0.a.get(_config_context_ext53wcz_mjs__rspack_import_0.o);\n // Prevent preload to be called multiple times before used.\n if (PRELOAD[key]) {\n return PRELOAD[key];\n }\n const req = fetcher(fnArg);\n PRELOAD[key] = req;\n return req;\n};\nconst middleware = (useSWRNext)=>(key_, fetcher_, config)=>{\n // fetcher might be a sync function, so this should not be an async function\n const fetcher = fetcher_ && ((...args)=>{\n const [key] = (0,_config_context_ext53wcz_mjs__rspack_import_0.s)(key_);\n const [, , , PRELOAD] = _config_context_ext53wcz_mjs__rspack_import_0.a.get(_config_context_ext53wcz_mjs__rspack_import_0.o);\n if (key.startsWith(_constants_mjs__rspack_import_2.INFINITE_PREFIX)) {\n // we want the infinite fetcher to be called.\n // handling of the PRELOAD cache happens there.\n return fetcher_(...args);\n }\n const req = PRELOAD[key];\n if ((0,_config_context_ext53wcz_mjs__rspack_import_0.i)(req)) return fetcher_(...args);\n delete PRELOAD[key];\n return req;\n });\n return useSWRNext(key_, fetcher, config);\n };\n\nconst BUILT_IN_MIDDLEWARE = use.concat(middleware);\n\n// It's tricky to pass generic types as parameters, so we just directly override\n// the types here.\nconst withArgs = (hook)=>{\n return function useSWRArgs(...args) {\n // Get the default and inherited configuration.\n const fallbackConfig = useSWRConfig();\n // Normalize arguments.\n const [key, fn, _config] = normalize(args);\n // Merge configurations.\n const config = (0,_config_context_ext53wcz_mjs__rspack_import_0.t)(fallbackConfig, _config);\n // Apply middleware\n let next = hook;\n const { use } = config;\n const middleware = (use || []).concat(BUILT_IN_MIDDLEWARE);\n for(let i = middleware.length; i--;){\n next = middleware[i](next);\n }\n return next(key, fn || config.fetcher || null, config);\n };\n};\n\n// Add a callback function to a list of keyed callback functions and return\n// the unsubscribe function.\nconst subscribeCallback = (key, callbacks, callback)=>{\n const keyedRevalidators = callbacks[key] || (callbacks[key] = []);\n keyedRevalidators.push(callback);\n return ()=>{\n const index = keyedRevalidators.indexOf(callback);\n if (index >= 0) {\n // O(1): faster than splice\n keyedRevalidators[index] = keyedRevalidators[keyedRevalidators.length - 1];\n keyedRevalidators.pop();\n }\n };\n};\n\n// Create a custom hook with a middleware\nconst withMiddleware = (useSWR, middleware)=>{\n return (...args)=>{\n const [key, fn, config] = normalize(args);\n const uses = (config.use || []).concat(middleware);\n return useSWR(key, fn, {\n ...config,\n use: uses\n });\n };\n};\n\nsetupDevTools();\n\n\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YXNjcmlwdC9lc218L2hvbWUvcnVubmVyL3dvcmsvb3Blbm1ycy1lc20tY29yZS9vcGVubXJzLWVzbS1jb3JlL25vZGVfbW9kdWxlcy9zd3IvZGlzdC9faW50ZXJuYWwvaW5kZXgubWpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQG9wZW5tcnMvZXNtLWFwcC1zaGVsbC8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3dyL2Rpc3QvX2ludGVybmFsL2luZGV4Lm1qcz8yMWM2Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHAgYXMgaXNXaW5kb3dEZWZpbmVkLCBlIGFzIGlzRnVuY3Rpb24sIHEgYXMgU1dSQ29uZmlnQ29udGV4dCwgbSBhcyBtZXJnZU9iamVjdHMsIGQgYXMgZGVmYXVsdENvbmZpZywgcyBhcyBzZXJpYWxpemUsIGEgYXMgU1dSR2xvYmFsU3RhdGUsIG8gYXMgY2FjaGUsIGkgYXMgaXNVbmRlZmluZWQsIEkgYXMgSVNfU0VSVkVSLCB0IGFzIG1lcmdlQ29uZmlncyB9IGZyb20gJy4uL2NvbmZpZy1jb250ZXh0LWV4dDUzd2N6Lm1qcyc7XG5leHBvcnQgeyBqIGFzIElTX1JFQUNUX0xFR0FDWSwgTyBhcyBPQkpFQ1QsIFMgYXMgU1dSQ29uZmlnLCBVIGFzIFVOREVGSU5FRCwgdiBhcyBjb21wYXJlLCBjIGFzIGNyZWF0ZUNhY2hlSGVscGVyLCB3IGFzIGRlZmF1bHRDb25maWdPcHRpb25zLCBnIGFzIGdldFRpbWVzdGFtcCwgeCBhcyBoYXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWUsIHkgYXMgaW5pdENhY2hlLCBmIGFzIGludGVybmFsTXV0YXRlLCB6IGFzIGlzRG9jdW1lbnREZWZpbmVkLCBBIGFzIGlzTGVnYWN5RGVubywgYiBhcyBpc1Byb21pc2VMaWtlLCBrIGFzIG11dGF0ZSwgbiBhcyBub29wLCBCIGFzIHByZXNldCwgciBhcyByQUYsIEMgYXMgcmV2YWxpZGF0ZUV2ZW50cywgRCBhcyBzbG93Q29ubmVjdGlvbiwgRyBhcyBzdGFibGVIYXNoLCBsIGFzIHVubG9hZCwgdSBhcyB1c2VJc29tb3JwaGljTGF5b3V0RWZmZWN0IH0gZnJvbSAnLi4vY29uZmlnLWNvbnRleHQtZXh0NTN3Y3oubWpzJztcbmltcG9ydCB7IElORklOSVRFX1BSRUZJWCB9IGZyb20gJy4vY29uc3RhbnRzLm1qcyc7XG5pbXBvcnQgUmVhY3QsIHsgdXNlQ29udGV4dCwgdXNlTWVtbyB9IGZyb20gJ3JlYWN0JztcblxuLy8gQHRzLWV4cGVjdC1lcnJvclxuY29uc3QgZW5hYmxlRGV2dG9vbHMgPSBpc1dpbmRvd0RlZmluZWQgJiYgd2luZG93Ll9fU1dSX0RFVlRPT0xTX1VTRV9fO1xuY29uc3QgdXNlID0gZW5hYmxlRGV2dG9vbHMgPyB3aW5kb3cuX19TV1JfREVWVE9PTFNfVVNFX18gOiBbXTtcbmNvbnN0IHNldHVwRGV2VG9vbHMgPSAoKT0+e1xuICAgIGlmIChlbmFibGVEZXZ0b29scykge1xuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICAgIHdpbmRvdy5fX1NXUl9ERVZUT09MU19SRUFDVF9fID0gUmVhY3Q7XG4gICAgfVxufTtcblxuY29uc3Qgbm9ybWFsaXplID0gKGFyZ3MpPT57XG4gICAgcmV0dXJuIGlzRnVuY3Rpb24oYXJnc1sxXSkgPyBbXG4gICAgICAgIGFyZ3NbMF0sXG4gICAgICAgIGFyZ3NbMV0sXG4gICAgICAgIGFyZ3NbMl0gfHwge31cbiAgICBdIDogW1xuICAgICAgICBhcmdzWzBdLFxuICAgICAgICBudWxsLFxuICAgICAgICAoYXJnc1sxXSA9PT0gbnVsbCA/IGFyZ3NbMl0gOiBhcmdzWzFdKSB8fCB7fVxuICAgIF07XG59O1xuXG5jb25zdCB1c2VTV1JDb25maWcgPSAoKT0+e1xuICAgIGNvbnN0IHBhcmVudENvbmZpZyA9IHVzZUNvbnRleHQoU1dSQ29uZmlnQ29udGV4dCk7XG4gICAgY29uc3QgbWVyZ2VkQ29uZmlnID0gdXNlTWVtbygoKT0+bWVyZ2VPYmplY3RzKGRlZmF1bHRDb25maWcsIHBhcmVudENvbmZpZyksIFtcbiAgICAgICAgcGFyZW50Q29uZmlnXG4gICAgXSk7XG4gICAgcmV0dXJuIG1lcmdlZENvbmZpZztcbn07XG5cbmNvbnN0IHByZWxvYWQgPSAoa2V5XywgZmV0Y2hlcik9PntcbiAgICAvLyBwcmVsb2FkIHNob3VsZCBiZSBhIG5vLW9wIG9uIHRoZSBzZXJ2ZXJcbiAgICBpZiAoSVNfU0VSVkVSKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGNvbnN0IFtrZXksIGZuQXJnXSA9IHNlcmlhbGl6ZShrZXlfKTtcbiAgICBjb25zdCBbLCAsICwgUFJFTE9BRF0gPSBTV1JHbG9iYWxTdGF0ZS5nZXQoY2FjaGUpO1xuICAgIC8vIFByZXZlbnQgcHJlbG9hZCB0byBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgYmVmb3JlIHVzZWQuXG4gICAgaWYgKFBSRUxPQURba2V5XSkge1xuICAgICAgICByZXR1cm4gUFJFTE9BRFtrZXldO1xuICAgIH1cbiAgICBjb25zdCByZXEgPSBmZXRjaGVyKGZuQXJnKTtcbiAgICBQUkVMT0FEW2tleV0gPSByZXE7XG4gICAgcmV0dXJuIHJlcTtcbn07XG5jb25zdCBtaWRkbGV3YXJlID0gKHVzZVNXUk5leHQpPT4oa2V5XywgZmV0Y2hlcl8sIGNvbmZpZyk9PntcbiAgICAgICAgLy8gZmV0Y2hlciBtaWdodCBiZSBhIHN5bmMgZnVuY3Rpb24sIHNvIHRoaXMgc2hvdWxkIG5vdCBiZSBhbiBhc3luYyBmdW5jdGlvblxuICAgICAgICBjb25zdCBmZXRjaGVyID0gZmV0Y2hlcl8gJiYgKCguLi5hcmdzKT0+e1xuICAgICAgICAgICAgY29uc3QgW2tleV0gPSBzZXJpYWxpemUoa2V5Xyk7XG4gICAgICAgICAgICBjb25zdCBbLCAsICwgUFJFTE9BRF0gPSBTV1JHbG9iYWxTdGF0ZS5nZXQoY2FjaGUpO1xuICAgICAgICAgICAgaWYgKGtleS5zdGFydHNXaXRoKElORklOSVRFX1BSRUZJWCkpIHtcbiAgICAgICAgICAgICAgICAvLyB3ZSB3YW50IHRoZSBpbmZpbml0ZSBmZXRjaGVyIHRvIGJlIGNhbGxlZC5cbiAgICAgICAgICAgICAgICAvLyBoYW5kbGluZyBvZiB0aGUgUFJFTE9BRCBjYWNoZSBoYXBwZW5zIHRoZXJlLlxuICAgICAgICAgICAgICAgIHJldHVybiBmZXRjaGVyXyguLi5hcmdzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHJlcSA9IFBSRUxPQURba2V5XTtcbiAgICAgICAgICAgIGlmIChpc1VuZGVmaW5lZChyZXEpKSByZXR1cm4gZmV0Y2hlcl8oLi4uYXJncyk7XG4gICAgICAgICAgICBkZWxldGUgUFJFTE9BRFtrZXldO1xuICAgICAgICAgICAgcmV0dXJuIHJlcTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB1c2VTV1JOZXh0KGtleV8sIGZldGNoZXIsIGNvbmZpZyk7XG4gICAgfTtcblxuY29uc3QgQlVJTFRfSU5fTUlERExFV0FSRSA9IHVzZS5jb25jYXQobWlkZGxld2FyZSk7XG5cbi8vIEl0J3MgdHJpY2t5IHRvIHBhc3MgZ2VuZXJpYyB0eXBlcyBhcyBwYXJhbWV0ZXJzLCBzbyB3ZSBqdXN0IGRpcmVjdGx5IG92ZXJyaWRlXG4vLyB0aGUgdHlwZXMgaGVyZS5cbmNvbnN0IHdpdGhBcmdzID0gKGhvb2spPT57XG4gICAgcmV0dXJuIGZ1bmN0aW9uIHVzZVNXUkFyZ3MoLi4uYXJncykge1xuICAgICAgICAvLyBHZXQgdGhlIGRlZmF1bHQgYW5kIGluaGVyaXRlZCBjb25maWd1cmF0aW9uLlxuICAgICAgICBjb25zdCBmYWxsYmFja0NvbmZpZyA9IHVzZVNXUkNvbmZpZygpO1xuICAgICAgICAvLyBOb3JtYWxpemUgYXJndW1lbnRzLlxuICAgICAgICBjb25zdCBba2V5LCBmbiwgX2NvbmZpZ10gPSBub3JtYWxpemUoYXJncyk7XG4gICAgICAgIC8vIE1lcmdlIGNvbmZpZ3VyYXRpb25zLlxuICAgICAgICBjb25zdCBjb25maWcgPSBtZXJnZUNvbmZpZ3MoZmFsbGJhY2tDb25maWcsIF9jb25maWcpO1xuICAgICAgICAvLyBBcHBseSBtaWRkbGV3YXJlXG4gICAgICAgIGxldCBuZXh0ID0gaG9vaztcbiAgICAgICAgY29uc3QgeyB1c2UgfSA9IGNvbmZpZztcbiAgICAgICAgY29uc3QgbWlkZGxld2FyZSA9ICh1c2UgfHwgW10pLmNvbmNhdChCVUlMVF9JTl9NSURETEVXQVJFKTtcbiAgICAgICAgZm9yKGxldCBpID0gbWlkZGxld2FyZS5sZW5ndGg7IGktLTspe1xuICAgICAgICAgICAgbmV4dCA9IG1pZGRsZXdhcmVbaV0obmV4dCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5leHQoa2V5LCBmbiB8fCBjb25maWcuZmV0Y2hlciB8fCBudWxsLCBjb25maWcpO1xuICAgIH07XG59O1xuXG4vLyBBZGQgYSBjYWxsYmFjayBmdW5jdGlvbiB0byBhIGxpc3Qgb2Yga2V5ZWQgY2FsbGJhY2sgZnVuY3Rpb25zIGFuZCByZXR1cm5cbi8vIHRoZSB1bnN1YnNjcmliZSBmdW5jdGlvbi5cbmNvbnN0IHN1YnNjcmliZUNhbGxiYWNrID0gKGtleSwgY2FsbGJhY2tzLCBjYWxsYmFjayk9PntcbiAgICBjb25zdCBrZXllZFJldmFsaWRhdG9ycyA9IGNhbGxiYWNrc1trZXldIHx8IChjYWxsYmFja3Nba2V5XSA9IFtdKTtcbiAgICBrZXllZFJldmFsaWRhdG9ycy5wdXNoKGNhbGxiYWNrKTtcbiAgICByZXR1cm4gKCk9PntcbiAgICAgICAgY29uc3QgaW5kZXggPSBrZXllZFJldmFsaWRhdG9ycy5pbmRleE9mKGNhbGxiYWNrKTtcbiAgICAgICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgICAgICAgIC8vIE8oMSk6IGZhc3RlciB0aGFuIHNwbGljZVxuICAgICAgICAgICAga2V5ZWRSZXZhbGlkYXRvcnNbaW5kZXhdID0ga2V5ZWRSZXZhbGlkYXRvcnNba2V5ZWRSZXZhbGlkYXRvcnMubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICBrZXllZFJldmFsaWRhdG9ycy5wb3AoKTtcbiAgICAgICAgfVxuICAgIH07XG59O1xuXG4vLyBDcmVhdGUgYSBjdXN0b20gaG9vayB3aXRoIGEgbWlkZGxld2FyZVxuY29uc3Qgd2l0aE1pZGRsZXdhcmUgPSAodXNlU1dSLCBtaWRkbGV3YXJlKT0+e1xuICAgIHJldHVybiAoLi4uYXJncyk9PntcbiAgICAgICAgY29uc3QgW2tleSwgZm4sIGNvbmZpZ10gPSBub3JtYWxpemUoYXJncyk7XG4gICAgICAgIGNvbnN0IHVzZXMgPSAoY29uZmlnLnVzZSB8fCBbXSkuY29uY2F0KG1pZGRsZXdhcmUpO1xuICAgICAgICByZXR1cm4gdXNlU1dSKGtleSwgZm4sIHtcbiAgICAgICAgICAgIC4uLmNvbmZpZyxcbiAgICAgICAgICAgIHVzZTogdXNlc1xuICAgICAgICB9KTtcbiAgICB9O1xufTtcblxuc2V0dXBEZXZUb29scygpO1xuXG5leHBvcnQgeyBJTkZJTklURV9QUkVGSVgsIElTX1NFUlZFUiwgU1dSR2xvYmFsU3RhdGUsIGNhY2hlLCBkZWZhdWx0Q29uZmlnLCBpc0Z1bmN0aW9uLCBpc1VuZGVmaW5lZCwgaXNXaW5kb3dEZWZpbmVkLCBtZXJnZUNvbmZpZ3MsIG1lcmdlT2JqZWN0cywgbm9ybWFsaXplLCBwcmVsb2FkLCBzZXJpYWxpemUsIHN1YnNjcmliZUNhbGxiYWNrLCB1c2VTV1JDb25maWcsIHdpdGhBcmdzLCB3aXRoTWlkZGxld2FyZSB9O1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQTJQO0FBQ3dPO0FBQ2piO0FBQ0M7O0FBRW5EO0FBQ0EsdUJBQXVCLCtDQUFlO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0NBQXdDLGtDQUFLO0FBQzdDO0FBQ0E7O0FBRUE7QUFDQSxXQUFXLG1EQUFVO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHlCQUF5QixxQ0FBVSxDQUFDLCtDQUFnQjtBQUNwRCx5QkFBeUIsa0NBQU8sS0FBSyxtREFBWSxDQUFDLCtDQUFhO0FBQy9EO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxRQUFRLCtDQUFTO0FBQ2pCO0FBQ0E7QUFDQSx5QkFBeUIsbURBQVM7QUFDbEMsNEJBQTRCLG1EQUFrQixDQUFDLCtDQUFLO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEIsbURBQVM7QUFDbkMsb0NBQW9DLG1EQUFrQixDQUFDLCtDQUFLO0FBQzVELCtCQUErQiwrQ0FBZTtBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLG1EQUFXO0FBQzNCO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsbURBQVk7QUFDbkM7QUFDQTtBQUNBLGdCQUFnQixNQUFNO0FBQ3RCO0FBQ0EsdUNBQXVDLElBQUk7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTs7QUFFQTs7QUFFNE8ifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/swr/dist/_internal/index.mjs\n\n}");
13
+
14
+ },
15
+ "../../../node_modules/swr/dist/config-context-ext53wcz.mjs"(__unused_rspack___webpack_module__, __webpack_exports__, __webpack_require__) {
16
+ eval("{__webpack_require__.r(__webpack_exports__);\n__webpack_require__.d(__webpack_exports__, {\n A: () => (isLegacyDeno),\n B: () => (preset),\n C: () => (events),\n D: () => (slowConnection),\n E: () => (ERROR_REVALIDATE_EVENT),\n F: () => (FOCUS_EVENT),\n G: () => (stableHash),\n I: () => (IS_SERVER),\n M: () => (MUTATE_EVENT),\n O: () => (OBJECT),\n R: () => (RECONNECT_EVENT),\n S: () => (SWRConfig),\n U: () => (UNDEFINED),\n a: () => (SWRGlobalState),\n b: () => (isPromiseLike),\n c: () => (createCacheHelper),\n d: () => (defaultConfig),\n e: () => (isFunction),\n f: () => (internalMutate),\n g: () => (getTimestamp),\n h: () => (UNLOAD_EVENT),\n i: () => (isUndefined),\n j: () => (IS_REACT_LEGACY),\n k: () => (mutate),\n l: () => (unload),\n m: () => (mergeObjects),\n n: () => (noop),\n o: () => (cache),\n p: () => (isWindowDefined),\n q: () => (SWRConfigContext),\n r: () => (rAF),\n s: () => (serialize),\n t: () => (mergeConfigs),\n u: () => (useIsomorphicLayoutEffect),\n v: () => (compare),\n w: () => (defaultConfigOptions),\n x: () => (hasRequestAnimationFrame),\n y: () => (initCache),\n z: () => (isDocumentDefined)\n});\n/* import */ var react__rspack_import_0 = __webpack_require__(\"webpack/sharing/consume/default/react/react\");\n/* import */ var react__rspack_import_0_default = /*#__PURE__*/__webpack_require__.n(react__rspack_import_0);\n/* import */ var dequal_lite__rspack_import_1 = __webpack_require__(\"../../../node_modules/dequal/lite/index.mjs\");\n'use client';\n\n\n\nconst FOCUS_EVENT = 0;\nconst RECONNECT_EVENT = 1;\nconst MUTATE_EVENT = 2;\nconst ERROR_REVALIDATE_EVENT = 3;\nconst UNLOAD_EVENT = 4;\n\nvar events = {\n __proto__: null,\n ERROR_REVALIDATE_EVENT: ERROR_REVALIDATE_EVENT,\n FOCUS_EVENT: FOCUS_EVENT,\n MUTATE_EVENT: MUTATE_EVENT,\n RECONNECT_EVENT: RECONNECT_EVENT,\n UNLOAD_EVENT: UNLOAD_EVENT\n};\n\n// Global state used to deduplicate requests and store listeners\nconst SWRGlobalState = new WeakMap();\n\n// Shared state between server components and client components\nconst noop = ()=>{};\n// Using noop() as the undefined value as undefined can be replaced\n// by something else. Prettier ignore and extra parentheses are necessary here\n// to ensure that tsc doesn't remove the __NOINLINE__ comment.\n// prettier-ignore\nconst UNDEFINED = /*#__NOINLINE__*/ noop();\nconst OBJECT = Object;\nconst isUndefined = (v)=>v === UNDEFINED;\nconst isFunction = (v)=>typeof v == 'function';\nconst mergeObjects = (a, b)=>({\n ...a,\n ...b\n });\nconst isPromiseLike = (x)=>isFunction(x.then);\n\nconst EMPTY_CACHE = {};\nconst INITIAL_CACHE = {};\nconst STR_UNDEFINED = 'undefined';\n// NOTE: Use the function to guarantee it's re-evaluated between jsdom and node runtime for tests.\nconst isWindowDefined = typeof window != STR_UNDEFINED;\nconst isDocumentDefined = typeof document != STR_UNDEFINED;\nconst isLegacyDeno = isWindowDefined && 'Deno' in window;\nconst hasRequestAnimationFrame = ()=>isWindowDefined && typeof window['requestAnimationFrame'] != STR_UNDEFINED;\nconst createCacheHelper = (cache, key)=>{\n const state = SWRGlobalState.get(cache);\n return [\n // Getter\n ()=>!isUndefined(key) && cache.get(key) || EMPTY_CACHE,\n // Setter\n (info)=>{\n if (!isUndefined(key)) {\n const prev = cache.get(key);\n // Before writing to the store, we keep the value in the initial cache\n // if it's not there yet.\n if (!(key in INITIAL_CACHE)) {\n INITIAL_CACHE[key] = prev;\n }\n state[5](key, mergeObjects(prev, info), prev || EMPTY_CACHE);\n }\n },\n // Subscriber\n state[6],\n // Get server cache snapshot\n ()=>{\n if (!isUndefined(key)) {\n // If the cache was updated on the client, we return the stored initial value.\n if (key in INITIAL_CACHE) return INITIAL_CACHE[key];\n }\n // If we haven't done any client-side updates, we return the current value.\n return !isUndefined(key) && cache.get(key) || EMPTY_CACHE;\n }\n ];\n} // export { UNDEFINED, OBJECT, isUndefined, isFunction, mergeObjects, isPromiseLike }\n;\n\n/**\n * Due to the bug https://bugs.chromium.org/p/chromium/issues/detail?id=678075,\n * it's not reliable to detect if the browser is currently online or offline\n * based on `navigator.onLine`.\n * As a workaround, we always assume it's online on the first load, and change\n * the status upon `online` or `offline` events.\n */ let online = true;\nconst isOnline = ()=>online;\n// For node and React Native, `add/removeEventListener` doesn't exist on window.\nconst [onWindowEvent, offWindowEvent] = isWindowDefined && window.addEventListener ? [\n window.addEventListener.bind(window),\n window.removeEventListener.bind(window)\n] : [\n noop,\n noop\n];\nconst isVisible = ()=>{\n const visibilityState = isDocumentDefined && document.visibilityState;\n return isUndefined(visibilityState) || visibilityState !== 'hidden';\n};\nconst initFocus = (callback)=>{\n // focus revalidate\n if (isDocumentDefined) {\n document.addEventListener('visibilitychange', callback);\n }\n onWindowEvent('focus', callback);\n return ()=>{\n if (isDocumentDefined) {\n document.removeEventListener('visibilitychange', callback);\n }\n offWindowEvent('focus', callback);\n };\n};\nconst initReconnect = (callback)=>{\n // revalidate on reconnected\n const onOnline = ()=>{\n online = true;\n callback();\n };\n // nothing to revalidate, just update the status\n const onOffline = ()=>{\n online = false;\n };\n onWindowEvent('online', onOnline);\n onWindowEvent('offline', onOffline);\n return ()=>{\n offWindowEvent('online', onOnline);\n offWindowEvent('offline', onOffline);\n };\n};\nconst preset = {\n isOnline,\n isVisible\n};\nconst defaultConfigOptions = {\n initFocus,\n initReconnect\n};\n\nconst IS_REACT_LEGACY = !(react__rspack_import_0_default().useId);\nconst IS_SERVER = !isWindowDefined || isLegacyDeno;\n// Polyfill requestAnimationFrame\nconst rAF = (f)=>hasRequestAnimationFrame() ? window['requestAnimationFrame'](f) : setTimeout(f, 1);\n// React currently throws a warning when using useLayoutEffect on the server.\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser.\nconst useIsomorphicLayoutEffect = IS_SERVER ? react__rspack_import_0.useEffect : react__rspack_import_0.useLayoutEffect;\n// This assignment is to extend the Navigator type to use effectiveType.\nconst navigatorConnection = typeof navigator !== 'undefined' && navigator.connection;\n// Adjust the config based on slow connection status (<= 70Kbps).\nconst slowConnection = !IS_SERVER && navigatorConnection && ([\n 'slow-2g',\n '2g'\n].includes(navigatorConnection.effectiveType) || navigatorConnection.saveData);\n\n// use WeakMap to store the object->key mapping\n// so the objects can be garbage collected.\n// WeakMap uses a hashtable under the hood, so the lookup\n// complexity is almost O(1).\nconst table = new WeakMap();\nconst getTypeName = (value)=>OBJECT.prototype.toString.call(value);\nconst isObjectTypeName = (typeName, type)=>typeName === `[object ${type}]`;\n// counter of the key\nlet counter = 0;\n// A stable hash implementation that supports:\n// - Fast and ensures unique hash properties\n// - Handles unserializable values\n// - Handles object key ordering\n// - Generates short results\n//\n// This is not a serialization function, and the result is not guaranteed to be\n// parsable.\nconst stableHash = (arg)=>{\n const type = typeof arg;\n const typeName = getTypeName(arg);\n const isDate = isObjectTypeName(typeName, 'Date');\n const isRegex = isObjectTypeName(typeName, 'RegExp');\n const isPlainObject = isObjectTypeName(typeName, 'Object');\n let result;\n let index;\n if (OBJECT(arg) === arg && !isDate && !isRegex) {\n // Object/function, not null/date/regexp. Use WeakMap to store the id first.\n // If it's already hashed, directly return the result.\n result = table.get(arg);\n if (result) return result;\n // Store the hash first for circular reference detection before entering the\n // recursive `stableHash` calls.\n // For other objects like set and map, we use this id directly as the hash.\n result = ++counter + '~';\n table.set(arg, result);\n if (Array.isArray(arg)) {\n // Array.\n result = '@';\n for(index = 0; index < arg.length; index++){\n result += stableHash(arg[index]) + ',';\n }\n table.set(arg, result);\n }\n if (isPlainObject) {\n // Object, sort keys.\n result = '#';\n const keys = OBJECT.keys(arg).sort();\n while(!isUndefined(index = keys.pop())){\n if (!isUndefined(arg[index])) {\n result += index + ':' + stableHash(arg[index]) + ',';\n }\n }\n table.set(arg, result);\n }\n } else {\n result = isDate ? arg.toJSON() : type == 'symbol' ? arg.toString() : type == 'string' ? JSON.stringify(arg) : '' + arg;\n }\n return result;\n};\n\nconst serialize = (key)=>{\n if (isFunction(key)) {\n try {\n key = key();\n } catch (err) {\n // dependencies not ready\n key = '';\n }\n }\n // Use the original key as the argument of fetcher. This can be a string or an\n // array of values.\n const args = key;\n // If key is not falsy, or not an empty array, hash it.\n key = typeof key == 'string' ? key : (Array.isArray(key) ? key.length : key) ? stableHash(key) : '';\n return [\n key,\n args\n ];\n};\n\n// Global timestamp.\nlet __timestamp = 0;\nconst getTimestamp = ()=>++__timestamp;\n\nasync function internalMutate(...args) {\n const [cache, _key, _data, _opts] = args;\n // When passing as a boolean, it's explicitly used to disable/enable\n // revalidation.\n const options = mergeObjects({\n populateCache: true,\n throwOnError: true\n }, typeof _opts === 'boolean' ? {\n revalidate: _opts\n } : _opts || {});\n let populateCache = options.populateCache;\n const rollbackOnErrorOption = options.rollbackOnError;\n let optimisticData = options.optimisticData;\n const rollbackOnError = (error)=>{\n return typeof rollbackOnErrorOption === 'function' ? rollbackOnErrorOption(error) : rollbackOnErrorOption !== false;\n };\n const throwOnError = options.throwOnError;\n // If the second argument is a key filter, return the mutation results for all\n // filtered keys.\n if (isFunction(_key)) {\n const keyFilter = _key;\n const matchedKeys = [];\n const it = cache.keys();\n for (const key of it){\n if (// Skip the special useSWRInfinite and useSWRSubscription keys.\n !/^\\$(inf|sub)\\$/.test(key) && keyFilter(cache.get(key)._k)) {\n matchedKeys.push(key);\n }\n }\n return Promise.all(matchedKeys.map(mutateByKey));\n }\n return mutateByKey(_key);\n async function mutateByKey(_k) {\n // Serialize key\n const [key] = serialize(_k);\n if (!key) return;\n const [get, set] = createCacheHelper(cache, key);\n const [EVENT_REVALIDATORS, MUTATION, FETCH, PRELOAD] = SWRGlobalState.get(cache);\n const startRevalidate = ()=>{\n const revalidators = EVENT_REVALIDATORS[key];\n const revalidate = isFunction(options.revalidate) ? options.revalidate(get().data, _k) : options.revalidate !== false;\n if (revalidate) {\n // Invalidate the key by deleting the concurrent request markers so new\n // requests will not be deduped.\n delete FETCH[key];\n delete PRELOAD[key];\n if (revalidators && revalidators[0]) {\n return revalidators[0](MUTATE_EVENT).then(()=>get().data);\n }\n }\n return get().data;\n };\n // If there is no new data provided, revalidate the key with current state.\n if (args.length < 3) {\n // Revalidate and broadcast state.\n return startRevalidate();\n }\n let data = _data;\n let error;\n let isError = false;\n // Update global timestamps.\n const beforeMutationTs = getTimestamp();\n MUTATION[key] = [\n beforeMutationTs,\n 0\n ];\n const hasOptimisticData = !isUndefined(optimisticData);\n const state = get();\n // `displayedData` is the current value on screen. It could be the optimistic value\n // that is going to be overridden by a `committedData`, or get reverted back.\n // `committedData` is the validated value that comes from a fetch or mutation.\n const displayedData = state.data;\n const currentData = state._c;\n const committedData = isUndefined(currentData) ? displayedData : currentData;\n // Do optimistic data update.\n if (hasOptimisticData) {\n optimisticData = isFunction(optimisticData) ? optimisticData(committedData, displayedData) : optimisticData;\n // When we set optimistic data, backup the current committedData data in `_c`.\n set({\n data: optimisticData,\n _c: committedData\n });\n }\n if (isFunction(data)) {\n // `data` is a function, call it passing current cache value.\n try {\n data = data(committedData);\n } catch (err) {\n // If it throws an error synchronously, we shouldn't update the cache.\n error = err;\n isError = true;\n }\n }\n // `data` is a promise/thenable, resolve the final data first.\n if (data && isPromiseLike(data)) {\n // This means that the mutation is async, we need to check timestamps to\n // avoid race conditions.\n data = await data.catch((err)=>{\n error = err;\n isError = true;\n });\n // Check if other mutations have occurred since we've started this mutation.\n // If there's a race we don't update cache or broadcast the change,\n // just return the data.\n if (beforeMutationTs !== MUTATION[key][0]) {\n if (isError) throw error;\n return data;\n } else if (isError && hasOptimisticData && rollbackOnError(error)) {\n // Rollback. Always populate the cache in this case but without\n // transforming the data.\n populateCache = true;\n // Reset data to be the latest committed data, and clear the `_c` value.\n set({\n data: committedData,\n _c: UNDEFINED\n });\n }\n }\n // If we should write back the cache after request.\n if (populateCache) {\n if (!isError) {\n // Transform the result into data.\n if (isFunction(populateCache)) {\n const populateCachedData = populateCache(data, committedData);\n set({\n data: populateCachedData,\n error: UNDEFINED,\n _c: UNDEFINED\n });\n } else {\n // Only update cached data and reset the error if there's no error. Data can be `undefined` here.\n set({\n data,\n error: UNDEFINED,\n _c: UNDEFINED\n });\n }\n }\n }\n // Reset the timestamp to mark the mutation has ended.\n MUTATION[key][1] = getTimestamp();\n // Update existing SWR Hooks' internal states:\n Promise.resolve(startRevalidate()).then(()=>{\n // The mutation and revalidation are ended, we can clear it since the data is\n // not an optimistic value anymore.\n set({\n _c: UNDEFINED\n });\n });\n // Throw error or return data\n if (isError) {\n if (throwOnError) throw error;\n return;\n }\n return data;\n }\n}\n\nconst revalidateAllKeys = (revalidators, type)=>{\n for(const key in revalidators){\n if (revalidators[key][0]) revalidators[key][0](type);\n }\n};\nconst initCache = (provider, options)=>{\n // The global state for a specific provider will be used to deduplicate\n // requests and store listeners. As well as a mutate function that is bound to\n // the cache.\n // The provider's global state might be already initialized. Let's try to get the\n // global state associated with the provider first.\n if (!SWRGlobalState.has(provider)) {\n const opts = mergeObjects(defaultConfigOptions, options);\n // If there's no global state bound to the provider, create a new one with the\n // new mutate function.\n const EVENT_REVALIDATORS = Object.create(null);\n const mutate = internalMutate.bind(UNDEFINED, provider);\n let unmount = noop;\n const subscriptions = Object.create(null);\n const subscribe = (key, callback)=>{\n const subs = subscriptions[key] || [];\n subscriptions[key] = subs;\n subs.push(callback);\n return ()=>{\n const index = subs.indexOf(callback);\n if (index >= 0) {\n // O(1): swap with the last element and pop\n subs[index] = subs[subs.length - 1];\n subs.pop();\n }\n };\n };\n const setter = (key, value, prev)=>{\n provider.set(key, value);\n const subs = subscriptions[key];\n if (subs) {\n for (const fn of subs){\n fn(value, prev);\n }\n }\n };\n const unload = (unloadOptions)=>{\n const state = SWRGlobalState.get(provider);\n const [, MUTATION, FETCH, PRELOAD] = state;\n const ts = getTimestamp();\n // Bump the unload generation so in-flight writes that bypass the\n // request markers (e.g. `useSWRInfinite` page responses) know to\n // discard themselves when they resolve.\n state[8]++;\n // Invalidate all in-flight requests and mutations first, so nothing\n // that resolves after this point can write back to the cache: fetches\n // fail the concurrent request marker check, and mutations fail the\n // timestamp race check. Mutation timestamps are overwritten instead of\n // deleted because ongoing mutations read them on resolution.\n for(const key in FETCH)delete FETCH[key];\n for(const key in PRELOAD)delete PRELOAD[key];\n for(const key in MUTATION)MUTATION[key] = [\n ts,\n ts\n ];\n // Delete all entries — including the special `useSWRInfinite` and\n // `useSWRSubscription` keys — and notify the subscribers of each key\n // so mounted hooks re-render with the empty cache. Subscribers receive\n // the same empty state object that cache reads resolve to for missing\n // entries.\n const emptyState = {};\n for (const key of [\n ...provider.keys()\n ]){\n const prev = provider.get(key);\n provider.delete(key);\n const subs = subscriptions[key];\n if (subs) {\n for (const fn of subs){\n fn(emptyState, prev);\n }\n }\n }\n // The unload event runs last so the fresh requests it may start are\n // not invalidated by the cleanup above. It always fires — even without\n // revalidation — and to every hook on the key, so each one can drop\n // the previous data kept by `keepPreviousData`. Only the first hook\n // revalidates, consistent with how mutations revalidate a key.\n const revalidate = !unloadOptions || unloadOptions.revalidate !== false;\n for(const key in EVENT_REVALIDATORS){\n const revalidators = EVENT_REVALIDATORS[key];\n for(let i = 0; i < revalidators.length; i++){\n revalidators[i](UNLOAD_EVENT, {\n revalidate: revalidate && !i\n });\n }\n }\n };\n const initProvider = ()=>{\n if (!SWRGlobalState.has(provider)) {\n // Update the state if it's new, or if the provider has been extended.\n SWRGlobalState.set(provider, [\n EVENT_REVALIDATORS,\n Object.create(null),\n Object.create(null),\n Object.create(null),\n mutate,\n setter,\n subscribe,\n unload,\n 0\n ]);\n if (!IS_SERVER) {\n // When listening to the native events for auto revalidations,\n // we intentionally put a delay (setTimeout) here to make sure they are\n // fired after immediate JavaScript executions, which can be\n // React's state updates.\n // This avoids some unnecessary revalidations such as\n // https://github.com/vercel/swr/issues/1680.\n const releaseFocus = opts.initFocus(setTimeout.bind(UNDEFINED, revalidateAllKeys.bind(UNDEFINED, EVENT_REVALIDATORS, FOCUS_EVENT)));\n const releaseReconnect = opts.initReconnect(setTimeout.bind(UNDEFINED, revalidateAllKeys.bind(UNDEFINED, EVENT_REVALIDATORS, RECONNECT_EVENT)));\n unmount = ()=>{\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n releaseFocus && releaseFocus();\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n releaseReconnect && releaseReconnect();\n // When un-mounting, we need to remove the cache provider from the state\n // storage too because it's a side-effect. Otherwise, when re-mounting we\n // will not re-register those event listeners.\n SWRGlobalState.delete(provider);\n };\n }\n }\n };\n initProvider();\n // This is a new provider, we need to initialize it and setup DOM events\n // listeners for `focus` and `reconnect` actions.\n // We might want to inject an extra layer on top of `provider` in the future,\n // such as key serialization, auto GC, etc.\n // For now, it's just a `Map` interface without any modifications.\n return [\n provider,\n mutate,\n initProvider,\n unmount,\n unload\n ];\n }\n const state = SWRGlobalState.get(provider);\n return [\n provider,\n state[4],\n UNDEFINED,\n UNDEFINED,\n state[7]\n ];\n};\n\n// error retry\nconst onErrorRetry = (_, __, config, revalidate, opts)=>{\n const maxRetryCount = config.errorRetryCount;\n const currentRetryCount = opts.retryCount;\n // Exponential backoff\n const timeout = ~~((Math.random() + 0.5) * (1 << (currentRetryCount < 8 ? currentRetryCount : 8))) * config.errorRetryInterval;\n if (!isUndefined(maxRetryCount) && currentRetryCount > maxRetryCount) {\n return;\n }\n setTimeout(revalidate, timeout, opts);\n};\nconst compare = dequal_lite__rspack_import_1.dequal;\n// Default cache provider\nconst [cache, mutate, , , unload] = initCache(new Map());\n// Default config\nconst defaultConfig = mergeObjects({\n // events\n onLoadingSlow: noop,\n onSuccess: noop,\n onError: noop,\n onErrorRetry,\n onDiscarded: noop,\n // switches\n revalidateOnFocus: true,\n revalidateOnReconnect: true,\n revalidateIfStale: true,\n shouldRetryOnError: true,\n // timeouts\n errorRetryInterval: slowConnection ? 10000 : 5000,\n focusThrottleInterval: 5 * 1000,\n dedupingInterval: 2 * 1000,\n loadingTimeout: slowConnection ? 5000 : 3000,\n // providers\n compare,\n isPaused: ()=>false,\n cache,\n mutate,\n unload,\n fallback: {}\n}, // use web preset by default\npreset);\n\nconst mergeConfigs = (a, b)=>{\n // Need to create a new object to avoid mutating the original here.\n const v = mergeObjects(a, b);\n // If two configs are provided, merge their `use`, `fallback`, and\n // `cacheData` options.\n if (b) {\n const { use: u1, fallback: f1, cacheData: c1 } = a;\n const { use: u2, fallback: f2, cacheData: c2 } = b;\n if (u1 && u2) {\n v.use = u1.concat(u2);\n }\n if (f1 && f2) {\n v.fallback = mergeObjects(f1, f2);\n }\n if (c1 && c2) {\n v.cacheData = mergeObjects(c1, c2);\n }\n }\n return v;\n};\n\nconst SWRConfigContext = (0,react__rspack_import_0.createContext)({});\nconst SWRConfig = (props)=>{\n const { value } = props;\n const parentConfig = (0,react__rspack_import_0.useContext)(SWRConfigContext);\n const isFunctionalConfig = isFunction(value);\n const config = (0,react__rspack_import_0.useMemo)(()=>isFunctionalConfig ? value(parentConfig) : value, [\n isFunctionalConfig,\n parentConfig,\n value\n ]);\n // Extend parent context values and middleware.\n const extendedConfig = (0,react__rspack_import_0.useMemo)(()=>isFunctionalConfig ? config : mergeConfigs(parentConfig, config), [\n isFunctionalConfig,\n parentConfig,\n config\n ]);\n // Should not use the inherited provider.\n const provider = config && config.provider;\n // initialize the cache only on first access.\n const cacheContextRef = (0,react__rspack_import_0.useRef)(UNDEFINED);\n if (provider && !cacheContextRef.current) {\n cacheContextRef.current = initCache(provider(extendedConfig.cache || cache), config);\n }\n const cacheContext = cacheContextRef.current;\n // Override the cache if a new provider is given.\n if (cacheContext) {\n extendedConfig.cache = cacheContext[0];\n extendedConfig.mutate = cacheContext[1];\n extendedConfig.unload = cacheContext[4];\n }\n // Unsubscribe events.\n useIsomorphicLayoutEffect(()=>{\n if (cacheContext) {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n cacheContext[2] && cacheContext[2]();\n return cacheContext[3];\n }\n }, []);\n return (0,react__rspack_import_0.createElement)(SWRConfigContext.Provider, mergeObjects(props, {\n value: extendedConfig\n }));\n};\n\n\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YXNjcmlwdC9lc218L2hvbWUvcnVubmVyL3dvcmsvb3Blbm1ycy1lc20tY29yZS9vcGVubXJzLWVzbS1jb3JlL25vZGVfbW9kdWxlcy9zd3IvZGlzdC9jb25maWctY29udGV4dC1leHQ1M3djei5tanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zd3IvZGlzdC9jb25maWctY29udGV4dC1leHQ1M3djei5tanM/OWYwZCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCc7XG5pbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VMYXlvdXRFZmZlY3QsIGNyZWF0ZUNvbnRleHQsIHVzZUNvbnRleHQsIHVzZU1lbW8sIHVzZVJlZiwgY3JlYXRlRWxlbWVudCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGRlcXVhbCB9IGZyb20gJ2RlcXVhbC9saXRlJztcblxuY29uc3QgRk9DVVNfRVZFTlQgPSAwO1xuY29uc3QgUkVDT05ORUNUX0VWRU5UID0gMTtcbmNvbnN0IE1VVEFURV9FVkVOVCA9IDI7XG5jb25zdCBFUlJPUl9SRVZBTElEQVRFX0VWRU5UID0gMztcbmNvbnN0IFVOTE9BRF9FVkVOVCA9IDQ7XG5cbnZhciBldmVudHMgPSB7XG4gIF9fcHJvdG9fXzogbnVsbCxcbiAgRVJST1JfUkVWQUxJREFURV9FVkVOVDogRVJST1JfUkVWQUxJREFURV9FVkVOVCxcbiAgRk9DVVNfRVZFTlQ6IEZPQ1VTX0VWRU5ULFxuICBNVVRBVEVfRVZFTlQ6IE1VVEFURV9FVkVOVCxcbiAgUkVDT05ORUNUX0VWRU5UOiBSRUNPTk5FQ1RfRVZFTlQsXG4gIFVOTE9BRF9FVkVOVDogVU5MT0FEX0VWRU5UXG59O1xuXG4vLyBHbG9iYWwgc3RhdGUgdXNlZCB0byBkZWR1cGxpY2F0ZSByZXF1ZXN0cyBhbmQgc3RvcmUgbGlzdGVuZXJzXG5jb25zdCBTV1JHbG9iYWxTdGF0ZSA9IG5ldyBXZWFrTWFwKCk7XG5cbi8vIFNoYXJlZCBzdGF0ZSBiZXR3ZWVuIHNlcnZlciBjb21wb25lbnRzIGFuZCBjbGllbnQgY29tcG9uZW50c1xuY29uc3Qgbm9vcCA9ICgpPT57fTtcbi8vIFVzaW5nIG5vb3AoKSBhcyB0aGUgdW5kZWZpbmVkIHZhbHVlIGFzIHVuZGVmaW5lZCBjYW4gYmUgcmVwbGFjZWRcbi8vIGJ5IHNvbWV0aGluZyBlbHNlLiBQcmV0dGllciBpZ25vcmUgYW5kIGV4dHJhIHBhcmVudGhlc2VzIGFyZSBuZWNlc3NhcnkgaGVyZVxuLy8gdG8gZW5zdXJlIHRoYXQgdHNjIGRvZXNuJ3QgcmVtb3ZlIHRoZSBfX05PSU5MSU5FX18gY29tbWVudC5cbi8vIHByZXR0aWVyLWlnbm9yZVxuY29uc3QgVU5ERUZJTkVEID0gLyojX19OT0lOTElORV9fKi8gbm9vcCgpO1xuY29uc3QgT0JKRUNUID0gT2JqZWN0O1xuY29uc3QgaXNVbmRlZmluZWQgPSAodik9PnYgPT09IFVOREVGSU5FRDtcbmNvbnN0IGlzRnVuY3Rpb24gPSAodik9PnR5cGVvZiB2ID09ICdmdW5jdGlvbic7XG5jb25zdCBtZXJnZU9iamVjdHMgPSAoYSwgYik9Pih7XG4gICAgICAgIC4uLmEsXG4gICAgICAgIC4uLmJcbiAgICB9KTtcbmNvbnN0IGlzUHJvbWlzZUxpa2UgPSAoeCk9PmlzRnVuY3Rpb24oeC50aGVuKTtcblxuY29uc3QgRU1QVFlfQ0FDSEUgPSB7fTtcbmNvbnN0IElOSVRJQUxfQ0FDSEUgPSB7fTtcbmNvbnN0IFNUUl9VTkRFRklORUQgPSAndW5kZWZpbmVkJztcbi8vIE5PVEU6IFVzZSB0aGUgZnVuY3Rpb24gdG8gZ3VhcmFudGVlIGl0J3MgcmUtZXZhbHVhdGVkIGJldHdlZW4ganNkb20gYW5kIG5vZGUgcnVudGltZSBmb3IgdGVzdHMuXG5jb25zdCBpc1dpbmRvd0RlZmluZWQgPSB0eXBlb2Ygd2luZG93ICE9IFNUUl9VTkRFRklORUQ7XG5jb25zdCBpc0RvY3VtZW50RGVmaW5lZCA9IHR5cGVvZiBkb2N1bWVudCAhPSBTVFJfVU5ERUZJTkVEO1xuY29uc3QgaXNMZWdhY3lEZW5vID0gaXNXaW5kb3dEZWZpbmVkICYmICdEZW5vJyBpbiB3aW5kb3c7XG5jb25zdCBoYXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWUgPSAoKT0+aXNXaW5kb3dEZWZpbmVkICYmIHR5cGVvZiB3aW5kb3dbJ3JlcXVlc3RBbmltYXRpb25GcmFtZSddICE9IFNUUl9VTkRFRklORUQ7XG5jb25zdCBjcmVhdGVDYWNoZUhlbHBlciA9IChjYWNoZSwga2V5KT0+e1xuICAgIGNvbnN0IHN0YXRlID0gU1dSR2xvYmFsU3RhdGUuZ2V0KGNhY2hlKTtcbiAgICByZXR1cm4gW1xuICAgICAgICAvLyBHZXR0ZXJcbiAgICAgICAgKCk9PiFpc1VuZGVmaW5lZChrZXkpICYmIGNhY2hlLmdldChrZXkpIHx8IEVNUFRZX0NBQ0hFLFxuICAgICAgICAvLyBTZXR0ZXJcbiAgICAgICAgKGluZm8pPT57XG4gICAgICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKGtleSkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwcmV2ID0gY2FjaGUuZ2V0KGtleSk7XG4gICAgICAgICAgICAgICAgLy8gQmVmb3JlIHdyaXRpbmcgdG8gdGhlIHN0b3JlLCB3ZSBrZWVwIHRoZSB2YWx1ZSBpbiB0aGUgaW5pdGlhbCBjYWNoZVxuICAgICAgICAgICAgICAgIC8vIGlmIGl0J3Mgbm90IHRoZXJlIHlldC5cbiAgICAgICAgICAgICAgICBpZiAoIShrZXkgaW4gSU5JVElBTF9DQUNIRSkpIHtcbiAgICAgICAgICAgICAgICAgICAgSU5JVElBTF9DQUNIRVtrZXldID0gcHJldjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc3RhdGVbNV0oa2V5LCBtZXJnZU9iamVjdHMocHJldiwgaW5mbyksIHByZXYgfHwgRU1QVFlfQ0FDSEUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICAvLyBTdWJzY3JpYmVyXG4gICAgICAgIHN0YXRlWzZdLFxuICAgICAgICAvLyBHZXQgc2VydmVyIGNhY2hlIHNuYXBzaG90XG4gICAgICAgICgpPT57XG4gICAgICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKGtleSkpIHtcbiAgICAgICAgICAgICAgICAvLyBJZiB0aGUgY2FjaGUgd2FzIHVwZGF0ZWQgb24gdGhlIGNsaWVudCwgd2UgcmV0dXJuIHRoZSBzdG9yZWQgaW5pdGlhbCB2YWx1ZS5cbiAgICAgICAgICAgICAgICBpZiAoa2V5IGluIElOSVRJQUxfQ0FDSEUpIHJldHVybiBJTklUSUFMX0NBQ0hFW2tleV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBJZiB3ZSBoYXZlbid0IGRvbmUgYW55IGNsaWVudC1zaWRlIHVwZGF0ZXMsIHdlIHJldHVybiB0aGUgY3VycmVudCB2YWx1ZS5cbiAgICAgICAgICAgIHJldHVybiAhaXNVbmRlZmluZWQoa2V5KSAmJiBjYWNoZS5nZXQoa2V5KSB8fCBFTVBUWV9DQUNIRTtcbiAgICAgICAgfVxuICAgIF07XG59IC8vIGV4cG9ydCB7IFVOREVGSU5FRCwgT0JKRUNULCBpc1VuZGVmaW5lZCwgaXNGdW5jdGlvbiwgbWVyZ2VPYmplY3RzLCBpc1Byb21pc2VMaWtlIH1cbjtcblxuLyoqXG4gKiBEdWUgdG8gdGhlIGJ1ZyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD02NzgwNzUsXG4gKiBpdCdzIG5vdCByZWxpYWJsZSB0byBkZXRlY3QgaWYgdGhlIGJyb3dzZXIgaXMgY3VycmVudGx5IG9ubGluZSBvciBvZmZsaW5lXG4gKiBiYXNlZCBvbiBgbmF2aWdhdG9yLm9uTGluZWAuXG4gKiBBcyBhIHdvcmthcm91bmQsIHdlIGFsd2F5cyBhc3N1bWUgaXQncyBvbmxpbmUgb24gdGhlIGZpcnN0IGxvYWQsIGFuZCBjaGFuZ2VcbiAqIHRoZSBzdGF0dXMgdXBvbiBgb25saW5lYCBvciBgb2ZmbGluZWAgZXZlbnRzLlxuICovIGxldCBvbmxpbmUgPSB0cnVlO1xuY29uc3QgaXNPbmxpbmUgPSAoKT0+b25saW5lO1xuLy8gRm9yIG5vZGUgYW5kIFJlYWN0IE5hdGl2ZSwgYGFkZC9yZW1vdmVFdmVudExpc3RlbmVyYCBkb2Vzbid0IGV4aXN0IG9uIHdpbmRvdy5cbmNvbnN0IFtvbldpbmRvd0V2ZW50LCBvZmZXaW5kb3dFdmVudF0gPSBpc1dpbmRvd0RlZmluZWQgJiYgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIgPyBbXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIuYmluZCh3aW5kb3cpLFxuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyLmJpbmQod2luZG93KVxuXSA6IFtcbiAgICBub29wLFxuICAgIG5vb3Bcbl07XG5jb25zdCBpc1Zpc2libGUgPSAoKT0+e1xuICAgIGNvbnN0IHZpc2liaWxpdHlTdGF0ZSA9IGlzRG9jdW1lbnREZWZpbmVkICYmIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZTtcbiAgICByZXR1cm4gaXNVbmRlZmluZWQodmlzaWJpbGl0eVN0YXRlKSB8fCB2aXNpYmlsaXR5U3RhdGUgIT09ICdoaWRkZW4nO1xufTtcbmNvbnN0IGluaXRGb2N1cyA9IChjYWxsYmFjayk9PntcbiAgICAvLyBmb2N1cyByZXZhbGlkYXRlXG4gICAgaWYgKGlzRG9jdW1lbnREZWZpbmVkKSB7XG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Zpc2liaWxpdHljaGFuZ2UnLCBjYWxsYmFjayk7XG4gICAgfVxuICAgIG9uV2luZG93RXZlbnQoJ2ZvY3VzJywgY2FsbGJhY2spO1xuICAgIHJldHVybiAoKT0+e1xuICAgICAgICBpZiAoaXNEb2N1bWVudERlZmluZWQpIHtcbiAgICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Zpc2liaWxpdHljaGFuZ2UnLCBjYWxsYmFjayk7XG4gICAgICAgIH1cbiAgICAgICAgb2ZmV2luZG93RXZlbnQoJ2ZvY3VzJywgY2FsbGJhY2spO1xuICAgIH07XG59O1xuY29uc3QgaW5pdFJlY29ubmVjdCA9IChjYWxsYmFjayk9PntcbiAgICAvLyByZXZhbGlkYXRlIG9uIHJlY29ubmVjdGVkXG4gICAgY29uc3Qgb25PbmxpbmUgPSAoKT0+e1xuICAgICAgICBvbmxpbmUgPSB0cnVlO1xuICAgICAgICBjYWxsYmFjaygpO1xuICAgIH07XG4gICAgLy8gbm90aGluZyB0byByZXZhbGlkYXRlLCBqdXN0IHVwZGF0ZSB0aGUgc3RhdHVzXG4gICAgY29uc3Qgb25PZmZsaW5lID0gKCk9PntcbiAgICAgICAgb25saW5lID0gZmFsc2U7XG4gICAgfTtcbiAgICBvbldpbmRvd0V2ZW50KCdvbmxpbmUnLCBvbk9ubGluZSk7XG4gICAgb25XaW5kb3dFdmVudCgnb2ZmbGluZScsIG9uT2ZmbGluZSk7XG4gICAgcmV0dXJuICgpPT57XG4gICAgICAgIG9mZldpbmRvd0V2ZW50KCdvbmxpbmUnLCBvbk9ubGluZSk7XG4gICAgICAgIG9mZldpbmRvd0V2ZW50KCdvZmZsaW5lJywgb25PZmZsaW5lKTtcbiAgICB9O1xufTtcbmNvbnN0IHByZXNldCA9IHtcbiAgICBpc09ubGluZSxcbiAgICBpc1Zpc2libGVcbn07XG5jb25zdCBkZWZhdWx0Q29uZmlnT3B0aW9ucyA9IHtcbiAgICBpbml0Rm9jdXMsXG4gICAgaW5pdFJlY29ubmVjdFxufTtcblxuY29uc3QgSVNfUkVBQ1RfTEVHQUNZID0gIVJlYWN0LnVzZUlkO1xuY29uc3QgSVNfU0VSVkVSID0gIWlzV2luZG93RGVmaW5lZCB8fCBpc0xlZ2FjeURlbm87XG4vLyBQb2x5ZmlsbCByZXF1ZXN0QW5pbWF0aW9uRnJhbWVcbmNvbnN0IHJBRiA9IChmKT0+aGFzUmVxdWVzdEFuaW1hdGlvbkZyYW1lKCkgPyB3aW5kb3dbJ3JlcXVlc3RBbmltYXRpb25GcmFtZSddKGYpIDogc2V0VGltZW91dChmLCAxKTtcbi8vIFJlYWN0IGN1cnJlbnRseSB0aHJvd3MgYSB3YXJuaW5nIHdoZW4gdXNpbmcgdXNlTGF5b3V0RWZmZWN0IG9uIHRoZSBzZXJ2ZXIuXG4vLyBUbyBnZXQgYXJvdW5kIGl0LCB3ZSBjYW4gY29uZGl0aW9uYWxseSB1c2VFZmZlY3Qgb24gdGhlIHNlcnZlciAobm8tb3ApIGFuZFxuLy8gdXNlTGF5b3V0RWZmZWN0IGluIHRoZSBicm93c2VyLlxuY29uc3QgdXNlSXNvbW9ycGhpY0xheW91dEVmZmVjdCA9IElTX1NFUlZFUiA/IHVzZUVmZmVjdCA6IHVzZUxheW91dEVmZmVjdDtcbi8vIFRoaXMgYXNzaWdubWVudCBpcyB0byBleHRlbmQgdGhlIE5hdmlnYXRvciB0eXBlIHRvIHVzZSBlZmZlY3RpdmVUeXBlLlxuY29uc3QgbmF2aWdhdG9yQ29ubmVjdGlvbiA9IHR5cGVvZiBuYXZpZ2F0b3IgIT09ICd1bmRlZmluZWQnICYmIG5hdmlnYXRvci5jb25uZWN0aW9uO1xuLy8gQWRqdXN0IHRoZSBjb25maWcgYmFzZWQgb24gc2xvdyBjb25uZWN0aW9uIHN0YXR1cyAoPD0gNzBLYnBzKS5cbmNvbnN0IHNsb3dDb25uZWN0aW9uID0gIUlTX1NFUlZFUiAmJiBuYXZpZ2F0b3JDb25uZWN0aW9uICYmIChbXG4gICAgJ3Nsb3ctMmcnLFxuICAgICcyZydcbl0uaW5jbHVkZXMobmF2aWdhdG9yQ29ubmVjdGlvbi5lZmZlY3RpdmVUeXBlKSB8fCBuYXZpZ2F0b3JDb25uZWN0aW9uLnNhdmVEYXRhKTtcblxuLy8gdXNlIFdlYWtNYXAgdG8gc3RvcmUgdGhlIG9iamVjdC0+a2V5IG1hcHBpbmdcbi8vIHNvIHRoZSBvYmplY3RzIGNhbiBiZSBnYXJiYWdlIGNvbGxlY3RlZC5cbi8vIFdlYWtNYXAgdXNlcyBhIGhhc2h0YWJsZSB1bmRlciB0aGUgaG9vZCwgc28gdGhlIGxvb2t1cFxuLy8gY29tcGxleGl0eSBpcyBhbG1vc3QgTygxKS5cbmNvbnN0IHRhYmxlID0gbmV3IFdlYWtNYXAoKTtcbmNvbnN0IGdldFR5cGVOYW1lID0gKHZhbHVlKT0+T0JKRUNULnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHZhbHVlKTtcbmNvbnN0IGlzT2JqZWN0VHlwZU5hbWUgPSAodHlwZU5hbWUsIHR5cGUpPT50eXBlTmFtZSA9PT0gYFtvYmplY3QgJHt0eXBlfV1gO1xuLy8gY291bnRlciBvZiB0aGUga2V5XG5sZXQgY291bnRlciA9IDA7XG4vLyBBIHN0YWJsZSBoYXNoIGltcGxlbWVudGF0aW9uIHRoYXQgc3VwcG9ydHM6XG4vLyAtIEZhc3QgYW5kIGVuc3VyZXMgdW5pcXVlIGhhc2ggcHJvcGVydGllc1xuLy8gLSBIYW5kbGVzIHVuc2VyaWFsaXphYmxlIHZhbHVlc1xuLy8gLSBIYW5kbGVzIG9iamVjdCBrZXkgb3JkZXJpbmdcbi8vIC0gR2VuZXJhdGVzIHNob3J0IHJlc3VsdHNcbi8vXG4vLyBUaGlzIGlzIG5vdCBhIHNlcmlhbGl6YXRpb24gZnVuY3Rpb24sIGFuZCB0aGUgcmVzdWx0IGlzIG5vdCBndWFyYW50ZWVkIHRvIGJlXG4vLyBwYXJzYWJsZS5cbmNvbnN0IHN0YWJsZUhhc2ggPSAoYXJnKT0+e1xuICAgIGNvbnN0IHR5cGUgPSB0eXBlb2YgYXJnO1xuICAgIGNvbnN0IHR5cGVOYW1lID0gZ2V0VHlwZU5hbWUoYXJnKTtcbiAgICBjb25zdCBpc0RhdGUgPSBpc09iamVjdFR5cGVOYW1lKHR5cGVOYW1lLCAnRGF0ZScpO1xuICAgIGNvbnN0IGlzUmVnZXggPSBpc09iamVjdFR5cGVOYW1lKHR5cGVOYW1lLCAnUmVnRXhwJyk7XG4gICAgY29uc3QgaXNQbGFpbk9iamVjdCA9IGlzT2JqZWN0VHlwZU5hbWUodHlwZU5hbWUsICdPYmplY3QnKTtcbiAgICBsZXQgcmVzdWx0O1xuICAgIGxldCBpbmRleDtcbiAgICBpZiAoT0JKRUNUKGFyZykgPT09IGFyZyAmJiAhaXNEYXRlICYmICFpc1JlZ2V4KSB7XG4gICAgICAgIC8vIE9iamVjdC9mdW5jdGlvbiwgbm90IG51bGwvZGF0ZS9yZWdleHAuIFVzZSBXZWFrTWFwIHRvIHN0b3JlIHRoZSBpZCBmaXJzdC5cbiAgICAgICAgLy8gSWYgaXQncyBhbHJlYWR5IGhhc2hlZCwgZGlyZWN0bHkgcmV0dXJuIHRoZSByZXN1bHQuXG4gICAgICAgIHJlc3VsdCA9IHRhYmxlLmdldChhcmcpO1xuICAgICAgICBpZiAocmVzdWx0KSByZXR1cm4gcmVzdWx0O1xuICAgICAgICAvLyBTdG9yZSB0aGUgaGFzaCBmaXJzdCBmb3IgY2lyY3VsYXIgcmVmZXJlbmNlIGRldGVjdGlvbiBiZWZvcmUgZW50ZXJpbmcgdGhlXG4gICAgICAgIC8vIHJlY3Vyc2l2ZSBgc3RhYmxlSGFzaGAgY2FsbHMuXG4gICAgICAgIC8vIEZvciBvdGhlciBvYmplY3RzIGxpa2Ugc2V0IGFuZCBtYXAsIHdlIHVzZSB0aGlzIGlkIGRpcmVjdGx5IGFzIHRoZSBoYXNoLlxuICAgICAgICByZXN1bHQgPSArK2NvdW50ZXIgKyAnfic7XG4gICAgICAgIHRhYmxlLnNldChhcmcsIHJlc3VsdCk7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGFyZykpIHtcbiAgICAgICAgICAgIC8vIEFycmF5LlxuICAgICAgICAgICAgcmVzdWx0ID0gJ0AnO1xuICAgICAgICAgICAgZm9yKGluZGV4ID0gMDsgaW5kZXggPCBhcmcubGVuZ3RoOyBpbmRleCsrKXtcbiAgICAgICAgICAgICAgICByZXN1bHQgKz0gc3RhYmxlSGFzaChhcmdbaW5kZXhdKSArICcsJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRhYmxlLnNldChhcmcsIHJlc3VsdCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzUGxhaW5PYmplY3QpIHtcbiAgICAgICAgICAgIC8vIE9iamVjdCwgc29ydCBrZXlzLlxuICAgICAgICAgICAgcmVzdWx0ID0gJyMnO1xuICAgICAgICAgICAgY29uc3Qga2V5cyA9IE9CSkVDVC5rZXlzKGFyZykuc29ydCgpO1xuICAgICAgICAgICAgd2hpbGUoIWlzVW5kZWZpbmVkKGluZGV4ID0ga2V5cy5wb3AoKSkpe1xuICAgICAgICAgICAgICAgIGlmICghaXNVbmRlZmluZWQoYXJnW2luZGV4XSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IGluZGV4ICsgJzonICsgc3RhYmxlSGFzaChhcmdbaW5kZXhdKSArICcsJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0YWJsZS5zZXQoYXJnLCByZXN1bHQpO1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0ID0gaXNEYXRlID8gYXJnLnRvSlNPTigpIDogdHlwZSA9PSAnc3ltYm9sJyA/IGFyZy50b1N0cmluZygpIDogdHlwZSA9PSAnc3RyaW5nJyA/IEpTT04uc3RyaW5naWZ5KGFyZykgOiAnJyArIGFyZztcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbmNvbnN0IHNlcmlhbGl6ZSA9IChrZXkpPT57XG4gICAgaWYgKGlzRnVuY3Rpb24oa2V5KSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAga2V5ID0ga2V5KCk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgLy8gZGVwZW5kZW5jaWVzIG5vdCByZWFkeVxuICAgICAgICAgICAga2V5ID0gJyc7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gVXNlIHRoZSBvcmlnaW5hbCBrZXkgYXMgdGhlIGFyZ3VtZW50IG9mIGZldGNoZXIuIFRoaXMgY2FuIGJlIGEgc3RyaW5nIG9yIGFuXG4gICAgLy8gYXJyYXkgb2YgdmFsdWVzLlxuICAgIGNvbnN0IGFyZ3MgPSBrZXk7XG4gICAgLy8gSWYga2V5IGlzIG5vdCBmYWxzeSwgb3Igbm90IGFuIGVtcHR5IGFycmF5LCBoYXNoIGl0LlxuICAgIGtleSA9IHR5cGVvZiBrZXkgPT0gJ3N0cmluZycgPyBrZXkgOiAoQXJyYXkuaXNBcnJheShrZXkpID8ga2V5Lmxlbmd0aCA6IGtleSkgPyBzdGFibGVIYXNoKGtleSkgOiAnJztcbiAgICByZXR1cm4gW1xuICAgICAgICBrZXksXG4gICAgICAgIGFyZ3NcbiAgICBdO1xufTtcblxuLy8gR2xvYmFsIHRpbWVzdGFtcC5cbmxldCBfX3RpbWVzdGFtcCA9IDA7XG5jb25zdCBnZXRUaW1lc3RhbXAgPSAoKT0+KytfX3RpbWVzdGFtcDtcblxuYXN5bmMgZnVuY3Rpb24gaW50ZXJuYWxNdXRhdGUoLi4uYXJncykge1xuICAgIGNvbnN0IFtjYWNoZSwgX2tleSwgX2RhdGEsIF9vcHRzXSA9IGFyZ3M7XG4gICAgLy8gV2hlbiBwYXNzaW5nIGFzIGEgYm9vbGVhbiwgaXQncyBleHBsaWNpdGx5IHVzZWQgdG8gZGlzYWJsZS9lbmFibGVcbiAgICAvLyByZXZhbGlkYXRpb24uXG4gICAgY29uc3Qgb3B0aW9ucyA9IG1lcmdlT2JqZWN0cyh7XG4gICAgICAgIHBvcHVsYXRlQ2FjaGU6IHRydWUsXG4gICAgICAgIHRocm93T25FcnJvcjogdHJ1ZVxuICAgIH0sIHR5cGVvZiBfb3B0cyA9PT0gJ2Jvb2xlYW4nID8ge1xuICAgICAgICByZXZhbGlkYXRlOiBfb3B0c1xuICAgIH0gOiBfb3B0cyB8fCB7fSk7XG4gICAgbGV0IHBvcHVsYXRlQ2FjaGUgPSBvcHRpb25zLnBvcHVsYXRlQ2FjaGU7XG4gICAgY29uc3Qgcm9sbGJhY2tPbkVycm9yT3B0aW9uID0gb3B0aW9ucy5yb2xsYmFja09uRXJyb3I7XG4gICAgbGV0IG9wdGltaXN0aWNEYXRhID0gb3B0aW9ucy5vcHRpbWlzdGljRGF0YTtcbiAgICBjb25zdCByb2xsYmFja09uRXJyb3IgPSAoZXJyb3IpPT57XG4gICAgICAgIHJldHVybiB0eXBlb2Ygcm9sbGJhY2tPbkVycm9yT3B0aW9uID09PSAnZnVuY3Rpb24nID8gcm9sbGJhY2tPbkVycm9yT3B0aW9uKGVycm9yKSA6IHJvbGxiYWNrT25FcnJvck9wdGlvbiAhPT0gZmFsc2U7XG4gICAgfTtcbiAgICBjb25zdCB0aHJvd09uRXJyb3IgPSBvcHRpb25zLnRocm93T25FcnJvcjtcbiAgICAvLyBJZiB0aGUgc2Vjb25kIGFyZ3VtZW50IGlzIGEga2V5IGZpbHRlciwgcmV0dXJuIHRoZSBtdXRhdGlvbiByZXN1bHRzIGZvciBhbGxcbiAgICAvLyBmaWx0ZXJlZCBrZXlzLlxuICAgIGlmIChpc0Z1bmN0aW9uKF9rZXkpKSB7XG4gICAgICAgIGNvbnN0IGtleUZpbHRlciA9IF9rZXk7XG4gICAgICAgIGNvbnN0IG1hdGNoZWRLZXlzID0gW107XG4gICAgICAgIGNvbnN0IGl0ID0gY2FjaGUua2V5cygpO1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBpdCl7XG4gICAgICAgICAgICBpZiAoLy8gU2tpcCB0aGUgc3BlY2lhbCB1c2VTV1JJbmZpbml0ZSBhbmQgdXNlU1dSU3Vic2NyaXB0aW9uIGtleXMuXG4gICAgICAgICAgICAhL15cXCQoaW5mfHN1YilcXCQvLnRlc3Qoa2V5KSAmJiBrZXlGaWx0ZXIoY2FjaGUuZ2V0KGtleSkuX2spKSB7XG4gICAgICAgICAgICAgICAgbWF0Y2hlZEtleXMucHVzaChrZXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBQcm9taXNlLmFsbChtYXRjaGVkS2V5cy5tYXAobXV0YXRlQnlLZXkpKTtcbiAgICB9XG4gICAgcmV0dXJuIG11dGF0ZUJ5S2V5KF9rZXkpO1xuICAgIGFzeW5jIGZ1bmN0aW9uIG11dGF0ZUJ5S2V5KF9rKSB7XG4gICAgICAgIC8vIFNlcmlhbGl6ZSBrZXlcbiAgICAgICAgY29uc3QgW2tleV0gPSBzZXJpYWxpemUoX2spO1xuICAgICAgICBpZiAoIWtleSkgcmV0dXJuO1xuICAgICAgICBjb25zdCBbZ2V0LCBzZXRdID0gY3JlYXRlQ2FjaGVIZWxwZXIoY2FjaGUsIGtleSk7XG4gICAgICAgIGNvbnN0IFtFVkVOVF9SRVZBTElEQVRPUlMsIE1VVEFUSU9OLCBGRVRDSCwgUFJFTE9BRF0gPSBTV1JHbG9iYWxTdGF0ZS5nZXQoY2FjaGUpO1xuICAgICAgICBjb25zdCBzdGFydFJldmFsaWRhdGUgPSAoKT0+e1xuICAgICAgICAgICAgY29uc3QgcmV2YWxpZGF0b3JzID0gRVZFTlRfUkVWQUxJREFUT1JTW2tleV07XG4gICAgICAgICAgICBjb25zdCByZXZhbGlkYXRlID0gaXNGdW5jdGlvbihvcHRpb25zLnJldmFsaWRhdGUpID8gb3B0aW9ucy5yZXZhbGlkYXRlKGdldCgpLmRhdGEsIF9rKSA6IG9wdGlvbnMucmV2YWxpZGF0ZSAhPT0gZmFsc2U7XG4gICAgICAgICAgICBpZiAocmV2YWxpZGF0ZSkge1xuICAgICAgICAgICAgICAgIC8vIEludmFsaWRhdGUgdGhlIGtleSBieSBkZWxldGluZyB0aGUgY29uY3VycmVudCByZXF1ZXN0IG1hcmtlcnMgc28gbmV3XG4gICAgICAgICAgICAgICAgLy8gcmVxdWVzdHMgd2lsbCBub3QgYmUgZGVkdXBlZC5cbiAgICAgICAgICAgICAgICBkZWxldGUgRkVUQ0hba2V5XTtcbiAgICAgICAgICAgICAgICBkZWxldGUgUFJFTE9BRFtrZXldO1xuICAgICAgICAgICAgICAgIGlmIChyZXZhbGlkYXRvcnMgJiYgcmV2YWxpZGF0b3JzWzBdKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXZhbGlkYXRvcnNbMF0oTVVUQVRFX0VWRU5UKS50aGVuKCgpPT5nZXQoKS5kYXRhKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZ2V0KCkuZGF0YTtcbiAgICAgICAgfTtcbiAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gbmV3IGRhdGEgcHJvdmlkZWQsIHJldmFsaWRhdGUgdGhlIGtleSB3aXRoIGN1cnJlbnQgc3RhdGUuXG4gICAgICAgIGlmIChhcmdzLmxlbmd0aCA8IDMpIHtcbiAgICAgICAgICAgIC8vIFJldmFsaWRhdGUgYW5kIGJyb2FkY2FzdCBzdGF0ZS5cbiAgICAgICAgICAgIHJldHVybiBzdGFydFJldmFsaWRhdGUoKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgZGF0YSA9IF9kYXRhO1xuICAgICAgICBsZXQgZXJyb3I7XG4gICAgICAgIGxldCBpc0Vycm9yID0gZmFsc2U7XG4gICAgICAgIC8vIFVwZGF0ZSBnbG9iYWwgdGltZXN0YW1wcy5cbiAgICAgICAgY29uc3QgYmVmb3JlTXV0YXRpb25UcyA9IGdldFRpbWVzdGFtcCgpO1xuICAgICAgICBNVVRBVElPTltrZXldID0gW1xuICAgICAgICAgICAgYmVmb3JlTXV0YXRpb25UcyxcbiAgICAgICAgICAgIDBcbiAgICAgICAgXTtcbiAgICAgICAgY29uc3QgaGFzT3B0aW1pc3RpY0RhdGEgPSAhaXNVbmRlZmluZWQob3B0aW1pc3RpY0RhdGEpO1xuICAgICAgICBjb25zdCBzdGF0ZSA9IGdldCgpO1xuICAgICAgICAvLyBgZGlzcGxheWVkRGF0YWAgaXMgdGhlIGN1cnJlbnQgdmFsdWUgb24gc2NyZWVuLiBJdCBjb3VsZCBiZSB0aGUgb3B0aW1pc3RpYyB2YWx1ZVxuICAgICAgICAvLyB0aGF0IGlzIGdvaW5nIHRvIGJlIG92ZXJyaWRkZW4gYnkgYSBgY29tbWl0dGVkRGF0YWAsIG9yIGdldCByZXZlcnRlZCBiYWNrLlxuICAgICAgICAvLyBgY29tbWl0dGVkRGF0YWAgaXMgdGhlIHZhbGlkYXRlZCB2YWx1ZSB0aGF0IGNvbWVzIGZyb20gYSBmZXRjaCBvciBtdXRhdGlvbi5cbiAgICAgICAgY29uc3QgZGlzcGxheWVkRGF0YSA9IHN0YXRlLmRhdGE7XG4gICAgICAgIGNvbnN0IGN1cnJlbnREYXRhID0gc3RhdGUuX2M7XG4gICAgICAgIGNvbnN0IGNvbW1pdHRlZERhdGEgPSBpc1VuZGVmaW5lZChjdXJyZW50RGF0YSkgPyBkaXNwbGF5ZWREYXRhIDogY3VycmVudERhdGE7XG4gICAgICAgIC8vIERvIG9wdGltaXN0aWMgZGF0YSB1cGRhdGUuXG4gICAgICAgIGlmIChoYXNPcHRpbWlzdGljRGF0YSkge1xuICAgICAgICAgICAgb3B0aW1pc3RpY0RhdGEgPSBpc0Z1bmN0aW9uKG9wdGltaXN0aWNEYXRhKSA/IG9wdGltaXN0aWNEYXRhKGNvbW1pdHRlZERhdGEsIGRpc3BsYXllZERhdGEpIDogb3B0aW1pc3RpY0RhdGE7XG4gICAgICAgICAgICAvLyBXaGVuIHdlIHNldCBvcHRpbWlzdGljIGRhdGEsIGJhY2t1cCB0aGUgY3VycmVudCBjb21taXR0ZWREYXRhIGRhdGEgaW4gYF9jYC5cbiAgICAgICAgICAgIHNldCh7XG4gICAgICAgICAgICAgICAgZGF0YTogb3B0aW1pc3RpY0RhdGEsXG4gICAgICAgICAgICAgICAgX2M6IGNvbW1pdHRlZERhdGFcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc0Z1bmN0aW9uKGRhdGEpKSB7XG4gICAgICAgICAgICAvLyBgZGF0YWAgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCBwYXNzaW5nIGN1cnJlbnQgY2FjaGUgdmFsdWUuXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGRhdGEgPSBkYXRhKGNvbW1pdHRlZERhdGEpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgLy8gSWYgaXQgdGhyb3dzIGFuIGVycm9yIHN5bmNocm9ub3VzbHksIHdlIHNob3VsZG4ndCB1cGRhdGUgdGhlIGNhY2hlLlxuICAgICAgICAgICAgICAgIGVycm9yID0gZXJyO1xuICAgICAgICAgICAgICAgIGlzRXJyb3IgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIGBkYXRhYCBpcyBhIHByb21pc2UvdGhlbmFibGUsIHJlc29sdmUgdGhlIGZpbmFsIGRhdGEgZmlyc3QuXG4gICAgICAgIGlmIChkYXRhICYmIGlzUHJvbWlzZUxpa2UoZGF0YSkpIHtcbiAgICAgICAgICAgIC8vIFRoaXMgbWVhbnMgdGhhdCB0aGUgbXV0YXRpb24gaXMgYXN5bmMsIHdlIG5lZWQgdG8gY2hlY2sgdGltZXN0YW1wcyB0b1xuICAgICAgICAgICAgLy8gYXZvaWQgcmFjZSBjb25kaXRpb25zLlxuICAgICAgICAgICAgZGF0YSA9IGF3YWl0IGRhdGEuY2F0Y2goKGVycik9PntcbiAgICAgICAgICAgICAgICBlcnJvciA9IGVycjtcbiAgICAgICAgICAgICAgICBpc0Vycm9yID0gdHJ1ZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgLy8gQ2hlY2sgaWYgb3RoZXIgbXV0YXRpb25zIGhhdmUgb2NjdXJyZWQgc2luY2Ugd2UndmUgc3RhcnRlZCB0aGlzIG11dGF0aW9uLlxuICAgICAgICAgICAgLy8gSWYgdGhlcmUncyBhIHJhY2Ugd2UgZG9uJ3QgdXBkYXRlIGNhY2hlIG9yIGJyb2FkY2FzdCB0aGUgY2hhbmdlLFxuICAgICAgICAgICAgLy8ganVzdCByZXR1cm4gdGhlIGRhdGEuXG4gICAgICAgICAgICBpZiAoYmVmb3JlTXV0YXRpb25UcyAhPT0gTVVUQVRJT05ba2V5XVswXSkge1xuICAgICAgICAgICAgICAgIGlmIChpc0Vycm9yKSB0aHJvdyBlcnJvcjtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNFcnJvciAmJiBoYXNPcHRpbWlzdGljRGF0YSAmJiByb2xsYmFja09uRXJyb3IoZXJyb3IpKSB7XG4gICAgICAgICAgICAgICAgLy8gUm9sbGJhY2suIEFsd2F5cyBwb3B1bGF0ZSB0aGUgY2FjaGUgaW4gdGhpcyBjYXNlIGJ1dCB3aXRob3V0XG4gICAgICAgICAgICAgICAgLy8gdHJhbnNmb3JtaW5nIHRoZSBkYXRhLlxuICAgICAgICAgICAgICAgIHBvcHVsYXRlQ2FjaGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIC8vIFJlc2V0IGRhdGEgdG8gYmUgdGhlIGxhdGVzdCBjb21taXR0ZWQgZGF0YSwgYW5kIGNsZWFyIHRoZSBgX2NgIHZhbHVlLlxuICAgICAgICAgICAgICAgIHNldCh7XG4gICAgICAgICAgICAgICAgICAgIGRhdGE6IGNvbW1pdHRlZERhdGEsXG4gICAgICAgICAgICAgICAgICAgIF9jOiBVTkRFRklORURcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBJZiB3ZSBzaG91bGQgd3JpdGUgYmFjayB0aGUgY2FjaGUgYWZ0ZXIgcmVxdWVzdC5cbiAgICAgICAgaWYgKHBvcHVsYXRlQ2FjaGUpIHtcbiAgICAgICAgICAgIGlmICghaXNFcnJvcikge1xuICAgICAgICAgICAgICAgIC8vIFRyYW5zZm9ybSB0aGUgcmVzdWx0IGludG8gZGF0YS5cbiAgICAgICAgICAgICAgICBpZiAoaXNGdW5jdGlvbihwb3B1bGF0ZUNhY2hlKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwb3B1bGF0ZUNhY2hlZERhdGEgPSBwb3B1bGF0ZUNhY2hlKGRhdGEsIGNvbW1pdHRlZERhdGEpO1xuICAgICAgICAgICAgICAgICAgICBzZXQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogcG9wdWxhdGVDYWNoZWREYXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6IFVOREVGSU5FRCxcbiAgICAgICAgICAgICAgICAgICAgICAgIF9jOiBVTkRFRklORURcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gT25seSB1cGRhdGUgY2FjaGVkIGRhdGEgYW5kIHJlc2V0IHRoZSBlcnJvciBpZiB0aGVyZSdzIG5vIGVycm9yLiBEYXRhIGNhbiBiZSBgdW5kZWZpbmVkYCBoZXJlLlxuICAgICAgICAgICAgICAgICAgICBzZXQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yOiBVTkRFRklORUQsXG4gICAgICAgICAgICAgICAgICAgICAgICBfYzogVU5ERUZJTkVEXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBSZXNldCB0aGUgdGltZXN0YW1wIHRvIG1hcmsgdGhlIG11dGF0aW9uIGhhcyBlbmRlZC5cbiAgICAgICAgTVVUQVRJT05ba2V5XVsxXSA9IGdldFRpbWVzdGFtcCgpO1xuICAgICAgICAvLyBVcGRhdGUgZXhpc3RpbmcgU1dSIEhvb2tzJyBpbnRlcm5hbCBzdGF0ZXM6XG4gICAgICAgIFByb21pc2UucmVzb2x2ZShzdGFydFJldmFsaWRhdGUoKSkudGhlbigoKT0+e1xuICAgICAgICAgICAgLy8gVGhlIG11dGF0aW9uIGFuZCByZXZhbGlkYXRpb24gYXJlIGVuZGVkLCB3ZSBjYW4gY2xlYXIgaXQgc2luY2UgdGhlIGRhdGEgaXNcbiAgICAgICAgICAgIC8vIG5vdCBhbiBvcHRpbWlzdGljIHZhbHVlIGFueW1vcmUuXG4gICAgICAgICAgICBzZXQoe1xuICAgICAgICAgICAgICAgIF9jOiBVTkRFRklORURcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgLy8gVGhyb3cgZXJyb3Igb3IgcmV0dXJuIGRhdGFcbiAgICAgICAgaWYgKGlzRXJyb3IpIHtcbiAgICAgICAgICAgIGlmICh0aHJvd09uRXJyb3IpIHRocm93IGVycm9yO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cbn1cblxuY29uc3QgcmV2YWxpZGF0ZUFsbEtleXMgPSAocmV2YWxpZGF0b3JzLCB0eXBlKT0+e1xuICAgIGZvcihjb25zdCBrZXkgaW4gcmV2YWxpZGF0b3JzKXtcbiAgICAgICAgaWYgKHJldmFsaWRhdG9yc1trZXldWzBdKSByZXZhbGlkYXRvcnNba2V5XVswXSh0eXBlKTtcbiAgICB9XG59O1xuY29uc3QgaW5pdENhY2hlID0gKHByb3ZpZGVyLCBvcHRpb25zKT0+e1xuICAgIC8vIFRoZSBnbG9iYWwgc3RhdGUgZm9yIGEgc3BlY2lmaWMgcHJvdmlkZXIgd2lsbCBiZSB1c2VkIHRvIGRlZHVwbGljYXRlXG4gICAgLy8gcmVxdWVzdHMgYW5kIHN0b3JlIGxpc3RlbmVycy4gQXMgd2VsbCBhcyBhIG11dGF0ZSBmdW5jdGlvbiB0aGF0IGlzIGJvdW5kIHRvXG4gICAgLy8gdGhlIGNhY2hlLlxuICAgIC8vIFRoZSBwcm92aWRlcidzIGdsb2JhbCBzdGF0ZSBtaWdodCBiZSBhbHJlYWR5IGluaXRpYWxpemVkLiBMZXQncyB0cnkgdG8gZ2V0IHRoZVxuICAgIC8vIGdsb2JhbCBzdGF0ZSBhc3NvY2lhdGVkIHdpdGggdGhlIHByb3ZpZGVyIGZpcnN0LlxuICAgIGlmICghU1dSR2xvYmFsU3RhdGUuaGFzKHByb3ZpZGVyKSkge1xuICAgICAgICBjb25zdCBvcHRzID0gbWVyZ2VPYmplY3RzKGRlZmF1bHRDb25maWdPcHRpb25zLCBvcHRpb25zKTtcbiAgICAgICAgLy8gSWYgdGhlcmUncyBubyBnbG9iYWwgc3RhdGUgYm91bmQgdG8gdGhlIHByb3ZpZGVyLCBjcmVhdGUgYSBuZXcgb25lIHdpdGggdGhlXG4gICAgICAgIC8vIG5ldyBtdXRhdGUgZnVuY3Rpb24uXG4gICAgICAgIGNvbnN0IEVWRU5UX1JFVkFMSURBVE9SUyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgICAgIGNvbnN0IG11dGF0ZSA9IGludGVybmFsTXV0YXRlLmJpbmQoVU5ERUZJTkVELCBwcm92aWRlcik7XG4gICAgICAgIGxldCB1bm1vdW50ID0gbm9vcDtcbiAgICAgICAgY29uc3Qgc3Vic2NyaXB0aW9ucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgICAgIGNvbnN0IHN1YnNjcmliZSA9IChrZXksIGNhbGxiYWNrKT0+e1xuICAgICAgICAgICAgY29uc3Qgc3VicyA9IHN1YnNjcmlwdGlvbnNba2V5XSB8fCBbXTtcbiAgICAgICAgICAgIHN1YnNjcmlwdGlvbnNba2V5XSA9IHN1YnM7XG4gICAgICAgICAgICBzdWJzLnB1c2goY2FsbGJhY2spO1xuICAgICAgICAgICAgcmV0dXJuICgpPT57XG4gICAgICAgICAgICAgICAgY29uc3QgaW5kZXggPSBzdWJzLmluZGV4T2YoY2FsbGJhY2spO1xuICAgICAgICAgICAgICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIE8oMSk6IHN3YXAgd2l0aCB0aGUgbGFzdCBlbGVtZW50IGFuZCBwb3BcbiAgICAgICAgICAgICAgICAgICAgc3Vic1tpbmRleF0gPSBzdWJzW3N1YnMubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICAgICAgICAgIHN1YnMucG9wKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3Qgc2V0dGVyID0gKGtleSwgdmFsdWUsIHByZXYpPT57XG4gICAgICAgICAgICBwcm92aWRlci5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgICAgICAgICBjb25zdCBzdWJzID0gc3Vic2NyaXB0aW9uc1trZXldO1xuICAgICAgICAgICAgaWYgKHN1YnMpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGZuIG9mIHN1YnMpe1xuICAgICAgICAgICAgICAgICAgICBmbih2YWx1ZSwgcHJldik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBjb25zdCB1bmxvYWQgPSAodW5sb2FkT3B0aW9ucyk9PntcbiAgICAgICAgICAgIGNvbnN0IHN0YXRlID0gU1dSR2xvYmFsU3RhdGUuZ2V0KHByb3ZpZGVyKTtcbiAgICAgICAgICAgIGNvbnN0IFssIE1VVEFUSU9OLCBGRVRDSCwgUFJFTE9BRF0gPSBzdGF0ZTtcbiAgICAgICAgICAgIGNvbnN0IHRzID0gZ2V0VGltZXN0YW1wKCk7XG4gICAgICAgICAgICAvLyBCdW1wIHRoZSB1bmxvYWQgZ2VuZXJhdGlvbiBzbyBpbi1mbGlnaHQgd3JpdGVzIHRoYXQgYnlwYXNzIHRoZVxuICAgICAgICAgICAgLy8gcmVxdWVzdCBtYXJrZXJzIChlLmcuIGB1c2VTV1JJbmZpbml0ZWAgcGFnZSByZXNwb25zZXMpIGtub3cgdG9cbiAgICAgICAgICAgIC8vIGRpc2NhcmQgdGhlbXNlbHZlcyB3aGVuIHRoZXkgcmVzb2x2ZS5cbiAgICAgICAgICAgIHN0YXRlWzhdKys7XG4gICAgICAgICAgICAvLyBJbnZhbGlkYXRlIGFsbCBpbi1mbGlnaHQgcmVxdWVzdHMgYW5kIG11dGF0aW9ucyBmaXJzdCwgc28gbm90aGluZ1xuICAgICAgICAgICAgLy8gdGhhdCByZXNvbHZlcyBhZnRlciB0aGlzIHBvaW50IGNhbiB3cml0ZSBiYWNrIHRvIHRoZSBjYWNoZTogZmV0Y2hlc1xuICAgICAgICAgICAgLy8gZmFpbCB0aGUgY29uY3VycmVudCByZXF1ZXN0IG1hcmtlciBjaGVjaywgYW5kIG11dGF0aW9ucyBmYWlsIHRoZVxuICAgICAgICAgICAgLy8gdGltZXN0YW1wIHJhY2UgY2hlY2suIE11dGF0aW9uIHRpbWVzdGFtcHMgYXJlIG92ZXJ3cml0dGVuIGluc3RlYWQgb2ZcbiAgICAgICAgICAgIC8vIGRlbGV0ZWQgYmVjYXVzZSBvbmdvaW5nIG11dGF0aW9ucyByZWFkIHRoZW0gb24gcmVzb2x1dGlvbi5cbiAgICAgICAgICAgIGZvcihjb25zdCBrZXkgaW4gRkVUQ0gpZGVsZXRlIEZFVENIW2tleV07XG4gICAgICAgICAgICBmb3IoY29uc3Qga2V5IGluIFBSRUxPQUQpZGVsZXRlIFBSRUxPQURba2V5XTtcbiAgICAgICAgICAgIGZvcihjb25zdCBrZXkgaW4gTVVUQVRJT04pTVVUQVRJT05ba2V5XSA9IFtcbiAgICAgICAgICAgICAgICB0cyxcbiAgICAgICAgICAgICAgICB0c1xuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIC8vIERlbGV0ZSBhbGwgZW50cmllcyDigJQgaW5jbHVkaW5nIHRoZSBzcGVjaWFsIGB1c2VTV1JJbmZpbml0ZWAgYW5kXG4gICAgICAgICAgICAvLyBgdXNlU1dSU3Vic2NyaXB0aW9uYCBrZXlzIOKAlCBhbmQgbm90aWZ5IHRoZSBzdWJzY3JpYmVycyBvZiBlYWNoIGtleVxuICAgICAgICAgICAgLy8gc28gbW91bnRlZCBob29rcyByZS1yZW5kZXIgd2l0aCB0aGUgZW1wdHkgY2FjaGUuIFN1YnNjcmliZXJzIHJlY2VpdmVcbiAgICAgICAgICAgIC8vIHRoZSBzYW1lIGVtcHR5IHN0YXRlIG9iamVjdCB0aGF0IGNhY2hlIHJlYWRzIHJlc29sdmUgdG8gZm9yIG1pc3NpbmdcbiAgICAgICAgICAgIC8vIGVudHJpZXMuXG4gICAgICAgICAgICBjb25zdCBlbXB0eVN0YXRlID0ge307XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBbXG4gICAgICAgICAgICAgICAgLi4ucHJvdmlkZXIua2V5cygpXG4gICAgICAgICAgICBdKXtcbiAgICAgICAgICAgICAgICBjb25zdCBwcmV2ID0gcHJvdmlkZXIuZ2V0KGtleSk7XG4gICAgICAgICAgICAgICAgcHJvdmlkZXIuZGVsZXRlKGtleSk7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3VicyA9IHN1YnNjcmlwdGlvbnNba2V5XTtcbiAgICAgICAgICAgICAgICBpZiAoc3Vicykge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGZuIG9mIHN1YnMpe1xuICAgICAgICAgICAgICAgICAgICAgICAgZm4oZW1wdHlTdGF0ZSwgcHJldik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBUaGUgdW5sb2FkIGV2ZW50IHJ1bnMgbGFzdCBzbyB0aGUgZnJlc2ggcmVxdWVzdHMgaXQgbWF5IHN0YXJ0IGFyZVxuICAgICAgICAgICAgLy8gbm90IGludmFsaWRhdGVkIGJ5IHRoZSBjbGVhbnVwIGFib3ZlLiBJdCBhbHdheXMgZmlyZXMg4oCUIGV2ZW4gd2l0aG91dFxuICAgICAgICAgICAgLy8gcmV2YWxpZGF0aW9uIOKAlCBhbmQgdG8gZXZlcnkgaG9vayBvbiB0aGUga2V5LCBzbyBlYWNoIG9uZSBjYW4gZHJvcFxuICAgICAgICAgICAgLy8gdGhlIHByZXZpb3VzIGRhdGEga2VwdCBieSBga2VlcFByZXZpb3VzRGF0YWAuIE9ubHkgdGhlIGZpcnN0IGhvb2tcbiAgICAgICAgICAgIC8vIHJldmFsaWRhdGVzLCBjb25zaXN0ZW50IHdpdGggaG93IG11dGF0aW9ucyByZXZhbGlkYXRlIGEga2V5LlxuICAgICAgICAgICAgY29uc3QgcmV2YWxpZGF0ZSA9ICF1bmxvYWRPcHRpb25zIHx8IHVubG9hZE9wdGlvbnMucmV2YWxpZGF0ZSAhPT0gZmFsc2U7XG4gICAgICAgICAgICBmb3IoY29uc3Qga2V5IGluIEVWRU5UX1JFVkFMSURBVE9SUyl7XG4gICAgICAgICAgICAgICAgY29uc3QgcmV2YWxpZGF0b3JzID0gRVZFTlRfUkVWQUxJREFUT1JTW2tleV07XG4gICAgICAgICAgICAgICAgZm9yKGxldCBpID0gMDsgaSA8IHJldmFsaWRhdG9ycy5sZW5ndGg7IGkrKyl7XG4gICAgICAgICAgICAgICAgICAgIHJldmFsaWRhdG9yc1tpXShVTkxPQURfRVZFTlQsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldmFsaWRhdGU6IHJldmFsaWRhdGUgJiYgIWlcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBpbml0UHJvdmlkZXIgPSAoKT0+e1xuICAgICAgICAgICAgaWYgKCFTV1JHbG9iYWxTdGF0ZS5oYXMocHJvdmlkZXIpKSB7XG4gICAgICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSBzdGF0ZSBpZiBpdCdzIG5ldywgb3IgaWYgdGhlIHByb3ZpZGVyIGhhcyBiZWVuIGV4dGVuZGVkLlxuICAgICAgICAgICAgICAgIFNXUkdsb2JhbFN0YXRlLnNldChwcm92aWRlciwgW1xuICAgICAgICAgICAgICAgICAgICBFVkVOVF9SRVZBTElEQVRPUlMsXG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5jcmVhdGUobnVsbCksXG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5jcmVhdGUobnVsbCksXG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5jcmVhdGUobnVsbCksXG4gICAgICAgICAgICAgICAgICAgIG11dGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgc2V0dGVyLFxuICAgICAgICAgICAgICAgICAgICBzdWJzY3JpYmUsXG4gICAgICAgICAgICAgICAgICAgIHVubG9hZCxcbiAgICAgICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgICAgIGlmICghSVNfU0VSVkVSKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFdoZW4gbGlzdGVuaW5nIHRvIHRoZSBuYXRpdmUgZXZlbnRzIGZvciBhdXRvIHJldmFsaWRhdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgIC8vIHdlIGludGVudGlvbmFsbHkgcHV0IGEgZGVsYXkgKHNldFRpbWVvdXQpIGhlcmUgdG8gbWFrZSBzdXJlIHRoZXkgYXJlXG4gICAgICAgICAgICAgICAgICAgIC8vIGZpcmVkIGFmdGVyIGltbWVkaWF0ZSBKYXZhU2NyaXB0IGV4ZWN1dGlvbnMsIHdoaWNoIGNhbiBiZVxuICAgICAgICAgICAgICAgICAgICAvLyBSZWFjdCdzIHN0YXRlIHVwZGF0ZXMuXG4gICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgYXZvaWRzIHNvbWUgdW5uZWNlc3NhcnkgcmV2YWxpZGF0aW9ucyBzdWNoIGFzXG4gICAgICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS92ZXJjZWwvc3dyL2lzc3Vlcy8xNjgwLlxuICAgICAgICAgICAgICAgICAgICBjb25zdCByZWxlYXNlRm9jdXMgPSBvcHRzLmluaXRGb2N1cyhzZXRUaW1lb3V0LmJpbmQoVU5ERUZJTkVELCByZXZhbGlkYXRlQWxsS2V5cy5iaW5kKFVOREVGSU5FRCwgRVZFTlRfUkVWQUxJREFUT1JTLCBGT0NVU19FVkVOVCkpKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVsZWFzZVJlY29ubmVjdCA9IG9wdHMuaW5pdFJlY29ubmVjdChzZXRUaW1lb3V0LmJpbmQoVU5ERUZJTkVELCByZXZhbGlkYXRlQWxsS2V5cy5iaW5kKFVOREVGSU5FRCwgRVZFTlRfUkVWQUxJREFUT1JTLCBSRUNPTk5FQ1RfRVZFTlQpKSk7XG4gICAgICAgICAgICAgICAgICAgIHVubW91bnQgPSAoKT0+e1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtZXhwcmVzc2lvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbGVhc2VGb2N1cyAmJiByZWxlYXNlRm9jdXMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLWV4cHJlc3Npb25zXG4gICAgICAgICAgICAgICAgICAgICAgICByZWxlYXNlUmVjb25uZWN0ICYmIHJlbGVhc2VSZWNvbm5lY3QoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdoZW4gdW4tbW91bnRpbmcsIHdlIG5lZWQgdG8gcmVtb3ZlIHRoZSBjYWNoZSBwcm92aWRlciBmcm9tIHRoZSBzdGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RvcmFnZSB0b28gYmVjYXVzZSBpdCdzIGEgc2lkZS1lZmZlY3QuIE90aGVyd2lzZSwgd2hlbiByZS1tb3VudGluZyB3ZVxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2lsbCBub3QgcmUtcmVnaXN0ZXIgdGhvc2UgZXZlbnQgbGlzdGVuZXJzLlxuICAgICAgICAgICAgICAgICAgICAgICAgU1dSR2xvYmFsU3RhdGUuZGVsZXRlKHByb3ZpZGVyKTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGluaXRQcm92aWRlcigpO1xuICAgICAgICAvLyBUaGlzIGlzIGEgbmV3IHByb3ZpZGVyLCB3ZSBuZWVkIHRvIGluaXRpYWxpemUgaXQgYW5kIHNldHVwIERPTSBldmVudHNcbiAgICAgICAgLy8gbGlzdGVuZXJzIGZvciBgZm9jdXNgIGFuZCBgcmVjb25uZWN0YCBhY3Rpb25zLlxuICAgICAgICAvLyBXZSBtaWdodCB3YW50IHRvIGluamVjdCBhbiBleHRyYSBsYXllciBvbiB0b3Agb2YgYHByb3ZpZGVyYCBpbiB0aGUgZnV0dXJlLFxuICAgICAgICAvLyBzdWNoIGFzIGtleSBzZXJpYWxpemF0aW9uLCBhdXRvIEdDLCBldGMuXG4gICAgICAgIC8vIEZvciBub3csIGl0J3MganVzdCBhIGBNYXBgIGludGVyZmFjZSB3aXRob3V0IGFueSBtb2RpZmljYXRpb25zLlxuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgcHJvdmlkZXIsXG4gICAgICAgICAgICBtdXRhdGUsXG4gICAgICAgICAgICBpbml0UHJvdmlkZXIsXG4gICAgICAgICAgICB1bm1vdW50LFxuICAgICAgICAgICAgdW5sb2FkXG4gICAgICAgIF07XG4gICAgfVxuICAgIGNvbnN0IHN0YXRlID0gU1dSR2xvYmFsU3RhdGUuZ2V0KHByb3ZpZGVyKTtcbiAgICByZXR1cm4gW1xuICAgICAgICBwcm92aWRlcixcbiAgICAgICAgc3RhdGVbNF0sXG4gICAgICAgIFVOREVGSU5FRCxcbiAgICAgICAgVU5ERUZJTkVELFxuICAgICAgICBzdGF0ZVs3XVxuICAgIF07XG59O1xuXG4vLyBlcnJvciByZXRyeVxuY29uc3Qgb25FcnJvclJldHJ5ID0gKF8sIF9fLCBjb25maWcsIHJldmFsaWRhdGUsIG9wdHMpPT57XG4gICAgY29uc3QgbWF4UmV0cnlDb3VudCA9IGNvbmZpZy5lcnJvclJldHJ5Q291bnQ7XG4gICAgY29uc3QgY3VycmVudFJldHJ5Q291bnQgPSBvcHRzLnJldHJ5Q291bnQ7XG4gICAgLy8gRXhwb25lbnRpYWwgYmFja29mZlxuICAgIGNvbnN0IHRpbWVvdXQgPSB+figoTWF0aC5yYW5kb20oKSArIDAuNSkgKiAoMSA8PCAoY3VycmVudFJldHJ5Q291bnQgPCA4ID8gY3VycmVudFJldHJ5Q291bnQgOiA4KSkpICogY29uZmlnLmVycm9yUmV0cnlJbnRlcnZhbDtcbiAgICBpZiAoIWlzVW5kZWZpbmVkKG1heFJldHJ5Q291bnQpICYmIGN1cnJlbnRSZXRyeUNvdW50ID4gbWF4UmV0cnlDb3VudCkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIHNldFRpbWVvdXQocmV2YWxpZGF0ZSwgdGltZW91dCwgb3B0cyk7XG59O1xuY29uc3QgY29tcGFyZSA9IGRlcXVhbDtcbi8vIERlZmF1bHQgY2FjaGUgcHJvdmlkZXJcbmNvbnN0IFtjYWNoZSwgbXV0YXRlLCAsICwgdW5sb2FkXSA9IGluaXRDYWNoZShuZXcgTWFwKCkpO1xuLy8gRGVmYXVsdCBjb25maWdcbmNvbnN0IGRlZmF1bHRDb25maWcgPSBtZXJnZU9iamVjdHMoe1xuICAgIC8vIGV2ZW50c1xuICAgIG9uTG9hZGluZ1Nsb3c6IG5vb3AsXG4gICAgb25TdWNjZXNzOiBub29wLFxuICAgIG9uRXJyb3I6IG5vb3AsXG4gICAgb25FcnJvclJldHJ5LFxuICAgIG9uRGlzY2FyZGVkOiBub29wLFxuICAgIC8vIHN3aXRjaGVzXG4gICAgcmV2YWxpZGF0ZU9uRm9jdXM6IHRydWUsXG4gICAgcmV2YWxpZGF0ZU9uUmVjb25uZWN0OiB0cnVlLFxuICAgIHJldmFsaWRhdGVJZlN0YWxlOiB0cnVlLFxuICAgIHNob3VsZFJldHJ5T25FcnJvcjogdHJ1ZSxcbiAgICAvLyB0aW1lb3V0c1xuICAgIGVycm9yUmV0cnlJbnRlcnZhbDogc2xvd0Nvbm5lY3Rpb24gPyAxMDAwMCA6IDUwMDAsXG4gICAgZm9jdXNUaHJvdHRsZUludGVydmFsOiA1ICogMTAwMCxcbiAgICBkZWR1cGluZ0ludGVydmFsOiAyICogMTAwMCxcbiAgICBsb2FkaW5nVGltZW91dDogc2xvd0Nvbm5lY3Rpb24gPyA1MDAwIDogMzAwMCxcbiAgICAvLyBwcm92aWRlcnNcbiAgICBjb21wYXJlLFxuICAgIGlzUGF1c2VkOiAoKT0+ZmFsc2UsXG4gICAgY2FjaGUsXG4gICAgbXV0YXRlLFxuICAgIHVubG9hZCxcbiAgICBmYWxsYmFjazoge31cbn0sIC8vIHVzZSB3ZWIgcHJlc2V0IGJ5IGRlZmF1bHRcbnByZXNldCk7XG5cbmNvbnN0IG1lcmdlQ29uZmlncyA9IChhLCBiKT0+e1xuICAgIC8vIE5lZWQgdG8gY3JlYXRlIGEgbmV3IG9iamVjdCB0byBhdm9pZCBtdXRhdGluZyB0aGUgb3JpZ2luYWwgaGVyZS5cbiAgICBjb25zdCB2ID0gbWVyZ2VPYmplY3RzKGEsIGIpO1xuICAgIC8vIElmIHR3byBjb25maWdzIGFyZSBwcm92aWRlZCwgbWVyZ2UgdGhlaXIgYHVzZWAsIGBmYWxsYmFja2AsIGFuZFxuICAgIC8vIGBjYWNoZURhdGFgIG9wdGlvbnMuXG4gICAgaWYgKGIpIHtcbiAgICAgICAgY29uc3QgeyB1c2U6IHUxLCBmYWxsYmFjazogZjEsIGNhY2hlRGF0YTogYzEgfSA9IGE7XG4gICAgICAgIGNvbnN0IHsgdXNlOiB1MiwgZmFsbGJhY2s6IGYyLCBjYWNoZURhdGE6IGMyIH0gPSBiO1xuICAgICAgICBpZiAodTEgJiYgdTIpIHtcbiAgICAgICAgICAgIHYudXNlID0gdTEuY29uY2F0KHUyKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZjEgJiYgZjIpIHtcbiAgICAgICAgICAgIHYuZmFsbGJhY2sgPSBtZXJnZU9iamVjdHMoZjEsIGYyKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYzEgJiYgYzIpIHtcbiAgICAgICAgICAgIHYuY2FjaGVEYXRhID0gbWVyZ2VPYmplY3RzKGMxLCBjMik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHY7XG59O1xuXG5jb25zdCBTV1JDb25maWdDb250ZXh0ID0gY3JlYXRlQ29udGV4dCh7fSk7XG5jb25zdCBTV1JDb25maWcgPSAocHJvcHMpPT57XG4gICAgY29uc3QgeyB2YWx1ZSB9ID0gcHJvcHM7XG4gICAgY29uc3QgcGFyZW50Q29uZmlnID0gdXNlQ29udGV4dChTV1JDb25maWdDb250ZXh0KTtcbiAgICBjb25zdCBpc0Z1bmN0aW9uYWxDb25maWcgPSBpc0Z1bmN0aW9uKHZhbHVlKTtcbiAgICBjb25zdCBjb25maWcgPSB1c2VNZW1vKCgpPT5pc0Z1bmN0aW9uYWxDb25maWcgPyB2YWx1ZShwYXJlbnRDb25maWcpIDogdmFsdWUsIFtcbiAgICAgICAgaXNGdW5jdGlvbmFsQ29uZmlnLFxuICAgICAgICBwYXJlbnRDb25maWcsXG4gICAgICAgIHZhbHVlXG4gICAgXSk7XG4gICAgLy8gRXh0ZW5kIHBhcmVudCBjb250ZXh0IHZhbHVlcyBhbmQgbWlkZGxld2FyZS5cbiAgICBjb25zdCBleHRlbmRlZENvbmZpZyA9IHVzZU1lbW8oKCk9PmlzRnVuY3Rpb25hbENvbmZpZyA/IGNvbmZpZyA6IG1lcmdlQ29uZmlncyhwYXJlbnRDb25maWcsIGNvbmZpZyksIFtcbiAgICAgICAgaXNGdW5jdGlvbmFsQ29uZmlnLFxuICAgICAgICBwYXJlbnRDb25maWcsXG4gICAgICAgIGNvbmZpZ1xuICAgIF0pO1xuICAgIC8vIFNob3VsZCBub3QgdXNlIHRoZSBpbmhlcml0ZWQgcHJvdmlkZXIuXG4gICAgY29uc3QgcHJvdmlkZXIgPSBjb25maWcgJiYgY29uZmlnLnByb3ZpZGVyO1xuICAgIC8vIGluaXRpYWxpemUgdGhlIGNhY2hlIG9ubHkgb24gZmlyc3QgYWNjZXNzLlxuICAgIGNvbnN0IGNhY2hlQ29udGV4dFJlZiA9IHVzZVJlZihVTkRFRklORUQpO1xuICAgIGlmIChwcm92aWRlciAmJiAhY2FjaGVDb250ZXh0UmVmLmN1cnJlbnQpIHtcbiAgICAgICAgY2FjaGVDb250ZXh0UmVmLmN1cnJlbnQgPSBpbml0Q2FjaGUocHJvdmlkZXIoZXh0ZW5kZWRDb25maWcuY2FjaGUgfHwgY2FjaGUpLCBjb25maWcpO1xuICAgIH1cbiAgICBjb25zdCBjYWNoZUNvbnRleHQgPSBjYWNoZUNvbnRleHRSZWYuY3VycmVudDtcbiAgICAvLyBPdmVycmlkZSB0aGUgY2FjaGUgaWYgYSBuZXcgcHJvdmlkZXIgaXMgZ2l2ZW4uXG4gICAgaWYgKGNhY2hlQ29udGV4dCkge1xuICAgICAgICBleHRlbmRlZENvbmZpZy5jYWNoZSA9IGNhY2hlQ29udGV4dFswXTtcbiAgICAgICAgZXh0ZW5kZWRDb25maWcubXV0YXRlID0gY2FjaGVDb250ZXh0WzFdO1xuICAgICAgICBleHRlbmRlZENvbmZpZy51bmxvYWQgPSBjYWNoZUNvbnRleHRbNF07XG4gICAgfVxuICAgIC8vIFVuc3Vic2NyaWJlIGV2ZW50cy5cbiAgICB1c2VJc29tb3JwaGljTGF5b3V0RWZmZWN0KCgpPT57XG4gICAgICAgIGlmIChjYWNoZUNvbnRleHQpIHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLWV4cHJlc3Npb25zXG4gICAgICAgICAgICBjYWNoZUNvbnRleHRbMl0gJiYgY2FjaGVDb250ZXh0WzJdKCk7XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVDb250ZXh0WzNdO1xuICAgICAgICB9XG4gICAgfSwgW10pO1xuICAgIHJldHVybiBjcmVhdGVFbGVtZW50KFNXUkNvbmZpZ0NvbnRleHQuUHJvdmlkZXIsIG1lcmdlT2JqZWN0cyhwcm9wcywge1xuICAgICAgICB2YWx1ZTogZXh0ZW5kZWRDb25maWdcbiAgICB9KSk7XG59O1xuXG5leHBvcnQgeyBpc0xlZ2FjeURlbm8gYXMgQSwgcHJlc2V0IGFzIEIsIGV2ZW50cyBhcyBDLCBzbG93Q29ubmVjdGlvbiBhcyBELCBFUlJPUl9SRVZBTElEQVRFX0VWRU5UIGFzIEUsIEZPQ1VTX0VWRU5UIGFzIEYsIHN0YWJsZUhhc2ggYXMgRywgSVNfU0VSVkVSIGFzIEksIE1VVEFURV9FVkVOVCBhcyBNLCBPQkpFQ1QgYXMgTywgUkVDT05ORUNUX0VWRU5UIGFzIFIsIFNXUkNvbmZpZyBhcyBTLCBVTkRFRklORUQgYXMgVSwgU1dSR2xvYmFsU3RhdGUgYXMgYSwgaXNQcm9taXNlTGlrZSBhcyBiLCBjcmVhdGVDYWNoZUhlbHBlciBhcyBjLCBkZWZhdWx0Q29uZmlnIGFzIGQsIGlzRnVuY3Rpb24gYXMgZSwgaW50ZXJuYWxNdXRhdGUgYXMgZiwgZ2V0VGltZXN0YW1wIGFzIGcsIFVOTE9BRF9FVkVOVCBhcyBoLCBpc1VuZGVmaW5lZCBhcyBpLCBJU19SRUFDVF9MRUdBQ1kgYXMgaiwgbXV0YXRlIGFzIGssIHVubG9hZCBhcyBsLCBtZXJnZU9iamVjdHMgYXMgbSwgbm9vcCBhcyBuLCBjYWNoZSBhcyBvLCBpc1dpbmRvd0RlZmluZWQgYXMgcCwgU1dSQ29uZmlnQ29udGV4dCBhcyBxLCByQUYgYXMgciwgc2VyaWFsaXplIGFzIHMsIG1lcmdlQ29uZmlncyBhcyB0LCB1c2VJc29tb3JwaGljTGF5b3V0RWZmZWN0IGFzIHUsIGNvbXBhcmUgYXMgdiwgZGVmYXVsdENvbmZpZ09wdGlvbnMgYXMgdywgaGFzUmVxdWVzdEFuaW1hdGlvbkZyYW1lIGFzIHgsIGluaXRDYWNoZSBhcyB5LCBpc0RvY3VtZW50RGVmaW5lZCBhcyB6IH07XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDcUg7QUFDaEY7O0FBRXJDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLFlBQVk7QUFDZDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSx5QkFBeUIsd0NBQVc7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOENBQThDLGdDQUFTLEdBQUcsc0NBQWU7QUFDekU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUVBQW1FLEtBQUs7QUFDeEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsb0JBQW9CO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLE1BQU0sYUFBYTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckIsa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYixTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCLHlCQUF5QjtBQUN4RDtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixtQ0FBTTtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLHVDQUF1QztBQUN2RCxnQkFBZ0IsdUNBQXVDO0FBQ3ZEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSx5QkFBeUIsd0NBQWEsR0FBRztBQUN6QztBQUNBLFlBQVksUUFBUTtBQUNwQix5QkFBeUIscUNBQVU7QUFDbkM7QUFDQSxtQkFBbUIsa0NBQU87QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQixrQ0FBTztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QixpQ0FBTTtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLFdBQVcsd0NBQWE7QUFDeEI7QUFDQSxLQUFLO0FBQ0w7O0FBRXl1QiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/swr/dist/config-context-ext53wcz.mjs\n\n}");
17
+
18
+ },
19
+
20
+ }]);