@catull/igniteui-angular
Version:
Ignite UI for Angular is a dependency-free Angular toolkit for building modern web apps
223 lines • 19.1 kB
JavaScript
import { __decorate, __metadata } from "tslib";
import { Component, Input, Output, EventEmitter, HostBinding, ElementRef, HostListener } from '@angular/core';
import { isDateInRanges } from '../calendar';
import { CalendarSelection } from '../calendar-base';
/**
*@hidden
*/
let IgxDayItemComponent = class IgxDayItemComponent {
constructor(elementRef) {
this.elementRef = elementRef;
this.hideOutsideDays = false;
this.isLastInRange = false;
this.isFirstInRange = false;
this.isWithinRange = false;
this.onDateSelection = new EventEmitter();
this._selected = false;
}
/**
* Returns boolean indicating if the day is selected
*
*/
get selected() {
return this._selected;
}
/**
* Selects the day
*/
set selected(value) {
this._selected = value;
}
get isCurrentMonth() {
return this.date.isCurrentMonth;
}
get isPreviousMonth() {
return this.date.isPrevMonth;
}
get isNextMonth() {
return this.date.isNextMonth;
}
get nativeElement() {
return this.elementRef.nativeElement;
}
get isSelectedCSS() {
return (!this.isDisabled && this.selected);
}
get isInactive() {
return this.date.isNextMonth || this.date.isPrevMonth;
}
get isHidden() {
return this.hideOutsideDays && this.isInactive;
}
get isToday() {
const today = new Date(Date.now());
const date = this.date.date;
return (date.getFullYear() === today.getFullYear() &&
date.getMonth() === today.getMonth() &&
date.getDate() === today.getDate());
}
get isWeekend() {
const day = this.date.date.getDay();
return day === 0 || day === 6;
}
get isDisabled() {
if (this.disabledDates === null) {
return false;
}
return isDateInRanges(this.date.date, this.disabledDates);
}
get isOutOfRange() {
if (!this.outOfRangeDates) {
return false;
}
return isDateInRanges(this.date.date, this.outOfRangeDates);
}
get isFocusable() {
return this.isCurrentMonth && !this.isHidden && !this.isDisabled && !this.isOutOfRange;
}
get isWithinRangeCSS() {
return !this.isSingleSelection && this.isWithinRange;
}
get isSpecial() {
if (this.specialDates === null) {
return false;
}
return isDateInRanges(this.date.date, this.specialDates);
}
get defaultCSS() {
return this.date.isCurrentMonth && !(this.isWeekend && this.selected);
}
get isDisabledCSS() {
return this.isHidden || this.isDisabled || this.isOutOfRange;
}
get isSingleSelection() {
return this.selection !== CalendarSelection.RANGE;
}
get tabindex() {
return this.isDisabled || this.isHidden ? -1 : 0;
}
onSelect() {
this.onDateSelection.emit(this.date);
}
};
IgxDayItemComponent.ctorParameters = () => [
{ type: ElementRef }
];
__decorate([
Input(),
__metadata("design:type", Object)
], IgxDayItemComponent.prototype, "date", void 0);
__decorate([
Input(),
__metadata("design:type", String)
], IgxDayItemComponent.prototype, "selection", void 0);
__decorate([
Input(),
__metadata("design:type", Object),
__metadata("design:paramtypes", [Object])
], IgxDayItemComponent.prototype, "selected", null);
__decorate([
Input(),
__metadata("design:type", Array)
], IgxDayItemComponent.prototype, "disabledDates", void 0);
__decorate([
Input(),
__metadata("design:type", Array)
], IgxDayItemComponent.prototype, "outOfRangeDates", void 0);
__decorate([
Input(),
__metadata("design:type", Array)
], IgxDayItemComponent.prototype, "specialDates", void 0);
__decorate([
Input(),
__metadata("design:type", Object)
], IgxDayItemComponent.prototype, "hideOutsideDays", void 0);
__decorate([
Input(),
HostBinding('class.igx-calendar__date--last'),
__metadata("design:type", Object)
], IgxDayItemComponent.prototype, "isLastInRange", void 0);
__decorate([
Input(),
HostBinding('class.igx-calendar__date--first'),
__metadata("design:type", Object)
], IgxDayItemComponent.prototype, "isFirstInRange", void 0);
__decorate([
Input(),
__metadata("design:type", Object)
], IgxDayItemComponent.prototype, "isWithinRange", void 0);
__decorate([
Output(),
__metadata("design:type", Object)
], IgxDayItemComponent.prototype, "onDateSelection", void 0);
__decorate([
HostBinding('class.igx-calendar__date--selected'),
__metadata("design:type", Boolean),
__metadata("design:paramtypes", [])
], IgxDayItemComponent.prototype, "isSelectedCSS", null);
__decorate([
HostBinding('class.igx-calendar__date--inactive'),
__metadata("design:type", Boolean),
__metadata("design:paramtypes", [])
], IgxDayItemComponent.prototype, "isInactive", null);
__decorate([
HostBinding('class.igx-calendar__date--hidden'),
__metadata("design:type", Boolean),
__metadata("design:paramtypes", [])
], IgxDayItemComponent.prototype, "isHidden", null);
__decorate([
HostBinding('class.igx-calendar__date--current'),
__metadata("design:type", Boolean),
__metadata("design:paramtypes", [])
], IgxDayItemComponent.prototype, "isToday", null);
__decorate([
HostBinding('class.igx-calendar__date--weekend'),
__metadata("design:type", Boolean),
__metadata("design:paramtypes", [])
], IgxDayItemComponent.prototype, "isWeekend", null);
__decorate([
HostBinding('class.igx-calendar__date--range'),
__metadata("design:type", Boolean),
__metadata("design:paramtypes", [])
], IgxDayItemComponent.prototype, "isWithinRangeCSS", null);
__decorate([
HostBinding('class.igx-calendar__date--special'),
__metadata("design:type", Boolean),
__metadata("design:paramtypes", [])
], IgxDayItemComponent.prototype, "isSpecial", null);
__decorate([
HostBinding('class.igx-calendar__date'),
__metadata("design:type", Boolean),
__metadata("design:paramtypes", [])
], IgxDayItemComponent.prototype, "defaultCSS", null);
__decorate([
HostBinding('class.igx-calendar__date--disabled'),
__metadata("design:type", Boolean),
__metadata("design:paramtypes", [])
], IgxDayItemComponent.prototype, "isDisabledCSS", null);
__decorate([
HostBinding('class.igx-calendar__date--single'),
__metadata("design:type", Boolean),
__metadata("design:paramtypes", [])
], IgxDayItemComponent.prototype, "isSingleSelection", null);
__decorate([
HostBinding('attr.tabindex'),
__metadata("design:type", Number),
__metadata("design:paramtypes", [])
], IgxDayItemComponent.prototype, "tabindex", null);
__decorate([
HostListener('click'),
HostListener('keydown.enter'),
__metadata("design:type", Function),
__metadata("design:paramtypes", []),
__metadata("design:returntype", void 0)
], IgxDayItemComponent.prototype, "onSelect", null);
IgxDayItemComponent = __decorate([
Component({
selector: 'igx-day-item',
template: "<span class=\"igx-calendar__date-content\">\n <ng-content></ng-content>\n</span>\n"
}),
__metadata("design:paramtypes", [ElementRef])
], IgxDayItemComponent);
export { IgxDayItemComponent };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF5LWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vaWduaXRldWktYW5ndWxhci8iLCJzb3VyY2VzIjpbImxpYi9jYWxlbmRhci9kYXlzLXZpZXcvZGF5LWl0ZW0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlHLE9BQU8sRUFBaUIsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTVELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXJEOztFQUVFO0FBS0YsSUFBYSxtQkFBbUIsR0FBaEMsTUFBYSxtQkFBbUI7SUF3SjVCLFlBQW9CLFVBQXNCO1FBQXRCLGVBQVUsR0FBVixVQUFVLENBQVk7UUF2SG5DLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBSXhCLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBSXRCLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBR3ZCLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBR3RCLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQWlCLENBQUM7UUF1R25ELGNBQVMsR0FBRyxLQUFLLENBQUM7SUFFb0IsQ0FBQztJQWpKL0M7OztPQUdHO0lBRUgsSUFBVyxRQUFRO1FBQ2YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzFCLENBQUM7SUFFRDs7T0FFRztJQUNILElBQVcsUUFBUSxDQUFDLEtBQVU7UUFDMUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDM0IsQ0FBQztJQTRCRCxJQUFXLGNBQWM7UUFDckIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsSUFBVyxlQUFlO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFX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QXVCRDtJQURDLFdBQVcsQ0FBQyxpQ0FBaUMsQ0FBQzs7OzJEQUc5QztBQUdEO0lBREMsV0FBVyxDQUFDLG1DQUFtQyxDQUFDOzs7b0RBT2hEO0FBR0Q7SUFEQyxXQUFXLENBQUMsMEJBQTBCLENBQUM7OztxREFHdkM7QUFHRDtJQURDLFdBQVcsQ0FBQyxvQ0FBb0MsQ0FBQzs7O3dEQUdqRDtBQUdEO0lBREMsV0FBVyxDQUFDLGtDQUFrQyxDQUFDOzs7NERBRy9DO0FBR0Q7SUFEQyxXQUFXLENBQUMsZUFBZSxDQUFDOzs7bURBRzVCO0FBUUQ7SUFGQyxZQUFZLENBQUMsT0FBTyxDQUFDO0lBQ3JCLFlBQVksQ0FBQyxlQUFlLENBQUM7Ozs7bURBRzdCO0FBOUpRLG1CQUFtQjtJQUovQixTQUFTLENBQUM7UUFDUCxRQUFRLEVBQUUsY0FBYztRQUN4QixpR0FBc0M7S0FDekMsQ0FBQztxQ0F5SmtDLFVBQVU7R0F4SmpDLG1CQUFtQixDQStKL0I7U0EvSlksbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElDYWxlbmRhckRhdGUsIGlzRGF0ZUluUmFuZ2VzIH0gZnJvbSAnLi4vY2FsZW5kYXInO1xuaW1wb3J0IHsgRGF0ZVJhbmdlRGVzY3JpcHRvciB9IGZyb20gJy4uLy4uL2NvcmUvZGF0ZXMnO1xuaW1wb3J0IHsgQ2FsZW5kYXJTZWxlY3Rpb24gfSBmcm9tICcuLi9jYWxlbmRhci1iYXNlJztcblxuLyoqXG4gKkBoaWRkZW5cbiovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2lneC1kYXktaXRlbScsXG4gICAgdGVtcGxhdGVVcmw6ICdkYXktaXRlbS5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgSWd4RGF5SXRlbUNvbXBvbmVudCB7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZGF0ZTogSUNhbGVuZGFyRGF0ZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNlbGVjdGlvbjogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBib29sZWFuIGluZGljYXRpbmcgaWYgdGhlIGRheSBpcyBzZWxlY3RlZFxuICAgICAqXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZ2V0IHNlbGVjdGVkKCk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZWxlY3RzIHRoZSBkYXlcbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0IHNlbGVjdGVkKHZhbHVlOiBhbnkpIHtcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWQgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBkaXNhYmxlZERhdGVzOiBEYXRlUmFuZ2VEZXNjcmlwdG9yW107XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBvdXRPZlJhbmdlRGF0ZXM6IERhdGVSYW5nZURlc2NyaXB0b3JbXTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNwZWNpYWxEYXRlczogRGF0ZVJhbmdlRGVzY3JpcHRvcltdO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaGlkZU91dHNpZGVEYXlzID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWNhbGVuZGFyX19kYXRlLS1sYXN0JylcbiAgICBwdWJsaWMgaXNMYXN0SW5SYW5nZSA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1jYWxlbmRhcl9fZGF0ZS0tZmlyc3QnKVxuICAgIHB1YmxpYyBpc0ZpcnN0SW5SYW5nZSA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaXNXaXRoaW5SYW5nZSA9IGZhbHNlO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIG9uRGF0ZVNlbGVjdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8SUNhbGVuZGFyRGF0ZT4oKTtcblxuICAgIHB1YmxpYyBnZXQgaXNDdXJyZW50TW9udGgoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGUuaXNDdXJyZW50TW9udGg7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBpc1ByZXZpb3VzTW9udGgoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGUuaXNQcmV2TW9udGg7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBpc05leHRNb250aCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0ZS5pc05leHRNb250aDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG5hdGl2ZUVsZW1lbnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1jYWxlbmRhcl9fZGF0ZS0tc2VsZWN0ZWQnKVxuICAgIHB1YmxpYyBnZXQgaXNTZWxlY3RlZENTUygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICghdGhpcy5pc0Rpc2FibGVkICYmIHRoaXMuc2VsZWN0ZWQpO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWNhbGVuZGFyX19kYXRlLS1pbmFjdGl2ZScpXG4gICAgcHVibGljIGdldCBpc0luYWN0aXZlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRlLmlzTmV4dE1vbnRoIHx8IHRoaXMuZGF0ZS5pc1ByZXZNb250aDtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1jYWxlbmRhcl9fZGF0ZS0taGlkZGVuJylcbiAgICBwdWJsaWMgZ2V0IGlzSGlkZGVuKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5oaWRlT3V0c2lkZURheXMgJiYgdGhpcy5pc0luYWN0aXZlO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWNhbGVuZGFyX19kYXRlLS1jdXJyZW50JylcbiAgICBwdWJsaWMgZ2V0IGlzVG9kYXkoKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IHRvZGF5ID0gbmV3IERhdGUoRGF0ZS5ub3coKSk7XG4gICAgICAgIGNvbnN0IGRhdGUgPSB0aGlzLmRhdGUuZGF0ZTtcbiAgICAgICAgcmV0dXJuIChkYXRlLmdldEZ1bGxZZWFyKCkgPT09IHRvZGF5LmdldEZ1bGxZZWFyKCkgJiZcbiAgICAgICAgICAgIGRhdGUuZ2V0TW9udGgoKSA9PT0gdG9kYXkuZ2V0TW9udGgoKSAmJlxuICAgICAgICAgICAgZGF0ZS5nZXREYXRlKCkgPT09IHRvZGF5LmdldERhdGUoKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWNhbGVuZGFyX19kYXRlLS13ZWVrZW5kJylcbiAgICBwdWJsaWMgZ2V0IGlzV2Vla2VuZCgpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgZGF5ID0gdGhpcy5kYXRlLmRhdGUuZ2V0RGF5KCk7XG4gICAgICAgIHJldHVybiBkYXkgPT09IDAgfHwgZGF5ID09PSA2O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaXNEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWREYXRlcyA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGlzRGF0ZUluUmFuZ2VzKHRoaXMuZGF0ZS5kYXRlLCB0aGlzLmRpc2FibGVkRGF0ZXMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaXNPdXRPZlJhbmdlKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXRoaXMub3V0T2ZSYW5nZURhdGVzKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaXNEYXRlSW5SYW5nZXModGhpcy5kYXRlLmRhdGUsIHRoaXMub3V0T2ZSYW5nZURhdGVzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGlzRm9jdXNhYmxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pc0N1cnJlbnRNb250aCAmJiAhdGhpcy5pc0hpZGRlbiAmJiAhdGhpcy5pc0Rpc2FibGVkICYmICF0aGlzLmlzT3V0T2ZSYW5nZTtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1jYWxlbmRhcl9fZGF0ZS0tcmFuZ2UnKVxuICAgIHB1YmxpYyBnZXQgaXNXaXRoaW5SYW5nZUNTUygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmlzU2luZ2xlU2VsZWN0aW9uICYmIHRoaXMuaXNXaXRoaW5SYW5nZTtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1jYWxlbmRhcl9fZGF0ZS0tc3BlY2lhbCcpXG4gICAgcHVibGljIGdldCBpc1NwZWNpYWwoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLnNwZWNpYWxEYXRlcyA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGlzRGF0ZUluUmFuZ2VzKHRoaXMuZGF0ZS5kYXRlLCB0aGlzLnNwZWNpYWxEYXRlcyk7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtY2FsZW5kYXJfX2RhdGUnKVxuICAgIHB1YmxpYyBnZXQgZGVmYXVsdENTUygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0ZS5pc0N1cnJlbnRNb250aCAmJiAhKHRoaXMuaXNXZWVrZW5kICYmIHRoaXMuc2VsZWN0ZWQpO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWNhbGVuZGFyX19kYXRlLS1kaXNhYmxlZCcpXG4gICAgcHVibGljIGdldCBpc0Rpc2FibGVkQ1NTKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pc0hpZGRlbiB8fCB0aGlzLmlzRGlzYWJsZWQgfHwgdGhpcy5pc091dE9mUmFuZ2U7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtY2FsZW5kYXJfX2RhdGUtLXNpbmdsZScpXG4gICAgcHVibGljIGdldCBpc1NpbmdsZVNlbGVjdGlvbigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uICE9PSBDYWxlbmRhclNlbGVjdGlvbi5SQU5HRTtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIudGFiaW5kZXgnKVxuICAgIHB1YmxpYyBnZXQgdGFiaW5kZXgoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNEaXNhYmxlZCB8fCB0aGlzLmlzSGlkZGVuID8gLTEgOiAwO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3NlbGVjdGVkID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHsgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignY2xpY2snKVxuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uZW50ZXInKVxuICAgIHB1YmxpYyBvblNlbGVjdCgpIHtcbiAgICAgICAgdGhpcy5vbkRhdGVTZWxlY3Rpb24uZW1pdCh0aGlzLmRhdGUpO1xuICAgIH1cbn1cbiJdfQ==