@frontegg/angular 6.34.0-alpha.10039043345 → 7.0.0-alpha.10251233112
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/bundles/frontegg-angular.umd.js +254 -20
- package/bundles/frontegg-angular.umd.js.map +1 -1
- package/esm2015/lib/directives/authorized-content.directive.js +4 -4
- package/esm2015/lib/frontegg-app.service.js +5 -4
- package/esm2015/lib/frontegg-auth.service.js +144 -9
- package/esm2015/lib/frontegg-entitlements.service.js +6 -5
- package/esm2015/lib/frontegg-subscription.services.js +1 -2
- package/esm2015/lib/frontegg-user-subscription.service.js +2 -2
- package/esm2015/sdkVersion.js +2 -2
- package/fesm2015/frontegg-angular.js +158 -20
- package/fesm2015/frontegg-angular.js.map +1 -1
- package/lib/directives/authorized-content.directive.d.ts +1 -1
- package/lib/directives/authorized-content.directive.d.ts.map +1 -1
- package/lib/frontegg-app.service.d.ts.map +1 -1
- package/lib/frontegg-auth.service.d.ts +82 -25
- package/lib/frontegg-auth.service.d.ts.map +1 -1
- package/lib/frontegg-entitlements.service.d.ts +2 -2
- package/lib/frontegg-entitlements.service.d.ts.map +1 -1
- package/lib/frontegg-subscription.services.d.ts.map +1 -1
- package/lib/frontegg-user-subscription.service.d.ts +1 -1
- package/package.json +2 -2
- package/sdkVersion.d.ts.map +1 -1
|
@@ -6,15 +6,15 @@ export class AuthorizedContentDirective {
|
|
|
6
6
|
this.templateRef = templateRef;
|
|
7
7
|
this.viewContainer = viewContainer;
|
|
8
8
|
this.fronteggAuthService = fronteggAuthService;
|
|
9
|
-
this.
|
|
9
|
+
this.roles = [];
|
|
10
10
|
}
|
|
11
11
|
set authorizedContent(roles) {
|
|
12
|
-
this.
|
|
12
|
+
this.roles = roles;
|
|
13
13
|
}
|
|
14
14
|
ngAfterContentInit() {
|
|
15
15
|
this.fronteggAuthService.user$.subscribe((user) => {
|
|
16
16
|
var _a;
|
|
17
|
-
if ((_a = user === null || user === void 0 ? void 0 : user.roles) === null || _a === void 0 ? void 0 : _a.some((role) => this.
|
|
17
|
+
if ((_a = user === null || user === void 0 ? void 0 : user.roles) === null || _a === void 0 ? void 0 : _a.some((role) => this.roles.includes(role.name))) {
|
|
18
18
|
this.viewContainer.createEmbeddedView(this.templateRef);
|
|
19
19
|
}
|
|
20
20
|
else {
|
|
@@ -33,4 +33,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
33
33
|
}], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: i1.FronteggAuthService }]; }, propDecorators: { authorizedContent: [{
|
|
34
34
|
type: Input
|
|
35
35
|
}] } });
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aG9yaXplZC1jb250ZW50LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Zyb250ZWdnLWFwcC9zcmMvbGliL2RpcmVjdGl2ZXMvYXV0aG9yaXplZC1jb250ZW50LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULEtBQUssR0FHTixNQUFNLGVBQWUsQ0FBQzs7O0FBTXZCLE1BQU0sT0FBTywwQkFBMEI7SUFHckMsWUFDVSxXQUE2QixFQUM3QixhQUErQixFQUMvQixtQkFBd0M7UUFGeEMsZ0JBQVcsR0FBWCxXQUFXLENBQWtCO1FBQzdCLGtCQUFhLEdBQWIsYUFBYSxDQUFrQjtRQUMvQix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBTDFDLFVBQUssR0FBYSxFQUFFLENBQUM7SUFPN0IsQ0FBQztJQUVELElBQ0ksaUJBQWlCLENBQUMsS0FBZTtRQUNuQyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUNyQixDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7O1lBQ2hELElBQUksTUFBQSxJQUFJLGFBQUosSUFBSSx1QkFBSixJQUFJLENBQUUsS0FBSywwQ0FBRSxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFO2dCQUMvRCxJQUFJLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQzthQUN6RDtpQkFBTTtnQkFDTCxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO2FBQzVCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzt3SEF2QlUsMEJBQTBCOzRHQUExQiwwQkFBMEI7NEZBQTFCLDBCQUEwQjtrQkFIdEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUscUJBQXFCO2lCQUNoQzttS0FZSyxpQkFBaUI7c0JBRHBCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBEaXJlY3RpdmUsXG4gIElucHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGcm9udGVnZ0F1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vZnJvbnRlZ2ctYXV0aC5zZXJ2aWNlJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2F1dGhvcml6ZWRDb250ZW50XScsXG59KVxuZXhwb3J0IGNsYXNzIEF1dGhvcml6ZWRDb250ZW50RGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCB7XG4gIHByaXZhdGUgcm9sZXM6IHN0cmluZ1tdID0gW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PixcbiAgICBwcml2YXRlIHZpZXdDb250YWluZXI6IFZpZXdDb250YWluZXJSZWYsXG4gICAgcHJpdmF0ZSBmcm9udGVnZ0F1dGhTZXJ2aWNlOiBGcm9udGVnZ0F1dGhTZXJ2aWNlLFxuICApIHtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBhdXRob3JpemVkQ29udGVudChyb2xlczogc3RyaW5nW10pIHtcbiAgICB0aGlzLnJvbGVzID0gcm9sZXM7XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5mcm9udGVnZ0F1dGhTZXJ2aWNlLnVzZXIkLnN1YnNjcmliZSgodXNlcikgPT4ge1xuICAgICAgaWYgKHVzZXI/LnJvbGVzPy5zb21lKChyb2xlKSA9PiB0aGlzLnJvbGVzLmluY2x1ZGVzKHJvbGUubmFtZSkpKSB7XG4gICAgICAgIHRoaXMudmlld0NvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy50ZW1wbGF0ZVJlZik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnZpZXdDb250YWluZXIuY2xlYXIoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -17,7 +17,7 @@ export class FronteggAppOptionsClass {
|
|
|
17
17
|
}
|
|
18
18
|
export class FronteggAppService {
|
|
19
19
|
constructor(config, router, ngZone) {
|
|
20
|
-
var _a;
|
|
20
|
+
var _a, _b;
|
|
21
21
|
this.config = config;
|
|
22
22
|
this.router = router;
|
|
23
23
|
this.ngZone = ngZone;
|
|
@@ -68,9 +68,10 @@ export class FronteggAppService {
|
|
|
68
68
|
// @ts-ignore
|
|
69
69
|
framework: `${FronteggFrameworks.Angular}@${angularCoreVersion.version}`,
|
|
70
70
|
};
|
|
71
|
+
const appName = (_a = this.config.appName) !== null && _a !== void 0 ? _a : 'default';
|
|
71
72
|
// prepare config default values
|
|
72
|
-
this.config = Object.assign(Object.assign({}, this.config), { contextOptions: Object.assign(Object.assign({}, this.config.contextOptions), { metadataHeaders }), authOptions: Object.assign(Object.assign({}, this.config.authOptions), { hostedLoginOptions: Object.assign({ loadUserOnFirstLoad: true }, (
|
|
73
|
-
ContextHolder.setOnRedirectTo(onRedirectTo);
|
|
73
|
+
this.config = Object.assign(Object.assign({}, this.config), { appName, contextOptions: Object.assign(Object.assign({}, this.config.contextOptions), { metadataHeaders }), authOptions: Object.assign(Object.assign({}, this.config.authOptions), { hostedLoginOptions: Object.assign({ loadUserOnFirstLoad: true }, (_b = this.config.authOptions) === null || _b === void 0 ? void 0 : _b.hostedLoginOptions), onRedirectTo }) });
|
|
74
|
+
ContextHolder.for(appName).setOnRedirectTo(onRedirectTo);
|
|
74
75
|
this.fronteggApp = initialize(Object.assign({ onRedirectTo }, this.config));
|
|
75
76
|
// Add all login box routes to Angular router config
|
|
76
77
|
this.router.resetConfig([
|
|
@@ -199,4 +200,4 @@ FronteggLoadGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", ve
|
|
|
199
200
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FronteggLoadGuard, decorators: [{
|
|
200
201
|
type: Injectable
|
|
201
202
|
}], ctorParameters: function () { return [{ type: FronteggAppService }]; } });
|
|
202
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJvbnRlZ2ctYXBwLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mcm9udGVnZy1hcHAvc3JjL2xpYi9mcm9udGVnZy1hcHAuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzRCxPQUFPLEVBQWUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3ZELE9BQU8sRUFBaUMsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFbkYsT0FBTyxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbkQsT0FBTyxFQUFFLGFBQWEsRUFBbUIsa0JBQWtCLEVBQW1CLE1BQU0sb0JBQW9CLENBQUM7QUFDekcsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxVQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sa0JBQWtCLE1BQU0sNEJBQTRCLENBQUM7OztBQUU1RCxNQUFNLE9BQU8sdUJBQXVCO0lBQXBDO1FBQ0UsbUJBQWMsR0FBeUM7WUFDckQsT0FBTyxFQUFFLGlDQUFpQztTQUMzQyxDQUFDO0lBQ0osQ0FBQztDQUFBO0FBS0QsTUFBTSxPQUFPLGtCQUFrQjtJQWdEN0IsWUFBcUQsTUFBMEIsRUFBUyxNQUFjLEVBQVUsTUFBYzs7UUFBekUsV0FBTSxHQUFOLE1BQU0sQ0FBb0I7UUFBUyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQTdDdEgscUJBQWdCLEdBQUcsSUFBSSxlQUFlLENBQVUsSUFBSSxDQUFDLENBQUM7UUFDdEQsMkJBQXNCLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDN0QsaUJBQVksR0FBRyxJQUFJLGVBQWUsQ0FBZ0IsRUFBbUIsQ0FBQyxD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SSxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsdUJBQXVCO0lBQ2hCLGtCQUFrQjs7UUFDdkIsTUFBQSxJQUFJLENBQUMsV0FBVywwQ0FBRSxrQkFBa0IsRUFBRSxDQUFDO0lBQ3pDLENBQUM7O2dIQXpMVSxrQkFBa0Isa0JBZ0RULHVCQUF1QjtvSEFoRGhDLGtCQUFrQixjQUZqQixNQUFNOzRGQUVQLGtCQUFrQjtrQkFIOUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQWlEYyxNQUFNOzJCQUFDLHVCQUF1Qjs7QUE2STdDLE1BQU0sT0FBTyxpQkFBaUI7SUFDNUIsWUFBc0Isa0JBQXNDO1FBQXRDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7SUFDNUQsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUE2QixFQUFFLEtBQTBCO1FBQ25FLE9BQU8sSUFBSSxVQUFVLENBQVUsR0FBRyxDQUFDLEVBQUU7WUFDbkMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ3JELElBQUksQ0FBQyxPQUFPLEVBQUU7b0JBQ1osR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDaEI7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7K0dBWlUsaUJBQWlCLGtCQUNjLGtCQUFrQjttSEFEakQsaUJBQWlCOzRGQUFqQixpQkFBaUI7a0JBRDdCLFVBQVU7MERBRWlDLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE5nWm9uZSwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZSwgUm91dGVyLCBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBDYW5BY3RpdmF0ZSwgUm91dGVyU3RhdGVTbmFwc2hvdCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBGcm9udGVnZ0FwcCwgaW5pdGlhbGl6ZSB9IGZyb20gJ0Bmcm9udGVnZy9qcyc7XG5pbXBvcnQgeyBBdXRoUGFnZVJvdXRlcywgRnJvbnRlZ2dTdGF0ZSwgaXNBdXRoUm91dGUgfSBmcm9tICdAZnJvbnRlZ2cvcmVkdXgtc3RvcmUnO1xuaW1wb3J0IHsgRnJvbnRlZ2dBcHBPcHRpb25zLCBGcm9udGVnZ0NoZWNrb3V0RGlhbG9nT3B0aW9ucywgU2hvd0FkbWluUG9ydGFsT3B0aW9ucyB9IGZyb20gJ0Bmcm9udGVnZy90eXBlcyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENvbnRleHRIb2xkZXIsIFJlZGlyZWN0T3B0aW9ucywgRnJvbnRlZ2dGcmFtZXdvcmtzLCBNZXRhZGF0YUhlYWRlcnMgfSBmcm9tICdAZnJvbnRlZ2cvcmVzdC1hcGknO1xuaW1wb3J0IHsgRnJvbnRlZ2dDb21wb25lbnQgfSBmcm9tICcuL2Zyb250ZWdnLmNvbXBvbmVudCc7XG5pbXBvcnQgc2RrVmVyc2lvbiBmcm9tICcuLi9zZGtWZXJzaW9uJztcbmltcG9ydCBhbmd1bGFyQ29yZVZlcnNpb24gZnJvbSAnQGFuZ3VsYXIvY29yZS9wYWNrYWdlLmpzb24nO1xuXG5leHBvcnQgY2xhc3MgRnJvbnRlZ2dBcHBPcHRpb25zQ2xhc3MgaW1wbGVtZW50cyBGcm9udGVnZ0FwcE9wdGlvbnMge1xuICBjb250ZXh0T3B0aW9uczogRnJvbnRlZ2dBcHBPcHRpb25zWydjb250ZXh0T3B0aW9ucyddID0ge1xuICAgIGJhc2VVcmw6ICdodHRwczovL3N1Yi1kb21haW4uZnJvbnRlZ2cuY29tJyxcbiAgfTtcbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEZyb250ZWdnQXBwU2VydmljZSB7XG4gIGZyb250ZWdnQXBwOiBGcm9udGVnZ0FwcDtcblxuICBwcml2YXRlIGlzTG9hZGluZ1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuICBwcml2YXRlIGlzQXV0aGVudGljYXRlZFN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJpdmF0ZSBzdGF0ZVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEZyb250ZWdnU3RhdGU+KHt9IGFzIEZyb250ZWdnU3RhdGUpO1xuICBwcml2YXRlIGF1dGhTdGF0ZVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEZyb250ZWdnU3RhdGVbJ2F1dGgnXT4oe1xuICAgIGlzTG9hZGluZzogdHJ1ZSxcbiAgICBpc0F1dGhlbnRpY2F0ZWQ6IGZhbHNlLFxuICB9IGFzIEZyb250ZWdnU3RhdGVbJ2F1dGgnXSk7XG4gIHByaXZhdGUgYXVkaXRzU3RhdGVTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxGcm9udGVnZ1N0YXRlWydhdWRpdHMnXT4oe30gYXMgRnJvbnRlZ2dTdGF0ZVsnYXVkaXRzJ10pO1xuICBwcml2YXRlIGNvbm5lY3Rpdml0eVN0YXRlU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RnJvbnRlZ2dTdGF0ZVsnY29ubmVjdGl2aXR5J10+KHt9IGFzIEZyb250ZWdnU3RhdGVbJ2Nvbm5lY3Rpdml0eSddKTtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zU3RhdGVTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxGcm9udGVnZ1N0YXRlWydzdWJzY3JpcHRpb25zJ10+KHt9IGFzIEZyb250ZWdnU3RhdGVbJ3N1YnNjcmlwdGlvbnMnXSk7XG4gIHByaXZhdGUgdmVuZG9yU3RhdGVTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxGcm9udGVnZ1N0YXRlWyd2ZW5kb3InXT4oe30gYXMgRnJvbnRlZ2dTdGF0ZVsndmVuZG9yJ10pO1xuXG5cbiAgZ2V0IHN0YXRlJCgpOiBPYnNlcnZhYmxlPEZyb250ZWdnU3RhdGU+IHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXQgYXV0aFN0YXRlJCgpOiBPYnNlcnZhYmxlPEZyb250ZWdnU3RhdGVbJ2F1dGgnXT4ge1xuICAgIHJldHVybiB0aGlzLmF1dGhTdGF0ZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXQgYXVkaXRzU3RhdGUkKCk6IE9ic2VydmFibGU8RnJvbnRlZ2dTdGF0ZVsnYXVkaXRzJ10+IHtcbiAgICByZXR1cm4gdGhpcy5hdWRpdHNTdGF0ZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXQgY29ubmVjdGl2aXR5U3RhdGUkKCk6IE9ic2VydmFibGU8RnJvbnRlZ2dTdGF0ZVsnY29ubmVjdGl2aXR5J10+IHtcbiAgICByZXR1cm4gdGhpcy5jb25uZWN0aXZpdHlTdGF0ZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXQgc3Vic2NyaXB0aW9uc1N0YXRlJCgpOiBPYnNlcnZhYmxlPEZyb250ZWdnU3RhdGVbJ3N1YnNjcmlwdGlvbnMnXT4ge1xuICAgIHJldHVybiB0aGlzLnN1YnNjcmlwdGlvbnNTdGF0ZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXQgdmVuZG9yU3RhdGUkKCk6IE9ic2VydmFibGU8RnJvbnRlZ2dTdGF0ZVsndmVuZG9yJ10+IHtcbiAgICByZXR1cm4gdGhpcy52ZW5kb3JTdGF0ZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXQgaXNMb2FkaW5nJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5pc0xvYWRpbmdTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICB9O1xuXG4gIGdldCBpc0F1dGhlbnRpY2F0ZWQkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmlzQXV0aGVudGljYXRlZFN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIH07XG5cbiAgY29uc3RydWN0b3IoQEluamVjdChGcm9udGVnZ0FwcE9wdGlvbnNDbGFzcykgcHJpdmF0ZSBjb25maWc6IEZyb250ZWdnQXBwT3B0aW9ucywgcHVibGljIHJvdXRlcjogUm91dGVyLCBwcml2YXRlIG5nWm9uZTogTmdab25lKSB7XG4gICAgaWYgKCF0aGlzLmNvbmZpZykge1xuICAgICAgdGhyb3cgRXJyb3IoJ05lZWQgdG8gcGFzcyBjb25maWc6IEZyb250ZWdnQ29uZmlnT3B0aW9ucyBpbiBGcm9udGVnZ0FwcE1vZHVsZS5mb3JSb290KGNvbmZpZyknKTtcbiAgICB9XG5cbiAgICBpZiAoKHdpbmRvdyBhcyBhbnkpLkNZUFJFU1NfQ09ORklHKSB7XG4gICAgICB0aGlzLmNvbmZpZyA9ICh3aW5kb3cgYXMgYW55KS5DWVBSRVNTX0NPTkZJRztcbiAgICB9XG4gICAgY29uc3Qgb25SZWRpcmVjdFRvID0gKHRvOiBzdHJpbmcsIG9wdHM/OiBSZWRpcmVjdE9wdGlvbnMpID0+IHtcbiAgICAgIGNvbnN0IGJhc2VOYW1lID0gd2luZG93LmxvY2F0aW9uLm9yaWdpbjtcbiAgICAgIGxldCBwYXRoID0gdG87XG4gICAgICBpZiAocGF0aC5zdGFydHNXaXRoKGJhc2VOYW1lKSAmJiBiYXNlTmFtZSAhPT0gJy8nKSB7XG4gICAgICAgIHBhdGggPSBwYXRoLnN1YnN0cmluZyhiYXNlTmFtZS5sZW5ndGggLSAxKTtcbiAgICAgIH1cbiAgICAgIGlmIChvcHRzPy5wcmVzZXJ2ZVF1ZXJ5UGFyYW1zIHx8IGlzQXV0aFJvdXRlKHBhdGgsIGNvbmZpZy5hdXRoT3B0aW9ucz8ucm91dGVzKSkge1xuICAgICAgICBwYXRoID0gYCR7cGF0aH0ke3dpbmRvdy5sb2NhdGlvbi5zZWFyY2h9YDtcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdHM/LnJlZnJlc2gpIHtcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBwYXRoO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICBpZiAob3B0cz8ucmVwbGFjZSkge1xuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChwYXRoLCB7IHJlcGxhY2VVcmw6IHRydWUgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwocGF0aCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9O1xuXG5cbiAgICBjb25zdCBtZXRhZGF0YUhlYWRlcnM6IE1ldGFkYXRhSGVhZGVycyA9IHtcbiAgICAgIGZyb250ZWdnU2RrVmVyc2lvbjogYEBmcm9udGVnZy9hbmd1bGFyQCR7c2RrVmVyc2lvbi52ZXJzaW9ufWAsXG4gICAgICAvLyBUT0RPOiByZW1vdmUgdGhpcyBhbnkgdHlwZSBhZnRlciB1cGRhdGluZyByZXN0LWFwaSBjb250ZXh0IG9wdGlvbnMgdHlwZSB0byBhY2NlcHQgc3RyaW5nLlxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgZnJhbWV3b3JrOiBgJHtGcm9udGVnZ0ZyYW1ld29ya3MuQW5ndWxhcn1AJHthbmd1bGFyQ29yZVZlcnNpb24udmVyc2lvbn1gLFxuICAgIH07XG5cbiAgICAvLyBwcmVwYXJlIGNvbmZpZyBkZWZhdWx0IHZhbHVlc1xuICAgIHRoaXMuY29uZmlnID0ge1xuICAgICAgLi4udGhpcy5jb25maWcsXG4gICAgICBjb250ZXh0T3B0aW9uczoge1xuICAgICAgICAuLi50aGlzLmNvbmZpZy5jb250ZXh0T3B0aW9ucyxcbiAgICAgICAgbWV0YWRhdGFIZWFkZXJzLFxuICAgICAgfSxcbiAgICAgIGF1dGhPcHRpb25zOiB7XG4gICAgICAgIC4uLnRoaXMuY29uZmlnLmF1dGhPcHRpb25zLFxuICAgICAgICBob3N0ZWRMb2dpbk9wdGlvbnM6IHtcbiAgICAgICAgICBsb2FkVXNlck9uRmlyc3RMb2FkOiB0cnVlLCAvLyBzZXQgZGVmYXVsdCB0byBsb2FkIHVzZXIgb24gZmlyc3QgbG9hZFxuICAgICAgICAgIC4uLnRoaXMuY29uZmlnLmF1dGhPcHRpb25zPy5ob3N0ZWRMb2dpbk9wdGlvbnMsXG4gICAgICAgIH0sXG4gICAgICAgIG9uUmVkaXJlY3RUbyxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIENvbnRleHRIb2xkZXIuc2V0T25SZWRpcmVjdFRvKG9uUmVkaXJlY3RUbyk7XG4gICAgdGhpcy5mcm9udGVnZ0FwcCA9IGluaXRpYWxpemUoe1xuICAgICAgb25SZWRpcmVjdFRvLFxuICAgICAgLi4udGhpcy5jb25maWcsXG4gICAgfSk7XG5cblxuICAgIC8vIEFkZCBhbGwgbG9naW4gYm94IHJvdXRlcyB0byBBbmd1bGFyIHJvdXRlciBjb25maWdcbiAgICB0aGlzLnJvdXRlci5yZXNldENvbmZpZyhbXG4gICAgICAuLi50aGlzLm1hcEF1dGhDb21wb25lbnRzLFxuICAgICAge1xuICAgICAgICBwYXRoOiAnJyxcbiAgICAgICAgY2FuQWN0aXZhdGU6IFsgRnJvbnRlZ2dMb2FkR3VhcmQgXSxcbiAgICAgICAgY2hpbGRyZW46IFsgLi4udGhpcy5yb3V0ZXIuY29uZmlnIF0sXG4gICAgICB9LFxuICAgIF0pO1xuICAgIGNvbnN0IGluaXRpYWxGcm9udGVnZ1N0YXRlID0gdGhpcy5mcm9udGVnZ0FwcC5zdG9yZS5nZXRTdGF0ZSgpIGFzIEZyb250ZWdnU3RhdGU7XG4gICAgdGhpcy51cGRhdGVTdGF0ZShpbml0aWFsRnJvbnRlZ2dTdGF0ZSk7XG4gICAgLy8gU3Vic2NyaWJlIG9uIGZyb250ZWdnQXBwIHN0b3JlIHRvIGNoYW5nZSBzdGF0ZSBzdWJqZWN0c1xuICAgIHRoaXMuZnJvbnRlZ2dBcHAuc3RvcmUuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMudXBkYXRlU3RhdGUodGhpcy5mcm9udGVnZ0FwcC5zdG9yZS5nZXRTdGF0ZSgpIGFzIEZyb250ZWdnU3RhdGUpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVTdGF0ZShmcm9udGVnZ1N0b3JlOiBGcm9udGVnZ1N0YXRlKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNMb2FkaW5nU3ViamVjdC5nZXRWYWx1ZSgpICE9PSBmcm9udGVnZ1N0b3JlLmF1dGguaXNMb2FkaW5nKSB7XG4gICAgICB0aGlzLmlzTG9hZGluZ1N1YmplY3QubmV4dChmcm9udGVnZ1N0b3JlLmF1dGguaXNMb2FkaW5nKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuaXNBdXRoZW50aWNhdGVkU3ViamVjdC5nZXRWYWx1ZSgpICE9PSBmcm9udGVnZ1N0b3JlLmF1dGguaXNBdXRoZW50aWNhdGVkKSB7XG4gICAgICB0aGlzLmlzQXV0aGVudGljYXRlZFN1YmplY3QubmV4dChmcm9udGVnZ1N0b3JlLmF1dGguaXNBdXRoZW50aWNhdGVkKTtcbiAgICB9XG5cbiAgICB0aGlzLnN0YXRlU3ViamVjdC5uZXh0KGZyb250ZWdnU3RvcmUpO1xuICAgIHRoaXMuYXV0aFN0YXRlU3ViamVjdC5uZXh0KGZyb250ZWdnU3RvcmUuYXV0aCk7XG4gICAgdGhpcy5hdWRpdHNTdGF0ZVN1YmplY3QubmV4dChmcm9udGVnZ1N0b3JlLmF1ZGl0cyk7XG4gICAgdGhpcy5jb25uZWN0aXZpdHlTdGF0ZVN1YmplY3QubmV4dChmcm9udGVnZ1N0b3JlLmNvbm5lY3Rpdml0eSk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zU3RhdGVTdWJqZWN0Lm5leHQoZnJvbnRlZ2dTdG9yZS5zdWJzY3JpcHRpb25zKTtcbiAgICB0aGlzLnZlbmRvclN0YXRlU3ViamVjdC5uZXh0KGZyb250ZWdnU3RvcmUudmVuZG9yKTtcbiAgfVxuXG4gIGdldCBtYXBBdXRoQ29tcG9uZW50cygpOiBSb3V0ZVtdIHtcbiAgICBjb25zdCBhdXRoUm91dGVzID0gdGhpcy5hdXRoUm91dGVzO1xuICAgIHJldHVybiAoT2JqZWN0LmtleXMoYXV0aFJvdXRlcykgYXMgKGtleW9mIEF1dGhQYWdlUm91dGVzKVtdKVxuICAgICAgLmZpbHRlcigoa2V5OiBrZXlvZiBBdXRoUGFnZVJvdXRlcykgPT4ga2V5ICE9PSAnYXV0aGVudGljYXRlZFVybCcgJiYga2V5ICE9PSAnc2lnblVwU3VjY2Vzc1VybCcgJiYga2V5ICE9IG51bGwpXG4gICAgICAubWFwKChrZXk6IGtleW9mIEF1dGhQYWdlUm91dGVzKSA9PiAoe1xuICAgICAgICBwYXRoOiBhdXRoUm91dGVzW2tleV0/LnN1YnN0cmluZygxKSxcbiAgICAgICAgY29tcG9uZW50OiBGcm9udGVnZ0NvbXBvbmVudCxcbiAgICAgIH0pKTtcbiAgfVxuXG4gIGdldCBhdXRoUm91dGVzKCk6IEF1dGhQYWdlUm91dGVzIHtcbiAgICByZXR1cm4gdGhpcy5mcm9udGVnZ0FwcC5zdG9yZS5nZXRTdGF0ZSgpLmF1dGgucm91dGVzO1xuICB9XG5cbiAgLy8gT3BlbiBhZG1pbiBwb3J0YWxcbiAgcHVibGljIHNob3dBZG1pblBvcnRhbChvcHRpb25zPzogU2hvd0FkbWluUG9ydGFsT3B0aW9ucyk6IHZvaWQge1xuICAgIHRoaXMuZnJvbnRlZ2dBcHAuc2hvd0FkbWluUG9ydGFsKG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqICBPcGVuIGFkbWluIHBvcnRhbCBob3N0ZWQgbW9kZVxuICAgKiBAcGFyYW0gbmV3VGFiIC0gb3BlbiBpbiBuZXcgdGFiXG4gICAqICovXG5cbiAgcHVibGljIG9wZW5Ib3N0ZWRBZG1pblBvcnRhbChuZXdUYWI/OiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5mcm9udGVnZ0FwcC5vcGVuSG9zdGVkQWRtaW5Qb3J0YWwobmV3VGFiKTtcbiAgfVxuXG4gIC8vIE9wZW4gYWRtaW4gcG9ydGFsXG4gIHB1YmxpYyBoaWRlQWRtaW5Qb3J0YWwoKTogdm9pZCB7XG4gICAgdGhpcy5mcm9udGVnZ0FwcD8uaGlkZUFkbWluUG9ydGFsKCk7XG4gIH1cblxuICAvLyBPcGVuIGNoZWNrb3V0IGRpYWxvZ1xuICBwdWJsaWMgc2hvd0NoZWNrb3V0RGlhbG9nKG9wdHM6IEZyb250ZWdnQ2hlY2tvdXREaWFsb2dPcHRpb25zKTogdm9pZCB7XG4gICAgdGhpcy5mcm9udGVnZ0FwcC5zaG93Q2hlY2tvdXREaWFsb2cob3B0cyk7XG4gIH1cblxuICAvLyBPcGVuIGNoZWNrb3V0IGRpYWxvZ1xuICBwdWJsaWMgaGlkZUNoZWNrb3V0RGlhbG9nKCk6IHZvaWQge1xuICAgIHRoaXMuZnJvbnRlZ2dBcHA/LmhpZGVDaGVja291dERpYWxvZygpO1xuICB9XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBGcm9udGVnZ0xvYWRHdWFyZCBpbXBsZW1lbnRzIENhbkFjdGl2YXRlIHtcbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIGZyb250ZWdnQXBwU2VydmljZTogRnJvbnRlZ2dBcHBTZXJ2aWNlKSB7XG4gIH1cblxuICBjYW5BY3RpdmF0ZShyb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHwgUHJvbWlzZTxib29sZWFuPiB8IGJvb2xlYW4ge1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTxib29sZWFuPihvYnMgPT4ge1xuICAgICAgdGhpcy5mcm9udGVnZ0FwcFNlcnZpY2UuaXNMb2FkaW5nJC5zdWJzY3JpYmUobG9hZGluZyA9PiB7XG4gICAgICAgIGlmICghbG9hZGluZykge1xuICAgICAgICAgIG9icy5uZXh0KHRydWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
203
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJvbnRlZ2ctYXBwLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mcm9udGVnZy1hcHAvc3JjL2xpYi9mcm9udGVnZy1hcHAuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzRCxPQUFPLEVBQWUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3ZELE9BQU8sRUFBaUMsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFbkYsT0FBTyxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbkQsT0FBTyxFQUFFLGFBQWEsRUFBbUIsa0JBQWtCLEVBQW1CLE1BQU0sb0JBQW9CLENBQUM7QUFDekcsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxVQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sa0JBQWtCLE1BQU0sNEJBQTRCLENBQUM7OztBQUU1RCxNQUFNLE9BQU8sdUJBQXVCO0lBQXBDO1FBQ0UsbUJBQWMsR0FBeUM7WUFDckQsT0FBTyxFQUFFLGlDQUFpQztTQUMzQyxDQUFDO0lBQ0osQ0FBQztDQUFBO0FBS0QsTUFBTSxPQUFPLGtCQUFrQjtJQWdEN0IsWUFBcUQsTUFBMEIsRUFBUyxNQUFjLEVBQVUsTUFBYzs7UUFBekUsV0FBTSxHQUFOLE1BQU0sQ0FBb0I7UUFBUyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQTdDdEgscUJBQWdCLEdBQUcsSUFBSSxlQUFlLENBQVUsSUFBSSxDQUFDLENBQUM7UUFDdEQsMkJBQXNCLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDN0QsaUJBQVksR0FBRyxJQUFJLGVBQWUsQ0FBZ0IsRUFBbUIsQ0FBQyxD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QUNwQixNQUFBLElBQUksQ0FBQyxXQUFXLDBDQUFFLGVBQWUsRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFRCx1QkFBdUI7SUFDaEIsa0JBQWtCLENBQUMsSUFBbUM7UUFDM0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsdUJBQXVCO0lBQ2hCLGtCQUFrQjs7UUFDdkIsTUFBQSxJQUFJLENBQUMsV0FBVywwQ0FBRSxrQkFBa0IsRUFBRSxDQUFDO0lBQ3pDLENBQUM7O2dIQTNMVSxrQkFBa0Isa0JBZ0RULHVCQUF1QjtvSEFoRGhDLGtCQUFrQixjQUZqQixNQUFNOzRGQUVQLGtCQUFrQjtrQkFIOUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQWlEYyxNQUFNOzJCQUFDLHVCQUF1Qjs7QUErSTdDLE1BQU0sT0FBTyxpQkFBaUI7SUFDNUIsWUFBc0Isa0JBQXNDO1FBQXRDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7SUFDNUQsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUE2QixFQUFFLEtBQTBCO1FBQ25FLE9BQU8sSUFBSSxVQUFVLENBQVUsR0FBRyxDQUFDLEVBQUU7WUFDbkMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ3JELElBQUksQ0FBQyxPQUFPLEVBQUU7b0JBQ1osR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDaEI7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7K0dBWlUsaUJBQWlCLGtCQUNjLGtCQUFrQjttSEFEakQsaUJBQWlCOzRGQUFqQixpQkFBaUI7a0JBRDdCLFVBQVU7MERBRWlDLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE5nWm9uZSwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZSwgUm91dGVyLCBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBDYW5BY3RpdmF0ZSwgUm91dGVyU3RhdGVTbmFwc2hvdCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBGcm9udGVnZ0FwcCwgaW5pdGlhbGl6ZSB9IGZyb20gJ0Bmcm9udGVnZy9qcyc7XG5pbXBvcnQgeyBBdXRoUGFnZVJvdXRlcywgRnJvbnRlZ2dTdGF0ZSwgaXNBdXRoUm91dGUgfSBmcm9tICdAZnJvbnRlZ2cvcmVkdXgtc3RvcmUnO1xuaW1wb3J0IHsgRnJvbnRlZ2dBcHBPcHRpb25zLCBGcm9udGVnZ0NoZWNrb3V0RGlhbG9nT3B0aW9ucywgU2hvd0FkbWluUG9ydGFsT3B0aW9ucyB9IGZyb20gJ0Bmcm9udGVnZy90eXBlcyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENvbnRleHRIb2xkZXIsIFJlZGlyZWN0T3B0aW9ucywgRnJvbnRlZ2dGcmFtZXdvcmtzLCBNZXRhZGF0YUhlYWRlcnMgfSBmcm9tICdAZnJvbnRlZ2cvcmVzdC1hcGknO1xuaW1wb3J0IHsgRnJvbnRlZ2dDb21wb25lbnQgfSBmcm9tICcuL2Zyb250ZWdnLmNvbXBvbmVudCc7XG5pbXBvcnQgc2RrVmVyc2lvbiBmcm9tICcuLi9zZGtWZXJzaW9uJztcbmltcG9ydCBhbmd1bGFyQ29yZVZlcnNpb24gZnJvbSAnQGFuZ3VsYXIvY29yZS9wYWNrYWdlLmpzb24nO1xuXG5leHBvcnQgY2xhc3MgRnJvbnRlZ2dBcHBPcHRpb25zQ2xhc3MgaW1wbGVtZW50cyBGcm9udGVnZ0FwcE9wdGlvbnMge1xuICBjb250ZXh0T3B0aW9uczogRnJvbnRlZ2dBcHBPcHRpb25zWydjb250ZXh0T3B0aW9ucyddID0ge1xuICAgIGJhc2VVcmw6ICdodHRwczovL3N1Yi1kb21haW4uZnJvbnRlZ2cuY29tJyxcbiAgfTtcbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEZyb250ZWdnQXBwU2VydmljZSB7XG4gIGZyb250ZWdnQXBwOiBGcm9udGVnZ0FwcDtcblxuICBwcml2YXRlIGlzTG9hZGluZ1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuICBwcml2YXRlIGlzQXV0aGVudGljYXRlZFN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJpdmF0ZSBzdGF0ZVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEZyb250ZWdnU3RhdGU+KHt9IGFzIEZyb250ZWdnU3RhdGUpO1xuICBwcml2YXRlIGF1dGhTdGF0ZVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEZyb250ZWdnU3RhdGVbJ2F1dGgnXT4oe1xuICAgIGlzTG9hZGluZzogdHJ1ZSxcbiAgICBpc0F1dGhlbnRpY2F0ZWQ6IGZhbHNlLFxuICB9IGFzIEZyb250ZWdnU3RhdGVbJ2F1dGgnXSk7XG4gIHByaXZhdGUgYXVkaXRzU3RhdGVTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxGcm9udGVnZ1N0YXRlWydhdWRpdHMnXT4oe30gYXMgRnJvbnRlZ2dTdGF0ZVsnYXVkaXRzJ10pO1xuICBwcml2YXRlIGNvbm5lY3Rpdml0eVN0YXRlU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RnJvbnRlZ2dTdGF0ZVsnY29ubmVjdGl2aXR5J10+KHt9IGFzIEZyb250ZWdnU3RhdGVbJ2Nvbm5lY3Rpdml0eSddKTtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zU3RhdGVTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxGcm9udGVnZ1N0YXRlWydzdWJzY3JpcHRpb25zJ10+KHt9IGFzIEZyb250ZWdnU3RhdGVbJ3N1YnNjcmlwdGlvbnMnXSk7XG4gIHByaXZhdGUgdmVuZG9yU3RhdGVTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxGcm9udGVnZ1N0YXRlWyd2ZW5kb3InXT4oe30gYXMgRnJvbnRlZ2dTdGF0ZVsndmVuZG9yJ10pO1xuXG5cbiAgZ2V0IHN0YXRlJCgpOiBPYnNlcnZhYmxlPEZyb250ZWdnU3RhdGU+IHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXQgYXV0aFN0YXRlJCgpOiBPYnNlcnZhYmxlPEZyb250ZWdnU3RhdGVbJ2F1dGgnXT4ge1xuICAgIHJldHVybiB0aGlzLmF1dGhTdGF0ZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXQgYXVkaXRzU3RhdGUkKCk6IE9ic2VydmFibGU8RnJvbnRlZ2dTdGF0ZVsnYXVkaXRzJ10+IHtcbiAgICByZXR1cm4gdGhpcy5hdWRpdHNTdGF0ZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXQgY29ubmVjdGl2aXR5U3RhdGUkKCk6IE9ic2VydmFibGU8RnJvbnRlZ2dTdGF0ZVsnY29ubmVjdGl2aXR5J10+IHtcbiAgICByZXR1cm4gdGhpcy5jb25uZWN0aXZpdHlTdGF0ZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXQgc3Vic2NyaXB0aW9uc1N0YXRlJCgpOiBPYnNlcnZhYmxlPEZyb250ZWdnU3RhdGVbJ3N1YnNjcmlwdGlvbnMnXT4ge1xuICAgIHJldHVybiB0aGlzLnN1YnNjcmlwdGlvbnNTdGF0ZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXQgdmVuZG9yU3RhdGUkKCk6IE9ic2VydmFibGU8RnJvbnRlZ2dTdGF0ZVsndmVuZG9yJ10+IHtcbiAgICByZXR1cm4gdGhpcy52ZW5kb3JTdGF0ZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXQgaXNMb2FkaW5nJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5pc0xvYWRpbmdTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICB9O1xuXG4gIGdldCBpc0F1dGhlbnRpY2F0ZWQkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmlzQXV0aGVudGljYXRlZFN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIH07XG5cbiAgY29uc3RydWN0b3IoQEluamVjdChGcm9udGVnZ0FwcE9wdGlvbnNDbGFzcykgcHJpdmF0ZSBjb25maWc6IEZyb250ZWdnQXBwT3B0aW9ucywgcHVibGljIHJvdXRlcjogUm91dGVyLCBwcml2YXRlIG5nWm9uZTogTmdab25lKSB7XG4gICAgaWYgKCF0aGlzLmNvbmZpZykge1xuICAgICAgdGhyb3cgRXJyb3IoJ05lZWQgdG8gcGFzcyBjb25maWc6IEZyb250ZWdnQ29uZmlnT3B0aW9ucyBpbiBGcm9udGVnZ0FwcE1vZHVsZS5mb3JSb290KGNvbmZpZyknKTtcbiAgICB9XG5cbiAgICBpZiAoKHdpbmRvdyBhcyBhbnkpLkNZUFJFU1NfQ09ORklHKSB7XG4gICAgICB0aGlzLmNvbmZpZyA9ICh3aW5kb3cgYXMgYW55KS5DWVBSRVNTX0NPTkZJRztcbiAgICB9XG4gICAgY29uc3Qgb25SZWRpcmVjdFRvID0gKHRvOiBzdHJpbmcsIG9wdHM/OiBSZWRpcmVjdE9wdGlvbnMpID0+IHtcbiAgICAgIGNvbnN0IGJhc2VOYW1lID0gd2luZG93LmxvY2F0aW9uLm9yaWdpbjtcbiAgICAgIGxldCBwYXRoID0gdG87XG4gICAgICBpZiAocGF0aC5zdGFydHNXaXRoKGJhc2VOYW1lKSAmJiBiYXNlTmFtZSAhPT0gJy8nKSB7XG4gICAgICAgIHBhdGggPSBwYXRoLnN1YnN0cmluZyhiYXNlTmFtZS5sZW5ndGggLSAxKTtcbiAgICAgIH1cbiAgICAgIGlmIChvcHRzPy5wcmVzZXJ2ZVF1ZXJ5UGFyYW1zIHx8IGlzQXV0aFJvdXRlKHBhdGgsIGNvbmZpZy5hdXRoT3B0aW9ucz8ucm91dGVzKSkge1xuICAgICAgICBwYXRoID0gYCR7cGF0aH0ke3dpbmRvdy5sb2NhdGlvbi5zZWFyY2h9YDtcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdHM/LnJlZnJlc2gpIHtcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBwYXRoO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICBpZiAob3B0cz8ucmVwbGFjZSkge1xuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChwYXRoLCB7IHJlcGxhY2VVcmw6IHRydWUgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwocGF0aCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9O1xuXG5cbiAgICBjb25zdCBtZXRhZGF0YUhlYWRlcnM6IE1ldGFkYXRhSGVhZGVycyA9IHtcbiAgICAgIGZyb250ZWdnU2RrVmVyc2lvbjogYEBmcm9udGVnZy9hbmd1bGFyQCR7c2RrVmVyc2lvbi52ZXJzaW9ufWAsXG4gICAgICAvLyBUT0RPOiByZW1vdmUgdGhpcyBhbnkgdHlwZSBhZnRlciB1cGRhdGluZyByZXN0LWFwaSBjb250ZXh0IG9wdGlvbnMgdHlwZSB0byBhY2NlcHQgc3RyaW5nLlxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgZnJhbWV3b3JrOiBgJHtGcm9udGVnZ0ZyYW1ld29ya3MuQW5ndWxhcn1AJHthbmd1bGFyQ29yZVZlcnNpb24udmVyc2lvbn1gLFxuICAgIH07XG5cbiAgICBjb25zdCBhcHBOYW1lID0gdGhpcy5jb25maWcuYXBwTmFtZSA/PyAnZGVmYXVsdCdcbiAgICAvLyBwcmVwYXJlIGNvbmZpZyBkZWZhdWx0IHZhbHVlc1xuICAgIHRoaXMuY29uZmlnID0ge1xuICAgICAgLi4udGhpcy5jb25maWcsXG4gICAgICBhcHBOYW1lLFxuICAgICAgY29udGV4dE9wdGlvbnM6IHtcbiAgICAgICAgLi4udGhpcy5jb25maWcuY29udGV4dE9wdGlvbnMsXG4gICAgICAgIG1ldGFkYXRhSGVhZGVycyxcbiAgICAgIH0sXG4gICAgICBhdXRoT3B0aW9uczoge1xuICAgICAgICAuLi50aGlzLmNvbmZpZy5hdXRoT3B0aW9ucyxcbiAgICAgICAgaG9zdGVkTG9naW5PcHRpb25zOiB7XG4gICAgICAgICAgbG9hZFVzZXJPbkZpcnN0TG9hZDogdHJ1ZSwgLy8gc2V0IGRlZmF1bHQgdG8gbG9hZCB1c2VyIG9uIGZpcnN0IGxvYWRcbiAgICAgICAgICAuLi50aGlzLmNvbmZpZy5hdXRoT3B0aW9ucz8uaG9zdGVkTG9naW5PcHRpb25zLFxuICAgICAgICB9LFxuICAgICAgICBvblJlZGlyZWN0VG8sXG4gICAgICB9LFxuICAgIH07XG5cbiAgICBDb250ZXh0SG9sZGVyLmZvcihhcHBOYW1lKS5zZXRPblJlZGlyZWN0VG8ob25SZWRpcmVjdFRvKTtcbiAgICB0aGlzLmZyb250ZWdnQXBwID0gaW5pdGlhbGl6ZSh7XG4gICAgICBvblJlZGlyZWN0VG8sXG4gICAgICAuLi50aGlzLmNvbmZpZyxcbiAgICB9KTtcblxuXG4gICAgLy8gQWRkIGFsbCBsb2dpbiBib3ggcm91dGVzIHRvIEFuZ3VsYXIgcm91dGVyIGNvbmZpZ1xuICAgIHRoaXMucm91dGVyLnJlc2V0Q29uZmlnKFtcbiAgICAgIC4uLnRoaXMubWFwQXV0aENvbXBvbmVudHMsXG4gICAgICB7XG4gICAgICAgIHBhdGg6ICcnLFxuICAgICAgICBjYW5BY3RpdmF0ZTogWyBGcm9udGVnZ0xvYWRHdWFyZCBdLFxuICAgICAgICBjaGlsZHJlbjogWyAuLi50aGlzLnJvdXRlci5jb25maWcgXSxcbiAgICAgIH0sXG4gICAgXSk7XG4gICAgY29uc3QgaW5pdGlhbEZyb250ZWdnU3RhdGUgPSB0aGlzLmZyb250ZWdnQXBwLnN0b3JlLmdldFN0YXRlKCkgYXMgRnJvbnRlZ2dTdGF0ZTtcbiAgICB0aGlzLnVwZGF0ZVN0YXRlKGluaXRpYWxGcm9udGVnZ1N0YXRlKTtcbiAgICAvLyBTdWJzY3JpYmUgb24gZnJvbnRlZ2dBcHAgc3RvcmUgdG8gY2hhbmdlIHN0YXRlIHN1YmplY3RzXG4gICAgdGhpcy5mcm9udGVnZ0FwcC5zdG9yZS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy51cGRhdGVTdGF0ZSh0aGlzLmZyb250ZWdnQXBwLnN0b3JlLmdldFN0YXRlKCkgYXMgRnJvbnRlZ2dTdGF0ZSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVN0YXRlKGZyb250ZWdnU3RvcmU6IEZyb250ZWdnU3RhdGUpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc0xvYWRpbmdTdWJqZWN0LmdldFZhbHVlKCkgIT09IGZyb250ZWdnU3RvcmUuYXV0aC5pc0xvYWRpbmcpIHtcbiAgICAgIHRoaXMuaXNMb2FkaW5nU3ViamVjdC5uZXh0KGZyb250ZWdnU3RvcmUuYXV0aC5pc0xvYWRpbmcpO1xuICAgIH1cbiAgICBpZiAodGhpcy5pc0F1dGhlbnRpY2F0ZWRTdWJqZWN0LmdldFZhbHVlKCkgIT09IGZyb250ZWdnU3RvcmUuYXV0aC5pc0F1dGhlbnRpY2F0ZWQpIHtcbiAgICAgIHRoaXMuaXNBdXRoZW50aWNhdGVkU3ViamVjdC5uZXh0KGZyb250ZWdnU3RvcmUuYXV0aC5pc0F1dGhlbnRpY2F0ZWQpO1xuICAgIH1cblxuICAgIHRoaXMuc3RhdGVTdWJqZWN0Lm5leHQoZnJvbnRlZ2dTdG9yZSk7XG4gICAgdGhpcy5hdXRoU3RhdGVTdWJqZWN0Lm5leHQoZnJvbnRlZ2dTdG9yZS5hdXRoKTtcbiAgICB0aGlzLmF1ZGl0c1N0YXRlU3ViamVjdC5uZXh0KGZyb250ZWdnU3RvcmUuYXVkaXRzKTtcbiAgICB0aGlzLmNvbm5lY3Rpdml0eVN0YXRlU3ViamVjdC5uZXh0KGZyb250ZWdnU3RvcmUuY29ubmVjdGl2aXR5KTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnNTdGF0ZVN1YmplY3QubmV4dChmcm9udGVnZ1N0b3JlLnN1YnNjcmlwdGlvbnMpO1xuICAgIHRoaXMudmVuZG9yU3RhdGVTdWJqZWN0Lm5leHQoZnJvbnRlZ2dTdG9yZS52ZW5kb3IpO1xuICB9XG5cbiAgZ2V0IG1hcEF1dGhDb21wb25lbnRzKCk6IFJvdXRlW10ge1xuICAgIGNvbnN0IGF1dGhSb3V0ZXMgPSB0aGlzLmF1dGhSb3V0ZXM7XG4gICAgcmV0dXJuIChPYmplY3Qua2V5cyhhdXRoUm91dGVzKSBhcyAoa2V5b2YgQXV0aFBhZ2VSb3V0ZXMpW10pXG4gICAgICAuZmlsdGVyKChrZXk6IGtleW9mIEF1dGhQYWdlUm91dGVzKSA9PiBrZXkgIT09ICdhdXRoZW50aWNhdGVkVXJsJyAmJiBrZXkgIT09ICdzaWduVXBTdWNjZXNzVXJsJyAmJiBrZXkgIT0gbnVsbClcbiAgICAgIC5tYXAoKGtleToga2V5b2YgQXV0aFBhZ2VSb3V0ZXMpID0+ICh7XG4gICAgICAgIHBhdGg6IGF1dGhSb3V0ZXNba2V5XT8uc3Vic3RyaW5nKDEpLFxuICAgICAgICBjb21wb25lbnQ6IEZyb250ZWdnQ29tcG9uZW50LFxuICAgICAgfSkpO1xuICB9XG5cbiAgZ2V0IGF1dGhSb3V0ZXMoKTogQXV0aFBhZ2VSb3V0ZXMge1xuICAgIHJldHVybiB0aGlzLmZyb250ZWdnQXBwLnN0b3JlLmdldFN0YXRlKCkuYXV0aC5yb3V0ZXM7XG4gIH1cblxuICAvLyBPcGVuIGFkbWluIHBvcnRhbFxuICBwdWJsaWMgc2hvd0FkbWluUG9ydGFsKG9wdGlvbnM/OiBTaG93QWRtaW5Qb3J0YWxPcHRpb25zKTogdm9pZCB7XG4gICAgdGhpcy5mcm9udGVnZ0FwcC5zaG93QWRtaW5Qb3J0YWwob3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogIE9wZW4gYWRtaW4gcG9ydGFsIGhvc3RlZCBtb2RlXG4gICAqIEBwYXJhbSBuZXdUYWIgLSBvcGVuIGluIG5ldyB0YWJcbiAgICogKi9cblxuICBwdWJsaWMgb3Blbkhvc3RlZEFkbWluUG9ydGFsKG5ld1RhYj86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmZyb250ZWdnQXBwLm9wZW5Ib3N0ZWRBZG1pblBvcnRhbChuZXdUYWIpO1xuICB9XG5cbiAgLy8gT3BlbiBhZG1pbiBwb3J0YWxcbiAgcHVibGljIGhpZGVBZG1pblBvcnRhbCgpOiB2b2lkIHtcbiAgICB0aGlzLmZyb250ZWdnQXBwPy5oaWRlQWRtaW5Qb3J0YWwoKTtcbiAgfVxuXG4gIC8vIE9wZW4gY2hlY2tvdXQgZGlhbG9nXG4gIHB1YmxpYyBzaG93Q2hlY2tvdXREaWFsb2cob3B0czogRnJvbnRlZ2dDaGVja291dERpYWxvZ09wdGlvbnMpOiB2b2lkIHtcbiAgICB0aGlzLmZyb250ZWdnQXBwLnNob3dDaGVja291dERpYWxvZyhvcHRzKTtcbiAgfVxuXG4gIC8vIE9wZW4gY2hlY2tvdXQgZGlhbG9nXG4gIHB1YmxpYyBoaWRlQ2hlY2tvdXREaWFsb2coKTogdm9pZCB7XG4gICAgdGhpcy5mcm9udGVnZ0FwcD8uaGlkZUNoZWNrb3V0RGlhbG9nKCk7XG4gIH1cbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEZyb250ZWdnTG9hZEd1YXJkIGltcGxlbWVudHMgQ2FuQWN0aXZhdGUge1xuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgZnJvbnRlZ2dBcHBTZXJ2aWNlOiBGcm9udGVnZ0FwcFNlcnZpY2UpIHtcbiAgfVxuXG4gIGNhbkFjdGl2YXRlKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCk6IE9ic2VydmFibGU8Ym9vbGVhbj4gfCBQcm9taXNlPGJvb2xlYW4+IHwgYm9vbGVhbiB7XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPGJvb2xlYW4+KG9icyA9PiB7XG4gICAgICB0aGlzLmZyb250ZWdnQXBwU2VydmljZS5pc0xvYWRpbmckLnN1YnNjcmliZShsb2FkaW5nID0+IHtcbiAgICAgICAgaWYgKCFsb2FkaW5nKSB7XG4gICAgICAgICAgb2JzLm5leHQodHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG59XG4iXX0=
|