UNPKG

kwikid-components

Version:
159 lines 26.6 kB
import { __decorate } from "tslib"; import { Component, Inject, Input, ViewChild, EventEmitter, Output } from "@angular/core"; import { logMethod } from "kwikid-toolkit"; import { TuiPreviewDialogService } from "@taiga-ui/addon-preview"; import { TuiDialogService } from "@taiga-ui/core"; import { DEFAULT_CONFIG__WAITING_PAGE } from "./waiting.config"; import * as i0 from "@angular/core"; import * as i1 from "../../components/page-header/page-header.component"; import * as i2 from "kwikid-camera"; import * as i3 from "kwikui"; import * as i4 from "../../components/page-footer/page-footer.component"; import * as i5 from "@angular/common"; import * as i6 from "@taiga-ui/addon-preview"; import * as i7 from "@taiga-ui/core"; const MS_PER_SECOND = 1000; export class KwikIDWaitingPageComponent { constructor(hostElement, cdr, previewDialogService, dialogService) { this.hostElement = hostElement; this.cdr = cdr; this.previewDialogService = previewDialogService; this.dialogService = dialogService; this.config = DEFAULT_CONFIG__WAITING_PAGE; this.onClickButton = new EventEmitter(); } ngOnInit() { var _a, _b; this.config = Object.assign(Object.assign({}, DEFAULT_CONFIG__WAITING_PAGE), this.config); if (this.currentWaitingTime === undefined) { this.currentWaitingTime = ((_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.waitingTime) === null || _b === void 0 ? void 0 : _b.maxWaitingTime) || 0; } if (this.currentQueuePosition === undefined) { this.currentQueuePosition = 0; } this.showPopupAfterDelay(); } ngOnChanges(changes) { if (changes.config && !changes.config.firstChange) { this.config = Object.assign(Object.assign({}, DEFAULT_CONFIG__WAITING_PAGE), changes.config.currentValue); } if (changes.currentWaitingTime && !changes.currentWaitingTime.firstChange) { this.currentWaitingTime = changes.currentWaitingTime.currentValue; } if (changes.currentQueuePosition && !changes.currentQueuePosition.firstChange) { this.currentQueuePosition = changes.currentQueuePosition.currentValue; } } ngOnDestroy() { if (this.popupTimer) { clearTimeout(this.popupTimer); this.popupTimer = null; } } handleOnActionShowPopupForm(e, content) { var _a; console.log("e", content); const popupType = (_a = e === null || e === void 0 ? void 0 : e.popupType) !== null && _a !== void 0 ? _a : "DIALOG"; switch (popupType) { case "DIALOG": this.previewDialogRef = this.dialogService .open(content, { closeable: false, dismissible: true, size: "s", required: false }) .subscribe({ next: () => { console.info("Dialog closed"); this.previewDialogRef.complete(); }, complete: () => { console.info("Dialog closed"); } }); break; } } showPopupAfterDelay() { var _a; if (!((_a = this.config) === null || _a === void 0 ? void 0 : _a.preview)) { return; } if (this.popupTimer) { clearTimeout(this.popupTimer); } this.popupTimer = setTimeout(() => { var _a, _b; const event = { popupType: (_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.preview) === null || _b === void 0 ? void 0 : _b.type }; // this.handleOnActionShowPopupForm(event, this.preview); }, this.maxWaitingTime * MS_PER_SECOND); } handleOnClickButton(key) { switch (key) { case "WAIT": this.closePreviewDialog(); this.onClickButton.emit(key); break; case "RESCHEDULE": this.onClickButton.emit(key); break; default: this.onClickButton.emit(key); break; } } closePreviewDialog() { if (this.previewDialogRef) { try { this.previewDialogRef.unsubscribe(); this.previewDialogRef = null; } catch (error) { console.error("Error closing dialog:", error); } } } } /** @nocollapse */ KwikIDWaitingPageComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: KwikIDWaitingPageComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: TuiPreviewDialogService }, { token: TuiDialogService }], target: i0.ɵɵFactoryTarget.Component }); /** @nocollapse */ KwikIDWaitingPageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: KwikIDWaitingPageComponent, selector: "kwikid-components-page-waiting", inputs: { config: "config", currentWaitingTime: "currentWaitingTime", currentQueuePosition: "currentQueuePosition", maxWaitingTime: "maxWaitingTime" }, outputs: { onClickButton: "onClickButton" }, viewQueries: [{ propertyName: "preview", first: true, predicate: ["preview"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"container\">\n <kwikid-components-page-header\n *ngIf=\"config?.headerConfig\"\n [config]=\"config.headerConfig\"\n >\n </kwikid-components-page-header>\n\n <main>\n <div\n *ngIf=\"config?.html?.before\"\n [innerHtml]=\"config?.html?.before | kwikuiSafeHtml\"\n >\n </div>\n\n <div id=\"waiting-camera-view-container\">\n <kwikid-camera\n [type]=\"'VIEW'\"\n [config]=\"config?.cameraConfig\"\n >\n </kwikid-camera>\n </div>\n\n <div\n *ngIf=\"config?.html?.middle\"\n [innerHtml]=\"config?.html?.middle | kwikuiSafeHtml\"\n >\n </div>\n\n <div id=\"waiting-time-progress-container\">\n <kwikui-progress-bar\n id=\"waiting-time-progress-bar\"\n [color]=\"'var(--kwikui-color-primary-hover)'\"\n [max]=\"maxWaitingTime\"\n [size]=\"'s'\"\n [value]=\"currentWaitingTime\"\n [isShowLabel]=\"false\"\n ></kwikui-progress-bar>\n </div>\n\n <div\n *ngIf=\"config?.html?.after\"\n [innerHtml]=\"config?.html?.after | kwikuiSafeHtml\"\n >\n </div>\n </main>\n\n <kwikid-components-page-footer\n *ngIf=\"config?.footerConfig\"\n [config]=\"config.footerConfig\"\n >\n </kwikid-components-page-footer>\n</div>\n\n<div id=\"preview-wrapper\">\n <ng-template\n #preview\n let-preview\n >\n <div id=\"preview-container\">\n <button\n class=\"custom-close-btn\"\n (click)=\"closePreviewDialog()\"\n style=\"\n position: absolute;\n top: 10px;\n right: 10px;\n background: none;\n border: none;\n font-size: 35px;\n color: #ff6700;\n cursor: pointer;\n \"\n >\n \u00D7\n </button>\n <div\n *ngIf=\"config?.preview?.html?.before\"\n [innerHtml]=\"config?.preview?.html?.before | kwikuiSafeHtml\"\n >\n </div>\n <div\n *ngIf=\"config?.preview?.html?.after\"\n [innerHtml]=\"config?.preview?.html?.after | kwikuiSafeHtml\"\n >\n </div>\n <div id=\"preview-button-container\">\n <div *ngFor=\"let button of config?.preview?.button\">\n <kwikui-button\n [id]=\"button?.key\"\n [appearance]=\"button.appearance\"\n [label]=\"button?.text\"\n [size]=\"'m'\"\n [styles]=\"button?.styles\"\n (onClick)=\"handleOnClickButton(button?.key)\"\n ></kwikui-button>\n </div>\n </div>\n </div>\n </ng-template>\n</div>\n", styles: [":host{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;width:100%}.container{display:flex;flex-direction:column;justify-content:flex-start;align-items:center;overflow:auto}.container>*:not(:last-child){margin-bottom:.8rem}.container main{display:flex;flex-direction:column;align-content:center;justify-content:flex-start;align-items:center;padding:0 1rem}.container main>*:not(:last-child){margin-bottom:1rem}.container main #waiting-camera-view-container{width:100%;height:100%;min-width:200px;min-height:200px;border-radius:50%;overflow:hidden;min-height:12rem}.container main #waiting-camera-view-container ::ng-deep kwikid-camera-view>video{border-radius:50%;object-fit:cover;width:100%;height:100%}.container main #waiting-time-progress-container{width:100%}.container main #waiting-time-progress-container #waiting-time-progress-bar{width:100%}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{border-radius:10px}::-webkit-scrollbar-thumb{background:lightgray;border-radius:10px}::-webkit-scrollbar-thumb:hover{background:gray}#preview-container{display:flex!important;flex-direction:column!important;justify-content:center!important;align-items:center!important;z-index:9999!important}#preview-button-container{display:flex!important;grid-gap:1rem!important;gap:1rem!important;z-index:9999!important;margin-top:3%}\n"], components: [{ type: i1.KwikIDPageHeaderComponent, selector: "kwikid-components-page-header", inputs: ["config"] }, { type: i2.KwikIDCameraComponent, selector: "kwikid-camera", inputs: ["type", "config", "data", "image", "video"], outputs: ["onClickBack", "onClickClose", "getImage", "onClickSave", "getVideo"] }, { type: i3.KwikUIProgressBarComponent, selector: "kwikui-progress-bar", inputs: ["color", "id", "isShowLabel", "max", "size", "value"] }, { type: i4.KwikIDPageFooterComponent, selector: "kwikid-components-page-footer", inputs: ["config"] }, { type: i3.KwikUIButtonComponent, selector: "kwikui-button", inputs: ["appearance", "class", "disabled", "icon", "iconRight", "id", "label", "shape", "showLoader", "size", "styles", "type", "pseudoHover"], outputs: ["onClick"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "kwikuiSafeHtml": i3.KwikUISafeHtmlPipe } }); __decorate([ logMethod ], KwikIDWaitingPageComponent.prototype, "handleOnActionShowPopupForm", null); __decorate([ logMethod ], KwikIDWaitingPageComponent.prototype, "showPopupAfterDelay", null); __decorate([ logMethod ], KwikIDWaitingPageComponent.prototype, "handleOnClickButton", null); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: KwikIDWaitingPageComponent, decorators: [{ type: Component, args: [{ selector: "kwikid-components-page-waiting", templateUrl: "./waiting.component.html", styleUrls: ["./waiting.component.scss"] }] }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i6.TuiPreviewDialogService, decorators: [{ type: Inject, args: [TuiPreviewDialogService] }] }, { type: i7.TuiDialogService, decorators: [{ type: Inject, args: [TuiDialogService] }] }]; }, propDecorators: { config: [{ type: Input }], currentWaitingTime: [{ type: Input }], currentQueuePosition: [{ type: Input }], maxWaitingTime: [{ type: Input }], onClickButton: [{ type: Output }], preview: [{ type: ViewChild, args: ["preview"] }], handleOnActionShowPopupForm: [], showPopupAfterDelay: [], handleOnClickButton: [] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FpdGluZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rd2lraWQtY29tcG9uZW50cy9zcmMvbGliL3BhZ2VzL3dhaXRpbmcvd2FpdGluZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rd2lraWQtY29tcG9uZW50cy9zcmMvbGliL3BhZ2VzL3dhaXRpbmcvd2FpdGluZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUVMLFNBQVMsRUFFVCxNQUFNLEVBQ04sS0FBSyxFQUlMLFNBQVMsRUFFVCxZQUFZLEVBQ1osTUFBTSxFQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNsRSxPQUFPLEVBQW9CLGdCQUFnQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sa0JBQWtCLENBQUM7Ozs7Ozs7OztBQUVoRSxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUM7QUFPM0IsTUFBTSxPQUFPLDBCQUEwQjtJQWtCckMsWUFDVSxXQUF1QixFQUN2QixHQUFzQixFQUViLG9CQUE2QyxFQUNuQixhQUErQjtRQUpsRSxnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUN2QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUViLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBeUI7UUFDbkIsa0JBQWEsR0FBYixhQUFhLENBQWtCO1FBdEJuRSxXQUFNLEdBQVEsNEJBQTRCLENBQUM7UUFRMUMsa0JBQWEsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQWU3RCxDQUFDO0lBRUosUUFBUTs7UUFDTixJQUFJLENBQUMsTUFBTSxtQ0FDTiw0QkFBNEIsR0FD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eEM7OzBCQXNCSSxNQUFNOzJCQUFDLHVCQUF1Qjs7MEJBRTlCLE1BQU07MkJBQUMsZ0JBQWdCOzRDQXRCakIsTUFBTTtzQkFBZCxLQUFLO2dCQUVHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFFRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBRUcsY0FBYztzQkFBdEIsS0FBSztnQkFFSSxhQUFhO3NCQUF0QixNQUFNO2dCQUdVLE9BQU87c0JBRHZCLFNBQVM7dUJBQUMsU0FBUztnQkEyRHBCLDJCQUEyQixNQTJCM0IsbUJBQW1CLE1BZ0JuQixtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uSW5pdCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkLFxuICBUZW1wbGF0ZVJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBPdXRwdXRcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IGxvZ01ldGhvZCB9IGZyb20gXCJrd2lraWQtdG9vbGtpdFwiO1xuaW1wb3J0IHsgVHVpUHJldmlld0RpYWxvZ1NlcnZpY2UgfSBmcm9tIFwiQHRhaWdhLXVpL2FkZG9uLXByZXZpZXdcIjtcbmltcG9ydCB7IFR1aURpYWxvZ0NvbnRleHQsIFR1aURpYWxvZ1NlcnZpY2UgfSBmcm9tIFwiQHRhaWdhLXVpL2NvcmVcIjtcbmltcG9ydCB7IERFRkFVTFRfQ09ORklHX19XQUlUSU5HX1BBR0UgfSBmcm9tIFwiLi93YWl0aW5nLmNvbmZpZ1wiO1xuXG5jb25zdCBNU19QRVJfU0VDT05EID0gMTAwMDtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImt3aWtpZC1jb21wb25lbnRzLXBhZ2Utd2FpdGluZ1wiLFxuICB0ZW1wbGF0ZVVybDogXCIuL3dhaXRpbmcuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmxzOiBbXCIuL3dhaXRpbmcuY29tcG9uZW50LnNjc3NcIl1cbn0pXG5leHBvcnQgY2xhc3MgS3dpa0lEV2FpdGluZ1BhZ2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIGNvbmZpZzogYW55ID0gREVGQVVMVF9DT05GSUdfX1dBSVRJTkdfUEFHRTtcblxuICBASW5wdXQoKSBjdXJyZW50V2FpdGluZ1RpbWU6IG51bWJlcjtcblxuICBASW5wdXQoKSBjdXJyZW50UXVldWVQb3NpdGlvbjogbnVtYmVyO1xuXG4gIEBJbnB1dCgpIG1heFdhaXRpbmdUaW1lOiBudW1iZXI7XG5cbiAgQE91dHB1dCgpIG9uQ2xpY2tCdXR0b246IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBWaWV3Q2hpbGQoXCJwcmV2aWV3XCIpXG4gIHByaXZhdGUgcmVhZG9ubHkgcHJldmlldzogVGVtcGxhdGVSZWY8VHVpRGlhbG9nQ29udGV4dDx2b2lkPj47XG5cbiAgcHJpdmF0ZSBwcmV2aWV3RGlhbG9nUmVmOiBhbnk7XG5cbiAgcHJpdmF0ZSBwb3B1cFRpbWVyOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGhvc3RFbGVtZW50OiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBASW5qZWN0KFR1aVByZXZpZXdEaWFsb2dTZXJ2aWNlKVxuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJldmlld0RpYWxvZ1NlcnZpY2U6IFR1aVByZXZpZXdEaWFsb2dTZXJ2aWNlLFxuICAgIEBJbmplY3QoVHVpRGlhbG9nU2VydmljZSkgcHJpdmF0ZSByZWFkb25seSBkaWFsb2dTZXJ2aWNlOiBUdWlEaWFsb2dTZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbmZpZyA9IHtcbiAgICAgIC4uLkRFRkFVTFRfQ09ORklHX19XQUlUSU5HX1BBR0UsXG4gICAgICAuLi50aGlzLmNvbmZpZ1xuICAgIH07XG5cbiAgICBpZiAodGhpcy5jdXJyZW50V2FpdGluZ1RpbWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5jdXJyZW50V2FpdGluZ1RpbWUgPSB0aGlzLmNvbmZpZz8ud2FpdGluZ1RpbWU/Lm1heFdhaXRpbmdUaW1lIHx8IDA7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY3VycmVudFF1ZXVlUG9zaXRpb24gPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5jdXJyZW50UXVldWVQb3NpdGlvbiA9IDA7XG4gICAgfVxuICAgIHRoaXMuc2hvd1BvcHVwQWZ0ZXJEZWxheSgpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLmNvbmZpZyAmJiAhY2hhbmdlcy5jb25maWcuZmlyc3RDaGFuZ2UpIHtcbiAgICAgIHRoaXMuY29uZmlnID0ge1xuICAgICAgICAuLi5ERUZBVUxUX0NPTkZJR19fV0FJVElOR19QQUdFLFxuICAgICAgICAuLi5jaGFuZ2VzLmNvbmZpZy5jdXJyZW50VmFsdWVcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXMuY3VycmVudFdhaXRpbmdUaW1lICYmICFjaGFuZ2VzLmN1cnJlbnRXYWl0aW5nVGltZS5maXJzdENoYW5nZSkge1xuICAgICAgdGhpcy5jdXJyZW50V2FpdGluZ1RpbWUgPSBjaGFuZ2VzLmN1cnJlbnRXYWl0aW5nVGltZS5jdXJyZW50VmFsdWU7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgY2hhbmdlcy5jdXJyZW50UXVldWVQb3NpdGlvbiAmJlxuICAgICAgIWNoYW5nZXMuY3VycmVudFF1ZXVlUG9zaXRpb24uZmlyc3RDaGFuZ2VcbiAgICApIHtcbiAgICAgIHRoaXMuY3VycmVudFF1ZXVlUG9zaXRpb24gPSBjaGFuZ2VzLmN1cnJlbnRRdWV1ZVBvc2l0aW9uLmN1cnJlbnRWYWx1ZTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wb3B1cFRpbWVyKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5wb3B1cFRpbWVyKTtcbiAgICAgIHRoaXMucG9wdXBUaW1lciA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgQGxvZ01ldGhvZFxuICBoYW5kbGVPbkFjdGlvblNob3dQb3B1cEZvcm0oZTogYW55LCBjb250ZW50OiBhbnkpIHtcbiAgICBjb25zb2xlLmxvZyhcImVcIiwgY29udGVudCk7XG4gICAgY29uc3QgcG9wdXBUeXBlID0gZT8ucG9wdXBUeXBlID8/IFwiRElBTE9HXCI7XG5cbiAgICBzd2l0Y2ggKHBvcHVwVHlwZSkge1xuICAgICAgY2FzZSBcIkRJQUxPR1wiOlxuICAgICAgICB0aGlzLnByZXZpZXdEaWFsb2dSZWYgPSB0aGlzLmRpYWxvZ1NlcnZpY2VcbiAgICAgICAgICAub3Blbihjb250ZW50LCB7XG4gICAgICAgICAgICBjbG9zZWFibGU6IGZhbHNlLFxuICAgICAgICAgICAgZGlzbWlzc2libGU6IHRydWUsXG4gICAgICAgICAgICBzaXplOiBcInNcIixcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZVxuICAgICAgICAgIH0pXG4gICAgICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgICAgICBuZXh0OiAoKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnNvbGUuaW5mbyhcIkRpYWxvZyBjbG9zZWRcIik7XG4gICAgICAgICAgICAgIHRoaXMucHJldmlld0RpYWxvZ1JlZi5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnNvbGUuaW5mbyhcIkRpYWxvZyBjbG9zZWRcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgc2hvd1BvcHVwQWZ0ZXJEZWxheSgpIHtcbiAgICBpZiAoIXRoaXMuY29uZmlnPy5wcmV2aWV3KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLnBvcHVwVGltZXIpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnBvcHVwVGltZXIpO1xuICAgIH1cbiAgICB0aGlzLnBvcHVwVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IGV2ZW50ID0ge1xuICAgICAgICBwb3B1cFR5cGU6IHRoaXMuY29uZmlnPy5wcmV2aWV3Py50eXBlXG4gICAgICB9O1xuICAgICAgLy8gdGhpcy5oYW5kbGVPbkFjdGlvblNob3dQb3B1cEZvcm0oZXZlbnQsIHRoaXMucHJldmlldyk7XG4gICAgfSwgdGhpcy5tYXhXYWl0aW5nVGltZSAqIE1TX1BFUl9TRUNPTkQpO1xuICB9XG5cbiAgQGxvZ01ldGhvZFxuICBoYW5kbGVPbkNsaWNrQnV0dG9uKGtleTogc3RyaW5nKTogdm9pZCB7XG4gICAgc3dpdGNoIChrZXkpIHtcbiAgICAgIGNhc2UgXCJXQUlUXCI6XG4gICAgICAgIHRoaXMuY2xvc2VQcmV2aWV3RGlhbG9nKCk7XG4gICAgICAgIHRoaXMub25DbGlja0J1dHRvbi5lbWl0KGtleSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIlJFU0NIRURVTEVcIjpcbiAgICAgICAgdGhpcy5vbkNsaWNrQnV0dG9uLmVtaXQoa2V5KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aGlzLm9uQ2xpY2tCdXR0b24uZW1pdChrZXkpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBjbG9zZVByZXZpZXdEaWFsb2coKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucHJldmlld0RpYWxvZ1JlZikge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdGhpcy5wcmV2aWV3RGlhbG9nUmVmLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMucHJldmlld0RpYWxvZ1JlZiA9IG51bGw7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBjb25zb2xlLmVycm9yKFwiRXJyb3IgY2xvc2luZyBkaWFsb2c6XCIsIGVycm9yKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjb250YWluZXJcIj5cbiAgPGt3aWtpZC1jb21wb25lbnRzLXBhZ2UtaGVhZGVyXG4gICAgKm5nSWY9XCJjb25maWc/LmhlYWRlckNvbmZpZ1wiXG4gICAgW2NvbmZpZ109XCJjb25maWcuaGVhZGVyQ29uZmlnXCJcbiAgPlxuICA8L2t3aWtpZC1jb21wb25lbnRzLXBhZ2UtaGVhZGVyPlxuXG4gIDxtYWluPlxuICAgIDxkaXZcbiAgICAgICpuZ0lmPVwiY29uZmlnPy5odG1sPy5iZWZvcmVcIlxuICAgICAgW2lubmVySHRtbF09XCJjb25maWc/Lmh0bWw/LmJlZm9yZSB8IGt3aWt1aVNhZmVIdG1sXCJcbiAgICA+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGlkPVwid2FpdGluZy1jYW1lcmEtdmlldy1jb250YWluZXJcIj5cbiAgICAgIDxrd2lraWQtY2FtZXJhXG4gICAgICAgIFt0eXBlXT1cIidWSUVXJ1wiXG4gICAgICAgIFtjb25maWddPVwiY29uZmlnPy5jYW1lcmFDb25maWdcIlxuICAgICAgPlxuICAgICAgPC9rd2lraWQtY2FtZXJhPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdlxuICAgICAgKm5nSWY9XCJjb25maWc/Lmh0bWw/Lm1pZGRsZVwiXG4gICAgICBbaW5uZXJIdG1sXT1cImNvbmZpZz8uaHRtbD8ubWlkZGxlIHwga3dpa3VpU2FmZUh0bWxcIlxuICAgID5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgaWQ9XCJ3YWl0aW5nLXRpbWUtcHJvZ3Jlc3MtY29udGFpbmVyXCI+XG4gICAgICA8a3dpa3VpLXByb2dyZXNzLWJhclxuICAgICAgICBpZD1cIndhaXRpbmctdGltZS1wcm9ncmVzcy1iYXJcIlxuICAgICAgICBbY29sb3JdPVwiJ3ZhcigtLWt3aWt1aS1jb2xvci1wcmltYXJ5LWhvdmVyKSdcIlxuICAgICAgICBbbWF4XT1cIm1heFdhaXRpbmdUaW1lXCJcbiAgICAgICAgW3NpemVdPVwiJ3MnXCJcbiAgICAgICAgW3ZhbHVlXT1cImN1cnJlbnRXYWl0aW5nVGltZVwiXG4gICAgICAgIFtpc1Nob3dMYWJlbF09XCJmYWxzZVwiXG4gICAgICA+PC9rd2lrdWktcHJvZ3Jlc3MtYmFyPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdlxuICAgICAgKm5nSWY9XCJjb25maWc/Lmh0bWw/LmFmdGVyXCJcbiAgICAgIFtpbm5lckh0bWxdPVwiY29uZmlnPy5odG1sPy5hZnRlciB8IGt3aWt1aVNhZmVIdG1sXCJcbiAgICA+XG4gICAgPC9kaXY+XG4gIDwvbWFpbj5cblxuICA8a3dpa2lkLWNvbXBvbmVudHMtcGFnZS1mb290ZXJcbiAgICAqbmdJZj1cImNvbmZpZz8uZm9vdGVyQ29uZmlnXCJcbiAgICBbY29uZmlnXT1cImNvbmZpZy5mb290ZXJDb25maWdcIlxuICA+XG4gIDwva3dpa2lkLWNvbXBvbmVudHMtcGFnZS1mb290ZXI+XG48L2Rpdj5cblxuPGRpdiBpZD1cInByZXZpZXctd3JhcHBlclwiPlxuICA8bmctdGVtcGxhdGVcbiAgICAjcHJldmlld1xuICAgIGxldC1wcmV2aWV3XG4gID5cbiAgICA8ZGl2IGlkPVwicHJldmlldy1jb250YWluZXJcIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJjdXN0b20tY2xvc2UtYnRuXCJcbiAgICAgICAgKGNsaWNrKT1cImNsb3NlUHJldmlld0RpYWxvZygpXCJcbiAgICAgICAgc3R5bGU9XCJcbiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgdG9wOiAxMHB4O1xuICAgICAgICAgIHJpZ2h0OiAxMHB4O1xuICAgICAgICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICAgIGZvbnQtc2l6ZTogMzVweDtcbiAgICAgICAgICBjb2xvcjogI2ZmNjcwMDtcbiAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIFwiXG4gICAgICA+XG4gICAgICAgIMOXXG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCJjb25maWc/LnByZXZpZXc/Lmh0bWw/LmJlZm9yZVwiXG4gICAgICAgIFtpbm5lckh0bWxdPVwiY29uZmlnPy5wcmV2aWV3Py5odG1sPy5iZWZvcmUgfCBrd2lrdWlTYWZlSHRtbFwiXG4gICAgICA+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCJjb25maWc/LnByZXZpZXc/Lmh0bWw/LmFmdGVyXCJcbiAgICAgICAgW2lubmVySHRtbF09XCJjb25maWc/LnByZXZpZXc/Lmh0bWw/LmFmdGVyIHwga3dpa3VpU2FmZUh0bWxcIlxuICAgICAgPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGlkPVwicHJldmlldy1idXR0b24tY29udGFpbmVyXCI+XG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGJ1dHRvbiBvZiBjb25maWc/LnByZXZpZXc/LmJ1dHRvblwiPlxuICAgICAgICAgIDxrd2lrdWktYnV0dG9uXG4gICAgICAgICAgICBbaWRdPVwiYnV0dG9uPy5rZXlcIlxuICAgICAgICAgICAgW2FwcGVhcmFuY2VdPVwiYnV0dG9uLmFwcGVhcmFuY2VcIlxuICAgICAgICAgICAgW2xhYmVsXT1cImJ1dHRvbj8udGV4dFwiXG4gICAgICAgICAgICBbc2l6ZV09XCInbSdcIlxuICAgICAgICAgICAgW3N0eWxlc109XCJidXR0b24/LnN0eWxlc1wiXG4gICAgICAgICAgICAob25DbGljayk9XCJoYW5kbGVPbkNsaWNrQnV0dG9uKGJ1dHRvbj8ua2V5KVwiXG4gICAgICAgICAgPjwva3dpa3VpLWJ1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuIl19