@eui/core 18.0.0-rc.4 → 18.0.0-rc.40
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/docs/classes/CssUtils.html +59 -2
- package/docs/dependencies.html +3 -3
- package/docs/index.html +1 -1
- package/docs/injectables/CoreAppEffects.html +24 -5
- package/docs/injectables/EuiAppShellService.html +13 -1
- package/docs/injectables/EuiDynamicMenuService.html +2 -2
- package/docs/injectables/EuiThemeService.html +297 -96
- package/docs/injectables/LocalStorageService.html +12 -1
- package/docs/injectables/StoreService.html +12 -1
- package/docs/interfaces/IEuiTheme.html +387 -0
- package/docs/interfaces/ThemeState.html +309 -0
- package/docs/js/menu-wc.js +6 -0
- package/docs/js/menu-wc_es5.js +1 -1
- package/docs/js/search/search_index.js +2 -2
- package/docs/miscellaneous/enumerations.html +66 -6
- package/docs/miscellaneous/functions.html +284 -0
- package/docs/miscellaneous/variables.html +119 -31
- package/esm2022/index.mjs +3 -1
- package/esm2022/lib/helpers/css-utils.mjs +74 -60
- package/esm2022/lib/helpers/dom-helpers.mjs +3 -9
- package/esm2022/lib/services/dynamic-menu/dynamic-menu.service.mjs +2 -5
- package/esm2022/lib/services/eui-app-shell.service.mjs +20 -16
- package/esm2022/lib/services/eui-theme.service.mjs +186 -26
- package/esm2022/lib/services/locale/locale.service.mjs +2 -1
- package/esm2022/lib/services/storage/local-storage.service.mjs +36 -25
- package/esm2022/lib/services/store/effects/app.effects.mjs +19 -7
- package/esm2022/lib/services/store/reducers/meta.reducers.mjs +46 -32
- package/esm2022/lib/services/store/store.service.mjs +17 -9
- package/esm2022/lib/services/store/store.service.mock.mjs +3 -2
- package/fesm2022/eui-core.mjs +403 -194
- package/fesm2022/eui-core.mjs.map +1 -1
- package/index.d.ts +1 -0
- package/index.d.ts.map +1 -1
- package/lib/helpers/css-utils.d.ts +24 -18
- package/lib/helpers/css-utils.d.ts.map +1 -1
- package/lib/helpers/dom-helpers.d.ts +1 -1
- package/lib/helpers/dom-helpers.d.ts.map +1 -1
- package/lib/services/dynamic-menu/dynamic-menu.service.d.ts +5 -5
- package/lib/services/dynamic-menu/dynamic-menu.service.d.ts.map +1 -1
- package/lib/services/eui-app-shell.service.d.ts +3 -2
- package/lib/services/eui-app-shell.service.d.ts.map +1 -1
- package/lib/services/eui-theme.service.d.ts +41 -15
- package/lib/services/eui-theme.service.d.ts.map +1 -1
- package/lib/services/locale/locale.service.d.ts +1 -0
- package/lib/services/locale/locale.service.d.ts.map +1 -1
- package/lib/services/storage/local-storage.service.d.ts +3 -2
- package/lib/services/storage/local-storage.service.d.ts.map +1 -1
- package/lib/services/store/effects/app.effects.d.ts +2 -1
- package/lib/services/store/effects/app.effects.d.ts.map +1 -1
- package/lib/services/store/reducers/meta.reducers.d.ts +11 -1
- package/lib/services/store/reducers/meta.reducers.d.ts.map +1 -1
- package/lib/services/store/store.service.d.ts +3 -2
- package/lib/services/store/store.service.d.ts.map +1 -1
- package/lib/services/store/store.service.mock.d.ts +1 -0
- package/lib/services/store/store.service.mock.d.ts.map +1 -1
- package/package.json +4 -4
|
@@ -21,6 +21,7 @@ export const LOCALE_ID_MAPPER = new InjectionToken('localeIdMapper');
|
|
|
21
21
|
* - Updating the Angular LOCALE_ID token.
|
|
22
22
|
*
|
|
23
23
|
* @template T - Extends LocaleState, representing the state structure for locales.
|
|
24
|
+
* @template L - The type of the locale data.
|
|
24
25
|
* @extends EuiService<T | LocaleState>
|
|
25
26
|
*/
|
|
26
27
|
export class LocaleService extends EuiService {
|
|
@@ -233,4 +234,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImpor
|
|
|
233
234
|
}] }, { type: i3.LogService, decorators: [{
|
|
234
235
|
type: Optional
|
|
235
236
|
}] }] });
|
|
236
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2xvY2FsZS9sb2NhbGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFhLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUMsT0FBTyxFQUNILFVBQVUsRUFFVixjQUFjLEVBQ2QsOEJBQThCLEdBS2pDLE1BQU0sV0FBVyxDQUFDO0FBQ25CLE9BQU8sRUFBYyxFQUFFLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUYsT0FBTyxFQUFnQix1QkFBdUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUdqRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDOzs7OztBQUc3QyxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLGNBQWMsQ0FBZSxnQkFBZ0IsQ0FBQyxDQUFDO0FBRW5GOzs7Ozs7Ozs7OztHQVdHO0FBSUgsTUFBTSxPQUFPLGFBQW1ELFNBQVEsVUFBMkI7SUFLL0YsWUFDYyxLQUFtQixFQUNVLGdCQUE4QixFQUN4QyxTQUFpQixFQUNBLFlBQTBCLEVBQ3BELElBQWlCLEVBQ2pCLEdBQWU7UUFFbkMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLFdBQVcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7UUFQNUIsVUFBSyxHQUFMLEtBQUssQ0FBYztRQUNVLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBYztRQUN4QyxjQUFTLEdBQVQsU0FBUyxDQUFRO1FBQ0EsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDcEQsU0FBSSxHQUFKLElBQUksQ0FBYTtRQUNqQixRQUFHLEdBQUgsR0FBRyxDQUFZO1FBVC9CLGdCQUFXLEdBQWtCLElBQUksT0FBTyxFQUFFLENBQUM7UUFZL0MsSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNOLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3RELENBQUM7UUFFRCxJQUFJLENBQUMsTUFBTSxHQUFHLDhCQUE4QixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3BFLDJFQUEyRTtRQUMzRSxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFDO1FBQ3BDLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBb0JEOzs7Ozs7O09BT0c7SUFDSCxRQUFRLENBQUksVUFBdUM7UUFDL0MsSUFBSSxRQUFRLEdBQThCLGNBQWMsQ0FBQztRQUN6RCxtSEFBbUg7UUFDbkgsOERBQThEO1FBQzlELE1BQU0sbUJBQW1CLEdBQUcsQ0FBSSxHQUFNLEVBQUUsR0FBVyxFQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUVoSCxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2IsUUFBUSxPQUFPLFVBQVUsRUFBRSxDQUFDO2dCQUN4QixLQUFLLFVBQVU7b0JBQ1gsUUFBUSxHQUFHLGNBQWMsQ0FBQyxjQUFjLEVBQUUsVUFBVSxDQUFDLENBQUM7b0JBQ3RELE1BQU07Z0JBQ1YsS0FBSyxRQUFRO29CQUNULFFBQVEsR0FBRyxjQUFjLENBQUMsY0FBYyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztvQkFDN0YsTUFBTTtZQUNkLENBQUM7UUFDTCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQ25DLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQzNCLGdFQUFnRTtRQUNoRSxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUM3RixDQUFDO0lBQ04sQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILElBQUksQ0FBQyxLQUErQjtRQUNoQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFFdkIsMENBQTBDO1FBQzFDLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxxQ0FBcUMsRUFBRSxDQUFDO1FBQ2pELENBQUM7UUFFRCwwREFBMEQ7UUFDMUQsTUFBTSxnQkFBZ0IsR0FBRyxLQUFLLEVBQUUsU0FBUyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsU0FBUyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3hILE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLElBQUksQ0FDekMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFDM0IsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxJQUFJLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQ25FLENBQUM7SUFDTixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsV0FBVyxDQUFDLEtBQWtCO1FBQzFCLElBQUksQ0FBQztZQUNELE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksdUJBQXVCLENBQUMsRUFBRSxHQUFHLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDbkUsZ0RBQWdEO1lBQ2hELElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO2dCQUNqQyxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztZQUN4QixDQUFDO1FBQ0wsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDVCxNQUFNLE9BQU8sR0FBRyxlQUFlLEtBQUssQ0FBQyxFQUFFO3lDQUNWLEtBQUssQ0FBQyxFQUFFLFVBQVUsQ0FBQztZQUNoRCxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDWCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDakMsQ0FBQztZQUNELE1BQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDN0IsQ0FBQztJQUNMLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsU0FBUyxDQUFDLEVBQVU7UUFDaEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsSUFBSSxjQUFjO1FBQ2QsT0FBTyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDNUQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxJQUFJLGFBQWE7UUFDYixPQUFPLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNILDZEQUE2RDtJQUNyRCxVQUFVLENBQUMsTUFBeUI7UUFDeEMsT0FBTyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLHFDQUFxQztRQUN6QyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNaLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYTtpQkFDbEIsSUFBSSxDQUNELFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO1lBQzNCLHlCQUF5QjtZQUN6QixNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssRUFBRSxVQUFVLEtBQUssSUFBSSxJQUFJLEtBQUssRUFBRSxVQUFVLEtBQUssU0FBUyxDQUFDO1lBQ2hGLHdHQUF3RztZQUN4RyxzRkFBc0Y7WUFDdEYsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxLQUFLLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDdEcsMkRBQTJEO1lBQzNELFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQ2hCLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJO1lBQ1Ysa0ZBQWtGO1lBQ2xGLFNBQVMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO2dCQUNuQiwyQ0FBMkM7Z0JBQzNDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUM7b0JBQ3ZCLE9BQU8sVUFBVSxDQUFDLGdGQUFnRixDQUFDLENBQUM7Z0JBQ3hHLENBQUM7Z0JBQ0QsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztZQUN0RCxDQUFDLENBQUMsRUFDRixVQUFVLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDakIsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7b0JBQ1gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzdCLENBQUM7Z0JBQ0QsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQzFDLE1BQU0sQ0FBQyxDQUFDLENBQW1CLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFDMUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDLEVBQy9DLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO29CQUNiLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO3dCQUNYLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLDREQUE0RCxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBQ25HLENBQUM7b0JBQ0QsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2pCLENBQUMsQ0FBQyxDQUNMLENBQUM7WUFDTixDQUFDLENBQUMsQ0FDTCxDQUNKO1lBQ0QsK0RBQStEO1lBQy9ELFNBQVMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQ2IsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FDaEIsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUNQLEdBQUcsQ0FBQyxDQUFDLEtBQWtCLEVBQUUsRUFBRTtnQkFDdkIsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDL0QsT0FBTyxFQUFFLEdBQUcsS0FBSyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ2hGLENBQUMsQ0FBQyxDQUNMLENBQ0osQ0FDSjtpQkFDQSxTQUFTLENBQUMsQ0FBQyxLQUFrQixFQUFFLEVBQUU7Z0JBQzlCLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDNUIsQ0FBQyxDQUFDLENBQUM7UUFDWCxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ssaUJBQWlCO1FBQ3JCLE1BQU0sY0FBYyxHQUFHLFNBQVMsQ0FBQyxTQUFTLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQztRQUV0RyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDbEIsT0FBTyxTQUFTLENBQUM7UUFDckIsQ0FBQztRQUVELE9BQU8sY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDekQsQ0FBQzs4R0FsUFEsYUFBYSw4Q0FPVixtQkFBbUIsYUFDbkIsU0FBUyxhQUNHLGdCQUFnQjtrSEFUL0IsYUFBYSxjQUZWLE1BQU07OzJGQUVULGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCOzswQkFRUSxNQUFNOzJCQUFDLG1CQUFtQjs7MEJBQzFCLE1BQU07MkJBQUMsU0FBUzs7MEJBQ2hCLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsZ0JBQWdCOzswQkFDbkMsUUFBUTs7MEJBQ1IsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4sIExPQ0FMRV9JRCwgT25EZXN0cm95LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZ2V0TG9jYWxlSWQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBFdWlTZXJ2aWNlLFxuICAgIEV1aVNlcnZpY2VTdGF0dXMsXG4gICAgZ2V0TG9jYWxlU3RhdGUsXG4gICAgZ2V0TG9jYWxlU2VydmljZUNvbmZpZ0Zyb21CYXNlLFxuICAgIEdsb2JhbENvbmZpZyxcbiAgICBMb2NhbGVTZXJ2aWNlQ29uZmlnLFxuICAgIExvY2FsZVN0YXRlLFxuICAgIExvZ2dlcixcbn0gZnJvbSAnQGV1aS9iYXNlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCBTdWJqZWN0LCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmaWx0ZXIsIG1hcCwgc3dpdGNoTWFwLCB0YWtlLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFN0b3JlU2VydmljZSwgVXBkYXRlTG9jYWxlU3RhdGVBY3Rpb24gfSBmcm9tICcuLi9zdG9yZSc7XG5pbXBvcnQgeyBMb2dTZXJ2aWNlIH0gZnJvbSAnLi4vbG9nJztcbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vaTE4bic7XG5pbXBvcnQgeyBHTE9CQUxfQ09ORklHX1RPS0VOIH0gZnJvbSAnLi4vY29uZmlnL3Rva2Vucyc7XG5pbXBvcnQgeyBjcmVhdGVTZWxlY3RvciB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcblxuZXhwb3J0IHR5cGUgTG9jYWxlTWFwcGVyID0gKGxvY2FsZTogc3RyaW5nKSA9PiBzdHJpbmc7XG5leHBvcnQgY29uc3QgTE9DQUxFX0lEX01BUFBFUiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxMb2NhbGVNYXBwZXI+KCdsb2NhbGVJZE1hcHBlcicpO1xuXG4vKipcbiAqIExvY2FsZVNlcnZpY2UgaXMgcmVzcG9uc2libGUgZm9yIG1hbmFnaW5nIGxvY2FsZSBzdGF0ZXMgYW5kIGNvbmZpZ3VyYXRpb25zIGluIGFuIEFuZ3VsYXIgYXBwbGljYXRpb24uXG4gKiBJdCB1dGlsaXplcyB0aGUgQ0xEUiBsaWJyYXJ5IHRvIGxvYWQgYW5kIGNvbnN0cnVjdCB0aGUgbG9jYWxlIGZvciBlYWNoIHJlZ2lvbi4gVGhpcyBzZXJ2aWNlIGFsbG93c1xuICogZm9yIGR5bmFtaWMgbG9hZGluZyBvZiBsb2NhbGVzIHVwb24gcmVxdWVzdCBhbmQgdXBkYXRlcyB0aGUgc3RhdGUgb2YgdGhlIEVVSSBhcHAgYWNjb3JkaW5nbHkuXG4gKlxuICogS2V5IGZ1bmN0aW9uYWxpdGllcyBpbmNsdWRlOlxuICogIC0gQmluZGluZyB0byBhIHRyYW5zbGF0aW9uIHNlcnZpY2UgZm9yIGxvY2FsZSBjaGFuZ2VzLlxuICogIC0gVXBkYXRpbmcgdGhlIEFuZ3VsYXIgTE9DQUxFX0lEIHRva2VuLlxuICpcbiAqIEB0ZW1wbGF0ZSBUIC0gRXh0ZW5kcyBMb2NhbGVTdGF0ZSwgcmVwcmVzZW50aW5nIHRoZSBzdGF0ZSBzdHJ1Y3R1cmUgZm9yIGxvY2FsZXMuXG4gKiBAZXh0ZW5kcyBFdWlTZXJ2aWNlPFQgfCBMb2NhbGVTdGF0ZT5cbiAqL1xuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgTG9jYWxlU2VydmljZTxUIGV4dGVuZHMgTG9jYWxlU3RhdGUgPSBMb2NhbGVTdGF0ZT4gZXh0ZW5kcyBFdWlTZXJ2aWNlPFQgfCBMb2NhbGVTdGF0ZT4gaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyOiBMb2dnZXI7XG4gICAgcHJpdmF0ZSBzdWJOb3RpZmllcjogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG4gICAgcHJvdGVjdGVkIGNvbmZpZzogTG9jYWxlU2VydmljZUNvbmZpZztcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcm90ZWN0ZWQgc3RvcmU6IFN0b3JlU2VydmljZSxcbiAgICAgICAgQEluamVjdChHTE9CQUxfQ09ORklHX1RPS0VOKSBwcm90ZWN0ZWQgYmFzZUdsb2JhbENvbmZpZzogR2xvYmFsQ29uZmlnLFxuICAgICAgICBASW5qZWN0KExPQ0FMRV9JRCkgcHJvdGVjdGVkIGxvY2FsZV9pZDogc3RyaW5nLFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KExPQ0FMRV9JRF9NQVBQRVIpIHByaXZhdGUgbG9jYWxlTWFwcGVyOiBMb2NhbGVNYXBwZXIsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgaTE4bjogSTE4blNlcnZpY2UsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgbG9nOiBMb2dTZXJ2aWNlLFxuICAgICkge1xuICAgICAgICBzdXBlcih7IGlkOiBnZXRMb2NhbGVJZChsb2NhbGVfaWQpIH0pO1xuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgICB0aGlzLmxvZ2dlciA9IGxvZy5nZXRMb2dnZXIoJ2NvcmUuTG9jYWxlU2VydmljZScpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jb25maWcgPSBnZXRMb2NhbGVTZXJ2aWNlQ29uZmlnRnJvbUJhc2UodGhpcy5iYXNlR2xvYmFsQ29uZmlnKTtcbiAgICAgICAgLy8gaW4gY2FzZSBubyBsb2NhbGVNYXBwZXIgcHJvdmlkZWQsIHNldCB0aGUgYW5ndWxhciBnZXRMb2NhbGVJZCBhcyBkZWZhdWx0XG4gICAgICAgIGlmICghdGhpcy5sb2NhbGVNYXBwZXIpIHtcbiAgICAgICAgICAgIHRoaXMubG9jYWxlTWFwcGVyID0gZ2V0TG9jYWxlSWQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdWJOb3RpZmllci5uZXh0KHZvaWQgMCk7XG4gICAgICAgIHRoaXMuc3ViTm90aWZpZXIuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXRyaWV2ZXMgdGhlIHN0YXRlIG9mIHRoZSBsb2NhbGUgc2VydmljZS4gVGhpcyBtZXRob2QgaXMgb3ZlcmxvYWRlZCB0byBhbGxvdyBkaWZmZXJlbnQgd2F5cyBvZiBhY2Nlc3NpbmcgdGhlIHN0YXRlLlxuICAgICAqXG4gICAgICogQHRlbXBsYXRlIEsgLSBUaGUgdHlwZSBvZiB0aGUgdmFsdWUgdG8gYmUgcmV0dXJuZWQuIERlZmF1bHRzIHRvIHRoZSB0eXBlIG9mIHRoZSBsb2NhbGUgc3RhdGUgKFQpLlxuICAgICAqXG4gICAgICogQHBhcmFtIHsoKHN0YXRlOiBUKSA9PiBLKX0gW21hcEZuXSAtIEEgZnVuY3Rpb24gdGhhdCBtYXBzIHRoZSBzdGF0ZSB0byBhIHNwZWNpZmljIGZvcm0uXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRha2VzIHRoZSBjdXJyZW50IHN0YXRlIGFzIGFuIGFyZ3VtZW50IGFuZCByZXR1cm5zIHRoZSB0cmFuc2Zvcm1lZCBzdGF0ZS5cbiAgICAgKiBAcmV0dXJucyB7T2JzZXJ2YWJsZTxLPn0gLSBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIHRyYW5zZm9ybWVkIHN0YXRlLlxuICAgICAqL1xuICAgIGdldFN0YXRlPEsgPSBUPihtYXBGbj86IChzdGF0ZTogVCkgPT4gSyk6IE9ic2VydmFibGU8Sz47XG4gICAgLyoqXG4gICAgICogQHRlbXBsYXRlIGEgLSBBIGtleSB0aGF0IGV4dGVuZHMgdGhlIGtleXMgb2YgdGhlIHN0YXRlIHR5cGUgVC5cbiAgICAgKiBAcGFyYW0ge2F9IFtrZXldIC0gQSBzcGVjaWZpYyBrZXkgdG8gYWNjZXNzIGEgcGFydCBvZiB0aGUgc3RhdGUuXG4gICAgICogICAgICAgICAgICAgICAgICAgIFRoZSBrZXkgc2hvdWxkIGJlIGEgcHJvcGVydHkgbmFtZSBvZiB0aGUgc3RhdGUgb2JqZWN0LlxuICAgICAqIEByZXR1cm5zIHtPYnNlcnZhYmxlPFRbYV0+fSAtIEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgdmFsdWUgb2YgdGhlIHNwZWNpZmllZCBrZXkgaW4gdGhlIHN0YXRlLlxuICAgICAqIEBwYXJhbSBrZXlcbiAgICAgKi9cbiAgICBnZXRTdGF0ZTxhIGV4dGVuZHMga2V5b2YgVD4oa2V5PzogYSk6IE9ic2VydmFibGU8VFthXT47XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHsoKHN0YXRlOiBUKSA9PiBLKSB8IHN0cmluZ30gW2tleU9yTWFwRm5dIC0gRWl0aGVyIGEgbWFwcGluZyBmdW5jdGlvbiBvciBhIHN0cmluZyBrZXkuXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgYSBzdHJpbmcgaXMgcHJvdmlkZWQsIGl0IHVzZXMgZG90IG5vdGF0aW9uIHRvIGFjY2VzcyBuZXN0ZWQgcHJvcGVydGllcy5cbiAgICAgKiBAcmV0dXJucyB7T2JzZXJ2YWJsZTxLPn0gLSBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIHNlbGVjdGVkIG9yIHRyYW5zZm9ybWVkIHN0YXRlLlxuICAgICAqXG4gICAgICogSWYgbm8gcGFyYW1ldGVyIGlzIHByb3ZpZGVkLCB0aGUgbWV0aG9kIHJldHVybnMgdGhlIGVudGlyZSBzdGF0ZS5cbiAgICAgKiBAcGFyYW0ga2V5T3JNYXBGblxuICAgICAqL1xuICAgIGdldFN0YXRlPEs+KGtleU9yTWFwRm4/OiAoKHN0YXRlOiBUKSA9PiBLKSB8IHN0cmluZyk6IE9ic2VydmFibGU8Sz4ge1xuICAgICAgICBsZXQgc2VsZWN0b3I6IChzOiBUKSA9PiBLIHwgTG9jYWxlU3RhdGUgPSBnZXRMb2NhbGVTdGF0ZTtcbiAgICAgICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICBjb25zdCBkb3ROb3RhdGlvblRvT2JqZWN0ID0gPE8+KG9iajogTywga2V5OiBzdHJpbmcpOiBhbnkgPT4ga2V5LnNwbGl0KCcuJykucmVkdWNlKChzbGljZSwgaSkgPT4gc2xpY2VbaV0sIG9iaik7XG5cbiAgICAgICAgaWYgKGtleU9yTWFwRm4pIHtcbiAgICAgICAgICAgIHN3aXRjaCAodHlwZW9mIGtleU9yTWFwRm4pIHtcbiAgICAgICAgICAgICAgICBjYXNlICdmdW5jdGlvbic6XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yID0gY3JlYXRlU2VsZWN0b3IoZ2V0TG9jYWxlU3RhdGUsIGtleU9yTWFwRm4pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RvciA9IGNyZWF0ZVNlbGVjdG9yKGdldExvY2FsZVN0YXRlLCAoc3RhdGUpID0+IGRvdE5vdGF0aW9uVG9PYmplY3Qoc3RhdGUsIGtleU9yTWFwRm4pKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuc3RvcmUuc2VsZWN0KHNlbGVjdG9yKS5waXBlKFxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuc3ViTm90aWZpZXIpLFxuICAgICAgICAgICAgLy8gaW4gY2FzZSBzZXJ2aWNlIGRpZG4ndCBpbml0IGZhbGxiYWNrIHRvIExPQ0FMRV9JRCB0b2tlbiB2YWx1ZVxuICAgICAgICAgICAgbWFwKChzdGF0ZSkgPT4gKHN0YXRlID8gc3RhdGUgOiB0aGlzLnN0YXRlSW5zdGFuY2UgPyB0aGlzLnN0YXRlSW5zdGFuY2UgOiB0aGlzLmxvY2FsZV9pZCkpLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEluaXRpYWxpemVzIHRoZSBMb2NhbGVTZXJ2aWNlIHdpdGggbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zIGFuZCBzdGF0ZS5cbiAgICAgKiBCaW5kcyBsYW5ndWFnZSBjaGFuZ2VzIHRvIHRoZSBzdGF0ZSBhbmQgZHluYW1pY2FsbHkgbG9hZHMgdGhlIGFwcHJvcHJpYXRlIGxvY2FsZXMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge0xvY2FsZVN0YXRlIHwgdW5kZWZpbmVkfSBbc3RhdGVdIC0gT3B0aW9uYWwgaW5pdGlhbCBzdGF0ZSBmb3IgdGhlIGxvY2FsZSBzZXJ2aWNlLlxuICAgICAqIEByZXR1cm5zIHtPYnNlcnZhYmxlPEV1aVNlcnZpY2VTdGF0dXM+fSAtIE9ic2VydmFibGUgZW1pdHRpbmcgdGhlIHN0YXR1cyBvZiB0aGUgaW5pdGlhbGl6YXRpb24uXG4gICAgICovXG4gICAgaW5pdChzdGF0ZT86IExvY2FsZVN0YXRlIHwgdW5kZWZpbmVkKTogT2JzZXJ2YWJsZTxFdWlTZXJ2aWNlU3RhdHVzPiB7XG4gICAgICAgIHN1cGVyLmluaXRFdWlTZXJ2aWNlKCk7XG5cbiAgICAgICAgLy8gYmluZCBsYW5ndWFnZSBjaGFuZ2VzIHRvIGxvY2FsZSBjaGFuZ2VzXG4gICAgICAgIGlmICh0aGlzLmNvbmZpZz8uYmluZFdpdGhUcmFuc2xhdGUpIHtcbiAgICAgICAgICAgIHRoaXMuYmluZFRyYW5zbGF0ZVNlcnZpY2VMYW5nQ2hhbmdlVG9TdGF0ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gZHluYW1pY2FsbHkgbG9hZCBsb2NhbGUgYmFzZWQgb24gcHJvdmlkZWQgY29uZmlndXJhdGlvblxuICAgICAgICBjb25zdCBhdmFpbGFibGVMb2NhbGVzID0gc3RhdGU/LmF2YWlsYWJsZSB8fCB0aGlzLmNvbmZpZz8uYXZhaWxhYmxlIHx8IHRoaXMuZ2V0QnJvd3NlckxvY2FsZXMoKSB8fCBbdGhpcy5jdXJyZW50TG9jYWxlXTtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZExvY2FsZShhdmFpbGFibGVMb2NhbGVzKS5waXBlKFxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuc3ViTm90aWZpZXIpLFxuICAgICAgICAgICAgdGFwKCgpID0+IHRoaXMudXBkYXRlU3RhdGUoc3RhdGUgfHwgeyBpZDogdGhpcy5jdXJyZW50TG9jYWxlIH0pKSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVcGRhdGVzIHRoZSBsb2NhbGUgc3RhdGUgd2l0aGluIHRoZSBhcHBsaWNhdGlvbi4gSWYgdGhlIG5ldyBzdGF0ZSBpcyBub3QgYXZhaWxhYmxlLFxuICAgICAqIGl0IHRocm93cyBhbiBlcnJvci4gQWxzbyB1cGRhdGVzIHRoZSBnbG9iYWwgTE9DQUxFX0lEIHRva2VuIGlmIGNvbmZpZ3VyZWQgdG8gZG8gc28uXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge0xvY2FsZVN0YXRlfSBzdGF0ZSAtIFRoZSBuZXcgc3RhdGUgdG8gYmUgc2V0IGZvciB0aGUgbG9jYWxlLlxuICAgICAqIEB0aHJvd3MgV2lsbCB0aHJvdyBhbiBlcnJvciBpZiB0aGUgbG9jYWxlIGZvciB0aGUgZ2l2ZW4gc3RhdGUgaWQgaXMgbm90IGF2YWlsYWJsZS5cbiAgICAgKi9cbiAgICB1cGRhdGVTdGF0ZShzdGF0ZTogTG9jYWxlU3RhdGUpOiB2b2lkIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGlkID0gdGhpcy5sb2NhbGVNYXBwZXIoc3RhdGUuaWQpO1xuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgVXBkYXRlTG9jYWxlU3RhdGVBY3Rpb24oeyAuLi5zdGF0ZSwgaWQgfSkpO1xuICAgICAgICAgICAgLy8gdXBkYXRlIGdsb2JhbCBUT0tFTiBJRCBiYXNlZCBvbiBjb25maWd1cmF0aW9uXG4gICAgICAgICAgICBpZiAodGhpcy5jb25maWcuYWZmZWN0R2xvYmFsTG9jYWxlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2NhbGVfaWQgPSBpZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IGBMb2NhbGUgZm9yICcke3N0YXRlLmlkfScgaXMgbm90IGF2YWlsYWJsZS5cbiAgICAgICAgICAgICAgICAgUGxlYXNlIHVzZSBhZGRMb2NhbGUoJyR7c3RhdGUuaWR9JykgZmlyc3RgO1xuICAgICAgICAgICAgaWYgKHRoaXMubG9nKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuaW5mbyhtZXNzYWdlLCBlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIGV1aSBkb2VzIG5vdCBvZmZlciBhIHdheSB0byBkeW5hbWljYWxseSBhZGQgbG9jYWxlIGl0IHdpbGwgYmUgcmVtb3ZlZCBpbiBmdXR1cmUgdmVyc2lvbnNcbiAgICAgKlxuICAgICAqIEBwYXJhbSBpZFxuICAgICAqL1xuICAgIGFkZExvY2FsZShpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxFdWlTZXJ2aWNlU3RhdHVzPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvYWRMb2NhbGUoaWQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHJpZXZlcyB0aGUgcHJldmlvdXMgbG9jYWxlIHVzZWQgaW4gdGhlIGFwcGxpY2F0aW9uLlxuICAgICAqXG4gICAgICogQHJldHVybnMge3N0cmluZ30gLSBUaGUgcHJldmlvdXMgbG9jYWxlIGlkZW50aWZpZXIuXG4gICAgICovXG4gICAgZ2V0IHByZXZpb3VzTG9jYWxlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnByZXZTdGF0ZUluc3RhbmNlPy5pZCB8fCB0aGlzLmN1cnJlbnRMb2NhbGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0cmlldmVzIHRoZSBjdXJyZW50IGxvY2FsZSB1c2VkIGluIHRoZSBhcHBsaWNhdGlvbi5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IC0gVGhlIGN1cnJlbnQgbG9jYWxlIGlkZW50aWZpZXIuXG4gICAgICovXG4gICAgZ2V0IGN1cnJlbnRMb2NhbGUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGVJbnN0YW5jZT8uaWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgZXVpIGRvZXMgbm90IG9mZmVyIGEgd2F5IHRvIGR5bmFtaWNhbGx5IGFkZCBsb2NhbGUgaXQgd2lsbCBiZSByZW1vdmVkIGluIGZ1dHVyZSB2ZXJzaW9uc1xuICAgICAqXG4gICAgICogRHluYW1pY2FsbHkgbG9hZHMgYW5kIHJlZ2lzdGVycyBsb2NhbGUgZGF0YSBiYXNlZCBvbiB0aGUgZ2l2ZW4gbG9jYWxlIGlkZW50aWZpZXJzLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmdbXSB8IHN0cmluZ30gbG9jYWxlIC0gQW4gYXJyYXkgb2YgbG9jYWxlIGlkZW50aWZpZXJzIG9yIGEgc2luZ2xlIGxvY2FsZSBpZGVudGlmaWVyLlxuICAgICAqIEByZXR1cm5zIHtPYnNlcnZhYmxlPEV1aVNlcnZpY2VTdGF0dXM+fSAtIE9ic2VydmFibGUgZW1pdHRpbmcgdGhlIHN0YXR1cyBvZiB0aGUgbG9hZGluZyBwcm9jZXNzLlxuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgIHByaXZhdGUgbG9hZExvY2FsZShsb2NhbGU6IHN0cmluZ1tdIHwgc3RyaW5nKTogT2JzZXJ2YWJsZTxFdWlTZXJ2aWNlU3RhdHVzPiB7XG4gICAgICAgIHJldHVybiBvZih7IHN1Y2Nlc3M6IHRydWUgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTGlzdGVucyBmb3IgbGFuZ3VhZ2UgY2hhbmdlcyBhbmQgZHluYW1pY2FsbHkgc2V0cyB0aGUgbG9jYWxlIGFjY29yZGluZ2x5LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICBwcml2YXRlIGJpbmRUcmFuc2xhdGVTZXJ2aWNlTGFuZ0NoYW5nZVRvU3RhdGUoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmkxOG4pIHtcbiAgICAgICAgICAgIHRoaXMuaTE4bi5vblN0YXRlQ2hhbmdlXG4gICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLnN1Yk5vdGlmaWVyKSxcbiAgICAgICAgICAgICAgICAgICAgLy8gZmlsdGVyIG91dCBudWxsIHZhbHVlc1xuICAgICAgICAgICAgICAgICAgICBmaWx0ZXIoKHN0YXRlKSA9PiBzdGF0ZT8uYWN0aXZlTGFuZyAhPT0gbnVsbCAmJiBzdGF0ZT8uYWN0aXZlTGFuZyAhPT0gdW5kZWZpbmVkKSxcbiAgICAgICAgICAgICAgICAgICAgLy8gQkVXQVJFOiBmaWx0ZXIgaXMgYmFzZWQgb24gY29udmVudGlvbiB0aGF0IGxvY2FsZSBpZCBzbGljZWQoMikgd2lsbCBtYXRjaCBhY3RpdmVMYW5nIGUuZy4gZW4tVVMgPT4gZW5cbiAgICAgICAgICAgICAgICAgICAgLy8gQWxzbywgaWYgYWN0aXZlTGFuZyBpcyAnZW4nIGFuZCBsb2NhbGUgaXMgJ2VuLUdCJyBpdCB3aWxsIG5vdCB0cmlnZ2VyIGxvY2FsZSBjaGFuZ2VcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyKChzdGF0ZSkgPT4gc3RhdGUuYWN0aXZlTGFuZy50b0xvd2VyQ2FzZSgpICE9PSB0aGlzLnN0YXRlSW5zdGFuY2U/LmlkLnNsaWNlKDAsIDIpLnRvTG93ZXJDYXNlKCkpLFxuICAgICAgICAgICAgICAgICAgICAvLyB0byBjaGVjayBpZiByZWdpc3RyYXRpb24gb2YgbG9jYWxlIG90aGVyd2lzZSByZWdpc3RlciBpdFxuICAgICAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKHZhbHVlKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgb2YodmFsdWUpLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ2V0TG9jYWxlSWQgbWF5IHRocm93IEVycm9yKGBNaXNzaW5nIGxvY2FsZSBkYXRhIGZvciB0aGUgbG9jYWxlIFwiJHtsb2NhbGV9XCIuYCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoTWFwKChpMThzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjaGVjayBpZiBhY3RpdmVMYW5nIGlzIG51bGwgb3IgdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaTE4c3RhdGUuYWN0aXZlTGFuZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoJ0hhcyBpMThuU2VydmljZSBpbml0aWFsaXplZD8gSWYgbm90IG1ha2Ugc3VyZSBpMThuU2VydmljZS5pbml0KCkuc3Vic2NyaWJlKC4uKScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvZih0aGlzLmxvY2FsZU1hcHBlcihpMThzdGF0ZS5hY3RpdmVMYW5nKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubG9nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9hZExvY2FsZSh2YWx1ZT8uYWN0aXZlTGFuZykucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcigoczogRXVpU2VydmljZVN0YXR1cykgPT4gcy5zdWNjZXNzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcCgoKSA9PiB0aGlzLmxvY2FsZU1hcHBlcih2YWx1ZT8uYWN0aXZlTGFuZykpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmxvZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnU29tZXRoaW5nIHdlbnQgdGVycmlibHkgcmVhbGx5IHdyb25nIGR1cmluZyBsb2NhbGUgbG9hZGluZycsIGUuZXJyLm1lc3NhZ2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YoZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIC8vIHVwZGF0ZSB0aGUgXCJhdmFpbGFibGVcIiBhcnJheSBhdHRyaWJ1dGUgd2l0aCBuZXdseSByZWdpc3RlcmVkXG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoaWQpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdldFN0YXRlKCkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcCgoc3RhdGU6IExvY2FsZVN0YXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGF2YWlsYWJsZSA9IHN0YXRlWydhdmFpbGFibGUnXSA/IHN0YXRlWydhdmFpbGFibGUnXSA6IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyAuLi5zdGF0ZSwgaWQsIGF2YWlsYWJsZTogQXJyYXkuZnJvbShuZXcgU2V0KFsuLi5hdmFpbGFibGUsIGlkXSkpIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChzdGF0ZTogTG9jYWxlU3RhdGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVTdGF0ZShzdGF0ZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXRyaWV2ZXMgYW4gYXJyYXkgb2YgbG9jYWxlIGlkZW50aWZpZXJzIHN1cHBvcnRlZCBieSB0aGUgYnJvd3Nlci5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmdbXSB8IHVuZGVmaW5lZH0gLSBBbiBhcnJheSBvZiBicm93c2VyIGxvY2FsZSBpZGVudGlmaWVycyBvciB1bmRlZmluZWQgaWYgbm90IGF2YWlsYWJsZS5cbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0QnJvd3NlckxvY2FsZXMoKTogc3RyaW5nW10ge1xuICAgICAgICBjb25zdCBicm93c2VyTG9jYWxlcyA9IG5hdmlnYXRvci5sYW5ndWFnZXMgPT09IHVuZGVmaW5lZCA/IFtuYXZpZ2F0b3IubGFuZ3VhZ2VdIDogbmF2aWdhdG9yLmxhbmd1YWdlcztcblxuICAgICAgICBpZiAoIWJyb3dzZXJMb2NhbGVzKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGJyb3dzZXJMb2NhbGVzLm1hcCgobG9jYWxlKSA9PiBsb2NhbGUudHJpbSgpKTtcbiAgICB9XG5cbn1cbiJdfQ==
|
|
237
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2xvY2FsZS9sb2NhbGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFhLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUMsT0FBTyxFQUNILFVBQVUsRUFFVixjQUFjLEVBQ2QsOEJBQThCLEdBS2pDLE1BQU0sV0FBVyxDQUFDO0FBQ25CLE9BQU8sRUFBYyxFQUFFLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUYsT0FBTyxFQUFnQix1QkFBdUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUdqRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDOzs7OztBQUc3QyxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLGNBQWMsQ0FBZSxnQkFBZ0IsQ0FBQyxDQUFDO0FBRW5GOzs7Ozs7Ozs7Ozs7R0FZRztBQUlILE1BQU0sT0FBTyxhQUFtRCxTQUFRLFVBQTJCO0lBSy9GLFlBQ2MsS0FBbUIsRUFDVSxnQkFBOEIsRUFDeEMsU0FBaUIsRUFDQSxZQUEwQixFQUNwRCxJQUFpQixFQUNqQixHQUFlO1FBRW5DLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxXQUFXLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBUDVCLFVBQUssR0FBTCxLQUFLLENBQWM7UUFDVSxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWM7UUFDeEMsY0FBUyxHQUFULFNBQVMsQ0FBUTtRQUNBLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQ3BELFNBQUksR0FBSixJQUFJLENBQWE7UUFDakIsUUFBRyxHQUFILEdBQUcsQ0FBWTtRQVQvQixnQkFBVyxHQUFrQixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBWS9DLElBQUksR0FBRyxFQUFFLENBQUM7WUFDTixJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxTQUFTLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUN0RCxDQUFDO1FBRUQsSUFBSSxDQUFDLE1BQU0sR0FBRyw4QkFBOEIsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNwRSwyRUFBMkU7UUFDM0UsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsWUFBWSxHQUFHLFdBQVcsQ0FBQztRQUNwQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQW9CRDs7Ozs7OztPQU9HO0lBQ0gsUUFBUSxDQUFJLFVBQXVDO1FBQy9DLElBQUksUUFBUSxHQUE4QixjQUFjLENBQUM7UUFDekQsbUhBQW1IO1FBQ25ILDhEQUE4RDtRQUM5RCxNQUFNLG1CQUFtQixHQUFHLENBQUksR0FBTSxFQUFFLEdBQVcsRUFBTyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFFaEgsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNiLFFBQVEsT0FBTyxVQUFVLEVBQUUsQ0FBQztnQkFDeEIsS0FBSyxVQUFVO29CQUNYLFFBQVEsR0FBRyxjQUFjLENBQUMsY0FBYyxFQUFFLFVBQVUsQ0FBQyxDQUFDO29CQUN0RCxNQUFNO2dCQUNWLEtBQUssUUFBUTtvQkFDVCxRQUFRLEdBQUcsY0FBYyxDQUFDLGNBQWMsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsbUJBQW1CLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUM7b0JBQzdGLE1BQU07WUFDZCxDQUFDO1FBQ0wsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUNuQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUMzQixnRUFBZ0U7UUFDaEUsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FDN0YsQ0FBQztJQUNOLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxJQUFJLENBQUMsS0FBK0I7UUFDaEMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBRXZCLDBDQUEwQztRQUMxQyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQztZQUNqQyxJQUFJLENBQUMscUNBQXFDLEVBQUUsQ0FBQztRQUNqRCxDQUFDO1FBRUQsMERBQTBEO1FBQzFELE1BQU0sZ0JBQWdCLEdBQUcsS0FBSyxFQUFFLFNBQVMsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLFNBQVMsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN4SCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLENBQ3pDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQzNCLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUNuRSxDQUFDO0lBQ04sQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILFdBQVcsQ0FBQyxLQUFrQjtRQUMxQixJQUFJLENBQUM7WUFDRCxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUN2QyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLHVCQUF1QixDQUFDLEVBQUUsR0FBRyxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ25FLGdEQUFnRDtZQUNoRCxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztnQkFDakMsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7WUFDeEIsQ0FBQztRQUNMLENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1QsTUFBTSxPQUFPLEdBQUcsZUFBZSxLQUFLLENBQUMsRUFBRTt5Q0FDVixLQUFLLENBQUMsRUFBRSxVQUFVLENBQUM7WUFDaEQsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ1gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ2pDLENBQUM7WUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzdCLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFNBQVMsQ0FBQyxFQUFVO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILElBQUksY0FBYztRQUNkLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixFQUFFLEVBQUUsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVELENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsSUFBSSxhQUFhO1FBQ2IsT0FBTyxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCw2REFBNkQ7SUFDckQsVUFBVSxDQUFDLE1BQXlCO1FBQ3hDLE9BQU8sRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxxQ0FBcUM7UUFDekMsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDWixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWE7aUJBQ2xCLElBQUksQ0FDRCxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztZQUMzQix5QkFBeUI7WUFDekIsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEVBQUUsVUFBVSxLQUFLLElBQUksSUFBSSxLQUFLLEVBQUUsVUFBVSxLQUFLLFNBQVMsQ0FBQztZQUNoRix3R0FBd0c7WUFDeEcsc0ZBQXNGO1lBQ3RGLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsS0FBSyxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3RHLDJEQUEyRDtZQUMzRCxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUNoQixFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSTtZQUNWLGtGQUFrRjtZQUNsRixTQUFTLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtnQkFDbkIsMkNBQTJDO2dCQUMzQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDO29CQUN2QixPQUFPLFVBQVUsQ0FBQyxnRkFBZ0YsQ0FBQyxDQUFDO2dCQUN4RyxDQUFDO2dCQUNELE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7WUFDdEQsQ0FBQyxDQUFDLEVBQ0YsVUFBVSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ2pCLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO29CQUNYLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUM3QixDQUFDO2dCQUNELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUMxQyxNQUFNLENBQUMsQ0FBQyxDQUFtQixFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQzFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQyxFQUMvQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtvQkFDYixJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQzt3QkFDWCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyw0REFBNEQsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUNuRyxDQUFDO29CQUNELE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNqQixDQUFDLENBQUMsQ0FDTCxDQUFDO1lBQ04sQ0FBQyxDQUFDLENBQ0wsQ0FDSjtZQUNELCtEQUErRDtZQUMvRCxTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUNiLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQ2hCLElBQUksQ0FBQyxDQUFDLENBQUMsRUFDUCxHQUFHLENBQUMsQ0FBQyxLQUFrQixFQUFFLEVBQUU7Z0JBQ3ZCLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQy9ELE9BQU8sRUFBRSxHQUFHLEtBQUssRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNoRixDQUFDLENBQUMsQ0FDTCxDQUNKLENBQ0o7aUJBQ0EsU0FBUyxDQUFDLENBQUMsS0FBa0IsRUFBRSxFQUFFO2dCQUM5QixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzVCLENBQUMsQ0FBQyxDQUFDO1FBQ1gsQ0FBQztJQUNMLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNLLGlCQUFpQjtRQUNyQixNQUFNLGNBQWMsR0FBRyxTQUFTLENBQUMsU0FBUyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUM7UUFFdEcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ2xCLE9BQU8sU0FBUyxDQUFDO1FBQ3JCLENBQUM7UUFFRCxPQUFPLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3pELENBQUM7OEdBbFBRLGFBQWEsOENBT1YsbUJBQW1CLGFBQ25CLFNBQVMsYUFDRyxnQkFBZ0I7a0hBVC9CLGFBQWEsY0FGVixNQUFNOzsyRkFFVCxhQUFhO2tCQUh6QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBUVEsTUFBTTsyQkFBQyxtQkFBbUI7OzBCQUMxQixNQUFNOzJCQUFDLFNBQVM7OzBCQUNoQixRQUFROzswQkFBSSxNQUFNOzJCQUFDLGdCQUFnQjs7MEJBQ25DLFFBQVE7OzBCQUNSLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIEluamVjdGlvblRva2VuLCBMT0NBTEVfSUQsIE9uRGVzdHJveSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGdldExvY2FsZUlkIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgRXVpU2VydmljZSxcbiAgICBFdWlTZXJ2aWNlU3RhdHVzLFxuICAgIGdldExvY2FsZVN0YXRlLFxuICAgIGdldExvY2FsZVNlcnZpY2VDb25maWdGcm9tQmFzZSxcbiAgICBHbG9iYWxDb25maWcsXG4gICAgTG9jYWxlU2VydmljZUNvbmZpZyxcbiAgICBMb2NhbGVTdGF0ZSxcbiAgICBMb2dnZXIsXG59IGZyb20gJ0BldWkvYmFzZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZmlsdGVyLCBtYXAsIHN3aXRjaE1hcCwgdGFrZSwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBTdG9yZVNlcnZpY2UsIFVwZGF0ZUxvY2FsZVN0YXRlQWN0aW9uIH0gZnJvbSAnLi4vc3RvcmUnO1xuaW1wb3J0IHsgTG9nU2VydmljZSB9IGZyb20gJy4uL2xvZyc7XG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uL2kxOG4nO1xuaW1wb3J0IHsgR0xPQkFMX0NPTkZJR19UT0tFTiB9IGZyb20gJy4uL2NvbmZpZy90b2tlbnMnO1xuaW1wb3J0IHsgY3JlYXRlU2VsZWN0b3IgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5cbmV4cG9ydCB0eXBlIExvY2FsZU1hcHBlciA9IChsb2NhbGU6IHN0cmluZykgPT4gc3RyaW5nO1xuZXhwb3J0IGNvbnN0IExPQ0FMRV9JRF9NQVBQRVIgPSBuZXcgSW5qZWN0aW9uVG9rZW48TG9jYWxlTWFwcGVyPignbG9jYWxlSWRNYXBwZXInKTtcblxuLyoqXG4gKiBMb2NhbGVTZXJ2aWNlIGlzIHJlc3BvbnNpYmxlIGZvciBtYW5hZ2luZyBsb2NhbGUgc3RhdGVzIGFuZCBjb25maWd1cmF0aW9ucyBpbiBhbiBBbmd1bGFyIGFwcGxpY2F0aW9uLlxuICogSXQgdXRpbGl6ZXMgdGhlIENMRFIgbGlicmFyeSB0byBsb2FkIGFuZCBjb25zdHJ1Y3QgdGhlIGxvY2FsZSBmb3IgZWFjaCByZWdpb24uIFRoaXMgc2VydmljZSBhbGxvd3NcbiAqIGZvciBkeW5hbWljIGxvYWRpbmcgb2YgbG9jYWxlcyB1cG9uIHJlcXVlc3QgYW5kIHVwZGF0ZXMgdGhlIHN0YXRlIG9mIHRoZSBFVUkgYXBwIGFjY29yZGluZ2x5LlxuICpcbiAqIEtleSBmdW5jdGlvbmFsaXRpZXMgaW5jbHVkZTpcbiAqICAtIEJpbmRpbmcgdG8gYSB0cmFuc2xhdGlvbiBzZXJ2aWNlIGZvciBsb2NhbGUgY2hhbmdlcy5cbiAqICAtIFVwZGF0aW5nIHRoZSBBbmd1bGFyIExPQ0FMRV9JRCB0b2tlbi5cbiAqXG4gKiBAdGVtcGxhdGUgVCAtIEV4dGVuZHMgTG9jYWxlU3RhdGUsIHJlcHJlc2VudGluZyB0aGUgc3RhdGUgc3RydWN0dXJlIGZvciBsb2NhbGVzLlxuICogQHRlbXBsYXRlIEwgLSBUaGUgdHlwZSBvZiB0aGUgbG9jYWxlIGRhdGEuXG4gKiBAZXh0ZW5kcyBFdWlTZXJ2aWNlPFQgfCBMb2NhbGVTdGF0ZT5cbiAqL1xuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgTG9jYWxlU2VydmljZTxUIGV4dGVuZHMgTG9jYWxlU3RhdGUgPSBMb2NhbGVTdGF0ZT4gZXh0ZW5kcyBFdWlTZXJ2aWNlPFQgfCBMb2NhbGVTdGF0ZT4gaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyOiBMb2dnZXI7XG4gICAgcHJpdmF0ZSBzdWJOb3RpZmllcjogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG4gICAgcHJvdGVjdGVkIGNvbmZpZzogTG9jYWxlU2VydmljZUNvbmZpZztcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcm90ZWN0ZWQgc3RvcmU6IFN0b3JlU2VydmljZSxcbiAgICAgICAgQEluamVjdChHTE9CQUxfQ09ORklHX1RPS0VOKSBwcm90ZWN0ZWQgYmFzZUdsb2JhbENvbmZpZzogR2xvYmFsQ29uZmlnLFxuICAgICAgICBASW5qZWN0KExPQ0FMRV9JRCkgcHJvdGVjdGVkIGxvY2FsZV9pZDogc3RyaW5nLFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KExPQ0FMRV9JRF9NQVBQRVIpIHByaXZhdGUgbG9jYWxlTWFwcGVyOiBMb2NhbGVNYXBwZXIsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgaTE4bjogSTE4blNlcnZpY2UsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgbG9nOiBMb2dTZXJ2aWNlLFxuICAgICkge1xuICAgICAgICBzdXBlcih7IGlkOiBnZXRMb2NhbGVJZChsb2NhbGVfaWQpIH0pO1xuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgICB0aGlzLmxvZ2dlciA9IGxvZy5nZXRMb2dnZXIoJ2NvcmUuTG9jYWxlU2VydmljZScpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jb25maWcgPSBnZXRMb2NhbGVTZXJ2aWNlQ29uZmlnRnJvbUJhc2UodGhpcy5iYXNlR2xvYmFsQ29uZmlnKTtcbiAgICAgICAgLy8gaW4gY2FzZSBubyBsb2NhbGVNYXBwZXIgcHJvdmlkZWQsIHNldCB0aGUgYW5ndWxhciBnZXRMb2NhbGVJZCBhcyBkZWZhdWx0XG4gICAgICAgIGlmICghdGhpcy5sb2NhbGVNYXBwZXIpIHtcbiAgICAgICAgICAgIHRoaXMubG9jYWxlTWFwcGVyID0gZ2V0TG9jYWxlSWQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdWJOb3RpZmllci5uZXh0KHZvaWQgMCk7XG4gICAgICAgIHRoaXMuc3ViTm90aWZpZXIuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXRyaWV2ZXMgdGhlIHN0YXRlIG9mIHRoZSBsb2NhbGUgc2VydmljZS4gVGhpcyBtZXRob2QgaXMgb3ZlcmxvYWRlZCB0byBhbGxvdyBkaWZmZXJlbnQgd2F5cyBvZiBhY2Nlc3NpbmcgdGhlIHN0YXRlLlxuICAgICAqXG4gICAgICogQHRlbXBsYXRlIEsgLSBUaGUgdHlwZSBvZiB0aGUgdmFsdWUgdG8gYmUgcmV0dXJuZWQuIERlZmF1bHRzIHRvIHRoZSB0eXBlIG9mIHRoZSBsb2NhbGUgc3RhdGUgKFQpLlxuICAgICAqXG4gICAgICogQHBhcmFtIHsoKHN0YXRlOiBUKSA9PiBLKX0gW21hcEZuXSAtIEEgZnVuY3Rpb24gdGhhdCBtYXBzIHRoZSBzdGF0ZSB0byBhIHNwZWNpZmljIGZvcm0uXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRha2VzIHRoZSBjdXJyZW50IHN0YXRlIGFzIGFuIGFyZ3VtZW50IGFuZCByZXR1cm5zIHRoZSB0cmFuc2Zvcm1lZCBzdGF0ZS5cbiAgICAgKiBAcmV0dXJucyB7T2JzZXJ2YWJsZTxLPn0gLSBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIHRyYW5zZm9ybWVkIHN0YXRlLlxuICAgICAqL1xuICAgIGdldFN0YXRlPEsgPSBUPihtYXBGbj86IChzdGF0ZTogVCkgPT4gSyk6IE9ic2VydmFibGU8Sz47XG4gICAgLyoqXG4gICAgICogQHRlbXBsYXRlIGEgLSBBIGtleSB0aGF0IGV4dGVuZHMgdGhlIGtleXMgb2YgdGhlIHN0YXRlIHR5cGUgVC5cbiAgICAgKiBAcGFyYW0ge2F9IFtrZXldIC0gQSBzcGVjaWZpYyBrZXkgdG8gYWNjZXNzIGEgcGFydCBvZiB0aGUgc3RhdGUuXG4gICAgICogICAgICAgICAgICAgICAgICAgIFRoZSBrZXkgc2hvdWxkIGJlIGEgcHJvcGVydHkgbmFtZSBvZiB0aGUgc3RhdGUgb2JqZWN0LlxuICAgICAqIEByZXR1cm5zIHtPYnNlcnZhYmxlPFRbYV0+fSAtIEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgdmFsdWUgb2YgdGhlIHNwZWNpZmllZCBrZXkgaW4gdGhlIHN0YXRlLlxuICAgICAqIEBwYXJhbSBrZXlcbiAgICAgKi9cbiAgICBnZXRTdGF0ZTxhIGV4dGVuZHMga2V5b2YgVD4oa2V5PzogYSk6IE9ic2VydmFibGU8VFthXT47XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHsoKHN0YXRlOiBUKSA9PiBLKSB8IHN0cmluZ30gW2tleU9yTWFwRm5dIC0gRWl0aGVyIGEgbWFwcGluZyBmdW5jdGlvbiBvciBhIHN0cmluZyBrZXkuXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgYSBzdHJpbmcgaXMgcHJvdmlkZWQsIGl0IHVzZXMgZG90IG5vdGF0aW9uIHRvIGFjY2VzcyBuZXN0ZWQgcHJvcGVydGllcy5cbiAgICAgKiBAcmV0dXJucyB7T2JzZXJ2YWJsZTxLPn0gLSBBbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIHNlbGVjdGVkIG9yIHRyYW5zZm9ybWVkIHN0YXRlLlxuICAgICAqXG4gICAgICogSWYgbm8gcGFyYW1ldGVyIGlzIHByb3ZpZGVkLCB0aGUgbWV0aG9kIHJldHVybnMgdGhlIGVudGlyZSBzdGF0ZS5cbiAgICAgKiBAcGFyYW0ga2V5T3JNYXBGblxuICAgICAqL1xuICAgIGdldFN0YXRlPEs+KGtleU9yTWFwRm4/OiAoKHN0YXRlOiBUKSA9PiBLKSB8IHN0cmluZyk6IE9ic2VydmFibGU8Sz4ge1xuICAgICAgICBsZXQgc2VsZWN0b3I6IChzOiBUKSA9PiBLIHwgTG9jYWxlU3RhdGUgPSBnZXRMb2NhbGVTdGF0ZTtcbiAgICAgICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICBjb25zdCBkb3ROb3RhdGlvblRvT2JqZWN0ID0gPE8+KG9iajogTywga2V5OiBzdHJpbmcpOiBhbnkgPT4ga2V5LnNwbGl0KCcuJykucmVkdWNlKChzbGljZSwgaSkgPT4gc2xpY2VbaV0sIG9iaik7XG5cbiAgICAgICAgaWYgKGtleU9yTWFwRm4pIHtcbiAgICAgICAgICAgIHN3aXRjaCAodHlwZW9mIGtleU9yTWFwRm4pIHtcbiAgICAgICAgICAgICAgICBjYXNlICdmdW5jdGlvbic6XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yID0gY3JlYXRlU2VsZWN0b3IoZ2V0TG9jYWxlU3RhdGUsIGtleU9yTWFwRm4pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RvciA9IGNyZWF0ZVNlbGVjdG9yKGdldExvY2FsZVN0YXRlLCAoc3RhdGUpID0+IGRvdE5vdGF0aW9uVG9PYmplY3Qoc3RhdGUsIGtleU9yTWFwRm4pKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuc3RvcmUuc2VsZWN0KHNlbGVjdG9yKS5waXBlKFxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuc3ViTm90aWZpZXIpLFxuICAgICAgICAgICAgLy8gaW4gY2FzZSBzZXJ2aWNlIGRpZG4ndCBpbml0IGZhbGxiYWNrIHRvIExPQ0FMRV9JRCB0b2tlbiB2YWx1ZVxuICAgICAgICAgICAgbWFwKChzdGF0ZSkgPT4gKHN0YXRlID8gc3RhdGUgOiB0aGlzLnN0YXRlSW5zdGFuY2UgPyB0aGlzLnN0YXRlSW5zdGFuY2UgOiB0aGlzLmxvY2FsZV9pZCkpLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEluaXRpYWxpemVzIHRoZSBMb2NhbGVTZXJ2aWNlIHdpdGggbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zIGFuZCBzdGF0ZS5cbiAgICAgKiBCaW5kcyBsYW5ndWFnZSBjaGFuZ2VzIHRvIHRoZSBzdGF0ZSBhbmQgZHluYW1pY2FsbHkgbG9hZHMgdGhlIGFwcHJvcHJpYXRlIGxvY2FsZXMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge0xvY2FsZVN0YXRlIHwgdW5kZWZpbmVkfSBbc3RhdGVdIC0gT3B0aW9uYWwgaW5pdGlhbCBzdGF0ZSBmb3IgdGhlIGxvY2FsZSBzZXJ2aWNlLlxuICAgICAqIEByZXR1cm5zIHtPYnNlcnZhYmxlPEV1aVNlcnZpY2VTdGF0dXM+fSAtIE9ic2VydmFibGUgZW1pdHRpbmcgdGhlIHN0YXR1cyBvZiB0aGUgaW5pdGlhbGl6YXRpb24uXG4gICAgICovXG4gICAgaW5pdChzdGF0ZT86IExvY2FsZVN0YXRlIHwgdW5kZWZpbmVkKTogT2JzZXJ2YWJsZTxFdWlTZXJ2aWNlU3RhdHVzPiB7XG4gICAgICAgIHN1cGVyLmluaXRFdWlTZXJ2aWNlKCk7XG5cbiAgICAgICAgLy8gYmluZCBsYW5ndWFnZSBjaGFuZ2VzIHRvIGxvY2FsZSBjaGFuZ2VzXG4gICAgICAgIGlmICh0aGlzLmNvbmZpZz8uYmluZFdpdGhUcmFuc2xhdGUpIHtcbiAgICAgICAgICAgIHRoaXMuYmluZFRyYW5zbGF0ZVNlcnZpY2VMYW5nQ2hhbmdlVG9TdGF0ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gZHluYW1pY2FsbHkgbG9hZCBsb2NhbGUgYmFzZWQgb24gcHJvdmlkZWQgY29uZmlndXJhdGlvblxuICAgICAgICBjb25zdCBhdmFpbGFibGVMb2NhbGVzID0gc3RhdGU/LmF2YWlsYWJsZSB8fCB0aGlzLmNvbmZpZz8uYXZhaWxhYmxlIHx8IHRoaXMuZ2V0QnJvd3NlckxvY2FsZXMoKSB8fCBbdGhpcy5jdXJyZW50TG9jYWxlXTtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZExvY2FsZShhdmFpbGFibGVMb2NhbGVzKS5waXBlKFxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuc3ViTm90aWZpZXIpLFxuICAgICAgICAgICAgdGFwKCgpID0+IHRoaXMudXBkYXRlU3RhdGUoc3RhdGUgfHwgeyBpZDogdGhpcy5jdXJyZW50TG9jYWxlIH0pKSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVcGRhdGVzIHRoZSBsb2NhbGUgc3RhdGUgd2l0aGluIHRoZSBhcHBsaWNhdGlvbi4gSWYgdGhlIG5ldyBzdGF0ZSBpcyBub3QgYXZhaWxhYmxlLFxuICAgICAqIGl0IHRocm93cyBhbiBlcnJvci4gQWxzbyB1cGRhdGVzIHRoZSBnbG9iYWwgTE9DQUxFX0lEIHRva2VuIGlmIGNvbmZpZ3VyZWQgdG8gZG8gc28uXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge0xvY2FsZVN0YXRlfSBzdGF0ZSAtIFRoZSBuZXcgc3RhdGUgdG8gYmUgc2V0IGZvciB0aGUgbG9jYWxlLlxuICAgICAqIEB0aHJvd3MgV2lsbCB0aHJvdyBhbiBlcnJvciBpZiB0aGUgbG9jYWxlIGZvciB0aGUgZ2l2ZW4gc3RhdGUgaWQgaXMgbm90IGF2YWlsYWJsZS5cbiAgICAgKi9cbiAgICB1cGRhdGVTdGF0ZShzdGF0ZTogTG9jYWxlU3RhdGUpOiB2b2lkIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGlkID0gdGhpcy5sb2NhbGVNYXBwZXIoc3RhdGUuaWQpO1xuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgVXBkYXRlTG9jYWxlU3RhdGVBY3Rpb24oeyAuLi5zdGF0ZSwgaWQgfSkpO1xuICAgICAgICAgICAgLy8gdXBkYXRlIGdsb2JhbCBUT0tFTiBJRCBiYXNlZCBvbiBjb25maWd1cmF0aW9uXG4gICAgICAgICAgICBpZiAodGhpcy5jb25maWcuYWZmZWN0R2xvYmFsTG9jYWxlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2NhbGVfaWQgPSBpZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IGBMb2NhbGUgZm9yICcke3N0YXRlLmlkfScgaXMgbm90IGF2YWlsYWJsZS5cbiAgICAgICAgICAgICAgICAgUGxlYXNlIHVzZSBhZGRMb2NhbGUoJyR7c3RhdGUuaWR9JykgZmlyc3RgO1xuICAgICAgICAgICAgaWYgKHRoaXMubG9nKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuaW5mbyhtZXNzYWdlLCBlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIGV1aSBkb2VzIG5vdCBvZmZlciBhIHdheSB0byBkeW5hbWljYWxseSBhZGQgbG9jYWxlIGl0IHdpbGwgYmUgcmVtb3ZlZCBpbiBmdXR1cmUgdmVyc2lvbnNcbiAgICAgKlxuICAgICAqIEBwYXJhbSBpZFxuICAgICAqL1xuICAgIGFkZExvY2FsZShpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxFdWlTZXJ2aWNlU3RhdHVzPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvYWRMb2NhbGUoaWQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHJpZXZlcyB0aGUgcHJldmlvdXMgbG9jYWxlIHVzZWQgaW4gdGhlIGFwcGxpY2F0aW9uLlxuICAgICAqXG4gICAgICogQHJldHVybnMge3N0cmluZ30gLSBUaGUgcHJldmlvdXMgbG9jYWxlIGlkZW50aWZpZXIuXG4gICAgICovXG4gICAgZ2V0IHByZXZpb3VzTG9jYWxlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnByZXZTdGF0ZUluc3RhbmNlPy5pZCB8fCB0aGlzLmN1cnJlbnRMb2NhbGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0cmlldmVzIHRoZSBjdXJyZW50IGxvY2FsZSB1c2VkIGluIHRoZSBhcHBsaWNhdGlvbi5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IC0gVGhlIGN1cnJlbnQgbG9jYWxlIGlkZW50aWZpZXIuXG4gICAgICovXG4gICAgZ2V0IGN1cnJlbnRMb2NhbGUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGVJbnN0YW5jZT8uaWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgZXVpIGRvZXMgbm90IG9mZmVyIGEgd2F5IHRvIGR5bmFtaWNhbGx5IGFkZCBsb2NhbGUgaXQgd2lsbCBiZSByZW1vdmVkIGluIGZ1dHVyZSB2ZXJzaW9uc1xuICAgICAqXG4gICAgICogRHluYW1pY2FsbHkgbG9hZHMgYW5kIHJlZ2lzdGVycyBsb2NhbGUgZGF0YSBiYXNlZCBvbiB0aGUgZ2l2ZW4gbG9jYWxlIGlkZW50aWZpZXJzLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmdbXSB8IHN0cmluZ30gbG9jYWxlIC0gQW4gYXJyYXkgb2YgbG9jYWxlIGlkZW50aWZpZXJzIG9yIGEgc2luZ2xlIGxvY2FsZSBpZGVudGlmaWVyLlxuICAgICAqIEByZXR1cm5zIHtPYnNlcnZhYmxlPEV1aVNlcnZpY2VTdGF0dXM+fSAtIE9ic2VydmFibGUgZW1pdHRpbmcgdGhlIHN0YXR1cyBvZiB0aGUgbG9hZGluZyBwcm9jZXNzLlxuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgIHByaXZhdGUgbG9hZExvY2FsZShsb2NhbGU6IHN0cmluZ1tdIHwgc3RyaW5nKTogT2JzZXJ2YWJsZTxFdWlTZXJ2aWNlU3RhdHVzPiB7XG4gICAgICAgIHJldHVybiBvZih7IHN1Y2Nlc3M6IHRydWUgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTGlzdGVucyBmb3IgbGFuZ3VhZ2UgY2hhbmdlcyBhbmQgZHluYW1pY2FsbHkgc2V0cyB0aGUgbG9jYWxlIGFjY29yZGluZ2x5LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICBwcml2YXRlIGJpbmRUcmFuc2xhdGVTZXJ2aWNlTGFuZ0NoYW5nZVRvU3RhdGUoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmkxOG4pIHtcbiAgICAgICAgICAgIHRoaXMuaTE4bi5vblN0YXRlQ2hhbmdlXG4gICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLnN1Yk5vdGlmaWVyKSxcbiAgICAgICAgICAgICAgICAgICAgLy8gZmlsdGVyIG91dCBudWxsIHZhbHVlc1xuICAgICAgICAgICAgICAgICAgICBmaWx0ZXIoKHN0YXRlKSA9PiBzdGF0ZT8uYWN0aXZlTGFuZyAhPT0gbnVsbCAmJiBzdGF0ZT8uYWN0aXZlTGFuZyAhPT0gdW5kZWZpbmVkKSxcbiAgICAgICAgICAgICAgICAgICAgLy8gQkVXQVJFOiBmaWx0ZXIgaXMgYmFzZWQgb24gY29udmVudGlvbiB0aGF0IGxvY2FsZSBpZCBzbGljZWQoMikgd2lsbCBtYXRjaCBhY3RpdmVMYW5nIGUuZy4gZW4tVVMgPT4gZW5cbiAgICAgICAgICAgICAgICAgICAgLy8gQWxzbywgaWYgYWN0aXZlTGFuZyBpcyAnZW4nIGFuZCBsb2NhbGUgaXMgJ2VuLUdCJyBpdCB3aWxsIG5vdCB0cmlnZ2VyIGxvY2FsZSBjaGFuZ2VcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyKChzdGF0ZSkgPT4gc3RhdGUuYWN0aXZlTGFuZy50b0xvd2VyQ2FzZSgpICE9PSB0aGlzLnN0YXRlSW5zdGFuY2U/LmlkLnNsaWNlKDAsIDIpLnRvTG93ZXJDYXNlKCkpLFxuICAgICAgICAgICAgICAgICAgICAvLyB0byBjaGVjayBpZiByZWdpc3RyYXRpb24gb2YgbG9jYWxlIG90aGVyd2lzZSByZWdpc3RlciBpdFxuICAgICAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKHZhbHVlKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgb2YodmFsdWUpLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ2V0TG9jYWxlSWQgbWF5IHRocm93IEVycm9yKGBNaXNzaW5nIGxvY2FsZSBkYXRhIGZvciB0aGUgbG9jYWxlIFwiJHtsb2NhbGV9XCIuYCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoTWFwKChpMThzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjaGVjayBpZiBhY3RpdmVMYW5nIGlzIG51bGwgb3IgdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaTE4c3RhdGUuYWN0aXZlTGFuZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoJ0hhcyBpMThuU2VydmljZSBpbml0aWFsaXplZD8gSWYgbm90IG1ha2Ugc3VyZSBpMThuU2VydmljZS5pbml0KCkuc3Vic2NyaWJlKC4uKScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvZih0aGlzLmxvY2FsZU1hcHBlcihpMThzdGF0ZS5hY3RpdmVMYW5nKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubG9nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9hZExvY2FsZSh2YWx1ZT8uYWN0aXZlTGFuZykucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcigoczogRXVpU2VydmljZVN0YXR1cykgPT4gcy5zdWNjZXNzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcCgoKSA9PiB0aGlzLmxvY2FsZU1hcHBlcih2YWx1ZT8uYWN0aXZlTGFuZykpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmxvZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnU29tZXRoaW5nIHdlbnQgdGVycmlibHkgcmVhbGx5IHdyb25nIGR1cmluZyBsb2NhbGUgbG9hZGluZycsIGUuZXJyLm1lc3NhZ2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YoZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIC8vIHVwZGF0ZSB0aGUgXCJhdmFpbGFibGVcIiBhcnJheSBhdHRyaWJ1dGUgd2l0aCBuZXdseSByZWdpc3RlcmVkXG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoaWQpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdldFN0YXRlKCkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcCgoc3RhdGU6IExvY2FsZVN0YXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGF2YWlsYWJsZSA9IHN0YXRlWydhdmFpbGFibGUnXSA/IHN0YXRlWydhdmFpbGFibGUnXSA6IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyAuLi5zdGF0ZSwgaWQsIGF2YWlsYWJsZTogQXJyYXkuZnJvbShuZXcgU2V0KFsuLi5hdmFpbGFibGUsIGlkXSkpIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChzdGF0ZTogTG9jYWxlU3RhdGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVTdGF0ZShzdGF0ZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXRyaWV2ZXMgYW4gYXJyYXkgb2YgbG9jYWxlIGlkZW50aWZpZXJzIHN1cHBvcnRlZCBieSB0aGUgYnJvd3Nlci5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmdbXSB8IHVuZGVmaW5lZH0gLSBBbiBhcnJheSBvZiBicm93c2VyIGxvY2FsZSBpZGVudGlmaWVycyBvciB1bmRlZmluZWQgaWYgbm90IGF2YWlsYWJsZS5cbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0QnJvd3NlckxvY2FsZXMoKTogc3RyaW5nW10ge1xuICAgICAgICBjb25zdCBicm93c2VyTG9jYWxlcyA9IG5hdmlnYXRvci5sYW5ndWFnZXMgPT09IHVuZGVmaW5lZCA/IFtuYXZpZ2F0b3IubGFuZ3VhZ2VdIDogbmF2aWdhdG9yLmxhbmd1YWdlcztcblxuICAgICAgICBpZiAoIWJyb3dzZXJMb2NhbGVzKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGJyb3dzZXJMb2NhbGVzLm1hcCgobG9jYWxlKSA9PiBsb2NhbGUudHJpbSgpKTtcbiAgICB9XG5cbn1cbiJdfQ==
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { Injectable, Optional } from '@angular/core';
|
|
1
|
+
import { Inject, Injectable, Optional, PLATFORM_ID } from '@angular/core';
|
|
2
|
+
import { isPlatformBrowser } from '@angular/common';
|
|
2
3
|
import { StorageService } from './storage.service';
|
|
3
4
|
import * as i0 from "@angular/core";
|
|
4
5
|
import * as i1 from "../log/log.service";
|
|
@@ -7,9 +8,10 @@ import * as i1 from "../log/log.service";
|
|
|
7
8
|
*/
|
|
8
9
|
export class LocalStorageService extends StorageService {
|
|
9
10
|
static { this.NAME = 'LocalStorageService'; }
|
|
10
|
-
constructor(log) {
|
|
11
|
+
constructor(log, platformId) {
|
|
11
12
|
super();
|
|
12
13
|
this.log = log;
|
|
14
|
+
this.platformId = platformId;
|
|
13
15
|
}
|
|
14
16
|
/**
|
|
15
17
|
* the name of the storage service
|
|
@@ -25,15 +27,17 @@ export class LocalStorageService extends StorageService {
|
|
|
25
27
|
// TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html
|
|
26
28
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
27
29
|
get(key) {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
this.log
|
|
30
|
+
if (isPlatformBrowser(this.platformId)) {
|
|
31
|
+
try {
|
|
32
|
+
const serialized = localStorage.getItem(key);
|
|
33
|
+
return serialized && JSON.parse(serialized);
|
|
34
|
+
}
|
|
35
|
+
catch (err) {
|
|
36
|
+
if (this.log) {
|
|
37
|
+
this.log.error(this.name(), 'get', err);
|
|
38
|
+
}
|
|
39
|
+
return undefined;
|
|
35
40
|
}
|
|
36
|
-
return undefined;
|
|
37
41
|
}
|
|
38
42
|
}
|
|
39
43
|
/**
|
|
@@ -44,13 +48,15 @@ export class LocalStorageService extends StorageService {
|
|
|
44
48
|
// TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html
|
|
45
49
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
46
50
|
set(key, value) {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
this.log
|
|
51
|
+
if (isPlatformBrowser(this.platformId)) {
|
|
52
|
+
try {
|
|
53
|
+
const serialized = JSON.stringify(value);
|
|
54
|
+
localStorage.setItem(key, serialized);
|
|
55
|
+
}
|
|
56
|
+
catch (err) {
|
|
57
|
+
if (this.log) {
|
|
58
|
+
this.log.error(this.name(), 'set', err);
|
|
59
|
+
}
|
|
54
60
|
}
|
|
55
61
|
}
|
|
56
62
|
}
|
|
@@ -59,21 +65,26 @@ export class LocalStorageService extends StorageService {
|
|
|
59
65
|
* @param key the associated key
|
|
60
66
|
*/
|
|
61
67
|
remove(key) {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
this.log
|
|
68
|
+
if (isPlatformBrowser(this.platformId)) {
|
|
69
|
+
try {
|
|
70
|
+
localStorage.removeItem(key);
|
|
71
|
+
}
|
|
72
|
+
catch (err) {
|
|
73
|
+
if (this.log) {
|
|
74
|
+
this.log.error(this.name(), 'remove', err);
|
|
75
|
+
}
|
|
68
76
|
}
|
|
69
77
|
}
|
|
70
78
|
}
|
|
71
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: LocalStorageService, deps: [{ token: i1.LogService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
79
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: LocalStorageService, deps: [{ token: i1.LogService, optional: true }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
72
80
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: LocalStorageService }); }
|
|
73
81
|
}
|
|
74
82
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: LocalStorageService, decorators: [{
|
|
75
83
|
type: Injectable
|
|
76
84
|
}], ctorParameters: () => [{ type: i1.LogService, decorators: [{
|
|
77
85
|
type: Optional
|
|
86
|
+
}] }, { type: undefined, decorators: [{
|
|
87
|
+
type: Inject,
|
|
88
|
+
args: [PLATFORM_ID]
|
|
78
89
|
}] }] });
|
|
79
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtc3RvcmFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9zdG9yYWdlL2xvY2FsLXN0b3JhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7O0FBR25EOztHQUVHO0FBRUgsTUFBTSxPQUFPLG1CQUFvQixTQUFRLGNBQWM7YUFDNUMsU0FBSSxHQUFHLHFCQUFxQixBQUF4QixDQUF5QjtJQUVwQyxZQUFrQyxHQUFlLEVBQStCLFVBQW1CO1FBQy9GLEtBQUssRUFBRSxDQUFDO1FBRHNCLFFBQUcsR0FBSCxHQUFHLENBQVk7UUFBK0IsZUFBVSxHQUFWLFVBQVUsQ0FBUztJQUVuRyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJO1FBQ0EsT0FBTyxtQkFBbUIsQ0FBQyxJQUFJLENBQUM7SUFDcEMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxtSEFBbUg7SUFDbkgsOERBQThEO0lBQzlELEdBQUcsQ0FBQyxHQUFXO1FBQ1gsSUFBRyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUM7Z0JBQ0QsTUFBTSxVQUFVLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDN0MsT0FBTyxVQUFVLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNoRCxDQUFDO1lBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztnQkFDWCxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztvQkFDWCxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUM1QyxDQUFDO2dCQUNELE9BQU8sU0FBUyxDQUFDO1lBQ3JCLENBQUM7UUFDTCxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxtSEFBbUg7SUFDbkgsOERBQThEO0lBQzlELEdBQUcsQ0FBQyxHQUFXLEVBQUUsS0FBVTtRQUN2QixJQUFHLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQ3BDLElBQUksQ0FBQztnQkFDRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN6QyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsQ0FBQztZQUMxQyxDQUFDO1lBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztnQkFDWCxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztvQkFDWCxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUM1QyxDQUFDO1lBQ0wsQ0FBQztRQUNMLENBQUM7SUFDTCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLEdBQVc7UUFDZCxJQUFHLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQ3BDLElBQUksQ0FBQztnQkFDRCxZQUFZLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2pDLENBQUM7WUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO2dCQUNYLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO29CQUNYLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQy9DLENBQUM7WUFDTCxDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7OEdBckVRLG1CQUFtQiw0REFHK0IsV0FBVztrSEFIN0QsbUJBQW1COzsyRkFBbkIsbUJBQW1CO2tCQUQvQixVQUFVOzswQkFJTSxRQUFROzswQkFBK0IsTUFBTTsyQkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbCwgUExBVEZPUk1fSUQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi9zdG9yYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9nU2VydmljZSB9IGZyb20gJy4uL2xvZy9sb2cuc2VydmljZSc7XG5cbi8qKlxuICogbG9jYWxTdG9yYWdlIHNlcnZpY2VcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIExvY2FsU3RvcmFnZVNlcnZpY2UgZXh0ZW5kcyBTdG9yYWdlU2VydmljZSB7XG4gICAgc3RhdGljIE5BTUUgPSAnTG9jYWxTdG9yYWdlU2VydmljZSc7XG5cbiAgICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBwcm90ZWN0ZWQgbG9nOiBMb2dTZXJ2aWNlLCBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQ6IHVua25vd24pIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiB0aGUgbmFtZSBvZiB0aGUgc3RvcmFnZSBzZXJ2aWNlXG4gICAgICovXG4gICAgbmFtZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gTG9jYWxTdG9yYWdlU2VydmljZS5OQU1FO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHJldHJpZXZlIGFuIG9iamVjdCBmcm9tIGxvY2FsIHN0b3JhZ2VcbiAgICAgKiBAcGFyYW0ga2V5IHRoZSBhc3NvY2lhdGVkIGtleVxuICAgICAqIEByZXR1cm5zIHRoZSB2YWx1ZSBvciB1bmRlZmluZWQsIGlmIGNhc2Ugb2YgZXJyb3JcbiAgICAgKi9cbiAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBnZXQoa2V5OiBzdHJpbmcpOiBhbnkge1xuICAgICAgICBpZihpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlcmlhbGl6ZWQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpO1xuICAgICAgICAgICAgICAgIHJldHVybiBzZXJpYWxpemVkICYmIEpTT04ucGFyc2Uoc2VyaWFsaXplZCk7XG4gICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5sb2cpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2cuZXJyb3IodGhpcy5uYW1lKCksICdnZXQnLCBlcnIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogc2V0cyBhbiBvYmplY3QgaW4gbG9jYWwgc3RvcmFnZVxuICAgICAqIEBwYXJhbSBrZXkgdGhlIGFzc29jaWF0ZWQga2V5XG4gICAgICogQHBhcmFtIHZhbHVlIHRoZSB2YWx1ZSB0byBzZXRcbiAgICAgKi9cbiAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBzZXQoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCBzZXJpYWxpemVkID0gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xuICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKGtleSwgc2VyaWFsaXplZCk7XG4gICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5sb2cpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2cuZXJyb3IodGhpcy5uYW1lKCksICdzZXQnLCBlcnIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHJlbW92ZXMgYW4gb2JqZWN0IGZyb20gbG9jYWwgc3RvcmFnZVxuICAgICAqIEBwYXJhbSBrZXkgdGhlIGFzc29jaWF0ZWQga2V5XG4gICAgICovXG4gICAgcmVtb3ZlKGtleTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oa2V5KTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmxvZykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZy5lcnJvcih0aGlzLm5hbWUoKSwgJ3JlbW92ZScsIGVycik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIl19
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { Injectable, Inject } from '@angular/core';
|
|
1
|
+
import { Injectable, Inject, PLATFORM_ID } from '@angular/core';
|
|
2
2
|
import { ofType, createEffect } from '@ngrx/effects';
|
|
3
|
-
import { fromEvent, merge } from 'rxjs';
|
|
3
|
+
import { fromEvent, merge, of } from 'rxjs';
|
|
4
4
|
import { map, mapTo, mergeMap, tap } from 'rxjs/operators';
|
|
5
5
|
import { CoreAppActionTypes, UpdateCurrentModuleAction, UpdateAppConnectionAction } from '../actions/app.actions';
|
|
6
6
|
import { SHOW_CONNECTION_STATUS_TOKEN } from '../../config/tokens';
|
|
7
|
+
import { isPlatformBrowser } from '@angular/common';
|
|
7
8
|
import * as i0 from "@angular/core";
|
|
8
9
|
import * as i1 from "@ngrx/effects";
|
|
9
10
|
import * as i2 from "@ngx-translate/core";
|
|
@@ -11,12 +12,20 @@ import * as i3 from "../../growl/eui-growl.service";
|
|
|
11
12
|
export class CoreAppEffects {
|
|
12
13
|
constructor(actions,
|
|
13
14
|
// TODO: remove on eUI 14
|
|
14
|
-
showConnectionStatus, translateService, asService) {
|
|
15
|
+
showConnectionStatus, translateService, asService, platformId) {
|
|
15
16
|
this.actions = actions;
|
|
16
17
|
this.showConnectionStatus = showConnectionStatus;
|
|
17
18
|
this.translateService = translateService;
|
|
18
19
|
this.asService = asService;
|
|
19
|
-
this.
|
|
20
|
+
this.platformId = platformId;
|
|
21
|
+
this.getAppConnectionInformation = createEffect(() => {
|
|
22
|
+
if (isPlatformBrowser(this.platformId)) {
|
|
23
|
+
return merge(fromEvent(window, 'online').pipe(mapTo(true)), fromEvent(window, 'offline').pipe(mapTo(false))).pipe(map((connected) => new UpdateAppConnectionAction(connected)));
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
return of(new UpdateAppConnectionAction(false));
|
|
27
|
+
}
|
|
28
|
+
});
|
|
20
29
|
this.activatedRoute = createEffect(() => this.actions.pipe(ofType(CoreAppActionTypes.ACTIVATED_ROUTE), map((action) => action.payload), mergeMap((route) => {
|
|
21
30
|
// extract the module name, if defined
|
|
22
31
|
const module = route.snapshot.data['module'] || 'undefined';
|
|
@@ -43,7 +52,7 @@ export class CoreAppEffects {
|
|
|
43
52
|
}
|
|
44
53
|
})), { dispatch: false });
|
|
45
54
|
}
|
|
46
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: CoreAppEffects, deps: [{ token: i1.Actions }, { token: SHOW_CONNECTION_STATUS_TOKEN }, { token: i2.TranslateService }, { token: i3.EuiGrowlService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
55
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: CoreAppEffects, deps: [{ token: i1.Actions }, { token: SHOW_CONNECTION_STATUS_TOKEN }, { token: i2.TranslateService }, { token: i3.EuiGrowlService }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
47
56
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: CoreAppEffects }); }
|
|
48
57
|
}
|
|
49
58
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: CoreAppEffects, decorators: [{
|
|
@@ -51,5 +60,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImpor
|
|
|
51
60
|
}], ctorParameters: () => [{ type: i1.Actions }, { type: undefined, decorators: [{
|
|
52
61
|
type: Inject,
|
|
53
62
|
args: [SHOW_CONNECTION_STATUS_TOKEN]
|
|
54
|
-
}] }, { type: i2.TranslateService }, { type: i3.EuiGrowlService }
|
|
55
|
-
|
|
63
|
+
}] }, { type: i2.TranslateService }, { type: i3.EuiGrowlService }, { type: undefined, decorators: [{
|
|
64
|
+
type: Inject,
|
|
65
|
+
args: [PLATFORM_ID]
|
|
66
|
+
}] }] });
|
|
67
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmVmZmVjdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL3N0b3JlL2VmZmVjdHMvYXBwLmVmZmVjdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR2hFLE9BQU8sRUFBVyxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBYyxTQUFTLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN4RCxPQUFPLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0QsT0FBTyxFQUFFLGtCQUFrQixFQUF3Qix5QkFBeUIsRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBR3hJLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRW5FLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7OztBQUdwRCxNQUFNLE9BQU8sY0FBYztJQWtFdkIsWUFDYyxPQUFnQjtJQUMxQix5QkFBeUI7SUFDdUIsb0JBQWdELEVBQ3RGLGdCQUFrQyxFQUNsQyxTQUEwQixFQUNMLFVBQW1CO1FBTHhDLFlBQU8sR0FBUCxPQUFPLENBQVM7UUFFc0IseUJBQW9CLEdBQXBCLG9CQUFvQixDQUE0QjtRQUN0RixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLGNBQVMsR0FBVCxTQUFTLENBQWlCO1FBQ0wsZUFBVSxHQUFWLFVBQVUsQ0FBUztRQXZFdEQsZ0NBQTJCLEdBQXVCLFlBQVksQ0FBQyxHQUFHLEVBQUU7WUFDNUQsSUFBRyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztnQkFDcEMsT0FBTyxLQUFLLENBQ1IsU0FBUyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQzdDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUNsRCxDQUFDLElBQUksQ0FDRixHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLElBQUkseUJBQXlCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FDL0QsQ0FBQTtZQUNMLENBQUM7aUJBQU0sQ0FBQztnQkFDSixPQUFPLEVBQUUsQ0FBQyxJQUFJLHlCQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUE7WUFDbkQsQ0FBQztRQUNMLENBQUMsQ0FDSixDQUFDO1FBRUYsbUJBQWMsR0FBdUIsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUNuRCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FDYixNQUFNLENBQUMsa0JBQWtCLENBQUMsZUFBZSxDQUFDLEVBQzFDLEdBQUcsQ0FBQyxDQUFDLE1BQTRCLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFDckQsUUFBUSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDZixzQ0FBc0M7WUFDdEMsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksV0FBVyxDQUFDO1lBQzVELE9BQU8sQ0FBQyxJQUFJLHlCQUF5QixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDbkQsQ0FBQyxDQUFDLENBQ0wsQ0FDSixDQUFDO1FBRUYsd0JBQW1CLEdBQUcsWUFBWSxDQUM5QixHQUFHLEVBQUUsQ0FDRCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FDYixNQUFNLENBQUMsa0JBQWtCLENBQUMscUJBQXFCLENBQUMsRUFDaEQsR0FBRyxDQUFDLENBQUMsTUFBaUMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUMxRCxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtZQUNkLHNEQUFzRDtZQUN0RCw4QkFBOEI7WUFDOUIsTUFBTSxnQkFBZ0IsR0FDbEIsT0FBTyxJQUFJLENBQUMsb0JBQW9CLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUM7WUFDcEgsMEJBQTBCO1lBQzFCLE1BQU0sUUFBUSxHQUNWLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLFVBQVUsRUFBRSxRQUFRLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFOUcsK0RBQStEO1lBQy9ELElBQUksZ0JBQWdCLEVBQUUsQ0FBQztnQkFDbkIsSUFBSSxTQUFTLEVBQUUsQ0FBQztvQkFDWixJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFO3dCQUNqRSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FDaEIsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEVBQ2hGLFFBQVEsR0FBRyxDQUFDLEVBQ1osS0FBSyxDQUNSLENBQUM7b0JBQ04sQ0FBQyxDQUFDLENBQUM7Z0JBQ1AsQ0FBQztxQkFBTSxDQUFDO29CQUNKLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRTt3QkFDcEUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQ2hCLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxFQUM3RSxRQUFRLEdBQUcsQ0FBQyxFQUNaLEtBQUssQ0FDUixDQUFDO29CQUNOLENBQUMsQ0FBQyxDQUFDO2dCQUNQLENBQUM7WUFDTCxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQ0wsRUFDTCxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FDdEIsQ0FBQztJQVNDLENBQUM7OEdBekVLLGNBQWMseUNBcUVYLDRCQUE0Qiw0RUFHNUIsV0FBVztrSEF4RWQsY0FBYzs7MkZBQWQsY0FBYztrQkFEMUIsVUFBVTs7MEJBc0VGLE1BQU07MkJBQUMsNEJBQTRCOzswQkFHbkMsTUFBTTsyQkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0LCBQTEFURk9STV9JRCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgQWN0aW9uIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgQWN0aW9ucywgb2ZUeXBlLCBjcmVhdGVFZmZlY3QgfSBmcm9tICdAbmdyeC9lZmZlY3RzJztcbmltcG9ydCB7IE9ic2VydmFibGUsIGZyb21FdmVudCwgbWVyZ2UsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIG1hcFRvLCBtZXJnZU1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBDb3JlQXBwQWN0aW9uVHlwZXMsIEFjdGl2YXRlZFJvdXRlQWN0aW9uLCBVcGRhdGVDdXJyZW50TW9kdWxlQWN0aW9uLCBVcGRhdGVBcHBDb25uZWN0aW9uQWN0aW9uIH0gZnJvbSAnLi4vYWN0aW9ucy9hcHAuYWN0aW9ucyc7XG5cbmltcG9ydCB7IEV1aUdyb3dsU2VydmljZSB9IGZyb20gJy4uLy4uL2dyb3dsL2V1aS1ncm93bC5zZXJ2aWNlJztcbmltcG9ydCB7IFNIT1dfQ09OTkVDVElPTl9TVEFUVVNfVE9LRU4gfSBmcm9tICcuLi8uLi9jb25maWcvdG9rZW5zJztcbmltcG9ydCB7IENvbm5lY3Rpb25TdGF0dXMgfSBmcm9tICdAZXVpL2Jhc2UnO1xuaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ29yZUFwcEVmZmVjdHMge1xuICAgIGdldEFwcENvbm5lY3Rpb25JbmZvcm1hdGlvbjogT2JzZXJ2YWJsZTxBY3Rpb24+ID0gY3JlYXRlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgICAgIGlmKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbWVyZ2UoXG4gICAgICAgICAgICAgICAgICAgIGZyb21FdmVudCh3aW5kb3csICdvbmxpbmUnKS5waXBlKG1hcFRvKHRydWUpKSxcbiAgICAgICAgICAgICAgICAgICAgZnJvbUV2ZW50KHdpbmRvdywgJ29mZmxpbmUnKS5waXBlKG1hcFRvKGZhbHNlKSksXG4gICAgICAgICAgICAgICAgKS5waXBlKFxuICAgICAgICAgICAgICAgICAgICBtYXAoKGNvbm5lY3RlZCkgPT4gbmV3IFVwZGF0ZUFwcENvbm5lY3Rpb25BY3Rpb24oY29ubmVjdGVkKSksXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gb2YobmV3IFVwZGF0ZUFwcENvbm5lY3Rpb25BY3Rpb24oZmFsc2UpKVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICk7XG5cbiAgICBhY3RpdmF0ZWRSb3V0ZTogT2JzZXJ2YWJsZTxBY3Rpb24+ID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgICAgIHRoaXMuYWN0aW9ucy5waXBlKFxuICAgICAgICAgICAgb2ZUeXBlKENvcmVBcHBBY3Rpb25UeXBlcy5BQ1RJVkFURURfUk9VVEUpLFxuICAgICAgICAgICAgbWFwKChhY3Rpb246IEFjdGl2YXRlZFJvdXRlQWN0aW9uKSA9PiBhY3Rpb24ucGF5bG9hZCksXG4gICAgICAgICAgICBtZXJnZU1hcCgocm91dGUpID0+IHtcbiAgICAgICAgICAgICAgICAvLyBleHRyYWN0IHRoZSBtb2R1bGUgbmFtZSwgaWYgZGVmaW5lZFxuICAgICAgICAgICAgICAgIGNvbnN0IG1vZHVsZSA9IHJvdXRlLnNuYXBzaG90LmRhdGFbJ21vZHVsZSddIHx8ICd1bmRlZmluZWQnO1xuICAgICAgICAgICAgICAgIHJldHVybiBbbmV3IFVwZGF0ZUN1cnJlbnRNb2R1bGVBY3Rpb24obW9kdWxlKV07XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgKSxcbiAgICApO1xuXG4gICAgdXBkYXRlQXBwQ29ubmVjdGlvbiA9IGNyZWF0ZUVmZmVjdChcbiAgICAgICAgKCkgPT5cbiAgICAgICAgICAgIHRoaXMuYWN0aW9ucy5waXBlKFxuICAgICAgICAgICAgICAgIG9mVHlwZShDb3JlQXBwQWN0aW9uVHlwZXMuVVBEQVRFX0FQUF9DT05ORUNUSU9OKSxcbiAgICAgICAgICAgICAgICBtYXAoKGFjdGlvbjogVXBkYXRlQXBwQ29ubmVjdGlvbkFjdGlvbikgPT4gYWN0aW9uLnBheWxvYWQpLFxuICAgICAgICAgICAgICAgIHRhcCgoY29ubmVjdGVkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFRPRE86IGZvciBlVUkgMTQsIGRyb3AgYm9vbGVhbiBzdXBwb3J0IGFuZCByZWZhY3RvclxuICAgICAgICAgICAgICAgICAgICAvLyBjaGVjayBpZiBmZWF0dXJlIGlzIGVuYWJsZWRcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNGZWF0dXJlRW5hYmxlZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgdGhpcy5zaG93Q29ubmVjdGlvblN0YXR1cyAhPT0gJ2Jvb2xlYW4nID8gdGhpcy5zaG93Q29ubmVjdGlvblN0YXR1cz8uZW5hYmxlZCA6IHRoaXMuc2hvd0Nvbm5lY3Rpb25TdGF0dXM7XG4gICAgICAgICAgICAgICAgICAgIC8vIGV4dHJhY3QgbGlmZXNwYW4gaWYgYW55XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxpZmVzcGFuID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiB0aGlzLnNob3dDb25uZWN0aW9uU3RhdHVzICE9PSAnYm9vbGVhbicgPyB0aGlzLnNob3dDb25uZWN0aW9uU3RhdHVzPy5tZXNzYWdlQm94Py5saWZlc3BhbiB8fCAwIDogMDtcblxuICAgICAgICAgICAgICAgICAgICAvLyBpZiB0aGUgdXNlciBuZWVkcyB0byBiZSBpbmZvcm1lZCBhYm91dCB0aGUgY29ubmVjdGlvbiBzdGF0dXNcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzRmVhdHVyZUVuYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb25uZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuZ2V0KCdldWkuQ09OTkVDVEVEJykuc3Vic2NyaWJlKCh0cmFuc2xhdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFzU2VydmljZS5ncm93bChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2V2ZXJpdHk6ICdzdWNjZXNzJywgc3VtbWFyeTogJ01FU1NBR0UnLCBkZXRhaWw6IHRyYW5zbGF0aW9uLCBsaWZlOiBsaWZlc3BhbiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlmZXNwYW4gPCAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5nZXQoJ2V1aS5OT1RDT05ORUNURUQnKS5zdWJzY3JpYmUoKHRyYW5zbGF0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYXNTZXJ2aWNlLmdyb3dsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzZXZlcml0eTogJ2RhbmdlcicsIHN1bW1hcnk6ICdFUlJPUicsIGRldGFpbDogdHJhbnNsYXRpb24sIGxpZmU6IGxpZmVzcGFuIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWZlc3BhbiA8IDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgeyBkaXNwYXRjaDogZmFsc2UgfSxcbiAgICApO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByb3RlY3RlZCBhY3Rpb25zOiBBY3Rpb25zLFxuICAgICAgICAvLyBUT0RPOiByZW1vdmUgb24gZVVJIDE0XG4gICAgICAgIEBJbmplY3QoU0hPV19DT05ORUNUSU9OX1NUQVRVU19UT0tFTikgcHJvdGVjdGVkIHNob3dDb25uZWN0aW9uU3RhdHVzOiBib29sZWFuIHwgQ29ubmVjdGlvblN0YXR1cyxcbiAgICAgICAgcHJvdGVjdGVkIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgICAgIHByb3RlY3RlZCBhc1NlcnZpY2U6IEV1aUdyb3dsU2VydmljZSxcbiAgICAgICAgQEluamVjdChQTEFURk9STV9JRCkgcHJvdGVjdGVkIHBsYXRmb3JtSWQ6IHVua25vd24sXG4gICAgKSB7fVxufVxuIl19
|
|
@@ -1,21 +1,31 @@
|
|
|
1
|
+
import { inject, PLATFORM_ID } from '@angular/core';
|
|
2
|
+
import { isPlatformBrowser } from '@angular/common';
|
|
1
3
|
import { CoreAppActionTypes } from '../actions/app.actions';
|
|
2
4
|
import * as extendProxy from 'extend';
|
|
3
5
|
// TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html
|
|
4
6
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
5
7
|
const extend = extendProxy.default || extendProxy;
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
8
|
+
export function localStorageSync(reducer, platformId) {
|
|
9
|
+
if (platformId) {
|
|
10
|
+
return (reducer) => {
|
|
11
|
+
return cb(reducer, isPlatformBrowser(platformId) ? localStorage : null);
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
else {
|
|
15
|
+
const platformId = inject(PLATFORM_ID, { optional: true });
|
|
16
|
+
return cb(reducer, isPlatformBrowser(platformId) ? localStorage : null);
|
|
17
|
+
}
|
|
12
18
|
}
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
+
export function sessionStorageSync(reducer, platformId) {
|
|
20
|
+
if (platformId) {
|
|
21
|
+
return (reducer) => {
|
|
22
|
+
return cb(reducer, isPlatformBrowser(platformId) ? sessionStorage : null);
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
const platformId = inject(PLATFORM_ID, { optional: true });
|
|
27
|
+
return cb(reducer, isPlatformBrowser(platformId) ? sessionStorage : null);
|
|
28
|
+
}
|
|
19
29
|
}
|
|
20
30
|
// Keys that are allowed to be synced with NgRx state from BrowserStorage
|
|
21
31
|
const disallowedKeys = ['loadedConfigModules', 'connect', 'currentModule', 'status', 'apiQueue'];
|
|
@@ -42,6 +52,9 @@ const filterAppState = (app) => {
|
|
|
42
52
|
* @param storage Type of storage to load the state from
|
|
43
53
|
*/
|
|
44
54
|
export const loadState = (storage = localStorage) => {
|
|
55
|
+
if (!storage) {
|
|
56
|
+
return undefined;
|
|
57
|
+
}
|
|
45
58
|
try {
|
|
46
59
|
// by default falls back to localStorage
|
|
47
60
|
const serializedState = storage.getItem('state');
|
|
@@ -64,28 +77,29 @@ const cb = (reducer, storage) => (state, action) => {
|
|
|
64
77
|
// We load the state from a storage and compare the version and userId with the provided ones.
|
|
65
78
|
// If they are the same, we merge the local state into the initial state.
|
|
66
79
|
// If there is a mismatch, we don't merge the local state, but update only the initial state.
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
80
|
+
if (storage) {
|
|
81
|
+
// load the state from the localStorage
|
|
82
|
+
const localState = loadState(storage);
|
|
83
|
+
// extract the details about user and app version from the action payload
|
|
84
|
+
const payloadVersion = action.payload?.version;
|
|
85
|
+
if (localState) {
|
|
86
|
+
// TODO: Why all these checks here? What is the purpose of this code?
|
|
87
|
+
// extract the details about user and app version from the storage state
|
|
88
|
+
const localVersion = localState?.app?.version;
|
|
89
|
+
// const localUserId = localState.user && localState.user.userId;
|
|
90
|
+
const isVersionOK = !localVersion || !payloadVersion || localVersion === payloadVersion;
|
|
91
|
+
// const isUserIdOK = (localUserId === payloadUserId);
|
|
92
|
+
// update the entire state with deep merge of states, if the version and user are the same
|
|
93
|
+
if (isVersionOK) {
|
|
94
|
+
state = extend(true, {}, state, localState);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
// update the app version, if defined
|
|
98
|
+
if (payloadVersion) {
|
|
99
|
+
state = { ...state, app: { ...state?.app, version: payloadVersion } };
|
|
82
100
|
}
|
|
83
|
-
}
|
|
84
|
-
// update the app version, if defined
|
|
85
|
-
if (payloadVersion) {
|
|
86
|
-
state = { ...state, app: { ...state?.app, version: payloadVersion } };
|
|
87
101
|
}
|
|
88
102
|
}
|
|
89
103
|
return reducer(state, action);
|
|
90
104
|
};
|
|
91
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YS5yZWR1Y2Vycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VydmljZXMvc3RvcmUvcmVkdWNlcnMvbWV0YS5yZWR1Y2Vycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsa0JBQWtCLEVBQW1CLE1BQU0sd0JBQXdCLENBQUM7QUFFN0UsT0FBTyxLQUFLLFdBQVcsTUFBTSxRQUFRLENBQUM7QUFFdEMsbUhBQW1IO0FBQ25ILDhEQUE4RDtBQUM5RCxNQUFNLE1BQU0sR0FBUyxXQUFZLENBQUMsT0FBTyxJQUFJLFdBQVcsQ0FBQztBQUV6RDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQXNCLE9BQXlCO0lBQzNFLE9BQU8sRUFBRSxDQUFJLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQztBQUN4QyxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLGtCQUFrQixDQUFzQixPQUF5QjtJQUM3RSxPQUFPLEVBQUUsQ0FBSSxPQUFPLEVBQUUsY0FBYyxDQUFDLENBQUM7QUFDMUMsQ0FBQztBQUVELHlFQUF5RTtBQUN6RSxNQUFNLGNBQWMsR0FBRyxDQUFDLHFCQUFxQixFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBRWpHOzs7R0FHRztBQUNILE1BQU0sY0FBYyxHQUFHLENBQUMsR0FBYSxFQUFZLEVBQUU7SUFDL0MsaUVBQWlFO0lBQ2pFLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNQLE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUVELE9BQU8sQ0FDSCxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztRQUNaLG1EQUFtRDtTQUNsRCxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMvQyxzREFBc0Q7U0FDckQsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFO1FBQ2pCLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDcEIsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQ2IsQ0FBQztBQUNOLENBQUMsQ0FBQztBQUVGOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxDQUFzQixVQUFtQixZQUFZLEVBQUssRUFBRTtJQUNqRixJQUFJLENBQUM7UUFDRCx3Q0FBd0M7UUFDeEMsTUFBTSxlQUFlLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVqRCxJQUFJLGVBQWUsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUMzQixPQUFPLFNBQVMsQ0FBQztRQUNyQixDQUFDO1FBRUQsb0JBQW9CO1FBQ3BCLElBQUksS0FBSyxHQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUM7UUFFM0MsOEJBQThCO1FBQzlCLEtBQUssR0FBRyxFQUFFLEdBQUcsS0FBSyxFQUFFLEdBQUcsRUFBRSxjQUFjLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFFdEQsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDWCxPQUFPLFNBQVMsQ0FBQztJQUNyQixDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsTUFBTSxFQUFFLEdBQ0osQ0FBc0IsT0FBeUIsRUFBRSxPQUFnQixFQUFFLEVBQUUsQ0FDckUsQ0FBQyxLQUFRLEVBQUUsTUFBYyxFQUFLLEVBQUU7SUFDNUIsSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLGtCQUFrQixDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2hELHlEQUF5RDtRQUN6RCw4RkFBOEY7UUFDOUYseUVBQXlFO1FBQ3pFLDZGQUE2RjtRQUU3Rix1Q0FBdUM7UUFDdkMsTUFBTSxVQUFVLEdBQU0sU0FBUyxDQUFJLE9BQU8sQ0FBQyxDQUFDO1FBRTVDLHlFQUF5RTtRQUN6RSxNQUFNLE9BQU8sR0FBSSxNQUEwQixDQUFDLE9BQU8sQ0FBQztRQUNwRCxNQUFNLGNBQWMsR0FBRyxPQUFPLEVBQUUsT0FBTyxDQUFDO1FBRXhDLElBQUksVUFBVSxFQUFFLENBQUM7WUFDYixxRUFBcUU7WUFDckUsd0VBQXdFO1lBQ3hFLE1BQU0sWUFBWSxHQUFHLFVBQVUsRUFBRSxHQUFHLEVBQUUsT0FBTyxDQUFDO1lBQzlDLGlFQUFpRTtZQUVqRSxNQUFNLFdBQVcsR0FBRyxDQUFDLFlBQVksSUFBSSxDQUFDLGNBQWMsSUFBSSxZQUFZLEtBQUssY0FBYyxDQUFDO1lBQ3hGLHNEQUFzRDtZQUV0RCwwRkFBMEY7WUFDMUYsSUFBSSxXQUFXLEVBQUUsQ0FBQztnQkFDZCxLQUFLLEdBQUcsTUFBTSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBQ2hELENBQUM7UUFDTCxDQUFDO1FBRUQscUNBQXFDO1FBQ3JDLElBQUksY0FBYyxFQUFFLENBQUM7WUFDakIsS0FBSyxHQUFHLEVBQUUsR0FBRyxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUUsR0FBRyxLQUFLLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsRUFBRSxDQUFDO1FBQzFFLENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTyxPQUFPLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ2xDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjdGlvbiwgQWN0aW9uUmVkdWNlciB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IENvcmVBcHBBY3Rpb25UeXBlcywgSW5pdFN0b3JlQWN0aW9uIH0gZnJvbSAnLi4vYWN0aW9ucy9hcHAuYWN0aW9ucyc7XG5pbXBvcnQgeyBBcHBTdGF0ZSwgQ29yZVN0YXRlIH0gZnJvbSAnQGV1aS9iYXNlJztcbmltcG9ydCAqIGFzIGV4dGVuZFByb3h5IGZyb20gJ2V4dGVuZCc7XG5cbi8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5jb25zdCBleHRlbmQgPSAoPGFueT5leHRlbmRQcm94eSkuZGVmYXVsdCB8fCBleHRlbmRQcm94eTtcblxuLyoqXG4gKiBVdGlsaXR5IG1ldGEtcmVkdWNlciB0byBsb2FkIHRoZSBzdGF0ZSBmcm9tIHRoZSBsb2NhbCBzdG9yYWdlXG4gKiBAcGFyYW0gcmVkdWNlciB0aGUgYWN0aW9uIHJlZHVjZXJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxvY2FsU3RvcmFnZVN5bmM8UyBleHRlbmRzIENvcmVTdGF0ZT4ocmVkdWNlcjogQWN0aW9uUmVkdWNlcjxTPik6IChzdGF0ZTogUywgYWN0aW9uOiBBY3Rpb24pID0+IFMge1xuICAgIHJldHVybiBjYjxTPihyZWR1Y2VyLCBsb2NhbFN0b3JhZ2UpO1xufVxuXG4vKipcbiAqIFV0aWxpdHkgbWV0YS1yZWR1Y2VyIHRvIGxvYWQgdGhlIHN0YXRlIGZyb20gdGhlIHNlc3Npb24gc3RvcmFnZVxuICogQHBhcmFtIHJlZHVjZXIgdGhlIGFjdGlvbiByZWR1Y2VyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXNzaW9uU3RvcmFnZVN5bmM8UyBleHRlbmRzIENvcmVTdGF0ZT4ocmVkdWNlcjogQWN0aW9uUmVkdWNlcjxTPik6IChzdGF0ZTogUywgYWN0aW9uOiBBY3Rpb24pID0+IFMge1xuICAgIHJldHVybiBjYjxTPihyZWR1Y2VyLCBzZXNzaW9uU3RvcmFnZSk7XG59XG5cbi8vIEtleXMgdGhhdCBhcmUgYWxsb3dlZCB0byBiZSBzeW5jZWQgd2l0aCBOZ1J4IHN0YXRlIGZyb20gQnJvd3NlclN0b3JhZ2VcbmNvbnN0IGRpc2FsbG93ZWRLZXlzID0gWydsb2FkZWRDb25maWdNb2R1bGVzJywgJ2Nvbm5lY3QnLCAnY3VycmVudE1vZHVsZScsICdzdGF0dXMnLCAnYXBpUXVldWUnXTtcblxuLyoqXG4gKiBmaWx0ZXJzIHRoZSBBcHBTdGF0ZSBieSByZW1vdmluZyB0aG9zZSBrZXlzIGZyb20gdGhlIHN0YXRlIGFuZCByZXR1cm4gYSBuZXcgc3RhdGUgT2JqZWN0XG4gKiBAcGFyYW0gYXBwIHRoZSBBcHBTdGF0ZVxuICovXG5jb25zdCBmaWx0ZXJBcHBTdGF0ZSA9IChhcHA6IEFwcFN0YXRlKTogQXBwU3RhdGUgPT4ge1xuICAgIC8vIGluIGNhc2UgYXBwIGlzIHVuZGVmaW5lZCBvciBudWxsIGl0IHNob3VsZCByZXR1cm4gZW1wdHkgb2JqZWN0XG4gICAgaWYgKCFhcHApIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICAgIE9iamVjdC5rZXlzKGFwcClcbiAgICAgICAgICAgIC8vIHNlbGVjdCBrZXlzIHRoYXQgYXJlIHByZXNlbnQgaW4gdGhlIGFsbG93ZWQgbGlzdFxuICAgICAgICAgICAgLmZpbHRlcigoa2V5KSA9PiAhZGlzYWxsb3dlZEtleXMuaW5jbHVkZXMoa2V5KSlcbiAgICAgICAgICAgIC8vIGJ1aWxkIGEgbmV3IG9iamVjdCB3aXRoIG9ubHkgdGhlIGFsbG93ZWQgcHJvcGVydGllc1xuICAgICAgICAgICAgLnJlZHVjZSgob2JqLCBrZXkpID0+IHtcbiAgICAgICAgICAgICAgICBvYmpba2V5XSA9IGFwcFtrZXldO1xuICAgICAgICAgICAgICAgIHJldHVybiBvYmo7XG4gICAgICAgICAgICB9LCB7fSlcbiAgICApO1xufTtcblxuLyoqXG4gKlxuICogQHBhcmFtIHN0b3JhZ2UgVHlwZSBvZiBzdG9yYWdlIHRvIGxvYWQgdGhlIHN0YXRlIGZyb21cbiAqL1xuZXhwb3J0IGNvbnN0IGxvYWRTdGF0ZSA9IDxTIGV4dGVuZHMgQ29yZVN0YXRlPihzdG9yYWdlOiBTdG9yYWdlID0gbG9jYWxTdG9yYWdlKTogUyA9PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgLy8gYnkgZGVmYXVsdCBmYWxscyBiYWNrIHRvIGxvY2FsU3RvcmFnZVxuICAgICAgICBjb25zdCBzZXJpYWxpemVkU3RhdGUgPSBzdG9yYWdlLmdldEl0ZW0oJ3N0YXRlJyk7XG5cbiAgICAgICAgaWYgKHNlcmlhbGl6ZWRTdGF0ZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGRlc2VyaWFsaXplIHN0YXRlXG4gICAgICAgIGxldCBzdGF0ZTogUyA9IEpTT04ucGFyc2Uoc2VyaWFsaXplZFN0YXRlKTtcblxuICAgICAgICAvLyBmaWx0ZXIgQXBwU3RhdGUgYW5kIHJlcGxhY2VcbiAgICAgICAgc3RhdGUgPSB7IC4uLnN0YXRlLCBhcHA6IGZpbHRlckFwcFN0YXRlKHN0YXRlPy5hcHApIH07XG5cbiAgICAgICAgcmV0dXJuIHN0YXRlO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbn07XG5cbmNvbnN0IGNiID1cbiAgICA8UyBleHRlbmRzIENvcmVTdGF0ZT4ocmVkdWNlcjogQWN0aW9uUmVkdWNlcjxTPiwgc3RvcmFnZTogU3RvcmFnZSkgPT5cbiAgICAoc3RhdGU6IFMsIGFjdGlvbjogQWN0aW9uKTogUyA9PiB7XG4gICAgICAgIGlmIChhY3Rpb24udHlwZSA9PT0gQ29yZUFwcEFjdGlvblR5cGVzLklOSVRfU1RPUkUpIHtcbiAgICAgICAgICAgIC8vIFRoaXMgYWN0aW9uIG11c3QgYmUgZGlzcGF0Y2hlZCBmcm9tIGFuIGFwcCBpbml0aWFsaXplclxuICAgICAgICAgICAgLy8gV2UgbG9hZCB0aGUgc3RhdGUgZnJvbSBhIHN0b3JhZ2UgYW5kIGNvbXBhcmUgdGhlIHZlcnNpb24gYW5kIHVzZXJJZCB3aXRoIHRoZSBwcm92aWRlZCBvbmVzLlxuICAgICAgICAgICAgLy8gSWYgdGhleSBhcmUgdGhlIHNhbWUsIHdlIG1lcmdlIHRoZSBsb2NhbCBzdGF0ZSBpbnRvIHRoZSBpbml0aWFsIHN0YXRlLlxuICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMgYSBtaXNtYXRjaCwgd2UgZG9uJ3QgbWVyZ2UgdGhlIGxvY2FsIHN0YXRlLCBidXQgdXBkYXRlIG9ubHkgdGhlIGluaXRpYWwgc3RhdGUuXG5cbiAgICAgICAgICAgIC8vIGxvYWQgdGhlIHN0YXRlIGZyb20gdGhlIGxvY2FsU3RvcmFnZVxuICAgICAgICAgICAgY29uc3QgbG9jYWxTdGF0ZTogUyA9IGxvYWRTdGF0ZTxTPihzdG9yYWdlKTtcblxuICAgICAgICAgICAgLy8gZXh0cmFjdCB0aGUgZGV0YWlscyBhYm91dCB1c2VyIGFuZCBhcHAgdmVyc2lvbiBmcm9tIHRoZSBhY3Rpb24gcGF5bG9hZFxuICAgICAgICAgICAgY29uc3QgcGF5bG9hZCA9IChhY3Rpb24gYXMgSW5pdFN0b3JlQWN0aW9uKS5wYXlsb2FkO1xuICAgICAgICAgICAgY29uc3QgcGF5bG9hZFZlcnNpb24gPSBwYXlsb2FkPy52ZXJzaW9uO1xuXG4gICAgICAgICAgICBpZiAobG9jYWxTdGF0ZSkge1xuICAgICAgICAgICAgICAgIC8vIFRPRE86IFdoeSBhbGwgdGhlc2UgY2hlY2tzIGhlcmU/IFdoYXQgaXMgdGhlIHB1cnBvc2Ugb2YgdGhpcyBjb2RlP1xuICAgICAgICAgICAgICAgIC8vIGV4dHJhY3QgdGhlIGRldGFpbHMgYWJvdXQgdXNlciBhbmQgYXBwIHZlcnNpb24gZnJvbSB0aGUgc3RvcmFnZSBzdGF0ZVxuICAgICAgICAgICAgICAgIGNvbnN0IGxvY2FsVmVyc2lvbiA9IGxvY2FsU3RhdGU/LmFwcD8udmVyc2lvbjtcbiAgICAgICAgICAgICAgICAvLyBjb25zdCBsb2NhbFVzZXJJZCA9IGxvY2FsU3RhdGUudXNlciAmJiBsb2NhbFN0YXRlLnVzZXIudXNlcklkO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgaXNWZXJzaW9uT0sgPSAhbG9jYWxWZXJzaW9uIHx8ICFwYXlsb2FkVmVyc2lvbiB8fCBsb2NhbFZlcnNpb24gPT09IHBheWxvYWRWZXJzaW9uO1xuICAgICAgICAgICAgICAgIC8vIGNvbnN0IGlzVXNlcklkT0sgPSAobG9jYWxVc2VySWQgPT09IHBheWxvYWRVc2VySWQpO1xuXG4gICAgICAgICAgICAgICAgLy8gdXBkYXRlIHRoZSBlbnRpcmUgc3RhdGUgd2l0aCBkZWVwIG1lcmdlIG9mIHN0YXRlcywgaWYgdGhlIHZlcnNpb24gYW5kIHVzZXIgYXJlIHRoZSBzYW1lXG4gICAgICAgICAgICAgICAgaWYgKGlzVmVyc2lvbk9LKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXRlID0gZXh0ZW5kKHRydWUsIHt9LCBzdGF0ZSwgbG9jYWxTdGF0ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyB1cGRhdGUgdGhlIGFwcCB2ZXJzaW9uLCBpZiBkZWZpbmVkXG4gICAgICAgICAgICBpZiAocGF5bG9hZFZlcnNpb24pIHtcbiAgICAgICAgICAgICAgICBzdGF0ZSA9IHsgLi4uc3RhdGUsIGFwcDogeyAuLi5zdGF0ZT8uYXBwLCB2ZXJzaW9uOiBwYXlsb2FkVmVyc2lvbiB9IH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVkdWNlcihzdGF0ZSwgYWN0aW9uKTtcbiAgICB9O1xuIl19
|
|
105
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YS5yZWR1Y2Vycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VydmljZXMvc3RvcmUvcmVkdWNlcnMvbWV0YS5yZWR1Y2Vycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVwRCxPQUFPLEVBQUUsa0JBQWtCLEVBQW1CLE1BQU0sd0JBQXdCLENBQUM7QUFFN0UsT0FBTyxLQUFLLFdBQVcsTUFBTSxRQUFRLENBQUM7QUFFdEMsbUhBQW1IO0FBQ25ILDhEQUE4RDtBQUM5RCxNQUFNLE1BQU0sR0FBUyxXQUFZLENBQUMsT0FBTyxJQUFJLFdBQVcsQ0FBQztBQVl6RCxNQUFNLFVBQVUsZ0JBQWdCLENBQXNCLE9BQXlCLEVBQUUsVUFBb0I7SUFDakcsSUFBRyxVQUFVLEVBQUUsQ0FBQztRQUNaLE9BQU8sQ0FBc0IsT0FBeUIsRUFBbUMsRUFBRTtZQUN2RixPQUFPLEVBQUUsQ0FBSSxPQUFPLEVBQUUsaUJBQWlCLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0UsQ0FBQyxDQUFBO0lBQ0wsQ0FBQztTQUFNLENBQUM7UUFDSixNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsV0FBVyxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDM0QsT0FBTyxFQUFFLENBQUksT0FBTyxFQUFFLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9FLENBQUM7QUFDTCxDQUFDO0FBWUQsTUFBTSxVQUFVLGtCQUFrQixDQUFzQixPQUF5QixFQUFFLFVBQW9C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QU0sY0FBYyxHQUFJLE1BQTBCLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQztZQUVwRSxJQUFJLFVBQVUsRUFBRSxDQUFDO2dCQUNiLHFFQUFxRTtnQkFDckUsd0VBQXdFO2dCQUN4RSxNQUFNLFlBQVksR0FBRyxVQUFVLEVBQUUsR0FBRyxFQUFFLE9BQU8sQ0FBQztnQkFDOUMsaUVBQWlFO2dCQUVqRSxNQUFNLFdBQVcsR0FBRyxDQUFDLFlBQVksSUFBSSxDQUFDLGNBQWMsSUFBSSxZQUFZLEtBQUssY0FBYyxDQUFDO2dCQUN4RixzREFBc0Q7Z0JBRXRELDBGQUEwRjtnQkFDMUYsSUFBSSxXQUFXLEVBQUUsQ0FBQztvQkFDZCxLQUFLLEdBQUcsTUFBTSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDO2dCQUNoRCxDQUFDO1lBQ0wsQ0FBQztZQUVELHFDQUFxQztZQUNyQyxJQUFJLGNBQWMsRUFBRSxDQUFDO2dCQUNqQixLQUFLLEdBQUcsRUFBRSxHQUFHLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRSxHQUFHLEtBQUssRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxFQUFFLENBQUM7WUFDMUUsQ0FBQztRQUNMLENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTyxPQUFPLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ2xDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgUExBVEZPUk1fSUQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEFjdGlvbiwgQWN0aW9uUmVkdWNlciB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IENvcmVBcHBBY3Rpb25UeXBlcywgSW5pdFN0b3JlQWN0aW9uIH0gZnJvbSAnLi4vYWN0aW9ucy9hcHAuYWN0aW9ucyc7XG5pbXBvcnQgeyBBcHBTdGF0ZSwgQ29yZVN0YXRlIH0gZnJvbSAnQGV1aS9iYXNlJztcbmltcG9ydCAqIGFzIGV4dGVuZFByb3h5IGZyb20gJ2V4dGVuZCc7XG5cbi8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5jb25zdCBleHRlbmQgPSAoPGFueT5leHRlbmRQcm94eSkuZGVmYXVsdCB8fCBleHRlbmRQcm94eTtcblxuLyoqXG4gKiBVdGlsaXR5IG1ldGEtcmVkdWNlciB0byBsb2FkIHRoZSBzdGF0ZSBmcm9tIHRoZSBsb2NhbCBzdG9yYWdlXG4gKiBAcGFyYW0gcGxhdGZvcm1JZCB0aGUgcGxhdGZvcm1JZCBiYXNlZCBvbiBQTEFURk9STV9JRCB0b2tlbiBvZiBBbmd1bGFyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsb2NhbFN0b3JhZ2VTeW5jPFMgZXh0ZW5kcyBDb3JlU3RhdGU+KHBsYXRmb3JtSWQ6IHVua25vd24pOiAoKHJlZHVjZXI6IEFjdGlvblJlZHVjZXI8Uz4pID0+IChzdGF0ZTogUywgYWN0aW9uOiBBY3Rpb24pID0+IFMpO1xuLyoqXG4gKiBVdGlsaXR5IG1ldGEtcmVkdWNlciB0byBsb2FkIHRoZSBzdGF0ZSBmcm9tIHRoZSBsb2NhbCBzdG9yYWdlXG4gKiBAcGFyYW0gcmVkdWNlciB0aGUgYWN0aW9uIHJlZHVjZXJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxvY2FsU3RvcmFnZVN5bmM8UyBleHRlbmRzIENvcmVTdGF0ZT4ocmVkdWNlcjogQWN0aW9uUmVkdWNlcjxTPik6IChzdGF0ZTogUywgYWN0aW9uOiBBY3Rpb24pID0+IFM7XG5leHBvcnQgZnVuY3Rpb24gbG9jYWxTdG9yYWdlU3luYzxTIGV4dGVuZHMgQ29yZVN0YXRlPihyZWR1Y2VyOiBBY3Rpb25SZWR1Y2VyPFM+LCBwbGF0Zm9ybUlkPzogdW5rbm93bik6IEZ1bmN0aW9uIHtcbiAgICBpZihwbGF0Zm9ybUlkKSB7XG4gICAgICAgIHJldHVybiA8VCBleHRlbmRzIENvcmVTdGF0ZT4ocmVkdWNlcjogQWN0aW9uUmVkdWNlcjxUPik6IChzdGF0ZTogVCwgYWN0aW9uOiBBY3Rpb24pID0+IFQgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGNiPFQ+KHJlZHVjZXIsIGlzUGxhdGZvcm1Ccm93c2VyKHBsYXRmb3JtSWQpID8gbG9jYWxTdG9yYWdlIDogbnVsbCk7XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBwbGF0Zm9ybUlkID0gaW5qZWN0KFBMQVRGT1JNX0lELCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICAgICAgICByZXR1cm4gY2I8Uz4ocmVkdWNlciwgaXNQbGF0Zm9ybUJyb3dzZXIocGxhdGZvcm1JZCkgPyBsb2NhbFN0b3JhZ2UgOiBudWxsKTtcbiAgICB9XG59XG5cbi8qKlxuICogVXRpbGl0eSBtZXRhLXJlZHVjZXIgdG8gbG9hZCB0aGUgc3RhdGUgZnJvbSB0aGUgc2Vzc2lvbiBzdG9yYWdlXG4gKiBAcGFyYW0gcGxhdGZvcm1JZCB0aGUgcGxhdGZvcm1JZCBiYXNlZCBvbiBQTEFURk9STV9JRCB0b2tlbiBvZiBBbmd1bGFyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXNzaW9uU3RvcmFnZVN5bmM8UyBleHRlbmRzIENvcmVTdGF0ZT4ocGxhdGZvcm1JZDogdW5rbm93bik6ICgocmVkdWNlcjogQWN0aW9uUmVkdWNlcjxTPikgPT4gKHN0YXRlOiBTLCBhY3Rpb246IEFjdGlvbikgPT4gUyk7XG4vKipcbiAqIFV0aWxpdHkgbWV0YS1yZWR1Y2VyIHRvIGxvYWQgdGhlIHN0YXRlIGZyb20gdGhlIHNlc3Npb24gc3RvcmFnZVxuICogQHBhcmFtIHJlZHVjZXIgdGhlIGFjdGlvbiByZWR1Y2VyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXNzaW9uU3RvcmFnZVN5bmM8UyBleHRlbmRzIENvcmVTdGF0ZT4ocmVkdWNlcjogQWN0aW9uUmVkdWNlcjxTPik6IChzdGF0ZTogUywgYWN0aW9uOiBBY3Rpb24pID0+IFM7XG5leHBvcnQgZnVuY3Rpb24gc2Vzc2lvblN0b3JhZ2VTeW5jPFMgZXh0ZW5kcyBDb3JlU3RhdGU+KHJlZHVjZXI6IEFjdGlvblJlZHVjZXI8Uz4sIHBsYXRmb3JtSWQ/OiB1bmtub3duKTogRnVuY3Rpb24ge1xuICAgIGlmKHBsYXRmb3JtSWQpIHtcbiAgICAgICAgcmV0dXJuIDxUIGV4dGVuZHMgQ29yZVN0YXRlPihyZWR1Y2VyOiBBY3Rpb25SZWR1Y2VyPFQ+KTogKHN0YXRlOiBULCBhY3Rpb246IEFjdGlvbikgPT4gVCA9PiB7XG4gICAgICAgICAgICByZXR1cm4gY2I8VD4ocmVkdWNlciwgaXNQbGF0Zm9ybUJyb3dzZXIocGxhdGZvcm1JZCkgPyBzZXNzaW9uU3RvcmFnZSA6IG51bGwpO1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgcGxhdGZvcm1JZCA9IGluamVjdChQTEFURk9STV9JRCwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgICAgICAgcmV0dXJuIGNiPFM+KHJlZHVjZXIsIGlzUGxhdGZvcm1Ccm93c2VyKHBsYXRmb3JtSWQpID8gc2Vzc2lvblN0b3JhZ2UgOiBudWxsKTtcbiAgICB9XG59XG5cbi8vIEtleXMgdGhhdCBhcmUgYWxsb3dlZCB0byBiZSBzeW5jZWQgd2l0aCBOZ1J4IHN0YXRlIGZyb20gQnJvd3NlclN0b3JhZ2VcbmNvbnN0IGRpc2FsbG93ZWRLZXlzID0gWydsb2FkZWRDb25maWdNb2R1bGVzJywgJ2Nvbm5lY3QnLCAnY3VycmVudE1vZHVsZScsICdzdGF0dXMnLCAnYXBpUXVldWUnXTtcblxuLyoqXG4gKiBmaWx0ZXJzIHRoZSBBcHBTdGF0ZSBieSByZW1vdmluZyB0aG9zZSBrZXlzIGZyb20gdGhlIHN0YXRlIGFuZCByZXR1cm4gYSBuZXcgc3RhdGUgT2JqZWN0XG4gKiBAcGFyYW0gYXBwIHRoZSBBcHBTdGF0ZVxuICovXG5jb25zdCBmaWx0ZXJBcHBTdGF0ZSA9IChhcHA6IEFwcFN0YXRlKTogQXBwU3RhdGUgPT4ge1xuICAgIC8vIGluIGNhc2UgYXBwIGlzIHVuZGVmaW5lZCBvciBudWxsIGl0IHNob3VsZCByZXR1cm4gZW1wdHkgb2JqZWN0XG4gICAgaWYgKCFhcHApIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICAgIE9iamVjdC5rZXlzKGFwcClcbiAgICAgICAgICAgIC8vIHNlbGVjdCBrZXlzIHRoYXQgYXJlIHByZXNlbnQgaW4gdGhlIGFsbG93ZWQgbGlzdFxuICAgICAgICAgICAgLmZpbHRlcigoa2V5KSA9PiAhZGlzYWxsb3dlZEtleXMuaW5jbHVkZXMoa2V5KSlcbiAgICAgICAgICAgIC8vIGJ1aWxkIGEgbmV3IG9iamVjdCB3aXRoIG9ubHkgdGhlIGFsbG93ZWQgcHJvcGVydGllc1xuICAgICAgICAgICAgLnJlZHVjZSgob2JqLCBrZXkpID0+IHtcbiAgICAgICAgICAgICAgICBvYmpba2V5XSA9IGFwcFtrZXldO1xuICAgICAgICAgICAgICAgIHJldHVybiBvYmo7XG4gICAgICAgICAgICB9LCB7fSlcbiAgICApO1xufTtcblxuLyoqXG4gKlxuICogQHBhcmFtIHN0b3JhZ2UgVHlwZSBvZiBzdG9yYWdlIHRvIGxvYWQgdGhlIHN0YXRlIGZyb21cbiAqL1xuZXhwb3J0IGNvbnN0IGxvYWRTdGF0ZSA9IDxTIGV4dGVuZHMgQ29yZVN0YXRlPihzdG9yYWdlOiBTdG9yYWdlIHwgbnVsbCA9IGxvY2FsU3RvcmFnZSk6IFMgPT4ge1xuICAgIGlmICghc3RvcmFnZSkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICAgIC8vIGJ5IGRlZmF1bHQgZmFsbHMgYmFjayB0byBsb2NhbFN0b3JhZ2VcbiAgICAgICAgY29uc3Qgc2VyaWFsaXplZFN0YXRlID0gc3RvcmFnZS5nZXRJdGVtKCdzdGF0ZScpO1xuXG4gICAgICAgIGlmIChzZXJpYWxpemVkU3RhdGUgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBkZXNlcmlhbGl6ZSBzdGF0ZVxuICAgICAgICBsZXQgc3RhdGU6IFMgPSBKU09OLnBhcnNlKHNlcmlhbGl6ZWRTdGF0ZSk7XG5cbiAgICAgICAgLy8gZmlsdGVyIEFwcFN0YXRlIGFuZCByZXBsYWNlXG4gICAgICAgIHN0YXRlID0geyAuLi5zdGF0ZSwgYXBwOiBmaWx0ZXJBcHBTdGF0ZShzdGF0ZT8uYXBwKSB9O1xuXG4gICAgICAgIHJldHVybiBzdGF0ZTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG59O1xuXG5jb25zdCBjYiA9XG4gICAgPFMgZXh0ZW5kcyBDb3JlU3RhdGU+KHJlZHVjZXI6IEFjdGlvblJlZHVjZXI8Uz4sIHN0b3JhZ2U6IFN0b3JhZ2UgfCBudWxsKSA9PlxuICAgIChzdGF0ZTogUywgYWN0aW9uOiBBY3Rpb24pOiBTID0+IHtcbiAgICAgICAgaWYgKGFjdGlvbi50eXBlID09PSBDb3JlQXBwQWN0aW9uVHlwZXMuSU5JVF9TVE9SRSkge1xuICAgICAgICAgICAgLy8gVGhpcyBhY3Rpb24gbXVzdCBiZSBkaXNwYXRjaGVkIGZyb20gYW4gYXBwIGluaXRpYWxpemVyXG4gICAgICAgICAgICAvLyBXZSBsb2FkIHRoZSBzdGF0ZSBmcm9tIGEgc3RvcmFnZSBhbmQgY29tcGFyZSB0aGUgdmVyc2lvbiBhbmQgdXNlcklkIHdpdGggdGhlIHByb3ZpZGVkIG9uZXMuXG4gICAgICAgICAgICAvLyBJZiB0aGV5IGFyZSB0aGUgc2FtZSwgd2UgbWVyZ2UgdGhlIGxvY2FsIHN0YXRlIGludG8gdGhlIGluaXRpYWwgc3RhdGUuXG4gICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBhIG1pc21hdGNoLCB3ZSBkb24ndCBtZXJnZSB0aGUgbG9jYWwgc3RhdGUsIGJ1dCB1cGRhdGUgb25seSB0aGUgaW5pdGlhbCBzdGF0ZS5cblxuICAgICAgICAgICAgaWYgKHN0b3JhZ2UpIHtcbiAgICAgICAgICAgICAgICAvLyBsb2FkIHRoZSBzdGF0ZSBmcm9tIHRoZSBsb2NhbFN0b3JhZ2VcbiAgICAgICAgICAgICAgICBjb25zdCBsb2NhbFN0YXRlOiBTID0gbG9hZFN0YXRlPFM+KHN0b3JhZ2UpO1xuXG4gICAgICAgICAgICAgICAgLy8gZXh0cmFjdCB0aGUgZGV0YWlscyBhYm91dCB1c2VyIGFuZCBhcHAgdmVyc2lvbiBmcm9tIHRoZSBhY3Rpb24gcGF5bG9hZFxuICAgICAgICAgICAgICAgIGNvbnN0IHBheWxvYWRWZXJzaW9uID0gKGFjdGlvbiBhcyBJbml0U3RvcmVBY3Rpb24pLnBheWxvYWQ/LnZlcnNpb247XG5cbiAgICAgICAgICAgICAgICBpZiAobG9jYWxTdGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBUT0RPOiBXaHkgYWxsIHRoZXNlIGNoZWNrcyBoZXJlPyBXaGF0IGlzIHRoZSBwdXJwb3NlIG9mIHRoaXMgY29kZT9cbiAgICAgICAgICAgICAgICAgICAgLy8gZXh0cmFjdCB0aGUgZGV0YWlscyBhYm91dCB1c2VyIGFuZCBhcHAgdmVyc2lvbiBmcm9tIHRoZSBzdG9yYWdlIHN0YXRlXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxvY2FsVmVyc2lvbiA9IGxvY2FsU3RhdGU/LmFwcD8udmVyc2lvbjtcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc3QgbG9jYWxVc2VySWQgPSBsb2NhbFN0YXRlLnVzZXIgJiYgbG9jYWxTdGF0ZS51c2VyLnVzZXJJZDtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBpc1ZlcnNpb25PSyA9ICFsb2NhbFZlcnNpb24gfHwgIXBheWxvYWRWZXJzaW9uIHx8IGxvY2FsVmVyc2lvbiA9PT0gcGF5bG9hZFZlcnNpb247XG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnN0IGlzVXNlcklkT0sgPSAobG9jYWxVc2VySWQgPT09IHBheWxvYWRVc2VySWQpO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIHVwZGF0ZSB0aGUgZW50aXJlIHN0YXRlIHdpdGggZGVlcCBtZXJnZSBvZiBzdGF0ZXMsIGlmIHRoZSB2ZXJzaW9uIGFuZCB1c2VyIGFyZSB0aGUgc2FtZVxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNWZXJzaW9uT0spIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gZXh0ZW5kKHRydWUsIHt9LCBzdGF0ZSwgbG9jYWxTdGF0ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyB1cGRhdGUgdGhlIGFwcCB2ZXJzaW9uLCBpZiBkZWZpbmVkXG4gICAgICAgICAgICAgICAgaWYgKHBheWxvYWRWZXJzaW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXRlID0geyAuLi5zdGF0ZSwgYXBwOiB7IC4uLnN0YXRlPy5hcHAsIHZlcnNpb246IHBheWxvYWRWZXJzaW9uIH0gfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVkdWNlcihzdGF0ZSwgYWN0aW9uKTtcbiAgICB9O1xuIl19
|