@abp/ng.core 4.4.0 → 4.4.4
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/abp-ng.core.metadata.json +1 -1
- package/bundles/abp-ng.core.umd.js +115 -118
- package/bundles/abp-ng.core.umd.js.map +1 -1
- package/bundles/abp-ng.core.umd.min.js +2 -2
- package/bundles/abp-ng.core.umd.min.js.map +1 -1
- package/esm2015/lib/components/dynamic-layout.component.js +1 -2
- package/esm2015/lib/services/config-state.service.js +16 -3
- package/esm2015/lib/services/localization.service.js +6 -13
- package/esm2015/lib/states/config.state.js +4 -12
- package/esm2015/lib/strategies/auth-flow.strategy.js +9 -14
- package/esm2015/lib/utils/auth-utils.js +2 -5
- package/esm2015/lib/utils/initial-utils.js +4 -6
- package/esm2015/lib/utils/multi-tenancy-utils.js +7 -2
- package/fesm2015/abp-ng.core.js +110 -112
- package/fesm2015/abp-ng.core.js.map +1 -1
- package/lib/services/config-state.service.d.ts +162 -1
- package/lib/services/localization.service.d.ts +1 -3
- package/lib/states/config.state.d.ts +157 -7
- package/lib/strategies/auth-flow.strategy.d.ts +312 -4
- package/lib/utils/auth-utils.d.ts +156 -1
- package/lib/utils/initial-utils.d.ts +156 -1
- package/package.json +2 -2
|
@@ -24,7 +24,6 @@ export class DynamicLayoutComponent {
|
|
|
24
24
|
this.route = injector.get(ActivatedRoute);
|
|
25
25
|
this.router = injector.get(Router);
|
|
26
26
|
this.routes = injector.get(RoutesService);
|
|
27
|
-
this.getLayout();
|
|
28
27
|
this.checkLayoutOnNavigationEnd();
|
|
29
28
|
this.listenToLanguageChange();
|
|
30
29
|
}
|
|
@@ -85,4 +84,4 @@ DynamicLayoutComponent.ctorParameters = () => [
|
|
|
85
84
|
{ type: RouterEvents },
|
|
86
85
|
{ type: DynamicLayoutComponent, decorators: [{ type: Optional }, { type: SkipSelf }] }
|
|
87
86
|
];
|
|
88
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
87
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1sYXlvdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL2NvbXBvbmVudHMvZHluYW1pYy1sYXlvdXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQVEsTUFBTSxlQUFlLENBQUM7QUFDOUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUl6RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUMxRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDakUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFjL0QsTUFBTSxPQUFPLHNCQUFzQjtJQWlCakMsWUFDRSxRQUFrQixFQUNWLG1CQUF3QyxFQUN4QyxxQkFBbUQsRUFDbkQsWUFBaUMsRUFDakMsWUFBMEIsRUFDVixzQkFBOEM7UUFKOUQsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4QywwQkFBcUIsR0FBckIscUJBQXFCLENBQThCO1FBQ25ELGlCQUFZLEdBQVosWUFBWSxDQUFxQjtRQUNqQyxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQWxCcEMsMEVBQTBFO1FBQ2pFLFlBQU8sR0FBRyxJQUFJLEdBQUcsQ0FBQztZQUN6QixDQUFDLGFBQWEsRUFBRSxrQ0FBa0MsQ0FBQztZQUNuRCxDQUFDLFNBQVMsRUFBRSw4QkFB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Y2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdG9yLCBPcHRpb25hbCwgU2tpcFNlbGYsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgZUxheW91dFR5cGUgfSBmcm9tICcuLi9lbnVtcy9jb21tb24nO1xuaW1wb3J0IHsgQUJQIH0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCB7IFJlcGxhY2VhYmxlQ29tcG9uZW50cyB9IGZyb20gJy4uL21vZGVscy9yZXBsYWNlYWJsZS1jb21wb25lbnRzJztcbmltcG9ydCB7IExvY2FsaXphdGlvblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9sb2NhbGl6YXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBSZXBsYWNlYWJsZUNvbXBvbmVudHNTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvcmVwbGFjZWFibGUtY29tcG9uZW50cy5zZXJ2aWNlJztcbmltcG9ydCB7IFJvdXRlckV2ZW50cyB9IGZyb20gJy4uL3NlcnZpY2VzL3JvdXRlci1ldmVudHMuc2VydmljZSc7XG5pbXBvcnQgeyBSb3V0ZXNTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvcm91dGVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3N1YnNjcmlwdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IGZpbmRSb3V0ZSwgZ2V0Um91dGVQYXRoIH0gZnJvbSAnLi4vdXRpbHMvcm91dGUtdXRpbHMnO1xuaW1wb3J0IHsgVHJlZU5vZGUgfSBmcm9tICcuLi91dGlscy90cmVlLXV0aWxzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYWJwLWR5bmFtaWMtbGF5b3V0JyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibGF5b3V0ID8gY29tcG9uZW50T3V0bGV0IDogcm91dGVyT3V0bGV0XCI+PC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlICNyb3V0ZXJPdXRsZXQ+PHJvdXRlci1vdXRsZXQ+PC9yb3V0ZXItb3V0bGV0PjwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNjb21wb25lbnRPdXRsZXRcbiAgICAgID48bmctY29udGFpbmVyICpuZ0lmPVwiaXNMYXlvdXRWaXNpYmxlXCIgW25nQ29tcG9uZW50T3V0bGV0XT1cImxheW91dFwiPjwvbmctY29udGFpbmVyXG4gICAgPjwvbmctdGVtcGxhdGU+XG4gIGAsXG4gIHByb3ZpZGVyczogW1N1YnNjcmlwdGlvblNlcnZpY2VdLFxufSlcbmV4cG9ydCBjbGFzcyBEeW5hbWljTGF5b3V0Q29tcG9uZW50IHtcbiAgbGF5b3V0OiBUeXBlPGFueT47XG4gIGxheW91dEtleTogZUxheW91dFR5cGU7XG5cbiAgLy8gVE9ETzogQ29uc2lkZXIgYSBzaGFyZWQgZW51bSAoZVRoZW1lU2hhcmVkQ29tcG9uZW50cykgZm9yIGtub3duIGxheW91dHNcbiAgcmVhZG9ubHkgbGF5b3V0cyA9IG5ldyBNYXAoW1xuICAgIFsnYXBwbGljYXRpb24nLCAnVGhlbWUuQXBwbGljYXRpb25MYXlvdXRDb21wb25lbnQnXSxcbiAgICBbJ2FjY291bnQnLCAnVGhlbWUuQWNjb3VudExheW91dENvbXBvbmVudCddLFxuICAgIFsnZW1wdHknLCAnVGhlbWUuRW1wdHlMYXlvdXRDb21wb25lbnQnXSxcbiAgXSk7XG5cbiAgaXNMYXlvdXRWaXNpYmxlID0gdHJ1ZTtcblxuICBwcml2YXRlIHJvdXRlcjogUm91dGVyO1xuICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZTtcbiAgcHJpdmF0ZSByb3V0ZXM6IFJvdXRlc1NlcnZpY2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByaXZhdGUgbG9jYWxpemF0aW9uU2VydmljZTogTG9jYWxpemF0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIHJlcGxhY2VhYmxlQ29tcG9uZW50czogUmVwbGFjZWFibGVDb21wb25lbnRzU2VydmljZSxcbiAgICBwcml2YXRlIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlckV2ZW50czogUm91dGVyRXZlbnRzLFxuICAgIEBPcHRpb25hbCgpIEBTa2lwU2VsZigpIGR5bmFtaWNMYXlvdXRDb21wb25lbnQ6IER5bmFtaWNMYXlvdXRDb21wb25lbnQsXG4gICkge1xuICAgIGlmIChkeW5hbWljTGF5b3V0Q29tcG9uZW50KSByZXR1cm47XG4gICAgdGhpcy5yb3V0ZSA9IGluamVjdG9yLmdldChBY3RpdmF0ZWRSb3V0ZSk7XG4gICAgdGhpcy5yb3V0ZXIgPSBpbmplY3Rvci5nZXQoUm91dGVyKTtcbiAgICB0aGlzLnJvdXRlcyA9IGluamVjdG9yLmdldChSb3V0ZXNTZXJ2aWNlKTtcblxuICAgIHRoaXMuY2hlY2tMYXlvdXRPbk5hdmlnYXRpb25FbmQoKTtcbiAgICB0aGlzLmxpc3RlblRvTGFuZ3VhZ2VDaGFuZ2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tMYXlvdXRPbk5hdmlnYXRpb25FbmQoKSB7XG4gICAgY29uc3QgbmF2aWdhdGlvbkVuZCQgPSB0aGlzLnJvdXRlckV2ZW50cy5nZXROYXZpZ2F0aW9uRXZlbnRzKCdFbmQnKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi5hZGRPbmUobmF2aWdhdGlvbkVuZCQsICgpID0+IHRoaXMuZ2V0TGF5b3V0KCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRMYXlvdXQoKSB7XG4gICAgbGV0IGV4cGVjdGVkTGF5b3V0ID0gKHRoaXMucm91dGUuc25hcHNob3QuZGF0YSB8fCB7fSkubGF5b3V0O1xuXG4gICAgaWYgKCFleHBlY3RlZExheW91dCkge1xuICAgICAgbGV0IG5vZGUgPSBmaW5kUm91dGUodGhpcy5yb3V0ZXMsIGdldFJvdXRlUGF0aCh0aGlzLnJvdXRlcikpO1xuICAgICAgbm9kZSA9IHsgcGFyZW50OiBub2RlIH0gYXMgVHJlZU5vZGU8QUJQLlJvdXRlPjtcblxuICAgICAgd2hpbGUgKG5vZGUucGFyZW50KSB7XG4gICAgICAgIG5vZGUgPSBub2RlLnBhcmVudDtcblxuICAgICAgICBpZiAobm9kZS5sYXlvdXQpIHtcbiAgICAgICAgICBleHBlY3RlZExheW91dCA9IG5vZGUubGF5b3V0O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFleHBlY3RlZExheW91dCkgZXhwZWN0ZWRMYXlvdXQgPSBlTGF5b3V0VHlwZS5lbXB0eTtcblxuICAgIGlmICh0aGlzLmxheW91dEtleSA9PT0gZXhwZWN0ZWRMYXlvdXQpIHJldHVybjtcblxuICAgIGNvbnN0IGtleSA9IHRoaXMubGF5b3V0cy5nZXQoZXhwZWN0ZWRMYXlvdXQpO1xuICAgIHRoaXMubGF5b3V0ID0gdGhpcy5nZXRDb21wb25lbnQoa2V5KT8uY29tcG9uZW50O1xuICAgIHRoaXMubGF5b3V0S2V5ID0gZXhwZWN0ZWRMYXlvdXQ7XG4gIH1cblxuICBwcml2YXRlIGxpc3RlblRvTGFuZ3VhZ2VDaGFuZ2UoKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkT25lKHRoaXMubG9jYWxpemF0aW9uU2VydmljZS5sYW5ndWFnZUNoYW5nZSQsICgpID0+IHtcbiAgICAgIHRoaXMuaXNMYXlvdXRWaXNpYmxlID0gZmFsc2U7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+ICh0aGlzLmlzTGF5b3V0VmlzaWJsZSA9IHRydWUpLCAwKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29tcG9uZW50KGtleTogc3RyaW5nKTogUmVwbGFjZWFibGVDb21wb25lbnRzLlJlcGxhY2VhYmxlQ29tcG9uZW50IHtcbiAgICByZXR1cm4gdGhpcy5yZXBsYWNlYWJsZUNvbXBvbmVudHMuZ2V0KGtleSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
|
-
import {
|
|
2
|
+
import { Subject } from 'rxjs';
|
|
3
|
+
import { map, take, switchMap } from 'rxjs/operators';
|
|
3
4
|
import { InternalStore } from '../utils/internal-store-utils';
|
|
4
5
|
import { AbpApplicationConfigurationService } from '../proxy/volo/abp/asp-net-core/mvc/application-configurations/abp-application-configuration.service';
|
|
5
6
|
import * as i0 from "@angular/core";
|
|
@@ -8,15 +9,27 @@ export class ConfigStateService {
|
|
|
8
9
|
constructor(abpConfigService) {
|
|
9
10
|
this.abpConfigService = abpConfigService;
|
|
10
11
|
this.store = new InternalStore({});
|
|
12
|
+
this.updateSubject = new Subject();
|
|
13
|
+
this.initUpdateStream();
|
|
11
14
|
}
|
|
12
15
|
get createOnUpdateStream() {
|
|
13
16
|
return this.store.sliceUpdate;
|
|
14
17
|
}
|
|
18
|
+
initUpdateStream() {
|
|
19
|
+
this.updateSubject
|
|
20
|
+
.pipe(switchMap(() => this.abpConfigService.get()))
|
|
21
|
+
.subscribe(res => this.setState(res));
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* @deprecated do not use this method directly, instead call refreshAppState
|
|
25
|
+
* This method will be private in v5.0
|
|
26
|
+
*/
|
|
15
27
|
setState(state) {
|
|
16
28
|
this.store.set(state);
|
|
17
29
|
}
|
|
18
30
|
refreshAppState() {
|
|
19
|
-
|
|
31
|
+
this.updateSubject.next();
|
|
32
|
+
return this.createOnUpdateStream(state => state).pipe(take(1));
|
|
20
33
|
}
|
|
21
34
|
getOne$(key) {
|
|
22
35
|
return this.store.sliceState(state => state[key]);
|
|
@@ -122,4 +135,4 @@ function splitKeys(keys) {
|
|
|
122
135
|
}
|
|
123
136
|
return keys;
|
|
124
137
|
}
|
|
125
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLXN0YXRlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvc2VydmljZXMvY29uZmlnLXN0YXRlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxxR0FBcUcsQ0FBQzs7O0FBS3pKLE1BQU0sT0FBTyxrQkFBa0I7SUFPN0IsWUFBb0IsZ0JBQW9EO1FBQXBELHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBb0M7UUFOdkQsVUFBSyxHQUFHLElBQUksYUFBYSxDQUFDLEVBQWlDLENBQUMsQ0FBQztJQU1ILENBQUM7SUFKNUUsSUFBSSxvQkFBb0I7UUFDdEIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQztJQUNoQyxDQUFDO0lBSUQsUUFBUSxDQUFDLEtBQWtDO1FBQ3pDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxlQUFlO1FBQ2IsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFFRCxPQUFPLENBQUMsR0FBVztRQUNqQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7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T0FBTztnQkFBRSxPQUFPLFFBQVEsQ0FBQztZQUU5QixNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUVqRixPQUFPLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUU7Z0JBQ25DLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3pCLE9BQU8sR0FBRyxDQUFDO1lBQ2IsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ1QsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNOLENBQUM7Ozs7WUE3SEYsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7WUFKUSxrQ0FBa0M7O0FBa0kzQyxTQUFTLFNBQVMsQ0FBQyxJQUF1QjtJQUN4QyxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRTtRQUM1QixJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztLQUN4QjtJQUVELElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ3hCLE1BQU0sSUFBSSxLQUFLLENBQUMsdURBQXVELENBQUMsQ0FBQztLQUMxRTtJQUVELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQXBwbGljYXRpb25Db25maWd1cmF0aW9uRHRvIH0gZnJvbSAnLi4vcHJveHkvdm9sby9hYnAvYXNwLW5ldC1jb3JlL212Yy9hcHBsaWNhdGlvbi1jb25maWd1cmF0aW9ucy9tb2RlbHMnO1xuaW1wb3J0IHsgSW50ZXJuYWxTdG9yZSB9IGZyb20gJy4uL3V0aWxzL2ludGVybmFsLXN0b3JlLXV0aWxzJztcbmltcG9ydCB7IEFicEFwcGxpY2F0aW9uQ29uZmlndXJhdGlvblNlcnZpY2UgfSBmcm9tICcuLi9wcm94eS92b2xvL2FicC9hc3AtbmV0LWNvcmUvbXZjL2FwcGxpY2F0aW9uLWNvbmZpZ3VyYXRpb25zL2FicC1hcHBsaWNhdGlvbi1jb25maWd1cmF0aW9uLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQ29uZmlnU3RhdGVTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBzdG9yZSA9IG5ldyBJbnRlcm5hbFN0b3JlKHt9IGFzIEFwcGxpY2F0aW9uQ29uZmlndXJhdGlvbkR0byk7XG5cbiAgZ2V0IGNyZWF0ZU9uVXBkYXRlU3RyZWFtKCkge1xuICAgIHJldHVybiB0aGlzLnN0b3JlLnNsaWNlVXBkYXRlO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBhYnBDb25maWdTZXJ2aWNlOiBBYnBBcHBsaWNhdGlvbkNvbmZpZ3VyYXRpb25TZXJ2aWNlKSB7fVxuXG4gIHNldFN0YXRlKHN0YXRlOiBBcHBsaWNhdGlvbkNvbmZpZ3VyYXRpb25EdG8pIHtcbiAgICB0aGlzLnN0b3JlLnNldChzdGF0ZSk7XG4gIH1cblxuICByZWZyZXNoQXBwU3RhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuYWJwQ29uZmlnU2VydmljZS5nZXQoKS5waXBlKHRhcChyZXMgPT4gdGhpcy5zZXRTdGF0ZShyZXMpKSk7XG4gIH1cblxuICBnZXRPbmUkKGtleTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuc2xpY2VTdGF0ZShzdGF0ZSA9PiBzdGF0ZVtrZXldKTtcbiAgfVxuXG4gIGdldE9uZShrZXk6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLnN0b3JlLnN0YXRlW2tleV07XG4gIH1cblxuICBnZXRBbGwkKCk6IE9ic2VydmFibGU8QXBwbGljYXRpb25Db25maWd1cmF0aW9uRHRvPiB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuc2xpY2VTdGF0ZShzdGF0ZSA9PiBzdGF0ZSk7XG4gIH1cblxuICBnZXRBbGwoKTogQXBwbGljYXRpb25Db25maWd1cmF0aW9uRHRvIHtcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5zdGF0ZTtcbiAgfVxuXG4gIGdldERlZXAkKGtleXM6IHN0cmluZ1tdIHwgc3RyaW5nKSB7XG4gICAga2V5cyA9IHNwbGl0S2V5cyhrZXlzKTtcblxuICAgIHJldHVybiB0aGlzLnN0b3JlXG4gICAgICAuc2xpY2VTdGF0ZShzdGF0ZSA9PiBzdGF0ZSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoc3RhdGUgPT4ge1xuICAgICAgICAgIHJldHVybiAoa2V5cyBhcyBzdHJpbmdbXSkucmVkdWNlKChhY2MsIHZhbCkgPT4ge1xuICAgICAgICAgICAgaWYgKGFjYykge1xuICAgICAgICAgICAgICByZXR1cm4gYWNjW3ZhbF07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgfSwgc3RhdGUpO1xuICAgICAgICB9KSxcbiAgICAgICk7XG4gIH1cblxuICBnZXREZWVwKGtleXM6IHN0cmluZ1tdIHwgc3RyaW5nKSB7XG4gICAga2V5cyA9IHNwbGl0S2V5cyhrZXlzKTtcblxuICAgIHJldHVybiAoa2V5cyBhcyBzdHJpbmdbXSkucmVkdWNlKChhY2MsIHZhbCkgPT4ge1xuICAgICAgaWYgKGFjYykge1xuICAgICAgICByZXR1cm4gYWNjW3ZhbF07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfSwgdGhpcy5zdG9yZS5zdGF0ZSk7XG4gIH1cblxuICBnZXRGZWF0dXJlKGtleTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuc3RhdGUuZmVhdHVyZXM/LnZhbHVlcz8uW2tleV07XG4gIH1cblxuICBnZXRGZWF0dXJlJChrZXk6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLnN0b3JlLnNsaWNlU3RhdGUoc3RhdGUgPT4gc3RhdGUuZmVhdHVyZXM/LnZhbHVlcz8uW2tleV0pO1xuICB9XG5cbiAgZ2V0RmVhdHVyZXMoa2V5czogc3RyaW5nW10pIHtcbiAgICBjb25zdCB7IGZlYXR1cmVzIH0gPSB0aGlzLnN0b3JlLnN0YXRlO1xuICAgIGlmICghZmVhdHVyZXMpIHJldHVybjtcblxuICAgIHJldHVybiBrZXlzLnJlZHVjZSgoYWNjLCBrZXkpID0+ICh7IC4uLmFjYywgW2tleV06IGZlYXR1cmVzLnZhbHVlc1trZXldIH0pLCB7fSk7XG4gIH1cblxuICBnZXRGZWF0dXJlcyQoa2V5czogc3RyaW5nW10pIHtcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5zbGljZVN0YXRlKCh7IGZlYXR1cmVzIH0pID0+IHtcbiAgICAgIGlmICghZmVhdHVyZXM/LnZhbHVlcykgcmV0dXJuO1xuXG4gICAgICByZXR1cm4ga2V5cy5yZWR1Y2UoKGFjYywga2V5KSA9PiAoeyAuLi5hY2MsIFtrZXldOiBmZWF0dXJlcy52YWx1ZXNba2V5XSB9KSwge30pO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0U2V0dGluZyhrZXk6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLnN0b3JlLnN0YXRlLnNldHRpbmc/LnZhbHVlcz8uW2tleV07XG4gIH1cblxuICBnZXRTZXR0aW5nJChrZXk6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLnN0b3JlLnNsaWNlU3RhdGUoc3RhdGUgPT4gc3RhdGUuc2V0dGluZz8udmFsdWVzPy5ba2V5XSk7XG4gIH1cblxuICBnZXRTZXR0aW5ncyhrZXl3b3JkPzogc3RyaW5nKSB7XG4gICAgY29uc3Qgc2V0dGluZ3MgPSB0aGlzLnN0b3JlLnN0YXRlLnNldHRpbmc/LnZhbHVlcyB8fCB7fTtcblxuICAgIGlmICgha2V5d29yZCkgcmV0dXJuIHNldHRpbmdzO1xuXG4gICAgY29uc3Qga2V5c0ZvdW5kID0gT2JqZWN0LmtleXMoc2V0dGluZ3MpLmZpbHRlcihrZXkgPT4ga2V5LmluZGV4T2Yoa2V5d29yZCkgPiAtMSk7XG5cbiAgICByZXR1cm4ga2V5c0ZvdW5kLnJlZHVjZSgoYWNjLCBrZXkpID0+IHtcbiAgICAgIGFjY1trZXldID0gc2V0dGluZ3Nba2V5XTtcbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwge30pO1xuICB9XG5cbiAgZ2V0U2V0dGluZ3MkKGtleXdvcmQ/OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5zdG9yZVxuICAgICAgLnNsaWNlU3RhdGUoc3RhdGUgPT4gc3RhdGUuc2V0dGluZz8udmFsdWVzKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgoc2V0dGluZ3MgPSB7fSkgPT4ge1xuICAgICAgICAgIGlmICgha2V5d29yZCkgcmV0dXJuIHNldHRpbmdzO1xuXG4gICAgICAgICAgY29uc3Qga2V5c0ZvdW5kID0gT2JqZWN0LmtleXMoc2V0dGluZ3MpLmZpbHRlcihrZXkgPT4ga2V5LmluZGV4T2Yoa2V5d29yZCkgPiAtMSk7XG5cbiAgICAgICAgICByZXR1cm4ga2V5c0ZvdW5kLnJlZHVjZSgoYWNjLCBrZXkpID0+IHtcbiAgICAgICAgICAgIGFjY1trZXldID0gc2V0dGluZ3Nba2V5XTtcbiAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgfSwge30pO1xuICAgICAgICB9KSxcbiAgICAgICk7XG4gIH1cbn1cblxuZnVuY3Rpb24gc3BsaXRLZXlzKGtleXM6IHN0cmluZ1tdIHwgc3RyaW5nKTogc3RyaW5nW10ge1xuICBpZiAodHlwZW9mIGtleXMgPT09ICdzdHJpbmcnKSB7XG4gICAga2V5cyA9IGtleXMuc3BsaXQoJy4nKTtcbiAgfVxuXG4gIGlmICghQXJyYXkuaXNBcnJheShrZXlzKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignVGhlIGFyZ3VtZW50IG11c3QgYmUgYSBkb3Qgc3RyaW5nIG9yIGFuIHN0cmluZyBhcnJheS4nKTtcbiAgfVxuXG4gIHJldHVybiBrZXlzO1xufVxuIl19
|
|
138
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLXN0YXRlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvc2VydmljZXMvY29uZmlnLXN0YXRlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXRELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxxR0FBcUcsQ0FBQzs7O0FBS3pKLE1BQU0sT0FBTyxrQkFBa0I7SUFTN0IsWUFBb0IsZ0JBQW9EO1FBQXBELHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBb0M7UUFSdkQsVUFBSyxHQUFHLElBQUksYUFBYSxDQUFDLEVBQWlDLENBQUMsQ0FBQztRQU10RSxrQkFBYSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFHcEMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDMUIsQ0FBQztJQVJELElBQUksb0JBQW9CO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUM7SUFDaEMsQ0FBQztJQVFPLGdCQUFnQjtRQUN0QixJQUFJLENBQUMsYUFBYTthQUNmLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7YUFDbEQsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxRQUFRLENB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QUN4QjtJQUVELElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ3hCLE1BQU0sSUFBSSxLQUFLLENBQUMsdURBQXVELENBQUMsQ0FBQztLQUMxRTtJQUVELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgdGFrZSwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQXBwbGljYXRpb25Db25maWd1cmF0aW9uRHRvIH0gZnJvbSAnLi4vcHJveHkvdm9sby9hYnAvYXNwLW5ldC1jb3JlL212Yy9hcHBsaWNhdGlvbi1jb25maWd1cmF0aW9ucy9tb2RlbHMnO1xuaW1wb3J0IHsgSW50ZXJuYWxTdG9yZSB9IGZyb20gJy4uL3V0aWxzL2ludGVybmFsLXN0b3JlLXV0aWxzJztcbmltcG9ydCB7IEFicEFwcGxpY2F0aW9uQ29uZmlndXJhdGlvblNlcnZpY2UgfSBmcm9tICcuLi9wcm94eS92b2xvL2FicC9hc3AtbmV0LWNvcmUvbXZjL2FwcGxpY2F0aW9uLWNvbmZpZ3VyYXRpb25zL2FicC1hcHBsaWNhdGlvbi1jb25maWd1cmF0aW9uLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQ29uZmlnU3RhdGVTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBzdG9yZSA9IG5ldyBJbnRlcm5hbFN0b3JlKHt9IGFzIEFwcGxpY2F0aW9uQ29uZmlndXJhdGlvbkR0byk7XG5cbiAgZ2V0IGNyZWF0ZU9uVXBkYXRlU3RyZWFtKCkge1xuICAgIHJldHVybiB0aGlzLnN0b3JlLnNsaWNlVXBkYXRlO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVTdWJqZWN0ID0gbmV3IFN1YmplY3QoKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGFicENvbmZpZ1NlcnZpY2U6IEFicEFwcGxpY2F0aW9uQ29uZmlndXJhdGlvblNlcnZpY2UpIHtcbiAgICB0aGlzLmluaXRVcGRhdGVTdHJlYW0oKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdFVwZGF0ZVN0cmVhbSgpIHtcbiAgICB0aGlzLnVwZGF0ZVN1YmplY3RcbiAgICAgIC5waXBlKHN3aXRjaE1hcCgoKSA9PiB0aGlzLmFicENvbmZpZ1NlcnZpY2UuZ2V0KCkpKVxuICAgICAgLnN1YnNjcmliZShyZXMgPT4gdGhpcy5zZXRTdGF0ZShyZXMpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBkbyBub3QgdXNlIHRoaXMgbWV0aG9kIGRpcmVjdGx5LCBpbnN0ZWFkIGNhbGwgcmVmcmVzaEFwcFN0YXRlXG4gICAqIFRoaXMgbWV0aG9kIHdpbGwgYmUgcHJpdmF0ZSBpbiB2NS4wXG4gICAqL1xuICBzZXRTdGF0ZShzdGF0ZTogQXBwbGljYXRpb25Db25maWd1cmF0aW9uRHRvKSB7XG4gICAgdGhpcy5zdG9yZS5zZXQoc3RhdGUpO1xuICB9XG5cbiAgcmVmcmVzaEFwcFN0YXRlKCkge1xuICAgIHRoaXMudXBkYXRlU3ViamVjdC5uZXh0KCk7XG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlT25VcGRhdGVTdHJlYW0oc3RhdGUgPT4gc3RhdGUpLnBpcGUodGFrZSgxKSk7XG4gIH1cblxuICBnZXRPbmUkKGtleTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuc2xpY2VTdGF0ZShzdGF0ZSA9PiBzdGF0ZVtrZXldKTtcbiAgfVxuXG4gIGdldE9uZShrZXk6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLnN0b3JlLnN0YXRlW2tleV07XG4gIH1cblxuICBnZXRBbGwkKCk6IE9ic2VydmFibGU8QXBwbGljYXRpb25Db25maWd1cmF0aW9uRHRvPiB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuc2xpY2VTdGF0ZShzdGF0ZSA9PiBzdGF0ZSk7XG4gIH1cblxuICBnZXRBbGwoKTogQXBwbGljYXRpb25Db25maWd1cmF0aW9uRHRvIHtcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5zdGF0ZTtcbiAgfVxuXG4gIGdldERlZXAkKGtleXM6IHN0cmluZ1tdIHwgc3RyaW5nKSB7XG4gICAga2V5cyA9IHNwbGl0S2V5cyhrZXlzKTtcblxuICAgIHJldHVybiB0aGlzLnN0b3JlXG4gICAgICAuc2xpY2VTdGF0ZShzdGF0ZSA9PiBzdGF0ZSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoc3RhdGUgPT4ge1xuICAgICAgICAgIHJldHVybiAoa2V5cyBhcyBzdHJpbmdbXSkucmVkdWNlKChhY2MsIHZhbCkgPT4ge1xuICAgICAgICAgICAgaWYgKGFjYykge1xuICAgICAgICAgICAgICByZXR1cm4gYWNjW3ZhbF07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgfSwgc3RhdGUpO1xuICAgICAgICB9KSxcbiAgICAgICk7XG4gIH1cblxuICBnZXREZWVwKGtleXM6IHN0cmluZ1tdIHwgc3RyaW5nKSB7XG4gICAga2V5cyA9IHNwbGl0S2V5cyhrZXlzKTtcblxuICAgIHJldHVybiAoa2V5cyBhcyBzdHJpbmdbXSkucmVkdWNlKChhY2MsIHZhbCkgPT4ge1xuICAgICAgaWYgKGFjYykge1xuICAgICAgICByZXR1cm4gYWNjW3ZhbF07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfSwgdGhpcy5zdG9yZS5zdGF0ZSk7XG4gIH1cblxuICBnZXRGZWF0dXJlKGtleTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuc3RhdGUuZmVhdHVyZXM/LnZhbHVlcz8uW2tleV07XG4gIH1cblxuICBnZXRGZWF0dXJlJChrZXk6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLnN0b3JlLnNsaWNlU3RhdGUoc3RhdGUgPT4gc3RhdGUuZmVhdHVyZXM/LnZhbHVlcz8uW2tleV0pO1xuICB9XG5cbiAgZ2V0RmVhdHVyZXMoa2V5czogc3RyaW5nW10pIHtcbiAgICBjb25zdCB7IGZlYXR1cmVzIH0gPSB0aGlzLnN0b3JlLnN0YXRlO1xuICAgIGlmICghZmVhdHVyZXMpIHJldHVybjtcblxuICAgIHJldHVybiBrZXlzLnJlZHVjZSgoYWNjLCBrZXkpID0+ICh7IC4uLmFjYywgW2tleV06IGZlYXR1cmVzLnZhbHVlc1trZXldIH0pLCB7fSk7XG4gIH1cblxuICBnZXRGZWF0dXJlcyQoa2V5czogc3RyaW5nW10pIHtcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5zbGljZVN0YXRlKCh7IGZlYXR1cmVzIH0pID0+IHtcbiAgICAgIGlmICghZmVhdHVyZXM/LnZhbHVlcykgcmV0dXJuO1xuXG4gICAgICByZXR1cm4ga2V5cy5yZWR1Y2UoKGFjYywga2V5KSA9PiAoeyAuLi5hY2MsIFtrZXldOiBmZWF0dXJlcy52YWx1ZXNba2V5XSB9KSwge30pO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0U2V0dGluZyhrZXk6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLnN0b3JlLnN0YXRlLnNldHRpbmc/LnZhbHVlcz8uW2tleV07XG4gIH1cblxuICBnZXRTZXR0aW5nJChrZXk6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLnN0b3JlLnNsaWNlU3RhdGUoc3RhdGUgPT4gc3RhdGUuc2V0dGluZz8udmFsdWVzPy5ba2V5XSk7XG4gIH1cblxuICBnZXRTZXR0aW5ncyhrZXl3b3JkPzogc3RyaW5nKSB7XG4gICAgY29uc3Qgc2V0dGluZ3MgPSB0aGlzLnN0b3JlLnN0YXRlLnNldHRpbmc/LnZhbHVlcyB8fCB7fTtcblxuICAgIGlmICgha2V5d29yZCkgcmV0dXJuIHNldHRpbmdzO1xuXG4gICAgY29uc3Qga2V5c0ZvdW5kID0gT2JqZWN0LmtleXMoc2V0dGluZ3MpLmZpbHRlcihrZXkgPT4ga2V5LmluZGV4T2Yoa2V5d29yZCkgPiAtMSk7XG5cbiAgICByZXR1cm4ga2V5c0ZvdW5kLnJlZHVjZSgoYWNjLCBrZXkpID0+IHtcbiAgICAgIGFjY1trZXldID0gc2V0dGluZ3Nba2V5XTtcbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwge30pO1xuICB9XG5cbiAgZ2V0U2V0dGluZ3MkKGtleXdvcmQ/OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5zdG9yZVxuICAgICAgLnNsaWNlU3RhdGUoc3RhdGUgPT4gc3RhdGUuc2V0dGluZz8udmFsdWVzKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgoc2V0dGluZ3MgPSB7fSkgPT4ge1xuICAgICAgICAgIGlmICgha2V5d29yZCkgcmV0dXJuIHNldHRpbmdzO1xuXG4gICAgICAgICAgY29uc3Qga2V5c0ZvdW5kID0gT2JqZWN0LmtleXMoc2V0dGluZ3MpLmZpbHRlcihrZXkgPT4ga2V5LmluZGV4T2Yoa2V5d29yZCkgPiAtMSk7XG5cbiAgICAgICAgICByZXR1cm4ga2V5c0ZvdW5kLnJlZHVjZSgoYWNjLCBrZXkpID0+IHtcbiAgICAgICAgICAgIGFjY1trZXldID0gc2V0dGluZ3Nba2V5XTtcbiAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgfSwge30pO1xuICAgICAgICB9KSxcbiAgICAgICk7XG4gIH1cbn1cblxuZnVuY3Rpb24gc3BsaXRLZXlzKGtleXM6IHN0cmluZ1tdIHwgc3RyaW5nKTogc3RyaW5nW10ge1xuICBpZiAodHlwZW9mIGtleXMgPT09ICdzdHJpbmcnKSB7XG4gICAga2V5cyA9IGtleXMuc3BsaXQoJy4nKTtcbiAgfVxuXG4gIGlmICghQXJyYXkuaXNBcnJheShrZXlzKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignVGhlIGFyZ3VtZW50IG11c3QgYmUgYSBkb3Qgc3RyaW5nIG9yIGFuIHN0cmluZyBhcnJheS4nKTtcbiAgfVxuXG4gIHJldHVybiBrZXlzO1xufVxuIl19
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { registerLocaleData } from '@angular/common';
|
|
2
2
|
import { Injectable, Injector, isDevMode, Optional, SkipSelf } from '@angular/core';
|
|
3
3
|
import { from, Subject } from 'rxjs';
|
|
4
|
-
import { filter, map, mapTo, switchMap
|
|
5
|
-
import { AbpApplicationConfigurationService } from '../proxy/volo/abp/asp-net-core/mvc/application-configurations/abp-application-configuration.service';
|
|
4
|
+
import { filter, map, mapTo, switchMap } from 'rxjs/operators';
|
|
6
5
|
import { CORE_OPTIONS } from '../tokens/options.token';
|
|
7
6
|
import { createLocalizer, createLocalizerWithFallback } from '../utils/localization-utils';
|
|
8
7
|
import { interpolate } from '../utils/string-utils';
|
|
@@ -11,13 +10,11 @@ import { SessionStateService } from './session-state.service';
|
|
|
11
10
|
import * as i0 from "@angular/core";
|
|
12
11
|
import * as i1 from "./session-state.service";
|
|
13
12
|
import * as i2 from "./config-state.service";
|
|
14
|
-
import * as i3 from "../proxy/volo/abp/asp-net-core/mvc/application-configurations/abp-application-configuration.service";
|
|
15
13
|
export class LocalizationService {
|
|
16
|
-
constructor(sessionState, injector, otherInstance, configState
|
|
14
|
+
constructor(sessionState, injector, otherInstance, configState) {
|
|
17
15
|
this.sessionState = sessionState;
|
|
18
16
|
this.injector = injector;
|
|
19
17
|
this.configState = configState;
|
|
20
|
-
this.appConfigService = appConfigService;
|
|
21
18
|
this.latestLang = this.sessionState.getLanguage();
|
|
22
19
|
this._languageChange$ = new Subject();
|
|
23
20
|
if (otherInstance)
|
|
@@ -36,10 +33,7 @@ export class LocalizationService {
|
|
|
36
33
|
listenToSetLanguage() {
|
|
37
34
|
this.sessionState
|
|
38
35
|
.onLanguageChange$()
|
|
39
|
-
.pipe(filter(lang => this.configState.getDeep('localization.currentCulture.cultureName') !== lang), switchMap(lang => this.
|
|
40
|
-
.get()
|
|
41
|
-
.pipe(tap(res => this.configState.setState(res)))
|
|
42
|
-
.pipe(mapTo(lang))), switchMap(lang => from(this.registerLocale(lang).then(() => lang))))
|
|
36
|
+
.pipe(filter(lang => this.configState.getDeep('localization.currentCulture.cultureName') !== lang), switchMap(lang => this.configState.refreshAppState().pipe(mapTo(lang))), switchMap(lang => from(this.registerLocale(lang).then(() => lang))))
|
|
43
37
|
.subscribe(lang => this._languageChange$.next(lang));
|
|
44
38
|
}
|
|
45
39
|
registerLocale(locale) {
|
|
@@ -89,7 +83,7 @@ export class LocalizationService {
|
|
|
89
83
|
return createLocalizerWithFallback(localization)(resourceNames, keys, defaultValue);
|
|
90
84
|
}
|
|
91
85
|
}
|
|
92
|
-
LocalizationService.ɵprov = i0.ɵɵdefineInjectable({ factory: function LocalizationService_Factory() { return new LocalizationService(i0.ɵɵinject(i1.SessionStateService), i0.ɵɵinject(i0.INJECTOR), i0.ɵɵinject(LocalizationService, 12), i0.ɵɵinject(i2.ConfigStateService)
|
|
86
|
+
LocalizationService.ɵprov = i0.ɵɵdefineInjectable({ factory: function LocalizationService_Factory() { return new LocalizationService(i0.ɵɵinject(i1.SessionStateService), i0.ɵɵinject(i0.INJECTOR), i0.ɵɵinject(LocalizationService, 12), i0.ɵɵinject(i2.ConfigStateService)); }, token: LocalizationService, providedIn: "root" });
|
|
93
87
|
LocalizationService.decorators = [
|
|
94
88
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
95
89
|
];
|
|
@@ -97,8 +91,7 @@ LocalizationService.ctorParameters = () => [
|
|
|
97
91
|
{ type: SessionStateService },
|
|
98
92
|
{ type: Injector },
|
|
99
93
|
{ type: LocalizationService, decorators: [{ type: Optional }, { type: SkipSelf }] },
|
|
100
|
-
{ type: ConfigStateService }
|
|
101
|
-
{ type: AbpApplicationConfigurationService }
|
|
94
|
+
{ type: ConfigStateService }
|
|
102
95
|
];
|
|
103
96
|
function getLocalization(state, key, ...interpolateParams) {
|
|
104
97
|
if (!key)
|
|
@@ -144,4 +137,4 @@ function getLocalization(state, key, ...interpolateParams) {
|
|
|
144
137
|
localization = '';
|
|
145
138
|
return localization || defaultValue || key;
|
|
146
139
|
}
|
|
147
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvc2VydmljZXMvbG9jYWxpemF0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDckQsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEYsT0FBTyxFQUFFLElBQUksRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakQsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdwRSxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxxR0FBcUcsQ0FBQztBQUV6SixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7QUFHOUQsTUFBTSxPQUFPLG1CQUFtQjtJQWU5QixZQUNVLFlBQWlDLEVBQ2pDLFFBQWtCLEVBRzFCLGFBQWtDLEVBQzFCLFdBQStCLEVBQy9CLGdCQUFvRDtRQU5wRCxpQkFBWSxHQUFaLFlBQVksQ0FBcUI7UUFDakMsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUlsQixnQkFBVyxHQUFYLFdBQVcsQ0FBb0I7UUFDL0IscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFvQztRQXJCdEQsZUFBVSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDN0MscUJBQWdCLEdBQUcsSUFBSSxPQUFPLEVBQVUsQ0FBQztRQXNCL0MsSUFBSSxhQUFhO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxvREFBb0QsQ0FBQyxDQUFDO1FBRXpGLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUF2QkQ7O09BRUc7SUFDSCxJQUFJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUM1RCxDQUFDO0lBRUQsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzlDLENBQUM7SUFnQk8sbUJBQW1CO1FBQ3pCLElBQUksQ0FBQyxZQUFZO2FBQ2QsaUJBQWlCLEVBQUU7YUFDbkIsSUFBSSxDQUNILE1BQU0sQ0FDSixJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLHlDQUF5QyxDQUFDLEtBQUssSUFBSSxDQUNyRixFQUNELFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUNmLElBQUksQ0FBQyxnQkFBZ0I7YUFDbEIsR0FBRyxFQUFFO2FBQ0wsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDaEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUNyQixFQUNELFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQ3BFO2FBQ0EsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxjQUFjLENBQUMsTUFBYztRQUMzQixNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsR0FBYSxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUV2RSxPQUFPLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUM1QyxJQUFJLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxPQUFPO2dCQUFFLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN4RCxJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsR0FBRyxDQUNELEdBQTRDLEVBQzVDLEdBQUcsaUJBQTJCO1FBRTlCLE9BQU8sSUFBSSxDQUFDLFdBQVc7YUFDcEIsT0FBTyxFQUFFO2FBQ1QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEdBQUcsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVELFdBQVcsQ0FBQyxZQUFvQjtRQUM5QixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLHVCQUF1QixZQUFZLEVBQUUsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFRCxZQUFZLENBQUMsWUFBb0I7UUFDL0IsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyx1QkFBdUIsWUFBWSxFQUFFLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE9BQU8sQ0FBQyxHQUE0QyxFQUFFLEdBQUcsaUJBQTJCO1FBQ2xGLE9BQU8sZUFBZSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsaUJBQWlCLENBQUMsQ0FBQztJQUMvRSxDQUFDO0lBRUQsUUFBUSxDQUFDLFlBQW9CLEVBQUUsR0FBVyxFQUFFLFlBQW9CO1FBQzlELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUMsSUFBSSxDQUNsRCxHQUFHLENBQUMsZUFBZSxDQUFDLEVBQ3BCLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsR0FBRyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQzNELENBQUM7SUFDSixDQUFDO0lBRUQsWUFBWSxDQUFDLFlBQW9CLEVBQUUsR0FBVyxFQUFFLFlBQW9CO1FBQ2xFLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzdELE9BQU8sZUFBZSxDQUFDLFlBQVksQ0FBQyxDQUFDLFlBQVksRUFBRSxHQUFHLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVELG9CQUFvQixDQUNsQixhQUF1QixFQUN2QixJQUFjLEVBQ2QsWUFBb0I7UUFFcEIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQyxJQUFJLENBQ2xELEdBQUcsQ0FBQywyQkFBMkIsQ0FBQyxFQUNoQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsRUFBRSxDQUFDLG9CQUFvQixDQUFDLGFBQWEsRUFBRSxJQUFJLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FDckYsQ0FBQztJQUNKLENBQUM7SUFFRCx3QkFBd0IsQ0FBQyxhQUF1QixFQUFFLElBQWMsRUFBRSxZQUFvQjtRQUNwRixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUM3RCxPQUFPLDJCQUEyQixDQUFDLFlBQVksQ0FBQyxDQUFDLGFBQWEsRUFBRSxJQUFJLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDdEYsQ0FBQzs7OztZQWxIRixVQUFVLFNBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOzs7WUFGekIsbUJBQW1CO1lBWFAsUUFBUTtZQWtDVixtQkFBbUIsdUJBRmpDLFFBQVEsWUFDUixRQUFRO1lBdkJKLGtCQUFrQjtZQUxsQixrQ0FBa0M7O0FBNkgzQyxTQUFTLGVBQWUsQ0FDdEIsS0FBa0MsRUFDbEMsR0FBNEMsRUFDNUMsR0FBRyxpQkFBMkI7SUFFOUIsSUFBSSxDQUFDLEdBQUc7UUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDO0lBQ25CLElBQUksWUFBb0IsQ0FBQztJQUV6QixJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBRTtRQUMzQixZQUFZLEdBQUcsR0FBRyxDQUFDLFlBQVksQ0FBQztRQUNoQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQztLQUNmO0lBRUQsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQWEsQ0FBQztJQUN6QyxNQUFNLElBQUksR0FBRyxDQUFDLE9BQWUsRUFBRSxFQUFFO1FBQy9CLElBQUksU0FBUztZQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdkMsQ0FBQyxDQUFDO0lBRUYsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtRQUNuQixJQUFJLENBQUMsbURBQW1ELENBQUMsQ0FBQztRQUMxRCxPQUFPLFlBQVksSUFBSyxHQUFjLENBQUM7S0FDeEM7SUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVk7UUFBRSxPQUFPLFlBQVksSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFeEQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxZQUFZLENBQUMsbUJBQW1CLENBQUM7SUFDckUsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRTFCLElBQUksVUFBVSxLQUFLLEdBQUcsRUFBRTtRQUN0QixPQUFPLFlBQVksSUFBSSxTQUFTLENBQUM7S0FDbEM7SUFFRCxJQUFJLENBQUMsVUFBVSxFQUFFO1FBQ2YsSUFBSSxDQUFDLHdGQUF3RixDQUFDLENBQUM7UUFFL0YsT0FBTyxZQUFZLElBQUksU0FBUyxDQUFDO0tBQ2xDO0lBRUQsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDckQsSUFBSSxDQUFDLE1BQU0sRUFBRTtRQUNYLElBQUksQ0FBQyxzQ0FBc0MsR0FBRyxVQUFVLENBQUMsQ0FBQztRQUMxRCxPQUFPLFlBQVksSUFBSSxTQUFTLENBQUM7S0FDbEM7SUFFRCxJQUFJLFlBQVksR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDckMsSUFBSSxPQUFPLFlBQVksS0FBSyxXQUFXLEVBQUU7UUFDdkMsT0FBTyxZQUFZLElBQUksU0FBUyxDQUFDO0tBQ2xDO0lBRUQsaUJBQWlCLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxDQUFDO0lBQ3ZFLElBQUksWUFBWTtRQUFFLFlBQVksR0FBRyxXQUFXLENBQUMsWUFBWSxFQUFFLGlCQUFpQixDQUFDLENBQUM7SUFFOUUsSUFBSSxPQUFPLFlBQVksS0FBSyxRQUFRO1FBQUUsWUFBWSxHQUFHLEVBQUUsQ0FBQztJQUV4RCxPQUFPLFlBQVksSUFBSSxZQUFZLElBQUssR0FBYyxDQUFDO0FBQ3pELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZWdpc3RlckxvY2FsZURhdGEgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIGlzRGV2TW9kZSwgT3B0aW9uYWwsIFNraXBTZWxmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmcm9tLCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCwgbWFwVG8sIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQUJQIH0gZnJvbSAnLi4vbW9kZWxzL2NvbW1vbic7XG5pbXBvcnQgeyBDb25maWcgfSBmcm9tICcuLi9tb2RlbHMvY29uZmlnJztcbmltcG9ydCB7IEFicEFwcGxpY2F0aW9uQ29uZmlndXJhdGlvblNlcnZpY2UgfSBmcm9tICcuLi9wcm94eS92b2xvL2FicC9hc3AtbmV0LWNvcmUvbXZjL2FwcGxpY2F0aW9uLWNvbmZpZ3VyYXRpb25zL2FicC1hcHBsaWNhdGlvbi1jb25maWd1cmF0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXBwbGljYXRpb25Db25maWd1cmF0aW9uRHRvIH0gZnJvbSAnLi4vcHJveHkvdm9sby9hYnAvYXNwLW5ldC1jb3JlL212Yy9hcHBsaWNhdGlvbi1jb25maWd1cmF0aW9ucy9tb2RlbHMnO1xuaW1wb3J0IHsgQ09SRV9PUFRJT05TIH0gZnJvbSAnLi4vdG9rZW5zL29wdGlvbnMudG9rZW4nO1xuaW1wb3J0IHsgY3JlYXRlTG9jYWxpemVyLCBjcmVhdGVMb2NhbGl6ZXJXaXRoRmFsbGJhY2sgfSBmcm9tICcuLi91dGlscy9sb2NhbGl6YXRpb24tdXRpbHMnO1xuaW1wb3J0IHsgaW50ZXJwb2xhdGUgfSBmcm9tICcuLi91dGlscy9zdHJpbmctdXRpbHMnO1xuaW1wb3J0IHsgQ29uZmlnU3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi9jb25maWctc3RhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBTZXNzaW9uU3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi9zZXNzaW9uLXN0YXRlLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIExvY2FsaXphdGlvblNlcnZpY2Uge1xuICBwcml2YXRlIGxhdGVzdExhbmcgPSB0aGlzLnNlc3Npb25TdGF0ZS5nZXRMYW5ndWFnZSgpO1xuICBwcml2YXRlIF9sYW5ndWFnZUNoYW5nZSQgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XG5cbiAgLyoqXG4gICAqIFJldHVybnMgY3VycmVudGx5IHNlbGVjdGVkIGxhbmd1YWdlXG4gICAqL1xuICBnZXQgY3VycmVudExhbmcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5sYXRlc3RMYW5nIHx8IHRoaXMuc2Vzc2lvblN0YXRlLmdldExhbmd1YWdlKCk7XG4gIH1cblxuICBnZXQgbGFuZ3VhZ2VDaGFuZ2UkKCk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuX2xhbmd1YWdlQ2hhbmdlJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc2Vzc2lvblN0YXRlOiBTZXNzaW9uU3RhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIEBPcHRpb25hbCgpXG4gICAgQFNraXBTZWxmKClcbiAgICBvdGhlckluc3RhbmNlOiBMb2NhbGl6YXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgY29uZmlnU3RhdGU6IENvbmZpZ1N0YXRlU2VydmljZSxcbiAgICBwcml2YXRlIGFwcENvbmZpZ1NlcnZpY2U6IEFicEFwcGxpY2F0aW9uQ29uZmlndXJhdGlvblNlcnZpY2UsXG4gICkge1xuICAgIGlmIChvdGhlckluc3RhbmNlKSB0aHJvdyBuZXcgRXJyb3IoJ0xvY2FsaXphdGlvblNlcnZpY2Ugc2hvdWxkIGhhdmUgb25seSBvbmUgaW5zdGFuY2UuJyk7XG5cbiAgICB0aGlzLmxpc3RlblRvU2V0TGFuZ3VhZ2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgbGlzdGVuVG9TZXRMYW5ndWFnZSgpIHtcbiAgICB0aGlzLnNlc3Npb25TdGF0ZVxuICAgICAgLm9uTGFuZ3VhZ2VDaGFuZ2UkKClcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoXG4gICAgICAgICAgbGFuZyA9PiB0aGlzLmNvbmZpZ1N0YXRlLmdldERlZXAoJ2xvY2FsaXphdGlvbi5jdXJyZW50Q3VsdHVyZS5jdWx0dXJlTmFtZScpICE9PSBsYW5nLFxuICAgICAgICApLFxuICAgICAgICBzd2l0Y2hNYXAobGFuZyA9PlxuICAgICAgICAgIHRoaXMuYXBwQ29uZmlnU2VydmljZVxuICAgICAgICAgICAgLmdldCgpXG4gICAgICAgICAgICAucGlwZSh0YXAocmVzID0+IHRoaXMuY29uZmlnU3RhdGUuc2V0U3RhdGUocmVzKSkpXG4gICAgICAgICAgICAucGlwZShtYXBUbyhsYW5nKSksXG4gICAgICAgICksXG4gICAgICAgIHN3aXRjaE1hcChsYW5nID0+IGZyb20odGhpcy5yZWdpc3RlckxvY2FsZShsYW5nKS50aGVuKCgpID0+IGxhbmcpKSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKGxhbmcgPT4gdGhpcy5fbGFuZ3VhZ2VDaGFuZ2UkLm5leHQobGFuZykpO1xuICB9XG5cbiAgcmVnaXN0ZXJMb2NhbGUobG9jYWxlOiBzdHJpbmcpIHtcbiAgICBjb25zdCB7IHJlZ2lzdGVyTG9jYWxlRm4gfTogQUJQLlJvb3QgPSB0aGlzLmluamVjdG9yLmdldChDT1JFX09QVElPTlMpO1xuXG4gICAgcmV0dXJuIHJlZ2lzdGVyTG9jYWxlRm4obG9jYWxlKS50aGVuKG1vZHVsZSA9PiB7XG4gICAgICBpZiAobW9kdWxlPy5kZWZhdWx0KSByZWdpc3RlckxvY2FsZURhdGEobW9kdWxlLmRlZmF1bHQpO1xuICAgICAgdGhpcy5sYXRlc3RMYW5nID0gbG9jYWxlO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gb2JzZXJ2YWJsZSBsb2NhbGl6ZWQgdGV4dCB3aXRoIHRoZSBnaXZlbiBpbnRlcnBvbGF0aW9uIHBhcmFtZXRlcnMgaW4gY3VycmVudCBsYW5ndWFnZS5cbiAgICogQHBhcmFtIGtleSBMb2NhbGl6YXRvbiBrZXkgdG8gcmVwbGFjZSB3aXRoIGxvY2FsaXplZCB0ZXh0XG4gICAqIEBwYXJhbSBpbnRlcnBvbGF0ZVBhcmFtcyBWYWx1ZXMgdG8gaW50ZXJwb2xhdGVcbiAgICovXG4gIGdldChcbiAgICBrZXk6IHN0cmluZyB8IENvbmZpZy5Mb2NhbGl6YXRpb25XaXRoRGVmYXVsdCxcbiAgICAuLi5pbnRlcnBvbGF0ZVBhcmFtczogc3RyaW5nW11cbiAgKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5jb25maWdTdGF0ZVxuICAgICAgLmdldEFsbCQoKVxuICAgICAgLnBpcGUobWFwKHN0YXRlID0+IGdldExvY2FsaXphdGlvbihzdGF0ZSwga2V5LCAuLi5pbnRlcnBvbGF0ZVBhcmFtcykpKTtcbiAgfVxuXG4gIGdldFJlc291cmNlKHJlc291cmNlTmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnU3RhdGUuZ2V0RGVlcChgbG9jYWxpemF0aW9uLnZhbHVlcy4ke3Jlc291cmNlTmFtZX1gKTtcbiAgfVxuXG4gIGdldFJlc291cmNlJChyZXNvdXJjZU5hbWU6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZ1N0YXRlLmdldERlZXAkKGBsb2NhbGl6YXRpb24udmFsdWVzLiR7cmVzb3VyY2VOYW1lfWApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgbG9jYWxpemVkIHRleHQgd2l0aCB0aGUgZ2l2ZW4gaW50ZXJwb2xhdGlvbiBwYXJhbWV0ZXJzIGluIGN1cnJlbnQgbGFuZ3VhZ2UuXG4gICAqIEBwYXJhbSBrZXkgTG9jYWxpemF0aW9uIGtleSB0byByZXBsYWNlIHdpdGggbG9jYWxpemVkIHRleHRcbiAgICogQHBhcmFtIGludGVycG9sYXRlUGFyYW1zIFZhbHVlcyB0byBpbnRlcG9sYXRlLlxuICAgKi9cbiAgaW5zdGFudChrZXk6IHN0cmluZyB8IENvbmZpZy5Mb2NhbGl6YXRpb25XaXRoRGVmYXVsdCwgLi4uaW50ZXJwb2xhdGVQYXJhbXM6IHN0cmluZ1tdKTogc3RyaW5nIHtcbiAgICByZXR1cm4gZ2V0TG9jYWxpemF0aW9uKHRoaXMuY29uZmlnU3RhdGUuZ2V0QWxsKCksIGtleSwgLi4uaW50ZXJwb2xhdGVQYXJhbXMpO1xuICB9XG5cbiAgbG9jYWxpemUocmVzb3VyY2VOYW1lOiBzdHJpbmcsIGtleTogc3RyaW5nLCBkZWZhdWx0VmFsdWU6IHN0cmluZyk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnU3RhdGUuZ2V0T25lJCgnbG9jYWxpemF0aW9uJykucGlwZShcbiAgICAgIG1hcChjcmVhdGVMb2NhbGl6ZXIpLFxuICAgICAgbWFwKGxvY2FsaXplID0+IGxvY2FsaXplKHJlc291cmNlTmFtZSwga2V5LCBkZWZhdWx0VmFsdWUpKSxcbiAgICApO1xuICB9XG5cbiAgbG9jYWxpemVTeW5jKHJlc291cmNlTmFtZTogc3RyaW5nLCBrZXk6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IGxvY2FsaXphdGlvbiA9IHRoaXMuY29uZmlnU3RhdGUuZ2V0T25lKCdsb2NhbGl6YXRpb24nKTtcbiAgICByZXR1cm4gY3JlYXRlTG9jYWxpemVyKGxvY2FsaXphdGlvbikocmVzb3VyY2VOYW1lLCBrZXksIGRlZmF1bHRWYWx1ZSk7XG4gIH1cblxuICBsb2NhbGl6ZVdpdGhGYWxsYmFjayhcbiAgICByZXNvdXJjZU5hbWVzOiBzdHJpbmdbXSxcbiAgICBrZXlzOiBzdHJpbmdbXSxcbiAgICBkZWZhdWx0VmFsdWU6IHN0cmluZyxcbiAgKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5jb25maWdTdGF0ZS5nZXRPbmUkKCdsb2NhbGl6YXRpb24nKS5waXBlKFxuICAgICAgbWFwKGNyZWF0ZUxvY2FsaXplcldpdGhGYWxsYmFjayksXG4gICAgICBtYXAobG9jYWxpemVXaXRoRmFsbGJhY2sgPT4gbG9jYWxpemVXaXRoRmFsbGJhY2socmVzb3VyY2VOYW1lcywga2V5cywgZGVmYXVsdFZhbHVlKSksXG4gICAgKTtcbiAgfVxuXG4gIGxvY2FsaXplV2l0aEZhbGxiYWNrU3luYyhyZXNvdXJjZU5hbWVzOiBzdHJpbmdbXSwga2V5czogc3RyaW5nW10sIGRlZmF1bHRWYWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBsb2NhbGl6YXRpb24gPSB0aGlzLmNvbmZpZ1N0YXRlLmdldE9uZSgnbG9jYWxpemF0aW9uJyk7XG4gICAgcmV0dXJuIGNyZWF0ZUxvY2FsaXplcldpdGhGYWxsYmFjayhsb2NhbGl6YXRpb24pKHJlc291cmNlTmFtZXMsIGtleXMsIGRlZmF1bHRWYWx1ZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0TG9jYWxpemF0aW9uKFxuICBzdGF0ZTogQXBwbGljYXRpb25Db25maWd1cmF0aW9uRHRvLFxuICBrZXk6IHN0cmluZyB8IENvbmZpZy5Mb2NhbGl6YXRpb25XaXRoRGVmYXVsdCxcbiAgLi4uaW50ZXJwb2xhdGVQYXJhbXM6IHN0cmluZ1tdXG4pIHtcbiAgaWYgKCFrZXkpIGtleSA9ICcnO1xuICBsZXQgZGVmYXVsdFZhbHVlOiBzdHJpbmc7XG5cbiAgaWYgKHR5cGVvZiBrZXkgIT09ICdzdHJpbmcnKSB7XG4gICAgZGVmYXVsdFZhbHVlID0ga2V5LmRlZmF1bHRWYWx1ZTtcbiAgICBrZXkgPSBrZXkua2V5O1xuICB9XG5cbiAgY29uc3Qga2V5cyA9IGtleS5zcGxpdCgnOjonKSBhcyBzdHJpbmdbXTtcbiAgY29uc3Qgd2FybiA9IChtZXNzYWdlOiBzdHJpbmcpID0+IHtcbiAgICBpZiAoaXNEZXZNb2RlKSBjb25zb2xlLndhcm4obWVzc2FnZSk7XG4gIH07XG5cbiAgaWYgKGtleXMubGVuZ3RoIDwgMikge1xuICAgIHdhcm4oJ1RoZSBsb2NhbGl6YXRpb24gc291cmNlIHNlcGFyYXRvciAoOjopIG5vdCBmb3VuZC4nKTtcbiAgICByZXR1cm4gZGVmYXVsdFZhbHVlIHx8IChrZXkgYXMgc3RyaW5nKTtcbiAgfVxuICBpZiAoIXN0YXRlLmxvY2FsaXphdGlvbikgcmV0dXJuIGRlZmF1bHRWYWx1ZSB8fCBrZXlzWzFdO1xuXG4gIGNvbnN0IHNvdXJjZU5hbWUgPSBrZXlzWzBdIHx8IHN0YXRlLmxvY2FsaXphdGlvbi5kZWZhdWx0UmVzb3VyY2VOYW1lO1xuICBjb25zdCBzb3VyY2VLZXkgPSBrZXlzWzFdO1xuXG4gIGlmIChzb3VyY2VOYW1lID09PSAnXycpIHtcbiAgICByZXR1cm4gZGVmYXVsdFZhbHVlIHx8IHNvdXJjZUtleTtcbiAgfVxuXG4gIGlmICghc291cmNlTmFtZSkge1xuICAgIHdhcm4oJ0xvY2FsaXphdGlvbiBzb3VyY2UgbmFtZSBpcyBub3Qgc3BlY2lmaWVkIGFuZCB0aGUgZGVmYXVsdFJlc291cmNlTmFtZSB3YXMgbm90IGRlZmluZWQhJyk7XG5cbiAgICByZXR1cm4gZGVmYXVsdFZhbHVlIHx8IHNvdXJjZUtleTtcbiAgfVxuXG4gIGNvbnN0IHNvdXJjZSA9IHN0YXRlLmxvY2FsaXphdGlvbi52YWx1ZXNbc291cmNlTmFtZV07XG4gIGlmICghc291cmNlKSB7XG4gICAgd2FybignQ291bGQgbm90IGZpbmQgbG9jYWxpemF0aW9uIHNvdXJjZTogJyArIHNvdXJjZU5hbWUpO1xuICAgIHJldHVybiBkZWZhdWx0VmFsdWUgfHwgc291cmNlS2V5O1xuICB9XG5cbiAgbGV0IGxvY2FsaXphdGlvbiA9IHNvdXJjZVtzb3VyY2VLZXldO1xuICBpZiAodHlwZW9mIGxvY2FsaXphdGlvbiA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm4gZGVmYXVsdFZhbHVlIHx8IHNvdXJjZUtleTtcbiAgfVxuXG4gIGludGVycG9sYXRlUGFyYW1zID0gaW50ZXJwb2xhdGVQYXJhbXMuZmlsdGVyKHBhcmFtcyA9PiBwYXJhbXMgIT0gbnVsbCk7XG4gIGlmIChsb2NhbGl6YXRpb24pIGxvY2FsaXphdGlvbiA9IGludGVycG9sYXRlKGxvY2FsaXphdGlvbiwgaW50ZXJwb2xhdGVQYXJhbXMpO1xuXG4gIGlmICh0eXBlb2YgbG9jYWxpemF0aW9uICE9PSAnc3RyaW5nJykgbG9jYWxpemF0aW9uID0gJyc7XG5cbiAgcmV0dXJuIGxvY2FsaXphdGlvbiB8fCBkZWZhdWx0VmFsdWUgfHwgKGtleSBhcyBzdHJpbmcpO1xufVxuIl19
|
|
140
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvc2VydmljZXMvbG9jYWxpemF0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDckQsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEYsT0FBTyxFQUFFLElBQUksRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakQsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSS9ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLDJCQUEyQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0YsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7O0FBRzlELE1BQU0sT0FBTyxtQkFBbUI7SUFlOUIsWUFDVSxZQUFpQyxFQUNqQyxRQUFrQixFQUcxQixhQUFrQyxFQUMxQixXQUErQjtRQUwvQixpQkFBWSxHQUFaLFlBQVksQ0FBcUI7UUFDakMsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUlsQixnQkFBVyxHQUFYLFdBQVcsQ0FBb0I7UUFwQmpDLGVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzdDLHFCQUFnQixHQUFHLElBQUksT0FBTyxFQUFVLENBQUM7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Q1gsSUFBSSxDQUFDLHNDQUFzQyxHQUFHLFVBQVUsQ0FBQyxDQUFDO1FBQzFELE9BQU8sWUFBWSxJQUFJLFNBQVMsQ0FBQztLQUNsQztJQUVELElBQUksWUFBWSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNyQyxJQUFJLE9BQU8sWUFBWSxLQUFLLFdBQVcsRUFBRTtRQUN2QyxPQUFPLFlBQVksSUFBSSxTQUFTLENBQUM7S0FDbEM7SUFFRCxpQkFBaUIsR0FBRyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLENBQUM7SUFDdkUsSUFBSSxZQUFZO1FBQUUsWUFBWSxHQUFHLFdBQVcsQ0FBQyxZQUFZLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztJQUU5RSxJQUFJLE9BQU8sWUFBWSxLQUFLLFFBQVE7UUFBRSxZQUFZLEdBQUcsRUFBRSxDQUFDO0lBRXhELE9BQU8sWUFBWSxJQUFJLFlBQVksSUFBSyxHQUFjLENBQUM7QUFDekQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlZ2lzdGVyTG9jYWxlRGF0YSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciwgaXNEZXZNb2RlLCBPcHRpb25hbCwgU2tpcFNlbGYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZyb20sIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgbWFwLCBtYXBUbywgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQUJQIH0gZnJvbSAnLi4vbW9kZWxzL2NvbW1vbic7XG5pbXBvcnQgeyBDb25maWcgfSBmcm9tICcuLi9tb2RlbHMvY29uZmlnJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uQ29uZmlndXJhdGlvbkR0byB9IGZyb20gJy4uL3Byb3h5L3ZvbG8vYWJwL2FzcC1uZXQtY29yZS9tdmMvYXBwbGljYXRpb24tY29uZmlndXJhdGlvbnMvbW9kZWxzJztcbmltcG9ydCB7IENPUkVfT1BUSU9OUyB9IGZyb20gJy4uL3Rva2Vucy9vcHRpb25zLnRva2VuJztcbmltcG9ydCB7IGNyZWF0ZUxvY2FsaXplciwgY3JlYXRlTG9jYWxpemVyV2l0aEZhbGxiYWNrIH0gZnJvbSAnLi4vdXRpbHMvbG9jYWxpemF0aW9uLXV0aWxzJztcbmltcG9ydCB7IGludGVycG9sYXRlIH0gZnJvbSAnLi4vdXRpbHMvc3RyaW5nLXV0aWxzJztcbmltcG9ydCB7IENvbmZpZ1N0YXRlU2VydmljZSB9IGZyb20gJy4vY29uZmlnLXN0YXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2Vzc2lvblN0YXRlU2VydmljZSB9IGZyb20gJy4vc2Vzc2lvbi1zdGF0ZS5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBMb2NhbGl6YXRpb25TZXJ2aWNlIHtcbiAgcHJpdmF0ZSBsYXRlc3RMYW5nID0gdGhpcy5zZXNzaW9uU3RhdGUuZ2V0TGFuZ3VhZ2UoKTtcbiAgcHJpdmF0ZSBfbGFuZ3VhZ2VDaGFuZ2UkID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGN1cnJlbnRseSBzZWxlY3RlZCBsYW5ndWFnZVxuICAgKi9cbiAgZ2V0IGN1cnJlbnRMYW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMubGF0ZXN0TGFuZyB8fCB0aGlzLnNlc3Npb25TdGF0ZS5nZXRMYW5ndWFnZSgpO1xuICB9XG5cbiAgZ2V0IGxhbmd1YWdlQ2hhbmdlJCgpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLl9sYW5ndWFnZUNoYW5nZSQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHNlc3Npb25TdGF0ZTogU2Vzc2lvblN0YXRlU2VydmljZSxcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBAT3B0aW9uYWwoKVxuICAgIEBTa2lwU2VsZigpXG4gICAgb3RoZXJJbnN0YW5jZTogTG9jYWxpemF0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIGNvbmZpZ1N0YXRlOiBDb25maWdTdGF0ZVNlcnZpY2UsXG4gICkge1xuICAgIGlmIChvdGhlckluc3RhbmNlKSB0aHJvdyBuZXcgRXJyb3IoJ0xvY2FsaXphdGlvblNlcnZpY2Ugc2hvdWxkIGhhdmUgb25seSBvbmUgaW5zdGFuY2UuJyk7XG5cbiAgICB0aGlzLmxpc3RlblRvU2V0TGFuZ3VhZ2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgbGlzdGVuVG9TZXRMYW5ndWFnZSgpIHtcbiAgICB0aGlzLnNlc3Npb25TdGF0ZVxuICAgICAgLm9uTGFuZ3VhZ2VDaGFuZ2UkKClcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoXG4gICAgICAgICAgbGFuZyA9PiB0aGlzLmNvbmZpZ1N0YXRlLmdldERlZXAoJ2xvY2FsaXphdGlvbi5jdXJyZW50Q3VsdHVyZS5jdWx0dXJlTmFtZScpICE9PSBsYW5nLFxuICAgICAgICApLFxuICAgICAgICBzd2l0Y2hNYXAobGFuZyA9PiB0aGlzLmNvbmZpZ1N0YXRlLnJlZnJlc2hBcHBTdGF0ZSgpLnBpcGUobWFwVG8obGFuZykpKSxcbiAgICAgICAgc3dpdGNoTWFwKGxhbmcgPT4gZnJvbSh0aGlzLnJlZ2lzdGVyTG9jYWxlKGxhbmcpLnRoZW4oKCkgPT4gbGFuZykpKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUobGFuZyA9PiB0aGlzLl9sYW5ndWFnZUNoYW5nZSQubmV4dChsYW5nKSk7XG4gIH1cblxuICByZWdpc3RlckxvY2FsZShsb2NhbGU6IHN0cmluZykge1xuICAgIGNvbnN0IHsgcmVnaXN0ZXJMb2NhbGVGbiB9OiBBQlAuUm9vdCA9IHRoaXMuaW5qZWN0b3IuZ2V0KENPUkVfT1BUSU9OUyk7XG5cbiAgICByZXR1cm4gcmVnaXN0ZXJMb2NhbGVGbihsb2NhbGUpLnRoZW4obW9kdWxlID0+IHtcbiAgICAgIGlmIChtb2R1bGU/LmRlZmF1bHQpIHJlZ2lzdGVyTG9jYWxlRGF0YShtb2R1bGUuZGVmYXVsdCk7XG4gICAgICB0aGlzLmxhdGVzdExhbmcgPSBsb2NhbGU7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBvYnNlcnZhYmxlIGxvY2FsaXplZCB0ZXh0IHdpdGggdGhlIGdpdmVuIGludGVycG9sYXRpb24gcGFyYW1ldGVycyBpbiBjdXJyZW50IGxhbmd1YWdlLlxuICAgKiBAcGFyYW0ga2V5IExvY2FsaXphdG9uIGtleSB0byByZXBsYWNlIHdpdGggbG9jYWxpemVkIHRleHRcbiAgICogQHBhcmFtIGludGVycG9sYXRlUGFyYW1zIFZhbHVlcyB0byBpbnRlcnBvbGF0ZVxuICAgKi9cbiAgZ2V0KFxuICAgIGtleTogc3RyaW5nIHwgQ29uZmlnLkxvY2FsaXphdGlvbldpdGhEZWZhdWx0LFxuICAgIC4uLmludGVycG9sYXRlUGFyYW1zOiBzdHJpbmdbXVxuICApOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZ1N0YXRlXG4gICAgICAuZ2V0QWxsJCgpXG4gICAgICAucGlwZShtYXAoc3RhdGUgPT4gZ2V0TG9jYWxpemF0aW9uKHN0YXRlLCBrZXksIC4uLmludGVycG9sYXRlUGFyYW1zKSkpO1xuICB9XG5cbiAgZ2V0UmVzb3VyY2UocmVzb3VyY2VOYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWdTdGF0ZS5nZXREZWVwKGBsb2NhbGl6YXRpb24udmFsdWVzLiR7cmVzb3VyY2VOYW1lfWApO1xuICB9XG5cbiAgZ2V0UmVzb3VyY2UkKHJlc291cmNlTmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnU3RhdGUuZ2V0RGVlcCQoYGxvY2FsaXphdGlvbi52YWx1ZXMuJHtyZXNvdXJjZU5hbWV9YCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBsb2NhbGl6ZWQgdGV4dCB3aXRoIHRoZSBnaXZlbiBpbnRlcnBvbGF0aW9uIHBhcmFtZXRlcnMgaW4gY3VycmVudCBsYW5ndWFnZS5cbiAgICogQHBhcmFtIGtleSBMb2NhbGl6YXRpb24ga2V5IHRvIHJlcGxhY2Ugd2l0aCBsb2NhbGl6ZWQgdGV4dFxuICAgKiBAcGFyYW0gaW50ZXJwb2xhdGVQYXJhbXMgVmFsdWVzIHRvIGludGVwb2xhdGUuXG4gICAqL1xuICBpbnN0YW50KGtleTogc3RyaW5nIHwgQ29uZmlnLkxvY2FsaXphdGlvbldpdGhEZWZhdWx0LCAuLi5pbnRlcnBvbGF0ZVBhcmFtczogc3RyaW5nW10pOiBzdHJpbmcge1xuICAgIHJldHVybiBnZXRMb2NhbGl6YXRpb24odGhpcy5jb25maWdTdGF0ZS5nZXRBbGwoKSwga2V5LCAuLi5pbnRlcnBvbGF0ZVBhcmFtcyk7XG4gIH1cblxuICBsb2NhbGl6ZShyZXNvdXJjZU5hbWU6IHN0cmluZywga2V5OiBzdHJpbmcsIGRlZmF1bHRWYWx1ZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5jb25maWdTdGF0ZS5nZXRPbmUkKCdsb2NhbGl6YXRpb24nKS5waXBlKFxuICAgICAgbWFwKGNyZWF0ZUxvY2FsaXplciksXG4gICAgICBtYXAobG9jYWxpemUgPT4gbG9jYWxpemUocmVzb3VyY2VOYW1lLCBrZXksIGRlZmF1bHRWYWx1ZSkpLFxuICAgICk7XG4gIH1cblxuICBsb2NhbGl6ZVN5bmMocmVzb3VyY2VOYW1lOiBzdHJpbmcsIGtleTogc3RyaW5nLCBkZWZhdWx0VmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgbG9jYWxpemF0aW9uID0gdGhpcy5jb25maWdTdGF0ZS5nZXRPbmUoJ2xvY2FsaXphdGlvbicpO1xuICAgIHJldHVybiBjcmVhdGVMb2NhbGl6ZXIobG9jYWxpemF0aW9uKShyZXNvdXJjZU5hbWUsIGtleSwgZGVmYXVsdFZhbHVlKTtcbiAgfVxuXG4gIGxvY2FsaXplV2l0aEZhbGxiYWNrKFxuICAgIHJlc291cmNlTmFtZXM6IHN0cmluZ1tdLFxuICAgIGtleXM6IHN0cmluZ1tdLFxuICAgIGRlZmF1bHRWYWx1ZTogc3RyaW5nLFxuICApOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZ1N0YXRlLmdldE9uZSQoJ2xvY2FsaXphdGlvbicpLnBpcGUoXG4gICAgICBtYXAoY3JlYXRlTG9jYWxpemVyV2l0aEZhbGxiYWNrKSxcbiAgICAgIG1hcChsb2NhbGl6ZVdpdGhGYWxsYmFjayA9PiBsb2NhbGl6ZVdpdGhGYWxsYmFjayhyZXNvdXJjZU5hbWVzLCBrZXlzLCBkZWZhdWx0VmFsdWUpKSxcbiAgICApO1xuICB9XG5cbiAgbG9jYWxpemVXaXRoRmFsbGJhY2tTeW5jKHJlc291cmNlTmFtZXM6IHN0cmluZ1tdLCBrZXlzOiBzdHJpbmdbXSwgZGVmYXVsdFZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IGxvY2FsaXphdGlvbiA9IHRoaXMuY29uZmlnU3RhdGUuZ2V0T25lKCdsb2NhbGl6YXRpb24nKTtcbiAgICByZXR1cm4gY3JlYXRlTG9jYWxpemVyV2l0aEZhbGxiYWNrKGxvY2FsaXphdGlvbikocmVzb3VyY2VOYW1lcywga2V5cywgZGVmYXVsdFZhbHVlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRMb2NhbGl6YXRpb24oXG4gIHN0YXRlOiBBcHBsaWNhdGlvbkNvbmZpZ3VyYXRpb25EdG8sXG4gIGtleTogc3RyaW5nIHwgQ29uZmlnLkxvY2FsaXphdGlvbldpdGhEZWZhdWx0LFxuICAuLi5pbnRlcnBvbGF0ZVBhcmFtczogc3RyaW5nW11cbikge1xuICBpZiAoIWtleSkga2V5ID0gJyc7XG4gIGxldCBkZWZhdWx0VmFsdWU6IHN0cmluZztcblxuICBpZiAodHlwZW9mIGtleSAhPT0gJ3N0cmluZycpIHtcbiAgICBkZWZhdWx0VmFsdWUgPSBrZXkuZGVmYXVsdFZhbHVlO1xuICAgIGtleSA9IGtleS5rZXk7XG4gIH1cblxuICBjb25zdCBrZXlzID0ga2V5LnNwbGl0KCc6OicpIGFzIHN0cmluZ1tdO1xuICBjb25zdCB3YXJuID0gKG1lc3NhZ2U6IHN0cmluZykgPT4ge1xuICAgIGlmIChpc0Rldk1vZGUpIGNvbnNvbGUud2FybihtZXNzYWdlKTtcbiAgfTtcblxuICBpZiAoa2V5cy5sZW5ndGggPCAyKSB7XG4gICAgd2FybignVGhlIGxvY2FsaXphdGlvbiBzb3VyY2Ugc2VwYXJhdG9yICg6Oikgbm90IGZvdW5kLicpO1xuICAgIHJldHVybiBkZWZhdWx0VmFsdWUgfHwgKGtleSBhcyBzdHJpbmcpO1xuICB9XG4gIGlmICghc3RhdGUubG9jYWxpemF0aW9uKSByZXR1cm4gZGVmYXVsdFZhbHVlIHx8IGtleXNbMV07XG5cbiAgY29uc3Qgc291cmNlTmFtZSA9IGtleXNbMF0gfHwgc3RhdGUubG9jYWxpemF0aW9uLmRlZmF1bHRSZXNvdXJjZU5hbWU7XG4gIGNvbnN0IHNvdXJjZUtleSA9IGtleXNbMV07XG5cbiAgaWYgKHNvdXJjZU5hbWUgPT09ICdfJykge1xuICAgIHJldHVybiBkZWZhdWx0VmFsdWUgfHwgc291cmNlS2V5O1xuICB9XG5cbiAgaWYgKCFzb3VyY2VOYW1lKSB7XG4gICAgd2FybignTG9jYWxpemF0aW9uIHNvdXJjZSBuYW1lIGlzIG5vdCBzcGVjaWZpZWQgYW5kIHRoZSBkZWZhdWx0UmVzb3VyY2VOYW1lIHdhcyBub3QgZGVmaW5lZCEnKTtcblxuICAgIHJldHVybiBkZWZhdWx0VmFsdWUgfHwgc291cmNlS2V5O1xuICB9XG5cbiAgY29uc3Qgc291cmNlID0gc3RhdGUubG9jYWxpemF0aW9uLnZhbHVlc1tzb3VyY2VOYW1lXTtcbiAgaWYgKCFzb3VyY2UpIHtcbiAgICB3YXJuKCdDb3VsZCBub3QgZmluZCBsb2NhbGl6YXRpb24gc291cmNlOiAnICsgc291cmNlTmFtZSk7XG4gICAgcmV0dXJuIGRlZmF1bHRWYWx1ZSB8fCBzb3VyY2VLZXk7XG4gIH1cblxuICBsZXQgbG9jYWxpemF0aW9uID0gc291cmNlW3NvdXJjZUtleV07XG4gIGlmICh0eXBlb2YgbG9jYWxpemF0aW9uID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiBkZWZhdWx0VmFsdWUgfHwgc291cmNlS2V5O1xuICB9XG5cbiAgaW50ZXJwb2xhdGVQYXJhbXMgPSBpbnRlcnBvbGF0ZVBhcmFtcy5maWx0ZXIocGFyYW1zID0+IHBhcmFtcyAhPSBudWxsKTtcbiAgaWYgKGxvY2FsaXphdGlvbikgbG9jYWxpemF0aW9uID0gaW50ZXJwb2xhdGUobG9jYWxpemF0aW9uLCBpbnRlcnBvbGF0ZVBhcmFtcyk7XG5cbiAgaWYgKHR5cGVvZiBsb2NhbGl6YXRpb24gIT09ICdzdHJpbmcnKSBsb2NhbGl6YXRpb24gPSAnJztcblxuICByZXR1cm4gbG9jYWxpemF0aW9uIHx8IGRlZmF1bHRWYWx1ZSB8fCAoa2V5IGFzIHN0cmluZyk7XG59XG4iXX0=
|
|
@@ -1,26 +1,22 @@
|
|
|
1
1
|
var ConfigState_1;
|
|
2
2
|
import { __decorate } from "tslib";
|
|
3
|
-
import { HttpClient } from '@angular/common/http';
|
|
4
3
|
import { Injectable } from '@angular/core';
|
|
5
4
|
import { Action, createSelector, Selector, State, Store } from '@ngxs/store';
|
|
6
5
|
import { throwError } from 'rxjs';
|
|
7
|
-
import { catchError, distinctUntilChanged
|
|
6
|
+
import { catchError, distinctUntilChanged } from 'rxjs/operators';
|
|
8
7
|
import snq from 'snq';
|
|
9
8
|
import { GetAppConfiguration, PatchConfigState, SetEnvironment } from '../actions/config.actions';
|
|
10
9
|
import { RestOccurError } from '../actions/rest.actions';
|
|
11
10
|
import { ConfigStateService } from '../services/config-state.service';
|
|
12
11
|
import { EnvironmentService } from '../services/environment.service';
|
|
13
|
-
import { SessionStateService } from '../services/session-state.service';
|
|
14
12
|
import { interpolate } from '../utils/string-utils';
|
|
15
13
|
import compare from 'just-compare';
|
|
16
14
|
/**
|
|
17
15
|
* @deprecated Use ConfigStateService instead. To be deleted in v5.0.
|
|
18
16
|
*/
|
|
19
17
|
let ConfigState = ConfigState_1 = class ConfigState {
|
|
20
|
-
constructor(
|
|
21
|
-
this.http = http;
|
|
18
|
+
constructor(store, environmentService, configState) {
|
|
22
19
|
this.store = store;
|
|
23
|
-
this.sessionState = sessionState;
|
|
24
20
|
this.environmentService = environmentService;
|
|
25
21
|
this.configState = configState;
|
|
26
22
|
this.syncConfigState();
|
|
@@ -186,9 +182,7 @@ let ConfigState = ConfigState_1 = class ConfigState {
|
|
|
186
182
|
addData({ patchState, dispatch }) {
|
|
187
183
|
const apiName = 'default';
|
|
188
184
|
const api = this.store.selectSnapshot(ConfigState_1.getApiUrl(apiName));
|
|
189
|
-
return this.
|
|
190
|
-
.get(`${api}/api/abp/application-configuration`)
|
|
191
|
-
.pipe(tap(configuration => this.configState.setState(configuration)), catchError((err) => {
|
|
185
|
+
return this.configState.refreshAppState().pipe(catchError((err) => {
|
|
192
186
|
dispatch(new RestOccurError(err));
|
|
193
187
|
return throwError(err);
|
|
194
188
|
}));
|
|
@@ -204,9 +198,7 @@ ConfigState.decorators = [
|
|
|
204
198
|
{ type: Injectable }
|
|
205
199
|
];
|
|
206
200
|
ConfigState.ctorParameters = () => [
|
|
207
|
-
{ type: HttpClient },
|
|
208
201
|
{ type: Store },
|
|
209
|
-
{ type: SessionStateService },
|
|
210
202
|
{ type: EnvironmentService },
|
|
211
203
|
{ type: ConfigStateService }
|
|
212
204
|
];
|
|
@@ -235,4 +227,4 @@ ConfigState = ConfigState_1 = __decorate([
|
|
|
235
227
|
})
|
|
236
228
|
], ConfigState);
|
|
237
229
|
export { ConfigState };
|
|
238
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLnN0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL3N0YXRlcy9jb25maWcuc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFxQixNQUFNLHNCQUFzQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBZ0IsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzNGLE9BQU8sRUFBTSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxvQkFBb0IsRUFBYSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRixPQUFPLEdBQUcsTUFBTSxLQUFLLENBQUM7QUFDdEIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUd6RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDcEQsT0FBTyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBR25DOztHQUVHO0lBTVUsV0FBVyx5QkFBWCxXQUFXO0lBaU10QixZQUNVLElBQWdCLEVBQ2hCLEtBQVksRUFDWixZQUFpQyxFQUNqQyxrQkFBc0MsRUFDdEMsV0FBK0I7UUFKL0IsU0FBSSxHQUFKLElBQUksQ0FBWTtR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QUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3pCLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDTixDQUFDO0lBR0QsY0FBYyxDQUFDLENBQUMsRUFBRSxFQUFFLFdBQVcsRUFBa0I7UUFDL0MsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFHRCxTQUFTLENBQUMsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUE4QixFQUFFLEVBQUUsS0FBSyxFQUFvQjtRQUN6RixVQUFVLGlDQUFNLFFBQVEsRUFBRSxHQUFLLEtBQUssRUFBRyxDQUFDO0lBQzFDLENBQUM7Q0FDRixDQUFBOztZQW5QQSxVQUFVOzs7WUF4QkYsVUFBVTtZQUU2QyxLQUFLO1lBVTVELG1CQUFtQjtZQURuQixrQkFBa0I7WUFEbEIsa0JBQWtCOztBQTBPekI7SUFEQyxNQUFNLENBQUMsbUJBQW1CLENBQUM7MENBYTNCO0FBR0Q7SUFEQyxNQUFNLENBQUMsY0FBYyxDQUFDO2lEQUd0QjtBQUdEO0lBREMsTUFBTSxDQUFDLGdCQUFnQixDQUFDOzRDQUd4QjtBQS9PRDtJQURDLFFBQVEsRUFBRTsrQkFHVjtBQUdEO0lBREMsUUFBUSxFQUFFOzJDQUdWO0FBR0Q7SUFEQyxRQUFRLEVBQUU7dUNBR1Y7QUFkVSxXQUFXO0lBTHZCLEtBQUssQ0FBZTtRQUNuQixJQUFJLEVBQUUsYUFBYTtRQUNuQixRQUFRLEVBQUUsRUFBa0I7S0FDN0IsQ0FBQztHQUVXLFdBQVcsQ0FrUHZCO1NBbFBZLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGlvbiwgY3JlYXRlU2VsZWN0b3IsIFNlbGVjdG9yLCBTdGF0ZSwgU3RhdGVDb250ZXh0LCBTdG9yZSB9IGZyb20gJ0BuZ3hzL3N0b3JlJztcbmltcG9ydCB7IG9mLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgc25xIGZyb20gJ3NucSc7XG5pbXBvcnQgeyBHZXRBcHBDb25maWd1cmF0aW9uLCBQYXRjaENvbmZpZ1N0YXRlLCBTZXRFbnZpcm9ubWVudCB9IGZyb20gJy4uL2FjdGlvbnMvY29uZmlnLmFjdGlvbnMnO1xuaW1wb3J0IHsgUmVzdE9jY3VyRXJyb3IgfSBmcm9tICcuLi9hY3Rpb25zL3Jlc3QuYWN0aW9ucyc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvbkNvbmZpZ3VyYXRpb24gfSBmcm9tICcuLi9tb2RlbHMvYXBwbGljYXRpb24tY29uZmlndXJhdGlvbic7XG5pbXBvcnQgeyBDb25maWcgfSBmcm9tICcuLi9tb2RlbHMvY29uZmlnJztcbmltcG9ydCB7IENvbmZpZ1N0YXRlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2NvbmZpZy1zdGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IEVudmlyb25tZW50U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2Vudmlyb25tZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgU2Vzc2lvblN0YXRlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3Nlc3Npb24tc3RhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBpbnRlcnBvbGF0ZSB9IGZyb20gJy4uL3V0aWxzL3N0cmluZy11dGlscyc7XG5pbXBvcnQgY29tcGFyZSBmcm9tICdqdXN0LWNvbXBhcmUnO1xuaW1wb3J0IHsgQXBwbGljYXRpb25Db25maWd1cmF0aW9uRHRvIH0gZnJvbSAnLi4vcHJveHkvdm9sby9hYnAvYXNwLW5ldC1jb3JlL212Yy9hcHBsaWNhdGlvbi1jb25maWd1cmF0aW9ucy9tb2RlbHMnO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkIFVzZSBDb25maWdTdGF0ZVNlcnZpY2UgaW5zdGVhZC4gVG8gYmUgZGVsZXRlZCBpbiB2NS4wLlxuICovXG5AU3RhdGU8Q29uZmlnLlN0YXRlPih7XG4gIG5hbWU6ICdDb25maWdTdGF0ZScsXG4gIGRlZmF1bHRzOiB7fSBhcyBDb25maWcuU3RhdGUsXG59KVxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENvbmZpZ1N0YXRlIHtcbiAgQFNlbGVjdG9yKClcbiAgc3RhdGljIGdldEFsbChzdGF0ZTogQ29uZmlnLlN0YXRlKSB7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgc3RhdGljIGdldEFwcGxpY2F0aW9uSW5mbyhzdGF0ZTogQ29uZmlnLlN0YXRlKTogQ29uZmlnLkFwcGxpY2F0aW9uIHtcbiAgICByZXR1cm4gc3RhdGUuZW52aXJvbm1lbnQuYXBwbGljYXRpb24gfHwgKHt9IGFzIENvbmZpZy5BcHBsaWNhdGlvbik7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBzdGF0aWMgZ2V0RW52aXJvbm1lbnQoc3RhdGU6IENvbmZpZy5TdGF0ZSk6IENvbmZpZy5FbnZpcm9ubWVudCB7XG4gICAgcmV0dXJuIHN0YXRlLmVudmlyb25tZW50O1xuICB9XG5cbiAgc3RhdGljIGdldE9uZShrZXk6IHN0cmluZykge1xuICAgIGNvbnN0IHNlbGVjdG9yID0gY3JlYXRlU2VsZWN0b3IoW0NvbmZpZ1N0YXRlXSwgKHN0YXRlOiBDb25maWcuU3RhdGUpID0+IHtcbiAgICAgIHJldHVybiBzdGF0ZVtrZXldO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHNlbGVjdG9yO1xuICB9XG5cbiAgc3RhdGljIGdldERlZXAoa2V5czogc3RyaW5nW10gfCBzdHJpbmcpIHtcbiAgICBpZiAodHlwZW9mIGtleXMgPT09ICdzdHJpbmcnKSB7XG4gICAgICBrZXlzID0ga2V5cy5zcGxpdCgnLicpO1xuICAgIH1cblxuICAgIGlmICghQXJyYXkuaXNBcnJheShrZXlzKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgYXJndW1lbnQgbXVzdCBiZSBhIGRvdCBzdHJpbmcgb3IgYW4gc3RyaW5nIGFycmF5LicpO1xuICAgIH1cblxuICAgIGNvbnN0IHNlbGVjdG9yID0gY3JlYXRlU2VsZWN0b3IoW0NvbmZpZ1N0YXRlXSwgKHN0YXRlOiBDb25maWcuU3RhdGUpID0+IHtcbiAgICAgIHJldHVybiAoa2V5cyBhcyBzdHJpbmdbXSkucmVkdWNlKChhY2MsIHZhbCkgPT4ge1xuICAgICAgICBpZiAoYWNjKSB7XG4gICAgICAgICAgcmV0dXJuIGFjY1t2YWxdO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH0sIHN0YXRlKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBzZWxlY3RvcjtcbiAgfVxuXG4gIHN0YXRpYyBnZXRBcGlVcmwoa2V5Pzogc3RyaW5nKSB7XG4gICAgY29uc3Qgc2VsZWN0b3IgPSBjcmVhdGVTZWxlY3RvcihbQ29uZmlnU3RhdGVdLCAoc3RhdGU6IENvbmZpZy5TdGF0ZSk6IHN0cmluZyA9PiB7XG4gICAgICByZXR1cm4gKHN0YXRlLmVudmlyb25tZW50LmFwaXNba2V5IHx8ICdkZWZhdWx0J10gfHwgc3RhdGUuZW52aXJvbm1lbnQuYXBpcy5kZWZhdWx0KS51cmw7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gc2VsZWN0b3I7XG4gIH1cblxuICBzdGF0aWMgZ2V0RmVhdHVyZShrZXk6IHN0cmluZykge1xuICAgIGNvbnN0IHNlbGVjdG9yID0gY3JlYXRlU2VsZWN0b3IoW0NvbmZpZ1N0YXRlXSwgKHN0YXRlOiBDb25maWcuU3RhdGUpID0+IHtcbiAgICAgIHJldHVybiBzbnEoKCkgPT4gc3RhdGUuZmVhdHVyZXMudmFsdWVzW2tleV0pO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHNlbGVjdG9yO1xuICB9XG5cbiAgc3RhdGljIGdldFNldHRpbmcoa2V5OiBzdHJpbmcpIHtcbiAgICBjb25zdCBzZWxlY3RvciA9IGNyZWF0ZVNlbGVjdG9yKFtDb25maWdTdGF0ZV0sIChzdGF0ZTogQ29uZmlnLlN0YXRlKSA9PiB7XG4gICAgICByZXR1cm4gc25xKCgpID0+IHN0YXRlLnNldHRpbmcudmFsdWVzW2tleV0pO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHNlbGVjdG9yO1xuICB9XG5cbiAgc3RhdGljIGdldFNldHRpbmdzKGtleXdvcmQ/OiBzdHJpbmcpIHtcbiAgICBjb25zdCBzZWxlY3RvciA9IGNyZWF0ZVNlbGVjdG9yKFtDb25maWdTdGF0ZV0sIChzdGF0ZTogQ29uZmlnLlN0YXRlKSA9PiB7XG4gICAgICBjb25zdCBzZXR0aW5ncyA9IHNucSgoKSA9PiBzdGF0ZS5zZXR0aW5nLnZhbHVlcywge30pO1xuXG4gICAgICBpZiAoIWtleXdvcmQpIHJldHVybiBzZXR0aW5ncztcblxuICAgICAgY29uc3Qga2V5c0ZvdW5kID0gT2JqZWN0LmtleXMoc2V0dGluZ3MpLmZpbHRlcihrZXkgPT4ga2V5LmluZGV4T2Yoa2V5d29yZCkgPiAtMSk7XG5cbiAgICAgIHJldHVybiBrZXlzRm91bmQucmVkdWNlKChhY2MsIGtleSkgPT4ge1xuICAgICAgICBhY2Nba2V5XSA9IHNldHRpbmdzW2tleV07XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgICB9LCB7fSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gc2VsZWN0b3I7XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgdXNlIFBlcm1pc3Npb25TZXJ2aWNlJ3MgZ2V0R3JhbnRlZFBvbGljeVN0cmVhbSBvciBnZXRHcmFudGVkUG9saWN5IG1ldGhvZHMuXG4gICAqL1xuICBzdGF0aWMgZ2V0R3JhbnRlZFBvbGljeShrZXk6IHN0cmluZykge1xuICAgIGNvbnN0IHNlbGVjdG9yID0gY3JlYXRlU2VsZWN0b3IoW0NvbmZpZ1N0YXRlXSwgKHN0YXRlOiBDb25maWcuU3RhdGUpOiBib29sZWFuID0+IHtcbiAgICAgIGlmICgha2V5KSByZXR1cm4gdHJ1ZTtcbiAgICAgIGNvbnN0IGdldFBvbGljeSA9IChrOiBzdHJpbmcpID0+IHNucSgoKSA9PiBzdGF0ZS5hdXRoLmdyYW50ZWRQb2xpY2llc1trXSwgZmFsc2UpO1xuXG4gICAgICBjb25zdCBvclJlZ2V4cCA9IC9cXHxcXHwvZztcbiAgICAgIGNvbnN0IGFuZFJlZ2V4cCA9IC8mJi9nO1xuXG4gICAgICAvLyBUT0RPOiBBbGxvdyBjb21iaW5hdGlvbiBvZiBBTkRzICYgT1JzXG4gICAgICBpZiAob3JSZWdleHAudGVzdChrZXkpKSB7XG4gICAgICAgIGNvbnN0IGtleXMgPSBrZXkuc3BsaXQoJ3x8JykuZmlsdGVyKEJvb2xlYW4pO1xuXG4gICAgICAgIGlmIChrZXlzLmxlbmd0aCA8IDIpIHJldHVybiBmYWxzZTtcblxuICAgICAgICByZXR1cm4ga2V5cy5zb21lKGsgPT4gZ2V0UG9saWN5KGsudHJpbSgpKSk7XG4gICAgICB9IGVsc2UgaWYgKGFuZFJlZ2V4cC50ZXN0KGtleSkpIHtcbiAgICAgICAgY29uc3Qga2V5cyA9IGtleS5zcGxpdCgnJiYnKS5maWx0ZXIoQm9vbGVhbik7XG5cbiAgICAgICAgaWYgKGtleXMubGVuZ3RoIDwgMikgcmV0dXJuIGZhbHNlO1xuXG4gICAgICAgIHJldHVybiBrZXlzLmV2ZXJ5KGsgPT4gZ2V0UG9saWN5KGsudHJpbSgpKSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBnZXRQb2xpY3koa2V5KTtcbiAgICB9KTtcblxuICAgIHJldHVybiBzZWxlY3RvcjtcbiAgfVxuXG4gIHN0YXRpYyBnZXRMb2NhbGl6YXRpb25SZXNvdXJjZShyZXNvdXJjZU5hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IHNlbGVjdG9yID0gY3JlYXRlU2VsZWN0b3IoW0NvbmZpZ1N0YXRlXSwgKHN0YXRlOiBDb25maWcuU3RhdGUpOiB7XG4gICAgICBba2V5OiBzdHJpbmddOiBzdHJpbmc7XG4gICAgfSA9PiB7XG4gICAgICByZXR1cm4gc3RhdGUubG9jYWxpemF0aW9uLnZhbHVlc1tyZXNvdXJjZU5hbWVdO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHNlbGVjdG9yO1xuICB9XG5cbiAgc3RhdGljIGdldExvY2FsaXphdGlvbihcbiAgICBrZXk6IHN0cmluZyB8IENvbmZpZy5Mb2NhbGl6YXRpb25XaXRoRGVmYXVsdCxcbiAgICAuLi5pbnRlcnBvbGF0ZVBhcmFtczogc3RyaW5nW11cbiAgKSB7XG4gICAgaWYgKCFrZXkpIGtleSA9ICcnO1xuICAgIGxldCBkZWZhdWx0VmFsdWU6IHN0cmluZztcblxuICAgIGlmICh0eXBlb2Yga2V5ICE9PSAnc3RyaW5nJykge1xuICAgICAgZGVmYXVsdFZhbHVlID0ga2V5LmRlZmF1bHRWYWx1ZTtcbiAgICAgIGtleSA9IGtleS5rZXk7XG4gICAgfVxuXG4gICAgY29uc3Qga2V5cyA9IGtleS5zcGxpdCgnOjonKSBhcyBzdHJpbmdbXTtcbiAgICBjb25zdCBzZWxlY3RvciA9IGNyZWF0ZVNlbGVjdG9yKFtDb25maWdTdGF0ZV0sIChzdGF0ZTogQ29uZmlnLlN0YXRlKTogc3RyaW5nID0+IHtcbiAgICAgIGNvbnN0IHdhcm4gPSAobWVzc2FnZTogc3RyaW5nKSA9PiB7XG4gICAgICAgIGlmICghc3RhdGUuZW52aXJvbm1lbnQucHJvZHVjdGlvbikgY29uc29sZS53YXJuKG1lc3NhZ2UpO1xuICAgICAgfTtcblxuICAgICAgaWYgKGtleXMubGVuZ3RoIDwgMikge1xuICAgICAgICB3YXJuKCdUaGUgbG9jYWxpemF0aW9uIHNvdXJjZSBzZXBhcmF0b3IgKDo6KSBub3QgZm91bmQuJyk7XG4gICAgICAgIHJldHVybiBkZWZhdWx0VmFsdWUgfHwgKGtleSBhcyBzdHJpbmcpO1xuICAgICAgfVxuICAgICAgaWYgKCFzdGF0ZS5sb2NhbGl6YXRpb24pIHJldHVybiBkZWZhdWx0VmFsdWUgfHwga2V5c1sxXTtcblxuICAgICAgY29uc3Qgc291cmNlTmFtZSA9XG4gICAgICAgIGtleXNbMF0gfHxcbiAgICAgICAgc25xKCgpID0+IHN0YXRlLmVudmlyb25tZW50LmxvY2FsaXphdGlvbi5kZWZhdWx0UmVzb3VyY2VOYW1lKSB8fFxuICAgICAgICBzdGF0ZS5sb2NhbGl6YXRpb24uZGVmYXVsdFJlc291cmNlTmFtZTtcbiAgICAgIGNvbnN0IHNvdXJjZUtleSA9IGtleXNbMV07XG5cbiAgICAgIGlmIChzb3VyY2VOYW1lID09PSAnXycpIHtcbiAgICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZSB8fCBzb3VyY2VLZXk7XG4gICAgICB9XG5cbiAgICAgIGlmICghc291cmNlTmFtZSkge1xuICAgICAgICB3YXJuKFxuICAgICAgICAgICdMb2NhbGl6YXRpb24gc291cmNlIG5hbWUgaXMgbm90IHNwZWNpZmllZCBhbmQgdGhlIGRlZmF1bHRSZXNvdXJjZU5hbWUgd2FzIG5vdCBkZWZpbmVkIScsXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZSB8fCBzb3VyY2VLZXk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHNvdXJjZSA9IHN0YXRlLmxvY2FsaXphdGlvbi52YWx1ZXNbc291cmNlTmFtZV07XG4gICAgICBpZiAoIXNvdXJjZSkge1xuICAgICAgICB3YXJuKCdDb3VsZCBub3QgZmluZCBsb2NhbGl6YXRpb24gc291cmNlOiAnICsgc291cmNlTmFtZSk7XG4gICAgICAgIHJldHVybiBkZWZhdWx0VmFsdWUgfHwgc291cmNlS2V5O1xuICAgICAgfVxuXG4gICAgICBsZXQgbG9jYWxpemF0aW9uID0gc291cmNlW3NvdXJjZUtleV07XG4gICAgICBpZiAodHlwZW9mIGxvY2FsaXphdGlvbiA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZSB8fCBzb3VyY2VLZXk7XG4gICAgICB9XG5cbiAgICAgIGludGVycG9sYXRlUGFyYW1zID0gaW50ZXJwb2xhdGVQYXJhbXMuZmlsdGVyKHBhcmFtcyA9PiBwYXJhbXMgIT0gbnVsbCk7XG4gICAgICBpZiAobG9jYWxpemF0aW9uKSBsb2NhbGl6YXRpb24gPSBpbnRlcnBvbGF0ZShsb2NhbGl6YXRpb24sIGludGVycG9sYXRlUGFyYW1zKTtcblxuICAgICAgaWYgKHR5cGVvZiBsb2NhbGl6YXRpb24gIT09ICdzdHJpbmcnKSBsb2NhbGl6YXRpb24gPSAnJztcblxuICAgICAgcmV0dXJuIGxvY2FsaXphdGlvbiB8fCBkZWZhdWx0VmFsdWUgfHwgKGtleSBhcyBzdHJpbmcpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHNlbGVjdG9yO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxuICAgIHByaXZhdGUgc3RvcmU6IFN0b3JlLFxuICAgIHByaXZhdGUgc2Vzc2lvblN0YXRlOiBTZXNzaW9uU3RhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgZW52aXJvbm1lbnRTZXJ2aWNlOiBFbnZpcm9ubWVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb25maWdTdGF0ZTogQ29uZmlnU3RhdGVTZXJ2aWNlLFxuICApIHtcbiAgICB0aGlzLnN5bmNDb25maWdTdGF0ZSgpO1xuICAgIHRoaXMuc3luY0Vudmlyb25tZW50KCk7XG4gIH1cblxuICBwcml2YXRlIHN5bmNDb25maWdTdGF0ZSgpIHtcbiAgICB0aGlzLmNvbmZpZ1N0YXRlXG4gICAgICAuY3JlYXRlT25VcGRhdGVTdHJlYW0oc3RhdGUgPT4gc3RhdGUpXG4gICAgICAucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZChjb21wYXJlKSlcbiAgICAgIC5zdWJzY3JpYmUoY29uZmlnID0+IHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFBhdGNoQ29uZmlnU3RhdGUoY29uZmlnIGFzIGFueSkpKTtcbiAgfVxuXG4gIHByaXZhdGUgc3luY0Vudmlyb25tZW50KCkge1xuICAgIHRoaXMuZW52aXJvbm1lbnRTZXJ2aWNlXG4gICAgICAuY3JlYXRlT25VcGRhdGVTdHJlYW0oc3RhdGUgPT4gc3RhdGUpXG4gICAgICAucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZChjb21wYXJlKSlcbiAgICAgIC5zdWJzY3JpYmUoZW52ID0+IHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFBhdGNoQ29uZmlnU3RhdGUoeyBlbnZpcm9ubWVudDogZW52IH0gYXMgYW55KSkpO1xuICB9XG5cbiAgQEFjdGlvbihHZXRBcHBDb25maWd1cmF0aW9uKVxuICBhZGREYXRhKHsgcGF0Y2hTdGF0ZSwgZGlzcGF0Y2ggfTogU3RhdGVDb250ZXh0PENvbmZpZy5TdGF0ZT4pIHtcbiAgICBjb25zdCBhcGlOYW1lID0gJ2RlZmF1bHQnO1xuICAgIGNvbnN0IGFwaSA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoQ29uZmlnU3RhdGUuZ2V0QXBpVXJsKGFwaU5hbWUpKTtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0PEFwcGxpY2F0aW9uQ29uZmlndXJhdGlvbkR0bz4oYCR7YXBpfS9hcGkvYWJwL2FwcGxpY2F0aW9uLWNvbmZpZ3VyYXRpb25gKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcChjb25maWd1cmF0aW9uID0+IHRoaXMuY29uZmlnU3RhdGUuc2V0U3RhdGUoY29uZmlndXJhdGlvbikpLFxuICAgICAgICBjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgZGlzcGF0Y2gobmV3IFJlc3RPY2N1ckVycm9yKGVycikpO1xuICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycik7XG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgfVxuXG4gIEBBY3Rpb24oU2V0RW52aXJvbm1lbnQpXG4gIHNldEVudmlyb25tZW50KF8sIHsgZW52aXJvbm1lbnQgfTogU2V0RW52aXJvbm1lbnQpIHtcbiAgICByZXR1cm4gdGhpcy5lbnZpcm9ubWVudFNlcnZpY2Uuc2V0U3RhdGUoZW52aXJvbm1lbnQpO1xuICB9XG5cbiAgQEFjdGlvbihQYXRjaENvbmZpZ1N0YXRlKVxuICBzZXRDb25maWcoeyBwYXRjaFN0YXRlLCBnZXRTdGF0ZSB9OiBTdGF0ZUNvbnRleHQ8Q29uZmlnLlN0YXRlPiwgeyBzdGF0ZSB9OiBQYXRjaENvbmZpZ1N0YXRlKSB7XG4gICAgcGF0Y2hTdGF0ZSh7IC4uLmdldFN0YXRlKCksIC4uLnN0YXRlIH0pO1xuICB9XG59XG4iXX0=
|
|
230
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLnN0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL3N0YXRlcy9jb25maWcuc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQWdCLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMzRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxVQUFVLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEdBQUcsTUFBTSxLQUFLLENBQUM7QUFDdEIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUVyRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDcEQsT0FBTyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBRW5DOztHQUVHO0lBTVUsV0FBVyx5QkFBWCxXQUFXO0lBc010QixZQUNVLEtBQVksRUFDWixrQkFBc0MsRUFDdEMsV0FBK0I7UUFGL0IsVUFBSyxHQUFMLEtBQUssQ0FBTztRQUNaLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsZ0JBQVcsR0FBWCxXQUFXLENBQW9CO1FBRXZDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFD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Q0FBQztDQUNGLENBQUE7O1lBblBBLFVBQVU7OztZQXBCcUQsS0FBSztZQVE1RCxrQkFBa0I7WUFEbEIsa0JBQWtCOztBQTRPekI7SUFEQyxNQUFNLENBQUMsbUJBQW1CLENBQUM7MENBVTNCO0FBR0Q7SUFEQyxNQUFNLENBQUMsY0FBYyxDQUFDO2lEQUd0QjtBQUdEO0lBREMsTUFBTSxDQUFDLGdCQUFnQixDQUFDOzRDQUd4QjtBQS9PRDtJQURDLFFBQVEsRUFBRTsrQkFHVjtBQUdEO0lBREMsUUFBUSxFQUFFOzJDQUdWO0FBR0Q7SUFEQyxRQUFRLEVBQUU7dUNBR1Y7QUFkVSxXQUFXO0lBTHZCLEtBQUssQ0FBZTtRQUNuQixJQUFJLEVBQUUsYUFBYTtRQUNuQixRQUFRLEVBQUUsRUFBa0I7S0FDN0IsQ0FBQztHQUVXLFdBQVcsQ0FrUHZCO1NBbFBZLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGlvbiwgY3JlYXRlU2VsZWN0b3IsIFNlbGVjdG9yLCBTdGF0ZSwgU3RhdGVDb250ZXh0LCBTdG9yZSB9IGZyb20gJ0BuZ3hzL3N0b3JlJztcbmltcG9ydCB7IHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGRpc3RpbmN0VW50aWxDaGFuZ2VkIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHNucSBmcm9tICdzbnEnO1xuaW1wb3J0IHsgR2V0QXBwQ29uZmlndXJhdGlvbiwgUGF0Y2hDb25maWdTdGF0ZSwgU2V0RW52aXJvbm1lbnQgfSBmcm9tICcuLi9hY3Rpb25zL2NvbmZpZy5hY3Rpb25zJztcbmltcG9ydCB7IFJlc3RPY2N1ckVycm9yIH0gZnJvbSAnLi4vYWN0aW9ucy9yZXN0LmFjdGlvbnMnO1xuaW1wb3J0IHsgQ29uZmlnIH0gZnJvbSAnLi4vbW9kZWxzL2NvbmZpZyc7XG5pbXBvcnQgeyBDb25maWdTdGF0ZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9jb25maWctc3RhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBFbnZpcm9ubWVudFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9lbnZpcm9ubWVudC5zZXJ2aWNlJztcbmltcG9ydCB7IFNlc3Npb25TdGF0ZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9zZXNzaW9uLXN0YXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgaW50ZXJwb2xhdGUgfSBmcm9tICcuLi91dGlscy9zdHJpbmctdXRpbHMnO1xuaW1wb3J0IGNvbXBhcmUgZnJvbSAnanVzdC1jb21wYXJlJztcblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQ29uZmlnU3RhdGVTZXJ2aWNlIGluc3RlYWQuIFRvIGJlIGRlbGV0ZWQgaW4gdjUuMC5cbiAqL1xuQFN0YXRlPENvbmZpZy5TdGF0ZT4oe1xuICBuYW1lOiAnQ29uZmlnU3RhdGUnLFxuICBkZWZhdWx0czoge30gYXMgQ29uZmlnLlN0YXRlLFxufSlcbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDb25maWdTdGF0ZSB7XG4gIEBTZWxlY3RvcigpXG4gIHN0YXRpYyBnZXRBbGwoc3RhdGU6IENvbmZpZy5TdGF0ZSkge1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHN0YXRpYyBnZXRBcHBsaWNhdGlvbkluZm8oc3RhdGU6IENvbmZpZy5TdGF0ZSk6IENvbmZpZy5BcHBsaWNhdGlvbiB7XG4gICAgcmV0dXJuIHN0YXRlLmVudmlyb25tZW50LmFwcGxpY2F0aW9uIHx8ICh7fSBhcyBDb25maWcuQXBwbGljYXRpb24pO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgc3RhdGljIGdldEVudmlyb25tZW50KHN0YXRlOiBDb25maWcuU3RhdGUpOiBDb25maWcuRW52aXJvbm1lbnQge1xuICAgIHJldHVybiBzdGF0ZS5lbnZpcm9ubWVudDtcbiAgfVxuXG4gIHN0YXRpYyBnZXRPbmUoa2V5OiBzdHJpbmcpIHtcbiAgICBjb25zdCBzZWxlY3RvciA9IGNyZWF0ZVNlbGVjdG9yKFtDb25maWdTdGF0ZV0sIChzdGF0ZTogQ29uZmlnLlN0YXRlKSA9PiB7XG4gICAgICByZXR1cm4gc3RhdGVba2V5XTtcbiAgICB9KTtcblxuICAgIHJldHVybiBzZWxlY3RvcjtcbiAgfVxuXG4gIHN0YXRpYyBnZXREZWVwKGtleXM6IHN0cmluZ1tdIHwgc3RyaW5nKSB7XG4gICAgaWYgKHR5cGVvZiBrZXlzID09PSAnc3RyaW5nJykge1xuICAgICAga2V5cyA9IGtleXMuc3BsaXQoJy4nKTtcbiAgICB9XG5cbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoa2V5cykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIGFyZ3VtZW50IG11c3QgYmUgYSBkb3Qgc3RyaW5nIG9yIGFuIHN0cmluZyBhcnJheS4nKTtcbiAgICB9XG5cbiAgICBjb25zdCBzZWxlY3RvciA9IGNyZWF0ZVNlbGVjdG9yKFtDb25maWdTdGF0ZV0sIChzdGF0ZTogQ29uZmlnLlN0YXRlKSA9PiB7XG4gICAgICByZXR1cm4gKGtleXMgYXMgc3RyaW5nW10pLnJlZHVjZSgoYWNjLCB2YWwpID0+IHtcbiAgICAgICAgaWYgKGFjYykge1xuICAgICAgICAgIHJldHVybiBhY2NbdmFsXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9LCBzdGF0ZSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gc2VsZWN0b3I7XG4gIH1cblxuICBzdGF0aWMgZ2V0QXBpVXJsKGtleT86IHN0cmluZykge1xuICAgIGNvbnN0IHNlbGVjdG9yID0gY3JlYXRlU2VsZWN0b3IoW0NvbmZpZ1N0YXRlXSwgKHN0YXRlOiBDb25maWcuU3RhdGUpOiBzdHJpbmcgPT4ge1xuICAgICAgcmV0dXJuIChzdGF0ZS5lbnZpcm9ubWVudC5hcGlzW2tleSB8fCAnZGVmYXVsdCddIHx8IHN0YXRlLmVudmlyb25tZW50LmFwaXMuZGVmYXVsdCkudXJsO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHNlbGVjdG9yO1xuICB9XG5cbiAgc3RhdGljIGdldEZlYXR1cmUoa2V5OiBzdHJpbmcpIHtcbiAgICBjb25zdCBzZWxlY3RvciA9IGNyZWF0ZVNlbGVjdG9yKFtDb25maWdTdGF0ZV0sIChzdGF0ZTogQ29uZmlnLlN0YXRlKSA9PiB7XG4gICAgICByZXR1cm4gc25xKCgpID0+IHN0YXRlLmZlYXR1cmVzLnZhbHVlc1trZXldKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBzZWxlY3RvcjtcbiAgfVxuXG4gIHN0YXRpYyBnZXRTZXR0aW5nKGtleTogc3RyaW5nKSB7XG4gICAgY29uc3Qgc2VsZWN0b3IgPSBjcmVhdGVTZWxlY3RvcihbQ29uZmlnU3RhdGVdLCAoc3RhdGU6IENvbmZpZy5TdGF0ZSkgPT4ge1xuICAgICAgcmV0dXJuIHNucSgoKSA9PiBzdGF0ZS5zZXR0aW5nLnZhbHVlc1trZXldKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBzZWxlY3RvcjtcbiAgfVxuXG4gIHN0YXRpYyBnZXRTZXR0aW5ncyhrZXl3b3JkPzogc3RyaW5nKSB7XG4gICAgY29uc3Qgc2VsZWN0b3IgPSBjcmVhdGVTZWxlY3RvcihbQ29uZmlnU3RhdGVdLCAoc3RhdGU6IENvbmZpZy5TdGF0ZSkgPT4ge1xuICAgICAgY29uc3Qgc2V0dGluZ3MgPSBzbnEoKCkgPT4gc3RhdGUuc2V0dGluZy52YWx1ZXMsIHt9KTtcblxuICAgICAgaWYgKCFrZXl3b3JkKSByZXR1cm4gc2V0dGluZ3M7XG5cbiAgICAgIGNvbnN0IGtleXNGb3VuZCA9IE9iamVjdC5rZXlzKHNldHRpbmdzKS5maWx0ZXIoa2V5ID0+IGtleS5pbmRleE9mKGtleXdvcmQpID4gLTEpO1xuXG4gICAgICByZXR1cm4ga2V5c0ZvdW5kLnJlZHVjZSgoYWNjLCBrZXkpID0+IHtcbiAgICAgICAgYWNjW2tleV0gPSBzZXR0aW5nc1trZXldO1xuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfSwge30pO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHNlbGVjdG9yO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHVzZSBQZXJtaXNzaW9uU2VydmljZSdzIGdldEdyYW50ZWRQb2xpY3lTdHJlYW0gb3IgZ2V0R3JhbnRlZFBvbGljeSBtZXRob2RzLlxuICAgKi9cbiAgc3RhdGljIGdldEdyYW50ZWRQb2xpY3koa2V5OiBzdHJpbmcpIHtcbiAgICBjb25zdCBzZWxlY3RvciA9IGNyZWF0ZVNlbGVjdG9yKFtDb25maWdTdGF0ZV0sIChzdGF0ZTogQ29uZmlnLlN0YXRlKTogYm9vbGVhbiA9PiB7XG4gICAgICBpZiAoIWtleSkgcmV0dXJuIHRydWU7XG4gICAgICBjb25zdCBnZXRQb2xpY3kgPSAoazogc3RyaW5nKSA9PiBzbnEoKCkgPT4gc3RhdGUuYXV0aC5ncmFudGVkUG9saWNpZXNba10sIGZhbHNlKTtcblxuICAgICAgY29uc3Qgb3JSZWdleHAgPSAvXFx8XFx8L2c7XG4gICAgICBjb25zdCBhbmRSZWdleHAgPSAvJiYvZztcblxuICAgICAgLy8gVE9ETzogQWxsb3cgY29tYmluYXRpb24gb2YgQU5EcyAmIE9Sc1xuICAgICAgaWYgKG9yUmVnZXhwLnRlc3Qoa2V5KSkge1xuICAgICAgICBjb25zdCBrZXlzID0ga2V5LnNwbGl0KCd8fCcpLmZpbHRlcihCb29sZWFuKTtcblxuICAgICAgICBpZiAoa2V5cy5sZW5ndGggPCAyKSByZXR1cm4gZmFsc2U7XG5cbiAgICAgICAgcmV0dXJuIGtleXMuc29tZShrID0+IGdldFBvbGljeShrLnRyaW0oKSkpO1xuICAgICAgfSBlbHNlIGlmIChhbmRSZWdleHAudGVzdChrZXkpKSB7XG4gICAgICAgIGNvbnN0IGtleXMgPSBrZXkuc3BsaXQoJyYmJykuZmlsdGVyKEJvb2xlYW4pO1xuXG4gICAgICAgIGlmIChrZXlzLmxlbmd0aCA8IDIpIHJldHVybiBmYWxzZTtcblxuICAgICAgICByZXR1cm4ga2V5cy5ldmVyeShrID0+IGdldFBvbGljeShrLnRyaW0oKSkpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZ2V0UG9saWN5KGtleSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gc2VsZWN0b3I7XG4gIH1cblxuICBzdGF0aWMgZ2V0TG9jYWxpemF0aW9uUmVzb3VyY2UocmVzb3VyY2VOYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBzZWxlY3RvciA9IGNyZWF0ZVNlbGVjdG9yKFxuICAgICAgW0NvbmZpZ1N0YXRlXSxcbiAgICAgIChcbiAgICAgICAgc3RhdGU6IENvbmZpZy5TdGF0ZSxcbiAgICAgICk6IHtcbiAgICAgICAgW2tleTogc3RyaW5nXTogc3RyaW5nO1xuICAgICAgfSA9PiB7XG4gICAgICAgIHJldHVybiBzdGF0ZS5sb2NhbGl6YXRpb24udmFsdWVzW3Jlc291cmNlTmFtZV07XG4gICAgICB9LFxuICAgICk7XG5cbiAgICByZXR1cm4gc2VsZWN0b3I7XG4gIH1cblxuICBzdGF0aWMgZ2V0TG9jYWxpemF0aW9uKFxuICAgIGtleTogc3RyaW5nIHwgQ29uZmlnLkxvY2FsaXphdGlvbldpdGhEZWZhdWx0LFxuICAgIC4uLmludGVycG9sYXRlUGFyYW1zOiBzdHJpbmdbXVxuICApIHtcbiAgICBpZiAoIWtleSkga2V5ID0gJyc7XG4gICAgbGV0IGRlZmF1bHRWYWx1ZTogc3RyaW5nO1xuXG4gICAgaWYgKHR5cGVvZiBrZXkgIT09ICdzdHJpbmcnKSB7XG4gICAgICBkZWZhdWx0VmFsdWUgPSBrZXkuZGVmYXVsdFZhbHVlO1xuICAgICAga2V5ID0ga2V5LmtleTtcbiAgICB9XG5cbiAgICBjb25zdCBrZXlzID0ga2V5LnNwbGl0KCc6OicpIGFzIHN0cmluZ1tdO1xuICAgIGNvbnN0IHNlbGVjdG9yID0gY3JlYXRlU2VsZWN0b3IoW0NvbmZpZ1N0YXRlXSwgKHN0YXRlOiBDb25maWcuU3RhdGUpOiBzdHJpbmcgPT4ge1xuICAgICAgY29uc3Qgd2FybiA9IChtZXNzYWdlOiBzdHJpbmcpID0+IHtcbiAgICAgICAgaWYgKCFzdGF0ZS5lbnZpcm9ubWVudC5wcm9kdWN0aW9uKSBjb25zb2xlLndhcm4obWVzc2FnZSk7XG4gICAgICB9O1xuXG4gICAgICBpZiAoa2V5cy5sZW5ndGggPCAyKSB7XG4gICAgICAgIHdhcm4oJ1RoZSBsb2NhbGl6YXRpb24gc291cmNlIHNlcGFyYXRvciAoOjopIG5vdCBmb3VuZC4nKTtcbiAgICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZSB8fCAoa2V5IGFzIHN0cmluZyk7XG4gICAgICB9XG4gICAgICBpZiAoIXN0YXRlLmxvY2FsaXphdGlvbikgcmV0dXJuIGRlZmF1bHRWYWx1ZSB8fCBrZXlzWzFdO1xuXG4gICAgICBjb25zdCBzb3VyY2VOYW1lID1cbiAgICAgICAga2V5c1swXSB8fFxuICAgICAgICBzbnEoKCkgPT4gc3RhdGUuZW52aXJvbm1lbnQubG9jYWxpemF0aW9uLmRlZmF1bHRSZXNvdXJjZU5hbWUpIHx8XG4gICAgICAgIHN0YXRlLmxvY2FsaXphdGlvbi5kZWZhdWx0UmVzb3VyY2VOYW1lO1xuICAgICAgY29uc3Qgc291cmNlS2V5ID0ga2V5c1sxXTtcblxuICAgICAgaWYgKHNvdXJjZU5hbWUgPT09ICdfJykge1xuICAgICAgICByZXR1cm4gZGVmYXVsdFZhbHVlIHx8IHNvdXJjZUtleTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFzb3VyY2VOYW1lKSB7XG4gICAgICAgIHdhcm4oXG4gICAgICAgICAgJ0xvY2FsaXphdGlvbiBzb3VyY2UgbmFtZSBpcyBub3Qgc3BlY2lmaWVkIGFuZCB0aGUgZGVmYXVsdFJlc291cmNlTmFtZSB3YXMgbm90IGRlZmluZWQhJyxcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gZGVmYXVsdFZhbHVlIHx8IHNvdXJjZUtleTtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgc291cmNlID0gc3RhdGUubG9jYWxpemF0aW9uLnZhbHVlc1tzb3VyY2VOYW1lXTtcbiAgICAgIGlmICghc291cmNlKSB7XG4gICAgICAgIHdhcm4oJ0NvdWxkIG5vdCBmaW5kIGxvY2FsaXphdGlvbiBzb3VyY2U6ICcgKyBzb3VyY2VOYW1lKTtcbiAgICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZSB8fCBzb3VyY2VLZXk7XG4gICAgICB9XG5cbiAgICAgIGxldCBsb2NhbGl6YXRpb24gPSBzb3VyY2Vbc291cmNlS2V5XTtcbiAgICAgIGlmICh0eXBlb2YgbG9jYWxpemF0aW9uID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICByZXR1cm4gZGVmYXVsdFZhbHVlIHx8IHNvdXJjZUtleTtcbiAgICAgIH1cblxuICAgICAgaW50ZXJwb2xhdGVQYXJhbXMgPSBpbnRlcnBvbGF0ZVBhcmFtcy5maWx0ZXIocGFyYW1zID0+IHBhcmFtcyAhPSBudWxsKTtcbiAgICAgIGlmIChsb2NhbGl6YXRpb24pIGxvY2FsaXphdGlvbiA9IGludGVycG9sYXRlKGxvY2FsaXphdGlvbiwgaW50ZXJwb2xhdGVQYXJhbXMpO1xuXG4gICAgICBpZiAodHlwZW9mIGxvY2FsaXphdGlvbiAhPT0gJ3N0cmluZycpIGxvY2FsaXphdGlvbiA9ICcnO1xuXG4gICAgICByZXR1cm4gbG9jYWxpemF0aW9uIHx8IGRlZmF1bHRWYWx1ZSB8fCAoa2V5IGFzIHN0cmluZyk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gc2VsZWN0b3I7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHN0b3JlOiBTdG9yZSxcbiAgICBwcml2YXRlIGVudmlyb25tZW50U2VydmljZTogRW52aXJvbm1lbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29uZmlnU3RhdGU6IENvbmZpZ1N0YXRlU2VydmljZSxcbiAgKSB7XG4gICAgdGhpcy5zeW5jQ29uZmlnU3RhdGUoKTtcbiAgICB0aGlzLnN5bmNFbnZpcm9ubWVudCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzeW5jQ29uZmlnU3RhdGUoKSB7XG4gICAgdGhpcy5jb25maWdTdGF0ZVxuICAgICAgLmNyZWF0ZU9uVXBkYXRlU3RyZWFtKHN0YXRlID0+IHN0YXRlKVxuICAgICAgLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoY29tcGFyZSkpXG4gICAgICAuc3Vic2NyaWJlKGNvbmZpZyA9PiB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBQYXRjaENvbmZpZ1N0YXRlKGNvbmZpZyBhcyBhbnkpKSk7XG4gIH1cblxuICBwcml2YXRlIHN5bmNFbnZpcm9ubWVudCgpIHtcbiAgICB0aGlzLmVudmlyb25tZW50U2VydmljZVxuICAgICAgLmNyZWF0ZU9uVXBkYXRlU3RyZWFtKHN0YXRlID0+IHN0YXRlKVxuICAgICAgLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoY29tcGFyZSkpXG4gICAgICAuc3Vic2NyaWJlKGVudiA9PiB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBQYXRjaENvbmZpZ1N0YXRlKHsgZW52aXJvbm1lbnQ6IGVudiB9IGFzIGFueSkpKTtcbiAgfVxuXG4gIEBBY3Rpb24oR2V0QXBwQ29uZmlndXJhdGlvbilcbiAgYWRkRGF0YSh7IHBhdGNoU3RhdGUsIGRpc3BhdGNoIH06IFN0YXRlQ29udGV4dDxDb25maWcuU3RhdGU+KSB7XG4gICAgY29uc3QgYXBpTmFtZSA9ICdkZWZhdWx0JztcbiAgICBjb25zdCBhcGkgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KENvbmZpZ1N0YXRlLmdldEFwaVVybChhcGlOYW1lKSk7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnU3RhdGUucmVmcmVzaEFwcFN0YXRlKCkucGlwZShcbiAgICAgIGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcbiAgICAgICAgZGlzcGF0Y2gobmV3IFJlc3RPY2N1ckVycm9yKGVycikpO1xuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnIpO1xuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIEBBY3Rpb24oU2V0RW52aXJvbm1lbnQpXG4gIHNldEVudmlyb25tZW50KF8sIHsgZW52aXJvbm1lbnQgfTogU2V0RW52aXJvbm1lbnQpIHtcbiAgICByZXR1cm4gdGhpcy5lbnZpcm9ubWVudFNlcnZpY2Uuc2V0U3RhdGUoZW52aXJvbm1lbnQpO1xuICB9XG5cbiAgQEFjdGlvbihQYXRjaENvbmZpZ1N0YXRlKVxuICBzZXRDb25maWcoeyBwYXRjaFN0YXRlLCBnZXRTdGF0ZSB9OiBTdGF0ZUNvbnRleHQ8Q29uZmlnLlN0YXRlPiwgeyBzdGF0ZSB9OiBQYXRjaENvbmZpZ1N0YXRlKSB7XG4gICAgcGF0Y2hTdGF0ZSh7IC4uLmdldFN0YXRlKCksIC4uLnN0YXRlIH0pO1xuICB9XG59XG4iXX0=
|
|
@@ -6,7 +6,6 @@ import { OAuthErrorEvent, OAuthInfoEvent, OAuthService, } from 'angular-oauth2-o
|
|
|
6
6
|
import { from, of, pipe } from 'rxjs';
|
|
7
7
|
import { filter, switchMap, tap } from 'rxjs/operators';
|
|
8
8
|
import { RestOccurError } from '../actions/rest.actions';
|
|
9
|
-
import { AbpApplicationConfigurationService } from '../proxy/volo/abp/asp-net-core/mvc/application-configurations/abp-application-configuration.service';
|
|
10
9
|
import { ConfigStateService } from '../services/config-state.service';
|
|
11
10
|
import { EnvironmentService } from '../services/environment.service';
|
|
12
11
|
import { SessionStateService } from '../services/session-state.service';
|
|
@@ -22,7 +21,6 @@ export class AuthFlowStrategy {
|
|
|
22
21
|
this.environment = injector.get(EnvironmentService);
|
|
23
22
|
this.configState = injector.get(ConfigStateService);
|
|
24
23
|
this.oAuthService = injector.get(OAuthService);
|
|
25
|
-
this.appConfigService = injector.get(AbpApplicationConfigurationService);
|
|
26
24
|
this.sessionState = injector.get(SessionStateService);
|
|
27
25
|
this.oAuthConfig = this.environment.getEnvironment().oAuthConfig;
|
|
28
26
|
this.tenantKey = injector.get(TENANT_KEY);
|
|
@@ -34,6 +32,9 @@ export class AuthFlowStrategy {
|
|
|
34
32
|
if (shouldClear)
|
|
35
33
|
clearOAuthStorage(oAuthStorage);
|
|
36
34
|
this.oAuthService.configure(this.oAuthConfig);
|
|
35
|
+
this.oAuthService.events
|
|
36
|
+
.pipe(filter(event => event.type === 'token_refresh_error'))
|
|
37
|
+
.subscribe(() => this.navigateToLogin());
|
|
37
38
|
return this.oAuthService
|
|
38
39
|
.loadDiscoveryDocument()
|
|
39
40
|
.then(() => {
|
|
@@ -50,10 +51,8 @@ export class AuthFlowStrategy {
|
|
|
50
51
|
}
|
|
51
52
|
listenToOauthErrors() {
|
|
52
53
|
this.oAuthService.events
|
|
53
|
-
.pipe(filter(event => event instanceof OAuthErrorEvent), tap(() => clearOAuthStorage()), switchMap(() => this.
|
|
54
|
-
.subscribe(
|
|
55
|
-
this.configState.setState(res);
|
|
56
|
-
});
|
|
54
|
+
.pipe(filter(event => event instanceof OAuthErrorEvent), tap(() => clearOAuthStorage()), switchMap(() => this.configState.refreshAppState()))
|
|
55
|
+
.subscribe();
|
|
57
56
|
}
|
|
58
57
|
}
|
|
59
58
|
export class AuthCodeFlowStrategy extends AuthFlowStrategy {
|
|
@@ -110,9 +109,7 @@ export class AuthPasswordFlowStrategy extends AuthFlowStrategy {
|
|
|
110
109
|
else {
|
|
111
110
|
this.oAuthService.logOut();
|
|
112
111
|
removeRememberMe();
|
|
113
|
-
this.
|
|
114
|
-
this.configState.setState(res);
|
|
115
|
-
});
|
|
112
|
+
this.configState.refreshAppState().subscribe();
|
|
116
113
|
}
|
|
117
114
|
});
|
|
118
115
|
}
|
|
@@ -140,8 +137,7 @@ export class AuthPasswordFlowStrategy extends AuthFlowStrategy {
|
|
|
140
137
|
}
|
|
141
138
|
pipeToLogin(params) {
|
|
142
139
|
const router = this.injector.get(Router);
|
|
143
|
-
return pipe(switchMap(() => this.
|
|
144
|
-
this.configState.setState(res);
|
|
140
|
+
return pipe(switchMap(() => this.configState.refreshAppState()), tap(() => {
|
|
145
141
|
setRememberMe(params.rememberMe);
|
|
146
142
|
if (params.redirectUrl)
|
|
147
143
|
router.navigate([params.redirectUrl]);
|
|
@@ -149,8 +145,7 @@ export class AuthPasswordFlowStrategy extends AuthFlowStrategy {
|
|
|
149
145
|
}
|
|
150
146
|
logout(queryParams) {
|
|
151
147
|
const router = this.injector.get(Router);
|
|
152
|
-
return from(this.oAuthService.revokeTokenAndLogout(queryParams)).pipe(switchMap(() => this.
|
|
153
|
-
this.configState.setState(res);
|
|
148
|
+
return from(this.oAuthService.revokeTokenAndLogout(queryParams)).pipe(switchMap(() => this.configState.refreshAppState()), tap(() => {
|
|
154
149
|
router.navigateByUrl('/');
|
|
155
150
|
removeRememberMe();
|
|
156
151
|
}));
|
|
@@ -202,4 +197,4 @@ function getCookieValueByName(name) {
|
|
|
202
197
|
const match = document.cookie.match(new RegExp('(^| )' + name + '=([^;]+)'));
|
|
203
198
|
return match ? match[2] : '';
|
|
204
199
|
}
|
|
205
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1mbG93LnN0cmF0ZWd5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL3N0cmF0ZWdpZXMvYXV0aC1mbG93LnN0cmF0ZWd5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFbkQsT0FBTyxFQUFVLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDcEMsT0FBTyxFQUVMLGVBQWUsRUFDZixjQUFjLEVBQ2QsWUFBWSxHQUViLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLElBQUksRUFBYyxFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxxR0FBcUcsQ0FBQztBQUN6SixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzdDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUV4RCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsWUFBWSxDQUFDO0FBRXpDLE1BQU0sT0FB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QUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQy9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQYXJhbXMsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3hzL3N0b3JlJztcbmltcG9ydCB7XG4gIEF1dGhDb25maWcsXG4gIE9BdXRoRXJyb3JFdmVudCxcbiAgT0F1dGhJbmZvRXZlbnQsXG4gIE9BdXRoU2VydmljZSxcbiAgT0F1dGhTdG9yYWdlLFxufSBmcm9tICdhbmd1bGFyLW9hdXRoMi1vaWRjJztcbmltcG9ydCB7IGZyb20sIE9ic2VydmFibGUsIG9mLCBwaXBlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgUmVzdE9jY3VyRXJyb3IgfSBmcm9tICcuLi9hY3Rpb25zL3Jlc3QuYWN0aW9ucyc7XG5pbXBvcnQgeyBMb2dpblBhcmFtcyB9IGZyb20gJy4uL21vZGVscy9hdXRoJztcbmltcG9ydCB7IEFicEFwcGxpY2F0aW9uQ29uZmlndXJhdGlvblNlcnZpY2UgfSBmcm9tICcuLi9wcm94eS92b2xvL2FicC9hc3AtbmV0LWNvcmUvbXZjL2FwcGxpY2F0aW9uLWNvbmZpZ3VyYXRpb25zL2FicC1hcHBsaWNhdGlvbi1jb25maWd1cmF0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29uZmlnU3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvY29uZmlnLXN0YXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgRW52aXJvbm1lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZW52aXJvbm1lbnQuc2VydmljZSc7XG5pbXBvcnQgeyBTZXNzaW9uU3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvc2Vzc2lvbi1zdGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IHJlbW92ZVJlbWVtYmVyTWUsIHNldFJlbWVtYmVyTWUgfSBmcm9tICcuLi91dGlscy9hdXRoLXV0aWxzJztcbmltcG9ydCB7IG5vb3AgfSBmcm9tICcuLi91dGlscy9jb21tb24tdXRpbHMnO1xuaW1wb3J0IHsgVEVOQU5UX0tFWSB9IGZyb20gJy4uL3Rva2Vucy90ZW5hbnQta2V5LnRva2VuJztcblxuZXhwb3J0IGNvbnN0IG9BdXRoU3RvcmFnZSA9IGxvY2FsU3RvcmFnZTtcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEF1dGhGbG93U3RyYXRlZ3kge1xuICBhYnN0cmFjdCByZWFkb25seSBpc0ludGVybmFsQXV0aDogYm9vbGVhbjtcblxuICBwcm90ZWN0ZWQgc3RvcmU6IFN0b3JlO1xuICBwcm90ZWN0ZWQgZW52aXJvbm1lbnQ6IEVudmlyb25tZW50U2VydmljZTtcbiAgcHJvdGVjdGVkIGNvbmZpZ1N0YXRlOiBDb25maWdTdGF0ZVNlcnZpY2U7XG4gIHByb3RlY3RlZCBvQXV0aFNlcnZpY2U6IE9BdXRoU2VydmljZTtcbiAgcHJvdGVjdGVkIG9BdXRoQ29uZmlnOiBBdXRoQ29uZmlnO1xuICBwcm90ZWN0ZWQgc2Vzc2lvblN0YXRlOiBTZXNzaW9uU3RhdGVTZXJ2aWNlO1xuICBwcm90ZWN0ZWQgYXBwQ29uZmlnU2VydmljZTogQWJwQXBwbGljYXRpb25Db25maWd1cmF0aW9uU2VydmljZTtcbiAgcHJvdGVjdGVkIHRlbmFudEtleTogc3RyaW5nO1xuXG4gIGFic3RyYWN0IGNoZWNrSWZJbnRlcm5hbEF1dGgocXVlcnlQYXJhbXM/OiBQYXJhbXMpOiBib29sZWFuO1xuICBhYnN0cmFjdCBuYXZpZ2F0ZVRvTG9naW4ocXVlcnlQYXJhbXM/OiBQYXJhbXMpOiB2b2lkO1xuICBhYnN0cmFjdCBsb2dvdXQocXVlcnlQYXJhbXM/OiBQYXJhbXMpOiBPYnNlcnZhYmxlPGFueT47XG4gIGFic3RyYWN0IGxvZ2luKHBhcmFtcz86IExvZ2luUGFyYW1zIHwgUGFyYW1zKTogT2JzZXJ2YWJsZTxhbnk+O1xuXG4gIHByaXZhdGUgY2F0Y2hFcnJvciA9IGVyciA9PiB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBSZXN0T2NjdXJFcnJvcihlcnIpKTtcblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgdGhpcy5zdG9yZSA9IGluamVjdG9yLmdldChTdG9yZSk7XG4gICAgdGhpcy5lbnZpcm9ubWVudCA9IGluamVjdG9yLmdldChFbnZpcm9ubWVudFNlcnZpY2UpO1xuICAgIHRoaXMuY29uZmlnU3RhdGUgPSBpbmplY3Rvci5nZXQoQ29uZmlnU3RhdGVTZXJ2aWNlKTtcbiAgICB0aGlzLm9BdXRoU2VydmljZSA9IGluamVjdG9yLmdldChPQXV0aFNlcnZpY2UpO1xuICAgIHRoaXMuYXBwQ29uZmlnU2VydmljZSA9IGluamVjdG9yLmdldChBYnBBcHBsaWNhdGlvbkNvbmZpZ3VyYXRpb25TZXJ2aWNlKTtcbiAgICB0aGlzLnNlc3Npb25TdGF0ZSA9IGluamVjdG9yLmdldChTZXNzaW9uU3RhdGVTZXJ2aWNlKTtcbiAgICB0aGlzLm9BdXRoQ29uZmlnID0gdGhpcy5lbnZpcm9ubWVudC5nZXRFbnZpcm9ubWVudCgpLm9BdXRoQ29uZmlnO1xuICAgIHRoaXMudGVuYW50S2V5ID0gaW5qZWN0b3IuZ2V0KFRFTkFOVF9LRVkpO1xuXG4gICAgdGhpcy5saXN0ZW5Ub09hdXRoRXJyb3JzKCk7XG4gIH1cblxuICBhc3luYyBpbml0KCk6IFByb21pc2U8YW55PiB7XG4gICAgY29uc3Qgc2hvdWxkQ2xlYXIgPSBzaG91bGRTdG9yYWdlQ2xlYXIoXG4gICAgICB0aGlzLmVudmlyb25tZW50LmdldEVudmlyb25tZW50KCkub0F1dGhDb25maWcuY2xpZW50SWQsXG4gICAgICBvQXV0aFN0b3JhZ2UsXG4gICAgKTtcbiAgICBpZiAoc2hvdWxkQ2xlYXIpIGNsZWFyT0F1dGhTdG9yYWdlKG9BdXRoU3RvcmFnZSk7XG5cbiAgICB0aGlzLm9BdXRoU2VydmljZS5jb25maWd1cmUodGhpcy5vQXV0aENvbmZpZyk7XG4gICAgcmV0dXJuIHRoaXMub0F1dGhTZXJ2aWNlXG4gICAgICAubG9hZERpc2NvdmVyeURvY3VtZW50KClcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMub0F1dGhTZXJ2aWNlLmhhc1ZhbGlkQWNjZXNzVG9rZW4oKSB8fCAhdGhpcy5vQXV0aFNlcnZpY2UuZ2V0UmVmcmVzaFRva2VuKCkpIHtcbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5yZWZyZXNoVG9rZW4oKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2godGhpcy5jYXRjaEVycm9yKTtcbiAgfVxuXG4gIHByb3RlY3RlZCByZWZyZXNoVG9rZW4oKSB7XG4gICAgcmV0dXJuIHRoaXMub0F1dGhTZXJ2aWNlLnJlZnJlc2hUb2tlbigpLmNhdGNoKCgpID0+IGNsZWFyT0F1dGhTdG9yYWdlKCkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGxpc3RlblRvT2F1dGhFcnJvcnMoKSB7XG4gICAgdGhpcy5vQXV0aFNlcnZpY2UuZXZlbnRzXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKGV2ZW50ID0+IGV2ZW50IGluc3RhbmNlb2YgT0F1dGhFcnJvckV2ZW50KSxcbiAgICAgICAgdGFwKCgpID0+IGNsZWFyT0F1dGhTdG9yYWdlKCkpLFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5hcHBDb25maWdTZXJ2aWNlLmdldCgpKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgdGhpcy5jb25maWdTdGF0ZS5zZXRTdGF0ZShyZXMpO1xuICAgICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEF1dGhDb2RlRmxvd1N0cmF0ZWd5IGV4dGVuZHMgQXV0aEZsb3dTdHJhdGVneSB7XG4gIHJlYWRvbmx5IGlzSW50ZXJuYWxBdXRoID0gZmFsc2U7XG5cbiAgYXN5bmMgaW5pdCgpIHtcbiAgICByZXR1cm4gc3VwZXJcbiAgICAgIC5pbml0KClcbiAgICAgIC50aGVuKCgpID0+IHRoaXMub0F1dGhTZXJ2aWNlLnRyeUxvZ2luKCkuY2F0Y2gobm9vcCkpXG4gICAgICAudGhlbigoKSA9PiB0aGlzLm9BdXRoU2VydmljZS5zZXR1cEF1dG9tYXRpY1NpbGVudFJlZnJlc2goe30sICdhY2Nlc3NfdG9rZW4nKSk7XG4gIH1cblxuICBuYXZpZ2F0ZVRvTG9naW4ocXVlcnlQYXJhbXM/OiBQYXJhbXMpIHtcbiAgICB0aGlzLm9BdXRoU2VydmljZS5pbml0Q29kZUZsb3coJycsIHRoaXMuZ2V0Q3VsdHVyZVBhcmFtcyhxdWVyeVBhcmFtcykpO1xuICB9XG5cbiAgY2hlY2tJZkludGVybmFsQXV0aChxdWVyeVBhcmFtcz86IFBhcmFtcykge1xuICAgIHRoaXMub0F1dGhTZXJ2aWNlLmluaXRDb2RlRmxvdygnJywgdGhpcy5nZXRDdWx0dXJlUGFyYW1zKHF1ZXJ5UGFyYW1zKSk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgbG9nb3V0KHF1ZXJ5UGFyYW1zPzogUGFyYW1zKSB7XG4gICAgcmV0dXJuIGZyb20odGhpcy5vQXV0aFNlcnZpY2UucmV2b2tlVG9rZW5BbmRMb2dvdXQodGhpcy5nZXRDdWx0dXJlUGFyYW1zKHF1ZXJ5UGFyYW1zKSkpO1xuICB9XG5cbiAgbG9naW4ocXVlcnlQYXJhbXM/OiBQYXJhbXMpIHtcbiAgICB0aGlzLm9BdXRoU2VydmljZS5pbml0Q29kZUZsb3coJycsIHRoaXMuZ2V0Q3VsdHVyZVBhcmFtcyhxdWVyeVBhcmFtcykpO1xuICAgIHJldHVybiBvZihudWxsKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q3VsdHVyZVBhcmFtcyhxdWVyeVBhcmFtcz86IFBhcmFtcykge1xuICAgIGNvbnN0IGxhbmcgPSB0aGlzLnNlc3Npb25TdGF0ZS5nZXRMYW5ndWFnZSgpO1xuICAgIGNvbnN0IGN1bHR1cmUgPSB7IGN1bHR1cmU6IGxhbmcsICd1aS1jdWx0dXJlJzogbGFuZyB9O1xuICAgIHJldHVybiB7IC4uLihsYW5nICYmIGN1bHR1cmUpLCAuLi5xdWVyeVBhcmFtcyB9O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBdXRoUGFzc3dvcmRGbG93U3RyYXRlZ3kgZXh0ZW5kcyBBdXRoRmxvd1N0cmF0ZWd5IHtcbiAgcmVhZG9ubHkgaXNJbnRlcm5hbEF1dGggPSB0cnVlO1xuICBwcml2YXRlIGNvb2tpZUtleSA9ICdyZW1lbWJlck1lJztcbiAgcHJpdmF0ZSBzdG9yYWdlS2V5ID0gJ3Bhc3N3b3JkRmxvdyc7XG5cbiAgcHJpdmF0ZSBsaXN0ZW5Ub1Rva2VuRXhwaXJhdGlvbigpIHtcbiAgICB0aGlzLm9BdXRoU2VydmljZS5ldmVudHNcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoXG4gICAgICAgICAgZXZlbnQgPT5cbiAgICAgICAgICAgIGV2ZW50IGluc3RhbmNlb2YgT0F1dGhJbmZvRXZlbnQgJiZcbiAgICAgICAgICAgIGV2ZW50LnR5cGUgPT09ICd0b2tlbl9leHBpcmVzJyAmJlxuICAgICAgICAgICAgZXZlbnQuaW5mbyA9PT0gJ2FjY2Vzc190b2tlbicsXG4gICAgICAgICksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMub0F1dGhTZXJ2aWNlLmdldFJlZnJlc2hUb2tlbigpKSB7XG4gICAgICAgICAgdGhpcy5yZWZyZXNoVG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLm9BdXRoU2VydmljZS5sb2dPdXQoKTtcbiAgICAgICAgICByZW1vdmVSZW1lbWJlck1lKCk7XG4gICAgICAgICAgdGhpcy5hcHBDb25maWdTZXJ2aWNlLmdldCgpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgICAgdGhpcy5jb25maWdTdGF0ZS5zZXRTdGF0ZShyZXMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGluaXQoKSB7XG4gICAgaWYgKCFnZXRDb29raWVWYWx1ZUJ5TmFtZSh0aGlzLmNvb2tpZUtleSkgJiYgbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5zdG9yYWdlS2V5KSkge1xuICAgICAgdGhpcy5vQXV0aFNlcnZpY2UubG9nT3V0KCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1cGVyLmluaXQoKS50aGVuKCgpID0+IHRoaXMubGlzdGVuVG9Ub2tlbkV4cGlyYXRpb24oKSk7XG4gIH1cblxuICBuYXZpZ2F0ZVRvTG9naW4ocXVlcnlQYXJhbXM/OiBQYXJhbXMpIHtcbiAgICBjb25zdCByb3V0ZXIgPSB0aGlzLmluamVjdG9yLmdldChSb3V0ZXIpO1xuICAgIHJvdXRlci5uYXZpZ2F0ZShbJy9hY2NvdW50L2xvZ2luJ10sIHsgcXVlcnlQYXJhbXMgfSk7XG4gIH1cblxuICBjaGVja0lmSW50ZXJuYWxBdXRoKCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgbG9naW4ocGFyYW1zOiBMb2dpblBhcmFtcyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3QgdGVuYW50ID0gdGhpcy5zZXNzaW9uU3RhdGUuZ2V0VGVuYW50KCk7XG5cbiAgICByZXR1cm4gZnJvbShcbiAgICAgIHRoaXMub0F1dGhTZXJ2aWNlLmZldGNoVG9rZW5Vc2luZ1Bhc3N3b3JkRmxvdyhcbiAgICAgICAgcGFyYW1zLnVzZXJuYW1lLFxuICAgICAgICBwYXJhbXMucGFzc3dvcmQsXG4gICAgICAgIG5ldyBIdHRwSGVhZGVycyh7IC4uLih0ZW5hbnQgJiYgdGVuYW50LmlkICYmIHsgW3RoaXMudGVuYW50S2V5XTogdGVuYW50LmlkIH0pIH0pLFxuICAgICAgKSxcbiAgICApLnBpcGUodGhpcy5waXBlVG9Mb2dpbihwYXJhbXMpKTtcbiAgfVxuXG4gIHBpcGVUb0xvZ2luKHBhcmFtczogUGljazxMb2dpblBhcmFtcywgJ3JlZGlyZWN0VXJsJyB8ICdyZW1lbWJlck1lJz4pIHtcbiAgICBjb25zdCByb3V0ZXIgPSB0aGlzLmluamVjdG9yLmdldChSb3V0ZXIpO1xuXG4gICAgcmV0dXJuIHBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5hcHBDb25maWdTZXJ2aWNlLmdldCgpKSxcbiAgICAgIHRhcChyZXMgPT4ge1xuICAgICAgICB0aGlzLmNvbmZpZ1N0YXRlLnNldFN0YXRlKHJlcyk7XG4gICAgICAgIHNldFJlbWVtYmVyTWUocGFyYW1zLnJlbWVtYmVyTWUpO1xuICAgICAgICBpZiAocGFyYW1zLnJlZGlyZWN0VXJsKSByb3V0ZXIubmF2aWdhdGUoW3BhcmFtcy5yZWRpcmVjdFVybF0pO1xuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIGxvZ291dChxdWVyeVBhcmFtcz86IFBhcmFtcykge1xuICAgIGNvbnN0IHJvdXRlciA9IHRoaXMuaW5qZWN0b3IuZ2V0KFJvdXRlcik7XG5cbiAgICByZXR1cm4gZnJvbSh0aGlzLm9BdXRoU2VydmljZS5yZXZva2VUb2tlbkFuZExvZ291dChxdWVyeVBhcmFtcykpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5hcHBDb25maWdTZXJ2aWNlLmdldCgpKSxcbiAgICAgIHRhcChyZXMgPT4ge1xuICAgICAgICB0aGlzLmNvbmZpZ1N0YXRlLnNldFN0YXRlKHJlcyk7XG4gICAgICAgIHJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCcvJyk7XG4gICAgICAgIHJlbW92ZVJlbWVtYmVyTWUoKTtcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVmcmVzaFRva2VuKCkge1xuICAgIHJldHVybiB0aGlzLm9BdXRoU2VydmljZS5yZWZyZXNoVG9rZW4oKS5jYXRjaCgoKSA9PiB7XG4gICAgICBjbGVhck9BdXRoU3RvcmFnZSgpO1xuICAgICAgcmVtb3ZlUmVtZW1iZXJNZSgpO1xuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBBVVRIX0ZMT1dfU1RSQVRFR1kgPSB7XG4gIENvZGUoaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgcmV0dXJuIG5ldyBBdXRoQ29kZUZsb3dTdHJhdGVneShpbmplY3Rvcik7XG4gIH0sXG4gIFBhc3N3b3JkKGluamVjdG9yOiBJbmplY3Rvcikge1xuICAgIHJldHVybiBuZXcgQXV0aFBhc3N3b3JkRmxvd1N0cmF0ZWd5KGluamVjdG9yKTtcbiAgfSxcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBjbGVhck9BdXRoU3RvcmFnZShzdG9yYWdlOiBPQXV0aFN0b3JhZ2UgPSBvQXV0aFN0b3JhZ2UpIHtcbiAgY29uc3Qga2V5cyA9IFtcbiAgICAnYWNjZXNzX3Rva2VuJyxcbiAgICAnaWRfdG9rZW4nLFxuICAgICdyZWZyZXNoX3Rva2VuJyxcbiAgICAnbm9uY2UnLFxuICAgICdQS0NFX3ZlcmlmaWVyJyxcbiAgICAnZXhwaXJlc19hdCcsXG4gICAgJ2lkX3Rva2VuX2NsYWltc19vYmonLFxuICAgICdpZF90b2tlbl9leHBpcmVzX2F0JyxcbiAgICAnaWRfdG9rZW5fc3RvcmVkX2F0JyxcbiAgICAnYWNjZXNzX3Rva2VuX3N0b3JlZF9hdCcsXG4gICAgJ2dyYW50ZWRfc2NvcGVzJyxcbiAgICAnc2Vzc2lvbl9zdGF0ZScsXG4gIF07XG5cbiAga2V5cy5mb3JFYWNoKGtleSA9PiBzdG9yYWdlLnJlbW92ZUl0ZW0oa2V5KSk7XG59XG5cbmZ1bmN0aW9uIHNob3VsZFN0b3JhZ2VDbGVhcihjbGllbnRJZDogc3RyaW5nLCBzdG9yYWdlOiBPQXV0aFN0b3JhZ2UpOiBib29sZWFuIHtcbiAgY29uc3Qga2V5ID0gJ2FicE9BdXRoQ2xpZW50SWQnO1xuICBpZiAoIXN0b3JhZ2UuZ2V0SXRlbShrZXkpKSB7XG4gICAgc3RvcmFnZS5zZXRJdGVtKGtleSwgY2xpZW50SWQpO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IHNob3VsZENsZWFyID0gc3RvcmFnZS5nZXRJdGVtKGtleSkgIT09IGNsaWVudElkO1xuICBpZiAoc2hvdWxkQ2xlYXIpIHN0b3JhZ2Uuc2V0SXRlbShrZXksIGNsaWVudElkKTtcbiAgcmV0dXJuIHNob3VsZENsZWFyO1xufVxuXG5mdW5jdGlvbiBnZXRDb29raWVWYWx1ZUJ5TmFtZShuYW1lOiBzdHJpbmcpIHtcbiAgY29uc3QgbWF0Y2ggPSBkb2N1bWVudC5jb29raWUubWF0Y2gobmV3IFJlZ0V4cCgnKF58ICknICsgbmFtZSArICc9KFteO10rKScpKTtcbiAgcmV0dXJuIG1hdGNoID8gbWF0Y2hbMl0gOiAnJztcbn1cbiJdfQ==
|
|
200
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1mbG93LnN0cmF0ZWd5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL3N0cmF0ZWdpZXMvYXV0aC1mbG93LnN0cmF0ZWd5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFbkQsT0FBTyxFQUFVLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDcEMsT0FBTyxFQUVMLGVBQWUsRUFDZixjQUFjLEVBQ2QsWUFBWSxHQUViLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLElBQUksRUFBYyxFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzdDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUV4RCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsWUFBWSxDQUFDO0FBRXpDLE1BQU0sT0FBZ0IsZ0JBQWdCO0lBa0JwQyxZQUFzQixRQUFrQjtRQUFsQixhQUFRLEdBQVIs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Q3JCLG9CQUFvQjtRQUNwQix3QkFBd0I7UUFDeEIsZ0JBQWdCO1FBQ2hCLGVBQWU7S0FDaEIsQ0FBQztJQUVGLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDL0MsQ0FBQztBQUVELFNBQVMsa0JBQWtCLENBQUMsUUFBZ0IsRUFBRSxPQUFxQjtJQUNqRSxNQUFNLEdBQUcsR0FBRyxrQkFBa0IsQ0FBQztJQUMvQixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUN6QixPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMvQixPQUFPLEtBQUssQ0FBQztLQUNkO0lBRUQsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxRQUFRLENBQUM7SUFDdEQsSUFBSSxXQUFXO1FBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDaEQsT0FBTyxXQUFXLENBQUM7QUFDckIsQ0FBQztBQUVELFNBQVMsb0JBQW9CLENBQUMsSUFBWTtJQUN4QyxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLEdBQUcsSUFBSSxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFDN0UsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQy9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQYXJhbXMsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3hzL3N0b3JlJztcbmltcG9ydCB7XG4gIEF1dGhDb25maWcsXG4gIE9BdXRoRXJyb3JFdmVudCxcbiAgT0F1dGhJbmZvRXZlbnQsXG4gIE9BdXRoU2VydmljZSxcbiAgT0F1dGhTdG9yYWdlLFxufSBmcm9tICdhbmd1bGFyLW9hdXRoMi1vaWRjJztcbmltcG9ydCB7IGZyb20sIE9ic2VydmFibGUsIG9mLCBwaXBlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgUmVzdE9jY3VyRXJyb3IgfSBmcm9tICcuLi9hY3Rpb25zL3Jlc3QuYWN0aW9ucyc7XG5pbXBvcnQgeyBMb2dpblBhcmFtcyB9IGZyb20gJy4uL21vZGVscy9hdXRoJztcbmltcG9ydCB7IENvbmZpZ1N0YXRlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2NvbmZpZy1zdGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IEVudmlyb25tZW50U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2Vudmlyb25tZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgU2Vzc2lvblN0YXRlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3Nlc3Npb24tc3RhdGUuc2VydmljZSc7XG5pbXBvcnQgeyByZW1vdmVSZW1lbWJlck1lLCBzZXRSZW1lbWJlck1lIH0gZnJvbSAnLi4vdXRpbHMvYXV0aC11dGlscyc7XG5pbXBvcnQgeyBub29wIH0gZnJvbSAnLi4vdXRpbHMvY29tbW9uLXV0aWxzJztcbmltcG9ydCB7IFRFTkFOVF9LRVkgfSBmcm9tICcuLi90b2tlbnMvdGVuYW50LWtleS50b2tlbic7XG5cbmV4cG9ydCBjb25zdCBvQXV0aFN0b3JhZ2UgPSBsb2NhbFN0b3JhZ2U7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBdXRoRmxvd1N0cmF0ZWd5IHtcbiAgYWJzdHJhY3QgcmVhZG9ubHkgaXNJbnRlcm5hbEF1dGg6IGJvb2xlYW47XG5cbiAgcHJvdGVjdGVkIHN0b3JlOiBTdG9yZTtcbiAgcHJvdGVjdGVkIGVudmlyb25tZW50OiBFbnZpcm9ubWVudFNlcnZpY2U7XG4gIHByb3RlY3RlZCBjb25maWdTdGF0ZTogQ29uZmlnU3RhdGVTZXJ2aWNlO1xuICBwcm90ZWN0ZWQgb0F1dGhTZXJ2aWNlOiBPQXV0aFNlcnZpY2U7XG4gIHByb3RlY3RlZCBvQXV0aENvbmZpZzogQXV0aENvbmZpZztcbiAgcHJvdGVjdGVkIHNlc3Npb25TdGF0ZTogU2Vzc2lvblN0YXRlU2VydmljZTtcbiAgcHJvdGVjdGVkIHRlbmFudEtleTogc3RyaW5nO1xuXG4gIGFic3RyYWN0IGNoZWNrSWZJbnRlcm5hbEF1dGgocXVlcnlQYXJhbXM/OiBQYXJhbXMpOiBib29sZWFuO1xuICBhYnN0cmFjdCBuYXZpZ2F0ZVRvTG9naW4ocXVlcnlQYXJhbXM/OiBQYXJhbXMpOiB2b2lkO1xuICBhYnN0cmFjdCBsb2dvdXQocXVlcnlQYXJhbXM/OiBQYXJhbXMpOiBPYnNlcnZhYmxlPGFueT47XG4gIGFic3RyYWN0IGxvZ2luKHBhcmFtcz86IExvZ2luUGFyYW1zIHwgUGFyYW1zKTogT2JzZXJ2YWJsZTxhbnk+O1xuXG4gIHByaXZhdGUgY2F0Y2hFcnJvciA9IGVyciA9PiB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBSZXN0T2NjdXJFcnJvcihlcnIpKTtcblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgdGhpcy5zdG9yZSA9IGluamVjdG9yLmdldChTdG9yZSk7XG4gICAgdGhpcy5lbnZpcm9ubWVudCA9IGluamVjdG9yLmdldChFbnZpcm9ubWVudFNlcnZpY2UpO1xuICAgIHRoaXMuY29uZmlnU3RhdGUgPSBpbmplY3Rvci5nZXQoQ29uZmlnU3RhdGVTZXJ2aWNlKTtcbiAgICB0aGlzLm9BdXRoU2VydmljZSA9IGluamVjdG9yLmdldChPQXV0aFNlcnZpY2UpO1xuICAgIHRoaXMuc2Vzc2lvblN0YXRlID0gaW5qZWN0b3IuZ2V0KFNlc3Npb25TdGF0ZVNlcnZpY2UpO1xuICAgIHRoaXMub0F1dGhDb25maWcgPSB0aGlzLmVudmlyb25tZW50LmdldEVudmlyb25tZW50KCkub0F1dGhDb25maWc7XG4gICAgdGhpcy50ZW5hbnRLZXkgPSBpbmplY3Rvci5nZXQoVEVOQU5UX0tFWSk7XG5cbiAgICB0aGlzLmxpc3RlblRvT2F1dGhFcnJvcnMoKTtcbiAgfVxuXG4gIGFzeW5jIGluaXQoKTogUHJvbWlzZTxhbnk+IHtcbiAgICBjb25zdCBzaG91bGRDbGVhciA9IHNob3VsZFN0b3JhZ2VDbGVhcihcbiAgICAgIHRoaXMuZW52aXJvbm1lbnQuZ2V0RW52aXJvbm1lbnQoKS5vQXV0aENvbmZpZy5jbGllbnRJZCxcbiAgICAgIG9BdXRoU3RvcmFnZSxcbiAgICApO1xuICAgIGlmIChzaG91bGRDbGVhcikgY2xlYXJPQXV0aFN0b3JhZ2Uob0F1dGhTdG9yYWdlKTtcblxuICAgIHRoaXMub0F1dGhTZXJ2aWNlLmNvbmZpZ3VyZSh0aGlzLm9BdXRoQ29uZmlnKTtcblxuICAgIHRoaXMub0F1dGhTZXJ2aWNlLmV2ZW50c1xuICAgICAgLnBpcGUoZmlsdGVyKGV2ZW50ID0+IGV2ZW50LnR5cGUgPT09ICd0b2tlbl9yZWZyZXNoX2Vycm9yJykpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMubmF2aWdhdGVUb0xvZ2luKCkpO1xuXG4gICAgcmV0dXJuIHRoaXMub0F1dGhTZXJ2aWNlXG4gICAgICAubG9hZERpc2NvdmVyeURvY3VtZW50KClcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMub0F1dGhTZXJ2aWNlLmhhc1ZhbGlkQWNjZXNzVG9rZW4oKSB8fCAhdGhpcy5vQXV0aFNlcnZpY2UuZ2V0UmVmcmVzaFRva2VuKCkpIHtcbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5yZWZyZXNoVG9rZW4oKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2godGhpcy5jYXRjaEVycm9yKTtcbiAgfVxuXG4gIHByb3RlY3RlZCByZWZyZXNoVG9rZW4oKSB7XG4gICAgcmV0dXJuIHRoaXMub0F1dGhTZXJ2aWNlLnJlZnJlc2hUb2tlbigpLmNhdGNoKCgpID0+IGNsZWFyT0F1dGhTdG9yYWdlKCkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGxpc3RlblRvT2F1dGhFcnJvcnMoKSB7XG4gICAgdGhpcy5vQXV0aFNlcnZpY2UuZXZlbnRzXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKGV2ZW50ID0+IGV2ZW50IGluc3RhbmNlb2YgT0F1dGhFcnJvckV2ZW50KSxcbiAgICAgICAgdGFwKCgpID0+IGNsZWFyT0F1dGhTdG9yYWdlKCkpLFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5jb25maWdTdGF0ZS5yZWZyZXNoQXBwU3RhdGUoKSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEF1dGhDb2RlRmxvd1N0cmF0ZWd5IGV4dGVuZHMgQXV0aEZsb3dTdHJhdGVneSB7XG4gIHJlYWRvbmx5IGlzSW50ZXJuYWxBdXRoID0gZmFsc2U7XG5cbiAgYXN5bmMgaW5pdCgpIHtcbiAgICByZXR1cm4gc3VwZXJcbiAgICAgIC5pbml0KClcbiAgICAgIC50aGVuKCgpID0+IHRoaXMub0F1dGhTZXJ2aWNlLnRyeUxvZ2luKCkuY2F0Y2gobm9vcCkpXG4gICAgICAudGhlbigoKSA9PiB0aGlzLm9BdXRoU2VydmljZS5zZXR1cEF1dG9tYXRpY1NpbGVudFJlZnJlc2goe30sICdhY2Nlc3NfdG9rZW4nKSk7XG4gIH1cblxuICBuYXZpZ2F0ZVRvTG9naW4ocXVlcnlQYXJhbXM/OiBQYXJhbXMpIHtcbiAgICB0aGlzLm9BdXRoU2VydmljZS5pbml0Q29kZUZsb3coJycsIHRoaXMuZ2V0Q3VsdHVyZVBhcmFtcyhxdWVyeVBhcmFtcykpO1xuICB9XG5cbiAgY2hlY2tJZkludGVybmFsQXV0aChxdWVyeVBhcmFtcz86IFBhcmFtcykge1xuICAgIHRoaXMub0F1dGhTZXJ2aWNlLmluaXRDb2RlRmxvdygnJywgdGhpcy5nZXRDdWx0dXJlUGFyYW1zKHF1ZXJ5UGFyYW1zKSk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgbG9nb3V0KHF1ZXJ5UGFyYW1zPzogUGFyYW1zKSB7XG4gICAgcmV0dXJuIGZyb20odGhpcy5vQXV0aFNlcnZpY2UucmV2b2tlVG9rZW5BbmRMb2dvdXQodGhpcy5nZXRDdWx0dXJlUGFyYW1zKHF1ZXJ5UGFyYW1zKSkpO1xuICB9XG5cbiAgbG9naW4ocXVlcnlQYXJhbXM/OiBQYXJhbXMpIHtcbiAgICB0aGlzLm9BdXRoU2VydmljZS5pbml0Q29kZUZsb3coJycsIHRoaXMuZ2V0Q3VsdHVyZVBhcmFtcyhxdWVyeVBhcmFtcykpO1xuICAgIHJldHVybiBvZihudWxsKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q3VsdHVyZVBhcmFtcyhxdWVyeVBhcmFtcz86IFBhcmFtcykge1xuICAgIGNvbnN0IGxhbmcgPSB0aGlzLnNlc3Npb25TdGF0ZS5nZXRMYW5ndWFnZSgpO1xuICAgIGNvbnN0IGN1bHR1cmUgPSB7IGN1bHR1cmU6IGxhbmcsICd1aS1jdWx0dXJlJzogbGFuZyB9O1xuICAgIHJldHVybiB7IC4uLihsYW5nICYmIGN1bHR1cmUpLCAuLi5xdWVyeVBhcmFtcyB9O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBdXRoUGFzc3dvcmRGbG93U3RyYXRlZ3kgZXh0ZW5kcyBBdXRoRmxvd1N0cmF0ZWd5IHtcbiAgcmVhZG9ubHkgaXNJbnRlcm5hbEF1dGggPSB0cnVlO1xuICBwcml2YXRlIGNvb2tpZUtleSA9ICdyZW1lbWJlck1lJztcbiAgcHJpdmF0ZSBzdG9yYWdlS2V5ID0gJ3Bhc3N3b3JkRmxvdyc7XG5cbiAgcHJpdmF0ZSBsaXN0ZW5Ub1Rva2VuRXhwaXJhdGlvbigpIHtcbiAgICB0aGlzLm9BdXRoU2VydmljZS5ldmVudHNcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoXG4gICAgICAgICAgZXZlbnQgPT5cbiAgICAgICAgICAgIGV2ZW50IGluc3RhbmNlb2YgT0F1dGhJbmZvRXZlbnQgJiZcbiAgICAgICAgICAgIGV2ZW50LnR5cGUgPT09ICd0b2tlbl9leHBpcmVzJyAmJlxuICAgICAgICAgICAgZXZlbnQuaW5mbyA9PT0gJ2FjY2Vzc190b2tlbicsXG4gICAgICAgICksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMub0F1dGhTZXJ2aWNlLmdldFJlZnJlc2hUb2tlbigpKSB7XG4gICAgICAgICAgdGhpcy5yZWZyZXNoVG9rZW4oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLm9BdXRoU2VydmljZS5sb2dPdXQoKTtcbiAgICAgICAgICByZW1vdmVSZW1lbWJlck1lKCk7XG4gICAgICAgICAgdGhpcy5jb25maWdTdGF0ZS5yZWZyZXNoQXBwU3RhdGUoKS5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBhc3luYyBpbml0KCkge1xuICAgIGlmICghZ2V0Q29va2llVmFsdWVCeU5hbWUodGhpcy5jb29raWVLZXkpICYmIGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuc3RvcmFnZUtleSkpIHtcbiAgICAgIHRoaXMub0F1dGhTZXJ2aWNlLmxvZ091dCgpO1xuICAgIH1cblxuICAgIHJldHVybiBzdXBlci5pbml0KCkudGhlbigoKSA9PiB0aGlzLmxpc3RlblRvVG9rZW5FeHBpcmF0aW9uKCkpO1xuICB9XG5cbiAgbmF2aWdhdGVUb0xvZ2luKHF1ZXJ5UGFyYW1zPzogUGFyYW1zKSB7XG4gICAgY29uc3Qgcm91dGVyID0gdGhpcy5pbmplY3Rvci5nZXQoUm91dGVyKTtcbiAgICByb3V0ZXIubmF2aWdhdGUoWycvYWNjb3VudC9sb2dpbiddLCB7IHF1ZXJ5UGFyYW1zIH0pO1xuICB9XG5cbiAgY2hlY2tJZkludGVybmFsQXV0aCgpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGxvZ2luKHBhcmFtczogTG9naW5QYXJhbXMpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnN0IHRlbmFudCA9IHRoaXMuc2Vzc2lvblN0YXRlLmdldFRlbmFudCgpO1xuXG4gICAgcmV0dXJuIGZyb20oXG4gICAgICB0aGlzLm9BdXRoU2VydmljZS5mZXRjaFRva2VuVXNpbmdQYXNzd29yZEZsb3coXG4gICAgICAgIHBhcmFtcy51c2VybmFtZSxcbiAgICAgICAgcGFyYW1zLnBhc3N3b3JkLFxuICAgICAgICBuZXcgSHR0cEhlYWRlcnMoeyAuLi4odGVuYW50ICYmIHRlbmFudC5pZCAmJiB7IFt0aGlzLnRlbmFudEtleV06IHRlbmFudC5pZCB9KSB9KSxcbiAgICAgICksXG4gICAgKS5waXBlKHRoaXMucGlwZVRvTG9naW4ocGFyYW1zKSk7XG4gIH1cblxuICBwaXBlVG9Mb2dpbihwYXJhbXM6IFBpY2s8TG9naW5QYXJhbXMsICdyZWRpcmVjdFVybCcgfCAncmVtZW1iZXJNZSc+KSB7XG4gICAgY29uc3Qgcm91dGVyID0gdGhpcy5pbmplY3Rvci5nZXQoUm91dGVyKTtcblxuICAgIHJldHVybiBwaXBlKFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuY29uZmlnU3RhdGUucmVmcmVzaEFwcFN0YXRlKCkpLFxuICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgc2V0UmVtZW1iZXJNZShwYXJhbXMucmVtZW1iZXJNZSk7XG4gICAgICAgIGlmIChwYXJhbXMucmVkaXJlY3RVcmwpIHJvdXRlci5uYXZpZ2F0ZShbcGFyYW1zLnJlZGlyZWN0VXJsXSk7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgbG9nb3V0KHF1ZXJ5UGFyYW1zPzogUGFyYW1zKSB7XG4gICAgY29uc3Qgcm91dGVyID0gdGhpcy5pbmplY3Rvci5nZXQoUm91dGVyKTtcblxuICAgIHJldHVybiBmcm9tKHRoaXMub0F1dGhTZXJ2aWNlLnJldm9rZVRva2VuQW5kTG9nb3V0KHF1ZXJ5UGFyYW1zKSkucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmNvbmZpZ1N0YXRlLnJlZnJlc2hBcHBTdGF0ZSgpKSxcbiAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgIHJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCcvJyk7XG4gICAgICAgIHJlbW92ZVJlbWVtYmVyTWUoKTtcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVmcmVzaFRva2VuKCkge1xuICAgIHJldHVybiB0aGlzLm9BdXRoU2VydmljZS5yZWZyZXNoVG9rZW4oKS5jYXRjaCgoKSA9PiB7XG4gICAgICBjbGVhck9BdXRoU3RvcmFnZSgpO1xuICAgICAgcmVtb3ZlUmVtZW1iZXJNZSgpO1xuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBBVVRIX0ZMT1dfU1RSQVRFR1kgPSB7XG4gIENvZGUoaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgcmV0dXJuIG5ldyBBdXRoQ29kZUZsb3dTdHJhdGVneShpbmplY3Rvcik7XG4gIH0sXG4gIFBhc3N3b3JkKGluamVjdG9yOiBJbmplY3Rvcikge1xuICAgIHJldHVybiBuZXcgQXV0aFBhc3N3b3JkRmxvd1N0cmF0ZWd5KGluamVjdG9yKTtcbiAgfSxcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBjbGVhck9BdXRoU3RvcmFnZShzdG9yYWdlOiBPQXV0aFN0b3JhZ2UgPSBvQXV0aFN0b3JhZ2UpIHtcbiAgY29uc3Qga2V5cyA9IFtcbiAgICAnYWNjZXNzX3Rva2VuJyxcbiAgICAnaWRfdG9rZW4nLFxuICAgICdyZWZyZXNoX3Rva2VuJyxcbiAgICAnbm9uY2UnLFxuICAgICdQS0NFX3ZlcmlmaWVyJyxcbiAgICAnZXhwaXJlc19hdCcsXG4gICAgJ2lkX3Rva2VuX2NsYWltc19vYmonLFxuICAgICdpZF90b2tlbl9leHBpcmVzX2F0JyxcbiAgICAnaWRfdG9rZW5fc3RvcmVkX2F0JyxcbiAgICAnYWNjZXNzX3Rva2VuX3N0b3JlZF9hdCcsXG4gICAgJ2dyYW50ZWRfc2NvcGVzJyxcbiAgICAnc2Vzc2lvbl9zdGF0ZScsXG4gIF07XG5cbiAga2V5cy5mb3JFYWNoKGtleSA9PiBzdG9yYWdlLnJlbW92ZUl0ZW0oa2V5KSk7XG59XG5cbmZ1bmN0aW9uIHNob3VsZFN0b3JhZ2VDbGVhcihjbGllbnRJZDogc3RyaW5nLCBzdG9yYWdlOiBPQXV0aFN0b3JhZ2UpOiBib29sZWFuIHtcbiAgY29uc3Qga2V5ID0gJ2FicE9BdXRoQ2xpZW50SWQnO1xuICBpZiAoIXN0b3JhZ2UuZ2V0SXRlbShrZXkpKSB7XG4gICAgc3RvcmFnZS5zZXRJdGVtKGtleSwgY2xpZW50SWQpO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IHNob3VsZENsZWFyID0gc3RvcmFnZS5nZXRJdGVtKGtleSkgIT09IGNsaWVudElkO1xuICBpZiAoc2hvdWxkQ2xlYXIpIHN0b3JhZ2Uuc2V0SXRlbShrZXksIGNsaWVudElkKTtcbiAgcmV0dXJuIHNob3VsZENsZWFyO1xufVxuXG5mdW5jdGlvbiBnZXRDb29raWVWYWx1ZUJ5TmFtZShuYW1lOiBzdHJpbmcpIHtcbiAgY29uc3QgbWF0Y2ggPSBkb2N1bWVudC5jb29raWUubWF0Y2gobmV3IFJlZ0V4cCgnKF58ICknICsgbmFtZSArICc9KFteO10rKScpKTtcbiAgcmV0dXJuIG1hdGNoID8gbWF0Y2hbMl0gOiAnJztcbn1cbiJdfQ==
|