UNPKG

@ecip/system

Version:
261 lines 26.8 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Component } from '@angular/core'; import { NzModalRef, NzMessageService } from 'ng-zorro-antd'; import { FormBuilder, Validators } from "@angular/forms"; import { Observable } from "rxjs/index"; import { DictService } from "@ecip/service"; import { CacheService } from "@delon/cache"; var SystemDictEditComponent = /** @class */ (function () { function SystemDictEditComponent(modal, msgSrv, fb, dictService, cacheService) { var _this = this; this.modal = modal; this.msgSrv = msgSrv; this.fb = fb; this.dictService = dictService; this.cacheService = cacheService; this.record = {}; this.stateList = this.cacheService.get("api/dict/type/enableState"); this.codeAsyncValidator = (/** * @param {?} control * @return {?} */ function (control) { return Observable.create((/** * @param {?} observer * @return {?} */ function (observer) { if (!control.value) { observer.next(null); observer.complete(); return; } /** @type {?} */ var parentId = _this.parent ? _this.parent.id : null; _this.dictService.checkVkey({ id: _this.record.id, pid: parentId, vkey: control.value }).subscribe((/** * @param {?} res * @return {?} */ function (res) { if (res.valid === true) { observer.next(null); } else { observer.next({ error: true, duplicated: true }); } observer.complete(); })); })); }); this.typeAsyncValidator = (/** * @param {?} control * @return {?} */ function (control) { return Observable.create((/** * @param {?} observer * @return {?} */ function (observer) { if (!control.value) { observer.next(null); observer.complete(); return; } if (_this.isRoot) { _this.dictService.checkDictType({ id: _this.record.id, dictType: control.value }).subscribe((/** * @param {?} res * @return {?} */ function (res) { if (res.valid === true) { observer.next(null); } else { observer.next({ error: true, duplicated: true }); } observer.complete(); })); } else { observer.next(null); observer.complete(); } })); }); } /** * @return {?} */ SystemDictEditComponent.prototype.ngOnInit = /** * @return {?} */ function () { var _this = this; /** @type {?} */ var pid = null; /** @type {?} */ var dictType = ''; if (!this.record.id) { if (this.isRoot) { this.ableOperate = true; } else { this.ableOperate = false; pid = this.parent.id; dictType = this.parent.dictType; } } this.form = this.fb.group({ pid: [pid, []], dictType: [dictType, [Validators.required], [this.typeAsyncValidator]], //SystemDictEditComponent.typeAsyncValidator(this.dictService, this.record) vkey: ['', [], [this.codeAsyncValidator]], //SystemDictEditComponent.codeAsyncValidator(this.dictService, this.record, this.parent) vname: [null, [Validators.required]], remark: [null, []], sortNum: [0, [Validators.required]], rsvn: [null, []], valid: [1, [Validators.required]], createTime: [null, []], updateTime: [null, []], creator: [null, []], operator: [null, []], }); if (!this.record.id) { return; } if (this.isRoot) { /** @type {?} */ var vkeyCtl = this.form.get("vkey"); vkeyCtl.clearAsyncValidators(); vkeyCtl.updateValueAndValidity(); } this.dictService.getById(this.record.id).subscribe((/** * @param {?} res * @return {?} */ function (res) { _this.isRoot = !res.pid; _this.form.patchValue(res); _this.i = res; })); }; /** * @param {?} c1 * @param {?} c2 * @return {?} */ SystemDictEditComponent.prototype.compareNumStr = /** * @param {?} c1 * @param {?} c2 * @return {?} */ function (c1, c2) { return c1 == c2; }; /** * @return {?} */ SystemDictEditComponent.prototype.submit = /** * @return {?} */ function () { var _this = this; for (var i in this.form.controls) { this.form.controls[i].markAsDirty(); this.form.controls[i].updateValueAndValidity(); } if (this.form.invalid) return; if (!this.record.id) { //新增 this.dictService.post(this.form.value).subscribe((/** * @param {?} res * @return {?} */ function (res) { _this.msgSrv.success('保存成功'); _this.modal.close(res); })); return; } //修改 this.dictService.put(this.record.id, this.form.value).subscribe((/** * @param {?} res * @return {?} */ function (res) { _this.msgSrv.success('保存成功'); _this.modal.close(res); })); }; /** * @return {?} */ SystemDictEditComponent.prototype.close = /** * @return {?} */ function () { this.modal.destroy(); }; SystemDictEditComponent.decorators = [ { type: Component, args: [{ selector: 'app-system-dict-edit', template: "<div class=\"modal-header\">\r\n <div *ngIf=\"!record.id\" class=\"modal-title\">\u65B0\u589E\u4FE1\u606F</div>\r\n <div *ngIf=\"record.id\" class=\"modal-title\">\u7F16\u8F91 {{ record.account }} \u4FE1\u606F</div>\r\n</div>\r\n<nz-spin *ngIf=\"!i && !record.id\" class=\"modal-spin\"></nz-spin>\r\n<form *ngIf=\"!record.id || record.id && i\" nz-form [formGroup]=\"form\" (ngSubmit)=\"submit()\">\r\n <div nz-row>\r\n <div nz-col nzSpan=\"24\" *ngIf=\"!isRoot\">\r\n <nz-form-item>\r\n <nz-form-label nzXs=\"24\" nzSm=\"7\" nzRequired nzFor=\"vkey\">\u7F16\u7801</nz-form-label>\r\n <nz-form-control nzXs=\"24\" nzSm=\"12\" nzMd=\"10\" nzHasFeedback>\r\n <input nz-input formControlName=\"vkey\" required>\r\n <nz-form-explain *ngIf=\"form.get('vkey').dirty && form.get('vkey').errors || form.get('vkey').pending \">\r\n <ng-container *ngIf=\"form.get('vkey').hasError('required')\">\r\n \u8BF7\u8F93\u5165\u7F16\u7801\r\n </ng-container>\r\n <ng-container *ngIf=\"form.get('vkey').hasError('duplicated')\">\r\n \u7F16\u7801\u5DF2\u5B58\u5728\r\n </ng-container>\r\n <ng-container *ngIf=\"form.get('vkey').pending\">\r\n \u6821\u9A8C\u4E2D...\r\n </ng-container>\r\n </nz-form-explain>\r\n </nz-form-control>\r\n </nz-form-item>\r\n </div>\r\n </div>\r\n <div nz-row>\r\n <div nz-col nzSpan=\"24\">\r\n <nz-form-item>\r\n <nz-form-label nzXs=\"24\" nzSm=\"7\" nzRequired nzFor=\"vname\">\u540D\u79F0</nz-form-label>\r\n <nz-form-control nzXs=\"24\" nzSm=\"12\" nzMd=\"10\" nzHasFeedback>\r\n <input nz-input formControlName=\"vname\">\r\n <nz-form-explain *ngIf=\"form.get('vname').dirty && form.get('vname').errors\">\r\n \u8BF7\u8F93\u5165\u540D\u79F0\r\n </nz-form-explain>\r\n </nz-form-control>\r\n </nz-form-item>\r\n </div>\r\n </div>\r\n\r\n <div nz-row>\r\n <div nz-col nzSpan=\"24\">\r\n <nz-form-item>\r\n <nz-form-label nzXs=\"24\" nzSm=\"7\" nzRequired nzFor=\"dictType\">\u5206\u7C7B</nz-form-label>\r\n <nz-form-control nzXs=\"24\" nzSm=\"12\" nzMd=\"10\" nzHasFeedback>\r\n <input *ngIf=\"isRoot\" nz-input formControlName=\"dictType\">\r\n <nz-form-text *ngIf=\"!isRoot\">{{form.get('dictType').value}}</nz-form-text>\r\n <nz-form-explain *ngIf=\"form.get('dictType').dirty && form.get('dictType').errors || form.get('dictType').pending \">\r\n <ng-container *ngIf=\"form.get('dictType').hasError('required')\">\r\n \u8BF7\u8F93\u5165\u7C7B\u578B\r\n </ng-container>\r\n <ng-container *ngIf=\"form.get('dictType').hasError('duplicated')\">\r\n \u6839\u7C7B\u578B\u5DF2\u5B58\u5728\r\n </ng-container>\r\n <ng-container *ngIf=\"form.get('dictType').pending\">\r\n \u6821\u9A8C\u4E2D...\r\n </ng-container>\r\n </nz-form-explain>\r\n </nz-form-control>\r\n </nz-form-item>\r\n </div>\r\n </div>\r\n <div nz-row>\r\n <div nz-col nzSpan=\"24\">\r\n <nz-form-item>\r\n <nz-form-label nzXs=\"24\" nzSm=\"7\" nzRequired nzFor=\"sortNum\">\u6392\u5E8F</nz-form-label>\r\n <nz-form-control nzXs=\"24\" nzSm=\"12\" nzMd=\"10\" nzHasFeedback>\r\n <input nz-input formControlName=\"sortNum\">\r\n <nz-form-explain *ngIf=\"form.get('sortNum').dirty && form.get('sortNum').errors\">\r\n \u8BF7\u8F93\u5165\u6392\u5E8F\r\n </nz-form-explain>\r\n </nz-form-control>\r\n </nz-form-item>\r\n </div>\r\n </div>\r\n\r\n <div nz-row>\r\n <div nz-col nzSpan=\"24\">\r\n <nz-form-item>\r\n <nz-form-label nzXs=\"24\" nzSm=\"7\" nzFor=\"remark\">\u5907\u6CE8</nz-form-label>\r\n <nz-form-control nzXs=\"24\" nzSm=\"12\" nzMd=\"10\" nzHasFeedback>\r\n <input nz-input formControlName=\"remark\">\r\n </nz-form-control>\r\n </nz-form-item>\r\n </div>\r\n </div>\r\n\r\n <div nz-row>\r\n <div nz-col nzSpan=\"24\">\r\n <nz-form-item>\r\n <nz-form-label nzXs=\"24\" nzSm=\"7\" nzRequired nzFor=\"valid\">\u542F\u7528\u72B6\u6001</nz-form-label>\r\n <nz-form-control nzXs=\"24\" nzSm=\"12\" nzMd=\"10\">\r\n <nz-radio-group formControlName=\"valid\">\r\n <label nz-radio *ngFor=\"let state of stateList | async\" [nzValue]=\"state.value\">{{state.label}}</label>\r\n </nz-radio-group>\r\n <nz-form-explain *ngIf=\"form.get('valid').dirty && form.get('valid').errors\">\r\n \u8BF7\u9009\u62E9\u542F\u7528\u72B6\u6001\r\n </nz-form-explain>\r\n </nz-form-control>\r\n </nz-form-item>\r\n </div>\r\n </div>\r\n\r\n <div class=\"modal-footer\">\r\n <button nz-button type=\"button\" (click)=\"close()\">\u5173\u95ED</button>\r\n <button nz-button type=\"submit\" [disabled]=\"!form.valid\" nzType=\"primary\" [nzLoading]=\"dictService.http.loading\">\u4FDD\u5B58</button>\r\n </div>\r\n</form>\r\n" }] } ]; /** @nocollapse */ SystemDictEditComponent.ctorParameters = function () { return [ { type: NzModalRef }, { type: NzMessageService }, { type: FormBuilder }, { type: DictService }, { type: CacheService } ]; }; return SystemDictEditComponent; }()); export { SystemDictEditComponent }; if (false) { /** @type {?} */ SystemDictEditComponent.prototype.record; /** @type {?} */ SystemDictEditComponent.prototype.i; /** @type {?} */ SystemDictEditComponent.prototype.isRoot; /** @type {?} */ SystemDictEditComponent.prototype.form; /** @type {?} */ SystemDictEditComponent.prototype.parent; /** @type {?} */ SystemDictEditComponent.prototype.ableOperate; /** @type {?} */ SystemDictEditComponent.prototype.stateList; /** @type {?} */ SystemDictEditComponent.prototype.codeAsyncValidator; /** @type {?} */ SystemDictEditComponent.prototype.typeAsyncValidator; /** * @type {?} * @private */ SystemDictEditComponent.prototype.modal; /** @type {?} */ SystemDictEditComponent.prototype.msgSrv; /** * @type {?} * @private */ SystemDictEditComponent.prototype.fb; /** @type {?} */ SystemDictEditComponent.prototype.dictService; /** * @type {?} * @private */ SystemDictEditComponent.prototype.cacheService; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZWNpcC9zeXN0ZW0vIiwic291cmNlcyI6WyJzcmMvZGljdC9lZGl0L2VkaXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTdELE9BQU8sRUFBQyxXQUFXLEVBQTRDLFVBQVUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2pHLE9BQU8sRUFBQyxVQUFVLEVBQVcsTUFBTSxZQUFZLENBQUM7QUFHaEQsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBRTFDO0lBY0UsaUNBQ1UsS0FBaUIsRUFDbEIsTUFBd0IsRUFDdkIsRUFBZSxFQUNoQixXQUF3QixFQUN2QixZQUEwQjtRQUxwQyxpQkFNTTtRQUxJLFVBQUssR0FBTCxLQUFLLENBQVk7UUFDbEIsV0FBTSxHQUFOLE1BQU0sQ0FBa0I7UUFDdkIsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUNoQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN2QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQWRwQyxXQUFNLEdBQVEsRUFBRSxDQUFDO1FBTWpCLGNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1FBOEQvRCx1QkFBa0I7Ozs7UUFBRyxVQUFDLE9BQW9CO1lBQ3hDLE9BQUEsVUFBVSxDQUFDLE1BQU07Ozs7WUFBQyxVQUFDLFFBQW9DO2dCQUNyRCxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRTtvQkFDbEIsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDcEIsUUFBUSxDQUFDLFFBQVEs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LFNBQVM7Ozs7UUFBQyxVQUFBLEdBQUc7WUFDakUsS0FBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDNUIsS0FBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDeEIsQ0FBQyxFQUFDLENBQUM7SUFDTCxDQUFDOzs7O0lBRUQsdUNBQUs7OztJQUFMO1FBQ0UsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUN2QixDQUFDOztnQkF6SUYsU0FBUyxTQUFDO29CQUNULFFBQVEsRUFBRSxzQkFBc0I7b0JBQ2hDLHFpS0FBb0M7aUJBQ3JDOzs7O2dCQVpRLFVBQVU7Z0JBQUUsZ0JBQWdCO2dCQUU3QixXQUFXO2dCQUlYLFdBQVc7Z0JBQ1gsWUFBWTs7SUE0SXBCLDhCQUFDO0NBQUEsQUExSUQsSUEwSUM7U0F0SVksdUJBQXVCOzs7SUFDbEMseUNBQWlCOztJQUNqQixvQ0FBTzs7SUFDUCx5Q0FBZ0I7O0lBQ2hCLHVDQUFnQjs7SUFDaEIseUNBQU87O0lBQ1AsOENBQXFCOztJQUNyQiw0Q0FBK0Q7O0lBOEQvRCxxREFnQks7O0lBRUwscURBcUJLOzs7OztJQWpHSCx3Q0FBeUI7O0lBQ3pCLHlDQUErQjs7Ozs7SUFDL0IscUNBQXVCOztJQUN2Qiw4Q0FBK0I7Ozs7O0lBQy9CLCtDQUFrQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTnpNb2RhbFJlZiwgTnpNZXNzYWdlU2VydmljZSB9IGZyb20gJ25nLXpvcnJvLWFudGQnO1xyXG5pbXBvcnQgeyBTRlNjaGVtYSwgU0ZVSVNjaGVtYSB9IGZyb20gJ0BkZWxvbi9mb3JtJztcclxuaW1wb3J0IHtGb3JtQnVpbGRlciwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVmFsaWRhdGlvbkVycm9ycywgVmFsaWRhdG9yc30gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7T2JzZXJ2YWJsZSwgT2JzZXJ2ZXJ9IGZyb20gXCJyeGpzL2luZGV4XCI7XHJcbmltcG9ydCB7dW50aWx9IGZyb20gXCJzZWxlbml1bS13ZWJkcml2ZXJcIjtcclxuaW1wb3J0IGVsZW1lbnRJc0Rpc2FibGVkID0gdW50aWwuZWxlbWVudElzRGlzYWJsZWQ7XHJcbmltcG9ydCB7RGljdFNlcnZpY2V9IGZyb20gXCJAZWNpcC9zZXJ2aWNlXCI7XHJcbmltcG9ydCB7Q2FjaGVTZXJ2aWNlfSBmcm9tIFwiQGRlbG9uL2NhY2hlXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1zeXN0ZW0tZGljdC1lZGl0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZWRpdC5jb21wb25lbnQuaHRtbCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTeXN0ZW1EaWN0RWRpdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgcmVjb3JkOiBhbnkgPSB7fTtcclxuICBpOiBhbnk7XHJcbiAgaXNSb290OiBib29sZWFuO1xyXG4gIGZvcm06IEZvcm1Hcm91cDtcclxuICBwYXJlbnQ7XHJcbiAgYWJsZU9wZXJhdGU6IGJvb2xlYW47XHJcbiAgc3RhdGVMaXN0ID0gdGhpcy5jYWNoZVNlcnZpY2UuZ2V0KGBhcGkvZGljdC90eXBlL2VuYWJsZVN0YXRlYCk7XHJcblxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgbW9kYWw6IE56TW9kYWxSZWYsXHJcbiAgICBwdWJsaWMgbXNnU3J2OiBOek1lc3NhZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXHJcbiAgICBwdWJsaWMgZGljdFNlcnZpY2U6IERpY3RTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjYWNoZVNlcnZpY2U6IENhY2hlU2VydmljZVxyXG4gICAgKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGxldCBwaWQgPSBudWxsO1xyXG4gICAgbGV0IGRpY3RUeXBlID0gJyc7XHJcbiAgICBpZiAoIXRoaXMucmVjb3JkLmlkKSB7XHJcbiAgICAgIGlmICh0aGlzLmlzUm9vdCkge1xyXG4gICAgICAgIHRoaXMuYWJsZU9wZXJhdGUgPSB0cnVlO1xyXG4gICAgICB9ZWxzZSB7XHJcbiAgICAgICAgdGhpcy5hYmxlT3BlcmF0ZSA9IGZhbHNlO1xyXG4gICAgICAgIHBpZCA9IHRoaXMucGFyZW50LmlkO1xyXG4gICAgICAgIGRpY3RUeXBlID0gdGhpcy5wYXJlbnQuZGljdFR5cGU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgcGlkOiBbcGlkLCBbXV0sXHJcbiAgICAgIGRpY3RUeXBlOiBbZGljdFR5cGUsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSwgW3RoaXMudHlwZUFzeW5jVmFsaWRhdG9yXV0sIC8vU3lzdGVtRGljdEVkaXRDb21wb25lbnQudHlwZUFzeW5jVmFsaWRhdG9yKHRoaXMuZGljdFNlcnZpY2UsIHRoaXMucmVjb3JkKVxyXG4gICAgICB2a2V5OiBbJycsIFtdLCBbdGhpcy5jb2RlQXN5bmNWYWxpZGF0b3JdXSwgLy9TeXN0ZW1EaWN0RWRpdENvbXBvbmVudC5jb2RlQXN5bmNWYWxpZGF0b3IodGhpcy5kaWN0U2VydmljZSwgdGhpcy5yZWNvcmQsIHRoaXMucGFyZW50KVxyXG4gICAgICB2bmFtZTogW251bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXHJcbiAgICAgIHJlbWFyazogW251bGwsIFtdXSxcclxuICAgICAgc29ydE51bTogWzAsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXHJcbiAgICAgIHJzdm46IFtudWxsLCBbXV0sXHJcbiAgICAgIHZhbGlkOiBbMSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcclxuICAgICAgY3JlYXRlVGltZTogW251bGwsIFtdXSxcclxuICAgICAgdXBkYXRlVGltZTogW251bGwsIFtdXSxcclxuICAgICAgY3JlYXRvcjogW251bGwsIFtdXSxcclxuICAgICAgb3BlcmF0b3I6IFtudWxsLCBbXV0sXHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAoIXRoaXMucmVjb3JkLmlkKSB7XHJcbiAgICAgIHJldHVybiA7XHJcbiAgICB9XHJcblxyXG4gICAgaWYodGhpcy5pc1Jvb3Qpe1xyXG4gICAgICBsZXQgdmtleUN0bCA9IHRoaXMuZm9ybS5nZXQoXCJ2a2V5XCIpO1xyXG4gICAgICB2a2V5Q3RsLmNsZWFyQXN5bmNWYWxpZGF0b3JzKCk7XHJcbiAgICAgIHZrZXlDdGwudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICB0aGlzLmRpY3RTZXJ2aWNlLmdldEJ5SWQodGhpcy5yZWNvcmQuaWQpLnN1YnNjcmliZShcclxuICAgICAgKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5pc1Jvb3QgPSAhcmVzLnBpZDtcclxuICAgICAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZShyZXMpO1xyXG4gICAgICAgIHRoaXMuaSA9IHJlcztcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBjb21wYXJlTnVtU3RyKGMxOiBhbnksIGMyOiBhbnkpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBjMSA9PSBjMjtcclxuICB9XHJcblxyXG4gIGNvZGVBc3luY1ZhbGlkYXRvciA9IChjb250cm9sOiBGb3JtQ29udHJvbCkgPT5cclxuICAgIE9ic2VydmFibGUuY3JlYXRlKChvYnNlcnZlcjogT2JzZXJ2ZXI8VmFsaWRhdGlvbkVycm9ycz4pID0+IHtcclxuICAgICAgaWYgKCFjb250cm9sLnZhbHVlKSB7XHJcbiAgICAgICAgb2JzZXJ2ZXIubmV4dChudWxsKTtcclxuICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBsZXQgcGFyZW50SWQgPSB0aGlzLnBhcmVudCA/IHRoaXMucGFyZW50LmlkIDogbnVsbDtcclxuICAgICAgdGhpcy5kaWN0U2VydmljZS5jaGVja1ZrZXkoe2lkOiB0aGlzLnJlY29yZC5pZCwgcGlkOiBwYXJlbnRJZCwgdmtleTogY29udHJvbC52YWx1ZX0pLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzLnZhbGlkID09PSB0cnVlKSB7XHJcbiAgICAgICAgICBvYnNlcnZlci5uZXh0KG51bGwpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBvYnNlcnZlci5uZXh0KHtlcnJvcjogdHJ1ZSwgZHVwbGljYXRlZDogdHJ1ZX0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG5cclxuICB0eXBlQXN5bmNWYWxpZGF0b3IgPSAoY29udHJvbDogRm9ybUNvbnRyb2wpID0+XHJcbiAgICBPYnNlcnZhYmxlLmNyZWF0ZSgob2JzZXJ2ZXI6IE9ic2VydmVyPFZhbGlkYXRpb25FcnJvcnM+KSA9PiB7XHJcbiAgICAgIGlmICghY29udHJvbC52YWx1ZSkge1xyXG4gICAgICAgIG9ic2VydmVyLm5leHQobnVsbCk7XHJcbiAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuaXNSb290KXtcclxuICAgICAgICB0aGlzLmRpY3RTZXJ2aWNlLmNoZWNrRGljdFR5cGUoe2lkOiB0aGlzLnJlY29yZC5pZCwgZGljdFR5cGU6IGNvbnRyb2wudmFsdWV9KS5zdWJzY3JpYmUoKHJlczphbnkpPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcy52YWxpZCA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICBvYnNlcnZlci5uZXh0KG51bGwpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dCh7IGVycm9yOiB0cnVlLCBkdXBsaWNhdGVkOiB0cnVlIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBvYnNlcnZlci5uZXh0KG51bGwpO1xyXG4gICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICBzdWJtaXQoKSB7XHJcbiAgICBmb3IgKGNvbnN0IGkgaW4gdGhpcy5mb3JtLmNvbnRyb2xzKSB7XHJcbiAgICAgIHRoaXMuZm9ybS5jb250cm9sc1tpXS5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHNbaV0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZm9ybS5pbnZhbGlkKSByZXR1cm47XHJcbiAgICBpZiAoIXRoaXMucmVjb3JkLmlkKSB7XHJcbiAgICAgIC8v5paw5aKeXHJcbiAgICAgIHRoaXMuZGljdFNlcnZpY2UucG9zdCh0aGlzLmZvcm0udmFsdWUpLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICAgIHRoaXMubXNnU3J2LnN1Y2Nlc3MoJ+S/neWtmOaIkOWKnycpO1xyXG4gICAgICAgIHRoaXMubW9kYWwuY2xvc2UocmVzKTtcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIC8v5L+u5pS5XHJcbiAgICB0aGlzLmRpY3RTZXJ2aWNlLnB1dCh0aGlzLnJlY29yZC5pZCwgdGhpcy5mb3JtLnZhbHVlKS5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgdGhpcy5tc2dTcnYuc3VjY2Vzcygn5L+d5a2Y5oiQ5YqfJyk7XHJcbiAgICAgIHRoaXMubW9kYWwuY2xvc2UocmVzKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgY2xvc2UoKSB7XHJcbiAgICB0aGlzLm1vZGFsLmRlc3Ryb3koKTtcclxuICB9XHJcbn1cclxuIl19