igniteui-angular
Version:
Ignite UI for Angular is a dependency-free Angular toolkit for building modern web apps
147 lines • 15.6 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
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.
*
*/
export class TimeDisplayFormatPipe {
/**
* @param {?} timePicker
*/
constructor(timePicker) {
this.timePicker = timePicker;
}
/**
* @param {?} value
* @return {?}
*/
transform(value) {
/** @type {?} */
const maskAmPM = this.timePicker.parseMask();
/** @type {?} */
const mask = this.timePicker.parseMask(false);
if (!value || value === mask || value === maskAmPM) {
return '';
}
/** @type {?} */
const sections = value.split(/[\s:]+/);
/** @type {?} */
let hour = sections[0];
/** @type {?} */
let minutes = sections[1];
/** @type {?} */
let amPM = sections[2];
/** @type {?} */
const format = this.timePicker.format;
/** @type {?} */
const prompt = this.timePicker.promptChar;
/** @type {?} */
const 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('hh') === -1 && format.indexOf('HH') === -1) {
hour = hour.indexOf(prompt) !== -1 ? hour.replace(regExp, '') : hour;
/** @type {?} */
const hourVal = parseInt(hour, 10);
hour = !hourVal ? '0' : hourVal < 10 && hourVal !== 0 ? hour.replace('0', '') : hour;
}
if (format.indexOf('mm') === -1) {
minutes = minutes.indexOf(prompt) !== -1 ? minutes.replace(regExp, '') : minutes;
/** @type {?} */
const minutesVal = parseInt(minutes, 10);
minutes = !minutesVal ? '0' : minutesVal < 10 && minutesVal !== 0 ? minutes.replace('0', '') : minutes;
}
if (format.indexOf('tt') !== -1 && (amPM !== 'AM' || amPM !== 'PM')) {
amPM = amPM.indexOf('p') !== -1 || amPM.indexOf('P') !== -1 ? 'PM' : 'AM';
}
return amPM ? `${hour}:${minutes} ${amPM}` : `${hour}:${minutes}`;
}
}
TimeDisplayFormatPipe.decorators = [
{ type: Pipe, args: [{ name: 'displayFormat' },] }
];
/** @nocollapse */
TimeDisplayFormatPipe.ctorParameters = () => [
{ type: undefined, decorators: [{ type: Inject, args: [IGX_TIME_PICKER_COMPONENT,] }] }
];
if (false) {
/**
* @type {?}
* @private
*/
TimeDisplayFormatPipe.prototype.timePicker;
}
/**
* Formats `IgxTimePickerComponent` display value according to the `format` property,
* when the input element gets focus.
*
*/
export class TimeInputFormatPipe {
/**
* @param {?} timePicker
*/
constructor(timePicker) {
this.timePicker = timePicker;
}
/**
* @param {?} value
* @return {?}
*/
transform(value) {
/** @type {?} */
const prompt = this.timePicker.promptChar;
/** @type {?} */
const regExp = new RegExp(prompt, 'g');
/** @type {?} */
let mask;
if (this.timePicker.cleared) {
this.timePicker.cleared = false;
mask = this.timePicker.parseMask(false);
}
else {
mask = this.timePicker.parseMask();
}
if (!value || value === mask) {
return mask;
}
/** @type {?} */
const sections = value.split(/[\s:]+/);
/** @type {?} */
let hour = sections[0].replace(regExp, '');
/** @type {?} */
let minutes = sections[1].replace(regExp, '');
/** @type {?} */
const amPM = sections[2];
/** @type {?} */
const leadZeroHour = (parseInt(hour, 10) < 10 && !hour.startsWith('0')) || hour === '0';
/** @type {?} */
const leadZeroMinutes = (parseInt(minutes, 10) < 10 && !minutes.startsWith('0')) || minutes === '0';
hour = leadZeroHour ? '0' + hour : hour;
minutes = leadZeroMinutes ? '0' + minutes : minutes;
return amPM ? `${hour}:${minutes} ${amPM}` : `${hour}:${minutes}`;
}
}
TimeInputFormatPipe.decorators = [
{ type: Pipe, args: [{ name: 'inputFormat' },] }
];
/** @nocollapse */
TimeInputFormatPipe.ctorParameters = () => [
{ type: undefined, decorators: [{ type: Inject, args: [IGX_TIME_PICKER_COMPONENT,] }] }
];
if (false) {
/**
* @type {?}
* @private
*/
TimeInputFormatPipe.prototype.timePicker;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1waWNrZXIucGlwZXMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9pZ25pdGV1aS1hbmd1bGFyLyIsInNvdXJjZXMiOlsibGliL3RpbWUtcGlja2VyL3RpbWUtcGlja2VyLnBpcGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUFFLHlCQUF5QixFQUFxQixNQUFNLHNCQUFzQixDQUFDOzs7Ozs7QUFRcEYsTUFBTSxPQUFPLHFCQUFxQjs7OztJQUU3QixZQUF1RCxVQUE2QjtRQUE3QixlQUFVLEdBQVYsVUFBVSxDQUFtQjtJQUFJLENBQUM7Ozs7O0lBRXpGLFNBQVMsQ0FBQyxLQUFVOztjQUVYLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRTs7Y0FDdEMsSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQztRQUM3QyxJQUFJLENBQUMsS0FBSyxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLFFBQVEsRUFBRTtZQUNoRCxPQUFPLEVBQUUsQ0FBQztTQUNiOztjQUVLLFFBQVEsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQzs7WUFFbEMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUM7O1lBQ2xCLE9BQU8sR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDOztZQUNyQixJQUFJLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQzs7Y0FFaEIsTUFBTSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTTs7Y0FDL0IsTUFBTSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVTs7Y0FDbkMsTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQztRQUUxRCxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO1lBQzVGLElBQUksR0FBRyxJQUFJLEtBQUssTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztTQUNyRTtRQUVELElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO1lBQ2hFLE9BQU8sR0FBRyxPQUFPLEtBQUssTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztTQUM5RTtRQUVELElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO1lBQzVELElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDOztrQkFDL0QsT0FBTyxHQUFHLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQ2xDLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLEdBQUcsRUFBRSxJQUFJLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7U0FDeEY7UUFFRCxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7WUFDN0IsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7O2tCQUMzRSxVQUFVLEdBQUcsUUFBUSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7WUFDeEMsT0FBTyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFVBQVUsR0FBRyxFQUFFLElBQUksVUFBVSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztTQUMxRztRQUVELElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxJQUFJLElBQUksSUFBSSxLQUFLLElBQUksQ0FBQyxFQUFFO1lBQ2xFLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1NBQzVFO1FBRUQsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxJQUFJLE9BQU8sSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLElBQUksT0FBTyxFQUFFLENBQUM7SUFDdEUsQ0FBQzs7O1lBaERKLElBQUksU0FBQyxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUM7Ozs7NENBR1osTUFBTSxTQUFDLHlCQUF5Qjs7Ozs7OztJQUFqQywyQ0FBd0U7Ozs7Ozs7QUFxRHpGLE1BQU0sT0FBTyxtQkFBbUI7Ozs7SUFFNUIsWUFBdUQsVUFBNkI7UUFBN0IsZUFBVSxHQUFWLFVBQVUsQ0FBbUI7SUFBSSxDQUFDOzs7OztJQUV6RixTQUFTLENBQUMsS0FBVTs7Y0FDVixNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVOztjQUNuQyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQzs7WUFFbEMsSUFBWTtRQUNoQixJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFO1lBQ3pCLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztZQUNoQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDM0M7YUFBTTtZQUNILElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRSxDQUFDO1NBQ3RDO1FBRUQsSUFBSSxDQUFDLEtBQUssSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFFO1lBQzFCLE9BQU8sSUFBSSxDQUFDO1NBQ2Y7O2NBRUssUUFBUSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDOztZQUVsQyxJQUFJLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDOztZQUN0QyxPQUFPLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDOztjQUN2QyxJQUFJLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQzs7Y0FFbEIsWUFBWSxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksSUFBSSxLQUFLLEdBQUc7O2NBQ2pGLGVBQWUsR0FBRyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLE9BQU8sS0FBSyxHQUFHO1FBRW5HLElBQUksR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUN4QyxPQUFPLEdBQUcsZUFBZSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7UUFFcEQsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxJQUFJLE9BQU8sSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLElBQUksT0FBTyxFQUFFLENBQUM7SUFDdEUsQ0FBQzs7O1lBbENKLElBQUksU0FBQyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUU7Ozs7NENBR1osTUFBTSxTQUFDLHlCQUF5Qjs7Ozs7OztJQUFqQyx5Q0FBd0UiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtLCBJbmplY3R9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSUdYX1RJTUVfUElDS0VSX0NPTVBPTkVOVCwgSWd4VGltZVBpY2tlckJhc2UgfSBmcm9tICcuL3RpbWUtcGlja2VyLmNvbW1vbic7XG5cblxuLyoqXG4gKiBGb3JtYXRzIGBJZ3hUaW1lUGlja2VyQ29tcG9uZW50YCBkaXNwbGF5IHZhbHVlIGFjY29yZGluZyB0byB0aGUgYGZvcm1hdGAgcHJvcGVydHksXG4gKiB3aGVuIHRoZSBpbnB1dCBlbGVtZW50IGxvc2VzIGZvY3VzLlxuICoqL1xuQFBpcGUoeyBuYW1lOiAnZGlzcGxheUZvcm1hdCd9KVxuZXhwb3J0IGNsYXNzIFRpbWVEaXNwbGF5Rm9ybWF0UGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuXG4gICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoSUdYX1RJTUVfUElDS0VSX0NPTVBPTkVOVCkgcHJpdmF0ZSB0aW1lUGlja2VyOiBJZ3hUaW1lUGlja2VyQmFzZSkgeyB9XG5cbiAgICAgdHJhbnNmb3JtKHZhbHVlOiBhbnkpOiBzdHJpbmcge1xuXG4gICAgICAgIGNvbnN0IG1hc2tBbVBNID0gdGhpcy50aW1lUGlja2VyLnBhcnNlTWFzaygpO1xuICAgICAgICBjb25zdCBtYXNrID0gdGhpcy50aW1lUGlja2VyLnBhcnNlTWFzayhmYWxzZSk7XG4gICAgICAgIGlmICghdmFsdWUgfHwgdmFsdWUgPT09IG1hc2sgfHwgdmFsdWUgPT09IG1hc2tBbVBNKSB7XG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzZWN0aW9ucyA9IHZhbHVlLnNwbGl0KC9bXFxzOl0rLyk7XG5cbiAgICAgICAgbGV0IGhvdXIgPSBzZWN0aW9uc1swXTtcbiAgICAgICAgbGV0IG1pbnV0ZXMgPSBzZWN0aW9uc1sxXTtcbiAgICAgICAgbGV0IGFtUE0gPSBzZWN0aW9uc1syXTtcblxuICAgICAgICBjb25zdCBmb3JtYXQgPSB0aGlzLnRpbWVQaWNrZXIuZm9ybWF0O1xuICAgICAgICBjb25zdCBwcm9tcHQgPSB0aGlzLnRpbWVQaWNrZXIucHJvbXB0Q2hhcjtcbiAgICAgICAgY29uc3QgcmVnRXhwID0gbmV3IFJlZ0V4cCh0aGlzLnRpbWVQaWNrZXIucHJvbXB0Q2hhciwgJ2cnKTtcblxuICAgICAgICBpZiAoZm9ybWF0LmluZGV4T2YoJ2hoJykgIT09IC0xIHx8IGZvcm1hdC5pbmRleE9mKCdISCcpICE9PSAtMSAmJiBob3VyLmluZGV4T2YocHJvbXB0KSAhPT0gLTEpIHtcbiAgICAgICAgICAgaG91ciA9IGhvdXIgPT09IHByb21wdCArIHByb21wdCA/ICcwMCcgOiBob3VyLnJlcGxhY2UocmVnRXhwLCAnMCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZvcm1hdC5pbmRleE9mKCdtbScpICE9PSAtMSAmJiBtaW51dGVzLmluZGV4T2YocHJvbXB0KSAhPT0gLTEpIHtcbiAgICAgICAgICAgbWludXRlcyA9IG1pbnV0ZXMgPT09IHByb21wdCArIHByb21wdCA/ICcwMCcgOiBtaW51dGVzLnJlcGxhY2UocmVnRXhwLCAnMCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZvcm1hdC5pbmRleE9mKCdoaCcpID09PSAtMSAmJiBmb3JtYXQuaW5kZXhPZignSEgnKSA9PT0gLTEpIHtcbiAgICAgICAgICAgIGhvdXIgPSBob3VyLmluZGV4T2YocHJvbXB0KSAhPT0gLTEgPyBob3VyLnJlcGxhY2UocmVnRXhwLCAnJykgOiBob3VyO1xuICAgICAgICAgICAgY29uc3QgaG91clZhbCA9IHBhcnNlSW50KGhvdXIsIDEwKTtcbiAgICAgICAgICAgIGhvdXIgPSAhaG91clZhbCA/ICcwJyA6IGhvdXJWYWwgPCAxMCAmJiBob3VyVmFsICE9PSAwID8gaG91ci5yZXBsYWNlKCcwJywgJycpIDogaG91cjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChmb3JtYXQuaW5kZXhPZignbW0nKSA9PT0gLTEpIHtcbiAgICAgICAgICAgIG1pbnV0ZXMgPSBtaW51dGVzLmluZGV4T2YocHJvbXB0KSAhPT0gLTEgPyBtaW51dGVzLnJlcGxhY2UocmVnRXhwLCAnJykgOiBtaW51dGVzO1xuICAgICAgICAgICAgY29uc3QgbWludXRlc1ZhbCA9IHBhcnNlSW50KG1pbnV0ZXMsIDEwKTtcbiAgICAgICAgICAgIG1pbnV0ZXMgPSAhbWludXRlc1ZhbCA/ICcwJyA6IG1pbnV0ZXNWYWwgPCAxMCAmJiBtaW51dGVzVmFsICE9PSAwID8gbWludXRlcy5yZXBsYWNlKCcwJywgJycpIDogbWludXRlcztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChmb3JtYXQuaW5kZXhPZigndHQnKSAhPT0gLTEgJiYgKGFtUE0gIT09ICdBTScgfHwgYW1QTSAhPT0gJ1BNJykpIHtcbiAgICAgICAgICAgYW1QTSA9IGFtUE0uaW5kZXhPZigncCcpICE9PSAtMSB8fCBhbVBNLmluZGV4T2YoJ1AnKSAhPT0gLTEgPyAnUE0nIDogJ0FNJztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhbVBNID8gYCR7aG91cn06JHttaW51dGVzfSAke2FtUE19YCA6IGAke2hvdXJ9OiR7bWludXRlc31gO1xuICAgIH1cbn1cblxuLyoqXG4gKiBGb3JtYXRzIGBJZ3hUaW1lUGlja2VyQ29tcG9uZW50YCBkaXNwbGF5IHZhbHVlIGFjY29yZGluZyB0byB0aGUgYGZvcm1hdGAgcHJvcGVydHksXG4gKiB3aGVuIHRoZSBpbnB1dCBlbGVtZW50IGdldHMgZm9jdXMuXG4gKiovXG5AUGlwZSh7IG5hbWU6ICdpbnB1dEZvcm1hdCcgfSlcbmV4cG9ydCBjbGFzcyBUaW1lSW5wdXRGb3JtYXRQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG5cbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KElHWF9USU1FX1BJQ0tFUl9DT01QT05FTlQpIHByaXZhdGUgdGltZVBpY2tlcjogSWd4VGltZVBpY2tlckJhc2UpIHsgfVxuXG4gICAgdHJhbnNmb3JtKHZhbHVlOiBhbnkpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBwcm9tcHQgPSB0aGlzLnRpbWVQaWNrZXIucHJvbXB0Q2hhcjtcbiAgICAgICAgY29uc3QgcmVnRXhwID0gbmV3IFJlZ0V4cChwcm9tcHQsICdnJyk7XG5cbiAgICAgICAgbGV0IG1hc2s6IHN0cmluZztcbiAgICAgICAgaWYgKHRoaXMudGltZVBpY2tlci5jbGVhcmVkKSB7XG4gICAgICAgICAgICB0aGlzLnRpbWVQaWNrZXIuY2xlYXJlZCA9IGZhbHNlO1xuICAgICAgICAgICAgbWFzayA9IHRoaXMudGltZVBpY2tlci5wYXJzZU1hc2soZmFsc2UpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbWFzayA9IHRoaXMudGltZVBpY2tlci5wYXJzZU1hc2soKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdmFsdWUgfHwgdmFsdWUgPT09IG1hc2spIHtcbiAgICAgICAgICAgIHJldHVybiBtYXNrO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc2VjdGlvbnMgPSB2YWx1ZS5zcGxpdCgvW1xcczpdKy8pO1xuXG4gICAgICAgIGxldCBob3VyID0gc2VjdGlvbnNbMF0ucmVwbGFjZShyZWdFeHAsICcnKTtcbiAgICAgICAgbGV0IG1pbnV0ZXMgPSBzZWN0aW9uc1sxXS5yZXBsYWNlKHJlZ0V4cCwgJycpO1xuICAgICAgICBjb25zdCBhbVBNID0gc2VjdGlvbnNbMl07XG5cbiAgICAgICAgY29uc3QgbGVhZFplcm9Ib3VyID0gKHBhcnNlSW50KGhvdXIsIDEwKSA8IDEwICYmICFob3VyLnN0YXJ0c1dpdGgoJzAnKSkgfHwgaG91ciA9PT0gJzAnO1xuICAgICAgICBjb25zdCBsZWFkWmVyb01pbnV0ZXMgPSAocGFyc2VJbnQobWludXRlcywgMTApIDwgMTAgJiYgIW1pbnV0ZXMuc3RhcnRzV2l0aCgnMCcpKSB8fCBtaW51dGVzID09PSAnMCc7XG5cbiAgICAgICAgaG91ciA9IGxlYWRaZXJvSG91ciA/ICcwJyArIGhvdXIgOiBob3VyO1xuICAgICAgICBtaW51dGVzID0gbGVhZFplcm9NaW51dGVzID8gJzAnICsgbWludXRlcyA6IG1pbnV0ZXM7XG5cbiAgICAgICAgcmV0dXJuIGFtUE0gPyBgJHtob3VyfToke21pbnV0ZXN9ICR7YW1QTX1gIDogYCR7aG91cn06JHttaW51dGVzfWA7XG4gICAgfVxufVxuIl19