UNPKG

mantine-datepicker-jalali

Version:
252 lines (245 loc) 32.1 kB
'use strict'; 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 MonthLevelGroup = require('../MonthLevelGroup/MonthLevelGroup.js'); var YearLevelGroup = require('../YearLevelGroup/YearLevelGroup.js'); var DecadeLevelGroup = require('../DecadeLevelGroup/DecadeLevelGroup.js'); var clampLevel = require('./clamp-level/clamp-level.js'); var Calendar_styles = require('./Calendar.styles.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 __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 __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 = { maxLevel: "decade", minLevel: "month", __updateDateOnYearSelect: true, __updateDateOnMonthSelect: true }; const Calendar = React.forwardRef((props, ref) => { const _a = core.useComponentDefaultProps("Calendar", defaultProps, props), { maxLevel, minLevel, defaultLevel, level, onLevelChange, date, defaultDate, onDateChange, numberOfColumns, columnsToScroll, ariaLabels, onYearSelect, onMonthSelect, onYearMouseEnter, onMonthMouseEnter, __updateDateOnYearSelect, __updateDateOnMonthSelect, firstDayOfWeek, weekdayFormat, weekendDays, getDayProps, excludeDate, renderDay, hideOutsideDates, hideWeekdays, getDayAriaLabel, monthLabelFormat, __onDayClick, __onDayMouseEnter, monthsListFormat, getMonthControlProps, yearLabelFormat, yearsListFormat, getYearControlProps, decadeLabelFormat, minDate, maxDate, locale, className, classNames, styles, __staticSelector, unstyled, __preventFocus } = _a, others = __objRest(_a, [ "maxLevel", "minLevel", "defaultLevel", "level", "onLevelChange", "date", "defaultDate", "onDateChange", "numberOfColumns", "columnsToScroll", "ariaLabels", "onYearSelect", "onMonthSelect", "onYearMouseEnter", "onMonthMouseEnter", "__updateDateOnYearSelect", "__updateDateOnMonthSelect", "firstDayOfWeek", "weekdayFormat", "weekendDays", "getDayProps", "excludeDate", "renderDay", "hideOutsideDates", "hideWeekdays", "getDayAriaLabel", "monthLabelFormat", "__onDayClick", "__onDayMouseEnter", "monthsListFormat", "getMonthControlProps", "yearLabelFormat", "yearsListFormat", "getYearControlProps", "decadeLabelFormat", "minDate", "maxDate", "locale", "className", "classNames", "styles", "__staticSelector", "unstyled", "__preventFocus" ]); const { classes, cx } = Calendar_styles(null, { classNames, styles, unstyled, name: ["Calendar", __staticSelector] }); const [_level, setLevel] = hooks.useUncontrolled({ value: level ? clampLevel.clampLevel(level, minLevel, maxLevel) : void 0, defaultValue: defaultLevel ? clampLevel.clampLevel(defaultLevel, minLevel, maxLevel) : void 0, finalValue: clampLevel.clampLevel(void 0, minLevel, maxLevel), onChange: onLevelChange }); const [_date, setDate] = hooks.useUncontrolled({ value: date, defaultValue: defaultDate, finalValue: null, onChange: onDateChange }); const stylesApiProps = { styles, classNames, unstyled, __staticSelector: __staticSelector || "Calendar" }; const _columnsToScroll = columnsToScroll || numberOfColumns || 1; const currentDate = _date || new Date(); return /* @__PURE__ */ React__default.createElement(core.Box, __spreadValues({ className: cx(classes.calendar, className, locale === "fa" && classes.calendarRtl), ref }, others), _level === "month" && /* @__PURE__ */ React__default.createElement(MonthLevelGroup.MonthLevelGroup, __spreadValues({ month: currentDate, minDate, maxDate, firstDayOfWeek, weekdayFormat, weekendDays, getDayProps, excludeDate, renderDay, hideOutsideDates, hideWeekdays, getDayAriaLabel, onNext: () => setDate(dayjs__default(currentDate).add(_columnsToScroll, "month").toDate()), onPrevious: () => setDate(dayjs__default(currentDate).subtract(_columnsToScroll, "month").toDate()), hasNextLevel: maxLevel !== "month", onLevelClick: () => setLevel("year"), numberOfColumns, locale, levelControlAriaLabel: ariaLabels == null ? void 0 : ariaLabels.monthLevelControl, nextLabel: ariaLabels == null ? void 0 : ariaLabels.nextMonth, previousLabel: ariaLabels == null ? void 0 : ariaLabels.previousMonth, monthLabelFormat, __onDayClick, __onDayMouseEnter, __preventFocus }, stylesApiProps)), _level === "year" && /* @__PURE__ */ React__default.createElement(YearLevelGroup.YearLevelGroup, __spreadValues({ year: currentDate, numberOfColumns, minDate, maxDate, monthsListFormat, getMonthControlProps, locale, onNext: () => setDate(dayjs__default(currentDate).add(_columnsToScroll, "year").toDate()), onPrevious: () => setDate(dayjs__default(currentDate).subtract(_columnsToScroll, "year").toDate()), hasNextLevel: maxLevel !== "month" && maxLevel !== "year", onLevelClick: () => setLevel("decade"), levelControlAriaLabel: ariaLabels == null ? void 0 : ariaLabels.yearLevelControl, nextLabel: ariaLabels == null ? void 0 : ariaLabels.nextYear, previousLabel: ariaLabels == null ? void 0 : ariaLabels.previousYear, yearLabelFormat, __onControlMouseEnter: onMonthMouseEnter, __onControlClick: (_event, payload) => { __updateDateOnMonthSelect && setDate(payload); setLevel(clampLevel.clampLevel("month", minLevel, maxLevel)); onMonthSelect == null ? void 0 : onMonthSelect(payload); }, __preventFocus }, stylesApiProps)), _level === "decade" && /* @__PURE__ */ React__default.createElement(DecadeLevelGroup.DecadeLevelGroup, __spreadValues({ decade: currentDate, minDate, maxDate, yearsListFormat, getYearControlProps, locale, onNext: () => setDate(dayjs__default(currentDate).add(10 * _columnsToScroll, "year").toDate()), onPrevious: () => setDate(dayjs__default(currentDate).subtract(10 * _columnsToScroll, "year").toDate()), hasNextLevel: false, numberOfColumns, levelControlAriaLabel: ariaLabels == null ? void 0 : ariaLabels.decadeLevelControl, nextLabel: ariaLabels == null ? void 0 : ariaLabels.nextDecade, previousLabel: ariaLabels == null ? void 0 : ariaLabels.previousDecade, decadeLabelFormat, __onControlMouseEnter: onYearMouseEnter, __onControlClick: (_event, payload) => { __updateDateOnYearSelect && setDate(payload); setLevel(clampLevel.clampLevel("year", minLevel, maxLevel)); onYearSelect == null ? void 0 : onYearSelect(payload); }, __preventFocus }, stylesApiProps))); }); Calendar.displayName = "@mantine/dates/Calendar"; exports.Calendar = Calendar; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FsZW5kYXIuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL0NhbGVuZGFyL0NhbGVuZGFyLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9uby11bnVzZWQtcHJvcC10eXBlcyAqL1xuaW1wb3J0IGRheWpzIGZyb20gJ2RheWpzJztcbmltcG9ydCBSZWFjdCwgeyBmb3J3YXJkUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgQm94LCBEZWZhdWx0UHJvcHMsIFNlbGVjdG9ycywgdXNlQ29tcG9uZW50RGVmYXVsdFByb3BzIH0gZnJvbSAnQG1hbnRpbmUvY29yZSc7XG5pbXBvcnQgeyB1c2VVbmNvbnRyb2xsZWQgfSBmcm9tICdAbWFudGluZS9ob29rcyc7XG5pbXBvcnQgeyBNb250aExldmVsR3JvdXAsIE1vbnRoTGV2ZWxHcm91cFN0eWxlc05hbWVzIH0gZnJvbSAnLi4vTW9udGhMZXZlbEdyb3VwJztcbmltcG9ydCB7IFllYXJMZXZlbEdyb3VwLCBZZWFyTGV2ZWxHcm91cFN0eWxlc05hbWVzIH0gZnJvbSAnLi4vWWVhckxldmVsR3JvdXAnO1xuaW1wb3J0IHsgRGVjYWRlTGV2ZWxHcm91cCwgRGVjYWRlTGV2ZWxHcm91cFN0eWxlc05hbWVzIH0gZnJvbSAnLi4vRGVjYWRlTGV2ZWxHcm91cCc7XG5pbXBvcnQgeyBDYWxlbmRhckxldmVsIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgY2xhbXBMZXZlbCB9IGZyb20gJy4vY2xhbXAtbGV2ZWwvY2xhbXAtbGV2ZWwnO1xuaW1wb3J0IHVzZVN0eWxlcyBmcm9tICcuL0NhbGVuZGFyLnN0eWxlcyc7XG5pbXBvcnQgeyBNb250aExldmVsU2V0dGluZ3MgfSBmcm9tICcuLi9Nb250aExldmVsJztcbmltcG9ydCB7IFllYXJMZXZlbFNldHRpbmdzIH0gZnJvbSAnLi4vWWVhckxldmVsJztcbmltcG9ydCB7IERlY2FkZUxldmVsU2V0dGluZ3MgfSBmcm9tICcuLi9EZWNhZGVMZXZlbCc7XG5cbmV4cG9ydCB0eXBlIENhbGVuZGFyU3R5bGVzTmFtZXMgPVxuICB8IFNlbGVjdG9yczx0eXBlb2YgdXNlU3R5bGVzPlxuICB8IERlY2FkZUxldmVsR3JvdXBTdHlsZXNOYW1lc1xuICB8IFllYXJMZXZlbEdyb3VwU3R5bGVzTmFtZXNcbiAgfCBNb250aExldmVsR3JvdXBTdHlsZXNOYW1lcztcblxuZXhwb3J0IGludGVyZmFjZSBDYWxlbmRhckFyaWFMYWJlbHMge1xuICBtb250aExldmVsQ29udHJvbD86IHN0cmluZztcbiAgeWVhckxldmVsQ29udHJvbD86IHN0cmluZztcbiAgZGVjYWRlTGV2ZWxDb250cm9sPzogc3RyaW5nO1xuXG4gIG5leHRNb250aD86IHN0cmluZztcbiAgcHJldmlvdXNNb250aD86IHN0cmluZztcblxuICBuZXh0WWVhcj86IHN0cmluZztcbiAgcHJldmlvdXNZZWFyPzogc3RyaW5nO1xuXG4gIG5leHREZWNhZGU/OiBzdHJpbmc7XG4gIHByZXZpb3VzRGVjYWRlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENhbGVuZGFyU2V0dGluZ3NcbiAgZXh0ZW5kcyBEZWNhZGVMZXZlbFNldHRpbmdzLFxuICAgIFllYXJMZXZlbFNldHRpbmdzLFxuICAgIE1vbnRoTGV2ZWxTZXR0aW5ncyB7XG4gIC8qKiBJbml0aWFsIGxldmVsIGRpc3BsYXllZCB0byB0aGUgdXNlciAoZGVjYWRlLCB5ZWFyLCBtb250aCksIHVzZWQgZm9yIHVuY29udHJvbGxlZCBjb21wb25lbnQgKi9cbiAgZGVmYXVsdExldmVsPzogQ2FsZW5kYXJMZXZlbDtcblxuICAvKiogQ3VycmVudCBsZXZlbCBkaXNwbGF5ZWQgdG8gdGhlIHVzZXIgKGRlY2FkZSwgeWVhciwgbW9udGgpLCB1c2VkIGZvciBjb250cm9sbGVkIGNvbXBvbmVudCAqL1xuICBsZXZlbD86IENhbGVuZGFyTGV2ZWw7XG5cbiAgLyoqIENhbGxlZCB3aGVuIGxldmVsIGNoYW5nZXMgKi9cbiAgb25MZXZlbENoYW5nZT8obGV2ZWw6IENhbGVuZGFyTGV2ZWwpOiB2b2lkO1xuXG4gIC8qKiBDYWxsZWQgd2hlbiB1c2VyIGNsaWNrcyB5ZWFyIG9uIGRlY2FkZSBsZXZlbCAqL1xuICBvblllYXJTZWxlY3Q/KGRhdGU6IERhdGUpOiB2b2lkO1xuXG4gIC8qKiBDYWxsZWQgd2hlbiB1c2VyIGNsaWNrcyBtb250aCBvbiB5ZWFyIGxldmVsICovXG4gIG9uTW9udGhTZWxlY3Q/KGRhdGU6IERhdGUpOiB2b2lkO1xuXG4gIC8qKiBDYWxsZWQgd2hlbiBtb3VzZSBlbnRlcnMgeWVhciBjb250cm9sICovXG4gIG9uWWVhck1vdXNlRW50ZXI/KGV2ZW50OiBSZWFjdC5Nb3VzZUV2ZW50PEhUTUxCdXR0b25FbGVtZW50PiwgZGF0ZTogRGF0ZSk6IHZvaWQ7XG5cbiAgLyoqIENhbGxlZCB3aGVuIG1vdXNlIGVudGVycyBtb250aCBjb250cm9sICovXG4gIG9uTW9udGhNb3VzZUVudGVyPyhldmVudDogUmVhY3QuTW91c2VFdmVudDxIVE1MQnV0dG9uRWxlbWVudD4sIGRhdGU6IERhdGUpOiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENhbGVuZGFyU3lzdGVtUHJvcHNcbiAgZXh0ZW5kcyBEZWZhdWx0UHJvcHM8Q2FsZW5kYXJTdHlsZXNOYW1lcz4sXG4gICAgT21pdDxSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhSZWY8J2Rpdic+LCAndmFsdWUnIHwgJ2RlZmF1bHRWYWx1ZScgfCAnb25DaGFuZ2UnPiB7fVxuXG5leHBvcnQgaW50ZXJmYWNlIENhbGVuZGFyQmFzZVByb3BzIHtcbiAgX19zdGF0aWNTZWxlY3Rvcj86IHN0cmluZztcblxuICAvKiogUHJldmVudHMgZm9jdXMgc2hpZnQgd2hlbiBidXR0b25zIGFyZSBjbGlja2VkICovXG4gIF9fcHJldmVudEZvY3VzPzogYm9vbGVhbjtcblxuICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIGRhdGUgc2hvdWxkIGJlIHVwZGF0ZWQgd2hlbiB5ZWFyIGNvbnRyb2wgaXMgY2xpY2tlZCAqL1xuICBfX3VwZGF0ZURhdGVPblllYXJTZWxlY3Q/OiBib29sZWFuO1xuXG4gIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgZGF0ZSBzaG91bGQgYmUgdXBkYXRlZCB3aGVuIG1vbnRoIGNvbnRyb2wgaXMgY2xpY2tlZCAqL1xuICBfX3VwZGF0ZURhdGVPbk1vbnRoU2VsZWN0PzogYm9vbGVhbjtcblxuICAvKiogSW5pdGlhbCBkYXRlIHRoYXQgaXMgZGlzcGxheWVkLCB1c2VkIGZvciB1bmNvbnRyb2xsZWQgY29tcG9uZW50ICovXG4gIGRlZmF1bHREYXRlPzogRGF0ZTtcblxuICAvKiogRGF0ZSB0aGF0IGlzIGRpc3BsYXllZCwgdXNlZCBmb3IgY29udHJvbGxlZCBjb21wb25lbnQgKi9cbiAgZGF0ZT86IERhdGU7XG5cbiAgLyoqIENhbGxlZCB3aGVuIGRhdGUgY2hhbmdlcyAqL1xuICBvbkRhdGVDaGFuZ2U/KGRhdGU6IERhdGUpOiB2b2lkO1xuXG4gIC8qKiBOdW1iZXIgb2YgY29sdW1ucyB0byByZW5kZXIgbmV4dCB0byBlYWNoIG90aGVyICovXG4gIG51bWJlck9mQ29sdW1ucz86IG51bWJlcjtcblxuICAvKiogTnVtYmVyIG9mIGNvbHVtbnMgdG8gc2Nyb2xsIHdoZW4gdXNlciBjbGlja3MgbmV4dC9wcmV2IG1vbnRoLCBkZWZhdWx0cyB0byBudW1iZXJPZkNvbHVtbnMgKi9cbiAgY29sdW1uc1RvU2Nyb2xsPzogbnVtYmVyO1xuXG4gIC8qKiBhcmlhLWxhYmVsIGF0dHJpYnV0ZXMgZm9yIGNvbnRyb2xzIG9uIGRpZmZlcmVudCBsZXZlbHMgKi9cbiAgYXJpYUxhYmVscz86IENhbGVuZGFyQXJpYUxhYmVscztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDYWxlbmRhclByb3BzIGV4dGVuZHMgQ2FsZW5kYXJTZXR0aW5ncywgQ2FsZW5kYXJCYXNlUHJvcHMsIENhbGVuZGFyU3lzdGVtUHJvcHMge1xuICAvKiogTWF4IGxldmVsIHRoYXQgdXNlciBjYW4gZ28gdXAgdG8gKGRlY2FkZSwgeWVhciwgbW9udGgpLCBkZWZhdWx0cyB0byBkZWNhZGUgKi9cbiAgbWF4TGV2ZWw/OiBDYWxlbmRhckxldmVsO1xuXG4gIC8qKiBNaW4gbGV2ZWwgdGhhdCB1c2VyIGNhbiBnbyBkb3duIHRvIChkZWNhZGUsIHllYXIsIG1vbnRoKSwgZGVmYXVsdHMgdG8gbW9udGggKi9cbiAgbWluTGV2ZWw/OiBDYWxlbmRhckxldmVsO1xufVxuXG5jb25zdCBkZWZhdWx0UHJvcHM6IFBhcnRpYWw8Q2FsZW5kYXJQcm9wcz4gPSB7XG4gIG1heExldmVsOiAnZGVjYWRlJyxcbiAgbWluTGV2ZWw6ICdtb250aCcsXG4gIF9fdXBkYXRlRGF0ZU9uWWVhclNlbGVjdDogdHJ1ZSxcbiAgX191cGRhdGVEYXRlT25Nb250aFNlbGVjdDogdHJ1ZSxcbn07XG5cbmV4cG9ydCBjb25zdCBDYWxlbmRhciA9IGZvcndhcmRSZWY8SFRNTERpdkVsZW1lbnQsIENhbGVuZGFyUHJvcHM+KChwcm9wcywgcmVmKSA9PiB7XG4gIGNvbnN0IHtcbiAgICAvLyBDYWxlbmRhckxldmVsIHByb3BzXG4gICAgbWF4TGV2ZWwsXG4gICAgbWluTGV2ZWwsXG4gICAgZGVmYXVsdExldmVsLFxuICAgIGxldmVsLFxuICAgIG9uTGV2ZWxDaGFuZ2UsXG4gICAgZGF0ZSxcbiAgICBkZWZhdWx0RGF0ZSxcbiAgICBvbkRhdGVDaGFuZ2UsXG4gICAgbnVtYmVyT2ZDb2x1bW5zLFxuICAgIGNvbHVtbnNUb1Njcm9sbCxcbiAgICBhcmlhTGFiZWxzLFxuICAgIG9uWWVhclNlbGVjdCxcbiAgICBvbk1vbnRoU2VsZWN0LFxuICAgIG9uWWVhck1vdXNlRW50ZXIsXG4gICAgb25Nb250aE1vdXNlRW50ZXIsXG4gICAgX191cGRhdGVEYXRlT25ZZWFyU2VsZWN0LFxuICAgIF9fdXBkYXRlRGF0ZU9uTW9udGhTZWxlY3QsXG5cbiAgICAvLyBNb250aExldmVsR3JvdXAgcHJvcHNcbiAgICBmaXJzdERheU9mV2VlayxcbiAgICB3ZWVrZGF5Rm9ybWF0LFxuICAgIHdlZWtlbmREYXlzLFxuICAgIGdldERheVByb3BzLFxuICAgIGV4Y2x1ZGVEYXRlLFxuICAgIHJlbmRlckRheSxcbiAgICBoaWRlT3V0c2lkZURhdGVzLFxuICAgIGhpZGVXZWVrZGF5cyxcbiAgICBnZXREYXlBcmlhTGFiZWwsXG4gICAgbW9udGhMYWJlbEZvcm1hdCxcbiAgICBfX29uRGF5Q2xpY2ssXG4gICAgX19vbkRheU1vdXNlRW50ZXIsXG5cbiAgICAvLyBZZWFyTGV2ZWxHcm91cCBwcm9wc1xuICAgIG1vbnRoc0xpc3RGb3JtYXQsXG4gICAgZ2V0TW9udGhDb250cm9sUHJvcHMsXG4gICAgeWVhckxhYmVsRm9ybWF0LFxuXG4gICAgLy8gRGVjYWRlTGV2ZWxHcm91cCBwcm9wc1xuICAgIHllYXJzTGlzdEZvcm1hdCxcbiAgICBnZXRZZWFyQ29udHJvbFByb3BzLFxuICAgIGRlY2FkZUxhYmVsRm9ybWF0LFxuXG4gICAgLy8gT3RoZXIgcHJvcHNcbiAgICBtaW5EYXRlLFxuICAgIG1heERhdGUsXG4gICAgbG9jYWxlLFxuICAgIGNsYXNzTmFtZSxcbiAgICBjbGFzc05hbWVzLFxuICAgIHN0eWxlcyxcbiAgICBfX3N0YXRpY1NlbGVjdG9yLFxuICAgIHVuc3R5bGVkLFxuICAgIF9fcHJldmVudEZvY3VzLFxuICAgIC4uLm90aGVyc1xuICB9ID0gdXNlQ29tcG9uZW50RGVmYXVsdFByb3BzKCdDYWxlbmRhcicsIGRlZmF1bHRQcm9wcywgcHJvcHMpO1xuXG4gIGNvbnN0IHsgY2xhc3NlcywgY3ggfSA9IHVzZVN0eWxlcyhudWxsLCB7XG4gICAgY2xhc3NOYW1lcyxcbiAgICBzdHlsZXMsXG4gICAgdW5zdHlsZWQsXG4gICAgbmFtZTogWydDYWxlbmRhcicsIF9fc3RhdGljU2VsZWN0b3JdLFxuICB9KTtcblxuICBjb25zdCBbX2xldmVsLCBzZXRMZXZlbF0gPSB1c2VVbmNvbnRyb2xsZWQoe1xuICAgIHZhbHVlOiBsZXZlbCA/IGNsYW1wTGV2ZWwobGV2ZWwsIG1pbkxldmVsLCBtYXhMZXZlbCkgOiB1bmRlZmluZWQsXG4gICAgZGVmYXVsdFZhbHVlOiBkZWZhdWx0TGV2ZWwgPyBjbGFtcExldmVsKGRlZmF1bHRMZXZlbCwgbWluTGV2ZWwsIG1heExldmVsKSA6IHVuZGVmaW5lZCxcbiAgICBmaW5hbFZhbHVlOiBjbGFtcExldmVsKHVuZGVmaW5lZCwgbWluTGV2ZWwsIG1heExldmVsKSxcbiAgICBvbkNoYW5nZTogb25MZXZlbENoYW5nZSxcbiAgfSk7XG5cbiAgY29uc3QgW19kYXRlLCBzZXREYXRlXSA9IHVzZVVuY29udHJvbGxlZCh7XG4gICAgdmFsdWU6IGRhdGUsXG4gICAgZGVmYXVsdFZhbHVlOiBkZWZhdWx0RGF0ZSxcbiAgICBmaW5hbFZhbHVlOiBudWxsLFxuICAgIG9uQ2hhbmdlOiBvbkRhdGVDaGFuZ2UsXG4gIH0pO1xuXG4gIGNvbnN0IHN0eWxlc0FwaVByb3BzID0ge1xuICAgIHN0eWxlcyxcbiAgICBjbGFzc05hbWVzLFxuICAgIHVuc3R5bGVkLFxuICAgIF9fc3RhdGljU2VsZWN0b3I6IF9fc3RhdGljU2VsZWN0b3IgfHwgJ0NhbGVuZGFyJyxcbiAgfTtcblxuICBjb25zdCBfY29sdW1uc1RvU2Nyb2xsID0gY29sdW1uc1RvU2Nyb2xsIHx8IG51bWJlck9mQ29sdW1ucyB8fCAxO1xuICBjb25zdCBjdXJyZW50RGF0ZSA9IF9kYXRlIHx8IG5ldyBEYXRlKCk7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94XG4gICAgICBjbGFzc05hbWU9e2N4KGNsYXNzZXMuY2FsZW5kYXIsIGNsYXNzTmFtZSwgbG9jYWxlID09PSAnZmEnICYmIGNsYXNzZXMuY2FsZW5kYXJSdGwpfVxuICAgICAgcmVmPXtyZWZ9XG4gICAgICB7Li4ub3RoZXJzfVxuICAgID5cbiAgICAgIHtfbGV2ZWwgPT09ICdtb250aCcgJiYgKFxuICAgICAgICA8TW9udGhMZXZlbEdyb3VwXG4gICAgICAgICAgbW9udGg9e2N1cnJlbnREYXRlfVxuICAgICAgICAgIG1pbkRhdGU9e21pbkRhdGV9XG4gICAgICAgICAgbWF4RGF0ZT17bWF4RGF0ZX1cbiAgICAgICAgICBmaXJzdERheU9mV2Vlaz17Zmlyc3REYXlPZldlZWt9XG4gICAgICAgICAgd2Vla2RheUZvcm1hdD17d2Vla2RheUZvcm1hdH1cbiAgICAgICAgICB3ZWVrZW5kRGF5cz17d2Vla2VuZERheXN9XG4gICAgICAgICAgZ2V0RGF5UHJvcHM9e2dldERheVByb3BzfVxuICAgICAgICAgIGV4Y2x1ZGVEYXRlPXtleGNsdWRlRGF0ZX1cbiAgICAgICAgICByZW5kZXJEYXk9e3JlbmRlckRheX1cbiAgICAgICAgICBoaWRlT3V0c2lkZURhdGVzPXtoaWRlT3V0c2lkZURhdGVzfVxuICAgICAgICAgIGhpZGVXZWVrZGF5cz17aGlkZVdlZWtkYXlzfVxuICAgICAgICAgIGdldERheUFyaWFMYWJlbD17Z2V0RGF5QXJpYUxhYmVsfVxuICAgICAgICAgIG9uTmV4dD17KCkgPT4gc2V0RGF0ZShkYXlqcyhjdXJyZW50RGF0ZSkuYWRkKF9jb2x1bW5zVG9TY3JvbGwsICdtb250aCcpLnRvRGF0ZSgpKX1cbiAgICAgICAgICBvblByZXZpb3VzPXsoKSA9PlxuICAgICAgICAgICAgc2V0RGF0ZShkYXlqcyhjdXJyZW50RGF0ZSkuc3VidHJhY3QoX2NvbHVtbnNUb1Njcm9sbCwgJ21vbnRoJykudG9EYXRlKCkpXG4gICAgICAgICAgfVxuICAgICAgICAgIGhhc05leHRMZXZlbD17bWF4TGV2ZWwgIT09ICdtb250aCd9XG4gICAgICAgICAgb25MZXZlbENsaWNrPXsoKSA9PiBzZXRMZXZlbCgneWVhcicpfVxuICAgICAgICAgIG51bWJlck9mQ29sdW1ucz17bnVtYmVyT2ZDb2x1bW5zfVxuICAgICAgICAgIGxvY2FsZT17bG9jYWxlfVxuICAgICAgICAgIGxldmVsQ29udHJvbEFyaWFMYWJlbD17YXJpYUxhYmVscz8ubW9udGhMZXZlbENvbnRyb2x9XG4gICAgICAgICAgbmV4dExhYmVsPXthcmlhTGFiZWxzPy5uZXh0TW9udGh9XG4gICAgICAgICAgcHJldmlvdXNMYWJlbD17YXJpYUxhYmVscz8ucHJldmlvdXNNb250aH1cbiAgICAgICAgICBtb250aExhYmVsRm9ybWF0PXttb250aExhYmVsRm9ybWF0fVxuICAgICAgICAgIF9fb25EYXlDbGljaz17X19vbkRheUNsaWNrfVxuICAgICAgICAgIF9fb25EYXlNb3VzZUVudGVyPXtfX29uRGF5TW91c2VFbnRlcn1cbiAgICAgICAgICBfX3ByZXZlbnRGb2N1cz17X19wcmV2ZW50Rm9jdXN9XG4gICAgICAgICAgey4uLnN0eWxlc0FwaVByb3BzfVxuICAgICAgICAvPlxuICAgICAgKX1cblxuICAgICAge19sZXZlbCA9PT0gJ3llYXInICYmIChcbiAgICAgICAgPFllYXJMZXZlbEdyb3VwXG4gICAgICAgICAgeWVhcj17Y3VycmVudERhdGV9XG4gICAgICAgICAgbnVtYmVyT2ZDb2x1bW5zPXtudW1iZXJPZkNvbHVtbnN9XG4gICAgICAgICAgbWluRGF0ZT17bWluRGF0ZX1cbiAgICAgICAgICBtYXhEYXRlPXttYXhEYXRlfVxuICAgICAgICAgIG1vbnRoc0xpc3RGb3JtYXQ9e21vbnRoc0xpc3RGb3JtYXR9XG4gICAgICAgICAgZ2V0TW9udGhDb250cm9sUHJvcHM9e2dldE1vbnRoQ29udHJvbFByb3BzfVxuICAgICAgICAgIGxvY2FsZT17bG9jYWxlfVxuICAgICAgICAgIG9uTmV4dD17KCkgPT4gc2V0RGF0ZShkYXlqcyhjdXJyZW50RGF0ZSkuYWRkKF9jb2x1bW5zVG9TY3JvbGwsICd5ZWFyJykudG9EYXRlKCkpfVxuICAgICAgICAgIG9uUHJldmlvdXM9eygpID0+IHNldERhdGUoZGF5anMoY3VycmVudERhdGUpLnN1YnRyYWN0KF9jb2x1bW5zVG9TY3JvbGwsICd5ZWFyJykudG9EYXRlKCkpfVxuICAgICAgICAgIGhhc05leHRMZXZlbD17bWF4TGV2ZWwgIT09ICdtb250aCcgJiYgbWF4TGV2ZWwgIT09ICd5ZWFyJ31cbiAgICAgICAgICBvbkxldmVsQ2xpY2s9eygpID0+IHNldExldmVsKCdkZWNhZGUnKX1cbiAgICAgICAgICBsZXZlbENvbnRyb2xBcmlhTGFiZWw9e2FyaWFMYWJlbHM/LnllYXJMZXZlbENvbnRyb2x9XG4gICAgICAgICAgbmV4dExhYmVsPXthcmlhTGFiZWxzPy5uZXh0WWVhcn1cbiAgICAgICAgICBwcmV2aW91c0xhYmVsPXthcmlhTGFiZWxzPy5wcmV2aW91c1llYXJ9XG4gICAgICAgICAgeWVhckxhYmVsRm9ybWF0PXt5ZWFyTGFiZWxGb3JtYXR9XG4gICAgICAgICAgX19vbkNvbnRyb2xNb3VzZUVudGVyPXtvbk1vbnRoTW91c2VFbnRlcn1cbiAgICAgICAgICBfX29uQ29udHJvbENsaWNrPXsoX2V2ZW50LCBwYXlsb2FkKSA9PiB7XG4gICAgICAgICAgICBfX3VwZGF0ZURhdGVPbk1vbnRoU2VsZWN0ICYmIHNldERhdGUocGF5bG9hZCk7XG4gICAgICAgICAgICBzZXRMZXZlbChjbGFtcExldmVsKCdtb250aCcsIG1pbkxldmVsLCBtYXhMZXZlbCkpO1xuICAgICAgICAgICAgb25Nb250aFNlbGVjdD8uKHBheWxvYWQpO1xuICAgICAgICAgIH19XG4gICAgICAgICAgX19wcmV2ZW50Rm9jdXM9e19fcHJldmVudEZvY3VzfVxuICAgICAgICAgIHsuLi5zdHlsZXNBcGlQcm9wc31cbiAgICAgICAgLz5cbiAgICAgICl9XG5cbiAgICAgIHtfbGV2ZWwgPT09ICdkZWNhZGUnICYmIChcbiAgICAgICAgPERlY2FkZUxldmVsR3JvdXBcbiAgICAgICAgICBkZWNhZGU9e2N1cnJlbnREYXRlfVxuICAgICAgICAgIG1pbkRhdGU9e21pbkRhdGV9XG4gICAgICAgICAgbWF4RGF0ZT17bWF4RGF0ZX1cbiAgICAgICAgICB5ZWFyc0xpc3RGb3JtYXQ9e3llYXJzTGlzdEZvcm1hdH1cbiAgICAgICAgICBnZXRZZWFyQ29udHJvbFByb3BzPXtnZXRZZWFyQ29udHJvbFByb3BzfVxuICAgICAgICAgIGxvY2FsZT17bG9jYWxlfVxuICAgICAgICAgIG9uTmV4dD17KCkgPT5cbiAgICAgICAgICAgIHNldERhdGUoXG4gICAgICAgICAgICAgIGRheWpzKGN1cnJlbnREYXRlKVxuICAgICAgICAgICAgICAgIC5hZGQoMTAgKiBfY29sdW1uc1RvU2Nyb2xsLCAneWVhcicpXG4gICAgICAgICAgICAgICAgLnRvRGF0ZSgpXG4gICAgICAgICAgICApXG4gICAgICAgICAgfVxuICAgICAgICAgIG9uUHJldmlvdXM9eygpID0+XG4gICAgICAgICAgICBzZXREYXRlKFxuICAgICAgICAgICAgICBkYXlqcyhjdXJyZW50RGF0ZSlcbiAgICAgICAgICAgICAgICAuc3VidHJhY3QoMTAgKiBfY29sdW1uc1RvU2Nyb2xsLCAneWVhcicpXG4gICAgICAgICAgICAgICAgLnRvRGF0ZSgpXG4gICAgICAgICAgICApXG4gICAgICAgICAgfVxuICAgICAgICAgIGhhc05leHRMZXZlbD17ZmFsc2V9XG4gICAgICAgICAgbnVtYmVyT2ZDb2x1bW5zPXtudW1iZXJPZkNvbHVtbnN9XG4gICAgICAgICAgbGV2ZWxDb250cm9sQXJpYUxhYmVsPXthcmlhTGFiZWxzPy5kZWNhZGVMZXZlbENvbnRyb2x9XG4gICAgICAgICAgbmV4dExhYmVsPXthcmlhTGFiZWxzPy5uZXh0RGVjYWRlfVxuICAgICAgICAgIHByZXZpb3VzTGFiZWw9e2FyaWFMYWJlbHM/LnByZXZpb3VzRGVjYWRlfVxuICAgICAgICAgIGRlY2FkZUxhYmVsRm9ybWF0PXtkZWNhZGVMYWJlbEZvcm1hdH1cbiAgICAgICAgICBfX29uQ29udHJvbE1vdXNlRW50ZXI9e29uWWVhck1vdXNlRW50ZXJ9XG4gICAgICAgICAgX19vbkNvbnRyb2xDbGljaz17KF9ldmVudCwgcGF5bG9hZCkgPT4ge1xuICAgICAgICAgICAgX191cGRhdGVEYXRlT25ZZWFyU2VsZWN0ICYmIHNldERhdGUocGF5bG9hZCk7XG4gICAgICAgICAgICBzZXRMZXZlbChjbGFtcExldmVsKCd5ZWFyJywgbWluTGV2ZWwsIG1heExldmVsKSk7XG4gICAgICAgICAgICBvblllYXJTZWxlY3Q/LihwYXlsb2FkKTtcbiAgICAgICAgICB9fVxuICAgICAgICAgIF9fcHJldmVudEZvY3VzPXtfX3ByZXZlbnRGb2N1c31cbiAgICAgICAgICB7Li4uc3R5bGVzQXBpUHJvcHN9XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgIDwvQm94PlxuICApO1xufSk7XG5cbkNhbGVuZGFyLmRpc3BsYXlOYW1lID0gJ0BtYW50aW5lL2RhdGVzL0NhbGVuZGFyJztcbiJdLCJuYW1lcyI6WyJmb3J3YXJkUmVmIiwidXNlQ29tcG9uZW50RGVmYXVsdFByb3BzIiwidXNlU3R5bGVzIiwidXNlVW5jb250cm9sbGVkIiwiY2xhbXBMZXZlbCIsIlJlYWN0IiwiQm94IiwiTW9udGhMZXZlbEdyb3VwIiwiZGF5anMiLCJZZWFyTGV2ZWxHcm91cCIsIkRlY2FkZUxldmVsR3JvdXAiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFJLFNBQVMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDO0FBQ3RDLElBQUksbUJBQW1CLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDO0FBQ3ZELElBQUksWUFBWSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDO0FBQ25ELElBQUksWUFBWSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsb0JBQW9CLENBQUM7QUFDekQsSUFBSSxlQUFlLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEtBQUssS0FBSyxHQUFHLElBQUksR0FBRyxHQUFHLFNBQVMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO0FBQ2hLLElBQUksY0FBYyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSztBQUMvQixFQUFFLEtBQUssSUFBSSxJQUFJLElBQUksQ0FB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