/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc */ import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core'; import { Request } from '../_services/request.service'; import { Common } from '../_services/common.service'; import { HttpClient, HttpEventType, HttpHeaders, HttpRequest, HttpResponse } from '@angular/common/http'; import { Observable } from 'rxjs'; import { ModalDirective } from 'ngx-bootstrap'; import { AppConfigService } from '../app-config/app-config.service'; import * as _ from 'lodash'; export class ModalImageUploadComponent { /** * @param {?} appConfigService * @param {?} request * @param {?} common * @param {?} http */ constructor(appConfigService, request, common, http) { this.appConfigService = appConfigService; this.request = request; this.common = common; this.http = http; this.upLoadType = [{ title: "File", type: 1 }, { title: "Scan", type: 2 }, { title: "Link", type: 3 }, { title: "QR Code", type: 3 }]; this.systemId = '0'; this.RelatedAgency = 'SOC'; this.RecordId = '0'; this.Subject = '-'; this.TypeId = '0'; this.popupTitle = 'เลือกรูปประจำตัว'; this.uploaded = new EventEmitter(); this.onSubmit = new EventEmitter(); // @ViewChild('myModal') myModal; this.fileList = []; this.uploadHeaders = { "Authorization": "Basic " + btoa("APPSOC:123456") }; this.loading = false; this.beforeUpload = (file, _fileList) => { return new Observable((observer) => { /** @type {?} */ let whitelist = [ 'application/pdf', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'application/vnd.ms-excel', 'application/vnd.msexcel', 'application/csv', 'text/csv', 'application/msword', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'application/vnd.ms-powerpoint', 'application/vnd.openxmlformats-officedocument.presentationml.slideshow', 'application/vnd.openxmlformats-officedocument.presentationml.presentation', 'text/plain', 'text/comma-separated-values', 'text/anytext', 'image/png', 'image/jpeg', 'image/gif', 'image/bmp' ]; /** @type {?} */ const isWhitelist = (file && whitelist.indexOf(file.type) > -1); if (!isWhitelist) { setTimeout(() => { this.fileList = [{ uid: '999', name: 'สามารถอัพโหลดได้เฉพาะไฟล์ pdf , png , jpeg ,gif , text , word , excel , powerpoint', status: 'error', response: 'สามารถอัพโหลดได้เฉพาะไฟล์ pdf , png , jpeg ,gif , text , word , excel , powerpoint', url: null }]; }, 50); observer.complete(); return; } /** @type {?} */ const isLt30M = /** @type {?} */ ((file.size)) / 1024 / 1024 < 30; if (!isLt30M) { this.fileList = [{ uid: '999', name: 'File must smaller than 30MB!', status: 'error', response: 'File must smaller than 30MB!', url: null }]; observer.complete(); return; } observer.next(isWhitelist && isLt30M); observer.complete(); }); }; this.customReq = (item) => { /** @type {?} */ const formData = new FormData(); // tslint:disable-next-line:no-any formData.append('FileData', /** @type {?} */ (item.file)); formData.append('SystemId', '' + this.systemId); formData.append('RelatedAgency', this.RelatedAgency); formData.append('RecordId', this.RecordId); formData.append('Subject', this.Subject); formData.append('TypeId', this.TypeId); /** @type {?} */ let headers = new HttpHeaders(); headers = headers.set('Authorization', 'Basic ' + btoa('APPSOC:123456')); /** @type {?} */ let req = new HttpRequest('POST', item.action, formData, { reportProgress: true, headers: headers }); // req.headers.set('Authorization', 'Basic ' + btoa('APPSOC:123456')); return this.http.request(req).subscribe((event) => { if (event.type === HttpEventType.UploadProgress) { if (event.total > 0) { (/** @type {?} */ (event)).percent = event.loaded / event.total * 100; } item.onProgress(event, item.file); } else if (event instanceof HttpResponse) { // console.log("event.body",event.body); // let res = JSON.parse(event.body); if (this.fileList && this.fileList.length > 1) { this.fileList = [this.fileList[this.fileList.length - 1]]; } this.uploaded.emit(event.body); this.data = event.body; item.onSuccess(event.body, item.file, event); } }, (err) => { item.onError(err, item.file); }); }; this.config = appConfigService.getConfig(); this.url = _.get(this.config, 'apiServers.alfresco.url') || "https://203.154.32.126:2585/api/mfec/Alfresco"; } /** * @return {?} */ ngOnInit() { } /** * @param {?} file * @return {?} */ onUploaded(file) { console.log("file", file); /** @type {?} */ let res = JSON.parse(file.request.response); this.request.getAttachmentLinkToken(this.url + '/' + res.uuid).then(url => { this.avatarUrl = url; }); this.uploaded.emit(res); } /** * @return {?} */ clearValue() { this.fileList = []; } /** * @return {?} */ closeModal() { this.modal.hide(); this.data = null; this.fileList = []; } /** * @return {?} */ clickSubmit() { this.onSubmit.emit(this.data); this.modal.hide(); this.data = null; this.fileList = []; } } ModalImageUploadComponent.decorators = [ { type: Component, args: [{ selector: 'modal-image-upload', template: "
\n
\n
\n
\n

