UNPKG

@rucken/todo-web

Version:

Base components and ui for todo application maked on Angular7+ and based on Rucken template

215 lines 17.4 kB
import * as tslib_1 from "tslib"; var ProjectUsersGridComponent_1; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { ChangeDetectionStrategy, Component, forwardRef, Inject, Input } from '@angular/core'; import { NG_VALUE_ACCESSOR } from '@angular/forms'; import { TranslateService } from '@ngx-translate/core'; import { ErrorsExtractor, ModalsService, translate, USERS_CONFIG_TOKEN } from '@rucken/core'; import { Project } from '@rucken/todo-core'; import { UsersGridComponent, UsersGridModalComponent } from '@rucken/web'; import { BindIoInner } from 'ngx-bind-io'; import { BsModalService } from 'ngx-bootstrap/modal'; import { DynamicRepository, ProviderActionEnum } from 'ngx-repository'; import { ProjectUserModalComponent } from '../project-user-modal/project-user-modal.component'; let ProjectUsersGridComponent = ProjectUsersGridComponent_1 = class ProjectUsersGridComponent extends UsersGridComponent { /** * @param {?} modalsService * @param {?} errorsExtractor * @param {?} translateService * @param {?} dynamicRepository * @param {?} modalService * @param {?} usersConfig */ constructor(modalsService, errorsExtractor, translateService, dynamicRepository, modalService, usersConfig) { super(modalsService, errorsExtractor, translateService, dynamicRepository, usersConfig); this.errorsExtractor = errorsExtractor; this.translateService = translateService; this.dynamicRepository = dynamicRepository; this.modalService = modalService; this.usersConfig = usersConfig; this.modalItem = { component: ProjectUserModalComponent, initialState: { simpleMode: true } }; this.modalDelete = { initialState: { title: translate('Delete user'), message: translate('Do you really want to delete user "{{fullName}}" from project?') } }; this.modalAppendFromGrid = { component: UsersGridModalComponent, initialState: { title: translate('Select user for append to project'), simpleMode: true } }; this.project = undefined; this._onChange = (/** * @param {?} value * @return {?} */ (value) => { }); this._onTouched = (/** * @return {?} */ () => { }); } /** * @param {?=} overrided * @return {?} */ ngOnInit(overrided) { if (!overrided) { return; } if (!this.mockedItems) { this.useRest(Object.assign({ apiUrl: this.apiUrl + '/project/' + this.project.id, autoload: !!this.project.id }, this.usersConfig, { globalEventResolver: (/** * @param {?} data * @param {?} action * @return {?} */ (data, action) => { return action !== ProviderActionEnum.Create && action !== ProviderActionEnum.Delete; }) })); } if (this.mockedItems) { this.useMock(Object.assign({ items: this.mockedItems, autoload: true }, this.usersConfig, { globalEventResolver: (/** * @param {?} data * @param {?} action * @return {?} */ (data, action) => { return action !== ProviderActionEnum.Create && action !== ProviderActionEnum.Delete; }) })); } if (this.mockedItemsChangeSubscription) { this.mockedItemsChangeSubscription.unsubscribe(); } this.mockedItemsChange.subscribe((/** * @param {?} permissions * @return {?} */ permissions => this._onChange(permissions))); } /** * @return {?} */ ngOnDestroy() { if (this.mockedItemsChangeSubscription) { this.mockedItemsChangeSubscription.unsubscribe(); } } /** * @param {?} users * @return {?} */ writeValue(users) { this.mockedItems = users || []; this.ngOnInit(true); } /** * @param {?} fn * @return {?} */ registerOnChange(fn) { this._onChange = fn; } /** * @param {?} fn * @return {?} */ registerOnTouched(fn) { this._onTouched = fn; } /** * @param {?} isDisabled * @return {?} */ setDisabledState(isDisabled) { } }; ProjectUsersGridComponent.decorators = [ { type: Component, args: [{ selector: 'project-users-grid', template: "<entity-grid\n [bindIO]\n [columns]=\"['fullName', 'action']\"\n [enableCreate]=\"'change_project' | perm:false | async\"\n [enableUpdate]=\"false\"\n [enableDelete]=\"'change_project' | perm:false | async\">\n</entity-grid>\n", providers: [ { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef((/** * @return {?} */ () => ProjectUsersGridComponent_1)), multi: true } ], changeDetection: ChangeDetectionStrategy.OnPush }] } ]; /** @nocollapse */ ProjectUsersGridComponent.ctorParameters = () => [ { type: ModalsService }, { type: ErrorsExtractor }, { type: TranslateService }, { type: DynamicRepository }, { type: BsModalService }, { type: undefined, decorators: [{ type: Inject, args: [USERS_CONFIG_TOKEN,] }] } ]; ProjectUsersGridComponent.propDecorators = { modalItem: [{ type: Input }], modalDelete: [{ type: Input }], modalAppendFromGrid: [{ type: Input }], project: [{ type: Input }] }; ProjectUsersGridComponent = ProjectUsersGridComponent_1 = tslib_1.__decorate([ BindIoInner(), tslib_1.__metadata("design:paramtypes", [ModalsService, ErrorsExtractor, TranslateService, DynamicRepository, BsModalService, Object]) ], ProjectUsersGridComponent); export { ProjectUsersGridComponent }; if (false) { /** @type {?} */ ProjectUsersGridComponent.prototype.modalItem; /** @type {?} */ ProjectUsersGridComponent.prototype.modalDelete; /** @type {?} */ ProjectUsersGridComponent.prototype.modalAppendFromGrid; /** @type {?} */ ProjectUsersGridComponent.prototype.project; /** @type {?} */ ProjectUsersGridComponent.prototype.mockedItemsChangeSubscription; /** @type {?} */ ProjectUsersGridComponent.prototype._onChange; /** @type {?} */ ProjectUsersGridComponent.prototype._onTouched; /** * @type {?} * @protected */ ProjectUsersGridComponent.prototype.errorsExtractor; /** * @type {?} * @protected */ ProjectUsersGridComponent.prototype.translateService; /** * @type {?} * @protected */ ProjectUsersGridComponent.prototype.dynamicRepository; /** @type {?} */ ProjectUsersGridComponent.prototype.modalService; /** * @type {?} * @protected */ ProjectUsersGridComponent.prototype.usersConfig; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVjdC11c2Vycy1ncmlkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BydWNrZW4vdG9kby13ZWIvIiwic291cmNlcyI6WyJsaWIvZW50aXRpZXMvcHJvamVjdHMvcHJvamVjdC11c2Vycy1ncmlkL3Byb2plY3QtdXNlcnMtZ3JpZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDakgsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFDTCxlQUFlLEVBRWYsYUFBYSxFQUNiLFNBQVMsRUFFVCxrQkFBa0IsRUFDbkIsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMxRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsaUJBQWlCLEVBQXdCLGtCQUFrQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0YsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sb0RBQW9ELENBQUM7SUFlbEYseUJBQXlCLHVDQUF6Qix5QkFBMEIsU0FBUSxrQkFBa0I7Ozs7Ozs7OztJQTJCL0QsWUFDRSxhQUE0QixFQUNsQixlQUFnQyxFQUNoQyxnQkFBa0MsRUFDbEMsaUJBQW9DLEVBQ3ZDLFlBQTRCLEVBRXpCLFdBQXVDO1FBRWpELEtBQUssQ0FBQyxhQUFhLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBUDlFLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDdkMsaUJBQVksR0FBWixZQUFZLENBQWdCO1FBRXpCLGdCQUFXLEdBQVgsV0FBVyxDQUE0QjtRQWhDbkQsY0FBUyxHQUE0QjtZQUNuQyxTQUFTLEVBQUUseUJBQXlCO1lBQ3BDLFlBQVksRUFBRTtnQkFDWixVQUFVLEVBQUUsSUFBSTthQUNqQjtTQUNGLENBQUM7UUFFRixnQkFBVyxHQUFHO1lBQ1osWUFBWSxFQUFFO2dCQUNaLEtBQUssRUFBRSxTQUFTLENBQUMsYUFBYSxDQUFDO2dCQUMvQixPQUFPLEVBQUUsU0FBUyxDQUFDLGdFQUFnRSxDQUFDO2FBQ3JGO1NBQ0YsQ0FBQztRQUVGLHdCQUFtQixHQUFHO1lBQ3BCLFNBQVMsRUFBRSx1QkFBdUI7WUFDbEMsWUFBWSxFQUFFO2dCQUNaLEtBQUssRUFBRSxTQUFTLENBQUMsbUNBQW1DLENBQUM7Z0JBQ3JELFVBQVUsRUFBRSxJQUFJO2FBQ2pCO1NBQ0YsQ0FBQztRQUVGLFlBQU8sR0FBWSxTQUFTLENBQUM7UUEyRDdCLGNBQVM7Ozs7UUFBRyxDQUFDLEtBQVcsRUFBRSxFQUFFLEdBQUUsQ0FBQyxFQUFDO1FBQ2hDLGVBQVU7OztRQUFHLEdBQUcsRUFBRSxHQUFFLENBQUMsRUFBQztJQS9DdEIsQ0FBQzs7Ozs7SUFDRCxRQUFRLENBQUMsU0FBbUI7UUFDMUIsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNkLE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3JCLElBQUksQ0FBQyxPQUFPLGlCQUNWLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxHQUFHLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFDbkQsUUFBUSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsSUFDeEIsSUFBSSxDQUFDLFdBQVcsSUFDbkIsbUJBQW1COzs7OztnQkFBRSxDQUFDLElBQVMsRUFBRSxNQUEwQixFQUFFLEVBQUU7b0JBQzdELE9BQU8sTUFBTSxLQUFLLGtCQUFrQixDQUFDLE1BQU0sSUFBSSxNQUFNLEtBQUssa0JBQWtCLENBQUMsTUFBTSxDQUFDO2dCQUN0RixDQUFDLEtBQ0QsQ0FBQztTQUNKO1FBQ0QsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3BCLElBQUksQ0FBQyxPQUFPLGlCQUNWLEtBQUssRUFBRSxJQUFJLENBQUMsV0FBVyxFQUN2QixRQUFRLEVBQUUsSUFBSSxJQUNYLElBQUksQ0FBQyxXQUFXLElBQ25CLG1CQUFtQjs7Ozs7Z0JBQUUsQ0FBQyxJQUFTLEVBQUUsTUFBMEIsRUFBRSxFQUFFO29CQUM3RCxPQUFPLE1BQU0sS0FBSyxrQkFBa0IsQ0FBQyxNQUFNLElBQUksTUFBTSxLQUFLLGtCQUFrQixDQUFDLE1BQU0sQ0FBQztnQkFDdEYsQ0FBQyxLQUNELENBQUM7U0FDSjtRQUNELElBQUksSUFBSSxDQUFDLDZCQUE2QixFQUFFO1lBQ3RDLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNsRDtRQUNELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTOzs7O1FBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxFQUFDLENBQUM7SUFDL0UsQ0FBQzs7OztJQUNELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyw2QkFBNkIsRUFBRTtZQUN0QyxJQUFJLENBQUMsNkJBQTZCLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDbEQ7SUFDSCxDQUFDOzs7OztJQUNELFVBQVUsQ0FBQyxLQUFhO1FBQ3RCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUMvQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RCLENBQUM7Ozs7O0lBQ0QsZ0JBQWdCLENBQUMsRUFBTztRQUN0QixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUN0QixDQUFDOzs7OztJQUNELGlCQUFpQixDQUFDLEVBQU87UUFDdkIsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7SUFDdkIsQ0FBQzs7Ozs7SUFDRCxnQkFBZ0IsQ0FBRSxVQUFtQixJQUFTLENBQUM7Q0FHaEQsQ0FBQTs7WUFqR0EsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxvQkFBb0I7Z0JBQzlCLDZQQUFrRDtnQkFDbEQsU0FBUyxFQUFFO29CQUNUO3dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7d0JBQzFCLFdBQVcsRUFBRSxVQUFVOzs7d0JBQUMsR0FBRyxFQUFFLENBQUMsMkJBQXlCLEVBQUM7d0JBQ3hELEtBQUssRUFBRSxJQUFJO3FCQUNaO2lCQUNGO2dCQUNELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2FBQ2hEOzs7O1lBekJDLGFBQWE7WUFGYixlQUFlO1lBRlIsZ0JBQWdCO1lBYWhCLGlCQUFpQjtZQURqQixjQUFjOzRDQW1EbEIsTUFBTSxTQUFDLGtCQUFrQjs7O3dCQWhDM0IsS0FBSzswQkFPTCxLQUFLO2tDQU9MLEtBQUs7c0JBUUwsS0FBSzs7QUF2QksseUJBQXlCO0lBYnJDLFdBQVcsRUFBRTs2Q0F5Q0ssYUFBYTtRQUNELGVBQWU7UUFDZCxnQkFBZ0I7UUFDZixpQkFBaUI7UUFDekIsY0FBYztHQWhDMUIseUJBQXlCLENBcUZyQztTQXJGWSx5QkFBeUI7OztJQUNwQyw4Q0FNRTs7SUFDRixnREFNRTs7SUFDRix3REFPRTs7SUFDRiw0Q0FDNkI7O0lBQzdCLGtFQUE0Qzs7SUEwRDVDLDhDQUFnQzs7SUFDaEMsK0NBQXNCOzs7OztJQXZEcEIsb0RBQTBDOzs7OztJQUMxQyxxREFBNEM7Ozs7O0lBQzVDLHNEQUE4Qzs7SUFDOUMsaURBQW1DOzs7OztJQUNuQyxnREFDaUQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBmb3J3YXJkUmVmLCBJbmplY3QsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtcbiAgRXJyb3JzRXh0cmFjdG9yLFxuICBJQmFzZUVudGl0eU1vZGFsT3B0aW9ucyxcbiAgTW9kYWxzU2VydmljZSxcbiAgdHJhbnNsYXRlLFxuICBVc2VyLFxuICBVU0VSU19DT05GSUdfVE9LRU5cbn0gZnJvbSAnQHJ1Y2tlbi9jb3JlJztcbmltcG9ydCB7IFByb2plY3QgfSBmcm9tICdAcnVja2VuL3RvZG8tY29yZSc7XG5pbXBvcnQgeyBVc2Vyc0dyaWRDb21wb25lbnQsIFVzZXJzR3JpZE1vZGFsQ29tcG9uZW50IH0gZnJvbSAnQHJ1Y2tlbi93ZWInO1xuaW1wb3J0IHsgQmluZElvSW5uZXIgfSBmcm9tICduZ3gtYmluZC1pbyc7XG5pbXBvcnQgeyBCc01vZGFsU2VydmljZSB9IGZyb20gJ25neC1ib290c3RyYXAvbW9kYWwnO1xuaW1wb3J0IHsgRHluYW1pY1JlcG9zaXRvcnksIElSZXN0UHJvdmlkZXJPcHRpb25zLCBQcm92aWRlckFjdGlvbkVudW0gfSBmcm9tICduZ3gtcmVwb3NpdG9yeSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFByb2plY3RVc2VyTW9kYWxDb21wb25lbnQgfSBmcm9tICcuLi9wcm9qZWN0LXVzZXItbW9kYWwvcHJvamVjdC11c2VyLW1vZGFsLmNvbXBvbmVudCc7XG5cbkBCaW5kSW9Jbm5lcigpXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwcm9qZWN0LXVzZXJzLWdyaWQnLFxuICB0ZW1wbGF0ZVVybDogJy4vcHJvamVjdC11c2Vycy1ncmlkLmNvbXBvbmVudC5odG1sJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBQcm9qZWN0VXNlcnNHcmlkQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBQcm9qZWN0VXNlcnNHcmlkQ29tcG9uZW50IGV4dGVuZHMgVXNlcnNHcmlkQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KClcbiAgbW9kYWxJdGVtOiBJQmFzZUVudGl0eU1vZGFsT3B0aW9ucyA9IHtcbiAgICBjb21wb25lbnQ6IFByb2plY3RVc2VyTW9kYWxDb21wb25lbnQsXG4gICAgaW5pdGlhbFN0YXRlOiB7XG4gICAgICBzaW1wbGVNb2RlOiB0cnVlXG4gICAgfVxuICB9O1xuICBASW5wdXQoKVxuICBtb2RhbERlbGV0ZSA9IHtcbiAgICBpbml0aWFsU3RhdGU6IHtcbiAgICAgIHRpdGxlOiB0cmFuc2xhdGUoJ0RlbGV0ZSB1c2VyJyksXG4gICAgICBtZXNzYWdlOiB0cmFuc2xhdGUoJ0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdXNlciBcInt7ZnVsbE5hbWV9fVwiIGZyb20gcHJvamVjdD8nKVxuICAgIH1cbiAgfTtcbiAgQElucHV0KClcbiAgbW9kYWxBcHBlbmRGcm9tR3JpZCA9IHtcbiAgICBjb21wb25lbnQ6IFVzZXJzR3JpZE1vZGFsQ29tcG9uZW50LFxuICAgIGluaXRpYWxTdGF0ZToge1xuICAgICAgdGl0bGU6IHRyYW5zbGF0ZSgnU2VsZWN0IHVzZXIgZm9yIGFwcGVuZCB0byBwcm9qZWN0JyksXG4gICAgICBzaW1wbGVNb2RlOiB0cnVlXG4gICAgfVxuICB9O1xuICBASW5wdXQoKVxuICBwcm9qZWN0OiBQcm9qZWN0ID0gdW5kZWZpbmVkO1xuICBtb2NrZWRJdGVtc0NoYW5nZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIG1vZGFsc1NlcnZpY2U6IE1vZGFsc1NlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGVycm9yc0V4dHJhY3RvcjogRXJyb3JzRXh0cmFjdG9yLFxuICAgIHByb3RlY3RlZCB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBkeW5hbWljUmVwb3NpdG9yeTogRHluYW1pY1JlcG9zaXRvcnksXG4gICAgcHVibGljIG1vZGFsU2VydmljZTogQnNNb2RhbFNlcnZpY2UsXG4gICAgQEluamVjdChVU0VSU19DT05GSUdfVE9LRU4pXG4gICAgcHJvdGVjdGVkIHVzZXJzQ29uZmlnOiBJUmVzdFByb3ZpZGVyT3B0aW9uczxVc2VyPlxuICApIHtcbiAgICBzdXBlcihtb2RhbHNTZXJ2aWNlLCBlcnJvcnNFeHRyYWN0b3IsIHRyYW5zbGF0ZVNlcnZpY2UsIGR5bmFtaWNSZXBvc2l0b3J5LCB1c2Vyc0NvbmZpZyk7XG4gIH1cbiAgbmdPbkluaXQob3ZlcnJpZGVkPzogYm9vbGVhbikge1xuICAgIGlmICghb3ZlcnJpZGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghdGhpcy5tb2NrZWRJdGVtcykge1xuICAgICAgdGhpcy51c2VSZXN0KHtcbiAgICAgICAgYXBpVXJsOiB0aGlzLmFwaVVybCArICcvcHJvamVjdC8nICsgdGhpcy5wcm9qZWN0LmlkLFxuICAgICAgICBhdXRvbG9hZDogISF0aGlzLnByb2plY3QuaWQsXG4gICAgICAgIC4uLnRoaXMudXNlcnNDb25maWcsXG4gICAgICAgIGdsb2JhbEV2ZW50UmVzb2x2ZXI6IChkYXRhOiBhbnksIGFjdGlvbjogUHJvdmlkZXJBY3Rpb25FbnVtKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGFjdGlvbiAhPT0gUHJvdmlkZXJBY3Rpb25FbnVtLkNyZWF0ZSAmJiBhY3Rpb24gIT09IFByb3ZpZGVyQWN0aW9uRW51bS5EZWxldGU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAodGhpcy5tb2NrZWRJdGVtcykge1xuICAgICAgdGhpcy51c2VNb2NrKHtcbiAgICAgICAgaXRlbXM6IHRoaXMubW9ja2VkSXRlbXMsXG4gICAgICAgIGF1dG9sb2FkOiB0cnVlLFxuICAgICAgICAuLi50aGlzLnVzZXJzQ29uZmlnLFxuICAgICAgICBnbG9iYWxFdmVudFJlc29sdmVyOiAoZGF0YTogYW55LCBhY3Rpb246IFByb3ZpZGVyQWN0aW9uRW51bSkgPT4ge1xuICAgICAgICAgIHJldHVybiBhY3Rpb24gIT09IFByb3ZpZGVyQWN0aW9uRW51bS5DcmVhdGUgJiYgYWN0aW9uICE9PSBQcm92aWRlckFjdGlvbkVudW0uRGVsZXRlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKHRoaXMubW9ja2VkSXRlbXNDaGFuZ2VTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMubW9ja2VkSXRlbXNDaGFuZ2VTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gICAgdGhpcy5tb2NrZWRJdGVtc0NoYW5nZS5zdWJzY3JpYmUocGVybWlzc2lvbnMgPT4gdGhpcy5fb25DaGFuZ2UocGVybWlzc2lvbnMpKTtcbiAgfVxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5tb2NrZWRJdGVtc0NoYW5nZVN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5tb2NrZWRJdGVtc0NoYW5nZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuICB3cml0ZVZhbHVlKHVzZXJzOiBVc2VyW10pOiB2b2lkIHtcbiAgICB0aGlzLm1vY2tlZEl0ZW1zID0gdXNlcnMgfHwgW107XG4gICAgdGhpcy5uZ09uSW5pdCh0cnVlKTtcbiAgfVxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLl9vbkNoYW5nZSA9IGZuO1xuICB9XG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLl9vblRvdWNoZWQgPSBmbjtcbiAgfVxuICBzZXREaXNhYmxlZFN0YXRlPyhpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7fVxuICBfb25DaGFuZ2UgPSAodmFsdWU6IFVzZXIpID0+IHt9O1xuICBfb25Ub3VjaGVkID0gKCkgPT4ge307XG59XG4iXX0=