@huntsman-cancer-institute/crud 17.9.2 → 17.9.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/components/crud-container.component.mjs +4 -4
- package/esm2022/components/crud.component.mjs +4 -4
- package/esm2022/crud.module.mjs +5 -5
- package/esm2022/pipes/field-viewable.pipe.mjs +4 -4
- package/esm2022/services/crud.service.mjs +4 -4
- package/fesm2022/huntsman-cancer-institute-crud.mjs +17 -17
- package/fesm2022/huntsman-cancer-institute-crud.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -47,8 +47,8 @@ export class CrudContainerComponent {
|
|
|
47
47
|
});
|
|
48
48
|
return forkJoin(requests);
|
|
49
49
|
}
|
|
50
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
51
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.
|
|
50
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CrudContainerComponent, deps: [{ token: i1.CrudService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
51
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CrudContainerComponent, selector: "hci-crud-container", inputs: { data: "data", saveable: "saveable", crudGroups: "crudGroups", ids: "ids" }, host: { properties: { "class": "this.classList" } }, viewQueries: [{ propertyName: "crudComponents", predicate: CrudComponent, descendants: true }], ngImport: i0, template: `
|
|
52
52
|
<ng-container *ngFor="let crudGroup of crudGroups" class="crud-group">
|
|
53
53
|
<div *ngIf="crudGroup.mode === 'singular'"
|
|
54
54
|
class="d-flex crud-group p-2">
|
|
@@ -64,7 +64,7 @@ export class CrudContainerComponent {
|
|
|
64
64
|
</ng-container>
|
|
65
65
|
`, isInline: true, styles: [".crud-group{background-color:#cfecfc;margin-bottom:1rem;border-radius:.5rem;border:#3d7a99 1px solid}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.CrudComponent, selector: "hci-crud", inputs: ["saveable", "editable", "className", "fields", "ids", "data", "styles"] }] }); }
|
|
66
66
|
}
|
|
67
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
67
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CrudContainerComponent, decorators: [{
|
|
68
68
|
type: Component,
|
|
69
69
|
args: [{ selector: "hci-crud-container", template: `
|
|
70
70
|
<ng-container *ngFor="let crudGroup of crudGroups" class="crud-group">
|
|
@@ -96,4 +96,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
|
|
|
96
96
|
type: ViewChildren,
|
|
97
97
|
args: [CrudComponent]
|
|
98
98
|
}] } });
|
|
99
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
99
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J1ZC1jb250YWluZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY3J1ZC9zcmMvY29tcG9uZW50cy9jcnVkLWNvbnRhaW5lci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRW5ILE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFFL0MsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLDBCQUEwQixDQUFDOzs7OztBQUVsRDs7Ozs7O0dBTUc7QUE2QkgsTUFBTSxPQUFPLHNCQUFzQjtJQVdqQyxZQUFvQixXQUF3QixFQUN4QixpQkFBb0M7UUFEcEMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQVZsQyxjQUFTLEdBQVcsb0JBQW9CLENBQUM7UUFHdEQsYUFBUSxHQUFZLElBQUksQ0FBQztJQU95QixDQUFDO0lBRTVELE9BQU8sQ0FBQyxJQUFTO1FBQ2YsSUFBSSxTQUFTLEVBQUUsRUFBRSxDQUFDO1lBQ2hCLE9BQU8sQ0FBQyxLQUFLLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztZQUNoRCxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RCLENBQUM7UUFFRCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUVqQixJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQW1CLEVBQUUsRUFBRTtZQUNsRCxLQUFLLElBQUksU0FBUyxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDdEMsSUFBSSxTQUFTLENBQUMsU0FBUyxLQUFLLElBQUksQ0FBQyxTQUFTLElBQUksU0FBUyxDQUFDLFNBQVMsRUFBRSxDQUFDO29CQUNsRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7b0JBQzdDLE1BQU07Z0JBQ1IsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxJQUFJO1FBQ0YsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFtQixFQUFFLEVBQUU7WUFDbEQsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2QsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksUUFBUSxHQUFzQixFQUFFLENBQUM7UUFFckMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFtQixFQUFFLEVBQUU7WUFDbEQsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQztRQUN2QyxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzVCLENBQUM7K0dBOUNVLHNCQUFzQjttR0FBdEIsc0JBQXNCLHdPQVNuQixhQUFhLGdEQW5DakI7Ozs7Ozs7Ozs7Ozs7O0dBY1Q7OzRGQVlVLHNCQUFzQjtrQkE1QmxDLFNBQVM7K0JBQ0Usb0JBQW9CLFlBQ3BCOzs7Ozs7Ozs7Ozs7OztHQWNUO2dIQWNxQixTQUFTO3NCQUE5QixXQUFXO3VCQUFDLE9BQU87Z0JBRVgsSUFBSTtzQkFBWixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxHQUFHO3NCQUFYLEtBQUs7Z0JBRXVCLGNBQWM7c0JBQTFDLFlBQVk7dUJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSG9zdEJpbmRpbmcsIElucHV0LCBpc0Rldk1vZGUsIFF1ZXJ5TGlzdCwgVmlld0NoaWxkcmVufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuaW1wb3J0IHtDcnVkU2VydmljZX0gZnJvbSBcIi4uL3NlcnZpY2VzL2NydWQuc2VydmljZVwiO1xyXG5pbXBvcnQge0NydWRDb21wb25lbnR9IGZyb20gXCIuL2NydWQuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSBcInJ4anMvT2JzZXJ2YWJsZVwiO1xyXG5pbXBvcnQge2ZvcmtKb2lufSBmcm9tIFwicnhqcy9PYnNlcnZhYmxlL2ZvcmtKb2luXCI7XHJcblxyXG4vKipcclxuICogVGhpcyBpcyBhIGdlbmVyaWMgY29tcG9uZW50IHRoYXQgaXMgZGVzaWduZWQgdG8gd29yayB3aXRoIHRoZSBjcnVkIGFwaS4gIFRoZSBjb21wb25lbnQgYnVpbGRzIGl0c2VsZiBiYXNlZCBvbiB0aGVcclxuICogbWV0YWRhdGEuICBJdCB0aWVzIHRvZ2V0aGVyIG11bHRpcGxlIGNydWQgY29tcG9uZW50cy4gIEZvciBleGFtcGxlLCBTdWJqZWN0IG9yIFN0dWR5U3ViamVjdCBtYXkgaGF2ZSBuYW1lcywgcGhvbmVcclxuICogbnVtYmVycywgb3IgYWRkcmVzc2VzIGFzc29jaWF0ZWQgd2l0aCBpdC4gIEVhY2ggb25lIGNvcnJlc3BvbmRpbmcgdG8gaXRzIG93biBDUlVEIHJlc3QgZW5kcG9pbnQuXHJcbiAqXHJcbiAqIEBzaW5jZSAxMC4wLjBcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImhjaS1jcnVkLWNvbnRhaW5lclwiLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjcnVkR3JvdXAgb2YgY3J1ZEdyb3Vwc1wiIGNsYXNzPVwiY3J1ZC1ncm91cFwiPlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwiY3J1ZEdyb3VwLm1vZGUgPT09ICdzaW5ndWxhcidcIlxyXG4gICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGNydWQtZ3JvdXAgcC0yXCI+XHJcbiAgICAgICAgPGg0IHN0eWxlPVwiZmxleDogMCAwIDE1JTtcIj57e2NydWRHcm91cC5kaXNwbGF5fX08L2g0PlxyXG4gICAgICAgIDxoY2ktY3J1ZCBbY2xhc3NOYW1lXT1cImNydWRHcm91cC5jbGFzc05hbWVcIlxyXG4gICAgICAgICAgICAgICAgICBbZmllbGRzXT1cImNydWRHcm91cC5kaXNwbGF5RmllbGRzXCJcclxuICAgICAgICAgICAgICAgICAgW3N0eWxlc109XCJjcnVkR3JvdXAuc3R5bGVzXCJcclxuICAgICAgICAgICAgICAgICAgW2lkc109XCJpZHNcIlxyXG4gICAgICAgICAgICAgICAgICBbZGF0YV09XCJjcnVkR3JvdXAuZGF0YVwiXHJcbiAgICAgICAgICAgICAgICAgIFtzYXZlYWJsZV09XCJzYXZlYWJsZVwiXHJcbiAgICAgICAgICAgICAgICAgIHN0eWxlPVwiZmxleDogMSAxIDg1JTtcIj48L2hjaS1jcnVkPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gIGAsXHJcbiAgc3R5bGVzOiBbYFxyXG4gIFxyXG4gICAgLmNydWQtZ3JvdXAge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2ZlY2ZjO1xyXG4gICAgICBtYXJnaW4tYm90dG9tOiAxcmVtO1xyXG4gICAgICBib3JkZXItcmFkaXVzOiAwLjVyZW07XHJcbiAgICAgIGJvcmRlcjogIzNkN2E5OSAxcHggc29saWQ7XHJcbiAgICB9XHJcbiAgICBcclxuICBgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ3J1ZENvbnRhaW5lckNvbXBvbmVudCB7XHJcblxyXG4gIEBIb3N0QmluZGluZyhcImNsYXNzXCIpIGNsYXNzTGlzdDogc3RyaW5nID0gXCJkLWZsZXggZmxleC1jb2x1bW5cIjtcclxuXHJcbiAgQElucHV0KCkgZGF0YTogYW55O1xyXG4gIEBJbnB1dCgpIHNhdmVhYmxlOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBjcnVkR3JvdXBzOiBhbnlbXTtcclxuICBASW5wdXQoKSBpZHM6IGFueVtdO1xyXG5cclxuICBAVmlld0NoaWxkcmVuKENydWRDb21wb25lbnQpIGNydWRDb21wb25lbnRzOiBRdWVyeUxpc3Q8Q3J1ZENvbXBvbmVudD47XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY3J1ZFNlcnZpY2U6IENydWRTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7fVxyXG5cclxuICBzZXREYXRhKGRhdGE6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKGlzRGV2TW9kZSgpKSB7XHJcbiAgICAgIGNvbnNvbGUuZGVidWcoXCJDcnVkQ29udGFpbmVyQ29tcG9uZW50LnNldERhdGFcIik7XHJcbiAgICAgIGNvbnNvbGUuZGVidWcoZGF0YSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5kYXRhID0gZGF0YTtcclxuXHJcbiAgICB0aGlzLmNydWRDb21wb25lbnRzLmZvckVhY2goKGNydWQ6IENydWRDb21wb25lbnQpID0+IHtcclxuICAgICAgZm9yIChsZXQgY3J1ZEdyb3VwIG9mIHRoaXMuY3J1ZEdyb3Vwcykge1xyXG4gICAgICAgIGlmIChjcnVkR3JvdXAuY2xhc3NOYW1lID09PSBjcnVkLmNsYXNzTmFtZSAmJiBjcnVkR3JvdXAuZGF0YUZpZWxkKSB7XHJcbiAgICAgICAgICBjcnVkLnNldERhdGEodGhpcy5kYXRhW2NydWRHcm91cC5kYXRhRmllbGRdKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzYXZlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jcnVkQ29tcG9uZW50cy5mb3JFYWNoKChjcnVkOiBDcnVkQ29tcG9uZW50KSA9PiB7XHJcbiAgICAgIGNydWQuc2F2ZSgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzYXZlSm9pbigpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgbGV0IHJlcXVlc3RzOiBPYnNlcnZhYmxlPGFueT5bXSA9IFtdO1xyXG5cclxuICAgIHRoaXMuY3J1ZENvbXBvbmVudHMuZm9yRWFjaCgoY3J1ZDogQ3J1ZENvbXBvbmVudCkgPT4ge1xyXG4gICAgICByZXF1ZXN0cy5wdXNoKGNydWQuZ2V0U2F2ZVJlcXVlc3QoKSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gZm9ya0pvaW4ocmVxdWVzdHMpO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -159,8 +159,8 @@ export class CrudComponent {
|
|
|
159
159
|
return this.crudService.post(this.className, this.data);
|
|
160
160
|
}
|
|
161
161
|
}
|
|
162
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
163
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.
|
|
162
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CrudComponent, deps: [{ token: i1.CrudService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
163
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CrudComponent, selector: "hci-crud", inputs: { saveable: "saveable", editable: "editable", className: "className", displayFields: ["fields", "displayFields"], ids: "ids", data: "data", styles: "styles" }, host: { properties: { "class": "this.classList" } }, viewQueries: [{ propertyName: "form", first: true, predicate: ["crudForm"], descendants: true, static: true }], ngImport: i0, template: `
|
|
164
164
|
<form #crudForm="ngForm"
|
|
165
165
|
class="d-flex flex-nowrap flex-row flex-grow-1">
|
|
166
166
|
<div class="d-flex flex-nowrap flex-column flex-grow-1">
|
|
@@ -239,7 +239,7 @@ export class CrudComponent {
|
|
|
239
239
|
</form>
|
|
240
240
|
`, isInline: true, styles: [".crud-input{width:100%}.crud-input:first-child{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.crud-input:last-child{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.ng-invalid{background-color:#ff646440}.phi{box-shadow:#c70 1px 1px 1px inset;border-color:orange}::ng-deep .hci-dropdown{min-width:20%}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.NgbPopover, selector: "[ngbPopover]", inputs: ["animation", "autoClose", "ngbPopover", "popoverTitle", "placement", "popperOptions", "triggers", "positionTarget", "container", "disablePopover", "popoverClass", "popoverContext", "openDelay", "closeDelay"], outputs: ["shown", "hidden"], exportAs: ["ngbPopover"] }, { kind: "component", type: i5.NativeSelectComponent, selector: "hci-native-select", inputs: ["class", "name", "label", "url", "entries", "required", "idKey", "displayKey", "disabled", "sortKey", "sortNumeric", "filterKey", "id", "filter"] }, { kind: "component", type: i6.BusyComponent, selector: "hci-busy", inputs: ["busy", "busySubjects", "getBusySubjects", "parentSelector", "rootClass", "icon", "iconSize", "showIcon", "mxAuto", "myAuto", "text", "template", "config"] }] }); }
|
|
241
241
|
}
|
|
242
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
242
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CrudComponent, decorators: [{
|
|
243
243
|
type: Component,
|
|
244
244
|
args: [{ selector: "hci-crud", template: `
|
|
245
245
|
<form #crudForm="ngForm"
|
|
@@ -341,4 +341,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
|
|
|
341
341
|
type: ViewChild,
|
|
342
342
|
args: ["crudForm", { static: true }]
|
|
343
343
|
}] } });
|
|
344
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J1ZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jcnVkL3NyYy9jb21wb25lbnRzL2NydWQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDVSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQzFFLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFHdEMsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRXhDLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7Ozs7QUFFckQ7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFnSEgsTUFBTSxPQUFPLGFBQWE7SUFzQnhCLFlBQW9CLFdBQXdCLEVBQ3hCLGlCQUFvQztRQURwQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBckJsQyxjQUFTLEdBQVcsb0JBQW9CLENBQUM7UUFFdEQsYUFBUSxHQUFZLElBQUksQ0FBQztRQUN6QixhQUFRLEdBQVksSUFBSSxDQUFDO1FBRWpCLGtCQUFhLEdBQWEsRUFBRSxDQUFDO1FBRXJDLFNBQUksR0FBUSxFQUFFLENBQUM7UUFNeEIsYUFBUSxHQUFRLEVBQUUsQ0FBQztRQUVuQixTQUFJLEdBQVksS0FBSyxDQUFDO0lBTXFDLENBQUM7SUFFNUQsZUFBZTtRQUNiLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUU7WUFDbkcsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7WUFFakIsS0FBSyxJQUFJLGlCQUFpQixJQUFJ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TSxFQUFFLElBQUksRUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSG9zdEJpbmRpbmcsIElucHV0LCBpc0Rldk1vZGUsXHJcbiAgVmlld0NoaWxkLCBPbkRlc3Ryb3lcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge05nRm9ybX0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcblxyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQge2ZpbmFsaXplfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuXHJcbmltcG9ydCB7Q3J1ZFNlcnZpY2V9IGZyb20gXCIuLi9zZXJ2aWNlcy9jcnVkLnNlcnZpY2VcIjtcclxuXHJcbi8qKlxyXG4gKiBUaGlzIGlzIGEgZ2VuZXJpYyBjb21wb25lbnQgdGhhdCBpcyBkZXNpZ25lZCB0byB3b3JrIHdpdGggdGhlIGNydWQgYXBpLiAgVGhlIGNvbXBvbmVudCBidWlsZHMgaXRzZWxmIGJhc2VkIG9uIHRoZVxyXG4gKiBtZXRhZGF0YS4gIFRoaXMgY29tcG9uZW50IGNvdWxkIGJlIGluZGVwZW5kZW50IHNvIGl0IGhhcyBpdHMgb3duIGZvcm0gYW5kIGNhbiBpbnRlcmFjdCB3aXRoIHRoZSBjcnVkIGFwaSBvbiBpdHMgb3duLlxyXG4gKlxyXG4gKiBcImlkXCI6IGZhbHNlLFxyXG4gKiBcImZpZWxkXCI6IFwiaWROYW1lVHlwZVwiLFxyXG4gKiBcInR5cGVcIjogXCJMb25nXCIsXHJcbiAqIFwibm90TnVsbFwiOiB0cnVlLFxyXG4gKiBcIm1pblwiOiBudWxsLFxyXG4gKiBcIm1heFwiOiBudWxsLFxyXG4gKiBcImRpY3Rpb25hcnlDbGFzc05hbWVcIjogXCJoY2kucmkuY29yZS5zdWJqZWN0Lm1vZGVsLk5hbWVUeXBlXCIsXHJcbiAqIFwicGhpXCI6IGZhbHNlXHJcbiAqXHJcbiAqIEBzaW5jZSAxMC4wLjBcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImhjaS1jcnVkXCIsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxmb3JtICNjcnVkRm9ybT1cIm5nRm9ybVwiXHJcbiAgICAgICAgICBjbGFzcz1cImQtZmxleCBmbGV4LW5vd3JhcCBmbGV4LXJvdyBmbGV4LWdyb3ctMVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtbm93cmFwIGZsZXgtY29sdW1uIGZsZXgtZ3Jvdy0xXCI+XHJcbiAgICAgICAgPGhjaS1idXN5IFtidXN5XT1cIltidXN5XVwiIFtzaG93SWNvbl09XCJmYWxzZVwiPjwvaGNpLWJ1c3k+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZmllbGRBcnJheSBvZiBmaWVsZHNcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1ub3dyYXAgbWItMVwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmaWVsZCBvZiBmaWVsZEFycmF5XCI+XHJcbiAgICAgICAgICAgICAgPGlucHV0ICpuZ0lmPVwiZmllbGQubWV0YWRhdGEudHlwZSA9PT0gJ1N0cmluZydcIiBhdHRyLmFyaWEtbGFiZWw9XCJoY2ktbmctY3J1ZC1pbnB1dC1zdHJpbmcte3tmaWVsZC5tZXRhZGF0YS5maWVsZH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWVsZC5kYXRhXCJcclxuICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbaWRdPVwiZmllbGQubWV0YWRhdGEuZmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJmaWVsZC5tZXRhZGF0YS5maWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhZWRpdGFibGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZmllbGQubWV0YWRhdGEuZmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbbWluTGVuZ3RoXT1cImZpZWxkLm1ldGFkYXRhLm1pblwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFttYXhMZW5ndGhdPVwiZmllbGQubWV0YWRhdGEubWF4XCJcclxuICAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cImZpZWxkLm1ldGFkYXRhLm5vdE51bGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNydWQtaW5wdXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJmaWVsZC5zdHlsZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbY2xhc3MucGhpXT1cImZpZWxkLm1ldGFkYXRhLnBoaVwiIC8+XHJcbiAgICAgICAgICAgICAgPGlucHV0ICpuZ0lmPVwiIWZpZWxkLm1ldGFkYXRhLmRpY3Rpb25hcnlDbGFzc05hbWUgJiYgKGZpZWxkLm1ldGFkYXRhLnR5cGUgPT09ICdJbnRlZ2VyJyB8fCBmaWVsZC5tZXRhZGF0YS50eXBlID09PSAnTG9uZycpXCJcclxuICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWVsZC5kYXRhXCIgYXR0ci5hcmlhLWxhYmVsPVwiaGNpLW5nLWNydWQtaW5wdXQtbnVtYmVyLXt7ZmllbGQubWV0YWRhdGEuZmllbGR9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbaWRdPVwiZmllbGQubWV0YWRhdGEuZmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJmaWVsZC5tZXRhZGF0YS5maWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhZWRpdGFibGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZmllbGQubWV0YWRhdGEuZmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbbWluTGVuZ3RoXT1cImZpZWxkLm1ldGFkYXRhLm1pblwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFttYXhMZW5ndGhdPVwiZmllbGQubWV0YWRhdGEubWF4XCJcclxuICAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cImZpZWxkLm1ldGFkYXRhLm5vdE51bGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNydWQtaW5wdXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJmaWVsZC5zdHlsZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbY2xhc3MucGhpXT1cImZpZWxkLm1ldGFkYXRhLnBoaVwiIC8+XHJcbiAgICAgICAgICAgICAgPGhjaS1uYXRpdmUtc2VsZWN0ICpuZ0lmPVwiZmllbGQubWV0YWRhdGEuZGljdGlvbmFyeUNsYXNzTmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmllbGQuZGF0YVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCJmaWVsZC5tZXRhZGF0YS5maWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuYW1lXT1cImZpZWxkLm1ldGFkYXRhLmZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3VybF09XCJmaWVsZC5tZXRhZGF0YS5kaWN0aW9uYXJ5Q2xhc3NOYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cImZpZWxkLm1ldGFkYXRhLnJlcXVpcmVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjcnVkLWlucHV0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwiZmllbGQuc3R5bGVzXCI+XHJcbiAgICAgICAgICAgICAgPC9oY2ktbmF0aXZlLXNlbGVjdD5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxidXR0b24gKm5nSWY9XCJzYXZlYWJsZSAmJiAhY3J1ZEZvcm0uZm9ybS5kaXJ0eVwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInNhdmUoKVwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWljb24gbXMtMVwiXHJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInRydWVcIj5cclxuICAgICAgICA8aSBjbGFzcz1cImZhciBmYS1jaXJjbGUgZmEtbGdcIj48L2k+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uICpuZ0lmPVwic2F2ZWFibGUgJiYgY3J1ZEZvcm0uZm9ybS5kaXJ0eSAmJiBjcnVkRm9ybS5mb3JtLnZhbGlkICYmICF3YXJuaW5nXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwic2F2ZSgpXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4taWNvbiBidG4tZ3JlZW4gbXMtMVwiPlxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwiIWJ1c3lcIj5cclxuICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWNoZWNrIGZhLWxnXCI+PC9pPlxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8c3BhbiAqbmdJZj1cImJ1c3lcIj5cclxuICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXNwaW5uZXIgZmEtbGcgZmEtc3BpblwiPjwvaT5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uICpuZ0lmPVwic2F2ZWFibGUgJiYgd2FybmluZ1wiXHJcbiAgICAgICAgICAgICAgW25nYlBvcG92ZXJdPVwid2FybmluZ1wiXHJcbiAgICAgICAgICAgICAgdHJpZ2dlcnM9XCJtb3VzZWVudGVyOm1vdXNlbGVhdmVcIlxyXG4gICAgICAgICAgICAgIHBvcG92ZXJDbGFzcz1cIndhcm5cIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJzYXZlKClcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1pY29uIGJ0bi1yZWQgbXMtMVwiPlxyXG4gICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWV4Y2xhbWF0aW9uLWNpcmNsZSBmYS1sZ1wiPjwvaT5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gKm5nSWY9XCJzYXZlYWJsZSAmJiBjcnVkRm9ybS5mb3JtLmRpcnR5ICYmICFjcnVkRm9ybS5mb3JtLnZhbGlkICYmICF3YXJuaW5nXCJcclxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1pY29uIGJ0bi1yZWQgbXMtMVwiPlxyXG4gICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXRpbWVzIGZhLWxnXCI+PC9pPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZm9ybT5cclxuICBgLFxyXG4gIHN0eWxlczogW2BcclxuXHJcbiAgICAuY3J1ZC1pbnB1dCB7XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgfVxyXG5cclxuICAgIC5jcnVkLWlucHV0OmZpcnN0LWNoaWxkIHtcclxuICAgICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMC4yNXJlbTtcclxuICAgICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMC4yNXJlbTtcclxuICAgIH1cclxuXHJcbiAgICAuY3J1ZC1pbnB1dDpsYXN0LWNoaWxkIHtcclxuICAgICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDAuMjVyZW07XHJcbiAgICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwLjI1cmVtO1xyXG4gICAgfVxyXG5cclxuICAgIC5uZy1pbnZhbGlkIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDEwMCwgMTAwLCAwLjI1KTtcclxuICAgIH1cclxuXHJcbiAgICAucGhpIHtcclxuICAgICAgYm94LXNoYWRvdzogI2NjNzcwMCAxcHggMXB4IDFweCBpbnNldDtcclxuICAgICAgYm9yZGVyLWNvbG9yOiBvcmFuZ2U7XHJcbiAgICB9XHJcblxyXG4gICAgOjpuZy1kZWVwIC5oY2ktZHJvcGRvd24ge1xyXG4gICAgICBtaW4td2lkdGg6IDIwJTtcclxuICAgIH1cclxuXHJcbiAgYF1cclxufSlcclxuZXhwb3J0IGNsYXNzIENydWRDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuICBASG9zdEJpbmRpbmcoXCJjbGFzc1wiKSBjbGFzc0xpc3Q6IHN0cmluZyA9IFwiZC1mbGV4IGZsZXgtbm93cmFwXCI7XHJcblxyXG4gIEBJbnB1dCgpIHNhdmVhYmxlOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBlZGl0YWJsZTogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgY2xhc3NOYW1lOiBzdHJpbmc7XHJcbiAgQElucHV0KFwiZmllbGRzXCIpIGRpc3BsYXlGaWVsZHM6IHN0cmluZ1tdID0gW107XHJcbiAgQElucHV0KCkgaWRzOiBhbnlbXTtcclxuICBASW5wdXQoKSBkYXRhOiBhbnkgPSB7fTtcclxuICBASW5wdXQoKSBzdHlsZXM6IGFueVtdO1xyXG5cclxuICBAVmlld0NoaWxkKFwiY3J1ZEZvcm1cIiwge3N0YXRpYzogdHJ1ZX0pIGZvcm06IE5nRm9ybTtcclxuXHJcbiAgaWQ6IHN0cmluZztcclxuICBtZXRhZGF0YTogYW55ID0ge307XHJcbiAgZmllbGRzOiBhbnlbXTtcclxuICBidXN5OiBib29sZWFuID0gZmFsc2U7XHJcbiAgd2FybmluZzogc3RyaW5nO1xyXG5cclxuICBtZXRhZGF0YVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNydWRTZXJ2aWNlOiBDcnVkU2VydmljZSxcclxuICAgICAgICAgICAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge31cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5tZXRhZGF0YVN1YnNjcmlwdGlvbiA9IHRoaXMuY3J1ZFNlcnZpY2UuZ2V0TWV0YWRhdGEodGhpcy5jbGFzc05hbWUpLnN1YnNjcmliZSgobWV0YWRhdGE6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLmZpZWxkcyA9IFtdO1xyXG5cclxuICAgICAgZm9yIChsZXQgZGlzcGxheUZpZWxkQXJyYXkgb2YgdGhpcy5kaXNwbGF5RmllbGRzKSB7XHJcbiAgICAgICAgbGV0IGZpZWxkQXJyYXk6IGFueVtdID0gW107XHJcblxyXG4gICAgICAgIGZvciAobGV0IGRpc3BsYXlGaWVsZCBvZiBkaXNwbGF5RmllbGRBcnJheSkge1xyXG4gICAgICAgICAgZm9yIChsZXQgbWV0YWRhdGFGaWVsZCBvZiBtZXRhZGF0YS5maWVsZHMpIHtcclxuICAgICAgICAgICAgaWYgKGRpc3BsYXlGaWVsZCA9PT0gbWV0YWRhdGFGaWVsZC5maWVsZCkge1xyXG4gICAgICAgICAgICAgIGxldCBmaWVsZDogYW55ID0ge1xyXG4gICAgICAgICAgICAgICAgZGF0YTogdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgICAgbWV0YWRhdGE6IG1ldGFkYXRhRmllbGQsXHJcbiAgICAgICAgICAgICAgICBzdHlsZXM6IHVuZGVmaW5lZFxyXG4gICAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICAgIGlmICh0aGlzLnN0eWxlcykge1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgZmllbGRTdHlsZSBvZiB0aGlzLnN0eWxlcykge1xyXG4gICAgICAgICAgICAgICAgICBpZiAoZGlzcGxheUZpZWxkID09PSBmaWVsZFN0eWxlLmZpZWxkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZmllbGQuc3R5bGVzID0gZmllbGRTdHlsZS5zdHlsZXM7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIGZpZWxkQXJyYXkucHVzaChmaWVsZCk7XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuZmllbGRzLnB1c2goZmllbGRBcnJheSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGZvciAobGV0IG1ldGFkYXRhRmllbGQgb2YgbWV0YWRhdGEuZmllbGRzKSB7XHJcbiAgICAgICAgaWYgKG1ldGFkYXRhRmllbGQuaWQpIHtcclxuICAgICAgICAgIHRoaXMuaWQgPSBtZXRhZGF0YUZpZWxkLmZpZWxkO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLm1ldGFkYXRhID0gbWV0YWRhdGE7XHJcblxyXG4gICAgICB0aGlzLnJlZnJlc2hEYXRhKCk7XHJcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMubWV0YWRhdGFTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFB1c2ggdGhlIGRhdGEgZnJvbSB0aGUgYm91bmQgaW5wdXRzIHRvIHRoZSBkYXRhIHJlcHJlc2VudGluZyB0aGlzIGNydWQgY2xhc3MuXHJcbiAgICovXHJcbiAgY3JlYXRlRGF0YSgpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5kYXRhKSB7XHJcbiAgICAgIHRoaXMuZGF0YSA9IHt9O1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmlkcykge1xyXG4gICAgICBmb3IgKGxldCBpZCBvZiB0aGlzLmlkcykge1xyXG4gICAgICAgIHRoaXMuZGF0YVtpZC5rZXldID0gaWQudmFsdWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBmb3IgKGxldCBmaWVsZEFycmF5IG9mIHRoaXMuZmllbGRzKSB7XHJcbiAgICAgIGZvciAobGV0IGZpZWxkIG9mIGZpZWxkQXJyYXkpIHtcclxuICAgICAgICB0aGlzLmRhdGFbZmllbGQubWV0YWRhdGEuZmllbGRdID0gZmllbGQuZGF0YTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSWYgZGF0YSBleGlzdHMsIHNldCBpdCBhbmQgcmVmcmVzaCB0aGUgYm91bmQgZGF0YS5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBkYXRhXHJcbiAgICovXHJcbiAgc2V0RGF0YShkYXRhOiBhbnkpOiB2b2lkIHtcclxuICAgIGlmIChpc0Rldk1vZGUoKSkge1xyXG4gICAgICBjb25zb2xlLmRlYnVnKFwiQ3J1ZENvbXBvbmVudC5zZXREYXRhOiBcIiArIHRoaXMuY2xhc3NOYW1lKTtcclxuICAgICAgY29uc29sZS5kZWJ1ZyhkYXRhKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoZGF0YSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMuZGF0YSA9IGRhdGE7XHJcbiAgICAgIHRoaXMucmVmcmVzaERhdGEoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZGF0YSA9IHt9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUHVzaGVzIHRoZSBkYXRhIHRvIHRoZSBmaWVsZHMgZm9yIGJpbmRpbmcgdG8gdGhlIGZvcm0gaW5wdXRzLlxyXG4gICAqL1xyXG4gIHJlZnJlc2hEYXRhKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZGF0YSAmJiB0aGlzLmZpZWxkcykge1xyXG4gICAgICBmb3IgKGxldCBmaWVsZEFycmF5IG9mIHRoaXMuZmllbGRzKSB7XHJcbiAgICAgICAgZm9yIChsZXQgZmllbGQgb2YgZmllbGRBcnJheSkge1xyXG4gICAgICAgICAgZmllbGQuZGF0YSA9IHRoaXMuZGF0YVtmaWVsZC5tZXRhZGF0YS5maWVsZF07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgYSBzYXZlIHJlcXVlc3QgYW5kIHJlZnJlc2hlcyB0aGUgZGF0YSB1cG9uIGEgc3VjY2Vzc2Z1bCBjYWxsLlxyXG4gICAqL1xyXG4gIHNhdmUoKTogdm9pZCB7XHJcbiAgICB0aGlzLmJ1c3kgPSB0cnVlO1xyXG4gICAgdGhpcy53YXJuaW5nID0gdW5kZWZpbmVkO1xyXG5cclxuICAgIHRoaXMuZ2V0U2F2ZVJlcXVlc3QoKVxyXG4gICAgICAucGlwZShmaW5hbGl6ZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5idXN5ID0gZmFsc2U7XHJcbiAgICAgIH0pKVxyXG4gICAgICAuc3Vic2NyaWJlKChkYXRhOiBPYmplY3QpID0+IHtcclxuICAgICAgICB0aGlzLnNldERhdGEoZGF0YSk7XHJcbiAgICAgICAgdGhpcy5mb3JtLmZvcm0ubWFya0FzUHJpc3RpbmUoKTtcclxuICAgICAgfSxcclxuICAgICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgdGhpcy53YXJuaW5nID0gZXJyb3I7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihcIkNydWRDb21wb25lbnQuc2F2ZTogXCIgKyB0aGlzLmNsYXNzTmFtZSArIFwiOiBcIiArIGVycm9yKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm4gYW4gb2JzZXJ2YWJsZSBmcm9tIHRoZSBjcnVkIHBvc3Qgb3IgcHV0LiAgVGhpcyBpcyB1c2VkIHN1Y2ggdGhhdCB0aGUgY3J1ZCBjb250YWluZXIgY2FuIG1hbmFnZSB0aGUgcmVxdWVzdFxyXG4gICAqIGZvciB0aGlzIGNvbXBvbmVudC5cclxuICAgKlxyXG4gICAqIEByZXR1cm5zIHtPYnNlcnZhYmxlPE9iamVjdD59XHJcbiAgICovXHJcbiAgZ2V0U2F2ZVJlcXVlc3QoKTogT2JzZXJ2YWJsZTxPYmplY3Q+IHtcclxuICAgIHRoaXMuY3JlYXRlRGF0YSgpO1xyXG5cclxuICAgIGlmICh0aGlzLmRhdGFbdGhpcy5pZF0pIHtcclxuICAgICAgcmV0dXJuIHRoaXMuY3J1ZFNlcnZpY2UucHV0KHRoaXMuY2xhc3NOYW1lLCB0aGlzLmRhdGFbdGhpcy5pZF0sIHRoaXMuZGF0YSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdGhpcy5jcnVkU2VydmljZS5wb3N0KHRoaXMuY2xhc3NOYW1lLCB0aGlzLmRhdGEpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
|
|
344
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J1ZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jcnVkL3NyYy9jb21wb25lbnRzL2NydWQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDVSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQzFFLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFHdEMsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRXhDLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7Ozs7QUFFckQ7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFnSEgsTUFBTSxPQUFPLGFBQWE7SUFzQnhCLFlBQW9CLFdBQXdCLEVBQ3hCLGlCQUFvQztRQURwQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBckJsQyxjQUFTLEdBQVcsb0JBQW9CLENBQUM7UUFFdEQsYUFBUSxHQUFZLElBQUksQ0FBQztRQUN6QixhQUFRLEdBQVksSUFBSSxDQUFDO1FBRWpCLGtCQUFhLEdBQWEsRUFBRSxDQUFDO1FBRXJDLFNBQUksR0FBUSxFQUFFLENBQUM7UUFNeEIsYUFBUSxHQUFRLEVBQUUsQ0FBQztRQUVuQixTQUFJLEdBQVksS0FBSyxDQUFDO0lBTXFDLENBQUM7SUFFNUQsZUFBZTtRQUNiLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUU7WUFDbkcsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7WUFFakIsS0FBSyxJQUFJLGlCQUFpQixJQUFJ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TSxFQUFFLElBQUksRUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSG9zdEJpbmRpbmcsIElucHV0LCBpc0Rldk1vZGUsXHJcbiAgVmlld0NoaWxkLCBPbkRlc3Ryb3lcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge05nRm9ybX0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcblxyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQge2ZpbmFsaXplfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuXHJcbmltcG9ydCB7Q3J1ZFNlcnZpY2V9IGZyb20gXCIuLi9zZXJ2aWNlcy9jcnVkLnNlcnZpY2VcIjtcclxuXHJcbi8qKlxyXG4gKiBUaGlzIGlzIGEgZ2VuZXJpYyBjb21wb25lbnQgdGhhdCBpcyBkZXNpZ25lZCB0byB3b3JrIHdpdGggdGhlIGNydWQgYXBpLiAgVGhlIGNvbXBvbmVudCBidWlsZHMgaXRzZWxmIGJhc2VkIG9uIHRoZVxyXG4gKiBtZXRhZGF0YS4gIFRoaXMgY29tcG9uZW50IGNvdWxkIGJlIGluZGVwZW5kZW50IHNvIGl0IGhhcyBpdHMgb3duIGZvcm0gYW5kIGNhbiBpbnRlcmFjdCB3aXRoIHRoZSBjcnVkIGFwaSBvbiBpdHMgb3duLlxyXG4gKlxyXG4gKiBcImlkXCI6IGZhbHNlLFxyXG4gKiBcImZpZWxkXCI6IFwiaWROYW1lVHlwZVwiLFxyXG4gKiBcInR5cGVcIjogXCJMb25nXCIsXHJcbiAqIFwibm90TnVsbFwiOiB0cnVlLFxyXG4gKiBcIm1pblwiOiBudWxsLFxyXG4gKiBcIm1heFwiOiBudWxsLFxyXG4gKiBcImRpY3Rpb25hcnlDbGFzc05hbWVcIjogXCJoY2kucmkuY29yZS5zdWJqZWN0Lm1vZGVsLk5hbWVUeXBlXCIsXHJcbiAqIFwicGhpXCI6IGZhbHNlXHJcbiAqXHJcbiAqIEBzaW5jZSAxMC4wLjBcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImhjaS1jcnVkXCIsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxmb3JtICNjcnVkRm9ybT1cIm5nRm9ybVwiXHJcbiAgICAgICAgICBjbGFzcz1cImQtZmxleCBmbGV4LW5vd3JhcCBmbGV4LXJvdyBmbGV4LWdyb3ctMVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtbm93cmFwIGZsZXgtY29sdW1uIGZsZXgtZ3Jvdy0xXCI+XHJcbiAgICAgICAgPGhjaS1idXN5IFtidXN5XT1cIltidXN5XVwiIFtzaG93SWNvbl09XCJmYWxzZVwiPjwvaGNpLWJ1c3k+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZmllbGRBcnJheSBvZiBmaWVsZHNcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1ub3dyYXAgbWItMVwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmaWVsZCBvZiBmaWVsZEFycmF5XCI+XHJcbiAgICAgICAgICAgICAgPGlucHV0ICpuZ0lmPVwiZmllbGQubWV0YWRhdGEudHlwZSA9PT0gJ1N0cmluZydcIiBhdHRyLmFyaWEtbGFiZWw9XCJoY2ktbmctY3J1ZC1pbnB1dC1zdHJpbmcte3tmaWVsZC5tZXRhZGF0YS5maWVsZH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWVsZC5kYXRhXCJcclxuICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbaWRdPVwiZmllbGQubWV0YWRhdGEuZmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJmaWVsZC5tZXRhZGF0YS5maWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhZWRpdGFibGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZmllbGQubWV0YWRhdGEuZmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbbWluTGVuZ3RoXT1cImZpZWxkLm1ldGFkYXRhLm1pblwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFttYXhMZW5ndGhdPVwiZmllbGQubWV0YWRhdGEubWF4XCJcclxuICAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cImZpZWxkLm1ldGFkYXRhLm5vdE51bGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNydWQtaW5wdXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJmaWVsZC5zdHlsZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbY2xhc3MucGhpXT1cImZpZWxkLm1ldGFkYXRhLnBoaVwiIC8+XHJcbiAgICAgICAgICAgICAgPGlucHV0ICpuZ0lmPVwiIWZpZWxkLm1ldGFkYXRhLmRpY3Rpb25hcnlDbGFzc05hbWUgJiYgKGZpZWxkLm1ldGFkYXRhLnR5cGUgPT09ICdJbnRlZ2VyJyB8fCBmaWVsZC5tZXRhZGF0YS50eXBlID09PSAnTG9uZycpXCJcclxuICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWVsZC5kYXRhXCIgYXR0ci5hcmlhLWxhYmVsPVwiaGNpLW5nLWNydWQtaW5wdXQtbnVtYmVyLXt7ZmllbGQubWV0YWRhdGEuZmllbGR9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbaWRdPVwiZmllbGQubWV0YWRhdGEuZmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJmaWVsZC5tZXRhZGF0YS5maWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhZWRpdGFibGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZmllbGQubWV0YWRhdGEuZmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbbWluTGVuZ3RoXT1cImZpZWxkLm1ldGFkYXRhLm1pblwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFttYXhMZW5ndGhdPVwiZmllbGQubWV0YWRhdGEubWF4XCJcclxuICAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cImZpZWxkLm1ldGFkYXRhLm5vdE51bGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNydWQtaW5wdXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJmaWVsZC5zdHlsZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbY2xhc3MucGhpXT1cImZpZWxkLm1ldGFkYXRhLnBoaVwiIC8+XHJcbiAgICAgICAgICAgICAgPGhjaS1uYXRpdmUtc2VsZWN0ICpuZ0lmPVwiZmllbGQubWV0YWRhdGEuZGljdGlvbmFyeUNsYXNzTmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmllbGQuZGF0YVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCJmaWVsZC5tZXRhZGF0YS5maWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuYW1lXT1cImZpZWxkLm1ldGFkYXRhLmZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3VybF09XCJmaWVsZC5tZXRhZGF0YS5kaWN0aW9uYXJ5Q2xhc3NOYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cImZpZWxkLm1ldGFkYXRhLnJlcXVpcmVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjcnVkLWlucHV0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwiZmllbGQuc3R5bGVzXCI+XHJcbiAgICAgICAgICAgICAgPC9oY2ktbmF0aXZlLXNlbGVjdD5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxidXR0b24gKm5nSWY9XCJzYXZlYWJsZSAmJiAhY3J1ZEZvcm0uZm9ybS5kaXJ0eVwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInNhdmUoKVwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWljb24gbXMtMVwiXHJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInRydWVcIj5cclxuICAgICAgICA8aSBjbGFzcz1cImZhciBmYS1jaXJjbGUgZmEtbGdcIj48L2k+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uICpuZ0lmPVwic2F2ZWFibGUgJiYgY3J1ZEZvcm0uZm9ybS5kaXJ0eSAmJiBjcnVkRm9ybS5mb3JtLnZhbGlkICYmICF3YXJuaW5nXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwic2F2ZSgpXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4taWNvbiBidG4tZ3JlZW4gbXMtMVwiPlxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwiIWJ1c3lcIj5cclxuICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWNoZWNrIGZhLWxnXCI+PC9pPlxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8c3BhbiAqbmdJZj1cImJ1c3lcIj5cclxuICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXNwaW5uZXIgZmEtbGcgZmEtc3BpblwiPjwvaT5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uICpuZ0lmPVwic2F2ZWFibGUgJiYgd2FybmluZ1wiXHJcbiAgICAgICAgICAgICAgW25nYlBvcG92ZXJdPVwid2FybmluZ1wiXHJcbiAgICAgICAgICAgICAgdHJpZ2dlcnM9XCJtb3VzZWVudGVyOm1vdXNlbGVhdmVcIlxyXG4gICAgICAgICAgICAgIHBvcG92ZXJDbGFzcz1cIndhcm5cIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJzYXZlKClcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1pY29uIGJ0bi1yZWQgbXMtMVwiPlxyXG4gICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWV4Y2xhbWF0aW9uLWNpcmNsZSBmYS1sZ1wiPjwvaT5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gKm5nSWY9XCJzYXZlYWJsZSAmJiBjcnVkRm9ybS5mb3JtLmRpcnR5ICYmICFjcnVkRm9ybS5mb3JtLnZhbGlkICYmICF3YXJuaW5nXCJcclxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1pY29uIGJ0bi1yZWQgbXMtMVwiPlxyXG4gICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXRpbWVzIGZhLWxnXCI+PC9pPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZm9ybT5cclxuICBgLFxyXG4gIHN0eWxlczogW2BcclxuXHJcbiAgICAuY3J1ZC1pbnB1dCB7XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgfVxyXG5cclxuICAgIC5jcnVkLWlucHV0OmZpcnN0LWNoaWxkIHtcclxuICAgICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMC4yNXJlbTtcclxuICAgICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMC4yNXJlbTtcclxuICAgIH1cclxuXHJcbiAgICAuY3J1ZC1pbnB1dDpsYXN0LWNoaWxkIHtcclxuICAgICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDAuMjVyZW07XHJcbiAgICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwLjI1cmVtO1xyXG4gICAgfVxyXG5cclxuICAgIC5uZy1pbnZhbGlkIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDEwMCwgMTAwLCAwLjI1KTtcclxuICAgIH1cclxuXHJcbiAgICAucGhpIHtcclxuICAgICAgYm94LXNoYWRvdzogI2NjNzcwMCAxcHggMXB4IDFweCBpbnNldDtcclxuICAgICAgYm9yZGVyLWNvbG9yOiBvcmFuZ2U7XHJcbiAgICB9XHJcblxyXG4gICAgOjpuZy1kZWVwIC5oY2ktZHJvcGRvd24ge1xyXG4gICAgICBtaW4td2lkdGg6IDIwJTtcclxuICAgIH1cclxuXHJcbiAgYF1cclxufSlcclxuZXhwb3J0IGNsYXNzIENydWRDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuICBASG9zdEJpbmRpbmcoXCJjbGFzc1wiKSBjbGFzc0xpc3Q6IHN0cmluZyA9IFwiZC1mbGV4IGZsZXgtbm93cmFwXCI7XHJcblxyXG4gIEBJbnB1dCgpIHNhdmVhYmxlOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBlZGl0YWJsZTogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgY2xhc3NOYW1lOiBzdHJpbmc7XHJcbiAgQElucHV0KFwiZmllbGRzXCIpIGRpc3BsYXlGaWVsZHM6IHN0cmluZ1tdID0gW107XHJcbiAgQElucHV0KCkgaWRzOiBhbnlbXTtcclxuICBASW5wdXQoKSBkYXRhOiBhbnkgPSB7fTtcclxuICBASW5wdXQoKSBzdHlsZXM6IGFueVtdO1xyXG5cclxuICBAVmlld0NoaWxkKFwiY3J1ZEZvcm1cIiwge3N0YXRpYzogdHJ1ZX0pIGZvcm06IE5nRm9ybTtcclxuXHJcbiAgaWQ6IHN0cmluZztcclxuICBtZXRhZGF0YTogYW55ID0ge307XHJcbiAgZmllbGRzOiBhbnlbXTtcclxuICBidXN5OiBib29sZWFuID0gZmFsc2U7XHJcbiAgd2FybmluZzogc3RyaW5nO1xyXG5cclxuICBtZXRhZGF0YVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNydWRTZXJ2aWNlOiBDcnVkU2VydmljZSxcclxuICAgICAgICAgICAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge31cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5tZXRhZGF0YVN1YnNjcmlwdGlvbiA9IHRoaXMuY3J1ZFNlcnZpY2UuZ2V0TWV0YWRhdGEodGhpcy5jbGFzc05hbWUpLnN1YnNjcmliZSgobWV0YWRhdGE6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLmZpZWxkcyA9IFtdO1xyXG5cclxuICAgICAgZm9yIChsZXQgZGlzcGxheUZpZWxkQXJyYXkgb2YgdGhpcy5kaXNwbGF5RmllbGRzKSB7XHJcbiAgICAgICAgbGV0IGZpZWxkQXJyYXk6IGFueVtdID0gW107XHJcblxyXG4gICAgICAgIGZvciAobGV0IGRpc3BsYXlGaWVsZCBvZiBkaXNwbGF5RmllbGRBcnJheSkge1xyXG4gICAgICAgICAgZm9yIChsZXQgbWV0YWRhdGFGaWVsZCBvZiBtZXRhZGF0YS5maWVsZHMpIHtcclxuICAgICAgICAgICAgaWYgKGRpc3BsYXlGaWVsZCA9PT0gbWV0YWRhdGFGaWVsZC5maWVsZCkge1xyXG4gICAgICAgICAgICAgIGxldCBmaWVsZDogYW55ID0ge1xyXG4gICAgICAgICAgICAgICAgZGF0YTogdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgICAgbWV0YWRhdGE6IG1ldGFkYXRhRmllbGQsXHJcbiAgICAgICAgICAgICAgICBzdHlsZXM6IHVuZGVmaW5lZFxyXG4gICAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICAgIGlmICh0aGlzLnN0eWxlcykge1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgZmllbGRTdHlsZSBvZiB0aGlzLnN0eWxlcykge1xyXG4gICAgICAgICAgICAgICAgICBpZiAoZGlzcGxheUZpZWxkID09PSBmaWVsZFN0eWxlLmZpZWxkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZmllbGQuc3R5bGVzID0gZmllbGRTdHlsZS5zdHlsZXM7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIGZpZWxkQXJyYXkucHVzaChmaWVsZCk7XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuZmllbGRzLnB1c2goZmllbGRBcnJheSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGZvciAobGV0IG1ldGFkYXRhRmllbGQgb2YgbWV0YWRhdGEuZmllbGRzKSB7XHJcbiAgICAgICAgaWYgKG1ldGFkYXRhRmllbGQuaWQpIHtcclxuICAgICAgICAgIHRoaXMuaWQgPSBtZXRhZGF0YUZpZWxkLmZpZWxkO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLm1ldGFkYXRhID0gbWV0YWRhdGE7XHJcblxyXG4gICAgICB0aGlzLnJlZnJlc2hEYXRhKCk7XHJcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMubWV0YWRhdGFTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFB1c2ggdGhlIGRhdGEgZnJvbSB0aGUgYm91bmQgaW5wdXRzIHRvIHRoZSBkYXRhIHJlcHJlc2VudGluZyB0aGlzIGNydWQgY2xhc3MuXHJcbiAgICovXHJcbiAgY3JlYXRlRGF0YSgpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5kYXRhKSB7XHJcbiAgICAgIHRoaXMuZGF0YSA9IHt9O1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmlkcykge1xyXG4gICAgICBmb3IgKGxldCBpZCBvZiB0aGlzLmlkcykge1xyXG4gICAgICAgIHRoaXMuZGF0YVtpZC5rZXldID0gaWQudmFsdWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBmb3IgKGxldCBmaWVsZEFycmF5IG9mIHRoaXMuZmllbGRzKSB7XHJcbiAgICAgIGZvciAobGV0IGZpZWxkIG9mIGZpZWxkQXJyYXkpIHtcclxuICAgICAgICB0aGlzLmRhdGFbZmllbGQubWV0YWRhdGEuZmllbGRdID0gZmllbGQuZGF0YTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSWYgZGF0YSBleGlzdHMsIHNldCBpdCBhbmQgcmVmcmVzaCB0aGUgYm91bmQgZGF0YS5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBkYXRhXHJcbiAgICovXHJcbiAgc2V0RGF0YShkYXRhOiBhbnkpOiB2b2lkIHtcclxuICAgIGlmIChpc0Rldk1vZGUoKSkge1xyXG4gICAgICBjb25zb2xlLmRlYnVnKFwiQ3J1ZENvbXBvbmVudC5zZXREYXRhOiBcIiArIHRoaXMuY2xhc3NOYW1lKTtcclxuICAgICAgY29uc29sZS5kZWJ1ZyhkYXRhKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoZGF0YSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMuZGF0YSA9IGRhdGE7XHJcbiAgICAgIHRoaXMucmVmcmVzaERhdGEoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZGF0YSA9IHt9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUHVzaGVzIHRoZSBkYXRhIHRvIHRoZSBmaWVsZHMgZm9yIGJpbmRpbmcgdG8gdGhlIGZvcm0gaW5wdXRzLlxyXG4gICAqL1xyXG4gIHJlZnJlc2hEYXRhKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZGF0YSAmJiB0aGlzLmZpZWxkcykge1xyXG4gICAgICBmb3IgKGxldCBmaWVsZEFycmF5IG9mIHRoaXMuZmllbGRzKSB7XHJcbiAgICAgICAgZm9yIChsZXQgZmllbGQgb2YgZmllbGRBcnJheSkge1xyXG4gICAgICAgICAgZmllbGQuZGF0YSA9IHRoaXMuZGF0YVtmaWVsZC5tZXRhZGF0YS5maWVsZF07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgYSBzYXZlIHJlcXVlc3QgYW5kIHJlZnJlc2hlcyB0aGUgZGF0YSB1cG9uIGEgc3VjY2Vzc2Z1bCBjYWxsLlxyXG4gICAqL1xyXG4gIHNhdmUoKTogdm9pZCB7XHJcbiAgICB0aGlzLmJ1c3kgPSB0cnVlO1xyXG4gICAgdGhpcy53YXJuaW5nID0gdW5kZWZpbmVkO1xyXG5cclxuICAgIHRoaXMuZ2V0U2F2ZVJlcXVlc3QoKVxyXG4gICAgICAucGlwZShmaW5hbGl6ZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5idXN5ID0gZmFsc2U7XHJcbiAgICAgIH0pKVxyXG4gICAgICAuc3Vic2NyaWJlKChkYXRhOiBPYmplY3QpID0+IHtcclxuICAgICAgICB0aGlzLnNldERhdGEoZGF0YSk7XHJcbiAgICAgICAgdGhpcy5mb3JtLmZvcm0ubWFya0FzUHJpc3RpbmUoKTtcclxuICAgICAgfSxcclxuICAgICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgdGhpcy53YXJuaW5nID0gZXJyb3I7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihcIkNydWRDb21wb25lbnQuc2F2ZTogXCIgKyB0aGlzLmNsYXNzTmFtZSArIFwiOiBcIiArIGVycm9yKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm4gYW4gb2JzZXJ2YWJsZSBmcm9tIHRoZSBjcnVkIHBvc3Qgb3IgcHV0LiAgVGhpcyBpcyB1c2VkIHN1Y2ggdGhhdCB0aGUgY3J1ZCBjb250YWluZXIgY2FuIG1hbmFnZSB0aGUgcmVxdWVzdFxyXG4gICAqIGZvciB0aGlzIGNvbXBvbmVudC5cclxuICAgKlxyXG4gICAqIEByZXR1cm5zIHtPYnNlcnZhYmxlPE9iamVjdD59XHJcbiAgICovXHJcbiAgZ2V0U2F2ZVJlcXVlc3QoKTogT2JzZXJ2YWJsZTxPYmplY3Q+IHtcclxuICAgIHRoaXMuY3JlYXRlRGF0YSgpO1xyXG5cclxuICAgIGlmICh0aGlzLmRhdGFbdGhpcy5pZF0pIHtcclxuICAgICAgcmV0dXJuIHRoaXMuY3J1ZFNlcnZpY2UucHV0KHRoaXMuY2xhc3NOYW1lLCB0aGlzLmRhdGFbdGhpcy5pZF0sIHRoaXMuZGF0YSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdGhpcy5jcnVkU2VydmljZS5wb3N0KHRoaXMuY2xhc3NOYW1lLCB0aGlzLmRhdGEpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
|
package/esm2022/crud.module.mjs
CHANGED
|
@@ -27,8 +27,8 @@ export class CrudModule {
|
|
|
27
27
|
ngModule: CrudModule
|
|
28
28
|
};
|
|
29
29
|
}
|
|
30
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
31
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.
|
|
30
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CrudModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
31
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: CrudModule, declarations: [CrudContainerComponent,
|
|
32
32
|
CrudComponent,
|
|
33
33
|
FieldViewablePipe], imports: [CommonModule,
|
|
34
34
|
FormsModule,
|
|
@@ -37,13 +37,13 @@ export class CrudModule {
|
|
|
37
37
|
MiscModule], exports: [CrudContainerComponent,
|
|
38
38
|
CrudComponent,
|
|
39
39
|
FieldViewablePipe] }); }
|
|
40
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.
|
|
40
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CrudModule, imports: [CommonModule,
|
|
41
41
|
FormsModule,
|
|
42
42
|
NgbModule,
|
|
43
43
|
SelectModule,
|
|
44
44
|
MiscModule] }); }
|
|
45
45
|
}
|
|
46
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
46
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CrudModule, decorators: [{
|
|
47
47
|
type: NgModule,
|
|
48
48
|
args: [{
|
|
49
49
|
imports: [
|
|
@@ -65,4 +65,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
|
|
|
65
65
|
]
|
|
66
66
|
}]
|
|
67
67
|
}] });
|
|
68
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J1ZC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9jcnVkL3NyYy9jcnVkLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE9BQU8sRUFBc0IsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzVELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBRXJELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUM5RCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFFM0QsT0FBTyxFQUFDLGFBQWEsRUFBRSxXQUFXLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUNuRSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDMUQsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDOUQsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sdUNBQXVDLENBQUM7O0FBRTdFOzs7O0dBSUc7QUFvQkgsTUFBTSxPQUFPLFVBQVU7SUFDckIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFXO1FBQ3hCLE9BQU87WUFDTCxTQUFTLEVBQUU7Z0JBQ1QsRUFBQyxPQUFPLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsWUFBWSxFQUFDO2dCQUN2RCxXQUFXO2FBQ1o7WUFDRCxRQUFRLEVBQUUsVUFBVTtTQUNyQixDQUFDO0lBQ0osQ0FBQzsrR0FUVSxVQUFVO2dIQUFWLFVBQVUsaUJBVm5CLHNCQUFzQjtZQUN0QixhQUFhO1lBQ2IsaUJBQWlCLGFBVGpCLFlBQVk7WUFDWixXQUFXO1lBQ1gsU0FBUztZQUNULFlBQVk7WUFDWixVQUFVLGFBUVYsc0JBQXNCO1lBQ3RCLGFBQWE7WUFDYixpQkFBaUI7Z0hBR1IsVUFBVSxZQWpCbkIsWUFBWTtZQUNaLFdBQVc7WUFDWCxTQUFTO1lBQ1QsWUFBWTtZQUNaLFVBQVU7OzRGQWFELFVBQVU7a0JBbkJ0QixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsU0FBUzt3QkFDVCxZQUFZO3dCQUNaLFVBQVU7cUJBQ1g7b0JBQ0QsWUFBWSxFQUFFO3dCQUNaLHNCQUFzQjt3QkFDdEIsYUFBYTt3QkFDYixpQkFBaUI7cUJBQ2xCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxzQkFBc0I7d0JBQ3RCLGFBQWE7d0JBQ2IsaUJBQWlCO3FCQUNsQjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIENvcHlyaWdodCAoYykgMjAxNiBIdW50c21hbiBDYW5jZXIgSW5zdGl0dXRlIGF0IHRoZSBVbml2ZXJzaXR5IG9mIFV0YWgsIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnlcclxuICovXHJcbmltcG9ydCB7TW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGV9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7Rm9ybXNNb2R1bGV9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5cclxuaW1wb3J0IHtOZ2JNb2R1bGV9IGZyb20gXCJAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcFwiO1xyXG5cclxuaW1wb3J0IHtTZWxlY3RNb2R1bGV9IGZyb20gXCJAaHVudHNtYW4tY2FuY2VyLWluc3RpdHV0ZS9pbnB1dFwiO1xyXG5pbXBvcnQge01pc2NNb2R1bGV9IGZyb20gXCJAaHVudHNtYW4tY2FuY2VyLWluc3RpdHV0ZS9taXNjXCI7XHJcblxyXG5pbXBvcnQge0NSVURfRU5EUE9JTlQsIENydWRTZXJ2aWNlfSBmcm9tIFwiLi9zZXJ2aWNlcy9jcnVkLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtDcnVkQ29tcG9uZW50fSBmcm9tIFwiLi9jb21wb25lbnRzL2NydWQuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7RmllbGRWaWV3YWJsZVBpcGV9IGZyb20gXCIuL3BpcGVzL2ZpZWxkLXZpZXdhYmxlLnBpcGVcIjtcclxuaW1wb3J0IHtDcnVkQ29udGFpbmVyQ29tcG9uZW50fSBmcm9tIFwiLi9jb21wb25lbnRzL2NydWQtY29udGFpbmVyLmNvbXBvbmVudFwiO1xyXG5cclxuLyoqXHJcbiAqIFRoZSBtb2R1bGUgcHJvdmlkaW5nIHRoZSBjcnVkIHNlcnZpY2UuXHJcbiAqXHJcbiAqIEBzaW5jZSA5LjAuMFxyXG4gKi9cclxuQE5nTW9kdWxlKHtcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIE5nYk1vZHVsZSxcclxuICAgIFNlbGVjdE1vZHVsZSxcclxuICAgIE1pc2NNb2R1bGVcclxuICBdLFxyXG4gIGRlY2xhcmF0aW9uczogW1xyXG4gICAgQ3J1ZENvbnRhaW5lckNvbXBvbmVudCxcclxuICAgIENydWRDb21wb25lbnQsXHJcbiAgICBGaWVsZFZpZXdhYmxlUGlwZVxyXG4gIF0sXHJcbiAgZXhwb3J0czogW1xyXG4gICAgQ3J1ZENvbnRhaW5lckNvbXBvbmVudCxcclxuICAgIENydWRDb21wb25lbnQsXHJcbiAgICBGaWVsZFZpZXdhYmxlUGlwZVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIENydWRNb2R1bGUge1xyXG4gIHN0YXRpYyBmb3JSb290KGNvbmZpZzogYW55KTogTW9kdWxlV2l0aFByb3ZpZGVyczxDcnVkTW9kdWxlPiB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICB7cHJvdmlkZTogQ1JVRF9FTkRQT0lOVCwgdXNlVmFsdWU6IGNvbmZpZy5jcnVkRW5kcG9pbnR9LFxyXG4gICAgICAgIENydWRTZXJ2aWNlXHJcbiAgICAgIF0sXHJcbiAgICAgIG5nTW9kdWxlOiBDcnVkTW9kdWxlXHJcbiAgICB9O1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -6,14 +6,14 @@ export class FieldViewablePipe {
|
|
|
6
6
|
return item.viewable;
|
|
7
7
|
});
|
|
8
8
|
}
|
|
9
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
10
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.
|
|
9
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FieldViewablePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
10
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: FieldViewablePipe, name: "fieldViewable" }); }
|
|
11
11
|
}
|
|
12
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
12
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FieldViewablePipe, decorators: [{
|
|
13
13
|
type: Pipe,
|
|
14
14
|
args: [{
|
|
15
15
|
name: "fieldViewable",
|
|
16
16
|
pure: true
|
|
17
17
|
}]
|
|
18
18
|
}] });
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtdmlld2FibGUucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NydWQvc3JjL3BpcGVzL2ZpZWxkLXZpZXdhYmxlLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLGVBQWUsQ0FBQzs7QUFNbkMsTUFBTSxPQUFPLGlCQUFpQjtJQUU1QixTQUFTLENBQUMsSUFBVztRQUNuQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRTtZQUMvQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDdkIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOytHQU5VLGlCQUFpQjs2R0FBakIsaUJBQWlCOzs0RkFBakIsaUJBQWlCO2tCQUo3QixJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxlQUFlO29CQUNyQixJQUFJLEVBQUUsSUFBSTtpQkFDWCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UGlwZX0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbkBQaXBlKHtcclxuICBuYW1lOiBcImZpZWxkVmlld2FibGVcIixcclxuICBwdXJlOiB0cnVlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGaWVsZFZpZXdhYmxlUGlwZSB7XHJcblxyXG4gIHRyYW5zZm9ybShsaXN0OiBhbnlbXSk6IGFueSB7XHJcbiAgICByZXR1cm4gbGlzdC5maWx0ZXIoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICByZXR1cm4gaXRlbS52aWV3YWJsZTtcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -228,13 +228,13 @@ export class CrudService {
|
|
|
228
228
|
});
|
|
229
229
|
return loading;
|
|
230
230
|
}
|
|
231
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
232
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.
|
|
231
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CrudService, deps: [{ token: i1.HttpClient }, { token: CRUD_ENDPOINT }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
232
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CrudService }); }
|
|
233
233
|
}
|
|
234
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
234
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CrudService, decorators: [{
|
|
235
235
|
type: Injectable
|
|
236
236
|
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: undefined, decorators: [{
|
|
237
237
|
type: Inject,
|
|
238
238
|
args: [CRUD_ENDPOINT]
|
|
239
239
|
}] }] });
|
|
240
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J1ZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY3J1ZC9zcmMvc2VydmljZXMvY3J1ZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNqRSxPQUFPLEVBQUMsVUFBVSxFQUFFLFVBQVUsRUFBZSxNQUFNLHNCQUFzQixDQUFDO0FBRTFFLE9BQU8sRUFBQyxlQUFlLEVBQWMsRUFBRSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3JELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBSXhDLE1BQU0sQ0FBQyxJQUFJLGFBQWEsR0FBRyxJQUFJLGNBQWMsQ0FBUyxjQUFjLENBQUMsQ0FBQztBQUV0RTs7Ozs7R0FLRztBQUVILE1BQU0sT0FBTyxXQUFXO0lBSXRCLFlBQW9CLElBQWdCLEVBQWlDLFlBQW9CO1FBQXJFLFNBQUksR0FBSixJQUFJLENBQVk7UUFBaUMsaUJBQVksR0FBWixZQUFZLENBQVE7UUFGekYsZ0JBQVcsR0FBd0IsSUFBSSxHQUFHLEVBQWtCLENBQUM7SUFFK0IsQ0FBQztJQUV0RixXQUFXLENBQUMsU0FBaUI7UUFDbEMsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQ3BDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDN0MsQ0FBQztRQUVELElBQUksQ0FBQyxHQUF1QixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBUyxJQUFJLENBQUMsWUFBWSxHQUFHLFNBQVMsR0FBRyxXQUFXLENBQUMsQ0FBQztRQUMvRixDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUU7WUFDNUIsSUFB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QUFFO1lBQ0gsVUFBVSxFQUFFLENBQUM7UUFDZixDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7OEdBNVFVLFdBQVcsNENBSXdCLGFBQWE7a0hBSmhELFdBQVc7OzJGQUFYLFdBQVc7a0JBRHZCLFVBQVU7OzBCQUs4QixNQUFNOzJCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7SHR0cENsaWVudCwgSHR0cFBhcmFtcywgSHR0cFJlc3BvbnNlfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcclxuXHJcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBvZn0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHtmaW5hbGl6ZX0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcblxyXG5pbXBvcnQge0hjaURhdGFEdG8sIEhjaUdyaWREdG8sIEhjaVBvc3RXcmFwcGVyRHRvfSBmcm9tIFwiQGh1bnRzbWFuLWNhbmNlci1pbnN0aXR1dGUvaGNpLW5nLWdyaWQtZHRvXCI7XHJcblxyXG5leHBvcnQgbGV0IENSVURfRU5EUE9JTlQgPSBuZXcgSW5qZWN0aW9uVG9rZW48c3RyaW5nPihcImNydWRFbmRwb2ludFwiKTtcclxuXHJcbi8qKlxyXG4gKiBUaGlzIHNlcnZpY2UgbWFuYWdlcyBjb21tdW5pY2F0aW9uIHdpdGggdGhlIGNydWQgYXBpLlxyXG4gKiBUaGUgdHlwaWNhbCBhcGkgZW5kcG9pbnQgd291bGQgYmUgXCIvYXBwLW5hbWUvYXBpL2NydWRcIi5cclxuICpcclxuICogVE9ETzogQSBjYWxsIHRoYXQgd291bGQgcmV0dXJuIHRoZSByZXNwb25zZSBhcyB3ZWxsIGFzIHRoZSBkYXRhLlxyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQ3J1ZFNlcnZpY2Uge1xyXG5cclxuICBtZXRhZGF0YU1hcDogTWFwPHN0cmluZywgT2JqZWN0PiA9IG5ldyBNYXA8c3RyaW5nLCBPYmplY3Q+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCwgQEluamVjdChDUlVEX0VORFBPSU5UKSBwcml2YXRlIGNydWRFbmRwb2ludDogc3RyaW5nKSB7fVxyXG5cclxuICBwdWJsaWMgZ2V0TWV0YWRhdGEoY2xhc3NOYW1lOiBzdHJpbmcpOiBPYnNlcnZhYmxlPE9iamVjdD4ge1xyXG4gICAgaWYgKHRoaXMubWV0YWRhdGFNYXAuZ2V0KGNsYXNzTmFtZSkpIHtcclxuICAgICAgcmV0dXJuIG9mKHRoaXMubWV0YWRhdGFNYXAuZ2V0KGNsYXNzTmFtZSkpO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBvOiBPYnNlcnZhYmxlPE9iamVjdD4gPSB0aGlzLmh0dHAuZ2V0PE9iamVjdD4odGhpcy5jcnVkRW5kcG9pbnQgKyBjbGFzc05hbWUgKyBcIi9tZXRhZGF0YVwiKTtcclxuICAgIG8uc3Vic2NyaWJlKChtZXRhZGF0YTogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMubWV0YWRhdGFNYXAuc2V0KGNsYXNzTmFtZSwgbWV0YWRhdGEpO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gbztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ha2VzIHRoZSBodHRwIHJlcXVlc3QgYW5kIHJldHVybnMgYW4gb2JzZXJ2YWJsZSBmb3IgaXQuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gY2xhc3NOYW1lXHJcbiAgICogQHBhcmFtIHtIY2lQb3N0V3JhcHBlckR0b30gZHRvXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHF1ZXJ5XHJcbiAgICogQHJldHVybnMge09ic2VydmFibGU8SGNpRGF0YUR0bz59XHJcbiAgICovXHJcbiAgcHVibGljIGdldEFsbChjbGFzc05hbWU6IHN0cmluZywgZHRvOiBIY2lQb3N0V3JhcHBlckR0byA9IHVuZGVmaW5lZCwgcXVlcnk6IHN0cmluZyA9IHVuZGVmaW5lZCk6IE9ic2VydmFibGU8SGNpRGF0YUR0bz4ge1xyXG4gICAgbGV0IHBhcmFtczogSHR0cFBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XHJcbiAgICBpZiAocXVlcnkpIHtcclxuICAgICAgcGFyYW1zID0gcGFyYW1zLnNldChcInF1ZXJ5XCIsIHF1ZXJ5KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoZHRvKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxIY2lEYXRhRHRvPih0aGlzLmNydWRFbmRwb2ludCArIGNsYXNzTmFtZSArIFwiL2luZm9cIiwgZHRvLCB7cGFyYW1zOiBwYXJhbXN9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEhjaURhdGFEdG8+KHRoaXMuY3J1ZEVuZHBvaW50ICsgY2xhc3NOYW1lLCB7cGFyYW1zOiBwYXJhbXN9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybiBhIGxvYWRpbmcgc3ViamVjdCBhbmQgcmVxdWlyZSBhIGNhbGxiYWNrIHRvIGRlYWwgd2l0aCBzZXR0aW5nIGRhdGEgd2hlbiB0aGUgcmVzcG9uc2UgY29tZXMgYmFjay5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjbGFzc05hbWUgVGhlIG5hbWUgb2YgdGhlIGVudGl0eSBvciBEVE8uXHJcbiAgICogQHBhcmFtIHtIY2lQb3N0V3JhcHBlckR0b30gZHRvIERlZmF1bHQgdG8gdW5kZWZpbmVkLlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBxdWVyeSBEZWZhdWx0IHRvIHVuZGVmaW5lZC5cclxuICAgKiBAcGFyYW0geyhkYXRhOiBIY2lEYXRhRHRvKSA9PiBhbnl9IG9uUmVzcG9uc2UgT25seSByZXF1aXJlZCBmdW5jdGlvbi5cclxuICAgKiBAcGFyYW0geyhlcnJvcikgPT4gYW55fSBvbkVycm9yIE9wdGlvbmFsXHJcbiAgICogQHBhcmFtIHsoKSA9PiBhbnl9IG9uRmluYWxpemUgT3B0aW9uYWxcclxuICAgKiBAcmV0dXJucyB7QmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+fVxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXRBbGxMb2FkaW5nKGNsYXNzTmFtZTogc3RyaW5nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgIGR0bzogSGNpUG9zdFdyYXBwZXJEdG8gPSB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgcXVlcnk6IHN0cmluZyA9IHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgICAgICAgICAgICBvblJlc3BvbnNlOiAoZGF0YTogSGNpRGF0YUR0bykgPT4gYW55LFxyXG4gICAgICAgICAgICAgICAgICAgICAgIG9uRXJyb3I/OiAoZXJyb3IpID0+IGFueSxcclxuICAgICAgICAgICAgICAgICAgICAgICBvbkZpbmFsaXplPzogKCkgPT4gYW55KTogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+IHtcclxuICAgIGxldCBsb2FkaW5nOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xyXG5cclxuICAgIGxldCBwYXJhbXM6IEh0dHBQYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xyXG4gICAgaWYgKHF1ZXJ5KSB7XHJcbiAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoXCJxdWVyeVwiLCBxdWVyeSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGR0bykge1xyXG4gICAgICB0aGlzLmh0dHAucG9zdDxIY2lEYXRhRHRvPih0aGlzLmNydWRFbmRwb2ludCArIGNsYXNzTmFtZSArIFwiL2luZm9cIiwgZHRvLCB7cGFyYW1zOiBwYXJhbXN9KVxyXG4gICAgICAgIC5waXBlKGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAgIGlmIChvbkZpbmFsaXplKSB7XHJcbiAgICAgICAgICAgIG9uRmluYWxpemUoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KSlcclxuICAgICAgICAuc3Vic2NyaWJlKChkYXRhOiBIY2lEYXRhRHRvKSA9PiB7XHJcbiAgICAgICAgICBsb2FkaW5nLm5leHQoZmFsc2UpO1xyXG4gICAgICAgICAgb25SZXNwb25zZShkYXRhKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgaWYgKG9uRXJyb3IpIHtcclxuICAgICAgICAgICAgb25FcnJvcihlcnJvcik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmh0dHAuZ2V0PEhjaURhdGFEdG8+KHRoaXMuY3J1ZEVuZHBvaW50ICsgY2xhc3NOYW1lLCB7cGFyYW1zOiBwYXJhbXN9KVxyXG4gICAgICAgIC5waXBlKGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAgIGlmIChvbkZpbmFsaXplKSB7XHJcbiAgICAgICAgICAgIG9uRmluYWxpemUoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KSlcclxuICAgICAgICAuc3Vic2NyaWJlKChkYXRhOiBIY2lEYXRhRHRvKSA9PiB7XHJcbiAgICAgICAgICAgIGxvYWRpbmcubmV4dChmYWxzZSk7XHJcbiAgICAgICAgICAgIG9uUmVzcG9uc2UoZGF0YSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChvbkVycm9yKSB7XHJcbiAgICAgICAgICAgICAgb25FcnJvcihlcnJvcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBsb2FkaW5nO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IGEgc2luZ2xlIGluc3RhbmNlIG9mIGFuIGVudGl0eSBiYXNlZCBvbiB0aGUgaWQuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gY2xhc3NOYW1lXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IGlkXHJcbiAgICogQHJldHVybnMge09ic2VydmFibGU8T2JqZWN0Pn1cclxuICAgKi9cclxuICBwdWJsaWMgZ2V0KGNsYXNzTmFtZTogc3RyaW5nLCBpZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxPYmplY3Q+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PE9iamVjdD4odGhpcy5jcnVkRW5kcG9pbnQgKyBjbGFzc05hbWUgKyBcIi9cIiArIGlkKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybiB0aGUgbG9hZGluZyBzdWJqZWN0IGZvciB0aGUgcmVxdWVzdC4gIENhbGxiYWNrIHJlcXVpcmVkIHRvIGdldCB0aGUgZW50aXR5IHJlc3BvbnNlLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNsYXNzTmFtZVxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpZFxyXG4gICAqIEBwYXJhbSB7KGRhdGE6IE9iamVjdCkgPT4gYW55fSBvblJlc3BvbnNlXHJcbiAgICogQHBhcmFtIHsoZXJyb3IpID0+IGFueX0gb25FcnJvclxyXG4gICAqIEBwYXJhbSB7KCkgPT4gYW55fSBvbkZpbmFsaXplXHJcbiAgICogQHJldHVybnMge0JlaGF2aW9yU3ViamVjdDxib29sZWFuPn1cclxuICAgKi9cclxuICBwdWJsaWMgZ2V0TG9hZGluZyhjbGFzc05hbWU6IHN0cmluZyxcclxuICAgICAgICAgICAgICAgICAgICBpZDogbnVtYmVyLFxyXG4gICAgICAgICAgICAgICAgICAgIG9uUmVzcG9uc2U6IChkYXRhOiBPYmplY3QpID0+IGFueSxcclxuICAgICAgICAgICAgICAgICAgICBvbkVycm9yPzogKGVycm9yKSA9PiBhbnksXHJcbiAgICAgICAgICAgICAgICAgICAgb25GaW5hbGl6ZT86ICgpID0+IGFueSk6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiB7XHJcbiAgICBsZXQgbG9hZGluZzogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcclxuXHJcbiAgICB0aGlzLmh0dHAuZ2V0PE9iamVjdD4odGhpcy5jcnVkRW5kcG9pbnQgKyBjbGFzc05hbWUgKyBcIi9cIiArIGlkKS5zdWJzY3JpYmUoKGRhdGE6IE9iamVjdCkgPT4ge1xyXG4gICAgICBsb2FkaW5nLm5leHQoZmFsc2UpO1xyXG4gICAgICBvblJlc3BvbnNlKGRhdGEpO1xyXG4gICAgfSxcclxuICAgIChlcnJvcikgPT4ge1xyXG4gICAgICBvbkVycm9yKGVycm9yKTtcclxuICAgIH0sXHJcbiAgICAoKSA9PiB7XHJcbiAgICAgIG9uRmluYWxpemUoKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBsb2FkaW5nO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUG9zdCBhIG5ldyBlbnRpdHkuICBPbmUgd2l0aG91dCBhbiBpZC4gIFJldHVybiB0aGF0IGVudGl0eS5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjbGFzc05hbWVcclxuICAgKiBAcGFyYW0gZGF0YVxyXG4gICAqIEByZXR1cm5zIHtPYnNlcnZhYmxlPE9iamVjdD59XHJcbiAgICovXHJcbiAgcHVibGljIHBvc3QoY2xhc3NOYW1lOiBzdHJpbmcsIGRhdGE6IGFueSk6IE9ic2VydmFibGU8T2JqZWN0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8T2JqZWN0Pih0aGlzLmNydWRFbmRwb2ludCArIGNsYXNzTmFtZSwgZGF0YSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm4gYSBsb2FkaW5nIHN1YmplY3QuICBQb3N0IGEgbmV3IGVudGl0eSB3aXRob3V0IGFuIGlkLiAgVXNlIHRoZSBjYWxsYmFjayB0byBnZXQgdGhlIGVudGl0eSByZXNwb25zZS5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjbGFzc05hbWVcclxuICAgKiBAcGFyYW0gZGF0YVxyXG4gICAqIEBwYXJhbSB7KGRhdGE6IE9iamVjdCkgPT4gYW55fSBvblJlc3BvbnNlXHJcbiAgICogQHBhcmFtIHsoZXJyb3IpID0+IGFueX0gb25FcnJvclxyXG4gICAqIEBwYXJhbSB7KCkgPT4gYW55fSBvbkZpbmFsaXplXHJcbiAgICogQHJldHVybnMge0JlaGF2aW9yU3ViamVjdDxib29sZWFuPn1cclxuICAgKi9cclxuICBwdWJsaWMgcG9zdExvYWRpbmcoY2xhc3NOYW1lOiBzdHJpbmcsXHJcbiAgICAgICAgICAgICAgICAgICAgIGRhdGE6IGFueSxcclxuICAgICAgICAgICAgICAgICAgICAgb25SZXNwb25zZTogKGRhdGE6IE9iamVjdCkgPT4gYW55LFxyXG4gICAgICAgICAgICAgICAgICAgICBvbkVycm9yPzogKGVycm9yKSA9PiBhbnksXHJcbiAgICAgICAgICAgICAgICAgICAgIG9uRmluYWxpemU/OiAoKSA9PiBhbnkpOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4ge1xyXG4gICAgbGV0IGxvYWRpbmc6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XHJcblxyXG4gICAgdGhpcy5odHRwLnBvc3Q8T2JqZWN0Pih0aGlzLmNydWRFbmRwb2ludCArIGNsYXNzTmFtZSwgZGF0YSkuc3Vic2NyaWJlKChkYXRhOiBPYmplY3QpID0+IHtcclxuICAgICAgbG9hZGluZy5uZXh0KGZhbHNlKTtcclxuICAgICAgb25SZXNwb25zZShkYXRhKTtcclxuICAgIH0sXHJcbiAgICAoZXJyb3IpID0+IHtcclxuICAgICAgb25FcnJvcihlcnJvcik7XHJcbiAgICB9LFxyXG4gICAgKCkgPT4ge1xyXG4gICAgICBvbkZpbmFsaXplKCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gbG9hZGluZztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFB1dCBhbiBleGlzdGluZyBlbnRpdHkgd2l0aCBhbiBpZC4gIFJldHVybiB0aGUgdXBkYXRlZCBlbnRpdHkuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gY2xhc3NOYW1lXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IGlkXHJcbiAgICogQHBhcmFtIGRhdGFcclxuICAgKiBAcmV0dXJucyB7T2JzZXJ2YWJsZTxPYmplY3Q+fVxyXG4gICAqL1xyXG4gIHB1YmxpYyBwdXQoY2xhc3NOYW1lOiBzdHJpbmcsIGlkOiBudW1iZXIsIGRhdGE6IGFueSk6IE9ic2VydmFibGU8T2JqZWN0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dDxPYmplY3Q+KHRoaXMuY3J1ZEVuZHBvaW50ICsgY2xhc3NOYW1lICsgXCIvXCIgKyBpZCwgZGF0YSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm4gdGhlIGxvYWRpbmcgc3ViamVjdC4gIFB1dCBhbiBleGlzdGluZyBlbnRpdHkgd2l0aCBhbiBpZC4gIEluIHRoZSBjYWxsYmFjayByZXR1cm4gdGhlIHVwZGF0ZWQgZW50aXR5LlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNsYXNzTmFtZVxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpZFxyXG4gICAqIEBwYXJhbSBkYXRhXHJcbiAgICogQHBhcmFtIHsoZGF0YTogT2JqZWN0KSA9PiBhbnl9IG9uUmVzcG9uc2VcclxuICAgKiBAcGFyYW0geyhlcnJvcikgPT4gYW55fSBvbkVycm9yXHJcbiAgICogQHBhcmFtIHsoKSA9PiBhbnl9IG9uRmluYWxpemVcclxuICAgKiBAcmV0dXJucyB7QmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+fVxyXG4gICAqL1xyXG4gIHB1YmxpYyBwdXRMb2FkaW5nKGNsYXNzTmFtZTogc3RyaW5nLFxyXG4gICAgICAgICAgICAgICAgICAgIGlkOiBudW1iZXIsIGRhdGE6IGFueSxcclxuICAgICAgICAgICAgICAgICAgICBvblJlc3BvbnNlOiAoZGF0YTogT2JqZWN0KSA9PiBhbnksXHJcbiAgICAgICAgICAgICAgICAgICAgb25FcnJvcj86IChlcnJvcikgPT4gYW55LFxyXG4gICAgICAgICAgICAgICAgICAgIG9uRmluYWxpemU/OiAoKSA9PiBhbnkpOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4ge1xyXG4gICAgbGV0IGxvYWRpbmc6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XHJcblxyXG4gICAgdGhpcy5odHRwLnB1dDxPYmplY3Q+KHRoaXMuY3J1ZEVuZHBvaW50ICsgY2xhc3NOYW1lICsgXCIvXCIgKyBpZCwgZGF0YSkuc3Vic2NyaWJlKChkYXRhOiBPYmplY3QpID0+IHtcclxuICAgICAgbG9hZGluZy5uZXh0KGZhbHNlKTtcclxuICAgICAgb25SZXNwb25zZShkYXRhKTtcclxuICAgIH0sXHJcbiAgICAoZXJyb3IpID0+IHtcclxuICAgICAgb25FcnJvcihlcnJvcik7XHJcbiAgICB9LFxyXG4gICAgKCkgPT4ge1xyXG4gICAgICBvbkZpbmFsaXplKCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gbG9hZGluZztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERlbGV0ZSB0aGUgZW50aXR5IGJ5IGl0cyBpZCwgcmV0dXJuIHRoZSByZXNwb25zZSB3aXRoIG5vIGJvZHkuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gY2xhc3NOYW1lXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IGlkXHJcbiAgICogQHJldHVybnMge09ic2VydmFibGU8T2JqZWN0Pn1cclxuICAgKi9cclxuICBwdWJsaWMgZGVsZXRlKGNsYXNzTmFtZTogc3RyaW5nLCBpZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8YW55Pj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGU8T2JqZWN0Pih0aGlzLmNydWRFbmRwb2ludCArIGNsYXNzTmFtZSArIFwiL1wiICsgaWQsIHsgb2JzZXJ2ZTogXCJyZXNwb25zZVwiIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJuIHRoZSBsb2FkaW5nIHN1YmplY3QuICBEZWxldGUgdGhlIGVudGl0eSBieSBpZCwgdXNlIHRoZSBjYWxsYmFjayB0byBnZXQgdGhlIHJlc3BvbnNlIHdpdGggbm8gYm9keS5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjbGFzc05hbWVcclxuICAgKiBAcGFyYW0ge251bWJlcn0gaWRcclxuICAgKiBAcGFyYW0geyhkYXRhOiBPYmplY3QpID0+IGFueX0gb25SZXNwb25zZVxyXG4gICAqIEBwYXJhbSB7KGVycm9yKSA9PiBhbnl9IG9uRXJyb3JcclxuICAgKiBAcGFyYW0geygpID0+IGFueX0gb25GaW5hbGl6ZVxyXG4gICAqIEByZXR1cm5zIHtCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj59XHJcbiAgICovXHJcbiAgcHVibGljIGRlbGV0ZUxvYWRpbmcoY2xhc3NOYW1lOiBzdHJpbmcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgaWQ6IG51bWJlcixcclxuICAgICAgICAgICAgICAgICAgICAgICBvblJlc3BvbnNlOiAocmVzcG9uc2U6IEh0dHBSZXNwb25zZTxhbnk+KSA9PiBhbnksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgb25FcnJvcj86IChlcnJvcikgPT4gYW55LFxyXG4gICAgICAgICAgICAgICAgICAgICAgIG9uRmluYWxpemU/OiAoKSA9PiBhbnkpOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4ge1xyXG4gICAgbGV0IGxvYWRpbmc6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XHJcblxyXG4gICAgdGhpcy5odHRwLmRlbGV0ZTxPYmplY3Q+KHRoaXMuY3J1ZEVuZHBvaW50ICsgY2xhc3NOYW1lICsgXCIvXCIgKyBpZCwgeyBvYnNlcnZlOiBcInJlc3BvbnNlXCIgfSkuc3Vic2NyaWJlKChyZXNwb25zZTogSHR0cFJlc3BvbnNlPGFueT4pID0+IHtcclxuICAgICAgbG9hZGluZy5uZXh0KGZhbHNlKTtcclxuICAgICAgb25SZXNwb25zZShyZXNwb25zZSk7XHJcbiAgICB9LFxyXG4gICAgKGVycm9yKSA9PiB7XHJcbiAgICAgIG9uRXJyb3IoZXJyb3IpO1xyXG4gICAgfSxcclxuICAgICgpID0+IHtcclxuICAgICAgb25GaW5hbGl6ZSgpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIGxvYWRpbmc7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
240
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J1ZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY3J1ZC9zcmMvc2VydmljZXMvY3J1ZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNqRSxPQUFPLEVBQUMsVUFBVSxFQUFFLFVBQVUsRUFBZSxNQUFNLHNCQUFzQixDQUFDO0FBRTFFLE9BQU8sRUFBQyxlQUFlLEVBQWMsRUFBRSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3JELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBSXhDLE1BQU0sQ0FBQyxJQUFJLGFBQWEsR0FBRyxJQUFJLGNBQWMsQ0FBUyxjQUFjLENBQUMsQ0FBQztBQUV0RTs7Ozs7R0FLRztBQUVILE1BQU0sT0FBTyxXQUFXO0lBSXRCLFlBQW9CLElBQWdCLEVBQWlDLFlBQW9CO1FBQXJFLFNBQUksR0FBSixJQUFJLENBQVk7UUFBaUMsaUJBQVksR0FBWixZQUFZLENBQVE7UUFGekYsZ0JBQVcsR0FBd0IsSUFBSSxHQUFHLEVBQWtCLENBQUM7SUFFK0IsQ0FBQztJQUV0RixXQUFXLENBQUMsU0FBaUI7UUFDbEMsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQ3BDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDN0MsQ0FBQztRQUVELElBQUksQ0FBQyxHQUF1QixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBUyxJQUFJLENBQUMsWUFBWSxHQUFHLFNBQVMsR0FBRyxXQUFXLENBQUMsQ0FBQztRQUMvRixDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUU7WUFDNUIsSUFB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QUFFO1lBQ0gsVUFBVSxFQUFFLENBQUM7UUFDZixDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7K0dBNVFVLFdBQVcsNENBSXdCLGFBQWE7bUhBSmhELFdBQVc7OzRGQUFYLFdBQVc7a0JBRHZCLFVBQVU7OzBCQUs4QixNQUFNOzJCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7SHR0cENsaWVudCwgSHR0cFBhcmFtcywgSHR0cFJlc3BvbnNlfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcclxuXHJcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBvZn0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHtmaW5hbGl6ZX0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcblxyXG5pbXBvcnQge0hjaURhdGFEdG8sIEhjaUdyaWREdG8sIEhjaVBvc3RXcmFwcGVyRHRvfSBmcm9tIFwiQGh1bnRzbWFuLWNhbmNlci1pbnN0aXR1dGUvaGNpLW5nLWdyaWQtZHRvXCI7XHJcblxyXG5leHBvcnQgbGV0IENSVURfRU5EUE9JTlQgPSBuZXcgSW5qZWN0aW9uVG9rZW48c3RyaW5nPihcImNydWRFbmRwb2ludFwiKTtcclxuXHJcbi8qKlxyXG4gKiBUaGlzIHNlcnZpY2UgbWFuYWdlcyBjb21tdW5pY2F0aW9uIHdpdGggdGhlIGNydWQgYXBpLlxyXG4gKiBUaGUgdHlwaWNhbCBhcGkgZW5kcG9pbnQgd291bGQgYmUgXCIvYXBwLW5hbWUvYXBpL2NydWRcIi5cclxuICpcclxuICogVE9ETzogQSBjYWxsIHRoYXQgd291bGQgcmV0dXJuIHRoZSByZXNwb25zZSBhcyB3ZWxsIGFzIHRoZSBkYXRhLlxyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQ3J1ZFNlcnZpY2Uge1xyXG5cclxuICBtZXRhZGF0YU1hcDogTWFwPHN0cmluZywgT2JqZWN0PiA9IG5ldyBNYXA8c3RyaW5nLCBPYmplY3Q+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCwgQEluamVjdChDUlVEX0VORFBPSU5UKSBwcml2YXRlIGNydWRFbmRwb2ludDogc3RyaW5nKSB7fVxyXG5cclxuICBwdWJsaWMgZ2V0TWV0YWRhdGEoY2xhc3NOYW1lOiBzdHJpbmcpOiBPYnNlcnZhYmxlPE9iamVjdD4ge1xyXG4gICAgaWYgKHRoaXMubWV0YWRhdGFNYXAuZ2V0KGNsYXNzTmFtZSkpIHtcclxuICAgICAgcmV0dXJuIG9mKHRoaXMubWV0YWRhdGFNYXAuZ2V0KGNsYXNzTmFtZSkpO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBvOiBPYnNlcnZhYmxlPE9iamVjdD4gPSB0aGlzLmh0dHAuZ2V0PE9iamVjdD4odGhpcy5jcnVkRW5kcG9pbnQgKyBjbGFzc05hbWUgKyBcIi9tZXRhZGF0YVwiKTtcclxuICAgIG8uc3Vic2NyaWJlKChtZXRhZGF0YTogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMubWV0YWRhdGFNYXAuc2V0KGNsYXNzTmFtZSwgbWV0YWRhdGEpO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gbztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ha2VzIHRoZSBodHRwIHJlcXVlc3QgYW5kIHJldHVybnMgYW4gb2JzZXJ2YWJsZSBmb3IgaXQuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gY2xhc3NOYW1lXHJcbiAgICogQHBhcmFtIHtIY2lQb3N0V3JhcHBlckR0b30gZHRvXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHF1ZXJ5XHJcbiAgICogQHJldHVybnMge09ic2VydmFibGU8SGNpRGF0YUR0bz59XHJcbiAgICovXHJcbiAgcHVibGljIGdldEFsbChjbGFzc05hbWU6IHN0cmluZywgZHRvOiBIY2lQb3N0V3JhcHBlckR0byA9IHVuZGVmaW5lZCwgcXVlcnk6IHN0cmluZyA9IHVuZGVmaW5lZCk6IE9ic2VydmFibGU8SGNpRGF0YUR0bz4ge1xyXG4gICAgbGV0IHBhcmFtczogSHR0cFBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XHJcbiAgICBpZiAocXVlcnkpIHtcclxuICAgICAgcGFyYW1zID0gcGFyYW1zLnNldChcInF1ZXJ5XCIsIHF1ZXJ5KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoZHRvKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxIY2lEYXRhRHRvPih0aGlzLmNydWRFbmRwb2ludCArIGNsYXNzTmFtZSArIFwiL2luZm9cIiwgZHRvLCB7cGFyYW1zOiBwYXJhbXN9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEhjaURhdGFEdG8+KHRoaXMuY3J1ZEVuZHBvaW50ICsgY2xhc3NOYW1lLCB7cGFyYW1zOiBwYXJhbXN9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybiBhIGxvYWRpbmcgc3ViamVjdCBhbmQgcmVxdWlyZSBhIGNhbGxiYWNrIHRvIGRlYWwgd2l0aCBzZXR0aW5nIGRhdGEgd2hlbiB0aGUgcmVzcG9uc2UgY29tZXMgYmFjay5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjbGFzc05hbWUgVGhlIG5hbWUgb2YgdGhlIGVudGl0eSBvciBEVE8uXHJcbiAgICogQHBhcmFtIHtIY2lQb3N0V3JhcHBlckR0b30gZHRvIERlZmF1bHQgdG8gdW5kZWZpbmVkLlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBxdWVyeSBEZWZhdWx0IHRvIHVuZGVmaW5lZC5cclxuICAgKiBAcGFyYW0geyhkYXRhOiBIY2lEYXRhRHRvKSA9PiBhbnl9IG9uUmVzcG9uc2UgT25seSByZXF1aXJlZCBmdW5jdGlvbi5cclxuICAgKiBAcGFyYW0geyhlcnJvcikgPT4gYW55fSBvbkVycm9yIE9wdGlvbmFsXHJcbiAgICogQHBhcmFtIHsoKSA9PiBhbnl9IG9uRmluYWxpemUgT3B0aW9uYWxcclxuICAgKiBAcmV0dXJucyB7QmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+fVxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXRBbGxMb2FkaW5nKGNsYXNzTmFtZTogc3RyaW5nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgIGR0bzogSGNpUG9zdFdyYXBwZXJEdG8gPSB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgcXVlcnk6IHN0cmluZyA9IHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgICAgICAgICAgICBvblJlc3BvbnNlOiAoZGF0YTogSGNpRGF0YUR0bykgPT4gYW55LFxyXG4gICAgICAgICAgICAgICAgICAgICAgIG9uRXJyb3I/OiAoZXJyb3IpID0+IGFueSxcclxuICAgICAgICAgICAgICAgICAgICAgICBvbkZpbmFsaXplPzogKCkgPT4gYW55KTogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+IHtcclxuICAgIGxldCBsb2FkaW5nOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xyXG5cclxuICAgIGxldCBwYXJhbXM6IEh0dHBQYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xyXG4gICAgaWYgKHF1ZXJ5KSB7XHJcbiAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoXCJxdWVyeVwiLCBxdWVyeSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGR0bykge1xyXG4gICAgICB0aGlzLmh0dHAucG9zdDxIY2lEYXRhRHRvPih0aGlzLmNydWRFbmRwb2ludCArIGNsYXNzTmFtZSArIFwiL2luZm9cIiwgZHRvLCB7cGFyYW1zOiBwYXJhbXN9KVxyXG4gICAgICAgIC5waXBlKGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAgIGlmIChvbkZpbmFsaXplKSB7XHJcbiAgICAgICAgICAgIG9uRmluYWxpemUoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KSlcclxuICAgICAgICAuc3Vic2NyaWJlKChkYXRhOiBIY2lEYXRhRHRvKSA9PiB7XHJcbiAgICAgICAgICBsb2FkaW5nLm5leHQoZmFsc2UpO1xyXG4gICAgICAgICAgb25SZXNwb25zZShkYXRhKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgaWYgKG9uRXJyb3IpIHtcclxuICAgICAgICAgICAgb25FcnJvcihlcnJvcik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmh0dHAuZ2V0PEhjaURhdGFEdG8+KHRoaXMuY3J1ZEVuZHBvaW50ICsgY2xhc3NOYW1lLCB7cGFyYW1zOiBwYXJhbXN9KVxyXG4gICAgICAgIC5waXBlKGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAgIGlmIChvbkZpbmFsaXplKSB7XHJcbiAgICAgICAgICAgIG9uRmluYWxpemUoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KSlcclxuICAgICAgICAuc3Vic2NyaWJlKChkYXRhOiBIY2lEYXRhRHRvKSA9PiB7XHJcbiAgICAgICAgICAgIGxvYWRpbmcubmV4dChmYWxzZSk7XHJcbiAgICAgICAgICAgIG9uUmVzcG9uc2UoZGF0YSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChvbkVycm9yKSB7XHJcbiAgICAgICAgICAgICAgb25FcnJvcihlcnJvcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBsb2FkaW5nO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IGEgc2luZ2xlIGluc3RhbmNlIG9mIGFuIGVudGl0eSBiYXNlZCBvbiB0aGUgaWQuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gY2xhc3NOYW1lXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IGlkXHJcbiAgICogQHJldHVybnMge09ic2VydmFibGU8T2JqZWN0Pn1cclxuICAgKi9cclxuICBwdWJsaWMgZ2V0KGNsYXNzTmFtZTogc3RyaW5nLCBpZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxPYmplY3Q+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PE9iamVjdD4odGhpcy5jcnVkRW5kcG9pbnQgKyBjbGFzc05hbWUgKyBcIi9cIiArIGlkKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybiB0aGUgbG9hZGluZyBzdWJqZWN0IGZvciB0aGUgcmVxdWVzdC4gIENhbGxiYWNrIHJlcXVpcmVkIHRvIGdldCB0aGUgZW50aXR5IHJlc3BvbnNlLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNsYXNzTmFtZVxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpZFxyXG4gICAqIEBwYXJhbSB7KGRhdGE6IE9iamVjdCkgPT4gYW55fSBvblJlc3BvbnNlXHJcbiAgICogQHBhcmFtIHsoZXJyb3IpID0+IGFueX0gb25FcnJvclxyXG4gICAqIEBwYXJhbSB7KCkgPT4gYW55fSBvbkZpbmFsaXplXHJcbiAgICogQHJldHVybnMge0JlaGF2aW9yU3ViamVjdDxib29sZWFuPn1cclxuICAgKi9cclxuICBwdWJsaWMgZ2V0TG9hZGluZyhjbGFzc05hbWU6IHN0cmluZyxcclxuICAgICAgICAgICAgICAgICAgICBpZDogbnVtYmVyLFxyXG4gICAgICAgICAgICAgICAgICAgIG9uUmVzcG9uc2U6IChkYXRhOiBPYmplY3QpID0+IGFueSxcclxuICAgICAgICAgICAgICAgICAgICBvbkVycm9yPzogKGVycm9yKSA9PiBhbnksXHJcbiAgICAgICAgICAgICAgICAgICAgb25GaW5hbGl6ZT86ICgpID0+IGFueSk6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiB7XHJcbiAgICBsZXQgbG9hZGluZzogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcclxuXHJcbiAgICB0aGlzLmh0dHAuZ2V0PE9iamVjdD4odGhpcy5jcnVkRW5kcG9pbnQgKyBjbGFzc05hbWUgKyBcIi9cIiArIGlkKS5zdWJzY3JpYmUoKGRhdGE6IE9iamVjdCkgPT4ge1xyXG4gICAgICBsb2FkaW5nLm5leHQoZmFsc2UpO1xyXG4gICAgICBvblJlc3BvbnNlKGRhdGEpO1xyXG4gICAgfSxcclxuICAgIChlcnJvcikgPT4ge1xyXG4gICAgICBvbkVycm9yKGVycm9yKTtcclxuICAgIH0sXHJcbiAgICAoKSA9PiB7XHJcbiAgICAgIG9uRmluYWxpemUoKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBsb2FkaW5nO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUG9zdCBhIG5ldyBlbnRpdHkuICBPbmUgd2l0aG91dCBhbiBpZC4gIFJldHVybiB0aGF0IGVudGl0eS5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjbGFzc05hbWVcclxuICAgKiBAcGFyYW0gZGF0YVxyXG4gICAqIEByZXR1cm5zIHtPYnNlcnZhYmxlPE9iamVjdD59XHJcbiAgICovXHJcbiAgcHVibGljIHBvc3QoY2xhc3NOYW1lOiBzdHJpbmcsIGRhdGE6IGFueSk6IE9ic2VydmFibGU8T2JqZWN0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8T2JqZWN0Pih0aGlzLmNydWRFbmRwb2ludCArIGNsYXNzTmFtZSwgZGF0YSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm4gYSBsb2FkaW5nIHN1YmplY3QuICBQb3N0IGEgbmV3IGVudGl0eSB3aXRob3V0IGFuIGlkLiAgVXNlIHRoZSBjYWxsYmFjayB0byBnZXQgdGhlIGVudGl0eSByZXNwb25zZS5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjbGFzc05hbWVcclxuICAgKiBAcGFyYW0gZGF0YVxyXG4gICAqIEBwYXJhbSB7KGRhdGE6IE9iamVjdCkgPT4gYW55fSBvblJlc3BvbnNlXHJcbiAgICogQHBhcmFtIHsoZXJyb3IpID0+IGFueX0gb25FcnJvclxyXG4gICAqIEBwYXJhbSB7KCkgPT4gYW55fSBvbkZpbmFsaXplXHJcbiAgICogQHJldHVybnMge0JlaGF2aW9yU3ViamVjdDxib29sZWFuPn1cclxuICAgKi9cclxuICBwdWJsaWMgcG9zdExvYWRpbmcoY2xhc3NOYW1lOiBzdHJpbmcsXHJcbiAgICAgICAgICAgICAgICAgICAgIGRhdGE6IGFueSxcclxuICAgICAgICAgICAgICAgICAgICAgb25SZXNwb25zZTogKGRhdGE6IE9iamVjdCkgPT4gYW55LFxyXG4gICAgICAgICAgICAgICAgICAgICBvbkVycm9yPzogKGVycm9yKSA9PiBhbnksXHJcbiAgICAgICAgICAgICAgICAgICAgIG9uRmluYWxpemU/OiAoKSA9PiBhbnkpOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4ge1xyXG4gICAgbGV0IGxvYWRpbmc6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XHJcblxyXG4gICAgdGhpcy5odHRwLnBvc3Q8T2JqZWN0Pih0aGlzLmNydWRFbmRwb2ludCArIGNsYXNzTmFtZSwgZGF0YSkuc3Vic2NyaWJlKChkYXRhOiBPYmplY3QpID0+IHtcclxuICAgICAgbG9hZGluZy5uZXh0KGZhbHNlKTtcclxuICAgICAgb25SZXNwb25zZShkYXRhKTtcclxuICAgIH0sXHJcbiAgICAoZXJyb3IpID0+IHtcclxuICAgICAgb25FcnJvcihlcnJvcik7XHJcbiAgICB9LFxyXG4gICAgKCkgPT4ge1xyXG4gICAgICBvbkZpbmFsaXplKCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gbG9hZGluZztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFB1dCBhbiBleGlzdGluZyBlbnRpdHkgd2l0aCBhbiBpZC4gIFJldHVybiB0aGUgdXBkYXRlZCBlbnRpdHkuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gY2xhc3NOYW1lXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IGlkXHJcbiAgICogQHBhcmFtIGRhdGFcclxuICAgKiBAcmV0dXJucyB7T2JzZXJ2YWJsZTxPYmplY3Q+fVxyXG4gICAqL1xyXG4gIHB1YmxpYyBwdXQoY2xhc3NOYW1lOiBzdHJpbmcsIGlkOiBudW1iZXIsIGRhdGE6IGFueSk6IE9ic2VydmFibGU8T2JqZWN0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dDxPYmplY3Q+KHRoaXMuY3J1ZEVuZHBvaW50ICsgY2xhc3NOYW1lICsgXCIvXCIgKyBpZCwgZGF0YSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm4gdGhlIGxvYWRpbmcgc3ViamVjdC4gIFB1dCBhbiBleGlzdGluZyBlbnRpdHkgd2l0aCBhbiBpZC4gIEluIHRoZSBjYWxsYmFjayByZXR1cm4gdGhlIHVwZGF0ZWQgZW50aXR5LlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNsYXNzTmFtZVxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpZFxyXG4gICAqIEBwYXJhbSBkYXRhXHJcbiAgICogQHBhcmFtIHsoZGF0YTogT2JqZWN0KSA9PiBhbnl9IG9uUmVzcG9uc2VcclxuICAgKiBAcGFyYW0geyhlcnJvcikgPT4gYW55fSBvbkVycm9yXHJcbiAgICogQHBhcmFtIHsoKSA9PiBhbnl9IG9uRmluYWxpemVcclxuICAgKiBAcmV0dXJucyB7QmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+fVxyXG4gICAqL1xyXG4gIHB1YmxpYyBwdXRMb2FkaW5nKGNsYXNzTmFtZTogc3RyaW5nLFxyXG4gICAgICAgICAgICAgICAgICAgIGlkOiBudW1iZXIsIGRhdGE6IGFueSxcclxuICAgICAgICAgICAgICAgICAgICBvblJlc3BvbnNlOiAoZGF0YTogT2JqZWN0KSA9PiBhbnksXHJcbiAgICAgICAgICAgICAgICAgICAgb25FcnJvcj86IChlcnJvcikgPT4gYW55LFxyXG4gICAgICAgICAgICAgICAgICAgIG9uRmluYWxpemU/OiAoKSA9PiBhbnkpOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4ge1xyXG4gICAgbGV0IGxvYWRpbmc6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XHJcblxyXG4gICAgdGhpcy5odHRwLnB1dDxPYmplY3Q+KHRoaXMuY3J1ZEVuZHBvaW50ICsgY2xhc3NOYW1lICsgXCIvXCIgKyBpZCwgZGF0YSkuc3Vic2NyaWJlKChkYXRhOiBPYmplY3QpID0+IHtcclxuICAgICAgbG9hZGluZy5uZXh0KGZhbHNlKTtcclxuICAgICAgb25SZXNwb25zZShkYXRhKTtcclxuICAgIH0sXHJcbiAgICAoZXJyb3IpID0+IHtcclxuICAgICAgb25FcnJvcihlcnJvcik7XHJcbiAgICB9LFxyXG4gICAgKCkgPT4ge1xyXG4gICAgICBvbkZpbmFsaXplKCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gbG9hZGluZztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERlbGV0ZSB0aGUgZW50aXR5IGJ5IGl0cyBpZCwgcmV0dXJuIHRoZSByZXNwb25zZSB3aXRoIG5vIGJvZHkuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gY2xhc3NOYW1lXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IGlkXHJcbiAgICogQHJldHVybnMge09ic2VydmFibGU8T2JqZWN0Pn1cclxuICAgKi9cclxuICBwdWJsaWMgZGVsZXRlKGNsYXNzTmFtZTogc3RyaW5nLCBpZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8YW55Pj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGU8T2JqZWN0Pih0aGlzLmNydWRFbmRwb2ludCArIGNsYXNzTmFtZSArIFwiL1wiICsgaWQsIHsgb2JzZXJ2ZTogXCJyZXNwb25zZVwiIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJuIHRoZSBsb2FkaW5nIHN1YmplY3QuICBEZWxldGUgdGhlIGVudGl0eSBieSBpZCwgdXNlIHRoZSBjYWxsYmFjayB0byBnZXQgdGhlIHJlc3BvbnNlIHdpdGggbm8gYm9keS5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjbGFzc05hbWVcclxuICAgKiBAcGFyYW0ge251bWJlcn0gaWRcclxuICAgKiBAcGFyYW0geyhkYXRhOiBPYmplY3QpID0+IGFueX0gb25SZXNwb25zZVxyXG4gICAqIEBwYXJhbSB7KGVycm9yKSA9PiBhbnl9IG9uRXJyb3JcclxuICAgKiBAcGFyYW0geygpID0+IGFueX0gb25GaW5hbGl6ZVxyXG4gICAqIEByZXR1cm5zIHtCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj59XHJcbiAgICovXHJcbiAgcHVibGljIGRlbGV0ZUxvYWRpbmcoY2xhc3NOYW1lOiBzdHJpbmcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgaWQ6IG51bWJlcixcclxuICAgICAgICAgICAgICAgICAgICAgICBvblJlc3BvbnNlOiAocmVzcG9uc2U6IEh0dHBSZXNwb25zZTxhbnk+KSA9PiBhbnksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgb25FcnJvcj86IChlcnJvcikgPT4gYW55LFxyXG4gICAgICAgICAgICAgICAgICAgICAgIG9uRmluYWxpemU/OiAoKSA9PiBhbnkpOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4ge1xyXG4gICAgbGV0IGxvYWRpbmc6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XHJcblxyXG4gICAgdGhpcy5odHRwLmRlbGV0ZTxPYmplY3Q+KHRoaXMuY3J1ZEVuZHBvaW50ICsgY2xhc3NOYW1lICsgXCIvXCIgKyBpZCwgeyBvYnNlcnZlOiBcInJlc3BvbnNlXCIgfSkuc3Vic2NyaWJlKChyZXNwb25zZTogSHR0cFJlc3BvbnNlPGFueT4pID0+IHtcclxuICAgICAgbG9hZGluZy5uZXh0KGZhbHNlKTtcclxuICAgICAgb25SZXNwb25zZShyZXNwb25zZSk7XHJcbiAgICB9LFxyXG4gICAgKGVycm9yKSA9PiB7XHJcbiAgICAgIG9uRXJyb3IoZXJyb3IpO1xyXG4gICAgfSxcclxuICAgICgpID0+IHtcclxuICAgICAgb25GaW5hbGl6ZSgpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIGxvYWRpbmc7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { InjectionToken,
|
|
2
|
+
import { InjectionToken, Inject, Injectable, isDevMode, ViewChild, Input, HostBinding, Component, Pipe, ViewChildren, NgModule } from '@angular/core';
|
|
3
3
|
import * as i2 from '@angular/common';
|
|
4
4
|
import { CommonModule } from '@angular/common';
|
|
5
5
|
import * as i3 from '@angular/forms';
|
|
@@ -240,10 +240,10 @@ class CrudService {
|
|
|
240
240
|
});
|
|
241
241
|
return loading;
|
|
242
242
|
}
|
|
243
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
244
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.
|
|
243
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CrudService, deps: [{ token: i1.HttpClient }, { token: CRUD_ENDPOINT }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
244
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CrudService }); }
|
|
245
245
|
}
|
|
246
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
246
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CrudService, decorators: [{
|
|
247
247
|
type: Injectable
|
|
248
248
|
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: undefined, decorators: [{
|
|
249
249
|
type: Inject,
|
|
@@ -400,8 +400,8 @@ class CrudComponent {
|
|
|
400
400
|
return this.crudService.post(this.className, this.data);
|
|
401
401
|
}
|
|
402
402
|
}
|
|
403
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
404
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.
|
|
403
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CrudComponent, deps: [{ token: CrudService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
404
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CrudComponent, selector: "hci-crud", inputs: { saveable: "saveable", editable: "editable", className: "className", displayFields: ["fields", "displayFields"], ids: "ids", data: "data", styles: "styles" }, host: { properties: { "class": "this.classList" } }, viewQueries: [{ propertyName: "form", first: true, predicate: ["crudForm"], descendants: true, static: true }], ngImport: i0, template: `
|
|
405
405
|
<form #crudForm="ngForm"
|
|
406
406
|
class="d-flex flex-nowrap flex-row flex-grow-1">
|
|
407
407
|
<div class="d-flex flex-nowrap flex-column flex-grow-1">
|
|
@@ -480,7 +480,7 @@ class CrudComponent {
|
|
|
480
480
|
</form>
|
|
481
481
|
`, isInline: true, styles: [".crud-input{width:100%}.crud-input:first-child{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.crud-input:last-child{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.ng-invalid{background-color:#ff646440}.phi{box-shadow:#c70 1px 1px 1px inset;border-color:orange}::ng-deep .hci-dropdown{min-width:20%}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.NgbPopover, selector: "[ngbPopover]", inputs: ["animation", "autoClose", "ngbPopover", "popoverTitle", "placement", "popperOptions", "triggers", "positionTarget", "container", "disablePopover", "popoverClass", "popoverContext", "openDelay", "closeDelay"], outputs: ["shown", "hidden"], exportAs: ["ngbPopover"] }, { kind: "component", type: i5.NativeSelectComponent, selector: "hci-native-select", inputs: ["class", "name", "label", "url", "entries", "required", "idKey", "displayKey", "disabled", "sortKey", "sortNumeric", "filterKey", "id", "filter"] }, { kind: "component", type: i6.BusyComponent, selector: "hci-busy", inputs: ["busy", "busySubjects", "getBusySubjects", "parentSelector", "rootClass", "icon", "iconSize", "showIcon", "mxAuto", "myAuto", "text", "template", "config"] }] }); }
|
|
482
482
|
}
|
|
483
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
483
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CrudComponent, decorators: [{
|
|
484
484
|
type: Component,
|
|
485
485
|
args: [{ selector: "hci-crud", template: `
|
|
486
486
|
<form #crudForm="ngForm"
|
|
@@ -589,10 +589,10 @@ class FieldViewablePipe {
|
|
|
589
589
|
return item.viewable;
|
|
590
590
|
});
|
|
591
591
|
}
|
|
592
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
593
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.
|
|
592
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FieldViewablePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
593
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: FieldViewablePipe, name: "fieldViewable" }); }
|
|
594
594
|
}
|
|
595
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
595
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FieldViewablePipe, decorators: [{
|
|
596
596
|
type: Pipe,
|
|
597
597
|
args: [{
|
|
598
598
|
name: "fieldViewable",
|
|
@@ -641,8 +641,8 @@ class CrudContainerComponent {
|
|
|
641
641
|
});
|
|
642
642
|
return forkJoin(requests);
|
|
643
643
|
}
|
|
644
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
645
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.
|
|
644
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CrudContainerComponent, deps: [{ token: CrudService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
645
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CrudContainerComponent, selector: "hci-crud-container", inputs: { data: "data", saveable: "saveable", crudGroups: "crudGroups", ids: "ids" }, host: { properties: { "class": "this.classList" } }, viewQueries: [{ propertyName: "crudComponents", predicate: CrudComponent, descendants: true }], ngImport: i0, template: `
|
|
646
646
|
<ng-container *ngFor="let crudGroup of crudGroups" class="crud-group">
|
|
647
647
|
<div *ngIf="crudGroup.mode === 'singular'"
|
|
648
648
|
class="d-flex crud-group p-2">
|
|
@@ -658,7 +658,7 @@ class CrudContainerComponent {
|
|
|
658
658
|
</ng-container>
|
|
659
659
|
`, isInline: true, styles: [".crud-group{background-color:#cfecfc;margin-bottom:1rem;border-radius:.5rem;border:#3d7a99 1px solid}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: CrudComponent, selector: "hci-crud", inputs: ["saveable", "editable", "className", "fields", "ids", "data", "styles"] }] }); }
|
|
660
660
|
}
|
|
661
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
661
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CrudContainerComponent, decorators: [{
|
|
662
662
|
type: Component,
|
|
663
663
|
args: [{ selector: "hci-crud-container", template: `
|
|
664
664
|
<ng-container *ngFor="let crudGroup of crudGroups" class="crud-group">
|
|
@@ -709,8 +709,8 @@ class CrudModule {
|
|
|
709
709
|
ngModule: CrudModule
|
|
710
710
|
};
|
|
711
711
|
}
|
|
712
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
713
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.
|
|
712
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CrudModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
713
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: CrudModule, declarations: [CrudContainerComponent,
|
|
714
714
|
CrudComponent,
|
|
715
715
|
FieldViewablePipe], imports: [CommonModule,
|
|
716
716
|
FormsModule,
|
|
@@ -719,13 +719,13 @@ class CrudModule {
|
|
|
719
719
|
MiscModule], exports: [CrudContainerComponent,
|
|
720
720
|
CrudComponent,
|
|
721
721
|
FieldViewablePipe] }); }
|
|
722
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.
|
|
722
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CrudModule, imports: [CommonModule,
|
|
723
723
|
FormsModule,
|
|
724
724
|
NgbModule,
|
|
725
725
|
SelectModule,
|
|
726
726
|
MiscModule] }); }
|
|
727
727
|
}
|
|
728
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
728
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CrudModule, decorators: [{
|
|
729
729
|
type: NgModule,
|
|
730
730
|
args: [{
|
|
731
731
|
imports: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"huntsman-cancer-institute-crud.mjs","sources":["../../../projects/crud/src/services/crud.service.ts","../../../projects/crud/src/components/crud.component.ts","../../../projects/crud/src/pipes/field-viewable.pipe.ts","../../../projects/crud/src/components/crud-container.component.ts","../../../projects/crud/src/crud.module.ts","../../../projects/crud/src/huntsman-cancer-institute-crud.ts"],"sourcesContent":["import {Inject, Injectable, InjectionToken} from \"@angular/core\";\r\nimport {HttpClient, HttpParams, HttpResponse} from \"@angular/common/http\";\r\n\r\nimport {BehaviorSubject, Observable, of} from \"rxjs\";\r\nimport {finalize} from \"rxjs/operators\";\r\n\r\nimport {HciDataDto, HciGridDto, HciPostWrapperDto} from \"@huntsman-cancer-institute/hci-ng-grid-dto\";\r\n\r\nexport let CRUD_ENDPOINT = new InjectionToken<string>(\"crudEndpoint\");\r\n\r\n/**\r\n * This service manages communication with the crud api.\r\n * The typical api endpoint would be \"/app-name/api/crud\".\r\n *\r\n * TODO: A call that would return the response as well as the data.\r\n */\r\n@Injectable()\r\nexport class CrudService {\r\n\r\n metadataMap: Map<string, Object> = new Map<string, Object>();\r\n\r\n constructor(private http: HttpClient, @Inject(CRUD_ENDPOINT) private crudEndpoint: string) {}\r\n\r\n public getMetadata(className: string): Observable<Object> {\r\n if (this.metadataMap.get(className)) {\r\n return of(this.metadataMap.get(className));\r\n }\r\n\r\n let o: Observable<Object> = this.http.get<Object>(this.crudEndpoint + className + \"/metadata\");\r\n o.subscribe((metadata: any) => {\r\n this.metadataMap.set(className, metadata);\r\n });\r\n return o;\r\n }\r\n\r\n /**\r\n * Makes the http request and returns an observable for it.\r\n *\r\n * @param {string} className\r\n * @param {HciPostWrapperDto} dto\r\n * @param {string} query\r\n * @returns {Observable<HciDataDto>}\r\n */\r\n public getAll(className: string, dto: HciPostWrapperDto = undefined, query: string = undefined): Observable<HciDataDto> {\r\n let params: HttpParams = new HttpParams();\r\n if (query) {\r\n params = params.set(\"query\", query);\r\n }\r\n\r\n if (dto) {\r\n return this.http.post<HciDataDto>(this.crudEndpoint + className + \"/info\", dto, {params: params});\r\n } else {\r\n return this.http.get<HciDataDto>(this.crudEndpoint + className, {params: params});\r\n }\r\n }\r\n\r\n /**\r\n * Return a loading subject and require a callback to deal with setting data when the response comes back.\r\n *\r\n * @param {string} className The name of the entity or DTO.\r\n * @param {HciPostWrapperDto} dto Default to undefined.\r\n * @param {string} query Default to undefined.\r\n * @param {(data: HciDataDto) => any} onResponse Only required function.\r\n * @param {(error) => any} onError Optional\r\n * @param {() => any} onFinalize Optional\r\n * @returns {BehaviorSubject<boolean>}\r\n */\r\n public getAllLoading(className: string,\r\n dto: HciPostWrapperDto = undefined,\r\n query: string = undefined,\r\n onResponse: (data: HciDataDto) => any,\r\n onError?: (error) => any,\r\n onFinalize?: () => any): BehaviorSubject<boolean> {\r\n let loading: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(true);\r\n\r\n let params: HttpParams = new HttpParams();\r\n if (query) {\r\n params = params.set(\"query\", query);\r\n }\r\n\r\n if (dto) {\r\n this.http.post<HciDataDto>(this.crudEndpoint + className + \"/info\", dto, {params: params})\r\n .pipe(finalize(() => {\r\n if (onFinalize) {\r\n onFinalize();\r\n }\r\n }))\r\n .subscribe((data: HciDataDto) => {\r\n loading.next(false);\r\n onResponse(data);\r\n },\r\n (error) => {\r\n if (onError) {\r\n onError(error);\r\n }\r\n });\r\n } else {\r\n this.http.get<HciDataDto>(this.crudEndpoint + className, {params: params})\r\n .pipe(finalize(() => {\r\n if (onFinalize) {\r\n onFinalize();\r\n }\r\n }))\r\n .subscribe((data: HciDataDto) => {\r\n loading.next(false);\r\n onResponse(data);\r\n },\r\n (error) => {\r\n if (onError) {\r\n onError(error);\r\n }\r\n });\r\n }\r\n\r\n return loading;\r\n }\r\n\r\n /**\r\n * Get a single instance of an entity based on the id.\r\n *\r\n * @param {string} className\r\n * @param {number} id\r\n * @returns {Observable<Object>}\r\n */\r\n public get(className: string, id: number): Observable<Object> {\r\n return this.http.get<Object>(this.crudEndpoint + className + \"/\" + id);\r\n }\r\n\r\n /**\r\n * Return the loading subject for the request. Callback required to get the entity response.\r\n *\r\n * @param {string} className\r\n * @param {number} id\r\n * @param {(data: Object) => any} onResponse\r\n * @param {(error) => any} onError\r\n * @param {() => any} onFinalize\r\n * @returns {BehaviorSubject<boolean>}\r\n */\r\n public getLoading(className: string,\r\n id: number,\r\n onResponse: (data: Object) => any,\r\n onError?: (error) => any,\r\n onFinalize?: () => any): BehaviorSubject<boolean> {\r\n let loading: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(true);\r\n\r\n this.http.get<Object>(this.crudEndpoint + className + \"/\" + id).subscribe((data: Object) => {\r\n loading.next(false);\r\n onResponse(data);\r\n },\r\n (error) => {\r\n onError(error);\r\n },\r\n () => {\r\n onFinalize();\r\n });\r\n\r\n return loading;\r\n }\r\n\r\n /**\r\n * Post a new entity. One without an id. Return that entity.\r\n *\r\n * @param {string} className\r\n * @param data\r\n * @returns {Observable<Object>}\r\n */\r\n public post(className: string, data: any): Observable<Object> {\r\n return this.http.post<Object>(this.crudEndpoint + className, data);\r\n }\r\n\r\n /**\r\n * Return a loading subject. Post a new entity without an id. Use the callback to get the entity response.\r\n *\r\n * @param {string} className\r\n * @param data\r\n * @param {(data: Object) => any} onResponse\r\n * @param {(error) => any} onError\r\n * @param {() => any} onFinalize\r\n * @returns {BehaviorSubject<boolean>}\r\n */\r\n public postLoading(className: string,\r\n data: any,\r\n onResponse: (data: Object) => any,\r\n onError?: (error) => any,\r\n onFinalize?: () => any): BehaviorSubject<boolean> {\r\n let loading: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(true);\r\n\r\n this.http.post<Object>(this.crudEndpoint + className, data).subscribe((data: Object) => {\r\n loading.next(false);\r\n onResponse(data);\r\n },\r\n (error) => {\r\n onError(error);\r\n },\r\n () => {\r\n onFinalize();\r\n });\r\n\r\n return loading;\r\n }\r\n\r\n /**\r\n * Put an existing entity with an id. Return the updated entity.\r\n *\r\n * @param {string} className\r\n * @param {number} id\r\n * @param data\r\n * @returns {Observable<Object>}\r\n */\r\n public put(className: string, id: number, data: any): Observable<Object> {\r\n return this.http.put<Object>(this.crudEndpoint + className + \"/\" + id, data);\r\n }\r\n\r\n /**\r\n * Return the loading subject. Put an existing entity with an id. In the callback return the updated entity.\r\n *\r\n * @param {string} className\r\n * @param {number} id\r\n * @param data\r\n * @param {(data: Object) => any} onResponse\r\n * @param {(error) => any} onError\r\n * @param {() => any} onFinalize\r\n * @returns {BehaviorSubject<boolean>}\r\n */\r\n public putLoading(className: string,\r\n id: number, data: any,\r\n onResponse: (data: Object) => any,\r\n onError?: (error) => any,\r\n onFinalize?: () => any): BehaviorSubject<boolean> {\r\n let loading: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(true);\r\n\r\n this.http.put<Object>(this.crudEndpoint + className + \"/\" + id, data).subscribe((data: Object) => {\r\n loading.next(false);\r\n onResponse(data);\r\n },\r\n (error) => {\r\n onError(error);\r\n },\r\n () => {\r\n onFinalize();\r\n });\r\n\r\n return loading;\r\n }\r\n\r\n /**\r\n * Delete the entity by its id, return the response with no body.\r\n *\r\n * @param {string} className\r\n * @param {number} id\r\n * @returns {Observable<Object>}\r\n */\r\n public delete(className: string, id: number): Observable<HttpResponse<any>> {\r\n return this.http.delete<Object>(this.crudEndpoint + className + \"/\" + id, { observe: \"response\" });\r\n }\r\n\r\n /**\r\n * Return the loading subject. Delete the entity by id, use the callback to get the response with no body.\r\n *\r\n * @param {string} className\r\n * @param {number} id\r\n * @param {(data: Object) => any} onResponse\r\n * @param {(error) => any} onError\r\n * @param {() => any} onFinalize\r\n * @returns {BehaviorSubject<boolean>}\r\n */\r\n public deleteLoading(className: string,\r\n id: number,\r\n onResponse: (response: HttpResponse<any>) => any,\r\n onError?: (error) => any,\r\n onFinalize?: () => any): BehaviorSubject<boolean> {\r\n let loading: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(true);\r\n\r\n this.http.delete<Object>(this.crudEndpoint + className + \"/\" + id, { observe: \"response\" }).subscribe((response: HttpResponse<any>) => {\r\n loading.next(false);\r\n onResponse(response);\r\n },\r\n (error) => {\r\n onError(error);\r\n },\r\n () => {\r\n onFinalize();\r\n });\r\n\r\n return loading;\r\n }\r\n}\r\n","import {\r\n AfterViewInit, ChangeDetectorRef, Component, HostBinding, Input, isDevMode,\r\n ViewChild, OnDestroy\r\n} from \"@angular/core\";\r\nimport {NgForm} from \"@angular/forms\";\r\n\r\nimport { Observable, Subscription } from \"rxjs\";\r\nimport {finalize} from \"rxjs/operators\";\r\n\r\nimport {CrudService} from \"../services/crud.service\";\r\n\r\n/**\r\n * This is a generic component that is designed to work with the crud api. The component builds itself based on the\r\n * metadata. This component could be independent so it has its own form and can interact with the crud api on its own.\r\n *\r\n * \"id\": false,\r\n * \"field\": \"idNameType\",\r\n * \"type\": \"Long\",\r\n * \"notNull\": true,\r\n * \"min\": null,\r\n * \"max\": null,\r\n * \"dictionaryClassName\": \"hci.ri.core.subject.model.NameType\",\r\n * \"phi\": false\r\n *\r\n * @since 10.0.0\r\n */\r\n@Component({\r\n selector: \"hci-crud\",\r\n template: `\r\n <form #crudForm=\"ngForm\"\r\n class=\"d-flex flex-nowrap flex-row flex-grow-1\">\r\n <div class=\"d-flex flex-nowrap flex-column flex-grow-1\">\r\n <hci-busy [busy]=\"[busy]\" [showIcon]=\"false\"></hci-busy>\r\n <ng-container *ngFor=\"let fieldArray of fields\">\r\n <div class=\"d-flex flex-nowrap mb-1\">\r\n <ng-container *ngFor=\"let field of fieldArray\">\r\n <input *ngIf=\"field.metadata.type === 'String'\" attr.aria-label=\"hci-ng-crud-input-string-{{field.metadata.field}}\"\r\n [(ngModel)]=\"field.data\"\r\n type=\"text\"\r\n [id]=\"field.metadata.field\"\r\n [name]=\"field.metadata.field\"\r\n [disabled]=\"!editable\"\r\n [placeholder]=\"field.metadata.field\"\r\n [minLength]=\"field.metadata.min\"\r\n [maxLength]=\"field.metadata.max\"\r\n [required]=\"field.metadata.notNull\"\r\n class=\"crud-input\"\r\n [ngStyle]=\"field.styles\"\r\n [class.phi]=\"field.metadata.phi\" />\r\n <input *ngIf=\"!field.metadata.dictionaryClassName && (field.metadata.type === 'Integer' || field.metadata.type === 'Long')\"\r\n [(ngModel)]=\"field.data\" attr.aria-label=\"hci-ng-crud-input-number-{{field.metadata.field}}\"\r\n type=\"number\"\r\n [id]=\"field.metadata.field\"\r\n [name]=\"field.metadata.field\"\r\n [disabled]=\"!editable\"\r\n [placeholder]=\"field.metadata.field\"\r\n [minLength]=\"field.metadata.min\"\r\n [maxLength]=\"field.metadata.max\"\r\n [required]=\"field.metadata.notNull\"\r\n class=\"crud-input\"\r\n [ngStyle]=\"field.styles\"\r\n [class.phi]=\"field.metadata.phi\" />\r\n <hci-native-select *ngIf=\"field.metadata.dictionaryClassName\"\r\n [(ngModel)]=\"field.data\"\r\n [id]=\"field.metadata.field\"\r\n [name]=\"field.metadata.field\"\r\n [url]=\"field.metadata.dictionaryClassName\"\r\n [required]=\"field.metadata.required\"\r\n class=\"crud-input\"\r\n [ngStyle]=\"field.styles\">\r\n </hci-native-select>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <button *ngIf=\"saveable && !crudForm.form.dirty\"\r\n (click)=\"save()\"\r\n class=\"btn btn-icon ms-1\"\r\n [disabled]=\"true\">\r\n <i class=\"far fa-circle fa-lg\"></i>\r\n </button>\r\n <button *ngIf=\"saveable && crudForm.form.dirty && crudForm.form.valid && !warning\"\r\n (click)=\"save()\"\r\n class=\"btn btn-icon btn-green ms-1\">\r\n <span *ngIf=\"!busy\">\r\n <i class=\"fas fa-check fa-lg\"></i>\r\n </span>\r\n <span *ngIf=\"busy\">\r\n <i class=\"fas fa-spinner fa-lg fa-spin\"></i>\r\n </span>\r\n </button>\r\n <button *ngIf=\"saveable && warning\"\r\n [ngbPopover]=\"warning\"\r\n triggers=\"mouseenter:mouseleave\"\r\n popoverClass=\"warn\"\r\n (click)=\"save()\"\r\n class=\"btn btn-icon btn-red ms-1\">\r\n <i class=\"fas fa-exclamation-circle fa-lg\"></i>\r\n </button>\r\n <button *ngIf=\"saveable && crudForm.form.dirty && !crudForm.form.valid && !warning\"\r\n [disabled]=\"true\">\r\n class=\"btn btn-icon btn-red ms-1\">\r\n <i class=\"fas fa-times fa-lg\"></i>\r\n </button>\r\n </form>\r\n `,\r\n styles: [`\r\n\r\n .crud-input {\r\n width: 100%;\r\n }\r\n\r\n .crud-input:first-child {\r\n border-top-left-radius: 0.25rem;\r\n border-bottom-left-radius: 0.25rem;\r\n }\r\n\r\n .crud-input:last-child {\r\n border-top-right-radius: 0.25rem;\r\n border-bottom-right-radius: 0.25rem;\r\n }\r\n\r\n .ng-invalid {\r\n background-color: rgba(255, 100, 100, 0.25);\r\n }\r\n\r\n .phi {\r\n box-shadow: #cc7700 1px 1px 1px inset;\r\n border-color: orange;\r\n }\r\n\r\n ::ng-deep .hci-dropdown {\r\n min-width: 20%;\r\n }\r\n\r\n `]\r\n})\r\nexport class CrudComponent implements AfterViewInit, OnDestroy {\r\n\r\n @HostBinding(\"class\") classList: string = \"d-flex flex-nowrap\";\r\n\r\n @Input() saveable: boolean = true;\r\n @Input() editable: boolean = true;\r\n @Input() className: string;\r\n @Input(\"fields\") displayFields: string[] = [];\r\n @Input() ids: any[];\r\n @Input() data: any = {};\r\n @Input() styles: any[];\r\n\r\n @ViewChild(\"crudForm\", {static: true}) form: NgForm;\r\n\r\n id: string;\r\n metadata: any = {};\r\n fields: any[];\r\n busy: boolean = false;\r\n warning: string;\r\n\r\n metadataSubscription: Subscription;\r\n\r\n constructor(private crudService: CrudService,\r\n private changeDetectorRef: ChangeDetectorRef) {}\r\n\r\n ngAfterViewInit(): void {\r\n this.metadataSubscription = this.crudService.getMetadata(this.className).subscribe((metadata: any) => {\r\n this.fields = [];\r\n\r\n for (let displayFieldArray of this.displayFields) {\r\n let fieldArray: any[] = [];\r\n\r\n for (let displayField of displayFieldArray) {\r\n for (let metadataField of metadata.fields) {\r\n if (displayField === metadataField.field) {\r\n let field: any = {\r\n data: undefined,\r\n metadata: metadataField,\r\n styles: undefined\r\n };\r\n\r\n if (this.styles) {\r\n for (let fieldStyle of this.styles) {\r\n if (displayField === fieldStyle.field) {\r\n field.styles = fieldStyle.styles;\r\n }\r\n }\r\n }\r\n\r\n fieldArray.push(field);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n this.fields.push(fieldArray);\r\n }\r\n\r\n for (let metadataField of metadata.fields) {\r\n if (metadataField.id) {\r\n this.id = metadataField.field;\r\n break;\r\n }\r\n }\r\n\r\n this.metadata = metadata;\r\n\r\n this.refreshData();\r\n this.changeDetectorRef.detectChanges();\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.metadataSubscription.unsubscribe();\r\n }\r\n\r\n /**\r\n * Push the data from the bound inputs to the data representing this crud class.\r\n */\r\n createData(): void {\r\n if (!this.data) {\r\n this.data = {};\r\n }\r\n\r\n if (this.ids) {\r\n for (let id of this.ids) {\r\n this.data[id.key] = id.value;\r\n }\r\n }\r\n\r\n for (let fieldArray of this.fields) {\r\n for (let field of fieldArray) {\r\n this.data[field.metadata.field] = field.data;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * If data exists, set it and refresh the bound data.\r\n *\r\n * @param data\r\n */\r\n setData(data: any): void {\r\n if (isDevMode()) {\r\n console.debug(\"CrudComponent.setData: \" + this.className);\r\n console.debug(data);\r\n }\r\n\r\n if (data !== undefined) {\r\n this.data = data;\r\n this.refreshData();\r\n } else {\r\n this.data = {};\r\n }\r\n }\r\n\r\n /**\r\n * Pushes the data to the fields for binding to the form inputs.\r\n */\r\n refreshData(): void {\r\n if (this.data && this.fields) {\r\n for (let fieldArray of this.fields) {\r\n for (let field of fieldArray) {\r\n field.data = this.data[field.metadata.field];\r\n }\r\n }\r\n\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n }\r\n\r\n /**\r\n * Gets a save request and refreshes the data upon a successful call.\r\n */\r\n save(): void {\r\n this.busy = true;\r\n this.warning = undefined;\r\n\r\n this.getSaveRequest()\r\n .pipe(finalize(() => {\r\n this.busy = false;\r\n }))\r\n .subscribe((data: Object) => {\r\n this.setData(data);\r\n this.form.form.markAsPristine();\r\n },\r\n (error) => {\r\n this.warning = error;\r\n console.error(\"CrudComponent.save: \" + this.className + \": \" + error);\r\n });\r\n }\r\n\r\n /**\r\n * Return an observable from the crud post or put. This is used such that the crud container can manage the request\r\n * for this component.\r\n *\r\n * @returns {Observable<Object>}\r\n */\r\n getSaveRequest(): Observable<Object> {\r\n this.createData();\r\n\r\n if (this.data[this.id]) {\r\n return this.crudService.put(this.className, this.data[this.id], this.data);\r\n } else {\r\n return this.crudService.post(this.className, this.data);\r\n }\r\n }\r\n}\r\n","import {Pipe} from \"@angular/core\";\r\n\r\n@Pipe({\r\n name: \"fieldViewable\",\r\n pure: true\r\n})\r\nexport class FieldViewablePipe {\r\n\r\n transform(list: any[]): any {\r\n return list.filter((item: any) => {\r\n return item.viewable;\r\n });\r\n }\r\n}\r\n","import {ChangeDetectorRef, Component, HostBinding, Input, isDevMode, QueryList, ViewChildren} from \"@angular/core\";\r\n\r\nimport {CrudService} from \"../services/crud.service\";\r\nimport {CrudComponent} from \"./crud.component\";\r\nimport {Observable} from \"rxjs/Observable\";\r\nimport {forkJoin} from \"rxjs/Observable/forkJoin\";\r\n\r\n/**\r\n * This is a generic component that is designed to work with the crud api. The component builds itself based on the\r\n * metadata. It ties together multiple crud components. For example, Subject or StudySubject may have names, phone\r\n * numbers, or addresses associated with it. Each one corresponding to its own CRUD rest endpoint.\r\n *\r\n * @since 10.0.0\r\n */\r\n@Component({\r\n selector: \"hci-crud-container\",\r\n template: `\r\n <ng-container *ngFor=\"let crudGroup of crudGroups\" class=\"crud-group\">\r\n <div *ngIf=\"crudGroup.mode === 'singular'\"\r\n class=\"d-flex crud-group p-2\">\r\n <h4 style=\"flex: 0 0 15%;\">{{crudGroup.display}}</h4>\r\n <hci-crud [className]=\"crudGroup.className\"\r\n [fields]=\"crudGroup.displayFields\"\r\n [styles]=\"crudGroup.styles\"\r\n [ids]=\"ids\"\r\n [data]=\"crudGroup.data\"\r\n [saveable]=\"saveable\"\r\n style=\"flex: 1 1 85%;\"></hci-crud>\r\n </div>\r\n </ng-container>\r\n `,\r\n styles: [`\r\n \r\n .crud-group {\r\n background-color: #cfecfc;\r\n margin-bottom: 1rem;\r\n border-radius: 0.5rem;\r\n border: #3d7a99 1px solid;\r\n }\r\n \r\n `]\r\n})\r\nexport class CrudContainerComponent {\r\n\r\n @HostBinding(\"class\") classList: string = \"d-flex flex-column\";\r\n\r\n @Input() data: any;\r\n @Input() saveable: boolean = true;\r\n @Input() crudGroups: any[];\r\n @Input() ids: any[];\r\n\r\n @ViewChildren(CrudComponent) crudComponents: QueryList<CrudComponent>;\r\n\r\n constructor(private crudService: CrudService,\r\n private changeDetectorRef: ChangeDetectorRef) {}\r\n\r\n setData(data: any): void {\r\n if (isDevMode()) {\r\n console.debug(\"CrudContainerComponent.setData\");\r\n console.debug(data);\r\n }\r\n\r\n this.data = data;\r\n\r\n this.crudComponents.forEach((crud: CrudComponent) => {\r\n for (let crudGroup of this.crudGroups) {\r\n if (crudGroup.className === crud.className && crudGroup.dataField) {\r\n crud.setData(this.data[crudGroup.dataField]);\r\n break;\r\n }\r\n }\r\n });\r\n }\r\n\r\n save(): void {\r\n this.crudComponents.forEach((crud: CrudComponent) => {\r\n crud.save();\r\n });\r\n }\r\n\r\n saveJoin(): Observable<any> {\r\n let requests: Observable<any>[] = [];\r\n\r\n this.crudComponents.forEach((crud: CrudComponent) => {\r\n requests.push(crud.getSaveRequest());\r\n });\r\n\r\n return forkJoin(requests);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) 2016 Huntsman Cancer Institute at the University of Utah, Confidential and Proprietary\r\n */\r\nimport {ModuleWithProviders, NgModule} from \"@angular/core\";\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {FormsModule} from \"@angular/forms\";\r\n\r\nimport {NgbModule} from \"@ng-bootstrap/ng-bootstrap\";\r\n\r\nimport {SelectModule} from \"@huntsman-cancer-institute/input\";\r\nimport {MiscModule} from \"@huntsman-cancer-institute/misc\";\r\n\r\nimport {CRUD_ENDPOINT, CrudService} from \"./services/crud.service\";\r\nimport {CrudComponent} from \"./components/crud.component\";\r\nimport {FieldViewablePipe} from \"./pipes/field-viewable.pipe\";\r\nimport {CrudContainerComponent} from \"./components/crud-container.component\";\r\n\r\n/**\r\n * The module providing the crud service.\r\n *\r\n * @since 9.0.0\r\n */\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n NgbModule,\r\n SelectModule,\r\n MiscModule\r\n ],\r\n declarations: [\r\n CrudContainerComponent,\r\n CrudComponent,\r\n FieldViewablePipe\r\n ],\r\n exports: [\r\n CrudContainerComponent,\r\n CrudComponent,\r\n FieldViewablePipe\r\n ]\r\n})\r\nexport class CrudModule {\r\n static forRoot(config: any): ModuleWithProviders<CrudModule> {\r\n return {\r\n providers: [\r\n {provide: CRUD_ENDPOINT, useValue: config.crudEndpoint},\r\n CrudService\r\n ],\r\n ngModule: CrudModule\r\n };\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.CrudService","i3.CrudComponent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"huntsman-cancer-institute-crud.mjs","sources":["../../../projects/crud/src/services/crud.service.ts","../../../projects/crud/src/components/crud.component.ts","../../../projects/crud/src/pipes/field-viewable.pipe.ts","../../../projects/crud/src/components/crud-container.component.ts","../../../projects/crud/src/crud.module.ts","../../../projects/crud/src/huntsman-cancer-institute-crud.ts"],"sourcesContent":["import {Inject, Injectable, InjectionToken} from \"@angular/core\";\r\nimport {HttpClient, HttpParams, HttpResponse} from \"@angular/common/http\";\r\n\r\nimport {BehaviorSubject, Observable, of} from \"rxjs\";\r\nimport {finalize} from \"rxjs/operators\";\r\n\r\nimport {HciDataDto, HciGridDto, HciPostWrapperDto} from \"@huntsman-cancer-institute/hci-ng-grid-dto\";\r\n\r\nexport let CRUD_ENDPOINT = new InjectionToken<string>(\"crudEndpoint\");\r\n\r\n/**\r\n * This service manages communication with the crud api.\r\n * The typical api endpoint would be \"/app-name/api/crud\".\r\n *\r\n * TODO: A call that would return the response as well as the data.\r\n */\r\n@Injectable()\r\nexport class CrudService {\r\n\r\n metadataMap: Map<string, Object> = new Map<string, Object>();\r\n\r\n constructor(private http: HttpClient, @Inject(CRUD_ENDPOINT) private crudEndpoint: string) {}\r\n\r\n public getMetadata(className: string): Observable<Object> {\r\n if (this.metadataMap.get(className)) {\r\n return of(this.metadataMap.get(className));\r\n }\r\n\r\n let o: Observable<Object> = this.http.get<Object>(this.crudEndpoint + className + \"/metadata\");\r\n o.subscribe((metadata: any) => {\r\n this.metadataMap.set(className, metadata);\r\n });\r\n return o;\r\n }\r\n\r\n /**\r\n * Makes the http request and returns an observable for it.\r\n *\r\n * @param {string} className\r\n * @param {HciPostWrapperDto} dto\r\n * @param {string} query\r\n * @returns {Observable<HciDataDto>}\r\n */\r\n public getAll(className: string, dto: HciPostWrapperDto = undefined, query: string = undefined): Observable<HciDataDto> {\r\n let params: HttpParams = new HttpParams();\r\n if (query) {\r\n params = params.set(\"query\", query);\r\n }\r\n\r\n if (dto) {\r\n return this.http.post<HciDataDto>(this.crudEndpoint + className + \"/info\", dto, {params: params});\r\n } else {\r\n return this.http.get<HciDataDto>(this.crudEndpoint + className, {params: params});\r\n }\r\n }\r\n\r\n /**\r\n * Return a loading subject and require a callback to deal with setting data when the response comes back.\r\n *\r\n * @param {string} className The name of the entity or DTO.\r\n * @param {HciPostWrapperDto} dto Default to undefined.\r\n * @param {string} query Default to undefined.\r\n * @param {(data: HciDataDto) => any} onResponse Only required function.\r\n * @param {(error) => any} onError Optional\r\n * @param {() => any} onFinalize Optional\r\n * @returns {BehaviorSubject<boolean>}\r\n */\r\n public getAllLoading(className: string,\r\n dto: HciPostWrapperDto = undefined,\r\n query: string = undefined,\r\n onResponse: (data: HciDataDto) => any,\r\n onError?: (error) => any,\r\n onFinalize?: () => any): BehaviorSubject<boolean> {\r\n let loading: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(true);\r\n\r\n let params: HttpParams = new HttpParams();\r\n if (query) {\r\n params = params.set(\"query\", query);\r\n }\r\n\r\n if (dto) {\r\n this.http.post<HciDataDto>(this.crudEndpoint + className + \"/info\", dto, {params: params})\r\n .pipe(finalize(() => {\r\n if (onFinalize) {\r\n onFinalize();\r\n }\r\n }))\r\n .subscribe((data: HciDataDto) => {\r\n loading.next(false);\r\n onResponse(data);\r\n },\r\n (error) => {\r\n if (onError) {\r\n onError(error);\r\n }\r\n });\r\n } else {\r\n this.http.get<HciDataDto>(this.crudEndpoint + className, {params: params})\r\n .pipe(finalize(() => {\r\n if (onFinalize) {\r\n onFinalize();\r\n }\r\n }))\r\n .subscribe((data: HciDataDto) => {\r\n loading.next(false);\r\n onResponse(data);\r\n },\r\n (error) => {\r\n if (onError) {\r\n onError(error);\r\n }\r\n });\r\n }\r\n\r\n return loading;\r\n }\r\n\r\n /**\r\n * Get a single instance of an entity based on the id.\r\n *\r\n * @param {string} className\r\n * @param {number} id\r\n * @returns {Observable<Object>}\r\n */\r\n public get(className: string, id: number): Observable<Object> {\r\n return this.http.get<Object>(this.crudEndpoint + className + \"/\" + id);\r\n }\r\n\r\n /**\r\n * Return the loading subject for the request. Callback required to get the entity response.\r\n *\r\n * @param {string} className\r\n * @param {number} id\r\n * @param {(data: Object) => any} onResponse\r\n * @param {(error) => any} onError\r\n * @param {() => any} onFinalize\r\n * @returns {BehaviorSubject<boolean>}\r\n */\r\n public getLoading(className: string,\r\n id: number,\r\n onResponse: (data: Object) => any,\r\n onError?: (error) => any,\r\n onFinalize?: () => any): BehaviorSubject<boolean> {\r\n let loading: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(true);\r\n\r\n this.http.get<Object>(this.crudEndpoint + className + \"/\" + id).subscribe((data: Object) => {\r\n loading.next(false);\r\n onResponse(data);\r\n },\r\n (error) => {\r\n onError(error);\r\n },\r\n () => {\r\n onFinalize();\r\n });\r\n\r\n return loading;\r\n }\r\n\r\n /**\r\n * Post a new entity. One without an id. Return that entity.\r\n *\r\n * @param {string} className\r\n * @param data\r\n * @returns {Observable<Object>}\r\n */\r\n public post(className: string, data: any): Observable<Object> {\r\n return this.http.post<Object>(this.crudEndpoint + className, data);\r\n }\r\n\r\n /**\r\n * Return a loading subject. Post a new entity without an id. Use the callback to get the entity response.\r\n *\r\n * @param {string} className\r\n * @param data\r\n * @param {(data: Object) => any} onResponse\r\n * @param {(error) => any} onError\r\n * @param {() => any} onFinalize\r\n * @returns {BehaviorSubject<boolean>}\r\n */\r\n public postLoading(className: string,\r\n data: any,\r\n onResponse: (data: Object) => any,\r\n onError?: (error) => any,\r\n onFinalize?: () => any): BehaviorSubject<boolean> {\r\n let loading: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(true);\r\n\r\n this.http.post<Object>(this.crudEndpoint + className, data).subscribe((data: Object) => {\r\n loading.next(false);\r\n onResponse(data);\r\n },\r\n (error) => {\r\n onError(error);\r\n },\r\n () => {\r\n onFinalize();\r\n });\r\n\r\n return loading;\r\n }\r\n\r\n /**\r\n * Put an existing entity with an id. Return the updated entity.\r\n *\r\n * @param {string} className\r\n * @param {number} id\r\n * @param data\r\n * @returns {Observable<Object>}\r\n */\r\n public put(className: string, id: number, data: any): Observable<Object> {\r\n return this.http.put<Object>(this.crudEndpoint + className + \"/\" + id, data);\r\n }\r\n\r\n /**\r\n * Return the loading subject. Put an existing entity with an id. In the callback return the updated entity.\r\n *\r\n * @param {string} className\r\n * @param {number} id\r\n * @param data\r\n * @param {(data: Object) => any} onResponse\r\n * @param {(error) => any} onError\r\n * @param {() => any} onFinalize\r\n * @returns {BehaviorSubject<boolean>}\r\n */\r\n public putLoading(className: string,\r\n id: number, data: any,\r\n onResponse: (data: Object) => any,\r\n onError?: (error) => any,\r\n onFinalize?: () => any): BehaviorSubject<boolean> {\r\n let loading: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(true);\r\n\r\n this.http.put<Object>(this.crudEndpoint + className + \"/\" + id, data).subscribe((data: Object) => {\r\n loading.next(false);\r\n onResponse(data);\r\n },\r\n (error) => {\r\n onError(error);\r\n },\r\n () => {\r\n onFinalize();\r\n });\r\n\r\n return loading;\r\n }\r\n\r\n /**\r\n * Delete the entity by its id, return the response with no body.\r\n *\r\n * @param {string} className\r\n * @param {number} id\r\n * @returns {Observable<Object>}\r\n */\r\n public delete(className: string, id: number): Observable<HttpResponse<any>> {\r\n return this.http.delete<Object>(this.crudEndpoint + className + \"/\" + id, { observe: \"response\" });\r\n }\r\n\r\n /**\r\n * Return the loading subject. Delete the entity by id, use the callback to get the response with no body.\r\n *\r\n * @param {string} className\r\n * @param {number} id\r\n * @param {(data: Object) => any} onResponse\r\n * @param {(error) => any} onError\r\n * @param {() => any} onFinalize\r\n * @returns {BehaviorSubject<boolean>}\r\n */\r\n public deleteLoading(className: string,\r\n id: number,\r\n onResponse: (response: HttpResponse<any>) => any,\r\n onError?: (error) => any,\r\n onFinalize?: () => any): BehaviorSubject<boolean> {\r\n let loading: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(true);\r\n\r\n this.http.delete<Object>(this.crudEndpoint + className + \"/\" + id, { observe: \"response\" }).subscribe((response: HttpResponse<any>) => {\r\n loading.next(false);\r\n onResponse(response);\r\n },\r\n (error) => {\r\n onError(error);\r\n },\r\n () => {\r\n onFinalize();\r\n });\r\n\r\n return loading;\r\n }\r\n}\r\n","import {\r\n AfterViewInit, ChangeDetectorRef, Component, HostBinding, Input, isDevMode,\r\n ViewChild, OnDestroy\r\n} from \"@angular/core\";\r\nimport {NgForm} from \"@angular/forms\";\r\n\r\nimport { Observable, Subscription } from \"rxjs\";\r\nimport {finalize} from \"rxjs/operators\";\r\n\r\nimport {CrudService} from \"../services/crud.service\";\r\n\r\n/**\r\n * This is a generic component that is designed to work with the crud api. The component builds itself based on the\r\n * metadata. This component could be independent so it has its own form and can interact with the crud api on its own.\r\n *\r\n * \"id\": false,\r\n * \"field\": \"idNameType\",\r\n * \"type\": \"Long\",\r\n * \"notNull\": true,\r\n * \"min\": null,\r\n * \"max\": null,\r\n * \"dictionaryClassName\": \"hci.ri.core.subject.model.NameType\",\r\n * \"phi\": false\r\n *\r\n * @since 10.0.0\r\n */\r\n@Component({\r\n selector: \"hci-crud\",\r\n template: `\r\n <form #crudForm=\"ngForm\"\r\n class=\"d-flex flex-nowrap flex-row flex-grow-1\">\r\n <div class=\"d-flex flex-nowrap flex-column flex-grow-1\">\r\n <hci-busy [busy]=\"[busy]\" [showIcon]=\"false\"></hci-busy>\r\n <ng-container *ngFor=\"let fieldArray of fields\">\r\n <div class=\"d-flex flex-nowrap mb-1\">\r\n <ng-container *ngFor=\"let field of fieldArray\">\r\n <input *ngIf=\"field.metadata.type === 'String'\" attr.aria-label=\"hci-ng-crud-input-string-{{field.metadata.field}}\"\r\n [(ngModel)]=\"field.data\"\r\n type=\"text\"\r\n [id]=\"field.metadata.field\"\r\n [name]=\"field.metadata.field\"\r\n [disabled]=\"!editable\"\r\n [placeholder]=\"field.metadata.field\"\r\n [minLength]=\"field.metadata.min\"\r\n [maxLength]=\"field.metadata.max\"\r\n [required]=\"field.metadata.notNull\"\r\n class=\"crud-input\"\r\n [ngStyle]=\"field.styles\"\r\n [class.phi]=\"field.metadata.phi\" />\r\n <input *ngIf=\"!field.metadata.dictionaryClassName && (field.metadata.type === 'Integer' || field.metadata.type === 'Long')\"\r\n [(ngModel)]=\"field.data\" attr.aria-label=\"hci-ng-crud-input-number-{{field.metadata.field}}\"\r\n type=\"number\"\r\n [id]=\"field.metadata.field\"\r\n [name]=\"field.metadata.field\"\r\n [disabled]=\"!editable\"\r\n [placeholder]=\"field.metadata.field\"\r\n [minLength]=\"field.metadata.min\"\r\n [maxLength]=\"field.metadata.max\"\r\n [required]=\"field.metadata.notNull\"\r\n class=\"crud-input\"\r\n [ngStyle]=\"field.styles\"\r\n [class.phi]=\"field.metadata.phi\" />\r\n <hci-native-select *ngIf=\"field.metadata.dictionaryClassName\"\r\n [(ngModel)]=\"field.data\"\r\n [id]=\"field.metadata.field\"\r\n [name]=\"field.metadata.field\"\r\n [url]=\"field.metadata.dictionaryClassName\"\r\n [required]=\"field.metadata.required\"\r\n class=\"crud-input\"\r\n [ngStyle]=\"field.styles\">\r\n </hci-native-select>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <button *ngIf=\"saveable && !crudForm.form.dirty\"\r\n (click)=\"save()\"\r\n class=\"btn btn-icon ms-1\"\r\n [disabled]=\"true\">\r\n <i class=\"far fa-circle fa-lg\"></i>\r\n </button>\r\n <button *ngIf=\"saveable && crudForm.form.dirty && crudForm.form.valid && !warning\"\r\n (click)=\"save()\"\r\n class=\"btn btn-icon btn-green ms-1\">\r\n <span *ngIf=\"!busy\">\r\n <i class=\"fas fa-check fa-lg\"></i>\r\n </span>\r\n <span *ngIf=\"busy\">\r\n <i class=\"fas fa-spinner fa-lg fa-spin\"></i>\r\n </span>\r\n </button>\r\n <button *ngIf=\"saveable && warning\"\r\n [ngbPopover]=\"warning\"\r\n triggers=\"mouseenter:mouseleave\"\r\n popoverClass=\"warn\"\r\n (click)=\"save()\"\r\n class=\"btn btn-icon btn-red ms-1\">\r\n <i class=\"fas fa-exclamation-circle fa-lg\"></i>\r\n </button>\r\n <button *ngIf=\"saveable && crudForm.form.dirty && !crudForm.form.valid && !warning\"\r\n [disabled]=\"true\">\r\n class=\"btn btn-icon btn-red ms-1\">\r\n <i class=\"fas fa-times fa-lg\"></i>\r\n </button>\r\n </form>\r\n `,\r\n styles: [`\r\n\r\n .crud-input {\r\n width: 100%;\r\n }\r\n\r\n .crud-input:first-child {\r\n border-top-left-radius: 0.25rem;\r\n border-bottom-left-radius: 0.25rem;\r\n }\r\n\r\n .crud-input:last-child {\r\n border-top-right-radius: 0.25rem;\r\n border-bottom-right-radius: 0.25rem;\r\n }\r\n\r\n .ng-invalid {\r\n background-color: rgba(255, 100, 100, 0.25);\r\n }\r\n\r\n .phi {\r\n box-shadow: #cc7700 1px 1px 1px inset;\r\n border-color: orange;\r\n }\r\n\r\n ::ng-deep .hci-dropdown {\r\n min-width: 20%;\r\n }\r\n\r\n `]\r\n})\r\nexport class CrudComponent implements AfterViewInit, OnDestroy {\r\n\r\n @HostBinding(\"class\") classList: string = \"d-flex flex-nowrap\";\r\n\r\n @Input() saveable: boolean = true;\r\n @Input() editable: boolean = true;\r\n @Input() className: string;\r\n @Input(\"fields\") displayFields: string[] = [];\r\n @Input() ids: any[];\r\n @Input() data: any = {};\r\n @Input() styles: any[];\r\n\r\n @ViewChild(\"crudForm\", {static: true}) form: NgForm;\r\n\r\n id: string;\r\n metadata: any = {};\r\n fields: any[];\r\n busy: boolean = false;\r\n warning: string;\r\n\r\n metadataSubscription: Subscription;\r\n\r\n constructor(private crudService: CrudService,\r\n private changeDetectorRef: ChangeDetectorRef) {}\r\n\r\n ngAfterViewInit(): void {\r\n this.metadataSubscription = this.crudService.getMetadata(this.className).subscribe((metadata: any) => {\r\n this.fields = [];\r\n\r\n for (let displayFieldArray of this.displayFields) {\r\n let fieldArray: any[] = [];\r\n\r\n for (let displayField of displayFieldArray) {\r\n for (let metadataField of metadata.fields) {\r\n if (displayField === metadataField.field) {\r\n let field: any = {\r\n data: undefined,\r\n metadata: metadataField,\r\n styles: undefined\r\n };\r\n\r\n if (this.styles) {\r\n for (let fieldStyle of this.styles) {\r\n if (displayField === fieldStyle.field) {\r\n field.styles = fieldStyle.styles;\r\n }\r\n }\r\n }\r\n\r\n fieldArray.push(field);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n this.fields.push(fieldArray);\r\n }\r\n\r\n for (let metadataField of metadata.fields) {\r\n if (metadataField.id) {\r\n this.id = metadataField.field;\r\n break;\r\n }\r\n }\r\n\r\n this.metadata = metadata;\r\n\r\n this.refreshData();\r\n this.changeDetectorRef.detectChanges();\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.metadataSubscription.unsubscribe();\r\n }\r\n\r\n /**\r\n * Push the data from the bound inputs to the data representing this crud class.\r\n */\r\n createData(): void {\r\n if (!this.data) {\r\n this.data = {};\r\n }\r\n\r\n if (this.ids) {\r\n for (let id of this.ids) {\r\n this.data[id.key] = id.value;\r\n }\r\n }\r\n\r\n for (let fieldArray of this.fields) {\r\n for (let field of fieldArray) {\r\n this.data[field.metadata.field] = field.data;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * If data exists, set it and refresh the bound data.\r\n *\r\n * @param data\r\n */\r\n setData(data: any): void {\r\n if (isDevMode()) {\r\n console.debug(\"CrudComponent.setData: \" + this.className);\r\n console.debug(data);\r\n }\r\n\r\n if (data !== undefined) {\r\n this.data = data;\r\n this.refreshData();\r\n } else {\r\n this.data = {};\r\n }\r\n }\r\n\r\n /**\r\n * Pushes the data to the fields for binding to the form inputs.\r\n */\r\n refreshData(): void {\r\n if (this.data && this.fields) {\r\n for (let fieldArray of this.fields) {\r\n for (let field of fieldArray) {\r\n field.data = this.data[field.metadata.field];\r\n }\r\n }\r\n\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n }\r\n\r\n /**\r\n * Gets a save request and refreshes the data upon a successful call.\r\n */\r\n save(): void {\r\n this.busy = true;\r\n this.warning = undefined;\r\n\r\n this.getSaveRequest()\r\n .pipe(finalize(() => {\r\n this.busy = false;\r\n }))\r\n .subscribe((data: Object) => {\r\n this.setData(data);\r\n this.form.form.markAsPristine();\r\n },\r\n (error) => {\r\n this.warning = error;\r\n console.error(\"CrudComponent.save: \" + this.className + \": \" + error);\r\n });\r\n }\r\n\r\n /**\r\n * Return an observable from the crud post or put. This is used such that the crud container can manage the request\r\n * for this component.\r\n *\r\n * @returns {Observable<Object>}\r\n */\r\n getSaveRequest(): Observable<Object> {\r\n this.createData();\r\n\r\n if (this.data[this.id]) {\r\n return this.crudService.put(this.className, this.data[this.id], this.data);\r\n } else {\r\n return this.crudService.post(this.className, this.data);\r\n }\r\n }\r\n}\r\n","import {Pipe} from \"@angular/core\";\r\n\r\n@Pipe({\r\n name: \"fieldViewable\",\r\n pure: true\r\n})\r\nexport class FieldViewablePipe {\r\n\r\n transform(list: any[]): any {\r\n return list.filter((item: any) => {\r\n return item.viewable;\r\n });\r\n }\r\n}\r\n","import {ChangeDetectorRef, Component, HostBinding, Input, isDevMode, QueryList, ViewChildren} from \"@angular/core\";\r\n\r\nimport {CrudService} from \"../services/crud.service\";\r\nimport {CrudComponent} from \"./crud.component\";\r\nimport {Observable} from \"rxjs/Observable\";\r\nimport {forkJoin} from \"rxjs/Observable/forkJoin\";\r\n\r\n/**\r\n * This is a generic component that is designed to work with the crud api. The component builds itself based on the\r\n * metadata. It ties together multiple crud components. For example, Subject or StudySubject may have names, phone\r\n * numbers, or addresses associated with it. Each one corresponding to its own CRUD rest endpoint.\r\n *\r\n * @since 10.0.0\r\n */\r\n@Component({\r\n selector: \"hci-crud-container\",\r\n template: `\r\n <ng-container *ngFor=\"let crudGroup of crudGroups\" class=\"crud-group\">\r\n <div *ngIf=\"crudGroup.mode === 'singular'\"\r\n class=\"d-flex crud-group p-2\">\r\n <h4 style=\"flex: 0 0 15%;\">{{crudGroup.display}}</h4>\r\n <hci-crud [className]=\"crudGroup.className\"\r\n [fields]=\"crudGroup.displayFields\"\r\n [styles]=\"crudGroup.styles\"\r\n [ids]=\"ids\"\r\n [data]=\"crudGroup.data\"\r\n [saveable]=\"saveable\"\r\n style=\"flex: 1 1 85%;\"></hci-crud>\r\n </div>\r\n </ng-container>\r\n `,\r\n styles: [`\r\n \r\n .crud-group {\r\n background-color: #cfecfc;\r\n margin-bottom: 1rem;\r\n border-radius: 0.5rem;\r\n border: #3d7a99 1px solid;\r\n }\r\n \r\n `]\r\n})\r\nexport class CrudContainerComponent {\r\n\r\n @HostBinding(\"class\") classList: string = \"d-flex flex-column\";\r\n\r\n @Input() data: any;\r\n @Input() saveable: boolean = true;\r\n @Input() crudGroups: any[];\r\n @Input() ids: any[];\r\n\r\n @ViewChildren(CrudComponent) crudComponents: QueryList<CrudComponent>;\r\n\r\n constructor(private crudService: CrudService,\r\n private changeDetectorRef: ChangeDetectorRef) {}\r\n\r\n setData(data: any): void {\r\n if (isDevMode()) {\r\n console.debug(\"CrudContainerComponent.setData\");\r\n console.debug(data);\r\n }\r\n\r\n this.data = data;\r\n\r\n this.crudComponents.forEach((crud: CrudComponent) => {\r\n for (let crudGroup of this.crudGroups) {\r\n if (crudGroup.className === crud.className && crudGroup.dataField) {\r\n crud.setData(this.data[crudGroup.dataField]);\r\n break;\r\n }\r\n }\r\n });\r\n }\r\n\r\n save(): void {\r\n this.crudComponents.forEach((crud: CrudComponent) => {\r\n crud.save();\r\n });\r\n }\r\n\r\n saveJoin(): Observable<any> {\r\n let requests: Observable<any>[] = [];\r\n\r\n this.crudComponents.forEach((crud: CrudComponent) => {\r\n requests.push(crud.getSaveRequest());\r\n });\r\n\r\n return forkJoin(requests);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) 2016 Huntsman Cancer Institute at the University of Utah, Confidential and Proprietary\r\n */\r\nimport {ModuleWithProviders, NgModule} from \"@angular/core\";\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {FormsModule} from \"@angular/forms\";\r\n\r\nimport {NgbModule} from \"@ng-bootstrap/ng-bootstrap\";\r\n\r\nimport {SelectModule} from \"@huntsman-cancer-institute/input\";\r\nimport {MiscModule} from \"@huntsman-cancer-institute/misc\";\r\n\r\nimport {CRUD_ENDPOINT, CrudService} from \"./services/crud.service\";\r\nimport {CrudComponent} from \"./components/crud.component\";\r\nimport {FieldViewablePipe} from \"./pipes/field-viewable.pipe\";\r\nimport {CrudContainerComponent} from \"./components/crud-container.component\";\r\n\r\n/**\r\n * The module providing the crud service.\r\n *\r\n * @since 9.0.0\r\n */\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n NgbModule,\r\n SelectModule,\r\n MiscModule\r\n ],\r\n declarations: [\r\n CrudContainerComponent,\r\n CrudComponent,\r\n FieldViewablePipe\r\n ],\r\n exports: [\r\n CrudContainerComponent,\r\n CrudComponent,\r\n FieldViewablePipe\r\n ]\r\n})\r\nexport class CrudModule {\r\n static forRoot(config: any): ModuleWithProviders<CrudModule> {\r\n return {\r\n providers: [\r\n {provide: CRUD_ENDPOINT, useValue: config.crudEndpoint},\r\n CrudService\r\n ],\r\n ngModule: CrudModule\r\n };\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.CrudService","i3.CrudComponent"],"mappings":"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"}
|