mantine-datepicker-jalali
Version:
jalali datepicker of mantine library
226 lines (219 loc) • 29.1 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var dayjs = require('dayjs');
var React = require('react');
var core = require('@mantine/core');
var hooks = require('@mantine/hooks');
var Calendar = require('../Calendar/Calendar.js');
var pickCalendarLevelsProps = require('../Calendar/pick-calendar-levels-props/pick-calendar-levels-props.js');
var HiddenDatesInput = require('../HiddenDatesInput/HiddenDatesInput.js');
var assignTime = require('../../utils/assign-time/assign-time.js');
require('../DatesProvider/DatesProvider.js');
var useDatesContext = require('../DatesProvider/use-dates-context.js');
var isDateValid = require('./is-date-valid/is-date-valid.js');
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e["default"] : e; }
var dayjs__default = /*#__PURE__*/_interopDefaultLegacy(dayjs);
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
var __defProp = Object.defineProperty;
var __defProps = Object.defineProperties;
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __propIsEnum = Object.prototype.propertyIsEnumerable;
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
var __spreadValues = (a, b) => {
for (var prop in b || (b = {}))
if (__hasOwnProp.call(b, prop))
__defNormalProp(a, prop, b[prop]);
if (__getOwnPropSymbols)
for (var prop of __getOwnPropSymbols(b)) {
if (__propIsEnum.call(b, prop))
__defNormalProp(a, prop, b[prop]);
}
return a;
};
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
var __objRest = (source, exclude) => {
var target = {};
for (var prop in source)
if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
target[prop] = source[prop];
if (source != null && __getOwnPropSymbols)
for (var prop of __getOwnPropSymbols(source)) {
if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
target[prop] = source[prop];
}
return target;
};
const defaultProps = {
valueFormat: "MMMM D, YYYY",
fixOnBlur: true,
preserveTime: true
};
const DateInput = React.forwardRef((props, ref) => {
const _a = core.useInputProps("DateInput", defaultProps, props), {
inputProps,
wrapperProps,
value,
defaultValue,
onChange,
clearable,
clearButtonProps,
popoverProps,
getDayProps,
locale,
valueFormat,
dateParser,
minDate,
maxDate,
fixOnBlur,
onFocus,
onBlur,
onClick,
readOnly,
name,
form,
rightSection,
unstyled,
classNames,
styles,
allowDeselect,
preserveTime
} = _a, rest = __objRest(_a, [
"inputProps",
"wrapperProps",
"value",
"defaultValue",
"onChange",
"clearable",
"clearButtonProps",
"popoverProps",
"getDayProps",
"locale",
"valueFormat",
"dateParser",
"minDate",
"maxDate",
"fixOnBlur",
"onFocus",
"onBlur",
"onClick",
"readOnly",
"name",
"form",
"rightSection",
"unstyled",
"classNames",
"styles",
"allowDeselect",
"preserveTime"
]);
const { calendarProps, others } = pickCalendarLevelsProps.pickCalendarProps(rest);
const ctx = useDatesContext.useDatesContext();
const defaultDateParser = (val) => dayjs__default(val, valueFormat, ctx.getLocale(locale)).toDate();
const _dateParser = dateParser || defaultDateParser;
const _allowDeselect = clearable || allowDeselect;
const [_value, setValue, controlled] = hooks.useUncontrolled({
value,
defaultValue,
finalValue: null,
onChange
});
const formatValue = (val) => val ? locale && locale === "fa" ? new Intl.DateTimeFormat("fa-IR", { dateStyle: "long" }).format(val) : dayjs__default(val).locale(ctx.getLocale(locale)).format(valueFormat) : "";
const [inputValue, setInputValue] = React.useState(formatValue(_value));
const [dropdownOpened, setDropdownOpened] = React.useState(false);
const handleInputChange = (event) => {
const val = event.currentTarget.value;
setInputValue(val);
if (val.trim() === "" && _allowDeselect) {
setValue(null);
} else {
const dateValue = _dateParser(val);
isDateValid.isDateValid({ date: dateValue, minDate, maxDate }) && setValue(dateValue);
}
};
const handleInputBlur = (event) => {
onBlur == null ? void 0 : onBlur(event);
setDropdownOpened(false);
fixOnBlur && setInputValue(formatValue(_value));
};
const handleInputFocus = (event) => {
onFocus == null ? void 0 : onFocus(event);
setDropdownOpened(true);
};
const handleInputClick = (event) => {
onClick == null ? void 0 : onClick(event);
setDropdownOpened(true);
};
const _getDayProps = (date) => __spreadProps(__spreadValues({}, getDayProps == null ? void 0 : getDayProps(date)), {
selected: dayjs__default(_value).isSame(date, "day"),
onClick: () => {
const valueWithTime = preserveTime ? assignTime.assignTime(_value, date) : date;
const val = _allowDeselect ? dayjs__default(_value).isSame(date, "day") ? null : valueWithTime : valueWithTime;
setValue(val);
!controlled && setInputValue(formatValue(val));
setDropdownOpened(false);
}
});
const _rightSection = rightSection || (clearable && _value && !readOnly ? /* @__PURE__ */ React__default.createElement(core.CloseButton, __spreadValues({
variant: "transparent",
onMouseDown: (event) => event.preventDefault(),
tabIndex: -1,
onClick: () => {
setValue(null);
!controlled && setInputValue("");
},
unstyled
}, clearButtonProps)) : null);
hooks.useDidUpdate(() => {
value !== void 0 && !dropdownOpened && setInputValue(formatValue(value));
}, [value]);
return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement(core.Input.Wrapper, __spreadProps(__spreadValues({}, wrapperProps), {
__staticSelector: "DateInput"
}), /* @__PURE__ */ React__default.createElement(core.Popover, __spreadValues({
opened: dropdownOpened,
trapFocus: false,
position: "bottom-start",
disabled: readOnly
}, popoverProps), /* @__PURE__ */ React__default.createElement(core.Popover.Target, null, /* @__PURE__ */ React__default.createElement(core.Input, __spreadProps(__spreadValues(__spreadValues({
style: {
direction: locale && locale === "fa" ? "rtl" : "ltr",
textAlignLast: locale && locale === "fa" ? "right" : "auto"
},
"data-dates-input": true,
"data-read-only": readOnly || void 0,
autoComplete: "off",
ref,
value: inputValue,
onChange: handleInputChange,
onBlur: handleInputBlur,
onFocus: handleInputFocus,
onClick: handleInputClick,
readOnly,
rightSection: _rightSection
}, inputProps), others), {
__staticSelector: "DateInput"
}))), /* @__PURE__ */ React__default.createElement(core.Popover.Dropdown, {
onMouseDown: (event) => event.preventDefault(),
"data-dates-dropdown": true
}, /* @__PURE__ */ React__default.createElement(Calendar.Calendar, __spreadProps(__spreadValues({
__staticSelector: "DateInput",
defaultDate: _value || void 0
}, calendarProps), {
classNames,
styles,
unstyled,
__preventFocus: true,
minDate,
maxDate,
locale,
getDayProps: _getDayProps
}))))), /* @__PURE__ */ React__default.createElement(HiddenDatesInput.HiddenDatesInput, {
name,
form,
value: _value,
type: "default"
}));
});
exports.DateInput = DateInput;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGF0ZUlucHV0LmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9EYXRlSW5wdXQvRGF0ZUlucHV0LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnO1xuaW1wb3J0IFJlYWN0LCB7IGZvcndhcmRSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtcbiAgRGVmYXVsdFByb3BzLFxuICBJbnB1dFNoYXJlZFByb3BzLFxuICBJbnB1dFdyYXBwZXJCYXNlUHJvcHMsXG4gIElucHV0U3R5bGVzTmFtZXMsXG4gIElucHV0V3JhcHBlclN0eWxlc05hbWVzLFxuICB1c2VJbnB1dFByb3BzLFxuICBJbnB1dCxcbiAgUG9wb3ZlclByb3BzLFxuICBQb3BvdmVyLFxuICBDbG9zZUJ1dHRvbixcbn0gZnJvbSAnQG1hbnRpbmUvY29yZSc7XG5pbXBvcnQgeyB1c2VVbmNvbnRyb2xsZWQsIHVzZURpZFVwZGF0ZSB9IGZyb20gJ0BtYW50aW5lL2hvb2tzJztcbmltcG9ydCB7IENhbGVuZGFyLCBDYWxlbmRhckJhc2VQcm9wcywgQ2FsZW5kYXJTdHlsZXNOYW1lcywgcGlja0NhbGVuZGFyUHJvcHMgfSBmcm9tICcuLi9DYWxlbmRhcic7XG5pbXBvcnQgeyBEZWNhZGVMZXZlbFNldHRpbmdzIH0gZnJvbSAnLi4vRGVjYWRlTGV2ZWwnO1xuaW1wb3J0IHsgWWVhckxldmVsU2V0dGluZ3MgfSBmcm9tICcuLi9ZZWFyTGV2ZWwnO1xuaW1wb3J0IHsgTW9udGhMZXZlbFNldHRpbmdzIH0gZnJvbSAnLi4vTW9udGhMZXZlbCc7XG5pbXBvcnQgeyBIaWRkZW5EYXRlc0lucHV0IH0gZnJvbSAnLi4vSGlkZGVuRGF0ZXNJbnB1dCc7XG5pbXBvcnQgeyBhc3NpZ25UaW1lIH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHsgRGF0ZVZhbHVlIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgdXNlRGF0ZXNDb250ZXh0IH0gZnJvbSAnLi4vRGF0ZXNQcm92aWRlcic7XG5pbXBvcnQgeyBpc0RhdGVWYWxpZCB9IGZyb20gJy4vaXMtZGF0ZS12YWxpZC9pcy1kYXRlLXZhbGlkJztcblxuZXhwb3J0IHR5cGUgRGF0ZUlucHV0U3R5bGVzTmFtZXMgPSBDYWxlbmRhclN0eWxlc05hbWVzIHwgSW5wdXRTdHlsZXNOYW1lcyB8IElucHV0V3JhcHBlclN0eWxlc05hbWVzO1xuXG5leHBvcnQgaW50ZXJmYWNlIERhdGVJbnB1dFByb3BzXG4gIGV4dGVuZHMgRGVmYXVsdFByb3BzPERhdGVJbnB1dFN0eWxlc05hbWVzPixcbiAgICBJbnB1dFNoYXJlZFByb3BzLFxuICAgIElucHV0V3JhcHBlckJhc2VQcm9wcyxcbiAgICBDYWxlbmRhckJhc2VQcm9wcyxcbiAgICBEZWNhZGVMZXZlbFNldHRpbmdzLFxuICAgIFllYXJMZXZlbFNldHRpbmdzLFxuICAgIE1vbnRoTGV2ZWxTZXR0aW5ncyxcbiAgICBPbWl0PFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjwnaW5wdXQnPiwgJ3NpemUnIHwgJ3ZhbHVlJyB8ICdkZWZhdWx0VmFsdWUnIHwgJ29uQ2hhbmdlJz4ge1xuICAvKiogUGFyc2VzIHVzZXIgaW5wdXQgdG8gY29udmVydCBpdCB0byBEYXRlIG9iamVjdCAqL1xuICBkYXRlUGFyc2VyPzogKHZhbHVlOiBzdHJpbmcpID0+IERhdGU7XG5cbiAgLyoqIFZhbHVlIGZvciBjb250cm9sbGVkIGNvbXBvbmVudCAqL1xuICB2YWx1ZT86IERhdGVWYWx1ZTtcblxuICAvKiogRGVmYXVsdCB2YWx1ZSBmb3IgdW5jb250cm9sbGVkIGNvbXBvbmVudCAqL1xuICBkZWZhdWx0VmFsdWU/OiBEYXRlVmFsdWU7XG5cbiAgLyoqIENhbGxlZCB3aGVuIHZhbHVlIGNoYW5nZXMgKi9cbiAgb25DaGFuZ2U/KHZhbHVlOiBEYXRlVmFsdWUpOiB2b2lkO1xuXG4gIC8qKiBQcm9wcyBhZGRlZCB0byBQb3BvdmVyIGNvbXBvbmVudCAqL1xuICBwb3BvdmVyUHJvcHM/OiBQYXJ0aWFsPE9taXQ8UG9wb3ZlclByb3BzLCAnY2hpbGRyZW4nPj47XG5cbiAgLyoqIERldGVybWluZXMgd2hldGhlciBpbnB1dCB2YWx1ZSBjYW4gYmUgY2xlYXJlZCwgYWRkcyBjbGVhciBidXR0b24gdG8gcmlnaHQgc2VjdGlvbiwgZmFsc2UgYnkgZGVmYXVsdCAqL1xuICBjbGVhcmFibGU/OiBib29sZWFuO1xuXG4gIC8qKiBQcm9wcyBhZGRlZCB0byBjbGVhciBidXR0b24gKi9cbiAgY2xlYXJCdXR0b25Qcm9wcz86IFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjwnYnV0dG9uJz47XG5cbiAgLyoqIERheWpzIGZvcm1hdCB0byBkaXNwbGF5IGlucHV0IHZhbHVlLCBcIk1NTU0gRCwgWVlZWVwiIGJ5IGRlZmF1bHQgICovXG4gIHZhbHVlRm9ybWF0Pzogc3RyaW5nO1xuXG4gIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgaW5wdXQgdmFsdWUgc2hvdWxkIGJlIHJldmVydGVkIHRvIGxhc3Qga25vd24gdmFsaWQgdmFsdWUgb24gYmx1ciwgdHJ1ZSBieSBkZWZhdWx0ICovXG4gIGZpeE9uQmx1cj86IGJvb2xlYW47XG5cbiAgLyoqIERldGVybWluZXMgd2hldGhlciB2YWx1ZSBjYW4gYmUgZGVzZWxlY3RlZCB3aGVuIHRoZSB1c2VyIGNsaWNrcyBvbiB0aGUgc2VsZWN0ZWQgZGF0ZSBpbiB0aGUgY2FsZW5kYXIgb3IgZXJhc2VzIGNvbnRlbnQgb2YgdGhlIGlucHV0LCB0cnVlIGlmIGNsZWFyYWJsZSBwcm9wIGlzIHNldCwgZmFsc2UgYnkgZGVmYXVsdCAqL1xuICBhbGxvd0Rlc2VsZWN0PzogYm9vbGVhbjtcblxuICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIHRpbWUgKGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzIGFuZCBtaWxsaXNlY29uZHMpIHNob3VsZCBiZSBwcmVzZXJ2ZWQgd2hlbiBuZXcgZGF0ZSBpcyBwaWNrZWQsIHRydWUgYnkgZGVmYXVsdCAqL1xuICBwcmVzZXJ2ZVRpbWU/OiBib29sZWFuO1xufVxuXG5jb25zdCBkZWZhdWx0UHJvcHM6IFBhcnRpYWw8RGF0ZUlucHV0UHJvcHM+ID0ge1xuICB2YWx1ZUZvcm1hdDogJ01NTU0gRCwgWVlZWScsXG4gIGZpeE9uQmx1cjogdHJ1ZSxcbiAgcHJlc2VydmVUaW1lOiB0cnVlLFxufTtcblxuZXhwb3J0IGNvbnN0IERhdGVJbnB1dCA9IGZvcndhcmRSZWY8SFRNTElucHV0RWxlbWVudCwgRGF0ZUlucHV0UHJvcHM+KChwcm9wcywgcmVmKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBpbnB1dFByb3BzLFxuICAgIHdyYXBwZXJQcm9wcyxcbiAgICB2YWx1ZSxcbiAgICBkZWZhdWx0VmFsdWUsXG4gICAgb25DaGFuZ2UsXG4gICAgY2xlYXJhYmxlLFxuICAgIGNsZWFyQnV0dG9uUHJvcHMsXG4gICAgcG9wb3ZlclByb3BzLFxuICAgIGdldERheVByb3BzLFxuICAgIGxvY2FsZSxcbiAgICB2YWx1ZUZvcm1hdCxcbiAgICBkYXRlUGFyc2VyLFxuICAgIG1pbkRhdGUsXG4gICAgbWF4RGF0ZSxcbiAgICBmaXhPbkJsdXIsXG4gICAgb25Gb2N1cyxcbiAgICBvbkJsdXIsXG4gICAgb25DbGljayxcbiAgICByZWFkT25seSxcbiAgICBuYW1lLFxuICAgIGZvcm0sXG4gICAgcmlnaHRTZWN0aW9uLFxuICAgIHVuc3R5bGVkLFxuICAgIGNsYXNzTmFtZXMsXG4gICAgc3R5bGVzLFxuICAgIGFsbG93RGVzZWxlY3QsXG4gICAgcHJlc2VydmVUaW1lLFxuICAgIC4uLnJlc3RcbiAgfSA9IHVzZUlucHV0UHJvcHMoJ0RhdGVJbnB1dCcsIGRlZmF1bHRQcm9wcywgcHJvcHMpO1xuICBjb25zdCB7IGNhbGVuZGFyUHJvcHMsIG90aGVycyB9ID0gcGlja0NhbGVuZGFyUHJvcHMocmVzdCk7XG4gIGNvbnN0IGN0eCA9IHVzZURhdGVzQ29udGV4dCgpO1xuICBjb25zdCBkZWZhdWx0RGF0ZVBhcnNlciA9ICh2YWw6IHN0cmluZykgPT5cbiAgICBkYXlqcyh2YWwsIHZhbHVlRm9ybWF0LCBjdHguZ2V0TG9jYWxlKGxvY2FsZSkpLnRvRGF0ZSgpO1xuXG4gIGNvbnN0IF9kYXRlUGFyc2VyID0gZGF0ZVBhcnNlciB8fCBkZWZhdWx0RGF0ZVBhcnNlcjtcbiAgY29uc3QgX2FsbG93RGVzZWxlY3QgPSBjbGVhcmFibGUgfHwgYWxsb3dEZXNlbGVjdDtcblxuICBjb25zdCBbX3ZhbHVlLCBzZXRWYWx1ZSwgY29udHJvbGxlZF0gPSB1c2VVbmNvbnRyb2xsZWQoe1xuICAgIHZhbHVlLFxuICAgIGRlZmF1bHRWYWx1ZSxcbiAgICBmaW5hbFZhbHVlOiBudWxsLFxuICAgIG9uQ2hhbmdlLFxuICB9KTtcblxuICBjb25zdCBmb3JtYXRWYWx1ZSA9ICh2YWw6IERhdGUpID0+XG4gICAgdmFsXG4gICAgICA/IGxvY2FsZSAmJiBsb2NhbGUgPT09ICdmYSdcbiAgICAgICAgPyBuZXcgSW50bC5EYXRlVGltZUZvcm1hdCgnZmEtSVInLCB7IGRhdGVTdHlsZTogJ2xvbmcnIH0pLmZvcm1hdCh2YWwpXG4gICAgICAgIDogZGF5anModmFsKS5sb2NhbGUoY3R4LmdldExvY2FsZShsb2NhbGUpKS5mb3JtYXQodmFsdWVGb3JtYXQpXG4gICAgICA6ICcnO1xuXG4gIGNvbnN0IFtpbnB1dFZhbHVlLCBzZXRJbnB1dFZhbHVlXSA9IHVzZVN0YXRlKGZvcm1hdFZhbHVlKF92YWx1ZSkpO1xuICBjb25zdCBbZHJvcGRvd25PcGVuZWQsIHNldERyb3Bkb3duT3BlbmVkXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICBjb25zdCBoYW5kbGVJbnB1dENoYW5nZSA9IChldmVudDogUmVhY3QuQ2hhbmdlRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHtcbiAgICBjb25zdCB2YWwgPSBldmVudC5jdXJyZW50VGFyZ2V0LnZhbHVlO1xuICAgIHNldElucHV0VmFsdWUodmFsKTtcblxuICAgIGlmICh2YWwudHJpbSgpID09PSAnJyAmJiBfYWxsb3dEZXNlbGVjdCkge1xuICAgICAgc2V0VmFsdWUobnVsbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGRhdGVWYWx1ZSA9IF9kYXRlUGFyc2VyKHZhbCk7XG4gICAgICBpc0RhdGVWYWxpZCh7IGRhdGU6IGRhdGVWYWx1ZSwgbWluRGF0ZSwgbWF4RGF0ZSB9KSAmJiBzZXRWYWx1ZShkYXRlVmFsdWUpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBoYW5kbGVJbnB1dEJsdXIgPSAoZXZlbnQ6IFJlYWN0LkZvY3VzRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHtcbiAgICBvbkJsdXI/LihldmVudCk7XG4gICAgc2V0RHJvcGRvd25PcGVuZWQoZmFsc2UpO1xuICAgIGZpeE9uQmx1ciAmJiBzZXRJbnB1dFZhbHVlKGZvcm1hdFZhbHVlKF92YWx1ZSkpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUlucHV0Rm9jdXMgPSAoZXZlbnQ6IFJlYWN0LkZvY3VzRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHtcbiAgICBvbkZvY3VzPy4oZXZlbnQpO1xuICAgIHNldERyb3Bkb3duT3BlbmVkKHRydWUpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUlucHV0Q2xpY2sgPSAoZXZlbnQ6IFJlYWN0Lk1vdXNlRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHtcbiAgICBvbkNsaWNrPy4oZXZlbnQpO1xuICAgIHNldERyb3Bkb3duT3BlbmVkKHRydWUpO1xuICB9O1xuXG4gIGNvbnN0IF9nZXREYXlQcm9wcyA9IChkYXRlOiBEYXRlKSA9PiAoe1xuICAgIC4uLmdldERheVByb3BzPy4oZGF0ZSksXG4gICAgc2VsZWN0ZWQ6IGRheWpzKF92YWx1ZSkuaXNTYW1lKGRhdGUsICdkYXknKSxcbiAgICBvbkNsaWNrOiAoKSA9PiB7XG4gICAgICBjb25zdCB2YWx1ZVdpdGhUaW1lID0gcHJlc2VydmVUaW1lID8gYXNzaWduVGltZShfdmFsdWUsIGRhdGUpIDogZGF0ZTtcbiAgICAgIGNvbnN0IHZhbCA9IF9hbGxvd0Rlc2VsZWN0XG4gICAgICAgID8gZGF5anMoX3ZhbHVlKS5pc1NhbWUoZGF0ZSwgJ2RheScpXG4gICAgICAgICAgPyBudWxsXG4gICAgICAgICAgOiB2YWx1ZVdpdGhUaW1lXG4gICAgICAgIDogdmFsdWVXaXRoVGltZTtcbiAgICAgIHNldFZhbHVlKHZhbCk7XG4gICAgICAhY29udHJvbGxlZCAmJiBzZXRJbnB1dFZhbHVlKGZvcm1hdFZhbHVlKHZhbCkpO1xuICAgICAgc2V0RHJvcGRvd25PcGVuZWQoZmFsc2UpO1xuICAgIH0sXG4gIH0pO1xuXG4gIGNvbnN0IF9yaWdodFNlY3Rpb24gPVxuICAgIHJpZ2h0U2VjdGlvbiB8fFxuICAgIChjbGVhcmFibGUgJiYgX3ZhbHVlICYmICFyZWFkT25seSA/IChcbiAgICAgIDxDbG9zZUJ1dHRvblxuICAgICAgICB2YXJpYW50PVwidHJhbnNwYXJlbnRcIlxuICAgICAgICBvbk1vdXNlRG93bj17KGV2ZW50KSA9PiBldmVudC5wcmV2ZW50RGVmYXVsdCgpfVxuICAgICAgICB0YWJJbmRleD17LTF9XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICBzZXRWYWx1ZShudWxsKTtcbiAgICAgICAgICAhY29udHJvbGxlZCAmJiBzZXRJbnB1dFZhbHVlKCcnKTtcbiAgICAgICAgfX1cbiAgICAgICAgdW5zdHlsZWQ9e3Vuc3R5bGVkfVxuICAgICAgICB7Li4uY2xlYXJCdXR0b25Qcm9wc31cbiAgICAgIC8+XG4gICAgKSA6IG51bGwpO1xuXG4gIHVzZURpZFVwZGF0ZSgoKSA9PiB7XG4gICAgdmFsdWUgIT09IHVuZGVmaW5lZCAmJiAhZHJvcGRvd25PcGVuZWQgJiYgc2V0SW5wdXRWYWx1ZShmb3JtYXRWYWx1ZSh2YWx1ZSkpO1xuICB9LCBbdmFsdWVdKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8SW5wdXQuV3JhcHBlciB7Li4ud3JhcHBlclByb3BzfSBfX3N0YXRpY1NlbGVjdG9yPVwiRGF0ZUlucHV0XCI+XG4gICAgICAgIDxQb3BvdmVyXG4gICAgICAgICAgb3BlbmVkPXtkcm9wZG93bk9wZW5lZH1cbiAgICAgICAgICB0cmFwRm9jdXM9e2ZhbHNlfVxuICAgICAgICAgIHBvc2l0aW9uPVwiYm90dG9tLXN0YXJ0XCJcbiAgICAgICAgICBkaXNhYmxlZD17cmVhZE9ubHl9XG4gICAgICAgICAgey4uLnBvcG92ZXJQcm9wc31cbiAgICAgICAgPlxuICAgICAgICAgIDxQb3BvdmVyLlRhcmdldD5cbiAgICAgICAgICAgIDxJbnB1dFxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIGRpcmVjdGlvbjogbG9jYWxlICYmIGxvY2FsZSA9PT0gJ2ZhJyA/ICdydGwnIDogJ2x0cicsXG4gICAgICAgICAgICAgICAgdGV4dEFsaWduTGFzdDogbG9jYWxlICYmIGxvY2FsZSA9PT0gJ2ZhJyA/ICdyaWdodCcgOiAnYXV0bycsXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIGRhdGEtZGF0ZXMtaW5wdXRcbiAgICAgICAgICAgICAgZGF0YS1yZWFkLW9ubHk9e3JlYWRPbmx5IHx8IHVuZGVmaW5lZH1cbiAgICAgICAgICAgICAgYXV0b0NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgcmVmPXtyZWZ9XG4gICAgICAgICAgICAgIHZhbHVlPXtpbnB1dFZhbHVlfVxuICAgICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlSW5wdXRDaGFuZ2V9XG4gICAgICAgICAgICAgIG9uQmx1cj17aGFuZGxlSW5wdXRCbHVyfVxuICAgICAgICAgICAgICBvbkZvY3VzPXtoYW5kbGVJbnB1dEZvY3VzfVxuICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVJbnB1dENsaWNrfVxuICAgICAgICAgICAgICByZWFkT25seT17cmVhZE9ubHl9XG4gICAgICAgICAgICAgIHJpZ2h0U2VjdGlvbj17X3JpZ2h0U2VjdGlvbn1cbiAgICAgICAgICAgICAgey4uLmlucHV0UHJvcHN9XG4gICAgICAgICAgICAgIHsuLi5vdGhlcnN9XG4gICAgICAgICAgICAgIF9fc3RhdGljU2VsZWN0b3I9XCJEYXRlSW5wdXRcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L1BvcG92ZXIuVGFyZ2V0PlxuICAgICAgICAgIDxQb3BvdmVyLkRyb3Bkb3duIG9uTW91c2VEb3duPXsoZXZlbnQpID0+IGV2ZW50LnByZXZlbnREZWZhdWx0KCl9IGRhdGEtZGF0ZXMtZHJvcGRvd24+XG4gICAgICAgICAgICA8Q2FsZW5kYXJcbiAgICAgICAgICAgICAgX19zdGF0aWNTZWxlY3Rvcj1cIkRhdGVJbnB1dFwiXG4gICAgICAgICAgICAgIGRlZmF1bHREYXRlPXtfdmFsdWUgfHwgdW5kZWZpbmVkfVxuICAgICAgICAgICAgICB7Li4uY2FsZW5kYXJQcm9wc31cbiAgICAgICAgICAgICAgY2xhc3NOYW1lcz17Y2xhc3NOYW1lc31cbiAgICAgICAgICAgICAgc3R5bGVzPXtzdHlsZXN9XG4gICAgICAgICAgICAgIHVuc3R5bGVkPXt1bnN0eWxlZH1cbiAgICAgICAgICAgICAgX19wcmV2ZW50Rm9jdXNcbiAgICAgICAgICAgICAgbWluRGF0ZT17bWluRGF0ZX1cbiAgICAgICAgICAgICAgbWF4RGF0ZT17bWF4RGF0ZX1cbiAgICAgICAgICAgICAgbG9jYWxlPXtsb2NhbGV9XG4gICAgICAgICAgICAgIGdldERheVByb3BzPXtfZ2V0RGF5UHJvcHN9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvUG9wb3Zlci5Ecm9wZG93bj5cbiAgICAgICAgPC9Qb3BvdmVyPlxuICAgICAgPC9JbnB1dC5XcmFwcGVyPlxuICAgICAgPEhpZGRlbkRhdGVzSW5wdXQgbmFtZT17bmFtZX0gZm9ybT17Zm9ybX0gdmFsdWU9e192YWx1ZX0gdHlwZT1cImRlZmF1bHRcIiAvPlxuICAgIDwvPlxuICApO1xufSk7XG4iXSwibmFtZXMiOlsiZm9yd2FyZFJlZiIsInVzZUlucHV0UHJvcHMiLCJwaWNrQ2FsZW5kYXJQcm9wcyIsInVzZURhdGVzQ29udGV4dCIsImRheWpzIiwidXNlVW5jb250cm9sbGVkIiwidXNlU3RhdGUiLCJpc0RhdGVWYWxpZCIsImFzc2lnblRpbWUiLCJSZWFjdCIsIkNsb3NlQnV0dG9uIiwidXNlRGlkVXBkYXRlIiwiSW5wdXQiLCJQb3BvdmVyIiwiQ2FsZW5kYXIiLCJIaWRkZW5EYXRlc0lucHV0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFJLFNBQVMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDO0FBQ3RDLElBQUksVUFBVSxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQztBQUN6QyxJQUFJLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQztBQUN6RCxJQUFJLG1CQUFtQixHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQztBQUN2RCxJQUFJLFlBQVksR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQztBQUNuRCxJQUFJLFlBQVksR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLG9CQUFvQixDQUFDO0FBQ3pELElBQUksZUFBZSxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxLQUFLLEtBQUssR0FBRyxJQUFJLEdBQUcsR0FBRyxTQUFTLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztBQUNoSyxJQUFJLGNBQWMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUs7QUFDL0IsRUFBRSxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ2hDLElBQUksSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUM7QUFDbEMsTUFBTSxlQUFlLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMs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