@eui/core 18.0.0-rc.3 → 18.0.0-rc.31
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/ActivatedRouteAction.html +13 -9
- package/docs/classes/AddApiQueueItemAction.html +13 -9
- package/docs/classes/AddAppLoadedConfigModulesAction.html +13 -9
- package/docs/classes/ApiQueueServiceMock.html +13 -9
- package/docs/classes/AsyncStorageService.html +13 -9
- package/docs/classes/AsyncStorageServiceMock.html +13 -9
- package/docs/classes/CssUtils.html +13 -9
- package/docs/classes/EmptyApiQueueAction.html +13 -9
- package/docs/classes/ErrorSubClass.html +13 -9
- package/docs/classes/EuiCoreRootGuardClass.html +13 -9
- package/docs/classes/EuiError.html +13 -9
- package/docs/classes/I18nResourceImpl.html +13 -9
- package/docs/classes/InitStoreAction.html +13 -9
- package/docs/classes/LogServiceMock.html +13 -9
- package/docs/classes/RemoveApiQueueItemAction.html +13 -9
- package/docs/classes/RouterMock.html +13 -9
- package/docs/classes/StorageService.html +13 -9
- package/docs/classes/StorageServiceMock.html +13 -9
- package/docs/classes/StoreMock.html +13 -9
- package/docs/classes/TranslateServiceMock.html +13 -9
- package/docs/classes/UpdateAppConnectionAction.html +13 -9
- package/docs/classes/UpdateAppStatusAction.html +13 -9
- package/docs/classes/UpdateAppVersionAction.html +13 -9
- package/docs/classes/UpdateCurrentModuleAction.html +13 -9
- package/docs/classes/UpdateI18nStateAction.html +13 -9
- package/docs/classes/UpdateLocaleStateAction.html +13 -9
- package/docs/classes/UpdateNotificationsListAction.html +13 -9
- package/docs/classes/UpdateUserDashboardAction.html +13 -9
- package/docs/classes/UpdateUserDetailsAction.html +13 -9
- package/docs/classes/UpdateUserPreferencesAction.html +13 -9
- package/docs/classes/UpdateUserRightsAction.html +13 -9
- package/docs/classes/UpdateUserStateAction.html +13 -9
- package/docs/dependencies.html +36 -32
- package/docs/directives/TranslateMockDirective.html +13 -9
- package/docs/index.html +14 -10
- package/docs/injectables/ApiQueueService.html +13 -9
- package/docs/injectables/CoreAppEffects.html +13 -9
- package/docs/injectables/EuiAppShellService.html +13 -9
- package/docs/injectables/EuiDynamicComponentService.html +13 -9
- package/docs/injectables/EuiDynamicMenuService.html +15 -11
- package/docs/injectables/EuiGrowlService.html +13 -9
- package/docs/injectables/EuiLoaderService.html +13 -9
- package/docs/injectables/EuiPermissionService.html +13 -9
- package/docs/injectables/EuiThemeService.html +310 -105
- package/docs/injectables/EuiTimezoneService.html +13 -9
- package/docs/injectables/GlobalErrorHandler.html +13 -9
- package/docs/injectables/I18nLoader.html +13 -9
- package/docs/injectables/I18nService.html +13 -9
- package/docs/injectables/I18nServiceMock.html +13 -9
- package/docs/injectables/LocalForageService.html +13 -9
- package/docs/injectables/LocalStorageService.html +13 -9
- package/docs/injectables/LocaleService.html +13 -9
- package/docs/injectables/LocaleServiceMock.html +13 -9
- package/docs/injectables/LogService.html +13 -9
- package/docs/injectables/SessionStorageService.html +13 -9
- package/docs/injectables/StoreService.html +13 -9
- package/docs/injectables/StoreServiceMock.html +13 -9
- package/docs/injectables/UserService.html +13 -9
- package/docs/injectables/UserServiceMock.html +13 -9
- package/docs/interceptors/AddLangParamInterceptor.html +13 -9
- package/docs/interceptors/CachePreventionInterceptor.html +13 -9
- package/docs/interceptors/CorsSecurityInterceptor.html +13 -9
- package/docs/interceptors/CsrfPreventionInterceptor.html +13 -9
- package/docs/interceptors/EuLoginSessionTimeoutHandlingInterceptor.html +13 -9
- package/docs/interceptors/HttpErrorHandlerInterceptor.html +13 -9
- package/docs/interceptors/UxRequestErrorModelInterceptor.html +13 -9
- package/docs/interfaces/Dependency.html +13 -9
- package/docs/interfaces/EuiTimeZone.html +13 -9
- package/docs/interfaces/IEuiTheme.html +387 -0
- package/docs/interfaces/Library.html +13 -9
- package/docs/interfaces/LoadedResources.html +13 -9
- package/docs/interfaces/LoadedResourcesError.html +13 -9
- package/docs/interfaces/ModuleLoadEvent.html +13 -9
- package/docs/interfaces/Policy.html +13 -9
- package/docs/interfaces/ResourceError.html +13 -9
- package/docs/interfaces/ThemeState.html +309 -0
- package/docs/interfaces/UIState.html +13 -9
- package/docs/js/libs/bootstrap-native.js +1 -1
- 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/license.html +13 -9
- package/docs/miscellaneous/enumerations.html +79 -15
- package/docs/miscellaneous/functions.html +13 -9
- package/docs/miscellaneous/typealiases.html +13 -9
- package/docs/miscellaneous/variables.html +68 -9
- package/docs/modules/CoreModule.html +13 -9
- package/docs/modules/I18nModule.html +13 -9
- package/docs/modules/LogModule.html +13 -9
- package/docs/modules/TranslateMockModule.html +13 -9
- package/docs/modules.html +13 -9
- package/docs/pipes/TranslateMockPipe.html +13 -9
- package/docs/properties.html +13 -9
- package/esm2022/index.mjs +3 -1
- package/esm2022/lib/services/dynamic-menu/dynamic-menu.service.mjs +2 -5
- package/esm2022/lib/services/eui-theme.service.mjs +186 -26
- package/esm2022/lib/services/locale/locale.service.mjs +2 -1
- package/fesm2022/eui-core.mjs +203 -46
- package/fesm2022/eui-core.mjs.map +1 -1
- package/index.d.ts +1 -0
- package/index.d.ts.map +1 -1
- package/lib/helpers/dom-helpers.d.ts.map +1 -1
- package/lib/helpers/form-helpers.d.ts +2 -2
- package/lib/helpers/form-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-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/package.json +4 -4
|
@@ -3,11 +3,8 @@ import { getUserState } from '@eui/base';
|
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
import * as i1 from "../permission/permission.service";
|
|
5
5
|
import * as i2 from "../store";
|
|
6
|
-
// TODO: Type of LINK should be UxLink or something relevant. Do we need that service anymore?
|
|
7
|
-
// TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html
|
|
8
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
9
6
|
export class EuiDynamicMenuService {
|
|
10
|
-
// TODO: it should be moved
|
|
7
|
+
// TODO: it should be moved euiService, or it should be static
|
|
11
8
|
// TODO: can we moved that service inside the module of the component that's using it?
|
|
12
9
|
constructor(euiPermission, store) {
|
|
13
10
|
this.euiPermission = euiPermission;
|
|
@@ -66,4 +63,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImpor
|
|
|
66
63
|
providedIn: 'root',
|
|
67
64
|
}]
|
|
68
65
|
}], ctorParameters: () => [{ type: i1.EuiPermissionService }, { type: i2.StoreService }] });
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1tZW51LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2R5bmFtaWMtbWVudS9keW5hbWljLW1lbnUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxZQUFZLEVBQWUsTUFBTSxXQUFXLENBQUM7Ozs7QUFPdEQsTUFBTSxPQUFPLHFCQUFxQjtJQUc5Qiw4REFBOEQ7SUFDOUQsc0ZBQXNGO0lBQ3RGLFlBQ1ksYUFBbUMsRUFDbkMsS0FBbUI7UUFEbkIsa0JBQWEsR0FBYixhQUFhLENBQXNCO1FBQ25DLFVBQUssR0FBTCxLQUFLLENBQWM7UUFOL0IsY0FBUyxHQUF1QixFQUFFLENBQUM7UUFRL0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDL0MsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ2pCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUNwQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsWUFBWTtRQUNSLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMxQixDQUFDO0lBRUQsNEJBQTRCLENBQUMsS0FBeUI7UUFDbEQsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDekIsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUN4QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDckUsQ0FBQztZQUVELDRDQUE0QztZQUM1QyxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDckIsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQztvQkFDcEQsT0FBTyxLQUFLLENBQUM7Z0JBQ2pCLENBQUM7WUFDTCxDQUFDO1lBQ0QsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3RCLEtBQUssTUFBTSxhQUFhLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO29CQUM5QyxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUM7d0JBQy9DLE9BQU8sS0FBSyxDQUFDO29CQUNqQixDQUFDO2dCQUNMLENBQUM7WUFDTCxDQUFDO1lBRUQsZ0VBQWdFO1lBQ2hFLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUN0QixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUM5RCxDQUFDO1lBQ0QsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7Z0JBQ3ZCLEtBQUssTUFBTSxjQUFjLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO29CQUNoRCxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7d0JBQ2hELE9BQU8sSUFBSSxDQUFDO29CQUNoQixDQUFDO2dCQUNMLENBQUM7Z0JBQ0QsNERBQTREO2dCQUM1RCxPQUFPLEtBQUssQ0FBQztZQUNqQixDQUFDO1lBRUQsNkRBQTZEO1lBQzdELE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs4R0F6RFEscUJBQXFCO2tIQUFyQixxQkFBcUIsY0FGbEIsTUFBTTs7MkZBRVQscUJBQXFCO2tCQUhqQyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGdldFVzZXJTdGF0ZSwgRXVpTWVudUl0ZW0gfSBmcm9tICdAZXVpL2Jhc2UnO1xuaW1wb3J0IHsgRXVpUGVybWlzc2lvblNlcnZpY2UgfSBmcm9tICcuLi9wZXJtaXNzaW9uL3Blcm1pc3Npb24uc2VydmljZSc7XG5pbXBvcnQgeyBTdG9yZVNlcnZpY2UgfSBmcm9tICcuLi9zdG9yZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEV1aUR5bmFtaWNNZW51U2VydmljZSB7XG4gICAgbWVudUxpbmtzOiBBcnJheTxFdWlNZW51SXRlbT4gPSBbXTtcblxuICAgIC8vIFRPRE86IGl0IHNob3VsZCBiZSBtb3ZlZCBldWlTZXJ2aWNlLCBvciBpdCBzaG91bGQgYmUgc3RhdGljXG4gICAgLy8gVE9ETzogY2FuIHdlIG1vdmVkIHRoYXQgc2VydmljZSBpbnNpZGUgdGhlIG1vZHVsZSBvZiB0aGUgY29tcG9uZW50IHRoYXQncyB1c2luZyBpdD9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBldWlQZXJtaXNzaW9uOiBFdWlQZXJtaXNzaW9uU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBzdG9yZTogU3RvcmVTZXJ2aWNlLFxuICAgICkge1xuICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChnZXRVc2VyU3RhdGUpLnN1YnNjcmliZSgodXNlcikgPT4ge1xuICAgICAgICAgICAgaWYgKHVzZXIubWVudUxpbmtzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tZW51TGlua3MgPSB1c2VyLm1lbnVMaW5rcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0TWVudUxpbmtzKCk6IEV1aU1lbnVJdGVtW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5tZW51TGlua3M7XG4gICAgfVxuXG4gICAgZmlsdGVyRXVpTWVudUl0ZW1zV2l0aFJpZ2h0cyhsaW5rczogQXJyYXk8RXVpTWVudUl0ZW0+KTogQXJyYXk8RXVpTWVudUl0ZW0+IHtcbiAgICAgICAgcmV0dXJuIGxpbmtzLmZpbHRlcigobGluaykgPT4ge1xuICAgICAgICAgICAgaWYgKGxpbmsuY2hpbGRyZW4gIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGxpbmsuY2hpbGRyZW4gPSB0aGlzLmZpbHRlckV1aU1lbnVJdGVtc1dpdGhSaWdodHMobGluay5jaGlsZHJlbik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEZpcnN0IGNoZWNrIGlmIHRoZSB1c2VyIGlzIGRlbmllZCBhY2Nlc3M6XG4gICAgICAgICAgICBpZiAobGluay5kZW5pZWRSaWdodElkKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZXVpUGVybWlzc2lvbi5jaGVja1JpZ2h0KGxpbmsuZGVuaWVkUmlnaHRJZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChsaW5rLmRlbmllZFJpZ2h0SWRzKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBkZW5pZWRSaWdodElkIG9mIGxpbmsuZGVuaWVkUmlnaHRJZHMpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZXVpUGVybWlzc2lvbi5jaGVja1JpZ2h0KGRlbmllZFJpZ2h0SWQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFRoZW4gY2hlY2sgaWYgdGhlIHVzZXIgbmVlZHMgdG8gYmUgYWxsb3dlZCBhY2Nlc3MgZXhwbGljaXRseTpcbiAgICAgICAgICAgIGlmIChsaW5rLmFsbG93ZWRSaWdodElkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXVpUGVybWlzc2lvbi5jaGVja1JpZ2h0KGxpbmsuYWxsb3dlZFJpZ2h0SWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGxpbmsuYWxsb3dlZFJpZ2h0SWRzKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBhbGxvd2VkUmlnaHRJZCBvZiBsaW5rLmFsbG93ZWRSaWdodElkcykge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5ldWlQZXJtaXNzaW9uLmNoZWNrUmlnaHQoYWxsb3dlZFJpZ2h0SWQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBVc2VyIGRvZXNuJ3QgaGF2ZSBvbmUgb2YgdGhlIGFsbG93ZWQgcmlnaHRzLiBEZW55IGFjY2VzczpcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEFjY2VzcyB0byB0aGUgbWVudSBpdGVtIGlzIG5vdCBkZW5pZWQsIHRoZXJlZm9yZSBhbGxvdyBpdDpcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -1,47 +1,207 @@
|
|
|
1
1
|
import { Inject, Injectable, Optional } from '@angular/core';
|
|
2
|
+
import { BehaviorSubject } from 'rxjs';
|
|
2
3
|
import { GLOBAL_CONFIG_TOKEN } from './config/tokens';
|
|
3
|
-
import {
|
|
4
|
+
import { DOCUMENT } from '@angular/common';
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "./eui-app-shell.service";
|
|
5
7
|
export var EuiTheme;
|
|
6
8
|
(function (EuiTheme) {
|
|
7
|
-
EuiTheme["
|
|
8
|
-
EuiTheme["
|
|
9
|
-
EuiTheme["
|
|
9
|
+
EuiTheme["DEFAULT"] = "default";
|
|
10
|
+
EuiTheme["ECL_EC"] = "ecl-ec";
|
|
11
|
+
EuiTheme["ECL_EC_RTL"] = "ecl-ec-rtl";
|
|
12
|
+
EuiTheme["ECL_EU"] = "ecl-eu";
|
|
13
|
+
EuiTheme["ECL_EU_RTL"] = "ecl-eu-rtl";
|
|
14
|
+
EuiTheme["EUI_LEGACY"] = "eui-legacy";
|
|
15
|
+
EuiTheme["EUI_LEGACY_HC"] = "eui-legacy-high-contrast";
|
|
16
|
+
EuiTheme["DARK"] = "dark";
|
|
17
|
+
EuiTheme["COMPACT"] = "compact";
|
|
10
18
|
})(EuiTheme || (EuiTheme = {}));
|
|
19
|
+
;
|
|
20
|
+
;
|
|
21
|
+
const initialState = {
|
|
22
|
+
themes: [
|
|
23
|
+
{ name: EuiTheme.DEFAULT, isActive: false, styleSheet: null, cssClass: null },
|
|
24
|
+
{ name: EuiTheme.ECL_EC, isActive: false, styleSheet: 'eui-ecl-ec.css', cssClass: null },
|
|
25
|
+
{ name: EuiTheme.ECL_EC_RTL, isActive: false, styleSheet: 'eui-ecl-ec-rtl.css', cssClass: null },
|
|
26
|
+
{ name: EuiTheme.ECL_EU, isActive: false, styleSheet: 'eui-ecl-eu.css', cssClass: null },
|
|
27
|
+
{ name: EuiTheme.ECL_EU_RTL, isActive: false, styleSheet: 'eui-ecl-eu-rtl.css', cssClass: null },
|
|
28
|
+
{ name: EuiTheme.EUI_LEGACY, isActive: false, styleSheet: null, cssClass: 'eui-t-eui-legacy' },
|
|
29
|
+
{ name: EuiTheme.EUI_LEGACY_HC, isActive: false, styleSheet: null, cssClass: 'eui-t-high-contrast' },
|
|
30
|
+
{ name: EuiTheme.DARK, isActive: false, styleSheet: null, cssClass: 'eui-t-dark' },
|
|
31
|
+
{ name: EuiTheme.COMPACT, isActive: false, styleSheet: null, cssClass: 'eui-t-compact' },
|
|
32
|
+
],
|
|
33
|
+
theme: {
|
|
34
|
+
isDefault: false,
|
|
35
|
+
isEclEc: false,
|
|
36
|
+
isEclEcRtl: false,
|
|
37
|
+
isEclEu: false,
|
|
38
|
+
isEclEuRtl: false,
|
|
39
|
+
isEuiLegacy: false,
|
|
40
|
+
isEuiLegacyHc: false,
|
|
41
|
+
isDark: false,
|
|
42
|
+
isCompact: false,
|
|
43
|
+
},
|
|
44
|
+
};
|
|
11
45
|
export class EuiThemeService {
|
|
12
|
-
constructor(config) {
|
|
46
|
+
constructor(document, config, asService) {
|
|
47
|
+
this.document = document;
|
|
13
48
|
this.config = config;
|
|
14
|
-
this.
|
|
15
|
-
this.
|
|
16
|
-
this.theme
|
|
17
|
-
this.
|
|
18
|
-
this.isEC$ = this.theme$.pipe(map((theme) => EuiTheme.EC === theme));
|
|
19
|
-
const theme = this.config?.eui?.theme || EuiTheme.EC;
|
|
20
|
-
this.setTheme(theme);
|
|
49
|
+
this.asService = asService;
|
|
50
|
+
this._state$ = new BehaviorSubject(initialState);
|
|
51
|
+
const themeName = this.config?.eui?.theme || EuiTheme.DEFAULT;
|
|
52
|
+
this.setActiveTheme(themeName, true);
|
|
21
53
|
}
|
|
22
|
-
|
|
23
|
-
return
|
|
54
|
+
get state$() {
|
|
55
|
+
return this._state$.asObservable();
|
|
24
56
|
}
|
|
25
|
-
|
|
26
|
-
return
|
|
57
|
+
get state() {
|
|
58
|
+
return this._state$.getValue();
|
|
27
59
|
}
|
|
28
|
-
|
|
29
|
-
return this.theme;
|
|
60
|
+
isDefault() {
|
|
61
|
+
return this.state.theme.isDefault;
|
|
30
62
|
}
|
|
31
|
-
|
|
32
|
-
this.theme
|
|
33
|
-
this.themeSubject.next(theme);
|
|
63
|
+
isEclEc() {
|
|
64
|
+
return this.state.theme.isEclEc;
|
|
34
65
|
}
|
|
35
|
-
|
|
66
|
+
isEclEcRtl() {
|
|
67
|
+
return this.state.theme.isEclEcRtl;
|
|
68
|
+
}
|
|
69
|
+
isEclEu() {
|
|
70
|
+
return this.state.theme.isEclEu;
|
|
71
|
+
}
|
|
72
|
+
isEclEuRtl() {
|
|
73
|
+
return this.state.theme.isEclEuRtl;
|
|
74
|
+
}
|
|
75
|
+
isEuiLegacy() {
|
|
76
|
+
return this.state.theme.isEuiLegacy;
|
|
77
|
+
}
|
|
78
|
+
isEuiLegacyHc() {
|
|
79
|
+
return this.state.theme.isEuiLegacyHc;
|
|
80
|
+
}
|
|
81
|
+
isDark() {
|
|
82
|
+
return this.state.theme.isDark;
|
|
83
|
+
}
|
|
84
|
+
isCompact() {
|
|
85
|
+
return this.state.theme.isCompact;
|
|
86
|
+
}
|
|
87
|
+
setActiveTheme(theme, isActive) {
|
|
88
|
+
const themes = this.state.themes;
|
|
89
|
+
const themeIdx = themes.findIndex(t => t.name === theme);
|
|
90
|
+
if (themeIdx < 0) {
|
|
91
|
+
throw new Error('NO_THEME_FOUND');
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
themes[themeIdx].isActive = isActive;
|
|
95
|
+
const themeFound = themes[themeIdx];
|
|
96
|
+
const status = initialState.theme;
|
|
97
|
+
switch (theme) {
|
|
98
|
+
case EuiTheme.DEFAULT: {
|
|
99
|
+
status.isDefault = isActive;
|
|
100
|
+
break;
|
|
101
|
+
}
|
|
102
|
+
case EuiTheme.ECL_EC: {
|
|
103
|
+
status.isEclEc = isActive;
|
|
104
|
+
break;
|
|
105
|
+
}
|
|
106
|
+
case EuiTheme.ECL_EC_RTL: {
|
|
107
|
+
status.isEclEcRtl = isActive;
|
|
108
|
+
break;
|
|
109
|
+
}
|
|
110
|
+
case EuiTheme.ECL_EU: {
|
|
111
|
+
status.isEclEu = isActive;
|
|
112
|
+
break;
|
|
113
|
+
}
|
|
114
|
+
case EuiTheme.ECL_EU_RTL: {
|
|
115
|
+
status.isEclEuRtl = isActive;
|
|
116
|
+
break;
|
|
117
|
+
}
|
|
118
|
+
case EuiTheme.DARK: {
|
|
119
|
+
status.isDark = isActive;
|
|
120
|
+
break;
|
|
121
|
+
}
|
|
122
|
+
case EuiTheme.COMPACT: {
|
|
123
|
+
status.isCompact = isActive;
|
|
124
|
+
break;
|
|
125
|
+
}
|
|
126
|
+
case EuiTheme.EUI_LEGACY: {
|
|
127
|
+
status.isEuiLegacy = isActive;
|
|
128
|
+
break;
|
|
129
|
+
}
|
|
130
|
+
case EuiTheme.EUI_LEGACY_HC: {
|
|
131
|
+
status.isEuiLegacyHc = isActive;
|
|
132
|
+
break;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
this._state$.next({
|
|
136
|
+
themes,
|
|
137
|
+
theme: status,
|
|
138
|
+
});
|
|
139
|
+
this._renderTheme(themeFound, isActive);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
_renderTheme(themeFound, isActive) {
|
|
143
|
+
if (themeFound.name === EuiTheme.COMPACT) {
|
|
144
|
+
if (isActive) {
|
|
145
|
+
this.asService.setBaseFontSize('14px');
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
this.asService.setBaseFontSize('16px');
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
else if (themeFound.name === EuiTheme.ECL_EC_RTL || themeFound.name === EuiTheme.ECL_EU_RTL) {
|
|
152
|
+
const rtlLink = this.document.getElementById('rtl-theme');
|
|
153
|
+
this._renderThemeCss(themeFound, isActive, rtlLink);
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
const themeLink = this.document.getElementById('eui-theme');
|
|
157
|
+
this._renderThemeCss(themeFound, isActive, themeLink);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
_renderThemeCss(themeFound, isActive, link) {
|
|
161
|
+
const head = this.document.getElementsByTagName('head')[0];
|
|
162
|
+
if (isActive) {
|
|
163
|
+
if (themeFound.cssClass) {
|
|
164
|
+
document.querySelector('html').classList.add(themeFound.cssClass);
|
|
165
|
+
}
|
|
166
|
+
if (themeFound.styleSheet) {
|
|
167
|
+
if (link) {
|
|
168
|
+
link.href = themeFound.styleSheet;
|
|
169
|
+
}
|
|
170
|
+
else {
|
|
171
|
+
const style = this.document.createElement('link');
|
|
172
|
+
style.id = 'eui-theme';
|
|
173
|
+
style.rel = 'stylesheet';
|
|
174
|
+
style.href = `assets/${themeFound.styleSheet}`;
|
|
175
|
+
head.appendChild(style);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
else {
|
|
180
|
+
if (themeFound.cssClass) {
|
|
181
|
+
document.querySelector('html').classList.remove(themeFound.cssClass);
|
|
182
|
+
}
|
|
183
|
+
if (themeFound.styleSheet) {
|
|
184
|
+
if (link) {
|
|
185
|
+
link.media = '';
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: EuiThemeService, deps: [{ token: DOCUMENT }, { token: GLOBAL_CONFIG_TOKEN, optional: true }, { token: i1.EuiAppShellService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
36
191
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: EuiThemeService, providedIn: 'root' }); }
|
|
37
192
|
}
|
|
38
193
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: EuiThemeService, decorators: [{
|
|
39
194
|
type: Injectable,
|
|
40
|
-
args: [{
|
|
41
|
-
|
|
195
|
+
args: [{
|
|
196
|
+
providedIn: 'root',
|
|
197
|
+
}]
|
|
198
|
+
}], ctorParameters: () => [{ type: Document, decorators: [{
|
|
199
|
+
type: Inject,
|
|
200
|
+
args: [DOCUMENT]
|
|
201
|
+
}] }, { type: undefined, decorators: [{
|
|
42
202
|
type: Optional
|
|
43
203
|
}, {
|
|
44
204
|
type: Inject,
|
|
45
205
|
args: [GLOBAL_CONFIG_TOKEN]
|
|
46
|
-
}] }] });
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpLXRoZW1lLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2V1aS10aGVtZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV0RCxPQUFPLEVBQUUsR0FBRyxFQUFjLGFBQWEsRUFBVyxNQUFNLE1BQU0sQ0FBQzs7QUFFL0QsTUFBTSxDQUFOLElBQVksUUFJWDtBQUpELFdBQVksUUFBUTtJQUNoQixxQkFBUyxDQUFBO0lBQ1QscUJBQVMsQ0FBQTtJQUNULHVCQUFXLENBQUE7QUFDZixDQUFDLEVBSlcsUUFBUSxLQUFSLFFBQVEsUUFJbkI7QUFHRCxNQUFNLE9BQU8sZUFBZTtJQVF4QixZQUErRCxNQUFvQjtRQUFwQixXQUFNLEdBQU4sTUFBTSxDQUFjO1FBSDNFLFVBQUssR0FBYSxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQzlCLGlCQUFZLEdBQXNCLElBQUksYUFBYSxFQUFZLENBQUM7UUFHcEUsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRS9DLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFFckUsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQztRQUVyRSxNQUFNLEtBQUssR0FBSSxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxLQUFrQixJQUFJLFFBQVEsQ0FBQyxFQUFFLENBQUM7UUFDbkUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsU0FBUztRQUNMLE9BQU8sUUFBUSxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxTQUFTO1FBQ0wsT0FBTyxRQUFRLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDdEMsQ0FBQztJQUVELFFBQVE7UUFDSixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDdEIsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFlO1FBQ3BCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLENBQUM7OEdBbENRLGVBQWUsa0JBUVEsbUJBQW1CO2tIQVIxQyxlQUFlLGNBREYsTUFBTTs7MkZBQ25CLGVBQWU7a0JBRDNCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOzswQkFTakIsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBHTE9CQUxfQ09ORklHX1RPS0VOIH0gZnJvbSAnLi9jb25maWcvdG9rZW5zJztcbmltcG9ydCB7IEdsb2JhbENvbmZpZyB9IGZyb20gJ0BldWkvYmFzZSc7XG5pbXBvcnQgeyBtYXAsIE9ic2VydmFibGUsIFJlcGxheVN1YmplY3QsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGVudW0gRXVpVGhlbWUge1xuICAgIEVDID0gJ2VjJyxcbiAgICBFVSA9ICdldScsXG4gICAgRVVJID0gJ2V1aScsXG59XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgRXVpVGhlbWVTZXJ2aWNlIHtcbiAgICBwdWJsaWMgdGhlbWUkOiBPYnNlcnZhYmxlPEV1aVRoZW1lPjtcbiAgICBwdWJsaWMgaXNFVSQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gICAgcHVibGljIGlzRUMkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuXG4gICAgcHJpdmF0ZSB0aGVtZTogRXVpVGhlbWUgPSBFdWlUaGVtZS5FQztcbiAgICBwcml2YXRlIHRoZW1lU3ViamVjdDogU3ViamVjdDxFdWlUaGVtZT4gPSBuZXcgUmVwbGF5U3ViamVjdDxFdWlUaGVtZT4oKTtcblxuICAgIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIEBJbmplY3QoR0xPQkFMX0NPTkZJR19UT0tFTikgcHJvdGVjdGVkIGNvbmZpZzogR2xvYmFsQ29uZmlnKSB7XG4gICAgICAgIHRoaXMudGhlbWUkID0gdGhpcy50aGVtZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cbiAgICAgICAgdGhpcy5pc0VVJCA9IHRoaXMudGhlbWUkLnBpcGUobWFwKCh0aGVtZSkgPT4gRXVpVGhlbWUuRVUgPT09IHRoZW1lKSk7XG5cbiAgICAgICAgdGhpcy5pc0VDJCA9IHRoaXMudGhlbWUkLnBpcGUobWFwKCh0aGVtZSkgPT4gRXVpVGhlbWUuRUMgPT09IHRoZW1lKSk7XG5cbiAgICAgICAgY29uc3QgdGhlbWUgPSAodGhpcy5jb25maWc/LmV1aT8udGhlbWUgYXMgRXVpVGhlbWUpIHx8IEV1aVRoZW1lLkVDO1xuICAgICAgICB0aGlzLnNldFRoZW1lKHRoZW1lKTtcbiAgICB9XG5cbiAgICBpc0VDVGhlbWUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBFdWlUaGVtZS5FQyA9PT0gdGhpcy50aGVtZTtcbiAgICB9XG5cbiAgICBpc0VVVGhlbWUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBFdWlUaGVtZS5FVSA9PT0gdGhpcy50aGVtZTtcbiAgICB9XG5cbiAgICBnZXRUaGVtZSgpOiBFdWlUaGVtZSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRoZW1lO1xuICAgIH1cblxuICAgIHNldFRoZW1lKHRoZW1lOiBFdWlUaGVtZSk6IHZvaWQge1xuICAgICAgICB0aGlzLnRoZW1lID0gdGhlbWU7XG4gICAgICAgIHRoaXMudGhlbWVTdWJqZWN0Lm5leHQodGhlbWUpO1xuICAgIH1cbn1cbiJdfQ==
|
|
206
|
+
}] }, { type: i1.EuiAppShellService }] });
|
|
207
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpLXRoZW1lLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2V1aS10aGVtZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBR3RELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7O0FBRTNDLE1BQU0sQ0FBTixJQUFZLFFBVVg7QUFWRCxXQUFZLFFBQVE7SUFDaEIsK0JBQW1CLENBQUE7SUFDbkIsNkJBQWlCLENBQUE7SUFDakIscUNBQXlCLENBQUE7SUFDekIsNkJBQWlCLENBQUE7SUFDakIscUNBQXlCLENBQUE7SUFDekIscUNBQXlCLENBQUE7SUFDekIsc0RBQTBDLENBQUE7SUFDMUMseUJBQWEsQ0FBQTtJQUNiLCtCQUFtQixDQUFBO0FBQ3ZCLENBQUMsRUFWVyxRQUFRLEtBQVIsUUFBUSxRQVVuQjtBQUFBLENBQUM7QUFPRCxDQUFDO0FBUUYsTUFBTSxZQUFZLEdBQWU7SUFDN0IsTUFBTSxFQUFFO1FBQ0osRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtRQUM3RSxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7UUFDeEYsRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFVBQVUs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SUFBSSxDQUFDLElBQUksR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDO2dCQUN0QyxDQUFDO3FCQUFNLENBQUM7b0JBQ0osTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQ2xELEtBQUssQ0FBQyxFQUFFLEdBQUcsV0FBVyxDQUFDO29CQUN2QixLQUFLLENBQUMsR0FBRyxHQUFHLFlBQVksQ0FBQztvQkFDekIsS0FBSyxDQUFDLElBQUksR0FBRyxVQUFVLFVBQVUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztvQkFFL0MsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDNUIsQ0FBQztZQUNMLENBQUM7UUFDTCxDQUFDO2FBQU0sQ0FBQztZQUNKLElBQUksVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUN0QixRQUFRLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3pFLENBQUM7WUFFRCxJQUFJLFVBQVUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDeEIsSUFBSSxJQUFJLEVBQUUsQ0FBQztvQkFDUCxJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztnQkFDcEIsQ0FBQztZQUNMLENBQUM7UUFDTCxDQUFDO0lBQ0wsQ0FBQzs4R0FwSVEsZUFBZSxrQkFJWixRQUFRLGFBQ0ksbUJBQW1CO2tIQUxsQyxlQUFlLGNBRlosTUFBTTs7MkZBRVQsZUFBZTtrQkFIM0IsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckI7OzBCQUtRLE1BQU07MkJBQUMsUUFBUTs7MEJBQ2YsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEdMT0JBTF9DT05GSUdfVE9LRU4gfSBmcm9tICcuL2NvbmZpZy90b2tlbnMnO1xuaW1wb3J0IHsgR2xvYmFsQ29uZmlnIH0gZnJvbSAnQGV1aS9iYXNlJztcbmltcG9ydCB7IEV1aUFwcFNoZWxsU2VydmljZSB9IGZyb20gJy4vZXVpLWFwcC1zaGVsbC5zZXJ2aWNlJztcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuZXhwb3J0IGVudW0gRXVpVGhlbWUge1xuICAgIERFRkFVTFQgPSAnZGVmYXVsdCcsXG4gICAgRUNMX0VDID0gJ2VjbC1lYycsXG4gICAgRUNMX0VDX1JUTCA9ICdlY2wtZWMtcnRsJyxcbiAgICBFQ0xfRVUgPSAnZWNsLWV1JyxcbiAgICBFQ0xfRVVfUlRMID0gJ2VjbC1ldS1ydGwnLFxuICAgIEVVSV9MRUdBQ1kgPSAnZXVpLWxlZ2FjeScsXG4gICAgRVVJX0xFR0FDWV9IQyA9ICdldWktbGVnYWN5LWhpZ2gtY29udHJhc3QnLFxuICAgIERBUksgPSAnZGFyaycsXG4gICAgQ09NUEFDVCA9ICdjb21wYWN0Jyxcbn07XG5cbmludGVyZmFjZSBJRXVpVGhlbWUge1xuICAgIG5hbWU6IEV1aVRoZW1lLFxuICAgIGlzQWN0aXZlOiBib29sZWFuLFxuICAgIHN0eWxlU2hlZXQ6IHN0cmluZyxcbiAgICBjc3NDbGFzczogc3RyaW5nLFxufTtcblxuZXhwb3J0IGludGVyZmFjZSBUaGVtZVN0YXRlIHtcbiAgICB0aGVtZXM6IElFdWlUaGVtZVtdO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgdGhlbWU6IGFueTtcbn1cblxuY29uc3QgaW5pdGlhbFN0YXRlOiBUaGVtZVN0YXRlID0ge1xuICAgIHRoZW1lczogW1xuICAgICAgICB7IG5hbWU6IEV1aVRoZW1lLkRFRkFVTFQsIGlzQWN0aXZlOiBmYWxzZSwgc3R5bGVTaGVldDogbnVsbCwgY3NzQ2xhc3M6IG51bGwgfSxcbiAgICAgICAgeyBuYW1lOiBFdWlUaGVtZS5FQ0xfRUMsIGlzQWN0aXZlOiBmYWxzZSwgc3R5bGVTaGVldDogJ2V1aS1lY2wtZWMuY3NzJywgY3NzQ2xhc3M6IG51bGwgfSxcbiAgICAgICAgeyBuYW1lOiBFdWlUaGVtZS5FQ0xfRUNfUlRMLCBpc0FjdGl2ZTogZmFsc2UsIHN0eWxlU2hlZXQ6ICdldWktZWNsLWVjLXJ0bC5jc3MnLCBjc3NDbGFzczogbnVsbCB9LFxuICAgICAgICB7IG5hbWU6IEV1aVRoZW1lLkVDTF9FVSwgaXNBY3RpdmU6IGZhbHNlLCBzdHlsZVNoZWV0OiAnZXVpLWVjbC1ldS5jc3MnLCBjc3NDbGFzczogbnVsbCB9LFxuICAgICAgICB7IG5hbWU6IEV1aVRoZW1lLkVDTF9FVV9SVEwsIGlzQWN0aXZlOiBmYWxzZSwgc3R5bGVTaGVldDogJ2V1aS1lY2wtZXUtcnRsLmNzcycsIGNzc0NsYXNzOiBudWxsIH0sXG4gICAgICAgIHsgbmFtZTogRXVpVGhlbWUuRVVJX0xFR0FDWSwgaXNBY3RpdmU6IGZhbHNlLCBzdHlsZVNoZWV0OiBudWxsLCBjc3NDbGFzczogJ2V1aS10LWV1aS1sZWdhY3knIH0sXG4gICAgICAgIHsgbmFtZTogRXVpVGhlbWUuRVVJX0xFR0FDWV9IQywgaXNBY3RpdmU6IGZhbHNlLCBzdHlsZVNoZWV0OiBudWxsLCBjc3NDbGFzczogJ2V1aS10LWhpZ2gtY29udHJhc3QnIH0sXG4gICAgICAgIHsgbmFtZTogRXVpVGhlbWUuREFSSywgaXNBY3RpdmU6IGZhbHNlLCBzdHlsZVNoZWV0OiBudWxsLCBjc3NDbGFzczogJ2V1aS10LWRhcmsnIH0sXG4gICAgICAgIHsgbmFtZTogRXVpVGhlbWUuQ09NUEFDVCwgaXNBY3RpdmU6IGZhbHNlLCBzdHlsZVNoZWV0OiBudWxsLCBjc3NDbGFzczogJ2V1aS10LWNvbXBhY3QnIH0sXG4gICAgXSxcbiAgICB0aGVtZToge1xuICAgICAgICBpc0RlZmF1bHQ6IGZhbHNlLFxuICAgICAgICBpc0VjbEVjOiBmYWxzZSxcbiAgICAgICAgaXNFY2xFY1J0bDogZmFsc2UsXG4gICAgICAgIGlzRWNsRXU6IGZhbHNlLFxuICAgICAgICBpc0VjbEV1UnRsOiBmYWxzZSxcbiAgICAgICAgaXNFdWlMZWdhY3k6IGZhbHNlLFxuICAgICAgICBpc0V1aUxlZ2FjeUhjOiBmYWxzZSxcbiAgICAgICAgaXNEYXJrOiBmYWxzZSxcbiAgICAgICAgaXNDb21wYWN0OiBmYWxzZSxcbiAgICB9LFxufTtcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgRXVpVGhlbWVTZXJ2aWNlIHtcbiAgICBwcml2YXRlIF9zdGF0ZSQ6IEJlaGF2aW9yU3ViamVjdDxUaGVtZVN0YXRlPjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvY3VtZW50OiBEb2N1bWVudCxcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChHTE9CQUxfQ09ORklHX1RPS0VOKSBwcm90ZWN0ZWQgY29uZmlnOiBHbG9iYWxDb25maWcsXG4gICAgICAgIHByaXZhdGUgYXNTZXJ2aWNlOiBFdWlBcHBTaGVsbFNlcnZpY2UsXG4gICAgKSB7XG4gICAgICAgIHRoaXMuX3N0YXRlJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoaW5pdGlhbFN0YXRlKTtcbiAgICAgICAgY29uc3QgdGhlbWVOYW1lID0gKHRoaXMuY29uZmlnPy5ldWk/LnRoZW1lIGFzIEV1aVRoZW1lKSB8fCBFdWlUaGVtZS5ERUZBVUxUO1xuICAgICAgICB0aGlzLnNldEFjdGl2ZVRoZW1lKHRoZW1lTmFtZSwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgZ2V0IHN0YXRlJCgpOiBPYnNlcnZhYmxlPFRoZW1lU3RhdGU+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXRlJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICBnZXQgc3RhdGUoKTogVGhlbWVTdGF0ZSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zdGF0ZSQuZ2V0VmFsdWUoKTtcbiAgICB9XG5cbiAgICBpc0RlZmF1bHQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXRlLnRoZW1lLmlzRGVmYXVsdDtcbiAgICB9XG4gICAgaXNFY2xFYygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGUudGhlbWUuaXNFY2xFYztcbiAgICB9XG4gICAgaXNFY2xFY1J0bCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGUudGhlbWUuaXNFY2xFY1J0bDtcbiAgICB9XG4gICAgaXNFY2xFdSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGUudGhlbWUuaXNFY2xFdTtcbiAgICB9XG4gICAgaXNFY2xFdVJ0bCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGUudGhlbWUuaXNFY2xFdVJ0bDtcbiAgICB9XG4gICAgaXNFdWlMZWdhY3koKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXRlLnRoZW1lLmlzRXVpTGVnYWN5O1xuICAgIH1cbiAgICBpc0V1aUxlZ2FjeUhjKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZS50aGVtZS5pc0V1aUxlZ2FjeUhjO1xuICAgIH1cbiAgICBpc0RhcmsoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXRlLnRoZW1lLmlzRGFyaztcbiAgICB9XG4gICAgaXNDb21wYWN0KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZS50aGVtZS5pc0NvbXBhY3Q7XG4gICAgfVxuXG4gICAgc2V0QWN0aXZlVGhlbWUodGhlbWU6IEV1aVRoZW1lLCBpc0FjdGl2ZTogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBjb25zdCB0aGVtZXMgPSB0aGlzLnN0YXRlLnRoZW1lcztcbiAgICAgICAgY29uc3QgdGhlbWVJZHggPSB0aGVtZXMuZmluZEluZGV4KHQgPT4gdC5uYW1lID09PSB0aGVtZSk7XG5cbiAgICAgICAgaWYgKHRoZW1lSWR4IDwgMCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOT19USEVNRV9GT1VORCcpO1xuXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGVtZXNbdGhlbWVJZHhdLmlzQWN0aXZlID0gaXNBY3RpdmU7XG5cbiAgICAgICAgICAgIGNvbnN0IHRoZW1lRm91bmQ6IElFdWlUaGVtZSA9IHRoZW1lc1t0aGVtZUlkeF07XG5cbiAgICAgICAgICAgIGNvbnN0IHN0YXR1cyA9IGluaXRpYWxTdGF0ZS50aGVtZTtcblxuICAgICAgICAgICAgc3dpdGNoKHRoZW1lKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBFdWlUaGVtZS5ERUZBVUxUOiB7IHN0YXR1cy5pc0RlZmF1bHQgPSBpc0FjdGl2ZTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICBjYXNlIEV1aVRoZW1lLkVDTF9FQzogeyBzdGF0dXMuaXNFY2xFYyA9IGlzQWN0aXZlOyBicmVhazsgfVxuICAgICAgICAgICAgICAgIGNhc2UgRXVpVGhlbWUuRUNMX0VDX1JUTDogeyBzdGF0dXMuaXNFY2xFY1J0bCA9IGlzQWN0aXZlOyBicmVhazsgfVxuICAgICAgICAgICAgICAgIGNhc2UgRXVpVGhlbWUuRUNMX0VVOiB7IHN0YXR1cy5pc0VjbEV1ID0gaXNBY3RpdmU7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgY2FzZSBFdWlUaGVtZS5FQ0xfRVVfUlRMOiB7IHN0YXR1cy5pc0VjbEV1UnRsID0gaXNBY3RpdmU7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgY2FzZSBFdWlUaGVtZS5EQVJLOiB7IHN0YXR1cy5pc0RhcmsgPSBpc0FjdGl2ZTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICBjYXNlIEV1aVRoZW1lLkNPTVBBQ1Q6IHsgc3RhdHVzLmlzQ29tcGFjdCA9IGlzQWN0aXZlOyBicmVhazsgfVxuICAgICAgICAgICAgICAgIGNhc2UgRXVpVGhlbWUuRVVJX0xFR0FDWTogeyBzdGF0dXMuaXNFdWlMZWdhY3kgPSBpc0FjdGl2ZTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICBjYXNlIEV1aVRoZW1lLkVVSV9MRUdBQ1lfSEM6IHsgc3RhdHVzLmlzRXVpTGVnYWN5SGMgPSBpc0FjdGl2ZTsgYnJlYWs7IH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5fc3RhdGUkLm5leHQoe1xuICAgICAgICAgICAgICAgIHRoZW1lcyxcbiAgICAgICAgICAgICAgICB0aGVtZTogc3RhdHVzLFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHRoaXMuX3JlbmRlclRoZW1lKHRoZW1lRm91bmQsIGlzQWN0aXZlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX3JlbmRlclRoZW1lKHRoZW1lRm91bmQ6IElFdWlUaGVtZSwgaXNBY3RpdmU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoZW1lRm91bmQubmFtZSA9PT0gRXVpVGhlbWUuQ09NUEFDVCkge1xuICAgICAgICAgICAgaWYgKGlzQWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hc1NlcnZpY2Uuc2V0QmFzZUZvbnRTaXplKCcxNHB4Jyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuYXNTZXJ2aWNlLnNldEJhc2VGb250U2l6ZSgnMTZweCcpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0gZWxzZSBpZiAodGhlbWVGb3VuZC5uYW1lID09PSBFdWlUaGVtZS5FQ0xfRUNfUlRMIHx8IHRoZW1lRm91bmQubmFtZSA9PT0gRXVpVGhlbWUuRUNMX0VVX1JUTCkge1xuICAgICAgICAgICAgY29uc3QgcnRsTGluayA9IHRoaXMuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3J0bC10aGVtZScpIGFzIEhUTUxMaW5rRWxlbWVudDtcbiAgICAgICAgICAgIHRoaXMuX3JlbmRlclRoZW1lQ3NzKHRoZW1lRm91bmQsIGlzQWN0aXZlLCBydGxMaW5rKTtcblxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgdGhlbWVMaW5rID0gdGhpcy5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXVpLXRoZW1lJykgYXMgSFRNTExpbmtFbGVtZW50O1xuICAgICAgICAgICAgdGhpcy5fcmVuZGVyVGhlbWVDc3ModGhlbWVGb3VuZCwgaXNBY3RpdmUsIHRoZW1lTGluayk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9yZW5kZXJUaGVtZUNzcyh0aGVtZUZvdW5kOiBJRXVpVGhlbWUsIGlzQWN0aXZlOiBib29sZWFuLCBsaW5rOiBIVE1MTGlua0VsZW1lbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaGVhZCA9IHRoaXMuZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXTtcblxuICAgICAgICBpZiAoaXNBY3RpdmUpIHtcbiAgICAgICAgICAgIGlmICh0aGVtZUZvdW5kLmNzc0NsYXNzKSB7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaHRtbCcpLmNsYXNzTGlzdC5hZGQodGhlbWVGb3VuZC5jc3NDbGFzcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhlbWVGb3VuZC5zdHlsZVNoZWV0KSB7XG4gICAgICAgICAgICAgICAgaWYgKGxpbmspIHtcbiAgICAgICAgICAgICAgICAgICAgbGluay5ocmVmID0gdGhlbWVGb3VuZC5zdHlsZVNoZWV0O1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0eWxlID0gdGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaW5rJyk7XG4gICAgICAgICAgICAgICAgICAgIHN0eWxlLmlkID0gJ2V1aS10aGVtZSc7XG4gICAgICAgICAgICAgICAgICAgIHN0eWxlLnJlbCA9ICdzdHlsZXNoZWV0JztcbiAgICAgICAgICAgICAgICAgICAgc3R5bGUuaHJlZiA9IGBhc3NldHMvJHt0aGVtZUZvdW5kLnN0eWxlU2hlZXR9YDtcblxuICAgICAgICAgICAgICAgICAgICBoZWFkLmFwcGVuZENoaWxkKHN0eWxlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAodGhlbWVGb3VuZC5jc3NDbGFzcykge1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2h0bWwnKS5jbGFzc0xpc3QucmVtb3ZlKHRoZW1lRm91bmQuY3NzQ2xhc3MpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhlbWVGb3VuZC5zdHlsZVNoZWV0KSB7XG4gICAgICAgICAgICAgICAgaWYgKGxpbmspIHtcbiAgICAgICAgICAgICAgICAgICAgbGluay5tZWRpYSA9ICcnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|
|
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2xvY2FsZS9sb2NhbGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFhLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUMsT0FBTyxFQUNILFVBQVUsRUFFVixjQUFjLEVBQ2QsOEJBQThCLEdBS2pDLE1BQU0sV0FBVyxDQUFDO0FBQ25CLE9BQU8sRUFBYyxFQUFFLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUYsT0FBTyxFQUFnQix1QkFBdUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUdqRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDOzs7OztBQUc3QyxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLGNBQWMsQ0FBZSxnQkFBZ0IsQ0FBQyxDQUFDO0FBRW5GOzs7Ozs7Ozs7OztHQVdHO0FBSUgsTUFBTSxPQUFPLGFBQW1ELFNBQVEsVUFBMkI7SUFLL0YsWUFDYyxLQUFtQixFQUNVLGdCQUE4QixFQUN4QyxTQUFpQixFQUNBLFlBQTBCLEVBQ3BELElBQWlCLEVBQ2pCLEdBQWU7UUFFbkMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLFdBQVcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7UUFQNUIs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ZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4sIExPQ0FMRV9JRCwgT25EZXN0cm95LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZ2V0TG9jYWxlSWQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBFdWlTZXJ2aWNlLFxuICAgIEV1aVNlcnZpY2VTdGF0dXMsXG4gICAgZ2V0TG9jYWxlU3RhdGUsXG4gICAgZ2V0TG9jYWxlU2VydmljZUNvbmZpZ0Zyb21CYXNlLFxuICAgIEdsb2JhbENvbmZpZyxcbiAgICBMb2NhbGVTZXJ2aWNlQ29uZmlnLFxuICAgIExvY2FsZVN0YXRlLFxuICAgIExvZ2dlcixcbn0gZnJvbSAnQGV1aS9iYXNlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCBTdWJqZWN0LCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmaWx0ZXIsIG1hcCwgc3dpdGNoTWFwLCB0YWtlLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFN0b3JlU2VydmljZSwgVXBkYXRlTG9jYWxlU3RhdGVBY3Rpb24gfSBmcm9tICcuLi9zdG9yZSc7XG5pbXBvcnQgeyBMb2dTZXJ2aWNlIH0gZnJvbSAnLi4vbG9nJztcbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vaTE4bic7XG5pbXBvcnQgeyBHTE9CQUxfQ09ORklHX1RPS0VOIH0gZnJvbSAnLi4vY29uZmlnL3Rva2Vucyc7XG5pbXBvcnQgeyBjcmVhdGVTZWxlY3RvciB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcblxuZXhwb3J0IHR5cGUgTG9jYWxlTWFwcGVyID0gKGxvY2FsZTogc3RyaW5nKSA9PiBzdHJpbmc7XG5leHBvcnQgY29uc3QgTE9DQUxFX0lEX01BUFBFUiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxMb2NhbGVNYXBwZXI+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==
|