ngx-wapp-components 2.1.3 → 2.1.4-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -173,7 +173,7 @@ WTreeFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", ve
173
173
  useExisting: forwardRef(() => WTreeFieldComponent),
174
174
  multi: true
175
175
  }
176
- ], usesOnChanges: true, ngImport: i0, template: "<w-edit-treeselect *ngIf=\"getDataType() == dataType.Multi\" [showLabel]=\"false\" [removePaddingTop]=\"true\"\r\n class=\"w-filter-panel-advanced-query-builder-input-width q-inline-block-display inline-flex\"\r\n [options]=\"treeNodeItems\"\r\n selectionMode=\"checkbox\"\r\n [placeholder]=\"selectPlaceholder\"\r\n appendTo=\"body\"\r\n [(ngModel)]=\"itemSelected\" \r\n (ngModelChange)=\"onNodeSelected($event)\"\r\n [filterBy]=\"'label,data'\">\r\n</w-edit-treeselect>\r\n\r\n<w-edit-treeselect *ngIf=\"getDataType() == dataType.Single\" [showLabel]=\"false\" [removePaddingTop]=\"true\"\r\n class=\"w-filter-panel-advanced-query-builder-input-width q-inline-block-display inline-flex\"\r\n [options]=\"treeNodeItems\"\r\n selectionMode=\"single\"\r\n [placeholder]=\"selectPlaceholder\"\r\n appendTo=\"body\"\r\n [(ngModel)]=\"itemSelected\" \r\n (ngModelChange)=\"onNodeSelected($event)\"\r\n [filterBy]=\"'label,data'\">\r\n</w-edit-treeselect>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.WEditTreeselectComponent, selector: "w-edit-treeselect", inputs: ["label", "showLabel", "placeholder", "disabled", "required", "size", "options", "selectionMode", "appendTo", "showClear", "formControl", "requiredErrorDescription", "filterBy", "removePaddingTop", "tooltip", "tooltipPosition"], outputs: ["onChange"] }] });
176
+ ], usesOnChanges: true, ngImport: i0, template: "<w-edit-treeselect *ngIf=\"getDataType() == dataType.Multi\" [showLabel]=\"false\" [removePaddingTop]=\"true\"\r\n class=\"w-tree-field-width w-filter-panel-advanced-query-builder-input-width w-filter-panel-basic-query-builder-input-width q-inline-block-display inline-flex\"\r\n [options]=\"treeNodeItems\"\r\n selectionMode=\"checkbox\"\r\n [placeholder]=\"selectPlaceholder\"\r\n appendTo=\"body\"\r\n [(ngModel)]=\"itemSelected\" \r\n (ngModelChange)=\"onNodeSelected($event)\"\r\n [filterBy]=\"'label,data'\">\r\n</w-edit-treeselect>\r\n\r\n<w-edit-treeselect *ngIf=\"getDataType() == dataType.Single\" [showLabel]=\"false\" [removePaddingTop]=\"true\"\r\n class=\"w-tree-field-width w-filter-panel-advanced-query-builder-input-width w-filter-panel-basic-query-builder-input-width q-inline-block-display inline-flex\"\r\n [options]=\"treeNodeItems\"\r\n selectionMode=\"single\"\r\n [placeholder]=\"selectPlaceholder\"\r\n appendTo=\"body\"\r\n [(ngModel)]=\"itemSelected\" \r\n (ngModelChange)=\"onNodeSelected($event)\"\r\n [filterBy]=\"'label,data'\">\r\n</w-edit-treeselect>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.WEditTreeselectComponent, selector: "w-edit-treeselect", inputs: ["label", "showLabel", "placeholder", "disabled", "required", "size", "options", "selectionMode", "appendTo", "showClear", "formControl", "requiredErrorDescription", "filterBy", "removePaddingTop", "tooltip", "tooltipPosition"], outputs: ["onChange"] }] });
177
177
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: WTreeFieldComponent, decorators: [{
178
178
  type: Component,
179
179
  args: [{ selector: 'w-tree-field', providers: [
@@ -182,7 +182,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
182
182
  useExisting: forwardRef(() => WTreeFieldComponent),
183
183
  multi: true
184
184
  }
185
- ], template: "<w-edit-treeselect *ngIf=\"getDataType() == dataType.Multi\" [showLabel]=\"false\" [removePaddingTop]=\"true\"\r\n class=\"w-filter-panel-advanced-query-builder-input-width q-inline-block-display inline-flex\"\r\n [options]=\"treeNodeItems\"\r\n selectionMode=\"checkbox\"\r\n [placeholder]=\"selectPlaceholder\"\r\n appendTo=\"body\"\r\n [(ngModel)]=\"itemSelected\" \r\n (ngModelChange)=\"onNodeSelected($event)\"\r\n [filterBy]=\"'label,data'\">\r\n</w-edit-treeselect>\r\n\r\n<w-edit-treeselect *ngIf=\"getDataType() == dataType.Single\" [showLabel]=\"false\" [removePaddingTop]=\"true\"\r\n class=\"w-filter-panel-advanced-query-builder-input-width q-inline-block-display inline-flex\"\r\n [options]=\"treeNodeItems\"\r\n selectionMode=\"single\"\r\n [placeholder]=\"selectPlaceholder\"\r\n appendTo=\"body\"\r\n [(ngModel)]=\"itemSelected\" \r\n (ngModelChange)=\"onNodeSelected($event)\"\r\n [filterBy]=\"'label,data'\">\r\n</w-edit-treeselect>\r\n" }]
185
+ ], template: "<w-edit-treeselect *ngIf=\"getDataType() == dataType.Multi\" [showLabel]=\"false\" [removePaddingTop]=\"true\"\r\n class=\"w-tree-field-width w-filter-panel-advanced-query-builder-input-width w-filter-panel-basic-query-builder-input-width q-inline-block-display inline-flex\"\r\n [options]=\"treeNodeItems\"\r\n selectionMode=\"checkbox\"\r\n [placeholder]=\"selectPlaceholder\"\r\n appendTo=\"body\"\r\n [(ngModel)]=\"itemSelected\" \r\n (ngModelChange)=\"onNodeSelected($event)\"\r\n [filterBy]=\"'label,data'\">\r\n</w-edit-treeselect>\r\n\r\n<w-edit-treeselect *ngIf=\"getDataType() == dataType.Single\" [showLabel]=\"false\" [removePaddingTop]=\"true\"\r\n class=\"w-tree-field-width w-filter-panel-advanced-query-builder-input-width w-filter-panel-basic-query-builder-input-width q-inline-block-display inline-flex\"\r\n [options]=\"treeNodeItems\"\r\n selectionMode=\"single\"\r\n [placeholder]=\"selectPlaceholder\"\r\n appendTo=\"body\"\r\n [(ngModel)]=\"itemSelected\" \r\n (ngModelChange)=\"onNodeSelected($event)\"\r\n [filterBy]=\"'label,data'\">\r\n</w-edit-treeselect>\r\n" }]
186
186
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.ApiService }]; }, propDecorators: { field: [{
187
187
  type: Input,
188
188
  args: ['field']
@@ -199,4 +199,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
199
199
  type: Input,
200
200
  args: ['productApiToken']
201
201
  }] } });
