onshore-forms 0.0.42 → 0.0.45
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/components/form-autocomplete-item/form-autocomplete-item.component.mjs +6 -3
- package/esm2020/lib/components/form-checkbox-item/form-checkbox-item.component.mjs +6 -3
- package/esm2020/lib/components/form-colorpicker-item/form-colorpicker-item.component.mjs +6 -3
- package/esm2020/lib/components/form-datetime-item/form-datetime-item.component.mjs +6 -3
- package/esm2020/lib/components/form-dropdown-item/form-dropdown-item.component.mjs +6 -3
- package/esm2020/lib/components/form-image-item/form-image-item.component.mjs +5 -2
- package/esm2020/lib/components/form-input-item/form-input-item.component.mjs +6 -3
- package/esm2020/lib/components/form-item-container/form-item-container.component.mjs +6 -3
- package/esm2020/lib/components/form-sort-item/form-sort-item.component.mjs +6 -3
- package/esm2020/lib/components/form-switch-item/form-switch-item.component.mjs +6 -3
- package/esm2020/lib/models/form.models.mjs +1 -1
- package/esm2020/lib/onshore-forms.service.mjs +18 -8
- package/fesm2015/onshore-forms.mjs +67 -27
- package/fesm2015/onshore-forms.mjs.map +1 -1
- package/fesm2020/onshore-forms.mjs +67 -27
- package/fesm2020/onshore-forms.mjs.map +1 -1
- package/lib/components/form-autocomplete-item/form-autocomplete-item.component.d.ts +2 -1
- package/lib/components/form-checkbox-item/form-checkbox-item.component.d.ts +2 -1
- package/lib/components/form-colorpicker-item/form-colorpicker-item.component.d.ts +2 -1
- package/lib/components/form-datetime-item/form-datetime-item.component.d.ts +2 -1
- package/lib/components/form-dropdown-item/form-dropdown-item.component.d.ts +2 -1
- package/lib/components/form-image-item/form-image-item.component.d.ts +2 -1
- package/lib/components/form-input-item/form-input-item.component.d.ts +2 -1
- package/lib/components/form-item-container/form-item-container.component.d.ts +2 -1
- package/lib/components/form-sort-item/form-sort-item.component.d.ts +2 -1
- package/lib/components/form-switch-item/form-switch-item.component.d.ts +2 -1
- package/lib/models/form.models.d.ts +0 -1
- package/lib/onshore-forms.service.d.ts +1 -1
- package/package.json +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5tb2RlbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnNob3JlLWZvcm1zL3NyYy9saWIvbW9kZWxzL2Zvcm0ubW9kZWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPbnNob3JlRm9ybVRlbXBsYXRlTGF5b3V0LCBPbnNob3JlRm9ybVRlbXBsYXRlVHlwZSB9IGZyb20gJy4uL2VudW1zL2Zvcm0uZW51bXMnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBPbnNob3JlQ291bnRyeUNvZGUge1xyXG4gIGlkOiBudW1iZXI7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIGFscGhhMjogc3RyaW5nO1xyXG4gIGFscGhhMzogc3RyaW5nO1xyXG4gIGN1cnJlbmN5Pzogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE9uc2hvcmVMYW5ndWFnZUxvY2FsZSB7XHJcbiAgaWQ6IG51bWJlcjtcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgY29kZTogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE9uc2hvcmVGb3JtVGVtcGxhdGVJdGVtIHtcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgbGFiZWxTdHlsZT86IHN0cmluZztcclxuICB0eXBlPzogT25zaG9yZUZvcm1UZW1wbGF0ZVR5cGU7XHJcbiAgcmVxdWlyZWQ/OiBib29sZWFuO1xyXG4gIGxhYmVsPzogc3RyaW5nO1xyXG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xyXG4gIHRvb2x0aXA/OiBzdHJpbmc7XHJcbiAgZW5hYmxlZD86IGJvb2xlYW47XHJcbiAgbG9ja2VkPzogYm9vbGVhbjtcclxuICBsYXlvdXQ/OiBPbnNob3JlRm9ybVRlbXBsYXRlTGF5b3V0O1xyXG4gIG9wdGlvbnM/OiBPbnNob3JlRm9ybVRlbXBsYXRlT3B0aW9uc1tdIHwgdm9pZFtdO1xyXG4gIGlucHV0QWRkb24/
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5tb2RlbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnNob3JlLWZvcm1zL3NyYy9saWIvbW9kZWxzL2Zvcm0ubW9kZWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPbnNob3JlRm9ybVRlbXBsYXRlTGF5b3V0LCBPbnNob3JlRm9ybVRlbXBsYXRlVHlwZSB9IGZyb20gJy4uL2VudW1zL2Zvcm0uZW51bXMnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBPbnNob3JlQ291bnRyeUNvZGUge1xyXG4gIGlkOiBudW1iZXI7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIGFscGhhMjogc3RyaW5nO1xyXG4gIGFscGhhMzogc3RyaW5nO1xyXG4gIGN1cnJlbmN5Pzogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE9uc2hvcmVMYW5ndWFnZUxvY2FsZSB7XHJcbiAgaWQ6IG51bWJlcjtcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgY29kZTogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE9uc2hvcmVGb3JtVGVtcGxhdGVJdGVtIHtcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgbGFiZWxTdHlsZT86IHN0cmluZztcclxuICB0eXBlPzogT25zaG9yZUZvcm1UZW1wbGF0ZVR5cGU7XHJcbiAgcmVxdWlyZWQ/OiBib29sZWFuO1xyXG4gIGxhYmVsPzogc3RyaW5nO1xyXG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xyXG4gIHRvb2x0aXA/OiBzdHJpbmc7XHJcbiAgZW5hYmxlZD86IGJvb2xlYW47XHJcbiAgbG9ja2VkPzogYm9vbGVhbjtcclxuICBsYXlvdXQ/OiBPbnNob3JlRm9ybVRlbXBsYXRlTGF5b3V0O1xyXG4gIG9wdGlvbnM/OiBPbnNob3JlRm9ybVRlbXBsYXRlT3B0aW9uc1tdIHwgdm9pZFtdO1xyXG4gIGlucHV0QWRkb24/OiBzdHJpbmc7XHJcbiAgYWN0aW9uQnV0dG9uPzogYm9vbGVhbjtcclxuICBhY3Rpb25CdXR0b25JY29uPzogc3RyaW5nO1xyXG4gIG5vR2FwPzogYm9vbGVhbjtcclxuICBkZWZhdWx0PzogYW55O1xyXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xyXG4gIHZhbGlkYXRpb25JdGVtcz86IHN0cmluZ1tdO1xyXG4gIHZhbGlkYXRvcnM/OiBhbnlbXTtcclxuICBzdWJmb3JtQXJyYXk/OiBPbnNob3JlRm9ybVRlbXBsYXRlSXRlbVtdO1xyXG4gIHN1YmZvcm1PYmplY3Q/OiBPbnNob3JlRm9ybVRlbXBsYXRlSXRlbVtdO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE9uc2hvcmVGb3JtVGVtcGxhdGVPcHRpb25zIHtcclxuICBsYWJlbDogc3RyaW5nO1xyXG4gIHZhbHVlOiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgT25zaG9yZUZvcm1BdXRvY29tcGxldGVJdGVtIHtcclxuICBmaXJzdExpbmVMYWJlbDogc3RyaW5nO1xyXG4gIHNlY29uZExpbmVMYWJlbD86IHN0cmluZztcclxuICB0aGlyZExpbmVMYWJlbD86IHN0cmluZztcclxuICBkYXRhOiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgT25zaG9yZUZvcm1JbWFnZVNldHRpbmdzIHtcclxuICBpbWFnZVdpZHRoPzogbnVtYmVyO1xyXG4gIGltYWdlSGVpZ2h0PzogbnVtYmVyO1xyXG4gIGNvbnRhaW5XaXRoaW5Bc3BlY3RSYXRpbz86IGJvb2xlYW47XHJcbiAgYXNwZWN0UmF0aW8/OiBudW1iZXI7XHJcbiAgaW1hZ2VTZWxlY3Rpb25FbmFibGVkPzogYm9vbGVhbjtcclxuICB3ZWJjYW1TZWxlY3Rpb25FbmFibGVkPzogYm9vbGVhbjtcclxuICBtZWRpYVNlbGVjdGlvbkVuYWJsZWQ/OiBib29sZWFuO1xyXG4gIGRlbGV0ZUVuYWJsZWQ/OiBib29sZWFuO1xyXG4gIHBsYWNlaG9sZGVySW1hZ2U/OiBzdHJpbmc7XHJcbiAgcGxhY2Vob2xkZXJJY29uPzogc3RyaW5nO1xyXG4gIGNvbnRhaW5lcldpZHRoPzogbnVtYmVyO1xyXG4gIGNvbnRhaW5lckhlaWdodD86IG51bWJlcjtcclxuICBpbWFnZVF1YWxpdHk/OiBudW1iZXI7XHJcbiAgbWF4RmlsZVNpemU/OiBudW1iZXI7XHJcbiAgZm9ybWF0PzogJ3BuZycgfCAnanBlZycgfCAnYm1wJyB8ICd3ZWJwJyB8ICdpY28nO1xyXG4gIGFsaWduSW1hZ2U/OiAnbGVmdCcgfCAnY2VudGVyJztcclxuICBjcm9wcGVyUHJldmlld0hlaWdodD86IG51bWJlcjtcclxuICBjcm9wcGVyUHJldmlld1dpZHRoPzogbnVtYmVyO1xyXG4gIHdlYmNhbUhlaWdodD86IG51bWJlcjtcclxuICB3ZWJjYW1XaWR0aD86IG51bWJlcjtcclxuICBjaXJjbGVDcm9wcGVyPzogYm9vbGVhbjtcclxuICBiYWNrZ3JvdW5kQ29sb3I/OiBzdHJpbmc7XHJcbn1cclxuXHJcblxyXG4iXX0=
|
|
@@ -75,19 +75,29 @@ export class OnshoreFormsService {
|
|
|
75
75
|
formGroup(form, name) {
|
|
76
76
|
return form.get(name);
|
|
77
77
|
}
|
|
78
|
-
addFormArrayItem(
|
|
78
|
+
addFormArrayItem(formArray, item) {
|
|
79
79
|
let formControls = {};
|
|
80
80
|
if (item) {
|
|
81
81
|
item.subformArray?.forEach((subitem) => {
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
82
|
+
if (subitem.type == OnshoreFormTemplateType.subform) {
|
|
83
|
+
if (item.subformArray) {
|
|
84
|
+
formControls[subitem.name] = new FormArray([]);
|
|
85
|
+
}
|
|
86
|
+
if (item.subformObject) {
|
|
87
|
+
formControls[subitem.name] = new FormGroup({});
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
formControls[subitem.name] = new FormControl(subitem.default !== undefined ? subitem.default : '', {
|
|
92
|
+
validators: subitem.validators || [],
|
|
93
|
+
updateOn: 'change'
|
|
94
|
+
});
|
|
95
|
+
}
|
|
86
96
|
});
|
|
87
97
|
}
|
|
88
98
|
const formGroup = new FormGroup(formControls);
|
|
89
|
-
formGroup.setParent(
|
|
90
|
-
|
|
99
|
+
formGroup.setParent(formArray);
|
|
100
|
+
formArray.push(formGroup);
|
|
91
101
|
this.subscribeNestedFormGroup(formGroup);
|
|
92
102
|
}
|
|
93
103
|
removeFormArrayItem(form, index) {
|
|
@@ -192,4 +202,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImpor
|
|
|
192
202
|
providedIn: 'root'
|
|
193
203
|
}]
|
|
194
204
|
}], ctorParameters: function () { return []; } });
|
|
195
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib25zaG9yZS1mb3Jtcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvb25zaG9yZS1mb3Jtcy9zcmMvbGliL29uc2hvcmUtZm9ybXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBcUMsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQW9CLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEgsT0FBTyxFQUFjLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDekQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBTTdELE1BQU0sT0FBTyxtQkFBbUI7SUFVOUI7UUFOQSxxQkFBZ0IsR0FBYSxFQUFFLENBQUM7UUFFaEMsa0JBQWEsR0FBd0IsRUFBRSxDQUFDO1FBRWpDLGVBQVUsR0FBcUIsSUFBSSxPQUFPLEVBQVcsQ0FBQztRQUczRCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksU0FBUyxDQUFDLEVBQUUsRUFBRSxFQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUMsQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxJQUFXLElBQUk7UUFDYixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUVELElBQVcsVUFBVTtRQUNuQixPQUFPLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDO0lBQzNCLENBQUM7SUFFTSxTQUFTLENBQUMsS0FBVTtRQUN6QixJQUFJLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRU0sU0FBUztRQUNkLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLEtBQUssRUFBRSxzQkFB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QUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBBc3luY1ZhbGlkYXRvckZuLCBGb3JtQXJyYXksIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRpb25FcnJvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE9uc2hvcmVGb3JtVGVtcGxhdGVUeXBlIH0gZnJvbSAnLi9lbnVtcy9mb3JtLmVudW1zJztcbmltcG9ydCB7IE9uc2hvcmVGb3JtVGVtcGxhdGVJdGVtIH0gZnJvbSAnLi9tb2RlbHMvZm9ybS5tb2RlbHMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBPbnNob3JlRm9ybXNTZXJ2aWNlIHtcblxuICBfZm9ybTogRm9ybUdyb3VwO1xuICBfZm9ybVRlbXBsYXRlOiBPbnNob3JlRm9ybVRlbXBsYXRlSXRlbVtdO1xuICBfZm9ybVZhbGlkYXRpb25zOiBzdHJpbmdbXSA9IFtdO1xuXG4gIHN1YnNjcmlwdGlvbnM6IEFycmF5PFN1YnNjcmlwdGlvbj4gPSBbXTtcblxuICBwdWJsaWMgaXNMb2FkaW5nJDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5fZm9ybSA9IG5ldyBGb3JtR3JvdXAoe30sIHt1cGRhdGVPbjogJ2NoYW5nZSd9KTtcbiAgICB0aGlzLl9mb3JtVGVtcGxhdGUgPSBbXTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZm9ybSgpOiBGb3JtR3JvdXAge1xuICAgIHJldHVybiB0aGlzLl9mb3JtO1xuICB9XG5cbiAgcHVibGljIGdldCBmb3JtVmFsdWVzKCkge1xuICAgIHJldHVybiB0aGlzLl9mb3JtPy52YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBwYXRjaEZvcm0odmFsdWU6IGFueSkge1xuICAgIHRoaXMuX2Zvcm0/LnBhdGNoVmFsdWUodmFsdWUpO1xuICB9XG5cbiAgcHVibGljIHJlc2V0Rm9ybSgpIHtcbiAgICB0aGlzLl9mb3JtPy5yZXNldCgpO1xuICAgIHRoaXMuX2Zvcm0/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoeyBvbmx5U2VsZjogZmFsc2UsIGVtaXRFdmVudDogdHJ1ZSB9KTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaCgoc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24pID0+IHtcbiAgICAgIHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5fZm9ybSA9IG51bGwhO1xuICAgIHRoaXMuX2Zvcm1UZW1wbGF0ZSA9IG51bGwhO1xuICB9XG5cbiAgcHVibGljIHJlc2V0Rm9ybUNvbnRyb2wobmFtZTogc3RyaW5nLCB0b3VjaGVkOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICB0aGlzLl9mb3JtPy5nZXQobmFtZSkucmVzZXQoKTtcbiAgICBpZih0b3VjaGVkKSB7XG4gICAgICB0aGlzLl9mb3JtPy5nZXQobmFtZSkubWFya0FzVG91Y2hlZCgpO1xuICAgICAgdGhpcy5fZm9ybT8uZ2V0KG5hbWUpLm1hcmtBc0RpcnR5KCk7XG4gICAgfVxuICAgIHRoaXMuX2Zvcm0/LmdldChuYW1lKS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHsgb25seVNlbGY6IGZhbHNlLCBlbWl0RXZlbnQ6IHRydWUgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2VuZXJhdGVGb3JtKGZvcm1UZW1wbGF0ZTogT25zaG9yZUZvcm1UZW1wbGF0ZUl0ZW1bXSk6IEZvcm1Hcm91cCB8IG51bGwge1xuICAgIHRoaXMuX2Zvcm1UZW1wbGF0ZSA9IGZvcm1UZW1wbGF0ZTtcbiAgICB0aGlzLl9mb3JtID0gbmV3IEZvcm1Hcm91cCh7fSwge3VwZGF0ZU9uOiAnY2hhbmdlJ30pO1xuICAgIHRoaXMuX2Zvcm0gPSB0aGlzLml0ZXJhdGVOZXN0ZWRGb3JtKHRoaXMuX2Zvcm0sIGZvcm1UZW1wbGF0ZSk7XG4gICAgcmV0dXJuIHRoaXMuX2Zvcm07XG4gIH1cblxuICBwdWJsaWMgZm9ybVRlbXBsYXRlKG5hbWU6IHN0cmluZywgZm9ybVRlbXBsYXRlOiBPbnNob3JlRm9ybVRlbXBsYXRlSXRlbVtdID0gdGhpcy5fZm9ybVRlbXBsYXRlKTogT25zaG9yZUZvcm1UZW1wbGF0ZUl0ZW0ge1xuICAgIGxldCB0ZW1wbGF0ZTogT25zaG9yZUZvcm1UZW1wbGF0ZUl0ZW07XG5cbiAgICBpZihmb3JtVGVtcGxhdGUpIHtcbiAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCBmb3JtVGVtcGxhdGU/Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGl0ZW0gPSBmb3JtVGVtcGxhdGVbaV07XG4gICAgICAgIGlmKGl0ZW0ubmFtZSA9PT0gbmFtZSkge1xuICAgICAgICAgIHRlbXBsYXRlID0gaXRlbTtcbiAgICAgICAgICBpID0gZm9ybVRlbXBsYXRlLmxlbmd0aDtcbiAgICAgICAgfWVsc2UgaWYoaXRlbS5zdWJmb3JtQXJyYXkpIHtcbiAgICAgICAgICBjb25zdCBhcnJheVRlbXBsYXRlID0gdGhpcy5mb3JtVGVtcGxhdGUobmFtZSwgaXRlbS5zdWJmb3JtQXJyYXkpO1xuICAgICAgICAgIGlmKGFycmF5VGVtcGxhdGUpIHRlbXBsYXRlID0gYXJyYXlUZW1wbGF0ZTtcbiAgICAgICAgfWVsc2UgaWYoaXRlbS5zdWJmb3JtT2JqZWN0KSB7XG4gICAgICAgICAgY29uc3Qgb2JqZWN0VGVtcGxhdGUgPSB0aGlzLmZvcm1UZW1wbGF0ZShuYW1lLCBpdGVtLnN1YmZvcm1PYmplY3QpO1xuICAgICAgICAgIGlmKG9iamVjdFRlbXBsYXRlKSB0ZW1wbGF0ZSA9IG9iamVjdFRlbXBsYXRlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRlbXBsYXRlITtcbiAgfVxuXG4gIHB1YmxpYyBmb3JtQ29udHJvbChuYW1lOiBzdHJpbmcsIGZvcm1Hcm91cDogRm9ybUdyb3VwIHwgbnVsbCA9IHRoaXMuX2Zvcm0pOiBGb3JtQ29udHJvbCB7XG4gICAgcmV0dXJuIGZvcm1Hcm91cD8uZ2V0KG5hbWUpIGFzIEZvcm1Db250cm9sO1xuICB9XG5cbiAgcHVibGljIGZvcm1BcnJheShuYW1lOiBzdHJpbmcpOiBGb3JtQXJyYXkge1xuICAgIHJldHVybiB0aGlzLl9mb3JtPy5nZXQobmFtZSkgYXMgRm9ybUFycmF5O1xuICB9XG5cbiAgcHVibGljIGZvcm1Hcm91cChmb3JtOiBGb3JtR3JvdXAsIG5hbWU6IHN0cmluZyk6IEZvcm1Hcm91cCAge1xuICAgIHJldHVybiBmb3JtLmdldChuYW1lKSBhcyBGb3JtR3JvdXA7XG4gIH1cblxuICBwdWJsaWMgYWRkRm9ybUFycmF5SXRlbShuYW1lOiBzdHJpbmcsIGl0ZW06IE9uc2hvcmVGb3JtVGVtcGxhdGVJdGVtKSB7XG4gICAgbGV0IGZvcm1Db250cm9scyA9IDxhbnk+e307XG5cbiAgICBpZihpdGVtKSB7XG4gICAgICBpdGVtLnN1YmZvcm1BcnJheT8uZm9yRWFjaCgoc3ViaXRlbTogT25zaG9yZUZvcm1UZW1wbGF0ZUl0ZW0pID0+IHtcbiAgICAgICAgZm9ybUNvbnRyb2xzW3N1Yml0ZW0ubmFtZV0gPSBuZXcgRm9ybUNvbnRyb2woc3ViaXRlbS5kZWZhdWx0ICE9PSB1bmRlZmluZWQgPyBzdWJpdGVtLmRlZmF1bHQgOiAnJywge1xuICAgICAgICAgIHZhbGlkYXRvcnM6IHN1Yml0ZW0udmFsaWRhdG9ycyB8fCBbXSxcbiAgICAgICAgICB1cGRhdGVPbjogJ2NoYW5nZSdcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBmb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwKGZvcm1Db250cm9scyk7XG4gICAgZm9ybUdyb3VwLnNldFBhcmVudCh0aGlzLmZvcm1BcnJheShuYW1lKSk7XG5cbiAgICB0aGlzLmZvcm1BcnJheShuYW1lKS5wdXNoKGZvcm1Hcm91cCk7XG5cbiAgICB0aGlzLnN1YnNjcmliZU5lc3RlZEZvcm1Hcm91cChmb3JtR3JvdXApO1xuICB9XG5cbiAgcHVibGljIHJlbW92ZUZvcm1BcnJheUl0ZW0oZm9ybTogRm9ybUFycmF5LCBpbmRleDogbnVtYmVyKSB7XG4gICAgZm9ybS5yZW1vdmVBdChpbmRleCk7XG4gIH1cblxuICBwdWJsaWMgc2V0Rm9ybVZhbGlkYXRpb25zKHZhbGlkYXRpb25zOiBzdHJpbmdbXSA9IFtdKSB7XG4gICAgdGhpcy5fZm9ybVZhbGlkYXRpb25zID0gdmFsaWRhdGlvbnM7XG4gIH1cblxuICBwdWJsaWMgZW5hYmxlKCkge1xuICAgIHRoaXMuX2Zvcm1UZW1wbGF0ZS5mb3JFYWNoKChpdGVtOiBPbnNob3JlRm9ybVRlbXBsYXRlSXRlbSkgPT4ge1xuICAgICAgaXRlbS5lbmFibGVkID0gdHJ1ZTtcbiAgICB9KTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuX2Zvcm0/LmVuYWJsZSh7b25seVNlbGY6IHRydWUsIGVtaXRFdmVudDogZmFsc2V9KTtcbiAgICB9LCAxMDApO1xuICB9XG5cbiAgcHVibGljIGRpc2FibGUoKSB7XG4gICAgdGhpcy5fZm9ybVRlbXBsYXRlLmZvckVhY2goKGl0ZW06IE9uc2hvcmVGb3JtVGVtcGxhdGVJdGVtKSA9PiB7XG4gICAgICBpdGVtLmVuYWJsZWQgPSBmYWxzZTtcbiAgICB9KTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuX2Zvcm0/LmRpc2FibGUoe29ubHlTZWxmOiB0cnVlLCBlbWl0RXZlbnQ6IGZhbHNlfSk7XG4gICAgfSwgMTAwKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRFcnJvcihjb250cm9sOiBzdHJpbmcsIGVycm9yOiBPYmplY3QpIHtcbiAgICBjb25zdCBlcnJvcnMgPSB7Li4udGhpcy5mb3JtQ29udHJvbChjb250cm9sKS5lcnJvcnMgPz8ge30sIC4uLmVycm9yfSA7XG4gICAgdGhpcy5mb3JtQ29udHJvbChjb250cm9sKS5zZXRFcnJvcnMoZXJyb3JzKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRMb2FkZXIobG9hZGVycyQ6IFN1YmplY3Q8Ym9vbGVhbj5bXSkge1xuICAgIGxvYWRlcnMkLmZvckVhY2goJGxvYWRlciA9PiB7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCgkbG9hZGVyLnN1YnNjcmliZShpc0xvYWRpbmcgPT4ge1xuICAgICAgICBpc0xvYWRpbmcgPyB0aGlzLmRpc2FibGUoKSA6IHRoaXMuZW5hYmxlKCk7XG4gICAgICAgIHRoaXMuaXNMb2FkaW5nJC5uZXh0KGlzTG9hZGluZyk7XG4gICAgICB9KSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbG9jayhsb2NrU3ViZmllbGRzOiBib29sZWFuID0gdHJ1ZSkge1xuICAgIHRoaXMuX2Zvcm1UZW1wbGF0ZS5mb3JFYWNoKChpdGVtOiBPbnNob3JlRm9ybVRlbXBsYXRlSXRlbSkgPT4ge1xuICAgICAgaXRlbS5sb2NrZWQgPSB0cnVlO1xuICAgICAgaWYoaXRlbS5zdWJmb3JtQXJyYXkgJiYgbG9ja1N1YmZpZWxkcykge1xuICAgICAgICBpdGVtLnN1YmZvcm1BcnJheS5mb3JFYWNoKCBzdWJpdGVtID0+IHtcbiAgICAgICAgICBzdWJpdGVtLmxvY2tlZCA9IHRydWU7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHVubG9jaygpIHtcbiAgICB0aGlzLl9mb3JtVGVtcGxhdGUuZm9yRWFjaCgoaXRlbTogT25zaG9yZUZvcm1UZW1wbGF0ZUl0ZW0pID0+IHtcbiAgICAgIGl0ZW0ubG9ja2VkID0gZmFsc2U7XG4gICAgICBpZihpdGVtLnN1YmZvcm1BcnJheSkge1xuICAgICAgICBpdGVtLnN1YmZvcm1BcnJheS5mb3JFYWNoKCBzdWJpdGVtID0+IHtcbiAgICAgICAgICBzdWJpdGVtLmxvY2tlZCA9IGZhbHNlO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGl0ZXJhdGVOZXN0ZWRGb3JtKGZvcm06IEZvcm1Hcm91cCwgZm9ybVRlbXBsYXRlOiBPbnNob3JlRm9ybVRlbXBsYXRlSXRlbVtdKTogYW55IHtcbiAgICBmb3JtVGVtcGxhdGUuZm9yRWFjaCgoaXRlbTogT25zaG9yZUZvcm1UZW1wbGF0ZUl0ZW0pID0+IHtcbiAgICAgIGlmKGl0ZW0udHlwZSA9PT0gT25zaG9yZUZvcm1UZW1wbGF0ZVR5cGUuc3ViZm9ybSkge1xuICAgICAgICBpZihpdGVtLnN1YmZvcm1BcnJheSkge1xuICAgICAgICAgIGZvcm0uY29udHJvbHNbaXRlbS5uYW1lXSA9IG5ldyBGb3JtQXJyYXkoW10pO1xuICAgICAgICAgIGZvcm0uY29udHJvbHNbaXRlbS5uYW1lXS5zZXRQYXJlbnQoZm9ybSk7XG4gICAgICAgICAgdGhpcy5zdWJzY3JpYmVOZXN0ZWRGb3JtQXJyYXkoZm9ybS5jb250cm9sc1tpdGVtLm5hbWVdIGFzIEZvcm1BcnJheSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYoaXRlbS5zdWJmb3JtT2JqZWN0KSB7XG4gICAgICAgICAgZm9ybS5jb250cm9sc1tpdGVtLm5hbWVdID0gbmV3IEZvcm1Hcm91cCh7fSk7XG4gICAgICAgICAgZm9ybS5jb250cm9sc1tpdGVtLm5hbWVdID0gdGhpcy5pdGVyYXRlTmVzdGVkRm9ybShmb3JtLmNvbnRyb2xzW2l0ZW0ubmFtZV0gYXMgRm9ybUdyb3VwLCBpdGVtLnN1YmZvcm1PYmplY3QpIGFzIEZvcm1Hcm91cDtcbiAgICAgICAgICB0aGlzLnN1YnNjcmliZU5lc3RlZEZvcm1Hcm91cChmb3JtLmNvbnRyb2xzW2l0ZW0ubmFtZV0gYXMgRm9ybUdyb3VwKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZm9ybS5hZGRDb250cm9sKGl0ZW0ubmFtZSwgbmV3IEZvcm1Db250cm9sKGl0ZW0uZGVmYXVsdCAhPT0gdW5kZWZpbmVkID8gaXRlbS5kZWZhdWx0IDogJycsIHtcbiAgICAgICAgICB2YWxpZGF0b3JzOiBpdGVtLnZhbGlkYXRvcnMgfHwgW10sXG4gICAgICAgICAgdXBkYXRlT246ICdjaGFuZ2UnXG4gICAgICAgIH0pKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBmb3JtO1xuICB9XG5cbiAgc3Vic2NyaWJlTmVzdGVkRm9ybUFycmF5KG5lc3RlZEZvcm1JdGVtOiBGb3JtQXJyYXkpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChuZXN0ZWRGb3JtSXRlbS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuZm9ybT8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7IG9ubHlTZWxmOiB0cnVlLCBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgIH0pKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChuZXN0ZWRGb3JtSXRlbS5zdGF0dXNDaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmZvcm0/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoeyBvbmx5U2VsZjogdHJ1ZSwgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICB9KSk7XG4gIH1cblxuICBzdWJzY3JpYmVOZXN0ZWRGb3JtR3JvdXAobmVzdGVkRm9ybUl0ZW06IEZvcm1Hcm91cCkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKG5lc3RlZEZvcm1JdGVtLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5mb3JtPy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHsgb25seVNlbGY6IHRydWUsIGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgfSkpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKG5lc3RlZEZvcm1JdGVtLnN0YXR1c0NoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuZm9ybT8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7IG9ubHlTZWxmOiB0cnVlLCBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgIH0pKTtcbiAgfVxuXG59XG4iXX0=
|
|
205
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib25zaG9yZS1mb3Jtcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvb25zaG9yZS1mb3Jtcy9zcmMvbGliL29uc2hvcmUtZm9ybXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDOztBQU03RCxNQUFNLE9BQU8sbUJBQW1CO0lBVTlCO1FBTkEscUJBQWdCLEdBQWEsRUFBRSxDQUFDO1FBRWhDLGtCQUFhLEdBQXdCLEVBQUUsQ0FBQztRQUVqQyxlQUFVLEdBQXFCLElBQUksT0FBTyxFQUFXLENBQUM7UUFHM0QsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLFNBQVMsQ0FBQyxFQUFFLEVBQUUsRUFBQyxRQUFRLEVBQUUsUUFBUSxFQUFDLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBVyxJQUFJO1FBQ2IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFFRCxJQUFXLFVBQVU7UUFDbkIsT0FBTyxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQztJQUMzQixDQUFDO0lBRU0sU0FBUyxDQUFDLEtBQVU7UUFDekIsSUFBSSxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVNLFNBQVM7UUFDZCxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxLQUFLLEVBQUUsc0JBQXNC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QUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNsRSxJQUFJLENBQUMsSUFBSSxFQUFFLHNCQUFzQixDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUMxRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQzs7Z0hBMU5VLG1CQUFtQjtvSEFBbkIsbUJBQW1CLGNBRmxCLE1BQU07MkZBRVAsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1BcnJheSwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgT25zaG9yZUZvcm1UZW1wbGF0ZVR5cGUgfSBmcm9tICcuL2VudW1zL2Zvcm0uZW51bXMnO1xuaW1wb3J0IHsgT25zaG9yZUZvcm1UZW1wbGF0ZUl0ZW0gfSBmcm9tICcuL21vZGVscy9mb3JtLm1vZGVscyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIE9uc2hvcmVGb3Jtc1NlcnZpY2Uge1xuXG4gIF9mb3JtOiBGb3JtR3JvdXA7XG4gIF9mb3JtVGVtcGxhdGU6IE9uc2hvcmVGb3JtVGVtcGxhdGVJdGVtW107XG4gIF9mb3JtVmFsaWRhdGlvbnM6IHN0cmluZ1tdID0gW107XG5cbiAgc3Vic2NyaXB0aW9uczogQXJyYXk8U3Vic2NyaXB0aW9uPiA9IFtdO1xuXG4gIHB1YmxpYyBpc0xvYWRpbmckOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLl9mb3JtID0gbmV3IEZvcm1Hcm91cCh7fSwge3VwZGF0ZU9uOiAnY2hhbmdlJ30pO1xuICAgIHRoaXMuX2Zvcm1UZW1wbGF0ZSA9IFtdO1xuICB9XG5cbiAgcHVibGljIGdldCBmb3JtKCk6IEZvcm1Hcm91cCB7XG4gICAgcmV0dXJuIHRoaXMuX2Zvcm07XG4gIH1cblxuICBwdWJsaWMgZ2V0IGZvcm1WYWx1ZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2Zvcm0/LnZhbHVlO1xuICB9XG5cbiAgcHVibGljIHBhdGNoRm9ybSh2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5fZm9ybT8ucGF0Y2hWYWx1ZSh2YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgcmVzZXRGb3JtKCkge1xuICAgIHRoaXMuX2Zvcm0/LnJlc2V0KCk7XG4gICAgdGhpcy5fZm9ybT8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7IG9ubHlTZWxmOiBmYWxzZSwgZW1pdEV2ZW50OiB0cnVlIH0pO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKChzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbikgPT4ge1xuICAgICAgc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLl9mb3JtID0gbnVsbCE7XG4gICAgdGhpcy5fZm9ybVRlbXBsYXRlID0gbnVsbCE7XG4gIH1cblxuICBwdWJsaWMgcmVzZXRGb3JtQ29udHJvbChuYW1lOiBzdHJpbmcsIHRvdWNoZWQ6IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgIHRoaXMuX2Zvcm0/LmdldChuYW1lKS5yZXNldCgpO1xuICAgIGlmKHRvdWNoZWQpIHtcbiAgICAgIHRoaXMuX2Zvcm0/LmdldChuYW1lKS5tYXJrQXNUb3VjaGVkKCk7XG4gICAgICB0aGlzLl9mb3JtPy5nZXQobmFtZSkubWFya0FzRGlydHkoKTtcbiAgICB9XG4gICAgdGhpcy5fZm9ybT8uZ2V0KG5hbWUpLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoeyBvbmx5U2VsZjogZmFsc2UsIGVtaXRFdmVudDogdHJ1ZSB9KTtcbiAgfVxuXG4gIHB1YmxpYyBnZW5lcmF0ZUZvcm0oZm9ybVRlbXBsYXRlOiBPbnNob3JlRm9ybVRlbXBsYXRlSXRlbVtdKTogRm9ybUdyb3VwIHwgbnVsbCB7XG4gICAgdGhpcy5fZm9ybVRlbXBsYXRlID0gZm9ybVRlbXBsYXRlO1xuICAgIHRoaXMuX2Zvcm0gPSBuZXcgRm9ybUdyb3VwKHt9LCB7dXBkYXRlT246ICdjaGFuZ2UnfSk7XG4gICAgdGhpcy5fZm9ybSA9IHRoaXMuaXRlcmF0ZU5lc3RlZEZvcm0odGhpcy5fZm9ybSwgZm9ybVRlbXBsYXRlKTtcbiAgICByZXR1cm4gdGhpcy5fZm9ybTtcbiAgfVxuXG4gIHB1YmxpYyBmb3JtVGVtcGxhdGUobmFtZTogc3RyaW5nLCBmb3JtVGVtcGxhdGU6IE9uc2hvcmVGb3JtVGVtcGxhdGVJdGVtW10gPSB0aGlzLl9mb3JtVGVtcGxhdGUpOiBPbnNob3JlRm9ybVRlbXBsYXRlSXRlbSB7XG4gICAgbGV0IHRlbXBsYXRlOiBPbnNob3JlRm9ybVRlbXBsYXRlSXRlbTtcblxuICAgIGlmKGZvcm1UZW1wbGF0ZSkge1xuICAgICAgZm9yKGxldCBpID0gMDsgaSA8IGZvcm1UZW1wbGF0ZT8ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgaXRlbSA9IGZvcm1UZW1wbGF0ZVtpXTtcbiAgICAgICAgaWYoaXRlbS5uYW1lID09PSBuYW1lKSB7XG4gICAgICAgICAgdGVtcGxhdGUgPSBpdGVtO1xuICAgICAgICAgIGkgPSBmb3JtVGVtcGxhdGUubGVuZ3RoO1xuICAgICAgICB9ZWxzZSBpZihpdGVtLnN1YmZvcm1BcnJheSkge1xuICAgICAgICAgIGNvbnN0IGFycmF5VGVtcGxhdGUgPSB0aGlzLmZvcm1UZW1wbGF0ZShuYW1lLCBpdGVtLnN1YmZvcm1BcnJheSk7XG4gICAgICAgICAgaWYoYXJyYXlUZW1wbGF0ZSkgdGVtcGxhdGUgPSBhcnJheVRlbXBsYXRlO1xuICAgICAgICB9ZWxzZSBpZihpdGVtLnN1YmZvcm1PYmplY3QpIHtcbiAgICAgICAgICBjb25zdCBvYmplY3RUZW1wbGF0ZSA9IHRoaXMuZm9ybVRlbXBsYXRlKG5hbWUsIGl0ZW0uc3ViZm9ybU9iamVjdCk7XG4gICAgICAgICAgaWYob2JqZWN0VGVtcGxhdGUpIHRlbXBsYXRlID0gb2JqZWN0VGVtcGxhdGU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGVtcGxhdGUhO1xuICB9XG5cbiAgcHVibGljIGZvcm1Db250cm9sKG5hbWU6IHN0cmluZywgZm9ybUdyb3VwOiBGb3JtR3JvdXAgfCBudWxsID0gdGhpcy5fZm9ybSk6IEZvcm1Db250cm9sIHtcbiAgICByZXR1cm4gZm9ybUdyb3VwPy5nZXQobmFtZSkgYXMgRm9ybUNvbnRyb2w7XG4gIH1cblxuICBwdWJsaWMgZm9ybUFycmF5KG5hbWU6IHN0cmluZyk6IEZvcm1BcnJheSB7XG4gICAgcmV0dXJuIHRoaXMuX2Zvcm0/LmdldChuYW1lKSBhcyBGb3JtQXJyYXk7XG4gIH1cblxuICBwdWJsaWMgZm9ybUdyb3VwKGZvcm06IEZvcm1Hcm91cCwgbmFtZTogc3RyaW5nKTogRm9ybUdyb3VwICB7XG4gICAgcmV0dXJuIGZvcm0uZ2V0KG5hbWUpIGFzIEZvcm1Hcm91cDtcbiAgfVxuXG4gIHB1YmxpYyBhZGRGb3JtQXJyYXlJdGVtKGZvcm1BcnJheTogRm9ybUFycmF5LCBpdGVtOiBPbnNob3JlRm9ybVRlbXBsYXRlSXRlbSkge1xuICAgIGxldCBmb3JtQ29udHJvbHMgPSA8YW55Pnt9O1xuXG4gICAgaWYoaXRlbSkge1xuICAgICAgaXRlbS5zdWJmb3JtQXJyYXk/LmZvckVhY2goKHN1Yml0ZW06IE9uc2hvcmVGb3JtVGVtcGxhdGVJdGVtKSA9PiB7XG4gICAgICAgIGlmKHN1Yml0ZW0udHlwZSA9PSBPbnNob3JlRm9ybVRlbXBsYXRlVHlwZS5zdWJmb3JtKSB7XG4gICAgICAgICAgaWYgKGl0ZW0uc3ViZm9ybUFycmF5KSB7XG4gICAgICAgICAgICBmb3JtQ29udHJvbHNbc3ViaXRlbS5uYW1lXSA9IG5ldyBGb3JtQXJyYXkoW10pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaXRlbS5zdWJmb3JtT2JqZWN0KSB7XG4gICAgICAgICAgICBmb3JtQ29udHJvbHNbc3ViaXRlbS5uYW1lXSA9IG5ldyBGb3JtR3JvdXAoe30pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBmb3JtQ29udHJvbHNbc3ViaXRlbS5uYW1lXSA9IG5ldyBGb3JtQ29udHJvbChzdWJpdGVtLmRlZmF1bHQgIT09IHVuZGVmaW5lZCA/IHN1Yml0ZW0uZGVmYXVsdCA6ICcnLCB7XG4gICAgICAgICAgICB2YWxpZGF0b3JzOiBzdWJpdGVtLnZhbGlkYXRvcnMgfHwgW10sXG4gICAgICAgICAgICB1cGRhdGVPbjogJ2NoYW5nZSdcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uc3QgZm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cChmb3JtQ29udHJvbHMpO1xuICAgIGZvcm1Hcm91cC5zZXRQYXJlbnQoZm9ybUFycmF5KTtcblxuICAgIGZvcm1BcnJheS5wdXNoKGZvcm1Hcm91cCk7XG5cbiAgICB0aGlzLnN1YnNjcmliZU5lc3RlZEZvcm1Hcm91cChmb3JtR3JvdXApO1xuICB9XG5cbiAgcHVibGljIHJlbW92ZUZvcm1BcnJheUl0ZW0oZm9ybTogRm9ybUFycmF5LCBpbmRleDogbnVtYmVyKSB7XG4gICAgZm9ybS5yZW1vdmVBdChpbmRleCk7XG4gIH1cblxuICBwdWJsaWMgc2V0Rm9ybVZhbGlkYXRpb25zKHZhbGlkYXRpb25zOiBzdHJpbmdbXSA9IFtdKSB7XG4gICAgdGhpcy5fZm9ybVZhbGlkYXRpb25zID0gdmFsaWRhdGlvbnM7XG4gIH1cblxuICBwdWJsaWMgZW5hYmxlKCkge1xuICAgIHRoaXMuX2Zvcm1UZW1wbGF0ZS5mb3JFYWNoKChpdGVtOiBPbnNob3JlRm9ybVRlbXBsYXRlSXRlbSkgPT4ge1xuICAgICAgaXRlbS5lbmFibGVkID0gdHJ1ZTtcbiAgICB9KTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuX2Zvcm0/LmVuYWJsZSh7b25seVNlbGY6IHRydWUsIGVtaXRFdmVudDogZmFsc2V9KTtcbiAgICB9LCAxMDApO1xuICB9XG5cbiAgcHVibGljIGRpc2FibGUoKSB7XG4gICAgdGhpcy5fZm9ybVRlbXBsYXRlLmZvckVhY2goKGl0ZW06IE9uc2hvcmVGb3JtVGVtcGxhdGVJdGVtKSA9PiB7XG4gICAgICBpdGVtLmVuYWJsZWQgPSBmYWxzZTtcbiAgICB9KTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuX2Zvcm0/LmRpc2FibGUoe29ubHlTZWxmOiB0cnVlLCBlbWl0RXZlbnQ6IGZhbHNlfSk7XG4gICAgfSwgMTAwKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRFcnJvcihjb250cm9sOiBzdHJpbmcsIGVycm9yOiBPYmplY3QpIHtcbiAgICBjb25zdCBlcnJvcnMgPSB7Li4udGhpcy5mb3JtQ29udHJvbChjb250cm9sKS5lcnJvcnMgPz8ge30sIC4uLmVycm9yfSA7XG4gICAgdGhpcy5mb3JtQ29udHJvbChjb250cm9sKS5zZXRFcnJvcnMoZXJyb3JzKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRMb2FkZXIobG9hZGVycyQ6IFN1YmplY3Q8Ym9vbGVhbj5bXSkge1xuICAgIGxvYWRlcnMkLmZvckVhY2goJGxvYWRlciA9PiB7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCgkbG9hZGVyLnN1YnNjcmliZShpc0xvYWRpbmcgPT4ge1xuICAgICAgICBpc0xvYWRpbmcgPyB0aGlzLmRpc2FibGUoKSA6IHRoaXMuZW5hYmxlKCk7XG4gICAgICAgIHRoaXMuaXNMb2FkaW5nJC5uZXh0KGlzTG9hZGluZyk7XG4gICAgICB9KSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbG9jayhsb2NrU3ViZmllbGRzOiBib29sZWFuID0gdHJ1ZSkge1xuICAgIHRoaXMuX2Zvcm1UZW1wbGF0ZS5mb3JFYWNoKChpdGVtOiBPbnNob3JlRm9ybVRlbXBsYXRlSXRlbSkgPT4ge1xuICAgICAgaXRlbS5sb2NrZWQgPSB0cnVlO1xuICAgICAgaWYoaXRlbS5zdWJmb3JtQXJyYXkgJiYgbG9ja1N1YmZpZWxkcykge1xuICAgICAgICBpdGVtLnN1YmZvcm1BcnJheS5mb3JFYWNoKCBzdWJpdGVtID0+IHtcbiAgICAgICAgICBzdWJpdGVtLmxvY2tlZCA9IHRydWU7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHVubG9jaygpIHtcbiAgICB0aGlzLl9mb3JtVGVtcGxhdGUuZm9yRWFjaCgoaXRlbTogT25zaG9yZUZvcm1UZW1wbGF0ZUl0ZW0pID0+IHtcbiAgICAgIGl0ZW0ubG9ja2VkID0gZmFsc2U7XG4gICAgICBpZihpdGVtLnN1YmZvcm1BcnJheSkge1xuICAgICAgICBpdGVtLnN1YmZvcm1BcnJheS5mb3JFYWNoKCBzdWJpdGVtID0+IHtcbiAgICAgICAgICBzdWJpdGVtLmxvY2tlZCA9IGZhbHNlO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGl0ZXJhdGVOZXN0ZWRGb3JtKGZvcm06IEZvcm1Hcm91cCwgZm9ybVRlbXBsYXRlOiBPbnNob3JlRm9ybVRlbXBsYXRlSXRlbVtdKTogYW55IHtcbiAgICBmb3JtVGVtcGxhdGUuZm9yRWFjaCgoaXRlbTogT25zaG9yZUZvcm1UZW1wbGF0ZUl0ZW0pID0+IHtcbiAgICAgIGlmKGl0ZW0udHlwZSA9PT0gT25zaG9yZUZvcm1UZW1wbGF0ZVR5cGUuc3ViZm9ybSkge1xuICAgICAgICBpZihpdGVtLnN1YmZvcm1BcnJheSkge1xuICAgICAgICAgIGZvcm0uY29udHJvbHNbaXRlbS5uYW1lXSA9IG5ldyBGb3JtQXJyYXkoW10pO1xuICAgICAgICAgIGZvcm0uY29udHJvbHNbaXRlbS5uYW1lXS5zZXRQYXJlbnQoZm9ybSk7XG4gICAgICAgICAgdGhpcy5zdWJzY3JpYmVOZXN0ZWRGb3JtQXJyYXkoZm9ybS5jb250cm9sc1tpdGVtLm5hbWVdIGFzIEZvcm1BcnJheSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYoaXRlbS5zdWJmb3JtT2JqZWN0KSB7XG4gICAgICAgICAgZm9ybS5jb250cm9sc1tpdGVtLm5hbWVdID0gbmV3IEZvcm1Hcm91cCh7fSk7XG4gICAgICAgICAgZm9ybS5jb250cm9sc1tpdGVtLm5hbWVdID0gdGhpcy5pdGVyYXRlTmVzdGVkRm9ybShmb3JtLmNvbnRyb2xzW2l0ZW0ubmFtZV0gYXMgRm9ybUdyb3VwLCBpdGVtLnN1YmZvcm1PYmplY3QpIGFzIEZvcm1Hcm91cDtcbiAgICAgICAgICB0aGlzLnN1YnNjcmliZU5lc3RlZEZvcm1Hcm91cChmb3JtLmNvbnRyb2xzW2l0ZW0ubmFtZV0gYXMgRm9ybUdyb3VwKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZm9ybS5hZGRDb250cm9sKGl0ZW0ubmFtZSwgbmV3IEZvcm1Db250cm9sKGl0ZW0uZGVmYXVsdCAhPT0gdW5kZWZpbmVkID8gaXRlbS5kZWZhdWx0IDogJycsIHtcbiAgICAgICAgICB2YWxpZGF0b3JzOiBpdGVtLnZhbGlkYXRvcnMgfHwgW10sXG4gICAgICAgICAgdXBkYXRlT246ICdjaGFuZ2UnXG4gICAgICAgIH0pKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gZm9ybTtcbiAgfVxuXG4gIHN1YnNjcmliZU5lc3RlZEZvcm1BcnJheShuZXN0ZWRGb3JtSXRlbTogRm9ybUFycmF5KSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2gobmVzdGVkRm9ybUl0ZW0udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmZvcm0/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoeyBvbmx5U2VsZjogdHJ1ZSwgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICB9KSk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2gobmVzdGVkRm9ybUl0ZW0uc3RhdHVzQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5mb3JtPy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHsgb25seVNlbGY6IHRydWUsIGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgfSkpO1xuICB9XG5cbiAgc3Vic2NyaWJlTmVzdGVkRm9ybUdyb3VwKG5lc3RlZEZvcm1JdGVtOiBGb3JtR3JvdXApIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChuZXN0ZWRGb3JtSXRlbS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuZm9ybT8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7IG9ubHlTZWxmOiB0cnVlLCBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgIH0pKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChuZXN0ZWRGb3JtSXRlbS5zdGF0dXNDaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmZvcm0/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoeyBvbmx5U2VsZjogdHJ1ZSwgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICB9KSk7XG4gIH1cblxufVxuIl19
|