tin-spa 2.7.0 → 2.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/classes/Classes.mjs +7 -1
- package/esm2020/lib/classes/TinCore.mjs +16 -2
- package/esm2020/lib/components/form/form.component.mjs +1 -1
- package/esm2020/lib/components/nav-menu/nav-menu.component.mjs +7 -10
- package/esm2020/lib/components/option/option.component.mjs +1 -1
- package/esm2020/lib/components/select/select.component.mjs +5 -3
- package/esm2020/lib/components/select-internal/select-internal.component.mjs +4 -2
- package/esm2020/lib/components/steps/steps.component.mjs +46 -13
- package/esm2020/lib/components/table/detailsDialog.component.mjs +4 -4
- package/esm2020/lib/components/table/table.component.mjs +28 -20
- package/esm2020/lib/components/table-action/table-action.component.mjs +26 -6
- package/esm2020/lib/components/table-internal/detailsDialog-internal.component.mjs +4 -4
- package/esm2020/lib/components/table-internal/table-internal.component.mjs +29 -20
- package/esm2020/lib/components/table-lite/detailsDialog-lite.component.mjs +4 -4
- package/esm2020/lib/components/table-lite/table-lite.component.mjs +29 -20
- package/esm2020/lib/components/text/text.component.mjs +7 -4
- package/esm2020/lib/pages/accounts/accountDialog.component.mjs +1 -1
- package/esm2020/lib/pages/approvals/approvals.component.mjs +10 -100
- package/esm2020/lib/pages/approvals-config/approvals-config.component.mjs +14 -9
- package/esm2020/lib/pages/change-password/change-password.component.mjs +1 -1
- package/esm2020/lib/pages/create-account/create-account.component.mjs +1 -1
- package/esm2020/lib/pages/inventory/quantityDialog.component.mjs +1 -1
- package/esm2020/lib/pages/login/login.component.mjs +6 -4
- package/esm2020/lib/pages/profile/profile.component.mjs +1 -1
- package/esm2020/lib/pages/recover-account/recover-account.component.mjs +1 -1
- package/esm2020/lib/pages/signup/signup.component.mjs +1 -1
- package/esm2020/lib/pages/transactions/transactDialog.component.mjs +1 -1
- package/esm2020/lib/pages/welcome/welcome.component.mjs +1 -1
- package/esm2020/lib/services/button.service.mjs +3 -16
- package/esm2020/lib/services/datalib.service.mjs +180 -4
- package/esm2020/lib/services/dialog.service.mjs +12 -8
- package/esm2020/lib/services/notifications.service.mjs +2 -2
- package/esm2020/lib/services/table-config.service.mjs +24 -6
- package/fesm2015/tin-spa.mjs +426 -258
- package/fesm2015/tin-spa.mjs.map +1 -1
- package/fesm2020/tin-spa.mjs +445 -246
- package/fesm2020/tin-spa.mjs.map +1 -1
- package/lib/classes/Classes.d.ts +11 -1
- package/lib/components/steps/steps.component.d.ts +5 -1
- package/lib/components/table/table.component.d.ts +0 -1
- package/lib/components/table-action/table-action.component.d.ts +4 -1
- package/lib/components/table-internal/table-internal.component.d.ts +0 -1
- package/lib/components/table-lite/table-lite.component.d.ts +0 -1
- package/lib/components/text/text.component.d.ts +2 -1
- package/lib/pages/approvals/approvals.component.d.ts +3 -7
- package/lib/pages/approvals-config/approvals-config.component.d.ts +4 -0
- package/lib/services/button.service.d.ts +0 -2
- package/lib/services/datalib.service.d.ts +13 -0
- package/lib/services/dialog.service.d.ts +2 -2
- package/lib/services/table-config.service.d.ts +4 -0
- package/package.json +1 -1
|
@@ -53,6 +53,7 @@ export class CapItem {
|
|
|
53
53
|
this.ignoreSubsDisplay = false;
|
|
54
54
|
this.link = "";
|
|
55
55
|
this.icon = "navigate_next";
|
|
56
|
+
this.color = "black";
|
|
56
57
|
}
|
|
57
58
|
}
|
|
58
59
|
export class AppConfig {
|
|
@@ -67,6 +68,11 @@ export class AppConfig {
|
|
|
67
68
|
this.multitenant = false;
|
|
68
69
|
this.navigation = 'top';
|
|
69
70
|
this.progressLine = false;
|
|
71
|
+
this.loginStyle = 'default';
|
|
72
|
+
this.termsUrl = "https://yoursite.com/terms";
|
|
73
|
+
this.privacyUrl = "https://yoursite.com/privacy";
|
|
74
|
+
this.siteUrl = "https://yoursite.com";
|
|
75
|
+
this.navWidth = '200px';
|
|
70
76
|
}
|
|
71
77
|
}
|
|
72
78
|
//-----------Move out------
|
|
@@ -90,4 +96,4 @@ export class FinAccount {
|
|
|
90
96
|
this.currency = "";
|
|
91
97
|
}
|
|
92
98
|
}
|
|
93
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2xhc3Nlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rpbi1zcGEvc3JjL2xpYi9jbGFzc2VzL0NsYXNzZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsTUFBTSxDQUFOLElBQVksYUFBd0I7QUFBcEMsV0FBWSxhQUFhO0lBQUUsK0NBQUcsQ0FBQTtJQUFFLCtDQUFHLENBQUE7QUFBQSxDQUFDLEVBQXhCLGFBQWEsS0FBYixhQUFhLFFBQVc7QUFFcEMsTUFBTSxPQUFPLGFBQWE7Q0FHekI7QUFFRCxNQUFNLE9BQU8sbUJBQW1CO0NBYy9CO0FBSUQsTUFBTSxPQUFPLE1BQU07Q0FPbEI7QUFPRCxNQUFNLE9BQU8sWUFBWTtDQUt4QjtBQUlELE1BQU0sT0FBTyxjQUFjO0NBRzFCO0FBNERELE1BQU0sT0FBTyxZQUFZO0NBSXhCO0FBRUQsTUFBTSxPQUFPLGFBQWE7Q0FHekI7QUFFRCxNQUFNLE9BQU8sVUFBVTtDQWN0QjtBQXVDRCxNQUFNLE9BQU8sVUFBVTtDQUt0QjtBQUVELE1BQU0sT0FBTyxJQUFJO0NBS2hCO0FBQ0QsTUFBTSxPQUFPLFVBQVU7Q0FHdEI7QUFpQ0QsTUFBTSxPQUFPLFdBQVc7Q0FnQ3ZCO0FBRUQsTUFBTSxPQUFPLFVBQVU7Q0FJdEI7QUFLRCxZQUFZO0FBRVosTUFBTSxPQUFPLFdBQVc7Q0FJdkI7QUFFRCxNQUFNLE9BQU8sU0FBUzs7QUFDRyxtQkFBUyxHQUFHLEdBQUcsQ0FBQztBQUNoQixtQkFBUyxHQUFHLEdBQUcsQ0FBQztBQUNoQixvQkFBVSxHQUFHLEdBQUcsQ0FBQztBQUNqQixvQkFBVSxHQUFHLEdBQUcsQ0FBQztBQUNqQiwyQkFBaUIsR0FBRyxHQUFHLENBQUM7QUFDeEIsMEJBQWdCLEdBQUcsR0FBRyxDQUFDO0FBR2hELE1BQU0sT0FBTyxnQkFBZ0I7Q0FJNUI7QUFFRCxNQUFNLE9BQU8sT0FBTztJQUVsQjtRQUNFLElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ2YsSUFBSSxDQUFDLE9BQU8sR0FBRyxjQUFjLENBQUM7UUFDOUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDckIsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7UUFDZixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUNyQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO1FBQy9CLElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ2YsSUFBSSxDQUFDLElBQUksR0FBRyxlQUFlLENBQUM7SUFFOUIsQ0FBQztDQWNGO0FBRUQsTUFBTSxPQUFPLFNBQVM7SUFDcEI7UUFDRSxJQUFJLENBQUMsT0FBTyxHQUFHLFVBQVUsQ0FBQztRQUMxQixJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNmLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ25CLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO0lBQzVCLENBQUM7Q0FjRjtBQUtELDJCQUEyQjtBQUMzQixNQUFNLE9BQU8sV0FBVztJQUV0QjtRQUNFLElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDO1FBQ2xCLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7UUFDZixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztRQUNuQixJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQztRQUN2QixJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQztJQUN0QixDQUFDO0NBV0Y7QUFFRCxNQUFNLE9BQU8sVUFBVTtJQUVyQjtRQUNFLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO1FBQ25CLElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ2YsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFFckIsQ0FBQztDQVFGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSBcInJ4anNcIjtcclxuXHJcblxyXG5cclxuZXhwb3J0IGVudW0gRGV0YWlsc1NvdXJjZSB7Um93LCBVcmx9XHJcblxyXG5leHBvcnQgY2xhc3MgZGlhbG9nT3B0aW9ucyB7XHJcbiAgd2lkdGg/OiBzdHJpbmc7XHJcbiAgaGVpZ2h0Pzogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRGV0YWlsc0RpYWxvZ0NvbmZpZyB7XHJcblxyXG4gIHN0ZXBDb25maWc/IDogU3RlcENvbmZpZztcclxuICBmb3JtQ29uZmlnOiBGb3JtQ29uZmlnO1xyXG4gIHRhYmxlQ29uZmlnPzogVGFibGVDb25maWc7XHJcbiAgdGFibGVDb25maWdzPzogVGFibGVDb25maWdbXTtcclxuICBidXR0b25zPzogQnV0dG9uW107XHJcbiAgZGV0YWlscz8gOiBhbnlcclxuICBoZXJvRmllbGQ/IDogYW55XHJcbiAgaGVyb1ZhbHVlPzogYW55XHJcbiAgbW9kZT86ICdjcmVhdGUnIHwgJ2VkaXQnIHwgJ3ZpZXcnXHJcbiAgd2lkdGg/OiBzdHJpbmdcclxuICBkZXRhaWxzU291cmNlPzogRGV0YWlsc1NvdXJjZVxyXG4gIG9wdGlvbnM/OiBkaWFsb2dPcHRpb25zXHJcbn1cclxuXHJcblxyXG5cclxuZXhwb3J0IGNsYXNzIEFjdGlvbntcclxuICBtZXRob2Q/OiAnZ2V0JyB8ICdwb3N0J1xyXG4gIHVybDogc3RyaW5nO1xyXG4gIHBhcmFtcz8gOiBhbnlbXVxyXG4gIHN1Y2Nlc3NNZXNzYWdlPzogc3RyaW5nXHJcbiAgaXNGb3JtRGF0YT86IGJvb2xlYW5cclxuICBza2lwQ2FjaGU/OiBib29sZWFuXHJcbn1cclxuXHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNlYXJjaEZpZWxkIGV4dGVuZHMgRmllbGQge1xyXG4gIHNob3c/OiBib29sZWFuXHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBTZWFyY2hDb25maWcge1xyXG4gIGZpZWxkczogU2VhcmNoRmllbGRbXVxyXG4gIHNlYXJjaEFjdGlvbj86IEFjdGlvblxyXG4gIGVtYWlsUmVzdWx0cz86IGJvb2xlYW5cclxuICB0aWxlQ29uZmlnPzogVGlsZUNvbmZpZ1xyXG59XHJcblxyXG5cclxuXHJcbmV4cG9ydCBjbGFzcyBTZWN1cml0eUNvbmZpZyB7XHJcbiAgYWxsb3c/OiBDYXBJdGVtW107XHJcbiAgZGVueT86IENhcEl0ZW1bXTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDaGlsZEZpZWxkIHtcclxuICBjaGlsZEZpZWxkPzogc3RyaW5nXHJcbiAgY2hpbGRWYWx1ZUZpZWxkPzogc3RyaW5nXHJcbn1cclxuXHJcblxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBGaWVsZCB7XHJcbiAgc2VjdXJpdHlDb25maWc/OiBTZWN1cml0eUNvbmZpZztcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgdHlwZTogJ3RleHQnIHwgJ211bHRpLXRleHQnIHwgJ3Bhc3N3b3JkJyB8ICdkYXRlJyB8ICdkYXRldGltZScgfCAnZGF0ZXRpbWVzZWMnIHwgJ2NoZWNrYm94JyB8ICdzZWxlY3QnIHwgJ211bHRpLXNlbGVjdCcgfCAnbW9uZXknIHwgJ251bWJlcicgfCAnc2VjdGlvbicgfCAnYmxhbmsnIHwgJ2NoaXAnIHwgJ2ZpbGUnIHwgJ2ZpbGUtdmlldycgfCAnaWNvbicgfCAnc3Bpbm5lcicgfCAnYnV0dG9uJyB8ICdsYWJlbCcgfCAnZW1haWwnIHwgJ2NvbXBvc2l0ZScgfCAnc3RyaW5nJztcclxuICBhbGlhcz86IHN0cmluZztcclxuICBvcHRpb25zPzogYW55W107XHJcbiAgb3B0aW9uRGlzcGxheT86IHN0cmluZ1xyXG4gIG9wdGlvblZhbHVlPzogc3RyaW5nXHJcbiAgbWFzdGVyT3B0aW9uVmFsdWU/OiBzdHJpbmdcclxuICBkZWZhdWx0VmFsdWU/OiBhbnlcclxuICBkZWZhdWx0Rmlyc3RWYWx1ZT86IGJvb2xlYW5cclxuICByZXF1aXJlZD86IGJvb2xlYW5cclxuICBtaW4/OiBhbnlcclxuICBtYXg/OiBhbnlcclxuICByb3dzPzogbnVtYmVyXHJcbiAgc3Bhbj86IGJvb2xlYW5cclxuICB3aWR0aD86IHN0cmluZ1xyXG4gIHNpemU/OiBzdHJpbmdcclxuICByZWFkb25seT86IGJvb2xlYW5cclxuICBoaWRkZW4/OiBib29sZWFuXHJcbiAgc3RyaWN0PzogYm9vbGVhblxyXG4gIHBhdGg/OiBzdHJpbmdcclxuICBrZXlGaWVsZD86IHN0cmluZ1xyXG4gIGhpbnQ/OiBzdHJpbmdcclxuICBtYXN0ZXJGaWVsZD86IHN0cmluZ1xyXG4gIGNoaWxkPzogQ2hpbGRGaWVsZFxyXG4gIGNoaWxkcmVuPzogQ2hpbGRGaWVsZFtdXHJcbiAgbWFzdGVyT3B0aW9ucz86IGFueVtdXHJcbiAgbnVsbGFibGU/OiBib29sZWFuXHJcbiAgY29weUNvbnRlbnQ/OiBib29sZWFuXHJcbiAgY2xlYXJDb250ZW50PzogYm9vbGVhblxyXG4gIGZvcm1hdD86ICd0ZXh0JyB8ICdtb25leScgfCAnZGF0ZScgfCAnZGF0ZXRpbWUnIHwgJ251bWJlcidcclxuICBoaWRlT25DcmVhdGU/OiBib29sZWFuXHJcbiAgaGlkZU9uRXhpc3RzPzogYm9vbGVhblxyXG4gIGhpZGRlbkNvbmRpdGlvbj86ICh2YWx1ZTogYW55KSA9PiBib29sZWFuO1xyXG4gIHJlYWRvbmx5Q29uZGl0aW9uPzogKHZhbHVlOiBhbnkpID0+IGJvb2xlYW47XHJcbiAgZGV0YWlsc0NvbmZpZz86IERldGFpbHNEaWFsb2dDb25maWc7XHJcbiAgbG9hZEFjdGlvbj86IEFjdGlvblxyXG4gIGluZm9NZXNzYWdlPzogc3RyaW5nO1xyXG4gIHN1ZmZpeD86IHN0cmluZztcclxuICBzdWJmaWVsZHM/OiBGaWVsZFtdO1xyXG4gIG9wdGlvbnNTdWJqZWN0PzogQmVoYXZpb3JTdWJqZWN0PGFueVtdPjtcclxuICBzZWN0aW9uPzogc3RyaW5nO1xyXG4gIGZpbGVPcHRpb25zPzoge1xyXG4gICAgYWxsb3dlZEV4dGVuc2lvbnM/OiBzdHJpbmdbXTtcclxuICAgIG1heFNpemVNQj86IG51bWJlcjtcclxuICAgIGNvbXByZXNzSW1hZ2VzPzogYm9vbGVhbjtcclxuICB9O1xyXG59XHJcblxyXG5cclxuZXhwb3J0IGNsYXNzIEFsZXJ0TWVzc2FnZSB7XHJcbiAgdHlwZT86ICdzdWNjZXNzJyB8ICdpbmZvJyB8ICd3YXJuJyB8ICdjcml0aWNhbCdcclxuICBjb250ZW50OiBzdHJpbmdcclxuICBoaWRkZW5Db25kaXRpb24/OiAodmFsdWU6IGFueSkgPT4gYm9vbGVhbjtcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEFsZXJ0TWVzc2FnZXMge1xyXG4gIHN1YmplY3Q/OiBzdHJpbmdcclxuICBtZXNzYWdlczogQWxlcnRNZXNzYWdlW11cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEZvcm1Db25maWcge1xyXG4gIHRpdGxlPzogc3RyaW5nXHJcbiAgZml4ZWRUaXRsZT86IGJvb2xlYW5cclxuICBhbGVydE1lc3NhZ2VzPzogQWxlcnRNZXNzYWdlc1xyXG4gIGZpZWxkczogRmllbGRbXVxyXG4gIG1vZGU/OiAnY3JlYXRlJyB8ICdlZGl0JyB8ICd2aWV3J1xyXG4gIGJ1dHRvbj8gOiBCdXR0b25cclxuICBtdWx0aUNvbHVtbj86IGJvb2xlYW5cclxuICByZXNldD86IGJvb2xlYW5cclxuICBsb2FkQWN0aW9uPzogQWN0aW9uXHJcbiAgaGVyb0ZpZWxkPzogYW55XHJcbiAgaGVyb1ZhbHVlPzogYW55XHJcbiAgc2VjdXJpdHk/OiBTZWN1cml0eUNvbmZpZztcclxuXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ29uZmlybSB7XHJcbiAgbWVzc2FnZTogc3RyaW5nXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQnV0dG9ue1xyXG4gIG5hbWU6IHN0cmluZ1xyXG4gIHZpc2libGU/OiAodmFsdWU6IGFueSkgPT4gYm9vbGVhbjtcclxuICBkaXNwbGF5Pzogc3RyaW5nO1xyXG4gIGljb24/OiBJY29uO1xyXG4gIGRpc2FibGVkPzogKHZhbHVlOiBhbnkpID0+IGJvb2xlYW47XHJcbiAgY29sb3I/OiBzdHJpbmc7XHJcbiAgdGlwPzogc3RyaW5nXHJcbiAgZGlhbG9nPzogYm9vbGVhblxyXG4gIGFjdGlvbj86IEFjdGlvblxyXG4gIGNvbmZpcm0/OiBDb25maXJtXHJcbiAgaW5EaWFsb2c/OiBib29sZWFuXHJcbiAgaW5IZWFkZXI/OiBib29sZWFuXHJcbiAgZGV0YWlsc0NvbmZpZz86IERldGFpbHNEaWFsb2dDb25maWdcclxuICBzZXRIZXJvRmllbGQ/OiBib29sZWFuO1xyXG59XHJcblxyXG5cclxuXHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFRpbGUge1xyXG5cclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgYWxpYXM/OiBzdHJpbmc7XHJcbiAgdmFsdWU/OiBzdHJpbmc7XHJcbiAgY29sb3I/OiBzdHJpbmc7XHJcbiAgc2VsZWN0ZWRUaWxlPzogc3RyaW5nO1xyXG4gIGhpZGRlbj86IGJvb2xlYW47XHJcbiAgaW5mbz86IHN0cmluZztcclxuICBwcmVmaXg/OiBzdHJpbmc7XHJcbiAgc3VmZml4Pzogc3RyaW5nO1xyXG4gIGFjdGlvbj86IEFjdGlvbjtcclxufVxyXG5leHBvcnQgY2xhc3MgVGlsZUNvbmZpZyB7XHJcbiAgdGlsZXM6IFRpbGVbXVxyXG4gIGxvYWRBY3Rpb24/OiBBY3Rpb25cclxuICBsb2FkSW5pdD86IGJvb2xlYW5cclxuICBjbGlja2FibGU/OiBib29sZWFuXHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBTdGVwIHtcclxuICBuYW1lOiBzdHJpbmdcclxuICB2YWx1ZT86IGFueVxyXG4gIGljb24/OiBzdHJpbmc7XHJcbiAgaGlkZGVuQ29uZGl0aW9uPzogKHZhbHVlOiBhbnkpID0+IGJvb2xlYW47XHJcbn1cclxuZXhwb3J0IGNsYXNzIFN0ZXBDb25maWcge1xyXG4gIHN0ZXBzOiBTdGVwW11cclxuICB2YWx1ZUZpZWxkPzogc3RyaW5nXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSWNvbiB7XHJcbiAgbmFtZTogc3RyaW5nXHJcbiAgY29sb3I/OiBzdHJpbmdcclxuICB0aXA/OiBzdHJpbmdcclxuICB0aXBGaWVsZD86IHN0cmluZ1xyXG4gIGJhbm5lckZpZWxkPzogc3RyaW5nXHJcbiAgY29uZGl0aW9uPzogKHZhbHVlOiBhbnkpID0+IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ29sb3Ige1xyXG4gIG5hbWU6IHN0cmluZ1xyXG4gIGNvbmRpdGlvbj86ICh2YWx1ZTogYW55KSA9PiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIENvbHVtbiB7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIHR5cGU/OiAndGV4dCcgfCAnZGF0ZScgfCAnZGF0ZXRpbWUnIHwgJ2RhdGV0aW1lc2VjJyB8ICdjaGVja2JveCcgfCAnc2VsZWN0JyB8ICdtb25leScgfCAnbnVtYmVyJyB8ICdjaGlwJyB8ICdpY29uJyB8ICdzcGlubmVyJyB8ICdidXR0b24nO1xyXG4gIGFsaWFzPzogc3RyaW5nO1xyXG4gIG1heExlbmd0aD86IG51bWJlcjtcclxuICBpY29uPzogSWNvbjtcclxuICBjb2xvcj86IENvbG9yO1xyXG4gIGNvbG9ycz86IENvbG9yW107XHJcbiAgaWNvbnM/OiBJY29uW107XHJcbiAgb3B0aW9ucz86IGFueVtdO1xyXG4gIG9wdGlvbkRpc3BsYXk/OiBzdHJpbmdcclxuICBvcHRpb25WYWx1ZT86IHN0cmluZ1xyXG4gIGRldGFpbHNDb25maWc/OiBEZXRhaWxzRGlhbG9nQ29uZmlnXHJcbiAgaGlkZGVuQ29uZGl0aW9uPzogKHBhcmVudERhdGE6IGFueSkgPT4gYm9vbGVhbjtcclxufVxyXG5cclxuXHJcbmV4cG9ydCBjbGFzcyBUYWJsZUNvbmZpZ3tcclxuICB0YWJUaXRsZT86IHN0cmluZ1xyXG4gIG5vRGF0YU1lc3NhZ2UgPzogc3RyaW5nXHJcbiAgY29sdW1ucz8gOiBDb2x1bW5bXVxyXG4gIG1pbkNvbHVtbnM/OiBzdHJpbmdbXVxyXG4gIHNob3dGaWx0ZXI/OiBib29sZWFuXHJcbiAgc2hvd0ZpbHRlckJ1dHRvbj86IGJvb2xlYW5cclxuICBob2xkRmlsdGVyU3BhY2U/OiBib29sZWFuXHJcbiAgaG9sZEhlYWRlckJ1dHRvblNwYWNlPzogYm9vbGVhblxyXG4gIGVsZXZhdGlvbj86ICdub25lJyB8ICdsb3cnIHwgJ21lZGl1bScgfCAnaGlnaCdcclxuICBmb3JtQ29uZmlnPzogRm9ybUNvbmZpZ1xyXG4gIHNlYXJjaENvbmZpZz86IFNlYXJjaENvbmZpZ1xyXG4gIHRpbGVDb25maWc/OiBUaWxlQ29uZmlnXHJcbiAgc3RlcENvbmZpZz86IFN0ZXBDb25maWdcclxuICBidXR0b25zPzogQnV0dG9uW11cclxuICBtaW5CdXR0b25zPzogc3RyaW5nW11cclxuICBsb2FkQWN0aW9uPzogQWN0aW9uXHJcbiAgbG9hZElERmllbGQgPzogc3RyaW5nXHJcbiAgbG9hZENyaXRlcmlhPzogc3RyaW5nXHJcbiAgbG9nUmVzcG9uc2U/OiBib29sZWFuXHJcbiAgZmxhdEJ1dHRvbnM/OiBib29sZWFuXHJcbiAgZ3JleU91dD86ICh2YWx1ZTogYW55KSA9PiBib29sZWFuO1xyXG4gIGhlcm9GaWVsZD86IGFueVxyXG4gIGhlcm9WYWx1ZT86IGFueVxyXG4gIGNvbGxhcHNlQnV0dG9ucz86IGJvb2xlYW5cclxuICBwYXJlbnREYXRhID8gOiBhbnlcclxuICBwYWdlU2l6ZXM/OiBudW1iZXJbXVxyXG4gIG1heEJ1dHRvbnM/OiBudW1iZXJcclxuICBoaWRlVGFiQ29uZGl0aW9uPzogKHZhbHVlOiBhbnkpID0+IGJvb2xlYW47XHJcblxyXG4gIGRvd25sb2FkPzogeyBjb2x1bW5zOiBzdHJpbmdbXSwgZmlsZU5hbWU/OiBzdHJpbmcsIGhpZGRlbkNvbmRpdGlvbj86ICh2YWx1ZTogYW55KSA9PiBib29sZWFuOyB9XHJcbiAgdXBsb2FkPzogeyBhY3Rpb246IEFjdGlvbiwgbWVzc2FnZXM/OiBBbGVydE1lc3NhZ2VbXSwgaGlkZGVuQ29uZGl0aW9uPzogKHZhbHVlOiBhbnkpID0+IGJvb2xlYW47IH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFBhZ2VDb25maWcge1xyXG4gIHRpdGxlPzogc3RyaW5nO1xyXG4gIHRhYmxlQ29uZmlnPzogVGFibGVDb25maWc7XHJcbiAgc2VhcmNoVGFibGVDb25maWc/OiBUYWJsZUNvbmZpZztcclxufVxyXG5cclxuXHJcblxyXG5cclxuLy8tLS1CYXNlLS0tXHJcblxyXG5leHBvcnQgY2xhc3MgQXBpUmVzcG9uc2Uge1xyXG4gIHN1Y2Nlc3M6IGJvb2xlYW47XHJcbiAgbWVzc2FnZTogc3RyaW5nO1xyXG4gIGRhdGE7XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBDb25zdGFudHMge1xyXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQVVUSF9VU0VSID0gJ2EnO1xyXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQVVUSF9OQU1FID0gJ2InO1xyXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQVVUSF9ST0xFUyA9ICdjJztcclxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEFVVEhfVE9LRU4gPSAnZCc7XHJcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBBVVRIX1RPS0VOX0VYUElSRSA9ICdlJztcclxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEFVVEhfVEVOQU5UX05BTUUgPSAnZic7XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBMaXN0RGlhbG9nQ29uZmlnIHtcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgdGl0bGU6IHN0cmluZztcclxuICBsaXN0TmFtZTogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQ2FwSXRlbSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgdGhpcy5uYW1lID0gXCJcIjtcclxuICAgIHRoaXMuZGlzcGxheSA9IFwiTmV3IENhcCBJdGVtXCI7XHJcbiAgICB0aGlzLmVuYWJsZWQgPSBmYWxzZTtcclxuICAgIHRoaXMudHlwZSA9IFwiXCI7XHJcbiAgICB0aGlzLm5ld0xpbmUgPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvd01lbnUgPSB0cnVlO1xyXG4gICAgdGhpcy5pZ25vcmVTdWJzRGlzcGxheSA9IGZhbHNlO1xyXG4gICAgdGhpcy5saW5rID0gXCJcIjtcclxuICAgIHRoaXMuaWNvbiA9IFwibmF2aWdhdGVfbmV4dFwiO1xyXG5cclxuICB9XHJcblxyXG4gIG5hbWU6IHN0cmluZztcclxuICBkaXNwbGF5OiBzdHJpbmc7XHJcbiAgZW5hYmxlZDogYm9vbGVhbjtcclxuICBzaG93TWVudTogYm9vbGVhbjtcclxuXHJcbiAgaWdub3JlU3Vic0Rpc3BsYXk6IGJvb2xlYW47XHJcbiAgdHlwZTogc3RyaW5nO1xyXG4gIG5ld0xpbmU6IGJvb2xlYW47XHJcbiAgbGluazogc3RyaW5nO1xyXG4gIGljb246IHN0cmluZztcclxuICBjYXBTdWJJdGVtczogQ2FwSXRlbVtdO1xyXG5cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEFwcENvbmZpZyB7XHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB0aGlzLmFwcE5hbWUgPSBcIkFwcCBOYW1lXCI7XHJcbiAgICB0aGlzLmxvZ28gPSBcIlwiO1xyXG4gICAgdGhpcy5sb2dvU2l6ZSA9IFwibm9ybWFsXCI7XHJcbiAgICB0aGlzLkFEQXV0aCA9IHRydWU7XHJcbiAgICB0aGlzLmxvY2FsQXV0aCA9IHRydWU7XHJcbiAgICB0aGlzLmdvb2dsZUF1dGggPSBmYWxzZTtcclxuICAgIHRoaXMuc2VsZlNlcnZpY2UgPSBmYWxzZTtcclxuICAgIHRoaXMubXVsdGl0ZW5hbnQgPSBmYWxzZTtcclxuICAgIHRoaXMubmF2aWdhdGlvbiA9ICd0b3AnO1xyXG4gICAgdGhpcy5wcm9ncmVzc0xpbmUgPSBmYWxzZTtcclxuICB9XHJcbiAgYXBwTmFtZTogc3RyaW5nO1xyXG4gIGxvZ286IHN0cmluZztcclxuICBsb2dvU2l6ZTogc3RyaW5nO1xyXG4gIEFEQXV0aDogYm9vbGVhbjtcclxuICBsb2NhbEF1dGg6IGJvb2xlYW47XHJcbiAgZ29vZ2xlQXV0aDogYm9vbGVhbjtcclxuICBzZWxmU2VydmljZTogYm9vbGVhbjtcclxuICBjYXBJdGVtczogQ2FwSXRlbVtdO1xyXG4gIG11bHRpdGVuYW50IDogYm9vbGVhbjtcclxuICBuYXZpZ2F0aW9uIDogJ3RvcCcgfCAnc2lkZSdcclxuICBwcm9ncmVzc0xpbmU6IGJvb2xlYW47XHJcbiAgZG9jc0Jhc2VVcmwgOiBzdHJpbmc7XHJcblxyXG59XHJcblxyXG5cclxuXHJcblxyXG4vLy0tLS0tLS0tLS0tTW92ZSBvdXQtLS0tLS1cclxuZXhwb3J0IGNsYXNzIFRyYW5zYWN0aW9uIHtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB0aGlzLnRyYW5zYWN0aW9uSUQgPSAwO1xyXG4gICAgdGhpcy5uYXJyYXRpb24gPSBcIlwiO1xyXG4gICAgdGhpcy5hbW91bnQgPSAnMCc7XHJcbiAgICB0aGlzLnR5cGUgPSAwO1xyXG4gICAgdGhpcy5kYXRlID0gXCJcIjtcclxuICAgIHRoaXMuYWNjb3VudElEID0gMDtcclxuICAgIHRoaXMuZGVzdGluYXRpb25JRCA9IDA7XHJcbiAgICB0aGlzLmNhdGVnb3J5SUQgPSAwO1xyXG4gIH1cclxuXHJcbiAgdHJhbnNhY3Rpb25JRCA6IG51bWJlcjtcclxuICBuYXJyYXRpb24gOiBzdHJpbmc7XHJcbiAgYW1vdW50IDogc3RyaW5nO1xyXG4gIHR5cGU6IG51bWJlcjtcclxuICBkYXRlIDogc3RyaW5nO1xyXG4gIGFjY291bnRJRCA6IG51bWJlcjtcclxuICBkZXN0aW5hdGlvbklEIDogbnVtYmVyO1xyXG4gIGNhdGVnb3J5SUQgOiBudW1iZXI7XHJcblxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRmluQWNjb3VudCB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCl7XHJcbiAgICB0aGlzLmFjY291bnRJRCA9IDA7XHJcbiAgICB0aGlzLm5hbWUgPSBcIlwiO1xyXG4gICAgdGhpcy5kZXNjcmlwdGlvbiA9IFwiXCI7XHJcbiAgICB0aGlzLmN1cnJlbmN5ID0gXCJcIjtcclxuXHJcbiAgfVxyXG5cclxuXHJcbiAgYWNjb3VudElEOiBudW1iZXJcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgZGVzY3JpcHRpb246IHN0cmluZztcclxuICBjdXJyZW5jeTogc3RyaW5nO1xyXG5cclxufVxyXG5cclxuIl19
|
|
99
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2xhc3Nlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rpbi1zcGEvc3JjL2xpYi9jbGFzc2VzL0NsYXNzZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsTUFBTSxDQUFOLElBQVksYUFBd0I7QUFBcEMsV0FBWSxhQUFhO0lBQUUsK0NBQUcsQ0FBQTtJQUFFLCtDQUFHLENBQUE7QUFBQSxDQUFDLEVBQXhCLGFBQWEsS0FBYixhQUFhLFFBQVc7QUFFcEMsTUFBTSxPQUFPLGFBQWE7Q0FHekI7QUFFRCxNQUFNLE9BQU8sbUJBQW1CO0NBYy9CO0FBSUQsTUFBTSxPQUFPLE1BQU07Q0FPbEI7QUFPRCxNQUFNLE9BQU8sWUFBWTtDQUt4QjtBQUlELE1BQU0sT0FBTyxjQUFjO0NBRzFCO0FBNERELE1BQU0sT0FBTyxZQUFZO0NBSXhCO0FBRUQsTUFBTSxPQUFPLGFBQWE7Q0FHekI7QUFFRCxNQUFNLE9BQU8sVUFBVTtDQWN0QjtBQXVDRCxNQUFNLE9BQU8sVUFBVTtDQUt0QjtBQUVELE1BQU0sT0FBTyxJQUFJO0NBS2hCO0FBQ0QsTUFBTSxPQUFPLFVBQVU7Q0FLdEI7QUFpQ0QsTUFBTSxPQUFPLFdBQVc7Q0FnQ3ZCO0FBRUQsTUFBTSxPQUFPLFVBQVU7Q0FJdEI7QUFLRCxZQUFZO0FBRVosTUFBTSxPQUFPLFdBQVc7Q0FJdkI7QUFFRCxNQUFNLE9BQU8sU0FBUzs7QUFDRyxtQkFBUyxHQUFHLEdBQUcsQ0FBQztBQUNoQixtQkFBUyxHQUFHLEdBQUcsQ0FBQztBQUNoQixvQkFBVSxHQUFHLEdBQUcsQ0FBQztBQUNqQixvQkFBVSxHQUFHLEdBQUcsQ0FBQztBQUNqQiwyQkFBaUIsR0FBRyxHQUFHLENBQUM7QUFDeEIsMEJBQWdCLEdBQUcsR0FBRyxDQUFDO0FBR2hELE1BQU0sT0FBTyxnQkFBZ0I7Q0FJNUI7QUFFRCxNQUFNLE9BQU8sT0FBTztJQUVsQjtRQUNFLElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ2YsSUFBSSxDQUFDLE9BQU8sR0FBRyxjQUFjLENBQUM7UUFDOUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDckIsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7UUFDZixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUNyQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO1FBQy9CLElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ2YsSUFBSSxDQUFDLElBQUksR0FBRyxlQUFlLENBQUM7UUFDNUIsSUFBSSxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUM7SUFFdkIsQ0FBQztDQWVGO0FBRUQsTUFBTSxPQUFPLFNBQVM7SUFDcEI7UUFDRSxJQUFJLENBQUMsT0FBTyxHQUFHLFVBQVUsQ0FBQztRQUMxQixJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNmLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ25CLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBQzFCLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO1FBQzVCLElBQUksQ0FBQyxRQUFRLEdBQUcsNEJBQTRCLENBQUM7UUFDN0MsSUFBSSxDQUFDLFVBQVUsR0FBRyw4QkFBOEIsQ0FBQztRQUNqRCxJQUFJLENBQUMsT0FBTyxHQUFHLHNCQUFzQixDQUFDO1FBQ3RDLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO0lBRTFCLENBQUM7Q0FxQkY7QUFLRCwyQkFBMkI7QUFDM0IsTUFBTSxPQUFPLFdBQVc7SUFFdEI7UUFDRSxJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQztRQUN2QixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQztRQUNsQixJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztRQUNkLElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ2YsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUM7UUFDbkIsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUM7UUFDdkIsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUM7SUFDdEIsQ0FBQztDQVdGO0FBRUQsTUFBTSxPQUFPLFVBQVU7SUFFckI7UUFDRSxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztRQUNuQixJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNmLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBRXJCLENBQUM7Q0FRRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHN0eWxlIH0gZnJvbSBcIkBhbmd1bGFyL2FuaW1hdGlvbnNcIjtcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSBcInJ4anNcIjtcclxuXHJcblxyXG5cclxuZXhwb3J0IGVudW0gRGV0YWlsc1NvdXJjZSB7Um93LCBVcmx9XHJcblxyXG5leHBvcnQgY2xhc3MgZGlhbG9nT3B0aW9ucyB7XHJcbiAgd2lkdGg/OiBzdHJpbmc7XHJcbiAgaGVpZ2h0Pzogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRGV0YWlsc0RpYWxvZ0NvbmZpZyB7XHJcblxyXG4gIHN0ZXBDb25maWc/IDogU3RlcENvbmZpZztcclxuICBmb3JtQ29uZmlnOiBGb3JtQ29uZmlnO1xyXG4gIHRhYmxlQ29uZmlnPzogVGFibGVDb25maWc7XHJcbiAgdGFibGVDb25maWdzPzogVGFibGVDb25maWdbXTtcclxuICBidXR0b25zPzogQnV0dG9uW107XHJcbiAgZGV0YWlscz8gOiBhbnlcclxuICBoZXJvRmllbGQ/IDogYW55XHJcbiAgaGVyb1ZhbHVlPzogYW55XHJcbiAgbW9kZT86ICdjcmVhdGUnIHwgJ2VkaXQnIHwgJ3ZpZXcnXHJcbiAgd2lkdGg/OiBzdHJpbmdcclxuICBkZXRhaWxzU291cmNlPzogRGV0YWlsc1NvdXJjZVxyXG4gIG9wdGlvbnM/OiBkaWFsb2dPcHRpb25zXHJcbn1cclxuXHJcblxyXG5cclxuZXhwb3J0IGNsYXNzIEFjdGlvbntcclxuICBtZXRob2Q/OiAnZ2V0JyB8ICdwb3N0J1xyXG4gIHVybDogc3RyaW5nO1xyXG4gIHBhcmFtcz8gOiBhbnlbXVxyXG4gIHN1Y2Nlc3NNZXNzYWdlPzogc3RyaW5nXHJcbiAgaXNGb3JtRGF0YT86IGJvb2xlYW5cclxuICBza2lwQ2FjaGU/OiBib29sZWFuXHJcbn1cclxuXHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNlYXJjaEZpZWxkIGV4dGVuZHMgRmllbGQge1xyXG4gIHNob3c/OiBib29sZWFuXHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBTZWFyY2hDb25maWcge1xyXG4gIGZpZWxkczogU2VhcmNoRmllbGRbXVxyXG4gIHNlYXJjaEFjdGlvbj86IEFjdGlvblxyXG4gIGVtYWlsUmVzdWx0cz86IGJvb2xlYW5cclxuICB0aWxlQ29uZmlnPzogVGlsZUNvbmZpZ1xyXG59XHJcblxyXG5cclxuXHJcbmV4cG9ydCBjbGFzcyBTZWN1cml0eUNvbmZpZyB7XHJcbiAgYWxsb3c/OiBDYXBJdGVtW107XHJcbiAgZGVueT86IENhcEl0ZW1bXTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDaGlsZEZpZWxkIHtcclxuICBjaGlsZEZpZWxkPzogc3RyaW5nXHJcbiAgY2hpbGRWYWx1ZUZpZWxkPzogc3RyaW5nXHJcbn1cclxuXHJcblxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBGaWVsZCB7XHJcbiAgc2VjdXJpdHlDb25maWc/OiBTZWN1cml0eUNvbmZpZztcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgdHlwZTogJ3RleHQnIHwgJ211bHRpLXRleHQnIHwgJ3Bhc3N3b3JkJyB8ICdkYXRlJyB8ICdkYXRldGltZScgfCAnZGF0ZXRpbWVzZWMnIHwgJ2NoZWNrYm94JyB8ICdzZWxlY3QnIHwgJ211bHRpLXNlbGVjdCcgfCAnbW9uZXknIHwgJ251bWJlcicgfCAnc2VjdGlvbicgfCAnYmxhbmsnIHwgJ2NoaXAnIHwgJ2ZpbGUnIHwgJ2ZpbGUtdmlldycgfCAnaWNvbicgfCAnc3Bpbm5lcicgfCAnYnV0dG9uJyB8ICdsYWJlbCcgfCAnZW1haWwnIHwgJ2NvbXBvc2l0ZScgfCAnc3RyaW5nJztcclxuICBhbGlhcz86IHN0cmluZztcclxuICBvcHRpb25zPzogYW55W107XHJcbiAgb3B0aW9uRGlzcGxheT86IHN0cmluZ1xyXG4gIG9wdGlvblZhbHVlPzogc3RyaW5nXHJcbiAgbWFzdGVyT3B0aW9uVmFsdWU/OiBzdHJpbmdcclxuICBkZWZhdWx0VmFsdWU/OiBhbnlcclxuICBkZWZhdWx0Rmlyc3RWYWx1ZT86IGJvb2xlYW5cclxuICByZXF1aXJlZD86IGJvb2xlYW5cclxuICBtaW4/OiBhbnlcclxuICBtYXg/OiBhbnlcclxuICByb3dzPzogbnVtYmVyXHJcbiAgc3Bhbj86IGJvb2xlYW5cclxuICB3aWR0aD86IHN0cmluZ1xyXG4gIHNpemU/OiBzdHJpbmdcclxuICByZWFkb25seT86IGJvb2xlYW5cclxuICBoaWRkZW4/OiBib29sZWFuXHJcbiAgc3RyaWN0PzogYm9vbGVhblxyXG4gIHBhdGg/OiBzdHJpbmdcclxuICBrZXlGaWVsZD86IHN0cmluZ1xyXG4gIGhpbnQ/OiBzdHJpbmdcclxuICBtYXN0ZXJGaWVsZD86IHN0cmluZ1xyXG4gIGNoaWxkPzogQ2hpbGRGaWVsZFxyXG4gIGNoaWxkcmVuPzogQ2hpbGRGaWVsZFtdXHJcbiAgbWFzdGVyT3B0aW9ucz86IGFueVtdXHJcbiAgbnVsbGFibGU/OiBib29sZWFuXHJcbiAgY29weUNvbnRlbnQ/OiBib29sZWFuXHJcbiAgY2xlYXJDb250ZW50PzogYm9vbGVhblxyXG4gIGZvcm1hdD86ICd0ZXh0JyB8ICdtb25leScgfCAnZGF0ZScgfCAnZGF0ZXRpbWUnIHwgJ251bWJlcidcclxuICBoaWRlT25DcmVhdGU/OiBib29sZWFuXHJcbiAgaGlkZU9uRXhpc3RzPzogYm9vbGVhblxyXG4gIGhpZGRlbkNvbmRpdGlvbj86ICh2YWx1ZTogYW55KSA9PiBib29sZWFuO1xyXG4gIHJlYWRvbmx5Q29uZGl0aW9uPzogKHZhbHVlOiBhbnkpID0+IGJvb2xlYW47XHJcbiAgZGV0YWlsc0NvbmZpZz86IERldGFpbHNEaWFsb2dDb25maWc7XHJcbiAgbG9hZEFjdGlvbj86IEFjdGlvblxyXG4gIGluZm9NZXNzYWdlPzogc3RyaW5nO1xyXG4gIHN1ZmZpeD86IHN0cmluZztcclxuICBzdWJmaWVsZHM/OiBGaWVsZFtdO1xyXG4gIG9wdGlvbnNTdWJqZWN0PzogQmVoYXZpb3JTdWJqZWN0PGFueVtdPjtcclxuICBzZWN0aW9uPzogc3RyaW5nO1xyXG4gIGZpbGVPcHRpb25zPzoge1xyXG4gICAgYWxsb3dlZEV4dGVuc2lvbnM/OiBzdHJpbmdbXTtcclxuICAgIG1heFNpemVNQj86IG51bWJlcjtcclxuICAgIGNvbXByZXNzSW1hZ2VzPzogYm9vbGVhbjtcclxuICB9O1xyXG59XHJcblxyXG5cclxuZXhwb3J0IGNsYXNzIEFsZXJ0TWVzc2FnZSB7XHJcbiAgdHlwZT86ICdzdWNjZXNzJyB8ICdpbmZvJyB8ICd3YXJuJyB8ICdjcml0aWNhbCdcclxuICBjb250ZW50OiBzdHJpbmdcclxuICBoaWRkZW5Db25kaXRpb24/OiAodmFsdWU6IGFueSkgPT4gYm9vbGVhbjtcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEFsZXJ0TWVzc2FnZXMge1xyXG4gIHN1YmplY3Q/OiBzdHJpbmdcclxuICBtZXNzYWdlczogQWxlcnRNZXNzYWdlW11cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEZvcm1Db25maWcge1xyXG4gIHRpdGxlPzogc3RyaW5nXHJcbiAgZml4ZWRUaXRsZT86IGJvb2xlYW5cclxuICBhbGVydE1lc3NhZ2VzPzogQWxlcnRNZXNzYWdlc1xyXG4gIGZpZWxkczogRmllbGRbXVxyXG4gIG1vZGU/OiAnY3JlYXRlJyB8ICdlZGl0JyB8ICd2aWV3J1xyXG4gIGJ1dHRvbj8gOiBCdXR0b25cclxuICBtdWx0aUNvbHVtbj86IGJvb2xlYW5cclxuICByZXNldD86IGJvb2xlYW5cclxuICBsb2FkQWN0aW9uPzogQWN0aW9uXHJcbiAgaGVyb0ZpZWxkPzogYW55XHJcbiAgaGVyb1ZhbHVlPzogYW55XHJcbiAgc2VjdXJpdHk/OiBTZWN1cml0eUNvbmZpZztcclxuXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ29uZmlybSB7XHJcbiAgbWVzc2FnZTogc3RyaW5nXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQnV0dG9ue1xyXG4gIG5hbWU6IHN0cmluZ1xyXG4gIHZpc2libGU/OiAodmFsdWU6IGFueSkgPT4gYm9vbGVhbjtcclxuICBkaXNwbGF5Pzogc3RyaW5nO1xyXG4gIGljb24/OiBJY29uO1xyXG4gIGRpc2FibGVkPzogKHZhbHVlOiBhbnkpID0+IGJvb2xlYW47XHJcbiAgY29sb3I/OiBzdHJpbmc7XHJcbiAgdGlwPzogc3RyaW5nXHJcbiAgZGlhbG9nPzogYm9vbGVhblxyXG4gIGFjdGlvbj86IEFjdGlvblxyXG4gIGNvbmZpcm0/OiBDb25maXJtXHJcbiAgaW5EaWFsb2c/OiBib29sZWFuXHJcbiAgaW5IZWFkZXI/OiBib29sZWFuXHJcbiAgZGV0YWlsc0NvbmZpZz86IERldGFpbHNEaWFsb2dDb25maWdcclxuICBzZXRIZXJvRmllbGQ/OiBib29sZWFuO1xyXG59XHJcblxyXG5cclxuXHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFRpbGUge1xyXG5cclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgYWxpYXM/OiBzdHJpbmc7XHJcbiAgdmFsdWU/OiBzdHJpbmc7XHJcbiAgY29sb3I/OiBzdHJpbmc7XHJcbiAgc2VsZWN0ZWRUaWxlPzogc3RyaW5nO1xyXG4gIGhpZGRlbj86IGJvb2xlYW47XHJcbiAgaW5mbz86IHN0cmluZztcclxuICBwcmVmaXg/OiBzdHJpbmc7XHJcbiAgc3VmZml4Pzogc3RyaW5nO1xyXG4gIGFjdGlvbj86IEFjdGlvbjtcclxufVxyXG5leHBvcnQgY2xhc3MgVGlsZUNvbmZpZyB7XHJcbiAgdGlsZXM6IFRpbGVbXVxyXG4gIGxvYWRBY3Rpb24/OiBBY3Rpb25cclxuICBsb2FkSW5pdD86IGJvb2xlYW5cclxuICBjbGlja2FibGU/OiBib29sZWFuXHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBTdGVwIHtcclxuICBuYW1lOiBzdHJpbmdcclxuICB2YWx1ZT86IGFueVxyXG4gIGljb24/OiBzdHJpbmc7XHJcbiAgaGlkZGVuQ29uZGl0aW9uPzogKHZhbHVlOiBhbnkpID0+IGJvb2xlYW47XHJcbn1cclxuZXhwb3J0IGNsYXNzIFN0ZXBDb25maWcge1xyXG4gIHN0ZXBzOiBTdGVwW11cclxuICB2YWx1ZUZpZWxkPzogc3RyaW5nXHJcbiAgbG9hZEFjdGlvbj86IEFjdGlvbjtcclxuICBsb2FkSURGaWVsZD86IHN0cmluZ1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEljb24ge1xyXG4gIG5hbWU6IHN0cmluZ1xyXG4gIGNvbG9yPzogc3RyaW5nXHJcbiAgdGlwPzogc3RyaW5nXHJcbiAgdGlwRmllbGQ/OiBzdHJpbmdcclxuICBiYW5uZXJGaWVsZD86IHN0cmluZ1xyXG4gIGNvbmRpdGlvbj86ICh2YWx1ZTogYW55KSA9PiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIENvbG9yIHtcclxuICBuYW1lOiBzdHJpbmdcclxuICBjb25kaXRpb24/OiAodmFsdWU6IGFueSkgPT4gYm9vbGVhbjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDb2x1bW4ge1xyXG4gIG5hbWU6IHN0cmluZztcclxuICB0eXBlPzogJ3RleHQnIHwgJ2RhdGUnIHwgJ2RhdGV0aW1lJyB8ICdkYXRldGltZXNlYycgfCAnY2hlY2tib3gnIHwgJ3NlbGVjdCcgfCAnbW9uZXknIHwgJ251bWJlcicgfCAnY2hpcCcgfCAnaWNvbicgfCAnc3Bpbm5lcicgfCAnYnV0dG9uJztcclxuICBhbGlhcz86IHN0cmluZztcclxuICBtYXhMZW5ndGg/OiBudW1iZXI7XHJcbiAgaWNvbj86IEljb247XHJcbiAgY29sb3I/OiBDb2xvcjtcclxuICBjb2xvcnM/OiBDb2xvcltdO1xyXG4gIGljb25zPzogSWNvbltdO1xyXG4gIG9wdGlvbnM/OiBhbnlbXTtcclxuICBvcHRpb25EaXNwbGF5Pzogc3RyaW5nXHJcbiAgb3B0aW9uVmFsdWU/OiBzdHJpbmdcclxuICBkZXRhaWxzQ29uZmlnPzogRGV0YWlsc0RpYWxvZ0NvbmZpZ1xyXG4gIGhpZGRlbkNvbmRpdGlvbj86IChwYXJlbnREYXRhOiBhbnkpID0+IGJvb2xlYW47XHJcbn1cclxuXHJcblxyXG5leHBvcnQgY2xhc3MgVGFibGVDb25maWd7XHJcbiAgdGFiVGl0bGU/OiBzdHJpbmdcclxuICBub0RhdGFNZXNzYWdlID86IHN0cmluZ1xyXG4gIGNvbHVtbnM/IDogQ29sdW1uW11cclxuICBtaW5Db2x1bW5zPzogc3RyaW5nW11cclxuICBzaG93RmlsdGVyPzogYm9vbGVhblxyXG4gIHNob3dGaWx0ZXJCdXR0b24/OiBib29sZWFuXHJcbiAgaG9sZEZpbHRlclNwYWNlPzogYm9vbGVhblxyXG4gIGhvbGRIZWFkZXJCdXR0b25TcGFjZT86IGJvb2xlYW5cclxuICBlbGV2YXRpb24/OiAnbm9uZScgfCAnbG93JyB8ICdtZWRpdW0nIHwgJ2hpZ2gnXHJcbiAgZm9ybUNvbmZpZz86IEZvcm1Db25maWdcclxuICBzZWFyY2hDb25maWc/OiBTZWFyY2hDb25maWdcclxuICB0aWxlQ29uZmlnPzogVGlsZUNvbmZpZ1xyXG4gIHN0ZXBDb25maWc/OiBTdGVwQ29uZmlnXHJcbiAgYnV0dG9ucz86IEJ1dHRvbltdXHJcbiAgbWluQnV0dG9ucz86IHN0cmluZ1tdXHJcbiAgbG9hZEFjdGlvbj86IEFjdGlvblxyXG4gIGxvYWRJREZpZWxkID86IHN0cmluZ1xyXG4gIGxvYWRDcml0ZXJpYT86IHN0cmluZ1xyXG4gIGxvZ1Jlc3BvbnNlPzogYm9vbGVhblxyXG4gIGZsYXRCdXR0b25zPzogYm9vbGVhblxyXG4gIGdyZXlPdXQ/OiAodmFsdWU6IGFueSkgPT4gYm9vbGVhbjtcclxuICBoZXJvRmllbGQ/OiBhbnlcclxuICBoZXJvVmFsdWU/OiBhbnlcclxuICBjb2xsYXBzZUJ1dHRvbnM/OiBib29sZWFuXHJcbiAgcGFyZW50RGF0YSA/IDogYW55XHJcbiAgcGFnZVNpemVzPzogbnVtYmVyW11cclxuICBtYXhCdXR0b25zQ291bnQ/OiBudW1iZXJcclxuICBoaWRlVGFiQ29uZGl0aW9uPzogKHZhbHVlOiBhbnkpID0+IGJvb2xlYW47XHJcblxyXG4gIGRvd25sb2FkPzogeyBjb2x1bW5zOiBzdHJpbmdbXSwgZmlsZU5hbWU/OiBzdHJpbmcsIGhpZGRlbkNvbmRpdGlvbj86ICh2YWx1ZTogYW55KSA9PiBib29sZWFuOyB9XHJcbiAgdXBsb2FkPzogeyBhY3Rpb246IEFjdGlvbiwgbWVzc2FnZXM/OiBBbGVydE1lc3NhZ2VbXSwgaGlkZGVuQ29uZGl0aW9uPzogKHZhbHVlOiBhbnkpID0+IGJvb2xlYW47IH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFBhZ2VDb25maWcge1xyXG4gIHRpdGxlPzogc3RyaW5nO1xyXG4gIHRhYmxlQ29uZmlnPzogVGFibGVDb25maWc7XHJcbiAgc2VhcmNoVGFibGVDb25maWc/OiBUYWJsZUNvbmZpZztcclxufVxyXG5cclxuXHJcblxyXG5cclxuLy8tLS1CYXNlLS0tXHJcblxyXG5leHBvcnQgY2xhc3MgQXBpUmVzcG9uc2Uge1xyXG4gIHN1Y2Nlc3M6IGJvb2xlYW47XHJcbiAgbWVzc2FnZTogc3RyaW5nO1xyXG4gIGRhdGE7XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBDb25zdGFudHMge1xyXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQVVUSF9VU0VSID0gJ2EnO1xyXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQVVUSF9OQU1FID0gJ2InO1xyXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQVVUSF9ST0xFUyA9ICdjJztcclxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEFVVEhfVE9LRU4gPSAnZCc7XHJcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBBVVRIX1RPS0VOX0VYUElSRSA9ICdlJztcclxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEFVVEhfVEVOQU5UX05BTUUgPSAnZic7XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBMaXN0RGlhbG9nQ29uZmlnIHtcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgdGl0bGU6IHN0cmluZztcclxuICBsaXN0TmFtZTogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQ2FwSXRlbSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgdGhpcy5uYW1lID0gXCJcIjtcclxuICAgIHRoaXMuZGlzcGxheSA9IFwiTmV3IENhcCBJdGVtXCI7XHJcbiAgICB0aGlzLmVuYWJsZWQgPSBmYWxzZTtcclxuICAgIHRoaXMudHlwZSA9IFwiXCI7XHJcbiAgICB0aGlzLm5ld0xpbmUgPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvd01lbnUgPSB0cnVlO1xyXG4gICAgdGhpcy5pZ25vcmVTdWJzRGlzcGxheSA9IGZhbHNlO1xyXG4gICAgdGhpcy5saW5rID0gXCJcIjtcclxuICAgIHRoaXMuaWNvbiA9IFwibmF2aWdhdGVfbmV4dFwiO1xyXG4gICAgdGhpcy5jb2xvciA9IFwiYmxhY2tcIjtcclxuXHJcbiAgfVxyXG5cclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgZGlzcGxheTogc3RyaW5nO1xyXG4gIGVuYWJsZWQ6IGJvb2xlYW47XHJcbiAgc2hvd01lbnU6IGJvb2xlYW47XHJcblxyXG4gIGlnbm9yZVN1YnNEaXNwbGF5OiBib29sZWFuO1xyXG4gIHR5cGU6IHN0cmluZztcclxuICBuZXdMaW5lOiBib29sZWFuO1xyXG4gIGxpbms6IHN0cmluZztcclxuICBpY29uOiBzdHJpbmc7XHJcbiAgY2FwU3ViSXRlbXM6IENhcEl0ZW1bXTtcclxuICBjb2xvcjogc3RyaW5nO1xyXG5cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEFwcENvbmZpZyB7XHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB0aGlzLmFwcE5hbWUgPSBcIkFwcCBOYW1lXCI7XHJcbiAgICB0aGlzLmxvZ28gPSBcIlwiO1xyXG4gICAgdGhpcy5sb2dvU2l6ZSA9IFwibm9ybWFsXCI7XHJcbiAgICB0aGlzLkFEQXV0aCA9IHRydWU7XHJcbiAgICB0aGlzLmxvY2FsQXV0aCA9IHRydWU7XHJcbiAgICB0aGlzLmdvb2dsZUF1dGggPSBmYWxzZTtcclxuICAgIHRoaXMuc2VsZlNlcnZpY2UgPSBmYWxzZTtcclxuICAgIHRoaXMubXVsdGl0ZW5hbnQgPSBmYWxzZTtcclxuICAgIHRoaXMubmF2aWdhdGlvbiA9ICd0b3AnO1xyXG4gICAgdGhpcy5wcm9ncmVzc0xpbmUgPSBmYWxzZTtcclxuICAgIHRoaXMubG9naW5TdHlsZSA9ICdkZWZhdWx0JztcclxuICAgIHRoaXMudGVybXNVcmwgPSBcImh0dHBzOi8veW91cnNpdGUuY29tL3Rlcm1zXCI7XHJcbiAgICB0aGlzLnByaXZhY3lVcmwgPSBcImh0dHBzOi8veW91cnNpdGUuY29tL3ByaXZhY3lcIjtcclxuICAgIHRoaXMuc2l0ZVVybCA9IFwiaHR0cHM6Ly95b3Vyc2l0ZS5jb21cIjtcclxuICAgIHRoaXMubmF2V2lkdGggPSAnMjAwcHgnO1xyXG5cclxuICB9XHJcbiAgYXBwTmFtZTogc3RyaW5nO1xyXG4gIGxvZ286IHN0cmluZztcclxuICBsb2dvU2l6ZTogc3RyaW5nO1xyXG4gIEFEQXV0aDogYm9vbGVhbjtcclxuICBsb2NhbEF1dGg6IGJvb2xlYW47XHJcbiAgZ29vZ2xlQXV0aDogYm9vbGVhbjtcclxuICBzZWxmU2VydmljZTogYm9vbGVhbjtcclxuICBjYXBJdGVtczogQ2FwSXRlbVtdO1xyXG4gIG11bHRpdGVuYW50IDogYm9vbGVhbjtcclxuICBuYXZpZ2F0aW9uIDogJ3RvcCcgfCAnc2lkZSdcclxuICBwcm9ncmVzc0xpbmU6IGJvb2xlYW47XHJcbiAgZG9jc0Jhc2VVcmwgOiBzdHJpbmc7XHJcbiAgbG9naW5TdHlsZSA6IHN0cmluZztcclxuICBsb2dpblRpdGxlIDogc3RyaW5nO1xyXG4gIGxvZ2luTWVzc2FnZSA6IHN0cmluZztcclxuICB0ZXJtc1VybDogc3RyaW5nO1xyXG4gIHByaXZhY3lVcmw6IHN0cmluZztcclxuICBzaXRlVXJsOiBzdHJpbmc7XHJcbiAgbmF2V2lkdGg6IHN0cmluZztcclxuXHJcbn1cclxuXHJcblxyXG5cclxuXHJcbi8vLS0tLS0tLS0tLS1Nb3ZlIG91dC0tLS0tLVxyXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb24ge1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHRoaXMudHJhbnNhY3Rpb25JRCA9IDA7XHJcbiAgICB0aGlzLm5hcnJhdGlvbiA9IFwiXCI7XHJcbiAgICB0aGlzLmFtb3VudCA9ICcwJztcclxuICAgIHRoaXMudHlwZSA9IDA7XHJcbiAgICB0aGlzLmRhdGUgPSBcIlwiO1xyXG4gICAgdGhpcy5hY2NvdW50SUQgPSAwO1xyXG4gICAgdGhpcy5kZXN0aW5hdGlvbklEID0gMDtcclxuICAgIHRoaXMuY2F0ZWdvcnlJRCA9IDA7XHJcbiAgfVxyXG5cclxuICB0cmFuc2FjdGlvbklEIDogbnVtYmVyO1xyXG4gIG5hcnJhdGlvbiA6IHN0cmluZztcclxuICBhbW91bnQgOiBzdHJpbmc7XHJcbiAgdHlwZTogbnVtYmVyO1xyXG4gIGRhdGUgOiBzdHJpbmc7XHJcbiAgYWNjb3VudElEIDogbnVtYmVyO1xyXG4gIGRlc3RpbmF0aW9uSUQgOiBudW1iZXI7XHJcbiAgY2F0ZWdvcnlJRCA6IG51bWJlcjtcclxuXHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBGaW5BY2NvdW50IHtcclxuXHJcbiAgY29uc3RydWN0b3IoKXtcclxuICAgIHRoaXMuYWNjb3VudElEID0gMDtcclxuICAgIHRoaXMubmFtZSA9IFwiXCI7XHJcbiAgICB0aGlzLmRlc2NyaXB0aW9uID0gXCJcIjtcclxuICAgIHRoaXMuY3VycmVuY3kgPSBcIlwiO1xyXG5cclxuICB9XHJcblxyXG5cclxuICBhY2NvdW50SUQ6IG51bWJlclxyXG4gIG5hbWU6IHN0cmluZztcclxuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xyXG4gIGN1cnJlbmN5OiBzdHJpbmc7XHJcblxyXG59XHJcblxyXG4iXX0=
|
|
@@ -376,6 +376,7 @@ export class DetailsDialogProcessor {
|
|
|
376
376
|
if (updatedDetailsConfig.heroField && row) {
|
|
377
377
|
updatedDetailsConfig.heroValue = row[updatedDetailsConfig.heroField];
|
|
378
378
|
}
|
|
379
|
+
console.log("Details Config", updatedDetailsConfig);
|
|
379
380
|
//Table configs
|
|
380
381
|
if (updatedDetailsConfig.tableConfig) {
|
|
381
382
|
updateTableConfig(updatedDetailsConfig.tableConfig);
|
|
@@ -399,6 +400,9 @@ export class DetailsDialogProcessor {
|
|
|
399
400
|
if (updatedDetailsConfig.tableConfigs) {
|
|
400
401
|
updatedDetailsConfig.tableConfigs.forEach(transformLoadUrl);
|
|
401
402
|
}
|
|
403
|
+
if (updatedDetailsConfig.stepConfig?.loadAction) {
|
|
404
|
+
transformStepUrl(updatedDetailsConfig.stepConfig);
|
|
405
|
+
}
|
|
402
406
|
function transformLoadUrl(tableConfig) {
|
|
403
407
|
if (tableConfig.loadAction && tableConfig.loadCriteria && tableConfig.loadIDField) {
|
|
404
408
|
tableConfig.loadAction.url = `${tableConfig.loadAction.url.split('/')[0]}/${tableConfig.loadCriteria}/${updatedDetailsConfig.details[tableConfig.loadIDField]}`;
|
|
@@ -408,6 +412,13 @@ export class DetailsDialogProcessor {
|
|
|
408
412
|
console.log("NOT Transformed");
|
|
409
413
|
}
|
|
410
414
|
}
|
|
415
|
+
function transformStepUrl(stepConfig) {
|
|
416
|
+
if (stepConfig.loadAction && stepConfig.loadIDField) {
|
|
417
|
+
// let heroId = updatedDetailsConfig.details[updatedDetailsConfig.heroField];
|
|
418
|
+
stepConfig.loadAction.url = `${stepConfig.loadAction.url.replace('{id}', updatedDetailsConfig.details[stepConfig.loadIDField])}`;
|
|
419
|
+
// console.log("Transformed step URL", stepConfig.loadAction.url);
|
|
420
|
+
}
|
|
421
|
+
}
|
|
411
422
|
return updatedDetailsConfig;
|
|
412
423
|
}
|
|
413
424
|
static initializeConfigs(detailsConfig) {
|
|
@@ -420,9 +431,12 @@ export class DetailsDialogProcessor {
|
|
|
420
431
|
return { tableConfig, tableConfigs, formConfig, stepConfig, buttons };
|
|
421
432
|
}
|
|
422
433
|
static setHeroValue(detailsConfig, details) {
|
|
423
|
-
|
|
434
|
+
console.log(detailsConfig);
|
|
424
435
|
if ((detailsConfig.formConfig.mode == "create") && detailsConfig.heroField && detailsConfig.heroValue) {
|
|
425
436
|
details[detailsConfig.heroField] = detailsConfig.heroValue;
|
|
437
|
+
// Ensure hero values are set in form config
|
|
438
|
+
detailsConfig.formConfig.heroField = detailsConfig.heroField;
|
|
439
|
+
detailsConfig.formConfig.heroValue = detailsConfig.heroValue;
|
|
426
440
|
return;
|
|
427
441
|
}
|
|
428
442
|
// if (detailsConfig.config.mode != "create" && detailsConfig.heroField) {
|
|
@@ -514,4 +528,4 @@ export class DetailsDialogProcessor {
|
|
|
514
528
|
return { extraButtons, createButton, editButton, deleteButton };
|
|
515
529
|
}
|
|
516
530
|
}
|
|
517
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGluQ29yZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rpbi1zcGEvc3JjL2xpYi9jbGFzc2VzL1RpbkNvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF1QixhQUFhLEVBQXFDLE1BQU0sV0FBVyxDQUFDO0FBRWxHLE1BQU0sT0FBTyxJQUFJO0lBR1IsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHO1FBQ3pCLElBQUksR0FBRyxLQUFLLElBQUksSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLEVBQUU7WUFDM0MsT0FBTyxHQUFHLENBQUM7U0FDWjtRQUVELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUN0QixNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDbkIsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRTtnQkFDMUIsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDeEMsQ0FBQyxDQUFDLENBQUM7WUFDSCxPQUFPLE9BQU8sQ0FBQztTQUNoQjtRQUVELE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNuQixNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUM3QixPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMxQyxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFTSxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQVE7UUFDL0IsOENBQThDO1FBQzlDLE1BQU0sWUFBWSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFFbkMseURBQXlEO1FBQ3pELE1B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WUFBWSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLFFBQVEsSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLE1BQU0sSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLFFBQVEsSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLE1BQU0sSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDeEk7WUFDRCxZQUFZLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLENBQUM7WUFDdEQsVUFBVSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQyxDQUFDO1lBQ2xELFlBQVksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxRQUFRLENBQUMsQ0FBQztTQUN2RDtRQUNELE9BQU8sRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsQ0FBQztJQUNsRSxDQUFDO0NBS0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEZXRhaWxzRGlhbG9nQ29uZmlnLCBEZXRhaWxzU291cmNlLCBGaWVsZCwgRm9ybUNvbmZpZywgU2VjdXJpdHlDb25maWcgfSBmcm9tIFwiLi9DbGFzc2VzXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgQ29yZSB7XHJcblxyXG5cclxuICBwdWJsaWMgc3RhdGljIGRlZXBDbG9uZShvYmopIHtcclxuICAgIGlmIChvYmogPT09IG51bGwgfHwgdHlwZW9mIG9iaiAhPT0gJ29iamVjdCcpIHtcclxuICAgICAgcmV0dXJuIG9iajtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheShvYmopKSB7XHJcbiAgICAgIGNvbnN0IGFyckNvcHkgPSBbXTtcclxuICAgICAgb2JqLmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XHJcbiAgICAgICAgYXJyQ29weVtpbmRleF0gPSB0aGlzLmRlZXBDbG9uZShpdGVtKTtcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiBhcnJDb3B5O1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IG9iakNvcHkgPSB7fTtcclxuICAgIE9iamVjdC5rZXlzKG9iaikuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICBvYmpDb3B5W2tleV0gPSB0aGlzLmRlZXBDbG9uZShvYmpba2V5XSk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBvYmpDb3B5O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBkZWVwQ2xvbmUyKG9iajogYW55KTogYW55IHtcclxuICAgIC8vIENyZWF0ZSBuZXcgV2Vha01hcCBmb3IgZWFjaCBjbG9uZSBvcGVyYXRpb25cclxuICAgIGNvbnN0IGNsb25lVmlzaXRlZCA9IG5ldyBXZWFrTWFwKCk7XHJcblxyXG4gICAgLy8gSW5uZXIgZnVuY3Rpb24gdGhhdCBoYXMgYWNjZXNzIHRvIHRoZSBjbG9uZVZpc2l0ZWQgbWFwXHJcbiAgICBjb25zdCBjbG9uZSA9ICh2YWx1ZTogYW55KTogYW55ID0+IHtcclxuICAgICAgLy8gSGFuZGxlIG51bGwsIHVuZGVmaW5lZCBhbmQgcHJpbWl0aXZlc1xyXG4gICAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0Jykge1xyXG4gICAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gQ2hlY2sgaWYgb2JqZWN0IHdhcyBhbHJlYWR5IGNsb25lZFxyXG4gICAgICBpZiAoY2xvbmVWaXNpdGVkLmhhcyh2YWx1ZSkpIHtcclxuICAgICAgICByZXR1cm4gY2xvbmVWaXNpdGVkLmdldCh2YWx1ZSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIEhhbmRsZSBhcnJheXNcclxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XHJcbiAgICAgICAgY29uc3QgYXJyQ29weSA9IFtdO1xyXG4gICAgICAgIGNsb25lVmlzaXRlZC5zZXQodmFsdWUsIGFyckNvcHkpO1xyXG4gICAgICAgIHZhbHVlLmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICBhcnJDb3B5W2luZGV4XSA9IGNsb25lKGl0ZW0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBhcnJDb3B5O1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBIYW5kbGUgZGF0ZXNcclxuICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xyXG4gICAgICAgIHJldHVybiBuZXcgRGF0ZSh2YWx1ZSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIEhhbmRsZSByZWd1bGFyIG9iamVjdHNcclxuICAgICAgY29uc3Qgb2JqQ29weSA9IE9iamVjdC5jcmVhdGUoT2JqZWN0LmdldFByb3RvdHlwZU9mKHZhbHVlKSk7XHJcbiAgICAgIGNsb25lVmlzaXRlZC5zZXQodmFsdWUsIG9iakNvcHkpO1xyXG5cclxuICAgICAgT2JqZWN0LmVudHJpZXModmFsdWUpLmZvckVhY2goKFtrZXksIHZhbF0pID0+IHtcclxuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCBrZXkpKSB7XHJcbiAgICAgICAgICBvYmpDb3B5W2tleV0gPSBjbG9uZSh2YWwpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgICByZXR1cm4gb2JqQ29weTtcclxuICAgIH07XHJcblxyXG4gICAgLy8gU3RhcnQgdGhlIGNsb25lIG9wZXJhdGlvbiB3aXRoIGEgZnJlc2ggV2Vha01hcFxyXG4gICAgcmV0dXJuIGNsb25lKG9iaik7XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgY2FtZWxUb1dvcmRzKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuIHZhbHVlO1xyXG5cclxuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKSByZXR1cm4gdmFsdWU7XHJcblxyXG4gICAgaWYgKHZhbHVlLmxlbmd0aCA9PSAwKSByZXR1cm4gdmFsdWU7XHJcblxyXG4gICAgbGV0IHYgPSB2YWx1ZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHZhbHVlLnN1YnN0cmluZygxKVxyXG4gICAgcmV0dXJuIHYucmVwbGFjZSgvKFtBLVpdKykqKFtBLVpdW2Etel0pL2csIFwiJDEgJDJcIik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIGdlbmVyYXRlT2JqZWN0KGZpZWxkczogRmllbGRbXSkge1xyXG5cclxuICAgIGxldCBkYXRhID0ge307XHJcbiAgICBmaWVsZHMuZm9yRWFjaChmaWVsZCA9PiB7XHJcblxyXG4gICAgICBpZiAoZmllbGQudHlwZSAhPSAnc2VjdGlvbicgJiYgZmllbGQudHlwZSAhPSAnYmxhbmsnICl7XHJcbiAgICAgICAgZGF0YVtmaWVsZC5uYW1lXSA9IHRoaXMuZ2V0SW5pdGlhbFZhbHVlKGZpZWxkKTtcclxuICAgICAgfVxyXG5cclxuICAgIH0pO1xyXG5cclxuICAgIC8vIGNvbnNvbGUubG9nKGRhdGEpXHJcblxyXG4gICAgcmV0dXJuIGRhdGE7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIHJlc2V0T2JqZWN0KGZpZWxkczogRmllbGRbXSwgZGF0YSkge1xyXG5cclxuICAgIGZpZWxkcy5mb3JFYWNoKGZpZWxkID0+IHtcclxuICAgICAgaWYgKGZpZWxkLnR5cGUgIT0gJ3NlY3Rpb24nICYmIGZpZWxkLnR5cGUgIT0gJ2JsYW5rJykge1xyXG4gICAgICAgIGRhdGFbZmllbGQubmFtZV0gPSB0aGlzLmdldEluaXRpYWxWYWx1ZShmaWVsZCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgY2hlY2tTZWN1cml0eShzZWN1cml0eTogU2VjdXJpdHlDb25maWcsIGN1cnJlbnRSb2xlOiBhbnkpOiBib29sZWFuIHtcclxuICAgIGlmICghc2VjdXJpdHkpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHNlY3VyaXR5LmRlbnk/LnNvbWUocm9sZSA9PiBjdXJyZW50Um9sZVtyb2xlLm5hbWVdKSkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCFzZWN1cml0eS5hbGxvdyB8fCBzZWN1cml0eS5hbGxvdy5sZW5ndGggPT09IDApIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHNlY3VyaXR5LmFsbG93LnNvbWUocm9sZSA9PiBjdXJyZW50Um9sZVtyb2xlLm5hbWVdKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgY2hlY2tGb3JtQWNjZXNzKGNvbmZpZzogRm9ybUNvbmZpZywgY3VycmVudFJvbGU6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuY2hlY2tTZWN1cml0eShjb25maWc/LnNlY3VyaXR5LCBjdXJyZW50Um9sZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIHRlc3RWaXNpYmxlKGNvbmZpZzogRm9ybUNvbmZpZywgZGF0YSwgZmllbGQ6IEZpZWxkLCBjdXJyZW50Um9sZTogYW55KTogYm9vbGVhbiB7XHJcblxyXG4gICAgaWYgKChmaWVsZC50eXBlID09ICdzZWN0aW9uJyB8fCBmaWVsZC50eXBlID09ICdibGFuaycpICYmIGZpZWxkLmhpZGRlbikgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIC8vIEZpcnN0IGNoZWNrIGZvcm0gbGV2ZWwgc2VjdXJpdHkgaWYgZXhpc3RzXHJcbiAgICBpZiAoY29uZmlnLnNlY3VyaXR5ICYmICF0aGlzLmNoZWNrRm9ybUFjY2Vzcyhjb25maWcsIGN1cnJlbnRSb2xlKSkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGZpZWxkLnNlY3Rpb24pIHtcclxuICAgICAgY29uc3Qgc2VjdGlvbkZpZWxkID0gY29uZmlnLmZpZWxkcy5maW5kKGYgPT4gZi50eXBlID09PSAnc2VjdGlvbicgJiYgZi5uYW1lID09PSBmaWVsZC5zZWN0aW9uKTtcclxuICAgICAgaWYgKHNlY3Rpb25GaWVsZCkge1xyXG4gICAgICAgIC8vIEluaGVyaXQgc2VjdGlvbidzIGNvbmRpdGlvbnNcclxuICAgICAgICBpZiAoIXRoaXMuY2hlY2tTZWN1cml0eShzZWN0aW9uRmllbGQuc2VjdXJpdHlDb25maWcsIGN1cnJlbnRSb2xlKSkge1xyXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBpZiAoc2VjdGlvbkZpZWxkLmhpZGRlbikgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIGlmIChzZWN0aW9uRmllbGQuaGlkZU9uQ3JlYXRlICYmIGNvbmZpZy5tb2RlID09ICdjcmVhdGUnKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgaWYgKHNlY3Rpb25GaWVsZC5oaWRlT25FeGlzdHMgJiYgY29uZmlnLm1vZGUgIT0gJ2NyZWF0ZScpIHJldHVybiBmYWxzZTtcclxuICAgICAgICBpZiAoc2VjdGlvbkZpZWxkLmhpZGRlbkNvbmRpdGlvbiAmJiBzZWN0aW9uRmllbGQuaGlkZGVuQ29uZGl0aW9uKGRhdGEpKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBUaGVuIGNoZWNrIGZpZWxkIGxldmVsIHNlY3VyaXR5IGlmIGV4aXN0c1xyXG4gICAgaWYgKCF0aGlzLmNoZWNrU2VjdXJpdHkoZmllbGQuc2VjdXJpdHlDb25maWcsIGN1cnJlbnRSb2xlKSkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGZpZWxkLmhpZGRlbikgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIGlmIChjb25maWcubW9kZSA9PSAnY3JlYXRlJyAmJiBmaWVsZC5oaWRlT25DcmVhdGUpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBpZiAoY29uZmlnLm1vZGUgIT0gJ2NyZWF0ZScgJiYgZmllbGQuaGlkZU9uRXhpc3RzKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcblxyXG5cclxuICAgIGlmIChmaWVsZC5oaWRkZW5Db25kaXRpb24pIHtcclxuICAgICAgcmV0dXJuICFmaWVsZC5oaWRkZW5Db25kaXRpb24oZGF0YSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIHRlc3RSZWFkT25seShjb25maWc6IEZvcm1Db25maWcsIGRhdGEsIGZpZWxkOiBGaWVsZCk6IGJvb2xlYW4ge1xyXG4gICAgLy8gRGVmYXVsdCByZWFkb25seSBjb25kaXRpb25zXHJcbiAgICBpZiAoY29uZmlnLm1vZGUgPT0gJ2NyZWF0ZScpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChmaWVsZC5yZWFkb25seSkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoY29uZmlnLm1vZGUgPT0gJ3ZpZXcnKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIENoZWNrIHNlY3Rpb24gcmVhZG9ubHkgY29uZGl0aW9uIGZpcnN0XHJcbiAgICBpZiAoZmllbGQuc2VjdGlvbikge1xyXG4gICAgICBjb25zdCBzZWN0aW9uRmllbGQgPSBjb25maWcuZmllbGRzLmZpbmQoZiA9PiBmLnR5cGUgPT09ICdzZWN0aW9uJyAmJiBmLm5hbWUgPT09IGZpZWxkLnNlY3Rpb24pO1xyXG4gICAgICBpZiAoc2VjdGlvbkZpZWxkPy5yZWFkb25seUNvbmRpdGlvbiAmJiBzZWN0aW9uRmllbGQucmVhZG9ubHlDb25kaXRpb24oZGF0YSkpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIENoZWNrIGZpZWxkIGxldmVsIHJlYWRvbmx5IGNvbmRpdGlvbiBsYXN0XHJcbiAgICBpZiAoZmllbGQucmVhZG9ubHlDb25kaXRpb24pIHtcclxuICAgICAgcmV0dXJuIGZpZWxkLnJlYWRvbmx5Q29uZGl0aW9uKGRhdGEpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgdGVzdFZpc2libGVIZWFkZXJCdXR0b24oZGF0YSwgYnRuKTogYm9vbGVhbiB7XHJcblxyXG4gICAgaWYgKGJ0bi5oaWRkZW5Db25kaXRpb24pIHtcclxuICAgICAgcmV0dXJuICFidG4uaGlkZGVuQ29uZGl0aW9uKGRhdGEpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBnZXRWaXNpYmxlU3ViZmllbGRzKGNvbmZpZzogRm9ybUNvbmZpZywgZGF0YSwgZmllbGQ6IEZpZWxkLCBjdXJyZW50Um9sZTogYW55ICk6IEZpZWxkW10ge1xyXG4gICAgcmV0dXJuIGZpZWxkLnN1YmZpZWxkcz8uZmlsdGVyKHN1YmZpZWxkID0+IENvcmUudGVzdFZpc2libGUoY29uZmlnLCBkYXRhLCBzdWJmaWVsZCxjdXJyZW50Um9sZSApKSB8fCBbXTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgdmFsaWRhdGVPYmplY3QoZmllbGRzOiBGaWVsZFtdLCBkYXRhKTogc3RyaW5nIHtcclxuXHJcbiAgICBjb25zb2xlLmxvZyhcIlZhbGlkYXRpb25zXCIpXHJcblxyXG4gICAgZm9yIChsZXQgZmllbGQgb2YgZmllbGRzKSB7XHJcblxyXG4gICAgICBpZiAoZmllbGQudHlwZSA9PSAnZmlsZScgfHwgZmllbGQudHlwZSA9PSAnZmlsZS12aWV3JyB8fCBmaWVsZC50eXBlID09ICdibGFuaycgfHwgZmllbGQudHlwZSA9PSAnc2VjdGlvbicgKSBjb250aW51ZVxyXG5cclxuXHJcblxyXG4gICAgICBsZXQgbmFtZSA9IGZpZWxkLmFsaWFzID8/IHRoaXMuY2FtZWxUb1dvcmRzKGZpZWxkLm5hbWUpO1xyXG4gICAgICBsZXQgZCA9IGRhdGFbZmllbGQubmFtZV07XHJcblxyXG5cclxuICAgICAgY29uc29sZS5sb2cobmFtZSArICcgJyArIGQpXHJcblxyXG4gICAgICBpZiAoZmllbGQucmVxdWlyZWQpe1xyXG5cclxuICAgICAgICBpZiAoZCA9PSB1bmRlZmluZWQgfHwgZCA9PSBudWxsKSByZXR1cm4gYCR7bmFtZX0gaXMgcmVxdWlyZWRgO1xyXG5cclxuICAgICAgICBpZiAoZmllbGQudHlwZSA9PSAndGV4dCcpe1xyXG5cclxuICAgICAgICAgIGlmIChkID09ICcnKSByZXR1cm4gYFBsZWFzZSBlbnRlciAke25hbWV9YDtcclxuXHJcbiAgICAgICAgICBpZiAoZmllbGQubWluICYmIGQubGVuZ3RoIDwgZmllbGQubWluKSByZXR1cm4gYE1pbmltdW0gICR7bmFtZX0gbGVuZ3RoIGlzICR7ZmllbGQubWlufWBcclxuXHJcbiAgICAgICAgICBpZiAoZmllbGQubWF4ICYmIGQubGVuZ3RoID4gZmllbGQubWF4KSByZXR1cm4gYE1heGltdW0gJHtuYW1lfSBsZW5ndGggaXMgJHtmaWVsZC5tYXh9YFxyXG5cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoZmllbGQudHlwZSA9PSAnbnVtYmVyJyB8fCBmaWVsZC50eXBlID09ICdtb25leScgfHwgZmllbGQudHlwZSA9PSAnZGF0ZScpe1xyXG5cclxuICAgICAgICAgIGlmIChmaWVsZC5taW4gJiYgZCA8IGZpZWxkLm1pbikgcmV0dXJuIGBNaW5pbXVtICAke25hbWV9IGlzICR7ZmllbGQubWlufWBcclxuXHJcbiAgICAgICAgICBpZiAoZmllbGQubWF4ICYmIGQgPiBmaWVsZC5tYXgpIHJldHVybiBgTWF4aW11bSAke25hbWV9IGlzICR7ZmllbGQubWF4fWBcclxuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGZpZWxkLnR5cGUgPT0gJ3NlbGVjdCcpIHtcclxuXHJcbiAgICAgICAgICBpZiAodHlwZW9mKGQpID09ICdzdHJpbmcnICYmIGQgPT0gJycpIHJldHVybiBgUGxlYXNlIHNlbGVjdCAke25hbWV9YDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICB9XHJcblxyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gJyc7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIGdldEluaXRpYWxWYWx1ZShmaWVsZDogRmllbGQpIHtcclxuXHJcbiAgICBpZiAoZmllbGQuZGVmYXVsdFZhbHVlKXtcclxuXHJcbiAgICAgIGlmICgoZmllbGQudHlwZSA9PSAnZGF0ZScgfHwgZmllbGQudHlwZSA9PSAnZGF0ZXRpbWUnKSAmJiBmaWVsZC5kZWZhdWx0VmFsdWUgPT0gJ25vdycpIHJldHVybiB0aGlzLm5vd0RhdGUodHJ1ZSk7XHJcblxyXG4gICAgICByZXR1cm4gZmllbGQuZGVmYXVsdFZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChmaWVsZC50eXBlID09ICdzZWxlY3QnICYmIChmaWVsZC5oaWRkZW4gfHwgZmllbGQuaGlkZU9uQ3JlYXRlKSkgcmV0dXJuIDA7XHJcblxyXG4gICAgc3dpdGNoIChmaWVsZC50eXBlKSB7XHJcbiAgICAgIGNhc2UgJ3RleHQnOlxyXG4gICAgICAgIHJldHVybiAnJztcclxuICAgICAgY2FzZSAnbW9uZXknOlxyXG4gICAgICAgIHJldHVybiAwO1xyXG4gICAgICBjYXNlICdudW1iZXInOlxyXG4gICAgICAgIHJldHVybiAwO1xyXG4gICAgICBjYXNlICdkYXRlJzpcclxuICAgICAgICByZXR1cm4gdGhpcy5ub3dEYXRlKHRydWUpO1xyXG4gICAgICBjYXNlICdjaGVja2JveCc6XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICBjYXNlICdzZWxlY3QnOlxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG5cclxuICBwdWJsaWMgc3RhdGljIGdldENsb25lKHgpIHtcclxuICAgIHJldHVybiB0aGlzLmRlZXBDbG9uZTIoeCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIGdldE51bWJlcih2YWx1ZTogc3RyaW5nKSB7XHJcblxyXG4gICAgaWYgKHZhbHVlID09IG51bGwgfHwgdmFsdWUgPT0gXCJcIikge1xyXG4gICAgICByZXR1cm4gMDtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBvbmx5TnVtYmVycyA9IHZhbHVlLnJlcGxhY2UoL1teXFxkLi1dL2csICcnKTtcclxuICAgIHJldHVybiBvbmx5TnVtYmVyc1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBnZXRGaXJzdERheU9mTW9udGgoKSB7XHJcbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoKTtcclxuICAgIHJldHVybiBuZXcgRGF0ZShkYXRlLmdldEZ1bGxZZWFyKCksIGRhdGUuZ2V0TW9udGgoKSwgMSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIGVtYWlsSXNWYWxpZChlbWFpbCkge1xyXG4gICAgLy8gcmV0dXJuIC9cXFMrQFxcUytcXC5cXFMrLy50ZXN0KGVtYWlsKVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBpc1ZhbGlkVU5DUGF0aChwYXRoOiBzdHJpbmcpIHtcclxuICAgIC8vIHJldHVybiAvXFxcXFxcXFwoW2EtekEtWjAtOV8uJOKXjy1dKylcXFxcKFthLXpBLVowLTlfLiTil48tXSspLiovLnRlc3QocGF0aClcclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgaXNWYWxpZERhdGUoZGF0ZSkge1xyXG5cclxuICAgIHZhciBwYXJzZWREYXRlID0gRGF0ZS5wYXJzZShkYXRlKTtcclxuXHJcblxyXG4gICAgaWYgKGlzTmFOKGRhdGUpICYmICFpc05hTihwYXJzZWREYXRlKSkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIGlzVmFsaWRFbWFpbExpc3QobGlzdDogc3RyaW5nKSB7XHJcblxyXG4gICAgaWYgKGxpc3QuaW5jbHVkZXMoXCI7XCIpKSB7XHJcblxyXG4gICAgICBsZXQgZW1haWxzID0gbGlzdC5zcGxpdChcIjtcIilcclxuXHJcbiAgICAgIGZvciAodmFyIGVtYWlsIG9mIGVtYWlscykge1xyXG4gICAgICAgIGlmICh0aGlzLmVtYWlsSXNWYWxpZChlbWFpbCkgPT0gZmFsc2UpIHtcclxuICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcblxyXG4gICAgfSBlbHNlIHtcclxuXHJcbiAgICAgIGlmICh0aGlzLmVtYWlsSXNWYWxpZChsaXN0KSA9PSBmYWxzZSkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG5cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIG51bGxEYXRlID0gXCIwMSBKYW4gMTk2OVwiXHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgaXNOdW1iZXIodmFsdWU6IHN0cmluZyB8IG51bWJlcik6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICgodmFsdWUgIT0gbnVsbCkgJiZcclxuICAgICAgKHZhbHVlICE9PSAnJykgJiZcclxuICAgICAgIWlzTmFOKE51bWJlcih2YWx1ZS50b1N0cmluZygpKSkpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBnZXREaWZmKHN0YXJ0RGF0ZSwgZW5kRGF0ZSA9IERhdGUoKSkge1xyXG5cclxuICAgIHZhciBldmVudFN0YXJ0VGltZSA9IG5ldyBEYXRlKHN0YXJ0RGF0ZSk7XHJcbiAgICB2YXIgZXZlbnRFbmRUaW1lID0gbmV3IERhdGUoZW5kRGF0ZSk7XHJcbiAgICB2YXIgbWlsbGlzZWNvbmRzID0gZXZlbnRFbmRUaW1lLnZhbHVlT2YoKSAtIGV2ZW50U3RhcnRUaW1lLnZhbHVlT2YoKTtcclxuXHJcbiAgICBmdW5jdGlvbiBudW1iZXJFbmRpbmcobnVtYmVyOiBudW1iZXIpIHtcclxuXHJcbiAgICAgIGlmIChudW1iZXIudG9GaXhlZCgpID09ICcxJykge1xyXG4gICAgICAgIHJldHVybiAnJ1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiAncyc7XHJcbiAgICAgIH1cclxuXHJcbiAgICB9XHJcblxyXG4gICAgdmFyIG1pbnV0ZXMgPSAobWlsbGlzZWNvbmRzIC8gKDEwMDAgKiA2MCkpO1xyXG5cclxuICAgIHZhciBob3VyczogbnVtYmVyID0gKG1pbGxpc2Vjb25kcyAvICgxMDAwICogNjAgKiA2MCkpO1xyXG5cclxuICAgIHZhciBkYXlzID0gKG1pbGxpc2Vjb25kcyAvICgxMDAwICogNjAgKiA2MCAqIDI0KSk7XHJcblxyXG4gICAgdmFyIHdlZWtzOiBudW1iZXIgPSAobWlsbGlzZWNvbmRzIC8gKDEwMDAgKiA2MCAqIDYwICogMjQgKiA3KSk7XHJcblxyXG4gICAgdmFyIG1vbnRocyA9IChtaWxsaXNlY29uZHMgLyAoMTAwMCAqIDYwICogNjAgKiAyNCAqIDcgKiA0KSk7XHJcblxyXG4gICAgdmFyIHllYXJzID0gKG1pbGxpc2Vjb25kcyAvICgxMDAwICogNjAgKiA2MCAqIDI0ICogMzY1KSk7XHJcblxyXG5cclxuICAgIGlmICh5ZWFycyA+PSAxKSB7XHJcblxyXG4gICAgICByZXR1cm4geWVhcnMudG9GaXhlZCgpICsgJyB5ZWFyJyArIG51bWJlckVuZGluZyh5ZWFycyk7XHJcblxyXG4gICAgfSBlbHNlIGlmIChtb250aHMgPj0gMSkge1xyXG5cclxuICAgICAgcmV0dXJuIG1vbnRocy50b0ZpeGVkKCkgKyAnIG1vbnRoJyArIG51bWJlckVuZGluZyhtb250aHMpO1xyXG5cclxuICAgIH0gZWxzZSBpZiAod2Vla3MgPj0gMSkge1xyXG5cclxuICAgICAgcmV0dXJuIHdlZWtzLnRvRml4ZWQoKSArICcgd2VlaycgKyBudW1iZXJFbmRpbmcod2Vla3MpO1xyXG5cclxuICAgIH0gZWxzZSBpZiAoZGF5cyA+PSAxKSB7XHJcblxyXG4gICAgICByZXR1cm4gZGF5cy50b0ZpeGVkKCkgKyAnIGRheScgKyBudW1iZXJFbmRpbmcoZGF5cyk7XHJcblxyXG4gICAgfSBlbHNlIGlmIChob3VycyA+PSAxKSB7XHJcblxyXG4gICAgICByZXR1cm4gaG91cnMudG9GaXhlZCgpICsgJyBob3VyJyArIG51bWJlckVuZGluZyhob3Vycyk7XHJcblxyXG4gICAgfSBlbHNlIGlmIChtaW51dGVzID49IDEpIHtcclxuXHJcbiAgICAgIHJldHVybiBtaW51dGVzLnRvRml4ZWQoKSArICcgbWludXRlJyArIG51bWJlckVuZGluZyhtaW51dGVzKTtcclxuXHJcbiAgICB9IGVsc2UgaWYgKG1pbGxpc2Vjb25kcyA+PSAoLTEwMDAgKiA2MCkpIHtcclxuXHJcbiAgICAgIHJldHVybiAnYSBtaW51dGUnO1xyXG5cclxuICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICByZXR1cm4gJ04vQSc7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgbm93RGF0ZShOb1RpbWU6IGJvb2xlYW4gPSBmYWxzZSkge1xyXG5cclxuICAgIGlmIChOb1RpbWUpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZ2V0Rm9ybWF0ZWREYXRlKERhdGUoKSwgdHJ1ZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdGhpcy5nZXRGb3JtYXRlZERhdGUoRGF0ZSgpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgZ2V0Rm9ybWF0ZWREYXRlKGRhdGVTdHJpbmc6IHN0cmluZywgTm9UaW1lOiBib29sZWFuID0gZmFsc2UpIHtcclxuXHJcbiAgICBsZXQgZDogRGF0ZSA9IG5ldyBEYXRlKGRhdGVTdHJpbmcpO1xyXG4gICAgZC5zZXRIb3VycyhkLmdldEhvdXJzKCkgKyAyKTtcclxuXHJcbiAgICBpZiAoTm9UaW1lID09IHRydWUpIHtcclxuICAgICAgcmV0dXJuIGQudG9JU09TdHJpbmcoKS5zcGxpdCgnVCcpWzBdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIGQudG9JU09TdHJpbmcoKS5zcGxpdCgnLicpWzBdO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgZ2V0Rm9ybWF0ZWREYXRlMihkIDogRGF0ZSwgTm9UaW1lOiBib29sZWFuID0gZmFsc2UpIHtcclxuXHJcblxyXG4gICAgZC5zZXRIb3VycyhkLmdldEhvdXJzKCkgKyAyKTtcclxuXHJcbiAgICBpZiAoTm9UaW1lID09IHRydWUpIHtcclxuICAgICAgcmV0dXJuIGQudG9JU09TdHJpbmcoKS5zcGxpdCgnVCcpWzBdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIGQudG9JU09TdHJpbmcoKS5zcGxpdCgnLicpWzBdO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgZ2V0QnVzaW5lc3NEYXRlc0NvdW50KHN0YXJ0RGF0ZTogc3RyaW5nLCBlbmREYXRlOiBzdHJpbmcpIHtcclxuICAgIHZhciBjb3VudCA9IDA7XHJcbiAgICB2YXIgX3N0YXJ0RGF0ZSA9IG5ldyBEYXRlKHN0YXJ0RGF0ZSk7XHJcbiAgICB2YXIgX2VuZERhdGUgPSBuZXcgRGF0ZShlbmREYXRlKTtcclxuXHJcbiAgICB2YXIgY3VyRGF0ZSA9IF9zdGFydERhdGU7XHJcblxyXG4gICAgd2hpbGUgKGN1ckRhdGUgPCBfZW5kRGF0ZSkge1xyXG4gICAgICB2YXIgZGF5T2ZXZWVrID0gY3VyRGF0ZS5nZXREYXkoKTtcclxuICAgICAgaWYgKCEoZGF5T2ZXZWVrID09IDYgfHwgZGF5T2ZXZWVrID09IDApKSBjb3VudCsrO1xyXG4gICAgICBjdXJEYXRlLnNldERhdGUoY3VyRGF0ZS5nZXREYXRlKCkgKyAxKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gY291bnQ7XHJcbiAgfVxyXG5cclxufVxyXG5cclxuXHJcbmV4cG9ydCBjbGFzcyBEZXRhaWxzRGlhbG9nUHJvY2Vzc29yIHtcclxuXHJcbiAgcHVibGljIHN0YXRpYyBwcm9jZXNzRGV0YWlsc0NvbmZpZyhkZXRhaWxzQ29uZmlnOiBEZXRhaWxzRGlhbG9nQ29uZmlnLCByb3c6IGFueSk6IERldGFpbHNEaWFsb2dDb25maWcge1xyXG5cclxuICAgIGNvbnN0IHVwZGF0ZWREZXRhaWxzQ29uZmlnOiBEZXRhaWxzRGlhbG9nQ29uZmlnID0gQ29yZS5nZXRDbG9uZShkZXRhaWxzQ29uZmlnKTsgLy97Li4uZGV0YWlsc0NvbmZpZ31cclxuICAgIHVwZGF0ZWREZXRhaWxzQ29uZmlnLmRldGFpbHMgPSByb3c7XHJcblxyXG5cclxuICAgIC8vRm9ybSBDb25maWdcclxuICAgIHVwZGF0ZWREZXRhaWxzQ29uZmlnLmZvcm1Db25maWcubW9kZSA9IHVwZGF0ZWREZXRhaWxzQ29uZmlnLm1vZGUgPz8gXCJ2aWV3XCI7XHJcblxyXG4gICAgaWYgKHVwZGF0ZWREZXRhaWxzQ29uZmlnLmhlcm9GaWVsZCAmJiByb3cpIHtcclxuICAgICAgdXBkYXRlZERldGFpbHNDb25maWcuaGVyb1ZhbHVlID0gcm93W3VwZGF0ZWREZXRhaWxzQ29uZmlnLmhlcm9GaWVsZF07XHJcbiAgICB9XHJcblxyXG5cclxuXHJcblxyXG4gICAgLy9UYWJsZSBjb25maWdzXHJcbiAgICBpZiAodXBkYXRlZERldGFpbHNDb25maWcudGFibGVDb25maWcpIHtcclxuICAgICAgdXBkYXRlVGFibGVDb25maWcodXBkYXRlZERldGFpbHNDb25maWcudGFibGVDb25maWcpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh1cGRhdGVkRGV0YWlsc0NvbmZpZy50YWJsZUNvbmZpZ3MpIHtcclxuICAgICAgdXBkYXRlZERldGFpbHNDb25maWcudGFibGVDb25maWdzLmZvckVhY2godXBkYXRlVGFibGVDb25maWcpO1xyXG4gICAgfVxyXG5cclxuICAgIGZ1bmN0aW9uIHVwZGF0ZVRhYmxlQ29uZmlnKHRhYmxlQ29uZmlnKSB7XHJcbiAgICAgIHRhYmxlQ29uZmlnLmhlcm9GaWVsZCA9IHVwZGF0ZWREZXRhaWxzQ29uZmlnPy5oZXJvRmllbGQ7XHJcbiAgICAgIHRhYmxlQ29uZmlnLmhlcm9WYWx1ZSA9IHVwZGF0ZWREZXRhaWxzQ29uZmlnPy5oZXJvVmFsdWU7XHJcbiAgICAgIC8vIHRhYmxlQ29uZmlnLnNldEhlcm8gPSB1cGRhdGVkRGV0YWlsc0NvbmZpZy5zZXRIZXJvO1xyXG4gICAgICB0YWJsZUNvbmZpZy5zZWFyY2hDb25maWcgPSBudWxsO1xyXG4gICAgICB0YWJsZUNvbmZpZy50aWxlQ29uZmlnID0gbnVsbDtcclxuICAgICAgdGFibGVDb25maWcucGFyZW50RGF0YSA9IHVwZGF0ZWREZXRhaWxzQ29uZmlnLmRldGFpbHM7XHJcbiAgICAgIHRhYmxlQ29uZmlnLmVsZXZhdGlvbiA9ICdub25lJztcclxuICAgIH1cclxuXHJcblxyXG5cclxuICAgIC8vVVJMXHJcbiAgICBpZiAodXBkYXRlZERldGFpbHNDb25maWcudGFibGVDb25maWcpIHtcclxuICAgICAgdHJhbnNmb3JtTG9hZFVybCh1cGRhdGVkRGV0YWlsc0NvbmZpZy50YWJsZUNvbmZpZyk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHVwZGF0ZWREZXRhaWxzQ29uZmlnLnRhYmxlQ29uZmlncykge1xyXG4gICAgICB1cGRhdGVkRGV0YWlsc0NvbmZpZy50YWJsZUNvbmZpZ3MuZm9yRWFjaCh0cmFuc2Zvcm1Mb2FkVXJsKTtcclxuICAgIH1cclxuXHJcbiAgICBmdW5jdGlvbiB0cmFuc2Zvcm1Mb2FkVXJsKHRhYmxlQ29uZmlnKSB7XHJcbiAgICAgIGlmICh0YWJsZUNvbmZpZy5sb2FkQWN0aW9uICYmIHRhYmxlQ29uZmlnLmxvYWRDcml0ZXJpYSAmJiB0YWJsZUNvbmZpZy5sb2FkSURGaWVsZCkge1xyXG4gICAgICAgIHRhYmxlQ29uZmlnLmxvYWRBY3Rpb24udXJsID0gYCR7dGFibGVDb25maWcubG9hZEFjdGlvbi51cmwuc3BsaXQoJy8nKVswXX0vJHt0YWJsZUNvbmZpZy5sb2FkQ3JpdGVyaWF9LyR7dXBkYXRlZERldGFpbHNDb25maWcuZGV0YWlsc1t0YWJsZUNvbmZpZy5sb2FkSURGaWVsZF19YDtcclxuXHJcbiAgICAgICAgY29uc29sZS5sb2coXCJUcmFuc2Zvcm1lZFwiLCB0YWJsZUNvbmZpZy5sb2FkQWN0aW9uLnVybCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJOT1QgVHJhbnNmb3JtZWRcIik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG5cclxuICAgIHJldHVybiB1cGRhdGVkRGV0YWlsc0NvbmZpZztcclxuICB9XHJcblxyXG5cclxuICBzdGF0aWMgaW5pdGlhbGl6ZUNvbmZpZ3MoZGV0YWlsc0NvbmZpZzogRGV0YWlsc0RpYWxvZ0NvbmZpZykge1xyXG4gICAgY29uc3QgdGFibGVDb25maWcgPSBkZXRhaWxzQ29uZmlnLnRhYmxlQ29uZmlnO1xyXG4gICAgY29uc3QgdGFibGVDb25maWdzID0gZGV0YWlsc0NvbmZpZy50YWJsZUNvbmZpZ3M7XHJcbiAgICBjb25zdCBmb3JtQ29uZmlnID0gZGV0YWlsc0NvbmZpZy5mb3JtQ29uZmlnO1xyXG4gICAgY29uc3Qgc3RlcENvbmZpZyA9IGRldGFpbHNDb25maWcuc3RlcENvbmZpZztcclxuICAgIGNvbnN0IGJ1dHRvbnMgPSBkZXRhaWxzQ29uZmlnLmJ1dHRvbnM7XHJcbiAgICBmb3JtQ29uZmlnLm1vZGUgPSBmb3JtQ29uZmlnLm1vZGUgPz8gXCJ2aWV3XCI7XHJcbiAgICByZXR1cm4geyB0YWJsZUNvbmZpZywgdGFibGVDb25maWdzLCBmb3JtQ29uZmlnLCBzdGVwQ29uZmlnLCBidXR0b25zIH07XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgc2V0SGVyb1ZhbHVlKGRldGFpbHNDb25maWc6IERldGFpbHNEaWFsb2dDb25maWcsIGRldGFpbHM6IGFueSkge1xyXG5cclxuICAgIC8vIGNvbnNvbGUubG9nKGRldGFpbHNDb25maWcpXHJcblxyXG4gICAgaWYgKChkZXRhaWxzQ29uZmlnLmZvcm1Db25maWcubW9kZSA9PSBcImNyZWF0ZVwiICApICYmIGRldGFpbHNDb25maWcuaGVyb0ZpZWxkICYmIGRldGFpbHNDb25maWcuaGVyb1ZhbHVlKSB7XHJcbiAgICAgIGRldGFpbHNbZGV0YWlsc0NvbmZpZy5oZXJvRmllbGRdID0gZGV0YWlsc0NvbmZpZy5oZXJvVmFsdWU7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICAvLyBpZiAoZGV0YWlsc0NvbmZpZy5jb25maWcubW9kZSAhPSBcImNyZWF0ZVwiICYmIGRldGFpbHNDb25maWcuaGVyb0ZpZWxkKSB7XHJcbiAgICAvLyAgIGRldGFpbHNDb25maWcuaGVyb1ZhbHVlID0gZGV0YWlsc1tkZXRhaWxzQ29uZmlnLmhlcm9GaWVsZF07XHJcbiAgICAvLyB9XHJcblxyXG5cclxuICAgIC8vIGNvbnNvbGUubG9nKGRldGFpbHNDb25maWcpXHJcbiAgfVxyXG5cclxuICBzdGF0aWMgaGFuZGxlRm9ybU1vZGUoZGV0YWlsc0NvbmZpZzogRGV0YWlsc0RpYWxvZ0NvbmZpZywgZm9ybUNvbmZpZzogRm9ybUNvbmZpZywpIHtcclxuICAgIGxldCBkZXRhaWxzO1xyXG4gICAgbGV0IGFjdGlvbjtcclxuICAgIGxldCBsb2FkQnlBY3Rpb24gPSBmYWxzZTtcclxuXHJcbiAgICBpZiAoZm9ybUNvbmZpZy5tb2RlID09PSBcImNyZWF0ZVwiKSB7XHJcblxyXG4gICAgICBkZXRhaWxzID0gQ29yZS5nZW5lcmF0ZU9iamVjdChmb3JtQ29uZmlnLmZpZWxkcyk7XHJcblxyXG4gICAgICAvLyB0aGlzLnNldEhlcm9WYWx1ZShkZXRhaWxzQ29uZmlnLCBkZXRhaWxzKTtcclxuXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsZXQgcmVzcCA9IHRoaXMubG9hZERldGFpbHNEYXRhKGRldGFpbHNDb25maWcsIGZvcm1Db25maWcpO1xyXG4gICAgICBkZXRhaWxzID0gcmVzcC5kZXRhaWxzO1xyXG5cclxuICAgICAgYWN0aW9uID0gcmVzcC5hY3Rpb247XHJcbiAgICAgIGxvYWRCeUFjdGlvbiA9IHJlc3AubG9hZEJ5QWN0aW9uO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB7IGRldGFpbHMsIGxvYWRCeUFjdGlvbiwgYWN0aW9uIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBsb2FkRGV0YWlsc0RhdGEoZGV0YWlsc0NvbmZpZzogRGV0YWlsc0RpYWxvZ0NvbmZpZywgZm9ybUNvbmZpZzogRm9ybUNvbmZpZykge1xyXG5cclxuICAgIGxldCBkZXRhaWxzO1xyXG4gICAgbGV0IGFjdGlvbjtcclxuICAgIGxldCBsb2FkQnlBY3Rpb24gPSBmYWxzZTtcclxuXHJcblxyXG4gICAgLy9DaG9vc2Ugc291cmNlXHJcbiAgICBpZiAoZGV0YWlsc0NvbmZpZy5kZXRhaWxzU291cmNlID09IERldGFpbHNTb3VyY2UuUm93KSB7XHJcblxyXG4gICAgICBjb25zb2xlLmxvZyhcIkRhdGEgZnJvbSBEZXRhaWxzIC0gUm93IG9wdGlvblwiKVxyXG4gICAgICBkZXRhaWxzID0gZGV0YWlsc0NvbmZpZy5kZXRhaWxzO1xyXG5cclxuICAgIH0gZWxzZSBpZiAoZGV0YWlsc0NvbmZpZy5kZXRhaWxzU291cmNlID09IERldGFpbHNTb3VyY2UuVXJsKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiRGF0YSBmcm9tIFVybCBvcHRpb25cIilcclxuICAgICAgYWN0aW9uID0gdGhpcy5sb2FkRGV0YWlsc0Zyb21VcmwoZGV0YWlsc0NvbmZpZywgZm9ybUNvbmZpZyk7XHJcbiAgICAgIGxvYWRCeUFjdGlvbiA9IHRydWU7XHJcblxyXG4gICAgfSBlbHNlIHtcclxuXHJcbiAgICAgIC8vbmV3IGxvZ2ljXHJcbiAgICAgIGlmIChmb3JtQ29uZmlnLmxvYWRBY3Rpb24pe1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiRGF0YSBmcm9tIFVybCAtIEd1ZXNzZWRcIik7XHJcbiAgICAgICAgICBhY3Rpb24gPSB0aGlzLmxvYWREZXRhaWxzRnJvbVVybChkZXRhaWxzQ29uZmlnLCBmb3JtQ29uZmlnKTtcclxuICAgICAgICAgIGxvYWRCeUFjdGlvbiA9IHRydWU7XHJcblxyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKFwiRGF0YSBmcm9tIERldGFpbHMgLSBHdWVzc2VkXCIpO1xyXG4gICAgICAgICAgZGV0YWlscyA9IGRldGFpbHNDb25maWcuZGV0YWlscztcclxuICAgICAgfVxyXG5cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4geyBkZXRhaWxzLCBsb2FkQnlBY3Rpb24sIGFjdGlvbiB9O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgbG9hZERldGFpbHNGcm9tVXJsKGRldGFpbHNDb25maWc6IERldGFpbHNEaWFsb2dDb25maWcsIGZvcm1Db25maWc6IEZvcm1Db25maWcpIHtcclxuICAgIGxldCBhY3Rpb247XHJcblxyXG4gICAgaWYgKGZvcm1Db25maWcubG9hZEFjdGlvbikge1xyXG5cclxuICAgICAgaWYgKGRldGFpbHNDb25maWcuaGVyb0ZpZWxkICYmIGRldGFpbHNDb25maWcuZGV0YWlscykge1xyXG5cclxuICAgICAgICBjb25zb2xlLmxvZyhcIkRldGFpbHNDb25maWcgSGVybyBJRCBGaWVsZCBcIiArIGRldGFpbHNDb25maWcuaGVyb0ZpZWxkKTtcclxuICAgICAgICBhY3Rpb24gPSB7IHVybDogYCR7Zm9ybUNvbmZpZy5sb2FkQWN0aW9uLnVybH0vJHtkZXRhaWxzQ29uZmlnLmRldGFpbHNbZGV0YWlsc0NvbmZpZy5oZXJvRmllbGRdfWAgfTtcclxuXHJcbiAgICAgIH0gZWxzZSBpZiAoZm9ybUNvbmZpZy5oZXJvRmllbGQgJiYgZGV0YWlsc0NvbmZpZy5kZXRhaWxzKSB7XHJcblxyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiRm9ybUNvbmZpZyBIZXJvIElEIEZpZWxkIFwiICsgZm9ybUNvbmZpZy5oZXJvRmllbGQpO1xyXG4gICAgICAgIGFjdGlvbiA9IHsgdXJsOiBgJHtmb3JtQ29uZmlnLmxvYWRBY3Rpb24udXJsfS8ke2RldGFpbHNDb25maWcuZGV0YWlsc1tmb3JtQ29uZmlnLmhlcm9GaWVsZF19YCB9O1xyXG5cclxuICAgICAgfSBlbHNlIGlmIChkZXRhaWxzQ29uZmlnLmhlcm9WYWx1ZSkge1xyXG5cclxuICAgICAgICBjb25zb2xlLmxvZyhcIkRlZmluZWQgSGVybyBWYWx1ZSBcIiArIGRldGFpbHNDb25maWcuaGVyb1ZhbHVlKTtcclxuICAgICAgICBhY3Rpb24gPSB7IHVybDogYCR7Zm9ybUNvbmZpZy5sb2FkQWN0aW9uLnVybH0vJHtkZXRhaWxzQ29uZmlnLmhlcm9WYWx1ZX1gIH07XHJcblxyXG4gICAgICB9XHJcbiAgICAgIGVsc2V7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJ1cmwgc291cmNlIGZhaWxlZCA6IHNldHVwIGhlcm8gZmllbGQgb3IgaGVybyB2YWx1ZVwiKTtcclxuICAgICAgfVxyXG5cclxuICAgIH1lbHNle1xyXG4gICAgICBjb25zb2xlLmxvZyhcIk5vIGxvYWQgYWN0aW9uIHNldFwiKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gYWN0aW9uO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIHNldEZpbGVGaWVsZChmb3JtQ29uZmlnOiBGb3JtQ29uZmlnKSB7XHJcbiAgICByZXR1cm4gZm9ybUNvbmZpZy5maWVsZHMuZmluZCh4ID0+IHgudHlwZSA9PT0gJ2ZpbGUnKTtcclxuICB9XHJcblxyXG5cclxuICBzdGF0aWMgc2V0dXBCdXR0b25zKGZvcm1Db25maWc6IEZvcm1Db25maWcsIGJ1dHRvbnM6IGFueSkge1xyXG4gICAgbGV0IGV4dHJhQnV0dG9ucywgY3JlYXRlQnV0dG9uLCBlZGl0QnV0dG9uLCBkZWxldGVCdXR0b247XHJcblxyXG4gICAgaWYgKGJ1dHRvbnMpIHtcclxuICAgICAgaWYgKGZvcm1Db25maWcubW9kZSAhPT0gXCJjcmVhdGVcIikge1xyXG4gICAgICAgIGV4dHJhQnV0dG9ucyA9IGJ1dHRvbnMuZmlsdGVyKHggPT4geC5uYW1lICE9PSBcImNyZWF0ZVwiICYmIHgubmFtZSAhPT0gXCJlZGl0XCIgJiYgeC5uYW1lICE9PSBcImRlbGV0ZVwiICYmIHgubmFtZSAhPT0gXCJ2aWV3XCIgJiYgeC5pbkRpYWxvZyk7XHJcbiAgICAgIH1cclxuICAgICAgY3JlYXRlQnV0dG9uID0gYnV0dG9ucy5maW5kKHggPT4geC5uYW1lID09PSBcImNyZWF0ZVwiKTtcclxuICAgICAgZWRpdEJ1dHRvbiA9IGJ1dHRvbnMuZmluZCh4ID0+IHgubmFtZSA9PT0gXCJlZGl0XCIpO1xyXG4gICAgICBkZWxldGVCdXR0b24gPSBidXR0b25zLmZpbmQoeCA9PiB4Lm5hbWUgPT09IFwiZGVsZXRlXCIpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHsgZXh0cmFCdXR0b25zLCBjcmVhdGVCdXR0b24sIGVkaXRCdXR0b24sIGRlbGV0ZUJ1dHRvbiB9O1xyXG4gIH1cclxuXHJcblxyXG5cclxuXHJcbn1cclxuXHJcblxyXG4iXX0=
|
|
531
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGluQ29yZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rpbi1zcGEvc3JjL2xpYi9jbGFzc2VzL1RpbkNvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF1QixhQUFhLEVBQXFDLE1BQU0sV0FBVyxDQUFDO0FBRWxHLE1BQU0sT0FBTyxJQUFJO0lBR1IsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHO1FBQ3pCLElBQUksR0FBRyxLQUFLLElBQUksSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLEVBQUU7WUFDM0MsT0FBTyxHQUFHLENBQUM7U0FDWjtRQUVELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUN0QixNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDbkIsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRTtnQkFDMUIsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDeEMsQ0FBQyxDQUFDLENBQUM7WUFDSCxPQUFPLE9BQU8sQ0FBQztTQUNoQjtRQUVELE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNuQixNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUM3QixPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMxQyxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFTSxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQVE7UUFDL0IsOENBQThDO1FBQzlDLE1BQU0sWUFBWSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFFbkMseURBQXlEO1FBQ3pELE1B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QUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDLENBQUM7WUFDbEQsWUFBWSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxDQUFDO1NBQ3ZEO1FBQ0QsT0FBTyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxDQUFDO0lBQ2xFLENBQUM7Q0FLRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERldGFpbHNEaWFsb2dDb25maWcsIERldGFpbHNTb3VyY2UsIEZpZWxkLCBGb3JtQ29uZmlnLCBTZWN1cml0eUNvbmZpZyB9IGZyb20gXCIuL0NsYXNzZXNcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBDb3JlIHtcclxuXHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgZGVlcENsb25lKG9iaikge1xyXG4gICAgaWYgKG9iaiA9PT0gbnVsbCB8fCB0eXBlb2Ygb2JqICE9PSAnb2JqZWN0Jykge1xyXG4gICAgICByZXR1cm4gb2JqO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChBcnJheS5pc0FycmF5KG9iaikpIHtcclxuICAgICAgY29uc3QgYXJyQ29weSA9IFtdO1xyXG4gICAgICBvYmouZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcclxuICAgICAgICBhcnJDb3B5W2luZGV4XSA9IHRoaXMuZGVlcENsb25lKGl0ZW0pO1xyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuIGFyckNvcHk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgb2JqQ29weSA9IHt9O1xyXG4gICAgT2JqZWN0LmtleXMob2JqKS5mb3JFYWNoKGtleSA9PiB7XHJcbiAgICAgIG9iakNvcHlba2V5XSA9IHRoaXMuZGVlcENsb25lKG9ialtrZXldKTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIG9iakNvcHk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIGRlZXBDbG9uZTIob2JqOiBhbnkpOiBhbnkge1xyXG4gICAgLy8gQ3JlYXRlIG5ldyBXZWFrTWFwIGZvciBlYWNoIGNsb25lIG9wZXJhdGlvblxyXG4gICAgY29uc3QgY2xvbmVWaXNpdGVkID0gbmV3IFdlYWtNYXAoKTtcclxuXHJcbiAgICAvLyBJbm5lciBmdW5jdGlvbiB0aGF0IGhhcyBhY2Nlc3MgdG8gdGhlIGNsb25lVmlzaXRlZCBtYXBcclxuICAgIGNvbnN0IGNsb25lID0gKHZhbHVlOiBhbnkpOiBhbnkgPT4ge1xyXG4gICAgICAvLyBIYW5kbGUgbnVsbCwgdW5kZWZpbmVkIGFuZCBwcmltaXRpdmVzXHJcbiAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB0eXBlb2YgdmFsdWUgIT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBDaGVjayBpZiBvYmplY3Qgd2FzIGFscmVhZHkgY2xvbmVkXHJcbiAgICAgIGlmIChjbG9uZVZpc2l0ZWQuaGFzKHZhbHVlKSkge1xyXG4gICAgICAgIHJldHVybiBjbG9uZVZpc2l0ZWQuZ2V0KHZhbHVlKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gSGFuZGxlIGFycmF5c1xyXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcclxuICAgICAgICBjb25zdCBhcnJDb3B5ID0gW107XHJcbiAgICAgICAgY2xvbmVWaXNpdGVkLnNldCh2YWx1ZSwgYXJyQ29weSk7XHJcbiAgICAgICAgdmFsdWUuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcclxuICAgICAgICAgIGFyckNvcHlbaW5kZXhdID0gY2xvbmUoaXRlbSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIGFyckNvcHk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIEhhbmRsZSBkYXRlc1xyXG4gICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBEYXRlKHZhbHVlKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gSGFuZGxlIHJlZ3VsYXIgb2JqZWN0c1xyXG4gICAgICBjb25zdCBvYmpDb3B5ID0gT2JqZWN0LmNyZWF0ZShPYmplY3QuZ2V0UHJvdG90eXBlT2YodmFsdWUpKTtcclxuICAgICAgY2xvbmVWaXNpdGVkLnNldCh2YWx1ZSwgb2JqQ29weSk7XHJcblxyXG4gICAgICBPYmplY3QuZW50cmllcyh2YWx1ZSkuZm9yRWFjaCgoW2tleSwgdmFsXSkgPT4ge1xyXG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodmFsdWUsIGtleSkpIHtcclxuICAgICAgICAgIG9iakNvcHlba2V5XSA9IGNsb25lKHZhbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHJldHVybiBvYmpDb3B5O1xyXG4gICAgfTtcclxuXHJcbiAgICAvLyBTdGFydCB0aGUgY2xvbmUgb3BlcmF0aW9uIHdpdGggYSBmcmVzaCBXZWFrTWFwXHJcbiAgICByZXR1cm4gY2xvbmUob2JqKTtcclxuICB9XHJcblxyXG5cclxuXHJcbiAgcHVibGljIHN0YXRpYyBjYW1lbFRvV29yZHModmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBpZiAoIXZhbHVlKSByZXR1cm4gdmFsdWU7XHJcblxyXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycpIHJldHVybiB2YWx1ZTtcclxuXHJcbiAgICBpZiAodmFsdWUubGVuZ3RoID09IDApIHJldHVybiB2YWx1ZTtcclxuXHJcbiAgICBsZXQgdiA9IHZhbHVlLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgdmFsdWUuc3Vic3RyaW5nKDEpXHJcbiAgICByZXR1cm4gdi5yZXBsYWNlKC8oW0EtWl0rKSooW0EtWl1bYS16XSkvZywgXCIkMSAkMlwiKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgZ2VuZXJhdGVPYmplY3QoZmllbGRzOiBGaWVsZFtdKSB7XHJcblxyXG4gICAgbGV0IGRhdGEgPSB7fTtcclxuICAgIGZpZWxkcy5mb3JFYWNoKGZpZWxkID0+IHtcclxuXHJcbiAgICAgIGlmIChmaWVsZC50eXBlICE9ICdzZWN0aW9uJyAmJiBmaWVsZC50eXBlICE9ICdibGFuaycgKXtcclxuICAgICAgICBkYXRhW2ZpZWxkLm5hbWVdID0gdGhpcy5nZXRJbml0aWFsVmFsdWUoZmllbGQpO1xyXG4gICAgICB9XHJcblxyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gY29uc29sZS5sb2coZGF0YSlcclxuXHJcbiAgICByZXR1cm4gZGF0YTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgcmVzZXRPYmplY3QoZmllbGRzOiBGaWVsZFtdLCBkYXRhKSB7XHJcblxyXG4gICAgZmllbGRzLmZvckVhY2goZmllbGQgPT4ge1xyXG4gICAgICBpZiAoZmllbGQudHlwZSAhPSAnc2VjdGlvbicgJiYgZmllbGQudHlwZSAhPSAnYmxhbmsnKSB7XHJcbiAgICAgICAgZGF0YVtmaWVsZC5uYW1lXSA9IHRoaXMuZ2V0SW5pdGlhbFZhbHVlKGZpZWxkKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBjaGVja1NlY3VyaXR5KHNlY3VyaXR5OiBTZWN1cml0eUNvbmZpZywgY3VycmVudFJvbGU6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCFzZWN1cml0eSkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoc2VjdXJpdHkuZGVueT8uc29tZShyb2xlID0+IGN1cnJlbnRSb2xlW3JvbGUubmFtZV0pKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXNlY3VyaXR5LmFsbG93IHx8IHNlY3VyaXR5LmFsbG93Lmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gc2VjdXJpdHkuYWxsb3cuc29tZShyb2xlID0+IGN1cnJlbnRSb2xlW3JvbGUubmFtZV0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBjaGVja0Zvcm1BY2Nlc3MoY29uZmlnOiBGb3JtQ29uZmlnLCBjdXJyZW50Um9sZTogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5jaGVja1NlY3VyaXR5KGNvbmZpZz8uc2VjdXJpdHksIGN1cnJlbnRSb2xlKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgdGVzdFZpc2libGUoY29uZmlnOiBGb3JtQ29uZmlnLCBkYXRhLCBmaWVsZDogRmllbGQsIGN1cnJlbnRSb2xlOiBhbnkpOiBib29sZWFuIHtcclxuXHJcbiAgICBpZiAoKGZpZWxkLnR5cGUgPT0gJ3NlY3Rpb24nIHx8IGZpZWxkLnR5cGUgPT0gJ2JsYW5rJykgJiYgZmllbGQuaGlkZGVuKSByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgLy8gRmlyc3QgY2hlY2sgZm9ybSBsZXZlbCBzZWN1cml0eSBpZiBleGlzdHNcclxuICAgIGlmIChjb25maWcuc2VjdXJpdHkgJiYgIXRoaXMuY2hlY2tGb3JtQWNjZXNzKGNvbmZpZywgY3VycmVudFJvbGUpKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoZmllbGQuc2VjdGlvbikge1xyXG4gICAgICBjb25zdCBzZWN0aW9uRmllbGQgPSBjb25maWcuZmllbGRzLmZpbmQoZiA9PiBmLnR5cGUgPT09ICdzZWN0aW9uJyAmJiBmLm5hbWUgPT09IGZpZWxkLnNlY3Rpb24pO1xyXG4gICAgICBpZiAoc2VjdGlvbkZpZWxkKSB7XHJcbiAgICAgICAgLy8gSW5oZXJpdCBzZWN0aW9uJ3MgY29uZGl0aW9uc1xyXG4gICAgICAgIGlmICghdGhpcy5jaGVja1NlY3VyaXR5KHNlY3Rpb25GaWVsZC5zZWN1cml0eUNvbmZpZywgY3VycmVudFJvbGUpKSB7XHJcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGlmIChzZWN0aW9uRmllbGQuaGlkZGVuKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgaWYgKHNlY3Rpb25GaWVsZC5oaWRlT25DcmVhdGUgJiYgY29uZmlnLm1vZGUgPT0gJ2NyZWF0ZScpIHJldHVybiBmYWxzZTtcclxuICAgICAgICBpZiAoc2VjdGlvbkZpZWxkLmhpZGVPbkV4aXN0cyAmJiBjb25maWcubW9kZSAhPSAnY3JlYXRlJykgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIGlmIChzZWN0aW9uRmllbGQuaGlkZGVuQ29uZGl0aW9uICYmIHNlY3Rpb25GaWVsZC5oaWRkZW5Db25kaXRpb24oZGF0YSkpIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIFRoZW4gY2hlY2sgZmllbGQgbGV2ZWwgc2VjdXJpdHkgaWYgZXhpc3RzXHJcbiAgICBpZiAoIXRoaXMuY2hlY2tTZWN1cml0eShmaWVsZC5zZWN1cml0eUNvbmZpZywgY3VycmVudFJvbGUpKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoZmllbGQuaGlkZGVuKSByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgaWYgKGNvbmZpZy5tb2RlID09ICdjcmVhdGUnICYmIGZpZWxkLmhpZGVPbkNyZWF0ZSkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGlmIChjb25maWcubW9kZSAhPSAnY3JlYXRlJyAmJiBmaWVsZC5oaWRlT25FeGlzdHMpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuXHJcblxyXG4gICAgaWYgKGZpZWxkLmhpZGRlbkNvbmRpdGlvbikge1xyXG4gICAgICByZXR1cm4gIWZpZWxkLmhpZGRlbkNvbmRpdGlvbihkYXRhKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgdGVzdFJlYWRPbmx5KGNvbmZpZzogRm9ybUNvbmZpZywgZGF0YSwgZmllbGQ6IEZpZWxkKTogYm9vbGVhbiB7XHJcbiAgICAvLyBEZWZhdWx0IHJlYWRvbmx5IGNvbmRpdGlvbnNcclxuICAgIGlmIChjb25maWcubW9kZSA9PSAnY3JlYXRlJykge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGZpZWxkLnJlYWRvbmx5KSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChjb25maWcubW9kZSA9PSAndmlldycpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQ2hlY2sgc2VjdGlvbiByZWFkb25seSBjb25kaXRpb24gZmlyc3RcclxuICAgIGlmIChmaWVsZC5zZWN0aW9uKSB7XHJcbiAgICAgIGNvbnN0IHNlY3Rpb25GaWVsZCA9IGNvbmZpZy5maWVsZHMuZmluZChmID0+IGYudHlwZSA9PT0gJ3NlY3Rpb24nICYmIGYubmFtZSA9PT0gZmllbGQuc2VjdGlvbik7XHJcbiAgICAgIGlmIChzZWN0aW9uRmllbGQ/LnJlYWRvbmx5Q29uZGl0aW9uICYmIHNlY3Rpb25GaWVsZC5yZWFkb25seUNvbmRpdGlvbihkYXRhKSkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQ2hlY2sgZmllbGQgbGV2ZWwgcmVhZG9ubHkgY29uZGl0aW9uIGxhc3RcclxuICAgIGlmIChmaWVsZC5yZWFkb25seUNvbmRpdGlvbikge1xyXG4gICAgICByZXR1cm4gZmllbGQucmVhZG9ubHlDb25kaXRpb24oZGF0YSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyB0ZXN0VmlzaWJsZUhlYWRlckJ1dHRvbihkYXRhLCBidG4pOiBib29sZWFuIHtcclxuXHJcbiAgICBpZiAoYnRuLmhpZGRlbkNvbmRpdGlvbikge1xyXG4gICAgICByZXR1cm4gIWJ0bi5oaWRkZW5Db25kaXRpb24oZGF0YSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIGdldFZpc2libGVTdWJmaWVsZHMoY29uZmlnOiBGb3JtQ29uZmlnLCBkYXRhLCBmaWVsZDogRmllbGQsIGN1cnJlbnRSb2xlOiBhbnkgKTogRmllbGRbXSB7XHJcbiAgICByZXR1cm4gZmllbGQuc3ViZmllbGRzPy5maWx0ZXIoc3ViZmllbGQgPT4gQ29yZS50ZXN0VmlzaWJsZShjb25maWcsIGRhdGEsIHN1YmZpZWxkLGN1cnJlbnRSb2xlICkpIHx8IFtdO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyB2YWxpZGF0ZU9iamVjdChmaWVsZHM6IEZpZWxkW10sIGRhdGEpOiBzdHJpbmcge1xyXG5cclxuICAgIGNvbnNvbGUubG9nKFwiVmFsaWRhdGlvbnNcIilcclxuXHJcbiAgICBmb3IgKGxldCBmaWVsZCBvZiBmaWVsZHMpIHtcclxuXHJcbiAgICAgIGlmIChmaWVsZC50eXBlID09ICdmaWxlJyB8fCBmaWVsZC50eXBlID09ICdmaWxlLXZpZXcnIHx8IGZpZWxkLnR5cGUgPT0gJ2JsYW5rJyB8fCBmaWVsZC50eXBlID09ICdzZWN0aW9uJyApIGNvbnRpbnVlXHJcblxyXG5cclxuXHJcbiAgICAgIGxldCBuYW1lID0gZmllbGQuYWxpYXMgPz8gdGhpcy5jYW1lbFRvV29yZHMoZmllbGQubmFtZSk7XHJcbiAgICAgIGxldCBkID0gZGF0YVtmaWVsZC5uYW1lXTtcclxuXHJcblxyXG4gICAgICBjb25zb2xlLmxvZyhuYW1lICsgJyAnICsgZClcclxuXHJcbiAgICAgIGlmIChmaWVsZC5yZXF1aXJlZCl7XHJcblxyXG4gICAgICAgIGlmIChkID09IHVuZGVmaW5lZCB8fCBkID09IG51bGwpIHJldHVybiBgJHtuYW1lfSBpcyByZXF1aXJlZGA7XHJcblxyXG4gICAgICAgIGlmIChmaWVsZC50eXBlID09ICd0ZXh0Jyl7XHJcblxyXG4gICAgICAgICAgaWYgKGQgPT0gJycpIHJldHVybiBgUGxlYXNlIGVudGVyICR7bmFtZX1gO1xyXG5cclxuICAgICAgICAgIGlmIChmaWVsZC5taW4gJiYgZC5sZW5ndGggPCBmaWVsZC5taW4pIHJldHVybiBgTWluaW11bSAgJHtuYW1lfSBsZW5ndGggaXMgJHtmaWVsZC5taW59YFxyXG5cclxuICAgICAgICAgIGlmIChmaWVsZC5tYXggJiYgZC5sZW5ndGggPiBmaWVsZC5tYXgpIHJldHVybiBgTWF4aW11bSAke25hbWV9IGxlbmd0aCBpcyAke2ZpZWxkLm1heH1gXHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChmaWVsZC50eXBlID09ICdudW1iZXInIHx8IGZpZWxkLnR5cGUgPT0gJ21vbmV5JyB8fCBmaWVsZC50eXBlID09ICdkYXRlJyl7XHJcblxyXG4gICAgICAgICAgaWYgKGZpZWxkLm1pbiAmJiBkIDwgZmllbGQubWluKSByZXR1cm4gYE1pbmltdW0gICR7bmFtZX0gaXMgJHtmaWVsZC5taW59YFxyXG5cclxuICAgICAgICAgIGlmIChmaWVsZC5tYXggJiYgZCA+IGZpZWxkLm1heCkgcmV0dXJuIGBNYXhpbXVtICR7bmFtZX0gaXMgJHtmaWVsZC5tYXh9YFxyXG5cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoZmllbGQudHlwZSA9PSAnc2VsZWN0Jykge1xyXG5cclxuICAgICAgICAgIGlmICh0eXBlb2YoZCkgPT0gJ3N0cmluZycgJiYgZCA9PSAnJykgcmV0dXJuIGBQbGVhc2Ugc2VsZWN0ICR7bmFtZX1gO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH1cclxuXHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiAnJztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgZ2V0SW5pdGlhbFZhbHVlKGZpZWxkOiBGaWVsZCkge1xyXG5cclxuICAgIGlmIChmaWVsZC5kZWZhdWx0VmFsdWUpe1xyXG5cclxuICAgICAgaWYgKChmaWVsZC50eXBlID09ICdkYXRlJyB8fCBmaWVsZC50eXBlID09ICdkYXRldGltZScpICYmIGZpZWxkLmRlZmF1bHRWYWx1ZSA9PSAnbm93JykgcmV0dXJuIHRoaXMubm93RGF0ZSh0cnVlKTtcclxuXHJcbiAgICAgIHJldHVybiBmaWVsZC5kZWZhdWx0VmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGZpZWxkLnR5cGUgPT0gJ3NlbGVjdCcgJiYgKGZpZWxkLmhpZGRlbiB8fCBmaWVsZC5oaWRlT25DcmVhdGUpKSByZXR1cm4gMDtcclxuXHJcbiAgICBzd2l0Y2ggKGZpZWxkLnR5cGUpIHtcclxuICAgICAgY2FzZSAndGV4dCc6XHJcbiAgICAgICAgcmV0dXJuICcnO1xyXG4gICAgICBjYXNlICdtb25leSc6XHJcbiAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgIGNhc2UgJ251bWJlcic6XHJcbiAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgIGNhc2UgJ2RhdGUnOlxyXG4gICAgICAgIHJldHVybiB0aGlzLm5vd0RhdGUodHJ1ZSk7XHJcbiAgICAgIGNhc2UgJ2NoZWNrYm94JzpcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIGNhc2UgJ3NlbGVjdCc6XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgZ2V0Q2xvbmUoeCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZGVlcENsb25lMih4KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgZ2V0TnVtYmVyKHZhbHVlOiBzdHJpbmcpIHtcclxuXHJcbiAgICBpZiAodmFsdWUgPT0gbnVsbCB8fCB2YWx1ZSA9PSBcIlwiKSB7XHJcbiAgICAgIHJldHVybiAwO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IG9ubHlOdW1iZXJzID0gdmFsdWUucmVwbGFjZSgvW15cXGQuLV0vZywgJycpO1xyXG4gICAgcmV0dXJuIG9ubHlOdW1iZXJzXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIGdldEZpcnN0RGF5T2ZNb250aCgpIHtcclxuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgcmV0dXJuIG5ldyBEYXRlKGRhdGUuZ2V0RnVsbFllYXIoKSwgZGF0ZS5nZXRNb250aCgpLCAxKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgZW1haWxJc1ZhbGlkKGVtYWlsKSB7XHJcbiAgICAvLyByZXR1cm4gL1xcUytAXFxTK1xcLlxcUysvLnRlc3QoZW1haWwpXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIGlzVmFsaWRVTkNQYXRoKHBhdGg6IHN0cmluZykge1xyXG4gICAgLy8gcmV0dXJuIC9cXFxcXFxcXChbYS16QS1aMC05Xy4k4pePLV0rKVxcXFwoW2EtekEtWjAtOV8uJOKXjy1dKykuKi8udGVzdChwYXRoKVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBpc1ZhbGlkRGF0ZShkYXRlKSB7XHJcblxyXG4gICAgdmFyIHBhcnNlZERhdGUgPSBEYXRlLnBhcnNlKGRhdGUpO1xyXG5cclxuXHJcbiAgICBpZiAoaXNOYU4oZGF0ZSkgJiYgIWlzTmFOKHBhcnNlZERhdGUpKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgaXNWYWxpZEVtYWlsTGlzdChsaXN0OiBzdHJpbmcpIHtcclxuXHJcbiAgICBpZiAobGlzdC5pbmNsdWRlcyhcIjtcIikpIHtcclxuXHJcbiAgICAgIGxldCBlbWFpbHMgPSBsaXN0LnNwbGl0KFwiO1wiKVxyXG5cclxuICAgICAgZm9yICh2YXIgZW1haWwgb2YgZW1haWxzKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZW1haWxJc1ZhbGlkKGVtYWlsKSA9PSBmYWxzZSkge1xyXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuXHJcbiAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgaWYgKHRoaXMuZW1haWxJc1ZhbGlkKGxpc3QpID09IGZhbHNlKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0cnVlO1xyXG5cclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgbnVsbERhdGUgPSBcIjAxIEphbiAxOTY5XCJcclxuXHJcbiAgcHVibGljIHN0YXRpYyBpc051bWJlcih2YWx1ZTogc3RyaW5nIHwgbnVtYmVyKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gKCh2YWx1ZSAhPSBudWxsKSAmJlxyXG4gICAgICAodmFsdWUgIT09ICcnKSAmJlxyXG4gICAgICAhaXNOYU4oTnVtYmVyKHZhbHVlLnRvU3RyaW5nKCkpKSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIGdldERpZmYoc3RhcnREYXRlLCBlbmREYXRlID0gRGF0ZSgpKSB7XHJcblxyXG4gICAgdmFyIGV2ZW50U3RhcnRUaW1lID0gbmV3IERhdGUoc3RhcnREYXRlKTtcclxuICAgIHZhciBldmVudEVuZFRpbWUgPSBuZXcgRGF0ZShlbmREYXRlKTtcclxuICAgIHZhciBtaWxsaXNlY29uZHMgPSBldmVudEVuZFRpbWUudmFsdWVPZigpIC0gZXZlbnRTdGFydFRpbWUudmFsdWVPZigpO1xyXG5cclxuICAgIGZ1bmN0aW9uIG51bWJlckVuZGluZyhudW1iZXI6IG51bWJlcikge1xyXG5cclxuICAgICAgaWYgKG51bWJlci50b0ZpeGVkKCkgPT0gJzEnKSB7XHJcbiAgICAgICAgcmV0dXJuICcnXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuICdzJztcclxuICAgICAgfVxyXG5cclxuICAgIH1cclxuXHJcbiAgICB2YXIgbWludXRlcyA9IChtaWxsaXNlY29uZHMgLyAoMTAwMCAqIDYwKSk7XHJcblxyXG4gICAgdmFyIGhvdXJzOiBudW1iZXIgPSAobWlsbGlzZWNvbmRzIC8gKDEwMDAgKiA2MCAqIDYwKSk7XHJcblxyXG4gICAgdmFyIGRheXMgPSAobWlsbGlzZWNvbmRzIC8gKDEwMDAgKiA2MCAqIDYwICogMjQpKTtcclxuXHJcbiAgICB2YXIgd2Vla3M6IG51bWJlciA9IChtaWxsaXNlY29uZHMgLyAoMTAwMCAqIDYwICogNjAgKiAyNCAqIDcpKTtcclxuXHJcbiAgICB2YXIgbW9udGhzID0gKG1pbGxpc2Vjb25kcyAvICgxMDAwICogNjAgKiA2MCAqIDI0ICogNyAqIDQpKTtcclxuXHJcbiAgICB2YXIgeWVhcnMgPSAobWlsbGlzZWNvbmRzIC8gKDEwMDAgKiA2MCAqIDYwICogMjQgKiAzNjUpKTtcclxuXHJcblxyXG4gICAgaWYgKHllYXJzID49IDEpIHtcclxuXHJcbiAgICAgIHJldHVybiB5ZWFycy50b0ZpeGVkKCkgKyAnIHllYXInICsgbnVtYmVyRW5kaW5nKHllYXJzKTtcclxuXHJcbiAgICB9IGVsc2UgaWYgKG1vbnRocyA+PSAxKSB7XHJcblxyXG4gICAgICByZXR1cm4gbW9udGhzLnRvRml4ZWQoKSArICcgbW9udGgnICsgbnVtYmVyRW5kaW5nKG1vbnRocyk7XHJcblxyXG4gICAgfSBlbHNlIGlmICh3ZWVrcyA+PSAxKSB7XHJcblxyXG4gICAgICByZXR1cm4gd2Vla3MudG9GaXhlZCgpICsgJyB3ZWVrJyArIG51bWJlckVuZGluZyh3ZWVrcyk7XHJcblxyXG4gICAgfSBlbHNlIGlmIChkYXlzID49IDEpIHtcclxuXHJcbiAgICAgIHJldHVybiBkYXlzLnRvRml4ZWQoKSArICcgZGF5JyArIG51bWJlckVuZGluZyhkYXlzKTtcclxuXHJcbiAgICB9IGVsc2UgaWYgKGhvdXJzID49IDEpIHtcclxuXHJcbiAgICAgIHJldHVybiBob3Vycy50b0ZpeGVkKCkgKyAnIGhvdXInICsgbnVtYmVyRW5kaW5nKGhvdXJzKTtcclxuXHJcbiAgICB9IGVsc2UgaWYgKG1pbnV0ZXMgPj0gMSkge1xyXG5cclxuICAgICAgcmV0dXJuIG1pbnV0ZXMudG9GaXhlZCgpICsgJyBtaW51dGUnICsgbnVtYmVyRW5kaW5nKG1pbnV0ZXMpO1xyXG5cclxuICAgIH0gZWxzZSBpZiAobWlsbGlzZWNvbmRzID49ICgtMTAwMCAqIDYwKSkge1xyXG5cclxuICAgICAgcmV0dXJuICdhIG1pbnV0ZSc7XHJcblxyXG4gICAgfSBlbHNlIHtcclxuXHJcbiAgICAgIHJldHVybiAnTi9BJztcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuXHJcbiAgcHVibGljIHN0YXRpYyBub3dEYXRlKE5vVGltZTogYm9vbGVhbiA9IGZhbHNlKSB7XHJcblxyXG4gICAgaWYgKE5vVGltZSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5nZXRGb3JtYXRlZERhdGUoRGF0ZSgpLCB0cnVlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmdldEZvcm1hdGVkRGF0ZShEYXRlKCkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBnZXRGb3JtYXRlZERhdGUoZGF0ZVN0cmluZzogc3RyaW5nLCBOb1RpbWU6IGJvb2xlYW4gPSBmYWxzZSkge1xyXG5cclxuICAgIGxldCBkOiBEYXRlID0gbmV3IERhdGUoZGF0ZVN0cmluZyk7XHJcbiAgICBkLnNldEhvdXJzKGQuZ2V0SG91cnMoKSArIDIpO1xyXG5cclxuICAgIGlmIChOb1RpbWUgPT0gdHJ1ZSkge1xyXG4gICAgICByZXR1cm4gZC50b0lTT1N0cmluZygpLnNwbGl0KCdUJylbMF07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gZC50b0lTT1N0cmluZygpLnNwbGl0KCcuJylbMF07XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBnZXRGb3JtYXRlZERhdGUyKGQgOiBEYXRlLCBOb1RpbWU6IGJvb2xlYW4gPSBmYWxzZSkge1xyXG5cclxuXHJcbiAgICBkLnNldEhvdXJzKGQuZ2V0SG91cnMoKSArIDIpO1xyXG5cclxuICAgIGlmIChOb1RpbWUgPT0gdHJ1ZSkge1xyXG4gICAgICByZXR1cm4gZC50b0lTT1N0cmluZygpLnNwbGl0KCdUJylbMF07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gZC50b0lTT1N0cmluZygpLnNwbGl0KCcuJylbMF07XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBnZXRCdXNpbmVzc0RhdGVzQ291bnQoc3RhcnREYXRlOiBzdHJpbmcsIGVuZERhdGU6IHN0cmluZykge1xyXG4gICAgdmFyIGNvdW50ID0gMDtcclxuICAgIHZhciBfc3RhcnREYXRlID0gbmV3IERhdGUoc3RhcnREYXRlKTtcclxuICAgIHZhciBfZW5kRGF0ZSA9IG5ldyBEYXRlKGVuZERhdGUpO1xyXG5cclxuICAgIHZhciBjdXJEYXRlID0gX3N0YXJ0RGF0ZTtcclxuXHJcbiAgICB3aGlsZSAoY3VyRGF0ZSA8IF9lbmREYXRlKSB7XHJcbiAgICAgIHZhciBkYXlPZldlZWsgPSBjdXJEYXRlLmdldERheSgpO1xyXG4gICAgICBpZiAoIShkYXlPZldlZWsgPT0gNiB8fCBkYXlPZldlZWsgPT0gMCkpIGNvdW50Kys7XHJcbiAgICAgIGN1ckRhdGUuc2V0RGF0ZShjdXJEYXRlLmdldERhdGUoKSArIDEpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBjb3VudDtcclxuICB9XHJcblxyXG59XHJcblxyXG5cclxuZXhwb3J0IGNsYXNzIERldGFpbHNEaWFsb2dQcm9jZXNzb3Ige1xyXG5cclxuICBwdWJsaWMgc3RhdGljIHByb2Nlc3NEZXRhaWxzQ29uZmlnKGRldGFpbHNDb25maWc6IERldGFpbHNEaWFsb2dDb25maWcsIHJvdzogYW55KTogRGV0YWlsc0RpYWxvZ0NvbmZpZyB7XHJcblxyXG4gICAgY29uc3QgdXBkYXRlZERldGFpbHNDb25maWc6IERldGFpbHNEaWFsb2dDb25maWcgPSBDb3JlLmdldENsb25lKGRldGFpbHNDb25maWcpOyAvL3suLi5kZXRhaWxzQ29uZmlnfVxyXG4gICAgdXBkYXRlZERldGFpbHNDb25maWcuZGV0YWlscyA9IHJvdztcclxuXHJcblxyXG4gICAgLy9Gb3JtIENvbmZpZ1xyXG4gICAgdXBkYXRlZERldGFpbHNDb25maWcuZm9ybUNvbmZpZy5tb2RlID0gdXBkYXRlZERldGFpbHNDb25maWcubW9kZSA/PyBcInZpZXdcIjtcclxuXHJcblxyXG5cclxuICAgIGlmICh1cGRhdGVkRGV0YWlsc0NvbmZpZy5oZXJvRmllbGQgJiYgcm93KSB7XHJcbiAgICAgIHVwZGF0ZWREZXRhaWxzQ29uZmlnLmhlcm9WYWx1ZSA9IHJvd1t1cGRhdGVkRGV0YWlsc0NvbmZpZy5oZXJvRmllbGRdO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnNvbGUubG9nKFwiRGV0YWlscyBDb25maWdcIiwgdXBkYXRlZERldGFpbHNDb25maWcpO1xyXG5cclxuXHJcbiAgICAvL1RhYmxlIGNvbmZpZ3NcclxuICAgIGlmICh1cGRhdGVkRGV0YWlsc0NvbmZpZy50YWJsZUNvbmZpZykge1xyXG4gICAgICB1cGRhdGVUYWJsZUNvbmZpZyh1cGRhdGVkRGV0YWlsc0NvbmZpZy50YWJsZUNvbmZpZyk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHVwZGF0ZWREZXRhaWxzQ29uZmlnLnRhYmxlQ29uZmlncykge1xyXG4gICAgICB1cGRhdGVkRGV0YWlsc0NvbmZpZy50YWJsZUNvbmZpZ3MuZm9yRWFjaCh1cGRhdGVUYWJsZUNvbmZpZyk7XHJcbiAgICB9XHJcblxyXG4gICAgZnVuY3Rpb24gdXBkYXRlVGFibGVDb25maWcodGFibGVDb25maWcpIHtcclxuICAgICAgdGFibGVDb25maWcuaGVyb0ZpZWxkID0gdXBkYXRlZERldGFpbHNDb25maWc/Lmhlcm9GaWVsZDtcclxuICAgICAgdGFibGVDb25maWcuaGVyb1ZhbHVlID0gdXBkYXRlZERldGFpbHNDb25maWc/Lmhlcm9WYWx1ZTtcclxuICAgICAgLy8gdGFibGVDb25maWcuc2V0SGVybyA9IHVwZGF0ZWREZXRhaWxzQ29uZmlnLnNldEhlcm87XHJcbiAgICAgIHRhYmxlQ29uZmlnLnNlYXJjaENvbmZpZyA9IG51bGw7XHJcbiAgICAgIHRhYmxlQ29uZmlnLnRpbGVDb25maWcgPSBudWxsO1xyXG4gICAgICB0YWJsZUNvbmZpZy5wYXJlbnREYXRhID0gdXBkYXRlZERldGFpbHNDb25maWcuZGV0YWlscztcclxuICAgICAgdGFibGVDb25maWcuZWxldmF0aW9uID0gJ25vbmUnO1xyXG4gICAgfVxyXG5cclxuXHJcblxyXG4gICAgLy9VUkxcclxuICAgIGlmICh1cGRhdGVkRGV0YWlsc0NvbmZpZy50YWJsZUNvbmZpZykge1xyXG4gICAgICB0cmFuc2Zvcm1Mb2FkVXJsKHVwZGF0ZWREZXRhaWxzQ29uZmlnLnRhYmxlQ29uZmlnKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodXBkYXRlZERldGFpbHNDb25maWcudGFibGVDb25maWdzKSB7XHJcbiAgICAgIHVwZGF0ZWREZXRhaWxzQ29uZmlnLnRhYmxlQ29uZmlncy5mb3JFYWNoKHRyYW5zZm9ybUxvYWRVcmwpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh1cGRhdGVkRGV0YWlsc0NvbmZpZy5zdGVwQ29uZmlnPy5sb2FkQWN0aW9uKSB7XHJcbiAgICAgIHRyYW5zZm9ybVN0ZXBVcmwodXBkYXRlZERldGFpbHNDb25maWcuc3RlcENvbmZpZyk7XHJcbiAgICB9XHJcblxyXG4gICAgZnVuY3Rpb24gdHJhbnNmb3JtTG9hZFVybCh0YWJsZUNvbmZpZykge1xyXG4gICAgICBpZiAodGFibGVDb25maWcubG9hZEFjdGlvbiAmJiB0YWJsZUNvbmZpZy5sb2FkQ3JpdGVyaWEgJiYgdGFibGVDb25maWcubG9hZElERmllbGQpIHtcclxuICAgICAgICB0YWJsZUNvbmZpZy5sb2FkQWN0aW9uLnVybCA9IGAke3RhYmxlQ29uZmlnLmxvYWRBY3Rpb24udXJsLnNwbGl0KCcvJylbMF19LyR7dGFibGVDb25maWcubG9hZENyaXRlcmlhfS8ke3VwZGF0ZWREZXRhaWxzQ29uZmlnLmRldGFpbHNbdGFibGVDb25maWcubG9hZElERmllbGRdfWA7XHJcblxyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiVHJhbnNmb3JtZWRcIiwgdGFibGVDb25maWcubG9hZEFjdGlvbi51cmwpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiTk9UIFRyYW5zZm9ybWVkXCIpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZnVuY3Rpb24gdHJhbnNmb3JtU3RlcFVybChzdGVwQ29uZmlnKSB7XHJcbiAgICAgIGlmIChzdGVwQ29uZmlnLmxvYWRBY3Rpb24gJiYgc3RlcENvbmZpZy5sb2FkSURGaWVsZCApIHtcclxuICAgICAgICAvLyBsZXQgaGVyb0lkID0gdXBkYXRlZERldGFpbHNDb25maWcuZGV0YWlsc1t1cGRhdGVkRGV0YWlsc0NvbmZpZy5oZXJvRmllbGRdO1xyXG4gICAgICAgIHN0ZXBDb25maWcubG9hZEFjdGlvbi51cmwgPSBgJHtzdGVwQ29uZmlnLmxvYWRBY3Rpb24udXJsLnJlcGxhY2UoJ3tpZH0nLCB1cGRhdGVkRGV0YWlsc0NvbmZpZy5kZXRhaWxzW3N0ZXBDb25maWcubG9hZElERmllbGRdKX1gO1xyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwiVHJhbnNmb3JtZWQgc3RlcCBVUkxcIiwgc3RlcENvbmZpZy5sb2FkQWN0aW9uLnVybCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG5cclxuICAgIHJldHVybiB1cGRhdGVkRGV0YWlsc0NvbmZpZztcclxuICB9XHJcblxyXG5cclxuICBzdGF0aWMgaW5pdGlhbGl6ZUNvbmZpZ3MoZGV0YWlsc0NvbmZpZzogRGV0YWlsc0RpYWxvZ0NvbmZpZykge1xyXG4gICAgY29uc3QgdGFibGVDb25maWcgPSBkZXRhaWxzQ29uZmlnLnRhYmxlQ29uZmlnO1xyXG4gICAgY29uc3QgdGFibGVDb25maWdzID0gZGV0YWlsc0NvbmZpZy50YWJsZUNvbmZpZ3M7XHJcbiAgICBjb25zdCBmb3JtQ29uZmlnID0gZGV0YWlsc0NvbmZpZy5mb3JtQ29uZmlnO1xyXG4gICAgY29uc3Qgc3RlcENvbmZpZyA9IGRldGFpbHNDb25maWcuc3RlcENvbmZpZztcclxuICAgIGNvbnN0IGJ1dHRvbnMgPSBkZXRhaWxzQ29uZmlnLmJ1dHRvbnM7XHJcbiAgICBmb3JtQ29uZmlnLm1vZGUgPSBmb3JtQ29uZmlnLm1vZGUgPz8gXCJ2aWV3XCI7XHJcbiAgICByZXR1cm4geyB0YWJsZUNvbmZpZywgdGFibGVDb25maWdzLCBmb3JtQ29uZmlnLCBzdGVwQ29uZmlnLCBidXR0b25zIH07XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgc2V0SGVyb1ZhbHVlKGRldGFpbHNDb25maWc6IERldGFpbHNEaWFsb2dDb25maWcsIGRldGFpbHM6IGFueSkge1xyXG5cclxuICAgIGNvbnNvbGUubG9nKGRldGFpbHNDb25maWcpXHJcblxyXG4gICAgaWYgKChkZXRhaWxzQ29uZmlnLmZvcm1Db25maWcubW9kZSA9PSBcImNyZWF0ZVwiICApICYmIGRldGFpbHNDb25maWcuaGVyb0ZpZWxkICYmIGRldGFpbHNDb25maWcuaGVyb1ZhbHVlKSB7XHJcbiAgICAgIGRldGFpbHNbZGV0YWlsc0NvbmZpZy5oZXJvRmllbGRdID0gZGV0YWlsc0NvbmZpZy5oZXJvVmFsdWU7XHJcblxyXG4gICAgICAvLyBFbnN1cmUgaGVybyB2YWx1ZXMgYXJlIHNldCBpbiBmb3JtIGNvbmZpZ1xyXG4gICAgICBkZXRhaWxzQ29uZmlnLmZvcm1Db25maWcuaGVyb0ZpZWxkID0gZGV0YWlsc0NvbmZpZy5oZXJvRmllbGQ7XHJcbiAgICAgIGRldGFpbHNDb25maWcuZm9ybUNvbmZpZy5oZXJvVmFsdWUgPSBkZXRhaWxzQ29uZmlnLmhlcm9WYWx1ZTtcclxuXHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICAvLyBpZiAoZGV0YWlsc0NvbmZpZy5jb25maWcubW9kZSAhPSBcImNyZWF0ZVwiICYmIGRldGFpbHNDb25maWcuaGVyb0ZpZWxkKSB7XHJcbiAgICAvLyAgIGRldGFpbHNDb25maWcuaGVyb1ZhbHVlID0gZGV0YWlsc1tkZXRhaWxzQ29uZmlnLmhlcm9GaWVsZF07XHJcbiAgICAvLyB9XHJcblxyXG5cclxuXHJcblxyXG4gICAgLy8gY29uc29sZS5sb2coZGV0YWlsc0NvbmZpZylcclxuICB9XHJcblxyXG4gIHN0YXRpYyBoYW5kbGVGb3JtTW9kZShkZXRhaWxzQ29uZmlnOiBEZXRhaWxzRGlhbG9nQ29uZmlnLCBmb3JtQ29uZmlnOiBGb3JtQ29uZmlnLCkge1xyXG4gICAgbGV0IGRldGFpbHM7XHJcbiAgICBsZXQgYWN0aW9uO1xyXG4gICAgbGV0IGxvYWRCeUFjdGlvbiA9IGZhbHNlO1xyXG5cclxuICAgIGlmIChmb3JtQ29uZmlnLm1vZGUgPT09IFwiY3JlYXRlXCIpIHtcclxuXHJcbiAgICAgIGRldGFpbHMgPSBDb3JlLmdlbmVyYXRlT2JqZWN0KGZvcm1Db25maWcuZmllbGRzKTtcclxuXHJcbiAgICAgIC8vIHRoaXMuc2V0SGVyb1ZhbHVlKGRldGFpbHNDb25maWcsIGRldGFpbHMpO1xyXG5cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCByZXNwID0gdGhpcy5sb2FkRGV0YWlsc0RhdGEoZGV0YWlsc0NvbmZpZywgZm9ybUNvbmZpZyk7XHJcbiAgICAgIGRldGFpbHMgPSByZXNwLmRldGFpbHM7XHJcblxyXG4gICAgICBhY3Rpb24gPSByZXNwLmFjdGlvbjtcclxuICAgICAgbG9hZEJ5QWN0aW9uID0gcmVzcC5sb2FkQnlBY3Rpb247XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHsgZGV0YWlscywgbG9hZEJ5QWN0aW9uLCBhY3Rpb24gfTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIGxvYWREZXRhaWxzRGF0YShkZXRhaWxzQ29uZmlnOiBEZXRhaWxzRGlhbG9nQ29uZmlnLCBmb3JtQ29uZmlnOiBGb3JtQ29uZmlnKSB7XHJcblxyXG4gICAgbGV0IGRldGFpbHM7XHJcbiAgICBsZXQgYWN0aW9uO1xyXG4gICAgbGV0IGxvYWRCeUFjdGlvbiA9IGZhbHNlO1xyXG5cclxuXHJcbiAgICAvL0Nob29zZSBzb3VyY2VcclxuICAgIGlmIChkZXRhaWxzQ29uZmlnLmRldGFpbHNTb3VyY2UgPT0gRGV0YWlsc1NvdXJjZS5Sb3cpIHtcclxuXHJcbiAgICAgIGNvbnNvbGUubG9nKFwiRGF0YSBmcm9tIERldGFpbHMgLSBSb3cgb3B0aW9uXCIpXHJcbiAgICAgIGRldGFpbHMgPSBkZXRhaWxzQ29uZmlnLmRldGFpbHM7XHJcblxyXG4gICAgfSBlbHNlIGlmIChkZXRhaWxzQ29uZmlnLmRldGFpbHNTb3VyY2UgPT0gRGV0YWlsc1NvdXJjZS5VcmwpIHtcclxuICAgICAgY29uc29sZS5sb2coXCJEYXRhIGZyb20gVXJsIG9wdGlvblwiKVxyXG4gICAgICBhY3Rpb24gPSB0aGlzLmxvYWREZXRhaWxzRnJvbVVybChkZXRhaWxzQ29uZmlnLCBmb3JtQ29uZmlnKTtcclxuICAgICAgbG9hZEJ5QWN0aW9uID0gdHJ1ZTtcclxuXHJcbiAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgLy9uZXcgbG9naWNcclxuICAgICAgaWYgKGZvcm1Db25maWcubG9hZEFjdGlvbil7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJEYXRhIGZyb20gVXJsIC0gR3Vlc3NlZFwiKTtcclxuICAgICAgICAgIGFjdGlvbiA9IHRoaXMubG9hZERldGFpbHNGcm9tVXJsKGRldGFpbHNDb25maWcsIGZvcm1Db25maWcpO1xyXG4gICAgICAgICAgbG9hZEJ5QWN0aW9uID0gdHJ1ZTtcclxuXHJcbiAgICAgIH1lbHNle1xyXG4gICAgICAgICAgY29uc29sZS5sb2coXCJEYXRhIGZyb20gRGV0YWlscyAtIEd1ZXNzZWRcIik7XHJcbiAgICAgICAgICBkZXRhaWxzID0gZGV0YWlsc0NvbmZpZy5kZXRhaWxzO1xyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB7IGRldGFpbHMsIGxvYWRCeUFjdGlvbiwgYWN0aW9uIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBsb2FkRGV0YWlsc0Zyb21VcmwoZGV0YWlsc0NvbmZpZzogRGV0YWlsc0RpYWxvZ0NvbmZpZywgZm9ybUNvbmZpZzogRm9ybUNvbmZpZykge1xyXG4gICAgbGV0IGFjdGlvbjtcclxuXHJcbiAgICBpZiAoZm9ybUNvbmZpZy5sb2FkQWN0aW9uKSB7XHJcblxyXG4gICAgICBpZiAoZGV0YWlsc0NvbmZpZy5oZXJvRmllbGQgJiYgZGV0YWlsc0NvbmZpZy5kZXRhaWxzKSB7XHJcblxyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiRGV0YWlsc0NvbmZpZyBIZXJvIElEIEZpZWxkIFwiICsgZGV0YWlsc0NvbmZpZy5oZXJvRmllbGQpO1xyXG4gICAgICAgIGFjdGlvbiA9IHsgdXJsOiBgJHtmb3JtQ29uZmlnLmxvYWRBY3Rpb24udXJsfS8ke2RldGFpbHNDb25maWcuZGV0YWlsc1tkZXRhaWxzQ29uZmlnLmhlcm9GaWVsZF19YCB9O1xyXG5cclxuICAgICAgfSBlbHNlIGlmIChmb3JtQ29uZmlnLmhlcm9GaWVsZCAmJiBkZXRhaWxzQ29uZmlnLmRldGFpbHMpIHtcclxuXHJcbiAgICAgICAgY29uc29sZS5sb2coXCJGb3JtQ29uZmlnIEhlcm8gSUQgRmllbGQgXCIgKyBmb3JtQ29uZmlnLmhlcm9GaWVsZCk7XHJcbiAgICAgICAgYWN0aW9uID0geyB1cmw6IGAke2Zvcm1Db25maWcubG9hZEFjdGlvbi51cmx9LyR7ZGV0YWlsc0NvbmZpZy5kZXRhaWxzW2Zvcm1Db25maWcuaGVyb0ZpZWxkXX1gIH07XHJcblxyXG4gICAgICB9IGVsc2UgaWYgKGRldGFpbHNDb25maWcuaGVyb1ZhbHVlKSB7XHJcblxyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiRGVmaW5lZCBIZXJvIFZhbHVlIFwiICsgZGV0YWlsc0NvbmZpZy5oZXJvVmFsdWUpO1xyXG4gICAgICAgIGFjdGlvbiA9IHsgdXJsOiBgJHtmb3JtQ29uZmlnLmxvYWRBY3Rpb24udXJsfS8ke2RldGFpbHNDb25maWcuaGVyb1ZhbHVlfWAgfTtcclxuXHJcbiAgICAgIH1cclxuICAgICAgZWxzZXtcclxuICAgICAgICBjb25zb2xlLmxvZyhcInVybCBzb3VyY2UgZmFpbGVkIDogc2V0dXAgaGVybyBmaWVsZCBvciBoZXJvIHZhbHVlXCIpO1xyXG4gICAgICB9XHJcblxyXG4gICAgfWVsc2V7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiTm8gbG9hZCBhY3Rpb24gc2V0XCIpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBhY3Rpb247XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgc2V0RmlsZUZpZWxkKGZvcm1Db25maWc6IEZvcm1Db25maWcpIHtcclxuICAgIHJldHVybiBmb3JtQ29uZmlnLmZpZWxkcy5maW5kKHggPT4geC50eXBlID09PSAnZmlsZScpO1xyXG4gIH1cclxuXHJcblxyXG4gIHN0YXRpYyBzZXR1cEJ1dHRvbnMoZm9ybUNvbmZpZzogRm9ybUNvbmZpZywgYnV0dG9uczogYW55KSB7XHJcbiAgICBsZXQgZXh0cmFCdXR0b25zLCBjcmVhdGVCdXR0b24sIGVkaXRCdXR0b24sIGRlbGV0ZUJ1dHRvbjtcclxuXHJcbiAgICBpZiAoYnV0dG9ucykge1xyXG4gICAgICBpZiAoZm9ybUNvbmZpZy5tb2RlICE9PSBcImNyZWF0ZVwiKSB7XHJcbiAgICAgICAgZXh0cmFCdXR0b25zID0gYnV0dG9ucy5maWx0ZXIoeCA9PiB4Lm5hbWUgIT09IFwiY3JlYXRlXCIgJiYgeC5uYW1lICE9PSBcImVkaXRcIiAmJiB4Lm5hbWUgIT09IFwiZGVsZXRlXCIgJiYgeC5uYW1lICE9PSBcInZpZXdcIiAmJiB4LmluRGlhbG9nKTtcclxuICAgICAgfVxyXG4gICAgICBjcmVhdGVCdXR0b24gPSBidXR0b25zLmZpbmQoeCA9PiB4Lm5hbWUgPT09IFwiY3JlYXRlXCIpO1xyXG4gICAgICBlZGl0QnV0dG9uID0gYnV0dG9ucy5maW5kKHggPT4geC5uYW1lID09PSBcImVkaXRcIik7XHJcbiAgICAgIGRlbGV0ZUJ1dHRvbiA9IGJ1dHRvbnMuZmluZCh4ID0+IHgubmFtZSA9PT0gXCJkZWxldGVcIik7XHJcbiAgICB9XHJcbiAgICByZXR1cm4geyBleHRyYUJ1dHRvbnMsIGNyZWF0ZUJ1dHRvbiwgZWRpdEJ1dHRvbiwgZGVsZXRlQnV0dG9uIH07XHJcbiAgfVxyXG5cclxuXHJcblxyXG5cclxufVxyXG5cclxuXHJcbiJdfQ==
|
|
@@ -219,7 +219,7 @@ export class FormComponent {
|
|
|
219
219
|
}
|
|
220
220
|
}
|
|
221
221
|
FormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FormComponent, deps: [{ token: i1.MessageService }, { token: i2.DataServiceLib }, { token: i3.AuthService }], target: i0.ɵɵFactoryTarget.Component });
|
|
222
|
-
FormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: FormComponent, selector: "spa-form", inputs: { files: "files", data: "data", config: "config" }, outputs: { buttonClick: "buttonClick", inputChange: "inputChange" }, queries: [{ propertyName: "dynamicSelectTemplate", first: true, predicate: ["dynamicSelect"], descendants: true }], ngImport: i0, template: "\r\n<div [ngClass]=\"multiColumn ? 'tin-grid' : 'tin-col'\" >\r\n\r\n <div *ngIf=\"!hasAccess\" class=\"tin-center\">\r\n <p><em>Access Restricted</em></p>\r\n </div>\r\n\r\n <div [ngClass]=\"field.span || field.type =='section' || field.type =='file' || field.type =='file-view' ? 'span-col' : ''\" *ngFor=\"let field of getVisibleFields()\">\r\n\r\n <ng-container >\r\n\r\n <ng-container [ngSwitch]=\"field.type\" class=\"highlight\">\r\n\r\n <div *ngSwitchCase=\"'section'\" class=\"title\">\r\n <label style=\"font-size: larger;\">{{field.alias ?? field.name | camelToWords}}</label>\r\n </div>\r\n\r\n <ng-container *ngSwitchCase=\"'file'\">\r\n <div class=\"mt-1 mb-2\" *ngIf=\"config.mode !='view'\">\r\n <spa-attach [message]=\"field.alias ?? 'Drag and Drop files here'\" [(files)]=\"files\" [fileOptions]=\"field.fileOptions\"></spa-attach>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'file-view'\">\r\n <div class=\"mt-1 mb-2\" *ngIf=\"config.mode && config.mode !='create'\">\r\n <spa-viewer [fileAction]=\"field.loadAction\" [path]=\"field.path\" [folderName]=\"data[field.keyField]\" ></spa-viewer>\r\n </div>\r\n </ng-container>\r\n\r\n\r\n <label *ngSwitchCase=\"'blank'\"></label>\r\n\r\n <label *ngSwitchCase=\"'string'\" [ngStyle]=\"{'font-size':field.size ?? '14px'}\" >{{data[field.name] ?? field.alias ?? field.name}} {{field.suffix ?? ''}}</label>\r\n\r\n <spa-label *ngSwitchCase=\"'label'\" [display]=\"field.alias ?? field.name | camelToWords\" [value]=\"data[field.name]\" (valueChange)=\"inputChanged(field, data[field.name])\" [format]=\"field.format ?? 'text'\" [suffix]=\"field.suffix\"></spa-label>\r\n\r\n <spa-number *ngSwitchCase=\"'number'\" [display]=\"field.alias ?? field.name | camelToWords\" [width]=\"field.width\" [(value)]=\"data[field.name]\" (valueChange)=\"inputChanged(field, data[field.name])\" [required]=\"field.required\" [min]=\"field.min\" [max]=\"field.max\" [readonly]=\"testReadOnly(field)\" [hint]=\"field.hint\" [infoMessage]=\"field.infoMessage\" [suffix]=\"field.suffix\" [copyContent]=\"field.copyContent\" [clearContent]=\"field.clearContent\"></spa-number>\r\n\r\n <spa-money *ngSwitchCase=\"'money'\" [display]=\"field.alias ?? field.name | camelToWords\" [width]=\"field.width\" [(value)]=\"data[field.name]\" (valueChange)=\"inputChanged(field, data[field.name])\" [required]=\"field.required\" [min]=\"field.min\" [max]=\"field.max\" [readonly]=\"testReadOnly(field)\" [hint]=\"field.hint\" [infoMessage]=\"field.infoMessage\" [suffix]=\"field.suffix\" [copyContent]=\"field.copyContent\" [clearContent]=\"field.clearContent\"></spa-money>\r\n\r\n <spa-check *ngSwitchCase=\"'checkbox'\" [display]=\"field.alias ?? field.name | camelToWords\" [(value)]=\"data[field.name]\" (valueChange)=\"inputChanged(field, data[field.name])\" [readonly]=\"testReadOnly(field)\" [infoMessage]=\"field.infoMessage\" ></spa-check>\r\n\r\n <spa-date *ngSwitchCase=\"'date'\" [display]=\"field.alias ?? field.name | camelToWords\" [width]=\"field.width\" [(value)]=\"data[field.name]\" (valueChange)=\"inputChanged(field, data[field.name])\" [min]=\"field?.min\" [max]=\"field?.max\" [readonly]=\"testReadOnly(field)\" [hint]=\"field.hint\" [infoMessage]=\"field.infoMessage\" ></spa-date>\r\n\r\n <spa-datetime *ngSwitchCase=\"'datetime'\" [display]=\"field.alias ?? field.name | camelToWords\" [(value)]=\"data[field.name]\" (valueChange)=\"inputChanged(field, data[field.name])\" [readonly]=\"testReadOnly(field)\" [min]=\"field.min\" [max]=\"field.max\" [infoMessage]=\"field.infoMessage\" ></spa-datetime>\r\n\r\n <spa-email *ngSwitchCase=\"'email'\" [display]=\"field.alias ?? field.name | camelToWords\" [(value)]=\"data[field.name]\" (valueChange)=\"inputChanged(field,data[field.name])\" [required]=\"field.required\" [readonly]=\"testReadOnly(field)\" [hint]=\"field.hint\" [infoMessage]=\"field.infoMessage\" [suffix]=\"field.suffix\" [copyContent]=\"field.copyContent\" [clearContent]=\"field.clearContent\"></spa-email>\r\n\r\n <spa-text *ngSwitchCase=\"'password'\" [format]=\"'password'\" [display]=\"field.alias ?? field.name | camelToWords\" [width]=\"field.width\" [options]=\"field.options\" [optionValue]=\"field.optionValue ?? 'value'\" [rows]=\"field.rows\" [(value)]=\"data[field.name]\" (valueChange)=\"inputChanged(field,data[field.name])\" [required]=\"field.required\" [min]=\"field.min\" [max]=\"field.max\" [readonly]=\"testReadOnly(field)\" [hint]=\"field.hint\" [infoMessage]=\"field.infoMessage\" [suffix]=\"field.suffix\" [copyContent]=\"field.copyContent\" [clearContent]=\"field.clearContent\"></spa-text>\r\n\r\n\r\n <ng-container *ngSwitchCase=\"'select'\">\r\n <ng-container *ngTemplateOutlet=\"dynamicSelectTemplate; context: {\r\n $implicit: field,\r\n field: field,\r\n data: data,\r\n testReadOnly: testReadOnly.bind(this),\r\n selectChanged: selectChanged.bind(this)\r\n }\">\r\n </ng-container>\r\n </ng-container>\r\n\r\n\r\n <spa-multi-select *ngSwitchCase=\"'multi-select'\" [display]=\"field.alias ?? field.name | camelToWords\" [width]=\"field.width\" [options]=\"field.options\" [optionDisplay]=\"field.optionDisplay ?? 'name'\" [optionValue]=\"field.optionValue ?? 'value'\" [(value)]=\"data[field.name]\" (valueChange)=\"inputChanged(field, data[field.name])\" [required]=\"field.required\" [readonly]=\"testReadOnly(field)\" [hint]=\"field.hint\" [infoMessage]=\"field.infoMessage\" [suffix]=\"field.suffix\" [copyContent]=\"field.copyContent\" [clearContent]=\"field.clearContent\" [loadAction]=\"field.loadAction\">\r\n </spa-multi-select>\r\n\r\n <spa-multi-text *ngSwitchCase=\"'multi-text'\" [strict]=\"field.strict\" [display]=\"field.alias ?? field.name | camelToWords\" [options]=\"field.options\" [optionDisplay]=\"field.optionDisplay ?? 'name'\" [optionValue]=\"field.optionValue ?? 'value'\" [(value)]=\"data[field.name]\" (valueChange)=\"inputChanged(field,data[field.name])\" [required]=\"field.required\" [readonly]=\"testReadOnly(field)\" [hint]=\"field.hint\" [infoMessage]=\"field.infoMessage\" [suffix]=\"field.suffix\" [copyContent]=\"field.copyContent\" [clearContent]=\"field.clearContent\" [loadAction]=\"field.loadAction\"></spa-multi-text>\r\n\r\n\r\n\r\n <ng-container *ngSwitchCase=\"'composite'\">\r\n <div class=\"composite-field-container\">\r\n <div class=\"composite-field-group\">\r\n <ng-container *ngFor=\"let subfield of getVisibleSubfields(field)\">\r\n <ng-container [ngSwitch]=\"subfield.type\">\r\n\r\n <spa-number *ngSwitchCase=\"'number'\" [display]=\"subfield.alias ?? subfield.name | camelToWords\" [width]=\"subfield.width\" [(value)]=\"data[subfield.name]\" (valueChange)=\"inputChanged(subfield, $event)\" [required]=\"subfield.required\" [min]=\"subfield.min\" [max]=\"subfield.max\" [readonly]=\"testReadOnly(field) || testReadOnly(subfield)\" [hint]=\"subfield.hint\" [infoMessage]=\"subfield.infoMessage\" [suffix]=\"subfield.suffix\" [copyContent]=\"subfield.copyContent\" [clearContent]=\"subfield.clearContent\"></spa-number>\r\n\r\n <spa-money *ngSwitchCase=\"'money'\" [display]=\"subfield.alias ?? subfield.name | camelToWords\" [width]=\"subfield.width\" [(value)]=\"data[subfield.name]\" (valueChange)=\"inputChanged(subfield, $event)\" [required]=\"subfield.required\" [min]=\"subfield.min\" [max]=\"subfield.max\" [readonly]=\"testReadOnly(field) || testReadOnly(subfield)\" [hint]=\"subfield.hint\" [infoMessage]=\"subfield.infoMessage\" [suffix]=\"subfield.suffix\" [copyContent]=\"field.copyContent\" [clearContent]=\"field.clearContent\"></spa-money>\r\n\r\n <spa-check *ngSwitchCase=\"'checkbox'\" [display]=\"subfield.alias ?? subfield.name | camelToWords\" [(value)]=\"data[subfield.name]\" (valueChange)=\"inputChanged(subfield, $event)\" [readonly]=\"testReadOnly(field) || testReadOnly(subfield)\" [infoMessage]=\"subfield.infoMessage\" ></spa-check>\r\n\r\n <spa-date *ngSwitchCase=\"'date'\" [display]=\"subfield.alias ?? subfield.name | camelToWords\" [width]=\"subfield.width\" [(value)]=\"data[subfield.name]\" (valueChange)=\"inputChanged(subfield, $event)\" [min]=\"subfield.min\" [max]=\"subfield.max\" [readonly]=\"testReadOnly(field) || testReadOnly(subfield)\" [hint]=\"subfield.hint\" [infoMessage]=\"subfield.infoMessage\" ></spa-date>\r\n\r\n <spa-datetime *ngSwitchCase=\"'datetime'\" [display]=\"subfield.alias ?? subfield.name | camelToWords\" [(value)]=\"data[subfield.name]\" (valueChange)=\"inputChanged(subfield, $event)\" [readonly]=\"testReadOnly(field) || testReadOnly(subfield)\" [min]=\"subfield.min\" [max]=\"subfield.max\" [infoMessage]=\"subfield.infoMessage\" ></spa-datetime>\r\n\r\n <ng-container *ngSwitchCase=\"'select'\">\r\n <ng-container *ngTemplateOutlet=\"dynamicSelectTemplate; context: {\r\n $implicit: field,\r\n field: field,\r\n data: data,\r\n testReadOnly: testReadOnly.bind(this),\r\n selectChanged: selectChanged.bind(this)\r\n }\">\r\n </ng-container>\r\n </ng-container>\r\n\r\n <spa-text *ngSwitchDefault [display]=\"subfield.alias ?? subfield.name | camelToWords\" [width]=\"subfield.width\" [options]=\"subfield.options\" [optionDisplay]=\"subfield.optionDisplay ?? 'name'\" [optionValue]=\"subfield.optionValue ?? 'value'\" [rows]=\"subfield.rows\" [(value)]=\"data[subfield.name]\" (valueChange)=\"inputChanged(subfield, $event)\" [required]=\"subfield.required\" [min]=\"subfield.min\" [max]=\"subfield.max\" [readonly]=\"testReadOnly(field) || testReadOnly(subfield)\" [hint]=\"subfield.hint\" [infoMessage]=\"subfield.infoMessage\" [suffix]=\"subfield.suffix\" [copyContent]=\"subfield.copyContent\" [clearContent]=\"subfield.clearContent\" [loadAction]=\"subfield.loadAction\"></spa-text>\r\n\r\n\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n\r\n <spa-text *ngSwitchDefault [display]=\"field.alias ?? field.name | camelToWords\" [width]=\"field.width\" [options]=\"field.options\" [optionDisplay]=\"field.optionDisplay ?? 'name'\" [optionValue]=\"field.optionValue ?? 'value'\" [rows]=\"field.rows\" [(value)]=\"data[field.name]\" (valueChange)=\"inputChanged(field,data[field.name])\" [required]=\"field.required\" [min]=\"field.min\" [max]=\"field.max\" [readonly]=\"testReadOnly(field)\" [hint]=\"field.hint\" [infoMessage]=\"field.infoMessage\" [suffix]=\"field.suffix\" [copyContent]=\"field.copyContent\" [clearContent]=\"field.clearContent\" [loadAction]=\"field.loadAction\"></spa-text>\r\n\r\n </ng-container>\r\n\r\n </ng-container>\r\n\r\n </div>\r\n\r\n\r\n <div class=\"span-col-center\" *ngIf=\"config.button\">\r\n <button mat-raised-button color=\"primary\" (click)=\"buttonClicked()\" cdkFocusInitial>{{buttonDisplay}}</button>\r\n </div>\r\n\r\n\r\n</div>\r\n", styles: [".title{margin-top:1em;font-size:larger;font-weight:300}.composite-field-group{display:flex;flex-direction:row;flex-wrap:wrap;gap:12px}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i4.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i4.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: i5.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i6.TextComponent, selector: "spa-text", inputs: ["readonly", "hint", "display", "placeholder", "value", "format", "type", "rows", "width", "copyContent", "clearContent", "options", "optionDisplay", "optionValue", "loadAction", "required", "min", "max", "regex", "suffix", "infoMessage"], outputs: ["valueChange", "leave", "enterPress"] }, { kind: "component", type: i7.CheckComponent, selector: "spa-check", inputs: ["readonly", "display", "value", "infoMessage"], outputs: ["valueChange", "click", "check", "uncheck", "infoClick"] }, { kind: "component", type: i8.DateComponent, selector: "spa-date", inputs: ["required", "min", "max", "readonly", "hint", "value", "display", "placeholder", "width", "infoMessage"], outputs: ["valueChange", "infoClick"] }, { kind: "component", type: i9.DatetimeComponent, selector: "spa-datetime", inputs: ["display", "value", "readonly", "width", "min", "max", "infoMessage"], outputs: ["valueChange", "infoClick"] }, { kind: "component", type: i10.LabelComponent, selector: "spa-label", inputs: ["display", "value", "format", "suffix"] }, { kind: "component", type: i11.MoneyComponent, selector: "spa-money", inputs: ["readonly", "hint", "display", "placeholder", "value", "width", "currency", "required", "min", "max", "infoMessage", "copyContent", "clearContent", "suffix"], outputs: ["valueChange", "leave", "enterPress", "infoClick"] }, { kind: "component", type: i12.AttachComponent, selector: "spa-attach", inputs: ["fileOptions", "message", "files", "enableUpload"], outputs: ["filesChange", "upload"] }, { kind: "component", type: i13.NumberComponent, selector: "spa-number", inputs: ["readonly", "hint", "display", "placeholder", "value", "width", "required", "min", "max", "step", "suffix", "infoMessage", "copyContent", "clearContent"], outputs: ["valueChange", "leave", "enterPress", "infoClick"] }, { kind: "component", type: i14.ViewerComponent, selector: "spa-viewer", inputs: ["fileAction", "path", "folderName", "fileNames", "removable", "display", "title"], outputs: ["remove"] }, { kind: "component", type: i15.EmailComponent, selector: "spa-email", inputs: ["display", "value", "readonly", "required", "hint", "suffix", "infoMessage", "copyContent", "clearContent", "options", "optionValue"], outputs: ["valueChange"] }, { kind: "component", type: i16.MultiTextComponent, selector: "spa-multi-text", inputs: ["display", "value", "readonly", "required", "hint", "strict", "suffix", "infoMessage", "copyContent", "clearContent", "options", "optionDisplay", "optionValue", "loadAction"], outputs: ["valueChange", "hoverChange"] }, { kind: "component", type: i17.MultiSelectComponent, selector: "spa-multi-select", inputs: ["display", "value", "readonly", "required", "hint", "options", "optionDisplay", "optionValue", "infoMessage", "copyContent", "clearContent", "nullable", "placeholder", "width", "suffix", "loadAction"], outputs: ["valueChange", "hoverChange"] }, { kind: "pipe", type: i18.CamelToWordsPipe, name: "camelToWords" }] });
|
|
222
|
+
FormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: FormComponent, selector: "spa-form", inputs: { files: "files", data: "data", config: "config" }, outputs: { buttonClick: "buttonClick", inputChange: "inputChange" }, queries: [{ propertyName: "dynamicSelectTemplate", first: true, predicate: ["dynamicSelect"], descendants: true }], ngImport: i0, template: "\r\n<div [ngClass]=\"multiColumn ? 'tin-grid' : 'tin-col'\" >\r\n\r\n <div *ngIf=\"!hasAccess\" class=\"tin-center\">\r\n <p><em>Access Restricted</em></p>\r\n </div>\r\n\r\n <div [ngClass]=\"field.span || field.type =='section' || field.type =='file' || field.type =='file-view' ? 'span-col' : ''\" *ngFor=\"let field of getVisibleFields()\">\r\n\r\n <ng-container >\r\n\r\n <ng-container [ngSwitch]=\"field.type\" class=\"highlight\">\r\n\r\n <div *ngSwitchCase=\"'section'\" class=\"title\">\r\n <label style=\"font-size: larger;\">{{field.alias ?? field.name | camelToWords}}</label>\r\n </div>\r\n\r\n <ng-container *ngSwitchCase=\"'file'\">\r\n <div class=\"mt-1 mb-2\" *ngIf=\"config.mode !='view'\">\r\n <spa-attach [message]=\"field.alias ?? 'Drag and Drop files here'\" [(files)]=\"files\" [fileOptions]=\"field.fileOptions\"></spa-attach>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'file-view'\">\r\n <div class=\"mt-1 mb-2\" *ngIf=\"config.mode && config.mode !='create'\">\r\n <spa-viewer [fileAction]=\"field.loadAction\" [path]=\"field.path\" [folderName]=\"data[field.keyField]\" ></spa-viewer>\r\n </div>\r\n </ng-container>\r\n\r\n\r\n <label *ngSwitchCase=\"'blank'\"></label>\r\n\r\n <label *ngSwitchCase=\"'string'\" [ngStyle]=\"{'font-size':field.size ?? '14px'}\" >{{data[field.name] ?? field.alias ?? field.name}} {{field.suffix ?? ''}}</label>\r\n\r\n <spa-label *ngSwitchCase=\"'label'\" [display]=\"field.alias ?? field.name | camelToWords\" [value]=\"data[field.name]\" (valueChange)=\"inputChanged(field, data[field.name])\" [format]=\"field.format ?? 'text'\" [suffix]=\"field.suffix\"></spa-label>\r\n\r\n <spa-number *ngSwitchCase=\"'number'\" [display]=\"field.alias ?? field.name | camelToWords\" [width]=\"field.width\" [(value)]=\"data[field.name]\" (valueChange)=\"inputChanged(field, data[field.name])\" [required]=\"field.required\" [min]=\"field.min\" [max]=\"field.max\" [readonly]=\"testReadOnly(field)\" [hint]=\"field.hint\" [infoMessage]=\"field.infoMessage\" [suffix]=\"field.suffix\" [copyContent]=\"field.copyContent\" [clearContent]=\"field.clearContent\"></spa-number>\r\n\r\n <spa-money *ngSwitchCase=\"'money'\" [display]=\"field.alias ?? field.name | camelToWords\" [width]=\"field.width\" [(value)]=\"data[field.name]\" (valueChange)=\"inputChanged(field, data[field.name])\" [required]=\"field.required\" [min]=\"field.min\" [max]=\"field.max\" [readonly]=\"testReadOnly(field)\" [hint]=\"field.hint\" [infoMessage]=\"field.infoMessage\" [suffix]=\"field.suffix\" [copyContent]=\"field.copyContent\" [clearContent]=\"field.clearContent\"></spa-money>\r\n\r\n <spa-check *ngSwitchCase=\"'checkbox'\" [display]=\"field.alias ?? field.name | camelToWords\" [(value)]=\"data[field.name]\" (valueChange)=\"inputChanged(field, data[field.name])\" [readonly]=\"testReadOnly(field)\" [infoMessage]=\"field.infoMessage\" ></spa-check>\r\n\r\n <spa-date *ngSwitchCase=\"'date'\" [display]=\"field.alias ?? field.name | camelToWords\" [width]=\"field.width\" [(value)]=\"data[field.name]\" (valueChange)=\"inputChanged(field, data[field.name])\" [min]=\"field?.min\" [max]=\"field?.max\" [readonly]=\"testReadOnly(field)\" [hint]=\"field.hint\" [infoMessage]=\"field.infoMessage\" ></spa-date>\r\n\r\n <spa-datetime *ngSwitchCase=\"'datetime'\" [display]=\"field.alias ?? field.name | camelToWords\" [(value)]=\"data[field.name]\" (valueChange)=\"inputChanged(field, data[field.name])\" [readonly]=\"testReadOnly(field)\" [min]=\"field.min\" [max]=\"field.max\" [infoMessage]=\"field.infoMessage\" ></spa-datetime>\r\n\r\n <spa-email *ngSwitchCase=\"'email'\" [display]=\"field.alias ?? field.name | camelToWords\" [(value)]=\"data[field.name]\" (valueChange)=\"inputChanged(field,data[field.name])\" [required]=\"field.required\" [readonly]=\"testReadOnly(field)\" [hint]=\"field.hint\" [infoMessage]=\"field.infoMessage\" [suffix]=\"field.suffix\" [copyContent]=\"field.copyContent\" [clearContent]=\"field.clearContent\"></spa-email>\r\n\r\n <spa-text *ngSwitchCase=\"'password'\" [format]=\"'password'\" [display]=\"field.alias ?? field.name | camelToWords\" [width]=\"field.width\" [options]=\"field.options\" [optionValue]=\"field.optionValue ?? 'value'\" [rows]=\"field.rows\" [(value)]=\"data[field.name]\" (valueChange)=\"inputChanged(field,data[field.name])\" [required]=\"field.required\" [min]=\"field.min\" [max]=\"field.max\" [readonly]=\"testReadOnly(field)\" [hint]=\"field.hint\" [infoMessage]=\"field.infoMessage\" [suffix]=\"field.suffix\" [copyContent]=\"field.copyContent\" [clearContent]=\"field.clearContent\"></spa-text>\r\n\r\n\r\n <ng-container *ngSwitchCase=\"'select'\">\r\n <ng-container *ngTemplateOutlet=\"dynamicSelectTemplate; context: {\r\n $implicit: field,\r\n field: field,\r\n data: data,\r\n testReadOnly: testReadOnly.bind(this),\r\n selectChanged: selectChanged.bind(this)\r\n }\">\r\n </ng-container>\r\n </ng-container>\r\n\r\n\r\n <spa-multi-select *ngSwitchCase=\"'multi-select'\" [display]=\"field.alias ?? field.name | camelToWords\" [width]=\"field.width\" [options]=\"field.options\" [optionDisplay]=\"field.optionDisplay ?? 'name'\" [optionValue]=\"field.optionValue ?? 'value'\" [(value)]=\"data[field.name]\" (valueChange)=\"inputChanged(field, data[field.name])\" [required]=\"field.required\" [readonly]=\"testReadOnly(field)\" [hint]=\"field.hint\" [infoMessage]=\"field.infoMessage\" [suffix]=\"field.suffix\" [copyContent]=\"field.copyContent\" [clearContent]=\"field.clearContent\" [loadAction]=\"field.loadAction\">\r\n </spa-multi-select>\r\n\r\n <spa-multi-text *ngSwitchCase=\"'multi-text'\" [strict]=\"field.strict\" [display]=\"field.alias ?? field.name | camelToWords\" [options]=\"field.options\" [optionDisplay]=\"field.optionDisplay ?? 'name'\" [optionValue]=\"field.optionValue ?? 'value'\" [(value)]=\"data[field.name]\" (valueChange)=\"inputChanged(field,data[field.name])\" [required]=\"field.required\" [readonly]=\"testReadOnly(field)\" [hint]=\"field.hint\" [infoMessage]=\"field.infoMessage\" [suffix]=\"field.suffix\" [copyContent]=\"field.copyContent\" [clearContent]=\"field.clearContent\" [loadAction]=\"field.loadAction\"></spa-multi-text>\r\n\r\n\r\n\r\n <ng-container *ngSwitchCase=\"'composite'\">\r\n <div class=\"composite-field-container\">\r\n <div class=\"composite-field-group\">\r\n <ng-container *ngFor=\"let subfield of getVisibleSubfields(field)\">\r\n <ng-container [ngSwitch]=\"subfield.type\">\r\n\r\n <spa-number *ngSwitchCase=\"'number'\" [display]=\"subfield.alias ?? subfield.name | camelToWords\" [width]=\"subfield.width\" [(value)]=\"data[subfield.name]\" (valueChange)=\"inputChanged(subfield, $event)\" [required]=\"subfield.required\" [min]=\"subfield.min\" [max]=\"subfield.max\" [readonly]=\"testReadOnly(field) || testReadOnly(subfield)\" [hint]=\"subfield.hint\" [infoMessage]=\"subfield.infoMessage\" [suffix]=\"subfield.suffix\" [copyContent]=\"subfield.copyContent\" [clearContent]=\"subfield.clearContent\"></spa-number>\r\n\r\n <spa-money *ngSwitchCase=\"'money'\" [display]=\"subfield.alias ?? subfield.name | camelToWords\" [width]=\"subfield.width\" [(value)]=\"data[subfield.name]\" (valueChange)=\"inputChanged(subfield, $event)\" [required]=\"subfield.required\" [min]=\"subfield.min\" [max]=\"subfield.max\" [readonly]=\"testReadOnly(field) || testReadOnly(subfield)\" [hint]=\"subfield.hint\" [infoMessage]=\"subfield.infoMessage\" [suffix]=\"subfield.suffix\" [copyContent]=\"field.copyContent\" [clearContent]=\"field.clearContent\"></spa-money>\r\n\r\n <spa-check *ngSwitchCase=\"'checkbox'\" [display]=\"subfield.alias ?? subfield.name | camelToWords\" [(value)]=\"data[subfield.name]\" (valueChange)=\"inputChanged(subfield, $event)\" [readonly]=\"testReadOnly(field) || testReadOnly(subfield)\" [infoMessage]=\"subfield.infoMessage\" ></spa-check>\r\n\r\n <spa-date *ngSwitchCase=\"'date'\" [display]=\"subfield.alias ?? subfield.name | camelToWords\" [width]=\"subfield.width\" [(value)]=\"data[subfield.name]\" (valueChange)=\"inputChanged(subfield, $event)\" [min]=\"subfield.min\" [max]=\"subfield.max\" [readonly]=\"testReadOnly(field) || testReadOnly(subfield)\" [hint]=\"subfield.hint\" [infoMessage]=\"subfield.infoMessage\" ></spa-date>\r\n\r\n <spa-datetime *ngSwitchCase=\"'datetime'\" [display]=\"subfield.alias ?? subfield.name | camelToWords\" [(value)]=\"data[subfield.name]\" (valueChange)=\"inputChanged(subfield, $event)\" [readonly]=\"testReadOnly(field) || testReadOnly(subfield)\" [min]=\"subfield.min\" [max]=\"subfield.max\" [infoMessage]=\"subfield.infoMessage\" ></spa-datetime>\r\n\r\n <ng-container *ngSwitchCase=\"'select'\">\r\n <ng-container *ngTemplateOutlet=\"dynamicSelectTemplate; context: {\r\n $implicit: field,\r\n field: field,\r\n data: data,\r\n testReadOnly: testReadOnly.bind(this),\r\n selectChanged: selectChanged.bind(this)\r\n }\">\r\n </ng-container>\r\n </ng-container>\r\n\r\n <spa-text *ngSwitchDefault [display]=\"subfield.alias ?? subfield.name | camelToWords\" [width]=\"subfield.width\" [options]=\"subfield.options\" [optionDisplay]=\"subfield.optionDisplay ?? 'name'\" [optionValue]=\"subfield.optionValue ?? 'value'\" [rows]=\"subfield.rows\" [(value)]=\"data[subfield.name]\" (valueChange)=\"inputChanged(subfield, $event)\" [required]=\"subfield.required\" [min]=\"subfield.min\" [max]=\"subfield.max\" [readonly]=\"testReadOnly(field) || testReadOnly(subfield)\" [hint]=\"subfield.hint\" [infoMessage]=\"subfield.infoMessage\" [suffix]=\"subfield.suffix\" [copyContent]=\"subfield.copyContent\" [clearContent]=\"subfield.clearContent\" [loadAction]=\"subfield.loadAction\"></spa-text>\r\n\r\n\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n\r\n <spa-text *ngSwitchDefault [display]=\"field.alias ?? field.name | camelToWords\" [width]=\"field.width\" [options]=\"field.options\" [optionDisplay]=\"field.optionDisplay ?? 'name'\" [optionValue]=\"field.optionValue ?? 'value'\" [rows]=\"field.rows\" [(value)]=\"data[field.name]\" (valueChange)=\"inputChanged(field,data[field.name])\" [required]=\"field.required\" [min]=\"field.min\" [max]=\"field.max\" [readonly]=\"testReadOnly(field)\" [hint]=\"field.hint\" [infoMessage]=\"field.infoMessage\" [suffix]=\"field.suffix\" [copyContent]=\"field.copyContent\" [clearContent]=\"field.clearContent\" [loadAction]=\"field.loadAction\"></spa-text>\r\n\r\n </ng-container>\r\n\r\n </ng-container>\r\n\r\n </div>\r\n\r\n\r\n <div class=\"span-col-center\" *ngIf=\"config.button\">\r\n <button mat-raised-button color=\"primary\" (click)=\"buttonClicked()\" cdkFocusInitial>{{buttonDisplay}}</button>\r\n </div>\r\n\r\n\r\n</div>\r\n", styles: [".title{margin-top:1em;font-size:larger;font-weight:300}.composite-field-group{display:flex;flex-direction:row;flex-wrap:wrap;gap:12px}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i4.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i4.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: i5.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i6.TextComponent, selector: "spa-text", inputs: ["appearance", "readonly", "hint", "display", "placeholder", "value", "format", "type", "rows", "width", "copyContent", "clearContent", "options", "optionDisplay", "optionValue", "loadAction", "required", "min", "max", "regex", "suffix", "infoMessage"], outputs: ["valueChange", "leave", "enterPress"] }, { kind: "component", type: i7.CheckComponent, selector: "spa-check", inputs: ["readonly", "display", "value", "infoMessage"], outputs: ["valueChange", "click", "check", "uncheck", "infoClick"] }, { kind: "component", type: i8.DateComponent, selector: "spa-date", inputs: ["required", "min", "max", "readonly", "hint", "value", "display", "placeholder", "width", "infoMessage"], outputs: ["valueChange", "infoClick"] }, { kind: "component", type: i9.DatetimeComponent, selector: "spa-datetime", inputs: ["display", "value", "readonly", "width", "min", "max", "infoMessage"], outputs: ["valueChange", "infoClick"] }, { kind: "component", type: i10.LabelComponent, selector: "spa-label", inputs: ["display", "value", "format", "suffix"] }, { kind: "component", type: i11.MoneyComponent, selector: "spa-money", inputs: ["readonly", "hint", "display", "placeholder", "value", "width", "currency", "required", "min", "max", "infoMessage", "copyContent", "clearContent", "suffix"], outputs: ["valueChange", "leave", "enterPress", "infoClick"] }, { kind: "component", type: i12.AttachComponent, selector: "spa-attach", inputs: ["fileOptions", "message", "files", "enableUpload"], outputs: ["filesChange", "upload"] }, { kind: "component", type: i13.NumberComponent, selector: "spa-number", inputs: ["readonly", "hint", "display", "placeholder", "value", "width", "required", "min", "max", "step", "suffix", "infoMessage", "copyContent", "clearContent"], outputs: ["valueChange", "leave", "enterPress", "infoClick"] }, { kind: "component", type: i14.ViewerComponent, selector: "spa-viewer", inputs: ["fileAction", "path", "folderName", "fileNames", "removable", "display", "title"], outputs: ["remove"] }, { kind: "component", type: i15.EmailComponent, selector: "spa-email", inputs: ["display", "value", "readonly", "required", "hint", "suffix", "infoMessage", "copyContent", "clearContent", "options", "optionValue"], outputs: ["valueChange"] }, { kind: "component", type: i16.MultiTextComponent, selector: "spa-multi-text", inputs: ["display", "value", "readonly", "required", "hint", "strict", "suffix", "infoMessage", "copyContent", "clearContent", "options", "optionDisplay", "optionValue", "loadAction"], outputs: ["valueChange", "hoverChange"] }, { kind: "component", type: i17.MultiSelectComponent, selector: "spa-multi-select", inputs: ["display", "value", "readonly", "required", "hint", "options", "optionDisplay", "optionValue", "infoMessage", "copyContent", "clearContent", "nullable", "placeholder", "width", "suffix", "loadAction"], outputs: ["valueChange", "hoverChange"] }, { kind: "pipe", type: i18.CamelToWordsPipe, name: "camelToWords" }] });
|
|
223
223
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FormComponent, decorators: [{
|
|
224
224
|
type: Component,
|
|
225
225
|
args: [{ selector: 'spa-form', template: "\r\n<div [ngClass]=\"multiColumn ? 'tin-grid' : 'tin-col'\" >\r\n\r\n <div *ngIf=\"!hasAccess\" class=\"tin-center\">\r\n <p><em>Access Restricted</em></p>\r\n </div>\r\n\r\n <div [ngClass]=\"field.span || field.type =='section' || field.type =='file' || field.type =='file-view' ? 'span-col' : ''\" *ngFor=\"let field of getVisibleFields()\">\r\n\r\n <ng-container >\r\n\r\n <ng-container [ngSwitch]=\"field.type\" class=\"highlight\">\r\n\r\n <div *ngSwitchCase=\"'section'\" class=\"title\">\r\n <label style=\"font-size: larger;\">{{field.alias ?? field.name | camelToWords}}</label>\r\n </div>\r\n\r\n <ng-container *ngSwitchCase=\"'file'\">\r\n <div class=\"mt-1 mb-2\" *ngIf=\"config.mode !='view'\">\r\n <spa-attach [message]=\"field.alias ?? 'Drag and Drop files here'\" [(files)]=\"files\" [fileOptions]=\"field.fileOptions\"></spa-attach>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'file-view'\">\r\n <div class=\"mt-1 mb-2\" *ngIf=\"config.mode && config.mode !='create'\">\r\n <spa-viewer [fileAction]=\"field.loadAction\" [path]=\"field.path\" [folderName]=\"data[field.keyField]\" ></spa-viewer>\r\n </div>\r\n </ng-container>\r\n\r\n\r\n <label *ngSwitchCase=\"'blank'\"></label>\r\n\r\n <label *ngSwitchCase=\"'string'\" [ngStyle]=\"{'font-size':field.size ?? '14px'}\" >{{data[field.name] ?? field.alias ?? field.name}} {{field.suffix ?? ''}}</label>\r\n\r\n <spa-label *ngSwitchCase=\"'label'\" [display]=\"field.alias ?? field.name | camelToWords\" [value]=\"data[field.name]\" (valueChange)=\"inputChanged(field, data[field.name])\" [format]=\"field.format ?? 'text'\" [suffix]=\"field.suffix\"></spa-label>\r\n\r\n <spa-number *ngSwitchCase=\"'number'\" [display]=\"field.alias ?? field.name | camelToWords\" [width]=\"field.width\" [(value)]=\"data[field.name]\" (valueChange)=\"inputChanged(field, data[field.name])\" [required]=\"field.required\" [min]=\"field.min\" [max]=\"field.max\" [readonly]=\"testReadOnly(field)\" [hint]=\"field.hint\" [infoMessage]=\"field.infoMessage\" [suffix]=\"field.suffix\" [copyContent]=\"field.copyContent\" [clearContent]=\"field.clearContent\"></spa-number>\r\n\r\n <spa-money *ngSwitchCase=\"'money'\" [display]=\"field.alias ?? field.name | camelToWords\" [width]=\"field.width\" [(value)]=\"data[field.name]\" (valueChange)=\"inputChanged(field, data[field.name])\" [required]=\"field.required\" [min]=\"field.min\" [max]=\"field.max\" [readonly]=\"testReadOnly(field)\" [hint]=\"field.hint\" [infoMessage]=\"field.infoMessage\" [suffix]=\"field.suffix\" [copyContent]=\"field.copyContent\" [clearContent]=\"field.clearContent\"></spa-money>\r\n\r\n <spa-check *ngSwitchCase=\"'checkbox'\" [display]=\"field.alias ?? field.name | camelToWords\" [(value)]=\"data[field.name]\" (valueChange)=\"inputChanged(field, data[field.name])\" [readonly]=\"testReadOnly(field)\" [infoMessage]=\"field.infoMessage\" ></spa-check>\r\n\r\n <spa-date *ngSwitchCase=\"'date'\" [display]=\"field.alias ?? field.name | camelToWords\" [width]=\"field.width\" [(value)]=\"data[field.name]\" (valueChange)=\"inputChanged(field, data[field.name])\" [min]=\"field?.min\" [max]=\"field?.max\" [readonly]=\"testReadOnly(field)\" [hint]=\"field.hint\" [infoMessage]=\"field.infoMessage\" ></spa-date>\r\n\r\n <spa-datetime *ngSwitchCase=\"'datetime'\" [display]=\"field.alias ?? field.name | camelToWords\" [(value)]=\"data[field.name]\" (valueChange)=\"inputChanged(field, data[field.name])\" [readonly]=\"testReadOnly(field)\" [min]=\"field.min\" [max]=\"field.max\" [infoMessage]=\"field.infoMessage\" ></spa-datetime>\r\n\r\n <spa-email *ngSwitchCase=\"'email'\" [display]=\"field.alias ?? field.name | camelToWords\" [(value)]=\"data[field.name]\" (valueChange)=\"inputChanged(field,data[field.name])\" [required]=\"field.required\" [readonly]=\"testReadOnly(field)\" [hint]=\"field.hint\" [infoMessage]=\"field.infoMessage\" [suffix]=\"field.suffix\" [copyContent]=\"field.copyContent\" [clearContent]=\"field.clearContent\"></spa-email>\r\n\r\n <spa-text *ngSwitchCase=\"'password'\" [format]=\"'password'\" [display]=\"field.alias ?? field.name | camelToWords\" [width]=\"field.width\" [options]=\"field.options\" [optionValue]=\"field.optionValue ?? 'value'\" [rows]=\"field.rows\" [(value)]=\"data[field.name]\" (valueChange)=\"inputChanged(field,data[field.name])\" [required]=\"field.required\" [min]=\"field.min\" [max]=\"field.max\" [readonly]=\"testReadOnly(field)\" [hint]=\"field.hint\" [infoMessage]=\"field.infoMessage\" [suffix]=\"field.suffix\" [copyContent]=\"field.copyContent\" [clearContent]=\"field.clearContent\"></spa-text>\r\n\r\n\r\n <ng-container *ngSwitchCase=\"'select'\">\r\n <ng-container *ngTemplateOutlet=\"dynamicSelectTemplate; context: {\r\n $implicit: field,\r\n field: field,\r\n data: data,\r\n testReadOnly: testReadOnly.bind(this),\r\n selectChanged: selectChanged.bind(this)\r\n }\">\r\n </ng-container>\r\n </ng-container>\r\n\r\n\r\n <spa-multi-select *ngSwitchCase=\"'multi-select'\" [display]=\"field.alias ?? field.name | camelToWords\" [width]=\"field.width\" [options]=\"field.options\" [optionDisplay]=\"field.optionDisplay ?? 'name'\" [optionValue]=\"field.optionValue ?? 'value'\" [(value)]=\"data[field.name]\" (valueChange)=\"inputChanged(field, data[field.name])\" [required]=\"field.required\" [readonly]=\"testReadOnly(field)\" [hint]=\"field.hint\" [infoMessage]=\"field.infoMessage\" [suffix]=\"field.suffix\" [copyContent]=\"field.copyContent\" [clearContent]=\"field.clearContent\" [loadAction]=\"field.loadAction\">\r\n </spa-multi-select>\r\n\r\n <spa-multi-text *ngSwitchCase=\"'multi-text'\" [strict]=\"field.strict\" [display]=\"field.alias ?? field.name | camelToWords\" [options]=\"field.options\" [optionDisplay]=\"field.optionDisplay ?? 'name'\" [optionValue]=\"field.optionValue ?? 'value'\" [(value)]=\"data[field.name]\" (valueChange)=\"inputChanged(field,data[field.name])\" [required]=\"field.required\" [readonly]=\"testReadOnly(field)\" [hint]=\"field.hint\" [infoMessage]=\"field.infoMessage\" [suffix]=\"field.suffix\" [copyContent]=\"field.copyContent\" [clearContent]=\"field.clearContent\" [loadAction]=\"field.loadAction\"></spa-multi-text>\r\n\r\n\r\n\r\n <ng-container *ngSwitchCase=\"'composite'\">\r\n <div class=\"composite-field-container\">\r\n <div class=\"composite-field-group\">\r\n <ng-container *ngFor=\"let subfield of getVisibleSubfields(field)\">\r\n <ng-container [ngSwitch]=\"subfield.type\">\r\n\r\n <spa-number *ngSwitchCase=\"'number'\" [display]=\"subfield.alias ?? subfield.name | camelToWords\" [width]=\"subfield.width\" [(value)]=\"data[subfield.name]\" (valueChange)=\"inputChanged(subfield, $event)\" [required]=\"subfield.required\" [min]=\"subfield.min\" [max]=\"subfield.max\" [readonly]=\"testReadOnly(field) || testReadOnly(subfield)\" [hint]=\"subfield.hint\" [infoMessage]=\"subfield.infoMessage\" [suffix]=\"subfield.suffix\" [copyContent]=\"subfield.copyContent\" [clearContent]=\"subfield.clearContent\"></spa-number>\r\n\r\n <spa-money *ngSwitchCase=\"'money'\" [display]=\"subfield.alias ?? subfield.name | camelToWords\" [width]=\"subfield.width\" [(value)]=\"data[subfield.name]\" (valueChange)=\"inputChanged(subfield, $event)\" [required]=\"subfield.required\" [min]=\"subfield.min\" [max]=\"subfield.max\" [readonly]=\"testReadOnly(field) || testReadOnly(subfield)\" [hint]=\"subfield.hint\" [infoMessage]=\"subfield.infoMessage\" [suffix]=\"subfield.suffix\" [copyContent]=\"field.copyContent\" [clearContent]=\"field.clearContent\"></spa-money>\r\n\r\n <spa-check *ngSwitchCase=\"'checkbox'\" [display]=\"subfield.alias ?? subfield.name | camelToWords\" [(value)]=\"data[subfield.name]\" (valueChange)=\"inputChanged(subfield, $event)\" [readonly]=\"testReadOnly(field) || testReadOnly(subfield)\" [infoMessage]=\"subfield.infoMessage\" ></spa-check>\r\n\r\n <spa-date *ngSwitchCase=\"'date'\" [display]=\"subfield.alias ?? subfield.name | camelToWords\" [width]=\"subfield.width\" [(value)]=\"data[subfield.name]\" (valueChange)=\"inputChanged(subfield, $event)\" [min]=\"subfield.min\" [max]=\"subfield.max\" [readonly]=\"testReadOnly(field) || testReadOnly(subfield)\" [hint]=\"subfield.hint\" [infoMessage]=\"subfield.infoMessage\" ></spa-date>\r\n\r\n <spa-datetime *ngSwitchCase=\"'datetime'\" [display]=\"subfield.alias ?? subfield.name | camelToWords\" [(value)]=\"data[subfield.name]\" (valueChange)=\"inputChanged(subfield, $event)\" [readonly]=\"testReadOnly(field) || testReadOnly(subfield)\" [min]=\"subfield.min\" [max]=\"subfield.max\" [infoMessage]=\"subfield.infoMessage\" ></spa-datetime>\r\n\r\n <ng-container *ngSwitchCase=\"'select'\">\r\n <ng-container *ngTemplateOutlet=\"dynamicSelectTemplate; context: {\r\n $implicit: field,\r\n field: field,\r\n data: data,\r\n testReadOnly: testReadOnly.bind(this),\r\n selectChanged: selectChanged.bind(this)\r\n }\">\r\n </ng-container>\r\n </ng-container>\r\n\r\n <spa-text *ngSwitchDefault [display]=\"subfield.alias ?? subfield.name | camelToWords\" [width]=\"subfield.width\" [options]=\"subfield.options\" [optionDisplay]=\"subfield.optionDisplay ?? 'name'\" [optionValue]=\"subfield.optionValue ?? 'value'\" [rows]=\"subfield.rows\" [(value)]=\"data[subfield.name]\" (valueChange)=\"inputChanged(subfield, $event)\" [required]=\"subfield.required\" [min]=\"subfield.min\" [max]=\"subfield.max\" [readonly]=\"testReadOnly(field) || testReadOnly(subfield)\" [hint]=\"subfield.hint\" [infoMessage]=\"subfield.infoMessage\" [suffix]=\"subfield.suffix\" [copyContent]=\"subfield.copyContent\" [clearContent]=\"subfield.clearContent\" [loadAction]=\"subfield.loadAction\"></spa-text>\r\n\r\n\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n\r\n <spa-text *ngSwitchDefault [display]=\"field.alias ?? field.name | camelToWords\" [width]=\"field.width\" [options]=\"field.options\" [optionDisplay]=\"field.optionDisplay ?? 'name'\" [optionValue]=\"field.optionValue ?? 'value'\" [rows]=\"field.rows\" [(value)]=\"data[field.name]\" (valueChange)=\"inputChanged(field,data[field.name])\" [required]=\"field.required\" [min]=\"field.min\" [max]=\"field.max\" [readonly]=\"testReadOnly(field)\" [hint]=\"field.hint\" [infoMessage]=\"field.infoMessage\" [suffix]=\"field.suffix\" [copyContent]=\"field.copyContent\" [clearContent]=\"field.clearContent\" [loadAction]=\"field.loadAction\"></spa-text>\r\n\r\n </ng-container>\r\n\r\n </ng-container>\r\n\r\n </div>\r\n\r\n\r\n <div class=\"span-col-center\" *ngIf=\"config.button\">\r\n <button mat-raised-button color=\"primary\" (click)=\"buttonClicked()\" cdkFocusInitial>{{buttonDisplay}}</button>\r\n </div>\r\n\r\n\r\n</div>\r\n", styles: [".title{margin-top:1em;font-size:larger;font-weight:300}.composite-field-group{display:flex;flex-direction:row;flex-wrap:wrap;gap:12px}\n"] }]
|