@openziti/ziti-console-lib 0.6.0 → 0.6.1
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/assets/styles/global.scss +212 -3
- package/esm2022/lib/features/data-table/cells/table-cell-name/table-cell-name.component.mjs +12 -3
- package/esm2022/lib/features/dynamic-widgets/text-list/text-list-input.component.mjs +2 -2
- package/esm2022/lib/features/list-page-features/list-page-header/list-page-header.component.mjs +22 -3
- package/esm2022/lib/features/projectable-forms/auth-policy/auth-policy-form.component.mjs +342 -0
- package/esm2022/lib/features/projectable-forms/auth-policy/auth-policy-form.service.mjs +127 -0
- package/esm2022/lib/features/projectable-forms/jwt-signer/jwt-signer-form.component.mjs +78 -20
- package/esm2022/lib/features/projectable-forms/jwt-signer/jwt-signer-form.service.mjs +2 -2
- package/esm2022/lib/features/projectable-forms/service/service-form.component.mjs +3 -3
- package/esm2022/lib/features/tag-selector/tag-selector.component.mjs +2 -2
- package/esm2022/lib/models/auth-policy.mjs +31 -0
- package/esm2022/lib/models/jwt-signer.mjs +4 -2
- package/esm2022/lib/pages/auth-policies/auth-policies-page.component.mjs +115 -0
- package/esm2022/lib/pages/auth-policies/auth-policies-page.service.mjs +207 -0
- package/esm2022/lib/pages/jwt-signers/jwt-signers-page.component.mjs +3 -3
- package/esm2022/lib/pages/terminators/terminators-page.component.mjs +2 -2
- package/esm2022/lib/services/node-data.service.mjs +18 -1
- package/esm2022/lib/services/validation.service.mjs +10 -1
- package/esm2022/lib/services/ziti-controller-data.service.mjs +16 -1
- package/esm2022/lib/services/ziti-data.service.mjs +1 -1
- package/esm2022/lib/ziti-console-lib.module.mjs +19 -5
- package/esm2022/public-api.mjs +5 -1
- package/fesm2022/openziti-ziti-console-lib.mjs +1080 -189
- package/fesm2022/openziti-ziti-console-lib.mjs.map +1 -1
- package/lib/features/data-table/cells/table-cell-name/table-cell-name.component.d.ts.map +1 -1
- package/lib/features/list-page-features/list-page-header/list-page-header.component.d.ts +1 -0
- package/lib/features/list-page-features/list-page-header/list-page-header.component.d.ts.map +1 -1
- package/lib/features/projectable-forms/auth-policy/auth-policy-form.component.d.ts +75 -0
- package/lib/features/projectable-forms/auth-policy/auth-policy-form.component.d.ts.map +1 -0
- package/lib/features/projectable-forms/auth-policy/auth-policy-form.service.d.ts +38 -0
- package/lib/features/projectable-forms/auth-policy/auth-policy-form.service.d.ts.map +1 -0
- package/lib/features/projectable-forms/jwt-signer/jwt-signer-form.component.d.ts +4 -0
- package/lib/features/projectable-forms/jwt-signer/jwt-signer-form.component.d.ts.map +1 -1
- package/lib/models/auth-policy.d.ts +8 -0
- package/lib/models/auth-policy.d.ts.map +1 -0
- package/lib/models/jwt-signer.d.ts +3 -1
- package/lib/models/jwt-signer.d.ts.map +1 -1
- package/lib/pages/auth-policies/auth-policies-page.component.d.ts +29 -0
- package/lib/pages/auth-policies/auth-policies-page.component.d.ts.map +1 -0
- package/lib/pages/auth-policies/auth-policies-page.service.d.ts +34 -0
- package/lib/pages/auth-policies/auth-policies-page.service.d.ts.map +1 -0
- package/lib/pages/jwt-signers/jwt-signers-page.component.d.ts +1 -1
- package/lib/services/node-data.service.d.ts +1 -0
- package/lib/services/node-data.service.d.ts.map +1 -1
- package/lib/services/validation.service.d.ts +1 -0
- package/lib/services/validation.service.d.ts.map +1 -1
- package/lib/services/ziti-controller-data.service.d.ts +1 -0
- package/lib/services/ziti-controller-data.service.d.ts.map +1 -1
- package/lib/services/ziti-data.service.d.ts +1 -0
- package/lib/services/ziti-data.service.d.ts.map +1 -1
- package/lib/ziti-console-lib.module.d.ts +20 -17
- package/lib/ziti-console-lib.module.d.ts.map +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +4 -0
- package/public-api.d.ts.map +1 -1
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { Injectable, Inject } from '@angular/core';
|
|
2
|
+
import { ZITI_DATA_SERVICE } from "../../../services/ziti-data.service";
|
|
3
|
+
import { cloneDeep, isEmpty, keys } from "lodash";
|
|
4
|
+
import { GrowlerModel } from "../../messaging/growler.model";
|
|
5
|
+
import { SHAREDZ_EXTENSION } from "../../extendable/extensions-noop.service";
|
|
6
|
+
import { AuthPolicy } from "../../../models/auth-policy";
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "../../messaging/growler.service";
|
|
9
|
+
import * as i2 from "../../../services/validation.service";
|
|
10
|
+
import * as i3 from "../../../services/ziti-data.service";
|
|
11
|
+
class AuthPolicyFormService {
|
|
12
|
+
constructor(dataService, extService, growlerService, validationService) {
|
|
13
|
+
this.dataService = dataService;
|
|
14
|
+
this.extService = extService;
|
|
15
|
+
this.growlerService = growlerService;
|
|
16
|
+
this.validationService = validationService;
|
|
17
|
+
this.items = [];
|
|
18
|
+
this.errors = [];
|
|
19
|
+
this.saveDisabled = false;
|
|
20
|
+
this.jwtSigners = [];
|
|
21
|
+
this.jwtSignerNamedAttributes = [];
|
|
22
|
+
this.jwtSignerNamedAttributesMap = {};
|
|
23
|
+
this.jwtSignersLoading = false;
|
|
24
|
+
this.paging = {
|
|
25
|
+
filter: "",
|
|
26
|
+
noSearch: true,
|
|
27
|
+
order: "asc",
|
|
28
|
+
page: 1,
|
|
29
|
+
searchOn: "name",
|
|
30
|
+
sort: "name",
|
|
31
|
+
total: 100
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
getJwtSignerNamedAttributes() {
|
|
35
|
+
return this.dataService.get('external-jwt-signers', { rawFilter: true, filter: '', sort: 'name', order: 'asc', total: -1, page: 1 }, []).then((result) => {
|
|
36
|
+
const namedAttributes = result.data.map((identity) => {
|
|
37
|
+
this.jwtSignerNamedAttributesMap[identity.name] = identity.id;
|
|
38
|
+
return identity.name;
|
|
39
|
+
});
|
|
40
|
+
this.jwtSignerNamedAttributes = namedAttributes;
|
|
41
|
+
return namedAttributes;
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
getJwtSigners(filters = [], page = 1) {
|
|
45
|
+
this.jwtSignersLoading = true;
|
|
46
|
+
const paging = cloneDeep(this.paging);
|
|
47
|
+
if (filters.length > 0) {
|
|
48
|
+
paging.noSearch = false;
|
|
49
|
+
}
|
|
50
|
+
return this.dataService.get('external-jwt-signers', paging, filters).then((result) => {
|
|
51
|
+
this.jwtSigners = result.data;
|
|
52
|
+
}).finally(() => {
|
|
53
|
+
this.jwtSignersLoading = false;
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
save(formData) {
|
|
57
|
+
const isUpdate = !isEmpty(formData.id);
|
|
58
|
+
const data = this.getAuthPolicyDataModel(formData, isUpdate);
|
|
59
|
+
let prom;
|
|
60
|
+
if (isUpdate) {
|
|
61
|
+
prom = this.dataService.put('auth-policies', data, formData.id, true);
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
prom = this.dataService.post('auth-policies', data, true);
|
|
65
|
+
}
|
|
66
|
+
return prom.then(async (result) => {
|
|
67
|
+
const id = isUpdate ? formData.id : (result?.data?.id || result?.id);
|
|
68
|
+
let config = await this.dataService.getSubdata('auth-policies', id, '').then((svcData) => {
|
|
69
|
+
return svcData.data;
|
|
70
|
+
});
|
|
71
|
+
return this.extService.formDataSaved(config).then((formSavedResult) => {
|
|
72
|
+
if (!formSavedResult) {
|
|
73
|
+
return config;
|
|
74
|
+
}
|
|
75
|
+
const growlerData = new GrowlerModel('success', 'Success', `Auth Policy ${isUpdate ? 'Updated' : 'Created'}`, `Successfully ${isUpdate ? 'updated' : 'created'} Auth Policy: ${formData.name}`);
|
|
76
|
+
this.growlerService.show(growlerData);
|
|
77
|
+
return config;
|
|
78
|
+
}).catch((result) => {
|
|
79
|
+
return false;
|
|
80
|
+
});
|
|
81
|
+
}).catch((resp) => {
|
|
82
|
+
let errorMessage;
|
|
83
|
+
if (resp?.error?.error?.cause?.message) {
|
|
84
|
+
errorMessage = resp?.error?.error?.cause?.message;
|
|
85
|
+
}
|
|
86
|
+
else if (resp?.error?.error?.cause?.reason) {
|
|
87
|
+
errorMessage = resp?.error?.error?.cause?.reason;
|
|
88
|
+
}
|
|
89
|
+
else if (resp?.error?.message) {
|
|
90
|
+
errorMessage = resp?.error?.message;
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
errorMessage = 'An unknown error occurred';
|
|
94
|
+
}
|
|
95
|
+
const growlerData = new GrowlerModel('error', 'Error', `Error Creating Auth Policy`, errorMessage);
|
|
96
|
+
this.growlerService.show(growlerData);
|
|
97
|
+
throw resp;
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
getAuthPolicyDataModel(formData, isUpdate) {
|
|
101
|
+
const saveModel = new AuthPolicy();
|
|
102
|
+
const modelProperties = keys(saveModel);
|
|
103
|
+
modelProperties.forEach((prop) => {
|
|
104
|
+
switch (prop) {
|
|
105
|
+
default:
|
|
106
|
+
saveModel[prop] = formData[prop];
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
return saveModel;
|
|
110
|
+
}
|
|
111
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AuthPolicyFormService, deps: [{ token: ZITI_DATA_SERVICE }, { token: SHAREDZ_EXTENSION }, { token: i1.GrowlerService }, { token: i2.ValidationService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
112
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AuthPolicyFormService, providedIn: 'root' }); }
|
|
113
|
+
}
|
|
114
|
+
export { AuthPolicyFormService };
|
|
115
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AuthPolicyFormService, decorators: [{
|
|
116
|
+
type: Injectable,
|
|
117
|
+
args: [{
|
|
118
|
+
providedIn: 'root'
|
|
119
|
+
}]
|
|
120
|
+
}], ctorParameters: function () { return [{ type: i3.ZitiDataService, decorators: [{
|
|
121
|
+
type: Inject,
|
|
122
|
+
args: [ZITI_DATA_SERVICE]
|
|
123
|
+
}] }, { type: undefined, decorators: [{
|
|
124
|
+
type: Inject,
|
|
125
|
+
args: [SHAREDZ_EXTENSION]
|
|
126
|
+
}] }, { type: i1.GrowlerService }, { type: i2.ValidationService }]; } });
|
|
127
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1wb2xpY3ktZm9ybS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMveml0aS1jb25zb2xlLWxpYi9zcmMvbGliL2ZlYXR1cmVzL3Byb2plY3RhYmxlLWZvcm1zL2F1dGgtcG9saWN5L2F1dGgtcG9saWN5LWZvcm0uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUMsaUJBQWlCLEVBQWtCLE1BQU0scUNBQXFDLENBQUM7QUFDdkYsT0FBTyxFQUFDLFNBQVMsRUFBNEIsT0FBTyxFQUFTLElBQUksRUFBQyxNQUFNLFFBQVEsQ0FBQztBQUNqRixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFFM0QsT0FBTyxFQUFtQixpQkFBaUIsRUFBQyxNQUFNLDBDQUEwQyxDQUFDO0FBRTdGLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQzs7Ozs7QUFFdkQsTUFHYSxxQkFBcUI7SUF3QjlCLFlBQ3VDLFdBQTRCLEVBQzdCLFVBQTRCLEVBQ3RELGNBQThCLEVBQzlCLGlCQUFvQztRQUhULGdCQUFXLEdBQVgsV0FBVyxDQUFpQjtRQUM3QixlQUFVLEdBQVYsVUFBVSxDQUFrQjtRQUN0RCxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQTFCaEQsVUFBSyxHQUFVLEVBQUUsQ0FBQztRQUNsQixXQUFNLEdBQVUsRUFBRSxDQUFDO1FBQ25CLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBRXJCLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFDaEIsNkJBQXdCLEdBQUcsRUFBRSxDQUFDO1FBQzlCLGdDQUEyQixHQUFHLEVBQUUsQ0FBQztRQUNqQyxzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFL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MkJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlLCBJbmplY3R9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtaSVRJX0RBVEFfU0VSVklDRSwgWml0aURhdGFTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMveml0aS1kYXRhLnNlcnZpY2VcIjtcbmltcG9ydCB7Y2xvbmVEZWVwLCBkZWZlciwgaW52ZXJ0LCBpc0Jvb2xlYW4sIGlzRW1wdHksIGlzTmlsLCBrZXlzfSBmcm9tIFwibG9kYXNoXCI7XG5pbXBvcnQge0dyb3dsZXJNb2RlbH0gZnJvbSBcIi4uLy4uL21lc3NhZ2luZy9ncm93bGVyLm1vZGVsXCI7XG5pbXBvcnQge0dyb3dsZXJTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vbWVzc2FnaW5nL2dyb3dsZXIuc2VydmljZVwiO1xuaW1wb3J0IHtFeHRlbnNpb25TZXJ2aWNlLCBTSEFSRURaX0VYVEVOU0lPTn0gZnJvbSBcIi4uLy4uL2V4dGVuZGFibGUvZXh0ZW5zaW9ucy1ub29wLnNlcnZpY2VcIjtcbmltcG9ydCB7VmFsaWRhdGlvblNlcnZpY2V9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlcy92YWxpZGF0aW9uLnNlcnZpY2VcIjtcbmltcG9ydCB7QXV0aFBvbGljeX0gZnJvbSBcIi4uLy4uLy4uL21vZGVscy9hdXRoLXBvbGljeVwiO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEF1dGhQb2xpY3lGb3JtU2VydmljZSB7XG5cbiAgICBpdGVtczogYW55W10gPSBbXTtcbiAgICBlcnJvcnM6IGFueVtdID0gW107XG4gICAgc2F2ZURpc2FibGVkID0gZmFsc2U7XG5cbiAgICBqd3RTaWduZXJzID0gW107XG4gICAgand0U2lnbmVyTmFtZWRBdHRyaWJ1dGVzID0gW107XG4gICAgand0U2lnbmVyTmFtZWRBdHRyaWJ1dGVzTWFwID0ge307XG4gICAgand0U2lnbmVyc0xvYWRpbmcgPSBmYWxzZTtcblxuICAgIHNlbGVjdGVkU2Vjb25kYXJ5Snd0U2lnbmVyO1xuICAgIGZpbHRlcmVkSnd0U2lnbmVycztcblxuICAgIHBhZ2luZyA9IHtcbiAgICAgICAgZmlsdGVyOiBcIlwiLFxuICAgICAgICBub1NlYXJjaDogdHJ1ZSxcbiAgICAgICAgb3JkZXI6IFwiYXNjXCIsXG4gICAgICAgIHBhZ2U6IDEsXG4gICAgICAgIHNlYXJjaE9uOiBcIm5hbWVcIixcbiAgICAgICAgc29ydDogXCJuYW1lXCIsXG4gICAgICAgIHRvdGFsOiAxMDBcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChaSVRJX0RBVEFfU0VSVklDRSkgcHJpdmF0ZSBkYXRhU2VydmljZTogWml0aURhdGFTZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KFNIQVJFRFpfRVhURU5TSU9OKXByaXZhdGUgZXh0U2VydmljZTogRXh0ZW5zaW9uU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBncm93bGVyU2VydmljZTogR3Jvd2xlclNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgdmFsaWRhdGlvblNlcnZpY2U6IFZhbGlkYXRpb25TZXJ2aWNlXG4gICAgKSB7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEp3dFNpZ25lck5hbWVkQXR0cmlidXRlcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YVNlcnZpY2UuZ2V0KCdleHRlcm5hbC1qd3Qtc2lnbmVycycsIHtyYXdGaWx0ZXI6IHRydWUsIGZpbHRlcjogJycsIHNvcnQ6ICduYW1lJywgb3JkZXI6ICdhc2MnLCB0b3RhbDogLTEsIHBhZ2U6IDF9LCBbXSkudGhlbigocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBuYW1lZEF0dHJpYnV0ZXMgPSByZXN1bHQuZGF0YS5tYXAoKGlkZW50aXR5KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5qd3RTaWduZXJOYW1lZEF0dHJpYnV0ZXNNYXBbaWRlbnRpdHkubmFtZV0gPSBpZGVudGl0eS5pZDtcbiAgICAgICAgICAgICAgICByZXR1cm4gaWRlbnRpdHkubmFtZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5qd3RTaWduZXJOYW1lZEF0dHJpYnV0ZXMgPSBuYW1lZEF0dHJpYnV0ZXM7XG4gICAgICAgICAgICByZXR1cm4gbmFtZWRBdHRyaWJ1dGVzO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXRKd3RTaWduZXJzKGZpbHRlcnMgPSBbXSwgcGFnZSA9IDEpIHtcbiAgICAgICAgdGhpcy5qd3RTaWduZXJzTG9hZGluZyA9IHRydWU7XG4gICAgICAgIGNvbnN0IHBhZ2luZyA9IGNsb25lRGVlcCh0aGlzLnBhZ2luZyk7XG4gICAgICAgIGlmIChmaWx0ZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHBhZ2luZy5ub1NlYXJjaCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLmdldCgnZXh0ZXJuYWwtand0LXNpZ25lcnMnLCBwYWdpbmcsIGZpbHRlcnMpLnRoZW4oKHJlc3VsdDogYW55KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmp3dFNpZ25lcnMgPSByZXN1bHQuZGF0YTtcbiAgICAgICAgfSkuZmluYWxseSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmp3dFNpZ25lcnNMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHNhdmUoZm9ybURhdGEpIHtcbiAgICAgICAgY29uc3QgaXNVcGRhdGUgPSAhaXNFbXB0eShmb3JtRGF0YS5pZCk7XG4gICAgICAgIGNvbnN0IGRhdGE6IGFueSA9IHRoaXMuZ2V0QXV0aFBvbGljeURhdGFNb2RlbChmb3JtRGF0YSwgaXNVcGRhdGUpO1xuICAgICAgICBsZXQgcHJvbTtcbiAgICAgICAgaWYgKGlzVXBkYXRlKSB7XG4gICAgICAgICAgICBwcm9tID0gdGhpcy5kYXRhU2VydmljZS5wdXQoJ2F1dGgtcG9saWNpZXMnLCBkYXRhLCBmb3JtRGF0YS5pZCwgdHJ1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwcm9tID0gdGhpcy5kYXRhU2VydmljZS5wb3N0KCdhdXRoLXBvbGljaWVzJywgZGF0YSwgdHJ1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcHJvbS50aGVuKGFzeW5jIChyZXN1bHQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaWQgPSBpc1VwZGF0ZSA/IGZvcm1EYXRhLmlkIDogKHJlc3VsdD8uZGF0YT8uaWQgfHwgcmVzdWx0Py5pZCk7XG4gICAgICAgICAgICBsZXQgY29uZmlnID0gYXdhaXQgdGhpcy5kYXRhU2VydmljZS5nZXRTdWJkYXRhKCdhdXRoLXBvbGljaWVzJywgaWQsICcnKS50aGVuKChzdmNEYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN2Y0RhdGEuZGF0YTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXh0U2VydmljZS5mb3JtRGF0YVNhdmVkKGNvbmZpZykudGhlbigoZm9ybVNhdmVkUmVzdWx0OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIWZvcm1TYXZlZFJlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29uZmlnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBncm93bGVyRGF0YSA9IG5ldyBHcm93bGVyTW9kZWwoXG4gICAgICAgICAgICAgICAgICAgICdzdWNjZXNzJyxcbiAgICAgICAgICAgICAgICAgICAgJ1N1Y2Nlc3MnLFxuICAgICAgICAgICAgICAgICAgICBgQXV0aCBQb2xpY3kgJHtpc1VwZGF0ZSA/ICdVcGRhdGVkJyA6ICdDcmVhdGVkJ31gLFxuICAgICAgICAgICAgICAgICAgICBgU3VjY2Vzc2Z1bGx5ICR7aXNVcGRhdGUgPyAndXBkYXRlZCcgOiAnY3JlYXRlZCd9IEF1dGggUG9saWN5OiAke2Zvcm1EYXRhLm5hbWV9YCxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHRoaXMuZ3Jvd2xlclNlcnZpY2Uuc2hvdyhncm93bGVyRGF0YSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbmZpZztcbiAgICAgICAgICAgIH0pLmNhdGNoKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSkuY2F0Y2goKHJlc3ApID0+IHtcbiAgICAgICAgICAgIGxldCBlcnJvck1lc3NhZ2U7XG4gICAgICAgICAgICBpZiAocmVzcD8uZXJyb3I/LmVycm9yPy5jYXVzZT8ubWVzc2FnZSkge1xuICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9IHJlc3A/LmVycm9yPy5lcnJvcj8uY2F1c2U/Lm1lc3NhZ2U7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3A/LmVycm9yPy5lcnJvcj8uY2F1c2U/LnJlYXNvbikge1xuICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9IHJlc3A/LmVycm9yPy5lcnJvcj8uY2F1c2U/LnJlYXNvbjtcbiAgICAgICAgICAgIH1lbHNlIGlmIChyZXNwPy5lcnJvcj8ubWVzc2FnZSkge1xuICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9IHJlc3A/LmVycm9yPy5tZXNzYWdlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2UgPSAnQW4gdW5rbm93biBlcnJvciBvY2N1cnJlZCc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBncm93bGVyRGF0YSA9IG5ldyBHcm93bGVyTW9kZWwoXG4gICAgICAgICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICAnRXJyb3InLFxuICAgICAgICAgICAgICAgIGBFcnJvciBDcmVhdGluZyBBdXRoIFBvbGljeWAsXG4gICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuZ3Jvd2xlclNlcnZpY2Uuc2hvdyhncm93bGVyRGF0YSk7XG4gICAgICAgICAgICB0aHJvdyByZXNwO1xuICAgICAgICB9KVxuICAgIH1cblxuICAgIGdldEF1dGhQb2xpY3lEYXRhTW9kZWwoZm9ybURhdGEsIGlzVXBkYXRlKSB7XG4gICAgICAgIGNvbnN0IHNhdmVNb2RlbCA9IG5ldyBBdXRoUG9saWN5KCk7XG4gICAgICAgIGNvbnN0IG1vZGVsUHJvcGVydGllcyA9IGtleXMoc2F2ZU1vZGVsKTtcbiAgICAgICAgbW9kZWxQcm9wZXJ0aWVzLmZvckVhY2goKHByb3ApID0+IHtcbiAgICAgICAgICAgIHN3aXRjaChwcm9wKSB7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgc2F2ZU1vZGVsW3Byb3BdID0gZm9ybURhdGFbcHJvcF07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gc2F2ZU1vZGVsO1xuICAgIH1cbn1cbiJdfQ==
|