UNPKG

truly-ui

Version:

Web Components for Desktop Applications.

63 lines 16.4 kB
import { Component, Input, Output, EventEmitter } from '@angular/core'; import * as i0 from "@angular/core"; import * as i1 from "@angular/common"; import * as i2 from "../../../tooltip/directives/tooltip.directive"; import * as i3 from "../../../blockui/blockui"; export class DayListComponent { constructor(changeDetectionRef) { this.changeDetectionRef = changeDetectionRef; this.currentDate = new Date(); this.onEventDbClick = new EventEmitter(); this.onEventClick = new EventEmitter(); this.onEventMouseover = new EventEmitter(); this.onEventMouseout = new EventEmitter(); } ngOnInit() { } ngOnChanges(changes) { if (!changes['events'] || !changes['currentDate']) { return; } if (!changes['events'].firstChange || !changes['currentDate'].firstChange) { this.filterEvents(); this.changeDetectionRef.detectChanges(); } } filterEvents() { const startDate = new Date(this.currentDate); startDate.setDate(startDate.getDate() - startDate.getDay()); // Sunday of the current week startDate.setHours(0, 0, 0, 0); const endDate = new Date(startDate); endDate.setDate(endDate.getDate() + 6); // Saturday of the current week endDate.setHours(23, 59, 59, 999); this.filteredEvents = this.events.filter(event => { const eventDate = new Date(event.date.start); return eventDate >= startDate && eventDate <= endDate; }); } getDayOfWeek(date) { const daysOfWeek = ['Domingo', 'Segunda', 'Terça', 'Quarta', 'Quinta', 'Sexta', 'Sábado']; const eventDate = new Date(date); return daysOfWeek[eventDate.getDay()]; } } /** @nocollapse */ DayListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DayListComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); /** @nocollapse */ DayListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: DayListComponent, selector: "tl-day-list", inputs: { events: "events", statusConfig: "statusConfig", currentDate: "currentDate" }, outputs: { onEventDbClick: "onEventDbClick", onEventClick: "onEventClick", onEventMouseover: "onEventMouseover", onEventMouseout: "onEventMouseout" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"ui-schedule-daylist-wrapper\"\n [tlBlockui]=\"events?.length === 0\"\n [blockuiConfig]=\"{'spin': false, 'icon': 'ion-calendar', 'message': 'No events to display'}\"\n [dimensionsFrom]=\"'parent'\"\n>\n <div class=\"ui-schedule-daylist-events\">\n <div class=\"ui-schedule-event-box\"\n *ngFor=\"let event of events; let index = index\"\n [style.borderTopColor]=\"statusConfig ? statusConfig[event.status]?.color : '#FFFFFF'\"\n [tooltip]=\"{text: statusConfig ? statusConfig[event.status]?.description : '' , placement: 'left-center'}\"\n (click)=\"onEventClick.emit(event)\"\n (dblclick)=\"onEventDbClick.emit(event)\"\n (mouseover)=\"onEventMouseout.emit(event)\"\n (mouseout)=\"onEventMouseout.emit(event)\"\n >\n <div class=\"ui-schedule-time-row\">\n <div class=\"ui-schedule-time-description\">\n <span class=\"ui-hour-detail\">{{getDayOfWeek(event.date.start)}}</span><br>\n </div>\n </div>\n <div class=\"ui-event-hour\">{{event.date.start | date: 'HH:mm'}} - {{event.date.end | date: 'HH:mm'}} - {{event.date.start | date: 'dd/MM'}}</div>\n <div class=\"ui-schedule-description\">\n <div class=\"ui-event-title\">{{event.title}}</div>\n <div class=\"ui-event-detail\">{{event.detail}}</div>\n </div>\n </div>\n </div>\n</div>\n", styles: [".ui-schedule-daylist-wrapper{background-color:#f5f5f5}.ui-schedule-daylist-events{position:relative}.ui-schedule-time-row{box-sizing:border-box;border-bottom:1px solid #D6D6D6;width:10%;display:flex;justify-content:center}.ui-schedule-time-row:last-child{border-bottom:none}.ui-schedule-time-row>.ui-schedule-time-description{display:block;align-items:baseline}.ui-schedule-time-row>.ui-schedule-time-description .ui-hour-detail{font-weight:700;font-size:1.6em;line-height:1.5}.ui-schedule-event-box{font-family:Segoe UI,Lato,\"sans-serif\",Arial;background-color:#fff;font-size:1em;border-top-width:5px;border-top-style:solid;border-bottom:1px #D6D6D6 solid;-webkit-user-select:none;user-select:none;cursor:pointer;height:50px;display:flex;margin-bottom:5px;box-sizing:border-box}.ui-schedule-event-box>.ui-event-hour{justify-content:center;font-size:1em;color:#454e58;align-items:center;display:flex;flex-basis:100px}.ui-schedule-event-box>.ui-schedule-description{flex-basis:100%;display:flex;flex-direction:column;justify-content:center}.ui-schedule-event-box>.ui-schedule-description>.ui-event-title{font-weight:600;color:#454e58;white-space:nowrap;text-overflow:ellipsis}.ui-schedule-event-box>.ui-schedule-description>.ui-event-detail{color:#949799;font-size:1em;white-space:nowrap;text-overflow:ellipsis}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.TooltipDirective, selector: "[tooltip]", inputs: ["tooltip"] }, { kind: "directive", type: i3.TlBlockUI, selector: "[tlBlockui]", inputs: ["tlBlockui", "dimensionsFrom", "blockuiConfig"] }, { kind: "pipe", type: i1.DatePipe, name: "date" }] }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DayListComponent, decorators: [{ type: Component, args: [{ selector: 'tl-day-list', template: "<div class=\"ui-schedule-daylist-wrapper\"\n [tlBlockui]=\"events?.length === 0\"\n [blockuiConfig]=\"{'spin': false, 'icon': 'ion-calendar', 'message': 'No events to display'}\"\n [dimensionsFrom]=\"'parent'\"\n>\n <div class=\"ui-schedule-daylist-events\">\n <div class=\"ui-schedule-event-box\"\n *ngFor=\"let event of events; let index = index\"\n [style.borderTopColor]=\"statusConfig ? statusConfig[event.status]?.color : '#FFFFFF'\"\n [tooltip]=\"{text: statusConfig ? statusConfig[event.status]?.description : '' , placement: 'left-center'}\"\n (click)=\"onEventClick.emit(event)\"\n (dblclick)=\"onEventDbClick.emit(event)\"\n (mouseover)=\"onEventMouseout.emit(event)\"\n (mouseout)=\"onEventMouseout.emit(event)\"\n >\n <div class=\"ui-schedule-time-row\">\n <div class=\"ui-schedule-time-description\">\n <span class=\"ui-hour-detail\">{{getDayOfWeek(event.date.start)}}</span><br>\n </div>\n </div>\n <div class=\"ui-event-hour\">{{event.date.start | date: 'HH:mm'}} - {{event.date.end | date: 'HH:mm'}} - {{event.date.start | date: 'dd/MM'}}</div>\n <div class=\"ui-schedule-description\">\n <div class=\"ui-event-title\">{{event.title}}</div>\n <div class=\"ui-event-detail\">{{event.detail}}</div>\n </div>\n </div>\n </div>\n</div>\n", styles: [".ui-schedule-daylist-wrapper{background-color:#f5f5f5}.ui-schedule-daylist-events{position:relative}.ui-schedule-time-row{box-sizing:border-box;border-bottom:1px solid #D6D6D6;width:10%;display:flex;justify-content:center}.ui-schedule-time-row:last-child{border-bottom:none}.ui-schedule-time-row>.ui-schedule-time-description{display:block;align-items:baseline}.ui-schedule-time-row>.ui-schedule-time-description .ui-hour-detail{font-weight:700;font-size:1.6em;line-height:1.5}.ui-schedule-event-box{font-family:Segoe UI,Lato,\"sans-serif\",Arial;background-color:#fff;font-size:1em;border-top-width:5px;border-top-style:solid;border-bottom:1px #D6D6D6 solid;-webkit-user-select:none;user-select:none;cursor:pointer;height:50px;display:flex;margin-bottom:5px;box-sizing:border-box}.ui-schedule-event-box>.ui-event-hour{justify-content:center;font-size:1em;color:#454e58;align-items:center;display:flex;flex-basis:100px}.ui-schedule-event-box>.ui-schedule-description{flex-basis:100%;display:flex;flex-direction:column;justify-content:center}.ui-schedule-event-box>.ui-schedule-description>.ui-event-title{font-weight:600;color:#454e58;white-space:nowrap;text-overflow:ellipsis}.ui-schedule-event-box>.ui-schedule-description>.ui-event-detail{color:#949799;font-size:1em;white-space:nowrap;text-overflow:ellipsis}\n"] }] }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { events: [{ type: Input }], statusConfig: [{ type: Input }], currentDate: [{ type: Input }], onEventDbClick: [{ type: Output }], onEventClick: [{ type: Output }], onEventMouseover: [{ type: Output }], onEventMouseout: [{ type: Output }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF5LWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJ1bHktdWkvc3JjL2NvbXBvbmVudHMvc2NoZWR1bGUvdmlld3MvZGF5LWxpc3QvZGF5LWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJ1bHktdWkvc3JjL2NvbXBvbmVudHMvc2NoZWR1bGUvdmlld3MvZGF5LWxpc3QvZGF5LWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQStDLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7O0FBUzVILE1BQU0sT0FBTyxnQkFBZ0I7SUFXM0IsWUFBb0Isa0JBQXFDO1FBQXJDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBbUI7UUFSaEQsZ0JBQVcsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3hCLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNwQyxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDbEMscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUN0QyxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFJYSxDQUFDO0lBRTdELFFBQVEsS0FBSSxDQUFDO0lBRWIsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEVBQUU7WUFDakQsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxXQUFXLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsV0FBVyxFQUFFO1lBQ3pFLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsa0JBQWtCLENBQUMsYUFBYSxFQUFFLENBQUM7U0FDekM7SUFDSCxDQUFDO0lBRU8sWUFBWTtRQUNsQixNQUFNLFNBQVMsR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDN0MsU0FBUyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyw2QkFBNkI7UUFDMUYsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUUvQixNQUFNLE9BQU8sR0FBRyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNwQyxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLCtCQUErQjtRQUN2RSxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBRWxDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDL0MsTUFBTSxTQUFTLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM3QyxPQUFPLFNBQVMsSUFBSSxTQUFTLElBQUksU0FBUyxJQUFJLE9BQU8sQ0FBQztRQUN4RCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxZQUFZLENBQUMsSUFBWTtRQUN2QixNQUFNLFVBQVUsR0FBRyxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzFGLE1BQU0sU0FBUyxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pDLE9BQU8sVUFBVSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7O2lJQTVDVSxnQkFBZ0I7cUhBQWhCLGdCQUFnQix1VENUN0IsdTJDQTRCQTs0RkRuQmEsZ0JBQWdCO2tCQUw1QixTQUFTOytCQUNFLGFBQWE7d0dBS2QsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDSSxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUNHLGVBQWU7c0JBQXhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIFNpbXBsZUNoYW5nZXMsIE9uQ2hhbmdlcywgQ2hhbmdlRGV0ZWN0b3JSZWYsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTY2hlZHVsZURhdGFTb3VyY2UgfSBmcm9tICcuLi8uLi90eXBlcy9kYXRhc291cmNlLnR5cGUnO1xuaW1wb3J0IHsgU3RhdHVzVHlwZSB9IGZyb20gJy4uLy4uL3R5cGVzL3N0YXR1cy50eXBlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndGwtZGF5LWxpc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF5LWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kYXktbGlzdC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIERheUxpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIGV2ZW50czogU2NoZWR1bGVEYXRhU291cmNlW107XG4gIEBJbnB1dCgpIHN0YXR1c0NvbmZpZzogQXJyYXk8U3RhdHVzVHlwZT47XG4gIEBJbnB1dCgpIGN1cnJlbnREYXRlID0gbmV3IERhdGUoKTtcbiAgQE91dHB1dCgpIG9uRXZlbnREYkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb25FdmVudENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb25FdmVudE1vdXNlb3ZlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIG9uRXZlbnRNb3VzZW91dCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBmaWx0ZXJlZEV2ZW50czogU2NoZWR1bGVEYXRhU291cmNlW107XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjaGFuZ2VEZXRlY3Rpb25SZWY6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gIG5nT25Jbml0KCkge31cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKCFjaGFuZ2VzWydldmVudHMnXSB8fCAhY2hhbmdlc1snY3VycmVudERhdGUnXSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIWNoYW5nZXNbJ2V2ZW50cyddLmZpcnN0Q2hhbmdlIHx8ICFjaGFuZ2VzWydjdXJyZW50RGF0ZSddLmZpcnN0Q2hhbmdlKSB7XG4gICAgICB0aGlzLmZpbHRlckV2ZW50cygpO1xuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rpb25SZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZmlsdGVyRXZlbnRzKCkge1xuICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IG5ldyBEYXRlKHRoaXMuY3VycmVudERhdGUpO1xuICAgIHN0YXJ0RGF0ZS5zZXREYXRlKHN0YXJ0RGF0ZS5nZXREYXRlKCkgLSBzdGFydERhdGUuZ2V0RGF5KCkpOyAvLyBTdW5kYXkgb2YgdGhlIGN1cnJlbnQgd2Vla1xuICAgIHN0YXJ0RGF0ZS5zZXRIb3VycygwLCAwLCAwLCAwKTtcblxuICAgIGNvbnN0IGVuZERhdGUgPSBuZXcgRGF0ZShzdGFydERhdGUpO1xuICAgIGVuZERhdGUuc2V0RGF0ZShlbmREYXRlLmdldERhdGUoKSArIDYpOyAvLyBTYXR1cmRheSBvZiB0aGUgY3VycmVudCB3ZWVrXG4gICAgZW5kRGF0ZS5zZXRIb3VycygyMywgNTksIDU5LCA5OTkpO1xuXG4gICAgdGhpcy5maWx0ZXJlZEV2ZW50cyA9IHRoaXMuZXZlbnRzLmZpbHRlcihldmVudCA9PiB7XG4gICAgICBjb25zdCBldmVudERhdGUgPSBuZXcgRGF0ZShldmVudC5kYXRlLnN0YXJ0KTtcbiAgICAgIHJldHVybiBldmVudERhdGUgPj0gc3RhcnREYXRlICYmIGV2ZW50RGF0ZSA8PSBlbmREYXRlO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0RGF5T2ZXZWVrKGRhdGU6IHN0cmluZykge1xuICAgIGNvbnN0IGRheXNPZldlZWsgPSBbJ0RvbWluZ28nLCAnU2VndW5kYScsICdUZXLDp2EnLCAnUXVhcnRhJywgJ1F1aW50YScsICdTZXh0YScsICdTw6FiYWRvJ107XG4gICAgY29uc3QgZXZlbnREYXRlID0gbmV3IERhdGUoZGF0ZSk7XG4gICAgcmV0dXJuIGRheXNPZldlZWtbZXZlbnREYXRlLmdldERheSgpXTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInVpLXNjaGVkdWxlLWRheWxpc3Qtd3JhcHBlclwiXG4gICAgIFt0bEJsb2NrdWldPVwiZXZlbnRzPy5sZW5ndGggPT09IDBcIlxuICAgICBbYmxvY2t1aUNvbmZpZ109XCJ7J3NwaW4nOiBmYWxzZSwgJ2ljb24nOiAnaW9uLWNhbGVuZGFyJywgJ21lc3NhZ2UnOiAnTm8gZXZlbnRzIHRvIGRpc3BsYXknfVwiXG4gICAgIFtkaW1lbnNpb25zRnJvbV09XCIncGFyZW50J1wiXG4+XG4gIDxkaXYgY2xhc3M9XCJ1aS1zY2hlZHVsZS1kYXlsaXN0LWV2ZW50c1wiPlxuICAgIDxkaXYgY2xhc3M9XCJ1aS1zY2hlZHVsZS1ldmVudC1ib3hcIlxuICAgICAgICAgKm5nRm9yPVwibGV0IGV2ZW50IG9mIGV2ZW50czsgbGV0IGluZGV4ID0gaW5kZXhcIlxuICAgICAgICAgW3N0eWxlLmJvcmRlclRvcENvbG9yXT1cInN0YXR1c0NvbmZpZyA/IHN0YXR1c0NvbmZpZ1tldmVudC5zdGF0dXNdPy5jb2xvciA6ICcjRkZGRkZGJ1wiXG4gICAgICAgICBbdG9vbHRpcF09XCJ7dGV4dDogc3RhdHVzQ29uZmlnID8gc3RhdHVzQ29uZmlnW2V2ZW50LnN0YXR1c10/LmRlc2NyaXB0aW9uIDogJycgLCBwbGFjZW1lbnQ6ICdsZWZ0LWNlbnRlcid9XCJcbiAgICAgICAgIChjbGljayk9XCJvbkV2ZW50Q2xpY2suZW1pdChldmVudClcIlxuICAgICAgICAgKGRibGNsaWNrKT1cIm9uRXZlbnREYkNsaWNrLmVtaXQoZXZlbnQpXCJcbiAgICAgICAgIChtb3VzZW92ZXIpPVwib25FdmVudE1vdXNlb3V0LmVtaXQoZXZlbnQpXCJcbiAgICAgICAgIChtb3VzZW91dCk9XCJvbkV2ZW50TW91c2VvdXQuZW1pdChldmVudClcIlxuICAgID5cbiAgICA8ZGl2IGNsYXNzPVwidWktc2NoZWR1bGUtdGltZS1yb3dcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ1aS1zY2hlZHVsZS10aW1lLWRlc2NyaXB0aW9uXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwidWktaG91ci1kZXRhaWxcIj57e2dldERheU9mV2VlayhldmVudC5kYXRlLnN0YXJ0KX19PC9zcGFuPjxicj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInVpLWV2ZW50LWhvdXJcIj57e2V2ZW50LmRhdGUuc3RhcnQgfCBkYXRlOiAnSEg6bW0nfX0gLSB7e2V2ZW50LmRhdGUuZW5kIHwgZGF0ZTogJ0hIOm1tJ319IC0ge3tldmVudC5kYXRlLnN0YXJ0IHwgZGF0ZTogJ2RkL01NJ319PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwidWktc2NoZWR1bGUtZGVzY3JpcHRpb25cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInVpLWV2ZW50LXRpdGxlXCI+e3tldmVudC50aXRsZX19PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ1aS1ldmVudC1kZXRhaWxcIj57e2V2ZW50LmRldGFpbH19PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==