{{popupTitle}}

\n \n
\n\n
\n
\n
\n
\n
\n \n \n \n \n \n Click to Upload\n \n \n
\n
\n
\n
\n \"\"\n
\n
\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n
\n
\n", styles: [` :host ::ng-deep .avatar-uploader > .ant-upload, :host ::ng-deep .avatar { width: 128px; height: 128px; } :host ::ng-deep .ant-upload-select-picture-card i { font-size: 32px; color: #999; } :host ::ng-deep .ant-upload-select-picture-card .ant-upload-text { margin-top: 8px; color: #666; } `] }] } ]; /** @nocollapse */ ModalImageUploadComponent.ctorParameters = () => [ { type: AppConfigService }, { type: Request }, { type: Common }, { type: HttpClient } ]; ModalImageUploadComponent.propDecorators = { modal: [{ type: ViewChild, args: ['modal',] }], upLoadType: [{ type: Input }], systemId: [{ type: Input }], RelatedAgency: [{ type: Input }], RecordId: [{ type: Input }], Subject: [{ type: Input }], TypeId: [{ type: Input }], downloadToken: [{ type: Input }], popupTitle: [{ type: Input }], uploaded: [{ type: Output }], onSubmit: [{ type: Output }] }; if (false) { /** @type {?} */ ModalImageUploadComponent.prototype.modal; /** @type {?} */ ModalImageUploadComponent.prototype.upLoadType; /** @type {?} */ ModalImageUploadComponent.prototype.systemId; /** @type {?} */ ModalImageUploadComponent.prototype.RelatedAgency; /** @type {?} */ ModalImageUploadComponent.prototype.RecordId; /** @type {?} */ ModalImageUploadComponent.prototype.Subject; /** @type {?} */ ModalImageUploadComponent.prototype.TypeId; /** @type {?} */ ModalImageUploadComponent.prototype.downloadToken; /** @type {?} */ ModalImageUploadComponent.prototype.popupTitle; /** @type {?} */ ModalImageUploadComponent.prototype.uploaded; /** @type {?} */ ModalImageUploadComponent.prototype.onSubmit; /** @type {?} */ ModalImageUploadComponent.prototype.fileList; /** @type {?} */ ModalImageUploadComponent.prototype.uploadHeaders; /** @type {?} */ ModalImageUploadComponent.prototype.loading; /** @type {?} */ ModalImageUploadComponent.prototype.avatarUrl; /** @type {?} */ ModalImageUploadComponent.prototype.data; /** @type {?} */ ModalImageUploadComponent.prototype.config; /** @type {?} */ ModalImageUploadComponent.prototype.url; /** @type {?} */ ModalImageUploadComponent.prototype.beforeUpload; /** @type {?} */ ModalImageUploadComponent.prototype.customReq; /** @type {?} */ ModalImageUploadComponent.prototype.appConfigService; /** @type {?} */ ModalImageUploadComponent.prototype.request; /** @type {?} */ ModalImageUploadComponent.prototype.common; /** @type {?} */ ModalImageUploadComponent.prototype.http; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtaW1hZ2UtdXBsb2FkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL3NvYy1hcHAtbGlicmFyeS8iLCJzb3VyY2VzIjpbImxpYi9tb2RhbC1pbWFnZS11cGxvYWQvbW9kYWwtaW1hZ2UtdXBsb2FkLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ25HLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN2RCxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFFbkQsT0FBTyxFQUFDLFVBQVUsRUFBYSxhQUFhLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUVsSCxPQUFPLEVBQUUsVUFBVSxFQUF1QixNQUFNLE1BQU0sQ0FBQztBQUV2RCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzdDLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBQ2xFLE9BQU8sS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBdUI1QixNQUFNOzs7Ozs7O0lBdUJGLFlBQW9CLGdCQUFrQyxFQUFTLE9BQWdCLEVBQVMsTUFBYyxFQUFVLElBQWdCO1FBQTVHLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFBUyxZQUFPLEdBQVAsT0FBTyxDQUFTO1FBQVMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFVLFNBQUksR0FBSixJQUFJLENBQVk7MEJBcEJyRyxDQUFDLEVBQUMsS0FBSyxFQUFDLE1BQU0sRUFBQyxJQUFJLEVBQUMsQ0FBQyxFQUFDLEVBQUMsRUFBQyxLQUFLLEVBQUMsTUFBTSxFQUFDLElBQUksRUFBQyxDQUFDLEVBQUMsRUFBQyxFQUFDLEtBQUss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RUFBRSxDQUFDOzs7OztJQUd2QixVQUFVO1FBQ04sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztLQUN0Qjs7OztJQUVELFdBQVc7UUFDUCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztLQUN0Qjs7O1lBMUtKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsb0JBQW9CO2dCQUM5QixzNUZBQWtEO3lCQUU5Qzs7Ozs7Ozs7Ozs7OztHQWFMO2FBRUY7Ozs7WUF2Qk8sZ0JBQWdCO1lBUmYsT0FBTztZQUNSLE1BQU07WUFFTixVQUFVOzs7b0JBK0JiLFNBQVMsU0FBQyxPQUFPO3lCQUNqQixLQUFLO3VCQUNMLEtBQUs7NEJBQ0wsS0FBSzt1QkFDTCxLQUFLO3NCQUNMLEtBQUs7cUJBQ0wsS0FBSzs0QkFDTCxLQUFLO3lCQUNMLEtBQUs7dUJBQ0wsTUFBTTt1QkFDTixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZXF1ZXN0IH0gZnJvbSAnLi4vX3NlcnZpY2VzL3JlcXVlc3Quc2VydmljZSc7XG5pbXBvcnQge0NvbW1vbn0gZnJvbSAnLi4vX3NlcnZpY2VzL2NvbW1vbi5zZXJ2aWNlJztcbmltcG9ydCB7VXBsb2FkWEhSQXJnc30gZnJvbSAnbmctem9ycm8tYW50ZCc7XG5pbXBvcnQge0h0dHBDbGllbnQsIEh0dHBFdmVudCwgSHR0cEV2ZW50VHlwZSwgSHR0cEhlYWRlcnMsIEh0dHBSZXF1ZXN0LCBIdHRwUmVzcG9uc2V9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE56TWVzc2FnZVNlcnZpY2UsIH0gZnJvbSAnbmctem9ycm8tYW50ZCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBPYnNlcnZlcix0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSAncnhqcy9SeCc7XG5pbXBvcnQge01vZGFsRGlyZWN0aXZlfSBmcm9tICduZ3gtYm9vdHN0cmFwJztcbmltcG9ydCB7QXBwQ29uZmlnU2VydmljZX0gZnJvbSAnLi4vYXBwLWNvbmZpZy9hcHAtY29uZmlnLnNlcnZpY2UnO1xuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xuLy8gaW1wb3J0IHsgTnpNZXNzYWdlU2VydmljZSB9IGZyb20gJ25nLXpvcnJvLWFudGQvbWVzc2FnZSc7XG4vLyBpbXBvcnQgeyBVcGxvYWRGaWxlIH0gZnJvbSAnbmctem9ycm8tYW50ZC91cGxvYWQnO1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdtb2RhbC1pbWFnZS11cGxvYWQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9tb2RhbC1pbWFnZS11cGxvYWQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlczogW1xuICAgICAgICBgXG4gICAgOmhvc3QgOjpuZy1kZWVwIC5hdmF0YXItdXBsb2FkZXIgPiAuYW50LXVwbG9hZCwgOmhvc3QgOjpuZy1kZWVwIC5hdmF0YXIge1xuICAgICAgd2lkdGg6IDEyOHB4O1xuICAgICAgaGVpZ2h0OiAxMjhweDtcbiAgICB9XG4gICAgOmhvc3QgOjpuZy1kZWVwIC5hbnQtdXBsb2FkLXNlbGVjdC1waWN0dXJlLWNhcmQgaSB7XG4gICAgICBmb250LXNpemU6IDMycHg7XG4gICAgICBjb2xvcjogIzk5OTtcbiAgICB9XG4gICAgOmhvc3QgOjpuZy1kZWVwIC5hbnQtdXBsb2FkLXNlbGVjdC1waWN0dXJlLWNhcmQgLmFudC11cGxvYWQtdGV4dCB7XG4gICAgICBtYXJnaW4tdG9wOiA4cHg7XG4gICAgICBjb2xvcjogIzY2NjtcbiAgICB9XG4gIGBcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIE1vZGFsSW1hZ2VVcGxvYWRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gICAgQFZpZXdDaGlsZCgnbW9kYWwnKSBtb2RhbDogTW9kYWxEaXJlY3RpdmU7XG4gICAgQElucHV0KCkgdXBMb2FkVHlwZTogYW55ID0gW3t0aXRsZTpcIkZpbGVcIix0eXBlOjF9LHt0aXRsZTpcIlNjYW5cIix0eXBlOjJ9LHt0aXRsZTpcIkxpbmtcIix0eXBlOjN9LHt0aXRsZTpcIlFSIENvZGVcIix0eXBlOjN9XTtcbiAgICBASW5wdXQoKSBzeXN0ZW1JZDogYW55ID0gJzAnO1xuICAgIEBJbnB1dCgpIFJlbGF0ZWRBZ2VuY3k6IGFueSA9ICdTT0MnO1xuICAgIEBJbnB1dCgpIFJlY29yZElkOiBhbnkgPSAnMCc7XG4gICAgQElucHV0KCkgU3ViamVjdDogYW55ID0gJy0nO1xuICAgIEBJbnB1dCgpIFR5cGVJZDogYW55ID0gJzAnO1xuICAgIEBJbnB1dCgpIGRvd25sb2FkVG9rZW46IGFueSA7XG4gICAgQElucHV0KCkgcG9wdXBUaXRsZSA9ICfguYDguKXguLfguK3guIHguKPguLnguJvguJvguKPguLDguIjguLPguJXguLHguKcnIDtcbiAgICBAT3V0cHV0KCkgdXBsb2FkZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpIG9uU3VibWl0ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIC8vIEBWaWV3Q2hpbGQoJ215TW9kYWwnKSBteU1vZGFsO1xuICAgIGZpbGVMaXN0OmFueSA9IFtdO1xuICAgIHVwbG9hZEhlYWRlcnM6YW55ID0ge1xuICAgICAgICBcIkF1dGhvcml6YXRpb25cIjogXCJCYXNpYyBcIitidG9hKFwiQVBQU09DOjEyMzQ1NlwiKVxuICAgIH07XG4gICAgbG9hZGluZyA9IGZhbHNlO1xuICAgIGF2YXRhclVybDogc3RyaW5nO1xuICAgIGRhdGE7XG4gICAgY29uZmlnO1xuICAgIHVybDtcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGFwcENvbmZpZ1NlcnZpY2U6IEFwcENvbmZpZ1NlcnZpY2UscHJpdmF0ZSByZXF1ZXN0OiBSZXF1ZXN0LCBwdWJsaWMgY29tbW9uOiBDb21tb24sIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCkge1xuICAgICAgICB0aGlzLmNvbmZpZyA9IGFwcENvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKCk7XG4gICAgICAgIHRoaXMudXJsID0gXy5nZXQodGhpcy5jb25maWcsICdhcGlTZXJ2ZXJzLmFsZnJlc2NvLnVybCcpIHx8IFwiaHR0cHM6Ly8yMDMuMTU0LjMyLjEyNjoyNTg1L2FwaS9tZmVjL0FsZnJlc2NvXCI7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG5cbiAgICB9XG4gICAgb25VcGxvYWRlZChmaWxlKXtcbiAgICAgICAgY29uc29sZS5sb2coXCJmaWxlXCIsZmlsZSk7XG4gICAgICAgIGxldCByZXMgPSBKU09OLnBhcnNlKGZpbGUucmVxdWVzdC5yZXNwb25zZSk7XG4gICAgICAgIHRoaXMucmVxdWVzdC5nZXRBdHRhY2htZW50TGlua1Rva2VuKHRoaXMudXJsKycvJytyZXMudXVpZCkudGhlbih1cmwgPT4ge1xuICAgICAgICAgICAgdGhpcy5hdmF0YXJVcmwgPSB1cmw7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnVwbG9hZGVkLmVtaXQocmVzKTtcbiAgICB9XG5cbiAgICBiZWZvcmVVcGxvYWQgPSAoZmlsZTogYW55LCBfZmlsZUxpc3Q6IGFueSkgPT4gIHtcbiAgICAgICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKChvYnNlcnZlcjogYW55KSA9PiB7XG4gICAgICAgICAgbGV0IHdoaXRlbGlzdCA9IFtcbiAgICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3BkZicsXG4gICAgICAgICAgICAgICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldCcsXG4gICAgICAgICAgICAgICdhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwnLFxuICAgICAgICAgICAgICAnYXBwbGljYXRpb24vdm5kLm1zZXhjZWwnLFxuICAgICAgICAgICAgICAnYXBwbGljYXRpb24vY3N2JyxcbiAgICAgICAgICAgICAgJ3RleHQvY3N2JyxcbiAgICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL21zd29yZCcsXG4gICAgICAgICAgICAgICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5kb2N1bWVudCcsXG4gICAgICAgICAgICAgICdhcHBsaWNhdGlvbi92bmQubXMtcG93ZXJwb2ludCcsXG4gICAgICAgICAgICAgICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwuc2xpZGVzaG93JyxcbiAgICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC5wcmVzZW50YXRpb24nLFxuICAgICAgICAgICAgICAndGV4dC9wbGFpbicsXG4gICAgICAgICAgICAgICd0ZXh0L2NvbW1hLXNlcGFyYXRlZC12YWx1ZXMnLFxuICAgICAgICAgICAgICAndGV4dC9hbnl0ZXh0JyxcbiAgICAgICAgICAgICAgJ2ltYWdlL3BuZycsXG4gICAgICAgICAgICAgICdpbWFnZS9qcGVnJyxcbiAgICAgICAgICAgICAgJ2ltYWdlL2dpZicsXG4gICAgICAgICAgICAgICdpbWFnZS9ibXAnXG5cbiAgICAgICAgICAgIF07XG4gICAgICAgICAgY29uc3QgaXNXaGl0ZWxpc3QgPSAoZmlsZSAmJiB3aGl0ZWxpc3QuaW5kZXhPZihmaWxlLnR5cGUpID4gLTEpXG4gICAgICAgICAgaWYoIWlzV2hpdGVsaXN0KXtcbiAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5maWxlTGlzdCA9IFsge1xuICAgICAgICAgICAgICAgICAgICAgIHVpZDogJzk5OScsXG4gICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ+C4quC4suC4oeC4suC4o+C4luC4reC4seC4nuC5guC4q+C4peC4lOC5hOC4lOC5ieC5gOC4ieC4nuC4suC4sOC5hOC4n+C4peC5jCAgcGRmICwgcG5nICAsIGpwZWcgICxnaWYgLCB0ZXh0ICwgd29yZCAsIGV4Y2VsICwgcG93ZXJwb2ludCcsXG4gICAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiAnZXJyb3InLFxuICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlOiAn4Liq4Liy4Lih4Liy4Lij4LiW4Lit4Lix4Lie4LmC4Lir4Lil4LiU4LmE4LiU4LmJ4LmA4LiJ4Lie4Liy4Liw4LmE4Lif4Lil4LmMICBwZGYgLCBwbmcgICwganBlZyAgLGdpZiAsIHRleHQgLCB3b3JkICwgZXhjZWwgLCBwb3dlcnBvaW50JyxcbiAgICAgICAgICAgICAgICAgICAgICB1cmw6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgfV1cbiAgICAgICAgICAgICAgfSwgNTApO1xuICAgICAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgaXNMdDMwTSA9IGZpbGUuc2l6ZSEgLyAxMDI0IC8gMTAyNCA8IDMwO1xuICAgICAgICAgIGlmICghaXNMdDMwTSkge1xuICAgICAgICAgICAgdGhpcy5maWxlTGlzdCA9IFsge1xuICAgICAgICAgICAgICAgICAgdWlkOiAnOTk5JyxcbiAgICAgICAgICAgICAgICAgIG5hbWU6ICdGaWxlIG11c3Qgc21hbGxlciB0aGFuIDMwTUIhJyxcbiAgICAgICAgICAgICAgICAgIHN0YXR1czogJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICAgIHJlc3BvbnNlOiAnRmlsZSBtdXN0IHNtYWxsZXIgdGhhbiAzME1CIScsXG4gICAgICAgICAgICAgICAgICB1cmw6IG51bGxcbiAgICAgICAgICAgICAgICB9XVxuICAgICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBvYnNlcnZlci5uZXh0KGlzV2hpdGVsaXN0ICYmIGlzTHQzME0pO1xuICAgICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgICAgIH0pO1xuICAgICAgfTtcblxuXG4gICAgY3VzdG9tUmVxID0gKGl0ZW06IFVwbG9hZFhIUkFyZ3MpID0+IHtcbiAgICAgICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWFueVxuICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ0ZpbGVEYXRhJywgaXRlbS5maWxlIGFzIGFueSk7XG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZCgnU3lzdGVtSWQnLCAnJyt0aGlzLnN5c3RlbUlkKTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdSZWxhdGVkQWdlbmN5JywgdGhpcy5SZWxhdGVkQWdlbmN5KTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdSZWNvcmRJZCcsIHRoaXMuUmVjb3JkSWQpO1xuICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ1N1YmplY3QnLCB0aGlzLlN1YmplY3QpO1xuICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ1R5cGVJZCcsIHRoaXMuVHlwZUlkKTtcbiAgICAgICAgbGV0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKTtcbiAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCdBdXRob3JpemF0aW9uJywgJ0Jhc2ljICcgKyBidG9hKCdBUFBTT0M6MTIzNDU2JykpO1xuICAgICAgICBsZXQgcmVxID0gbmV3IEh0dHBSZXF1ZXN0KCdQT1NUJywgaXRlbS5hY3Rpb24sIGZvcm1EYXRhLCB7XG4gICAgICAgICAgICByZXBvcnRQcm9ncmVzcyA6IHRydWUsXG4gICAgICAgICAgICBoZWFkZXJzOiBoZWFkZXJzXG4gICAgICAgIH0pO1xuICAgICAgICAvLyByZXEuaGVhZGVycy5zZXQoJ0F1dGhvcml6YXRpb24nLCAnQmFzaWMgJyArIGJ0b2EoJ0FQUFNPQzoxMjM0NTYnKSk7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucmVxdWVzdChyZXEpLnN1YnNjcmliZShcbiAgICAgICAgICAgIChldmVudDogSHR0cEV2ZW50PHt9PikgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChldmVudC50eXBlID09PSBIdHRwRXZlbnRUeXBlLlVwbG9hZFByb2dyZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChldmVudC50b3RhbCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIChldmVudCBhcyBhbnkpLnBlcmNlbnQgPSBldmVudC5sb2FkZWQgLyBldmVudC50b3RhbCAqIDEwMDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpdGVtLm9uUHJvZ3Jlc3MoZXZlbnQsIGl0ZW0uZmlsZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudCBpbnN0YW5jZW9mIEh0dHBSZXNwb25zZSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcImV2ZW50LmJvZHlcIixldmVudC5ib2R5KTtcbiAgICAgICAgICAgICAgICAgICAgLy8gbGV0IHJlcyA9IEpTT04ucGFyc2UoZXZlbnQuYm9keSk7XG4gICAgICAgICAgICAgICAgICAgIGlmKHRoaXMuZmlsZUxpc3QgJiYgdGhpcy5maWxlTGlzdC5sZW5ndGggPiAxKXtcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbGVMaXN0ID0gW3RoaXMuZmlsZUxpc3RbdGhpcy5maWxlTGlzdC5sZW5ndGgtMV1dXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGxvYWRlZC5lbWl0KGV2ZW50LmJvZHkpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGEgPSBldmVudC5ib2R5O1xuICAgICAgICAgICAgICAgICAgICBpdGVtLm9uU3VjY2VzcyhldmVudC5ib2R5LCBpdGVtLmZpbGUsIGV2ZW50KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCAoZXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgaXRlbS5vbkVycm9yKGVyciwgaXRlbS5maWxlKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBjbGVhclZhbHVlKCl7XG4gICAgICAgIHRoaXMuZmlsZUxpc3QgPSBbXTtcbiAgICB9XG5cbiAgICBjbG9zZU1vZGFsKCkge1xuICAgICAgICB0aGlzLm1vZGFsLmhpZGUoKTtcbiAgICAgICAgdGhpcy5kYXRhID0gbnVsbDtcbiAgICAgICAgdGhpcy5maWxlTGlzdCA9IFtdO1xuICAgIH1cblxuICAgIGNsaWNrU3VibWl0KCl7XG4gICAgICAgIHRoaXMub25TdWJtaXQuZW1pdCh0aGlzLmRhdGEpO1xuICAgICAgICB0aGlzLm1vZGFsLmhpZGUoKTtcbiAgICAgICAgdGhpcy5kYXRhID0gbnVsbDtcbiAgICAgICAgdGhpcy5maWxlTGlzdCA9IFtdO1xuICAgIH1cblxufVxuIl19