202
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidy10cmVlLWZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3dhcHAtY29tcG9uZW50cy9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3ctdHJlZS1maWVsZC93LXRyZWUtZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd2FwcC1jb21wb25lbnRzL3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvdy10cmVlLWZpZWxkL3ctdHJlZS1maWVsZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFtQyxNQUFNLGVBQWUsQ0FBQztBQUNqSCxPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7O0FBZ0J0RSxNQUFNLE9BQU8sbUJBQW1CO0lBZ0I5QixZQUFvQixHQUFzQixFQUFVLFVBQXNCO1FBQXRELFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQVUsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQWYxRSxVQUFLLEdBQVUsRUFBRSxDQUFDO1FBTVUsc0JBQWlCLEdBQVcsa0JBQWtCLENBQUM7UUFJM0UsYUFBUSxHQUF3QixZQUFZLENBQUM7UUFFckMsYUFBUSxHQUFRLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztRQUN6QixjQUFTLEdBQVEsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO0lBRTJDLENBQUM7SUFFOUUsUUFBUTtRQUNOLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLE1BQU0sZUFBZSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRSxhQUFhLEtB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WjtxQkFDRjtpSUFPZSxLQUFLO3NCQUFwQixLQUFLO3VCQUFDLE9BQU87Z0JBQ0ssUUFBUTtzQkFBMUIsS0FBSzt1QkFBQyxVQUFVO2dCQUNXLGlCQUFpQjtzQkFBNUMsS0FBSzt1QkFBQyxtQkFBbUI7Z0JBQ0YsYUFBYTtzQkFBcEMsS0FBSzt1QkFBQyxlQUFlO2dCQUNJLGVBQWU7c0JBQXhDLEtBQUs7dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgZm9yd2FyZFJlZiwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBEYXRhVHlwZUVudW0sIE9wZXJhdG9yRW51bSB9IGZyb20gJy4uLy4uL21vZGVscy9lbnVtcy5tb2RlbCc7XHJcbmltcG9ydCB7IFRyZWVOb2RlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xyXG5pbXBvcnQgeyBBcGlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS9hcGkvYXBpLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd3LXRyZWUtZmllbGQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi93LXRyZWUtZmllbGQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3ctdHJlZS1maWVsZC5jb21wb25lbnQuY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBXVHJlZUZpZWxkQ29tcG9uZW50KSxcclxuICAgICAgbXVsdGk6IHRydWVcclxuICAgIH1cclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBXVHJlZUZpZWxkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuICBpdGVtczogYW55W10gPSBbXTtcclxuICB0cmVlTm9kZUl0ZW1zITogVHJlZU5vZGVbXTtcclxuICBpdGVtU2VsZWN0ZWQ6IGFueTtcclxuXHJcbiAgQElucHV0KCdmaWVsZCcpIGZpZWxkITogc3RyaW5nO1xyXG4gIEBJbnB1dCgnb3BlcmF0b3InKSBvcGVyYXRvciE6IGFueTtcclxuICBASW5wdXQoJ3NlbGVjdFBsYWNlaG9sZGVyJykgc2VsZWN0UGxhY2Vob2xkZXI6IHN0cmluZyA9ICdTZWxlY3QgYW4gb3B0aW9uJztcclxuICBASW5wdXQoJ3Byb2R1Y3RBcGlVcmwnKSBwcm9kdWN0QXBpVXJsITogc3RyaW5nO1xyXG4gIEBJbnB1dCgncHJvZHVjdEFwaVRva2VuJykgcHJvZHVjdEFwaVRva2VuITogc3RyaW5nO1xyXG5cclxuICBkYXRhVHlwZTogdHlwZW9mIERhdGFUeXBlRW51bSA9IERhdGFUeXBlRW51bTtcclxuXHJcbiAgcHJpdmF0ZSBvbkNoYW5nZTogYW55ID0gKCkgPT4ge307XHJcbiAgcHJpdmF0ZSBvblRvdWNoZWQ6IGFueSA9ICgpID0+IHt9O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgYXBpU2VydmljZTogQXBpU2VydmljZSkge31cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmdldEl0ZW1zKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBjb25zdCBvcGVyYXRvckNoYW5nZWQgPSBjaGFuZ2VzWydvcGVyYXRvciddPy5wcmV2aW91c1ZhbHVlICE9PSB1bmRlZmluZWQ7XHJcbiAgICBjb25zdCBmaWVsZENoYW5nZWQgPSBjaGFuZ2VzWydmaWVsZCddPy5wcmV2aW91c1ZhbHVlICE9PSB1bmRlZmluZWQgJiYgY2hhbmdlc1snZmllbGQnXS5jdXJyZW50VmFsdWUgIT09IGNoYW5nZXNbJ2ZpZWxkJ10ucHJldmlvdXNWYWx1ZTtcclxuXHJcbiAgICBpZiAob3BlcmF0b3JDaGFuZ2VkIHx8IGZpZWxkQ2hhbmdlZCkge1xyXG4gICAgICB0aGlzLml0ZW1TZWxlY3RlZCA9IG51bGw7XHJcbiAgICAgIHRoaXMub25DaGFuZ2UobnVsbCk7XHJcbiAgICAgIHRoaXMub25Ub3VjaGVkKCk7XHJcblxyXG4gICAgICBpZiAoZmllbGRDaGFuZ2VkKSB7XHJcbiAgICAgICAgdGhpcy5maWVsZCA9IGNoYW5nZXNbJ2ZpZWxkJ10uY3VycmVudFZhbHVlO1xyXG4gICAgICAgIHRoaXMuZ2V0SXRlbXMoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0SXRlbXMoKSB7XHJcbiAgICB0aGlzLmdldEl0ZW1CeUlkZW50aXR5KCkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKGl0ZW1zKSA9PiB7XHJcbiAgICAgICAgdGhpcy5pdGVtcyA9IGl0ZW1zID8/IFtdO1xyXG4gICAgICAgIHRoaXMudHJlZU5vZGVJdGVtcyA9IHRoaXMuaXRlbXNUb1RyZWVOb2RlTWFwKHRoaXMuaXRlbXMpO1xyXG4gICAgICAgIHRoaXMucmVzb2x2ZVNlbGVjdGlvbigpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5pdGVtU2VsZWN0ZWQgPSB2YWx1ZSA/PyBudWxsO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xyXG4gIH1cclxuXHJcbiAgb25Ob2RlU2VsZWN0ZWQodmFsdWU6IGFueSwgZnJvbUdldEl0ZW1zOiBib29sZWFuID0gZmFsc2UpIHtcclxuICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICBsZXQgYWxsU2VsZWN0ZWROb2Rlc0lkcztcclxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5pdGVtU2VsZWN0ZWQpKSB7XHJcbiAgICAgICAgYWxsU2VsZWN0ZWROb2Rlc0lkcyA9IHRoaXMuaXRlbVNlbGVjdGVkLm1hcCgobm9kZTogYW55KSA9PiBub2RlLmRhdGEpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGFsbFNlbGVjdGVkTm9kZXNJZHMgPSB7XHJcbiAgICAgICAgICBwYXJlbnQ6IHRoaXMuaXRlbVNlbGVjdGVkLmRhdGEsXHJcbiAgICAgICAgICBpZHM6IHRoaXMuZ2V0UGFyZW50QW5kQ2hpbGRyZW5JZHMoW3RoaXMuaXRlbVNlbGVjdGVkXSlcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZihmcm9tR2V0SXRlbXMpe1xyXG4gICAgICAgIGlmICh0aGlzLmdldERhdGFUeXBlKCkgPT09IERhdGFUeXBlRW51bS5NdWx0aSkge1xyXG4gICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy50cmVlTm9kZUl0ZW1zID0gdGhpcy51cGRhdGVQYXJ0aWFsU2VsZWN0aW9uKHRoaXMudHJlZU5vZGVJdGVtcywgdGhpcy5pdGVtU2VsZWN0ZWQpO1xyXG4gICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMub25DaGFuZ2UoYWxsU2VsZWN0ZWROb2Rlc0lkcyk7XHJcbiAgICAgIHRoaXMub25Ub3VjaGVkKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlc29sdmVTZWxlY3Rpb24oKSB7XHJcbiAgICB0aGlzLml0ZW1TZWxlY3RlZCA9IHRoaXMub3BlcmF0b3IgPT0gJz0nID8gdGhpcy5maW5kTm9kZXNCeUlkcyh0aGlzLnRyZWVOb2RlSXRlbXMsIHRoaXMuaXRlbVNlbGVjdGVkPy5wYXJlbnQgPz8gbnVsbCkgOiB0aGlzLmZpbmROb2Rlc0J5SWRzKHRoaXMudHJlZU5vZGVJdGVtcywgdGhpcy5pdGVtU2VsZWN0ZWQpOyBcclxuICAgIHRoaXMub25Ob2RlU2VsZWN0ZWQodGhpcy5pdGVtU2VsZWN0ZWQsIHRydWUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0SXRlbUJ5SWRlbnRpdHkoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5maWVsZCA9PT0gJ2NhdGVnb3J5J1xyXG4gICAgICA/IHRoaXMuYXBpU2VydmljZS5nZXRDYXRlZ29yaWVzKHRoaXMucHJvZHVjdEFwaVVybCwgdGhpcy5wcm9kdWN0QXBpVG9rZW4pXHJcbiAgICAgIDogdGhpcy5hcGlTZXJ2aWNlLmdldFNlY3Rpb25zKHRoaXMucHJvZHVjdEFwaVVybCwgdGhpcy5wcm9kdWN0QXBpVG9rZW4pO1xyXG4gIH1cclxuXHJcbiAgZ2V0UGFyZW50QW5kQ2hpbGRyZW5JZHMobm9kZXM6IFRyZWVOb2RlW10sIGlkczogbnVtYmVyW10gPSBbXSk6IG51bWJlcltdIHtcclxuICAgIGZvciAobGV0IG5vZGUgb2Ygbm9kZXMpIHtcclxuICAgICAgaWRzLnB1c2gobm9kZS5kYXRhKTtcclxuICAgICAgaWYgKG5vZGUuY2hpbGRyZW4gJiYgbm9kZS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5nZXRQYXJlbnRBbmRDaGlsZHJlbklkcyhub2RlLmNoaWxkcmVuLCBpZHMpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaWRzO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlUGFydGlhbFNlbGVjdGlvbihub2RlczogVHJlZU5vZGVbXSwgc2VsZWN0ZWROb2RlczogVHJlZU5vZGVbXSk6IFRyZWVOb2RlW10ge1xyXG4gICAgaWYgKCFub2RlcyB8fCAhc2VsZWN0ZWROb2RlcykgcmV0dXJuIG5vZGVzIHx8IFtdO1xyXG5cclxuICAgIGZvciAobGV0IG5vZGUgb2Ygbm9kZXMpIHtcclxuICAgICAgaWYgKG5vZGUuY2hpbGRyZW4gJiYgbm9kZS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy51cGRhdGVQYXJ0aWFsU2VsZWN0aW9uKG5vZGUuY2hpbGRyZW4sIHNlbGVjdGVkTm9kZXMpO1xyXG4gICAgICAgIGNvbnN0IHNlbGVjdGVkQ2hpbGRyZW5Db3VudCA9IG5vZGUuY2hpbGRyZW4uZmlsdGVyKChjaGlsZDogYW55KSA9PiBzZWxlY3RlZE5vZGVzLnNvbWUoKG5vZGU6IGFueSkgPT4gbm9kZS5kYXRhID09PSBjaGlsZC5kYXRhKSkubGVuZ3RoO1xyXG4gICAgICAgIGNvbnN0IGhhc1BhcnRpYWxDaGlsZHJlbiA9IG5vZGUuY2hpbGRyZW4uc29tZSgoY2hpbGQ6IGFueSkgPT4gY2hpbGQucGFydGlhbFNlbGVjdGVkKTtcclxuXHJcbiAgICAgICAgbm9kZS5wYXJ0aWFsU2VsZWN0ZWQgPSAoc2VsZWN0ZWRDaGlsZHJlbkNvdW50ID4gMCAmJiBzZWxlY3RlZENoaWxkcmVuQ291bnQgPCBub2RlLmNoaWxkcmVuLmxlbmd0aCkgfHwgaGFzUGFydGlhbENoaWxkcmVuO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG5vZGUucGFydGlhbFNlbGVjdGVkID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbm9kZXM7XHJcbiAgfVxyXG5cclxuICBnZXREYXRhVHlwZSgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wZXJhdG9yID09PSBPcGVyYXRvckVudW0uRXF1YWxzIHx8IHRoaXMub3BlcmF0b3IgPT09IE9wZXJhdG9yRW51bS5Ob3RFcXVhbHNcclxuICAgICAgPyBEYXRhVHlwZUVudW0uU2luZ2xlXHJcbiAgICAgIDogRGF0YVR5cGVFbnVtLk11bHRpO1xyXG4gIH1cclxuXHJcbiAgaXRlbXNUb1RyZWVOb2RlTWFwKHByb2R1Y3RTZWN0aW9uTGlzdDogYW55W10pOiBUcmVlTm9kZVtdIHtcclxuICAgIGlmICghcHJvZHVjdFNlY3Rpb25MaXN0KSByZXR1cm4gW107XHJcblxyXG4gICAgcmV0dXJuIHByb2R1Y3RTZWN0aW9uTGlzdC5tYXAoKHByb2R1Y3QpID0+ICh7XHJcbiAgICAgIGxhYmVsOiBwcm9kdWN0Lm5hbWUsXHJcbiAgICAgIGRhdGE6IHByb2R1Y3RbdGhpcy5nZXRGaWVsZElkKCldLFxyXG4gICAgICBjaGlsZHJlbjogdGhpcy5pdGVtc1RvVHJlZU5vZGVNYXAocHJvZHVjdFt0aGlzLmdldEVudGl0eUludmVyc2VQYXJlbnQoKV0pXHJcbiAgICB9KSk7XHJcbiAgfVxyXG5cclxuICBmaW5kTm9kZXNCeUlkcyhub2RlczogYW55W10sIGlkczogYW55KTogYW55IHwgYW55W10ge1xyXG4gICAgY29uc3QgaXNBcnJheSA9IEFycmF5LmlzQXJyYXkoaWRzKTtcclxuICAgIGNvbnN0IGlkTGlzdCA9IGlzQXJyYXkgPyBpZHMgOiBbaWRzXTtcclxuICAgIGxldCBmb3VuZE5vZGVzOiBhbnlbXSA9IFtdO1xyXG5cclxuICAgIGZvciAobGV0IG5vZGUgb2Ygbm9kZXMpIHtcclxuICAgICAgaWYgKGlkTGlzdC5pbmNsdWRlcyhub2RlLmRhdGEpKSB7XHJcbiAgICAgICAgZm91bmROb2Rlcy5wdXNoKG5vZGUpO1xyXG4gICAgICAgIGlmICghaXNBcnJheSkgcmV0dXJuIG5vZGU7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKG5vZGUuY2hpbGRyZW4pIHtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLmZpbmROb2Rlc0J5SWRzKG5vZGUuY2hpbGRyZW4sIGlkcyk7XHJcbiAgICAgICAgaWYgKGlzQXJyYXkpIHtcclxuICAgICAgICAgIGZvdW5kTm9kZXMgPSBmb3VuZE5vZGVzLmNvbmNhdChyZXN1bHQpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBpc0FycmF5ID8gZm91bmROb2RlcyA6IG51bGw7XHJcbiAgfVxyXG5cclxuICBnZXRGaWVsZElkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZmllbGQgPT09ICdjYXRlZ29yeScgPyAncHJvZHVjdENhdGVnb3J5SWQnIDogJ3Byb2R1Y3RTZWN0aW9uSWQnO1xyXG4gIH1cclxuXHJcbiAgZ2V0RW50aXR5SW52ZXJzZVBhcmVudCgpIHtcclxuICAgIHJldHVybiB0aGlzLmZpZWxkID09PSAnY2F0ZWdvcnknID8gJ2ludmVyc2VQYXJlbnRQcm9kdWN0Q2F0ZWdvcnknIDogJ2ludmVyc2VQYXJlbnRQcm9kdWN0U2VjdGlvbic7XHJcbiAgfVxyXG5cclxuICBmaW5kVHJlZU5vZGVDYXRlZ29yeShsaXN0Tm9kZTogVHJlZU5vZGVbXSwgaWQ6IG51bWJlciwgcGFydGlhbD86IGJvb2xlYW4pIHtcclxuICAgIGZvciAobGV0IG5vZGUgb2YgbGlzdE5vZGUpIHtcclxuICAgICAgaWYgKG5vZGUuZGF0YSA9PSBpZCkge1xyXG4gICAgICAgIG5vZGUucGFydGlhbFNlbGVjdGVkID0gcGFydGlhbDtcclxuICAgICAgICByZXR1cm4gbm9kZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKG5vZGUuY2hpbGRyZW4pIHtcclxuICAgICAgICBsZXQgbmV3Tm9kZUZvdW5kOiBhbnkgPSB0aGlzLmZpbmRUcmVlTm9kZUNhdGVnb3J5KG5vZGUuY2hpbGRyZW4sIGlkLCBub2RlLnBhcnRpYWxTZWxlY3RlZCk7XHJcbiAgICAgICAgaWYgKG5ld05vZGVGb3VuZCkge1xyXG4gICAgICAgICAgcmV0dXJuIG5ld05vZGVGb3VuZDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgfVxyXG59XHJcbiIsIjx3LWVkaXQtdHJlZXNlbGVjdCAqbmdJZj1cImdldERhdGFUeXBlKCkgPT0gZGF0YVR5cGUuTXVsdGlcIiAgW3Nob3dMYWJlbF09XCJmYWxzZVwiIFtyZW1vdmVQYWRkaW5nVG9wXT1cInRydWVcIlxyXG4gICAgY2xhc3M9XCJ3LWZpbHRlci1wYW5lbC1hZHZhbmNlZC1xdWVyeS1idWlsZGVyLWlucHV0LXdpZHRoIHEtaW5saW5lLWJsb2NrLWRpc3BsYXkgaW5saW5lLWZsZXhcIlxyXG4gICAgW29wdGlvbnNdPVwidHJlZU5vZGVJdGVtc1wiXHJcbiAgICBzZWxlY3Rpb25Nb2RlPVwiY2hlY2tib3hcIlxyXG4gICAgW3BsYWNlaG9sZGVyXT1cInNlbGVjdFBsYWNlaG9sZGVyXCJcclxuICAgIGFwcGVuZFRvPVwiYm9keVwiXHJcbiAgICBbKG5nTW9kZWwpXT1cIml0ZW1TZWxlY3RlZFwiIFxyXG4gICAgKG5nTW9kZWxDaGFuZ2UpPVwib25Ob2RlU2VsZWN0ZWQoJGV2ZW50KVwiXHJcbiAgICBbZmlsdGVyQnldPVwiJ2xhYmVsLGRhdGEnXCI+XHJcbjwvdy1lZGl0LXRyZWVzZWxlY3Q+XHJcblxyXG48dy1lZGl0LXRyZWVzZWxlY3QgKm5nSWY9XCJnZXREYXRhVHlwZSgpID09IGRhdGFUeXBlLlNpbmdsZVwiICBbc2hvd0xhYmVsXT1cImZhbHNlXCIgW3JlbW92ZVBhZGRpbmdUb3BdPVwidHJ1ZVwiXHJcbiAgICBjbGFzcz1cInctZmlsdGVyLXBhbmVsLWFkdmFuY2VkLXF1ZXJ5LWJ1aWxkZXItaW5wdXQtd2lkdGggcS1pbmxpbmUtYmxvY2stZGlzcGxheSBpbmxpbmUtZmxleFwiXHJcbiAgICBbb3B0aW9uc109XCJ0cmVlTm9kZUl0ZW1zXCJcclxuICAgIHNlbGVjdGlvbk1vZGU9XCJzaW5nbGVcIlxyXG4gICAgW3BsYWNlaG9sZGVyXT1cInNlbGVjdFBsYWNlaG9sZGVyXCJcclxuICAgIGFwcGVuZFRvPVwiYm9keVwiXHJcbiAgICBbKG5nTW9kZWwpXT1cIml0ZW1TZWxlY3RlZFwiIFxyXG4gICAgKG5nTW9kZWxDaGFuZ2UpPVwib25Ob2RlU2VsZWN0ZWQoJGV2ZW50KVwiXHJcbiAgICBbZmlsdGVyQnldPVwiJ2xhYmVsLGRhdGEnXCI+XHJcbjwvdy1lZGl0LXRyZWVzZWxlY3Q+XHJcbiJdfQ==
202
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidy10cmVlLWZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3dhcHAtY29tcG9uZW50cy9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3ctdHJlZS1maWVsZC93LXRyZWUtZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd2FwcC1jb21wb25lbnRzL3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvdy10cmVlLWZpZWxkL3ctdHJlZS1maWVsZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFtQyxNQUFNLGVBQWUsQ0FBQztBQUNqSCxPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7O0FBZ0J0RSxNQUFNLE9BQU8sbUJBQW1CO0lBZ0I5QixZQUFvQixHQUFzQixFQUFVLFVBQXNCO1FBQXRELFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQVUsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQWYxRSxVQUFLLEdBQVUsRUFBRSxDQUFDO1FBTVUsc0JBQWlCLEdBQVcsa0JBQWtCLENBQUM7UUFJM0UsYUFBUSxHQUF3QixZQUFZLENBQUM7UUFFckMsYUFBUSxHQUFRLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztRQUN6QixjQUFTLEdBQVEsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO0lBRTJDLENBQUM7SUFFOUUsUUFBUTtRQUNOLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLE1BQU0sZUFBZSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRSxhQUFhLEtB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WjtxQkFDRjtpSUFPZSxLQUFLO3NCQUFwQixLQUFLO3VCQUFDLE9BQU87Z0JBQ0ssUUFBUTtzQkFBMUIsS0FBSzt1QkFBQyxVQUFVO2dCQUNXLGlCQUFpQjtzQkFBNUMsS0FBSzt1QkFBQyxtQkFBbUI7Z0JBQ0YsYUFBYTtzQkFBcEMsS0FBSzt1QkFBQyxlQUFlO2dCQUNJLGVBQWU7c0JBQXhDLEtBQUs7dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgZm9yd2FyZFJlZiwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBEYXRhVHlwZUVudW0sIE9wZXJhdG9yRW51bSB9IGZyb20gJy4uLy4uL21vZGVscy9lbnVtcy5tb2RlbCc7XHJcbmltcG9ydCB7IFRyZWVOb2RlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xyXG5pbXBvcnQgeyBBcGlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS9hcGkvYXBpLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd3LXRyZWUtZmllbGQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi93LXRyZWUtZmllbGQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3ctdHJlZS1maWVsZC5jb21wb25lbnQuY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBXVHJlZUZpZWxkQ29tcG9uZW50KSxcclxuICAgICAgbXVsdGk6IHRydWVcclxuICAgIH1cclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBXVHJlZUZpZWxkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuICBpdGVtczogYW55W10gPSBbXTtcclxuICB0cmVlTm9kZUl0ZW1zITogVHJlZU5vZGVbXTtcclxuICBpdGVtU2VsZWN0ZWQ6IGFueTtcclxuXHJcbiAgQElucHV0KCdmaWVsZCcpIGZpZWxkITogc3RyaW5nO1xyXG4gIEBJbnB1dCgnb3BlcmF0b3InKSBvcGVyYXRvciE6IGFueTtcclxuICBASW5wdXQoJ3NlbGVjdFBsYWNlaG9sZGVyJykgc2VsZWN0UGxhY2Vob2xkZXI6IHN0cmluZyA9ICdTZWxlY3QgYW4gb3B0aW9uJztcclxuICBASW5wdXQoJ3Byb2R1Y3RBcGlVcmwnKSBwcm9kdWN0QXBpVXJsITogc3RyaW5nO1xyXG4gIEBJbnB1dCgncHJvZHVjdEFwaVRva2VuJykgcHJvZHVjdEFwaVRva2VuITogc3RyaW5nO1xyXG5cclxuICBkYXRhVHlwZTogdHlwZW9mIERhdGFUeXBlRW51bSA9IERhdGFUeXBlRW51bTtcclxuXHJcbiAgcHJpdmF0ZSBvbkNoYW5nZTogYW55ID0gKCkgPT4ge307XHJcbiAgcHJpdmF0ZSBvblRvdWNoZWQ6IGFueSA9ICgpID0+IHt9O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgYXBpU2VydmljZTogQXBpU2VydmljZSkge31cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmdldEl0ZW1zKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBjb25zdCBvcGVyYXRvckNoYW5nZWQgPSBjaGFuZ2VzWydvcGVyYXRvciddPy5wcmV2aW91c1ZhbHVlICE9PSB1bmRlZmluZWQ7XHJcbiAgICBjb25zdCBmaWVsZENoYW5nZWQgPSBjaGFuZ2VzWydmaWVsZCddPy5wcmV2aW91c1ZhbHVlICE9PSB1bmRlZmluZWQgJiYgY2hhbmdlc1snZmllbGQnXS5jdXJyZW50VmFsdWUgIT09IGNoYW5nZXNbJ2ZpZWxkJ10ucHJldmlvdXNWYWx1ZTtcclxuXHJcbiAgICBpZiAob3BlcmF0b3JDaGFuZ2VkIHx8IGZpZWxkQ2hhbmdlZCkge1xyXG4gICAgICB0aGlzLml0ZW1TZWxlY3RlZCA9IG51bGw7XHJcbiAgICAgIHRoaXMub25DaGFuZ2UobnVsbCk7XHJcbiAgICAgIHRoaXMub25Ub3VjaGVkKCk7XHJcblxyXG4gICAgICBpZiAoZmllbGRDaGFuZ2VkKSB7XHJcbiAgICAgICAgdGhpcy5maWVsZCA9IGNoYW5nZXNbJ2ZpZWxkJ10uY3VycmVudFZhbHVlO1xyXG4gICAgICAgIHRoaXMuZ2V0SXRlbXMoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0SXRlbXMoKSB7XHJcbiAgICB0aGlzLmdldEl0ZW1CeUlkZW50aXR5KCkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKGl0ZW1zKSA9PiB7XHJcbiAgICAgICAgdGhpcy5pdGVtcyA9IGl0ZW1zID8/IFtdO1xyXG4gICAgICAgIHRoaXMudHJlZU5vZGVJdGVtcyA9IHRoaXMuaXRlbXNUb1RyZWVOb2RlTWFwKHRoaXMuaXRlbXMpO1xyXG4gICAgICAgIHRoaXMucmVzb2x2ZVNlbGVjdGlvbigpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5pdGVtU2VsZWN0ZWQgPSB2YWx1ZSA/PyBudWxsO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xyXG4gIH1cclxuXHJcbiAgb25Ob2RlU2VsZWN0ZWQodmFsdWU6IGFueSwgZnJvbUdldEl0ZW1zOiBib29sZWFuID0gZmFsc2UpIHtcclxuICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICBsZXQgYWxsU2VsZWN0ZWROb2Rlc0lkcztcclxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5pdGVtU2VsZWN0ZWQpKSB7XHJcbiAgICAgICAgYWxsU2VsZWN0ZWROb2Rlc0lkcyA9IHRoaXMuaXRlbVNlbGVjdGVkLm1hcCgobm9kZTogYW55KSA9PiBub2RlLmRhdGEpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGFsbFNlbGVjdGVkTm9kZXNJZHMgPSB7XHJcbiAgICAgICAgICBwYXJlbnQ6IHRoaXMuaXRlbVNlbGVjdGVkLmRhdGEsXHJcbiAgICAgICAgICBpZHM6IHRoaXMuZ2V0UGFyZW50QW5kQ2hpbGRyZW5JZHMoW3RoaXMuaXRlbVNlbGVjdGVkXSlcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZihmcm9tR2V0SXRlbXMpe1xyXG4gICAgICAgIGlmICh0aGlzLmdldERhdGFUeXBlKCkgPT09IERhdGFUeXBlRW51bS5NdWx0aSkge1xyXG4gICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy50cmVlTm9kZUl0ZW1zID0gdGhpcy51cGRhdGVQYXJ0aWFsU2VsZWN0aW9uKHRoaXMudHJlZU5vZGVJdGVtcywgdGhpcy5pdGVtU2VsZWN0ZWQpO1xyXG4gICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMub25DaGFuZ2UoYWxsU2VsZWN0ZWROb2Rlc0lkcyk7XHJcbiAgICAgIHRoaXMub25Ub3VjaGVkKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlc29sdmVTZWxlY3Rpb24oKSB7XHJcbiAgICB0aGlzLml0ZW1TZWxlY3RlZCA9IHRoaXMub3BlcmF0b3IgPT0gJz0nID8gdGhpcy5maW5kTm9kZXNCeUlkcyh0aGlzLnRyZWVOb2RlSXRlbXMsIHRoaXMuaXRlbVNlbGVjdGVkPy5wYXJlbnQgPz8gbnVsbCkgOiB0aGlzLmZpbmROb2Rlc0J5SWRzKHRoaXMudHJlZU5vZGVJdGVtcywgdGhpcy5pdGVtU2VsZWN0ZWQpOyBcclxuICAgIHRoaXMub25Ob2RlU2VsZWN0ZWQodGhpcy5pdGVtU2VsZWN0ZWQsIHRydWUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0SXRlbUJ5SWRlbnRpdHkoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5maWVsZCA9PT0gJ2NhdGVnb3J5J1xyXG4gICAgICA/IHRoaXMuYXBpU2VydmljZS5nZXRDYXRlZ29yaWVzKHRoaXMucHJvZHVjdEFwaVVybCwgdGhpcy5wcm9kdWN0QXBpVG9rZW4pXHJcbiAgICAgIDogdGhpcy5hcGlTZXJ2aWNlLmdldFNlY3Rpb25zKHRoaXMucHJvZHVjdEFwaVVybCwgdGhpcy5wcm9kdWN0QXBpVG9rZW4pO1xyXG4gIH1cclxuXHJcbiAgZ2V0UGFyZW50QW5kQ2hpbGRyZW5JZHMobm9kZXM6IFRyZWVOb2RlW10sIGlkczogbnVtYmVyW10gPSBbXSk6IG51bWJlcltdIHtcclxuICAgIGZvciAobGV0IG5vZGUgb2Ygbm9kZXMpIHtcclxuICAgICAgaWRzLnB1c2gobm9kZS5kYXRhKTtcclxuICAgICAgaWYgKG5vZGUuY2hpbGRyZW4gJiYgbm9kZS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5nZXRQYXJlbnRBbmRDaGlsZHJlbklkcyhub2RlLmNoaWxkcmVuLCBpZHMpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaWRzO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlUGFydGlhbFNlbGVjdGlvbihub2RlczogVHJlZU5vZGVbXSwgc2VsZWN0ZWROb2RlczogVHJlZU5vZGVbXSk6IFRyZWVOb2RlW10ge1xyXG4gICAgaWYgKCFub2RlcyB8fCAhc2VsZWN0ZWROb2RlcykgcmV0dXJuIG5vZGVzIHx8IFtdO1xyXG5cclxuICAgIGZvciAobGV0IG5vZGUgb2Ygbm9kZXMpIHtcclxuICAgICAgaWYgKG5vZGUuY2hpbGRyZW4gJiYgbm9kZS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy51cGRhdGVQYXJ0aWFsU2VsZWN0aW9uKG5vZGUuY2hpbGRyZW4sIHNlbGVjdGVkTm9kZXMpO1xyXG4gICAgICAgIGNvbnN0IHNlbGVjdGVkQ2hpbGRyZW5Db3VudCA9IG5vZGUuY2hpbGRyZW4uZmlsdGVyKChjaGlsZDogYW55KSA9PiBzZWxlY3RlZE5vZGVzLnNvbWUoKG5vZGU6IGFueSkgPT4gbm9kZS5kYXRhID09PSBjaGlsZC5kYXRhKSkubGVuZ3RoO1xyXG4gICAgICAgIGNvbnN0IGhhc1BhcnRpYWxDaGlsZHJlbiA9IG5vZGUuY2hpbGRyZW4uc29tZSgoY2hpbGQ6IGFueSkgPT4gY2hpbGQucGFydGlhbFNlbGVjdGVkKTtcclxuXHJcbiAgICAgICAgbm9kZS5wYXJ0aWFsU2VsZWN0ZWQgPSAoc2VsZWN0ZWRDaGlsZHJlbkNvdW50ID4gMCAmJiBzZWxlY3RlZENoaWxkcmVuQ291bnQgPCBub2RlLmNoaWxkcmVuLmxlbmd0aCkgfHwgaGFzUGFydGlhbENoaWxkcmVuO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG5vZGUucGFydGlhbFNlbGVjdGVkID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbm9kZXM7XHJcbiAgfVxyXG5cclxuICBnZXREYXRhVHlwZSgpIHtcclxuICAgIHJldHVybiB0aGlzLm9wZXJhdG9yID09PSBPcGVyYXRvckVudW0uRXF1YWxzIHx8IHRoaXMub3BlcmF0b3IgPT09IE9wZXJhdG9yRW51bS5Ob3RFcXVhbHNcclxuICAgICAgPyBEYXRhVHlwZUVudW0uU2luZ2xlXHJcbiAgICAgIDogRGF0YVR5cGVFbnVtLk11bHRpO1xyXG4gIH1cclxuXHJcbiAgaXRlbXNUb1RyZWVOb2RlTWFwKHByb2R1Y3RTZWN0aW9uTGlzdDogYW55W10pOiBUcmVlTm9kZVtdIHtcclxuICAgIGlmICghcHJvZHVjdFNlY3Rpb25MaXN0KSByZXR1cm4gW107XHJcblxyXG4gICAgcmV0dXJuIHByb2R1Y3RTZWN0aW9uTGlzdC5tYXAoKHByb2R1Y3QpID0+ICh7XHJcbiAgICAgIGxhYmVsOiBwcm9kdWN0Lm5hbWUsXHJcbiAgICAgIGRhdGE6IHByb2R1Y3RbdGhpcy5nZXRGaWVsZElkKCldLFxyXG4gICAgICBjaGlsZHJlbjogdGhpcy5pdGVtc1RvVHJlZU5vZGVNYXAocHJvZHVjdFt0aGlzLmdldEVudGl0eUludmVyc2VQYXJlbnQoKV0pXHJcbiAgICB9KSk7XHJcbiAgfVxyXG5cclxuICBmaW5kTm9kZXNCeUlkcyhub2RlczogYW55W10sIGlkczogYW55KTogYW55IHwgYW55W10ge1xyXG4gICAgY29uc3QgaXNBcnJheSA9IEFycmF5LmlzQXJyYXkoaWRzKTtcclxuICAgIGNvbnN0IGlkTGlzdCA9IGlzQXJyYXkgPyBpZHMgOiBbaWRzXTtcclxuICAgIGxldCBmb3VuZE5vZGVzOiBhbnlbXSA9IFtdO1xyXG5cclxuICAgIGZvciAobGV0IG5vZGUgb2Ygbm9kZXMpIHtcclxuICAgICAgaWYgKGlkTGlzdC5pbmNsdWRlcyhub2RlLmRhdGEpKSB7XHJcbiAgICAgICAgZm91bmROb2Rlcy5wdXNoKG5vZGUpO1xyXG4gICAgICAgIGlmICghaXNBcnJheSkgcmV0dXJuIG5vZGU7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKG5vZGUuY2hpbGRyZW4pIHtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLmZpbmROb2Rlc0J5SWRzKG5vZGUuY2hpbGRyZW4sIGlkcyk7XHJcbiAgICAgICAgaWYgKGlzQXJyYXkpIHtcclxuICAgICAgICAgIGZvdW5kTm9kZXMgPSBmb3VuZE5vZGVzLmNvbmNhdChyZXN1bHQpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBpc0FycmF5ID8gZm91bmROb2RlcyA6IG51bGw7XHJcbiAgfVxyXG5cclxuICBnZXRGaWVsZElkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZmllbGQgPT09ICdjYXRlZ29yeScgPyAncHJvZHVjdENhdGVnb3J5SWQnIDogJ3Byb2R1Y3RTZWN0aW9uSWQnO1xyXG4gIH1cclxuXHJcbiAgZ2V0RW50aXR5SW52ZXJzZVBhcmVudCgpIHtcclxuICAgIHJldHVybiB0aGlzLmZpZWxkID09PSAnY2F0ZWdvcnknID8gJ2ludmVyc2VQYXJlbnRQcm9kdWN0Q2F0ZWdvcnknIDogJ2ludmVyc2VQYXJlbnRQcm9kdWN0U2VjdGlvbic7XHJcbiAgfVxyXG5cclxuICBmaW5kVHJlZU5vZGVDYXRlZ29yeShsaXN0Tm9kZTogVHJlZU5vZGVbXSwgaWQ6IG51bWJlciwgcGFydGlhbD86IGJvb2xlYW4pIHtcclxuICAgIGZvciAobGV0IG5vZGUgb2YgbGlzdE5vZGUpIHtcclxuICAgICAgaWYgKG5vZGUuZGF0YSA9PSBpZCkge1xyXG4gICAgICAgIG5vZGUucGFydGlhbFNlbGVjdGVkID0gcGFydGlhbDtcclxuICAgICAgICByZXR1cm4gbm9kZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKG5vZGUuY2hpbGRyZW4pIHtcclxuICAgICAgICBsZXQgbmV3Tm9kZUZvdW5kOiBhbnkgPSB0aGlzLmZpbmRUcmVlTm9kZUNhdGVnb3J5KG5vZGUuY2hpbGRyZW4sIGlkLCBub2RlLnBhcnRpYWxTZWxlY3RlZCk7XHJcbiAgICAgICAgaWYgKG5ld05vZGVGb3VuZCkge1xyXG4gICAgICAgICAgcmV0dXJuIG5ld05vZGVGb3VuZDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgfVxyXG59XHJcbiIsIjx3LWVkaXQtdHJlZXNlbGVjdCAqbmdJZj1cImdldERhdGFUeXBlKCkgPT0gZGF0YVR5cGUuTXVsdGlcIiAgW3Nob3dMYWJlbF09XCJmYWxzZVwiIFtyZW1vdmVQYWRkaW5nVG9wXT1cInRydWVcIlxyXG4gICAgY2xhc3M9XCJ3LXRyZWUtZmllbGQtd2lkdGggdy1maWx0ZXItcGFuZWwtYWR2YW5jZWQtcXVlcnktYnVpbGRlci1pbnB1dC13aWR0aCB3LWZpbHRlci1wYW5lbC1iYXNpYy1xdWVyeS1idWlsZGVyLWlucHV0LXdpZHRoIHEtaW5saW5lLWJsb2NrLWRpc3BsYXkgaW5saW5lLWZsZXhcIlxyXG4gICAgW29wdGlvbnNdPVwidHJlZU5vZGVJdGVtc1wiXHJcbiAgICBzZWxlY3Rpb25Nb2RlPVwiY2hlY2tib3hcIlxyXG4gICAgW3BsYWNlaG9sZGVyXT1cInNlbGVjdFBsYWNlaG9sZGVyXCJcclxuICAgIGFwcGVuZFRvPVwiYm9keVwiXHJcbiAgICBbKG5nTW9kZWwpXT1cIml0ZW1TZWxlY3RlZFwiIFxyXG4gICAgKG5nTW9kZWxDaGFuZ2UpPVwib25Ob2RlU2VsZWN0ZWQoJGV2ZW50KVwiXHJcbiAgICBbZmlsdGVyQnldPVwiJ2xhYmVsLGRhdGEnXCI+XHJcbjwvdy1lZGl0LXRyZWVzZWxlY3Q+XHJcblxyXG48dy1lZGl0LXRyZWVzZWxlY3QgKm5nSWY9XCJnZXREYXRhVHlwZSgpID09IGRhdGFUeXBlLlNpbmdsZVwiICBbc2hvd0xhYmVsXT1cImZhbHNlXCIgW3JlbW92ZVBhZGRpbmdUb3BdPVwidHJ1ZVwiXHJcbiAgICBjbGFzcz1cInctdHJlZS1maWVsZC13aWR0aCB3LWZpbHRlci1wYW5lbC1hZHZhbmNlZC1xdWVyeS1idWlsZGVyLWlucHV0LXdpZHRoIHctZmlsdGVyLXBhbmVsLWJhc2ljLXF1ZXJ5LWJ1aWxkZXItaW5wdXQtd2lkdGggcS1pbmxpbmUtYmxvY2stZGlzcGxheSBpbmxpbmUtZmxleFwiXHJcbiAgICBbb3B0aW9uc109XCJ0cmVlTm9kZUl0ZW1zXCJcclxuICAgIHNlbGVjdGlvbk1vZGU9XCJzaW5nbGVcIlxyXG4gICAgW3BsYWNlaG9sZGVyXT1cInNlbGVjdFBsYWNlaG9sZGVyXCJcclxuICAgIGFwcGVuZFRvPVwiYm9keVwiXHJcbiAgICBbKG5nTW9kZWwpXT1cIml0ZW1TZWxlY3RlZFwiIFxyXG4gICAgKG5nTW9kZWxDaGFuZ2UpPVwib25Ob2RlU2VsZWN0ZWQoJGV2ZW50KVwiXHJcbiAgICBbZmlsdGVyQnldPVwiJ2xhYmVsLGRhdGEnXCI+XHJcbjwvdy1lZGl0LXRyZWVzZWxlY3Q+XHJcbiJdfQ==