kwikid-components
Version:
KwikID's Components Library
159 lines • 26.6 kB
JavaScript
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