@netgrif/components-core 6.2.3 → 6.3.0-beta.2
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/esm2020/assets/i18n/de.json +17 -0
- package/esm2020/assets/i18n/en.json +17 -0
- package/esm2020/assets/i18n/sk.json +17 -0
- package/esm2020/lib/authentication/models/user.transformer.mjs +2 -2
- package/esm2020/lib/authentication/public-api.mjs +3 -1
- package/esm2020/lib/authorization/permission/permission.service.mjs +2 -2
- package/esm2020/lib/dashboard/cards/model/custom-dashboard-model/custom-card.mjs +1 -1
- package/esm2020/lib/dashboard/cards/model/custom-dashboard-model/custom-iframe-card.mjs +2 -0
- package/esm2020/lib/dashboard/cards/model/dashboard-card-types.mjs +2 -1
- package/esm2020/lib/dashboard/cards/model/dashboard-card.mjs +1 -1
- package/esm2020/lib/data-fields/filter-field/abstract-filter-field-tab-view-content.component.mjs +60 -0
- package/esm2020/lib/data-fields/filter-field/abstract-filter-field-tab-view.component.mjs +53 -0
- package/esm2020/lib/data-fields/filter-field/abstract-filter-field.component.mjs +4 -1
- package/esm2020/lib/data-fields/public-api.mjs +17 -1
- package/esm2020/lib/data-fields/task-ref-field/abstract-task-ref-field.component.mjs +133 -0
- package/esm2020/lib/data-fields/task-ref-field/model/task-ref-components.mjs +8 -0
- package/esm2020/lib/data-fields/task-ref-field/model/task-ref-dashboard-constants.mjs +10 -0
- package/esm2020/lib/data-fields/task-ref-field/model/task-ref-dashboard-tile-constants.mjs +13 -0
- package/esm2020/lib/data-fields/task-ref-field/model/task-ref-dashboard-tile.mjs +2 -0
- package/esm2020/lib/data-fields/task-ref-field/model/task-ref-field.mjs +19 -1
- package/esm2020/lib/data-fields/task-ref-field/task-ref-dashboard-field/task-ref-dashboard-tile/abstract-task-ref-dashboard-tile.component.mjs +140 -0
- package/esm2020/lib/data-fields/text-field/abstract-dashboard-text-field.component.mjs +42 -0
- package/esm2020/lib/data-fields/text-field/dashboard-bar-chart-text-field/abstract-dashboard-bar-chart-text-field.component.mjs +33 -0
- package/esm2020/lib/data-fields/text-field/dashboard-iframe-text-field/abstract-dashboard-iframe-text-field.component.mjs +27 -0
- package/esm2020/lib/data-fields/text-field/dashboard-line-chart-text-field/abstract-dashboard-line-chart-text-field.component.mjs +33 -0
- package/esm2020/lib/data-fields/text-field/dashboard-pie-chart-text-field/abstract-dashboard-pie-chart-text-field.component.mjs +31 -0
- package/esm2020/lib/data-fields/text-field/dashboard-portal-text-field/abstract-dashboard-portal-text-field.component.mjs +27 -0
- package/esm2020/lib/data-fields/text-field/dashboard-portal-text-field/dashboard-portal-component-registry.service.mjs +35 -0
- package/esm2020/lib/data-fields/text-field/dashboard-portal-text-field/dashboard-view-constants.mjs +10 -0
- package/esm2020/lib/data-fields/text-field/models/text-field.mjs +23 -1
- package/esm2020/lib/filter/filter.repository.mjs +7 -1
- package/esm2020/lib/filter/user-filters.service.mjs +3 -1
- package/esm2020/lib/impersonation/models/user-impersonate-config-metadata.mjs +2 -0
- package/esm2020/lib/impersonation/models/user-impersonation-constants.mjs +11 -0
- package/esm2020/lib/impersonation/public-api.mjs +9 -0
- package/esm2020/lib/impersonation/services/impersonation-user-list.service.mjs +19 -0
- package/esm2020/lib/impersonation/services/impersonation-user-resource.service.mjs +25 -0
- package/esm2020/lib/impersonation/services/impersonation-user-select.service.mjs +85 -0
- package/esm2020/lib/impersonation/services/impersonation.service.mjs +90 -0
- package/esm2020/lib/navigation/navigation-double-drawer/abstract-navigation-double-drawer.mjs +19 -6
- package/esm2020/lib/navigation/navigation-drawer/abstract-navigation-drawer.component.mjs +2 -2
- package/esm2020/lib/navigation/quick-panel/components/abstract-quick-panel.component.mjs +1 -1
- package/esm2020/lib/panel/task-panel/abstract-task-panel.component.mjs +25 -8
- package/esm2020/lib/resources/engine-endpoint/public/public-task-resource.service.mjs +3 -3
- package/esm2020/lib/resources/interface/data-groups.mjs +1 -1
- package/esm2020/lib/resources/interface/user-resource.mjs +1 -1
- package/esm2020/lib/side-menu/content-components/injection-tokens.mjs +3 -1
- package/esm2020/lib/side-menu/content-components/public-api.mjs +3 -1
- package/esm2020/lib/side-menu/content-components/user-impersonate/abstract-user-impersonate.component.mjs +37 -0
- package/esm2020/lib/side-menu/content-components/user-impersonate/model/user-impersonate-injection-data.mjs +2 -0
- package/esm2020/lib/side-menu/models/side-menu-size.mjs +2 -1
- package/esm2020/lib/task-content/model/preprocessed-data-groups.mjs +2 -0
- package/esm2020/lib/task-content/task-content/abstract-task-content.component.mjs +149 -4
- package/esm2020/lib/user/models/user.mjs +15 -2
- package/esm2020/lib/user/services/user-comparator.service.mjs +4 -3
- package/esm2020/lib/user/services/user.service.mjs +17 -12
- package/esm2020/lib/utility/public-api.mjs +2 -1
- package/esm2020/lib/utility/tests/mocks/mock-user.service.mjs +38 -0
- package/esm2020/lib/utility/tests/test-config.mjs +6 -1
- package/esm2020/lib/view/public-api.mjs +2 -1
- package/esm2020/lib/view/task-view/models/injection-token-task-force-open.mjs +3 -0
- package/esm2020/public-api.mjs +2 -1
- package/fesm2015/netgrif-components-core.mjs +4363 -3202
- package/fesm2015/netgrif-components-core.mjs.map +1 -1
- package/fesm2020/netgrif-components-core.mjs +4353 -3206
- package/fesm2020/netgrif-components-core.mjs.map +1 -1
- package/lib/authentication/public-api.d.ts +2 -0
- package/lib/dashboard/cards/model/custom-dashboard-model/custom-card.d.ts +8 -7
- package/lib/dashboard/cards/model/custom-dashboard-model/custom-iframe-card.d.ts +4 -0
- package/lib/dashboard/cards/model/dashboard-card-types.d.ts +1 -0
- package/lib/dashboard/cards/model/dashboard-card.d.ts +1 -1
- package/lib/data-fields/filter-field/abstract-filter-field-tab-view-content.component.d.ts +17 -0
- package/lib/data-fields/filter-field/abstract-filter-field-tab-view.component.d.ts +17 -0
- package/lib/data-fields/filter-field/abstract-filter-field.component.d.ts +1 -0
- package/lib/data-fields/public-api.d.ts +16 -0
- package/lib/data-fields/task-ref-field/abstract-task-ref-field.component.d.ts +20 -0
- package/lib/data-fields/task-ref-field/model/task-ref-components.d.ts +6 -0
- package/lib/data-fields/task-ref-field/model/task-ref-dashboard-constants.d.ts +8 -0
- package/lib/data-fields/task-ref-field/model/task-ref-dashboard-tile-constants.d.ts +11 -0
- package/lib/data-fields/task-ref-field/model/task-ref-dashboard-tile.d.ts +9 -0
- package/lib/data-fields/task-ref-field/model/task-ref-field.d.ts +10 -0
- package/lib/data-fields/task-ref-field/task-ref-dashboard-field/task-ref-dashboard-tile/abstract-task-ref-dashboard-tile.component.d.ts +36 -0
- package/lib/data-fields/text-field/abstract-dashboard-text-field.component.d.ts +23 -0
- package/lib/data-fields/text-field/dashboard-bar-chart-text-field/abstract-dashboard-bar-chart-text-field.component.d.ts +10 -0
- package/lib/data-fields/text-field/dashboard-iframe-text-field/abstract-dashboard-iframe-text-field.component.d.ts +11 -0
- package/lib/data-fields/text-field/dashboard-line-chart-text-field/abstract-dashboard-line-chart-text-field.component.d.ts +10 -0
- package/lib/data-fields/text-field/dashboard-pie-chart-text-field/abstract-dashboard-pie-chart-text-field.component.d.ts +10 -0
- package/lib/data-fields/text-field/dashboard-portal-text-field/abstract-dashboard-portal-text-field.component.d.ts +10 -0
- package/lib/data-fields/text-field/dashboard-portal-text-field/dashboard-portal-component-registry.service.d.ts +14 -0
- package/lib/data-fields/text-field/dashboard-portal-text-field/dashboard-view-constants.d.ts +8 -0
- package/lib/data-fields/text-field/models/text-field.d.ts +20 -0
- package/lib/filter/filter.repository.d.ts +4 -0
- package/lib/impersonation/models/user-impersonate-config-metadata.d.ts +3 -0
- package/lib/impersonation/models/user-impersonation-constants.d.ts +9 -0
- package/lib/impersonation/public-api.d.ts +6 -0
- package/lib/impersonation/services/impersonation-user-list.service.d.ts +12 -0
- package/lib/impersonation/services/impersonation-user-resource.service.d.ts +17 -0
- package/lib/impersonation/services/impersonation-user-select.service.d.ts +25 -0
- package/lib/impersonation/services/impersonation.service.d.ts +37 -0
- package/lib/navigation/navigation-double-drawer/abstract-navigation-double-drawer.d.ts +9 -2
- package/lib/navigation/quick-panel/components/abstract-quick-panel.component.d.ts +1 -1
- package/lib/panel/task-panel/abstract-task-panel.component.d.ts +8 -3
- package/lib/resources/engine-endpoint/public/public-task-resource.service.d.ts +2 -1
- package/lib/resources/interface/data-groups.d.ts +10 -5
- package/lib/resources/interface/user-resource.d.ts +1 -0
- package/lib/side-menu/content-components/injection-tokens.d.ts +2 -0
- package/lib/side-menu/content-components/public-api.d.ts +2 -0
- package/lib/side-menu/content-components/user-impersonate/abstract-user-impersonate.component.d.ts +14 -0
- package/lib/side-menu/content-components/user-impersonate/model/user-impersonate-injection-data.d.ts +8 -0
- package/lib/side-menu/models/side-menu-size.d.ts +2 -1
- package/lib/task-content/model/preprocessed-data-groups.d.ts +5 -0
- package/lib/task-content/task-content/abstract-task-content.component.d.ts +42 -1
- package/lib/user/models/user.d.ts +10 -1
- package/lib/user/services/user-comparator.service.d.ts +1 -1
- package/lib/utility/public-api.d.ts +1 -0
- package/lib/utility/tests/mocks/mock-user.service.d.ts +16 -0
- package/lib/view/public-api.d.ts +1 -0
- package/lib/view/task-view/models/injection-token-task-force-open.d.ts +2 -0
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
- package/src/assets/i18n/de.json +17 -0
- package/src/assets/i18n/en.json +17 -0
- package/src/assets/i18n/sk.json +17 -0
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { Inject, Injectable, Optional } from '@angular/core';
|
|
2
|
+
import { NAE_USER_IMPERSONATE_COMPONENT, NAE_ADMIN_IMPERSONATE_COMPONENT } from '../../side-menu/content-components/injection-tokens';
|
|
3
|
+
import { SideMenuSize } from '../../side-menu/models/side-menu-size';
|
|
4
|
+
import { SimpleFilter } from '../../filter/models/simple-filter';
|
|
5
|
+
import { UserImpersonationConstants } from '../models/user-impersonation-constants';
|
|
6
|
+
import moment from 'moment';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "../../logger/services/logger.service";
|
|
9
|
+
import * as i2 from "../../side-menu/services/side-menu.service";
|
|
10
|
+
import * as i3 from "../../snack-bar/services/snack-bar.service";
|
|
11
|
+
import * as i4 from "./impersonation.service";
|
|
12
|
+
import * as i5 from "../../user/services/user.service";
|
|
13
|
+
export class ImpersonationUserSelectService {
|
|
14
|
+
constructor(_log, _sideMenuService, _snackBar, _impersonation, _user, _userImpersonateComponent, _adminImpersonateComponent) {
|
|
15
|
+
this._log = _log;
|
|
16
|
+
this._sideMenuService = _sideMenuService;
|
|
17
|
+
this._snackBar = _snackBar;
|
|
18
|
+
this._impersonation = _impersonation;
|
|
19
|
+
this._user = _user;
|
|
20
|
+
this._userImpersonateComponent = _userImpersonateComponent;
|
|
21
|
+
this._adminImpersonateComponent = _adminImpersonateComponent;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Opens side menu with users who can be impersonated by logged user
|
|
25
|
+
*/
|
|
26
|
+
selectImpersonate() {
|
|
27
|
+
if (this.isAdmin()) {
|
|
28
|
+
this._sideMenuService.open(this._adminImpersonateComponent, SideMenuSize.LARGE, this.injectedData()).onClose.subscribe(event => {
|
|
29
|
+
this._log.debug('Impersonable user select :' + event);
|
|
30
|
+
if (event.data === undefined) {
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
this._impersonation.impersonateUser(event.data._id);
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
this._sideMenuService.open(this._userImpersonateComponent, SideMenuSize.XL, this.injectedData()).onClose.subscribe(event => {
|
|
38
|
+
this._log.debug('Impersonable config select :' + event);
|
|
39
|
+
if (event.data === undefined) {
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
this._impersonation.impersonateByConfig(event.data.stringId);
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
injectedData() {
|
|
47
|
+
const currentTime = moment();
|
|
48
|
+
let filterCasesFilter = SimpleFilter.fromCaseQuery({
|
|
49
|
+
process: {
|
|
50
|
+
identifier: UserImpersonationConstants.IMPERSONATION_CONFIG_NET_IDENTIFIER
|
|
51
|
+
},
|
|
52
|
+
query: `
|
|
53
|
+
(dataSet.impersonators.keyValue:${this._user.user.id}) AND
|
|
54
|
+
(dataSet.is_active.booleanValue:true) AND
|
|
55
|
+
((!(_exists_:dataSet.valid_from.timestampValue)) OR (dataSet.valid_from.timestampValue:<` + currentTime.valueOf() + `)) AND
|
|
56
|
+
((!(_exists_:dataSet.valid_to.timestampValue)) OR (dataSet.valid_to.timestampValue:>${currentTime.valueOf()}))
|
|
57
|
+
`
|
|
58
|
+
});
|
|
59
|
+
return {
|
|
60
|
+
filter: filterCasesFilter
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
isAdmin() {
|
|
64
|
+
return this._user.hasAuthority('ROLE_ADMIN');
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
ImpersonationUserSelectService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ImpersonationUserSelectService, deps: [{ token: i1.LoggerService }, { token: i2.SideMenuService }, { token: i3.SnackBarService }, { token: i4.ImpersonationService }, { token: i5.UserService }, { token: NAE_USER_IMPERSONATE_COMPONENT, optional: true }, { token: NAE_ADMIN_IMPERSONATE_COMPONENT, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
68
|
+
ImpersonationUserSelectService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ImpersonationUserSelectService, providedIn: 'root' });
|
|
69
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ImpersonationUserSelectService, decorators: [{
|
|
70
|
+
type: Injectable,
|
|
71
|
+
args: [{
|
|
72
|
+
providedIn: 'root'
|
|
73
|
+
}]
|
|
74
|
+
}], ctorParameters: function () { return [{ type: i1.LoggerService }, { type: i2.SideMenuService }, { type: i3.SnackBarService }, { type: i4.ImpersonationService }, { type: i5.UserService }, { type: undefined, decorators: [{
|
|
75
|
+
type: Optional
|
|
76
|
+
}, {
|
|
77
|
+
type: Inject,
|
|
78
|
+
args: [NAE_USER_IMPERSONATE_COMPONENT]
|
|
79
|
+
}] }, { type: undefined, decorators: [{
|
|
80
|
+
type: Optional
|
|
81
|
+
}, {
|
|
82
|
+
type: Inject,
|
|
83
|
+
args: [NAE_ADMIN_IMPERSONATE_COMPONENT]
|
|
84
|
+
}] }]; } });
|
|
85
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wZXJzb25hdGlvbi11c2VyLXNlbGVjdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzLWNvcmUvc3JjL2xpYi9pbXBlcnNvbmF0aW9uL3NlcnZpY2VzL2ltcGVyc29uYXRpb24tdXNlci1zZWxlY3Quc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFM0QsT0FBTyxFQUFDLDhCQUE4QixFQUFFLCtCQUErQixFQUFDLE1BQU0scURBQXFELENBQUM7QUFJcEksT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHVDQUF1QyxDQUFDO0FBS25FLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUMvRCxPQUFPLEVBQUMsMEJBQTBCLEVBQUMsTUFBTSx3Q0FBd0MsQ0FBQztBQUNsRixPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7Ozs7Ozs7QUFNNUIsTUFBTSxPQUFPLDhCQUE4QjtJQUV2QyxZQUFzQixJQUFtQixFQUNuQixnQkFBaUMsRUFDakMsU0FBMEIsRUFDMUIsY0FBb0MsRUFDcEMsS0FBa0IsRUFDa0MseUJBQThCLEVBQzdCLDBCQUErQjtRQU5wRixTQUFJLEdBQUosSUFBSSxDQUFlO1FBQ25CLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBaUI7UUFDakMsY0FBUyxHQUFULFNBQVMsQ0FBaUI7UUFDMUIsbUJBQWMsR0FBZCxjQUFjLENBQXNCO1FBQ3BDLFVBQUssR0FBTCxLQUFLLENBQWE7UUFDa0MsOEJBQXlCLEdBQXpCLHlCQUF5QixDQUFLO1FBQzdCLCtCQUEwQixHQUExQiwwQkFBMEIsQ0FBSztJQUN2RyxDQUFDO0lBRUo7O09BRUc7SUFDSSxpQkFBaUI7UUFDcEIsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDaEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsMEJBQTBCLEVBQUUsWUFBWSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUMzSCxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyw0QkFBNEIsR0FBRyxLQUFLLENBQUMsQ0FBQztnQkFDdEQsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFNBQVMsRUFBRTtvQkFDMUIsT0FBTztpQkFDVjtnQkFDRCxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3hELENBQUMsQ0FBQyxDQUFDO1NBQ047YUFBTTtZQUNILElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHlCQUF5QixFQUFFLFlBQVksQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDdkgsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsOEJBQThCLEdBQUcsS0FBSyxDQUFDLENBQUM7Z0JBQ3hELElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxTQUFTLEVBQUU7b0JBQzFCLE9BQU87aUJBQ1Y7Z0JBQ0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBRSxLQUFLLENBQUMsSUFBc0MsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNwRyxDQUFDLENBQUMsQ0FBQztTQUNOO0lBQ0wsQ0FBQztJQUVTLFlBQVk7UUFDbEIsTUFBTSxXQUFXLEdBQUcsTUFBTSxFQUFFLENBQUM7UUFDN0IsSUFBSSxpQkFBaUIsR0FBRyxZQUFZLENBQUMsYUFBYSxDQUFDO1lBQy9DLE9BQU8sRUFBRTtnQkFDTCxVQUFVLEVBQUUsMEJBQTBCLENBQUMsbUNBQW1DO2FBQzdFO1lBQ0QsS0FBSyxFQUFFOzhDQUMyQixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFOztxR0FFcUMsR0FBRyxXQUFXLENBQUMsT0FBTyxFQUFFLEdBQUc7a0dBQzlCLFdBQVcsQ0FBQyxPQUFPLEVBQUU7YUFDMUc7U0FDSixDQUFDLENBQUM7UUFDSCxPQUFPO1lBQ0gsTUFBTSxFQUFFLGlCQUFpQjtTQUNJLENBQUE7SUFDckMsQ0FBQztJQUVTLE9BQU87UUFDYixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ2pELENBQUM7OzRIQXREUSw4QkFBOEIsNEtBT1AsOEJBQThCLDZCQUM5QiwrQkFBK0I7Z0lBUnRELDhCQUE4QixjQUY3QixNQUFNOzRGQUVQLDhCQUE4QjtrQkFIMUMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQVFnQixRQUFROzswQkFBSSxNQUFNOzJCQUFDLDhCQUE4Qjs7MEJBQ2pELFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsK0JBQStCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7SW1wZXJzb25hdGlvblNlcnZpY2V9IGZyb20gXCIuL2ltcGVyc29uYXRpb24uc2VydmljZVwiO1xuaW1wb3J0IHtOQUVfVVNFUl9JTVBFUlNPTkFURV9DT01QT05FTlQsIE5BRV9BRE1JTl9JTVBFUlNPTkFURV9DT01QT05FTlR9IGZyb20gJy4uLy4uL3NpZGUtbWVudS9jb250ZW50LWNvbXBvbmVudHMvaW5qZWN0aW9uLXRva2Vucyc7XG5pbXBvcnQge0xvZ2dlclNlcnZpY2V9IGZyb20gJy4uLy4uL2xvZ2dlci9zZXJ2aWNlcy9sb2dnZXIuc2VydmljZSc7XG5pbXBvcnQge1NuYWNrQmFyU2VydmljZX0gZnJvbSAnLi4vLi4vc25hY2stYmFyL3NlcnZpY2VzL3NuYWNrLWJhci5zZXJ2aWNlJztcbmltcG9ydCB7U2lkZU1lbnVTZXJ2aWNlfSBmcm9tICcuLi8uLi9zaWRlLW1lbnUvc2VydmljZXMvc2lkZS1tZW51LnNlcnZpY2UnO1xuaW1wb3J0IHtTaWRlTWVudVNpemV9IGZyb20gJy4uLy4uL3NpZGUtbWVudS9tb2RlbHMvc2lkZS1tZW51LXNpemUnO1xuaW1wb3J0IHtVc2VySW1wZXJzb25hdGVDb25maWdNZXRhZGF0YX0gZnJvbSAnLi4vbW9kZWxzL3VzZXItaW1wZXJzb25hdGUtY29uZmlnLW1ldGFkYXRhJztcbmltcG9ydCB7XG4gICAgVXNlckltcGVyc29uYXRlSW5qZWN0aW9uRGF0YVxufSBmcm9tICcuLi8uLi9zaWRlLW1lbnUvY29udGVudC1jb21wb25lbnRzL3VzZXItaW1wZXJzb25hdGUvbW9kZWwvdXNlci1pbXBlcnNvbmF0ZS1pbmplY3Rpb24tZGF0YSc7XG5pbXBvcnQge1NpbXBsZUZpbHRlcn0gZnJvbSAnLi4vLi4vZmlsdGVyL21vZGVscy9zaW1wbGUtZmlsdGVyJztcbmltcG9ydCB7VXNlckltcGVyc29uYXRpb25Db25zdGFudHN9IGZyb20gJy4uL21vZGVscy91c2VyLWltcGVyc29uYXRpb24tY29uc3RhbnRzJztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcbmltcG9ydCB7VXNlclNlcnZpY2V9IGZyb20gJy4uLy4uL3VzZXIvc2VydmljZXMvdXNlci5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgSW1wZXJzb25hdGlvblVzZXJTZWxlY3RTZXJ2aWNlIHtcblxuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBfbG9nOiBMb2dnZXJTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfc2lkZU1lbnVTZXJ2aWNlOiBTaWRlTWVudVNlcnZpY2UsXG4gICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9zbmFja0JhcjogU25hY2tCYXJTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfaW1wZXJzb25hdGlvbjogSW1wZXJzb25hdGlvblNlcnZpY2UsXG4gICAgICAgICAgICAgICAgcHJvdGVjdGVkIF91c2VyOiBVc2VyU2VydmljZSxcbiAgICAgICAgICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KE5BRV9VU0VSX0lNUEVSU09OQVRFX0NPTVBPTkVOVCkgcHJvdGVjdGVkIF91c2VySW1wZXJzb25hdGVDb21wb25lbnQ6IGFueSxcbiAgICAgICAgICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KE5BRV9BRE1JTl9JTVBFUlNPTkFURV9DT01QT05FTlQpIHByb3RlY3RlZCBfYWRtaW5JbXBlcnNvbmF0ZUNvbXBvbmVudDogYW55LFxuICAgICkge31cblxuICAgIC8qKlxuICAgICAqIE9wZW5zIHNpZGUgbWVudSB3aXRoIHVzZXJzIHdobyBjYW4gYmUgaW1wZXJzb25hdGVkIGJ5IGxvZ2dlZCB1c2VyXG4gICAgICovXG4gICAgcHVibGljIHNlbGVjdEltcGVyc29uYXRlKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc0FkbWluKCkpIHtcbiAgICAgICAgICAgIHRoaXMuX3NpZGVNZW51U2VydmljZS5vcGVuKHRoaXMuX2FkbWluSW1wZXJzb25hdGVDb21wb25lbnQsIFNpZGVNZW51U2l6ZS5MQVJHRSwgdGhpcy5pbmplY3RlZERhdGEoKSkub25DbG9zZS5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX2xvZy5kZWJ1ZygnSW1wZXJzb25hYmxlIHVzZXIgc2VsZWN0IDonICsgZXZlbnQpO1xuICAgICAgICAgICAgICAgIGlmIChldmVudC5kYXRhID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLl9pbXBlcnNvbmF0aW9uLmltcGVyc29uYXRlVXNlcihldmVudC5kYXRhLl9pZCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3NpZGVNZW51U2VydmljZS5vcGVuKHRoaXMuX3VzZXJJbXBlcnNvbmF0ZUNvbXBvbmVudCwgU2lkZU1lbnVTaXplLlhMLCB0aGlzLmluamVjdGVkRGF0YSgpKS5vbkNsb3NlLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbG9nLmRlYnVnKCdJbXBlcnNvbmFibGUgY29uZmlnIHNlbGVjdCA6JyArIGV2ZW50KTtcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQuZGF0YSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5faW1wZXJzb25hdGlvbi5pbXBlcnNvbmF0ZUJ5Q29uZmlnKChldmVudC5kYXRhIGFzIFVzZXJJbXBlcnNvbmF0ZUNvbmZpZ01ldGFkYXRhKS5zdHJpbmdJZCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBpbmplY3RlZERhdGEoKTogVXNlckltcGVyc29uYXRlSW5qZWN0aW9uRGF0YSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRUaW1lID0gbW9tZW50KCk7XG4gICAgICAgIGxldCBmaWx0ZXJDYXNlc0ZpbHRlciA9IFNpbXBsZUZpbHRlci5mcm9tQ2FzZVF1ZXJ5KHtcbiAgICAgICAgICAgIHByb2Nlc3M6IHtcbiAgICAgICAgICAgICAgICBpZGVudGlmaWVyOiBVc2VySW1wZXJzb25hdGlvbkNvbnN0YW50cy5JTVBFUlNPTkFUSU9OX0NPTkZJR19ORVRfSURFTlRJRklFUlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHF1ZXJ5OiBgXG4gICAgICAgICAgICAoZGF0YVNldC5pbXBlcnNvbmF0b3JzLmtleVZhbHVlOiR7dGhpcy5fdXNlci51c2VyLmlkfSkgQU5EXG4gICAgICAgICAgICAoZGF0YVNldC5pc19hY3RpdmUuYm9vbGVhblZhbHVlOnRydWUpIEFORFxuICAgICAgICAgICAgKCghKF9leGlzdHNfOmRhdGFTZXQudmFsaWRfZnJvbS50aW1lc3RhbXBWYWx1ZSkpIE9SIChkYXRhU2V0LnZhbGlkX2Zyb20udGltZXN0YW1wVmFsdWU6PGAgKyBjdXJyZW50VGltZS52YWx1ZU9mKCkgKyBgKSkgQU5EXG4gICAgICAgICAgICAoKCEoX2V4aXN0c186ZGF0YVNldC52YWxpZF90by50aW1lc3RhbXBWYWx1ZSkpIE9SIChkYXRhU2V0LnZhbGlkX3RvLnRpbWVzdGFtcFZhbHVlOj4ke2N1cnJlbnRUaW1lLnZhbHVlT2YoKX0pKVxuICAgICAgICAgICAgYFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGZpbHRlcjogZmlsdGVyQ2FzZXNGaWx0ZXJcbiAgICAgICAgfSBhcyBVc2VySW1wZXJzb25hdGVJbmplY3Rpb25EYXRhXG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGlzQWRtaW4oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl91c2VyLmhhc0F1dGhvcml0eSgnUk9MRV9BRE1JTicpO1xuICAgIH1cblxufVxuIl19
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { AbstractResourceService } from '../../resources/public-api';
|
|
3
|
+
import { Subject } from 'rxjs';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "../../resources/public-api";
|
|
6
|
+
import * as i2 from "@angular/router";
|
|
7
|
+
import * as i3 from "../../configuration/configuration.service";
|
|
8
|
+
import * as i4 from "../../user/services/user.service";
|
|
9
|
+
import * as i5 from "../../snack-bar/services/snack-bar.service";
|
|
10
|
+
import * as i6 from "../../filter/filter.repository";
|
|
11
|
+
import * as i7 from "../../logger/services/logger.service";
|
|
12
|
+
import * as i8 from "@ngx-translate/core";
|
|
13
|
+
export class ImpersonationService extends AbstractResourceService {
|
|
14
|
+
constructor(provider, _router, _configService, _userService, _snackbar, _filter, _log, _translate) {
|
|
15
|
+
super('impersonation', provider, _configService);
|
|
16
|
+
this.provider = provider;
|
|
17
|
+
this._router = _router;
|
|
18
|
+
this._configService = _configService;
|
|
19
|
+
this._userService = _userService;
|
|
20
|
+
this._snackbar = _snackbar;
|
|
21
|
+
this._filter = _filter;
|
|
22
|
+
this._log = _log;
|
|
23
|
+
this._translate = _translate;
|
|
24
|
+
this._impersonating$ = new Subject();
|
|
25
|
+
this._sub = this._userService.user$.subscribe(user => this._resolveUserChange(user));
|
|
26
|
+
}
|
|
27
|
+
get impersonating$() {
|
|
28
|
+
return this._impersonating$.asObservable();
|
|
29
|
+
}
|
|
30
|
+
impersonateUser(userId) {
|
|
31
|
+
this.provider.post$('impersonate/user/' + userId, this.SERVER_URL, {}).subscribe((user) => {
|
|
32
|
+
this._resolveSuccess(user);
|
|
33
|
+
}, (response => {
|
|
34
|
+
this._resolveError(response);
|
|
35
|
+
}));
|
|
36
|
+
}
|
|
37
|
+
impersonateByConfig(configId) {
|
|
38
|
+
this.provider.post$('impersonate/config/' + configId, this.SERVER_URL, {}).subscribe((user) => {
|
|
39
|
+
this._resolveSuccess(user);
|
|
40
|
+
}, (response => {
|
|
41
|
+
this._resolveError(response);
|
|
42
|
+
}));
|
|
43
|
+
}
|
|
44
|
+
cease() {
|
|
45
|
+
this.provider.post$('impersonate/clear', this.SERVER_URL, {}).subscribe(user => {
|
|
46
|
+
this._snackbar.openSuccessSnackBar(this._translate.instant('impersonation.action.deactivated'));
|
|
47
|
+
return this._triggerReload();
|
|
48
|
+
}, (error => {
|
|
49
|
+
this._snackbar.openErrorSnackBar(this._translate.instant('impersonation.action.failed'));
|
|
50
|
+
}));
|
|
51
|
+
}
|
|
52
|
+
_resolveSuccess(user) {
|
|
53
|
+
this._snackbar.openSuccessSnackBar(this._translate.instant('impersonation.user.successfullyRepresented'));
|
|
54
|
+
this._triggerReload();
|
|
55
|
+
}
|
|
56
|
+
_resolveError(response) {
|
|
57
|
+
if (response.status === 400) {
|
|
58
|
+
response.error.alreadyImpersonated ?
|
|
59
|
+
this._snackbar.openErrorSnackBar(this._translate.instant('impersonation.user.currentlyAlreadyRepresented')) :
|
|
60
|
+
this._snackbar.openErrorSnackBar(this._translate.instant('impersonation.user.currentlyLogged'));
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
this._snackbar.openErrorSnackBar(this._translate.instant('impersonation.action.failed'));
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
_triggerReload() {
|
|
67
|
+
this._userService.reload();
|
|
68
|
+
}
|
|
69
|
+
_resolveUserChange(user) {
|
|
70
|
+
if (this._lastUser && this._lastUser.isImpersonating() != user.isImpersonating()) {
|
|
71
|
+
this._filter.removeAllFilters();
|
|
72
|
+
this._impersonating$.next(user.isImpersonating());
|
|
73
|
+
}
|
|
74
|
+
this._lastUser = user;
|
|
75
|
+
}
|
|
76
|
+
ngOnDestroy() {
|
|
77
|
+
if (this._sub) {
|
|
78
|
+
this._sub.unsubscribe();
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
ImpersonationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ImpersonationService, deps: [{ token: i1.ResourceProvider }, { token: i2.Router }, { token: i3.ConfigurationService }, { token: i4.UserService }, { token: i5.SnackBarService }, { token: i6.FilterRepository }, { token: i7.LoggerService }, { token: i8.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
83
|
+
ImpersonationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ImpersonationService, providedIn: 'root' });
|
|
84
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ImpersonationService, decorators: [{
|
|
85
|
+
type: Injectable,
|
|
86
|
+
args: [{
|
|
87
|
+
providedIn: 'root'
|
|
88
|
+
}]
|
|
89
|
+
}], ctorParameters: function () { return [{ type: i1.ResourceProvider }, { type: i2.Router }, { type: i3.ConfigurationService }, { type: i4.UserService }, { type: i5.SnackBarService }, { type: i6.FilterRepository }, { type: i7.LoggerService }, { type: i8.TranslateService }]; } });
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wZXJzb25hdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzLWNvcmUvc3JjL2xpYi9pbXBlcnNvbmF0aW9uL3NlcnZpY2VzL2ltcGVyc29uYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBR3BELE9BQU8sRUFBQyx1QkFBdUIsRUFBaUMsTUFBTSw0QkFBNEIsQ0FBQztBQU1uRyxPQUFPLEVBQWEsT0FBTyxFQUFlLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7O0FBTXZELE1BQU0sT0FBTyxvQkFBcUIsU0FBUSx1QkFBdUI7SUFPN0QsWUFBNkIsUUFBMEIsRUFDMUIsT0FBZSxFQUNmLGNBQW9DLEVBQ3BDLFlBQXlCLEVBQ3pCLFNBQTBCLEVBQzFCLE9BQXlCLEVBQ3pCLElBQW1CLEVBQ25CLFVBQTRCO1FBQ3JELEtBQUssQ0FBQyxlQUFlLEVBQUUsUUFBUSxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBUnhCLGFBQVEsR0FBUixRQUFRLENBQWtCO1FBQzFCLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDZixtQkFBYyxHQUFkLGNBQWMsQ0FBc0I7UUFDcEMsaUJBQVksR0FBWixZQUFZLENBQWE7UUFDekIsY0FBUyxHQUFULFNBQVMsQ0FBaUI7UUFDMUIsWUFBTyxHQUFQLE9BQU8sQ0FBa0I7UUFDekIsU0FBSSxHQUFKLElBQUksQ0FBZTtRQUNuQixlQUFVLEdBQVYsVUFBVSxDQUFrQjtRQVpqRCxvQkFBZSxHQUFHLElBQUksT0FBTyxFQUFXLENBQUM7UUFjN0MsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENB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SSxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUU7WUFDOUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDO1NBQ3JEO1FBQ0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFDMUIsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDWCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQzNCO0lBQ0wsQ0FBQzs7a0hBL0VRLG9CQUFvQjtzSEFBcEIsb0JBQW9CLGNBRmpCLE1BQU07NEZBRVQsb0JBQW9CO2tCQUhoQyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZSwgT25EZXN0cm95fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Um91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7QWJzdHJhY3RSZXNvdXJjZVNlcnZpY2UsIFJlc291cmNlUHJvdmlkZXIsIFVzZXJSZXNvdXJjZX0gZnJvbSAnLi4vLi4vcmVzb3VyY2VzL3B1YmxpYy1hcGknO1xuaW1wb3J0IHtDb25maWd1cmF0aW9uU2VydmljZX0gZnJvbSAnLi4vLi4vY29uZmlndXJhdGlvbi9jb25maWd1cmF0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHtVc2VyU2VydmljZX0gZnJvbSAnLi4vLi4vdXNlci9zZXJ2aWNlcy91c2VyLnNlcnZpY2UnO1xuaW1wb3J0IHtTbmFja0JhclNlcnZpY2V9IGZyb20gJy4uLy4uL3NuYWNrLWJhci9zZXJ2aWNlcy9zbmFjay1iYXIuc2VydmljZSc7XG5pbXBvcnQge0ZpbHRlclJlcG9zaXRvcnl9IGZyb20gJy4uLy4uL2ZpbHRlci9maWx0ZXIucmVwb3NpdG9yeSc7XG5pbXBvcnQge0xvZ2dlclNlcnZpY2V9IGZyb20gJy4uLy4uL2xvZ2dlci9zZXJ2aWNlcy9sb2dnZXIuc2VydmljZSc7XG5pbXBvcnQge09ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1VzZXJ9IGZyb20gJy4uLy4uL3VzZXIvbW9kZWxzL3VzZXInO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEltcGVyc29uYXRpb25TZXJ2aWNlIGV4dGVuZHMgQWJzdHJhY3RSZXNvdXJjZVNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuXG4gICAgcHJpdmF0ZSBfaW1wZXJzb25hdGluZyQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuXG4gICAgcHJpdmF0ZSBfbGFzdFVzZXI6IFVzZXI7XG4gICAgcHJpdmF0ZSBfc3ViOiBTdWJzY3JpcHRpb247XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IocHJvdGVjdGVkIHByb3ZpZGVyOiBSZXNvdXJjZVByb3ZpZGVyLFxuICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX3JvdXRlcjogUm91dGVyLFxuICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2NvbmZpZ1NlcnZpY2U6IENvbmZpZ3VyYXRpb25TZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX3VzZXJTZXJ2aWNlOiBVc2VyU2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9zbmFja2JhcjogU25hY2tCYXJTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2ZpbHRlcjogRmlsdGVyUmVwb3NpdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9sb2c6IExvZ2dlclNlcnZpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlKSB7XG4gICAgICAgIHN1cGVyKCdpbXBlcnNvbmF0aW9uJywgcHJvdmlkZXIsIF9jb25maWdTZXJ2aWNlKTtcbiAgICAgICAgdGhpcy5fc3ViID0gdGhpcy5fdXNlclNlcnZpY2UudXNlciQuc3Vic2NyaWJlKHVzZXIgPT4gdGhpcy5fcmVzb2x2ZVVzZXJDaGFuZ2UodXNlcikpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaW1wZXJzb25hdGluZyQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pbXBlcnNvbmF0aW5nJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaW1wZXJzb25hdGVVc2VyKHVzZXJJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMucHJvdmlkZXIucG9zdCQoJ2ltcGVyc29uYXRlL3VzZXIvJyArIHVzZXJJZCwgdGhpcy5TRVJWRVJfVVJMLCB7fSkuc3Vic2NyaWJlKCh1c2VyOiBVc2VyUmVzb3VyY2UpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3Jlc29sdmVTdWNjZXNzKHVzZXIpO1xuICAgICAgICB9LCAocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgdGhpcy5fcmVzb2x2ZUVycm9yKHJlc3BvbnNlKTtcbiAgICAgICAgfSkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBpbXBlcnNvbmF0ZUJ5Q29uZmlnKGNvbmZpZ0lkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wcm92aWRlci5wb3N0JCgnaW1wZXJzb25hdGUvY29uZmlnLycgKyBjb25maWdJZCwgdGhpcy5TRVJWRVJfVVJMLCB7fSkuc3Vic2NyaWJlKCh1c2VyOiBVc2VyUmVzb3VyY2UpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3Jlc29sdmVTdWNjZXNzKHVzZXIpO1xuICAgICAgICB9LCAocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgdGhpcy5fcmVzb2x2ZUVycm9yKHJlc3BvbnNlKTtcbiAgICAgICAgfSkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjZWFzZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wcm92aWRlci5wb3N0JCgnaW1wZXJzb25hdGUvY2xlYXInLCB0aGlzLlNFUlZFUl9VUkwsIHt9KS5zdWJzY3JpYmUodXNlciA9PiB7XG4gICAgICAgICAgICB0aGlzLl9zbmFja2Jhci5vcGVuU3VjY2Vzc1NuYWNrQmFyKHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KCdpbXBlcnNvbmF0aW9uLmFjdGlvbi5kZWFjdGl2YXRlZCcpKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl90cmlnZ2VyUmVsb2FkKCk7XG4gICAgICAgIH0sIChlcnJvciA9PiB7XG4gICAgICAgICAgICB0aGlzLl9zbmFja2Jhci5vcGVuRXJyb3JTbmFja0Jhcih0aGlzLl90cmFuc2xhdGUuaW5zdGFudCgnaW1wZXJzb25hdGlvbi5hY3Rpb24uZmFpbGVkJykpO1xuICAgICAgICB9KSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9yZXNvbHZlU3VjY2Vzcyh1c2VyOiBVc2VyUmVzb3VyY2UpIHtcbiAgICAgICAgdGhpcy5fc25hY2tiYXIub3BlblN1Y2Nlc3NTbmFja0Jhcih0aGlzLl90cmFuc2xhdGUuaW5zdGFudCgnaW1wZXJzb25hdGlvbi51c2VyLnN1Y2Nlc3NmdWxseVJlcHJlc2VudGVkJykpO1xuICAgICAgICB0aGlzLl90cmlnZ2VyUmVsb2FkKCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9yZXNvbHZlRXJyb3IocmVzcG9uc2U6IGFueSkge1xuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSA0MDApIHtcbiAgICAgICAgICAgIHJlc3BvbnNlLmVycm9yLmFscmVhZHlJbXBlcnNvbmF0ZWQgP1xuICAgICAgICAgICAgICAgIHRoaXMuX3NuYWNrYmFyLm9wZW5FcnJvclNuYWNrQmFyKHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KCdpbXBlcnNvbmF0aW9uLnVzZXIuY3VycmVudGx5QWxyZWFkeVJlcHJlc2VudGVkJykpIDpcbiAgICAgICAgICAgICAgICB0aGlzLl9zbmFja2Jhci5vcGVuRXJyb3JTbmFja0Jhcih0aGlzLl90cmFuc2xhdGUuaW5zdGFudCgnaW1wZXJzb25hdGlvbi51c2VyLmN1cnJlbnRseUxvZ2dlZCcpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3NuYWNrYmFyLm9wZW5FcnJvclNuYWNrQmFyKHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KCdpbXBlcnNvbmF0aW9uLmFjdGlvbi5mYWlsZWQnKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX3RyaWdnZXJSZWxvYWQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3VzZXJTZXJ2aWNlLnJlbG9hZCgpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfcmVzb2x2ZVVzZXJDaGFuZ2UodXNlcjogVXNlcikge1xuICAgICAgICBpZiAodGhpcy5fbGFzdFVzZXIgJiYgdGhpcy5fbGFzdFVzZXIuaXNJbXBlcnNvbmF0aW5nKCkgIT0gdXNlci5pc0ltcGVyc29uYXRpbmcoKSkge1xuICAgICAgICAgICAgdGhpcy5fZmlsdGVyLnJlbW92ZUFsbEZpbHRlcnMoKTtcbiAgICAgICAgICAgIHRoaXMuX2ltcGVyc29uYXRpbmckLm5leHQodXNlci5pc0ltcGVyc29uYXRpbmcoKSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fbGFzdFVzZXIgPSB1c2VyO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fc3ViKSB7XG4gICAgICAgICAgICB0aGlzLl9zdWIudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|
package/esm2020/lib/navigation/navigation-double-drawer/abstract-navigation-double-drawer.mjs
CHANGED
|
@@ -12,7 +12,9 @@ import * as i5 from "../../authorization/permission/access.service";
|
|
|
12
12
|
import * as i6 from "../../logger/services/logger.service";
|
|
13
13
|
import * as i7 from "../../configuration/configuration.service";
|
|
14
14
|
import * as i8 from "../service/uri.service";
|
|
15
|
-
import * as i9 from "../../
|
|
15
|
+
import * as i9 from "../../impersonation/services/impersonation-user-select.service";
|
|
16
|
+
import * as i10 from "../../impersonation/services/impersonation.service";
|
|
17
|
+
import * as i11 from "../../routing/dynamic-navigation-route-provider/dynamic-navigation-route-provider.service";
|
|
16
18
|
export const FILTER_IDENTIFIERS = [
|
|
17
19
|
"preference_filter_item"
|
|
18
20
|
];
|
|
@@ -22,7 +24,7 @@ const RIGHT_DRAWER_DEFAULT_WIDTH = 240;
|
|
|
22
24
|
const RIGHT_DRAWER_DEFAULT_MIN_WIDTH = 180;
|
|
23
25
|
const RIGHT_DRAWER_MAX_WIDTH = 460;
|
|
24
26
|
export class AbstractNavigationDoubleDrawerComponent {
|
|
25
|
-
constructor(_router, _activatedRoute, _breakpoint, _languageService, _userService, _accessService, _log, _config, _uriService, _dynamicRoutingService) {
|
|
27
|
+
constructor(_router, _activatedRoute, _breakpoint, _languageService, _userService, _accessService, _log, _config, _uriService, _impersonationUserSelect, _impersonation, _dynamicRoutingService) {
|
|
26
28
|
this._router = _router;
|
|
27
29
|
this._activatedRoute = _activatedRoute;
|
|
28
30
|
this._breakpoint = _breakpoint;
|
|
@@ -32,6 +34,8 @@ export class AbstractNavigationDoubleDrawerComponent {
|
|
|
32
34
|
this._log = _log;
|
|
33
35
|
this._config = _config;
|
|
34
36
|
this._uriService = _uriService;
|
|
37
|
+
this._impersonationUserSelect = _impersonationUserSelect;
|
|
38
|
+
this._impersonation = _impersonation;
|
|
35
39
|
this._dynamicRoutingService = _dynamicRoutingService;
|
|
36
40
|
this.imageRouterLink = "/";
|
|
37
41
|
this.imageAlt = "Logo";
|
|
@@ -39,6 +43,7 @@ export class AbstractNavigationDoubleDrawerComponent {
|
|
|
39
43
|
this.includeUser = true;
|
|
40
44
|
this.includeLanguage = true;
|
|
41
45
|
this.includeMoreMenu = true;
|
|
46
|
+
this.includeImpersonation = true;
|
|
42
47
|
this.allClosable = true;
|
|
43
48
|
this.folderIcon = "folder";
|
|
44
49
|
this.openedFolderIcon = "folder_open";
|
|
@@ -196,6 +201,12 @@ export class AbstractNavigationDoubleDrawerComponent {
|
|
|
196
201
|
}
|
|
197
202
|
});
|
|
198
203
|
}
|
|
204
|
+
impersonate() {
|
|
205
|
+
this._impersonationUserSelect.selectImpersonate();
|
|
206
|
+
}
|
|
207
|
+
stopImpersonating() {
|
|
208
|
+
this._impersonation.cease();
|
|
209
|
+
}
|
|
199
210
|
get user() {
|
|
200
211
|
return this._userService.user;
|
|
201
212
|
}
|
|
@@ -347,15 +358,15 @@ export class AbstractNavigationDoubleDrawerComponent {
|
|
|
347
358
|
// this.contentWidth.next(this.width);
|
|
348
359
|
}
|
|
349
360
|
}
|
|
350
|
-
AbstractNavigationDoubleDrawerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AbstractNavigationDoubleDrawerComponent, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }, { token: i2.BreakpointObserver }, { token: i3.LanguageService }, { token: i4.UserService }, { token: i5.AccessService }, { token: i6.LoggerService }, { token: i7.ConfigurationService }, { token: i8.UriService }, { token: i9.DynamicNavigationRouteProviderService }], target: i0.ɵɵFactoryTarget.Component });
|
|
351
|
-
AbstractNavigationDoubleDrawerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: AbstractNavigationDoubleDrawerComponent, selector: "ncc-abstract-navigation-double-drawer", inputs: { portalLeftMenu: "portalLeftMenu", portalRightMenu: "portalRightMenu", imageRouterLink: "imageRouterLink", imageAlt: "imageAlt", image: "image", profileRouterLink: "profileRouterLink", includeUser: "includeUser", includeLanguage: "includeLanguage", includeMoreMenu: "includeMoreMenu", allClosable: "allClosable", folderIcon: "folderIcon", openedFolderIcon: "openedFolderIcon", filterIcon: "filterIcon", foldersCategoryName: "foldersCategoryName", viewsCategoryName: "viewsCategoryName" }, ngImport: i0, template: '', isInline: true });
|
|
361
|
+
AbstractNavigationDoubleDrawerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AbstractNavigationDoubleDrawerComponent, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }, { token: i2.BreakpointObserver }, { token: i3.LanguageService }, { token: i4.UserService }, { token: i5.AccessService }, { token: i6.LoggerService }, { token: i7.ConfigurationService }, { token: i8.UriService }, { token: i9.ImpersonationUserSelectService }, { token: i10.ImpersonationService }, { token: i11.DynamicNavigationRouteProviderService }], target: i0.ɵɵFactoryTarget.Component });
|
|
362
|
+
AbstractNavigationDoubleDrawerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: AbstractNavigationDoubleDrawerComponent, selector: "ncc-abstract-navigation-double-drawer", inputs: { portalLeftMenu: "portalLeftMenu", portalRightMenu: "portalRightMenu", imageRouterLink: "imageRouterLink", imageAlt: "imageAlt", image: "image", profileRouterLink: "profileRouterLink", includeUser: "includeUser", includeLanguage: "includeLanguage", includeMoreMenu: "includeMoreMenu", includeImpersonation: "includeImpersonation", allClosable: "allClosable", folderIcon: "folderIcon", openedFolderIcon: "openedFolderIcon", filterIcon: "filterIcon", foldersCategoryName: "foldersCategoryName", viewsCategoryName: "viewsCategoryName" }, ngImport: i0, template: '', isInline: true });
|
|
352
363
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AbstractNavigationDoubleDrawerComponent, decorators: [{
|
|
353
364
|
type: Component,
|
|
354
365
|
args: [{
|
|
355
366
|
selector: 'ncc-abstract-navigation-double-drawer',
|
|
356
367
|
template: '',
|
|
357
368
|
}]
|
|
358
|
-
}], ctorParameters: function () { return [{ type: i1.Router }, { type: i1.ActivatedRoute }, { type: i2.BreakpointObserver }, { type: i3.LanguageService }, { type: i4.UserService }, { type: i5.AccessService }, { type: i6.LoggerService }, { type: i7.ConfigurationService }, { type: i8.UriService }, { type: i9.DynamicNavigationRouteProviderService }]; }, propDecorators: { portalLeftMenu: [{
|
|
369
|
+
}], ctorParameters: function () { return [{ type: i1.Router }, { type: i1.ActivatedRoute }, { type: i2.BreakpointObserver }, { type: i3.LanguageService }, { type: i4.UserService }, { type: i5.AccessService }, { type: i6.LoggerService }, { type: i7.ConfigurationService }, { type: i8.UriService }, { type: i9.ImpersonationUserSelectService }, { type: i10.ImpersonationService }, { type: i11.DynamicNavigationRouteProviderService }]; }, propDecorators: { portalLeftMenu: [{
|
|
359
370
|
type: Input
|
|
360
371
|
}], portalRightMenu: [{
|
|
361
372
|
type: Input
|
|
@@ -373,6 +384,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
|
|
|
373
384
|
type: Input
|
|
374
385
|
}], includeMoreMenu: [{
|
|
375
386
|
type: Input
|
|
387
|
+
}], includeImpersonation: [{
|
|
388
|
+
type: Input
|
|
376
389
|
}], allClosable: [{
|
|
377
390
|
type: Input
|
|
378
391
|
}], folderIcon: [{
|
|
@@ -386,4 +399,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
|
|
|
386
399
|
}], viewsCategoryName: [{
|
|
387
400
|
type: Input
|
|
388
401
|
}] } });
|
|
389
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtbmF2aWdhdGlvbi1kb3VibGUtZHJhd2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzLWNvcmUvc3JjL2xpYi9uYXZpZ2F0aW9uL25hdmlnYXRpb24tZG91YmxlLWRyYXdlci9hYnN0cmFjdC1uYXZpZ2F0aW9uLWRvdWJsZS1kcmF3ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQWlDLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBQyxRQUFRLEVBQTJCLE1BQU0sTUFBTSxDQUFDO0FBRXhELE9BQU8sRUFBcUIsV0FBVyxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFXcEUsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBSzdELE9BQU8sRUFBQyw4QkFBOEIsRUFBQyxNQUFNLHVEQUF1RCxDQUFDOzs7Ozs7Ozs7OztBQWVyRyxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRztJQUM5Qix3QkFBd0I7Q0FDM0IsQ0FBQztBQUNGLE1BQU0sQ0FBQyxNQUFNLDhCQUE4QixHQUFHLE1BQU0sQ0FBQztBQUVyRCxNQUFNLHlCQUF5QixHQUFHLEVBQUUsQ0FBQztBQUNyQyxNQUFNLDBCQUEwQixHQUFHLEdBQUcsQ0FBQztBQUN2QyxNQUFNLDhCQUE4QixHQUFHLEdBQUcsQ0FBQztBQUMzQyxNQUFNLHNCQUFzQixHQUFHLEdBQUcsQ0FBQztBQU1uQyxNQUFNLE9BQWdCLHVDQUF1QztJQWtFekQsWUFBZ0MsT0FBZSxFQUNmLGVBQStCLEVBQy9CLFdBQStCLEVBQy9CLGdCQUFpQyxFQUNqQyxZQUF5QixFQUN6QixjQUE2QixFQUM3QixJQUFtQixFQUNuQixPQUE2QixFQUM3QixXQUF1QixFQUN2QixzQkFBNkQ7UUFUN0QsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUNmLG9CQUFlLEdB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UyxDQUFDLEtBQUssQ0FBQztTQUN2RDtRQUNELHlEQUF5RDtRQUN6RCxvRUFBb0U7UUFDcEUsc0NBQXNDO0lBQzFDLENBQUM7O3FJQTVYaUIsdUNBQXVDO3lIQUF2Qyx1Q0FBdUMsK2pCQUYvQyxFQUFFOzRGQUVNLHVDQUF1QztrQkFKNUQsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsdUNBQXVDO29CQUNqRCxRQUFRLEVBQUUsRUFBRTtpQkFDZjsyWEFHWSxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBUZW1wbGF0ZVJlZn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge2ZvcmtKb2luLCBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtCcmVha3BvaW50T2JzZXJ2ZXIsIEJyZWFrcG9pbnRzfSBmcm9tICdAYW5ndWxhci9jZGsvbGF5b3V0JztcbmltcG9ydCB7TGFuZ3VhZ2VTZXJ2aWNlfSBmcm9tICcuLi8uLi90cmFuc2xhdGUvbGFuZ3VhZ2Uuc2VydmljZSc7XG5pbXBvcnQge1VzZXJTZXJ2aWNlfSBmcm9tICcuLi8uLi91c2VyL3NlcnZpY2VzL3VzZXIuc2VydmljZSc7XG5pbXBvcnQge0xvZ2dlclNlcnZpY2V9IGZyb20gJy4uLy4uL2xvZ2dlci9zZXJ2aWNlcy9sb2dnZXIuc2VydmljZSc7XG5pbXBvcnQge0NvbmZpZ3VyYXRpb25TZXJ2aWNlfSBmcm9tICcuLi8uLi9jb25maWd1cmF0aW9uL2NvbmZpZ3VyYXRpb24uc2VydmljZSc7XG5pbXBvcnQge1VyaVNlcnZpY2V9IGZyb20gJy4uL3NlcnZpY2UvdXJpLnNlcnZpY2UnO1xuaW1wb3J0IHtVcmlOb2RlUmVzb3VyY2V9IGZyb20gJy4uL21vZGVsL3VyaS1yZXNvdXJjZSc7XG5pbXBvcnQge0Nhc2V9IGZyb20gJy4uLy4uL3Jlc291cmNlcy9pbnRlcmZhY2UvY2FzZSc7XG5pbXBvcnQge1xuICAgIER5bmFtaWNOYXZpZ2F0aW9uUm91dGVQcm92aWRlclNlcnZpY2Vcbn0gZnJvbSAnLi4vLi4vcm91dGluZy9keW5hbWljLW5hdmlnYXRpb24tcm91dGUtcHJvdmlkZXIvZHluYW1pYy1uYXZpZ2F0aW9uLXJvdXRlLXByb3ZpZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHtMb2FkaW5nRW1pdHRlcn0gZnJvbSBcIi4uLy4uL3V0aWxpdHkvbG9hZGluZy1lbWl0dGVyXCI7XG5pbXBvcnQge01hdERyYXdlck1vZGV9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9zaWRlbmF2XCI7XG5pbXBvcnQge1Jlc2l6ZUV2ZW50fSBmcm9tIFwiYW5ndWxhci1yZXNpemFibGUtZWxlbWVudFwiO1xuaW1wb3J0IHtVc2VyfSBmcm9tIFwiLi4vLi4vdXNlci9tb2RlbHMvdXNlclwiO1xuaW1wb3J0IHtSb2xlQWNjZXNzLCBWaWV3fSBmcm9tIFwiLi4vLi4vLi4vY29tbW9ucy9zY2hlbWFcIjtcbmltcG9ydCB7TkFFX1JPVVRJTkdfQ09ORklHVVJBVElPTl9QQVRIfSBmcm9tIFwiLi4vLi4vcm91dGluZy9yb3V0aW5nLWJ1aWxkZXIvcm91dGluZy1idWlsZGVyLnNlcnZpY2VcIjtcbmltcG9ydCB7QWNjZXNzU2VydmljZX0gZnJvbSBcIi4uLy4uL2F1dGhvcml6YXRpb24vcGVybWlzc2lvbi9hY2Nlc3Muc2VydmljZVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbmZpZ0RvdWJsZU1lbnUge1xuICAgIG1vZGU6IE1hdERyYXdlck1vZGU7XG4gICAgb3BlbmVkOiBib29sZWFuO1xuICAgIGRpc2FibGVDbG9zZTogYm9vbGVhbjtcbiAgICB3aWR0aDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFZpZXdOYXZpZ2F0aW9uSXRlbSBleHRlbmRzIFZpZXcge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgcmVzb3VyY2U/OiBDYXNlXG59XG5cbmV4cG9ydCBjb25zdCBGSUxURVJfSURFTlRJRklFUlMgPSBbXG4gICAgXCJwcmVmZXJlbmNlX2ZpbHRlcl9pdGVtXCJcbl07XG5leHBvcnQgY29uc3QgRklMVEVSX1ZJRVdfVEFTS19UUkFOU0lUSU9OX0lEID0gJ3ZpZXcnO1xuXG5jb25zdCBMRUZUX0RSQVdFUl9ERUZBVUxUX1dJRFRIID0gNjA7XG5jb25zdCBSSUdIVF9EUkFXRVJfREVGQVVMVF9XSURUSCA9IDI0MDtcbmNvbnN0IFJJR0hUX0RSQVdFUl9ERUZBVUxUX01JTl9XSURUSCA9IDE4MDtcbmNvbnN0IFJJR0hUX0RSQVdFUl9NQVhfV0lEVEggPSA0NjA7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmNjLWFic3RyYWN0LW5hdmlnYXRpb24tZG91YmxlLWRyYXdlcicsXG4gICAgdGVtcGxhdGU6ICcnLFxufSlcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdE5hdmlnYXRpb25Eb3VibGVEcmF3ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgICBASW5wdXQoKSBwb3J0YWxMZWZ0TWVudTogVGVtcGxhdGVSZWY8YW55PjtcbiAgICBASW5wdXQoKSBwb3J0YWxSaWdodE1lbnU6IFRlbXBsYXRlUmVmPGFueT47XG4gICAgQElucHV0KCkgaW1hZ2VSb3V0ZXJMaW5rOiBzdHJpbmcgPSBcIi9cIjtcbiAgICBASW5wdXQoKSBpbWFnZUFsdDogc3RyaW5nID0gXCJMb2dvXCI7XG4gICAgQElucHV0KCkgaW1hZ2U6IHN0cmluZztcbiAgICBASW5wdXQoKSBwcm9maWxlUm91dGVyTGluazogc3RyaW5nID0gXCIvcHJvZmlsZVwiO1xuICAgIEBJbnB1dCgpIGluY2x1ZGVVc2VyOiBib29sZWFuID0gdHJ1ZTtcbiAgICBASW5wdXQoKSBpbmNsdWRlTGFuZ3VhZ2U6IGJvb2xlYW4gPSB0cnVlO1xuICAgIEBJbnB1dCgpIGluY2x1ZGVNb3JlTWVudTogYm9vbGVhbiA9IHRydWU7XG4gICAgQElucHV0KCkgYWxsQ2xvc2FibGU6IGJvb2xlYW4gPSB0cnVlO1xuICAgIEBJbnB1dCgpIGZvbGRlckljb246IHN0cmluZyA9IFwiZm9sZGVyXCI7XG4gICAgQElucHV0KCkgb3BlbmVkRm9sZGVySWNvbjogc3RyaW5nID0gXCJmb2xkZXJfb3BlblwiO1xuICAgIEBJbnB1dCgpIGZpbHRlckljb246IHN0cmluZyA9IFwiZmlsdGVyX2FsdFwiO1xuICAgIEBJbnB1dCgpIGZvbGRlcnNDYXRlZ29yeU5hbWU6IHN0cmluZyA9ICd0b29sYmFyLm1lbnUuZm9sZGVycyc7XG4gICAgQElucHV0KCkgdmlld3NDYXRlZ29yeU5hbWU6IHN0cmluZyA9ICd0b29sYmFyLm1lbnUudmlld3MnO1xuXG4gICAgLyoqXG4gICAgICogQXJyYXkgb2YgZm9sZGVyIG5vZGVzIG9uIGxlZnQgc2lkZVxuICAgICAqICovXG4gICAgbGVmdE5vZGVzOiBBcnJheTxVcmlOb2RlUmVzb3VyY2U+O1xuXG4gICAgLyoqXG4gICAgICogQXJyYXkgb2YgZm9sZGVyIG5vZGVzIG9uIHJpZ2h0IHNpZGVcbiAgICAgKiAqL1xuICAgIHJpZ2h0Tm9kZXM6IEFycmF5PFVyaU5vZGVSZXNvdXJjZT47XG5cbiAgICAvKipcbiAgICAgKiBQcm9jZXNzZXMgdGhhdCBjYW4gYmUgZGlzcGxheWVkIHVuZGVyIGZvbGRlcnMgb24gcmlnaHQgc2lkZSBtZW51XG4gICAgICogKi9cbiAgICB2aWV3czogQXJyYXk8Vmlld05hdmlnYXRpb25JdGVtPjtcblxuICAgIG1vcmVNZW51SXRlbXM6IEFycmF5PFZpZXdOYXZpZ2F0aW9uSXRlbT47XG5cbiAgICBwcm90ZWN0ZWQgX2xlZnROb2Rlc1N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICAgIHByb3RlY3RlZCBfcmlnaHROb2Rlc1N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICAgIHByb3RlY3RlZCBfZmlsdGVyc1N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICAgIHByb3RlY3RlZCBfYnJlYWtwb2ludFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICAgIHByb3RlY3RlZCBfcm9vdFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICAgIHByb3RlY3RlZCBfY3VycmVudE5vZGVTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICAgIC8qKlxuICAgICAqIEN1cnJlbnRseSBkaXNwbGF5IHVyaVxuICAgICAqIFNpYmxpbmdzIG9mIHRoZSBub2RlIGFyZSBvbiB0aGUgbGVmdCwgY2hpbGRyZW4gYXJlIG9uIHRoZSByaWdodFxuICAgICAqL1xuICAgIGN1cnJlbnROb2RlOiBVcmlOb2RlUmVzb3VyY2VcblxuICAgIGxlZnRMb2FkaW5nJDogTG9hZGluZ0VtaXR0ZXI7XG4gICAgcmlnaHRMb2FkaW5nJDogTG9hZGluZ0VtaXR0ZXI7XG5cbiAgICBwcm90ZWN0ZWQgX2NvbmZpZ0xlZnRNZW51OiBDb25maWdEb3VibGVNZW51ID0ge1xuICAgICAgICBtb2RlOiAnc2lkZScsXG4gICAgICAgIG9wZW5lZDogdHJ1ZSxcbiAgICAgICAgZGlzYWJsZUNsb3NlOiBmYWxzZSxcbiAgICAgICAgd2lkdGg6IExFRlRfRFJBV0VSX0RFRkFVTFRfV0lEVEhcbiAgICB9O1xuICAgIHByb3RlY3RlZCBfY29uZmlnUmlnaHRNZW51OiBDb25maWdEb3VibGVNZW51ID0ge1xuICAgICAgICBtb2RlOiAnc2lkZScsXG4gICAgICAgIG9wZW5lZDogdHJ1ZSxcbiAgICAgICAgZGlzYWJsZUNsb3NlOiBmYWxzZSxcbiAgICAgICAgd2lkdGg6IFJJR0hUX0RSQVdFUl9ERUZBVUxUX1dJRFRIXG4gICAgfTtcblxuICAgIHByb3RlY3RlZCBfY2hpbGRDdXN0b21WaWV3czogeyBbdXJpOiBzdHJpbmddOiB7IFtrZXk6IHN0cmluZ106IFZpZXdOYXZpZ2F0aW9uSXRlbSB9IH1cblxuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgX3JvdXRlcjogUm91dGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2FjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9icmVha3BvaW50OiBCcmVha3BvaW50T2JzZXJ2ZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfbGFuZ3VhZ2VTZXJ2aWNlOiBMYW5ndWFnZVNlcnZpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2FjY2Vzc1NlcnZpY2U6IEFjY2Vzc1NlcnZpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfbG9nOiBMb2dnZXJTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2NvbmZpZzogQ29uZmlndXJhdGlvblNlcnZpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfdXJpU2VydmljZTogVXJpU2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9keW5hbWljUm91dGluZ1NlcnZpY2U6IER5bmFtaWNOYXZpZ2F0aW9uUm91dGVQcm92aWRlclNlcnZpY2UpIHtcbiAgICAgICAgdGhpcy5sZWZ0Tm9kZXMgPSBuZXcgQXJyYXk8VXJpTm9kZVJlc291cmNlPigpO1xuICAgICAgICB0aGlzLnJpZ2h0Tm9kZXMgPSBuZXcgQXJyYXk8VXJpTm9kZVJlc291cmNlPigpO1xuICAgICAgICB0aGlzLnZpZXdzID0gbmV3IEFycmF5PFZpZXdOYXZpZ2F0aW9uSXRlbT4oKTtcbiAgICAgICAgdGhpcy5sZWZ0TG9hZGluZyQgPSBuZXcgTG9hZGluZ0VtaXR0ZXIoKTtcbiAgICAgICAgdGhpcy5yaWdodExvYWRpbmckID0gbmV3IExvYWRpbmdFbWl0dGVyKCk7XG4gICAgICAgIHRoaXMuX2NoaWxkQ3VzdG9tVmlld3MgPSB7fTtcbiAgICAgICAgdGhpcy5tb3JlTWVudUl0ZW1zID0gbmV3IEFycmF5PFZpZXdOYXZpZ2F0aW9uSXRlbT4oKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fYnJlYWtwb2ludFN1YnNjcmlwdGlvbiA9IHRoaXMuX2JyZWFrcG9pbnQub2JzZXJ2ZShbQnJlYWtwb2ludHMuSGFuZHNldExhbmRzY2FwZV0pLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5fYnJlYWtwb2ludC5pc01hdGNoZWQoJyhtYXgtd2lkdGg6IDk1OS45OXB4KScpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXNvbHZlTGF5b3V0KGZhbHNlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXNvbHZlTGF5b3V0KHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnROb2RlKSB7XG4gICAgICAgICAgICB0aGlzLmxlZnRMb2FkaW5nJC5vbigpO1xuICAgICAgICAgICAgdGhpcy5yaWdodExvYWRpbmckLm9uKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fY3VycmVudE5vZGVTdWJzY3JpcHRpb24gPSB0aGlzLl91cmlTZXJ2aWNlLmFjdGl2ZU5vZGUkLnN1YnNjcmliZShub2RlID0+IHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudE5vZGUgPSBub2RlO1xuICAgICAgICAgICAgaWYgKCFub2RlKSByZXR1cm47XG4gICAgICAgICAgICBpZiAodGhpcy5sZWZ0TG9hZGluZyQuaXNBY3RpdmUgfHwgdGhpcy5yaWdodExvYWRpbmckLmlzQWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sZWZ0TG9hZGluZyQub2ZmKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5yaWdodExvYWRpbmckLm9mZigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuX3VyaVNlcnZpY2UuaXNSb290KG5vZGUpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sZWZ0Tm9kZXMgPSBbXTtcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRSaWdodFNpZGUoKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXRoaXMubGVmdE5vZGVzLmZpbmQobiA9PiBuLmlkID09PSBub2RlLmlkKSkge1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZExlZnRTaWRlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmxvYWRSaWdodFNpZGUoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3Qgdmlld0NvbmZpZ3VyYXRpb25QYXRoID0gdGhpcy5fYWN0aXZhdGVkUm91dGUuc25hcHNob3QuZGF0YVtOQUVfUk9VVElOR19DT05GSUdVUkFUSU9OX1BBVEhdO1xuICAgICAgICBpZiAoISF2aWV3Q29uZmlndXJhdGlvblBhdGgpIHtcbiAgICAgICAgICAgIGNvbnN0IHZpZXdDb25maWd1cmF0aW9uID0gdGhpcy5fY29uZmlnLmdldFZpZXdCeVBhdGgodmlld0NvbmZpZ3VyYXRpb25QYXRoKTtcbiAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKHZpZXdDb25maWd1cmF0aW9uLmNoaWxkcmVuKS5mb3JFYWNoKChba2V5LCBjaGlsZFZpZXddKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXNvbHZlVXJpRm9yQ2hpbGRWaWV3cyh2aWV3Q29uZmlndXJhdGlvblBhdGggKyAnLycgKyBrZXksIGNoaWxkVmlldyk7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXNvbHZlSGlkZGVuTWVudUl0ZW1Gcm9tQ2hpbGRWaWV3cyh2aWV3Q29uZmlndXJhdGlvblBhdGggKyAnLycgKyBrZXksIGNoaWxkVmlldyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCByZXNvbHZlVXJpRm9yQ2hpbGRWaWV3cyhjb25maWdQYXRoOiBzdHJpbmcsIGNoaWxkVmlldzogVmlldyk6IHZvaWQge1xuICAgICAgICBpZiAoIWNoaWxkVmlldy5wcm9jZXNzVXJpKSByZXR1cm47XG4gICAgICAgIGlmICghdGhpcy5fYWNjZXNzU2VydmljZS5jYW5BY2Nlc3NWaWV3KGNoaWxkVmlldywgY29uZmlnUGF0aCkpIHJldHVybjtcbiAgICAgICAgaWYgKCF0aGlzLl9jaGlsZEN1c3RvbVZpZXdzW2NoaWxkVmlldy5wcm9jZXNzVXJpXSkge1xuICAgICAgICAgICAgdGhpcy5fY2hpbGRDdXN0b21WaWV3c1tjaGlsZFZpZXcucHJvY2Vzc1VyaV0gPSB7fTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9jaGlsZEN1c3RvbVZpZXdzW2NoaWxkVmlldy5wcm9jZXNzVXJpXVtjb25maWdQYXRoXSA9IHtcbiAgICAgICAgICAgIGlkOiBjb25maWdQYXRoLFxuICAgICAgICAgICAgLi4uY2hpbGRWaWV3XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgcmVzb2x2ZUhpZGRlbk1lbnVJdGVtRnJvbUNoaWxkVmlld3MoY29uZmlnUGF0aDogc3RyaW5nLCBjaGlsZFZpZXc6IFZpZXcpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFjaGlsZFZpZXcubmF2aWdhdGlvbikgcmV0dXJuO1xuICAgICAgICBpZiAoIXRoaXMuX2FjY2Vzc1NlcnZpY2UuY2FuQWNjZXNzVmlldyhjaGlsZFZpZXcsIGNvbmZpZ1BhdGgpKSByZXR1cm47XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgaWYgKCEhKGNoaWxkVmlldz8ubmF2aWdhdGlvbj8uaGlkZGVuKSkge1xuICAgICAgICAgICAgdGhpcy5tb3JlTWVudUl0ZW1zLnB1c2goe1xuICAgICAgICAgICAgICAgIGlkOiBjb25maWdQYXRoLFxuICAgICAgICAgICAgICAgIC4uLmNoaWxkVmlld1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fYnJlYWtwb2ludFN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5fbGVmdE5vZGVzU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLl9yaWdodE5vZGVzU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLl9maWx0ZXJzU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLl9yb290U3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLl9jdXJyZW50Tm9kZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5sZWZ0TG9hZGluZyQuY29tcGxldGUoKTtcbiAgICAgICAgdGhpcy5yaWdodExvYWRpbmckLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgZ2V0IGNvbmZpZ0xlZnRNZW51KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29uZmlnTGVmdE1lbnU7XG4gICAgfVxuXG4gICAgZ2V0IGNvbmZpZ1JpZ2h0TWVudSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbmZpZ1JpZ2h0TWVudTtcbiAgICB9XG5cbiAgICB0b2dnbGVNZW51KCkge1xuICAgICAgICB0aGlzLnRvZ2dsZVJpZ2h0TWVudSgpO1xuICAgICAgICBpZiAodGhpcy5hbGxDbG9zYWJsZSkge1xuICAgICAgICAgICAgdGhpcy50b2dnbGVMZWZ0TWVudSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdG9nZ2xlTGVmdE1lbnUoKSB7XG4gICAgICAgIHRoaXMuX2NvbmZpZ0xlZnRNZW51Lm9wZW5lZCA9ICF0aGlzLl9jb25maWdMZWZ0TWVudS5vcGVuZWQ7XG4gICAgfVxuXG4gICAgdG9nZ2xlUmlnaHRNZW51KCkge1xuICAgICAgICB0aGlzLl9jb25maWdSaWdodE1lbnUub3BlbmVkID0gIXRoaXMuX2NvbmZpZ1JpZ2h0TWVudS5vcGVuZWQ7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHJlc29sdmVMYXlvdXQoaXNMYXJnZVNjcmVlbjogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLl9jb25maWdMZWZ0TWVudSA9IGlzTGFyZ2VTY3JlZW4gPyB7XG4gICAgICAgICAgICBtb2RlOiAnc2lkZScsXG4gICAgICAgICAgICBvcGVuZWQ6IHRydWUsXG4gICAgICAgICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXG4gICAgICAgICAgICB3aWR0aDogdGhpcy5fY29uZmlnTGVmdE1lbnUud2lkdGhcbiAgICAgICAgfSA6IHtcbiAgICAgICAgICAgIG1vZGU6ICdvdmVyJyxcbiAgICAgICAgICAgIG9wZW5lZDogZmFsc2UsXG4gICAgICAgICAgICBkaXNhYmxlQ2xvc2U6IGZhbHNlLFxuICAgICAgICAgICAgd2lkdGg6IHRoaXMuX2NvbmZpZ0xlZnRNZW51LndpZHRoXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuX2NvbmZpZ1JpZ2h0TWVudSA9IGlzTGFyZ2VTY3JlZW4gPyB7XG4gICAgICAgICAgICBtb2RlOiAnc2lkZScsXG4gICAgICAgICAgICBvcGVuZWQ6IHRydWUsXG4gICAgICAgICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXG4gICAgICAgICAgICB3aWR0aDogdGhpcy5fY29uZmlnUmlnaHRNZW51LndpZHRoXG4gICAgICAgIH0gOiB7XG4gICAgICAgICAgICBtb2RlOiAnb3ZlcicsXG4gICAgICAgICAgICBvcGVuZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGlzYWJsZUNsb3NlOiBmYWxzZSxcbiAgICAgICAgICAgIHdpZHRoOiB0aGlzLl9jb25maWdSaWdodE1lbnUud2lkdGhcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBnZXRMYW5nKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbGFuZ3VhZ2VTZXJ2aWNlLmdldExhbmd1YWdlKCk7XG4gICAgfVxuXG4gICAgbG9nb3V0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl91c2VyU2VydmljZS5sb2dvdXQoKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbG9nLmRlYnVnKCdVc2VyIGlzIGxvZ2dlZCBvdXQnKTtcbiAgICAgICAgICAgIGlmICh0aGlzLl9jb25maWcuZ2V0KCkuc2VydmljZXMgJiYgdGhpcy5fY29uZmlnLmdldCgpLnNlcnZpY2VzLmF1dGggJiYgdGhpcy5fY29uZmlnLmdldCgpLnNlcnZpY2VzLmF1dGgubG9nb3V0UmVkaXJlY3QpIHtcbiAgICAgICAgICAgICAgICBjb25zdCByZWRpcmVjdFBhdGggPSB0aGlzLl9jb25maWcuZ2V0KCkuc2VydmljZXMuYXV0aC5sb2dvdXRSZWRpcmVjdDtcbiAgICAgICAgICAgICAgICB0aGlzLl9sb2cuaW5mbygnUmVkaXJlY3RpbmcgdG8gJyArIHJlZGlyZWN0UGF0aCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlKFtyZWRpcmVjdFBhdGhdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0IHVzZXIoKTogVXNlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl91c2VyU2VydmljZS51c2VyO1xuICAgIH1cblxuICAgIGdldCBjYW5Hb0JhY2tMb2FkaW5nJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3VyaVNlcnZpY2UucGFyZW50Tm9kZUxvYWRpbmckO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE9uIGhvbWUgY2xpY2ssIHRoZSBjdXJyZW50IGxldmVsIGlzIHNldCB0byAwLCBhbmQgY3VycmVudCBwYXJlbnQgaXNcbiAgICAgKiBzZXQgdG8gcm9vdCBub2RlLlxuICAgICAqICovXG4gICAgb25Ib21lQ2xpY2soKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3VyaVNlcnZpY2UucmVzZXQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPbiBiYWNrIGNsaWNrLCB0aGUgcGFyZW50IGlzIHNldCB0byBwYXJlbnQgb2YgbGVmdCBub2RlcywgdGhhdCB3aWxsIHNvbHZlXG4gICAgICogdGhlIHJpZ2h0IHNpZGUgbWVudSAoZWxlbWVudHMgdGhhdCB3ZXJlIGluIGxlZnQgc2lkZSwgYWZ0ZXIgYmFja3dhcmRcbiAgICAgKiBuYXZpZ2F0aW9uIHdpbGwgYmUgb24gdGhlIHJpZ2h0IHNpZGUpLlxuICAgICAqIEN1cnJlbnQgbGV2ZWwgaXMgc2V0IHRvIGEgbG93ZXIgbnVtYmVyIGluIG9yZGVyIHRvIHNldCB0aGUgbGVmdCBzaWRlIG1lbnUuXG4gICAgICogKi9cbiAgICBvbkJhY2tDbGljaygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX3VyaVNlcnZpY2UuaXNSb290KHRoaXMuY3VycmVudE5vZGUpKSByZXR1cm47XG4gICAgICAgIHRoaXMuX3VyaVNlcnZpY2UuYWN0aXZlTm9kZSA9IHRoaXMuY3VycmVudE5vZGUucGFyZW50O1xuICAgIH1cblxuICAgIG9uTm9kZUNsaWNrKG5vZGU6IFVyaU5vZGVSZXNvdXJjZSk6IHZvaWQge1xuICAgICAgICB0aGlzLl91cmlTZXJ2aWNlLmFjdGl2ZU5vZGUgPSBub2RlO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBsb2FkTGVmdFNpZGUoKSB7XG4gICAgICAgIGlmICh0aGlzLl91cmlTZXJ2aWNlLmlzUm9vdCh0aGlzLmN1cnJlbnROb2RlKSkge1xuICAgICAgICAgICAgdGhpcy5sZWZ0Tm9kZXMgPSBbXTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmxlZnRMb2FkaW5nJC5vbigpO1xuICAgICAgICB0aGlzLl9sZWZ0Tm9kZXNTdWJzY3JpcHRpb24gPSB0aGlzLl91cmlTZXJ2aWNlLmdldFNpYmxpbmdzT2ZOb2RlKHRoaXMuY3VycmVudE5vZGUpLnN1YnNjcmliZShub2RlcyA9PiB7XG4gICAgICAgICAgICB0aGlzLmxlZnROb2RlcyA9IG5vZGVzIGluc3RhbmNlb2YgQXJyYXkgPyBub2RlcyA6IFtdO1xuICAgICAgICAgICAgdGhpcy5sZWZ0Tm9kZXMuc29ydCgoYSwgYikgPT4gdGhpcy5jb21wYXJlU3RyaW5ncyhhLm5hbWUsIGIubmFtZSkpO1xuICAgICAgICAgICAgdGhpcy5sZWZ0TG9hZGluZyQub2ZmKCk7XG4gICAgICAgIH0sIGVycm9yID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2xvZy5lcnJvcihlcnJvcik7XG4gICAgICAgICAgICB0aGlzLmxlZnROb2RlcyA9IFtdO1xuICAgICAgICAgICAgdGhpcy5sZWZ0TG9hZGluZyQub2ZmKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBsb2FkUmlnaHRTaWRlKCkge1xuICAgICAgICB0aGlzLnJpZ2h0TG9hZGluZyQub24oKVxuICAgICAgICBmb3JrSm9pbih7XG4gICAgICAgICAgICBmb2xkZXJzOiB0aGlzLl91cmlTZXJ2aWNlLmdldENoaWxkTm9kZXModGhpcy5jdXJyZW50Tm9kZSksXG4gICAgICAgICAgICBmaWx0ZXJzOiB0aGlzLl91cmlTZXJ2aWNlLmdldENhc2VzT2ZOb2RlKHRoaXMuY3VycmVudE5vZGUsIEZJTFRFUl9JREVOVElGSUVSUylcbiAgICAgICAgfSkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICAgICAgICB0aGlzLnJpZ2h0Tm9kZXMgPSByZXN1bHQuZm9sZGVycyBpbnN0YW5jZW9mIEFycmF5ID8gcmVzdWx0LmZvbGRlcnMgOiBbXTtcbiAgICAgICAgICAgIHRoaXMucmlnaHROb2Rlcy5zb3J0KChhLCBiKSA9PiB0aGlzLmNvbXBhcmVTdHJpbmdzKGEubmFtZSwgYi5uYW1lKSk7XG4gICAgICAgICAgICB0aGlzLnZpZXdzID0gKHJlc3VsdC5maWx0ZXJzIGluc3RhbmNlb2YgQXJyYXkgPyByZXN1bHQuZmlsdGVycyA6IFtdKS5tYXAoZiA9PiB0aGlzLnJlc29sdmVGaWx0ZXJDYXNlVG9WaWV3TmF2aWdhdGlvbkl0ZW0oZikpLmZpbHRlcihpID0+ICEhaSk7XG4gICAgICAgICAgICBpZiAoISF0aGlzLl9jaGlsZEN1c3RvbVZpZXdzW3RoaXMuY3VycmVudE5vZGUudXJpUGF0aF0pIHtcbiAgICAgICAgICAgICAgICB0aGlzLnZpZXdzLnB1c2goLi4uT2JqZWN0LnZhbHVlcyh0aGlzLl9jaGlsZEN1c3RvbVZpZXdzW3RoaXMuY3VycmVudE5vZGUudXJpUGF0aF0pKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgdGhpcy52aWV3cy5zb3J0KChhLCBiKSA9PiB0aGlzLmNvbXBhcmVTdHJpbmdzKGE/Lm5hdmlnYXRpb24/LnRpdGxlLCBiPy5uYXZpZ2F0aW9uPy50aXRsZSkpO1xuICAgICAgICAgICAgdGhpcy5yaWdodExvYWRpbmckLm9mZigpO1xuICAgICAgICB9LCBlcnJvciA9PiB7XG4gICAgICAgICAgICB0aGlzLl9sb2cuZXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgdGhpcy5yaWdodE5vZGVzID0gW107XG4gICAgICAgICAgICB0aGlzLnZpZXdzID0gW107XG4gICAgICAgICAgICB0aGlzLnJpZ2h0TG9hZGluZyQub2ZmKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCByZXNvbHZlRmlsdGVyQ2FzZVRvVmlld05hdmlnYXRpb25JdGVtKGZpbHRlcjogQ2FzZSk6IFZpZXdOYXZpZ2F0aW9uSXRlbSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IGl0ZW06IFZpZXdOYXZpZ2F0aW9uSXRlbSA9IHtcbiAgICAgICAgICAgIGFjY2Vzczoge30sXG4gICAgICAgICAgICBuYXZpZ2F0aW9uOiB7XG4gICAgICAgICAgICAgICAgaWNvbjogZmlsdGVyLmltbWVkaWF0ZURhdGEuZmluZChmID0+IGYuc3RyaW5nSWQgPT09ICdpY29uX25hbWUnKT8udmFsdWUgfHwgdGhpcy5maWx0ZXJJY29uLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBmaWx0ZXIuaW1tZWRpYXRlRGF0YS5maW5kKGYgPT4gZi5zdHJpbmdJZCA9PT0gJ2VudHJ5X25hbWUnKT8udmFsdWU/LmRlZmF1bHRWYWx1ZSB8fCBmaWx0ZXIudGl0bGVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByb3V0aW5nOiB7XG4gICAgICAgICAgICAgICAgcGF0aDogdGhpcy5nZXRGaWx0ZXJSb3V0aW5nUGF0aChmaWx0ZXIpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaWQ6IGZpbHRlci5zdHJpbmdJZCxcbiAgICAgICAgICAgIHJlc291cmNlOiBmaWx0ZXJcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgcmVzb2x2ZWRSb2xlcyA9IHRoaXMucmVzb2x2ZUFjY2Vzc1JvbGVzKGZpbHRlciwgJ2FsbG93ZWRfcm9sZXMnKTtcbiAgICAgICAgY29uc3QgcmVzb2x2ZWRCYW5uZWRSb2xlcyA9IHRoaXMucmVzb2x2ZUFjY2Vzc1JvbGVzKGZpbHRlciwgJ2Jhbm5lZF9yb2xlcycpO1xuICAgICAgICBpZighIXJlc29sdmVkUm9sZXMpIGl0ZW0uYWNjZXNzWydyb2xlJ10gPSByZXNvbHZlZFJvbGVzO1xuICAgICAgICBpZighIXJlc29sdmVkQmFubmVkUm9sZXMpIGl0ZW0uYWNjZXNzWydiYW5uZWRSb2xlJ10gPSByZXNvbHZlZEJhbm5lZFJvbGVzO1xuICAgICAgICBpZiAoIXRoaXMuX2FjY2Vzc1NlcnZpY2UuY2FuQWNjZXNzVmlldyhpdGVtLCBpdGVtLnJvdXRpbmdQYXRoKSkgcmV0dXJuO1xuICAgICAgICByZXR1cm4gaXRlbTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgcmVzb2x2ZUFjY2Vzc1JvbGVzKGZpbHRlcjogQ2FzZSwgcm9sZVR5cGU6IHN0cmluZyk6IEFycmF5PFJvbGVBY2Nlc3M+IHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgYWxsb3dlZFJvbGVzID0gZmlsdGVyLmltbWVkaWF0ZURhdGEuZmluZChmID0+IGYuc3RyaW5nSWQgPT09IHJvbGVUeXBlKT8ub3B0aW9ucztcbiAgICAgICAgaWYgKCFhbGxvd2VkUm9sZXMgfHwgT2JqZWN0LmtleXMoYWxsb3dlZFJvbGVzKS5sZW5ndGggPT09IDApIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IHJvbGVzID0gW107XG4gICAgICAgIE9iamVjdC5rZXlzKGFsbG93ZWRSb2xlcykuZm9yRWFjaChjb21iaW5lZCA9PiB7XG4gICAgICAgICAgICBjb25zdCBwYXJ0cyA9IGNvbWJpbmVkLnNwbGl0KCc6Jyk7XG4gICAgICAgICAgICByb2xlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBwcm9jZXNzSWQ6IHBhcnRzWzFdLFxuICAgICAgICAgICAgICAgIHJvbGVJZDogcGFydHNbMF1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJvbGVzO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRGaWx0ZXJSb3V0aW5nUGF0aChmaWx0ZXJDYXNlOiBDYXNlKSB7XG4gICAgICAgIGNvbnN0IHZpZXdUYXNrSWQgPSBmaWx0ZXJDYXNlLnRhc2tzLmZpbmQodGFza1BhaXIgPT4gdGFza1BhaXIudHJhbnNpdGlvbiA9PT0gRklMVEVSX1ZJRVdfVEFTS19UUkFOU0lUSU9OX0lEKS50YXNrO1xuICAgICAgICBjb25zdCB1cmwgPSB0aGlzLl9keW5hbWljUm91dGluZ1NlcnZpY2Uucm91dGU7XG4gICAgICAgIHJldHVybiBgLyR7dXJsfS8ke3ZpZXdUYXNrSWR9YDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgY29tcGFyZVN0cmluZ3MoYTogc3RyaW5nLCBiOiBzdHJpbmcpOiBudW1iZXIge1xuICAgICAgICBpZiAoIWEgJiYgIWIpIHJldHVybiAwO1xuICAgICAgICBpZiAoYSA8IGIpIHJldHVybiAtMTtcbiAgICAgICAgcmV0dXJuIGEgPiBiID8gMSA6IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRnVuY3Rpb24gdG8gY2hlY2sgd2hldGhlciB0aGUgYmFjayBidXR0b24gc2hvdWxkIGJlIGRpc3BsYXllZFxuICAgICAqIEByZXR1cm5zIGJvb2xlYW4gaWYgdGhlIGJhY2sgYnV0dG9uIHNob3VsZCBiZSBkaXNwbGF5ZWRcbiAgICAgKiAqL1xuICAgIGlzT25aZXJvTGV2ZWwoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuY3VycmVudE5vZGU/LmxldmVsID8gdGhpcy5jdXJyZW50Tm9kZS5sZXZlbCA9PSAwIDogdHJ1ZTtcbiAgICB9XG5cbiAgICBpc0xlZnROb2Rlc0VtcHR5KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5sZWZ0Tm9kZXMgPT09IHVuZGVmaW5lZCB8fCB0aGlzLmxlZnROb2Rlcy5sZW5ndGggPT09IDA7XG4gICAgfVxuXG4gICAgaXNSaWdodE5vZGVzRW1wdHkoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnJpZ2h0Tm9kZXMgPT09IHVuZGVmaW5lZCB8fCB0aGlzLnJpZ2h0Tm9kZXMubGVuZ3RoID09PSAwO1xuICAgIH1cblxuICAgIGlzVmlld3NFbXB0eSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmlld3MgPT09IHVuZGVmaW5lZCB8fCB0aGlzLnZpZXdzLmxlbmd0aCA9PT0gMDtcbiAgICB9XG5cbiAgICB1cmlOb2RlVHJhY2tCeShpbmRleDogbnVtYmVyLCBub2RlOiBVcmlOb2RlUmVzb3VyY2UpIHtcbiAgICAgICAgcmV0dXJuIG5vZGUuaWQ7XG4gICAgfVxuXG4gICAgdmlld3NUcmFja0J5KGluZGV4OiBudW1iZXIsIHZpZXc6IFZpZXdOYXZpZ2F0aW9uSXRlbSkge1xuICAgICAgICByZXR1cm4gdmlldy5pZDtcbiAgICB9XG5cbiAgICBvblJlc2l6ZUV2ZW50KGV2ZW50OiBSZXNpemVFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoZXZlbnQucmVjdGFuZ2xlLndpZHRoID4gUklHSFRfRFJBV0VSX01BWF9XSURUSCkge1xuICAgICAgICAgICAgdGhpcy5fY29uZmlnUmlnaHRNZW51LndpZHRoID0gUklHSFRfRFJBV0VSX01BWF9XSURUSDtcbiAgICAgICAgfSBlbHNlIGlmIChldmVudC5yZWN0YW5nbGUud2lkdGggPCBSSUdIVF9EUkFXRVJfREVGQVVMVF9NSU5fV0lEVEgpIHtcbiAgICAgICAgICAgIHRoaXMuX2NvbmZpZ1JpZ2h0TWVudS53aWR0aCA9IFJJR0hUX0RSQVdFUl9ERUZBVUxUX01JTl9XSURUSDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2NvbmZpZ1JpZ2h0TWVudS53aWR0aCA9IGV2ZW50LnJlY3RhbmdsZS53aWR0aDtcbiAgICAgICAgfVxuICAgICAgICAvLyBUT0RPIGltcGxlbWVudCBzYXZpbmcgZHJhd2VyIHdpZHRoIHRvIHVzZXIgcHJlZmVyZW5jZXNcbiAgICAgICAgLy8gdGhpcy51c2VyUHJlZmVyZW5jZVNlcnZpY2UuX2RyYXdlcldpZHRoQ2hhbmdlZCQubmV4dCh0aGlzLndpZHRoKTtcbiAgICAgICAgLy8gdGhpcy5jb250ZW50V2lkdGgubmV4dCh0aGlzLndpZHRoKTtcbiAgICB9XG5cbn1cbiJdfQ==
|
|
402
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtbmF2aWdhdGlvbi1kb3VibGUtZHJhd2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzLWNvcmUvc3JjL2xpYi9uYXZpZ2F0aW9uL25hdmlnYXRpb24tZG91YmxlLWRyYXdlci9hYnN0cmFjdC1uYXZpZ2F0aW9uLWRvdWJsZS1kcmF3ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQWlDLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBQyxRQUFRLEVBQTJCLE1BQU0sTUFBTSxDQUFDO0FBRXhELE9BQU8sRUFBcUIsV0FBVyxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFXcEUsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBSzdELE9BQU8sRUFBQyw4QkFBOEIsRUFBQyxNQUFNLHVEQUF1RCxDQUFDOzs7Ozs7Ozs7Ozs7O0FBaUJyRyxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRztJQUM5Qix3QkFBd0I7Q0FDM0IsQ0FBQztBQUNGLE1BQU0sQ0FBQyxNQUFNLDhCQUE4QixHQUFHLE1BQU0sQ0FBQztBQUVyRCxNQUFNLHlCQUF5QixHQUFHLEVBQUUsQ0FBQztBQUNyQyxNQUFNLDBCQUEwQixHQUFHLEdBQUcsQ0FBQztBQUN2QyxNQUFNLDhCQUE4QixHQUFHLEdBQUcsQ0FBQztBQUMzQyxNQUFNLHNCQUFzQixHQUFHLEdBQUcsQ0FBQztBQU1uQyxNQUFNLE9BQWdCLHVDQUF1QztJQW1FekQsWUFBZ0MsT0FBZSxFQUNmLGVBQStCLEVBQy9CLFdBQStCLEVBQy9CLGdCQUFpQyxFQUNqQyxZQUF5QixFQUN6QixjQUE2QixFQUM3QixJQUFtQixFQUNuQixPQUE2QixFQUM3QixXQUF1QixFQUN2Qix3QkFBd0QsRUFDeEQsY0FBb0MsRUFDcEMsc0JBQTZEO1FBWDdELFlBQU8s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QUFDLEtBQUssR0FBRyxzQkFBc0IsRUFBRTtZQUNoRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxHQUFHLHNCQUFzQixDQUFDO1NBQ3hEO2FBQU0sSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssR0FBRyw4QkFBOEIsRUFBRTtZQUMvRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxHQUFHLDhCQUE4QixDQUFDO1NBQ2hFO2FBQU07WUFDSCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDO1NBQ3ZEO1FBQ0QseURBQXlEO1FBQ3pELG9FQUFvRTtRQUNwRSxzQ0FBc0M7SUFDMUMsQ0FBQzs7cUlBdllpQix1Q0FBdUM7eUhBQXZDLHVDQUF1Qyw2bUJBRi9DLEVBQUU7NEZBRU0sdUNBQXVDO2tCQUo1RCxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSx1Q0FBdUM7b0JBQ2pELFFBQVEsRUFBRSxFQUFFO2lCQUNmOzZjQUdZLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBUZW1wbGF0ZVJlZn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge2ZvcmtKb2luLCBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtCcmVha3BvaW50T2JzZXJ2ZXIsIEJyZWFrcG9pbnRzfSBmcm9tICdAYW5ndWxhci9jZGsvbGF5b3V0JztcbmltcG9ydCB7TGFuZ3VhZ2VTZXJ2aWNlfSBmcm9tICcuLi8uLi90cmFuc2xhdGUvbGFuZ3VhZ2Uuc2VydmljZSc7XG5pbXBvcnQge1VzZXJTZXJ2aWNlfSBmcm9tICcuLi8uLi91c2VyL3NlcnZpY2VzL3VzZXIuc2VydmljZSc7XG5pbXBvcnQge0xvZ2dlclNlcnZpY2V9IGZyb20gJy4uLy4uL2xvZ2dlci9zZXJ2aWNlcy9sb2dnZXIuc2VydmljZSc7XG5pbXBvcnQge0NvbmZpZ3VyYXRpb25TZXJ2aWNlfSBmcm9tICcuLi8uLi9jb25maWd1cmF0aW9uL2NvbmZpZ3VyYXRpb24uc2VydmljZSc7XG5pbXBvcnQge1VyaVNlcnZpY2V9IGZyb20gJy4uL3NlcnZpY2UvdXJpLnNlcnZpY2UnO1xuaW1wb3J0IHtVcmlOb2RlUmVzb3VyY2V9IGZyb20gJy4uL21vZGVsL3VyaS1yZXNvdXJjZSc7XG5pbXBvcnQge0Nhc2V9IGZyb20gJy4uLy4uL3Jlc291cmNlcy9pbnRlcmZhY2UvY2FzZSc7XG5pbXBvcnQge1xuICAgIER5bmFtaWNOYXZpZ2F0aW9uUm91dGVQcm92aWRlclNlcnZpY2Vcbn0gZnJvbSAnLi4vLi4vcm91dGluZy9keW5hbWljLW5hdmlnYXRpb24tcm91dGUtcHJvdmlkZXIvZHluYW1pYy1uYXZpZ2F0aW9uLXJvdXRlLXByb3ZpZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHtMb2FkaW5nRW1pdHRlcn0gZnJvbSBcIi4uLy4uL3V0aWxpdHkvbG9hZGluZy1lbWl0dGVyXCI7XG5pbXBvcnQge01hdERyYXdlck1vZGV9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9zaWRlbmF2XCI7XG5pbXBvcnQge1Jlc2l6ZUV2ZW50fSBmcm9tIFwiYW5ndWxhci1yZXNpemFibGUtZWxlbWVudFwiO1xuaW1wb3J0IHtVc2VyfSBmcm9tIFwiLi4vLi4vdXNlci9tb2RlbHMvdXNlclwiO1xuaW1wb3J0IHtSb2xlQWNjZXNzLCBWaWV3fSBmcm9tIFwiLi4vLi4vLi4vY29tbW9ucy9zY2hlbWFcIjtcbmltcG9ydCB7TkFFX1JPVVRJTkdfQ09ORklHVVJBVElPTl9QQVRIfSBmcm9tIFwiLi4vLi4vcm91dGluZy9yb3V0aW5nLWJ1aWxkZXIvcm91dGluZy1idWlsZGVyLnNlcnZpY2VcIjtcbmltcG9ydCB7QWNjZXNzU2VydmljZX0gZnJvbSBcIi4uLy4uL2F1dGhvcml6YXRpb24vcGVybWlzc2lvbi9hY2Nlc3Muc2VydmljZVwiO1xuaW1wb3J0IHtJbXBlcnNvbmF0aW9uVXNlclNlbGVjdFNlcnZpY2V9IGZyb20gJy4uLy4uL2ltcGVyc29uYXRpb24vc2VydmljZXMvaW1wZXJzb25hdGlvbi11c2VyLXNlbGVjdC5zZXJ2aWNlJztcbmltcG9ydCB7SW1wZXJzb25hdGlvblNlcnZpY2V9IGZyb20gJy4uLy4uL2ltcGVyc29uYXRpb24vc2VydmljZXMvaW1wZXJzb25hdGlvbi5zZXJ2aWNlJztcblxuZXhwb3J0IGludGVyZmFjZSBDb25maWdEb3VibGVNZW51IHtcbiAgICBtb2RlOiBNYXREcmF3ZXJNb2RlO1xuICAgIG9wZW5lZDogYm9vbGVhbjtcbiAgICBkaXNhYmxlQ2xvc2U6IGJvb2xlYW47XG4gICAgd2lkdGg6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBWaWV3TmF2aWdhdGlvbkl0ZW0gZXh0ZW5kcyBWaWV3IHtcbiAgICBpZDogc3RyaW5nO1xuICAgIHJlc291cmNlPzogQ2FzZVxufVxuXG5leHBvcnQgY29uc3QgRklMVEVSX0lERU5USUZJRVJTID0gW1xuICAgIFwicHJlZmVyZW5jZV9maWx0ZXJfaXRlbVwiXG5dO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WSUVXX1RBU0tfVFJBTlNJVElPTl9JRCA9ICd2aWV3JztcblxuY29uc3QgTEVGVF9EUkFXRVJfREVGQVVMVF9XSURUSCA9IDYwO1xuY29uc3QgUklHSFRfRFJBV0VSX0RFRkFVTFRfV0lEVEggPSAyNDA7XG5jb25zdCBSSUdIVF9EUkFXRVJfREVGQVVMVF9NSU5fV0lEVEggPSAxODA7XG5jb25zdCBSSUdIVF9EUkFXRVJfTUFYX1dJRFRIID0gNDYwO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25jYy1hYnN0cmFjdC1uYXZpZ2F0aW9uLWRvdWJsZS1kcmF3ZXInLFxuICAgIHRlbXBsYXRlOiAnJyxcbn0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3ROYXZpZ2F0aW9uRG91YmxlRHJhd2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gICAgQElucHV0KCkgcG9ydGFsTGVmdE1lbnU6IFRlbXBsYXRlUmVmPGFueT47XG4gICAgQElucHV0KCkgcG9ydGFsUmlnaHRNZW51OiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIEBJbnB1dCgpIGltYWdlUm91dGVyTGluazogc3RyaW5nID0gXCIvXCI7XG4gICAgQElucHV0KCkgaW1hZ2VBbHQ6IHN0cmluZyA9IFwiTG9nb1wiO1xuICAgIEBJbnB1dCgpIGltYWdlOiBzdHJpbmc7XG4gICAgQElucHV0KCkgcHJvZmlsZVJvdXRlckxpbms6IHN0cmluZyA9IFwiL3Byb2ZpbGVcIjtcbiAgICBASW5wdXQoKSBpbmNsdWRlVXNlcjogYm9vbGVhbiA9IHRydWU7XG4gICAgQElucHV0KCkgaW5jbHVkZUxhbmd1YWdlOiBib29sZWFuID0gdHJ1ZTtcbiAgICBASW5wdXQoKSBpbmNsdWRlTW9yZU1lbnU6IGJvb2xlYW4gPSB0cnVlO1xuICAgIEBJbnB1dCgpIGluY2x1ZGVJbXBlcnNvbmF0aW9uOiBib29sZWFuID0gdHJ1ZTtcbiAgICBASW5wdXQoKSBhbGxDbG9zYWJsZTogYm9vbGVhbiA9IHRydWU7XG4gICAgQElucHV0KCkgZm9sZGVySWNvbjogc3RyaW5nID0gXCJmb2xkZXJcIjtcbiAgICBASW5wdXQoKSBvcGVuZWRGb2xkZXJJY29uOiBzdHJpbmcgPSBcImZvbGRlcl9vcGVuXCI7XG4gICAgQElucHV0KCkgZmlsdGVySWNvbjogc3RyaW5nID0gXCJmaWx0ZXJfYWx0XCI7XG4gICAgQElucHV0KCkgZm9sZGVyc0NhdGVnb3J5TmFtZTogc3RyaW5nID0gJ3Rvb2xiYXIubWVudS5mb2xkZXJzJztcbiAgICBASW5wdXQoKSB2aWV3c0NhdGVnb3J5TmFtZTogc3RyaW5nID0gJ3Rvb2xiYXIubWVudS52aWV3cyc7XG5cbiAgICAvKipcbiAgICAgKiBBcnJheSBvZiBmb2xkZXIgbm9kZXMgb24gbGVmdCBzaWRlXG4gICAgICogKi9cbiAgICBsZWZ0Tm9kZXM6IEFycmF5PFVyaU5vZGVSZXNvdXJjZT47XG5cbiAgICAvKipcbiAgICAgKiBBcnJheSBvZiBmb2xkZXIgbm9kZXMgb24gcmlnaHQgc2lkZVxuICAgICAqICovXG4gICAgcmlnaHROb2RlczogQXJyYXk8VXJpTm9kZVJlc291cmNlPjtcblxuICAgIC8qKlxuICAgICAqIFByb2Nlc3NlcyB0aGF0IGNhbiBiZSBkaXNwbGF5ZWQgdW5kZXIgZm9sZGVycyBvbiByaWdodCBzaWRlIG1lbnVcbiAgICAgKiAqL1xuICAgIHZpZXdzOiBBcnJheTxWaWV3TmF2aWdhdGlvbkl0ZW0+O1xuXG4gICAgbW9yZU1lbnVJdGVtczogQXJyYXk8Vmlld05hdmlnYXRpb25JdGVtPjtcblxuICAgIHByb3RlY3RlZCBfbGVmdE5vZGVzU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gICAgcHJvdGVjdGVkIF9yaWdodE5vZGVzU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gICAgcHJvdGVjdGVkIF9maWx0ZXJzU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gICAgcHJvdGVjdGVkIF9icmVha3BvaW50U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gICAgcHJvdGVjdGVkIF9yb290U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gICAgcHJvdGVjdGVkIF9jdXJyZW50Tm9kZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gICAgLyoqXG4gICAgICogQ3VycmVudGx5IGRpc3BsYXkgdXJpXG4gICAgICogU2libGluZ3Mgb2YgdGhlIG5vZGUgYXJlIG9uIHRoZSBsZWZ0LCBjaGlsZHJlbiBhcmUgb24gdGhlIHJpZ2h0XG4gICAgICovXG4gICAgY3VycmVudE5vZGU6IFVyaU5vZGVSZXNvdXJjZVxuXG4gICAgbGVmdExvYWRpbmckOiBMb2FkaW5nRW1pdHRlcjtcbiAgICByaWdodExvYWRpbmckOiBMb2FkaW5nRW1pdHRlcjtcblxuICAgIHByb3RlY3RlZCBfY29uZmlnTGVmdE1lbnU6IENvbmZpZ0RvdWJsZU1lbnUgPSB7XG4gICAgICAgIG1vZGU6ICdzaWRlJyxcbiAgICAgICAgb3BlbmVkOiB0cnVlLFxuICAgICAgICBkaXNhYmxlQ2xvc2U6IGZhbHNlLFxuICAgICAgICB3aWR0aDogTEVGVF9EUkFXRVJfREVGQVVMVF9XSURUSFxuICAgIH07XG4gICAgcHJvdGVjdGVkIF9jb25maWdSaWdodE1lbnU6IENvbmZpZ0RvdWJsZU1lbnUgPSB7XG4gICAgICAgIG1vZGU6ICdzaWRlJyxcbiAgICAgICAgb3BlbmVkOiB0cnVlLFxuICAgICAgICBkaXNhYmxlQ2xvc2U6IGZhbHNlLFxuICAgICAgICB3aWR0aDogUklHSFRfRFJBV0VSX0RFRkFVTFRfV0lEVEhcbiAgICB9O1xuXG4gICAgcHJvdGVjdGVkIF9jaGlsZEN1c3RvbVZpZXdzOiB7IFt1cmk6IHN0cmluZ106IHsgW2tleTogc3RyaW5nXTogVmlld05hdmlnYXRpb25JdGVtIH0gfVxuXG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBfcm91dGVyOiBSb3V0ZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2JyZWFrcG9pbnQ6IEJyZWFrcG9pbnRPYnNlcnZlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9sYW5ndWFnZVNlcnZpY2U6IExhbmd1YWdlU2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkIF91c2VyU2VydmljZTogVXNlclNlcnZpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfYWNjZXNzU2VydmljZTogQWNjZXNzU2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9sb2c6IExvZ2dlclNlcnZpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfY29uZmlnOiBDb25maWd1cmF0aW9uU2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkIF91cmlTZXJ2aWNlOiBVcmlTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2ltcGVyc29uYXRpb25Vc2VyU2VsZWN0OiBJbXBlcnNvbmF0aW9uVXNlclNlbGVjdFNlcnZpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfaW1wZXJzb25hdGlvbjogSW1wZXJzb25hdGlvblNlcnZpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfZHluYW1pY1JvdXRpbmdTZXJ2aWNlOiBEeW5hbWljTmF2aWdhdGlvblJvdXRlUHJvdmlkZXJTZXJ2aWNlKSB7XG4gICAgICAgIHRoaXMubGVmdE5vZGVzID0gbmV3IEFycmF5PFVyaU5vZGVSZXNvdXJjZT4oKTtcbiAgICAgICAgdGhpcy5yaWdodE5vZGVzID0gbmV3IEFycmF5PFVyaU5vZGVSZXNvdXJjZT4oKTtcbiAgICAgICAgdGhpcy52aWV3cyA9IG5ldyBBcnJheTxWaWV3TmF2aWdhdGlvbkl0ZW0+KCk7XG4gICAgICAgIHRoaXMubGVmdExvYWRpbmckID0gbmV3IExvYWRpbmdFbWl0dGVyKCk7XG4gICAgICAgIHRoaXMucmlnaHRMb2FkaW5nJCA9IG5ldyBMb2FkaW5nRW1pdHRlcigpO1xuICAgICAgICB0aGlzLl9jaGlsZEN1c3RvbVZpZXdzID0ge307XG4gICAgICAgIHRoaXMubW9yZU1lbnVJdGVtcyA9IG5ldyBBcnJheTxWaWV3TmF2aWdhdGlvbkl0ZW0+KCk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2JyZWFrcG9pbnRTdWJzY3JpcHRpb24gPSB0aGlzLl9icmVha3BvaW50Lm9ic2VydmUoW0JyZWFrcG9pbnRzLkhhbmRzZXRMYW5kc2NhcGVdKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuX2JyZWFrcG9pbnQuaXNNYXRjaGVkKCcobWF4LXdpZHRoOiA5NTkuOTlweCknKSkge1xuICAgICAgICAgICAgICAgIHRoaXMucmVzb2x2ZUxheW91dChmYWxzZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMucmVzb2x2ZUxheW91dCh0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGlmICghdGhpcy5jdXJyZW50Tm9kZSkge1xuICAgICAgICAgICAgdGhpcy5sZWZ0TG9hZGluZyQub24oKTtcbiAgICAgICAgICAgIHRoaXMucmlnaHRMb2FkaW5nJC5vbigpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2N1cnJlbnROb2RlU3Vic2NyaXB0aW9uID0gdGhpcy5fdXJpU2VydmljZS5hY3RpdmVOb2RlJC5zdWJzY3JpYmUobm9kZSA9PiB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnROb2RlID0gbm9kZTtcbiAgICAgICAgICAgIGlmICghbm9kZSkgcmV0dXJuO1xuICAgICAgICAgICAgaWYgKHRoaXMubGVmdExvYWRpbmckLmlzQWN0aXZlIHx8IHRoaXMucmlnaHRMb2FkaW5nJC5pc0FjdGl2ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMubGVmdExvYWRpbmckLm9mZigpO1xuICAgICAgICAgICAgICAgIHRoaXMucmlnaHRMb2FkaW5nJC5vZmYoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLl91cmlTZXJ2aWNlLmlzUm9vdChub2RlKSkge1xuICAgICAgICAgICAgICAgIHRoaXMubGVmdE5vZGVzID0gW107XG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkUmlnaHRTaWRlKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCF0aGlzLmxlZnROb2Rlcy5maW5kKG4gPT4gbi5pZCA9PT0gbm9kZS5pZCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRMZWZ0U2lkZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5sb2FkUmlnaHRTaWRlKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IHZpZXdDb25maWd1cmF0aW9uUGF0aCA9IHRoaXMuX2FjdGl2YXRlZFJvdXRlLnNuYXBzaG90LmRhdGFbTkFFX1JPVVRJTkdfQ09ORklHVVJBVElPTl9QQVRIXTtcbiAgICAgICAgaWYgKCEhdmlld0NvbmZpZ3VyYXRpb25QYXRoKSB7XG4gICAgICAgICAgICBjb25zdCB2aWV3Q29uZmlndXJhdGlvbiA9IHRoaXMuX2NvbmZpZy5nZXRWaWV3QnlQYXRoKHZpZXdDb25maWd1cmF0aW9uUGF0aCk7XG4gICAgICAgICAgICBPYmplY3QuZW50cmllcyh2aWV3Q29uZmlndXJhdGlvbi5jaGlsZHJlbikuZm9yRWFjaCgoW2tleSwgY2hpbGRWaWV3XSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucmVzb2x2ZVVyaUZvckNoaWxkVmlld3Modmlld0NvbmZpZ3VyYXRpb25QYXRoICsgJy8nICsga2V5LCBjaGlsZFZpZXcpO1xuICAgICAgICAgICAgICAgIHRoaXMucmVzb2x2ZUhpZGRlbk1lbnVJdGVtRnJvbUNoaWxkVmlld3Modmlld0NvbmZpZ3VyYXRpb25QYXRoICsgJy8nICsga2V5LCBjaGlsZFZpZXcpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgcmVzb2x2ZVVyaUZvckNoaWxkVmlld3MoY29uZmlnUGF0aDogc3RyaW5nLCBjaGlsZFZpZXc6IFZpZXcpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFjaGlsZFZpZXcucHJvY2Vzc1VyaSkgcmV0dXJuO1xuICAgICAgICBpZiAoIXRoaXMuX2FjY2Vzc1NlcnZpY2UuY2FuQWNjZXNzVmlldyhjaGlsZFZpZXcsIGNvbmZpZ1BhdGgpKSByZXR1cm47XG4gICAgICAgIGlmICghdGhpcy5fY2hpbGRDdXN0b21WaWV3c1tjaGlsZFZpZXcucHJvY2Vzc1VyaV0pIHtcbiAgICAgICAgICAgIHRoaXMuX2NoaWxkQ3VzdG9tVmlld3NbY2hpbGRWaWV3LnByb2Nlc3NVcmldID0ge307XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fY2hpbGRDdXN0b21WaWV3c1tjaGlsZFZpZXcucHJvY2Vzc1VyaV1bY29uZmlnUGF0aF0gPSB7XG4gICAgICAgICAgICBpZDogY29uZmlnUGF0aCxcbiAgICAgICAgICAgIC4uLmNoaWxkVmlld1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHJlc29sdmVIaWRkZW5NZW51SXRlbUZyb21DaGlsZFZpZXdzKGNvbmZpZ1BhdGg6IHN0cmluZywgY2hpbGRWaWV3OiBWaWV3KTogdm9pZCB7XG4gICAgICAgIGlmICghY2hpbGRWaWV3Lm5hdmlnYXRpb24pIHJldHVybjtcbiAgICAgICAgaWYgKCF0aGlzLl9hY2Nlc3NTZXJ2aWNlLmNhbkFjY2Vzc1ZpZXcoY2hpbGRWaWV3LCBjb25maWdQYXRoKSkgcmV0dXJuO1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGlmICghIShjaGlsZFZpZXc/Lm5hdmlnYXRpb24/LmhpZGRlbikpIHtcbiAgICAgICAgICAgIHRoaXMubW9yZU1lbnVJdGVtcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBpZDogY29uZmlnUGF0aCxcbiAgICAgICAgICAgICAgICAuLi5jaGlsZFZpZXdcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2JyZWFrcG9pbnRTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuX2xlZnROb2Rlc1N1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5fcmlnaHROb2Rlc1N1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5fZmlsdGVyc1N1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5fcm9vdFN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5fY3VycmVudE5vZGVTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMubGVmdExvYWRpbmckLmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMucmlnaHRMb2FkaW5nJC5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIGdldCBjb25maWdMZWZ0TWVudSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbmZpZ0xlZnRNZW51O1xuICAgIH1cblxuICAgIGdldCBjb25maWdSaWdodE1lbnUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb25maWdSaWdodE1lbnU7XG4gICAgfVxuXG4gICAgdG9nZ2xlTWVudSgpIHtcbiAgICAgICAgdGhpcy50b2dnbGVSaWdodE1lbnUoKTtcbiAgICAgICAgaWYgKHRoaXMuYWxsQ2xvc2FibGUpIHtcbiAgICAgICAgICAgIHRoaXMudG9nZ2xlTGVmdE1lbnUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHRvZ2dsZUxlZnRNZW51KCkge1xuICAgICAgICB0aGlzLl9jb25maWdMZWZ0TWVudS5vcGVuZWQgPSAhdGhpcy5fY29uZmlnTGVmdE1lbnUub3BlbmVkO1xuICAgIH1cblxuICAgIHRvZ2dsZVJpZ2h0TWVudSgpIHtcbiAgICAgICAgdGhpcy5fY29uZmlnUmlnaHRNZW51Lm9wZW5lZCA9ICF0aGlzLl9jb25maWdSaWdodE1lbnUub3BlbmVkO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCByZXNvbHZlTGF5b3V0KGlzTGFyZ2VTY3JlZW46IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY29uZmlnTGVmdE1lbnUgPSBpc0xhcmdlU2NyZWVuID8ge1xuICAgICAgICAgICAgbW9kZTogJ3NpZGUnLFxuICAgICAgICAgICAgb3BlbmVkOiB0cnVlLFxuICAgICAgICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxuICAgICAgICAgICAgd2lkdGg6IHRoaXMuX2NvbmZpZ0xlZnRNZW51LndpZHRoXG4gICAgICAgIH0gOiB7XG4gICAgICAgICAgICBtb2RlOiAnb3ZlcicsXG4gICAgICAgICAgICBvcGVuZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGlzYWJsZUNsb3NlOiBmYWxzZSxcbiAgICAgICAgICAgIHdpZHRoOiB0aGlzLl9jb25maWdMZWZ0TWVudS53aWR0aFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLl9jb25maWdSaWdodE1lbnUgPSBpc0xhcmdlU2NyZWVuID8ge1xuICAgICAgICAgICAgbW9kZTogJ3NpZGUnLFxuICAgICAgICAgICAgb3BlbmVkOiB0cnVlLFxuICAgICAgICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxuICAgICAgICAgICAgd2lkdGg6IHRoaXMuX2NvbmZpZ1JpZ2h0TWVudS53aWR0aFxuICAgICAgICB9IDoge1xuICAgICAgICAgICAgbW9kZTogJ292ZXInLFxuICAgICAgICAgICAgb3BlbmVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRpc2FibGVDbG9zZTogZmFsc2UsXG4gICAgICAgICAgICB3aWR0aDogdGhpcy5fY29uZmlnUmlnaHRNZW51LndpZHRoXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZ2V0TGFuZygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xhbmd1YWdlU2VydmljZS5nZXRMYW5ndWFnZSgpO1xuICAgIH1cblxuICAgIGxvZ291dCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdXNlclNlcnZpY2UubG9nb3V0KCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2xvZy5kZWJ1ZygnVXNlciBpcyBsb2dnZWQgb3V0Jyk7XG4gICAgICAgICAgICBpZiAodGhpcy5fY29uZmlnLmdldCgpLnNlcnZpY2VzICYmIHRoaXMuX2NvbmZpZy5nZXQoKS5zZXJ2aWNlcy5hdXRoICYmIHRoaXMuX2NvbmZpZy5nZXQoKS5zZXJ2aWNlcy5hdXRoLmxvZ291dFJlZGlyZWN0KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVkaXJlY3RQYXRoID0gdGhpcy5fY29uZmlnLmdldCgpLnNlcnZpY2VzLmF1dGgubG9nb3V0UmVkaXJlY3Q7XG4gICAgICAgICAgICAgICAgdGhpcy5fbG9nLmluZm8oJ1JlZGlyZWN0aW5nIHRvICcgKyByZWRpcmVjdFBhdGgpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZShbcmVkaXJlY3RQYXRoXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGltcGVyc29uYXRlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9pbXBlcnNvbmF0aW9uVXNlclNlbGVjdC5zZWxlY3RJbXBlcnNvbmF0ZSgpO1xuICAgIH1cblxuICAgIHN0b3BJbXBlcnNvbmF0aW5nKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9pbXBlcnNvbmF0aW9uLmNlYXNlKCk7XG4gICAgfVxuXG4gICAgZ2V0IHVzZXIoKTogVXNlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl91c2VyU2VydmljZS51c2VyO1xuICAgIH1cblxuICAgIGdldCBjYW5Hb0JhY2tMb2FkaW5nJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3VyaVNlcnZpY2UucGFyZW50Tm9kZUxvYWRpbmckO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE9uIGhvbWUgY2xpY2ssIHRoZSBjdXJyZW50IGxldmVsIGlzIHNldCB0byAwLCBhbmQgY3VycmVudCBwYXJlbnQgaXNcbiAgICAgKiBzZXQgdG8gcm9vdCBub2RlLlxuICAgICAqICovXG4gICAgb25Ib21lQ2xpY2soKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3VyaVNlcnZpY2UucmVzZXQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPbiBiYWNrIGNsaWNrLCB0aGUgcGFyZW50IGlzIHNldCB0byBwYXJlbnQgb2YgbGVmdCBub2RlcywgdGhhdCB3aWxsIHNvbHZlXG4gICAgICogdGhlIHJpZ2h0IHNpZGUgbWVudSAoZWxlbWVudHMgdGhhdCB3ZXJlIGluIGxlZnQgc2lkZSwgYWZ0ZXIgYmFja3dhcmRcbiAgICAgKiBuYXZpZ2F0aW9uIHdpbGwgYmUgb24gdGhlIHJpZ2h0IHNpZGUpLlxuICAgICAqIEN1cnJlbnQgbGV2ZWwgaXMgc2V0IHRvIGEgbG93ZXIgbnVtYmVyIGluIG9yZGVyIHRvIHNldCB0aGUgbGVmdCBzaWRlIG1lbnUuXG4gICAgICogKi9cbiAgICBvbkJhY2tDbGljaygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX3VyaVNlcnZpY2UuaXNSb290KHRoaXMuY3VycmVudE5vZGUpKSByZXR1cm47XG4gICAgICAgIHRoaXMuX3VyaVNlcnZpY2UuYWN0aXZlTm9kZSA9IHRoaXMuY3VycmVudE5vZGUucGFyZW50O1xuICAgIH1cblxuICAgIG9uTm9kZUNsaWNrKG5vZGU6IFVyaU5vZGVSZXNvdXJjZSk6IHZvaWQge1xuICAgICAgICB0aGlzLl91cmlTZXJ2aWNlLmFjdGl2ZU5vZGUgPSBub2RlO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBsb2FkTGVmdFNpZGUoKSB7XG4gICAgICAgIGlmICh0aGlzLl91cmlTZXJ2aWNlLmlzUm9vdCh0aGlzLmN1cnJlbnROb2RlKSkge1xuICAgICAgICAgICAgdGhpcy5sZWZ0Tm9kZXMgPSBbXTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmxlZnRMb2FkaW5nJC5vbigpO1xuICAgICAgICB0aGlzLl9sZWZ0Tm9kZXNTdWJzY3JpcHRpb24gPSB0aGlzLl91cmlTZXJ2aWNlLmdldFNpYmxpbmdzT2ZOb2RlKHRoaXMuY3VycmVudE5vZGUpLnN1YnNjcmliZShub2RlcyA9PiB7XG4gICAgICAgICAgICB0aGlzLmxlZnROb2RlcyA9IG5vZGVzIGluc3RhbmNlb2YgQXJyYXkgPyBub2RlcyA6IFtdO1xuICAgICAgICAgICAgdGhpcy5sZWZ0Tm9kZXMuc29ydCgoYSwgYikgPT4gdGhpcy5jb21wYXJlU3RyaW5ncyhhLm5hbWUsIGIubmFtZSkpO1xuICAgICAgICAgICAgdGhpcy5sZWZ0TG9hZGluZyQub2ZmKCk7XG4gICAgICAgIH0sIGVycm9yID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2xvZy5lcnJvcihlcnJvcik7XG4gICAgICAgICAgICB0aGlzLmxlZnROb2RlcyA9IFtdO1xuICAgICAgICAgICAgdGhpcy5sZWZ0TG9hZGluZyQub2ZmKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBsb2FkUmlnaHRTaWRlKCkge1xuICAgICAgICB0aGlzLnJpZ2h0TG9hZGluZyQub24oKVxuICAgICAgICBmb3JrSm9pbih7XG4gICAgICAgICAgICBmb2xkZXJzOiB0aGlzLl91cmlTZXJ2aWNlLmdldENoaWxkTm9kZXModGhpcy5jdXJyZW50Tm9kZSksXG4gICAgICAgICAgICBmaWx0ZXJzOiB0aGlzLl91cmlTZXJ2aWNlLmdldENhc2VzT2ZOb2RlKHRoaXMuY3VycmVudE5vZGUsIEZJTFRFUl9JREVOVElGSUVSUylcbiAgICAgICAgfSkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICAgICAgICB0aGlzLnJpZ2h0Tm9kZXMgPSByZXN1bHQuZm9sZGVycyBpbnN0YW5jZW9mIEFycmF5ID8gcmVzdWx0LmZvbGRlcnMgOiBbXTtcbiAgICAgICAgICAgIHRoaXMucmlnaHROb2Rlcy5zb3J0KChhLCBiKSA9PiB0aGlzLmNvbXBhcmVTdHJpbmdzKGEubmFtZSwgYi5uYW1lKSk7XG4gICAgICAgICAgICB0aGlzLnZpZXdzID0gKHJlc3VsdC5maWx0ZXJzIGluc3RhbmNlb2YgQXJyYXkgPyByZXN1bHQuZmlsdGVycyA6IFtdKS5tYXAoZiA9PiB0aGlzLnJlc29sdmVGaWx0ZXJDYXNlVG9WaWV3TmF2aWdhdGlvbkl0ZW0oZikpLmZpbHRlcihpID0+ICEhaSk7XG4gICAgICAgICAgICBpZiAoISF0aGlzLl9jaGlsZEN1c3RvbVZpZXdzW3RoaXMuY3VycmVudE5vZGUudXJpUGF0aF0pIHtcbiAgICAgICAgICAgICAgICB0aGlzLnZpZXdzLnB1c2goLi4uT2JqZWN0LnZhbHVlcyh0aGlzLl9jaGlsZEN1c3RvbVZpZXdzW3RoaXMuY3VycmVudE5vZGUudXJpUGF0aF0pKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgdGhpcy52aWV3cy5zb3J0KChhLCBiKSA9PiB0aGlzLmNvbXBhcmVTdHJpbmdzKGE/Lm5hdmlnYXRpb24/LnRpdGxlLCBiPy5uYXZpZ2F0aW9uPy50aXRsZSkpO1xuICAgICAgICAgICAgdGhpcy5yaWdodExvYWRpbmckLm9mZigpO1xuICAgICAgICB9LCBlcnJvciA9PiB7XG4gICAgICAgICAgICB0aGlzLl9sb2cuZXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgdGhpcy5yaWdodE5vZGVzID0gW107XG4gICAgICAgICAgICB0aGlzLnZpZXdzID0gW107XG4gICAgICAgICAgICB0aGlzLnJpZ2h0TG9hZGluZyQub2ZmKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCByZXNvbHZlRmlsdGVyQ2FzZVRvVmlld05hdmlnYXRpb25JdGVtKGZpbHRlcjogQ2FzZSk6IFZpZXdOYXZpZ2F0aW9uSXRlbSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IGl0ZW06IFZpZXdOYXZpZ2F0aW9uSXRlbSA9IHtcbiAgICAgICAgICAgIGFjY2Vzczoge30sXG4gICAgICAgICAgICBuYXZpZ2F0aW9uOiB7XG4gICAgICAgICAgICAgICAgaWNvbjogZmlsdGVyLmltbWVkaWF0ZURhdGEuZmluZChmID0+IGYuc3RyaW5nSWQgPT09ICdpY29uX25hbWUnKT8udmFsdWUgfHwgdGhpcy5maWx0ZXJJY29uLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBmaWx0ZXIuaW1tZWRpYXRlRGF0YS5maW5kKGYgPT4gZi5zdHJpbmdJZCA9PT0gJ2VudHJ5X25hbWUnKT8udmFsdWU/LmRlZmF1bHRWYWx1ZSB8fCBmaWx0ZXIudGl0bGVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByb3V0aW5nOiB7XG4gICAgICAgICAgICAgICAgcGF0aDogdGhpcy5nZXRGaWx0ZXJSb3V0aW5nUGF0aChmaWx0ZXIpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaWQ6IGZpbHRlci5zdHJpbmdJZCxcbiAgICAgICAgICAgIHJlc291cmNlOiBmaWx0ZXJcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgcmVzb2x2ZWRSb2xlcyA9IHRoaXMucmVzb2x2ZUFjY2Vzc1JvbGVzKGZpbHRlciwgJ2FsbG93ZWRfcm9sZXMnKTtcbiAgICAgICAgY29uc3QgcmVzb2x2ZWRCYW5uZWRSb2xlcyA9IHRoaXMucmVzb2x2ZUFjY2Vzc1JvbGVzKGZpbHRlciwgJ2Jhbm5lZF9yb2xlcycpO1xuICAgICAgICBpZighIXJlc29sdmVkUm9sZXMpIGl0ZW0uYWNjZXNzWydyb2xlJ10gPSByZXNvbHZlZFJvbGVzO1xuICAgICAgICBpZighIXJlc29sdmVkQmFubmVkUm9sZXMpIGl0ZW0uYWNjZXNzWydiYW5uZWRSb2xlJ10gPSByZXNvbHZlZEJhbm5lZFJvbGVzO1xuICAgICAgICBpZiAoIXRoaXMuX2FjY2Vzc1NlcnZpY2UuY2FuQWNjZXNzVmlldyhpdGVtLCBpdGVtLnJvdXRpbmdQYXRoKSkgcmV0dXJuO1xuICAgICAgICByZXR1cm4gaXRlbTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgcmVzb2x2ZUFjY2Vzc1JvbGVzKGZpbHRlcjogQ2FzZSwgcm9sZVR5cGU6IHN0cmluZyk6IEFycmF5PFJvbGVBY2Nlc3M+IHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgYWxsb3dlZFJvbGVzID0gZmlsdGVyLmltbWVkaWF0ZURhdGEuZmluZChmID0+IGYuc3RyaW5nSWQgPT09IHJvbGVUeXBlKT8ub3B0aW9ucztcbiAgICAgICAgaWYgKCFhbGxvd2VkUm9sZXMgfHwgT2JqZWN0LmtleXMoYWxsb3dlZFJvbGVzKS5sZW5ndGggPT09IDApIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IHJvbGVzID0gW107XG4gICAgICAgIE9iamVjdC5rZXlzKGFsbG93ZWRSb2xlcykuZm9yRWFjaChjb21iaW5lZCA9PiB7XG4gICAgICAgICAgICBjb25zdCBwYXJ0cyA9IGNvbWJpbmVkLnNwbGl0KCc6Jyk7XG4gICAgICAgICAgICByb2xlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBwcm9jZXNzSWQ6IHBhcnRzWzFdLFxuICAgICAgICAgICAgICAgIHJvbGVJZDogcGFydHNbMF1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJvbGVzO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRGaWx0ZXJSb3V0aW5nUGF0aChmaWx0ZXJDYXNlOiBDYXNlKSB7XG4gICAgICAgIGNvbnN0IHZpZXdUYXNrSWQgPSBmaWx0ZXJDYXNlLnRhc2tzLmZpbmQodGFza1BhaXIgPT4gdGFza1BhaXIudHJhbnNpdGlvbiA9PT0gRklMVEVSX1ZJRVdfVEFTS19UUkFOU0lUSU9OX0lEKS50YXNrO1xuICAgICAgICBjb25zdCB1cmwgPSB0aGlzLl9keW5hbWljUm91dGluZ1NlcnZpY2Uucm91dGU7XG4gICAgICAgIHJldHVybiBgLyR7dXJsfS8ke3ZpZXdUYXNrSWR9YDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgY29tcGFyZVN0cmluZ3MoYTogc3RyaW5nLCBiOiBzdHJpbmcpOiBudW1iZXIge1xuICAgICAgICBpZiAoIWEgJiYgIWIpIHJldHVybiAwO1xuICAgICAgICBpZiAoYSA8IGIpIHJldHVybiAtMTtcbiAgICAgICAgcmV0dXJuIGEgPiBiID8gMSA6IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRnVuY3Rpb24gdG8gY2hlY2sgd2hldGhlciB0aGUgYmFjayBidXR0b24gc2hvdWxkIGJlIGRpc3BsYXllZFxuICAgICAqIEByZXR1cm5zIGJvb2xlYW4gaWYgdGhlIGJhY2sgYnV0dG9uIHNob3VsZCBiZSBkaXNwbGF5ZWRcbiAgICAgKiAqL1xuICAgIGlzT25aZXJvTGV2ZWwoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuY3VycmVudE5vZGU/LmxldmVsID8gdGhpcy5jdXJyZW50Tm9kZS5sZXZlbCA9PSAwIDogdHJ1ZTtcbiAgICB9XG5cbiAgICBpc0xlZnROb2Rlc0VtcHR5KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5sZWZ0Tm9kZXMgPT09IHVuZGVmaW5lZCB8fCB0aGlzLmxlZnROb2Rlcy5sZW5ndGggPT09IDA7XG4gICAgfVxuXG4gICAgaXNSaWdodE5vZGVzRW1wdHkoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnJpZ2h0Tm9kZXMgPT09IHVuZGVmaW5lZCB8fCB0aGlzLnJpZ2h0Tm9kZXMubGVuZ3RoID09PSAwO1xuICAgIH1cblxuICAgIGlzVmlld3NFbXB0eSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmlld3MgPT09IHVuZGVmaW5lZCB8fCB0aGlzLnZpZXdzLmxlbmd0aCA9PT0gMDtcbiAgICB9XG5cbiAgICB1cmlOb2RlVHJhY2tCeShpbmRleDogbnVtYmVyLCBub2RlOiBVcmlOb2RlUmVzb3VyY2UpIHtcbiAgICAgICAgcmV0dXJuIG5vZGUuaWQ7XG4gICAgfVxuXG4gICAgdmlld3NUcmFja0J5KGluZGV4OiBudW1iZXIsIHZpZXc6IFZpZXdOYXZpZ2F0aW9uSXRlbSkge1xuICAgICAgICByZXR1cm4gdmlldy5pZDtcbiAgICB9XG5cbiAgICBvblJlc2l6ZUV2ZW50KGV2ZW50OiBSZXNpemVFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoZXZlbnQucmVjdGFuZ2xlLndpZHRoID4gUklHSFRfRFJBV0VSX01BWF9XSURUSCkge1xuICAgICAgICAgICAgdGhpcy5fY29uZmlnUmlnaHRNZW51LndpZHRoID0gUklHSFRfRFJBV0VSX01BWF9XSURUSDtcbiAgICAgICAgfSBlbHNlIGlmIChldmVudC5yZWN0YW5nbGUud2lkdGggPCBSSUdIVF9EUkFXRVJfREVGQVVMVF9NSU5fV0lEVEgpIHtcbiAgICAgICAgICAgIHRoaXMuX2NvbmZpZ1JpZ2h0TWVudS53aWR0aCA9IFJJR0hUX0RSQVdFUl9ERUZBVUxUX01JTl9XSURUSDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2NvbmZpZ1JpZ2h0TWVudS53aWR0aCA9IGV2ZW50LnJlY3RhbmdsZS53aWR0aDtcbiAgICAgICAgfVxuICAgICAgICAvLyBUT0RPIGltcGxlbWVudCBzYXZpbmcgZHJhd2VyIHdpZHRoIHRvIHVzZXIgcHJlZmVyZW5jZXNcbiAgICAgICAgLy8gdGhpcy51c2VyUHJlZmVyZW5jZVNlcnZpY2UuX2RyYXdlcldpZHRoQ2hhbmdlZCQubmV4dCh0aGlzLndpZHRoKTtcbiAgICAgICAgLy8gdGhpcy5jb250ZW50V2lkdGgubmV4dCh0aGlzLndpZHRoKTtcbiAgICB9XG5cbn1cbiJdfQ==
|
|
@@ -21,7 +21,7 @@ export class AbstractNavigationDrawerComponent {
|
|
|
21
21
|
this.openedChange = new EventEmitter();
|
|
22
22
|
this._fixed = true;
|
|
23
23
|
this.opened = true;
|
|
24
|
-
this.quickPanelItems = ['language', 'settings', 'logout'];
|
|
24
|
+
this.quickPanelItems = ['language', 'settings', 'logout', 'impersonation'];
|
|
25
25
|
if (this.userPreferenceService.drawerWidth !== undefined) {
|
|
26
26
|
this.contentWidth = new BehaviorSubject(this.userPreferenceService.drawerWidth);
|
|
27
27
|
}
|
|
@@ -153,4 +153,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
|
|
|
153
153
|
type: Input,
|
|
154
154
|
args: ['fixed']
|
|
155
155
|
}] } });
|
|
156
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtbmF2aWdhdGlvbi1kcmF3ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzLWNvcmUvc3JjL2xpYi9uYXZpZ2F0aW9uL25hdmlnYXRpb24tZHJhd2VyL2Fic3RyYWN0LW5hdmlnYXRpb24tZHJhd2VyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWdCLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRWxILE9BQU8sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFBcUIsV0FBVyxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFHcEUsT0FBTyxFQUFDLGVBQWUsRUFBZSxNQUFNLE1BQU0sQ0FBQzs7Ozs7QUFJbkQsTUFBTSx3QkFBd0IsR0FBRyxHQUFHLENBQUM7QUFDckMsTUFBTSxnQkFBZ0IsR0FBRyxHQUFHLENBQUM7QUFNN0IsTUFBTSxPQUFnQixpQ0FBaUM7SUEwQm5ELFlBQXNCLFVBQThCLEVBQzlCLElBQW1CLEVBQ25CLHFCQUE0QztRQUY1QyxlQUFVLEdBQVYsVUFBVSxDQUFvQjtRQUM5QixTQUFJLEdBQUosSUFBSSxDQUFlO1FBQ25CLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBdUI7UUFSeEQsWUFBTyxHQUFHO1lBQ2hCLElBQUksRUFBRSxNQUFNO1lBQ1osTUFBTSxFQUFFLElBQUk7WUFDWixZQUFZLEVBQUUsS0FBSztTQUN0QixDQUFDO1FBS0UsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBQ2hELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ25CLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ25CLElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxVQUFVLEVBQUUs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Q3pELElBQUksQ0FBQyxLQUFLLEdBQUcsd0JBQXdCLENBQUM7U0FDekM7YUFBTTtZQUNILElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUM7U0FDdEM7UUFDRCxJQUFJLENBQUMscUJBQXFCLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqRSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkMsQ0FBQzs7K0hBN0lpQixpQ0FBaUM7bUhBQWpDLGlDQUFpQyxnYkFGekMsRUFBRTs0RkFFTSxpQ0FBaUM7a0JBSnRELFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGdDQUFnQztvQkFDMUMsUUFBUSxFQUFFLEVBQUU7aUJBQ2Y7eUtBSXlCLFFBQVE7c0JBQTdCLEtBQUs7dUJBQUMsTUFBTTtnQkFDZSxJQUFJO3NCQUEvQixLQUFLO3VCQUFDLFlBQVk7Z0JBQ1MsY0FBYztzQkFBekMsS0FBSzt1QkFBQyxZQUFZO2dCQUNTLGVBQWU7c0JBQTFDLEtBQUs7dUJBQUMsWUFBWTtnQkFDSCxVQUFVO3NCQUF6QixLQUFLO2dCQUVXLFlBQVk7c0JBQTVCLE1BQU07Z0JBRXlCLFFBQVE7c0JBQXZDLFNBQVM7dUJBQUMsU0FBUztnQkFtRWhCLEtBQUs7c0JBRFIsS0FBSzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1VzZXJ9IGZyb20gJy4uLy4uL3VzZXIvbW9kZWxzL3VzZXInO1xuaW1wb3J0ICdoYW1tZXJqcyc7XG5pbXBvcnQge0JyZWFrcG9pbnRPYnNlcnZlciwgQnJlYWtwb2ludHN9IGZyb20gJ0Bhbmd1bGFyL2Nkay9sYXlvdXQnO1xuaW1wb3J0IHtNYXREcmF3ZXJUb2dnbGVSZXN1bHQsIE1hdFNpZGVuYXZ9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NpZGVuYXYnO1xuaW1wb3J0IHtMb2dnZXJTZXJ2aWNlfSBmcm9tICcuLi8uLi9sb2dnZXIvc2VydmljZXMvbG9nZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIFN1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1Jlc2l6ZUV2ZW50fSBmcm9tICdhbmd1bGFyLXJlc2l6YWJsZS1lbGVtZW50JztcbmltcG9ydCB7VXNlclByZWZlcmVuY2VTZXJ2aWNlfSBmcm9tICcuLi8uLi91c2VyL3NlcnZpY2VzL3VzZXItcHJlZmVyZW5jZS5zZXJ2aWNlJztcblxuY29uc3QgRFJBV0VSX0RFRkFVTFRfTUlOX1dJRFRIID0gMjAwO1xuY29uc3QgRFJBV0VSX01BWF9XSURUSCA9IDQ1MDtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduY2MtYWJzdHJhY3QtbmF2aWdhdGlvbi1kcmF3ZXInLFxuICAgIHRlbXBsYXRlOiAnJ1xufSlcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdE5hdmlnYXRpb25EcmF3ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG5cblxuICAgIEBJbnB1dCgndXNlcicpIHB1YmxpYyBzaG93VXNlcjogYm9vbGVhbjtcbiAgICBASW5wdXQoJ3VzZXJPYmplY3QnKSBwdWJsaWMgdXNlcjogVXNlcjtcbiAgICBASW5wdXQoJ3F1aWNrUGFuZWwnKSBwdWJsaWMgc2hvd1F1aWNrUGFuZWw6IGJvb2xlYW47XG4gICAgQElucHV0KCdwYW5lbEl0ZW1zJykgcHVibGljIHF1aWNrUGFuZWxJdGVtczogQXJyYXk8YW55PjsgLy8gUXVpY2tQYW5lbEl0ZW1cbiAgICBASW5wdXQoKSBwdWJsaWMgbmF2aWdhdGlvbjogYm9vbGVhbjtcblxuICAgIEBPdXRwdXQoKSBwdWJsaWMgb3BlbmVkQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj47XG5cbiAgICBAVmlld0NoaWxkKCdzaWRlbmF2JykgcHJvdGVjdGVkIF9zaWRlTmF2OiBNYXRTaWRlbmF2O1xuXG4gICAgcHVibGljIG9wZW5lZDogYm9vbGVhbjtcbiAgICBwcm90ZWN0ZWQgX2ZpeGVkOiBib29sZWFuO1xuICAgIHByb3RlY3RlZCBzdWJCcmVha3BvaW50OiBTdWJzY3JpcHRpb247XG5cbiAgICBwdWJsaWMgd2lkdGg6IG51bWJlcjtcbiAgICBwdWJsaWMgY29udGVudFdpZHRoOiBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPjtcblxuICAgIHByb3RlY3RlZCBfY29uZmlnID0ge1xuICAgICAgICBtb2RlOiAnb3ZlcicsXG4gICAgICAgIG9wZW5lZDogdHJ1ZSxcbiAgICAgICAgZGlzYWJsZUNsb3NlOiBmYWxzZVxuICAgIH07XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgYnJlYWtwb2ludDogQnJlYWtwb2ludE9ic2VydmVyLFxuICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfbG9nOiBMb2dnZXJTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIHByb3RlY3RlZCB1c2VyUHJlZmVyZW5jZVNlcnZpY2U6IFVzZXJQcmVmZXJlbmNlU2VydmljZSkge1xuICAgICAgICB0aGlzLm9wZW5lZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgICAgICAgdGhpcy5fZml4ZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLm9wZW5lZCA9IHRydWU7XG4gICAgICAgIHRoaXMucXVpY2tQYW5lbEl0ZW1zID0gWydsYW5ndWFnZScsICdzZXR0aW5ncycsICdsb2dvdXQnXTtcbiAgICAgICAgaWYgKHRoaXMudXNlclByZWZlcmVuY2VTZXJ2aWNlLmRyYXdlcldpZHRoICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMuY29udGVudFdpZHRoID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KHRoaXMudXNlclByZWZlcmVuY2VTZXJ2aWNlLmRyYXdlcldpZHRoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY29udGVudFdpZHRoID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KERSQVdFUl9ERUZBVUxUX01JTl9XSURUSCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZXNvbHZlTGF5b3V0KHRoaXMuX2ZpeGVkKTtcbiAgICAgICAgdGhpcy5zdWJCcmVha3BvaW50ID0gdGhpcy5icmVha3BvaW50Lm9ic2VydmUoW0JyZWFrcG9pbnRzLkhhbmRzZXRMYW5kc2NhcGVdKS5zdWJzY3JpYmUoIHJlc3VsdCA9PiB7XG4gICAgICAgICAgICB0aGlzLl9sb2cuaW5mbygnQnJlYWtwb2ludE9ic2VydmVyIG1hdGNoZXMgd2lkdGggb2Ygd2luZG93OiAnICsgdGhpcy5icmVha3BvaW50LmlzTWF0Y2hlZCgnKG1heC13aWR0aDogOTU5Ljk5cHgpJykpO1xuICAgICAgICAgICAgaWYgKHRoaXMuYnJlYWtwb2ludC5pc01hdGNoZWQoJyhtYXgtd2lkdGg6IDk1OS45OXB4KScpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXNvbHZlTGF5b3V0KGZhbHNlKTtcbiAgICAgICAgICAgICAgICB0aGlzLm9wZW5lZCA9IHRoaXMuX2NvbmZpZy5vcGVuZWQ7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMucmVzb2x2ZUxheW91dCh0aGlzLl9maXhlZCk7XG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuZWQgPSB0aGlzLl9jb25maWcub3BlbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5vcGVuZWQgPSB0aGlzLl9jb25maWcub3BlbmVkO1xuICAgICAgICB0aGlzLnVzZXJQcmVmZXJlbmNlU2VydmljZS5wcmVmZXJlbmNlc0NoYW5nZWQkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLndpZHRoID0gdGhpcy51c2VyUHJlZmVyZW5jZVNlcnZpY2UuZHJhd2VyV2lkdGg7XG4gICAgICAgICAgICB0aGlzLmNvbnRlbnRXaWR0aC5uZXh0KHRoaXMud2lkdGgpO1xuICAgICAgICB9KTtcbiAgICAgICAgLy8gdGhpcy53aWR0aCA9IHRoaXMudXNlclByZWZlcmVuY2VTZXJ2aWNlLmdldERyYXdlcldpZHRoKCk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9wZW5lZENoYW5nZSA9IHRoaXMuX3NpZGVOYXYub3BlbmVkQ2hhbmdlO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnN1YkJyZWFrcG9pbnQudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5vcGVuZWRDaGFuZ2UuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBnZXQgY29uZmlnKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29uZmlnO1xuICAgIH1cblxuICAgIGdldCBmaXhlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpeGVkO1xuICAgIH1cblxuICAgIEBJbnB1dCgnZml4ZWQnKVxuICAgIHNldCBmaXhlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9maXhlZCA9IHZhbHVlO1xuICAgICAgICB0aGlzLnJlc29sdmVMYXlvdXQodGhpcy5fZml4ZWQpO1xuICAgIH1cblxuICAgIG9wZW4oKTogUHJvbWlzZTxNYXREcmF3ZXJUb2dnbGVSZXN1bHQ+IHtcbiAgICAgICAgaWYgKCF0aGlzLl9zaWRlTmF2Lm9wZW5lZCkge1xuICAgICAgICAgICAgdGhpcy5fc2lkZU5hdi5vcGVuKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgnb3BlbicpO1xuICAgIH1cblxuICAgIGNsb3NlKCk6IFByb21pc2U8TWF0RHJhd2VyVG9nZ2xlUmVzdWx0PiB7XG4gICAgICAgIGlmICh0aGlzLl9maXhlZCkge1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgnY2xvc2UnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fc2lkZU5hdi5jbG9zZSgpO1xuICAgIH1cblxuICAgIHRvZ2dsZSgpOiBQcm9taXNlPE1hdERyYXdlclRvZ2dsZVJlc3VsdD4ge1xuICAgICAgICBpZiAodGhpcy5fZml4ZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoJ29wZW4nKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fc2lkZU5hdi50b2dnbGUoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlc29sdmVMYXlvdXQoYm9vbDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLl9jb25maWcgPSBib29sID8ge1xuICAgICAgICAgICAgbW9kZTogJ3NpZGUnLFxuICAgICAgICAgICAgb3BlbmVkOiB0cnVlLFxuICAgICAgICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlXG4gICAgICAgIH0gOiB7XG4gICAgICAgICAgICBtb2RlOiAnb3ZlcicsXG4gICAgICAgICAgICBvcGVuZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGlzYWJsZUNsb3NlOiBmYWxzZVxuICAgICAgICB9O1xuICAgICAgICBpZiAoYm9vbCAmJiB0aGlzLl9zaWRlTmF2KSB7XG4gICAgICAgICAgICB0aGlzLl9zaWRlTmF2Lm9wZW4oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHN3aXBlUmlnaHQoKSB7XG4gICAgICAgIGlmICh0aGlzLmJyZWFrcG9pbnQuaXNNYXRjaGVkKCcobWF4LXdpZHRoOiA5NTkuOTlweCknKSkge1xuICAgICAgICAgICAgdGhpcy5fc2lkZU5hdi5vcGVuKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzd2lwZUxlZnQoKSB7XG4gICAgICAgIGlmICh0aGlzLmJyZWFrcG9pbnQuaXNNYXRjaGVkKCcobWF4LXdpZHRoOiA5NTkuOTlweCknKSkge1xuICAgICAgICAgICAgdGhpcy5fc2lkZU5hdi5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25SZXNpemVFdmVudChldmVudDogUmVzaXplRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKGV2ZW50LnJlY3RhbmdsZS53aWR0aCA+IERSQVdFUl9NQVhfV0lEVEgpIHtcbiAgICAgICAgICAgIHRoaXMud2lkdGggPSBEUkFXRVJfTUFYX1dJRFRIO1xuICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LnJlY3RhbmdsZS53aWR0aCA8IERSQVdFUl9ERUZBVUxUX01JTl9XSURUSCkge1xuICAgICAgICAgICAgdGhpcy53aWR0aCA9IERSQVdFUl9ERUZBVUxUX01JTl9XSURUSDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMud2lkdGggPSBldmVudC5yZWN0YW5nbGUud2lkdGg7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy51c2VyUHJlZmVyZW5jZVNlcnZpY2UuX2RyYXdlcldpZHRoQ2hhbmdlZCQubmV4dCh0aGlzLndpZHRoKTtcbiAgICAgICAgdGhpcy5jb250ZW50V2lkdGgubmV4dCh0aGlzLndpZHRoKTtcbiAgICB9XG59XG4iXX0=
|
|
156
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtbmF2aWdhdGlvbi1kcmF3ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzLWNvcmUvc3JjL2xpYi9uYXZpZ2F0aW9uL25hdmlnYXRpb24tZHJhd2VyL2Fic3RyYWN0LW5hdmlnYXRpb24tZHJhd2VyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWdCLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRWxILE9BQU8sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFBcUIsV0FBVyxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFHcEUsT0FBTyxFQUFDLGVBQWUsRUFBZSxNQUFNLE1BQU0sQ0FBQzs7Ozs7QUFJbkQsTUFBTSx3QkFBd0IsR0FBRyxHQUFHLENBQUM7QUFDckMsTUFBTSxnQkFBZ0IsR0FBRyxHQUFHLENBQUM7QUFNN0IsTUFBTSxPQUFnQixpQ0FBaUM7SUEwQm5ELFlBQXNCLFVBQThCLEVBQzlCLElBQW1CLEVBQ25CLHFCQUE0QztRQUY1QyxlQUFVLEdBQVYsVUFBVSxDQUFvQjtRQUM5QixTQUFJLEdBQUosSUFBSSxDQUFlO1FBQ25CLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBdUI7UUFSeEQsWUFBTyxHQUFHO1lBQ2hCLElBQUksRUFBRSxNQUFNO1lBQ1osTUFBTSxFQUFFLElBQUk7WUFDWixZQUFZLEVBQUUsS0FBSztTQUN0QixDQUFDO1FBS0UsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBQ2hELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ25CLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ25CLElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxVQUFVLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxlQUFlLENBQUMsQ0FBQztRQUMzRSxJQUFJLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxXQUFXLEtBQUssU0FBUyxFQUFFO1lBQ3RELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxlQUFlLENBQVMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQzNGO2FBQU07WUFDSCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksZUFBZSxDQUFTLHdCQUF3QixDQUFDLENBQUM7U0FDN0U7SUFDTCxDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBRSxNQUFNLENBQUMsRUFBRTtZQUM3RixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyw4Q0FBOEMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLENBQUM7WUFDcEgsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyx1QkFBdUIsQ0FBQyxFQUFFO2dCQUNwRCxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUMxQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO2FBQ3JDO2lCQUFNO2dCQUNILElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUNoQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO2FBQ3JDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQzFELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFdBQVcsQ0FBQztZQUNwRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkMsQ0FBQyxDQUFDLENBQUM7UUFDSCw0REFBNEQ7SUFDaEUsQ0FBQztJQUVELGVBQWU7UUFDWCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDO0lBQ25ELENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNqQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFRCxJQUFJLE1BQU07UUFDTixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQUksS0FBSztRQUNMLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRUQsSUFDSSxLQUFLLENBQUMsS0FBYztRQUNwQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNwQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsSUFBSTtRQUNBLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRTtZQUN2QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1NBQ3hCO1FBQ0QsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxLQUFLO1FBQ0QsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2IsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ25DO1FBQ0QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFRCxNQUFNO1FBQ0YsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2IsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ2xDO1FBQ0QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFTyxhQUFhLENBQUMsSUFBYTtRQUMvQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDbEIsSUFBSSxFQUFFLE1BQU07WUFDWixNQUFNLEVBQUUsSUFBSTtZQUNaLFlBQVksRUFBRSxJQUFJO1NBQ3JCLENBQUMsQ0FBQyxDQUFDO1lBQ0EsSUFBSSxFQUFFLE1BQU07WUFDWixNQUFNLEVBQUUsS0FBSztZQUNiLFlBQVksRUFBRSxLQUFLO1NBQ3RCLENBQUM7UUFDRixJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDeEI7SUFDTCxDQUFDO0lBRUQsVUFBVTtRQUNOLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsdUJBQXVCLENBQUMsRUFBRTtZQUNwRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1NBQ3hCO0lBQ0wsQ0FBQztJQUVELFNBQVM7UUFDTCxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLHVCQUF1QixDQUFDLEVBQUU7WUFDcEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUN6QjtJQUNMLENBQUM7SUFFRCxhQUFhLENBQUMsS0FBa0I7UUFDNUIsSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssR0FBRyxnQkFBZ0IsRUFBRTtZQUMxQyxJQUFJLENBQUMsS0FBSyxHQUFHLGdCQUFnQixDQUFDO1NBQ2pDO2FBQU0sSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssR0FBRyx3QkFBd0IsRUFBRTtZQUN6RCxJQUFJLENBQUMsS0FBSyxHQUFHLHdCQUF3QixDQUFDO1NBQ3pDO2FBQU07WUFDSCxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDO1NBQ3RDO1FBQ0QsSUFBSSxDQUFDLHFCQUFxQixDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakUsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7OytIQTdJaUIsaUNBQWlDO21IQUFqQyxpQ0FBaUMsZ2JBRnpDLEVBQUU7NEZBRU0saUNBQWlDO2tCQUp0RCxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxnQ0FBZ0M7b0JBQzFDLFFBQVEsRUFBRSxFQUFFO2lCQUNmO3lLQUl5QixRQUFRO3NCQUE3QixLQUFLO3VCQUFDLE1BQU07Z0JBQ2UsSUFBSTtzQkFBL0IsS0FBSzt1QkFBQyxZQUFZO2dCQUNTLGNBQWM7c0JBQXpDLEtBQUs7dUJBQUMsWUFBWTtnQkFDUyxlQUFlO3NCQUExQyxLQUFLO3VCQUFDLFlBQVk7Z0JBQ0gsVUFBVTtzQkFBekIsS0FBSztnQkFFVyxZQUFZO3NCQUE1QixNQUFNO2dCQUV5QixRQUFRO3NCQUF2QyxTQUFTO3VCQUFDLFNBQVM7Z0JBbUVoQixLQUFLO3NCQURSLEtBQUs7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtVc2VyfSBmcm9tICcuLi8uLi91c2VyL21vZGVscy91c2VyJztcbmltcG9ydCAnaGFtbWVyanMnO1xuaW1wb3J0IHtCcmVha3BvaW50T2JzZXJ2ZXIsIEJyZWFrcG9pbnRzfSBmcm9tICdAYW5ndWxhci9jZGsvbGF5b3V0JztcbmltcG9ydCB7TWF0RHJhd2VyVG9nZ2xlUmVzdWx0LCBNYXRTaWRlbmF2fSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zaWRlbmF2JztcbmltcG9ydCB7TG9nZ2VyU2VydmljZX0gZnJvbSAnLi4vLi4vbG9nZ2VyL3NlcnZpY2VzL2xvZ2dlci5zZXJ2aWNlJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtSZXNpemVFdmVudH0gZnJvbSAnYW5ndWxhci1yZXNpemFibGUtZWxlbWVudCc7XG5pbXBvcnQge1VzZXJQcmVmZXJlbmNlU2VydmljZX0gZnJvbSAnLi4vLi4vdXNlci9zZXJ2aWNlcy91c2VyLXByZWZlcmVuY2Uuc2VydmljZSc7XG5cbmNvbnN0IERSQVdFUl9ERUZBVUxUX01JTl9XSURUSCA9IDIwMDtcbmNvbnN0IERSQVdFUl9NQVhfV0lEVEggPSA0NTA7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmNjLWFic3RyYWN0LW5hdmlnYXRpb24tZHJhd2VyJyxcbiAgICB0ZW1wbGF0ZTogJydcbn0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3ROYXZpZ2F0aW9uRHJhd2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuXG5cbiAgICBASW5wdXQoJ3VzZXInKSBwdWJsaWMgc2hvd1VzZXI6IGJvb2xlYW47XG4gICAgQElucHV0KCd1c2VyT2JqZWN0JykgcHVibGljIHVzZXI6IFVzZXI7XG4gICAgQElucHV0KCdxdWlja1BhbmVsJykgcHVibGljIHNob3dRdWlja1BhbmVsOiBib29sZWFuO1xuICAgIEBJbnB1dCgncGFuZWxJdGVtcycpIHB1YmxpYyBxdWlja1BhbmVsSXRlbXM6IEFycmF5PGFueT47IC8vIFF1aWNrUGFuZWxJdGVtXG4gICAgQElucHV0KCkgcHVibGljIG5hdmlnYXRpb246IGJvb2xlYW47XG5cbiAgICBAT3V0cHV0KCkgcHVibGljIG9wZW5lZENoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+O1xuXG4gICAgQFZpZXdDaGlsZCgnc2lkZW5hdicpIHByb3RlY3RlZCBfc2lkZU5hdjogTWF0U2lkZW5hdjtcblxuICAgIHB1YmxpYyBvcGVuZWQ6IGJvb2xlYW47XG4gICAgcHJvdGVjdGVkIF9maXhlZDogYm9vbGVhbjtcbiAgICBwcm90ZWN0ZWQgc3ViQnJlYWtwb2ludDogU3Vic2NyaXB0aW9uO1xuXG4gICAgcHVibGljIHdpZHRoOiBudW1iZXI7XG4gICAgcHVibGljIGNvbnRlbnRXaWR0aDogQmVoYXZpb3JTdWJqZWN0PG51bWJlcj47XG5cbiAgICBwcm90ZWN0ZWQgX2NvbmZpZyA9IHtcbiAgICAgICAgbW9kZTogJ292ZXInLFxuICAgICAgICBvcGVuZWQ6IHRydWUsXG4gICAgICAgIGRpc2FibGVDbG9zZTogZmFsc2VcbiAgICB9O1xuXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIGJyZWFrcG9pbnQ6IEJyZWFrcG9pbnRPYnNlcnZlcixcbiAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2xvZzogTG9nZ2VyU2VydmljZSxcbiAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgdXNlclByZWZlcmVuY2VTZXJ2aWNlOiBVc2VyUHJlZmVyZW5jZVNlcnZpY2UpIHtcbiAgICAgICAgdGhpcy5vcGVuZWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gICAgICAgIHRoaXMuX2ZpeGVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5vcGVuZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLnF1aWNrUGFuZWxJdGVtcyA9IFsnbGFuZ3VhZ2UnLCAnc2V0dGluZ3MnLCAnbG9nb3V0JywgJ2ltcGVyc29uYXRpb24nXTtcbiAgICAgICAgaWYgKHRoaXMudXNlclByZWZlcmVuY2VTZXJ2aWNlLmRyYXdlcldpZHRoICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMuY29udGVudFdpZHRoID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KHRoaXMudXNlclByZWZlcmVuY2VTZXJ2aWNlLmRyYXdlcldpZHRoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY29udGVudFdpZHRoID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KERSQVdFUl9ERUZBVUxUX01JTl9XSURUSCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZXNvbHZlTGF5b3V0KHRoaXMuX2ZpeGVkKTtcbiAgICAgICAgdGhpcy5zdWJCcmVha3BvaW50ID0gdGhpcy5icmVha3BvaW50Lm9ic2VydmUoW0JyZWFrcG9pbnRzLkhhbmRzZXRMYW5kc2NhcGVdKS5zdWJzY3JpYmUoIHJlc3VsdCA9PiB7XG4gICAgICAgICAgICB0aGlzLl9sb2cuaW5mbygnQnJlYWtwb2ludE9ic2VydmVyIG1hdGNoZXMgd2lkdGggb2Ygd2luZG93OiAnICsgdGhpcy5icmVha3BvaW50LmlzTWF0Y2hlZCgnKG1heC13aWR0aDogOTU5Ljk5cHgpJykpO1xuICAgICAgICAgICAgaWYgKHRoaXMuYnJlYWtwb2ludC5pc01hdGNoZWQoJyhtYXgtd2lkdGg6IDk1OS45OXB4KScpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXNvbHZlTGF5b3V0KGZhbHNlKTtcbiAgICAgICAgICAgICAgICB0aGlzLm9wZW5lZCA9IHRoaXMuX2NvbmZpZy5vcGVuZWQ7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMucmVzb2x2ZUxheW91dCh0aGlzLl9maXhlZCk7XG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuZWQgPSB0aGlzLl9jb25maWcub3BlbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5vcGVuZWQgPSB0aGlzLl9jb25maWcub3BlbmVkO1xuICAgICAgICB0aGlzLnVzZXJQcmVmZXJlbmNlU2VydmljZS5wcmVmZXJlbmNlc0NoYW5nZWQkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLndpZHRoID0gdGhpcy51c2VyUHJlZmVyZW5jZVNlcnZpY2UuZHJhd2VyV2lkdGg7XG4gICAgICAgICAgICB0aGlzLmNvbnRlbnRXaWR0aC5uZXh0KHRoaXMud2lkdGgpO1xuICAgICAgICB9KTtcbiAgICAgICAgLy8gdGhpcy53aWR0aCA9IHRoaXMudXNlclByZWZlcmVuY2VTZXJ2aWNlLmdldERyYXdlcldpZHRoKCk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9wZW5lZENoYW5nZSA9IHRoaXMuX3NpZGVOYXYub3BlbmVkQ2hhbmdlO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnN1YkJyZWFrcG9pbnQudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5vcGVuZWRDaGFuZ2UuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBnZXQgY29uZmlnKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29uZmlnO1xuICAgIH1cblxuICAgIGdldCBmaXhlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpeGVkO1xuICAgIH1cblxuICAgIEBJbnB1dCgnZml4ZWQnKVxuICAgIHNldCBmaXhlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9maXhlZCA9IHZhbHVlO1xuICAgICAgICB0aGlzLnJlc29sdmVMYXlvdXQodGhpcy5fZml4ZWQpO1xuICAgIH1cblxuICAgIG9wZW4oKTogUHJvbWlzZTxNYXREcmF3ZXJUb2dnbGVSZXN1bHQ+IHtcbiAgICAgICAgaWYgKCF0aGlzLl9zaWRlTmF2Lm9wZW5lZCkge1xuICAgICAgICAgICAgdGhpcy5fc2lkZU5hdi5vcGVuKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgnb3BlbicpO1xuICAgIH1cblxuICAgIGNsb3NlKCk6IFByb21pc2U8TWF0RHJhd2VyVG9nZ2xlUmVzdWx0PiB7XG4gICAgICAgIGlmICh0aGlzLl9maXhlZCkge1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgnY2xvc2UnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fc2lkZU5hdi5jbG9zZSgpO1xuICAgIH1cblxuICAgIHRvZ2dsZSgpOiBQcm9taXNlPE1hdERyYXdlclRvZ2dsZVJlc3VsdD4ge1xuICAgICAgICBpZiAodGhpcy5fZml4ZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoJ29wZW4nKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fc2lkZU5hdi50b2dnbGUoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlc29sdmVMYXlvdXQoYm9vbDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLl9jb25maWcgPSBib29sID8ge1xuICAgICAgICAgICAgbW9kZTogJ3NpZGUnLFxuICAgICAgICAgICAgb3BlbmVkOiB0cnVlLFxuICAgICAgICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlXG4gICAgICAgIH0gOiB7XG4gICAgICAgICAgICBtb2RlOiAnb3ZlcicsXG4gICAgICAgICAgICBvcGVuZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZGlzYWJsZUNsb3NlOiBmYWxzZVxuICAgICAgICB9O1xuICAgICAgICBpZiAoYm9vbCAmJiB0aGlzLl9zaWRlTmF2KSB7XG4gICAgICAgICAgICB0aGlzLl9zaWRlTmF2Lm9wZW4oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHN3aXBlUmlnaHQoKSB7XG4gICAgICAgIGlmICh0aGlzLmJyZWFrcG9pbnQuaXNNYXRjaGVkKCcobWF4LXdpZHRoOiA5NTkuOTlweCknKSkge1xuICAgICAgICAgICAgdGhpcy5fc2lkZU5hdi5vcGVuKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzd2lwZUxlZnQoKSB7XG4gICAgICAgIGlmICh0aGlzLmJyZWFrcG9pbnQuaXNNYXRjaGVkKCcobWF4LXdpZHRoOiA5NTkuOTlweCknKSkge1xuICAgICAgICAgICAgdGhpcy5fc2lkZU5hdi5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25SZXNpemVFdmVudChldmVudDogUmVzaXplRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKGV2ZW50LnJlY3RhbmdsZS53aWR0aCA+IERSQVdFUl9NQVhfV0lEVEgpIHtcbiAgICAgICAgICAgIHRoaXMud2lkdGggPSBEUkFXRVJfTUFYX1dJRFRIO1xuICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LnJlY3RhbmdsZS53aWR0aCA8IERSQVdFUl9ERUZBVUxUX01JTl9XSURUSCkge1xuICAgICAgICAgICAgdGhpcy53aWR0aCA9IERSQVdFUl9ERUZBVUxUX01JTl9XSURUSDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMud2lkdGggPSBldmVudC5yZWN0YW5nbGUud2lkdGg7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy51c2VyUHJlZmVyZW5jZVNlcnZpY2UuX2RyYXdlcldpZHRoQ2hhbmdlZCQubmV4dCh0aGlzLndpZHRoKTtcbiAgICAgICAgdGhpcy5jb250ZW50V2lkdGgubmV4dCh0aGlzLndpZHRoKTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -33,4 +33,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
|
|
|
33
33
|
}], ctorParameters: function () { return [{ type: i1.LanguageService }, { type: i2.PaperViewService }]; }, propDecorators: { items: [{
|
|
34
34
|
type: Input
|
|
35
35
|
}] } });
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtcXVpY2stcGFuZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzLWNvcmUvc3JjL2xpYi9uYXZpZ2F0aW9uL3F1aWNrLXBhbmVsL2NvbXBvbmVudHMvYWJzdHJhY3QtcXVpY2stcGFuZWwuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFTLE1BQU0sZUFBZSxDQUFDO0FBR3ZELE9BQU8sRUFBQywwQ0FBMEMsRUFBQyxNQUFNLHdFQUF3RSxDQUFDOzs7O0FBUWxJLE1BQU0sT0FBZ0IsMkJBQTRCLFNBQVEsMENBQTBDO0lBSWhHLFlBQXNCLE9BQXdCLEVBQVksVUFBNEI7UUFDbEYsS0FBSyxFQUFFLENBQUM7UUFEVSxZQUFPLEdBQVAsT0FBTyxDQUFpQjtRQUFZLGVBQVUsR0FBVixVQUFVLENBQWtCO0lBRXRGLENBQUM7SUFFRCxRQUFRO1FBQ0osS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxPQUFPO1FBQ0gsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFRCxZQUFZO1FBQ1IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsV0FBVztRQUNQLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUM7SUFDckMsQ0FBQzs7eUhBdEJpQiwyQkFBMkI7NkdBQTNCLDJCQUEyQixtSEFGbkMsRUFBRTs0RkFFTSwyQkFBMkI7a0JBSmhELFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLDBCQUEwQjtvQkFDcEMsUUFBUSxFQUFFLEVBQUU7aUJBQ2Y7cUlBR21CLEtBQUs7c0JBQXBCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSW5wdXQsIE9uSW5pdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0xhbmd1YWdlU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vdHJhbnNsYXRlL2xhbmd1YWdlLnNlcnZpY2UnO1xuaW1wb3J0IHtQYXBlclZpZXdTZXJ2aWNlfSBmcm9tICcuL3BhcGVyLXZpZXcuc2VydmljZSc7XG5pbXBvcnQge0Fic3RyYWN0TmF2aWdhdGlvblJlc2l6YWJsZURyYXdlckNvbXBvbmVudH0gZnJvbSAnLi4vLi4vbmF2aWdhdGlvbi1kcmF3ZXIvYWJzdHJhY3QtbmF2aWdhdGlvbi1yZXNpemFibGUtZHJhd2VyLmNvbXBvbmVudCc7XG5cbmV4cG9ydCB0eXBlIFF1aWNrUGFuZWxJdGVtID0gJ2xhbmd1YWdlJyB8ICdzZXR0aW5ncycgfCAnbG9nb3V0JyB8ICdpbXBlcnNvbmF0aW9uJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduY2MtYWJzdHJhY3QtcXVpY2stcGFuZWwnLFxuICAgIHRlbXBsYXRlOiAnJ1xufSlcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdFF1aWNrUGFuZWxDb21wb25lbnQgZXh0ZW5kcyBBYnN0cmFjdE5hdmlnYXRpb25SZXNpemFibGVEcmF3ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gICAgQElucHV0KCkgcHVibGljIGl0ZW1zOiBBcnJheTxRdWlja1BhbmVsSXRlbT47XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgX3NlbGVjdDogTGFuZ3VhZ2VTZXJ2aWNlLCBwcm90ZWN0ZWQgX3BhcGVyVmlldzogUGFwZXJWaWV3U2VydmljZSkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgIH1cblxuICAgIGdldExhbmcoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdC5nZXRMYW5ndWFnZSgpO1xuICAgIH1cblxuICAgIHNldFBhcGVyVmlldygpIHtcbiAgICAgICAgdGhpcy5fcGFwZXJWaWV3LnBhcGVyVmlldyA9ICF0aGlzLl9wYXBlclZpZXcucGFwZXJWaWV3O1xuICAgIH1cblxuICAgIGlzUGFwZXJWaWV3KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGFwZXJWaWV3LnBhcGVyVmlldztcbiAgICB9XG59XG4iXX0=
|