UNPKG

@catull/igniteui-angular

Version:

Ignite UI for Angular is a dependency-free Angular toolkit for building modern web apps

172 lines 27.1 kB
import { __decorate, __metadata, __param } from "tslib"; import { Pipe, Inject } from '@angular/core'; import { IGX_TIME_PICKER_COMPONENT } from './time-picker.common'; /** * Formats `IgxTimePickerComponent` display value according to the `format` property, * when the input element loses focus. **/ var TimeDisplayFormatPipe = /** @class */ (function () { function TimeDisplayFormatPipe(timePicker) { this.timePicker = timePicker; } TimeDisplayFormatPipe.prototype.transform = function (value) { var hour, minutes, seconds, amPM; var maskAmPM = this.timePicker.parseMask(); var mask = this.timePicker.parseMask(false); if (!value || value === mask || value === maskAmPM) { return ''; } var sections = value.split(/[\s:]+/); if (this.timePicker.showHoursList) { hour = sections[0]; } if (this.timePicker.showMinutesList) { minutes = this.timePicker.showHoursList ? sections[1] : sections[0]; } if (this.timePicker.showSecondsList) { seconds = sections[sections.length - (this.timePicker.showAmPmList ? 2 : 1)]; } if (this.timePicker.showAmPmList) { amPM = sections[sections.length - 1]; } var format = this.timePicker.format; var prompt = this.timePicker.promptChar; var regExp = new RegExp(this.timePicker.promptChar, 'g'); if (format.indexOf('hh') !== -1 || format.indexOf('HH') !== -1 && hour.indexOf(prompt) !== -1) { hour = hour === prompt + prompt ? '00' : hour.replace(regExp, '0'); } if (format.indexOf('mm') !== -1 && minutes.indexOf(prompt) !== -1) { minutes = minutes === prompt + prompt ? '00' : minutes.replace(regExp, '0'); } if (format.indexOf('ss') !== -1 && seconds.indexOf(prompt) !== -1) { seconds = seconds === prompt + prompt ? '00' : seconds.replace(regExp, '0'); } if (format.indexOf('hh') === -1 && format.indexOf('HH') === -1 && hour !== undefined) { hour = hour.indexOf(prompt) !== -1 ? hour.replace(regExp, '') : hour; var hourVal = parseInt(hour, 10); hour = !hourVal ? '0' : hourVal < 10 && hourVal !== 0 ? hour.replace('0', '') : hour; } if (format.indexOf('mm') === -1 && minutes !== undefined) { minutes = minutes.indexOf(prompt) !== -1 ? minutes.replace(regExp, '') : minutes; var minutesVal = parseInt(minutes, 10); minutes = !minutesVal ? '0' : minutesVal < 10 && minutesVal !== 0 ? minutes.replace('0', '') : minutes; } if (format.indexOf('ss') === -1 && seconds !== undefined) { seconds = seconds.indexOf(prompt) !== -1 ? seconds.replace(regExp, '') : seconds; var secondsVal = parseInt(seconds, 10); seconds = !secondsVal ? '0' : secondsVal < 10 && secondsVal !== 0 ? seconds.replace('0', '') : seconds; } if (format.indexOf('tt') !== -1 && (amPM !== 'AM' || amPM !== 'PM')) { amPM = amPM.indexOf('p') !== -1 || amPM.indexOf('P') !== -1 ? 'PM' : 'AM'; } var result = hour + ":" + minutes + ":" + seconds; if (!hour) { // remove the hours result = result.slice(result.indexOf(':') + 1); } if (!minutes) { if (hour) { // get the hours and seconds and concat them result = result.slice(0, result.indexOf(':')) + result.slice(result.lastIndexOf(':'), result.length); } else { // remove the minutes result = result.slice(result.indexOf(':') + 1); } } if (!seconds) { // remove the seconds result = result.slice(0, result.lastIndexOf(':')); } return amPM ? result + " " + amPM : result; }; TimeDisplayFormatPipe.ctorParameters = function () { return [ { type: undefined, decorators: [{ type: Inject, args: [IGX_TIME_PICKER_COMPONENT,] }] } ]; }; TimeDisplayFormatPipe = __decorate([ Pipe({ name: 'displayFormat' }), __param(0, Inject(IGX_TIME_PICKER_COMPONENT)), __metadata("design:paramtypes", [Object]) ], TimeDisplayFormatPipe); return TimeDisplayFormatPipe; }()); export { TimeDisplayFormatPipe }; /** * Formats `IgxTimePickerComponent` display value according to the `format` property, * when the input element gets focus. **/ var TimeInputFormatPipe = /** @class */ (function () { function TimeInputFormatPipe(timePicker) { this.timePicker = timePicker; } TimeInputFormatPipe.prototype.transform = function (value) { var prompt = this.timePicker.promptChar; var regExp = new RegExp(prompt, 'g'); var mask, hour, minutes, seconds, amPM; if (this.timePicker.cleared) { this.timePicker.cleared = false; mask = this.timePicker.parseMask(false); } else { mask = this.timePicker.parseMask(); } if (!value || value === mask) { return mask; } var sections = value.split(/[\s:]+/); if (this.timePicker.showHoursList) { hour = sections[0]; hour = hour.replace(regExp, ''); var leadZeroHour = (parseInt(hour, 10) < 10 && !hour.startsWith('0')) || hour === '0'; hour = leadZeroHour ? '0' + hour : hour; } if (this.timePicker.showMinutesList) { minutes = this.timePicker.showHoursList ? sections[1] : sections[0]; minutes = minutes.replace(regExp, ''); var leadZeroMinutes = (parseInt(minutes, 10) < 10 && !minutes.startsWith('0')) || minutes === '0'; minutes = leadZeroMinutes ? '0' + minutes : minutes; } if (this.timePicker.showSecondsList) { seconds = sections[sections.length - (this.timePicker.showAmPmList ? 2 : 1)]; seconds = seconds.replace(regExp, ''); var leadZeroSeconds = (parseInt(seconds, 10) < 10 && !seconds.startsWith('0')) || seconds === '0'; seconds = leadZeroSeconds ? '0' + seconds : seconds; } if (this.timePicker.showAmPmList) { amPM = sections[sections.length - 1]; } var result = hour + ":" + minutes + ":" + seconds; if (!hour) { // remove the hours result = result.slice(result.indexOf(':') + 1); } if (!minutes) { if (hour) { // get the hours and seconds and concat them result = result.slice(0, result.indexOf(':')) + result.slice(result.lastIndexOf(':'), result.length); } else { // remove the minutes result = result.slice(result.indexOf(':') + 1); } } if (!seconds) { // remove the seconds result = result.slice(0, result.lastIndexOf(':')); } return amPM ? result + " " + amPM : result; }; TimeInputFormatPipe.ctorParameters = function () { return [ { type: undefined, decorators: [{ type: Inject, args: [IGX_TIME_PICKER_COMPONENT,] }] } ]; }; TimeInputFormatPipe = __decorate([ Pipe({ name: 'inputFormat' }), __param(0, Inject(IGX_TIME_PICKER_COMPONENT)), __metadata("design:paramtypes", [Object]) ], TimeInputFormatPipe); return TimeInputFormatPipe; }()); export { TimeInputFormatPipe }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1waWNrZXIucGlwZXMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9pZ25pdGV1aS1hbmd1bGFyLyIsInNvdXJjZXMiOlsibGliL3RpbWUtcGlja2VyL3RpbWUtcGlja2VyLnBpcGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUQsT0FBTyxFQUFFLHlCQUF5QixFQUFxQixNQUFNLHNCQUFzQixDQUFDO0FBR3BGOzs7SUFHSTtBQUVKO0lBQ0ksK0JBQXVELFVBQTZCO1FBQTdCLGVBQVUsR0FBVixVQUFVLENBQW1CO0lBQUksQ0FBQztJQUV6Rix5Q0FBUyxHQUFULFVBQVUsS0FBVTtRQUNoQixJQUFJLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQztRQUVqQyxJQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQzdDLElBQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxLQUFLLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssUUFBUSxFQUFFO1lBQ2hELE9BQU8sRUFBRSxDQUFDO1NBQ2I7UUFFRCxJQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXZDLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUU7WUFDL0IsSUFBSSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN0QjtRQUVELElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLEVBQUU7WUFDakMsT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN2RTtRQUVELElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLEVBQUU7WUFDakMsT0FBTyxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNoRjtRQUVELElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLEVBQUU7WUFDOUIsSUFBSSxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQ3hDO1FBRUQsSUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUM7UUFDdEMsSUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUM7UUFDMUMsSUFBTSxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFFM0QsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtZQUMzRixJQUFJLEdBQUcsSUFBSSxLQUFLLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDdEU7UUFFRCxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtZQUMvRCxPQUFPLEdBQUcsT0FBTyxLQUFLLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDL0U7UUFFRCxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtZQUMvRCxPQUFPLEdBQUcsT0FBTyxLQUFLLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDL0U7UUFFRCxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFO1lBQ2xGLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQ3JFLElBQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDbkMsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sR0FBRyxFQUFFLElBQUksT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztTQUN4RjtRQUVELElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxPQUFPLEtBQUssU0FBUyxFQUFFO1lBQ3RELE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO1lBQ2pGLElBQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDekMsT0FBTyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFVBQVUsR0FBRyxFQUFFLElBQUksVUFBVSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztTQUMxRztRQUVELElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxPQUFPLEtBQUssU0FBUyxFQUFFO1lBQ3RELE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO1lBQ2pGLElBQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDekMsT0FBTyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFVBQVUsR0FBRyxFQUFFLElBQUksVUFBVSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztTQUMxRztRQUVELElBQUksTUFBTSxDQUFDLE9B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LEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2FBQ2xEO1NBQ0o7UUFDRCxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ1YscUJBQXFCO1lBQ3JCLE1BQU0sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDckQ7UUFFRCxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUksTUFBTSxTQUFJLElBQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQy9DLENBQUM7O2dEQXRFWSxNQUFNLFNBQUMseUJBQXlCOztJQURwQyxtQkFBbUI7UUFEL0IsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxDQUFDO1FBRWIsV0FBQSxNQUFNLENBQUMseUJBQXlCLENBQUMsQ0FBQTs7T0FEckMsbUJBQW1CLENBd0UvQjtJQUFELDBCQUFDO0NBQUEsQUF4RUQsSUF3RUM7U0F4RVksbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJR1hfVElNRV9QSUNLRVJfQ09NUE9ORU5ULCBJZ3hUaW1lUGlja2VyQmFzZSB9IGZyb20gJy4vdGltZS1waWNrZXIuY29tbW9uJztcblxuXG4vKipcbiAqIEZvcm1hdHMgYElneFRpbWVQaWNrZXJDb21wb25lbnRgIGRpc3BsYXkgdmFsdWUgYWNjb3JkaW5nIHRvIHRoZSBgZm9ybWF0YCBwcm9wZXJ0eSxcbiAqIHdoZW4gdGhlIGlucHV0IGVsZW1lbnQgbG9zZXMgZm9jdXMuXG4gKiovXG5AUGlwZSh7IG5hbWU6ICdkaXNwbGF5Rm9ybWF0JyB9KVxuZXhwb3J0IGNsYXNzIFRpbWVEaXNwbGF5Rm9ybWF0UGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoSUdYX1RJTUVfUElDS0VSX0NPTVBPTkVOVCkgcHJpdmF0ZSB0aW1lUGlja2VyOiBJZ3hUaW1lUGlja2VyQmFzZSkgeyB9XG5cbiAgICB0cmFuc2Zvcm0odmFsdWU6IGFueSk6IHN0cmluZyB7XG4gICAgICAgIGxldCBob3VyLCBtaW51dGVzLCBzZWNvbmRzLCBhbVBNO1xuXG4gICAgICAgIGNvbnN0IG1hc2tBbVBNID0gdGhpcy50aW1lUGlja2VyLnBhcnNlTWFzaygpO1xuICAgICAgICBjb25zdCBtYXNrID0gdGhpcy50aW1lUGlja2VyLnBhcnNlTWFzayhmYWxzZSk7XG4gICAgICAgIGlmICghdmFsdWUgfHwgdmFsdWUgPT09IG1hc2sgfHwgdmFsdWUgPT09IG1hc2tBbVBNKSB7XG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzZWN0aW9ucyA9IHZhbHVlLnNwbGl0KC9bXFxzOl0rLyk7XG5cbiAgICAgICAgaWYgKHRoaXMudGltZVBpY2tlci5zaG93SG91cnNMaXN0KSB7XG4gICAgICAgICAgICBob3VyID0gc2VjdGlvbnNbMF07XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy50aW1lUGlja2VyLnNob3dNaW51dGVzTGlzdCkge1xuICAgICAgICAgICAgbWludXRlcyA9IHRoaXMudGltZVBpY2tlci5zaG93SG91cnNMaXN0ID8gc2VjdGlvbnNbMV0gOiBzZWN0aW9uc1swXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnRpbWVQaWNrZXIuc2hvd1NlY29uZHNMaXN0KSB7XG4gICAgICAgICAgICBzZWNvbmRzID0gc2VjdGlvbnNbc2VjdGlvbnMubGVuZ3RoIC0gKHRoaXMudGltZVBpY2tlci5zaG93QW1QbUxpc3QgPyAyIDogMSldO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMudGltZVBpY2tlci5zaG93QW1QbUxpc3QpIHtcbiAgICAgICAgICAgIGFtUE0gPSBzZWN0aW9uc1tzZWN0aW9ucy5sZW5ndGggLSAxXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZvcm1hdCA9IHRoaXMudGltZVBpY2tlci5mb3JtYXQ7XG4gICAgICAgIGNvbnN0IHByb21wdCA9IHRoaXMudGltZVBpY2tlci5wcm9tcHRDaGFyO1xuICAgICAgICBjb25zdCByZWdFeHAgPSBuZXcgUmVnRXhwKHRoaXMudGltZVBpY2tlci5wcm9tcHRDaGFyLCAnZycpO1xuXG4gICAgICAgIGlmIChmb3JtYXQuaW5kZXhPZignaGgnKSAhPT0gLTEgfHwgZm9ybWF0LmluZGV4T2YoJ0hIJykgIT09IC0xICYmIGhvdXIuaW5kZXhPZihwcm9tcHQpICE9PSAtMSkge1xuICAgICAgICAgICAgaG91ciA9IGhvdXIgPT09IHByb21wdCArIHByb21wdCA/ICcwMCcgOiBob3VyLnJlcGxhY2UocmVnRXhwLCAnMCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZvcm1hdC5pbmRleE9mKCdtbScpICE9PSAtMSAmJiBtaW51dGVzLmluZGV4T2YocHJvbXB0KSAhPT0gLTEpIHtcbiAgICAgICAgICAgIG1pbnV0ZXMgPSBtaW51dGVzID09PSBwcm9tcHQgKyBwcm9tcHQgPyAnMDAnIDogbWludXRlcy5yZXBsYWNlKHJlZ0V4cCwgJzAnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChmb3JtYXQuaW5kZXhPZignc3MnKSAhPT0gLTEgJiYgc2Vjb25kcy5pbmRleE9mKHByb21wdCkgIT09IC0xKSB7XG4gICAgICAgICAgICBzZWNvbmRzID0gc2Vjb25kcyA9PT0gcHJvbXB0ICsgcHJvbXB0ID8gJzAwJyA6IHNlY29uZHMucmVwbGFjZShyZWdFeHAsICcwJyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZm9ybWF0LmluZGV4T2YoJ2hoJykgPT09IC0xICYmIGZvcm1hdC5pbmRleE9mKCdISCcpID09PSAtMSAmJiBob3VyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGhvdXIgPSBob3VyLmluZGV4T2YocHJvbXB0KSAhPT0gLTEgPyBob3VyLnJlcGxhY2UocmVnRXhwLCAnJykgOiBob3VyO1xuICAgICAgICAgICAgY29uc3QgaG91clZhbCA9IHBhcnNlSW50KGhvdXIsIDEwKTtcbiAgICAgICAgICAgIGhvdXIgPSAhaG91clZhbCA/ICcwJyA6IGhvdXJWYWwgPCAxMCAmJiBob3VyVmFsICE9PSAwID8gaG91ci5yZXBsYWNlKCcwJywgJycpIDogaG91cjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChmb3JtYXQuaW5kZXhPZignbW0nKSA9PT0gLTEgJiYgbWludXRlcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBtaW51dGVzID0gbWludXRlcy5pbmRleE9mKHByb21wdCkgIT09IC0xID8gbWludXRlcy5yZXBsYWNlKHJlZ0V4cCwgJycpIDogbWludXRlcztcbiAgICAgICAgICAgIGNvbnN0IG1pbnV0ZXNWYWwgPSBwYXJzZUludChtaW51dGVzLCAxMCk7XG4gICAgICAgICAgICBtaW51dGVzID0gIW1pbnV0ZXNWYWwgPyAnMCcgOiBtaW51dGVzVmFsIDwgMTAgJiYgbWludXRlc1ZhbCAhPT0gMCA/IG1pbnV0ZXMucmVwbGFjZSgnMCcsICcnKSA6IG1pbnV0ZXM7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZm9ybWF0LmluZGV4T2YoJ3NzJykgPT09IC0xICYmIHNlY29uZHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgc2Vjb25kcyA9IHNlY29uZHMuaW5kZXhPZihwcm9tcHQpICE9PSAtMSA/IHNlY29uZHMucmVwbGFjZShyZWdFeHAsICcnKSA6IHNlY29uZHM7XG4gICAgICAgICAgICBjb25zdCBzZWNvbmRzVmFsID0gcGFyc2VJbnQoc2Vjb25kcywgMTApO1xuICAgICAgICAgICAgc2Vjb25kcyA9ICFzZWNvbmRzVmFsID8gJzAnIDogc2Vjb25kc1ZhbCA8IDEwICYmIHNlY29uZHNWYWwgIT09IDAgPyBzZWNvbmRzLnJlcGxhY2UoJzAnLCAnJykgOiBzZWNvbmRzO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZvcm1hdC5pbmRleE9mKCd0dCcpICE9PSAtMSAmJiAoYW1QTSAhPT0gJ0FNJyB8fCBhbVBNICE9PSAnUE0nKSkge1xuICAgICAgICAgICAgYW1QTSA9IGFtUE0uaW5kZXhPZigncCcpICE9PSAtMSB8fCBhbVBNLmluZGV4T2YoJ1AnKSAhPT0gLTEgPyAnUE0nIDogJ0FNJztcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCByZXN1bHQgPSBgJHtob3VyfToke21pbnV0ZXN9OiR7c2Vjb25kc31gO1xuICAgICAgICBpZiAoIWhvdXIpIHtcbiAgICAgICAgICAgIC8vIHJlbW92ZSB0aGUgaG91cnNcbiAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5zbGljZShyZXN1bHQuaW5kZXhPZignOicpICsgMSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFtaW51dGVzKSB7XG4gICAgICAgICAgICBpZiAoaG91cikge1xuICAgICAgICAgICAgICAgIC8vIGdldCB0aGUgaG91cnMgYW5kIHNlY29uZHMgYW5kIGNvbmNhdCB0aGVtXG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnNsaWNlKDAsIHJlc3VsdC5pbmRleE9mKCc6JykpICtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnNsaWNlKHJlc3VsdC5sYXN0SW5kZXhPZignOicpLCByZXN1bHQubGVuZ3RoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gcmVtb3ZlIHRoZSBtaW51dGVzXG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnNsaWNlKHJlc3VsdC5pbmRleE9mKCc6JykgKyAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIXNlY29uZHMpIHtcbiAgICAgICAgICAgIC8vIHJlbW92ZSB0aGUgc2Vjb25kc1xuICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnNsaWNlKDAsIHJlc3VsdC5sYXN0SW5kZXhPZignOicpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhbVBNID8gYCR7cmVzdWx0fSAke2FtUE19YCA6IHJlc3VsdDtcbiAgICB9XG59XG5cbi8qKlxuICogRm9ybWF0cyBgSWd4VGltZVBpY2tlckNvbXBvbmVudGAgZGlzcGxheSB2YWx1ZSBhY2NvcmRpbmcgdG8gdGhlIGBmb3JtYXRgIHByb3BlcnR5LFxuICogd2hlbiB0aGUgaW5wdXQgZWxlbWVudCBnZXRzIGZvY3VzLlxuICoqL1xuQFBpcGUoeyBuYW1lOiAnaW5wdXRGb3JtYXQnIH0pXG5leHBvcnQgY2xhc3MgVGltZUlucHV0Rm9ybWF0UGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoSUdYX1RJTUVfUElDS0VSX0NPTVBPTkVOVCkgcHJpdmF0ZSB0aW1lUGlja2VyOiBJZ3hUaW1lUGlja2VyQmFzZSkgeyB9XG5cbiAgICB0cmFuc2Zvcm0odmFsdWU6IGFueSk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IHByb21wdCA9IHRoaXMudGltZVBpY2tlci5wcm9tcHRDaGFyO1xuICAgICAgICBjb25zdCByZWdFeHAgPSBuZXcgUmVnRXhwKHByb21wdCwgJ2cnKTtcblxuICAgICAgICBsZXQgbWFzaywgaG91ciwgbWludXRlcywgc2Vjb25kcywgYW1QTTtcblxuICAgICAgICBpZiAodGhpcy50aW1lUGlja2VyLmNsZWFyZWQpIHtcbiAgICAgICAgICAgIHRoaXMudGltZVBpY2tlci5jbGVhcmVkID0gZmFsc2U7XG4gICAgICAgICAgICBtYXNrID0gdGhpcy50aW1lUGlja2VyLnBhcnNlTWFzayhmYWxzZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBtYXNrID0gdGhpcy50aW1lUGlja2VyLnBhcnNlTWFzaygpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF2YWx1ZSB8fCB2YWx1ZSA9PT0gbWFzaykge1xuICAgICAgICAgICAgcmV0dXJuIG1hc2s7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzZWN0aW9ucyA9IHZhbHVlLnNwbGl0KC9bXFxzOl0rLyk7XG5cbiAgICAgICAgaWYgKHRoaXMudGltZVBpY2tlci5zaG93SG91cnNMaXN0KSB7XG4gICAgICAgICAgICBob3VyID0gc2VjdGlvbnNbMF07XG4gICAgICAgICAgICBob3VyID0gaG91ci5yZXBsYWNlKHJlZ0V4cCwgJycpO1xuXG4gICAgICAgICAgICBjb25zdCBsZWFkWmVyb0hvdXIgPSAocGFyc2VJbnQoaG91ciwgMTApIDwgMTAgJiYgIWhvdXIuc3RhcnRzV2l0aCgnMCcpKSB8fCBob3VyID09PSAnMCc7XG4gICAgICAgICAgICBob3VyID0gbGVhZFplcm9Ib3VyID8gJzAnICsgaG91ciA6IGhvdXI7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy50aW1lUGlja2VyLnNob3dNaW51dGVzTGlzdCkge1xuICAgICAgICAgICAgbWludXRlcyA9IHRoaXMudGltZVBpY2tlci5zaG93SG91cnNMaXN0ID8gc2VjdGlvbnNbMV0gOiBzZWN0aW9uc1swXTtcbiAgICAgICAgICAgIG1pbnV0ZXMgPSBtaW51dGVzLnJlcGxhY2UocmVnRXhwLCAnJyk7XG5cbiAgICAgICAgICAgIGNvbnN0IGxlYWRaZXJvTWludXRlcyA9IChwYXJzZUludChtaW51dGVzLCAxMCkgPCAxMCAmJiAhbWludXRlcy5zdGFydHNXaXRoKCcwJykpIHx8IG1pbnV0ZXMgPT09ICcwJztcbiAgICAgICAgICAgIG1pbnV0ZXMgPSBsZWFkWmVyb01pbnV0ZXMgPyAnMCcgKyBtaW51dGVzIDogbWludXRlcztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnRpbWVQaWNrZXIuc2hvd1NlY29uZHNMaXN0KSB7XG4gICAgICAgICAgICBzZWNvbmRzID0gc2VjdGlvbnNbc2VjdGlvbnMubGVuZ3RoIC0gKHRoaXMudGltZVBpY2tlci5zaG93QW1QbUxpc3QgPyAyIDogMSldO1xuICAgICAgICAgICAgc2Vjb25kcyA9IHNlY29uZHMucmVwbGFjZShyZWdFeHAsICcnKTtcblxuICAgICAgICAgICAgY29uc3QgbGVhZFplcm9TZWNvbmRzID0gKHBhcnNlSW50KHNlY29uZHMsIDEwKSA8IDEwICYmICFzZWNvbmRzLnN0YXJ0c1dpdGgoJzAnKSkgfHwgc2Vjb25kcyA9PT0gJzAnO1xuICAgICAgICAgICAgc2Vjb25kcyA9IGxlYWRaZXJvU2Vjb25kcyA/ICcwJyArIHNlY29uZHMgOiBzZWNvbmRzO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMudGltZVBpY2tlci5zaG93QW1QbUxpc3QpIHtcbiAgICAgICAgICAgIGFtUE0gPSBzZWN0aW9uc1tzZWN0aW9ucy5sZW5ndGggLSAxXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCByZXN1bHQgPSBgJHtob3VyfToke21pbnV0ZXN9OiR7c2Vjb25kc31gO1xuICAgICAgICBpZiAoIWhvdXIpIHtcbiAgICAgICAgICAgIC8vIHJlbW92ZSB0aGUgaG91cnNcbiAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5zbGljZShyZXN1bHQuaW5kZXhPZignOicpICsgMSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFtaW51dGVzKSB7XG4gICAgICAgICAgICBpZiAoaG91cikge1xuICAgICAgICAgICAgICAgIC8vIGdldCB0aGUgaG91cnMgYW5kIHNlY29uZHMgYW5kIGNvbmNhdCB0aGVtXG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnNsaWNlKDAsIHJlc3VsdC5pbmRleE9mKCc6JykpICtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnNsaWNlKHJlc3VsdC5sYXN0SW5kZXhPZignOicpLCByZXN1bHQubGVuZ3RoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gcmVtb3ZlIHRoZSBtaW51dGVzXG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnNsaWNlKHJlc3VsdC5pbmRleE9mKCc6JykgKyAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIXNlY29uZHMpIHtcbiAgICAgICAgICAgIC8vIHJlbW92ZSB0aGUgc2Vjb25kc1xuICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnNsaWNlKDAsIHJlc3VsdC5sYXN0SW5kZXhPZignOicpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhbVBNID8gYCR7cmVzdWx0fSAke2FtUE19YCA6IHJlc3VsdDtcbiAgICB9XG59XG4iXX0=