@acorex/core 20.1.7 → 20.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/events/index.d.ts +8 -1
- package/fesm2022/acorex-core-date-time.mjs +3 -3
- package/fesm2022/acorex-core-date-time.mjs.map +1 -1
- package/fesm2022/acorex-core-events.mjs +11 -1
- package/fesm2022/acorex-core-events.mjs.map +1 -1
- package/fesm2022/acorex-core-format.mjs +2 -12
- package/fesm2022/acorex-core-format.mjs.map +1 -1
- package/fesm2022/acorex-core-locale.mjs +2 -12
- package/fesm2022/acorex-core-locale.mjs.map +1 -1
- package/fesm2022/acorex-core-translation.mjs +12 -5
- package/fesm2022/acorex-core-translation.mjs.map +1 -1
- package/locale/index.d.ts +1 -8
- package/package.json +1 -1
- package/translation/index.d.ts +1 -0
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"acorex-core-date-time.mjs","sources":["../tmp-esm2022/date-time/lib/datetime.types.js","../tmp-esm2022/date-time/lib/gregorian.calendar.js","../tmp-esm2022/date-time/lib/solar-hijri.calendar.js","../tmp-esm2022/date-time/lib/dateTime.config.js","../tmp-esm2022/date-time/lib/holidays.loader.js","../tmp-esm2022/date-time/lib/calendar.service.js","../tmp-esm2022/date-time/lib/datetime.pipe.js","../tmp-esm2022/date-time/lib/formatters/date.formatter.js","../tmp-esm2022/date-time/lib/formatters/datetime.formatter.js","../tmp-esm2022/date-time/lib/formatters/time-duration.formatter.js","../tmp-esm2022/date-time/lib/formatters/time.formatter.js","../tmp-esm2022/date-time/lib/formatters/timeleft.formatter.js","../tmp-esm2022/date-time/lib/datetime.module.js","../tmp-esm2022/date-time/acorex-core-date-time.js"],"sourcesContent":["import { isBrowser } from '@acorex/core/platform';\nimport { translateSync } from '@acorex/core/translation';\nimport { defaults, orderBy } from 'lodash-es';\nexport class AXCalendar {\n /**\n * @ignore\n */\n constructor(config) {\n this._config = config;\n }\n get weekend() {\n return this._config.weekend;\n }\n // public get formats(): AXDateTimeDisplayFormats {\n // return this._config.formats;\n // }\n get weekdays() {\n return this._config.weekdays;\n }\n}\nexport class AXDateTime {\n get date() {\n return this._date;\n }\n get calendar() {\n return this._calendar;\n }\n constructor(value, calendar) {\n //TODO: remove unused items\n this._formatKeys = {\n // 0 1 ... 58 59\n s: () => this.date.getSeconds().toString(),\n // 00 01 ... 58 59\n ss: () => this.pad(this.date.getSeconds(), 2),\n // 0 1 ... 5 6 day of week ***\n d: () => (this.calendar.dayOfWeek(this.date) - 1).toString(),\n // Su Mo ... Fr Sa ***\n dd: () => translateSync(`@acorex:dateTime.weekdays.short.${this.calendar.weekdays[this.calendar.dayOfWeek(this.date) - 1]}`),\n ddd: () => translateSync(`@acorex:dateTime.weekdays.short.${this.calendar.weekdays[this.calendar.dayOfWeek(this.date) - 1]}`),\n // Sunday Monday ... Friday Saturday\n dddd: () => translateSync(`@acorex:dateTime.weekdays.long.${this.calendar.weekdays[this.calendar.dayOfWeek(this.date) - 1]}`),\n // 1 2 ... 30 31\n D: () => this.calendar.dayOfMonth(this.date).toString(),\n // 01 02 ... 30 31 day of month\n DD: () => this.pad(this.calendar.dayOfMonth(this.date), 2),\n // 1 2 ... 364 365\n DDD: () => this.calendar.dayOfYear(this.date).toString(),\n // 001 002 ... 364 365 day of year\n DDDD: () => this.pad(this.calendar.dayOfYear(this.date), 3),\n // 1 2 ... 52 53\n w: () => this.calendar.weekOfYear(this.date).toString(),\n // 01 02 ... 52 53\n ww: () => this.pad(this.calendar.weekOfYear(this.date), 2),\n // 1 2 ... 11 12\n M: () => this.calendar.monthOfYear(this.date).toString(),\n // 01 02 ... 11 12\n MM: () => this.pad(this.calendar.monthOfYear(this.date), 2),\n // Jan Feb ... Nov Dec\n MMM: () => translateSync(`@acorex:dateTime.months.${this.calendar.name()}.short.${this.calendar.monthOfYear(this.date) - 1}`),\n // January February ... November December\n MMMM: () => translateSync(`@acorex:dateTime.months.${this.calendar.name()}.long.${this.calendar.monthOfYear(this.date) - 1}`),\n // 1 2 ... 7\n E: () => this.calendar.dayOfWeek(this.date).toString(),\n // 01 02 ... 07\n EE: () => this.pad(this.calendar.dayOfWeek(this.date), 2),\n // Sun Mon ... Sat\n EEE: () => translateSync(`@acorex:dateTime.weekdays.short.${this.calendar.weekdays[this.calendar.dayOfWeek(this.date) - 1]}`),\n // Sunday Monday ... Saturday\n EEEE: () => translateSync(`@acorex:dateTime.weekdays.long.${this.calendar.weekdays[this.calendar.dayOfWeek(this.date) - 1]}`),\n // 1 2 ... 2020 ...\n y: () => this.calendar.year(this.date).toString(),\n // 70 71 ... 29 30\n yy: () => this.pad(this.calendar.year(this.date), 4).substring(2),\n YY: () => this.pad(this.calendar.year(this.date), 4).substring(2),\n // 1970 1971 ... 2029 2030\n yyyy: () => this.pad(this.calendar.year(this.date), 4),\n YYYY: () => this.pad(this.calendar.year(this.date), 4),\n // 0 1 ... 58 59\n m: () => this.date.getMinutes().toString(),\n // 00 01 ... 58 59\n mm: () => this.pad(this.date.getMinutes(), 2),\n // 0 1 ... 11 12\n h: () => (this.date.getHours() % 12 || 12).toString(),\n // 00 01 ... 11 12\n hh: () => this.pad(this.date.getHours() % 12 || 12, 2),\n // 0 1 ... 23 24\n H: () => this.date.getHours().toString(),\n // 00 01 ... 23 24\n HH: () => this.pad(this.date.getHours(), 2),\n // TODO: i18n\n // AM PM\n A: () => (this.date.getHours() < 12 ? 'AM' : 'PM').toUpperCase(),\n // am pm\n a: () => (this.date.getHours() < 12 ? 'am' : 'pm').toLowerCase(),\n // TODO: review\n Z: () => '',\n ZZZZ: () => '',\n //\n date: (options) => this.format(this.getDateTimeFormatByLocale(options.locale, 'shortDate')),\n shortDate: (options) => this.format(this.getDateTimeFormatByLocale(options.locale, 'shortDate')),\n longDate: (options) => this.format(this.getDateTimeFormatByLocale(options.locale, 'longDate')),\n //\n shortTime: (options) => this.format(this.getDateTimeFormatByLocale(options.locale, 'shortTime')),\n time: (options) => this.format(this.getDateTimeFormatByLocale(options.locale, 'shortTime')),\n longTime: (options) => this.format(this.getDateTimeFormatByLocale(options.locale, 'longTime')),\n //\n datetime: (options) => this.format('date time', { locale: options.locale }),\n };\n this._language = () => (isBrowser() ? navigator.language : 'en-US');\n this._calendar = calendar;\n this._date = value;\n }\n clone() {\n return new AXDateTime(this.date, this.calendar);\n }\n get dayOfMonth() {\n return this._calendar.dayOfMonth(this.date);\n }\n get dayOfYear() {\n return this._calendar.dayOfYear(this.date);\n }\n get dayOfWeek() {\n return this._calendar.dayOfWeek(this.date);\n }\n get hour() {\n return this._date.getHours();\n }\n get minute() {\n return this._date.getMinutes();\n }\n get second() {\n return this._date.getSeconds();\n }\n get year() {\n return this._calendar.year(this.date);\n }\n get monthOfYear() {\n return this._calendar.monthOfYear(this.date);\n }\n get weekOfYear() {\n return this._calendar.weekOfYear(this.date);\n }\n get month() {\n return new AXCalendarMonth(this);\n }\n add(unit, amount) {\n return this._calendar.add(this.date, unit, amount);\n }\n set(unit = 'day', value) {\n return this._calendar.set(this.date, unit, value);\n }\n duration(end) {\n const date = end instanceof AXDateTime ? end.date : end;\n const val = new AXDateTime(date, this.calendar);\n const range = new AXDateTimeRange(this, val);\n return range.duration();\n }\n startOf(unit = 'day') {\n return this._calendar.startOf(this.date, unit);\n }\n endOf(unit = 'day') {\n return this._calendar.endOf(this.date, unit);\n }\n format(format = this.getDateTimeFormatByLocale(this._language(), 'shortDate'), options) {\n const effectiveOptions = defaults({}, options, {\n locale: this._language(),\n });\n const re = new RegExp(orderBy(Object.keys(this._formatKeys), (c) => c.length, ['desc']).join('|'), 'gi');\n return format.replace(re, (matched) => {\n const f = this._formatKeys[matched];\n if (f && typeof f === 'function') {\n const r = f(effectiveOptions);\n return r;\n }\n return matched;\n });\n }\n getDateTimeFormatByLocale(locale, style) {\n let options = {};\n switch (style) {\n case 'shortDate': // Year, Month, Day\n options = { year: 'numeric', month: '2-digit', day: '2-digit' };\n break;\n case 'longDate': // Weekday, Month name, Day, Year\n options = {\n weekday: 'long',\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n };\n break;\n case 'shortTime': // Hour, Minute\n options = { hour: '2-digit', minute: '2-digit', hour12: false };\n break;\n case 'longTime': // Hour, Minute, Second\n options = {\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit',\n hour12: false,\n };\n break;\n }\n const formatter = new Intl.DateTimeFormat(locale, options);\n // Get parts of the date and/or time\n const parts = formatter.formatToParts(new Date());\n // Map parts to their respective format\n const formatMap = {\n day: 'dd',\n month: style == 'longDate' ? 'MMMM' : 'MM',\n year: 'yyyy',\n hour: 'HH',\n minute: 'mm',\n second: 'ss',\n weekday: 'E',\n literal: '',\n };\n // Construct the date and/or time format string\n return parts\n .map((part) => {\n if (part.type === 'literal') {\n // Use the literal part directly as separator\n return part.value;\n }\n else {\n return formatMap[part.type] || part.value;\n }\n })\n .join('');\n }\n pad(n, width, z = '0') {\n n = n + '';\n return n.length >= width ? n : new Array(width - n.length + 1).join(z) + n;\n }\n equal(value, unit = 'day') {\n return this.compare(value, unit) == 0;\n }\n compare(value, unit = 'day') {\n const date = value instanceof AXDateTime ? value.date : value;\n const val = new AXDateTime(date, this.calendar);\n const func = (v1, v2) => {\n if (v1 == v2) {\n return 0;\n }\n else if (v1 > v2) {\n return 1;\n }\n else {\n return -1;\n }\n };\n let p = 0;\n switch (unit) {\n case 'year':\n return func(this.year, val.year);\n case 'week':\n p = this.compare(val, 'year');\n return p == 0 ? func(this.weekOfYear, val.weekOfYear) : p;\n case 'month':\n p = this.compare(val, 'year');\n return p == 0 ? func(this.monthOfYear, val.monthOfYear) : p;\n case 'day':\n p = this.compare(val, 'year');\n return p == 0 ? func(this.dayOfYear, val.dayOfYear) : p;\n case 'hour':\n p = this.compare(val, 'day');\n return p == 0 ? func(this.hour, val.hour) : p;\n case 'minute':\n p = this.compare(val, 'hour');\n return p == 0 ? func(this.minute, val.minute) : p;\n case 'second':\n p = this.compare(val, 'minute');\n return p == 0 ? func(this.second, val.second) : p;\n default:\n return func(this.date.getTime(), val.date.getTime());\n }\n }\n}\nexport class AXCalendarMonth {\n get range() {\n return this._range;\n }\n set range(v) {\n this._range = v;\n }\n get totalDays() {\n return this.range.endTime.dayOfMonth;\n }\n constructor(date) {\n this.index = date.date.getMonth();\n this.name = date.format('MMMM');\n this.range = new AXDateTimeRange(new AXDateTime(date.startOf('month').date, date.calendar), new AXDateTime(date.endOf('month').date, date.calendar));\n }\n}\nexport class AXDateTimeRange {\n get startTime() {\n return this._startTime;\n }\n get endTime() {\n return this._endTime;\n }\n constructor(startTime, endTime) {\n this._startTime = startTime;\n this._endTime = endTime;\n }\n duration() {\n const result = {\n miliseconds: 0,\n seconds: 0,\n minutes: 0,\n hours: 0,\n days: 0,\n // NOTE: Calculating exact calendar months/years component is complex\n // from milliseconds alone. We'll set these to 0.\n months: 0,\n years: 0,\n total: {\n miliseconds: 0,\n seconds: 0,\n minutes: 0,\n hours: 0,\n days: 0,\n weeks: 0,\n // NOTE: total.months and total.years are approximate based on average lengths\n months: 0,\n years: 0,\n },\n };\n // Constants for time units in milliseconds\n const ONE_MILLISECOND = 1;\n const ONE_SECOND = 1000 * ONE_MILLISECOND;\n const ONE_MINUTE = 60 * ONE_SECOND;\n const ONE_HOUR = 60 * ONE_MINUTE;\n const ONE_DAY = 24 * ONE_HOUR;\n const ONE_WEEK = 7 * ONE_DAY;\n // Average lengths for approximate total months/years\n const ONE_YEAR_AVG = 365.25 * ONE_DAY;\n const ONE_MONTH_AVG = ONE_YEAR_AVG / 12;\n const startTime = this._startTime.date.getTime();\n const endTime = this._endTime.date.getTime();\n // Calculate the absolute difference in milliseconds\n const diff = Math.abs(endTime - startTime);\n // --- Calculate Total Durations ---\n result.total.miliseconds = diff;\n result.total.seconds = diff / ONE_SECOND;\n result.total.minutes = diff / ONE_MINUTE;\n result.total.hours = diff / ONE_HOUR;\n result.total.days = diff / ONE_DAY; // Includes fractional days\n result.total.weeks = diff / ONE_WEEK; // Includes fractional weeks\n result.total.months = diff / ONE_MONTH_AVG; // Approximate\n result.total.years = diff / ONE_YEAR_AVG; // Approximate\n // --- Calculate Component Parts ---\n let remainingMillis = diff;\n // Calculate full days and update remaining milliseconds\n result.days = Math.floor(remainingMillis / ONE_DAY);\n remainingMillis %= ONE_DAY; // Get the remainder milliseconds after taking out full days\n // Calculate full hours from the remainder\n result.hours = Math.floor(remainingMillis / ONE_HOUR);\n remainingMillis %= ONE_HOUR; // Get the remainder milliseconds after taking out full hours\n // Calculate full minutes from the remainder\n result.minutes = Math.floor(remainingMillis / ONE_MINUTE);\n remainingMillis %= ONE_MINUTE; // Get the remainder milliseconds after taking out full minutes\n // Calculate full seconds from the remainder\n result.seconds = Math.floor(remainingMillis / ONE_SECOND);\n remainingMillis %= ONE_SECOND; // Get the remainder milliseconds after taking out full seconds\n // The final remainder is the milliseconds component\n result.miliseconds = remainingMillis;\n // As noted above, setting month/year components to 0 as accurate\n // calendar-aware calculation is not implemented here.\n result.months = 0;\n result.years = 0;\n return result;\n }\n enumurate(unit = 'day', amount = 1) {\n const result = [];\n let item = this._startTime.clone();\n while (item.compare(this._endTime, unit) < 1) {\n if (!result.some((c) => c.equal(item, unit))) {\n result.push(item);\n }\n item = item.add(unit, amount);\n }\n return result;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUudHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL2RhdGUtdGltZS9zcmMvbGliL2RhdGV0aW1lLnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUF3RDlDLE1BQU0sT0FBZ0IsVUFBVTtJQUc5Qjs7T0FFRztJQUNILFlBQVksTUFBd0I7UUFDbEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQVcsT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO0lBQzlCLENBQUM7SUFFRCxtREFBbUQ7SUFDbkQsaUNBQWlDO0lBQ2pDLElBQUk7SUFFSixJQUFXLFFBQVE7UUFDakIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQztJQUMvQixDQUFDO0NBMkJGO0FBRUQsTUFBTSxPQUFPLFVBQVU7SUFHckIsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFHRCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUVELFlBQVksS0FBVyxFQUFFLFFBQW9CO1FBd0U3QywyQkFBMkI7UUFDbkIsZ0JBQVcsR0FBRztZQUNwQixnQkFBZ0I7WUFDaEIsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsUUFBUSxFQUFFO1lBQzFDLGtCQUFrQjtZQUNsQixFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxD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QUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7WUFDakUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7WUFDakUsMEJBQTBCO1lBQzFCLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDdEQsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUV0RCxnQkFBZ0I7WUFDaEIsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsUUFBUSxFQUFFO1lBQzFDLGtCQUFrQjtZQUNsQixFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUU3QyxnQkFBZ0I7WUFDaEIsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFO1lBQ3JELGtCQUFrQjtZQUNsQixFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFF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UUFDbkMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDN0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDN0MsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNwQixDQUFDO1lBQ0QsSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ2hDLENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc0Jyb3dzZXIgfSBmcm9tICdAYWNvcmV4L2NvcmUvcGxhdGZvcm0nO1xuaW1wb3J0IHsgdHJhbnNsYXRlU3luYyB9IGZyb20gJ0BhY29yZXgvY29yZS90cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBkZWZhdWx0cywgb3JkZXJCeSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5cbmV4cG9ydCB0eXBlIFRpbWVVbml0ID0gJ21zJyB8ICdzZWNvbmQnIHwgJ21pbnV0ZScgfCAnaG91cicgfCAnZGF5JyB8ICdtb250aCcgfCAneWVhcicgfCAnd2Vlayc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhEYXRlVmFsdWUge1xuICB5ZWFyOiBudW1iZXI7XG4gIG1vbnRoOiBudW1iZXI7XG4gIGRheTogbnVtYmVyO1xuICBob3Vycz86IG51bWJlcjtcbiAgbWludXRlcz86IG51bWJlcjtcbiAgc2Vjb25kcz86IG51bWJlcjtcbiAgbXM/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhEYXRlVGltZURpc3BsYXlGb3JtYXRzIHtcbiAgZGF0ZUlucHV0OiBzdHJpbmc7XG4gIHRpbWVJbnB1dDogc3RyaW5nO1xuICBkYXRlVGltZUlucHV0OiBzdHJpbmc7XG4gIGRhdGVEaXNwbGF5OiBzdHJpbmc7XG4gIHRpbWVEaXNwbGF5OiBzdHJpbmc7XG4gIGRhdGVUaW1lRGlzcGxheTogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBBWERhdGVUaW1lVW5pdE5hbWVzID0ge1xuICBsb25nOiBzdHJpbmc7XG4gIHNob3J0OiBzdHJpbmc7XG4gIGxldHRlcjogc3RyaW5nO1xufVtdO1xuXG5leHBvcnQgdHlwZSBBWERhdGVUaW1lUGFydCA9IHtcbiAga2V5OiBzdHJpbmc7XG4gIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG4gIHBsYWNlaG9sZGVyczogc3RyaW5nW107XG4gIHR5cGVkVmFsdWU/OiBzdHJpbmcgfCBudWxsO1xuICBkZWZhdWx0OiBudW1iZXI7XG4gIGVuYWJsZWQ6IGJvb2xlYW47XG4gIHJlYWxWYWx1ZTogKCkgPT4gc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgQVhEYXRlVGltZVBhcnRzID0ge1xuICB5ZWFyOiBBWERhdGVUaW1lUGFydDtcbiAgbW9udGg6IEFYRGF0ZVRpbWVQYXJ0O1xuICBkYXk6IEFYRGF0ZVRpbWVQYXJ0O1xuICBob3VyOiBBWERhdGVUaW1lUGFydDtcbiAgbWludXRlOiBBWERhdGVUaW1lUGFydDtcbiAgc2Vjb25kOiBBWERhdGVUaW1lUGFydDtcbiAgQU1QTTogQVhEYXRlVGltZVBhcnQ7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIEFYQ2FsZW5kYXJDb25maWcge1xuICB3ZWVrZGF5czogbnVtYmVyW107XG4gIHdlZWtlbmQ6IG51bWJlcltdO1xufVxuXG5leHBvcnQgdHlwZSBBWFZhbGlkRGF0ZVRpbWVWYWx1ZSA9IEFYRGF0ZVRpbWUgfCBEYXRlIHwgc3RyaW5nIHwgQVhEYXRlVmFsdWU7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBWENhbGVuZGFyIHtcbiAgcHJpdmF0ZSBfY29uZmlnOiBBWENhbGVuZGFyQ29uZmlnO1xuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihjb25maWc6IEFYQ2FsZW5kYXJDb25maWcpIHtcbiAgICB0aGlzLl9jb25maWcgPSBjb25maWc7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHdlZWtlbmQoKTogbnVtYmVyW10ge1xuICAgIHJldHVybiB0aGlzLl9jb25maWcud2Vla2VuZDtcbiAgfVxuXG4gIC8vIHB1YmxpYyBnZXQgZm9ybWF0cygpOiBBWERhdGVUaW1lRGlzcGxheUZvcm1hdHMge1xuICAvLyAgIHJldHVybiB0aGlzLl9jb25maWcuZm9ybWF0cztcbiAgLy8gfVxuXG4gIHB1YmxpYyBnZXQgd2Vla2RheXMoKTogbnVtYmVyW10ge1xuICAgIHJldHVybiB0aGlzLl9jb25maWcud2Vla2RheXM7XG4gIH1cblxuICBhYnN0cmFjdCBuYW1lKCk6IHN0cmluZztcblxuICBhYnN0cmFjdCBkYXlPZk1vbnRoKGRhdGU6IERhdGUpOiBudW1iZXI7XG5cbiAgYWJzdHJhY3QgZGF5T2ZZZWFyKGRhdGU6IERhdGUpOiBudW1iZXI7XG5cbiAgYWJzdHJhY3QgZGF5T2ZXZWVrKGRhdGU6IERhdGUpOiBudW1iZXI7XG5cbiAgYWJzdHJhY3QgbW9udGhPZlllYXIoZGF0ZTogRGF0ZSk6IG51bWJlcjtcblxuICBhYnN0cmFjdCB3ZWVrT2ZZZWFyKGRhdGU6IERhdGUpOiBudW1iZXI7XG5cbiAgYWJzdHJhY3QgeWVhcihkYXRlOiBEYXRlKTogbnVtYmVyO1xuXG4gIGFic3RyYWN0IGFkZChkYXRlOiBEYXRlLCB1bml0OiBUaW1lVW5pdCwgYW1vdW50OiBudW1iZXIpOiBBWERhdGVUaW1lO1xuXG4gIGFic3RyYWN0IHNldChkYXRlOiBEYXRlLCB1bml0OiBUaW1lVW5pdCwgdmFsdWU6IG51bWJlcik6IEFYRGF0ZVRpbWU7XG5cbiAgYWJzdHJhY3Qgc3RhcnRPZihkYXRlOiBEYXRlLCB1bml0OiBUaW1lVW5pdCk6IEFYRGF0ZVRpbWU7XG5cbiAgYWJzdHJhY3QgZW5kT2YoZGF0ZTogRGF0ZSwgdW5pdDogVGltZVVuaXQpOiBBWERhdGVUaW1lO1xuXG4gIGFic3RyYWN0IGNyZWF0ZSh2YWx1ZTogQVhEYXRlVmFsdWUpOiBBWERhdGVUaW1lO1xuXG4gIGFic3RyYWN0IHBhcnNlKHZhbHVlOiBzdHJpbmcpOiBBWERhdGVUaW1lO1xufVxuXG5leHBvcnQgY2xhc3MgQVhEYXRlVGltZSB7XG4gIHByaXZhdGUgX2RhdGU6IERhdGU7XG5cbiAgZ2V0IGRhdGUoKTogRGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGU7XG4gIH1cblxuICBwcml2YXRlIF9jYWxlbmRhcjogQVhDYWxlbmRhcjtcbiAgZ2V0IGNhbGVuZGFyKCk6IEFYQ2FsZW5kYXIge1xuICAgIHJldHVybiB0aGlzLl9jYWxlbmRhcjtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHZhbHVlOiBEYXRlLCBjYWxlbmRhcjogQVhDYWxlbmRhcikge1xuICAgIHRoaXMuX2NhbGVuZGFyID0gY2FsZW5kYXI7XG4gICAgdGhpcy5fZGF0ZSA9IHZhbHVlO1xuICB9XG5cbiAgY2xvbmUoKTogQVhEYXRlVGltZSB7XG4gICAgcmV0dXJuIG5ldyBBWERhdGVUaW1lKHRoaXMuZGF0ZSwgdGhpcy5jYWxlbmRhcik7XG4gIH1cblxuICBnZXQgZGF5T2ZNb250aCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9jYWxlbmRhci5kYXlPZk1vbnRoKHRoaXMuZGF0ZSk7XG4gIH1cblxuICBnZXQgZGF5T2ZZZWFyKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2NhbGVuZGFyLmRheU9mWWVhcih0aGlzLmRhdGUpO1xuICB9XG5cbiAgZ2V0IGRheU9mV2VlaygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9jYWxlbmRhci5kYXlPZldlZWsodGhpcy5kYXRlKTtcbiAgfVxuXG4gIGdldCBob3VyKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGUuZ2V0SG91cnMoKTtcbiAgfVxuXG4gIGdldCBtaW51dGUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0ZS5nZXRNaW51dGVzKCk7XG4gIH1cblxuICBnZXQgc2Vjb25kKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGUuZ2V0U2Vjb25kcygpO1xuICB9XG5cbiAgZ2V0IHllYXIoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fY2FsZW5kYXIueWVhcih0aGlzLmRhdGUpO1xuICB9XG5cbiAgZ2V0IG1vbnRoT2ZZZWFyKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2NhbGVuZGFyLm1vbnRoT2ZZZWFyKHRoaXMuZGF0ZSk7XG4gIH1cblxuICBnZXQgd2Vla09mWWVhcigpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9jYWxlbmRhci53ZWVrT2ZZZWFyKHRoaXMuZGF0ZSk7XG4gIH1cblxuICBnZXQgbW9udGgoKTogQVhDYWxlbmRhck1vbnRoIHtcbiAgICByZXR1cm4gbmV3IEFYQ2FsZW5kYXJNb250aCh0aGlzKTtcbiAgfVxuXG4gIGFkZCh1bml0OiBUaW1lVW5pdCwgYW1vdW50OiBudW1iZXIpOiBBWERhdGVUaW1lIHtcbiAgICByZXR1cm4gdGhpcy5fY2FsZW5kYXIuYWRkKHRoaXMuZGF0ZSwgdW5pdCwgYW1vdW50KTtcbiAgfVxuXG4gIHNldCh1bml0OiBUaW1lVW5pdCA9ICdkYXknLCB2YWx1ZTogbnVtYmVyKTogQVhEYXRlVGltZSB7XG4gICAgcmV0dXJuIHRoaXMuX2NhbGVuZGFyLnNldCh0aGlzLmRhdGUsIHVuaXQsIHZhbHVlKTtcbiAgfVxuXG4gIGR1cmF0aW9uKGVuZDogRGF0ZSB8IEFYRGF0ZVRpbWUpOiBBWFRpbWVTcGFuIHtcbiAgICBjb25zdCBkYXRlID0gZW5kIGluc3RhbmNlb2YgQVhEYXRlVGltZSA/IGVuZC5kYXRlIDogKGVuZCBhcyBEYXRlKTtcbiAgICBjb25zdCB2YWwgPSBuZXcgQVhEYXRlVGltZShkYXRlLCB0aGlzLmNhbGVuZGFyKTtcbiAgICBjb25zdCByYW5nZSA9IG5ldyBBWERhdGVUaW1lUmFuZ2UodGhpcywgdmFsKTtcbiAgICByZXR1cm4gcmFuZ2UuZHVyYXRpb24oKTtcbiAgfVxuXG4gIHN0YXJ0T2YodW5pdDogVGltZVVuaXQgPSAnZGF5Jyk6IEFYRGF0ZVRpbWUge1xuICAgIHJldHVybiB0aGlzLl9jYWxlbmRhci5zdGFydE9mKHRoaXMuZGF0ZSwgdW5pdCk7XG4gIH1cblxuICBlbmRPZih1bml0OiBUaW1lVW5pdCA9ICdkYXknKTogQVhEYXRlVGltZSB7XG4gICAgcmV0dXJuIHRoaXMuX2NhbGVuZGFyLmVuZE9mKHRoaXMuZGF0ZSwgdW5pdCk7XG4gIH1cblxuICAvL1RPRE86IHJlbW92ZSB1bnVzZWQgaXRlbXNcbiAgcHJpdmF0ZSBfZm9ybWF0S2V5cyA9IHtcbiAgICAvLyAwIDEgLi4uIDU4IDU5XG4gICAgczogKCkgPT4gdGhpcy5kYXRlLmdldFNlY29uZHMoKS50b1N0cmluZygpLFxuICAgIC8vIDAwIDAxIC4uLiA1OCA1OVxuICAgIHNzOiAoKSA9PiB0aGlzLnBhZCh0aGlzLmRhdGUuZ2V0U2Vjb25kcygpLCAyKSxcblxuICAgIC8vIDAgMSAuLi4gNSA2IGRheSBvZiB3ZWVrICoqKlxuICAgIGQ6ICgpID0+ICh0aGlzLmNhbGVuZGFyLmRheU9mV2Vlayh0aGlzLmRhdGUpIC0gMSkudG9TdHJpbmcoKSxcbiAgICAvLyAgU3UgTW8gLi4uIEZyIFNhICoqKlxuICAgIGRkOiAoKSA9PlxuICAgICAgdHJhbnNsYXRlU3luYyhcbiAgICAgICAgYEBhY29yZXg6ZGF0ZVRpbWUud2Vla2RheXMuc2hvcnQuJHt0aGlzLmNhbGVuZGFyLndlZWtkYXlzW3RoaXMuY2FsZW5kYXIuZGF5T2ZXZWVrKHRoaXMuZGF0ZSkgLSAxXX1gLFxuICAgICAgKSxcbiAgICBkZGQ6ICgpID0+XG4gICAgICB0cmFuc2xhdGVTeW5jKFxuICAgICAgICBgQGFjb3JleDpkYXRlVGltZS53ZWVrZGF5cy5zaG9ydC4ke3RoaXMuY2FsZW5kYXIud2Vla2RheXNbdGhpcy5jYWxlbmRhci5kYXlPZldlZWsodGhpcy5kYXRlKSAtIDFdfWAsXG4gICAgICApLFxuICAgIC8vIFN1bmRheSBNb25kYXkgLi4uIEZyaWRheSBTYXR1cmRheVxuICAgIGRkZGQ6ICgpID0+XG4gICAgICB0cmFuc2xhdGVTeW5jKGBAYWNvcmV4OmRhdGVUaW1lLndlZWtkYXlzLmxvbmcuJHt0aGlzLmNhbGVuZGFyLndlZWtkYXlzW3RoaXMuY2FsZW5kYXIuZGF5T2ZXZWVrKHRoaXMuZGF0ZSkgLSAxXX1gKSxcblxuICAgIC8vIDEgMiAuLi4gMzAgMzFcbiAgICBEOiAoKSA9PiB0aGlzLmNhbGVuZGFyLmRheU9mTW9udGgodGhpcy5kYXRlKS50b1N0cmluZygpLFxuICAgIC8vIDAxIDAyIC4uLiAzMCAzMSBkYXkgb2YgbW9udGhcbiAgICBERDogKCkgPT4gdGhpcy5wYWQodGhpcy5jYWxlbmRhci5kYXlPZk1vbnRoKHRoaXMuZGF0ZSksIDIpLFxuICAgIC8vIDEgMiAuLi4gMzY0IDM2NVxuICAgIERERDogKCkgPT4gdGhpcy5jYWxlbmRhci5kYXlPZlllYXIodGhpcy5kYXRlKS50b1N0cmluZygpLFxuICAgIC8vIDAwMSAwMDIgLi4uIDM2NCAzNjUgZGF5IG9mIHllYXJcbiAgICBEREREOiAoKSA9PiB0aGlzLnBhZCh0aGlzLmNhbGVuZGFyLmRheU9mWWVhcih0aGlzLmRhdGUpLCAzKSxcblxuICAgIC8vIDEgMiAuLi4gNTIgNTNcbiAgICB3OiAoKSA9PiB0aGlzLmNhbGVuZGFyLndlZWtPZlllYXIodGhpcy5kYXRlKS50b1N0cmluZygpLFxuICAgIC8vIDAxIDAyIC4uLiA1MiA1M1xuICAgIHd3OiAoKSA9PiB0aGlzLnBhZCh0aGlzLmNhbGVuZGFyLndlZWtPZlllYXIodGhpcy5kYXRlKSwgMiksXG5cbiAgICAvLyAxIDIgLi4uIDExIDEyXG4gICAgTTogKCkgPT4gdGhpcy5jYWxlbmRhci5tb250aE9mWWVhcih0aGlzLmRhdGUpLnRvU3RyaW5nKCksXG4gICAgLy8gMDEgMDIgLi4uIDExIDEyXG4gICAgTU06ICgpID0+IHRoaXMucGFkKHRoaXMuY2FsZW5kYXIubW9udGhPZlllYXIodGhpcy5kYXRlKSwgMiksXG4gICAgLy8gSmFuIEZlYiAuLi4gTm92IERlY1xuICAgIE1NTTogKCkgPT5cbiAgICAgIHRyYW5zbGF0ZVN5bmMoXG4gICAgICAgIGBAYWNvcmV4OmRhdGVUaW1lLm1vbnRocy4ke3RoaXMuY2FsZW5kYXIubmFtZSgpfS5zaG9ydC4ke3RoaXMuY2FsZW5kYXIubW9udGhPZlllYXIodGhpcy5kYXRlKSAtIDF9YCxcbiAgICAgICksXG4gICAgLy8gSmFudWFyeSBGZWJydWFyeSAuLi4gTm92ZW1iZXIgRGVjZW1iZXJcbiAgICBNTU1NOiAoKSA9PlxuICAgICAgdHJhbnNsYXRlU3luYyhgQGFjb3JleDpkYXRlVGltZS5tb250aHMuJHt0aGlzLmNhbGVuZGFyLm5hbWUoKX0ubG9uZy4ke3RoaXMuY2FsZW5kYXIubW9udGhPZlllYXIodGhpcy5kYXRlKSAtIDF9YCksXG5cbiAgICAvLyAxIDIgLi4uIDdcbiAgICBFOiAoKSA9PiB0aGlzLmNhbGVuZGFyLmRheU9mV2Vlayh0aGlzLmRhdGUpLnRvU3RyaW5nKCksXG4gICAgLy8gMDEgMDIgLi4uIDA3XG4gICAgRUU6ICgpID0+IHRoaXMucGFkKHRoaXMuY2FsZW5kYXIuZGF5T2ZXZWVrKHRoaXMuZGF0ZSksIDIpLFxuICAgIC8vIFN1biBNb24gLi4uIFNhdFxuICAgIEVFRTogKCkgPT5cbiAgICAgIHRyYW5zbGF0ZVN5bmMoXG4gICAgICAgIGBAYWNvcmV4OmRhdGVUaW1lLndlZWtkYXlzLnNob3J0LiR7dGhpcy5jYWxlbmRhci53ZWVrZGF5c1t0aGlzLmNhbGVuZGFyLmRheU9mV2Vlayh0aGlzLmRhdGUpIC0gMV19YCxcbiAgICAgICksXG4gICAgLy8gU3VuZGF5IE1vbmRheSAuLi4gU2F0dXJkYXlcbiAgICBFRUVFOiAoKSA9PlxuICAgICAgdHJhbnNsYXRlU3luYyhgQGFjb3JleDpkYXRlVGltZS53ZWVrZGF5cy5sb25nLiR7dGhpcy5jYWxlbmRhci53ZWVrZGF5c1t0aGlzLmNhbGVuZGFyLmRheU9mV2Vlayh0aGlzLmRhdGUpIC0gMV19YCksXG5cbiAgICAvLyAxIDIgLi4uIDIwMjAgLi4uXG4gICAgeTogKCkgPT4gdGhpcy5jYWxlbmRhci55ZWFyKHRoaXMuZGF0ZSkudG9TdHJpbmcoKSxcbiAgICAvLyA3MCA3MSAuLi4gMjkgMzBcbiAgICB5eTogKCkgPT4gdGhpcy5wYWQodGhpcy5jYWxlbmRhci55ZWFyKHRoaXMuZGF0ZSksIDQpLnN1YnN0cmluZygyKSxcbiAgICBZWTogKCkgPT4gdGhpcy5wYWQodGhpcy5jYWxlbmRhci55ZWFyKHRoaXMuZGF0ZSksIDQpLnN1YnN0cmluZygyKSxcbiAgICAvLyAxOTcwIDE5NzEgLi4uIDIwMjkgMjAzMFxuICAgIHl5eXk6ICgpID0+IHRoaXMucGFkKHRoaXMuY2FsZW5kYXIueWVhcih0aGlzLmRhdGUpLCA0KSxcbiAgICBZWVlZOiAoKSA9PiB0aGlzLnBhZCh0aGlzLmNhbGVuZGFyLnllYXIodGhpcy5kYXRlKSwgNCksXG5cbiAgICAvLyAwIDEgLi4uIDU4IDU5XG4gICAgbTogKCkgPT4gdGhpcy5kYXRlLmdldE1pbnV0ZXMoKS50b1N0cmluZygpLFxuICAgIC8vIDAwIDAxIC4uLiA1OCA1OVxuICAgIG1tOiAoKSA9PiB0aGlzLnBhZCh0aGlzLmRhdGUuZ2V0TWludXRlcygpLCAyKSxcblxuICAgIC8vIDAgMSAuLi4gMTEgMTJcbiAgICBoOiAoKSA9PiAodGhpcy5kYXRlLmdldEhvdXJzKCkgJSAxMiB8fCAxMikudG9TdHJpbmcoKSxcbiAgICAvLyAwMCAwMSAuLi4gMTEgMTJcbiAgICBoaDogKCkgPT4gdGhpcy5wYWQodGhpcy5kYXRlLmdldEhvdXJzKCkgJSAxMiB8fCAxMiwgMiksXG4gICAgLy8gMCAxIC4uLiAyMyAyNFxuICAgIEg6ICgpID0+IHRoaXMuZGF0ZS5nZXRIb3VycygpLnRvU3RyaW5nKCksXG4gICAgLy8gMDAgMDEgLi4uIDIzIDI0XG4gICAgSEg6ICgpID0+IHRoaXMucGFkKHRoaXMuZGF0ZS5nZXRIb3VycygpLCAyKSxcblxuICAgIC8vIFRPRE86IGkxOG5cbiAgICAvLyBBTSBQTVxuICAgIEE6ICgpID0+ICh0aGlzLmRhdGUuZ2V0SG91cnMoKSA8IDEyID8gJ0FNJyA6ICdQTScpLnRvVXBwZXJDYXNlKCksXG4gICAgLy8gYW0gcG1cbiAgICBhOiAoKSA9PiAodGhpcy5kYXRlLmdldEhvdXJzKCkgPCAxMiA/ICdhbScgOiAncG0nKS50b0xvd2VyQ2FzZSgpLFxuXG4gICAgLy8gVE9ETzogcmV2aWV3XG4gICAgWjogKCkgPT4gJycsXG4gICAgWlpaWjogKCkgPT4gJycsXG4gICAgLy9cbiAgICBkYXRlOiAob3B0aW9ucykgPT4gdGhpcy5mb3JtYXQodGhpcy5nZXREYXRlVGltZUZvcm1hdEJ5TG9jYWxlKG9wdGlvbnMubG9jYWxlLCAnc2hvcnREYXRlJykpLFxuICAgIHNob3J0RGF0ZTogKG9wdGlvbnMpID0+IHRoaXMuZm9ybWF0KHRoaXMuZ2V0RGF0ZVRpbWVGb3JtYXRCeUxvY2FsZShvcHRpb25zLmxvY2FsZSwgJ3Nob3J0RGF0ZScpKSxcbiAgICBsb25nRGF0ZTogKG9wdGlvbnMpID0+IHRoaXMuZm9ybWF0KHRoaXMuZ2V0RGF0ZVRpbWVGb3JtYXRCeUxvY2FsZShvcHRpb25zLmxvY2FsZSwgJ2xvbmdEYXRlJykpLFxuICAgIC8vXG4gICAgc2hvcnRUaW1lOiAob3B0aW9ucykgPT4gdGhpcy5mb3JtYXQodGhpcy5nZXREYXRlVGltZUZvcm1hdEJ5TG9jYWxlKG9wdGlvbnMubG9jYWxlLCAnc2hvcnRUaW1lJykpLFxuICAgIHRpbWU6IChvcHRpb25zKSA9PiB0aGlzLmZvcm1hdCh0aGlzLmdldERhdGVUaW1lRm9ybWF0QnlMb2NhbGUob3B0aW9ucy5sb2NhbGUsICdzaG9ydFRpbWUnKSksXG4gICAgbG9uZ1RpbWU6IChvcHRpb25zKSA9PiB0aGlzLmZvcm1hdCh0aGlzLmdldERhdGVUaW1lRm9ybWF0QnlMb2NhbGUob3B0aW9ucy5sb2NhbGUsICdsb25nVGltZScpKSxcbiAgICAvL1xuICAgIGRhdGV0aW1lOiAob3B0aW9ucykgPT4gdGhpcy5mb3JtYXQoJ2RhdGUgdGltZScsIHsgbG9jYWxlOiBvcHRpb25zLmxvY2FsZSB9KSxcbiAgfTtcblxuICBwcm90ZWN0ZWQgX2xhbmd1YWdlID0gKCkgPT4gKGlzQnJvd3NlcigpID8gbmF2aWdhdG9yLmxhbmd1YWdlIDogJ2VuLVVTJyk7XG5cbiAgZm9ybWF0KFxuICAgIGZvcm1hdDogc3RyaW5nID0gdGhpcy5nZXREYXRlVGltZUZvcm1hdEJ5TG9jYWxlKHRoaXMuX2xhbmd1YWdlKCksICdzaG9ydERhdGUnKSxcbiAgICBvcHRpb25zPzogeyBsb2NhbGU/OiBzdHJpbmcgfSxcbiAgKTogc3RyaW5nIHtcbiAgICBjb25zdCBlZmZlY3RpdmVPcHRpb25zID0gZGVmYXVsdHMoe30sIG9wdGlvbnMsIHtcbiAgICAgIGxvY2FsZTogdGhpcy5fbGFuZ3VhZ2UoKSxcbiAgICB9KTtcbiAgICBjb25zdCByZSA9IG5ldyBSZWdFeHAob3JkZXJCeShPYmplY3Qua2V5cyh0aGlzLl9mb3JtYXRLZXlzKSwgKGMpID0+IGMubGVuZ3RoLCBbJ2Rlc2MnXSkuam9pbignfCcpLCAnZ2knKTtcbiAgICByZXR1cm4gZm9ybWF0LnJlcGxhY2UocmUsIChtYXRjaGVkKSA9PiB7XG4gICAgICBjb25zdCBmID0gdGhpcy5fZm9ybWF0S2V5c1ttYXRjaGVkXTtcbiAgICAgIGlmIChmICYmIHR5cGVvZiBmID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNvbnN0IHIgPSBmKGVmZmVjdGl2ZU9wdGlvbnMpO1xuICAgICAgICByZXR1cm4gcjtcbiAgICAgIH1cbiAgICAgIHJldHVybiBtYXRjaGVkO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0RGF0ZVRpbWVGb3JtYXRCeUxvY2FsZShsb2NhbGU6IHN0cmluZywgc3R5bGU6ICdzaG9ydERhdGUnIHwgJ2xvbmdEYXRlJyB8ICdzaG9ydFRpbWUnIHwgJ2xvbmdUaW1lJyk6IHN0cmluZyB7XG4gICAgbGV0IG9wdGlvbnM6IEludGwuRGF0ZVRpbWVGb3JtYXRPcHRpb25zID0ge307XG4gICAgc3dpdGNoIChzdHlsZSkge1xuICAgICAgY2FzZSAnc2hvcnREYXRlJzogLy8gWWVhciwgTW9udGgsIERheVxuICAgICAgICBvcHRpb25zID0geyB5ZWFyOiAnbnVtZXJpYycsIG1vbnRoOiAnMi1kaWdpdCcsIGRheTogJzItZGlnaXQnIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnbG9uZ0RhdGUnOiAvLyBXZWVrZGF5LCBNb250aCBuYW1lLCBEYXksIFllYXJcbiAgICAgICAgb3B0aW9ucyA9IHtcbiAgICAgICAgICB3ZWVrZGF5OiAnbG9uZycsXG4gICAgICAgICAgeWVhcjogJ251bWVyaWMnLFxuICAgICAgICAgIG1vbnRoOiAnbG9uZycsXG4gICAgICAgICAgZGF5OiAnbnVtZXJpYycsXG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnc2hvcnRUaW1lJzogLy8gSG91ciwgTWludXRlXG4gICAgICAgIG9wdGlvbnMgPSB7IGhvdXI6ICcyLWRpZ2l0JywgbWludXRlOiAnMi1kaWdpdCcsIGhvdXIxMjogZmFsc2UgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdsb25nVGltZSc6IC8vIEhvdXIsIE1pbnV0ZSwgU2Vjb25kXG4gICAgICAgIG9wdGlvbnMgPSB7XG4gICAgICAgICAgaG91cjogJzItZGlnaXQnLFxuICAgICAgICAgIG1pbnV0ZTogJzItZGlnaXQnLFxuICAgICAgICAgIHNlY29uZDogJzItZGlnaXQnLFxuICAgICAgICAgIGhvdXIxMjogZmFsc2UsXG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGNvbnN0IGZvcm1hdHRlciA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY2FsZSwgb3B0aW9ucyk7XG5cbiAgICAvLyBHZXQgcGFydHMgb2YgdGhlIGRhdGUgYW5kL29yIHRpbWVcbiAgICBjb25zdCBwYXJ0cyA9IGZvcm1hdHRlci5mb3JtYXRUb1BhcnRzKG5ldyBEYXRlKCkpO1xuXG4gICAgLy8gTWFwIHBhcnRzIHRvIHRoZWlyIHJlc3BlY3RpdmUgZm9ybWF0XG4gICAgY29uc3QgZm9ybWF0TWFwOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge1xuICAgICAgZGF5OiAnZGQnLFxuICAgICAgbW9udGg6IHN0eWxlID09ICdsb25nRGF0ZScgPyAnTU1NTScgOiAnTU0nLFxuICAgICAgeWVhcjogJ3l5eXknLFxuICAgICAgaG91cjogJ0hIJyxcbiAgICAgIG1pbnV0ZTogJ21tJyxcbiAgICAgIHNlY29uZDogJ3NzJyxcbiAgICAgIHdlZWtkYXk6ICdFJyxcbiAgICAgIGxpdGVyYWw6ICcnLFxuICAgIH07XG5cbiAgICAvLyBDb25zdHJ1Y3QgdGhlIGRhdGUgYW5kL29yIHRpbWUgZm9ybWF0IHN0cmluZ1xuICAgIHJldHVybiBwYXJ0c1xuICAgICAgLm1hcCgocGFydCkgPT4ge1xuICAgICAgICBpZiAocGFydC50eXBlID09PSAnbGl0ZXJhbCcpIHtcbiAgICAgICAgICAvLyBVc2UgdGhlIGxpdGVyYWwgcGFydCBkaXJlY3RseSBhcyBzZXBhcmF0b3JcbiAgICAgICAgICByZXR1cm4gcGFydC52YWx1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gZm9ybWF0TWFwW3BhcnQudHlwZV0gfHwgcGFydC52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIC5qb2luKCcnKTtcbiAgfVxuXG4gIHByaXZhdGUgcGFkKG4sIHdpZHRoLCB6ID0gJzAnKSB7XG4gICAgbiA9IG4gKyAnJztcbiAgICByZXR1cm4gbi5sZW5ndGggPj0gd2lkdGggPyBuIDogbmV3IEFycmF5KHdpZHRoIC0gbi5sZW5ndGggKyAxKS5qb2luKHopICsgbjtcbiAgfVxuXG4gIGVxdWFsKHZhbHVlOiBEYXRlIHwgQVhEYXRlVGltZSwgdW5pdDogVGltZVVuaXQgPSAnZGF5Jykge1xuICAgIHJldHVybiB0aGlzLmNvbXBhcmUodmFsdWUsIHVuaXQpID09IDA7XG4gIH1cblxuICBjb21wYXJlKHZhbHVlOiBEYXRlIHwgQVhEYXRlVGltZSwgdW5pdDogVGltZVVuaXQgPSAnZGF5Jykge1xuICAgIGNvbnN0IGRhdGUgPSB2YWx1ZSBpbnN0YW5jZW9mIEFYRGF0ZVRpbWUgPyB2YWx1ZS5kYXRlIDogKHZhbHVlIGFzIERhdGUpO1xuICAgIGNvbnN0IHZhbCA9IG5ldyBBWERhdGVUaW1lKGRhdGUsIHRoaXMuY2FsZW5kYXIpO1xuICAgIGNvbnN0IGZ1bmMgPSAodjE6IG51bWJlciwgdjI6IG51bWJlcikgPT4ge1xuICAgICAgaWYgKHYxID09IHYyKSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfSBlbHNlIGlmICh2MSA+IHYyKSB7XG4gICAgICAgIHJldHVybiAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgfVxuICAgIH07XG4gICAgbGV0IHAgPSAwO1xuICAgIHN3aXRjaCAodW5pdCkge1xuICAgICAgY2FzZSAneWVhcic6XG4gICAgICAgIHJldHVybiBmdW5jKHRoaXMueWVhciwgdmFsLnllYXIpO1xuICAgICAgY2FzZSAnd2Vlayc6XG4gICAgICAgIHAgPSB0aGlzLmNvbXBhcmUodmFsLCAneWVhcicpO1xuICAgICAgICByZXR1cm4gcCA9PSAwID8gZnVuYyh0aGlzLndlZWtPZlllYXIsIHZhbC53ZWVrT2ZZZWFyKSA6IHA7XG4gICAgICBjYXNlICdtb250aCc6XG4gICAgICAgIHAgPSB0aGlzLmNvbXBhcmUodmFsLCAneWVhcicpO1xuICAgICAgICByZXR1cm4gcCA9PSAwID8gZnVuYyh0aGlzLm1vbnRoT2ZZZWFyLCB2YWwubW9udGhPZlllYXIpIDogcDtcbiAgICAgIGNhc2UgJ2RheSc6XG4gICAgICAgIHAgPSB0aGlzLmNvbXBhcmUodmFsLCAneWVhcicpO1xuICAgICAgICByZXR1cm4gcCA9PSAwID8gZnVuYyh0aGlzLmRheU9mWWVhciwgdmFsLmRheU9mWWVhcikgOiBwO1xuICAgICAgY2FzZSAnaG91cic6XG4gICAgICAgIHAgPSB0aGlzLmNvbXBhcmUodmFsLCAnZGF5Jyk7XG4gICAgICAgIHJldHVybiBwID09IDAgPyBmdW5jKHRoaXMuaG91ciwgdmFsLmhvdXIpIDogcDtcbiAgICAgIGNhc2UgJ21pbnV0ZSc6XG4gICAgICAgIHAgPSB0aGlzLmNvbXBhcmUodmFsLCAnaG91cicpO1xuICAgICAgICByZXR1cm4gcCA9PSAwID8gZnVuYyh0aGlzLm1pbnV0ZSwgdmFsLm1pbnV0ZSkgOiBwO1xuICAgICAgY2FzZSAnc2Vjb25kJzpcbiAgICAgICAgcCA9IHRoaXMuY29tcGFyZSh2YWwsICdtaW51dGUnKTtcbiAgICAgICAgcmV0dXJuIHAgPT0gMCA/IGZ1bmModGhpcy5zZWNvbmQsIHZhbC5zZWNvbmQpIDogcDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBmdW5jKHRoaXMuZGF0ZS5nZXRUaW1lKCksIHZhbC5kYXRlLmdldFRpbWUoKSk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBWENhbGVuZGFyTW9udGgge1xuICBwcml2YXRlIF9yYW5nZTogQVhEYXRlVGltZVJhbmdlO1xuICBwdWJsaWMgZ2V0IHJhbmdlKCk6IEFYRGF0ZVRpbWVSYW5nZSB7XG4gICAgcmV0dXJuIHRoaXMuX3JhbmdlO1xuICB9XG4gIHB1YmxpYyBzZXQgcmFuZ2UodjogQVhEYXRlVGltZVJhbmdlKSB7XG4gICAgdGhpcy5fcmFuZ2UgPSB2O1xuICB9XG5cbiAgcHVibGljIGdldCB0b3RhbERheXMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5yYW5nZS5lbmRUaW1lLmRheU9mTW9udGg7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihkYXRlOiBBWERhdGVUaW1lKSB7XG4gICAgdGhpcy5pbmRleCA9IGRhdGUuZGF0ZS5nZXRNb250aCgpO1xuICAgIHRoaXMubmFtZSA9IGRhdGUuZm9ybWF0KCdNTU1NJyk7XG4gICAgdGhpcy5yYW5nZSA9IG5ldyBBWERhdGVUaW1lUmFuZ2UoXG4gICAgICBuZXcgQVhEYXRlVGltZShkYXRlLnN0YXJ0T2YoJ21vbnRoJykuZGF0ZSwgZGF0ZS5jYWxlbmRhciksXG4gICAgICBuZXcgQVhEYXRlVGltZShkYXRlLmVuZE9mKCdtb250aCcpLmRhdGUsIGRhdGUuY2FsZW5kYXIpLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IGluZGV4OiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYVGltZVNwYW5Ub3RhbCB7XG4gIG1pbGlzZWNvbmRzOiBudW1iZXI7XG4gIHNlY29uZHM6IG51bWJlcjtcbiAgbWludXRlczogbnVtYmVyO1xuICBob3VyczogbnVtYmVyO1xuICBkYXlzOiBudW1iZXI7XG4gIHdlZWtzOiBudW1iZXI7XG4gIG1vbnRoczogbnVtYmVyO1xuICB5ZWFyczogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYVGltZVNwYW4ge1xuICBtaWxpc2Vjb25kczogbnVtYmVyO1xuICBzZWNvbmRzOiBudW1iZXI7XG4gIG1pbnV0ZXM6IG51bWJlcjtcbiAgaG91cnM6IG51bWJlcjtcbiAgZGF5czogbnVtYmVyO1xuICBtb250aHM6IG51bWJlcjtcbiAgeWVhcnM6IG51bWJlcjtcbiAgdG90YWw6IEFYVGltZVNwYW5Ub3RhbDtcbn1cblxuZXhwb3J0IGNsYXNzIEFYRGF0ZVRpbWVSYW5nZSB7XG4gIHByaXZhdGUgX3N0YXJ0VGltZTogQVhEYXRlVGltZTtcbiAgcHJpdmF0ZSBfZW5kVGltZTogQVhEYXRlVGltZTtcblxuICBwdWJsaWMgZ2V0IHN0YXJ0VGltZSgpOiBBWERhdGVUaW1lIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhcnRUaW1lO1xuICB9XG5cbiAgcHVibGljIGdldCBlbmRUaW1lKCk6IEFYRGF0ZVRpbWUge1xuICAgIHJldHVybiB0aGlzLl9lbmRUaW1lO1xuICB9XG5cbiAgY29uc3RydWN0b3Ioc3RhcnRUaW1lOiBBWERhdGVUaW1lLCBlbmRUaW1lOiBBWERhdGVUaW1lKSB7XG4gICAgdGhpcy5fc3RhcnRUaW1lID0gc3RhcnRUaW1lO1xuICAgIHRoaXMuX2VuZFRpbWUgPSBlbmRUaW1lO1xuICB9XG5cbiAgZHVyYXRpb24oKTogQVhUaW1lU3BhbiB7XG4gICAgY29uc3QgcmVzdWx0OiBBWFRpbWVTcGFuID0ge1xuICAgICAgbWlsaXNlY29uZHM6IDAsXG4gICAgICBzZWNvbmRzOiAwLFxuICAgICAgbWludXRlczogMCxcbiAgICAgIGhvdXJzOiAwLFxuICAgICAgZGF5czogMCxcbiAgICAgIC8vIE5PVEU6IENhbGN1bGF0aW5nIGV4YWN0IGNhbGVuZGFyIG1vbnRocy95ZWFycyBjb21wb25lbnQgaXMgY29tcGxleFxuICAgICAgLy8gZnJvbSBtaWxsaXNlY29uZHMgYWxvbmUuIFdlJ2xsIHNldCB0aGVzZSB0byAwLlxuICAgICAgbW9udGhzOiAwLFxuICAgICAgeWVhcnM6IDAsXG4gICAgICB0b3RhbDoge1xuICAgICAgICBtaWxpc2Vjb25kczogMCxcbiAgICAgICAgc2Vjb25kczogMCxcbiAgICAgICAgbWludXRlczogMCxcbiAgICAgICAgaG91cnM6IDAsXG4gICAgICAgIGRheXM6IDAsXG4gICAgICAgIHdlZWtzOiAwLFxuICAgICAgICAvLyBOT1RFOiB0b3RhbC5tb250aHMgYW5kIHRvdGFsLnllYXJzIGFyZSBhcHByb3hpbWF0ZSBiYXNlZCBvbiBhdmVyYWdlIGxlbmd0aHNcbiAgICAgICAgbW9udGhzOiAwLFxuICAgICAgICB5ZWFyczogMCxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIC8vIENvbnN0YW50cyBmb3IgdGltZSB1bml0cyBpbiBtaWxsaXNlY29uZHNcbiAgICBjb25zdCBPTkVfTUlMTElTRUNPTkQgPSAxO1xuICAgIGNvbnN0IE9ORV9TRUNPTkQgPSAxMDAwICogT05FX01JTExJU0VDT05EO1xuICAgIGNvbnN0IE9ORV9NSU5VVEUgPSA2MCAqIE9ORV9TRUNPTkQ7XG4gICAgY29uc3QgT05FX0hPVVIgPSA2MCAqIE9ORV9NSU5VVEU7XG4gICAgY29uc3QgT05FX0RBWSA9IDI0ICogT05FX0hPVVI7XG4gICAgY29uc3QgT05FX1dFRUsgPSA3ICogT05FX0RBWTtcbiAgICAvLyBBdmVyYWdlIGxlbmd0aHMgZm9yIGFwcHJveGltYXRlIHRvdGFsIG1vbnRocy95ZWFyc1xuICAgIGNvbnN0IE9ORV9ZRUFSX0FWRyA9IDM2NS4yNSAqIE9ORV9EQVk7XG4gICAgY29uc3QgT05FX01PTlRIX0FWRyA9IE9ORV9ZRUFSX0FWRyAvIDEyO1xuXG4gICAgY29uc3Qgc3RhcnRUaW1lID0gdGhpcy5fc3RhcnRUaW1lLmRhdGUuZ2V0VGltZSgpO1xuICAgIGNvbnN0IGVuZFRpbWUgPSB0aGlzLl9lbmRUaW1lLmRhdGUuZ2V0VGltZSgpO1xuXG4gICAgLy8gQ2FsY3VsYXRlIHRoZSBhYnNvbHV0ZSBkaWZmZXJlbmNlIGluIG1pbGxpc2Vjb25kc1xuICAgIGNvbnN0IGRpZmYgPSBNYXRoLmFicyhlbmRUaW1lIC0gc3RhcnRUaW1lKTtcblxuICAgIC8vIC0tLSBDYWxjdWxhdGUgVG90YWwgRHVyYXRpb25zIC0tLVxuICAgIHJlc3VsdC50b3RhbC5taWxpc2Vjb25kcyA9IGRpZmY7XG4gICAgcmVzdWx0LnRvdGFsLnNlY29uZHMgPSBkaWZmIC8gT05FX1NFQ09ORDtcbiAgICByZXN1bHQudG90YWwubWludXRlcyA9IGRpZmYgLyBPTkVfTUlOVVRFO1xuICAgIHJlc3VsdC50b3RhbC5ob3VycyA9IGRpZmYgLyBPTkVfSE9VUjtcbiAgICByZXN1bHQudG90YWwuZGF5cyA9IGRpZmYgLyBPTkVfREFZOyAvLyBJbmNsdWRlcyBmcmFjdGlvbmFsIGRheXNcbiAgICByZXN1bHQudG90YWwud2Vla3MgPSBkaWZmIC8gT05FX1dFRUs7IC8vIEluY2x1ZGVzIGZyYWN0aW9uYWwgd2Vla3NcbiAgICByZXN1bHQudG90YWwubW9udGhzID0gZGlmZiAvIE9ORV9NT05USF9BVkc7IC8vIEFwcHJveGltYXRlXG4gICAgcmVzdWx0LnRvdGFsLnllYXJzID0gZGlmZiAvIE9ORV9ZRUFSX0FWRzsgLy8gQXBwcm94aW1hdGVcblxuICAgIC8vIC0tLSBDYWxjdWxhdGUgQ29tcG9uZW50IFBhcnRzIC0tLVxuICAgIGxldCByZW1haW5pbmdNaWxsaXMgPSBkaWZmO1xuXG4gICAgLy8gQ2FsY3VsYXRlIGZ1bGwgZGF5cyBhbmQgdXBkYXRlIHJlbWFpbmluZyBtaWxsaXNlY29uZHNcbiAgICByZXN1bHQuZGF5cyA9IE1hdGguZmxvb3IocmVtYWluaW5nTWlsbGlzIC8gT05FX0RBWSk7XG4gICAgcmVtYWluaW5nTWlsbGlzICU9IE9ORV9EQVk7IC8vIEdldCB0aGUgcmVtYWluZGVyIG1pbGxpc2Vjb25kcyBhZnRlciB0YWtpbmcgb3V0IGZ1bGwgZGF5c1xuXG4gICAgLy8gQ2FsY3VsYXRlIGZ1bGwgaG91cnMgZnJvbSB0aGUgcmVtYWluZGVyXG4gICAgcmVzdWx0LmhvdXJzID0gTWF0aC5mbG9vcihyZW1haW5pbmdNaWxsaXMgLyBPTkVfSE9VUik7XG4gICAgcmVtYWluaW5nTWlsbGlzICU9IE9ORV9IT1VSOyAvLyBHZXQgdGhlIHJlbWFpbmRlciBtaWxsaXNlY29uZHMgYWZ0ZXIgdGFraW5nIG91dCBmdWxsIGhvdXJzXG5cbiAgICAvLyBDYWxjdWxhdGUgZnVsbCBtaW51dGVzIGZyb20gdGhlIHJlbWFpbmRlclxuICAgIHJlc3VsdC5taW51dGVzID0gTWF0aC5mbG9vcihyZW1haW5pbmdNaWxsaXMgLyBPTkVfTUlOVVRFKTtcbiAgICByZW1haW5pbmdNaWxsaXMgJT0gT05FX01JTlVURTsgLy8gR2V0IHRoZSByZW1haW5kZXIgbWlsbGlzZWNvbmRzIGFmdGVyIHRha2luZyBvdXQgZnVsbCBtaW51dGVzXG5cbiAgICAvLyBDYWxjdWxhdGUgZnVsbCBzZWNvbmRzIGZyb20gdGhlIHJlbWFpbmRlclxuICAgIHJlc3VsdC5zZWNvbmRzID0gTWF0aC5mbG9vcihyZW1haW5pbmdNaWxsaXMgLyBPTkVfU0VDT05EKTtcbiAgICByZW1haW5pbmdNaWxsaXMgJT0gT05FX1NFQ09ORDsgLy8gR2V0IHRoZSByZW1haW5kZXIgbWlsbGlzZWNvbmRzIGFmdGVyIHRha2luZyBvdXQgZnVsbCBzZWNvbmRzXG5cbiAgICAvLyBUaGUgZmluYWwgcmVtYWluZGVyIGlzIHRoZSBtaWxsaXNlY29uZHMgY29tcG9uZW50XG4gICAgcmVzdWx0Lm1pbGlzZWNvbmRzID0gcmVtYWluaW5nTWlsbGlzO1xuXG4gICAgLy8gQXMgbm90ZWQgYWJvdmUsIHNldHRpbmcgbW9udGgveWVhciBjb21wb25lbnRzIHRvIDAgYXMgYWNjdXJhdGVcbiAgICAvLyBjYWxlbmRhci1hd2FyZSBjYWxjdWxhdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaGVyZS5cbiAgICByZXN1bHQubW9udGhzID0gMDtcbiAgICByZXN1bHQueWVhcnMgPSAwO1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGVudW11cmF0ZSh1bml0OiBUaW1lVW5pdCA9ICdkYXknLCBhbW91bnQgPSAxKTogQVhEYXRlVGltZVtdIHtcbiAgICBjb25zdCByZXN1bHQ6IEFYRGF0ZVRpbWVbXSA9IFtdO1xuICAgIGxldCBpdGVtID0gdGhpcy5fc3RhcnRUaW1lLmNsb25lKCk7XG4gICAgd2hpbGUgKGl0ZW0uY29tcGFyZSh0aGlzLl9lbmRUaW1lLCB1bml0KSA8IDEpIHtcbiAgICAgIGlmICghcmVzdWx0LnNvbWUoKGMpID0+IGMuZXF1YWwoaXRlbSwgdW5pdCkpKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKGl0ZW0pO1xuICAgICAgfVxuICAgICAgaXRlbSA9IGl0ZW0uYWRkKHVuaXQsIGFtb3VudCk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn1cbiJdfQ==","import { AXCalendar, AXDateTime } from './datetime.types';\nexport class AXGregorianCalendar extends AXCalendar {\n /**\n * @ignore\n */\n constructor(config) {\n super(config);\n }\n create(value) {\n return new AXDateTime(new Date(value.year, value.month - 1, value.day, value.hours || 0, value.minutes || 0, value.seconds || 0, value.ms || 0), this);\n }\n name() {\n return 'gregorian';\n }\n dayOfMonth(date) {\n return date.getDate();\n }\n dayOfYear(date) {\n let result = 0;\n let m = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n if (this.isLeap(date)) {\n m[1] = 29;\n }\n for (let i = 0; i < date.getMonth(); i++) {\n result = result + m[i];\n }\n result += date.getDate();\n return result;\n }\n dayOfWeek(date) {\n return date.getDay() + 1;\n }\n weekOfYear(date) {\n const firstDay = new AXDateTime(date, this).startOf('year');\n return Math.ceil(((date.getTime() - firstDay.date.getTime()) / 86400000 + firstDay.date.getDay() + 1) / 7);\n }\n year(date) {\n return date.getFullYear();\n }\n monthOfYear(date) {\n return date.getMonth() + 1;\n }\n add(date, unit, amount) {\n let value = date.valueOf();\n switch (unit) {\n case 'second':\n value += 1000 * amount;\n break;\n case 'minute':\n value += 60000 * amount;\n break;\n case 'hour':\n value += 3600000 * amount;\n break;\n case 'month': {\n const v = new Date(value);\n // Calculate the new year and month considering the amount\n let newYear = v.getFullYear();\n let newMonth = v.getMonth() + amount;\n // Adjust for year overflow or underflow\n while (newMonth > 11) {\n newMonth -= 12;\n newYear++;\n }\n while (newMonth < 0) {\n newMonth += 12;\n newYear--;\n }\n // Set the date to the first of the month to prevent overflow\n v.setDate(1);\n v.setFullYear(newYear);\n v.setMonth(newMonth);\n // Get the last day of the new month\n const lastDayOfMonth = new Date(newYear, newMonth + 1, 0).getDate();\n // Set the date to either the original day or the last day of the new month, whichever is smaller\n const originalDay = date.getDate();\n v.setDate(Math.min(originalDay, lastDayOfMonth));\n value = v.valueOf();\n break;\n }\n case 'week':\n value += 7 * 86400000 * amount;\n break;\n case 'year': {\n const newDate = new Date(value);\n newDate.setFullYear(newDate.getFullYear() + amount);\n // Handling for leap years: if the original date is February 29th, and the new year is not a leap year,\n // set the date to February 28th.\n if (date.getMonth() === 1 && date.getDate() === 29 && newDate.getMonth() !== 1) {\n newDate.setMonth(1);\n newDate.setDate(28);\n }\n value = newDate.valueOf();\n break;\n }\n case 'day':\n default:\n value += 86400000 * amount;\n }\n return new AXDateTime(new Date(value), this);\n }\n set(date, unit, value) {\n const clone = new Date(date.valueOf());\n switch (unit) {\n case 'second':\n clone.setHours(clone.getHours(), clone.getMinutes(), value, clone.getMilliseconds());\n break;\n case 'minute':\n clone.setHours(clone.getHours(), value, clone.getSeconds(), clone.getMilliseconds());\n break;\n case 'hour':\n clone.setHours(value, clone.getMinutes(), clone.getSeconds(), clone.getMilliseconds());\n break;\n default:\n case 'day':\n clone.setDate(value);\n break;\n case 'week':\n break;\n case 'month':\n clone.setMonth(Math.max(0, value - 1));\n break;\n case 'year':\n clone.setFullYear(value);\n break;\n }\n return new AXDateTime(clone, this);\n }\n startOf(date, unit) {\n const clone = new Date(date.valueOf());\n switch (unit) {\n case 'second':\n clone.setHours(clone.getHours(), clone.getMinutes(), clone.getSeconds(), 0);\n return new AXDateTime(clone, this);\n case 'minute':\n clone.setHours(clone.getHours(), clone.getMinutes(), 0, 0);\n return new AXDateTime(clone, this);\n case 'hour':\n clone.setHours(clone.getHours(), 0, 0, 0);\n return new AXDateTime(clone, this);\n default:\n case 'day':\n clone.setHours(0, 0, 0, 0);\n return new AXDateTime(clone, this);\n case 'week': {\n const start = 1; // Week starts on Monday\n const day = clone.getDay();\n const diff = clone.getDate() - day + (day == 0 ? -6 : start - day);\n clone.setDate(diff);\n clone.setHours(0, 0, 0, 0);\n return new AXDateTime(clone, this);\n }\n case 'month':\n clone.setDate(1);\n return new AXDateTime(clone, this).startOf('day');\n case 'year':\n clone.setMonth(0);\n clone.setDate(1);\n return new AXDateTime(clone, this).startOf('day');\n }\n }\n endOf(date, unit) {\n const clone = new Date(date.valueOf());\n switch (unit) {\n case 'second':\n clone.setHours(clone.getHours(), clone.getMinutes(), clone.getSeconds(), 999);\n return new AXDateTime(clone, this);\n case 'minute':\n clone.setHours(clone.getHours(), clone.getMinutes(), 59, 999);\n return new AXDateTime(clone, this);\n case 'hour':\n clone.setHours(clone.getHours(), 59, 59, 999);\n return new AXDateTime(clone, this);\n default:\n case 'day':\n clone.setHours(23, 59, 59, 999);\n return new AXDateTime(clone, this);\n case 'week':\n return this.startOf(date, 'week').add('day', 6).endOf('day');\n case 'month': {\n const dateObj = new Date(date.getFullYear(), date.getMonth() + 1, 0);\n dateObj.setHours(23, 59, 59, 999);\n return new AXDateTime(dateObj, this);\n }\n case 'year':\n clone.setMonth(11);\n return new AXDateTime(clone, this).endOf('month');\n }\n }\n isLeap(date) {\n let leapYear = new Date(date.getFullYear(), 1, 29);\n return leapYear.getDate() == 29;\n }\n parse(value) {\n return new AXDateTime(new Date(value), this);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JlZ29yaWFuLmNhbGVuZGFyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9kYXRlLXRpbWUvc3JjL2xpYi9ncmVnb3JpYW4uY2FsZW5kYXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBb0IsVUFBVSxFQUF5QixNQUFNLGtCQUFrQixDQUFDO0FBRW5HLE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxVQUFVO0lBQ2pEOztPQUVHO0lBQ0gsWUFBWSxNQUF3QjtRQUNsQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEIsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFrQjtRQUN2QixPQUFPLElBQUksVUFBVSxDQUNuQixJQUFJLElBQUksQ0FDTixLQUFLLENBQUMsSUFBSSxFQUNWLEtBQUssQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUNmLEtBQUssQ0FBQyxHQUFHLEVBQ1QsS0FBSyxDQUFDLEtBQUssSUFBSSxDQUFDLEVBQ2hCLEtBQUssQ0FBQyxPQUFPLElBQUksQ0FBQyxFQUNsQixLQUFLLENBQUMsT0FBTyxJQUFJLENBQUMsRUFDbEIsS0FBSyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQ2QsRUFDRCxJQUFJLENBQ0wsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFJO1FBQ0YsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUVELFVBQVUsQ0FBQyxJQUFVO1FBQ25CLE9BQU8sSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxTQUFTLENBQUMsSUFBVTtRQUNsQixJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFF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QU8sSUFBSSxVQUFVLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3ZDLENBQUM7WUFDRCxLQUFLLE1BQU07Z0JBQ1QsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDbkIsT0FBTyxJQUFJLFVBQVUsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3RELENBQUM7SUFDSCxDQUFDO0lBRUQsTUFBTSxDQUFDLElBQVU7UUFDZixJQUFJLFFBQVEsR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ25ELE9BQU8sUUFBUSxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRUQsS0FBSyxDQUFDLEtBQWE7UUFDakIsT0FBTyxJQUFJLFVBQVUsQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMvQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWENhbGVuZGFyLCBBWENhbGVuZGFyQ29uZmlnLCBBWERhdGVUaW1lLCBBWERhdGVWYWx1ZSwgVGltZVVuaXQgfSBmcm9tICcuL2RhdGV0aW1lLnR5cGVzJztcblxuZXhwb3J0IGNsYXNzIEFYR3JlZ29yaWFuQ2FsZW5kYXIgZXh0ZW5kcyBBWENhbGVuZGFyIHtcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogQVhDYWxlbmRhckNvbmZpZykge1xuICAgIHN1cGVyKGNvbmZpZyk7XG4gIH1cblxuICBjcmVhdGUodmFsdWU6IEFYRGF0ZVZhbHVlKTogQVhEYXRlVGltZSB7XG4gICAgcmV0dXJuIG5ldyBBWERhdGVUaW1lKFxuICAgICAgbmV3IERhdGUoXG4gICAgICAgIHZhbHVlLnllYXIsXG4gICAgICAgIHZhbHVlLm1vbnRoIC0gMSxcbiAgICAgICAgdmFsdWUuZGF5LFxuICAgICAgICB2YWx1ZS5ob3VycyB8fCAwLFxuICAgICAgICB2YWx1ZS5taW51dGVzIHx8IDAsXG4gICAgICAgIHZhbHVlLnNlY29uZHMgfHwgMCxcbiAgICAgICAgdmFsdWUubXMgfHwgMCxcbiAgICAgICksXG4gICAgICB0aGlzLFxuICAgICk7XG4gIH1cblxuICBuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdncmVnb3JpYW4nO1xuICB9XG5cbiAgZGF5T2ZNb250aChkYXRlOiBEYXRlKTogbnVtYmVyIHtcbiAgICByZXR1cm4gZGF0ZS5nZXREYXRlKCk7XG4gIH1cblxuICBkYXlPZlllYXIoZGF0ZTogRGF0ZSk6IG51bWJlciB7XG4gICAgbGV0IHJlc3VsdCA9IDA7XG4gICAgbGV0IG0gPSBbMzEsIDI4LCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMxLCAzMCwgMzEsIDMwLCAzMV07XG4gICAgaWYgKHRoaXMuaXNMZWFwKGRhdGUpKSB7XG4gICAgICBtWzFdID0gMjk7XG4gICAgfVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0ZS5nZXRNb250aCgpOyBpKyspIHtcbiAgICAgIHJlc3VsdCA9IHJlc3VsdCArIG1baV07XG4gICAgfVxuICAgIHJlc3VsdCArPSBkYXRlLmdldERhdGUoKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgZGF5T2ZXZWVrKGRhdGU6IERhdGUpOiBudW1iZXIge1xuICAgIHJldHVybiBkYXRlLmdldERheSgpICsgMTtcbiAgfVxuXG4gIHdlZWtPZlllYXIoZGF0ZTogRGF0ZSk6IG51bWJlciB7XG4gICAgY29uc3QgZmlyc3REYXkgPSBuZXcgQVhEYXRlVGltZShkYXRlLCB0aGlzKS5zdGFydE9mKCd5ZWFyJyk7XG4gICAgcmV0dXJuIE1hdGguY2VpbCgoKGRhdGUuZ2V0VGltZSgpIC0gZmlyc3REYXkuZGF0ZS5nZXRUaW1lKCkpIC8gODY0MDAwMDAgKyBmaXJzdERheS5kYXRlLmdldERheSgpICsgMSkgLyA3KTtcbiAgfVxuXG4gIHllYXIoZGF0ZTogRGF0ZSk6IG51bWJlciB7XG4gICAgcmV0dXJuIGRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgfVxuXG4gIG1vbnRoT2ZZZWFyKGRhdGU6IERhdGUpOiBudW1iZXIge1xuICAgIHJldHVybiBkYXRlLmdldE1vbnRoKCkgKyAxO1xuICB9XG5cbiAgYWRkKGRhdGU6IERhdGUsIHVuaXQ6IFRpbWVVbml0LCBhbW91bnQ6IG51bWJlcik6IEFYRGF0ZVRpbWUge1xuICAgIGxldCB2YWx1ZSA9IGRhdGUudmFsdWVPZigpO1xuICAgIHN3aXRjaCAodW5pdCkge1xuICAgICAgY2FzZSAnc2Vjb25kJzpcbiAgICAgICAgdmFsdWUgKz0gMTAwMCAqIGFtb3VudDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdtaW51dGUnOlxuICAgICAgICB2YWx1ZSArPSA2MDAwMCAqIGFtb3VudDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdob3VyJzpcbiAgICAgICAgdmFsdWUgKz0gMzYwMDAwMCAqIGFtb3VudDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdtb250aCc6IHtcbiAgICAgICAgY29uc3QgdiA9IG5ldyBEYXRlKHZhbHVlKTtcblxuICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIG5ldyB5ZWFyIGFuZCBtb250aCBjb25zaWRlcmluZyB0aGUgYW1vdW50XG4gICAgICAgIGxldCBuZXdZZWFyID0gdi5nZXRGdWxsWWVhcigpO1xuICAgICAgICBsZXQgbmV3TW9udGggPSB2LmdldE1vbnRoKCkgKyBhbW91bnQ7XG5cbiAgICAgICAgLy8gQWRqdXN0IGZvciB5ZWFyIG92ZXJmbG93IG9yIHVuZGVyZmxvd1xuICAgICAgICB3aGlsZSAobmV3TW9udGggPiAxMSkge1xuICAgICAgICAgIG5ld01vbnRoIC09IDEyO1xuICAgICAgICAgIG5ld1llYXIrKztcbiAgICAgICAgfVxuICAgICAgICB3aGlsZSAobmV3TW9udGggPCAwKSB7XG4gICAgICAgICAgbmV3TW9udGggKz0gMTI7XG4gICAgICAgICAgbmV3WWVhci0tO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gU2V0IHRoZSBkYXRlIHRvIHRoZSBmaXJzdCBvZiB0aGUgbW9udGggdG8gcHJldmVudCBvdmVyZmxvd1xuICAgICAgICB2LnNldERhdGUoMSk7XG4gICAgICAgIHYuc2V0RnVsbFllYXIobmV3WWVhcik7XG4gICAgICAgIHYuc2V0TW9udGgobmV3TW9udGgpO1xuXG4gICAgICAgIC8vIEdldCB0aGUgbGFzdCBkYXkgb2YgdGhlIG5ldyBtb250aFxuICAgICAgICBjb25zdCBsYXN0RGF5T2ZNb250aCA9IG5ldyBEYXRlKG5ld1llYXIsIG5ld01vbnRoICsgMSwgMCkuZ2V0RGF0ZSgpO1xuXG4gICAgICAgIC8vIFNldCB0aGUgZGF0ZSB0byBlaXRoZXIgdGhlIG9yaWdpbmFsIGRheSBvciB0aGUgbGFzdCBkYXkgb2YgdGhlIG5ldyBtb250aCwgd2hpY2hldmVyIGlzIHNtYWxsZXJcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxEYXkgPSBkYXRlLmdldERhdGUoKTtcbiAgICAgICAgdi5zZXREYXRlKE1hdGgubWluKG9yaWdpbmFsRGF5LCBsYXN0RGF5T2ZNb250aCkpO1xuXG4gICAgICAgIHZhbHVlID0gdi52YWx1ZU9mKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnd2Vlayc6XG4gICAgICAgIHZhbHVlICs9IDcgKiA4NjQwMDAwMCAqIGFtb3VudDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd5ZWFyJzoge1xuICAgICAgICBjb25zdCBuZXdEYXRlID0gbmV3IERhdGUodmFsdWUpO1xuICAgICAgICBuZXdEYXRlLnNldEZ1bGxZZWFyKG5ld0RhdGUuZ2V0RnVsbFllYXIoKSArIGFtb3VudCk7XG4gICAgICAgIC8vIEhhbmRsaW5nIGZvciBsZWFwIHllYXJzOiBpZiB0aGUgb3JpZ2luYWwgZGF0ZSBpcyBGZWJydWFyeSAyOXRoLCBhbmQgdGhlIG5ldyB5ZWFyIGlzIG5vdCBhIGxlYXAgeWVhcixcbiAgICAgICAgLy8gc2V0IHRoZSBkYXRlIHRvIEZlYnJ1YXJ5IDI4dGguXG4gICAgICAgIGlmIChkYXRlLmdldE1vbnRoKCkgPT09IDEgJiYgZGF0ZS5nZXREYXRlKCkgPT09IDI5ICYmIG5ld0RhdGUuZ2V0TW9udGgoKSAhPT0gMSkge1xuICAgICAgICAgIG5ld0RhdGUuc2V0TW9udGgoMSk7XG4gICAgICAgICAgbmV3RGF0ZS5zZXREYXRlKDI4KTtcbiAgICAgICAgfVxuICAgICAgICB2YWx1ZSA9IG5ld0RhdGUudmFsdWVPZigpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ2RheSc6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB2YWx1ZSArPSA4NjQwMDAwMCAqIGFtb3VudDtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBBWERhdGVUaW1lKG5ldyBEYXRlKHZhbHVlKSwgdGhpcyk7XG4gIH1cblxuICBzZXQoZGF0ZTogRGF0ZSwgdW5pdDogVGltZVVuaXQsIHZhbHVlOiBudW1iZXIpOiBBWERhdGVUaW1lIHtcbiAgICBjb25zdCBjbG9uZSA9IG5ldyBEYXRlKGRhdGUudmFsdWVPZigpKTtcbiAgICBzd2l0Y2ggKHVuaXQpIHtcbiAgICAgIGNhc2UgJ3NlY29uZCc6XG4gICAgICAgIGNsb25lLnNldEhvdXJzKGNsb25lLmdldEhvdXJzKCksIGNsb25lLmdldE1pbnV0ZXMoKSwgdmFsdWUsIGNsb25lLmdldE1pbGxpc2Vjb25kcygpKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdtaW51dGUnOlxuICAgICAgICBjbG9uZS5zZXRIb3VycyhjbG9uZS5nZXRIb3VycygpLCB2YWx1ZSwgY2xvbmUuZ2V0U2Vjb25kcygpLCBjbG9uZS5nZXRNaWxsaXNlY29uZHMoKSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnaG91cic6XG4gICAgICAgIGNsb25lLnNldEhvdXJzKHZhbHVlLCBjbG9uZS5nZXRNaW51dGVzKCksIGNsb25lLmdldFNlY29uZHMoKSwgY2xvbmUuZ2V0TWlsbGlzZWNvbmRzKCkpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICBjYXNlICdkYXknOlxuICAgICAgICBjbG9uZS5zZXREYXRlKHZhbHVlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd3ZWVrJzpcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdtb250aCc6XG4gICAgICAgIGNsb25lLnNldE1vbnRoKE1hdGgubWF4KDAsIHZhbHVlIC0gMSkpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3llYXInOlxuICAgICAgICBjbG9uZS5zZXRGdWxsWWVhcih2YWx1ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IEFYRGF0ZVRpbWUoY2xvbmUsIHRoaXMpO1xuICB9XG5cbiAgc3RhcnRPZihkYXRlOiBEYXRlLCB1bml0OiBUaW1lVW5pdCk6IEFYRGF0ZVRpbWUge1xuICAgIGNvbnN0IGNsb25lID0gbmV3IERhdGUoZGF0ZS52YWx1ZU9mKCkpO1xuICAgIHN3aXRjaCAodW5pdCkge1xuICAgICAgY2FzZSAnc2Vjb25kJzpcbiAgICAgICAgY2xvbmUuc2V0SG91cnMoY2xvbmUuZ2V0SG91cnMoKSwgY2xvbmUuZ2V0TWludXRlcygpLCBjbG9uZS5nZXRTZWNvbmRzKCksIDApO1xuICAgICAgICByZXR1cm4gbmV3IEFYRGF0ZVRpbWUoY2xvbmUsIHRoaXMpO1xuICAgICAgY2FzZSAnbWludXRlJzpcbiAgICAgICAgY2xvbmUuc2V0SG91cnMoY2xvbmUuZ2V0SG91cnMoKSwgY2xvbmUuZ2V0TWludXRlcygpLCAwLCAwKTtcbiAgICAgICAgcmV0dXJuIG5ldyBBWERhdGVUaW1lKGNsb25lLCB0aGlzKTtcbiAgICAgIGNhc2UgJ2hvdXInOlxuICAgICAgICBjbG9uZS5zZXRIb3VycyhjbG9uZS5nZXRIb3VycygpLCAwLCAwLCAwKTtcbiAgICAgICAgcmV0dXJuIG5ldyBBWERhdGVUaW1lKGNsb25lLCB0aGlzKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICBjYXNlICdkYXknOlxuICAgICAgICBjbG9uZS5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgICAgICAgcmV0dXJuIG5ldyBBWERhdGVUaW1lKGNsb25lLCB0aGlzKTtcbiAgICAgIGNhc2UgJ3dlZWsnOiB7XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gMTsgLy8gV2VlayBzdGFydHMgb24gTW9uZGF5XG4gICAgICAgIGNvbnN0IGRheSA9IGNsb25lLmdldERheSgpO1xuICAgICAgICBjb25zdCBkaWZmID0gY2xvbmUuZ2V0RGF0ZSgpIC0gZGF5ICsgKGRheSA9PSAwID8gLTYgOiBzdGFydCAtIGRheSk7XG4gICAgICAgIGNsb25lLnNldERhdGUoZGlmZik7XG4gICAgICAgIGNsb25lLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICAgICAgICByZXR1cm4gbmV3IEFYRGF0ZVRpbWUoY2xvbmUsIHRoaXMpO1xuICAgICAgfVxuICAgICAgY2FzZSAnbW9udGgnOlxuICAgICAgICBjbG9uZS5zZXREYXRlKDEpO1xuICAgICAgICByZXR1cm4gbmV3IEFYRGF0ZVRpbWUoY2xvbmUsIHRoaXMpLnN0YXJ0T2YoJ2RheScpO1xuICAgICAgY2FzZSAneWVhcic6XG4gICAgICAgIGNsb25lLnNldE1vbnRoKDApO1xuICAgICAgICBjbG9uZS5zZXREYXRlKDEpO1xuICAgICAgICByZXR1cm4gbmV3IEFYRGF0ZVRpbWUoY2xvbmUsIHRoaXMpLnN0YXJ0T2YoJ2RheScpO1xuICAgIH1cbiAgfVxuXG4gIGVuZE9mKGRhdGU6IERhdGUsIHVuaXQ6IFRpbWVVbml0KTogQVhEYXRlVGltZSB7XG4gICAgY29uc3QgY2xvbmUgPSBuZXcgRGF0ZShkYXRlLnZhbHVlT2YoKSk7XG4gICAgc3dpdGNoICh1bml0KSB7XG4gICAgICBjYXNlICdzZWNvbmQnOlxuICAgICAgICBjbG9uZS5zZXRIb3VycyhjbG9uZS5nZXRIb3VycygpLCBjbG9uZS5nZXRNaW51dGVzKCksIGNsb25lLmdldFNlY29uZHMoKSwgOTk5KTtcbiAgICAgICAgcmV0dXJuIG5ldyBBWERhdGVUaW1lKGNsb25lLCB0aGlzKTtcbiAgICAgIGNhc2UgJ21pbnV0ZSc6XG4gICAgICAgIGNsb25lLnNldEhvdXJzKGNsb25lLmdldEhvdXJzKCksIGNsb25lLmdldE1pbnV0ZXMoKSwgNTksIDk5OSk7XG4gICAgICAgIHJldHVybiBuZXcgQVhEYXRlVGltZShjbG9uZSwgdGhpcyk7XG4gICAgICBjYXNlICdob3VyJzpcbiAgICAgICAgY2xvbmUuc2V0SG91cnMoY2xvbmUuZ2V0SG91cnMoKSwgNTksIDU5LCA5OTkpO1xuICAgICAgICByZXR1cm4gbmV3IEFYRGF0ZVRpbWUoY2xvbmUsIHRoaXMpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgIGNhc2UgJ2RheSc6XG4gICAgICAgIGNsb25lLnNldEhvdXJzKDIzLCA1OSwgNTksIDk5OSk7XG4gICAgICAgIHJldHVybiBuZXcgQVhEYXRlVGltZShjbG9uZSwgdGhpcyk7XG4gICAgICBjYXNlICd3ZWVrJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhcnRPZihkYXRlLCAnd2VlaycpLmFkZCgnZGF5JywgNikuZW5kT2YoJ2RheScpO1xuICAgICAgY2FzZSAnbW9udGgnOiB7XG4gICAgICAgIGNvbnN0IGRhdGVPYmogPSBuZXcgRGF0ZShkYXRlLmdldEZ1bGxZZWFyKCksIGRhdGUuZ2V0TW9udGgoKSArIDEsIDApO1xuICAgICAgICBkYXRlT2JqLnNldEhvdXJzKDIzLCA1OSwgNTksIDk5OSk7XG4gICAgICAgIHJldHVybiBuZXcgQVhEYXRlVGltZShkYXRlT2JqLCB0aGlzKTtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3llYXInOlxuICAgICAgICBjbG9uZS5zZXRNb250aCgxMSk7XG4gICAgICAgIHJldHVybiBuZXcgQVhEYXRlVGltZShjbG9uZSwgdGhpcykuZW5kT2YoJ21vbnRoJyk7XG4gICAgfVxuICB9XG5cbiAgaXNMZWFwKGRhdGU6IERhdGUpIHtcbiAgICBsZXQgbGVhcFllYXIgPSBuZXcgRGF0ZShkYXRlLmdldEZ1bGxZZWFyKCksIDEsIDI5KTtcbiAgICByZXR1cm4gbGVhcFllYXIuZ2V0RGF0ZSgpID09IDI5O1xuICB9XG5cbiAgcGFyc2UodmFsdWU6IHN0cmluZyk6IEFYRGF0ZVRpbWUge1xuICAgIHJldHVybiBuZXcgQVhEYXRlVGltZShuZXcgRGF0ZSh2YWx1ZSksIHRoaXMpO1xuICB9XG59XG4iXX0=","import { AXCalendar, AXDateTime } from './datetime.types';\nexport class AXSolarHijriCalendar extends AXCalendar {\n /**\n * @ignore\n */\n constructor(config) {\n super(config);\n /*\n SolarHijri years starting the 33-year rule.\n */\n this.breaks = [\n -61, 9, 38, 199, 426, 686, 756, 818, 1111, 1181, 1210, 1635, 2060, 2097, 2192, 2262, 2324, 2394, 2456, 3178,\n ];\n }\n create(value) {\n const a = this.toGregorian(value.year, value.month, value.day);\n return new AXDateTime(new Date(a.getFullYear(), a.getMonth(), a.getDate(), value.hours || 0, value.minutes || 0, value.seconds || 0, value.ms || 0), this);\n }\n name() {\n return 'solar-hijri';\n }\n dayOfMonth(date) {\n return this.toSolarHijri(date).day;\n }\n dayOfYear(date) {\n const j = this.toSolarHijri(date);\n return (j.month <= 6 ? (j.month - 1) * 31 : 6 * 31 + (j.month - 7) * 30) + j.day;\n }\n dayOfWeek(date) {\n return date.getDay() == 6 ? 1 : date.getDay() + 2;\n }\n weekOfYear(date) {\n //TODO : apply jalali\n const firstDay = new AXDateTime(date, this).startOf('year');\n return Math.ceil(((date.getTime() - firstDay.date.getTime()) / 86400000 + firstDay.date.getDay() + 1) / 7);\n }\n year(date) {\n return this.toSolarHijri(date).year;\n }\n monthOfYear(date) {\n return this.toSolarHijri(date).month;\n }\n add(date, unit, amount) {\n let value = date.valueOf();\n switch (unit) {\n case 'second':\n value += 1000 * amount;\n break;\n case 'minute':\n value += 60000 * amount;\n break;\n case 'hour':\n value += 3600000 * amount;\n break;\n case 'month': {\n // const v = new Date(value);\n // let jd = this.dayOfMonth(date);\n // let jm = this.monthOfYear(date);\n // let jy = this.year(date);\n // const nm = jm + amount;\n // const ny = nm % 12 ? Math.floor(nm / 12) : 0;\n // jy += ny;\n // jm = nm - ny * 12;\n // const vv = this.toGregorian(jy, jm, jd);\n // v.setFullYear(vv.getFullYear());\n // v.setMonth(vv.getMonth());\n // v.setDate(vv.getDate());\n // value = v.valueOf();\n // break;\n let jd = this.dayOfMonth(date);\n let jm = this.monthOfYear(date);\n let jy = this.year(date);\n let newMonth = jm + amount;\n let yearsToAdd = Math.floor(newMonth / 12);\n newMonth = newMonth % 12;\n if (newMonth <= 0) {\n newMonth += 12;\n yearsToAdd--;\n }\n jy += yearsToAdd;\n // Temporary set to first of the month to prevent rollover\n const tempDate = this.toGregorian(jy, newMonth, 1);\n const gregorianDate = new Date(tempDate.getFullYear(), tempDate.getMonth(), tempDate.getDate());\n // Adjust the day to either the original day or the last day of the new month, whichever is smaller\n const lastDayOfNewMonth = this.SolarHijriMonthLength(jy, newMonth); // Implement this method to find the last day in a Jalali month\n jd = Math.min(jd, lastDayOfNewMonth);\n const finalDate = this.toGregorian(jy, newMonth, jd);\n gregorianDate.setFullYear(finalDate.getFullYear());\n gregorianDate.setMonth(finalDate.getMonth());\n gregorianDate.setDate(finalDate.getDate());\n value = gregorianDate.valueOf();\n break;\n }\n case 'week':\n value += 7 * 86400000 * amount;\n break;\n case 'year': {\n const v = new Date(value);\n let jd = this.dayOfMonth(date);\n let jm = this.monthOfYear(date);\n let jy = this.year(date);\n const vv = this.toGregorian(jy + amount, jm, jd);\n v.setFullYear(vv.getFullYear());\n v.setMonth(vv.getMonth());\n v.setDate(vv.getDate());\n value = v.valueOf();\n break;\n }\n case 'day':\n default:\n value += 86400000 * amount;\n }\n return new AXDateTime(new Date(value), this);\n }\n set(date, unit, value) {\n const clone = new Date(date.valueOf());\n const jDate = this.toSolarHijri(clone);\n switch (unit) {\n case 'second':\n clone.setHours(clone.getHours(), clone.getMinutes(), value, clone.getMilliseconds());\n break;\n case 'minute':\n clone.setHours(clone.getHours(), value, clone.getSeconds(), clone.getMilliseconds());\n break;\n case 'hour':\n clone.setHours(value, clone.getMinutes(), clone.getSeconds(), clone.getMilliseconds());\n break;\n default:\n case 'day': {\n const gDate = this.toGregorian(jDate.year, jDate.month, value);\n clone.setDate(gDate.getDate());\n break;\n }\n case 'week':\n break;\n case 'month': {\n const gDate2 = this.toGregorian(jDate.year, value, jDate.day);\n clone.setMonth(gDate2.getMonth());\n break;\n }\n case 'year': {\n const gDate3 = this.toGregorian(value, jDate.month, jDate.day);\n clone.setFullYear(gDate3.getFullYear());\n break;\n }\n }\n return new AXDateTime(clone, this);\n }\n startOf(date, unit) {\n const clone = new Date(date.valueOf());\n switch (unit) {\n case 'second':\n clone.setHours(clone.getHours(), clone.getMinutes(), clone.getSeconds(), 0);\n return new AXDateTime(clone, this);\n case 'minute':\n clone.setHours(clone.getHours(), clone.getMinutes(), 0, 0);\n return new AXDateTime(clone, this);\n case 'hour':\n clone.setHours(clone.getHours(), 0, 0, 0);\n return new AXDateTime(clone, this);\n default:\n case 'day':\n clone.setHours(0, 0, 0, 0);\n return new AXDateTime(clone, this);\n case 'week':\n return new AXDateTime(clone, this).add('day', -this.dayOfWeek(clone) + 1).startOf('day');\n case 'month': {\n const jy = this.year(date);\n const jm = this.monthOfYear(date);\n const gDate = this.toGregorian(jy, jm, 1);\n return new AXDateTime(gDate, this).startOf('day');\n }\n case 'year': {\n const jy = this.year(date);\n const gDate = this.toGregorian(jy, 1, 1);\n return new AXDateTime(gDate, this).startOf('day');\n }\n }\n }\n endOf(date, unit) {\n const clone = new Date(date.valueOf());\n switch (unit) {\n case 'second':\n clone.setHours(clone.getHours(), clone.getMinutes(), clone.getSeconds(), 999);\n return new AXDateTime(clone, this);\n case 'minute':\n clone.setHours(clone.getHours(), clone.getMinutes(), 59, 999);\n return new AXDateTime(clone, this);\n case 'hour':\n clone.setHours(clone.getHours(), 59, 59, 999);\n return new AXDateTime(clone, this);\n default:\n case 'day':\n clone.setHours(23, 59, 59, 999);\n return new AXDateTime(clone, this);\n case 'week': {\n return this.startOf(date, 'week').add('day', 6).endOf('day');\n }\n case 'month': {\n const jy = this.year(date);\n const jm = this.monthOfYear(date);\n const jd = this.SolarHijriMonthLength(jy, jm);\n const gDate = this.toGregorian(jy, jm, jd);\n return new AXDateTime(gDate, this).endOf('day');\n }\n case 'year': {\n const jy = this.year(date);\n const gDate = this.toGregorian(jy, 12, this.SolarHijriMonthLength(jy, 12));\n return new AXDateTime(gDate, this).endOf('day');\n }\n }\n }\n parse(value) {\n const [y, M, d, h, m, s, ms] = value.split(/[^a-zA-Z0-9]+/gi);\n const date = this.toGregorian(Number(y) ?? 0, Number(M) ?? 1, Number(d) ?? 1);\n if (h != null)\n date.setHours(Number(h));\n if (m != null)\n date.setMinutes(Number(m));\n if (s != null)\n date.setSeconds(Number(s));\n if (ms != null)\n date.setMilliseconds(Number(d));\n return new AXDateTime(date, this);\n }\n /*\n Converts a Gregorian date to SolarHijri.\n */\n toSolarHijri(date) {\n const gd = date.getDate();\n const gm = date.getMonth() + 1;\n const gy = date.getFullYear();\n const r = this.d2j(this.g2d(gy, gm, gd));\n return {\n year: r.jy,\n month: r.jm,\n day: r.jd,\n };\n }\n /*\n Converts a SolarHijri date to Gregorian.\n */\n toGregorian(jy, jm, jd) {\n const g = this.d2g(this.j2d(jy, jm, jd));\n return new Date(g.gy, g.gm - 1, g.gd);\n }\n /*\n Checks whether a SolarHijri date is valid or not.\n */\n isValidSolarHijriDate(jy, jm, jd) {\n return jy >= -61 && jy <= 3177 && jm >= 1 && jm <= 12 && jd >= 1 && jd <= this.SolarHijriMonthLength(jy, jm);\n }\n /*\n Is this a leap year or not?\n */\n isLeapSolarHijriYear(jy) {\n return this.jalCalLeap(jy) === 0;\n }\n /*\n Number of days in a given month in a SolarHijri year.\n */\n SolarHijriMonthLength(jy, jm) {\n if (jm <= 6)\n return 31;\n if (jm <= 11)\n return 30;\n if (this.isLeapSolarHijriYear(jy))\n return 30;\n return 29;\n }\n /*\n This determines if the SolarHijri (Persian) year is\n leap (366-day long) or is the common year (365 days)\n \n @param jy SolarHijri calendar year (-61 to 3177)\n @returns number of years since the last leap year (0 to 4)\n */\n jalCalLeap(jy) {\n let bl = this.breaks.length, jp = this.breaks[0], jm, jump, leap, n, i;\n if (jy < jp || jy >= this.breaks[bl - 1])\n throw new Error('Invalid SolarHijri year ' + jy);\n for (i = 1; i < bl; i += 1) {\n jm = this.breaks[i];\n jump = jm - jp;\n if (jy < jm)\n break;\n jp = jm;\n }\n n = jy - jp;\n if (jump - n < 6)\n n = n - jump + this.div(jump + 4, 33) * 33;\n leap = this.mod(this.mod(n + 1, 33) - 1, 4);\n if (leap === -1) {\n leap = 4;\n }\n return leap;\n }\n jalCal(jy, withoutLeap) {\n let bl = this.breaks.length, gy = jy + 621, leapJ = -14, jp = this.breaks[0], jm, jump, leap, leapG, march, n, i;\n if (jy < jp || jy >= this.breaks[bl - 1])\n throw new Error('Invalid SolarHijri year ' + jy);\n // Find the limiting years for the SolarHijri year jy.\n for (i = 1; i < bl; i += 1) {\n jm = this.breaks[i];\n jump = jm - jp;\n if (jy < jm)\n break;\n leapJ = leapJ + this.div(jump, 33) * 8 + this.div(this.mod(jump, 33), 4);\n jp = jm;\n }\n n = jy - jp;\n // Find the number of leap years from AD 621 to the beginning\n // of the current SolarHijri year in the Persian calendar.\n leapJ = leapJ + this.div(n, 33) * 8 + this.div(this.mod(n, 33) + 3, 4);\n if (this.mod(jump, 33) === 4 && jump - n === 4)\n leapJ += 1;\n // And the same in the Gregorian calendar (until the year gy).\n leapG = this.div(gy, 4) - this.div((this.div(gy, 100) + 1) * 3, 4) - 150;\n // Determine the Gregorian date of Farvardin the 1st.\n march = 20 + leapJ - leapG;\n // return with gy and march when we don't need leap\n if (withoutLeap)\n return { gy: gy, march: march };\n // Find how many years have passed since the last leap year.\n if (jump - n < 6)\n n = n - jump + this.div(jump + 4, 33) * 33;\n leap = this.mod(this.mod(n + 1, 33) - 1, 4);\n if (leap === -1) {\n leap = 4;\n }\n return {\n leap: leap,\n gy: gy,\n march: march,\n };\n }\n j2d(jy, jm, jd) {\n let r = this.jalCal(jy, true);\n return this.g2d(r.gy, 3, r.march) + (jm - 1) * 31 - this.div(jm, 7) * (jm - 7) + jd - 1;\n }\n d2j(jdn) {\n let gy = this.d2g(jdn).gy, // Calculate Gregorian year (gy).\n jy = gy - 621, r = this.jalCal(jy, false), jdn1f = this.g2d(gy, 3, r.march), jd, jm, k;\n // Find number of days that passed since 1 Farvardin.\n k = jdn - jdn1f;\n if (k >= 0) {\n if (k <= 185) {\n // The first 6 months.\n jm = 1 + this.div(k, 31);\n jd = this.mod(k, 31) + 1;\n return {\n jy: jy,\n jm: jm,\n jd: jd,\n };\n }\n else {\n // The remaining months.\n k -= 186;\n }\n }\n else {\n // Previous SolarHijri year.\n jy -= 1;\n k += 179;\n if (r.leap === 1)\n k += 1;\n }\n jm = 7 + this.div(k, 30);\n jd = this.mod(k, 30) + 1;\n return {\n jy: jy,\n jm: jm,\n jd: jd,\n };\n }\n g2d(gy, gm, gd) {\n let d = this.div((gy + this.div(gm - 8, 6) + 100100) * 1461, 4) +\n this.div(153 * this.mod(gm + 9, 12) + 2, 5) +\n gd -\n 34840408;\n d = d - this.div(this.div(gy + 100100 + this.div(gm - 8, 6), 100) * 3, 4) + 752;\n return d;\n }\n d2g(jdn) {\n let j, i, gd, gm, gy;\n j = 4 * jdn + 139361631;\n j = j + this.div(this.div(4 * jdn + 183187720, 146097) * 3, 4) * 4 - 3908;\n i = this.div(this.mod(j, 1461), 4) * 5 + 308;\n gd = this.div(this.mod(i, 153), 5) + 1;\n gm = this.mod(this.div(i, 153), 12) + 1;\n gy = this.div(j, 1461) - 100100 + this.div(8 - gm, 6);\n return {\n gy: gy,\n gm: gm,\n gd: gd,\n };\n }\n SolarHijriWeek(jy, jm, jd) {\n let dayOfWeek = this.SolarHijriToDateObject(jy, jm, jd, 0, 0, 0, 0).getDay();\n let startDayDifference = dayOfWeek == 6 ? 0 : -(dayOfWeek + 1);\n let endDayDifference = 6 + startDayDifference;\n return {\n saturday: this.d2j(this.j2d(jy, jm, jd + startDayDifference)),\n friday: this.d2j(this.j2d(jy, jm, jd + endDayDifference)),\n };\n }\n SolarHijriToDateObject(jy, jm, jd, h = 0, m = 0, s = 0, ms = 0) {\n let gregorianCalenderDate = this.toGregorian(jy, jm, jd);\n return new Date(gregorianCalenderDate.getFullYear(), gregorianCalenderDate.getMonth() - 1, gregorianCalenderDate.getDate(), h || 0, m || 0, s || 0, ms || 0);\n }\n /*\n Utility helper functions.\n */\n div(a, b) {\n return ~~(a / b);\n }\n mod(a, b) {\n return a - ~~(a / b) * b;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29sYXItaGlqcmkuY2FsZW5kYXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL2RhdGUtdGltZS9zcmMvbGliL3NvbGFyLWhpanJpLmNhbGVuZGFyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQW9CLFVBQVUsRUFBeUIsTUFBTSxrQkFBa0IsQ0FBQztBQUVuRyxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsVUFBVTtJQUNsRDs7T0FFRztJQUNILFlBQVksTUFBd0I7UUFDbEMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBR2hCOztRQUVBO1FBQ1EsV0FBTSxHQUFHO1lBQ2YsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtTQUM1RyxDQUFDO0lBUEYsQ0FBQztJQVNELE1BQU0sQ0FBQyxLQUFrQjtRQUN2QixNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDL0QsT0FBTyxJQUFJLFVBQVUsQ0FDbkIsSUFBSSxJQUFJLENBQ04sQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUNmLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFDWixDQUFDLENBQUMsT0FBTyxFQUFFLEVBQ1gsS0FBSyxDQUFDLEtBQUssSUFBSSxDQUFDLEVBQ2hCLEtBQUssQ0FBQyxPQUFPLElBQUksQ0FBQyxFQUNsQixLQUFLLENBQUMsT0FBTyxJQUFJLENB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Q0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUM5RCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDOUUsSUFBSSxDQUFDLElBQUksSUFBSTtZQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEMsSUFBSSxDQUFDLElBQUksSUFBSTtZQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLElBQUksSUFBSTtZQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUMsSUFBSSxFQUFFLElBQUksSUFBSTtZQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEQsT0FBTyxJQUFJLFVBQVUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVEOztJQUVBO0lBQ0EsWUFBWSxDQUFDLElBQVU7UUFDckIsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzFCLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDL0IsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzlCLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxD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QUFFLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLENBQUM7WUFDdkQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDM0MsRUFBRTtZQUNGLFFBQVEsQ0FBQztRQUNYLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUM7UUFDaEYsT0FBTyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRU8sR0FBRyxDQUFDLEdBQVc7UUFDckIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBQ3JCLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLFNBQVMsQ0FBQztRQUN4QixDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLFNBQVMsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztRQUMxRSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO1FBQzdDLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN2QyxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDeEMsRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDdEQsT0FBTztZQUNMLEVBQUUsRUFBRSxFQUFFO1lBQ04sRUFBRSxFQUFFLEVBQUU7WUFDTixFQUFFLEVBQUUsRUFBRTtTQUNQLENBQUM7SUFDSixDQUFDO0lBRU8sY0FBYyxDQUFDLEVBQVUsRUFBRSxFQUFVLEVBQUUsRUFBVTtRQUN2RCxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7UUFFN0UsSUFBSSxrQkFBa0IsR0FBRyxTQUFTLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDL0QsSUFBSSxnQkFBZ0IsR0FBRyxDQUFDLEdBQUcsa0JBQWtCLENBQUM7UUFFOUMsT0FBTztZQUNMLFFBQVEsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsa0JBQWtCLENBQUMsQ0FBQztZQUM3RCxNQUFNLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLGdCQUFnQixDQUFDLENBQUM7U0FDMUQsQ0FBQztJQUNKLENBQUM7SUFFTyxzQkFBc0IsQ0FDNUIsRUFBVSxFQUNWLEVBQVUsRUFDVixFQUFVLEVBQ1YsSUFBWSxDQUFDLEVBQ2IsSUFBWSxDQUFDLEVBQ2IsSUFBWSxDQUFDLEVBQ2IsS0FBYSxDQUFDO1FBRWQsSUFBSSxxQkFBcUIsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFekQsT0FBTyxJQUFJLElBQUksQ0FDYixxQkFBcUIsQ0FBQyxXQUFXLEVBQUUsRUFDbkMscUJBQXFCLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxFQUNwQyxxQkFBcUIsQ0FBQyxPQUFPLEVBQUUsRUFDL0IsQ0FBQyxJQUFJLENBQUMsRUFDTixDQUFDLElBQUksQ0FBQyxFQUNOLENBQUMsSUFBSSxDQUFDLEVBQ04sRUFBRSxJQUFJLENBQUMsQ0FDUixDQUFDO0lBQ0osQ0FBQztJQUVEOztNQUVFO0lBRU0sR0FBRyxDQUFDLENBQVMsRUFBRSxDQUFTO1FBQzlCLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ25CLENBQUM7SUFFTyxHQUFHLENBQUMsQ0FBUyxFQUFFLENBQVM7UUFDOUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMzQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWENhbGVuZGFyLCBBWENhbGVuZGFyQ29uZmlnLCBBWERhdGVUaW1lLCBBWERhdGVWYWx1ZSwgVGltZVVuaXQgfSBmcm9tICcuL2RhdGV0aW1lLnR5cGVzJztcblxuZXhwb3J0IGNsYXNzIEFYU29sYXJIaWpyaUNhbGVuZGFyIGV4dGVuZHMgQVhDYWxlbmRhciB7XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihjb25maWc6IEFYQ2FsZW5kYXJDb25maWcpIHtcbiAgICBzdXBlcihjb25maWcpO1xuICB9XG5cbiAgLypcbiAgU29sYXJIaWpyaSB5ZWFycyBzdGFydGluZyB0aGUgMzMteWVhciBydWxlLlxuKi9cbiAgcHJpdmF0ZSBicmVha3MgPSBbXG4gICAgLTYxLCA5LCAzOCwgMTk5LCA0MjYsIDY4NiwgNzU2LCA4MTgsIDExMTEsIDExODEsIDEyMTAsIDE2MzUsIDIwNjAsIDIwOTcsIDIxOTIsIDIyNjIsIDIzMjQsIDIzOTQsIDI0NTYsIDMxNzgsXG4gIF07XG5cbiAgY3JlYXRlKHZhbHVlOiBBWERhdGVWYWx1ZSk6IEFYRGF0ZVRpbWUge1xuICAgIGNvbnN0IGEgPSB0aGlzLnRvR3JlZ29yaWFuKHZhbHVlLnllYXIsIHZhbHVlLm1vbnRoLCB2YWx1ZS5kYXkpO1xuICAgIHJldHVybiBuZXcgQVhEYXRlVGltZShcbiAgICAgIG5ldyBEYXRlKFxuICAgICAgICBhLmdldEZ1bGxZZWFyKCksXG4gICAgICAgIGEuZ2V0TW9udGgoKSxcbiAgICAgICAgYS5nZXREYXRlKCksXG4gICAgICAgIHZhbHVlLmhvdXJzIHx8IDAsXG4gICAgICAgIHZhbHVlLm1pbnV0ZXMgfHwgMCxcbiAgICAgICAgdmFsdWUuc2Vjb25kcyB8fCAwLFxuICAgICAgICB2YWx1ZS5tcyB8fCAwLFxuICAgICAgKSxcbiAgICAgIHRoaXMsXG4gICAgKTtcbiAgfVxuXG4gIG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ3NvbGFyLWhpanJpJztcbiAgfVxuXG4gIGRheU9mTW9udGgoZGF0ZTogRGF0ZSk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMudG9Tb2xhckhpanJpKGRhdGUpLmRheTtcbiAgfVxuXG4gIGRheU9mWWVhcihkYXRlOiBEYXRlKTogbnVtYmVyIHtcbiAgICBjb25zdCBqID0gdGhpcy50b1NvbGFySGlqcmkoZGF0ZSk7XG4gICAgcmV0dXJuIChqLm1vbnRoIDw9IDYgPyAoai5tb250aCAtIDEpICogMzEgOiA2ICogMzEgKyAoai5tb250aCAtIDcpICogMzApICsgai5kYXk7XG4gIH1cblxuICBkYXlPZldlZWsoZGF0ZTogRGF0ZSk6IG51bWJlciB7XG4gICAgcmV0dXJuIGRhdGUuZ2V0RGF5KCkgPT0gNiA/IDEgOiBkYXRlLmdldERheSgpICsgMjtcbiAgfVxuXG4gIHdlZWtPZlllYXIoZGF0ZTogRGF0ZSk6IG51bWJlciB7XG4gICAgLy9UT0RPIDogYXBwbHkgamFsYWxpXG4gICAgY29uc3QgZmlyc3REYXkgPSBuZXcgQVhEYXRlVGltZShkYXRlLCB0aGlzKS5zdGFydE9mKCd5ZWFyJyk7XG4gICAgcmV0dXJuIE1hdGguY2VpbCgoKGRhdGUuZ2V0VGltZSgpIC0gZmlyc3REYXkuZGF0ZS5nZXRUaW1lKCkpIC8gODY0MDAwMDAgKyBmaXJzdERheS5kYXRlLmdldERheSgpICsgMSkgLyA3KTtcbiAgfVxuXG4gIHllYXIoZGF0ZTogRGF0ZSk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMudG9Tb2xhckhpanJpKGRhdGUpLnllYXI7XG4gIH1cblxuICBtb250aE9mWWVhcihkYXRlOiBEYXRlKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy50b1NvbGFySGlqcmkoZGF0ZSkubW9udGg7XG4gIH1cblxuICBhZGQoZGF0ZTogRGF0ZSwgdW5pdDogVGltZVVuaXQsIGFtb3VudDogbnVtYmVyKTogQVhEYXRlVGltZSB7XG4gICAgbGV0IHZhbHVlID0gZGF0ZS52YWx1ZU9mKCk7XG4gICAgc3dpdGNoICh1bml0KSB7XG4gICAgICBjYXNlICdzZWNvbmQnOlxuICAgICAgICB2YWx1ZSArPSAxMDAwICogYW1vdW50O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ21pbnV0ZSc6XG4gICAgICAgIHZhbHVlICs9IDYwMDAwICogYW1vdW50O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2hvdXInOlxuICAgICAgICB2YWx1ZSArPSAzNjAwMDAwICogYW1vdW50O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ21vbnRoJzoge1xuICAgICAgICAvLyBjb25zdCB2ID0gbmV3IERhdGUodmFsdWUpO1xuICAgICAgICAvLyBsZXQgamQgPSB0aGlzLmRheU9mTW9udGgoZGF0ZSk7XG4gICAgICAgIC8vIGxldCBqbSA9IHRoaXMubW9udGhPZlllYXIoZGF0ZSk7XG4gICAgICAgIC8vIGxldCBqeSA9IHRoaXMueWVhcihkYXRlKTtcbiAgICAgICAgLy8gY29uc3Qgbm0gPSBqbSArIGFtb3VudDtcbiAgICAgICAgLy8gY29uc3QgbnkgPSBubSAlIDEyID8gTWF0aC5mbG9vcihubSAvIDEyKSA6IDA7XG4gICAgICAgIC8vIGp5ICs9IG55O1xuICAgICAgICAvLyBqbSA9IG5tIC0gbnkgKiAxMjtcbiAgICAgICAgLy8gY29uc3QgdnYgPSB0aGlzLnRvR3JlZ29yaWFuKGp5LCBqbSwgamQpO1xuICAgICAgICAvLyB2LnNldEZ1bGxZZWFyKHZ2LmdldEZ1bGxZZWFyKCkpO1xuICAgICAgICAvLyB2LnNldE1vbnRoKHZ2LmdldE1vbnRoKCkpO1xuICAgICAgICAvLyB2LnNldERhdGUodnYuZ2V0RGF0ZSgpKTtcbiAgICAgICAgLy8gdmFsdWUgPSB2LnZhbHVlT2YoKTtcbiAgICAgICAgLy8gYnJlYWs7XG4gICAgICAgIGxldCBqZCA9IHRoaXMuZGF5T2ZNb250aChkYXRlKTtcbiAgICAgICAgbGV0IGptID0gdGhpcy5tb250aE9mWWVhcihkYXRlKTtcbiAgICAgICAgbGV0IGp5ID0gdGhpcy55ZWFyKGRhdGUpO1xuXG4gICAgICAgIGxldCBuZXdNb250aCA9IGptICsgYW1vdW50O1xuICAgICAgICBsZXQgeWVhcnNUb0FkZCA9IE1hdGguZmxvb3IobmV3TW9udGggLyAxMik7XG4gICAgICAgIG5ld01vbnRoID0gbmV3TW9udGggJSAxMjtcbiAgICAgICAgaWYgKG5ld01vbnRoIDw9IDApIHtcbiAgICAgICAgICBuZXdNb250aCArPSAxMjtcbiAgICAgICAgICB5ZWFyc1RvQWRkLS07XG4gICAgICAgIH1cblxuICAgICAgICBqeSArPSB5ZWFyc1RvQWRkO1xuXG4gICAgICAgIC8vIFRlbXBvcmFyeSBzZXQgdG8gZmlyc3Qgb2YgdGhlIG1vbnRoIHRvIHByZXZlbnQgcm9sbG92ZXJcbiAgICAgICAgY29uc3QgdGVtcERhdGUgPSB0aGlzLnRvR3JlZ29yaWFuKGp5LCBuZXdNb250aCwgMSk7XG4gICAgICAgIGNvbnN0IGdyZWdvcmlhbkRhdGUgPSBuZXcgRGF0ZSh0ZW1wRGF0ZS5nZXRGdWxsWWVhcigpLCB0ZW1wRGF0ZS5nZXRNb250aCgpLCB0ZW1wRGF0ZS5nZXREYXRlKCkpO1xuXG4gICAgICAgIC8vIEFkanVzdCB0aGUgZGF5IHRvIGVpdGhlciB0aGUgb3JpZ2luYWwgZGF5IG9yIHRoZSBsYXN0IGRheSBvZiB0aGUgbmV3IG1vbnRoLCB3aGljaGV2ZXIgaXMgc21hbGxlclxuICAgICAgICBjb25zdCBsYXN0RGF5T2ZOZXdNb250aCA9IHRoaXMuU29sYXJIaWpyaU1vbnRoTGVuZ3RoKGp5LCBuZXdNb250aCk7IC8vIEltcGxlbWVudCB0aGlzIG1ldGhvZCB0byBmaW5kIHRoZSBsYXN0IGRheSBpbiBhIEphbGFsaSBtb250aFxuICAgICAgICBqZCA9IE1hdGgubWluKGpkLCBsYXN0RGF5T2ZOZXdNb250aCk7XG5cbiAgICAgICAgY29uc3QgZmluYWxEYXRlID0gdGhpcy50b0dyZWdvcmlhbihqeSwgbmV3TW9udGgsIGpkKTtcbiAgICAgICAgZ3JlZ29yaWFuRGF0ZS5zZXRGdWxsWWVhcihmaW5hbERhdGUuZ2V0RnVsbFllYXIoKSk7XG4gICAgICAgIGdyZWdvcmlhbkRhdGUuc2V0TW9udGgoZmluYWxEYXRlLmdldE1vbnRoKCkpO1xuICAgICAgICBncmVnb3JpYW5EYXRlLnNldERhdGUoZmluYWxEYXRlLmdldERhdGUoKSk7XG5cbiAgICAgICAgdmFsdWUgPSBncmVnb3JpYW5EYXRlLnZhbHVlT2YoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICd3ZWVrJzpcbiAgICAgICAgdmFsdWUgKz0gNyAqIDg2NDAwMDAwICogYW1vdW50O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3llYXInOiB7XG4gICAgICAgIGNvbnN0IHYgPSBuZXcgRGF0ZSh2YWx1ZSk7XG4gICAgICAgIGxldCBqZCA9IHRoaXMuZGF5T2ZNb250aChkYXRlKTtcbiAgICAgICAgbGV0IGptID0gdGhpcy5tb250aE9mWWVhcihkYXRlKTtcbiAgICAgICAgbGV0IGp5ID0gdGhpcy55ZWFyKGRhdGUpO1xuICAgICAgICBjb25zdCB2diA9IHRoaXMudG9HcmVnb3JpYW4oankgKyBhbW91bnQsIGptLCBqZCk7XG4gICAgICAgIHYuc2V0RnVsbFllYXIodnYuZ2V0RnVsbFllYXIoKSk7XG4gICAgICAgIHYuc2V0TW9udGgodnYuZ2V0TW9udGgoKSk7XG4gICAgICAgIHYuc2V0RGF0ZSh2di5nZXREYXRlKCkpO1xuICAgICAgICB2YWx1ZSA9IHYudmFsdWVPZigpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ2RheSc6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB2YWx1ZSArPSA4NjQwMDAwMCAqIGFtb3VudDtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBBWERhdGVUaW1lKG5ldyBEYXRlKHZhbHVlKSwgdGhpcyk7XG4gIH1cblxuICBzZXQoZGF0ZTogRGF0ZSwgdW5pdDogVGltZVVuaXQsIHZhbHVlOiBudW1iZXIpOiBBWERhdGVUaW1lIHtcbiAgICBjb25zdCBjbG9uZSA9IG5ldyBEYXRlKGRhdGUudmFsdWVPZigpKTtcbiAgICBjb25zdCBqRGF0ZSA9IHRoaXMudG9Tb2xhckhpanJpKGNsb25lKTtcbiAgICBzd2l0Y2ggKHVuaXQpIHtcbiAgICAgIGNhc2UgJ3NlY29uZCc6XG4gICAgICAgIGNsb25lLnNldEhvdXJzKGNsb25lLmdldEhvdXJzKCksIGNsb25lLmdldE1pbnV0ZXMoKSwgdmFsdWUsIGNsb25lLmdldE1pbGxpc2Vjb25kcygpKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdtaW51dGUnOlxuICAgICAgICBjbG9uZS5zZXRIb3VycyhjbG9uZS5nZXRIb3VycygpLCB2YWx1ZSwgY2xvbmUuZ2V0U2Vjb25kcygpLCBjbG9uZS5nZXRNaWxsaXNlY29uZHMoKSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnaG91cic6XG4gICAgICAgIGNsb25lLnNldEhvdXJzKHZhbHVlLCBjbG9uZS5nZXRNaW51dGVzKCksIGNsb25lLmdldFNlY29uZHMoKSwgY2xvbmUuZ2V0TWlsbGlzZWNvbmRzKCkpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICBjYXNlICdkYXknOiB7XG4gICAgICAgIGNvbnN0IGdEYXRlID0gdGhpcy50b0dyZWdvcmlhbihqRGF0ZS55ZWFyLCBqRGF0ZS5tb250aCwgdmFsdWUpO1xuICAgICAgICBjbG9uZS5zZXREYXRlKGdEYXRlLmdldERhdGUoKSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnd2Vlayc6XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnbW9udGgnOiB7XG4gICAgICAgIGNvbnN0IGdEYXRlMiA9IHRoaXMudG9HcmVnb3JpYW4oakRhdGUueWVhciwgdmFsdWUsIGpEYXRlLmRheSk7XG4gICAgICAgIGNsb25lLnNldE1vbnRoKGdEYXRlMi5nZXRNb250aCgpKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICd5ZWFyJzoge1xuICAgICAgICBjb25zdCBnRGF0ZTMgPSB0aGlzLnRvR3JlZ29yaWFuKHZhbHVlLCBqRGF0ZS5tb250aCwgakRhdGUuZGF5KTtcbiAgICAgICAgY2xvbmUuc2V0RnVsbFllYXIoZ0RhdGUzLmdldEZ1bGxZZWFyKCkpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5ldyBBWERhdGVUaW1lKGNsb25lLCB0aGlzKTtcbiAgfVxuXG4gIHN0YXJ0T2YoZGF0ZTogRGF0ZSwgdW5pdDogVGltZVVuaXQpOiBBWERhdGVUaW1lIHtcbiAgICBjb25zdCBjbG9uZSA9IG5ldyBEYXRlKGRhdGUudmFsdWVPZigpKTtcbiAgICBzd2l0Y2ggKHVuaXQpIHtcbiAgICAgIGNhc2UgJ3NlY29uZCc6XG4gICAgICAgIGNsb25lLnNldEhvdXJzKGNsb25lLmdldEhvdXJzKCksIGNsb25lLmdldE1pbnV0ZXMoKSwgY2xvbmUuZ2V0U2Vjb25kcygpLCAwKTtcbiAgICAgICAgcmV0dXJuIG5ldyBBWERhdGVUaW1lKGNsb25lLCB0aGlzKTtcbiAgICAgIGNhc2UgJ21pbnV0ZSc6XG4gICAgICAgIGNsb25lLnNldEhvdXJzKGNsb25lLmdldEhvdXJzKCksIGNsb25lLmdldE1pbnV0ZXMoKSwgMCwgMCk7XG4gICAgICAgIHJldHVybiBuZXcgQVhEYXRlVGltZShjbG9uZSwgdGhpcyk7XG4gICAgICBjYXNlICdob3VyJzpcbiAgICAgICAgY2xvbmUuc2V0SG91cnMoY2xvbmUuZ2V0SG91cnMoKSwgMCwgMCwgMCk7XG4gICAgICAgIHJldHVybiBuZXcgQVhEYXRlVGltZShjbG9uZSwgdGhpcyk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgY2FzZSAnZGF5JzpcbiAgICAgICAgY2xvbmUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gICAgICAgIHJldHVybiBuZXcgQVhEYXRlVGltZShjbG9uZSwgdGhpcyk7XG4gICAgICBjYXNlICd3ZWVrJzpcbiAgICAgICAgcmV0dXJuIG5ldyBBWERhdGVUaW1lKGNsb25lLCB0aGlzKS5hZGQoJ2RheScsIC10aGlzLmRheU9mV2VlayhjbG9uZSkgKyAxKS5zdGFydE9mKCdkYXknKTtcbiAgICAgIGNhc2UgJ21vbnRoJzoge1xuICAgICAgICBjb25zdCBqeSA9IHRoaXMueWVhcihkYXRlKTtcbiAgICAgICAgY29uc3Qgam0gPSB0aGlzLm1vbnRoT2ZZZWFyKGRhdGUpO1xuICAgICAgICBjb25zdCBnRGF0ZSA9IHRoaXMudG9HcmVnb3JpYW4oanksIGptLCAxKTtcbiAgICAgICAgcmV0dXJuIG5ldyBBWERhdGVUaW1lKGdEYXRlLCB0aGlzKS5zdGFydE9mKCdkYXknKTtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3llYXInOiB7XG4gICAgICAgIGNvbnN0IGp5ID0gdGhpcy55ZWFyKGRhdGUpO1xuICAgICAgICBjb25zdCBnRGF0ZSA9IHRoaXMudG9HcmVnb3JpYW4oanksIDEsIDEpO1xuICAgICAgICByZXR1cm4gbmV3IEFYRGF0ZVRpbWUoZ0RhdGUsIHRoaXMpLnN0YXJ0T2YoJ2RheScpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGVuZE9mKGRhdGU6IERhdGUsIHVuaXQ6IFRpbWVVbml0KTogQVhEYXRlVGltZSB7XG4gICAgY29uc3QgY2xvbmUgPSBuZXcgRGF0ZShkYXRlLnZhbHVlT2YoKSk7XG4gICAgc3dpdGNoICh1bml0KSB7XG4gICAgICBjYXNlICdzZWNvbmQnOlxuICAgICAgICBjbG9uZS5zZXRIb3VycyhjbG9uZS5nZXRIb3VycygpLCBjbG9uZS5nZXRNaW51dGVzKCksIGNsb25lLmdldFNlY29uZHMoKSwgOTk5KTtcbiAgICAgICAgcmV0dXJuIG5ldyBBWERhdGVUaW1lKGNsb25lLCB0aGlzKTtcbiAgICAgIGNhc2UgJ21pbnV0ZSc6XG4gICAgICAgIGNsb25lLnNldEhvdXJzKGNsb25lLmdldEhvdXJzKCksIGNsb25lLmdldE1pbnV0ZXMoKSwgNTksIDk5OSk7XG4gICAgICAgIHJldHVybiBuZXcgQVhEYXRlVGltZShjbG9uZSwgdGhpcyk7XG4gICAgICBjYXNlICdob3VyJzpcbiAgICAgICAgY2xvbmUuc2V0SG91cnMoY2xvbmUuZ2V0SG91cnMoKSwgNTksIDU5LCA5OTkpO1xuICAgICAgICByZXR1cm4gbmV3IEFYRGF0ZVRpbWUoY2xvbmUsIHRoaXMpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgIGNhc2UgJ2RheSc6XG4gICAgICAgIGNsb25lLnNldEhvdXJzKDIzLCA1OSwgNTksIDk5OSk7XG4gICAgICAgIHJldHVybiBuZXcgQVhEYXRlVGltZShjbG9uZSwgdGhpcyk7XG4gICAgICBjYXNlICd3ZWVrJzoge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGFydE9mKGRhdGUsICd3ZWVrJykuYWRkKCdkYXknLCA2KS5lbmRPZignZGF5Jyk7XG4gICAgICB9XG4gICAgICBjYXNlICdtb250aCc6IHtcbiAgICAgICAgY29uc3QgankgPSB0aGlzLnllYXIoZGF0ZSk7XG4gICAgICAgIGNvbnN0IGptID0gdGhpcy5tb250aE9mWWVhcihkYXRlKTtcbiAgICAgICAgY29uc3QgamQgPSB0aGlzLlNvbGFySGlqcmlNb250aExlbmd0aChqeSwgam0pO1xuICAgICAgICBjb25zdCBnRGF0ZSA9IHRoaXMudG9HcmVnb3JpYW4oanksIGptLCBqZCk7XG4gICAgICAgIHJldHVybiBuZXcgQVhEYXRlVGltZShnRGF0ZSwgdGhpcykuZW5kT2YoJ2RheScpO1xuICAgICAgfVxuICAgICAgY2FzZSAneWVhcic6IHtcbiAgICAgICAgY29uc3QgankgPSB0aGlzLnllYXIoZGF0ZSk7XG4gICAgICAgIGNvbnN0IGdEYXRlID0gdGhpcy50b0dyZWdvcmlhbihqeSwgMTIsIHRoaXMuU29sYXJIaWpyaU1vbnRoTGVuZ3RoKGp5LCAxMikpO1xuICAgICAgICByZXR1cm4gbmV3IEFYRGF0ZVRpbWUoZ0RhdGUsIHRoaXMpLmVuZE9mKCdkYXknKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwYXJzZSh2YWx1ZTogc3RyaW5nKTogQVhEYXRlVGltZSB7XG4gICAgY29uc3QgW3ksIE0sIGQsIGgsIG0sIHMsIG1zXSA9IHZhbHVlLnNwbGl0KC9bXmEtekEtWjAtOV0rL2dpKTtcbiAgICBjb25zdCBkYXRlID0gdGhpcy50b0dyZWdvcmlhbihOdW1iZXIoeSkgPz8gMCwgTnVtYmVyKE0pID8/IDEsIE51bWJlcihkKSA/PyAxKTtcbiAgICBpZiAoaCAhPSBudWxsKSBkYXRlLnNldEhvdXJzKE51bWJlcihoKSk7XG4gICAgaWYgKG0gIT0gbnVsbCkgZGF0ZS5zZXRNaW51dGVzKE51bWJlcihtKSk7XG4gICAgaWYgKHMgIT0gbnVsbCkgZGF0ZS5zZXRTZWNvbmRzKE51bWJlcihzKSk7XG4gICAgaWYgKG1zICE9IG51bGwpIGRhdGUuc2V0TWlsbGlzZWNvbmRzKE51bWJlcihkKSk7XG4gICAgcmV0dXJuIG5ldyBBWERhdGVUaW1lKGRhdGUsIHRoaXMpO1xuICB9XG5cbiAgLypcbiAgQ29udmVydHMgYSBHcmVnb3JpYW4gZGF0ZSB0byBTb2xhckhpanJpLlxuKi9cbiAgdG9Tb2xhckhpanJpKGRhdGU6IERhdGUpOiB7IHllYXI6IG51bWJlcjsgbW9udGg6IG51bWJlcjsgZGF5OiBudW1iZXIgfSB7XG4gICAgY29uc3QgZ2QgPSBkYXRlLmdldERhdGUoKTtcbiAgICBjb25zdCBnbSA9IGRhdGUuZ2V0TW9udGgoKSArIDE7XG4gICAgY29uc3QgZ3kgPSBkYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgY29uc3QgciA9IHRoaXMuZDJqKHRoaXMuZzJkKGd5LCBnbSwgZ2QpKTtcbiAgICByZXR1cm4ge1xuICAgICAgeWVhcjogci5qeSxcbiAgICAgIG1vbnRoOiByLmptLFxuICAgICAgZGF5OiByLmpkLFxuICAgIH07XG4gIH1cblxuICAvKlxuICAgIENvbnZlcnRzIGEgU29sYXJIaWpyaSBkYXRlIHRvIEdyZWdvcmlhbi5cbiAgKi9cbiAgdG9HcmVnb3JpYW4oanksIGptLCBqZCk6IERhdGUge1xuICAgIGNvbnN0IGcgPSB0aGlzLmQyZyh0aGlzLmoyZChqeSwgam0sIGpkKSk7XG4gICAgcmV0dXJuIG5ldyBEYXRlKGcuZ3ksIGcuZ20gLSAxLCBnLmdkKTtcbiAgfVxuXG4gIC8qXG4gICAgQ2hlY2tzIHdoZXRoZXIgYSBTb2xhckhpanJpIGRhdGUgaXMgdmFsaWQgb3Igbm90LlxuICAqL1xuICBpc1ZhbGlkU29sYXJIaWpyaURhdGUoanksIGptLCBqZCkge1xuICAgIHJldHVybiBqeSA+PSAtNjEgJiYgankgPD0gMzE3NyAmJiBqbSA+PSAxICYmIGptIDw9IDEyICYmIGpkID49IDEgJiYgamQgPD0gdGhpcy5Tb2xhckhpanJpTW9udGhMZW5ndGgoanksIGptKTtcbiAgfVxuXG4gIC8qXG4gICAgSXMgdGhpcyBhIGxlYXAgeWVhciBvciBub3Q/XG4gICovXG4gIGlzTGVhcFNvbGFySGlqcmlZZWFyKGp5KSB7XG4gICAgcmV0dXJuIHRoaXMuamFsQ2FsTGVhcChqeSkgPT09IDA7XG4gIH1cblxuICAvKlxuICAgIE51bWJlciBvZiBkYXlzIGluIGEgZ2l2ZW4gbW9udGggaW4gYSBTb2xhckhpanJpIHllYXIuXG4gICovXG4gIFNvbGFySGlqcmlNb250aExlbmd0aChqeSwgam0pIHtcbiAgICBpZiAoam0gPD0gNikgcmV0dXJuIDMxO1xuICAgIGlmIChqbSA8PSAxMSkgcmV0dXJuIDMwO1xuICAgIGlmICh0aGlzLmlzTGVhcFNvbGFySGlqcmlZZWFyKGp5KSkgcmV0dXJuIDMwO1xuICAgIHJldHVybiAyOTtcbiAgfVxuXG4gIC8qXG4gICAgICBUaGlzIGRldGVybWluZXMgaWYgdGhlIFNvbGFySGlqcmkgKFBlcnNpYW4pIHllYXIgaXNcbiAgICAgIGxlYXAgKDM2Ni1kYXkgbG9uZykgb3IgaXMgdGhlIGNvbW1vbiB5ZWFyICgzNjUgZGF5cylcbiAgXG4gICAgICBAcGFyYW0gankgU29sYXJIaWpyaSBjYWxlbmRhciB5ZWFyICgtNjEgdG8gMzE3NylcbiAgICAgIEByZXR1cm5zIG51bWJlciBvZiB5ZWFycyBzaW5jZSB0aGUgbGFzdCBsZWFwIHllYXIgKDAgdG8gNClcbiAgICovXG4gIHByaXZhdGUgamFsQ2FsTGVhcChqeTogbnVtYmVyKSB7XG4gICAgbGV0IGJsID0gdGhpcy5icmVha3MubGVuZ3RoLFxuICAgICAganAgPSB0aGlzLmJyZWFrc1swXSxcbiAgICAgIGptLFxuICAgICAganVtcCxcbiAgICAgIGxlYXAsXG4gICAgICBuLFxuICAgICAgaTtcblxuICAgIGlmIChqeSA8IGpwIHx8IGp5ID49IHRoaXMuYnJlYWtzW2JsIC0gMV0pIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBTb2xhckhpanJpIHllYXIgJyArIGp5KTtcblxuICAgIGZvciAoaSA9IDE7IGkgPCBibDsgaSArPSAxKSB7XG4gICAgICBqbSA9IHRoaXMuYnJlYWtzW2ldO1xuICAgICAganVtcCA9IGptIC0ganA7XG4gICAgICBpZiAoankgPCBqbSkgYnJlYWs7XG4gICAgICBqcCA9IGptO1xuICAgIH1cbiAgICBuID0gankgLSBqcDtcblxuICAgIGlmIChqdW1wIC0gbiA8IDYpIG4gPSBuIC0ganVtcCArIHRoaXMuZGl2KGp1bXAgKyA0LCAzMykgKiAzMztcbiAgICBsZWFwID0gdGhpcy5tb2QodGhpcy5tb2QobiArIDEsIDMzKSAtIDEsIDQpO1xuICAgIGlmIChsZWFwID09PSAtMSkge1xuICAgICAgbGVhcCA9IDQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxlYXA7XG4gIH1cblxuICBwcml2YXRlIGphbENhbChqeTogbnVtYmVyLCB3aXRob3V0TGVhcDogYm9vbGVhbikge1xuICAgIGxldCBibCA9IHRoaXMuYnJlYWtzLmxlbmd0aCxcbiAgICAgIGd5ID0gankgKyA2MjEsXG4gICAgICBsZWFwSiA9IC0xNCxcbiAgICAgIGpwID0gdGhpcy5icmVha3NbMF0sXG4gICAgICBqbSxcbiAgICAgIGp1bXAsXG4gICAgICBsZWFwLFxuICAgICAgbGVhcEcsXG4gICAgICBtYXJjaCxcbiAgICAgIG4sXG4gICAgICBpO1xuXG4gICAgaWYgKGp5IDwganAgfHwgankgPj0gdGhpcy5icmVha3NbYmwgLSAxXSkgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIFNvbGFySGlqcmkgeWVhciAnICsgankpO1xuXG4gICAgLy8gRmluZCB0aGUgbGltaXRpbmcgeWVhcnMgZm9yIHRoZSBTb2xhckhpanJpIHllYXIgankuXG4gICAgZm9yIChpID0gMTsgaSA8IGJsOyBpICs9IDEpIHtcbiAgICAgIGptID0gdGhpcy5icmVha3NbaV07XG4gICAgICBqdW1wID0gam0gLSBqcDtcbiAgICAgIGlmIChqeSA8IGptKSBicmVhaztcbiAgICAgIGxlYXBKID0gbGVhcEogKyB0aGlzLmRpdihqdW1wLCAzMykgKiA4ICsgdGhpcy5kaXYodGhpcy5tb2QoanVtcCwgMzMpLCA0KTtcbiAgICAgIGpwID0gam07XG4gICAgfVxuICAgIG4gPSBqeSAtIGpwO1xuXG4gICAgLy8gRmluZCB0aGUgbnVtYmVyIG9mIGxlYXAgeWVhcnMgZnJvbSBBRCA2MjEgdG8gdGhlIGJlZ2lubmluZ1xuICAgIC8vIG9mIHRoZSBjdXJyZW50IFNvbGFySGlqcmkgeWVhciBpbiB0aGUgUGVyc2lhbiBjYWxlbmRhci5cbiAgICBsZWFwSiA9IGxlYXBKICsgdGhpcy5kaXYobiwgMzMpICogOCArIHRoaXMuZGl2KHRoaXMubW9kKG4sIDMzKSArIDMsIDQpO1xuICAgIGlmICh0aGlzLm1vZChqdW1wLCAzMykgPT09IDQgJiYganVtcCAtIG4gPT09IDQpIGxlYXBKICs9IDE7XG5cbiAgICAvLyBBbmQgdGhlIHNhbWUgaW4gdGhlIEdyZWdvcmlhbiBjYWxlbmRhciAodW50aWwgdGhlIHllYXIgZ3kpLlxuICAgIGxlYXBHID0gdGhpcy5kaXYoZ3ksIDQpIC0gdGhpcy5kaXYoKHRoaXMuZGl2KGd5LCAxMDApICsgMSkgKiAzLCA0KSAtIDE1MDtcblxuICAgIC8vIERldGVybWluZSB0aGUgR3JlZ29yaWFuIGRhdGUgb2YgRmFydmFyZGluIHRoZSAxc3QuXG4gICAgbWFyY2ggPSAyMCArIGxlYXBKIC0gbGVhcEc7XG5cbiAgICAvLyByZXR1cm4gd2l0aCBneSBhbmQgbWFyY2ggd2hlbiB3ZSBkb24ndCBuZWVkIGxlYXBcbiAgICBpZiAod2l0aG91dExlYXApIHJldHVybiB7IGd5OiBneSwgbWFyY2g6IG1hcmNoIH07XG5cbiAgICAvLyBGaW5kIGhvdyBtYW55IHllYXJzIGhhdmUgcGFzc2VkIHNpbmNlIHRoZSBsYXN0IGxlYXAgeWVhci5cbiAgICBpZiAoanVtcCAtIG4gPCA2KSBuID0gbiAtIGp1bXAgKyB0aGlzLmRpdihqdW1wICsgNCwgMzMpICogMzM7XG4gICAgbGVhcCA9IHRoaXMubW9kKHRoaXMubW9kKG4gKyAxLCAzMykgLSAxLCA0KTtcbiAgICBpZiAobGVhcCA9PT0gLTEpIHtcbiAgICAgIGxlYXAgPSA0O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBsZWFwOiBsZWFwLFxuICAgICAgZ3k6IGd5LFxuICAgICAgbWFyY2g6IG1hcmNoLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGoyZChqeSwgam0sIGpkKTogbnVtYmVyIHtcbiAgICBsZXQgciA9IHRoaXMuamFsQ2FsKGp5LCB0cnVlKTtcbiAgICByZXR1cm4gdGhpcy5nMmQoci5neSwgMywgci5tYXJjaCkgKyAoam0gLSAxKSAqIDMxIC0gdGhpcy5kaXYoam0sIDcpICogKGptIC0gNykgKyBqZCAtIDE7XG4gIH1cblxuICBwcml2YXRlIGQyaihqZG46IG51bWJlcikge1xuICAgIGxldCBneSA9IHRoaXMuZDJnKGpkbikuZ3ksIC8vIENhbGN1bGF0ZSBHcmVnb3JpYW4geWVhciAoZ3kpLlxuICAgICAgankgPSBneSAtIDYyMSxcbiAgICAgIHIgPSB0aGlzLmphbENhbChqeSwgZmFsc2UpLFxuICAgICAgamRuMWYgPSB0aGlzLmcyZChneSwgMywgci5tYXJjaCksXG4gICAgICBqZCxcbiAgICAgIGptLFxuICAgICAgaztcblxuICAgIC8vIEZpbmQgbnVtYmVyIG9mIGRheXMgdGhhdCBwYXNzZWQgc2luY2UgMSBGYXJ2YXJkaW4uXG4gICAgayA9IGpkbiAtIGpkbjFmO1xuICAgIGlmIChrID49IDApIHtcbiAgICAgIGlmIChrIDw9IDE4NSkge1xuICAgICAgICAvLyBUaGUgZmlyc3QgNiBtb250aHMuXG4gICAgICAgIGptID0gMSArIHRoaXMuZGl2KGssIDMxKTtcbiAgICAgICAgamQgPSB0aGlzLm1vZChrLCAzMSkgKyAxO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGp5OiBqeSxcbiAgICAgICAgICBqbTogam0sXG4gICAgICAgICAgamQ6IGpkLFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gVGhlIHJlbWFpbmluZyBtb250aHMuXG4gICAgICAgIGsgLT0gMTg2O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBQcmV2aW91cyBTb2xhckhpanJpIHllYXIuXG4gICAgICBqeSAtPSAxO1xuICAgICAgayArPSAxNzk7XG4gICAgICBpZiAoci5sZWFwID09PSAxKSBrICs9IDE7XG4gICAgfVxuICAgIGptID0gNyArIHRoaXMuZGl2KGssIDMwKTtcbiAgICBqZCA9IHRoaXMubW9kKGssIDMwKSArIDE7XG4gICAgcmV0dXJuIHtcbiAgICAgIGp5OiBqeSxcbiAgICAgIGptOiBqbSxcbiAgICAgIGpkOiBqZCxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBnMmQoZ3k6IG51bWJlciwgZ206IG51bWJlciwgZ2Q6IG51bWJlcik6IG51bWJlciB7XG4gICAgbGV0IGQgPVxuICAgICAgdGhpcy5kaXYoKGd5ICsgdGhpcy5kaXYoZ20gLSA4LCA2KSArIDEwMDEwMCkgKiAxNDYxLCA0KSArXG4gICAgICB0aGlzLmRpdigxNTMgKiB0aGlzLm1vZChnbSArIDksIDEyKSArIDIsIDUpICtcbiAgICAgIGdkIC1cbiAgICAgIDM0ODQwNDA4O1xuICAgIGQgPSBkIC0gdGhpcy5kaXYodGhpcy5kaXYoZ3kgKyAxMDAxMDAgKyB0aGlzLmRpdihnbSAtIDgsIDYpLCAxMDApICogMywgNCkgKyA3NTI7XG4gICAgcmV0dXJuIGQ7XG4gIH1cblxuICBwcml2YXRlIGQyZyhqZG46IG51bWJlcikge1xuICAgIGxldCBqLCBpLCBnZCwgZ20sIGd5O1xuICAgIGogPSA0ICogamRuICsgMTM5MzYxNjMxO1xuICAgIGogPSBqICsgdGhpcy5kaXYodGhpcy5kaXYoNCAqIGpkbiArIDE4MzE4NzcyMCwgMTQ2MDk3KSAqIDMsIDQpICogNCAtIDM5MDg7XG4gICAgaSA9IHRoaXMuZGl2KHRoaXMubW9kKGosIDE0NjEpLCA0KSAqIDUgKyAzMDg7XG4gICAgZ2QgPSB0aGlzLmRpdih0aGlzLm1vZChpLCAxNTMpLCA1KSArIDE7XG4gICAgZ20gPSB0aGlzLm1vZCh0aGlzLmRpdihpLCAxNTMpLCAxMikgKyAxO1xuICAgIGd5ID0gdGhpcy5kaXYoaiwgMTQ2MSkgLSAxMDAxMDAgKyB0aGlzLmRpdig4IC0gZ20sIDYpO1xuICAgIHJldHVybiB7XG4gICAgICBneTogZ3ksXG4gICAgICBnbTogZ20sXG4gICAgICBnZDogZ2QsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgU29sYXJIaWpyaVdlZWsoank6IG51bWJlciwgam06IG51bWJlciwgamQ6IG51bWJlcik6IHsgc2F0dXJkYXk6IGFueTsgZnJpZGF5OiBhbnkgfSB7XG4gICAgbGV0IGRheU9mV2VlayA9IHRoaXMuU29sYXJIaWpyaVRvRGF0ZU9iamVjdChqeSwgam0sIGpkLCAwLCAwLCAwLCAwKS5nZXREYXkoKTtcblxuICAgIGxldCBzdGFydERheURpZmZlcmVuY2UgPSBkYXlPZldlZWsgPT0gNiA/IDAgOiAtKGRheU9mV2VlayArIDEpO1xuICAgIGxldCBlbmREYXlEaWZmZXJlbmNlID0gNiArIHN0YXJ0RGF5RGlmZmVyZW5jZTtcblxuICAgIHJldHVybiB7XG4gICAgICBzYXR1cmRheTogdGhpcy5kMmoodGhpcy5qMmQoanksIGptLCBqZCArIHN0YXJ0RGF5RGlmZmVyZW5jZSkpLFxuICAgICAgZnJpZGF5OiB0aGlzLmQyaih0aGlzLmoyZChqeSwgam0sIGpkICsgZW5kRGF5RGlmZmVyZW5jZSkpLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIFNvbGFySGlqcmlUb0RhdGVPYmplY3QoXG4gICAgank6IG51bWJlcixcbiAgICBqbTogbnVtYmVyLFxuICAgIGpkOiBudW1iZXIsXG4gICAgaDogbnVtYmVyID0gMCxcbiAgICBtOiBudW1iZXIgPSAwLFxuICAgIHM6IG51bWJlciA9IDAsXG4gICAgbXM6IG51bWJlciA9IDAsXG4gICkge1xuICAgIGxldCBncmVnb3JpYW5DYWxlbmRlckRhdGUgPSB0aGlzLnRvR3JlZ29yaWFuKGp5LCBqbSwgamQpO1xuXG4gICAgcmV0dXJuIG5ldyBEYXRlKFxuICAgICAgZ3JlZ29yaWFuQ2FsZW5kZXJEYXRlLmdldEZ1bGxZZWFyKCksXG4gICAgICBncmVnb3JpYW5DYWxlbmRlckRhdGUuZ2V0TW9udGgoKSAtIDEsXG4gICAgICBncmVnb3JpYW5DYWxlbmRlckRhdGUuZ2V0RGF0ZSgpLFxuICAgICAgaCB8fCAwLFxuICAgICAgbSB8fCAwLFxuICAgICAgcyB8fCAwLFxuICAgICAgbXMgfHwgMCxcbiAgICApO1xuICB9XG5cbiAgLypcbiAgICBVdGlsaXR5IGhlbHBlciBmdW5jdGlvbnMuXG4gICovXG5cbiAgcHJpdmF0ZSBkaXYoYTogbnVtYmVyLCBiOiBudW1iZXIpIHtcbiAgICByZXR1cm4gfn4oYSAvIGIpO1xuICB9XG5cbiAgcHJpdmF0ZSBtb2QoYTogbnVtYmVyLCBiOiBudW1iZXIpIHtcbiAgICByZXR1cm4gYSAtIH5+KGEgLyBiKSAqIGI7XG4gIH1cbn1cbiJdfQ==","import { AX_GLOBAL_CONFIG } from '@acorex/core/config';\nimport { InjectionToken, inject } from '@angular/core';\nimport { set } from 'lodash-es';\nimport { AXGregorianCalendar } from './gregorian.calendar';\nimport { AXSolarHijriCalendar } from './solar-hijri.calendar';\nexport const AX_DATETIME_CONFIG = new InjectionToken('AX_DATETIME_CONFIG', {\n providedIn: 'root',\n factory: () => {\n const global = inject(AX_GLOBAL_CONFIG);\n set(global, 'dateTime', AX_DATETIME_CONFIG);\n return AXDateTimeDefaultConfig;\n },\n});\nexport const AXDateTimeDefaultConfig = {\n calendar: 'gregorian',\n calendars: {\n gregorian: new AXGregorianCalendar({\n weekdays: [0, 1, 2, 3, 4, 5, 6],\n weekend: [5, 6],\n }),\n 'solar-hijri': new AXSolarHijriCalendar({\n weekdays: [6, 0, 1, 2, 3, 4, 5],\n weekend: [6],\n }),\n },\n};\nexport function dateTimeConfig(config = {}) {\n const result = {\n ...AXDateTimeDefaultConfig,\n ...config,\n };\n return result;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZVRpbWUuY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9kYXRlLXRpbWUvc3JjL2xpYi9kYXRlVGltZS5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVoQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQVM5RCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLGNBQWMsQ0FBbUIsb0JBQW9CLEVBQUU7SUFDM0YsVUFBVSxFQUFFLE1BQU07SUFDbEIsT0FBTyxFQUFFLEdBQUcsRUFBRTtRQUNaLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3hDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLGtCQUFrQixDQUFDLENBQUM7UUFDNUMsT0FBTyx1QkFBdUIsQ0FBQztJQUNqQyxDQUFDO0NBQ0YsQ0FBQyxDQUFDO0FBRUgsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQXFCO0lBQ3ZELFFBQVEsRUFBRSxXQUFXO0lBQ3JCLFNBQVMsRUFBRTtRQUNULFNBQVMsRUFBRSxJQUFJLG1CQUFtQixDQUFDO1lBQ2pDLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUMvQixPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ2hCLENBQUM7UUFDRixhQUFhLEVBQUUsSUFBSSxvQkFBb0IsQ0FBQztZQUN0QyxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDL0IsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ2IsQ0FBQztLQUNIO0NBQ0YsQ0FBQztBQUlGLE1BQU0sVUFBVSxjQUFjLENBQUMsU0FBZ0MsRUFBRTtJQUMvRCxNQUFNLE1BQU0sR0FBRztRQUNiLEdBQUcsdUJBQXVCO1FBQzFCLEdBQUcsTUFBTTtLQUNWLENBQUM7SUFDRixPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhfR0xPQkFMX0NPTkZJRyB9IGZyb20gJ0BhY29yZXgvY29yZS9jb25maWcnO1xuaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4sIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgc2V0IH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEFYQ2FsZW5kYXIgfSBmcm9tICcuL2RhdGV0aW1lLnR5cGVzJztcbmltcG9ydCB7IEFYR3JlZ29yaWFuQ2FsZW5kYXIgfSBmcm9tICcuL2dyZWdvcmlhbi5jYWxlbmRhcic7XG5pbXBvcnQgeyBBWFNvbGFySGlqcmlDYWxlbmRhciB9IGZyb20gJy4vc29sYXItaGlqcmkuY2FsZW5kYXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFYRGF0ZVRpbWVDb25maWcge1xuICBjYWxlbmRhcjogc3RyaW5nO1xuICBjYWxlbmRhcnM6IHtcbiAgICBba2V5OiBzdHJpbmddOiBBWENhbGVuZGFyO1xuICB9O1xufVxuXG5leHBvcnQgY29uc3QgQVhfREFURVRJTUVfQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuPEFYRGF0ZVRpbWVDb25maWc+KCdBWF9EQVRFVElNRV9DT05GSUcnLCB7XG4gIHByb3ZpZGVkSW46ICdyb290JyxcbiAgZmFjdG9yeTogKCkgPT4ge1xuICAgIGNvbnN0IGdsb2JhbCA9IGluamVjdChBWF9HTE9CQUxfQ09ORklHKTtcbiAgICBzZXQoZ2xvYmFsLCAnZGF0ZVRpbWUnLCBBWF9EQVRFVElNRV9DT05GSUcpO1xuICAgIHJldHVybiBBWERhdGVUaW1lRGVmYXVsdENvbmZpZztcbiAgfSxcbn0pO1xuXG5leHBvcnQgY29uc3QgQVhEYXRlVGltZURlZmF1bHRDb25maWc6IEFYRGF0ZVRpbWVDb25maWcgPSB7XG4gIGNhbGVuZGFyOiAnZ3JlZ29yaWFuJyxcbiAgY2FsZW5kYXJzOiB7XG4gICAgZ3JlZ29yaWFuOiBuZXcgQVhHcmVnb3JpYW5DYWxlbmRhcih7XG4gICAgICB3ZWVrZGF5czogWzAsIDEsIDIsIDMsIDQsIDUsIDZdLFxuICAgICAgd2Vla2VuZDogWzUsIDZdLFxuICAgIH0pLFxuICAgICdzb2xhci1oaWpyaSc6IG5ldyBBWFNvbGFySGlqcmlDYWxlbmRhcih7XG4gICAgICB3ZWVrZGF5czogWzYsIDAsIDEsIDIsIDMsIDQsIDVdLFxuICAgICAgd2Vla2VuZDogWzZdLFxuICAgIH0pLFxuICB9LFxufTtcblxuZXhwb3J0IHR5cGUgUGFydGlhbERhdGVUaW1lQ29uZmlnID0gUGFydGlhbDxBWERhdGVUaW1lQ29uZmlnPjtcblxuZXhwb3J0IGZ1bmN0aW9uIGRhdGVUaW1lQ29uZmlnKGNvbmZpZzogUGFydGlhbERhdGVUaW1lQ29uZmlnID0ge30pOiBBWERhdGVUaW1lQ29uZmlnIHtcbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgIC4uLkFYRGF0ZVRpbWVEZWZhdWx0Q29uZmlnLFxuICAgIC4uLmNvbmZpZyxcbiAgfTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cbiJdfQ==","import { InjectionToken } from '@angular/core';\nexport class AXHolidaysLoaderDefault {\n getHolidays(options) {\n return Promise.resolve([]);\n }\n}\nexport const AX_DATETIME_HOLIDAYS_LOADER = new InjectionToken('AX_DATETIME_HOLIDAYS_LOADER', {\n providedIn: 'root',\n factory: () => {\n return new AXHolidaysLoaderDefault();\n },\n});\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9saWRheXMubG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9kYXRlLXRpbWUvc3JjL2xpYi9ob2xpZGF5cy5sb2FkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQWtCL0MsTUFBTSxPQUFPLHVCQUF1QjtJQUNsQyxXQUFXLENBQUMsT0FBNkM7UUFDdkQsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzdCLENBQUM7Q0FDRjtBQUVELE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFHLElBQUksY0FBYyxDQUFtQiw2QkFBNkIsRUFBRTtJQUM3RyxVQUFVLEVBQUUsTUFBTTtJQUNsQixPQUFPLEVBQUUsR0FBRyxFQUFFO1FBQ1osT0FBTyxJQUFJLHVCQUF1QixFQUFFLENBQUM7SUFDdkMsQ0FBQztDQUNGLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhIb2xpZGF5RGF0ZSB7XG4gIGRhdGU6IERhdGU7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBba2V5OiBzdHJpbmddOiB1bmtub3duO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYSG9saWRheXNMb2FkZXJPcHRpb25zIHtcbiAgY2FsZW5kYXI/OiBzdHJpbmc7XG4gIHJhbmdlPzogeyBzdGFydDogRGF0ZTsgZW5kOiBEYXRlIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhIb2xpZGF5c0xvYWRlciB7XG4gIGdldEhvbGlkYXlzKG9wdGlvbnM/OiBBWEhvbGlkYXlzTG9hZGVyT3B0aW9ucyk6IFByb21pc2U8QVhIb2xpZGF5RGF0ZVtdPjtcbn1cblxuZXhwb3J0IGNsYXNzIEFYSG9saWRheXNMb2FkZXJEZWZhdWx0IGltcGxlbWVudHMgQVhIb2xpZGF5c0xvYWRlciB7XG4gIGdldEhvbGlkYXlzKG9wdGlvbnM/OiBBWEhvbGlkYXlzTG9hZGVyT3B0aW9ucyB8IHVuZGVmaW5lZCk6IFByb21pc2U8QVhIb2xpZGF5RGF0ZVtdPiB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShbXSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IEFYX0RBVEVUSU1FX0hPTElEQVlTX0xPQURFUiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxBWEhvbGlkYXlzTG9hZGVyPignQVhfREFURVRJTUVfSE9MSURBWVNfTE9BREVSJywge1xuICBwcm92aWRlZEluOiAncm9vdCcsXG4gIGZhY3Rvcnk6ICgpID0+IHtcbiAgICByZXR1cm4gbmV3IEFYSG9saWRheXNMb2FkZXJEZWZhdWx0KCk7XG4gIH0sXG59KTtcbiJdfQ==","import { AXEventService } from '@acorex/core/events';\nimport { AXFormatService } from '@acorex/core/format';\nimport { AXLocaleEvents, AXLocaleService } from '@acorex/core/locale';\nimport { Injectable, inject } from '@angular/core';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { AX_DATETIME_CONFIG } from './dateTime.config';\nimport { AXDateTime } from './datetime.types';\nimport { AX_DATETIME_HOLIDAYS_LOADER } from './holidays.loader';\nimport * as i0 from \"@angular/core\";\nexport class AXCalendarService {\n get calendar() {\n return this.getActiveCalendar();\n }\n getDefaultCalendar() {\n return this.config.calendars[this.config.calendar];\n }\n getActiveCalendar() {\n return this.activeCalendar.getValue();\n }\n setActiveCalendar(name) {\n if (name != this.calendar?.name()) {\n const calendar = this.resolveCalendar(name);\n this.activeCalendar.next(calendar);\n this.eventService.emitEvent({\n type: AXLocaleEvents.AXCalendarChanged,\n payload: this.getActiveCalendar(),\n });\n }\n }\n get holidays() {\n return this._holidays;\n }\n constructor() {\n this.config = inject(AX_DATETIME_CONFIG);\n this._holidaysLoader = inject(AX_DATETIME_HOLIDAYS_LOADER);\n this.eventService = inject(AXEventService);\n this.formatService = inject(AXFormatService);\n this.localeService = inject(AXLocaleService);\n this.activeCalendar = new BehaviorSubject(this.getDefaultCalendar());\n this.calendarChanges$ = this.activeCalendar.asObservable();\n this.onHolidaysChanged = new Subject();\n this._holidays = [];\n this.loadHolidays();\n //\n this.localeService.profileChanged$.subscribe((locale) => {\n if (locale?.calendar?.system) {\n this.setActiveCalendar(locale.calendar.system);\n }\n });\n }\n loadHolidays(options) {\n return this._holidaysLoader.getHolidays(options).then((value) => {\n this._holidays = value;\n this.onHolidaysChanged.next(this._holidays);\n });\n }\n isValidDate(value) {\n try {\n if (!value) {\n return false;\n }\n //\n if (value instanceof AXDateTime) {\n return true;\n }\n // Check if it's a Date object\n if (value instanceof Date) {\n return !isNaN(value.getTime());\n }\n // Check if it's a valid date string\n if (typeof value === 'string') {\n const parsed = new Date(value);\n return !isNaN(parsed.getTime());\n }\n // Check if it's an AXDateValue object\n if (typeof value === 'object') {\n return !!(value.year &&\n typeof value.month === 'number' &&\n value.month >= 1 &&\n value.month <= 12 &&\n value.year > 0);\n }\n return false;\n }\n catch (error) {\n return false;\n }\n }\n create(value, calendarName) {\n try {\n const calendar = calendarName ? this.resolveCalendar(calendarName) : this.calendar;\n if (!this.isValidDate(value)) {\n throw new Error(`Invalid Date value: ${value}`);\n }\n if (value instanceof AXDateTime) {\n return value;\n }\n else if (typeof value === 'string') {\n return new AXDateTime(new Date(value), calendar);\n }\n else if (value instanceof Date) {\n return new AXDateTime(value, calendar);\n }\n else if (value?.year && value?.month) {\n return calendar.create(value);\n }\n return this.now();\n }\n catch (error) {\n console.error('Error creating date:', error);\n throw new Error(`Invalid Date value: ${value}`);\n }\n }\n now(calendarName) {\n const calendar = calendarName ? this.resolveCalendar(calendarName) : this.calendar;\n return new AXDateTime(new Date(), calendar);\n }\n resolveCalendar(name) {\n const c = this.config.calendars[name];\n if (!c) {\n return this.calendar;\n }\n return c;\n }\n convert(value, calendarName) {\n const isISOString = (str) => {\n if (!/\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(.\\d{3}Z)?/.test(str))\n return false;\n const d = new Date(str);\n return d instanceof Date && !isNaN(d.getTime()); // valid date\n };\n //\n const calendar = calendarName ? this.resolveCalendar(calendarName) : this.calendar;\n if (typeof value === 'string') {\n if (isISOString(value))\n return new AXDateTime(new Date(value), calendar);\n else\n return calendar.parse(value);\n }\n const date = value instanceof AXDateTime ? value.date : value;\n return new AXDateTime(date, calendar);\n }\n format(value, format, options) {\n const calendar = options?.calendar ? this.resolveCalendar(options.calendar) : this.calendar;\n return this.formatService.format(value, 'datetime', {\n format: format,\n calendar: calendar.name(),\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXCalendarService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXCalendarService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXCalendarService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvZGF0ZS10aW1lL3NyYy9saWIvY2FsZW5kYXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxjQUFjLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEQsT0FBTyxFQUFvQixrQkFBa0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3pFLE9BQU8sRUFBYyxVQUFVLEVBQXFDLE1BQU0sa0JBQWtCLENBQUM7QUFFN0YsT0FBTyxFQUEwQywyQkFBMkIsRUFBRSxNQUFNLG1CQUFtQixDQUFDOztBQUd4RyxNQUFNLE9BQU8saUJBQWlCO0lBTzVCLElBQVcsUUFBUTtRQUNqQixPQUFPLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFLTSxrQkFBa0I7UUFDdkIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFTSxpQkFBaUI7UUFDdEIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFTSxpQkFBaUIsQ0FBQyxJQUFZO1FBQ25DLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUNsQyxNQUFNLFFBQVEsR0FB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QyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ25GLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDOUIsSUFBSSxXQUFXLENBQUMsS0FBSyxDQUFDO2dCQUFFLE9BQU8sSUFBSSxVQUFVLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7O2dCQUNwRSxPQUFPLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDcEMsQ0FBQztRQUNELE1BQU0sSUFBSSxHQUFHLEtBQUssWUFBWSxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFFLEtBQWMsQ0FBQztRQUN4RSxPQUFPLElBQUksVUFBVSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRU0sTUFBTSxDQUFDLEtBQTJCLEVBQUUsTUFBYyxFQUFFLE9BQW9DO1FBQzdGLE1BQU0sUUFBUSxHQUFHLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBRTVGLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRTtZQUNsRCxNQUFNLEVBQUUsTUFBTTtZQUNkLFFBQVEsRUFBRSxRQUFRLENBQUMsSUFBSSxFQUFFO1NBQzFCLENBQUMsQ0FBQztJQUNMLENBQUM7OEdBMUpVLGlCQUFpQjtrSEFBakIsaUJBQWlCLGNBREosTUFBTTs7MkZBQ25CLGlCQUFpQjtrQkFEN0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWEV2ZW50U2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29yZS9ldmVudHMnO1xuaW1wb3J0IHsgQVhGb3JtYXRTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb3JlL2Zvcm1hdCc7XG5pbXBvcnQgeyBBWExvY2FsZUV2ZW50cywgQVhMb2NhbGVTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb3JlL2xvY2FsZSc7XG5pbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQVhEYXRlVGltZUNvbmZpZywgQVhfREFURVRJTUVfQ09ORklHIH0gZnJvbSAnLi9kYXRlVGltZS5jb25maWcnO1xuaW1wb3J0IHsgQVhDYWxlbmRhciwgQVhEYXRlVGltZSwgQVhEYXRlVmFsdWUsIEFYVmFsaWREYXRlVGltZVZhbHVlIH0gZnJvbSAnLi9kYXRldGltZS50eXBlcyc7XG5pbXBvcnQgeyBBWERhdGVUaW1lRm9ybWF0dGVyT3B0aW9ucyB9IGZyb20gJy4vZm9ybWF0dGVycy9kYXRldGltZS5mb3JtYXR0ZXInO1xuaW1wb3J0IHsgQVhIb2xpZGF5RGF0ZSwgQVhIb2xpZGF5c0xvYWRlck9wdGlvbnMsIEFYX0RBVEVUSU1FX0hPTElEQVlTX0xPQURFUiB9IGZyb20gJy4vaG9saWRheXMubG9hZGVyJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBBWENhbGVuZGFyU2VydmljZSB7XG4gIHByaXZhdGUgY29uZmlnOiBBWERhdGVUaW1lQ29uZmlnID0gaW5qZWN0KEFYX0RBVEVUSU1FX0NPTkZJRyk7XG4gIHByaXZhdGUgX2hvbGlkYXlzTG9hZGVyID0gaW5qZWN0KEFYX0RBVEVUSU1FX0hPTElEQVlTX0xPQURFUik7XG4gIHByaXZhdGUgZXZlbnRTZXJ2aWNlID0gaW5qZWN0KEFYRXZlbnRTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBmb3JtYXRTZXJ2aWNlID0gaW5qZWN0KEFYRm9ybWF0U2VydmljZSk7XG4gIHByaXZhdGUgbG9jYWxlU2VydmljZSA9IGluamVjdChBWExvY2FsZVNlcnZpY2UpO1xuXG4gIHB1YmxpYyBnZXQgY2FsZW5kYXIoKTogQVhDYWxlbmRhciB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0QWN0aXZlQ2FsZW5kYXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgYWN0aXZlQ2FsZW5kYXIgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEFYQ2FsZW5kYXI+KHRoaXMuZ2V0RGVmYXVsdENhbGVuZGFyKCkpO1xuICBjYWxlbmRhckNoYW5nZXMkID0gdGhpcy5hY3RpdmVDYWxlbmRhci5hc09ic2VydmFibGUoKTtcblxuICBwdWJsaWMgZ2V0RGVmYXVsdENhbGVuZGFyKCk6IEFYQ2FsZW5kYXIge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5jYWxlbmRhcnNbdGhpcy5jb25maWcuY2FsZW5kYXJdO1xuICB9XG5cbiAgcHVibGljIGdldEFjdGl2ZUNhbGVuZGFyKCk6IEFYQ2FsZW5kYXIge1xuICAgIHJldHVybiB0aGlzLmFjdGl2ZUNhbGVuZGFyLmdldFZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgc2V0QWN0aXZlQ2FsZW5kYXIobmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKG5hbWUgIT0gdGhpcy5jYWxlbmRhcj8ubmFtZSgpKSB7XG4gICAgICBjb25zdCBjYWxlbmRhciA9IHRoaXMucmVzb2x2ZUNhbGVuZGFyKG5hbWUpO1xuICAgICAgdGhpcy5hY3RpdmVDYWxlbmRhci5uZXh0KGNhbGVuZGFyKTtcbiAgICAgIHRoaXMuZXZlbnRTZXJ2aWNlLmVtaXRFdmVudCh7XG4gICAgICAgIHR5cGU6IEFYTG9jYWxlRXZlbnRzLkFYQ2FsZW5kYXJDaGFuZ2VkLFxuICAgICAgICBwYXlsb2FkOiB0aGlzLmdldEFjdGl2ZUNhbGVuZGFyKCksXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25Ib2xpZGF5c0NoYW5nZWQ6IFN1YmplY3Q8QVhIb2xpZGF5RGF0ZVtdPiA9IG5ldyBTdWJqZWN0PEFYSG9saWRheURhdGVbXT4oKTtcbiAgcHJpdmF0ZSBfaG9saWRheXM6IEFYSG9saWRheURhdGVbXSA9IFtdO1xuICBwdWJsaWMgZ2V0IGhvbGlkYXlzKCk6IEFYSG9saWRheURhdGVbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2hvbGlkYXlzO1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5sb2FkSG9saWRheXMoKTtcbiAgICAvL1xuICAgIHRoaXMubG9jYWxlU2VydmljZS5wcm9maWxlQ2hhbmdlZCQuc3Vic2NyaWJlKChsb2NhbGUpID0+IHtcbiAgICAgIGlmIChsb2NhbGU/LmNhbGVuZGFyPy5zeXN0ZW0pIHtcbiAgICAgICAgdGhpcy5zZXRBY3RpdmVDYWxlbmRhcihsb2NhbGUuY2FsZW5kYXIuc3lzdGVtKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBsb2FkSG9saWRheXMob3B0aW9ucz86IEFYSG9saWRheXNMb2FkZXJPcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMuX2hvbGlkYXlzTG9hZGVyLmdldEhvbGlkYXlzKG9wdGlvbnMpLnRoZW4oKHZhbHVlKSA9PiB7XG4gICAgICB0aGlzLl9ob2xpZGF5cyA9IHZhbHVlO1xuICAgICAgdGhpcy5vbkhvbGlkYXlzQ2hhbmdlZC5uZXh0KHRoaXMuX2hvbGlkYXlzKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBpc1ZhbGlkRGF0ZSh2YWx1ZTogYW55KTogYm9vbGVhbiB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgLy9cbiAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEFYRGF0ZVRpbWUpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICAvLyBDaGVjayBpZiBpdCdzIGEgRGF0ZSBvYmplY3RcbiAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTih2YWx1ZS5nZXRUaW1lKCkpO1xuICAgICAgfVxuICAgICAgLy8gQ2hlY2sgaWYgaXQncyBhIHZhbGlkIGRhdGUgc3RyaW5nXG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICBjb25zdCBwYXJzZWQgPSBuZXcgRGF0ZSh2YWx1ZSk7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocGFyc2VkLmdldFRpbWUoKSk7XG4gICAgICB9XG4gICAgICAvLyBDaGVjayBpZiBpdCdzIGFuIEFYRGF0ZVZhbHVlIG9iamVjdFxuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgcmV0dXJuICEhKFxuICAgICAgICAgIHZhbHVlLnllYXIgJiZcbiAgICAgICAgICB0eXBlb2YgdmFsdWUubW9udGggPT09ICdudW1iZXInICYmXG4gICAgICAgICAgdmFsdWUubW9udGggPj0gMSAmJlxuICAgICAgICAgIHZhbHVlLm1vbnRoIDw9IDEyICYmXG4gICAgICAgICAgdmFsdWUueWVhciA+IDBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBjcmVhdGUodmFsdWU6IEFYRGF0ZVZhbHVlLCBjYWxlbmRhck5hbWU/OiBzdHJpbmcpOiBBWERhdGVUaW1lO1xuICBwdWJsaWMgY3JlYXRlKHZhbHVlOiBEYXRlLCBjYWxlbmRhck5hbWU/OiBzdHJpbmcpOiBBWERhdGVUaW1lO1xuICBwdWJsaWMgY3JlYXRlKHZhbHVlOiBzdHJpbmcsIGNhbGVuZGFyTmFtZT86IHN0cmluZyk6IEFYRGF0ZVRpbWU7XG4gIHB1YmxpYyBjcmVhdGUodmFsdWU6IEFYRGF0ZVRpbWUpOiBBWERhdGVUaW1lO1xuICBwdWJsaWMgY3JlYXRlKHZhbHVlOiBBWERhdGVWYWx1ZSB8IERhdGUgfCBzdHJpbmcgfCBBWERhdGVUaW1lLCBjYWxlbmRhck5hbWU/OiBzdHJpbmcpOiBBWERhdGVUaW1lIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgY2FsZW5kYXIgPSBjYWxlbmRhck5hbWUgPyB0aGlzLnJlc29sdmVDYWxlbmRhcihjYWxlbmRhck5hbWUpIDogdGhpcy5jYWxlbmRhcjtcblxuICAgICAgaWYgKCF0aGlzLmlzVmFsaWREYXRlKHZhbHVlKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgRGF0ZSB2YWx1ZTogJHt2YWx1ZX1gKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQVhEYXRlVGltZSkge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBBWERhdGVUaW1lKG5ldyBEYXRlKHZhbHVlKSwgY2FsZW5kYXIpO1xuICAgICAgfSBlbHNlIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBBWERhdGVUaW1lKHZhbHVlLCBjYWxlbmRhcik7XG4gICAgICB9IGVsc2UgaWYgKHZhbHVlPy55ZWFyICYmIHZhbHVlPy5tb250aCkge1xuICAgICAgICByZXR1cm4gY2FsZW5kYXIuY3JlYXRlKHZhbHVlIGFzIEFYRGF0ZVZhbHVlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLm5vdygpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBjcmVhdGluZyBkYXRlOicsIGVycm9yKTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBEYXRlIHZhbHVlOiAke3ZhbHVlfWApO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBub3coY2FsZW5kYXJOYW1lPzogc3RyaW5nKTogQVhEYXRlVGltZSB7XG4gICAgY29uc3QgY2FsZW5kYXIgPSBjYWxlbmRhck5hbWUgPyB0aGlzLnJlc29sdmVDYWxlbmRhcihjYWxlbmRhck5hbWUpIDogdGhpcy5jYWxlbmRhcjtcbiAgICByZXR1cm4gbmV3IEFYRGF0ZVRpbWUobmV3IERhdGUoKSwgY2FsZW5kYXIpO1xuICB9XG5cbiAgcHVibGljIHJlc29sdmVDYWxlbmRhcihuYW1lOiBzdHJpbmcpOiBBWENhbGVuZGFyIHtcbiAgICBjb25zdCBjID0gdGhpcy5jb25maWcuY2FsZW5kYXJzW25hbWVdO1xuICAgIGlmICghYykge1xuICAgICAgcmV0dXJuIHRoaXMuY2FsZW5kYXI7XG4gICAgfVxuICAgIHJldHVybiBjO1xuICB9XG5cbiAgcHVibGljIGNvbnZlcnQodmFsdWU6IEFYVmFsaWREYXRlVGltZVZhbHVlLCBjYWxlbmRhck5hbWU/OiBzdHJpbmcpOiBBWERhdGVUaW1lIHtcbiAgICBjb25zdCBpc0lTT1N0cmluZyA9IChzdHIpID0+IHtcbiAgICAgIGlmICghL1xcZHs0fS1cXGR7Mn0tXFxkezJ9VFxcZHsyfTpcXGR7Mn06XFxkezJ9KC5cXGR7M31aKT8vLnRlc3Qoc3RyKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgY29uc3QgZCA9IG5ldyBEYXRlKHN0cik7XG4gICAgICByZXR1cm4gZCBpbnN0YW5jZW9mIERhdGUgJiYgIWlzTmFOKGQuZ2V0VGltZSgpKTsgLy8gdmFsaWQgZGF0ZVxuICAgIH07XG4gICAgLy9cbiAgICBjb25zdCBjYWxlbmRhciA9IGNhbGVuZGFyTmFtZSA/IHRoaXMucmVzb2x2ZUNhbGVuZGFyKGNhbGVuZGFyTmFtZSkgOiB0aGlzLmNhbGVuZGFyO1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICBpZiAoaXNJU09TdHJpbmcodmFsdWUpKSByZXR1cm4gbmV3IEFYRGF0ZVRpbWUobmV3IERhdGUodmFsdWUpLCBjYWxlbmRhcik7XG4gICAgICBlbHNlIHJldHVybiBjYWxlbmRhci5wYXJzZSh2YWx1ZSk7XG4gICAgfVxuICAgIGNvbnN0IGRhdGUgPSB2YWx1ZSBpbnN0YW5jZW9mIEFYRGF0ZVRpbWUgPyB2YWx1ZS5kYXRlIDogKHZhbHVlIGFzIERhdGUpO1xuICAgIHJldHVybiBuZXcgQVhEYXRlVGltZShkYXRlLCBjYWxlbmRhcik7XG4gIH1cblxuICBwdWJsaWMgZm9ybWF0KHZhbHVlOiBBWFZhbGlkRGF0ZVRpbWVWYWx1ZSwgZm9ybWF0OiBzdHJpbmcsIG9wdGlvbnM/OiBBWERhdGVUaW1lRm9ybWF0dGVyT3B0aW9ucyk6IHN0cmluZyB7XG4gICAgY29uc3QgY2FsZW5kYXIgPSBvcHRpb25zPy5jYWxlbmRhciA/IHRoaXMucmVzb2x2ZUNhbGVuZGFyKG9wdGlvbnMuY2FsZW5kYXIpIDogdGhpcy5jYWxlbmRhcjtcblxuICAgIHJldHVybiB0aGlzLmZvcm1hdFNlcnZpY2UuZm9ybWF0KHZhbHVlLCAnZGF0ZXRpbWUnLCB7XG4gICAgICBmb3JtYXQ6IGZvcm1hdCxcbiAgICAgIGNhbGVuZGFyOiBjYWxlbmRhci5uYW1lKCksXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==","import { AXFormatService } from '@acorex/core/format';\nimport { Pipe, inject } from '@angular/core';\nimport { AXCalendarService } from './calendar.service';\nimport * as i0 from \"@angular/core\";\n/**\n * @deprecated The pipe should not be used, use format instead\n */\nexport class AXDateTimePipe {\n constructor() {\n this._calendarService = inject(AXCalendarService);\n this.formatService = inject(AXFormatService);\n }\n transform(value, format, calendarName) {\n if (value == null) {\n return '';\n }\n let calendar = this._calendarService.calendar;\n if (calendarName) {\n calendar = this._calendarService.resolveCalendar(calendarName);\n }\n const val = this._calendarService.convert(value, calendar.name());\n return this.formatService.format(val, 'datetime', format);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXDateTimePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.0.4\", ngImport: i0, type: AXDateTimePipe, isStandalone: true, name: \"axDate\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXDateTimePipe, decorators: [{\n type: Pipe,\n args: [{ name: 'axDate' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvZGF0ZS10aW1lL3NyYy9saWIvZGF0ZXRpbWUucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDOztBQUd2RDs7R0FFRztBQUVILE1BQU0sT0FBTyxjQUFjO0lBRDNCO1FBRVUscUJBQWdCLEdBQXNCLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ2hFLGtCQUFhLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0tBYWpEO0lBWEMsU0FBUyxDQUFDLEtBQWlDLEVBQUUsTUFBZSxFQUFFLFlBQXFCO1FBQ2pGLElBQUksS0FBSyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ2xCLE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQztRQUNELElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUM7UUFDOUMsSUFBSSxZQUFZLEVBQUUsQ0FBQztZQUNqQixRQUFRLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNqRSxDQUFDO1FBQ0QsTUFBTSxHQUFHLEdBQWUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDOUUsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsVUFBVSxFQUFFLE1BQWEsQ0FBQyxDQUFDO0lBQ25FLENBQUM7OEdBZFUsY0FBYzs0R0FBZCxjQUFjOzsyRkFBZCxjQUFjO2tCQUQxQixJQUFJO21CQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYRm9ybWF0U2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29yZS9mb3JtYXQnO1xuaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWENhbGVuZGFyU2VydmljZSB9IGZyb20gJy4vY2FsZW5kYXIuc2VydmljZSc7XG5pbXBvcnQgeyBBWERhdGVUaW1lIH0gZnJvbSAnLi9kYXRldGltZS50eXBlcyc7XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgVGhlIHBpcGUgc2hvdWxkIG5vdCBiZSB1c2VkLCB1c2UgZm9ybWF0IGluc3RlYWRcbiAqL1xuQFBpcGUoeyBuYW1lOiAnYXhEYXRlJyB9KVxuZXhwb3J0IGNsYXNzIEFYRGF0ZVRpbWVQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHByaXZhdGUgX2NhbGVuZGFyU2VydmljZTogQVhDYWxlbmRhclNlcnZpY2UgPSBpbmplY3QoQVhDYWxlbmRhclNlcnZpY2UpO1xuICBwcml2YXRlIGZvcm1hdFNlcnZpY2UgPSBpbmplY3QoQVhGb3JtYXRTZXJ2aWNlKTtcblxuICB0cmFuc2Zvcm0odmFsdWU6IERhdGUgfCBBWERhdGVUaW1lIHwgc3RyaW5nLCBmb3JtYXQ/OiBzdHJpbmcsIGNhbGVuZGFyTmFtZT86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgbGV0IGNhbGVuZGFyID0gdGhpcy5fY2FsZW5kYXJTZXJ2aWNlLmNhbGVuZGFyO1xuICAgIGlmIChjYWxlbmRhck5hbWUpIHtcbiAgICAgIGNhbGVuZGFyID0gdGhpcy5fY2FsZW5kYXJTZXJ2aWNlLnJlc29sdmVDYWxlbmRhcihjYWxlbmRhck5hbWUpO1xuICAgIH1cbiAgICBjb25zdCB2YWw6IEFYRGF0ZVRpbWUgPSB0aGlzLl9jYWxlbmRhclNlcnZpY2UuY29udmVydCh2YWx1ZSwgY2FsZW5kYXIubmFtZSgpKTtcbiAgICByZXR1cm4gdGhpcy5mb3JtYXRTZXJ2aWNlLmZvcm1hdCh2YWwsICdkYXRldGltZScsIGZvcm1hdCBhcyBhbnkpO1xuICB9XG59XG4iXX0=","import { AXLocaleService } from '@acorex/core/locale';\nimport { inject, Injectable } from '@angular/core';\nimport { isNil } from 'lodash-es';\nimport { AXCalendarService } from '../calendar.service';\nimport * as i0 from \"@angular/core\";\nexport class AXDateFormatter {\n constructor() {\n this.calendarService = inject(AXCalendarService);\n this.localeService = inject(AXLocaleService);\n }\n get name() {\n return 'date';\n }\n format(value, options) {\n if (isNil(value)) {\n return '';\n }\n //\n if (!this.calendarService.isValidDate(value))\n return 'Invalid date';\n //\n const effectiveOptions = typeof options == 'object'\n ? {\n format: options.format ?? 'short',\n locale: options.locale,\n calendar: options.calendar ?? this.calendarService.calendar.name(),\n }\n : {\n format: options,\n calendar: this.calendarService.calendar.name(),\n };\n //\n const formats = this.localeService.activeProfile().formats;\n const map = {\n short: formats.date.short,\n medium: formats.date.medium,\n long: formats.date.long,\n full: formats.date.full,\n };\n const format = map[effectiveOptions.format] ?? effectiveOptions.format ?? map['short'];\n //\n return this.calendarService\n .convert(value, effectiveOptions.calendar)\n .format(format, { locale: effectiveOptions.locale });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXDateFormatter, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXDateFormatter }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXDateFormatter, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS5mb3JtYXR0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL2RhdGUtdGltZS9zcmMvbGliL2Zvcm1hdHRlcnMvZGF0ZS5mb3JtYXR0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbEMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7O0FBS3hELE1BQU0sT0FBTyxlQUFlO0lBRDVCO1FBRVUsb0JBQWUsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUM1QyxrQkFBYSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztLQXNDakQ7SUFwQ0MsSUFBSSxJQUFJO1FBQ04sT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUEyQixFQUFFLE9BQTZDO1FBQy9FLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDakIsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBQ0QsRUFBRTtRQUNGLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7WUFBRSxPQUFPLGNBQWMsQ0FBQztRQUNwRSxFQUFFO1FBQ0YsTUFBTSxnQkFBZ0IsR0FDcEIsT0FBTyxPQUFPLElBQUksUUFBUTtZQUN4QixDQUFDLENBQUM7Z0JBQ0UsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNLElBQUksT0FBTztnQkFDakMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNO2dCQUN0QixRQUFRLEVBQUUsT0FBTyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUU7YUFDbkU7WUFDSCxDQUFDLENBQUM7Z0JBQ0UsTUFBTSxFQUFFLE9BQU87Z0JBQ2YsUUFBUSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRTthQUMvQyxDQUFDO1FBQ1IsRUFBRTtRQUNGLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxFQUFFLENBQUMsT0FBTyxDQUFDO1FBQzNELE1BQU0sR0FBRyxHQUFHO1lBQ1YsS0FBSyxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSztZQUN6QixNQUFNLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNO1lBQzNCLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUk7WUFDdkIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSTtTQUN4QixDQUFDO1FBQ0YsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLGdCQUFnQixDQUFDLE1BQTBCLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQyxNQUFNLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNHLEVBQUU7UUFDRixPQUFPLElBQUksQ0FBQyxlQUFlO2FBQ3hCLE9BQU8sQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLENBQUMsUUFBa0IsQ0FBQzthQUNuRCxNQUFNLENBQUMsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDekQsQ0FBQzs4R0F2Q1UsZUFBZTtrSEFBZixlQUFlOzsyRkFBZixlQUFlO2tCQUQzQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhGb3JtYXR0ZXIgfSBmcm9tICdAYWNvcmV4L2NvcmUvZm9ybWF0JztcbmltcG9ydCB7IEFYTG9jYWxlU2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29yZS9sb2NhbGUnO1xuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpc05pbCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBBWENhbGVuZGFyU2VydmljZSB9IGZyb20gJy4uL2NhbGVuZGFyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQVhWYWxpZERhdGVUaW1lVmFsdWUgfSBmcm9tICcuLi9kYXRldGltZS50eXBlcyc7XG5pbXBvcnQgeyBBWERhdGVUaW1lRm9ybWF0dGVyT3B0aW9ucyB9IGZyb20gJy4vZGF0ZXRpbWUuZm9ybWF0dGVyJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFYRGF0ZUZvcm1hdHRlciBpbXBsZW1lbnRzIEFYRm9ybWF0dGVyIHtcbiAgcHJpdmF0ZSBjYWxlbmRhclNlcnZpY2UgPSBpbmplY3QoQVhDYWxlbmRhclNlcnZpY2UpO1xuICBwcml2YXRlIGxvY2FsZVNlcnZpY2UgPSBpbmplY3QoQVhMb2NhbGVTZXJ2aWNlKTtcblxuICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnZGF0ZSc7XG4gIH1cblxuICBmb3JtYXQodmFsdWU6IEFYVmFsaWREYXRlVGltZVZhbHVlLCBvcHRpb25zPzogQVhEYXRlVGltZUZvcm1hdHRlck9wdGlvbnMgfCBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmIChpc05pbCh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgLy9cbiAgICBpZiAoIXRoaXMuY2FsZW5kYXJTZXJ2aWNlLmlzVmFsaWREYXRlKHZhbHVlKSkgcmV0dXJuICdJbnZhbGlkIGRhdGUnO1xuICAgIC8vXG4gICAgY29uc3QgZWZmZWN0aXZlT3B0aW9ucyA9XG4gICAgICB0eXBlb2Ygb3B0aW9ucyA9PSAnb2JqZWN0J1xuICAgICAgICA/IHtcbiAgICAgICAgICAgIGZvcm1hdDogb3B0aW9ucy5mb3JtYXQgPz8gJ3Nob3J0JyxcbiAgICAgICAgICAgIGxvY2FsZTogb3B0aW9ucy5sb2NhbGUsXG4gICAgICAgICAgICBjYWxlbmRhcjogb3B0aW9ucy5jYWxlbmRhciA/PyB0aGlzLmNhbGVuZGFyU2VydmljZS5jYWxlbmRhci5uYW1lKCksXG4gICAgICAgICAgfVxuICAgICAgICA6IHtcbiAgICAgICAgICAgIGZvcm1hdDogb3B0aW9ucyxcbiAgICAgICAgICAgIGNhbGVuZGFyOiB0aGlzLmNhbGVuZGFyU2VydmljZS5jYWxlbmRhci5uYW1lKCksXG4gICAgICAgICAgfTtcbiAgICAvL1xuICAgIGNvbnN0IGZvcm1hdHMgPSB0aGlzLmxvY2FsZVNlcnZpY2UuYWN0aXZlUHJvZmlsZSgpLmZvcm1hdHM7XG4gICAgY29uc3QgbWFwID0ge1xuICAgICAgc2hvcnQ6IGZvcm1hdHMuZGF0ZS5zaG9ydCxcbiAgICAgIG1lZGl1bTogZm9ybWF0cy5kYXRlLm1lZGl1bSxcbiAgICAgIGxvbmc6IGZvcm1hdHMuZGF0ZS5sb25nLFxuICAgICAgZnVsbDogZm9ybWF0cy5kYXRlLmZ1bGwsXG4gICAgfTtcbiAgICBjb25zdCBmb3JtYXQgPSBtYXBbZWZmZWN0aXZlT3B0aW9ucy5mb3JtYXQgYXMga2V5b2YgdHlwZW9mIG1hcF0gPz8gZWZmZWN0aXZlT3B0aW9ucy5mb3JtYXQgPz8gbWFwWydzaG9ydCddO1xuICAgIC8vXG4gICAgcmV0dXJuIHRoaXMuY2FsZW5kYXJTZXJ2aWNlXG4gICAgICAuY29udmVydCh2YWx1ZSwgZWZmZWN0aXZlT3B0aW9ucy5jYWxlbmRhciBhcyBzdHJpbmcpXG4gICAgICAuZm9ybWF0KGZvcm1hdCwgeyBsb2NhbGU6IGVmZmVjdGl2ZU9wdGlvbnMubG9jYWxlIH0pO1xuICB9XG59XG4iXX0=","import { AXLocaleService } from '@acorex/core/locale';\nimport { Injectable, inject } from '@angular/core';\nimport { isNil } from 'lodash-es';\nimport { AXCalendarService } from '../calendar.service';\nimport * as i0 from \"@angular/core\";\nexport class AXDateTimeFormatter {\n constructor() {\n this.localeService = inject(AXLocaleService);\n this.calendarService = inject(AXCalendarService);\n }\n get name() {\n return 'datetime';\n }\n format(value, options) {\n if (isNil(value)) {\n return '';\n }\n //\n if (!this.calendarService.isValidDate(value))\n return 'Invalid date';\n //\n const effectiveOptions = typeof options == 'object'\n ? {\n format: options.format ?? 'date',\n locale: options.locale,\n calendar: options.calendar ?? this.calendarService.calendar.name(),\n }\n : {\n format: options,\n calendar: this.calendarService.calendar.name(),\n };\n //\n const formats = this.localeService.activeProfile().formats;\n const map = {\n longDate: formats.date.long,\n shortDate: formats.date.short,\n mediumDate: formats.date.medium,\n date: formats.date.short,\n //\n longTime: formats.time.long,\n shortTime: formats.time.short,\n mediumTime: formats.time.medium,\n time: formats.time.short,\n //\n long: formats.datetime.long,\n short: formats.datetime.short,\n medium: formats.datetime.medium,\n full: formats.datetime.full,\n };\n const format = map[effectiveOptions.format] ?? effectiveOptions.format ?? map['date'];\n //\n return this.calendarService\n .convert(value, effectiveOptions.calendar)\n .format(format, { locale: effectiveOptions.locale });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXDateTimeFormatter, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXDateTimeFormatter }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXDateTimeFormatter, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUuZm9ybWF0dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9kYXRlLXRpbWUvc3JjL2xpYi9mb3JtYXR0ZXJzL2RhdGV0aW1lLmZvcm1hdHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNsQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7QUFnQnhELE1BQU0sT0FBTyxtQkFBbUI7SUFEaEM7UUFFVSxrQkFBYSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUN4QyxvQkFBZSxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0tBZ0RyRDtJQTlDQyxJQUFJLElBQUk7UUFDTixPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQTJCLEVBQUUsT0FBNkM7UUFDL0UsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNqQixPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFDRCxFQUFFO1FBQ0YsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztZQUFFLE9BQU8sY0FBYyxDQUFDO1FBQ3BFLEVBQUU7UUFDRixNQUFNLGdCQUFnQixHQUNwQixPQUFPLE9BQU8sSUFBSSxRQUFRO1lBQ3hCLENBQUMsQ0FBQztnQkFDRSxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU0sSUFBSSxNQUFNO2dCQUNoQyxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU07Z0JBQ3RCLFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRTthQUNuRTtZQUNILENBQUMsQ0FBQztnQkFDRSxNQUFNLEVBQUUsT0FBTztnQkFDZixRQUFRLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFO2FBQy9DLENBQUM7UUFDUixFQUFFO1FBQ0YsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxPQUFPLENBQUM7UUFDM0QsTUFBTSxHQUFHLEdBQUc7WUFDVixRQUFRLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJO1lBQzNCLFNBQVMsRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUs7WUFDN0IsVUFBVSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTTtZQUMvQixJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLO1lBQ3hCLEVBQUU7WUFDRixRQUFRLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJO1lBQzNCLFNBQVMsRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUs7WUFDN0IsVUFBVSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTTtZQUMvQixJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLO1lBQ3hCLEVBQUU7WUFDRixJQUFJLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJO1lBQzNCLEtBQUssRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUs7WUFDN0IsTUFBTSxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTTtZQUMvQixJQUFJLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJO1NBQzVCLENBQUM7UUFDRixNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsTUFBMEIsQ0FBQyxJQUFJLGdCQUFnQixDQUFDLE1BQU0sSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDMUcsRUFBRTtRQUNGLE9BQU8sSUFBSSxDQUFDLGVBQWU7YUFDeEIsT0FBTyxDQUFDLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyxRQUFrQixDQUFDO2FBQ25ELE1BQU0sQ0FBQyxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUN6RCxDQUFDOzhHQWpEVSxtQkFBbUI7a0hBQW5CLG1CQUFtQjs7MkZBQW5CLG1CQUFtQjtrQkFEL0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYRm9ybWF0T3B0aW9ucywgQVhGb3JtYXR0ZXIgfSBmcm9tICdAYWNvcmV4L2NvcmUvZm9ybWF0JztcbmltcG9ydCB7IEFYTG9jYWxlU2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29yZS9sb2NhbGUnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpc05pbCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBBWENhbGVuZGFyU2VydmljZSB9IGZyb20gJy4uL2NhbGVuZGFyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQVhWYWxpZERhdGVUaW1lVmFsdWUgfSBmcm9tICcuLi9kYXRldGltZS50eXBlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhEYXRlVGltZUZvcm1hdHRlck9wdGlvbnMgZXh0ZW5kcyBBWEZvcm1hdE9wdGlvbnMge1xuICBmb3JtYXQ/OiBzdHJpbmc7XG4gIGNhbGVuZGFyPzogc3RyaW5nO1xuICBsb2NhbGU/OiBzdHJpbmc7XG59XG5cbmRlY2xhcmUgbW9kdWxlICdAYWNvcmV4L2NvcmUvZm9ybWF0JyB7XG4gIGludGVyZmFjZSBBWEZvcm1hdE9wdGlvbnNNYXAge1xuICAgIGRhdGV0aW1lOiBBWERhdGVUaW1lRm9ybWF0dGVyT3B0aW9ucztcbiAgfVxufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQVhEYXRlVGltZUZvcm1hdHRlciBpbXBsZW1lbnRzIEFYRm9ybWF0dGVyIHtcbiAgcHJpdmF0ZSBsb2NhbGVTZXJ2aWNlID0gaW5qZWN0KEFYTG9jYWxlU2VydmljZSk7XG4gIHByaXZhdGUgY2FsZW5kYXJTZXJ2aWNlID0gaW5qZWN0KEFYQ2FsZW5kYXJTZXJ2aWNlKTtcblxuICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnZGF0ZXRpbWUnO1xuICB9XG5cbiAgZm9ybWF0KHZhbHVlOiBBWFZhbGlkRGF0ZVRpbWVWYWx1ZSwgb3B0aW9ucz86IEFYRGF0ZVRpbWVGb3JtYXR0ZXJPcHRpb25zIHwgc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoaXNOaWwodmFsdWUpKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIC8vXG4gICAgaWYgKCF0aGlzLmNhbGVuZGFyU2VydmljZS5pc1ZhbGlkRGF0ZSh2YWx1ZSkpIHJldHVybiAnSW52YWxpZCBkYXRlJztcbiAgICAvL1xuICAgIGNvbnN0IGVmZmVjdGl2ZU9wdGlvbnMgPVxuICAgICAgdHlwZW9mIG9wdGlvbnMgPT0gJ29iamVjdCdcbiAgICAgICAgPyB7XG4gICAgICAgICAgICBmb3JtYXQ6IG9wdGlvbnMuZm9ybWF0ID8/ICdkYXRlJyxcbiAgICAgICAgICAgIGxvY2FsZTogb3B0aW9ucy5sb2NhbGUsXG4gICAgICAgICAgICBjYWxlbmRhcjogb3B0aW9ucy5jYWxlbmRhciA/PyB0aGlzLmNhbGVuZGFyU2VydmljZS5jYWxlbmRhci5uYW1lKCksXG4gICAgICAgICAgfVxuICAgICAgICA6IHtcbiAgICAgICAgICAgIGZvcm1hdDogb3B0aW9ucyxcbiAgICAgICAgICAgIGNhbGVuZGFyOiB0aGlzLmNhbGVuZGFyU2VydmljZS5jYWxlbmRhci5uYW1lKCksXG4gICAgICAgICAgfTtcbiAgICAvL1xuICAgIGNvbnN0IGZvcm1hdHMgPSB0aGlzLmxvY2FsZVNlcnZpY2UuYWN0aXZlUHJvZmlsZSgpLmZvcm1hdHM7XG4gICAgY29uc3QgbWFwID0ge1xuICAgICAgbG9uZ0RhdGU6IGZvcm1hdHMuZGF0ZS5sb25nLFxuICAgICAgc2hvcnREYXRlOiBmb3JtYXRzLmRhdGUuc2hvcnQsXG4gICAgICBtZWRpdW1EYXRlOiBmb3JtYXRzLmRhdGUubWVkaXVtLFxuICAgICAgZGF0ZTogZm9ybWF0cy5kYXRlLnNob3J0LFxuICAgICAgLy9cbiAgICAgIGxvbmdUaW1lOiBmb3JtYXRzLnRpbWUubG9uZyxcbiAgICAgIHNob3J0VGltZTogZm9ybWF0cy50aW1lLnNob3J0LFxuICAgICAgbWVkaXVtVGltZTogZm9ybWF0cy50aW1lLm1lZGl1bSxcbiAgICAgIHRpbWU6IGZvcm1hdHMudGltZS5zaG9ydCxcbiAgICAgIC8vXG4gICAgICBsb25nOiBmb3JtYXRzLmRhdGV0aW1lLmxvbmcsXG4gICAgICBzaG9ydDogZm9ybWF0cy5kYXRldGltZS5zaG9ydCxcbiAgICAgIG1lZGl1bTogZm9ybWF0cy5kYXRldGltZS5tZWRpdW0sXG4gICAgICBmdWxsOiBmb3JtYXRzLmRhdGV0aW1lLmZ1bGwsXG4gICAgfTtcbiAgICBjb25zdCBmb3JtYXQgPSBtYXBbZWZmZWN0aXZlT3B0aW9ucy5mb3JtYXQgYXMga2V5b2YgdHlwZW9mIG1hcF0gPz8gZWZmZWN0aXZlT3B0aW9ucy5mb3JtYXQgPz8gbWFwWydkYXRlJ107XG4gICAgLy9cbiAgICByZXR1cm4gdGhpcy5jYWxlbmRhclNlcnZpY2VcbiAgICAgIC5jb252ZXJ0KHZhbHVlLCBlZmZlY3RpdmVPcHRpb25zLmNhbGVuZGFyIGFzIHN0cmluZylcbiAgICAgIC5mb3JtYXQoZm9ybWF0LCB7IGxvY2FsZTogZWZmZWN0aXZlT3B0aW9ucy5sb2NhbGUgfSk7XG4gIH1cbn1cbiJdfQ==","import { AXTranslationService } from '@acorex/core/translation';\nimport { inject, Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class AXTimeDurationFormatter {\n constructor() {\n this.translationService = inject(AXTranslationService);\n }\n get name() {\n return 'time-duration';\n }\n format(value, options) {\n const milliseconds = Number(value);\n if (milliseconds === null || isNaN(milliseconds)) {\n return '...';\n }\n // Convert milliseconds to various units\n const totalMilliseconds = milliseconds % 1000;\n const totalSeconds = Math.floor(milliseconds / 1000);\n const seconds = totalSeconds % 60;\n const totalMinutes = Math.floor(totalSeconds / 60);\n const minutes = totalMinutes % 60;\n const totalHours = Math.floor(totalMinutes / 60);\n // Helper function for zero-padding\n const pad = (num, length = 2) => num.toString().padStart(length, '0');\n // Default format if none provided\n const format = options?.format || (totalHours >= 0 ? 'HH:mm:ss' : 'mm:ss');\n const formattedTime = [];\n // Parse format and build the time string accordingly\n if (format.includes('HH') || format.includes('H')) {\n formattedTime.push(pad(totalHours));\n }\n if (format.includes('mm')) {\n formattedTime.push(pad(minutes));\n }\n else if (format.includes('m')) {\n formattedTime.push(minutes.toString());\n }\n if (format.includes('ss')) {\n formattedTime.push(pad(seconds));\n }\n else if (format.includes('s')) {\n formattedTime.push(seconds.toString());\n }\n if (format.includes('ms') || format.includes('MS')) {\n formattedTime.push(pad(totalMilliseconds, 3));\n }\n // Join the parts according to the format\n return formattedTime.join(format.includes('ms') || format.includes('MS') ? ':' : ':');\n }\n async millisecondsToMask(ms, startUnit = 'YEAR', endUnit = 'MILLISECOND') {\n if (ms <= 0)\n return '';\n const translations = await Promise.all([\n this.translationService.translateAsync('@acorex:dateTime.units.year'),\n this.translationService.translateAsync('@acorex:dateTime.units.month'),\n this.translationService.translateAsync('@acorex:dateTime.units.week'),\n this.translationService.translateAsync('@acorex:dateTime.units.day'),\n this.translationService.translateAsync('@acorex:dateTime.units.hour'),\n this.translationService.translateAsync('@acorex:dateTime.units.minute'),\n this.translationService.translateAsync('@acorex:dateTime.units.second'),\n this.translationService.translateAsync('@acorex:dateTime.units.millisecond'),\n ]);\n const units = [\n { key: 'YEAR', label: translations[0].toLocaleUpperCase(), value: 1000 * 60 * 60 * 24 * 365 },\n { key: 'MONTH', label: translations[1].toLocaleUpperCase(), value: 1000 * 60 * 60 * 24 * 30 },\n { key: 'WEEK', label: translations[2].toLocaleUpperCase(), value: 1000 * 60 * 60 * 24 * 7 },\n { key: 'DAY', label: translations[3].toLocaleUpperCase(), value: 1000 * 60 * 60 * 24 },\n { key: 'HOUR', label: translations[4].toLocaleUpperCase(), value: 1000 * 60 * 60 },\n { key: 'MINUTE', label: translations[5].toLocaleUpperCase(), value: 1000 * 60 },\n { key: 'SECOND', label: translations[6].toLocaleUpperCase(), value: 1000 },\n { key: 'MILLISECOND', label: translations[7].toLocaleUpperCase(), value: 1 },\n ];\n const startIndex = units.findIndex((u) => u.key === startUnit.toUpperCase());\n const endIndex = units.findIndex((u) => u.key === endUnit.toUpperCase());\n if (startIndex === -1 || endIndex === -1 || startIndex > endIndex) {\n throw new Error('Invalid time unit range');\n }\n const limitedUnits = units.slice(startIndex, endIndex + 1);\n const result = limitedUnits.map((unit) => {\n const count = Math.floor(ms / unit.value);\n ms %= unit.value;\n // Special handling for milliseconds (3 digits)\n if (unit.key === 'MILLISECOND') {\n if (count < 10) {\n return `00${count} (${unit.label})`;\n }\n else if (count < 100) {\n return `0${count} (${unit.label})`;\n }\n else {\n return `${count} (${unit.label})`;\n }\n }\n else {\n // For other units, pad with one zero if less than 10\n const paddedCount = count < 10 ? `0${count}` : `${count}`;\n return `${paddedCount} (${unit.label})`;\n }\n });\n if (this.translationService.getActiveLang() === 'fa-IR') {\n return result.reverse().join(' : ');\n }\n else {\n return result.join(' : ');\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXTimeDurationFormatter, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXTimeDurationFormatter }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXTimeDurationFormatter, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1kdXJhdGlvbi5mb3JtYXR0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL2RhdGUtdGltZS9zcmMvbGliL2Zvcm1hdHRlcnMvdGltZS1kdXJhdGlvbi5mb3JtYXR0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBZW5ELE1BQU0sT0FBTyx1QkFBdUI7SUFEcEM7UUFrREUsdUJBQWtCLEdBQXlCLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0tBaUV6RTtJQWpIQyxJQUFJLElBQUk7UUFDTixPQUFPLGVBQWUsQ0FBQztJQUN6QixDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQWEsRUFBRSxPQUF3QztRQUM1RCxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkMsSUFBSSxZQUFZLEtBQUssSUFBSSxJQUFJLEtBQUssQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO1lBQ2pELE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUVELHdDQUF3QztRQUN4QyxNQUFNLGlCQUFpQixHQUFHLFlBQVksR0FBRyxJQUFJLENBQUM7UUFDOUMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDckQsTUFBTSxPQUFPLEdBQUcsWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUNsQyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUMsQ0FBQztRQUNuRCxNQUFNLE9BQU8sR0FBRyxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ2xDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsWUFB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LENBQUM7b0JBQ2YsT0FBTyxLQUFLLEtBQUssS0FBSyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUM7Z0JBQ3RDLENBQUM7cUJBQU0sSUFBSSxLQUFLLEdBQUcsR0FBRyxFQUFFLENBQUM7b0JBQ3ZCLE9BQU8sSUFBSSxLQUFLLEtBQUssSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDO2dCQUNyQyxDQUFDO3FCQUFNLENBQUM7b0JBQ04sT0FBTyxHQUFHLEtBQUssS0FBSyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUM7Z0JBQ3BDLENBQUM7WUFDSCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04scURBQXFEO2dCQUNyRCxNQUFNLFdBQVcsR0FBRyxLQUFLLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssRUFBRSxDQUFDO2dCQUMxRCxPQUFPLEdBQUcsV0FBVyxLQUFLLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQztZQUMxQyxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLEVBQUUsS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUN4RCxPQUFPLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEMsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUIsQ0FBQztJQUNILENBQUM7OEdBakhVLHVCQUF1QjtrSEFBdkIsdUJBQXVCOzsyRkFBdkIsdUJBQXVCO2tCQURuQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhGb3JtYXRPcHRpb25zLCBBWEZvcm1hdHRlciB9IGZyb20gJ0BhY29yZXgvY29yZS9mb3JtYXQnO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvcmUvdHJhbnNsYXRpb24nO1xuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhUaW1lRHVyYXRpb25Gb3JtYXR0ZXJPcHRpb25zIGV4dGVuZHMgQVhGb3JtYXRPcHRpb25zIHtcbiAgZm9ybWF0OiBzdHJpbmc7XG59XG5cbmRlY2xhcmUgbW9kdWxlICdAYWNvcmV4L2NvcmUvZm9ybWF0JyB7XG4gIGludGVyZmFjZSBBWEZvcm1hdE9wdGlvbnNNYXAge1xuICAgIGR1cmF0aW9uOiBBWFRpbWVEdXJhdGlvbkZvcm1hdHRlck9wdGlvbnM7XG4gIH1cbn1cblxudHlwZSBBWFRpbWVEdXJhdGlvblVuaXQgPSAnWUVBUicgfCAnTU9OVEgnIHwgJ1dFRUsnIHwgJ0RBWScgfCAnSE9VUicgfCAnTUlOVVRFJyB8ICdTRUNPTkQnIHwgJ01JTExJU0VDT05EJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFYVGltZUR1cmF0aW9uRm9ybWF0dGVyIGltcGxlbWVudHMgQVhGb3JtYXR0ZXIge1xuICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAndGltZS1kdXJhdGlvbic7XG4gIH1cblxuICBmb3JtYXQodmFsdWU6IG51bWJlciwgb3B0aW9ucz86IEFYVGltZUR1cmF0aW9uRm9ybWF0dGVyT3B0aW9ucyk6IHN0cmluZyB7XG4gICAgY29uc3QgbWlsbGlzZWNvbmRzID0gTnVtYmVyKHZhbHVlKTtcbiAgICBpZiAobWlsbGlzZWNvbmRzID09PSBudWxsIHx8IGlzTmFOKG1pbGxpc2Vjb25kcykpIHtcbiAgICAgIHJldHVybiAnLi4uJztcbiAgICB9XG5cbiAgICAvLyBDb252ZXJ0IG1pbGxpc2Vjb25kcyB0byB2YXJpb3VzIHVuaXRzXG4gICAgY29uc3QgdG90YWxNaWxsaXNlY29uZHMgPSBtaWxsaXNlY29uZHMgJSAxMDAwO1xuICAgIGNvbnN0IHRvdGFsU2Vjb25kcyA9IE1hdGguZmxvb3IobWlsbGlzZWNvbmRzIC8gMTAwMCk7XG4gICAgY29uc3Qgc2Vjb25kcyA9IHRvdGFsU2Vjb25kcyAlIDYwO1xuICAgIGNvbnN0IHRvdGFsTWludXRlcyA9IE1hdGguZmxvb3IodG90YWxTZWNvbmRzIC8gNjApO1xuICAgIGNvbnN0IG1pbnV0ZXMgPSB0b3RhbE1pbnV0ZXMgJSA2MDtcbiAgICBjb25zdCB0b3RhbEhvdXJzID0gTWF0aC5mbG9vcih0b3RhbE1pbnV0ZXMgLyA2MCk7XG5cbiAgICAvLyBIZWxwZXIgZnVuY3Rpb24gZm9yIHplcm8tcGFkZGluZ1xuICAgIGNvbnN0IHBhZCA9IChudW06IG51bWJlciwgbGVuZ3RoID0gMikgPT4gbnVtLnRvU3RyaW5nKCkucGFkU3RhcnQobGVuZ3RoLCAnMCcpO1xuXG4gICAgLy8gRGVmYXVsdCBmb3JtYXQgaWYgbm9uZSBwcm92aWRlZFxuICAgIGNvbnN0IGZvcm1hdCA9IG9wdGlvbnM/LmZvcm1hdCB8fCAodG90YWxIb3VycyA+PSAwID8gJ0hIOm1tOnNzJyA6ICdtbTpzcycpO1xuXG4gICAgY29uc3QgZm9ybWF0dGVkVGltZSA9IFtdO1xuXG4gICAgLy8gUGFyc2UgZm9ybWF0IGFuZCBidWlsZCB0aGUgdGltZSBzdHJpbmcgYWNjb3JkaW5nbHlcbiAgICBpZiAoZm9ybWF0LmluY2x1ZGVzKCdISCcpIHx8IGZvcm1hdC5pbmNsdWRlcygnSCcpKSB7XG4gICAgICBmb3JtYXR0ZWRUaW1lLnB1c2gocGFkKHRvdGFsSG91cnMpKTtcbiAgICB9XG4gICAgaWYgKGZvcm1hdC5pbmNsdWRlcygnbW0nKSkge1xuICAgICAgZm9ybWF0dGVkVGltZS5wdXNoKHBhZChtaW51dGVzKSk7XG4gICAgfSBlbHNlIGlmIChmb3JtYXQuaW5jbHVkZXMoJ20nKSkge1xuICAgICAgZm9ybWF0dGVkVGltZS5wdXNoKG1pbnV0ZXMudG9TdHJpbmcoKSk7XG4gICAgfVxuICAgIGlmIChmb3JtYXQuaW5jbHVkZXMoJ3NzJykpIHtcbiAgICAgIGZvcm1hdHRlZFRpbWUucHVzaChwYWQoc2Vjb25kcykpO1xuICAgIH0gZWxzZSBpZiAoZm9ybWF0LmluY2x1ZGVzKCdzJykpIHtcbiAgICAgIGZvcm1hdHRlZFRpbWUucHVzaChzZWNvbmRzLnRvU3RyaW5nKCkpO1xuICAgIH1cbiAgICBpZiAoZm9ybWF0LmluY2x1ZGVzKCdtcycpIHx8IGZvcm1hdC5pbmNsdWRlcygnTVMnKSkge1xuICAgICAgZm9ybWF0dGVkVGltZS5wdXNoKHBhZCh0b3RhbE1pbGxpc2Vjb25kcywgMykpO1xuICAgIH1cblxuICAgIC8vIEpvaW4gdGhlIHBhcnRzIGFjY29yZGluZyB0byB0aGUgZm9ybWF0XG4gICAgcmV0dXJuIGZvcm1hdHRlZFRpbWUuam9pbihmb3JtYXQuaW5jbHVkZXMoJ21zJykgfHwgZm9ybWF0LmluY2x1ZGVzKCdNUycpID8gJzonIDogJzonKTtcbiAgfVxuXG4gIHRyYW5zbGF0aW9uU2VydmljZTogQVhUcmFuc2xhdGlvblNlcnZpY2UgPSBpbmplY3QoQVhUcmFuc2xhdGlvblNlcnZpY2UpO1xuXG4gIGFzeW5jIG1pbGxpc2Vjb25kc1RvTWFzayhcbiAgICBtczogbnVtYmVyLFxuICAgIHN0YXJ0VW5pdDogQVhUaW1lRHVyYXRpb25Vbml0ID0gJ1lFQVInLFxuICAgIGVuZFVuaXQ6IEFYVGltZUR1cmF0aW9uVW5pdCA9ICdNSUxMSVNFQ09ORCcsXG4gICk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgaWYgKG1zIDw9IDApIHJldHVybiAnJztcblxuICAgIGNvbnN0IHRyYW5zbGF0aW9ucyA9IGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAgIHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdAYWNvcmV4OmRhdGVUaW1lLnVuaXRzLnllYXInKSxcbiAgICAgIHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdAYWNvcmV4OmRhdGVUaW1lLnVuaXRzLm1vbnRoJyksXG4gICAgICB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGVBc3luYygnQGFjb3JleDpkYXRlVGltZS51bml0cy53ZWVrJyksXG4gICAgICB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGVBc3luYygnQGFjb3JleDpkYXRlVGltZS51bml0cy5kYXknKSxcbiAgICAgIHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdAYWNvcmV4OmRhdGVUaW1lLnVuaXRzLmhvdXInKSxcbiAgICAgIHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdAYWNvcmV4OmRhdGVUaW1lLnVuaXRzLm1pbnV0ZScpLFxuICAgICAgdGhpcy50cmFuc2xhdGlvblNlcnZpY2UudHJhbnNsYXRlQXN5bmMoJ0BhY29yZXg6ZGF0ZVRpbWUudW5pdHMuc2Vjb25kJyksXG4gICAgICB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGVBc3luYygnQGFjb3JleDpkYXRlVGltZS51bml0cy5taWxsaXNlY29uZCcpLFxuICAgIF0pO1xuXG4gICAgY29uc3QgdW5pdHMgPSBbXG4gICAgICB7IGtleTogJ1lFQVInLCBsYWJlbDogdHJhbnNsYXRpb25zWzBdLnRvTG9jYWxlVXBwZXJDYXNlKCksIHZhbHVlOiAxMDAwICogNjAgKiA2MCAqIDI0ICogMzY1IH0sXG4gICAgICB7IGtleTogJ01PTlRIJywgbGFiZWw6IHRyYW5zbGF0aW9uc1sxXS50b0xvY2FsZVVwcGVyQ2FzZSgpLCB2YWx1ZTogMTAwMCAqIDYwICogNjAgKiAyNCAqIDMwIH0sXG4gICAgICB7IGtleTogJ1dFRUsnLCBsYWJlbDogdHJhbnNsYXRpb25zWzJdLnRvTG9jYWxlVXBwZXJDYXNlKCksIHZhbHVlOiAxMDAwICogNjAgKiA2MCAqIDI0ICogNyB9LFxuICAgICAgeyBrZXk6ICdEQVknLCBsYWJlbDogdHJhbnNsYXRpb25zWzNdLnRvTG9jYWxlVXBwZXJDYXNlKCksIHZhbHVlOiAxMDAwICogNjAgKiA2MCAqIDI0IH0sXG4gICAgICB7IGtleTogJ0hPVVInLCBsYWJlbDogdHJhbnNsYXRpb25zWzRdLnRvTG9jYWxlVXBwZXJDYXNlKCksIHZhbHVlOiAxMDAwICogNjAgKiA2MCB9LFxuICAgICAgeyBrZXk6ICdNSU5VVEUnLCBsYWJlbDogdHJhbnNsYXRpb25zWzVdLnRvTG9jYWxlVXBwZXJDYXNlKCksIHZhbHVlOiAxMDAwICogNjAgfSxcbiAgICAgIHsga2V5OiAnU0VDT05EJywgbGFiZWw6IHRyYW5zbGF0aW9uc1s2XS50b0xvY2FsZVVwcGVyQ2FzZSgpLCB2YWx1ZTogMTAwMCB9LFxuICAgICAgeyBrZXk6ICdNSUxMSVNFQ09ORCcsIGxhYmVsOiB0cmFuc2xhdGlvbnNbN10udG9Mb2NhbGVVcHBlckNhc2UoKSwgdmFsdWU6IDEgfSxcbiAgICBdO1xuXG4gICAgY29uc3Qgc3RhcnRJbmRleCA9IHVuaXRzLmZpbmRJbmRleCgodSkgPT4gdS5rZXkgPT09IHN0YXJ0VW5pdC50b1VwcGVyQ2FzZSgpKTtcbiAgICBjb25zdCBlbmRJbmRleCA9IHVuaXRzLmZpbmRJbmRleCgodSkgPT4gdS5rZXkgPT09IGVuZFVuaXQudG9VcHBlckNhc2UoKSk7XG5cbiAgICBpZiAoc3RhcnRJbmRleCA9PT0gLTEgfHwgZW5kSW5kZXggPT09IC0xIHx8IHN0YXJ0SW5kZXggPiBlbmRJbmRleCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHRpbWUgdW5pdCByYW5nZScpO1xuICAgIH1cblxuICAgIGNvbnN0IGxpbWl0ZWRVbml0cyA9IHVuaXRzLnNsaWNlKHN0YXJ0SW5kZXgsIGVuZEluZGV4ICsgMSk7XG4gICAgY29uc3QgcmVzdWx0ID0gbGltaXRlZFVuaXRzLm1hcCgodW5pdCkgPT4ge1xuICAgICAgY29uc3QgY291bnQgPSBNYXRoLmZsb29yKG1zIC8gdW5pdC52YWx1ZSk7XG4gICAgICBtcyAlPSB1bml0LnZhbHVlO1xuXG4gICAgICAvLyBTcGVjaWFsIGhhbmRsaW5nIGZvciBtaWxsaXNlY29uZHMgKDMgZGlnaXRzKVxuICAgICAgaWYgKHVuaXQua2V5ID09PSAnTUlMTElTRUNPTkQnKSB7XG4gICAgICAgIGlmIChjb3VudCA8IDEwKSB7XG4gICAgICAgICAgcmV0dXJuIGAwMCR7Y291bnR9ICgke3VuaXQubGFiZWx9KWA7XG4gICAgICAgIH0gZWxzZSBpZiAoY291bnQgPCAxMDApIHtcbiAgICAgICAgICByZXR1cm4gYDAke2NvdW50fSAoJHt1bml0LmxhYmVsfSlgO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBgJHtjb3VudH0gKCR7dW5pdC5sYWJlbH0pYDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gRm9yIG90aGVyIHVuaXRzLCBwYWQgd2l0aCBvbmUgemVybyBpZiBsZXNzIHRoYW4gMTBcbiAgICAgICAgY29uc3QgcGFkZGVkQ291bnQgPSBjb3VudCA8IDEwID8gYDAke2NvdW50fWAgOiBgJHtjb3VudH1gO1xuICAgICAgICByZXR1cm4gYCR7cGFkZGVkQ291bnR9ICgke3VuaXQubGFiZWx9KWA7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAodGhpcy50cmFuc2xhdGlvblNlcnZpY2UuZ2V0QWN0aXZlTGFuZygpID09PSAnZmEtSVInKSB7XG4gICAgICByZXR1cm4gcmVzdWx0LnJldmVyc2UoKS5qb2luKCcgOiAnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHJlc3VsdC5qb2luKCcgOiAnKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==","import { AXLocaleService } from '@acorex/core/locale';\nimport { Injectable, inject } from '@angular/core';\nimport { isNil } from 'lodash-es';\nimport { AXCalendarService } from '../calendar.service';\nimport * as i0 from \"@angular/core\";\nexport class AXTimeFormatter {\n constructor() {\n this.calendarService = inject(AXCalendarService);\n this.localeService = inject(AXLocaleService);\n }\n get name() {\n return 'time';\n }\n format(value, options) {\n if (isNil(value)) {\n return '';\n }\n //\n if (!this.calendarService.isValidDate(value))\n return 'Invalid date';\n //\n const effectiveOptions = typeof options == 'object'\n ? {\n format: options.format ?? 'short',\n locale: options.locale,\n calendar: options.calendar ?? this.calendarService.calendar.name(),\n }\n : {\n format: options,\n calendar: this.calendarService.calendar.name(),\n };\n //\n const formats = this.localeService.activeProfile().formats;\n const map = {\n short: formats.time.short,\n medium: formats.time.medium,\n long: formats.time.long,\n full: formats.time.full,\n };\n const format = map[effectiveOptions.format] ?? effectiveOptions.format ?? map['short'];\n //\n return this.calendarService\n .convert(value, effectiveOptions.calendar)\n .format(format, { locale: effectiveOptions.locale });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXTimeFormatter, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXTimeFormatter }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXTimeFormatter, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS5mb3JtYXR0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL2RhdGUtdGltZS9zcmMvbGliL2Zvcm1hdHRlcnMvdGltZS5mb3JtYXR0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbEMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7O0FBS3hELE1BQU0sT0FBTyxlQUFlO0lBRDVCO1FBRVUsb0JBQWUsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUM1QyxrQkFBYSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztLQXNDakQ7SUFwQ0MsSUFBSSxJQUFJO1FBQ04sT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUEyQixFQUFFLE9BQTZDO1FBQy9FLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDakIsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBQ0QsRUFBRTtRQUNGLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7WUFBRSxPQUFPLGNBQWMsQ0FBQztRQUNwRSxFQUFFO1FBQ0YsTUFBTSxnQkFBZ0IsR0FDcEIsT0FBTyxPQUFPLElBQUksUUFBUTtZQUN4QixDQUFDLENBQUM7Z0JBQ0UsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNLElBQUksT0FBTztnQkFDakMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNO2dCQUN0QixRQUFRLEVBQUUsT0FBTyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUU7YUFDbkU7WUFDSCxDQUFDLENBQUM7Z0JBQ0UsTUFBTSxFQUFFLE9BQU87Z0JBQ2YsUUFBUSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRTthQUMvQyxDQUFDO1FBQ1IsRUFBRTtRQUNGLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxFQUFFLENBQUMsT0FBTyxDQUFDO1FBQzNELE1BQU0sR0FBRyxHQUFHO1lBQ1YsS0FBSyxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSztZQUN6QixNQUFNLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNO1lBQzNCLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUk7WUFDdkIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSTtTQUN4QixDQUFDO1FBQ0YsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLGdCQUFnQixDQUFDLE1BQTBCLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQyxNQUFNLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNHLEVBQUU7UUFDRixPQUFPLElBQUksQ0FBQyxlQUFlO2FBQ3hCLE9BQU8sQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLENBQUMsUUFBa0IsQ0FBQzthQUNuRCxNQUFNLENBQUMsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDekQsQ0FBQzs4R0F2Q1UsZUFBZTtrSEFBZixlQUFlOzsyRkFBZixlQUFlO2tCQUQzQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhGb3JtYXR0ZXIgfSBmcm9tICdAYWNvcmV4L2NvcmUvZm9ybWF0JztcbmltcG9ydCB7IEFYTG9jYWxlU2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29yZS9sb2NhbGUnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpc05pbCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBBWENhbGVuZGFyU2VydmljZSB9IGZyb20gJy4uL2NhbGVuZGFyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQVhWYWxpZERhdGVUaW1lVmFsdWUgfSBmcm9tICcuLi9kYXRldGltZS50eXBlcyc7XG5pbXBvcnQgeyBBWERhdGVUaW1lRm9ybWF0dGVyT3B0aW9ucyB9IGZyb20gJy4vZGF0ZXRpbWUuZm9ybWF0dGVyJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFYVGltZUZvcm1hdHRlciBpbXBsZW1lbnRzIEFYRm9ybWF0dGVyIHtcbiAgcHJpdmF0ZSBjYWxlbmRhclNlcnZpY2UgPSBpbmplY3QoQVhDYWxlbmRhclNlcnZpY2UpO1xuICBwcml2YXRlIGxvY2FsZVNlcnZpY2UgPSBpbmplY3QoQVhMb2NhbGVTZXJ2aWNlKTtcblxuICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAndGltZSc7XG4gIH1cblxuICBmb3JtYXQodmFsdWU6IEFYVmFsaWREYXRlVGltZVZhbHVlLCBvcHRpb25zPzogQVhEYXRlVGltZUZvcm1hdHRlck9wdGlvbnMgfCBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmIChpc05pbCh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgLy9cbiAgICBpZiAoIXRoaXMuY2FsZW5kYXJTZXJ2aWNlLmlzVmFsaWREYXRlKHZhbHVlKSkgcmV0dXJuICdJbnZhbGlkIGRhdGUnO1xuICAgIC8vXG4gICAgY29uc3QgZWZmZWN0aXZlT3B0aW9ucyA9XG4gICAgICB0eXBlb2Ygb3B0aW9ucyA9PSAnb2JqZWN0J1xuICAgICAgICA/IHtcbiAgICAgICAgICAgIGZvcm1hdDogb3B0aW9ucy5mb3JtYXQgPz8gJ3Nob3J0JyxcbiAgICAgICAgICAgIGxvY2FsZTogb3B0aW9ucy5sb2NhbGUsXG4gICAgICAgICAgICBjYWxlbmRhcjogb3B0aW9ucy5jYWxlbmRhciA/PyB0aGlzLmNhbGVuZGFyU2VydmljZS5jYWxlbmRhci5uYW1lKCksXG4gICAgICAgICAgfVxuICAgICAgICA6IHtcbiAgICAgICAgICAgIGZvcm1hdDogb3B0aW9ucyxcbiAgICAgICAgICAgIGNhbGVuZGFyOiB0aGlzLmNhbGVuZGFyU2VydmljZS5jYWxlbmRhci5uYW1lKCksXG4gICAgICAgICAgfTtcbiAgICAvL1xuICAgIGNvbnN0IGZvcm1hdHMgPSB0aGlzLmxvY2FsZVNlcnZpY2UuYWN0aXZlUHJvZmlsZSgpLmZvcm1hdHM7XG4gICAgY29uc3QgbWFwID0ge1xuICAgICAgc2hvcnQ6IGZvcm1hdHMudGltZS5zaG9ydCxcbiAgICAgIG1lZGl1bTogZm9ybWF0cy50aW1lLm1lZGl1bSxcbiAgICAgIGxvbmc6IGZvcm1hdHMudGltZS5sb25nLFxuICAgICAgZnVsbDogZm9ybWF0cy50aW1lLmZ1bGwsXG4gICAgfTtcbiAgICBjb25zdCBmb3JtYXQgPSBtYXBbZWZmZWN0aXZlT3B0aW9ucy5mb3JtYXQgYXMga2V5b2YgdHlwZW9mIG1hcF0gPz8gZWZmZWN0aXZlT3B0aW9ucy5mb3JtYXQgPz8gbWFwWydzaG9ydCddO1xuICAgIC8vXG4gICAgcmV0dXJuIHRoaXMuY2FsZW5kYXJTZXJ2aWNlXG4gICAgICAuY29udmVydCh2YWx1ZSwgZWZmZWN0aXZlT3B0aW9ucy5jYWxlbmRhciBhcyBzdHJpbmcpXG4gICAgICAuZm9ybWF0KGZvcm1hdCwgeyBsb2NhbGU6IGVmZmVjdGl2ZU9wdGlvbnMubG9jYWxlIH0pO1xuICB9XG59XG4iXX0=","import { Injectable } from '@angular/core';\nimport { isNil } from 'lodash-es';\nimport * as i0 from \"@angular/core\";\nexport class AXTimeLeftFormatter {\n get name() {\n return 'timeleft';\n }\n format(value, options) {\n const valueNumber = Number(value);\n const sign = valueNumber >= 0 ? 'left' : 'ago';\n const milliseconds = Math.abs(valueNumber);\n const durationInSeconds = Math.round(milliseconds / 1000);\n let format = options?.format;\n // Determine the best format if format is null\n if (isNil(format)) {\n if (durationInSeconds < 45)\n format = 's';\n else if (durationInSeconds < 60 * 45)\n format = 'm';\n else if (durationInSeconds < 60 * 60 * 22)\n format = 'h';\n else if (durationInSeconds < 60 * 60 * 24 * 26)\n format = 'd';\n else if (durationInSeconds < 60 * 60 * 24 * 320)\n format = 'M';\n else\n format = 'y';\n }\n // Helper function for zero-padding\n const pad = (num) => num.toString().padStart(2, '0');\n switch (format) {\n case 's':\n return `${durationInSeconds} seconds ${sign}`;\n case 'ss':\n return `${pad(durationInSeconds)} seconds ${sign}`;\n case 'm':\n return `${Math.round(durationInSeconds / 60)} minute${durationInSeconds >= 120 ? 's' : ''} ${sign}`;\n case 'mm':\n return `${pad(Math.round(durationInSeconds / 60))} minutes ${sign}`;\n case 'h':\n case 'H':\n if (durationInSeconds < 60 * 89)\n return `an hour ${sign}`;\n return `${Math.round(durationInSeconds / 3600)} hour${durationInSeconds >= 60 * 180 ? 's' : ''} ${sign}`;\n case 'hh':\n case 'HH':\n if (durationInSeconds < 60 * 89)\n return `01 hour ${sign}`;\n return `${pad(Math.round(durationInSeconds / 3600))} hours ${sign}`;\n case 'd':\n case 'D':\n if (durationInSeconds < 60 * 60 * 35)\n return `a day ${sign}`;\n return `${Math.round(durationInSeconds / (3600 * 24))} day${durationInSeconds >= 60 * 60 * 70 ? 's' : ''} ${sign}`;\n case 'dd':\n case 'DD':\n if (durationInSeconds < 60 * 60 * 35)\n return `01 day ${sign}`;\n return `${pad(Math.round(durationInSeconds / (3600 * 24)))} days ${sign}`;\n case 'M':\n if (durationInSeconds < 60 * 60 * 24 * 45)\n return `a month ${sign}`;\n return `${Math.round(durationInSeconds / (3600 * 24 * 30))} month${durationInSeconds >= 60 * 60 * 24 * 90 ? 's' : ''} ${sign}`;\n case 'MM':\n if (durationInSeconds < 60 * 60 * 24 * 45)\n return `01 month ${sign}`;\n return `${pad(Math.round(durationInSeconds / (3600 * 24 * 30)))} months ${sign}`;\n case 'y':\n case 'Y':\n if (durationInSeconds < 60 * 60 * 24 * 547)\n return `a year ${sign}`;\n return `${Math.round(durationInSeconds / (3600 * 24 * 365))} year${durationInSeconds >= 60 * 60 * 24 * 730 ? 's' : ''} ${sign}`;\n case 'yy':\n case 'YY':\n case 'yyyy':\n case 'YYYY':\n if (durationInSeconds < 60 * 60 * 24 * 547)\n return `01 year ${sign}`;\n return `${pad(Math.round(durationInSeconds / (3600 * 24 * 365)))} years ${sign}`;\n default:\n return 'Invalid format';\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXTimeLeftFormatter, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXTimeLeftFormatter }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXTimeLeftFormatter, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZWxlZnQuZm9ybWF0dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9kYXRlLXRpbWUvc3JjL2xpYi9mb3JtYXR0ZXJzL3RpbWVsZWZ0LmZvcm1hdHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxXQUFXLENBQUM7O0FBYWxDLE1BQU0sT0FBTyxtQkFBbUI7SUFDOUIsSUFBSSxJQUFJO1FBQ04sT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFzQixFQUFFLE9BQW9DO1FBQ2pFLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNsQyxNQUFNLElBQUksR0FBRyxXQUFXLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUMvQyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzNDLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDMUQsSUFBSSxNQUFNLEdBQUcsT0FBTyxFQUFFLE1BQU0sQ0FBQztRQUM3Qiw4Q0FBOEM7UUFDOUMsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUNsQixJQUFJLGlCQUFpQixHQUFHLEVBQUU7Z0JBQUUsTUFBTSxHQUFHLEdBQUcsQ0FBQztpQkFDcEMsSUFBSSxpQkFBaUIsR0FBRyxFQUFFLEdBQUcsRUFBRTtnQkFBRSxNQUFNLEdBQUcsR0FBRyxDQUFDO2lCQUM5QyxJQUFJLGlCQUFpQixHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRTtnQkFBRSxNQUFNLEdBQUcsR0FB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RSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsR0FBRztvQkFBRSxPQUFPLFdBQVcsSUFBSSxFQUFFLENBQUM7Z0JBQ3JFLE9BQU8sR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLElBQUksR0FBRyxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDO1lBQ25GO2dCQUNFLE9BQU8sZ0JBQWdCLENBQUM7UUFDNUIsQ0FBQztJQUNILENBQUM7OEdBcEVVLG1CQUFtQjtrSEFBbkIsbUJBQW1COzsyRkFBbkIsbUJBQW1CO2tCQUQvQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhGb3JtYXRPcHRpb25zLCBBWEZvcm1hdHRlciB9IGZyb20gJ0BhY29yZXgvY29yZS9mb3JtYXQnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXNOaWwgfSBmcm9tICdsb2Rhc2gtZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFYVGltZUxlZnRGb3JtYXR0ZXJPcHRpb25zIGV4dGVuZHMgQVhGb3JtYXRPcHRpb25zIHtcbiAgZm9ybWF0OiBzdHJpbmc7XG59XG5cbmRlY2xhcmUgbW9kdWxlICdAYWNvcmV4L2NvcmUvZm9ybWF0JyB7XG4gIGludGVyZmFjZSBBWEZvcm1hdE9wdGlvbnNNYXAge1xuICAgIHRpbWVsZWZ0OiBBWFRpbWVMZWZ0Rm9ybWF0dGVyT3B0aW9ucztcbiAgfVxufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQVhUaW1lTGVmdEZvcm1hdHRlciBpbXBsZW1lbnRzIEFYRm9ybWF0dGVyIHtcbiAgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ3RpbWVsZWZ0JztcbiAgfVxuXG4gIGZvcm1hdCh2YWx1ZTogbnVtYmVyIHwgc3RyaW5nLCBvcHRpb25zPzogQVhUaW1lTGVmdEZvcm1hdHRlck9wdGlvbnMpOiBzdHJpbmcge1xuICAgIGNvbnN0IHZhbHVlTnVtYmVyID0gTnVtYmVyKHZhbHVlKTtcbiAgICBjb25zdCBzaWduID0gdmFsdWVOdW1iZXIgPj0gMCA/ICdsZWZ0JyA6ICdhZ28nO1xuICAgIGNvbnN0IG1pbGxpc2Vjb25kcyA9IE1hdGguYWJzKHZhbHVlTnVtYmVyKTtcbiAgICBjb25zdCBkdXJhdGlvbkluU2Vjb25kcyA9IE1hdGgucm91bmQobWlsbGlzZWNvbmRzIC8gMTAwMCk7XG4gICAgbGV0IGZvcm1hdCA9IG9wdGlvbnM/LmZvcm1hdDtcbiAgICAvLyBEZXRlcm1pbmUgdGhlIGJlc3QgZm9ybWF0IGlmIGZvcm1hdCBpcyBudWxsXG4gICAgaWYgKGlzTmlsKGZvcm1hdCkpIHtcbiAgICAgIGlmIChkdXJhdGlvbkluU2Vjb25kcyA8IDQ1KSBmb3JtYXQgPSAncyc7XG4gICAgICBlbHNlIGlmIChkdXJhdGlvbkluU2Vjb25kcyA8IDYwICogNDUpIGZvcm1hdCA9ICdtJztcbiAgICAgIGVsc2UgaWYgKGR1cmF0aW9uSW5TZWNvbmRzIDwgNjAgKiA2MCAqIDIyKSBmb3JtYXQgPSAnaCc7XG4gICAgICBlbHNlIGlmIChkdXJhdGlvbkluU2Vjb25kcyA8IDYwICogNjAgKiAyNCAqIDI2KSBmb3JtYXQgPSAnZCc7XG4gICAgICBlbHNlIGlmIChkdXJhdGlvbkluU2Vjb25kcyA8IDYwICogNjAgKiAyNCAqIDMyMCkgZm9ybWF0ID0gJ00nO1xuICAgICAgZWxzZSBmb3JtYXQgPSAneSc7XG4gICAgfVxuXG4gICAgLy8gSGVscGVyIGZ1bmN0aW9uIGZvciB6ZXJvLXBhZGRpbmdcbiAgICBjb25zdCBwYWQgPSAobnVtOiBudW1iZXIpID0+IG51bS50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyk7XG5cbiAgICBzd2l0Y2ggKGZvcm1hdCkge1xuICAgICAgY2FzZSAncyc6XG4gICAgICAgIHJldHVybiBgJHtkdXJhdGlvbkluU2Vjb25kc30gc2Vjb25kcyAke3NpZ259YDtcbiAgICAgIGNhc2UgJ3NzJzpcbiAgICAgICAgcmV0dXJuIGAke3BhZChkdXJhdGlvbkluU2Vjb25kcyl9IHNlY29uZHMgJHtzaWdufWA7XG4gICAgICBjYXNlICdtJzpcbiAgICAgICAgcmV0dXJuIGAke01hdGgucm91bmQoZHVyYXRpb25JblNlY29uZHMgLyA2MCl9IG1pbnV0ZSR7ZHVyYXRpb25JblNlY29uZHMgPj0gMTIwID8gJ3MnIDogJyd9ICR7c2lnbn1gO1xuICAgICAgY2FzZSAnbW0nOlxuICAgICAgICByZXR1cm4gYCR7cGFkKE1hdGgucm91bmQoZHVyYXRpb25JblNlY29uZHMgLyA2MCkpfSBtaW51dGVzICR7c2lnbn1gO1xuICAgICAgY2FzZSAnaCc6XG4gICAgICBjYXNlICdIJzpcbiAgICAgICAgaWYgKGR1cmF0aW9uSW5TZWNvbmRzIDwgNjAgKiA4OSkgcmV0dXJuIGBhbiBob3VyICR7c2lnbn1gO1xuICAgICAgICByZXR1cm4gYCR7TWF0aC5yb3VuZChkdXJhdGlvbkluU2Vjb25kcyAvIDM2MDApfSBob3VyJHtkdXJhdGlvbkluU2Vjb25kcyA+PSA2MCAqIDE4MCA/ICdzJyA6ICcnfSAke3NpZ259YDtcbiAgICAgIGNhc2UgJ2hoJzpcbiAgICAgIGNhc2UgJ0hIJzpcbiAgICAgICAgaWYgKGR1cmF0aW9uSW5TZWNvbmRzIDwgNjAgKiA4OSkgcmV0dXJuIGAwMSBob3VyICR7c2lnbn1gO1xuICAgICAgICByZXR1cm4gYCR7cGFkKE1hdGgucm91bmQoZHVyYXRpb25JblNlY29uZHMgLyAzNjAwKSl9IGhvdXJzICR7c2lnbn1gO1xuICAgICAgY2FzZSAnZCc6XG4gICAgICBjYXNlICdEJzpcbiAgICAgICAgaWYgKGR1cmF0aW9uSW5TZWNvbmRzIDwgNjAgKiA2MCAqIDM1KSByZXR1cm4gYGEgZGF5ICR7c2lnbn1gO1xuICAgICAgICByZXR1cm4gYCR7TWF0aC5yb3VuZChkdXJhdGlvbkluU2Vjb25kcyAvICgzNjAwICogMjQpKX0gZGF5JHtkdXJhdGlvbkluU2Vjb25kcyA+PSA2MCAqIDYwICogNzAgPyAncycgOiAnJ30gJHtzaWdufWA7XG4gICAgICBjYXNlICdkZCc6XG4gICAgICBjYXNlICdERCc6XG4gICAgICAgIGlmIChkdXJhdGlvbkluU2Vjb25kcyA8IDYwICogNjAgKiAzNSkgcmV0dXJuIGAwMSBkYXkgJHtzaWdufWA7XG4gICAgICAgIHJldHVybiBgJHtwYWQoTWF0aC5yb3VuZChkdXJhdGlvbkluU2Vjb25kcyAvICgzNjAwICogMjQpKSl9IGRheXMgJHtzaWdufWA7XG4gICAgICBjYXNlICdNJzpcbiAgICAgICAgaWYgKGR1cmF0aW9uSW5TZWNvbmRzIDwgNjAgKiA2MCAqIDI0ICogNDUpIHJldHVybiBgYSBtb250aCAke3NpZ259YDtcbiAgICAgICAgcmV0dXJuIGAke01hdGgucm91bmQoZHVyYXRpb25JblNlY29uZHMgLyAoMzYwMCAqIDI0ICogMzApKX0gbW9udGgke2R1cmF0aW9uSW5TZWNvbmRzID49IDYwICogNjAgKiAyNCAqIDkwID8gJ3MnIDogJyd9ICR7c2lnbn1gO1xuICAgICAgY2FzZSAnTU0nOlxuICAgICAgICBpZiAoZHVyYXRpb25JblNlY29uZHMgPCA2MCAqIDYwICogMjQgKiA0NSkgcmV0dXJuIGAwMSBtb250aCAke3NpZ259YDtcbiAgICAgICAgcmV0dXJuIGAke3BhZChNYXRoLnJvdW5kKGR1cmF0aW9uSW5TZWNvbmRzIC8gKDM2MDAgKiAyNCAqIDMwKSkpfSBtb250aHMgJHtzaWdufWA7XG4gICAgICBjYXNlICd5JzpcbiAgICAgIGNhc2UgJ1knOlxuICAgICAgICBpZiAoZHVyYXRpb25JblNlY29uZHMgPCA2MCAqIDYwICogMjQgKiA1NDcpIHJldHVybiBgYSB5ZWFyICR7c2lnbn1gO1xuICAgICAgICByZXR1cm4gYCR7TWF0aC5yb3VuZChkdXJhdGlvbkluU2Vjb25kcyAvICgzNjAwICogMjQgKiAzNjUpKX0geWVhciR7ZHVyYXRpb25JblNlY29uZHMgPj0gNjAgKiA2MCAqIDI0ICogNzMwID8gJ3MnIDogJyd9ICR7c2lnbn1gO1xuICAgICAgY2FzZSAneXknOlxuICAgICAgY2FzZSAnWVknOlxuICAgICAgY2FzZSAneXl5eSc6XG4gICAgICBjYXNlICdZWVlZJzpcbiAgICAgICAgaWYgKGR1cmF0aW9uSW5TZWNvbmRzIDwgNjAgKiA2MCAqIDI0ICogNTQ3KSByZXR1cm4gYDAxIHllYXIgJHtzaWdufWA7XG4gICAgICAgIHJldHVybiBgJHtwYWQoTWF0aC5yb3VuZChkdXJhdGlvbkluU2Vjb25kcyAvICgzNjAwICogMjQgKiAzNjUpKSl9IHllYXJzICR7c2lnbn1gO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdJbnZhbGlkIGZvcm1hdCc7XG4gICAgfVxuICB9XG59XG4iXX0=","import { AXFormatModule } from '@acorex/core/format';\nimport { NgModule } from '@angular/core';\nimport { AXDateTimePipe } from './datetime.pipe';\nimport { AXDateFormatter } from './formatters/date.formatter';\nimport { AXDateTimeFormatter } from './formatters/datetime.formatter';\nimport { AXTimeDurationFormatter } from './formatters/time-duration.formatter';\nimport { AXTimeFormatter } from './formatters/time.formatter';\nimport { AXTimeLeftFormatter } from './formatters/timeleft.formatter';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/core/format\";\nexport class AXDateTimeModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXDateTimeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.0.4\", ngImport: i0, type: AXDateTimeModule, imports: [i1.AXFormatModule, AXDateTimePipe], exports: [AXDateTimePipe] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXDateTimeModule, imports: [AXFormatModule.forChild({\n formatters: [AXDateTimeFormatter, AXDateFormatter, AXTimeFormatter, AXTimeLeftFormatter, AXTimeDurationFormatter],\n })] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXDateTimeModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [\n AXFormatModule.forChild({\n formatters: [AXDateTimeFormatter, AXDateFormatter, AXTimeFormatter, AXTimeLeftFormatter, AXTimeDurationFormatter],\n }),\n AXDateTimePipe,\n ],\n exports: [AXDateTimePipe],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9kYXRlLXRpbWUvc3JjL2xpYi9kYXRldGltZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMvRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDOUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0saUNBQWlDLENBQUM7OztBQVd0RSxNQUFNLE9BQU8sZ0JBQWdCOzhHQUFoQixnQkFBZ0I7K0dBQWhCLGdCQUFnQiwrQkFKekIsY0FBYyxhQUVOLGNBQWM7K0dBRWIsZ0JBQWdCLFlBUHpCLGNBQWMsQ0FBQyxRQUFRLENBQUM7Z0JBQ3RCLFVBQVUsRUFBRSxDQUFDLG1CQUFtQixFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsbUJBQW1CLEVBQUUsdUJBQXVCLENBQUM7YUFDbEgsQ0FBQzs7MkZBS08sZ0JBQWdCO2tCQVQ1QixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCxjQUFjLENBQUMsUUFBUSxDQUFDOzRCQUN0QixVQUFVLEVBQUUsQ0FBQyxtQkFBbUIsRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLG1CQUFtQixFQUFFLHVCQUF1QixDQUFDO3lCQUNsSCxDQUFDO3dCQUNGLGNBQWM7cUJBQ2Y7b0JBQ0QsT0FBTyxFQUFFLENBQUMsY0FBYyxDQUFDO2lCQUMxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYRm9ybWF0TW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb3JlL2Zvcm1hdCc7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhEYXRlVGltZVBpcGUgfSBmcm9tICcuL2RhdGV0aW1lLnBpcGUnO1xuaW1wb3J0IHsgQVhEYXRlRm9ybWF0dGVyIH0gZnJvbSAnLi9mb3JtYXR0ZXJzL2RhdGUuZm9ybWF0dGVyJztcbmltcG9ydCB7IEFYRGF0ZVRpbWVGb3JtYXR0ZXIgfSBmcm9tICcuL2Zvcm1hdHRlcnMvZGF0ZXRpbWUuZm9ybWF0dGVyJztcbmltcG9ydCB7IEFYVGltZUR1cmF0aW9uRm9ybWF0dGVyIH0gZnJvbSAnLi9mb3JtYXR0ZXJzL3RpbWUtZHVyYXRpb24uZm9ybWF0dGVyJztcbmltcG9ydCB7IEFYVGltZUZvcm1hdHRlciB9IGZyb20gJy4vZm9ybWF0dGVycy90aW1lLmZvcm1hdHRlcic7XG5pbXBvcnQgeyBBWFRpbWVMZWZ0Rm9ybWF0dGVyIH0gZnJvbSAnLi9mb3JtYXR0ZXJzL3RpbWVsZWZ0LmZvcm1hdHRlcic7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtcbiAgICBBWEZvcm1hdE1vZHVsZS5mb3JDaGlsZCh7XG4gICAgICBmb3JtYXR0ZXJzOiBbQVhEYXRlVGltZUZvcm1hdHRlciwgQVhEYXRlRm9ybWF0dGVyLCBBWFRpbWVGb3JtYXR0ZXIsIEFYVGltZUxlZnRGb3JtYXR0ZXIsIEFYVGltZUR1cmF0aW9uRm9ybWF0dGVyXSxcbiAgICB9KSxcbiAgICBBWERhdGVUaW1lUGlwZSxcbiAgXSxcbiAgZXhwb3J0czogW0FYRGF0ZVRpbWVQaXBlXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhEYXRlVGltZU1vZHVsZSB7fVxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LWNvcmUtZGF0ZS10aW1lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9kYXRlLXRpbWUvc3JjL2Fjb3JleC1jb3JlLWRhdGUtdGltZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}
|
1
|
+
{"version":3,"file":"acorex-core-date-time.mjs","sources":["../tmp-esm2022/date-time/lib/datetime.types.js","../tmp-esm2022/date-time/lib/gregorian.calendar.js","../tmp-esm2022/date-time/lib/solar-hijri.calendar.js","../tmp-esm2022/date-time/lib/dateTime.config.js","../tmp-esm2022/date-time/lib/holidays.loader.js","../tmp-esm2022/date-time/lib/calendar.service.js","../tmp-esm2022/date-time/lib/datetime.pipe.js","../tmp-esm2022/date-time/lib/formatters/date.formatter.js","../tmp-esm2022/date-time/lib/formatters/datetime.formatter.js","../tmp-esm2022/date-time/lib/formatters/time-duration.formatter.js","../tmp-esm2022/date-time/lib/formatters/time.formatter.js","../tmp-esm2022/date-time/lib/formatters/timeleft.formatter.js","../tmp-esm2022/date-time/lib/datetime.module.js","../tmp-esm2022/date-time/acorex-core-date-time.js"],"sourcesContent":["import { isBrowser } from '@acorex/core/platform';\nimport { translateSync } from '@acorex/core/translation';\nimport { defaults, orderBy } from 'lodash-es';\nexport class AXCalendar {\n /**\n * @ignore\n */\n constructor(config) {\n this._config = config;\n }\n get weekend() {\n return this._config.weekend;\n }\n // public get formats(): AXDateTimeDisplayFormats {\n // return this._config.formats;\n // }\n get weekdays() {\n return this._config.weekdays;\n }\n}\nexport class AXDateTime {\n get date() {\n return this._date;\n }\n get calendar() {\n return this._calendar;\n }\n constructor(value, calendar) {\n //TODO: remove unused items\n this._formatKeys = {\n // 0 1 ... 58 59\n s: () => this.date.getSeconds().toString(),\n // 00 01 ... 58 59\n ss: () => this.pad(this.date.getSeconds(), 2),\n // 0 1 ... 5 6 day of week ***\n d: () => (this.calendar.dayOfWeek(this.date) - 1).toString(),\n // Su Mo ... Fr Sa ***\n dd: () => translateSync(`@acorex:dateTime.weekdays.short.${this.calendar.weekdays[this.calendar.dayOfWeek(this.date) - 1]}`),\n ddd: () => translateSync(`@acorex:dateTime.weekdays.short.${this.calendar.weekdays[this.calendar.dayOfWeek(this.date) - 1]}`),\n // Sunday Monday ... Friday Saturday\n dddd: () => translateSync(`@acorex:dateTime.weekdays.long.${this.calendar.weekdays[this.calendar.dayOfWeek(this.date) - 1]}`),\n // 1 2 ... 30 31\n D: () => this.calendar.dayOfMonth(this.date).toString(),\n // 01 02 ... 30 31 day of month\n DD: () => this.pad(this.calendar.dayOfMonth(this.date), 2),\n // 1 2 ... 364 365\n DDD: () => this.calendar.dayOfYear(this.date).toString(),\n // 001 002 ... 364 365 day of year\n DDDD: () => this.pad(this.calendar.dayOfYear(this.date), 3),\n // 1 2 ... 52 53\n w: () => this.calendar.weekOfYear(this.date).toString(),\n // 01 02 ... 52 53\n ww: () => this.pad(this.calendar.weekOfYear(this.date), 2),\n // 1 2 ... 11 12\n M: () => this.calendar.monthOfYear(this.date).toString(),\n // 01 02 ... 11 12\n MM: () => this.pad(this.calendar.monthOfYear(this.date), 2),\n // Jan Feb ... Nov Dec\n MMM: () => translateSync(`@acorex:dateTime.months.${this.calendar.name()}.short.${this.calendar.monthOfYear(this.date) - 1}`),\n // January February ... November December\n MMMM: () => translateSync(`@acorex:dateTime.months.${this.calendar.name()}.long.${this.calendar.monthOfYear(this.date) - 1}`),\n // 1 2 ... 7\n E: () => this.calendar.dayOfWeek(this.date).toString(),\n // 01 02 ... 07\n EE: () => this.pad(this.calendar.dayOfWeek(this.date), 2),\n // Sun Mon ... Sat\n EEE: () => translateSync(`@acorex:dateTime.weekdays.short.${this.calendar.weekdays[this.calendar.dayOfWeek(this.date) - 1]}`),\n // Sunday Monday ... Saturday\n EEEE: () => translateSync(`@acorex:dateTime.weekdays.long.${this.calendar.weekdays[this.calendar.dayOfWeek(this.date) - 1]}`),\n // 1 2 ... 2020 ...\n y: () => this.calendar.year(this.date).toString(),\n // 70 71 ... 29 30\n yy: () => this.pad(this.calendar.year(this.date), 4).substring(2),\n YY: () => this.pad(this.calendar.year(this.date), 4).substring(2),\n // 1970 1971 ... 2029 2030\n yyyy: () => this.pad(this.calendar.year(this.date), 4),\n YYYY: () => this.pad(this.calendar.year(this.date), 4),\n // 0 1 ... 58 59\n m: () => this.date.getMinutes().toString(),\n // 00 01 ... 58 59\n mm: () => this.pad(this.date.getMinutes(), 2),\n // 0 1 ... 11 12\n h: () => (this.date.getHours() % 12 || 12).toString(),\n // 00 01 ... 11 12\n hh: () => this.pad(this.date.getHours() % 12 || 12, 2),\n // 0 1 ... 23 24\n H: () => this.date.getHours().toString(),\n // 00 01 ... 23 24\n HH: () => this.pad(this.date.getHours(), 2),\n // TODO: i18n\n // AM PM\n A: () => (this.date.getHours() < 12 ? 'AM' : 'PM').toUpperCase(),\n // am pm\n a: () => (this.date.getHours() < 12 ? 'am' : 'pm').toLowerCase(),\n // TODO: review\n Z: () => '',\n ZZZZ: () => '',\n //\n date: (options) => this.format(this.getDateTimeFormatByLocale(options.locale, 'shortDate')),\n shortDate: (options) => this.format(this.getDateTimeFormatByLocale(options.locale, 'shortDate')),\n longDate: (options) => this.format(this.getDateTimeFormatByLocale(options.locale, 'longDate')),\n //\n shortTime: (options) => this.format(this.getDateTimeFormatByLocale(options.locale, 'shortTime')),\n time: (options) => this.format(this.getDateTimeFormatByLocale(options.locale, 'shortTime')),\n longTime: (options) => this.format(this.getDateTimeFormatByLocale(options.locale, 'longTime')),\n //\n datetime: (options) => this.format('date time', { locale: options.locale }),\n };\n this._language = () => (isBrowser() ? navigator.language : 'en-US');\n this._calendar = calendar;\n this._date = value;\n }\n clone() {\n return new AXDateTime(this.date, this.calendar);\n }\n get dayOfMonth() {\n return this._calendar.dayOfMonth(this.date);\n }\n get dayOfYear() {\n return this._calendar.dayOfYear(this.date);\n }\n get dayOfWeek() {\n return this._calendar.dayOfWeek(this.date);\n }\n get hour() {\n return this._date.getHours();\n }\n get minute() {\n return this._date.getMinutes();\n }\n get second() {\n return this._date.getSeconds();\n }\n get year() {\n return this._calendar.year(this.date);\n }\n get monthOfYear() {\n return this._calendar.monthOfYear(this.date);\n }\n get weekOfYear() {\n return this._calendar.weekOfYear(this.date);\n }\n get month() {\n return new AXCalendarMonth(this);\n }\n add(unit, amount) {\n return this._calendar.add(this.date, unit, amount);\n }\n set(unit = 'day', value) {\n return this._calendar.set(this.date, unit, value);\n }\n duration(end) {\n const date = end instanceof AXDateTime ? end.date : end;\n const val = new AXDateTime(date, this.calendar);\n const range = new AXDateTimeRange(this, val);\n return range.duration();\n }\n startOf(unit = 'day') {\n return this._calendar.startOf(this.date, unit);\n }\n endOf(unit = 'day') {\n return this._calendar.endOf(this.date, unit);\n }\n format(format = this.getDateTimeFormatByLocale(this._language(), 'shortDate'), options) {\n const effectiveOptions = defaults({}, options, {\n locale: this._language(),\n });\n const re = new RegExp(orderBy(Object.keys(this._formatKeys), (c) => c.length, ['desc']).join('|'), 'gi');\n return format.replace(re, (matched) => {\n const f = this._formatKeys[matched];\n if (f && typeof f === 'function') {\n const r = f(effectiveOptions);\n return r;\n }\n return matched;\n });\n }\n getDateTimeFormatByLocale(locale, style) {\n let options = {};\n switch (style) {\n case 'shortDate': // Year, Month, Day\n options = { year: 'numeric', month: '2-digit', day: '2-digit' };\n break;\n case 'longDate': // Weekday, Month name, Day, Year\n options = {\n weekday: 'long',\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n };\n break;\n case 'shortTime': // Hour, Minute\n options = { hour: '2-digit', minute: '2-digit', hour12: false };\n break;\n case 'longTime': // Hour, Minute, Second\n options = {\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit',\n hour12: false,\n };\n break;\n }\n const formatter = new Intl.DateTimeFormat(locale, options);\n // Get parts of the date and/or time\n const parts = formatter.formatToParts(new Date());\n // Map parts to their respective format\n const formatMap = {\n day: 'dd',\n month: style == 'longDate' ? 'MMMM' : 'MM',\n year: 'yyyy',\n hour: 'HH',\n minute: 'mm',\n second: 'ss',\n weekday: 'E',\n literal: '',\n };\n // Construct the date and/or time format string\n return parts\n .map((part) => {\n if (part.type === 'literal') {\n // Use the literal part directly as separator\n return part.value;\n }\n else {\n return formatMap[part.type] || part.value;\n }\n })\n .join('');\n }\n pad(n, width, z = '0') {\n n = n + '';\n return n.length >= width ? n : new Array(width - n.length + 1).join(z) + n;\n }\n equal(value, unit = 'day') {\n return this.compare(value, unit) == 0;\n }\n compare(value, unit = 'day') {\n const date = value instanceof AXDateTime ? value.date : value;\n const val = new AXDateTime(date, this.calendar);\n const func = (v1, v2) => {\n if (v1 == v2) {\n return 0;\n }\n else if (v1 > v2) {\n return 1;\n }\n else {\n return -1;\n }\n };\n let p = 0;\n switch (unit) {\n case 'year':\n return func(this.year, val.year);\n case 'week':\n p = this.compare(val, 'year');\n return p == 0 ? func(this.weekOfYear, val.weekOfYear) : p;\n case 'month':\n p = this.compare(val, 'year');\n return p == 0 ? func(this.monthOfYear, val.monthOfYear) : p;\n case 'day':\n p = this.compare(val, 'year');\n return p == 0 ? func(this.dayOfYear, val.dayOfYear) : p;\n case 'hour':\n p = this.compare(val, 'day');\n return p == 0 ? func(this.hour, val.hour) : p;\n case 'minute':\n p = this.compare(val, 'hour');\n return p == 0 ? func(this.minute, val.minute) : p;\n case 'second':\n p = this.compare(val, 'minute');\n return p == 0 ? func(this.second, val.second) : p;\n default:\n return func(this.date.getTime(), val.date.getTime());\n }\n }\n}\nexport class AXCalendarMonth {\n get range() {\n return this._range;\n }\n set range(v) {\n this._range = v;\n }\n get totalDays() {\n return this.range.endTime.dayOfMonth;\n }\n constructor(date) {\n this.index = date.date.getMonth();\n this.name = date.format('MMMM');\n this.range = new AXDateTimeRange(new AXDateTime(date.startOf('month').date, date.calendar), new AXDateTime(date.endOf('month').date, date.calendar));\n }\n}\nexport class AXDateTimeRange {\n get startTime() {\n return this._startTime;\n }\n get endTime() {\n return this._endTime;\n }\n constructor(startTime, endTime) {\n this._startTime = startTime;\n this._endTime = endTime;\n }\n duration() {\n const result = {\n miliseconds: 0,\n seconds: 0,\n minutes: 0,\n hours: 0,\n days: 0,\n // NOTE: Calculating exact calendar months/years component is complex\n // from milliseconds alone. We'll set these to 0.\n months: 0,\n years: 0,\n total: {\n miliseconds: 0,\n seconds: 0,\n minutes: 0,\n hours: 0,\n days: 0,\n weeks: 0,\n // NOTE: total.months and total.years are approximate based on average lengths\n months: 0,\n years: 0,\n },\n };\n // Constants for time units in milliseconds\n const ONE_MILLISECOND = 1;\n const ONE_SECOND = 1000 * ONE_MILLISECOND;\n const ONE_MINUTE = 60 * ONE_SECOND;\n const ONE_HOUR = 60 * ONE_MINUTE;\n const ONE_DAY = 24 * ONE_HOUR;\n const ONE_WEEK = 7 * ONE_DAY;\n // Average lengths for approximate total months/years\n const ONE_YEAR_AVG = 365.25 * ONE_DAY;\n const ONE_MONTH_AVG = ONE_YEAR_AVG / 12;\n const startTime = this._startTime.date.getTime();\n const endTime = this._endTime.date.getTime();\n // Calculate the absolute difference in milliseconds\n const diff = Math.abs(endTime - startTime);\n // --- Calculate Total Durations ---\n result.total.miliseconds = diff;\n result.total.seconds = diff / ONE_SECOND;\n result.total.minutes = diff / ONE_MINUTE;\n result.total.hours = diff / ONE_HOUR;\n result.total.days = diff / ONE_DAY; // Includes fractional days\n result.total.weeks = diff / ONE_WEEK; // Includes fractional weeks\n result.total.months = diff / ONE_MONTH_AVG; // Approximate\n result.total.years = diff / ONE_YEAR_AVG; // Approximate\n // --- Calculate Component Parts ---\n let remainingMillis = diff;\n // Calculate full days and update remaining milliseconds\n result.days = Math.floor(remainingMillis / ONE_DAY);\n remainingMillis %= ONE_DAY; // Get the remainder milliseconds after taking out full days\n // Calculate full hours from the remainder\n result.hours = Math.floor(remainingMillis / ONE_HOUR);\n remainingMillis %= ONE_HOUR; // Get the remainder milliseconds after taking out full hours\n // Calculate full minutes from the remainder\n result.minutes = Math.floor(remainingMillis / ONE_MINUTE);\n remainingMillis %= ONE_MINUTE; // Get the remainder milliseconds after taking out full minutes\n // Calculate full seconds from the remainder\n result.seconds = Math.floor(remainingMillis / ONE_SECOND);\n remainingMillis %= ONE_SECOND; // Get the remainder milliseconds after taking out full seconds\n // The final remainder is the milliseconds component\n result.miliseconds = remainingMillis;\n // As noted above, setting month/year components to 0 as accurate\n // calendar-aware calculation is not implemented here.\n result.months = 0;\n result.years = 0;\n return result;\n }\n enumurate(unit = 'day', amount = 1) {\n const result = [];\n let item = this._startTime.clone();\n while (item.compare(this._endTime, unit) < 1) {\n if (!result.some((c) => c.equal(item, unit))) {\n result.push(item);\n }\n item = item.add(unit, amount);\n }\n return result;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUudHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL2RhdGUtdGltZS9zcmMvbGliL2RhdGV0aW1lLnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUF3RDlDLE1BQU0sT0FBZ0IsVUFBVTtJQUc5Qjs7T0FFRztJQUNILFlBQVksTUFBd0I7UUFDbEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQVcsT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO0lBQzlCLENBQUM7SUFFRCxtREFBbUQ7SUFDbkQsaUNBQWlDO0lBQ2pDLElBQUk7SUFFSixJQUFXLFFBQVE7UUFDakIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQztJQUMvQixDQUFDO0NBMkJGO0FBRUQsTUFBTSxPQUFPLFVBQVU7SUFHckIsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFHRCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUVELFlBQVksS0FBVyxFQUFFLFFBQW9CO1FBd0U3QywyQkFBMkI7UUFDbkIsZ0JBQVcsR0FBRztZQUNwQixnQkFBZ0I7WUFDaEIsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsUUFBUSxFQUFFO1lBQzFDLGtCQUFrQjtZQUNsQixFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxD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QUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7WUFDakUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7WUFDakUsMEJBQTBCO1lBQzFCLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDdEQsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUV0RCxnQkFBZ0I7WUFDaEIsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsUUFBUSxFQUFFO1lBQzFDLGtCQUFrQjtZQUNsQixFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUU3QyxnQkFBZ0I7WUFDaEIsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFO1lBQ3JELGtCQUFrQjtZQUNsQixFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFF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UUFDbkMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDN0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDN0MsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNwQixDQUFDO1lBQ0QsSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ2hDLENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc0Jyb3dzZXIgfSBmcm9tICdAYWNvcmV4L2NvcmUvcGxhdGZvcm0nO1xuaW1wb3J0IHsgdHJhbnNsYXRlU3luYyB9IGZyb20gJ0BhY29yZXgvY29yZS90cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBkZWZhdWx0cywgb3JkZXJCeSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5cbmV4cG9ydCB0eXBlIFRpbWVVbml0ID0gJ21zJyB8ICdzZWNvbmQnIHwgJ21pbnV0ZScgfCAnaG91cicgfCAnZGF5JyB8ICdtb250aCcgfCAneWVhcicgfCAnd2Vlayc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhEYXRlVmFsdWUge1xuICB5ZWFyOiBudW1iZXI7XG4gIG1vbnRoOiBudW1iZXI7XG4gIGRheTogbnVtYmVyO1xuICBob3Vycz86IG51bWJlcjtcbiAgbWludXRlcz86IG51bWJlcjtcbiAgc2Vjb25kcz86IG51bWJlcjtcbiAgbXM/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhEYXRlVGltZURpc3BsYXlGb3JtYXRzIHtcbiAgZGF0ZUlucHV0OiBzdHJpbmc7XG4gIHRpbWVJbnB1dDogc3RyaW5nO1xuICBkYXRlVGltZUlucHV0OiBzdHJpbmc7XG4gIGRhdGVEaXNwbGF5OiBzdHJpbmc7XG4gIHRpbWVEaXNwbGF5OiBzdHJpbmc7XG4gIGRhdGVUaW1lRGlzcGxheTogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBBWERhdGVUaW1lVW5pdE5hbWVzID0ge1xuICBsb25nOiBzdHJpbmc7XG4gIHNob3J0OiBzdHJpbmc7XG4gIGxldHRlcjogc3RyaW5nO1xufVtdO1xuXG5leHBvcnQgdHlwZSBBWERhdGVUaW1lUGFydCA9IHtcbiAga2V5OiBzdHJpbmc7XG4gIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG4gIHBsYWNlaG9sZGVyczogc3RyaW5nW107XG4gIHR5cGVkVmFsdWU/OiBzdHJpbmcgfCBudWxsO1xuICBkZWZhdWx0OiBudW1iZXI7XG4gIGVuYWJsZWQ6IGJvb2xlYW47XG4gIHJlYWxWYWx1ZTogKCkgPT4gc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgQVhEYXRlVGltZVBhcnRzID0ge1xuICB5ZWFyOiBBWERhdGVUaW1lUGFydDtcbiAgbW9udGg6IEFYRGF0ZVRpbWVQYXJ0O1xuICBkYXk6IEFYRGF0ZVRpbWVQYXJ0O1xuICBob3VyOiBBWERhdGVUaW1lUGFydDtcbiAgbWludXRlOiBBWERhdGVUaW1lUGFydDtcbiAgc2Vjb25kOiBBWERhdGVUaW1lUGFydDtcbiAgQU1QTTogQVhEYXRlVGltZVBhcnQ7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIEFYQ2FsZW5kYXJDb25maWcge1xuICB3ZWVrZGF5czogbnVtYmVyW107XG4gIHdlZWtlbmQ6IG51bWJlcltdO1xufVxuXG5leHBvcnQgdHlwZSBBWFZhbGlkRGF0ZVRpbWVWYWx1ZSA9IEFYRGF0ZVRpbWUgfCBEYXRlIHwgc3RyaW5nIHwgQVhEYXRlVmFsdWU7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBWENhbGVuZGFyIHtcbiAgcHJpdmF0ZSBfY29uZmlnOiBBWENhbGVuZGFyQ29uZmlnO1xuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihjb25maWc6IEFYQ2FsZW5kYXJDb25maWcpIHtcbiAgICB0aGlzLl9jb25maWcgPSBjb25maWc7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHdlZWtlbmQoKTogbnVtYmVyW10ge1xuICAgIHJldHVybiB0aGlzLl9jb25maWcud2Vla2VuZDtcbiAgfVxuXG4gIC8vIHB1YmxpYyBnZXQgZm9ybWF0cygpOiBBWERhdGVUaW1lRGlzcGxheUZvcm1hdHMge1xuICAvLyAgIHJldHVybiB0aGlzLl9jb25maWcuZm9ybWF0cztcbiAgLy8gfVxuXG4gIHB1YmxpYyBnZXQgd2Vla2RheXMoKTogbnVtYmVyW10ge1xuICAgIHJldHVybiB0aGlzLl9jb25maWcud2Vla2RheXM7XG4gIH1cblxuICBhYnN0cmFjdCBuYW1lKCk6IHN0cmluZztcblxuICBhYnN0cmFjdCBkYXlPZk1vbnRoKGRhdGU6IERhdGUpOiBudW1iZXI7XG5cbiAgYWJzdHJhY3QgZGF5T2ZZZWFyKGRhdGU6IERhdGUpOiBudW1iZXI7XG5cbiAgYWJzdHJhY3QgZGF5T2ZXZWVrKGRhdGU6IERhdGUpOiBudW1iZXI7XG5cbiAgYWJzdHJhY3QgbW9udGhPZlllYXIoZGF0ZTogRGF0ZSk6IG51bWJlcjtcblxuICBhYnN0cmFjdCB3ZWVrT2ZZZWFyKGRhdGU6IERhdGUpOiBudW1iZXI7XG5cbiAgYWJzdHJhY3QgeWVhcihkYXRlOiBEYXRlKTogbnVtYmVyO1xuXG4gIGFic3RyYWN0IGFkZChkYXRlOiBEYXRlLCB1bml0OiBUaW1lVW5pdCwgYW1vdW50OiBudW1iZXIpOiBBWERhdGVUaW1lO1xuXG4gIGFic3RyYWN0IHNldChkYXRlOiBEYXRlLCB1bml0OiBUaW1lVW5pdCwgdmFsdWU6IG51bWJlcik6IEFYRGF0ZVRpbWU7XG5cbiAgYWJzdHJhY3Qgc3RhcnRPZihkYXRlOiBEYXRlLCB1bml0OiBUaW1lVW5pdCk6IEFYRGF0ZVRpbWU7XG5cbiAgYWJzdHJhY3QgZW5kT2YoZGF0ZTogRGF0ZSwgdW5pdDogVGltZVVuaXQpOiBBWERhdGVUaW1lO1xuXG4gIGFic3RyYWN0IGNyZWF0ZSh2YWx1ZTogQVhEYXRlVmFsdWUpOiBBWERhdGVUaW1lO1xuXG4gIGFic3RyYWN0IHBhcnNlKHZhbHVlOiBzdHJpbmcpOiBBWERhdGVUaW1lO1xufVxuXG5leHBvcnQgY2xhc3MgQVhEYXRlVGltZSB7XG4gIHByaXZhdGUgX2RhdGU6IERhdGU7XG5cbiAgZ2V0IGRhdGUoKTogRGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGU7XG4gIH1cblxuICBwcml2YXRlIF9jYWxlbmRhcjogQVhDYWxlbmRhcjtcbiAgZ2V0IGNhbGVuZGFyKCk6IEFYQ2FsZW5kYXIge1xuICAgIHJldHVybiB0aGlzLl9jYWxlbmRhcjtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHZhbHVlOiBEYXRlLCBjYWxlbmRhcjogQVhDYWxlbmRhcikge1xuICAgIHRoaXMuX2NhbGVuZGFyID0gY2FsZW5kYXI7XG4gICAgdGhpcy5fZGF0ZSA9IHZhbHVlO1xuICB9XG5cbiAgY2xvbmUoKTogQVhEYXRlVGltZSB7XG4gICAgcmV0dXJuIG5ldyBBWERhdGVUaW1lKHRoaXMuZGF0ZSwgdGhpcy5jYWxlbmRhcik7XG4gIH1cblxuICBnZXQgZGF5T2ZNb250aCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9jYWxlbmRhci5kYXlPZk1vbnRoKHRoaXMuZGF0ZSk7XG4gIH1cblxuICBnZXQgZGF5T2ZZZWFyKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2NhbGVuZGFyLmRheU9mWWVhcih0aGlzLmRhdGUpO1xuICB9XG5cbiAgZ2V0IGRheU9mV2VlaygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9jYWxlbmRhci5kYXlPZldlZWsodGhpcy5kYXRlKTtcbiAgfVxuXG4gIGdldCBob3VyKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGUuZ2V0SG91cnMoKTtcbiAgfVxuXG4gIGdldCBtaW51dGUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0ZS5nZXRNaW51dGVzKCk7XG4gIH1cblxuICBnZXQgc2Vjb25kKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGUuZ2V0U2Vjb25kcygpO1xuICB9XG5cbiAgZ2V0IHllYXIoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fY2FsZW5kYXIueWVhcih0aGlzLmRhdGUpO1xuICB9XG5cbiAgZ2V0IG1vbnRoT2ZZZWFyKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2NhbGVuZGFyLm1vbnRoT2ZZZWFyKHRoaXMuZGF0ZSk7XG4gIH1cblxuICBnZXQgd2Vla09mWWVhcigpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9jYWxlbmRhci53ZWVrT2ZZZWFyKHRoaXMuZGF0ZSk7XG4gIH1cblxuICBnZXQgbW9udGgoKTogQVhDYWxlbmRhck1vbnRoIHtcbiAgICByZXR1cm4gbmV3IEFYQ2FsZW5kYXJNb250aCh0aGlzKTtcbiAgfVxuXG4gIGFkZCh1bml0OiBUaW1lVW5pdCwgYW1vdW50OiBudW1iZXIpOiBBWERhdGVUaW1lIHtcbiAgICByZXR1cm4gdGhpcy5fY2FsZW5kYXIuYWRkKHRoaXMuZGF0ZSwgdW5pdCwgYW1vdW50KTtcbiAgfVxuXG4gIHNldCh1bml0OiBUaW1lVW5pdCA9ICdkYXknLCB2YWx1ZTogbnVtYmVyKTogQVhEYXRlVGltZSB7XG4gICAgcmV0dXJuIHRoaXMuX2NhbGVuZGFyLnNldCh0aGlzLmRhdGUsIHVuaXQsIHZhbHVlKTtcbiAgfVxuXG4gIGR1cmF0aW9uKGVuZDogRGF0ZSB8IEFYRGF0ZVRpbWUpOiBBWFRpbWVTcGFuIHtcbiAgICBjb25zdCBkYXRlID0gZW5kIGluc3RhbmNlb2YgQVhEYXRlVGltZSA/IGVuZC5kYXRlIDogKGVuZCBhcyBEYXRlKTtcbiAgICBjb25zdCB2YWwgPSBuZXcgQVhEYXRlVGltZShkYXRlLCB0aGlzLmNhbGVuZGFyKTtcbiAgICBjb25zdCByYW5nZSA9IG5ldyBBWERhdGVUaW1lUmFuZ2UodGhpcywgdmFsKTtcbiAgICByZXR1cm4gcmFuZ2UuZHVyYXRpb24oKTtcbiAgfVxuXG4gIHN0YXJ0T2YodW5pdDogVGltZVVuaXQgPSAnZGF5Jyk6IEFYRGF0ZVRpbWUge1xuICAgIHJldHVybiB0aGlzLl9jYWxlbmRhci5zdGFydE9mKHRoaXMuZGF0ZSwgdW5pdCk7XG4gIH1cblxuICBlbmRPZih1bml0OiBUaW1lVW5pdCA9ICdkYXknKTogQVhEYXRlVGltZSB7XG4gICAgcmV0dXJuIHRoaXMuX2NhbGVuZGFyLmVuZE9mKHRoaXMuZGF0ZSwgdW5pdCk7XG4gIH1cblxuICAvL1RPRE86IHJlbW92ZSB1bnVzZWQgaXRlbXNcbiAgcHJpdmF0ZSBfZm9ybWF0S2V5cyA9IHtcbiAgICAvLyAwIDEgLi4uIDU4IDU5XG4gICAgczogKCkgPT4gdGhpcy5kYXRlLmdldFNlY29uZHMoKS50b1N0cmluZygpLFxuICAgIC8vIDAwIDAxIC4uLiA1OCA1OVxuICAgIHNzOiAoKSA9PiB0aGlzLnBhZCh0aGlzLmRhdGUuZ2V0U2Vjb25kcygpLCAyKSxcblxuICAgIC8vIDAgMSAuLi4gNSA2IGRheSBvZiB3ZWVrICoqKlxuICAgIGQ6ICgpID0+ICh0aGlzLmNhbGVuZGFyLmRheU9mV2Vlayh0aGlzLmRhdGUpIC0gMSkudG9TdHJpbmcoKSxcbiAgICAvLyAgU3UgTW8gLi4uIEZyIFNhICoqKlxuICAgIGRkOiAoKSA9PlxuICAgICAgdHJhbnNsYXRlU3luYyhcbiAgICAgICAgYEBhY29yZXg6ZGF0ZVRpbWUud2Vla2RheXMuc2hvcnQuJHt0aGlzLmNhbGVuZGFyLndlZWtkYXlzW3RoaXMuY2FsZW5kYXIuZGF5T2ZXZWVrKHRoaXMuZGF0ZSkgLSAxXX1gLFxuICAgICAgKSxcbiAgICBkZGQ6ICgpID0+XG4gICAgICB0cmFuc2xhdGVTeW5jKFxuICAgICAgICBgQGFjb3JleDpkYXRlVGltZS53ZWVrZGF5cy5zaG9ydC4ke3RoaXMuY2FsZW5kYXIud2Vla2RheXNbdGhpcy5jYWxlbmRhci5kYXlPZldlZWsodGhpcy5kYXRlKSAtIDFdfWAsXG4gICAgICApLFxuICAgIC8vIFN1bmRheSBNb25kYXkgLi4uIEZyaWRheSBTYXR1cmRheVxuICAgIGRkZGQ6ICgpID0+XG4gICAgICB0cmFuc2xhdGVTeW5jKGBAYWNvcmV4OmRhdGVUaW1lLndlZWtkYXlzLmxvbmcuJHt0aGlzLmNhbGVuZGFyLndlZWtkYXlzW3RoaXMuY2FsZW5kYXIuZGF5T2ZXZWVrKHRoaXMuZGF0ZSkgLSAxXX1gKSxcblxuICAgIC8vIDEgMiAuLi4gMzAgMzFcbiAgICBEOiAoKSA9PiB0aGlzLmNhbGVuZGFyLmRheU9mTW9udGgodGhpcy5kYXRlKS50b1N0cmluZygpLFxuICAgIC8vIDAxIDAyIC4uLiAzMCAzMSBkYXkgb2YgbW9udGhcbiAgICBERDogKCkgPT4gdGhpcy5wYWQodGhpcy5jYWxlbmRhci5kYXlPZk1vbnRoKHRoaXMuZGF0ZSksIDIpLFxuICAgIC8vIDEgMiAuLi4gMzY0IDM2NVxuICAgIERERDogKCkgPT4gdGhpcy5jYWxlbmRhci5kYXlPZlllYXIodGhpcy5kYXRlKS50b1N0cmluZygpLFxuICAgIC8vIDAwMSAwMDIgLi4uIDM2NCAzNjUgZGF5IG9mIHllYXJcbiAgICBEREREOiAoKSA9PiB0aGlzLnBhZCh0aGlzLmNhbGVuZGFyLmRheU9mWWVhcih0aGlzLmRhdGUpLCAzKSxcblxuICAgIC8vIDEgMiAuLi4gNTIgNTNcbiAgICB3OiAoKSA9PiB0aGlzLmNhbGVuZGFyLndlZWtPZlllYXIodGhpcy5kYXRlKS50b1N0cmluZygpLFxuICAgIC8vIDAxIDAyIC4uLiA1MiA1M1xuICAgIHd3OiAoKSA9PiB0aGlzLnBhZCh0aGlzLmNhbGVuZGFyLndlZWtPZlllYXIodGhpcy5kYXRlKSwgMiksXG5cbiAgICAvLyAxIDIgLi4uIDExIDEyXG4gICAgTTogKCkgPT4gdGhpcy5jYWxlbmRhci5tb250aE9mWWVhcih0aGlzLmRhdGUpLnRvU3RyaW5nKCksXG4gICAgLy8gMDEgMDIgLi4uIDExIDEyXG4gICAgTU06ICgpID0+IHRoaXMucGFkKHRoaXMuY2FsZW5kYXIubW9udGhPZlllYXIodGhpcy5kYXRlKSwgMiksXG4gICAgLy8gSmFuIEZlYiAuLi4gTm92IERlY1xuICAgIE1NTTogKCkgPT5cbiAgICAgIHRyYW5zbGF0ZVN5bmMoXG4gICAgICAgIGBAYWNvcmV4OmRhdGVUaW1lLm1vbnRocy4ke3RoaXMuY2FsZW5kYXIubmFtZSgpfS5zaG9ydC4ke3RoaXMuY2FsZW5kYXIubW9udGhPZlllYXIodGhpcy5kYXRlKSAtIDF9YCxcbiAgICAgICksXG4gICAgLy8gSmFudWFyeSBGZWJydWFyeSAuLi4gTm92ZW1iZXIgRGVjZW1iZXJcbiAgICBNTU1NOiAoKSA9PlxuICAgICAgdHJhbnNsYXRlU3luYyhgQGFjb3JleDpkYXRlVGltZS5tb250aHMuJHt0aGlzLmNhbGVuZGFyLm5hbWUoKX0ubG9uZy4ke3RoaXMuY2FsZW5kYXIubW9udGhPZlllYXIodGhpcy5kYXRlKSAtIDF9YCksXG5cbiAgICAvLyAxIDIgLi4uIDdcbiAgICBFOiAoKSA9PiB0aGlzLmNhbGVuZGFyLmRheU9mV2Vlayh0aGlzLmRhdGUpLnRvU3RyaW5nKCksXG4gICAgLy8gMDEgMDIgLi4uIDA3XG4gICAgRUU6ICgpID0+IHRoaXMucGFkKHRoaXMuY2FsZW5kYXIuZGF5T2ZXZWVrKHRoaXMuZGF0ZSksIDIpLFxuICAgIC8vIFN1biBNb24gLi4uIFNhdFxuICAgIEVFRTogKCkgPT5cbiAgICAgIHRyYW5zbGF0ZVN5bmMoXG4gICAgICAgIGBAYWNvcmV4OmRhdGVUaW1lLndlZWtkYXlzLnNob3J0LiR7dGhpcy5jYWxlbmRhci53ZWVrZGF5c1t0aGlzLmNhbGVuZGFyLmRheU9mV2Vlayh0aGlzLmRhdGUpIC0gMV19YCxcbiAgICAgICksXG4gICAgLy8gU3VuZGF5IE1vbmRheSAuLi4gU2F0dXJkYXlcbiAgICBFRUVFOiAoKSA9PlxuICAgICAgdHJhbnNsYXRlU3luYyhgQGFjb3JleDpkYXRlVGltZS53ZWVrZGF5cy5sb25nLiR7dGhpcy5jYWxlbmRhci53ZWVrZGF5c1t0aGlzLmNhbGVuZGFyLmRheU9mV2Vlayh0aGlzLmRhdGUpIC0gMV19YCksXG5cbiAgICAvLyAxIDIgLi4uIDIwMjAgLi4uXG4gICAgeTogKCkgPT4gdGhpcy5jYWxlbmRhci55ZWFyKHRoaXMuZGF0ZSkudG9TdHJpbmcoKSxcbiAgICAvLyA3MCA3MSAuLi4gMjkgMzBcbiAgICB5eTogKCkgPT4gdGhpcy5wYWQodGhpcy5jYWxlbmRhci55ZWFyKHRoaXMuZGF0ZSksIDQpLnN1YnN0cmluZygyKSxcbiAgICBZWTogKCkgPT4gdGhpcy5wYWQodGhpcy5jYWxlbmRhci55ZWFyKHRoaXMuZGF0ZSksIDQpLnN1YnN0cmluZygyKSxcbiAgICAvLyAxOTcwIDE5NzEgLi4uIDIwMjkgMjAzMFxuICAgIHl5eXk6ICgpID0+IHRoaXMucGFkKHRoaXMuY2FsZW5kYXIueWVhcih0aGlzLmRhdGUpLCA0KSxcbiAgICBZWVlZOiAoKSA9PiB0aGlzLnBhZCh0aGlzLmNhbGVuZGFyLnllYXIodGhpcy5kYXRlKSwgNCksXG5cbiAgICAvLyAwIDEgLi4uIDU4IDU5XG4gICAgbTogKCkgPT4gdGhpcy5kYXRlLmdldE1pbnV0ZXMoKS50b1N0cmluZygpLFxuICAgIC8vIDAwIDAxIC4uLiA1OCA1OVxuICAgIG1tOiAoKSA9PiB0aGlzLnBhZCh0aGlzLmRhdGUuZ2V0TWludXRlcygpLCAyKSxcblxuICAgIC8vIDAgMSAuLi4gMTEgMTJcbiAgICBoOiAoKSA9PiAodGhpcy5kYXRlLmdldEhvdXJzKCkgJSAxMiB8fCAxMikudG9TdHJpbmcoKSxcbiAgICAvLyAwMCAwMSAuLi4gMTEgMTJcbiAgICBoaDogKCkgPT4gdGhpcy5wYWQodGhpcy5kYXRlLmdldEhvdXJzKCkgJSAxMiB8fCAxMiwgMiksXG4gICAgLy8gMCAxIC4uLiAyMyAyNFxuICAgIEg6ICgpID0+IHRoaXMuZGF0ZS5nZXRIb3VycygpLnRvU3RyaW5nKCksXG4gICAgLy8gMDAgMDEgLi4uIDIzIDI0XG4gICAgSEg6ICgpID0+IHRoaXMucGFkKHRoaXMuZGF0ZS5nZXRIb3VycygpLCAyKSxcblxuICAgIC8vIFRPRE86IGkxOG5cbiAgICAvLyBBTSBQTVxuICAgIEE6ICgpID0+ICh0aGlzLmRhdGUuZ2V0SG91cnMoKSA8IDEyID8gJ0FNJyA6ICdQTScpLnRvVXBwZXJDYXNlKCksXG4gICAgLy8gYW0gcG1cbiAgICBhOiAoKSA9PiAodGhpcy5kYXRlLmdldEhvdXJzKCkgPCAxMiA/ICdhbScgOiAncG0nKS50b0xvd2VyQ2FzZSgpLFxuXG4gICAgLy8gVE9ETzogcmV2aWV3XG4gICAgWjogKCkgPT4gJycsXG4gICAgWlpaWjogKCkgPT4gJycsXG4gICAgLy9cbiAgICBkYXRlOiAob3B0aW9ucykgPT4gdGhpcy5mb3JtYXQodGhpcy5nZXREYXRlVGltZUZvcm1hdEJ5TG9jYWxlKG9wdGlvbnMubG9jYWxlLCAnc2hvcnREYXRlJykpLFxuICAgIHNob3J0RGF0ZTogKG9wdGlvbnMpID0+IHRoaXMuZm9ybWF0KHRoaXMuZ2V0RGF0ZVRpbWVGb3JtYXRCeUxvY2FsZShvcHRpb25zLmxvY2FsZSwgJ3Nob3J0RGF0ZScpKSxcbiAgICBsb25nRGF0ZTogKG9wdGlvbnMpID0+IHRoaXMuZm9ybWF0KHRoaXMuZ2V0RGF0ZVRpbWVGb3JtYXRCeUxvY2FsZShvcHRpb25zLmxvY2FsZSwgJ2xvbmdEYXRlJykpLFxuICAgIC8vXG4gICAgc2hvcnRUaW1lOiAob3B0aW9ucykgPT4gdGhpcy5mb3JtYXQodGhpcy5nZXREYXRlVGltZUZvcm1hdEJ5TG9jYWxlKG9wdGlvbnMubG9jYWxlLCAnc2hvcnRUaW1lJykpLFxuICAgIHRpbWU6IChvcHRpb25zKSA9PiB0aGlzLmZvcm1hdCh0aGlzLmdldERhdGVUaW1lRm9ybWF0QnlMb2NhbGUob3B0aW9ucy5sb2NhbGUsICdzaG9ydFRpbWUnKSksXG4gICAgbG9uZ1RpbWU6IChvcHRpb25zKSA9PiB0aGlzLmZvcm1hdCh0aGlzLmdldERhdGVUaW1lRm9ybWF0QnlMb2NhbGUob3B0aW9ucy5sb2NhbGUsICdsb25nVGltZScpKSxcbiAgICAvL1xuICAgIGRhdGV0aW1lOiAob3B0aW9ucykgPT4gdGhpcy5mb3JtYXQoJ2RhdGUgdGltZScsIHsgbG9jYWxlOiBvcHRpb25zLmxvY2FsZSB9KSxcbiAgfTtcblxuICBwcm90ZWN0ZWQgX2xhbmd1YWdlID0gKCkgPT4gKGlzQnJvd3NlcigpID8gbmF2aWdhdG9yLmxhbmd1YWdlIDogJ2VuLVVTJyk7XG5cbiAgZm9ybWF0KFxuICAgIGZvcm1hdDogc3RyaW5nID0gdGhpcy5nZXREYXRlVGltZUZvcm1hdEJ5TG9jYWxlKHRoaXMuX2xhbmd1YWdlKCksICdzaG9ydERhdGUnKSxcbiAgICBvcHRpb25zPzogeyBsb2NhbGU/OiBzdHJpbmcgfSxcbiAgKTogc3RyaW5nIHtcbiAgICBjb25zdCBlZmZlY3RpdmVPcHRpb25zID0gZGVmYXVsdHMoe30sIG9wdGlvbnMsIHtcbiAgICAgIGxvY2FsZTogdGhpcy5fbGFuZ3VhZ2UoKSxcbiAgICB9KTtcbiAgICBjb25zdCByZSA9IG5ldyBSZWdFeHAob3JkZXJCeShPYmplY3Qua2V5cyh0aGlzLl9mb3JtYXRLZXlzKSwgKGMpID0+IGMubGVuZ3RoLCBbJ2Rlc2MnXSkuam9pbignfCcpLCAnZ2knKTtcbiAgICByZXR1cm4gZm9ybWF0LnJlcGxhY2UocmUsIChtYXRjaGVkKSA9PiB7XG4gICAgICBjb25zdCBmID0gdGhpcy5fZm9ybWF0S2V5c1ttYXRjaGVkXTtcbiAgICAgIGlmIChmICYmIHR5cGVvZiBmID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNvbnN0IHIgPSBmKGVmZmVjdGl2ZU9wdGlvbnMpO1xuICAgICAgICByZXR1cm4gcjtcbiAgICAgIH1cbiAgICAgIHJldHVybiBtYXRjaGVkO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0RGF0ZVRpbWVGb3JtYXRCeUxvY2FsZShsb2NhbGU6IHN0cmluZywgc3R5bGU6ICdzaG9ydERhdGUnIHwgJ2xvbmdEYXRlJyB8ICdzaG9ydFRpbWUnIHwgJ2xvbmdUaW1lJyk6IHN0cmluZyB7XG4gICAgbGV0IG9wdGlvbnM6IEludGwuRGF0ZVRpbWVGb3JtYXRPcHRpb25zID0ge307XG4gICAgc3dpdGNoIChzdHlsZSkge1xuICAgICAgY2FzZSAnc2hvcnREYXRlJzogLy8gWWVhciwgTW9udGgsIERheVxuICAgICAgICBvcHRpb25zID0geyB5ZWFyOiAnbnVtZXJpYycsIG1vbnRoOiAnMi1kaWdpdCcsIGRheTogJzItZGlnaXQnIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnbG9uZ0RhdGUnOiAvLyBXZWVrZGF5LCBNb250aCBuYW1lLCBEYXksIFllYXJcbiAgICAgICAgb3B0aW9ucyA9IHtcbiAgICAgICAgICB3ZWVrZGF5OiAnbG9uZycsXG4gICAgICAgICAgeWVhcjogJ251bWVyaWMnLFxuICAgICAgICAgIG1vbnRoOiAnbG9uZycsXG4gICAgICAgICAgZGF5OiAnbnVtZXJpYycsXG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnc2hvcnRUaW1lJzogLy8gSG91ciwgTWludXRlXG4gICAgICAgIG9wdGlvbnMgPSB7IGhvdXI6ICcyLWRpZ2l0JywgbWludXRlOiAnMi1kaWdpdCcsIGhvdXIxMjogZmFsc2UgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdsb25nVGltZSc6IC8vIEhvdXIsIE1pbnV0ZSwgU2Vjb25kXG4gICAgICAgIG9wdGlvbnMgPSB7XG4gICAgICAgICAgaG91cjogJzItZGlnaXQnLFxuICAgICAgICAgIG1pbnV0ZTogJzItZGlnaXQnLFxuICAgICAgICAgIHNlY29uZDogJzItZGlnaXQnLFxuICAgICAgICAgIGhvdXIxMjogZmFsc2UsXG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGNvbnN0IGZvcm1hdHRlciA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY2FsZSwgb3B0aW9ucyk7XG5cbiAgICAvLyBHZXQgcGFydHMgb2YgdGhlIGRhdGUgYW5kL29yIHRpbWVcbiAgICBjb25zdCBwYXJ0cyA9IGZvcm1hdHRlci5mb3JtYXRUb1BhcnRzKG5ldyBEYXRlKCkpO1xuXG4gICAgLy8gTWFwIHBhcnRzIHRvIHRoZWlyIHJlc3BlY3RpdmUgZm9ybWF0XG4gICAgY29uc3QgZm9ybWF0TWFwOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge1xuICAgICAgZGF5OiAnZGQnLFxuICAgICAgbW9udGg6IHN0eWxlID09ICdsb25nRGF0ZScgPyAnTU1NTScgOiAnTU0nLFxuICAgICAgeWVhcjogJ3l5eXknLFxuICAgICAgaG91cjogJ0hIJyxcbiAgICAgIG1pbnV0ZTogJ21tJyxcbiAgICAgIHNlY29uZDogJ3NzJyxcbiAgICAgIHdlZWtkYXk6ICdFJyxcbiAgICAgIGxpdGVyYWw6ICcnLFxuICAgIH07XG5cbiAgICAvLyBDb25zdHJ1Y3QgdGhlIGRhdGUgYW5kL29yIHRpbWUgZm9ybWF0IHN0cmluZ1xuICAgIHJldHVybiBwYXJ0c1xuICAgICAgLm1hcCgocGFydCkgPT4ge1xuICAgICAgICBpZiAocGFydC50eXBlID09PSAnbGl0ZXJhbCcpIHtcbiAgICAgICAgICAvLyBVc2UgdGhlIGxpdGVyYWwgcGFydCBkaXJlY3RseSBhcyBzZXBhcmF0b3JcbiAgICAgICAgICByZXR1cm4gcGFydC52YWx1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gZm9ybWF0TWFwW3BhcnQudHlwZV0gfHwgcGFydC52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIC5qb2luKCcnKTtcbiAgfVxuXG4gIHByaXZhdGUgcGFkKG4sIHdpZHRoLCB6ID0gJzAnKSB7XG4gICAgbiA9IG4gKyAnJztcbiAgICByZXR1cm4gbi5sZW5ndGggPj0gd2lkdGggPyBuIDogbmV3IEFycmF5KHdpZHRoIC0gbi5sZW5ndGggKyAxKS5qb2luKHopICsgbjtcbiAgfVxuXG4gIGVxdWFsKHZhbHVlOiBEYXRlIHwgQVhEYXRlVGltZSwgdW5pdDogVGltZVVuaXQgPSAnZGF5Jykge1xuICAgIHJldHVybiB0aGlzLmNvbXBhcmUodmFsdWUsIHVuaXQpID09IDA7XG4gIH1cblxuICBjb21wYXJlKHZhbHVlOiBEYXRlIHwgQVhEYXRlVGltZSwgdW5pdDogVGltZVVuaXQgPSAnZGF5Jykge1xuICAgIGNvbnN0IGRhdGUgPSB2YWx1ZSBpbnN0YW5jZW9mIEFYRGF0ZVRpbWUgPyB2YWx1ZS5kYXRlIDogKHZhbHVlIGFzIERhdGUpO1xuICAgIGNvbnN0IHZhbCA9IG5ldyBBWERhdGVUaW1lKGRhdGUsIHRoaXMuY2FsZW5kYXIpO1xuICAgIGNvbnN0IGZ1bmMgPSAodjE6IG51bWJlciwgdjI6IG51bWJlcikgPT4ge1xuICAgICAgaWYgKHYxID09IHYyKSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfSBlbHNlIGlmICh2MSA+IHYyKSB7XG4gICAgICAgIHJldHVybiAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgfVxuICAgIH07XG4gICAgbGV0IHAgPSAwO1xuICAgIHN3aXRjaCAodW5pdCkge1xuICAgICAgY2FzZSAneWVhcic6XG4gICAgICAgIHJldHVybiBmdW5jKHRoaXMueWVhciwgdmFsLnllYXIpO1xuICAgICAgY2FzZSAnd2Vlayc6XG4gICAgICAgIHAgPSB0aGlzLmNvbXBhcmUodmFsLCAneWVhcicpO1xuICAgICAgICByZXR1cm4gcCA9PSAwID8gZnVuYyh0aGlzLndlZWtPZlllYXIsIHZhbC53ZWVrT2ZZZWFyKSA6IHA7XG4gICAgICBjYXNlICdtb250aCc6XG4gICAgICAgIHAgPSB0aGlzLmNvbXBhcmUodmFsLCAneWVhcicpO1xuICAgICAgICByZXR1cm4gcCA9PSAwID8gZnVuYyh0aGlzLm1vbnRoT2ZZZWFyLCB2YWwubW9udGhPZlllYXIpIDogcDtcbiAgICAgIGNhc2UgJ2RheSc6XG4gICAgICAgIHAgPSB0aGlzLmNvbXBhcmUodmFsLCAneWVhcicpO1xuICAgICAgICByZXR1cm4gcCA9PSAwID8gZnVuYyh0aGlzLmRheU9mWWVhciwgdmFsLmRheU9mWWVhcikgOiBwO1xuICAgICAgY2FzZSAnaG91cic6XG4gICAgICAgIHAgPSB0aGlzLmNvbXBhcmUodmFsLCAnZGF5Jyk7XG4gICAgICAgIHJldHVybiBwID09IDAgPyBmdW5jKHRoaXMuaG91ciwgdmFsLmhvdXIpIDogcDtcbiAgICAgIGNhc2UgJ21pbnV0ZSc6XG4gICAgICAgIHAgPSB0aGlzLmNvbXBhcmUodmFsLCAnaG91cicpO1xuICAgICAgICByZXR1cm4gcCA9PSAwID8gZnVuYyh0aGlzLm1pbnV0ZSwgdmFsLm1pbnV0ZSkgOiBwO1xuICAgICAgY2FzZSAnc2Vjb25kJzpcbiAgICAgICAgcCA9IHRoaXMuY29tcGFyZSh2YWwsICdtaW51dGUnKTtcbiAgICAgICAgcmV0dXJuIHAgPT0gMCA/IGZ1bmModGhpcy5zZWNvbmQsIHZhbC5zZWNvbmQpIDogcDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBmdW5jKHRoaXMuZGF0ZS5nZXRUaW1lKCksIHZhbC5kYXRlLmdldFRpbWUoKSk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBWENhbGVuZGFyTW9udGgge1xuICBwcml2YXRlIF9yYW5nZTogQVhEYXRlVGltZVJhbmdlO1xuICBwdWJsaWMgZ2V0IHJhbmdlKCk6IEFYRGF0ZVRpbWVSYW5nZSB7XG4gICAgcmV0dXJuIHRoaXMuX3JhbmdlO1xuICB9XG4gIHB1YmxpYyBzZXQgcmFuZ2UodjogQVhEYXRlVGltZVJhbmdlKSB7XG4gICAgdGhpcy5fcmFuZ2UgPSB2O1xuICB9XG5cbiAgcHVibGljIGdldCB0b3RhbERheXMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5yYW5nZS5lbmRUaW1lLmRheU9mTW9udGg7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihkYXRlOiBBWERhdGVUaW1lKSB7XG4gICAgdGhpcy5pbmRleCA9IGRhdGUuZGF0ZS5nZXRNb250aCgpO1xuICAgIHRoaXMubmFtZSA9IGRhdGUuZm9ybWF0KCdNTU1NJyk7XG4gICAgdGhpcy5yYW5nZSA9IG5ldyBBWERhdGVUaW1lUmFuZ2UoXG4gICAgICBuZXcgQVhEYXRlVGltZShkYXRlLnN0YXJ0T2YoJ21vbnRoJykuZGF0ZSwgZGF0ZS5jYWxlbmRhciksXG4gICAgICBuZXcgQVhEYXRlVGltZShkYXRlLmVuZE9mKCdtb250aCcpLmRhdGUsIGRhdGUuY2FsZW5kYXIpLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IGluZGV4OiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYVGltZVNwYW5Ub3RhbCB7XG4gIG1pbGlzZWNvbmRzOiBudW1iZXI7XG4gIHNlY29uZHM6IG51bWJlcjtcbiAgbWludXRlczogbnVtYmVyO1xuICBob3VyczogbnVtYmVyO1xuICBkYXlzOiBudW1iZXI7XG4gIHdlZWtzOiBudW1iZXI7XG4gIG1vbnRoczogbnVtYmVyO1xuICB5ZWFyczogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYVGltZVNwYW4ge1xuICBtaWxpc2Vjb25kczogbnVtYmVyO1xuICBzZWNvbmRzOiBudW1iZXI7XG4gIG1pbnV0ZXM6IG51bWJlcjtcbiAgaG91cnM6IG51bWJlcjtcbiAgZGF5czogbnVtYmVyO1xuICBtb250aHM6IG51bWJlcjtcbiAgeWVhcnM6IG51bWJlcjtcbiAgdG90YWw6IEFYVGltZVNwYW5Ub3RhbDtcbn1cblxuZXhwb3J0IGNsYXNzIEFYRGF0ZVRpbWVSYW5nZSB7XG4gIHByaXZhdGUgX3N0YXJ0VGltZTogQVhEYXRlVGltZTtcbiAgcHJpdmF0ZSBfZW5kVGltZTogQVhEYXRlVGltZTtcblxuICBwdWJsaWMgZ2V0IHN0YXJ0VGltZSgpOiBBWERhdGVUaW1lIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhcnRUaW1lO1xuICB9XG5cbiAgcHVibGljIGdldCBlbmRUaW1lKCk6IEFYRGF0ZVRpbWUge1xuICAgIHJldHVybiB0aGlzLl9lbmRUaW1lO1xuICB9XG5cbiAgY29uc3RydWN0b3Ioc3RhcnRUaW1lOiBBWERhdGVUaW1lLCBlbmRUaW1lOiBBWERhdGVUaW1lKSB7XG4gICAgdGhpcy5fc3RhcnRUaW1lID0gc3RhcnRUaW1lO1xuICAgIHRoaXMuX2VuZFRpbWUgPSBlbmRUaW1lO1xuICB9XG5cbiAgZHVyYXRpb24oKTogQVhUaW1lU3BhbiB7XG4gICAgY29uc3QgcmVzdWx0OiBBWFRpbWVTcGFuID0ge1xuICAgICAgbWlsaXNlY29uZHM6IDAsXG4gICAgICBzZWNvbmRzOiAwLFxuICAgICAgbWludXRlczogMCxcbiAgICAgIGhvdXJzOiAwLFxuICAgICAgZGF5czogMCxcbiAgICAgIC8vIE5PVEU6IENhbGN1bGF0aW5nIGV4YWN0IGNhbGVuZGFyIG1vbnRocy95ZWFycyBjb21wb25lbnQgaXMgY29tcGxleFxuICAgICAgLy8gZnJvbSBtaWxsaXNlY29uZHMgYWxvbmUuIFdlJ2xsIHNldCB0aGVzZSB0byAwLlxuICAgICAgbW9udGhzOiAwLFxuICAgICAgeWVhcnM6IDAsXG4gICAgICB0b3RhbDoge1xuICAgICAgICBtaWxpc2Vjb25kczogMCxcbiAgICAgICAgc2Vjb25kczogMCxcbiAgICAgICAgbWludXRlczogMCxcbiAgICAgICAgaG91cnM6IDAsXG4gICAgICAgIGRheXM6IDAsXG4gICAgICAgIHdlZWtzOiAwLFxuICAgICAgICAvLyBOT1RFOiB0b3RhbC5tb250aHMgYW5kIHRvdGFsLnllYXJzIGFyZSBhcHByb3hpbWF0ZSBiYXNlZCBvbiBhdmVyYWdlIGxlbmd0aHNcbiAgICAgICAgbW9udGhzOiAwLFxuICAgICAgICB5ZWFyczogMCxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIC8vIENvbnN0YW50cyBmb3IgdGltZSB1bml0cyBpbiBtaWxsaXNlY29uZHNcbiAgICBjb25zdCBPTkVfTUlMTElTRUNPTkQgPSAxO1xuICAgIGNvbnN0IE9ORV9TRUNPTkQgPSAxMDAwICogT05FX01JTExJU0VDT05EO1xuICAgIGNvbnN0IE9ORV9NSU5VVEUgPSA2MCAqIE9ORV9TRUNPTkQ7XG4gICAgY29uc3QgT05FX0hPVVIgPSA2MCAqIE9ORV9NSU5VVEU7XG4gICAgY29uc3QgT05FX0RBWSA9IDI0ICogT05FX0hPVVI7XG4gICAgY29uc3QgT05FX1dFRUsgPSA3ICogT05FX0RBWTtcbiAgICAvLyBBdmVyYWdlIGxlbmd0aHMgZm9yIGFwcHJveGltYXRlIHRvdGFsIG1vbnRocy95ZWFyc1xuICAgIGNvbnN0IE9ORV9ZRUFSX0FWRyA9IDM2NS4yNSAqIE9ORV9EQVk7XG4gICAgY29uc3QgT05FX01PTlRIX0FWRyA9IE9ORV9ZRUFSX0FWRyAvIDEyO1xuXG4gICAgY29uc3Qgc3RhcnRUaW1lID0gdGhpcy5fc3RhcnRUaW1lLmRhdGUuZ2V0VGltZSgpO1xuICAgIGNvbnN0IGVuZFRpbWUgPSB0aGlzLl9lbmRUaW1lLmRhdGUuZ2V0VGltZSgpO1xuXG4gICAgLy8gQ2FsY3VsYXRlIHRoZSBhYnNvbHV0ZSBkaWZmZXJlbmNlIGluIG1pbGxpc2Vjb25kc1xuICAgIGNvbnN0IGRpZmYgPSBNYXRoLmFicyhlbmRUaW1lIC0gc3RhcnRUaW1lKTtcblxuICAgIC8vIC0tLSBDYWxjdWxhdGUgVG90YWwgRHVyYXRpb25zIC0tLVxuICAgIHJlc3VsdC50b3RhbC5taWxpc2Vjb25kcyA9IGRpZmY7XG4gICAgcmVzdWx0LnRvdGFsLnNlY29uZHMgPSBkaWZmIC8gT05FX1NFQ09ORDtcbiAgICByZXN1bHQudG90YWwubWludXRlcyA9IGRpZmYgLyBPTkVfTUlOVVRFO1xuICAgIHJlc3VsdC50b3RhbC5ob3VycyA9IGRpZmYgLyBPTkVfSE9VUjtcbiAgICByZXN1bHQudG90YWwuZGF5cyA9IGRpZmYgLyBPTkVfREFZOyAvLyBJbmNsdWRlcyBmcmFjdGlvbmFsIGRheXNcbiAgICByZXN1bHQudG90YWwud2Vla3MgPSBkaWZmIC8gT05FX1dFRUs7IC8vIEluY2x1ZGVzIGZyYWN0aW9uYWwgd2Vla3NcbiAgICByZXN1bHQudG90YWwubW9udGhzID0gZGlmZiAvIE9ORV9NT05USF9BVkc7IC8vIEFwcHJveGltYXRlXG4gICAgcmVzdWx0LnRvdGFsLnllYXJzID0gZGlmZiAvIE9ORV9ZRUFSX0FWRzsgLy8gQXBwcm94aW1hdGVcblxuICAgIC8vIC0tLSBDYWxjdWxhdGUgQ29tcG9uZW50IFBhcnRzIC0tLVxuICAgIGxldCByZW1haW5pbmdNaWxsaXMgPSBkaWZmO1xuXG4gICAgLy8gQ2FsY3VsYXRlIGZ1bGwgZGF5cyBhbmQgdXBkYXRlIHJlbWFpbmluZyBtaWxsaXNlY29uZHNcbiAgICByZXN1bHQuZGF5cyA9IE1hdGguZmxvb3IocmVtYWluaW5nTWlsbGlzIC8gT05FX0RBWSk7XG4gICAgcmVtYWluaW5nTWlsbGlzICU9IE9ORV9EQVk7IC8vIEdldCB0aGUgcmVtYWluZGVyIG1pbGxpc2Vjb25kcyBhZnRlciB0YWtpbmcgb3V0IGZ1bGwgZGF5c1xuXG4gICAgLy8gQ2FsY3VsYXRlIGZ1bGwgaG91cnMgZnJvbSB0aGUgcmVtYWluZGVyXG4gICAgcmVzdWx0LmhvdXJzID0gTWF0aC5mbG9vcihyZW1haW5pbmdNaWxsaXMgLyBPTkVfSE9VUik7XG4gICAgcmVtYWluaW5nTWlsbGlzICU9IE9ORV9IT1VSOyAvLyBHZXQgdGhlIHJlbWFpbmRlciBtaWxsaXNlY29uZHMgYWZ0ZXIgdGFraW5nIG91dCBmdWxsIGhvdXJzXG5cbiAgICAvLyBDYWxjdWxhdGUgZnVsbCBtaW51dGVzIGZyb20gdGhlIHJlbWFpbmRlclxuICAgIHJlc3VsdC5taW51dGVzID0gTWF0aC5mbG9vcihyZW1haW5pbmdNaWxsaXMgLyBPTkVfTUlOVVRFKTtcbiAgICByZW1haW5pbmdNaWxsaXMgJT0gT05FX01JTlVURTsgLy8gR2V0IHRoZSByZW1haW5kZXIgbWlsbGlzZWNvbmRzIGFmdGVyIHRha2luZyBvdXQgZnVsbCBtaW51dGVzXG5cbiAgICAvLyBDYWxjdWxhdGUgZnVsbCBzZWNvbmRzIGZyb20gdGhlIHJlbWFpbmRlclxuICAgIHJlc3VsdC5zZWNvbmRzID0gTWF0aC5mbG9vcihyZW1haW5pbmdNaWxsaXMgLyBPTkVfU0VDT05EKTtcbiAgICByZW1haW5pbmdNaWxsaXMgJT0gT05FX1NFQ09ORDsgLy8gR2V0IHRoZSByZW1haW5kZXIgbWlsbGlzZWNvbmRzIGFmdGVyIHRha2luZyBvdXQgZnVsbCBzZWNvbmRzXG5cbiAgICAvLyBUaGUgZmluYWwgcmVtYWluZGVyIGlzIHRoZSBtaWxsaXNlY29uZHMgY29tcG9uZW50XG4gICAgcmVzdWx0Lm1pbGlzZWNvbmRzID0gcmVtYWluaW5nTWlsbGlzO1xuXG4gICAgLy8gQXMgbm90ZWQgYWJvdmUsIHNldHRpbmcgbW9udGgveWVhciBjb21wb25lbnRzIHRvIDAgYXMgYWNjdXJhdGVcbiAgICAvLyBjYWxlbmRhci1hd2FyZSBjYWxjdWxhdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaGVyZS5cbiAgICByZXN1bHQubW9udGhzID0gMDtcbiAgICByZXN1bHQueWVhcnMgPSAwO1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGVudW11cmF0ZSh1bml0OiBUaW1lVW5pdCA9ICdkYXknLCBhbW91bnQgPSAxKTogQVhEYXRlVGltZVtdIHtcbiAgICBjb25zdCByZXN1bHQ6IEFYRGF0ZVRpbWVbXSA9IFtdO1xuICAgIGxldCBpdGVtID0gdGhpcy5fc3RhcnRUaW1lLmNsb25lKCk7XG4gICAgd2hpbGUgKGl0ZW0uY29tcGFyZSh0aGlzLl9lbmRUaW1lLCB1bml0KSA8IDEpIHtcbiAgICAgIGlmICghcmVzdWx0LnNvbWUoKGMpID0+IGMuZXF1YWwoaXRlbSwgdW5pdCkpKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKGl0ZW0pO1xuICAgICAgfVxuICAgICAgaXRlbSA9IGl0ZW0uYWRkKHVuaXQsIGFtb3VudCk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn1cbiJdfQ==","import { AXCalendar, AXDateTime } from './datetime.types';\nexport class AXGregorianCalendar extends AXCalendar {\n /**\n * @ignore\n */\n constructor(config) {\n super(config);\n }\n create(value) {\n return new AXDateTime(new Date(value.year, value.month - 1, value.day, value.hours || 0, value.minutes || 0, value.seconds || 0, value.ms || 0), this);\n }\n name() {\n return 'gregorian';\n }\n dayOfMonth(date) {\n return date.getDate();\n }\n dayOfYear(date) {\n let result = 0;\n let m = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n if (this.isLeap(date)) {\n m[1] = 29;\n }\n for (let i = 0; i < date.getMonth(); i++) {\n result = result + m[i];\n }\n result += date.getDate();\n return result;\n }\n dayOfWeek(date) {\n return date.getDay() + 1;\n }\n weekOfYear(date) {\n const firstDay = new AXDateTime(date, this).startOf('year');\n return Math.ceil(((date.getTime() - firstDay.date.getTime()) / 86400000 + firstDay.date.getDay() + 1) / 7);\n }\n year(date) {\n return date.getFullYear();\n }\n monthOfYear(date) {\n return date.getMonth() + 1;\n }\n add(date, unit, amount) {\n let value = date.valueOf();\n switch (unit) {\n case 'second':\n value += 1000 * amount;\n break;\n case 'minute':\n value += 60000 * amount;\n break;\n case 'hour':\n value += 3600000 * amount;\n break;\n case 'month': {\n const v = new Date(value);\n // Calculate the new year and month considering the amount\n let newYear = v.getFullYear();\n let newMonth = v.getMonth() + amount;\n // Adjust for year overflow or underflow\n while (newMonth > 11) {\n newMonth -= 12;\n newYear++;\n }\n while (newMonth < 0) {\n newMonth += 12;\n newYear--;\n }\n // Set the date to the first of the month to prevent overflow\n v.setDate(1);\n v.setFullYear(newYear);\n v.setMonth(newMonth);\n // Get the last day of the new month\n const lastDayOfMonth = new Date(newYear, newMonth + 1, 0).getDate();\n // Set the date to either the original day or the last day of the new month, whichever is smaller\n const originalDay = date.getDate();\n v.setDate(Math.min(originalDay, lastDayOfMonth));\n value = v.valueOf();\n break;\n }\n case 'week':\n value += 7 * 86400000 * amount;\n break;\n case 'year': {\n const newDate = new Date(value);\n newDate.setFullYear(newDate.getFullYear() + amount);\n // Handling for leap years: if the original date is February 29th, and the new year is not a leap year,\n // set the date to February 28th.\n if (date.getMonth() === 1 && date.getDate() === 29 && newDate.getMonth() !== 1) {\n newDate.setMonth(1);\n newDate.setDate(28);\n }\n value = newDate.valueOf();\n break;\n }\n case 'day':\n default:\n value += 86400000 * amount;\n }\n return new AXDateTime(new Date(value), this);\n }\n set(date, unit, value) {\n const clone = new Date(date.valueOf());\n switch (unit) {\n case 'second':\n clone.setHours(clone.getHours(), clone.getMinutes(), value, clone.getMilliseconds());\n break;\n case 'minute':\n clone.setHours(clone.getHours(), value, clone.getSeconds(), clone.getMilliseconds());\n break;\n case 'hour':\n clone.setHours(value, clone.getMinutes(), clone.getSeconds(), clone.getMilliseconds());\n break;\n default:\n case 'day':\n clone.setDate(value);\n break;\n case 'week':\n break;\n case 'month':\n clone.setMonth(Math.max(0, value - 1));\n break;\n case 'year':\n clone.setFullYear(value);\n break;\n }\n return new AXDateTime(clone, this);\n }\n startOf(date, unit) {\n const clone = new Date(date.valueOf());\n switch (unit) {\n case 'second':\n clone.setHours(clone.getHours(), clone.getMinutes(), clone.getSeconds(), 0);\n return new AXDateTime(clone, this);\n case 'minute':\n clone.setHours(clone.getHours(), clone.getMinutes(), 0, 0);\n return new AXDateTime(clone, this);\n case 'hour':\n clone.setHours(clone.getHours(), 0, 0, 0);\n return new AXDateTime(clone, this);\n default:\n case 'day':\n clone.setHours(0, 0, 0, 0);\n return new AXDateTime(clone, this);\n case 'week': {\n const start = 1; // Week starts on Monday\n const day = clone.getDay();\n const diff = clone.getDate() - day + (day == 0 ? -6 : start - day);\n clone.setDate(diff);\n clone.setHours(0, 0, 0, 0);\n return new AXDateTime(clone, this);\n }\n case 'month':\n clone.setDate(1);\n return new AXDateTime(clone, this).startOf('day');\n case 'year':\n clone.setMonth(0);\n clone.setDate(1);\n return new AXDateTime(clone, this).startOf('day');\n }\n }\n endOf(date, unit) {\n const clone = new Date(date.valueOf());\n switch (unit) {\n case 'second':\n clone.setHours(clone.getHours(), clone.getMinutes(), clone.getSeconds(), 999);\n return new AXDateTime(clone, this);\n case 'minute':\n clone.setHours(clone.getHours(), clone.getMinutes(), 59, 999);\n return new AXDateTime(clone, this);\n case 'hour':\n clone.setHours(clone.getHours(), 59, 59, 999);\n return new AXDateTime(clone, this);\n default:\n case 'day':\n clone.setHours(23, 59, 59, 999);\n return new AXDateTime(clone, this);\n case 'week':\n return this.startOf(date, 'week').add('day', 6).endOf('day');\n case 'month': {\n const dateObj = new Date(date.getFullYear(), date.getMonth() + 1, 0);\n dateObj.setHours(23, 59, 59, 999);\n return new AXDateTime(dateObj, this);\n }\n case 'year':\n clone.setMonth(11);\n return new AXDateTime(clone, this).endOf('month');\n }\n }\n isLeap(date) {\n let leapYear = new Date(date.getFullYear(), 1, 29);\n return leapYear.getDate() == 29;\n }\n parse(value) {\n return new AXDateTime(new Date(value), this);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JlZ29yaWFuLmNhbGVuZGFyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9kYXRlLXRpbWUvc3JjL2xpYi9ncmVnb3JpYW4uY2FsZW5kYXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBb0IsVUFBVSxFQUF5QixNQUFNLGtCQUFrQixDQUFDO0FBRW5HLE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxVQUFVO0lBQ2pEOztPQUVHO0lBQ0gsWUFBWSxNQUF3QjtRQUNsQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEIsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFrQjtRQUN2QixPQUFPLElBQUksVUFBVSxDQUNuQixJQUFJLElBQUksQ0FDTixLQUFLLENBQUMsSUFBSSxFQUNWLEtBQUssQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUNmLEtBQUssQ0FBQyxHQUFHLEVBQ1QsS0FBSyxDQUFDLEtBQUssSUFBSSxDQUFDLEVBQ2hCLEtBQUssQ0FBQyxPQUFPLElBQUksQ0FBQyxFQUNsQixLQUFLLENBQUMsT0FBTyxJQUFJLENBQUMsRUFDbEIsS0FBSyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQ2QsRUFDRCxJQUFJLENBQ0wsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFJO1FBQ0YsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUVELFVBQVUsQ0FBQyxJQUFVO1FBQ25CLE9BQU8sSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxTQUFTLENBQUMsSUFBVTtRQUNsQixJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFF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QU8sSUFBSSxVQUFVLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3ZDLENBQUM7WUFDRCxLQUFLLE1BQU07Z0JBQ1QsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDbkIsT0FBTyxJQUFJLFVBQVUsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3RELENBQUM7SUFDSCxDQUFDO0lBRUQsTUFBTSxDQUFDLElBQVU7UUFDZixJQUFJLFFBQVEsR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ25ELE9BQU8sUUFBUSxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRUQsS0FBSyxDQUFDLEtBQWE7UUFDakIsT0FBTyxJQUFJLFVBQVUsQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMvQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWENhbGVuZGFyLCBBWENhbGVuZGFyQ29uZmlnLCBBWERhdGVUaW1lLCBBWERhdGVWYWx1ZSwgVGltZVVuaXQgfSBmcm9tICcuL2RhdGV0aW1lLnR5cGVzJztcblxuZXhwb3J0IGNsYXNzIEFYR3JlZ29yaWFuQ2FsZW5kYXIgZXh0ZW5kcyBBWENhbGVuZGFyIHtcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogQVhDYWxlbmRhckNvbmZpZykge1xuICAgIHN1cGVyKGNvbmZpZyk7XG4gIH1cblxuICBjcmVhdGUodmFsdWU6IEFYRGF0ZVZhbHVlKTogQVhEYXRlVGltZSB7XG4gICAgcmV0dXJuIG5ldyBBWERhdGVUaW1lKFxuICAgICAgbmV3IERhdGUoXG4gICAgICAgIHZhbHVlLnllYXIsXG4gICAgICAgIHZhbHVlLm1vbnRoIC0gMSxcbiAgICAgICAgdmFsdWUuZGF5LFxuICAgICAgICB2YWx1ZS5ob3VycyB8fCAwLFxuICAgICAgICB2YWx1ZS5taW51dGVzIHx8IDAsXG4gICAgICAgIHZhbHVlLnNlY29uZHMgfHwgMCxcbiAgICAgICAgdmFsdWUubXMgfHwgMCxcbiAgICAgICksXG4gICAgICB0aGlzLFxuICAgICk7XG4gIH1cblxuICBuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdncmVnb3JpYW4nO1xuICB9XG5cbiAgZGF5T2ZNb250aChkYXRlOiBEYXRlKTogbnVtYmVyIHtcbiAgICByZXR1cm4gZGF0ZS5nZXREYXRlKCk7XG4gIH1cblxuICBkYXlPZlllYXIoZGF0ZTogRGF0ZSk6IG51bWJlciB7XG4gICAgbGV0IHJlc3VsdCA9IDA7XG4gICAgbGV0IG0gPSBbMzEsIDI4LCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMxLCAzMCwgMzEsIDMwLCAzMV07XG4gICAgaWYgKHRoaXMuaXNMZWFwKGRhdGUpKSB7XG4gICAgICBtWzFdID0gMjk7XG4gICAgfVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0ZS5nZXRNb250aCgpOyBpKyspIHtcbiAgICAgIHJlc3VsdCA9IHJlc3VsdCArIG1baV07XG4gICAgfVxuICAgIHJlc3VsdCArPSBkYXRlLmdldERhdGUoKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgZGF5T2ZXZWVrKGRhdGU6IERhdGUpOiBudW1iZXIge1xuICAgIHJldHVybiBkYXRlLmdldERheSgpICsgMTtcbiAgfVxuXG4gIHdlZWtPZlllYXIoZGF0ZTogRGF0ZSk6IG51bWJlciB7XG4gICAgY29uc3QgZmlyc3REYXkgPSBuZXcgQVhEYXRlVGltZShkYXRlLCB0aGlzKS5zdGFydE9mKCd5ZWFyJyk7XG4gICAgcmV0dXJuIE1hdGguY2VpbCgoKGRhdGUuZ2V0VGltZSgpIC0gZmlyc3REYXkuZGF0ZS5nZXRUaW1lKCkpIC8gODY0MDAwMDAgKyBmaXJzdERheS5kYXRlLmdldERheSgpICsgMSkgLyA3KTtcbiAgfVxuXG4gIHllYXIoZGF0ZTogRGF0ZSk6IG51bWJlciB7XG4gICAgcmV0dXJuIGRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgfVxuXG4gIG1vbnRoT2ZZZWFyKGRhdGU6IERhdGUpOiBudW1iZXIge1xuICAgIHJldHVybiBkYXRlLmdldE1vbnRoKCkgKyAxO1xuICB9XG5cbiAgYWRkKGRhdGU6IERhdGUsIHVuaXQ6IFRpbWVVbml0LCBhbW91bnQ6IG51bWJlcik6IEFYRGF0ZVRpbWUge1xuICAgIGxldCB2YWx1ZSA9IGRhdGUudmFsdWVPZigpO1xuICAgIHN3aXRjaCAodW5pdCkge1xuICAgICAgY2FzZSAnc2Vjb25kJzpcbiAgICAgICAgdmFsdWUgKz0gMTAwMCAqIGFtb3VudDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdtaW51dGUnOlxuICAgICAgICB2YWx1ZSArPSA2MDAwMCAqIGFtb3VudDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdob3VyJzpcbiAgICAgICAgdmFsdWUgKz0gMzYwMDAwMCAqIGFtb3VudDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdtb250aCc6IHtcbiAgICAgICAgY29uc3QgdiA9IG5ldyBEYXRlKHZhbHVlKTtcblxuICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIG5ldyB5ZWFyIGFuZCBtb250aCBjb25zaWRlcmluZyB0aGUgYW1vdW50XG4gICAgICAgIGxldCBuZXdZZWFyID0gdi5nZXRGdWxsWWVhcigpO1xuICAgICAgICBsZXQgbmV3TW9udGggPSB2LmdldE1vbnRoKCkgKyBhbW91bnQ7XG5cbiAgICAgICAgLy8gQWRqdXN0IGZvciB5ZWFyIG92ZXJmbG93IG9yIHVuZGVyZmxvd1xuICAgICAgICB3aGlsZSAobmV3TW9udGggPiAxMSkge1xuICAgICAgICAgIG5ld01vbnRoIC09IDEyO1xuICAgICAgICAgIG5ld1llYXIrKztcbiAgICAgICAgfVxuICAgICAgICB3aGlsZSAobmV3TW9udGggPCAwKSB7XG4gICAgICAgICAgbmV3TW9udGggKz0gMTI7XG4gICAgICAgICAgbmV3WWVhci0tO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gU2V0IHRoZSBkYXRlIHRvIHRoZSBmaXJzdCBvZiB0aGUgbW9udGggdG8gcHJldmVudCBvdmVyZmxvd1xuICAgICAgICB2LnNldERhdGUoMSk7XG4gICAgICAgIHYuc2V0RnVsbFllYXIobmV3WWVhcik7XG4gICAgICAgIHYuc2V0TW9udGgobmV3TW9udGgpO1xuXG4gICAgICAgIC8vIEdldCB0aGUgbGFzdCBkYXkgb2YgdGhlIG5ldyBtb250aFxuICAgICAgICBjb25zdCBsYXN0RGF5T2ZNb250aCA9IG5ldyBEYXRlKG5ld1llYXIsIG5ld01vbnRoICsgMSwgMCkuZ2V0RGF0ZSgpO1xuXG4gICAgICAgIC8vIFNldCB0aGUgZGF0ZSB0byBlaXRoZXIgdGhlIG9yaWdpbmFsIGRheSBvciB0aGUgbGFzdCBkYXkgb2YgdGhlIG5ldyBtb250aCwgd2hpY2hldmVyIGlzIHNtYWxsZXJcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxEYXkgPSBkYXRlLmdldERhdGUoKTtcbiAgICAgICAgdi5zZXREYXRlKE1hdGgubWluKG9yaWdpbmFsRGF5LCBsYXN0RGF5T2ZNb250aCkpO1xuXG4gICAgICAgIHZhbHVlID0gdi52YWx1ZU9mKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnd2Vlayc6XG4gICAgICAgIHZhbHVlICs9IDcgKiA4NjQwMDAwMCAqIGFtb3VudDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd5ZWFyJzoge1xuICAgICAgICBjb25zdCBuZXdEYXRlID0gbmV3IERhdGUodmFsdWUpO1xuICAgICAgICBuZXdEYXRlLnNldEZ1bGxZZWFyKG5ld0RhdGUuZ2V0RnVsbFllYXIoKSArIGFtb3VudCk7XG4gICAgICAgIC8vIEhhbmRsaW5nIGZvciBsZWFwIHllYXJzOiBpZiB0aGUgb3JpZ2luYWwgZGF0ZSBpcyBGZWJydWFyeSAyOXRoLCBhbmQgdGhlIG5ldyB5ZWFyIGlzIG5vdCBhIGxlYXAgeWVhcixcbiAgICAgICAgLy8gc2V0IHRoZSBkYXRlIHRvIEZlYnJ1YXJ5IDI4dGguXG4gICAgICAgIGlmIChkYXRlLmdldE1vbnRoKCkgPT09IDEgJiYgZGF0ZS5nZXREYXRlKCkgPT09IDI5ICYmIG5ld0RhdGUuZ2V0TW9udGgoKSAhPT0gMSkge1xuICAgICAgICAgIG5ld0RhdGUuc2V0TW9udGgoMSk7XG4gICAgICAgICAgbmV3RGF0ZS5zZXREYXRlKDI4KTtcbiAgICAgICAgfVxuICAgICAgICB2YWx1ZSA9IG5ld0RhdGUudmFsdWVPZigpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ2RheSc6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB2YWx1ZSArPSA4NjQwMDAwMCAqIGFtb3VudDtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBBWERhdGVUaW1lKG5ldyBEYXRlKHZhbHVlKSwgdGhpcyk7XG4gIH1cblxuICBzZXQoZGF0ZTogRGF0ZSwgdW5pdDogVGltZVVuaXQsIHZhbHVlOiBudW1iZXIpOiBBWERhdGVUaW1lIHtcbiAgICBjb25zdCBjbG9uZSA9IG5ldyBEYXRlKGRhdGUudmFsdWVPZigpKTtcbiAgICBzd2l0Y2ggKHVuaXQpIHtcbiAgICAgIGNhc2UgJ3NlY29uZCc6XG4gICAgICAgIGNsb25lLnNldEhvdXJzKGNsb25lLmdldEhvdXJzKCksIGNsb25lLmdldE1pbnV0ZXMoKSwgdmFsdWUsIGNsb25lLmdldE1pbGxpc2Vjb25kcygpKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdtaW51dGUnOlxuICAgICAgICBjbG9uZS5zZXRIb3VycyhjbG9uZS5nZXRIb3VycygpLCB2YWx1ZSwgY2xvbmUuZ2V0U2Vjb25kcygpLCBjbG9uZS5nZXRNaWxsaXNlY29uZHMoKSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnaG91cic6XG4gICAgICAgIGNsb25lLnNldEhvdXJzKHZhbHVlLCBjbG9uZS5nZXRNaW51dGVzKCksIGNsb25lLmdldFNlY29uZHMoKSwgY2xvbmUuZ2V0TWlsbGlzZWNvbmRzKCkpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICBjYXNlICdkYXknOlxuICAgICAgICBjbG9uZS5zZXREYXRlKHZhbHVlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd3ZWVrJzpcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdtb250aCc6XG4gICAgICAgIGNsb25lLnNldE1vbnRoKE1hdGgubWF4KDAsIHZhbHVlIC0gMSkpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3llYXInOlxuICAgICAgICBjbG9uZS5zZXRGdWxsWWVhcih2YWx1ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IEFYRGF0ZVRpbWUoY2xvbmUsIHRoaXMpO1xuICB9XG5cbiAgc3RhcnRPZihkYXRlOiBEYXRlLCB1bml0OiBUaW1lVW5pdCk6IEFYRGF0ZVRpbWUge1xuICAgIGNvbnN0IGNsb25lID0gbmV3IERhdGUoZGF0ZS52YWx1ZU9mKCkpO1xuICAgIHN3aXRjaCAodW5pdCkge1xuICAgICAgY2FzZSAnc2Vjb25kJzpcbiAgICAgICAgY2xvbmUuc2V0SG91cnMoY2xvbmUuZ2V0SG91cnMoKSwgY2xvbmUuZ2V0TWludXRlcygpLCBjbG9uZS5nZXRTZWNvbmRzKCksIDApO1xuICAgICAgICByZXR1cm4gbmV3IEFYRGF0ZVRpbWUoY2xvbmUsIHRoaXMpO1xuICAgICAgY2FzZSAnbWludXRlJzpcbiAgICAgICAgY2xvbmUuc2V0SG91cnMoY2xvbmUuZ2V0SG91cnMoKSwgY2xvbmUuZ2V0TWludXRlcygpLCAwLCAwKTtcbiAgICAgICAgcmV0dXJuIG5ldyBBWERhdGVUaW1lKGNsb25lLCB0aGlzKTtcbiAgICAgIGNhc2UgJ2hvdXInOlxuICAgICAgICBjbG9uZS5zZXRIb3VycyhjbG9uZS5nZXRIb3VycygpLCAwLCAwLCAwKTtcbiAgICAgICAgcmV0dXJuIG5ldyBBWERhdGVUaW1lKGNsb25lLCB0aGlzKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICBjYXNlICdkYXknOlxuICAgICAgICBjbG9uZS5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgICAgICAgcmV0dXJuIG5ldyBBWERhdGVUaW1lKGNsb25lLCB0aGlzKTtcbiAgICAgIGNhc2UgJ3dlZWsnOiB7XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gMTsgLy8gV2VlayBzdGFydHMgb24gTW9uZGF5XG4gICAgICAgIGNvbnN0IGRheSA9IGNsb25lLmdldERheSgpO1xuICAgICAgICBjb25zdCBkaWZmID0gY2xvbmUuZ2V0RGF0ZSgpIC0gZGF5ICsgKGRheSA9PSAwID8gLTYgOiBzdGFydCAtIGRheSk7XG4gICAgICAgIGNsb25lLnNldERhdGUoZGlmZik7XG4gICAgICAgIGNsb25lLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICAgICAgICByZXR1cm4gbmV3IEFYRGF0ZVRpbWUoY2xvbmUsIHRoaXMpO1xuICAgICAgfVxuICAgICAgY2FzZSAnbW9udGgnOlxuICAgICAgICBjbG9uZS5zZXREYXRlKDEpO1xuICAgICAgICByZXR1cm4gbmV3IEFYRGF0ZVRpbWUoY2xvbmUsIHRoaXMpLnN0YXJ0T2YoJ2RheScpO1xuICAgICAgY2FzZSAneWVhcic6XG4gICAgICAgIGNsb25lLnNldE1vbnRoKDApO1xuICAgICAgICBjbG9uZS5zZXREYXRlKDEpO1xuICAgICAgICByZXR1cm4gbmV3IEFYRGF0ZVRpbWUoY2xvbmUsIHRoaXMpLnN0YXJ0T2YoJ2RheScpO1xuICAgIH1cbiAgfVxuXG4gIGVuZE9mKGRhdGU6IERhdGUsIHVuaXQ6IFRpbWVVbml0KTogQVhEYXRlVGltZSB7XG4gICAgY29uc3QgY2xvbmUgPSBuZXcgRGF0ZShkYXRlLnZhbHVlT2YoKSk7XG4gICAgc3dpdGNoICh1bml0KSB7XG4gICAgICBjYXNlICdzZWNvbmQnOlxuICAgICAgICBjbG9uZS5zZXRIb3VycyhjbG9uZS5nZXRIb3VycygpLCBjbG9uZS5nZXRNaW51dGVzKCksIGNsb25lLmdldFNlY29uZHMoKSwgOTk5KTtcbiAgICAgICAgcmV0dXJuIG5ldyBBWERhdGVUaW1lKGNsb25lLCB0aGlzKTtcbiAgICAgIGNhc2UgJ21pbnV0ZSc6XG4gICAgICAgIGNsb25lLnNldEhvdXJzKGNsb25lLmdldEhvdXJzKCksIGNsb25lLmdldE1pbnV0ZXMoKSwgNTksIDk5OSk7XG4gICAgICAgIHJldHVybiBuZXcgQVhEYXRlVGltZShjbG9uZSwgdGhpcyk7XG4gICAgICBjYXNlICdob3VyJzpcbiAgICAgICAgY2xvbmUuc2V0SG91cnMoY2xvbmUuZ2V0SG91cnMoKSwgNTksIDU5LCA5OTkpO1xuICAgICAgICByZXR1cm4gbmV3IEFYRGF0ZVRpbWUoY2xvbmUsIHRoaXMpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgIGNhc2UgJ2RheSc6XG4gICAgICAgIGNsb25lLnNldEhvdXJzKDIzLCA1OSwgNTksIDk5OSk7XG4gICAgICAgIHJldHVybiBuZXcgQVhEYXRlVGltZShjbG9uZSwgdGhpcyk7XG4gICAgICBjYXNlICd3ZWVrJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhcnRPZihkYXRlLCAnd2VlaycpLmFkZCgnZGF5JywgNikuZW5kT2YoJ2RheScpO1xuICAgICAgY2FzZSAnbW9udGgnOiB7XG4gICAgICAgIGNvbnN0IGRhdGVPYmogPSBuZXcgRGF0ZShkYXRlLmdldEZ1bGxZZWFyKCksIGRhdGUuZ2V0TW9udGgoKSArIDEsIDApO1xuICAgICAgICBkYXRlT2JqLnNldEhvdXJzKDIzLCA1OSwgNTksIDk5OSk7XG4gICAgICAgIHJldHVybiBuZXcgQVhEYXRlVGltZShkYXRlT2JqLCB0aGlzKTtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3llYXInOlxuICAgICAgICBjbG9uZS5zZXRNb250aCgxMSk7XG4gICAgICAgIHJldHVybiBuZXcgQVhEYXRlVGltZShjbG9uZSwgdGhpcykuZW5kT2YoJ21vbnRoJyk7XG4gICAgfVxuICB9XG5cbiAgaXNMZWFwKGRhdGU6IERhdGUpIHtcbiAgICBsZXQgbGVhcFllYXIgPSBuZXcgRGF0ZShkYXRlLmdldEZ1bGxZZWFyKCksIDEsIDI5KTtcbiAgICByZXR1cm4gbGVhcFllYXIuZ2V0RGF0ZSgpID09IDI5O1xuICB9XG5cbiAgcGFyc2UodmFsdWU6IHN0cmluZyk6IEFYRGF0ZVRpbWUge1xuICAgIHJldHVybiBuZXcgQVhEYXRlVGltZShuZXcgRGF0ZSh2YWx1ZSksIHRoaXMpO1xuICB9XG59XG4iXX0=","import { AXCalendar, AXDateTime } from './datetime.types';\nexport class AXSolarHijriCalendar extends AXCalendar {\n /**\n * @ignore\n */\n constructor(config) {\n super(config);\n /*\n SolarHijri years starting the 33-year rule.\n */\n this.breaks = [\n -61, 9, 38, 199, 426, 686, 756, 818, 1111, 1181, 1210, 1635, 2060, 2097, 2192, 2262, 2324, 2394, 2456, 3178,\n ];\n }\n create(value) {\n const a = this.toGregorian(value.year, value.month, value.day);\n return new AXDateTime(new Date(a.getFullYear(), a.getMonth(), a.getDate(), value.hours || 0, value.minutes || 0, value.seconds || 0, value.ms || 0), this);\n }\n name() {\n return 'solar-hijri';\n }\n dayOfMonth(date) {\n return this.toSolarHijri(date).day;\n }\n dayOfYear(date) {\n const j = this.toSolarHijri(date);\n return (j.month <= 6 ? (j.month - 1) * 31 : 6 * 31 + (j.month - 7) * 30) + j.day;\n }\n dayOfWeek(date) {\n return date.getDay() == 6 ? 1 : date.getDay() + 2;\n }\n weekOfYear(date) {\n //TODO : apply jalali\n const firstDay = new AXDateTime(date, this).startOf('year');\n return Math.ceil(((date.getTime() - firstDay.date.getTime()) / 86400000 + firstDay.date.getDay() + 1) / 7);\n }\n year(date) {\n return this.toSolarHijri(date).year;\n }\n monthOfYear(date) {\n return this.toSolarHijri(date).month;\n }\n add(date, unit, amount) {\n let value = date.valueOf();\n switch (unit) {\n case 'second':\n value += 1000 * amount;\n break;\n case 'minute':\n value += 60000 * amount;\n break;\n case 'hour':\n value += 3600000 * amount;\n break;\n case 'month': {\n // const v = new Date(value);\n // let jd = this.dayOfMonth(date);\n // let jm = this.monthOfYear(date);\n // let jy = this.year(date);\n // const nm = jm + amount;\n // const ny = nm % 12 ? Math.floor(nm / 12) : 0;\n // jy += ny;\n // jm = nm - ny * 12;\n // const vv = this.toGregorian(jy, jm, jd);\n // v.setFullYear(vv.getFullYear());\n // v.setMonth(vv.getMonth());\n // v.setDate(vv.getDate());\n // value = v.valueOf();\n // break;\n let jd = this.dayOfMonth(date);\n let jm = this.monthOfYear(date);\n let jy = this.year(date);\n let newMonth = jm + amount;\n let yearsToAdd = Math.floor(newMonth / 12);\n newMonth = newMonth % 12;\n if (newMonth <= 0) {\n newMonth += 12;\n yearsToAdd--;\n }\n jy += yearsToAdd;\n // Temporary set to first of the month to prevent rollover\n const tempDate = this.toGregorian(jy, newMonth, 1);\n const gregorianDate = new Date(tempDate.getFullYear(), tempDate.getMonth(), tempDate.getDate());\n // Adjust the day to either the original day or the last day of the new month, whichever is smaller\n const lastDayOfNewMonth = this.SolarHijriMonthLength(jy, newMonth); // Implement this method to find the last day in a Jalali month\n jd = Math.min(jd, lastDayOfNewMonth);\n const finalDate = this.toGregorian(jy, newMonth, jd);\n gregorianDate.setFullYear(finalDate.getFullYear());\n gregorianDate.setMonth(finalDate.getMonth());\n gregorianDate.setDate(finalDate.getDate());\n value = gregorianDate.valueOf();\n break;\n }\n case 'week':\n value += 7 * 86400000 * amount;\n break;\n case 'year': {\n const v = new Date(value);\n let jd = this.dayOfMonth(date);\n let jm = this.monthOfYear(date);\n let jy = this.year(date);\n const vv = this.toGregorian(jy + amount, jm, jd);\n v.setFullYear(vv.getFullYear());\n v.setMonth(vv.getMonth());\n v.setDate(vv.getDate());\n value = v.valueOf();\n break;\n }\n case 'day':\n default:\n value += 86400000 * amount;\n }\n return new AXDateTime(new Date(value), this);\n }\n set(date, unit, value) {\n const clone = new Date(date.valueOf());\n const jDate = this.toSolarHijri(clone);\n switch (unit) {\n case 'second':\n clone.setHours(clone.getHours(), clone.getMinutes(), value, clone.getMilliseconds());\n break;\n case 'minute':\n clone.setHours(clone.getHours(), value, clone.getSeconds(), clone.getMilliseconds());\n break;\n case 'hour':\n clone.setHours(value, clone.getMinutes(), clone.getSeconds(), clone.getMilliseconds());\n break;\n default:\n case 'day': {\n const gDate = this.toGregorian(jDate.year, jDate.month, value);\n clone.setDate(gDate.getDate());\n break;\n }\n case 'week':\n break;\n case 'month': {\n const gDate2 = this.toGregorian(jDate.year, value, jDate.day);\n clone.setMonth(gDate2.getMonth());\n break;\n }\n case 'year': {\n const gDate3 = this.toGregorian(value, jDate.month, jDate.day);\n clone.setFullYear(gDate3.getFullYear());\n break;\n }\n }\n return new AXDateTime(clone, this);\n }\n startOf(date, unit) {\n const clone = new Date(date.valueOf());\n switch (unit) {\n case 'second':\n clone.setHours(clone.getHours(), clone.getMinutes(), clone.getSeconds(), 0);\n return new AXDateTime(clone, this);\n case 'minute':\n clone.setHours(clone.getHours(), clone.getMinutes(), 0, 0);\n return new AXDateTime(clone, this);\n case 'hour':\n clone.setHours(clone.getHours(), 0, 0, 0);\n return new AXDateTime(clone, this);\n default:\n case 'day':\n clone.setHours(0, 0, 0, 0);\n return new AXDateTime(clone, this);\n case 'week':\n return new AXDateTime(clone, this).add('day', -this.dayOfWeek(clone) + 1).startOf('day');\n case 'month': {\n const jy = this.year(date);\n const jm = this.monthOfYear(date);\n const gDate = this.toGregorian(jy, jm, 1);\n return new AXDateTime(gDate, this).startOf('day');\n }\n case 'year': {\n const jy = this.year(date);\n const gDate = this.toGregorian(jy, 1, 1);\n return new AXDateTime(gDate, this).startOf('day');\n }\n }\n }\n endOf(date, unit) {\n const clone = new Date(date.valueOf());\n switch (unit) {\n case 'second':\n clone.setHours(clone.getHours(), clone.getMinutes(), clone.getSeconds(), 999);\n return new AXDateTime(clone, this);\n case 'minute':\n clone.setHours(clone.getHours(), clone.getMinutes(), 59, 999);\n return new AXDateTime(clone, this);\n case 'hour':\n clone.setHours(clone.getHours(), 59, 59, 999);\n return new AXDateTime(clone, this);\n default:\n case 'day':\n clone.setHours(23, 59, 59, 999);\n return new AXDateTime(clone, this);\n case 'week': {\n return this.startOf(date, 'week').add('day', 6).endOf('day');\n }\n case 'month': {\n const jy = this.year(date);\n const jm = this.monthOfYear(date);\n const jd = this.SolarHijriMonthLength(jy, jm);\n const gDate = this.toGregorian(jy, jm, jd);\n return new AXDateTime(gDate, this).endOf('day');\n }\n case 'year': {\n const jy = this.year(date);\n const gDate = this.toGregorian(jy, 12, this.SolarHijriMonthLength(jy, 12));\n return new AXDateTime(gDate, this).endOf('day');\n }\n }\n }\n parse(value) {\n const [y, M, d, h, m, s, ms] = value.split(/[^a-zA-Z0-9]+/gi);\n const date = this.toGregorian(Number(y) ?? 0, Number(M) ?? 1, Number(d) ?? 1);\n if (h != null)\n date.setHours(Number(h));\n if (m != null)\n date.setMinutes(Number(m));\n if (s != null)\n date.setSeconds(Number(s));\n if (ms != null)\n date.setMilliseconds(Number(d));\n return new AXDateTime(date, this);\n }\n /*\n Converts a Gregorian date to SolarHijri.\n */\n toSolarHijri(date) {\n const gd = date.getDate();\n const gm = date.getMonth() + 1;\n const gy = date.getFullYear();\n const r = this.d2j(this.g2d(gy, gm, gd));\n return {\n year: r.jy,\n month: r.jm,\n day: r.jd,\n };\n }\n /*\n Converts a SolarHijri date to Gregorian.\n */\n toGregorian(jy, jm, jd) {\n const g = this.d2g(this.j2d(jy, jm, jd));\n return new Date(g.gy, g.gm - 1, g.gd);\n }\n /*\n Checks whether a SolarHijri date is valid or not.\n */\n isValidSolarHijriDate(jy, jm, jd) {\n return jy >= -61 && jy <= 3177 && jm >= 1 && jm <= 12 && jd >= 1 && jd <= this.SolarHijriMonthLength(jy, jm);\n }\n /*\n Is this a leap year or not?\n */\n isLeapSolarHijriYear(jy) {\n return this.jalCalLeap(jy) === 0;\n }\n /*\n Number of days in a given month in a SolarHijri year.\n */\n SolarHijriMonthLength(jy, jm) {\n if (jm <= 6)\n return 31;\n if (jm <= 11)\n return 30;\n if (this.isLeapSolarHijriYear(jy))\n return 30;\n return 29;\n }\n /*\n This determines if the SolarHijri (Persian) year is\n leap (366-day long) or is the common year (365 days)\n \n @param jy SolarHijri calendar year (-61 to 3177)\n @returns number of years since the last leap year (0 to 4)\n */\n jalCalLeap(jy) {\n let bl = this.breaks.length, jp = this.breaks[0], jm, jump, leap, n, i;\n if (jy < jp || jy >= this.breaks[bl - 1])\n throw new Error('Invalid SolarHijri year ' + jy);\n for (i = 1; i < bl; i += 1) {\n jm = this.breaks[i];\n jump = jm - jp;\n if (jy < jm)\n break;\n jp = jm;\n }\n n = jy - jp;\n if (jump - n < 6)\n n = n - jump + this.div(jump + 4, 33) * 33;\n leap = this.mod(this.mod(n + 1, 33) - 1, 4);\n if (leap === -1) {\n leap = 4;\n }\n return leap;\n }\n jalCal(jy, withoutLeap) {\n let bl = this.breaks.length, gy = jy + 621, leapJ = -14, jp = this.breaks[0], jm, jump, leap, leapG, march, n, i;\n if (jy < jp || jy >= this.breaks[bl - 1])\n throw new Error('Invalid SolarHijri year ' + jy);\n // Find the limiting years for the SolarHijri year jy.\n for (i = 1; i < bl; i += 1) {\n jm = this.breaks[i];\n jump = jm - jp;\n if (jy < jm)\n break;\n leapJ = leapJ + this.div(jump, 33) * 8 + this.div(this.mod(jump, 33), 4);\n jp = jm;\n }\n n = jy - jp;\n // Find the number of leap years from AD 621 to the beginning\n // of the current SolarHijri year in the Persian calendar.\n leapJ = leapJ + this.div(n, 33) * 8 + this.div(this.mod(n, 33) + 3, 4);\n if (this.mod(jump, 33) === 4 && jump - n === 4)\n leapJ += 1;\n // And the same in the Gregorian calendar (until the year gy).\n leapG = this.div(gy, 4) - this.div((this.div(gy, 100) + 1) * 3, 4) - 150;\n // Determine the Gregorian date of Farvardin the 1st.\n march = 20 + leapJ - leapG;\n // return with gy and march when we don't need leap\n if (withoutLeap)\n return { gy: gy, march: march };\n // Find how many years have passed since the last leap year.\n if (jump - n < 6)\n n = n - jump + this.div(jump + 4, 33) * 33;\n leap = this.mod(this.mod(n + 1, 33) - 1, 4);\n if (leap === -1) {\n leap = 4;\n }\n return {\n leap: leap,\n gy: gy,\n march: march,\n };\n }\n j2d(jy, jm, jd) {\n let r = this.jalCal(jy, true);\n return this.g2d(r.gy, 3, r.march) + (jm - 1) * 31 - this.div(jm, 7) * (jm - 7) + jd - 1;\n }\n d2j(jdn) {\n let gy = this.d2g(jdn).gy, // Calculate Gregorian year (gy).\n jy = gy - 621, r = this.jalCal(jy, false), jdn1f = this.g2d(gy, 3, r.march), jd, jm, k;\n // Find number of days that passed since 1 Farvardin.\n k = jdn - jdn1f;\n if (k >= 0) {\n if (k <= 185) {\n // The first 6 months.\n jm = 1 + this.div(k, 31);\n jd = this.mod(k, 31) + 1;\n return {\n jy: jy,\n jm: jm,\n jd: jd,\n };\n }\n else {\n // The remaining months.\n k -= 186;\n }\n }\n else {\n // Previous SolarHijri year.\n jy -= 1;\n k += 179;\n if (r.leap === 1)\n k += 1;\n }\n jm = 7 + this.div(k, 30);\n jd = this.mod(k, 30) + 1;\n return {\n jy: jy,\n jm: jm,\n jd: jd,\n };\n }\n g2d(gy, gm, gd) {\n let d = this.div((gy + this.div(gm - 8, 6) + 100100) * 1461, 4) +\n this.div(153 * this.mod(gm + 9, 12) + 2, 5) +\n gd -\n 34840408;\n d = d - this.div(this.div(gy + 100100 + this.div(gm - 8, 6), 100) * 3, 4) + 752;\n return d;\n }\n d2g(jdn) {\n let j, i, gd, gm, gy;\n j = 4 * jdn + 139361631;\n j = j + this.div(this.div(4 * jdn + 183187720, 146097) * 3, 4) * 4 - 3908;\n i = this.div(this.mod(j, 1461), 4) * 5 + 308;\n gd = this.div(this.mod(i, 153), 5) + 1;\n gm = this.mod(this.div(i, 153), 12) + 1;\n gy = this.div(j, 1461) - 100100 + this.div(8 - gm, 6);\n return {\n gy: gy,\n gm: gm,\n gd: gd,\n };\n }\n SolarHijriWeek(jy, jm, jd) {\n let dayOfWeek = this.SolarHijriToDateObject(jy, jm, jd, 0, 0, 0, 0).getDay();\n let startDayDifference = dayOfWeek == 6 ? 0 : -(dayOfWeek + 1);\n let endDayDifference = 6 + startDayDifference;\n return {\n saturday: this.d2j(this.j2d(jy, jm, jd + startDayDifference)),\n friday: this.d2j(this.j2d(jy, jm, jd + endDayDifference)),\n };\n }\n SolarHijriToDateObject(jy, jm, jd, h = 0, m = 0, s = 0, ms = 0) {\n let gregorianCalenderDate = this.toGregorian(jy, jm, jd);\n return new Date(gregorianCalenderDate.getFullYear(), gregorianCalenderDate.getMonth() - 1, gregorianCalenderDate.getDate(), h || 0, m || 0, s || 0, ms || 0);\n }\n /*\n Utility helper functions.\n */\n div(a, b) {\n return ~~(a / b);\n }\n mod(a, b) {\n return a - ~~(a / b) * b;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29sYXItaGlqcmkuY2FsZW5kYXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL2RhdGUtdGltZS9zcmMvbGliL3NvbGFyLWhpanJpLmNhbGVuZGFyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQW9CLFVBQVUsRUFBeUIsTUFBTSxrQkFBa0IsQ0FBQztBQUVuRyxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsVUFBVTtJQUNsRDs7T0FFRztJQUNILFlBQVksTUFBd0I7UUFDbEMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBR2hCOztRQUVBO1FBQ1EsV0FBTSxHQUFHO1lBQ2YsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtTQUM1RyxDQUFDO0lBUEYsQ0FBQztJQVNELE1BQU0sQ0FBQyxLQUFrQjtRQUN2QixNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDL0QsT0FBTyxJQUFJLFVBQVUsQ0FDbkIsSUFBSSxJQUFJLENBQ04sQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUNmLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFDWixDQUFDLENBQUMsT0FBTyxFQUFFLEVBQ1gsS0FBSyxDQUFDLEtBQUssSUFBSSxDQUFDLEVBQ2hCLEtBQUssQ0FBQyxPQUFPLElBQUksQ0FBQyxFQUNsQixLQUFLLENBQUMsT0FBTyxJQUFJLENB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Q0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUM5RCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDOUUsSUFBSSxDQUFDLElBQUksSUFBSTtZQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEMsSUFBSSxDQUFDLElBQUksSUFBSTtZQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLElBQUksSUFBSTtZQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUMsSUFBSSxFQUFFLElBQUksSUFBSTtZQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEQsT0FBTyxJQUFJLFVBQVUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVEOztJQUVBO0lBQ0EsWUFBWSxDQUFDLElBQVU7UUFDckIsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzFCLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDL0IsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzlCLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxD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QUFFLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLENBQUM7WUFDdkQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDM0MsRUFBRTtZQUNGLFFBQVEsQ0FBQztRQUNYLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUM7UUFDaEYsT0FBTyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRU8sR0FBRyxDQUFDLEdBQVc7UUFDckIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBQ3JCLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLFNBQVMsQ0FBQztRQUN4QixDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLFNBQVMsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztRQUMxRSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO1FBQzdDLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN2QyxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDeEMsRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDdEQsT0FBTztZQUNMLEVBQUUsRUFBRSxFQUFFO1lBQ04sRUFBRSxFQUFFLEVBQUU7WUFDTixFQUFFLEVBQUUsRUFBRTtTQUNQLENBQUM7SUFDSixDQUFDO0lBRU8sY0FBYyxDQUFDLEVBQVUsRUFBRSxFQUFVLEVBQUUsRUFBVTtRQUN2RCxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7UUFFN0UsSUFBSSxrQkFBa0IsR0FBRyxTQUFTLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDL0QsSUFBSSxnQkFBZ0IsR0FBRyxDQUFDLEdBQUcsa0JBQWtCLENBQUM7UUFFOUMsT0FBTztZQUNMLFFBQVEsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsa0JBQWtCLENBQUMsQ0FBQztZQUM3RCxNQUFNLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLGdCQUFnQixDQUFDLENBQUM7U0FDMUQsQ0FBQztJQUNKLENBQUM7SUFFTyxzQkFBc0IsQ0FDNUIsRUFBVSxFQUNWLEVBQVUsRUFDVixFQUFVLEVBQ1YsSUFBWSxDQUFDLEVBQ2IsSUFBWSxDQUFDLEVBQ2IsSUFBWSxDQUFDLEVBQ2IsS0FBYSxDQUFDO1FBRWQsSUFBSSxxQkFBcUIsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFekQsT0FBTyxJQUFJLElBQUksQ0FDYixxQkFBcUIsQ0FBQyxXQUFXLEVBQUUsRUFDbkMscUJBQXFCLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxFQUNwQyxxQkFBcUIsQ0FBQyxPQUFPLEVBQUUsRUFDL0IsQ0FBQyxJQUFJLENBQUMsRUFDTixDQUFDLElBQUksQ0FBQyxFQUNOLENBQUMsSUFBSSxDQUFDLEVBQ04sRUFBRSxJQUFJLENBQUMsQ0FDUixDQUFDO0lBQ0osQ0FBQztJQUVEOztNQUVFO0lBRU0sR0FBRyxDQUFDLENBQVMsRUFBRSxDQUFTO1FBQzlCLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ25CLENBQUM7SUFFTyxHQUFHLENBQUMsQ0FBUyxFQUFFLENBQVM7UUFDOUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMzQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWENhbGVuZGFyLCBBWENhbGVuZGFyQ29uZmlnLCBBWERhdGVUaW1lLCBBWERhdGVWYWx1ZSwgVGltZVVuaXQgfSBmcm9tICcuL2RhdGV0aW1lLnR5cGVzJztcblxuZXhwb3J0IGNsYXNzIEFYU29sYXJIaWpyaUNhbGVuZGFyIGV4dGVuZHMgQVhDYWxlbmRhciB7XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihjb25maWc6IEFYQ2FsZW5kYXJDb25maWcpIHtcbiAgICBzdXBlcihjb25maWcpO1xuICB9XG5cbiAgLypcbiAgU29sYXJIaWpyaSB5ZWFycyBzdGFydGluZyB0aGUgMzMteWVhciBydWxlLlxuKi9cbiAgcHJpdmF0ZSBicmVha3MgPSBbXG4gICAgLTYxLCA5LCAzOCwgMTk5LCA0MjYsIDY4NiwgNzU2LCA4MTgsIDExMTEsIDExODEsIDEyMTAsIDE2MzUsIDIwNjAsIDIwOTcsIDIxOTIsIDIyNjIsIDIzMjQsIDIzOTQsIDI0NTYsIDMxNzgsXG4gIF07XG5cbiAgY3JlYXRlKHZhbHVlOiBBWERhdGVWYWx1ZSk6IEFYRGF0ZVRpbWUge1xuICAgIGNvbnN0IGEgPSB0aGlzLnRvR3JlZ29yaWFuKHZhbHVlLnllYXIsIHZhbHVlLm1vbnRoLCB2YWx1ZS5kYXkpO1xuICAgIHJldHVybiBuZXcgQVhEYXRlVGltZShcbiAgICAgIG5ldyBEYXRlKFxuICAgICAgICBhLmdldEZ1bGxZZWFyKCksXG4gICAgICAgIGEuZ2V0TW9udGgoKSxcbiAgICAgICAgYS5nZXREYXRlKCksXG4gICAgICAgIHZhbHVlLmhvdXJzIHx8IDAsXG4gICAgICAgIHZhbHVlLm1pbnV0ZXMgfHwgMCxcbiAgICAgICAgdmFsdWUuc2Vjb25kcyB8fCAwLFxuICAgICAgICB2YWx1ZS5tcyB8fCAwLFxuICAgICAgKSxcbiAgICAgIHRoaXMsXG4gICAgKTtcbiAgfVxuXG4gIG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ3NvbGFyLWhpanJpJztcbiAgfVxuXG4gIGRheU9mTW9udGgoZGF0ZTogRGF0ZSk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMudG9Tb2xhckhpanJpKGRhdGUpLmRheTtcbiAgfVxuXG4gIGRheU9mWWVhcihkYXRlOiBEYXRlKTogbnVtYmVyIHtcbiAgICBjb25zdCBqID0gdGhpcy50b1NvbGFySGlqcmkoZGF0ZSk7XG4gICAgcmV0dXJuIChqLm1vbnRoIDw9IDYgPyAoai5tb250aCAtIDEpICogMzEgOiA2ICogMzEgKyAoai5tb250aCAtIDcpICogMzApICsgai5kYXk7XG4gIH1cblxuICBkYXlPZldlZWsoZGF0ZTogRGF0ZSk6IG51bWJlciB7XG4gICAgcmV0dXJuIGRhdGUuZ2V0RGF5KCkgPT0gNiA/IDEgOiBkYXRlLmdldERheSgpICsgMjtcbiAgfVxuXG4gIHdlZWtPZlllYXIoZGF0ZTogRGF0ZSk6IG51bWJlciB7XG4gICAgLy9UT0RPIDogYXBwbHkgamFsYWxpXG4gICAgY29uc3QgZmlyc3REYXkgPSBuZXcgQVhEYXRlVGltZShkYXRlLCB0aGlzKS5zdGFydE9mKCd5ZWFyJyk7XG4gICAgcmV0dXJuIE1hdGguY2VpbCgoKGRhdGUuZ2V0VGltZSgpIC0gZmlyc3REYXkuZGF0ZS5nZXRUaW1lKCkpIC8gODY0MDAwMDAgKyBmaXJzdERheS5kYXRlLmdldERheSgpICsgMSkgLyA3KTtcbiAgfVxuXG4gIHllYXIoZGF0ZTogRGF0ZSk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMudG9Tb2xhckhpanJpKGRhdGUpLnllYXI7XG4gIH1cblxuICBtb250aE9mWWVhcihkYXRlOiBEYXRlKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy50b1NvbGFySGlqcmkoZGF0ZSkubW9udGg7XG4gIH1cblxuICBhZGQoZGF0ZTogRGF0ZSwgdW5pdDogVGltZVVuaXQsIGFtb3VudDogbnVtYmVyKTogQVhEYXRlVGltZSB7XG4gICAgbGV0IHZhbHVlID0gZGF0ZS52YWx1ZU9mKCk7XG4gICAgc3dpdGNoICh1bml0KSB7XG4gICAgICBjYXNlICdzZWNvbmQnOlxuICAgICAgICB2YWx1ZSArPSAxMDAwICogYW1vdW50O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ21pbnV0ZSc6XG4gICAgICAgIHZhbHVlICs9IDYwMDAwICogYW1vdW50O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2hvdXInOlxuICAgICAgICB2YWx1ZSArPSAzNjAwMDAwICogYW1vdW50O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ21vbnRoJzoge1xuICAgICAgICAvLyBjb25zdCB2ID0gbmV3IERhdGUodmFsdWUpO1xuICAgICAgICAvLyBsZXQgamQgPSB0aGlzLmRheU9mTW9udGgoZGF0ZSk7XG4gICAgICAgIC8vIGxldCBqbSA9IHRoaXMubW9udGhPZlllYXIoZGF0ZSk7XG4gICAgICAgIC8vIGxldCBqeSA9IHRoaXMueWVhcihkYXRlKTtcbiAgICAgICAgLy8gY29uc3Qgbm0gPSBqbSArIGFtb3VudDtcbiAgICAgICAgLy8gY29uc3QgbnkgPSBubSAlIDEyID8gTWF0aC5mbG9vcihubSAvIDEyKSA6IDA7XG4gICAgICAgIC8vIGp5ICs9IG55O1xuICAgICAgICAvLyBqbSA9IG5tIC0gbnkgKiAxMjtcbiAgICAgICAgLy8gY29uc3QgdnYgPSB0aGlzLnRvR3JlZ29yaWFuKGp5LCBqbSwgamQpO1xuICAgICAgICAvLyB2LnNldEZ1bGxZZWFyKHZ2LmdldEZ1bGxZZWFyKCkpO1xuICAgICAgICAvLyB2LnNldE1vbnRoKHZ2LmdldE1vbnRoKCkpO1xuICAgICAgICAvLyB2LnNldERhdGUodnYuZ2V0RGF0ZSgpKTtcbiAgICAgICAgLy8gdmFsdWUgPSB2LnZhbHVlT2YoKTtcbiAgICAgICAgLy8gYnJlYWs7XG4gICAgICAgIGxldCBqZCA9IHRoaXMuZGF5T2ZNb250aChkYXRlKTtcbiAgICAgICAgbGV0IGptID0gdGhpcy5tb250aE9mWWVhcihkYXRlKTtcbiAgICAgICAgbGV0IGp5ID0gdGhpcy55ZWFyKGRhdGUpO1xuXG4gICAgICAgIGxldCBuZXdNb250aCA9IGptICsgYW1vdW50O1xuICAgICAgICBsZXQgeWVhcnNUb0FkZCA9IE1hdGguZmxvb3IobmV3TW9udGggLyAxMik7XG4gICAgICAgIG5ld01vbnRoID0gbmV3TW9udGggJSAxMjtcbiAgICAgICAgaWYgKG5ld01vbnRoIDw9IDApIHtcbiAgICAgICAgICBuZXdNb250aCArPSAxMjtcbiAgICAgICAgICB5ZWFyc1RvQWRkLS07XG4gICAgICAgIH1cblxuICAgICAgICBqeSArPSB5ZWFyc1RvQWRkO1xuXG4gICAgICAgIC8vIFRlbXBvcmFyeSBzZXQgdG8gZmlyc3Qgb2YgdGhlIG1vbnRoIHRvIHByZXZlbnQgcm9sbG92ZXJcbiAgICAgICAgY29uc3QgdGVtcERhdGUgPSB0aGlzLnRvR3JlZ29yaWFuKGp5LCBuZXdNb250aCwgMSk7XG4gICAgICAgIGNvbnN0IGdyZWdvcmlhbkRhdGUgPSBuZXcgRGF0ZSh0ZW1wRGF0ZS5nZXRGdWxsWWVhcigpLCB0ZW1wRGF0ZS5nZXRNb250aCgpLCB0ZW1wRGF0ZS5nZXREYXRlKCkpO1xuXG4gICAgICAgIC8vIEFkanVzdCB0aGUgZGF5IHRvIGVpdGhlciB0aGUgb3JpZ2luYWwgZGF5IG9yIHRoZSBsYXN0IGRheSBvZiB0aGUgbmV3IG1vbnRoLCB3aGljaGV2ZXIgaXMgc21hbGxlclxuICAgICAgICBjb25zdCBsYXN0RGF5T2ZOZXdNb250aCA9IHRoaXMuU29sYXJIaWpyaU1vbnRoTGVuZ3RoKGp5LCBuZXdNb250aCk7IC8vIEltcGxlbWVudCB0aGlzIG1ldGhvZCB0byBmaW5kIHRoZSBsYXN0IGRheSBpbiBhIEphbGFsaSBtb250aFxuICAgICAgICBqZCA9IE1hdGgubWluKGpkLCBsYXN0RGF5T2ZOZXdNb250aCk7XG5cbiAgICAgICAgY29uc3QgZmluYWxEYXRlID0gdGhpcy50b0dyZWdvcmlhbihqeSwgbmV3TW9udGgsIGpkKTtcbiAgICAgICAgZ3JlZ29yaWFuRGF0ZS5zZXRGdWxsWWVhcihmaW5hbERhdGUuZ2V0RnVsbFllYXIoKSk7XG4gICAgICAgIGdyZWdvcmlhbkRhdGUuc2V0TW9udGgoZmluYWxEYXRlLmdldE1vbnRoKCkpO1xuICAgICAgICBncmVnb3JpYW5EYXRlLnNldERhdGUoZmluYWxEYXRlLmdldERhdGUoKSk7XG5cbiAgICAgICAgdmFsdWUgPSBncmVnb3JpYW5EYXRlLnZhbHVlT2YoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICd3ZWVrJzpcbiAgICAgICAgdmFsdWUgKz0gNyAqIDg2NDAwMDAwICogYW1vdW50O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3llYXInOiB7XG4gICAgICAgIGNvbnN0IHYgPSBuZXcgRGF0ZSh2YWx1ZSk7XG4gICAgICAgIGxldCBqZCA9IHRoaXMuZGF5T2ZNb250aChkYXRlKTtcbiAgICAgICAgbGV0IGptID0gdGhpcy5tb250aE9mWWVhcihkYXRlKTtcbiAgICAgICAgbGV0IGp5ID0gdGhpcy55ZWFyKGRhdGUpO1xuICAgICAgICBjb25zdCB2diA9IHRoaXMudG9HcmVnb3JpYW4oankgKyBhbW91bnQsIGptLCBqZCk7XG4gICAgICAgIHYuc2V0RnVsbFllYXIodnYuZ2V0RnVsbFllYXIoKSk7XG4gICAgICAgIHYuc2V0TW9udGgodnYuZ2V0TW9udGgoKSk7XG4gICAgICAgIHYuc2V0RGF0ZSh2di5nZXREYXRlKCkpO1xuICAgICAgICB2YWx1ZSA9IHYudmFsdWVPZigpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ2RheSc6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB2YWx1ZSArPSA4NjQwMDAwMCAqIGFtb3VudDtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBBWERhdGVUaW1lKG5ldyBEYXRlKHZhbHVlKSwgdGhpcyk7XG4gIH1cblxuICBzZXQoZGF0ZTogRGF0ZSwgdW5pdDogVGltZVVuaXQsIHZhbHVlOiBudW1iZXIpOiBBWERhdGVUaW1lIHtcbiAgICBjb25zdCBjbG9uZSA9IG5ldyBEYXRlKGRhdGUudmFsdWVPZigpKTtcbiAgICBjb25zdCBqRGF0ZSA9IHRoaXMudG9Tb2xhckhpanJpKGNsb25lKTtcbiAgICBzd2l0Y2ggKHVuaXQpIHtcbiAgICAgIGNhc2UgJ3NlY29uZCc6XG4gICAgICAgIGNsb25lLnNldEhvdXJzKGNsb25lLmdldEhvdXJzKCksIGNsb25lLmdldE1pbnV0ZXMoKSwgdmFsdWUsIGNsb25lLmdldE1pbGxpc2Vjb25kcygpKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdtaW51dGUnOlxuICAgICAgICBjbG9uZS5zZXRIb3VycyhjbG9uZS5nZXRIb3VycygpLCB2YWx1ZSwgY2xvbmUuZ2V0U2Vjb25kcygpLCBjbG9uZS5nZXRNaWxsaXNlY29uZHMoKSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnaG91cic6XG4gICAgICAgIGNsb25lLnNldEhvdXJzKHZhbHVlLCBjbG9uZS5nZXRNaW51dGVzKCksIGNsb25lLmdldFNlY29uZHMoKSwgY2xvbmUuZ2V0TWlsbGlzZWNvbmRzKCkpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICBjYXNlICdkYXknOiB7XG4gICAgICAgIGNvbnN0IGdEYXRlID0gdGhpcy50b0dyZWdvcmlhbihqRGF0ZS55ZWFyLCBqRGF0ZS5tb250aCwgdmFsdWUpO1xuICAgICAgICBjbG9uZS5zZXREYXRlKGdEYXRlLmdldERhdGUoKSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnd2Vlayc6XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnbW9udGgnOiB7XG4gICAgICAgIGNvbnN0IGdEYXRlMiA9IHRoaXMudG9HcmVnb3JpYW4oakRhdGUueWVhciwgdmFsdWUsIGpEYXRlLmRheSk7XG4gICAgICAgIGNsb25lLnNldE1vbnRoKGdEYXRlMi5nZXRNb250aCgpKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICd5ZWFyJzoge1xuICAgICAgICBjb25zdCBnRGF0ZTMgPSB0aGlzLnRvR3JlZ29yaWFuKHZhbHVlLCBqRGF0ZS5tb250aCwgakRhdGUuZGF5KTtcbiAgICAgICAgY2xvbmUuc2V0RnVsbFllYXIoZ0RhdGUzLmdldEZ1bGxZZWFyKCkpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5ldyBBWERhdGVUaW1lKGNsb25lLCB0aGlzKTtcbiAgfVxuXG4gIHN0YXJ0T2YoZGF0ZTogRGF0ZSwgdW5pdDogVGltZVVuaXQpOiBBWERhdGVUaW1lIHtcbiAgICBjb25zdCBjbG9uZSA9IG5ldyBEYXRlKGRhdGUudmFsdWVPZigpKTtcbiAgICBzd2l0Y2ggKHVuaXQpIHtcbiAgICAgIGNhc2UgJ3NlY29uZCc6XG4gICAgICAgIGNsb25lLnNldEhvdXJzKGNsb25lLmdldEhvdXJzKCksIGNsb25lLmdldE1pbnV0ZXMoKSwgY2xvbmUuZ2V0U2Vjb25kcygpLCAwKTtcbiAgICAgICAgcmV0dXJuIG5ldyBBWERhdGVUaW1lKGNsb25lLCB0aGlzKTtcbiAgICAgIGNhc2UgJ21pbnV0ZSc6XG4gICAgICAgIGNsb25lLnNldEhvdXJzKGNsb25lLmdldEhvdXJzKCksIGNsb25lLmdldE1pbnV0ZXMoKSwgMCwgMCk7XG4gICAgICAgIHJldHVybiBuZXcgQVhEYXRlVGltZShjbG9uZSwgdGhpcyk7XG4gICAgICBjYXNlICdob3VyJzpcbiAgICAgICAgY2xvbmUuc2V0SG91cnMoY2xvbmUuZ2V0SG91cnMoKSwgMCwgMCwgMCk7XG4gICAgICAgIHJldHVybiBuZXcgQVhEYXRlVGltZShjbG9uZSwgdGhpcyk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgY2FzZSAnZGF5JzpcbiAgICAgICAgY2xvbmUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gICAgICAgIHJldHVybiBuZXcgQVhEYXRlVGltZShjbG9uZSwgdGhpcyk7XG4gICAgICBjYXNlICd3ZWVrJzpcbiAgICAgICAgcmV0dXJuIG5ldyBBWERhdGVUaW1lKGNsb25lLCB0aGlzKS5hZGQoJ2RheScsIC10aGlzLmRheU9mV2VlayhjbG9uZSkgKyAxKS5zdGFydE9mKCdkYXknKTtcbiAgICAgIGNhc2UgJ21vbnRoJzoge1xuICAgICAgICBjb25zdCBqeSA9IHRoaXMueWVhcihkYXRlKTtcbiAgICAgICAgY29uc3Qgam0gPSB0aGlzLm1vbnRoT2ZZZWFyKGRhdGUpO1xuICAgICAgICBjb25zdCBnRGF0ZSA9IHRoaXMudG9HcmVnb3JpYW4oanksIGptLCAxKTtcbiAgICAgICAgcmV0dXJuIG5ldyBBWERhdGVUaW1lKGdEYXRlLCB0aGlzKS5zdGFydE9mKCdkYXknKTtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3llYXInOiB7XG4gICAgICAgIGNvbnN0IGp5ID0gdGhpcy55ZWFyKGRhdGUpO1xuICAgICAgICBjb25zdCBnRGF0ZSA9IHRoaXMudG9HcmVnb3JpYW4oanksIDEsIDEpO1xuICAgICAgICByZXR1cm4gbmV3IEFYRGF0ZVRpbWUoZ0RhdGUsIHRoaXMpLnN0YXJ0T2YoJ2RheScpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGVuZE9mKGRhdGU6IERhdGUsIHVuaXQ6IFRpbWVVbml0KTogQVhEYXRlVGltZSB7XG4gICAgY29uc3QgY2xvbmUgPSBuZXcgRGF0ZShkYXRlLnZhbHVlT2YoKSk7XG4gICAgc3dpdGNoICh1bml0KSB7XG4gICAgICBjYXNlICdzZWNvbmQnOlxuICAgICAgICBjbG9uZS5zZXRIb3VycyhjbG9uZS5nZXRIb3VycygpLCBjbG9uZS5nZXRNaW51dGVzKCksIGNsb25lLmdldFNlY29uZHMoKSwgOTk5KTtcbiAgICAgICAgcmV0dXJuIG5ldyBBWERhdGVUaW1lKGNsb25lLCB0aGlzKTtcbiAgICAgIGNhc2UgJ21pbnV0ZSc6XG4gICAgICAgIGNsb25lLnNldEhvdXJzKGNsb25lLmdldEhvdXJzKCksIGNsb25lLmdldE1pbnV0ZXMoKSwgNTksIDk5OSk7XG4gICAgICAgIHJldHVybiBuZXcgQVhEYXRlVGltZShjbG9uZSwgdGhpcyk7XG4gICAgICBjYXNlICdob3VyJzpcbiAgICAgICAgY2xvbmUuc2V0SG91cnMoY2xvbmUuZ2V0SG91cnMoKSwgNTksIDU5LCA5OTkpO1xuICAgICAgICByZXR1cm4gbmV3IEFYRGF0ZVRpbWUoY2xvbmUsIHRoaXMpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgIGNhc2UgJ2RheSc6XG4gICAgICAgIGNsb25lLnNldEhvdXJzKDIzLCA1OSwgNTksIDk5OSk7XG4gICAgICAgIHJldHVybiBuZXcgQVhEYXRlVGltZShjbG9uZSwgdGhpcyk7XG4gICAgICBjYXNlICd3ZWVrJzoge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGFydE9mKGRhdGUsICd3ZWVrJykuYWRkKCdkYXknLCA2KS5lbmRPZignZGF5Jyk7XG4gICAgICB9XG4gICAgICBjYXNlICdtb250aCc6IHtcbiAgICAgICAgY29uc3QgankgPSB0aGlzLnllYXIoZGF0ZSk7XG4gICAgICAgIGNvbnN0IGptID0gdGhpcy5tb250aE9mWWVhcihkYXRlKTtcbiAgICAgICAgY29uc3QgamQgPSB0aGlzLlNvbGFySGlqcmlNb250aExlbmd0aChqeSwgam0pO1xuICAgICAgICBjb25zdCBnRGF0ZSA9IHRoaXMudG9HcmVnb3JpYW4oanksIGptLCBqZCk7XG4gICAgICAgIHJldHVybiBuZXcgQVhEYXRlVGltZShnRGF0ZSwgdGhpcykuZW5kT2YoJ2RheScpO1xuICAgICAgfVxuICAgICAgY2FzZSAneWVhcic6IHtcbiAgICAgICAgY29uc3QgankgPSB0aGlzLnllYXIoZGF0ZSk7XG4gICAgICAgIGNvbnN0IGdEYXRlID0gdGhpcy50b0dyZWdvcmlhbihqeSwgMTIsIHRoaXMuU29sYXJIaWpyaU1vbnRoTGVuZ3RoKGp5LCAxMikpO1xuICAgICAgICByZXR1cm4gbmV3IEFYRGF0ZVRpbWUoZ0RhdGUsIHRoaXMpLmVuZE9mKCdkYXknKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwYXJzZSh2YWx1ZTogc3RyaW5nKTogQVhEYXRlVGltZSB7XG4gICAgY29uc3QgW3ksIE0sIGQsIGgsIG0sIHMsIG1zXSA9IHZhbHVlLnNwbGl0KC9bXmEtekEtWjAtOV0rL2dpKTtcbiAgICBjb25zdCBkYXRlID0gdGhpcy50b0dyZWdvcmlhbihOdW1iZXIoeSkgPz8gMCwgTnVtYmVyKE0pID8/IDEsIE51bWJlcihkKSA/PyAxKTtcbiAgICBpZiAoaCAhPSBudWxsKSBkYXRlLnNldEhvdXJzKE51bWJlcihoKSk7XG4gICAgaWYgKG0gIT0gbnVsbCkgZGF0ZS5zZXRNaW51dGVzKE51bWJlcihtKSk7XG4gICAgaWYgKHMgIT0gbnVsbCkgZGF0ZS5zZXRTZWNvbmRzKE51bWJlcihzKSk7XG4gICAgaWYgKG1zICE9IG51bGwpIGRhdGUuc2V0TWlsbGlzZWNvbmRzKE51bWJlcihkKSk7XG4gICAgcmV0dXJuIG5ldyBBWERhdGVUaW1lKGRhdGUsIHRoaXMpO1xuICB9XG5cbiAgLypcbiAgQ29udmVydHMgYSBHcmVnb3JpYW4gZGF0ZSB0byBTb2xhckhpanJpLlxuKi9cbiAgdG9Tb2xhckhpanJpKGRhdGU6IERhdGUpOiB7IHllYXI6IG51bWJlcjsgbW9udGg6IG51bWJlcjsgZGF5OiBudW1iZXIgfSB7XG4gICAgY29uc3QgZ2QgPSBkYXRlLmdldERhdGUoKTtcbiAgICBjb25zdCBnbSA9IGRhdGUuZ2V0TW9udGgoKSArIDE7XG4gICAgY29uc3QgZ3kgPSBkYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgY29uc3QgciA9IHRoaXMuZDJqKHRoaXMuZzJkKGd5LCBnbSwgZ2QpKTtcbiAgICByZXR1cm4ge1xuICAgICAgeWVhcjogci5qeSxcbiAgICAgIG1vbnRoOiByLmptLFxuICAgICAgZGF5OiByLmpkLFxuICAgIH07XG4gIH1cblxuICAvKlxuICAgIENvbnZlcnRzIGEgU29sYXJIaWpyaSBkYXRlIHRvIEdyZWdvcmlhbi5cbiAgKi9cbiAgdG9HcmVnb3JpYW4oanksIGptLCBqZCk6IERhdGUge1xuICAgIGNvbnN0IGcgPSB0aGlzLmQyZyh0aGlzLmoyZChqeSwgam0sIGpkKSk7XG4gICAgcmV0dXJuIG5ldyBEYXRlKGcuZ3ksIGcuZ20gLSAxLCBnLmdkKTtcbiAgfVxuXG4gIC8qXG4gICAgQ2hlY2tzIHdoZXRoZXIgYSBTb2xhckhpanJpIGRhdGUgaXMgdmFsaWQgb3Igbm90LlxuICAqL1xuICBpc1ZhbGlkU29sYXJIaWpyaURhdGUoanksIGptLCBqZCkge1xuICAgIHJldHVybiBqeSA+PSAtNjEgJiYgankgPD0gMzE3NyAmJiBqbSA+PSAxICYmIGptIDw9IDEyICYmIGpkID49IDEgJiYgamQgPD0gdGhpcy5Tb2xhckhpanJpTW9udGhMZW5ndGgoanksIGptKTtcbiAgfVxuXG4gIC8qXG4gICAgSXMgdGhpcyBhIGxlYXAgeWVhciBvciBub3Q/XG4gICovXG4gIGlzTGVhcFNvbGFySGlqcmlZZWFyKGp5KSB7XG4gICAgcmV0dXJuIHRoaXMuamFsQ2FsTGVhcChqeSkgPT09IDA7XG4gIH1cblxuICAvKlxuICAgIE51bWJlciBvZiBkYXlzIGluIGEgZ2l2ZW4gbW9udGggaW4gYSBTb2xhckhpanJpIHllYXIuXG4gICovXG4gIFNvbGFySGlqcmlNb250aExlbmd0aChqeSwgam0pIHtcbiAgICBpZiAoam0gPD0gNikgcmV0dXJuIDMxO1xuICAgIGlmIChqbSA8PSAxMSkgcmV0dXJuIDMwO1xuICAgIGlmICh0aGlzLmlzTGVhcFNvbGFySGlqcmlZZWFyKGp5KSkgcmV0dXJuIDMwO1xuICAgIHJldHVybiAyOTtcbiAgfVxuXG4gIC8qXG4gICAgICBUaGlzIGRldGVybWluZXMgaWYgdGhlIFNvbGFySGlqcmkgKFBlcnNpYW4pIHllYXIgaXNcbiAgICAgIGxlYXAgKDM2Ni1kYXkgbG9uZykgb3IgaXMgdGhlIGNvbW1vbiB5ZWFyICgzNjUgZGF5cylcbiAgXG4gICAgICBAcGFyYW0gankgU29sYXJIaWpyaSBjYWxlbmRhciB5ZWFyICgtNjEgdG8gMzE3NylcbiAgICAgIEByZXR1cm5zIG51bWJlciBvZiB5ZWFycyBzaW5jZSB0aGUgbGFzdCBsZWFwIHllYXIgKDAgdG8gNClcbiAgICovXG4gIHByaXZhdGUgamFsQ2FsTGVhcChqeTogbnVtYmVyKSB7XG4gICAgbGV0IGJsID0gdGhpcy5icmVha3MubGVuZ3RoLFxuICAgICAganAgPSB0aGlzLmJyZWFrc1swXSxcbiAgICAgIGptLFxuICAgICAganVtcCxcbiAgICAgIGxlYXAsXG4gICAgICBuLFxuICAgICAgaTtcblxuICAgIGlmIChqeSA8IGpwIHx8IGp5ID49IHRoaXMuYnJlYWtzW2JsIC0gMV0pIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBTb2xhckhpanJpIHllYXIgJyArIGp5KTtcblxuICAgIGZvciAoaSA9IDE7IGkgPCBibDsgaSArPSAxKSB7XG4gICAgICBqbSA9IHRoaXMuYnJlYWtzW2ldO1xuICAgICAganVtcCA9IGptIC0ganA7XG4gICAgICBpZiAoankgPCBqbSkgYnJlYWs7XG4gICAgICBqcCA9IGptO1xuICAgIH1cbiAgICBuID0gankgLSBqcDtcblxuICAgIGlmIChqdW1wIC0gbiA8IDYpIG4gPSBuIC0ganVtcCArIHRoaXMuZGl2KGp1bXAgKyA0LCAzMykgKiAzMztcbiAgICBsZWFwID0gdGhpcy5tb2QodGhpcy5tb2QobiArIDEsIDMzKSAtIDEsIDQpO1xuICAgIGlmIChsZWFwID09PSAtMSkge1xuICAgICAgbGVhcCA9IDQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxlYXA7XG4gIH1cblxuICBwcml2YXRlIGphbENhbChqeTogbnVtYmVyLCB3aXRob3V0TGVhcDogYm9vbGVhbikge1xuICAgIGxldCBibCA9IHRoaXMuYnJlYWtzLmxlbmd0aCxcbiAgICAgIGd5ID0gankgKyA2MjEsXG4gICAgICBsZWFwSiA9IC0xNCxcbiAgICAgIGpwID0gdGhpcy5icmVha3NbMF0sXG4gICAgICBqbSxcbiAgICAgIGp1bXAsXG4gICAgICBsZWFwLFxuICAgICAgbGVhcEcsXG4gICAgICBtYXJjaCxcbiAgICAgIG4sXG4gICAgICBpO1xuXG4gICAgaWYgKGp5IDwganAgfHwgankgPj0gdGhpcy5icmVha3NbYmwgLSAxXSkgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIFNvbGFySGlqcmkgeWVhciAnICsgankpO1xuXG4gICAgLy8gRmluZCB0aGUgbGltaXRpbmcgeWVhcnMgZm9yIHRoZSBTb2xhckhpanJpIHllYXIgankuXG4gICAgZm9yIChpID0gMTsgaSA8IGJsOyBpICs9IDEpIHtcbiAgICAgIGptID0gdGhpcy5icmVha3NbaV07XG4gICAgICBqdW1wID0gam0gLSBqcDtcbiAgICAgIGlmIChqeSA8IGptKSBicmVhaztcbiAgICAgIGxlYXBKID0gbGVhcEogKyB0aGlzLmRpdihqdW1wLCAzMykgKiA4ICsgdGhpcy5kaXYodGhpcy5tb2QoanVtcCwgMzMpLCA0KTtcbiAgICAgIGpwID0gam07XG4gICAgfVxuICAgIG4gPSBqeSAtIGpwO1xuXG4gICAgLy8gRmluZCB0aGUgbnVtYmVyIG9mIGxlYXAgeWVhcnMgZnJvbSBBRCA2MjEgdG8gdGhlIGJlZ2lubmluZ1xuICAgIC8vIG9mIHRoZSBjdXJyZW50IFNvbGFySGlqcmkgeWVhciBpbiB0aGUgUGVyc2lhbiBjYWxlbmRhci5cbiAgICBsZWFwSiA9IGxlYXBKICsgdGhpcy5kaXYobiwgMzMpICogOCArIHRoaXMuZGl2KHRoaXMubW9kKG4sIDMzKSArIDMsIDQpO1xuICAgIGlmICh0aGlzLm1vZChqdW1wLCAzMykgPT09IDQgJiYganVtcCAtIG4gPT09IDQpIGxlYXBKICs9IDE7XG5cbiAgICAvLyBBbmQgdGhlIHNhbWUgaW4gdGhlIEdyZWdvcmlhbiBjYWxlbmRhciAodW50aWwgdGhlIHllYXIgZ3kpLlxuICAgIGxlYXBHID0gdGhpcy5kaXYoZ3ksIDQpIC0gdGhpcy5kaXYoKHRoaXMuZGl2KGd5LCAxMDApICsgMSkgKiAzLCA0KSAtIDE1MDtcblxuICAgIC8vIERldGVybWluZSB0aGUgR3JlZ29yaWFuIGRhdGUgb2YgRmFydmFyZGluIHRoZSAxc3QuXG4gICAgbWFyY2ggPSAyMCArIGxlYXBKIC0gbGVhcEc7XG5cbiAgICAvLyByZXR1cm4gd2l0aCBneSBhbmQgbWFyY2ggd2hlbiB3ZSBkb24ndCBuZWVkIGxlYXBcbiAgICBpZiAod2l0aG91dExlYXApIHJldHVybiB7IGd5OiBneSwgbWFyY2g6IG1hcmNoIH07XG5cbiAgICAvLyBGaW5kIGhvdyBtYW55IHllYXJzIGhhdmUgcGFzc2VkIHNpbmNlIHRoZSBsYXN0IGxlYXAgeWVhci5cbiAgICBpZiAoanVtcCAtIG4gPCA2KSBuID0gbiAtIGp1bXAgKyB0aGlzLmRpdihqdW1wICsgNCwgMzMpICogMzM7XG4gICAgbGVhcCA9IHRoaXMubW9kKHRoaXMubW9kKG4gKyAxLCAzMykgLSAxLCA0KTtcbiAgICBpZiAobGVhcCA9PT0gLTEpIHtcbiAgICAgIGxlYXAgPSA0O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBsZWFwOiBsZWFwLFxuICAgICAgZ3k6IGd5LFxuICAgICAgbWFyY2g6IG1hcmNoLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGoyZChqeSwgam0sIGpkKTogbnVtYmVyIHtcbiAgICBsZXQgciA9IHRoaXMuamFsQ2FsKGp5LCB0cnVlKTtcbiAgICByZXR1cm4gdGhpcy5nMmQoci5neSwgMywgci5tYXJjaCkgKyAoam0gLSAxKSAqIDMxIC0gdGhpcy5kaXYoam0sIDcpICogKGptIC0gNykgKyBqZCAtIDE7XG4gIH1cblxuICBwcml2YXRlIGQyaihqZG46IG51bWJlcikge1xuICAgIGxldCBneSA9IHRoaXMuZDJnKGpkbikuZ3ksIC8vIENhbGN1bGF0ZSBHcmVnb3JpYW4geWVhciAoZ3kpLlxuICAgICAgankgPSBneSAtIDYyMSxcbiAgICAgIHIgPSB0aGlzLmphbENhbChqeSwgZmFsc2UpLFxuICAgICAgamRuMWYgPSB0aGlzLmcyZChneSwgMywgci5tYXJjaCksXG4gICAgICBqZCxcbiAgICAgIGptLFxuICAgICAgaztcblxuICAgIC8vIEZpbmQgbnVtYmVyIG9mIGRheXMgdGhhdCBwYXNzZWQgc2luY2UgMSBGYXJ2YXJkaW4uXG4gICAgayA9IGpkbiAtIGpkbjFmO1xuICAgIGlmIChrID49IDApIHtcbiAgICAgIGlmIChrIDw9IDE4NSkge1xuICAgICAgICAvLyBUaGUgZmlyc3QgNiBtb250aHMuXG4gICAgICAgIGptID0gMSArIHRoaXMuZGl2KGssIDMxKTtcbiAgICAgICAgamQgPSB0aGlzLm1vZChrLCAzMSkgKyAxO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGp5OiBqeSxcbiAgICAgICAgICBqbTogam0sXG4gICAgICAgICAgamQ6IGpkLFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gVGhlIHJlbWFpbmluZyBtb250aHMuXG4gICAgICAgIGsgLT0gMTg2O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBQcmV2aW91cyBTb2xhckhpanJpIHllYXIuXG4gICAgICBqeSAtPSAxO1xuICAgICAgayArPSAxNzk7XG4gICAgICBpZiAoci5sZWFwID09PSAxKSBrICs9IDE7XG4gICAgfVxuICAgIGptID0gNyArIHRoaXMuZGl2KGssIDMwKTtcbiAgICBqZCA9IHRoaXMubW9kKGssIDMwKSArIDE7XG4gICAgcmV0dXJuIHtcbiAgICAgIGp5OiBqeSxcbiAgICAgIGptOiBqbSxcbiAgICAgIGpkOiBqZCxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBnMmQoZ3k6IG51bWJlciwgZ206IG51bWJlciwgZ2Q6IG51bWJlcik6IG51bWJlciB7XG4gICAgbGV0IGQgPVxuICAgICAgdGhpcy5kaXYoKGd5ICsgdGhpcy5kaXYoZ20gLSA4LCA2KSArIDEwMDEwMCkgKiAxNDYxLCA0KSArXG4gICAgICB0aGlzLmRpdigxNTMgKiB0aGlzLm1vZChnbSArIDksIDEyKSArIDIsIDUpICtcbiAgICAgIGdkIC1cbiAgICAgIDM0ODQwNDA4O1xuICAgIGQgPSBkIC0gdGhpcy5kaXYodGhpcy5kaXYoZ3kgKyAxMDAxMDAgKyB0aGlzLmRpdihnbSAtIDgsIDYpLCAxMDApICogMywgNCkgKyA3NTI7XG4gICAgcmV0dXJuIGQ7XG4gIH1cblxuICBwcml2YXRlIGQyZyhqZG46IG51bWJlcikge1xuICAgIGxldCBqLCBpLCBnZCwgZ20sIGd5O1xuICAgIGogPSA0ICogamRuICsgMTM5MzYxNjMxO1xuICAgIGogPSBqICsgdGhpcy5kaXYodGhpcy5kaXYoNCAqIGpkbiArIDE4MzE4NzcyMCwgMTQ2MDk3KSAqIDMsIDQpICogNCAtIDM5MDg7XG4gICAgaSA9IHRoaXMuZGl2KHRoaXMubW9kKGosIDE0NjEpLCA0KSAqIDUgKyAzMDg7XG4gICAgZ2QgPSB0aGlzLmRpdih0aGlzLm1vZChpLCAxNTMpLCA1KSArIDE7XG4gICAgZ20gPSB0aGlzLm1vZCh0aGlzLmRpdihpLCAxNTMpLCAxMikgKyAxO1xuICAgIGd5ID0gdGhpcy5kaXYoaiwgMTQ2MSkgLSAxMDAxMDAgKyB0aGlzLmRpdig4IC0gZ20sIDYpO1xuICAgIHJldHVybiB7XG4gICAgICBneTogZ3ksXG4gICAgICBnbTogZ20sXG4gICAgICBnZDogZ2QsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgU29sYXJIaWpyaVdlZWsoank6IG51bWJlciwgam06IG51bWJlciwgamQ6IG51bWJlcik6IHsgc2F0dXJkYXk6IGFueTsgZnJpZGF5OiBhbnkgfSB7XG4gICAgbGV0IGRheU9mV2VlayA9IHRoaXMuU29sYXJIaWpyaVRvRGF0ZU9iamVjdChqeSwgam0sIGpkLCAwLCAwLCAwLCAwKS5nZXREYXkoKTtcblxuICAgIGxldCBzdGFydERheURpZmZlcmVuY2UgPSBkYXlPZldlZWsgPT0gNiA/IDAgOiAtKGRheU9mV2VlayArIDEpO1xuICAgIGxldCBlbmREYXlEaWZmZXJlbmNlID0gNiArIHN0YXJ0RGF5RGlmZmVyZW5jZTtcblxuICAgIHJldHVybiB7XG4gICAgICBzYXR1cmRheTogdGhpcy5kMmoodGhpcy5qMmQoanksIGptLCBqZCArIHN0YXJ0RGF5RGlmZmVyZW5jZSkpLFxuICAgICAgZnJpZGF5OiB0aGlzLmQyaih0aGlzLmoyZChqeSwgam0sIGpkICsgZW5kRGF5RGlmZmVyZW5jZSkpLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIFNvbGFySGlqcmlUb0RhdGVPYmplY3QoXG4gICAgank6IG51bWJlcixcbiAgICBqbTogbnVtYmVyLFxuICAgIGpkOiBudW1iZXIsXG4gICAgaDogbnVtYmVyID0gMCxcbiAgICBtOiBudW1iZXIgPSAwLFxuICAgIHM6IG51bWJlciA9IDAsXG4gICAgbXM6IG51bWJlciA9IDAsXG4gICkge1xuICAgIGxldCBncmVnb3JpYW5DYWxlbmRlckRhdGUgPSB0aGlzLnRvR3JlZ29yaWFuKGp5LCBqbSwgamQpO1xuXG4gICAgcmV0dXJuIG5ldyBEYXRlKFxuICAgICAgZ3JlZ29yaWFuQ2FsZW5kZXJEYXRlLmdldEZ1bGxZZWFyKCksXG4gICAgICBncmVnb3JpYW5DYWxlbmRlckRhdGUuZ2V0TW9udGgoKSAtIDEsXG4gICAgICBncmVnb3JpYW5DYWxlbmRlckRhdGUuZ2V0RGF0ZSgpLFxuICAgICAgaCB8fCAwLFxuICAgICAgbSB8fCAwLFxuICAgICAgcyB8fCAwLFxuICAgICAgbXMgfHwgMCxcbiAgICApO1xuICB9XG5cbiAgLypcbiAgICBVdGlsaXR5IGhlbHBlciBmdW5jdGlvbnMuXG4gICovXG5cbiAgcHJpdmF0ZSBkaXYoYTogbnVtYmVyLCBiOiBudW1iZXIpIHtcbiAgICByZXR1cm4gfn4oYSAvIGIpO1xuICB9XG5cbiAgcHJpdmF0ZSBtb2QoYTogbnVtYmVyLCBiOiBudW1iZXIpIHtcbiAgICByZXR1cm4gYSAtIH5+KGEgLyBiKSAqIGI7XG4gIH1cbn1cbiJdfQ==","import { AX_GLOBAL_CONFIG } from '@acorex/core/config';\nimport { InjectionToken, inject } from '@angular/core';\nimport { set } from 'lodash-es';\nimport { AXGregorianCalendar } from './gregorian.calendar';\nimport { AXSolarHijriCalendar } from './solar-hijri.calendar';\nexport const AX_DATETIME_CONFIG = new InjectionToken('AX_DATETIME_CONFIG', {\n providedIn: 'root',\n factory: () => {\n const global = inject(AX_GLOBAL_CONFIG);\n set(global, 'dateTime', AX_DATETIME_CONFIG);\n return AXDateTimeDefaultConfig;\n },\n});\nexport const AXDateTimeDefaultConfig = {\n calendar: 'gregorian',\n calendars: {\n gregorian: new AXGregorianCalendar({\n weekdays: [0, 1, 2, 3, 4, 5, 6],\n weekend: [5, 6],\n }),\n 'solar-hijri': new AXSolarHijriCalendar({\n weekdays: [6, 0, 1, 2, 3, 4, 5],\n weekend: [6],\n }),\n },\n};\nexport function dateTimeConfig(config = {}) {\n const result = {\n ...AXDateTimeDefaultConfig,\n ...config,\n };\n return result;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZVRpbWUuY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9kYXRlLXRpbWUvc3JjL2xpYi9kYXRlVGltZS5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVoQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQVM5RCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLGNBQWMsQ0FBbUIsb0JBQW9CLEVBQUU7SUFDM0YsVUFBVSxFQUFFLE1BQU07SUFDbEIsT0FBTyxFQUFFLEdBQUcsRUFBRTtRQUNaLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3hDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLGtCQUFrQixDQUFDLENBQUM7UUFDNUMsT0FBTyx1QkFBdUIsQ0FBQztJQUNqQyxDQUFDO0NBQ0YsQ0FBQyxDQUFDO0FBRUgsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQXFCO0lBQ3ZELFFBQVEsRUFBRSxXQUFXO0lBQ3JCLFNBQVMsRUFBRTtRQUNULFNBQVMsRUFBRSxJQUFJLG1CQUFtQixDQUFDO1lBQ2pDLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUMvQixPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ2hCLENBQUM7UUFDRixhQUFhLEVBQUUsSUFBSSxvQkFBb0IsQ0FBQztZQUN0QyxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDL0IsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ2IsQ0FBQztLQUNIO0NBQ0YsQ0FBQztBQUlGLE1BQU0sVUFBVSxjQUFjLENBQUMsU0FBZ0MsRUFBRTtJQUMvRCxNQUFNLE1BQU0sR0FBRztRQUNiLEdBQUcsdUJBQXVCO1FBQzFCLEdBQUcsTUFBTTtLQUNWLENBQUM7SUFDRixPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhfR0xPQkFMX0NPTkZJRyB9IGZyb20gJ0BhY29yZXgvY29yZS9jb25maWcnO1xuaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4sIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgc2V0IH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEFYQ2FsZW5kYXIgfSBmcm9tICcuL2RhdGV0aW1lLnR5cGVzJztcbmltcG9ydCB7IEFYR3JlZ29yaWFuQ2FsZW5kYXIgfSBmcm9tICcuL2dyZWdvcmlhbi5jYWxlbmRhcic7XG5pbXBvcnQgeyBBWFNvbGFySGlqcmlDYWxlbmRhciB9IGZyb20gJy4vc29sYXItaGlqcmkuY2FsZW5kYXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFYRGF0ZVRpbWVDb25maWcge1xuICBjYWxlbmRhcjogc3RyaW5nO1xuICBjYWxlbmRhcnM6IHtcbiAgICBba2V5OiBzdHJpbmddOiBBWENhbGVuZGFyO1xuICB9O1xufVxuXG5leHBvcnQgY29uc3QgQVhfREFURVRJTUVfQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuPEFYRGF0ZVRpbWVDb25maWc+KCdBWF9EQVRFVElNRV9DT05GSUcnLCB7XG4gIHByb3ZpZGVkSW46ICdyb290JyxcbiAgZmFjdG9yeTogKCkgPT4ge1xuICAgIGNvbnN0IGdsb2JhbCA9IGluamVjdChBWF9HTE9CQUxfQ09ORklHKTtcbiAgICBzZXQoZ2xvYmFsLCAnZGF0ZVRpbWUnLCBBWF9EQVRFVElNRV9DT05GSUcpO1xuICAgIHJldHVybiBBWERhdGVUaW1lRGVmYXVsdENvbmZpZztcbiAgfSxcbn0pO1xuXG5leHBvcnQgY29uc3QgQVhEYXRlVGltZURlZmF1bHRDb25maWc6IEFYRGF0ZVRpbWVDb25maWcgPSB7XG4gIGNhbGVuZGFyOiAnZ3JlZ29yaWFuJyxcbiAgY2FsZW5kYXJzOiB7XG4gICAgZ3JlZ29yaWFuOiBuZXcgQVhHcmVnb3JpYW5DYWxlbmRhcih7XG4gICAgICB3ZWVrZGF5czogWzAsIDEsIDIsIDMsIDQsIDUsIDZdLFxuICAgICAgd2Vla2VuZDogWzUsIDZdLFxuICAgIH0pLFxuICAgICdzb2xhci1oaWpyaSc6IG5ldyBBWFNvbGFySGlqcmlDYWxlbmRhcih7XG4gICAgICB3ZWVrZGF5czogWzYsIDAsIDEsIDIsIDMsIDQsIDVdLFxuICAgICAgd2Vla2VuZDogWzZdLFxuICAgIH0pLFxuICB9LFxufTtcblxuZXhwb3J0IHR5cGUgUGFydGlhbERhdGVUaW1lQ29uZmlnID0gUGFydGlhbDxBWERhdGVUaW1lQ29uZmlnPjtcblxuZXhwb3J0IGZ1bmN0aW9uIGRhdGVUaW1lQ29uZmlnKGNvbmZpZzogUGFydGlhbERhdGVUaW1lQ29uZmlnID0ge30pOiBBWERhdGVUaW1lQ29uZmlnIHtcbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgIC4uLkFYRGF0ZVRpbWVEZWZhdWx0Q29uZmlnLFxuICAgIC4uLmNvbmZpZyxcbiAgfTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cbiJdfQ==","import { InjectionToken } from '@angular/core';\nexport class AXHolidaysLoaderDefault {\n getHolidays(options) {\n return Promise.resolve([]);\n }\n}\nexport const AX_DATETIME_HOLIDAYS_LOADER = new InjectionToken('AX_DATETIME_HOLIDAYS_LOADER', {\n providedIn: 'root',\n factory: () => {\n return new AXHolidaysLoaderDefault();\n },\n});\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9saWRheXMubG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9kYXRlLXRpbWUvc3JjL2xpYi9ob2xpZGF5cy5sb2FkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQWtCL0MsTUFBTSxPQUFPLHVCQUF1QjtJQUNsQyxXQUFXLENBQUMsT0FBNkM7UUFDdkQsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzdCLENBQUM7Q0FDRjtBQUVELE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFHLElBQUksY0FBYyxDQUFtQiw2QkFBNkIsRUFBRTtJQUM3RyxVQUFVLEVBQUUsTUFBTTtJQUNsQixPQUFPLEVBQUUsR0FBRyxFQUFFO1FBQ1osT0FBTyxJQUFJLHVCQUF1QixFQUFFLENBQUM7SUFDdkMsQ0FBQztDQUNGLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhIb2xpZGF5RGF0ZSB7XG4gIGRhdGU6IERhdGU7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBba2V5OiBzdHJpbmddOiB1bmtub3duO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYSG9saWRheXNMb2FkZXJPcHRpb25zIHtcbiAgY2FsZW5kYXI/OiBzdHJpbmc7XG4gIHJhbmdlPzogeyBzdGFydDogRGF0ZTsgZW5kOiBEYXRlIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhIb2xpZGF5c0xvYWRlciB7XG4gIGdldEhvbGlkYXlzKG9wdGlvbnM/OiBBWEhvbGlkYXlzTG9hZGVyT3B0aW9ucyk6IFByb21pc2U8QVhIb2xpZGF5RGF0ZVtdPjtcbn1cblxuZXhwb3J0IGNsYXNzIEFYSG9saWRheXNMb2FkZXJEZWZhdWx0IGltcGxlbWVudHMgQVhIb2xpZGF5c0xvYWRlciB7XG4gIGdldEhvbGlkYXlzKG9wdGlvbnM/OiBBWEhvbGlkYXlzTG9hZGVyT3B0aW9ucyB8IHVuZGVmaW5lZCk6IFByb21pc2U8QVhIb2xpZGF5RGF0ZVtdPiB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShbXSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IEFYX0RBVEVUSU1FX0hPTElEQVlTX0xPQURFUiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxBWEhvbGlkYXlzTG9hZGVyPignQVhfREFURVRJTUVfSE9MSURBWVNfTE9BREVSJywge1xuICBwcm92aWRlZEluOiAncm9vdCcsXG4gIGZhY3Rvcnk6ICgpID0+IHtcbiAgICByZXR1cm4gbmV3IEFYSG9saWRheXNMb2FkZXJEZWZhdWx0KCk7XG4gIH0sXG59KTtcbiJdfQ==","import { AXEventService, AXSystemEvents } from '@acorex/core/events';\nimport { AXFormatService } from '@acorex/core/format';\nimport { AXLocaleService } from '@acorex/core/locale';\nimport { Injectable, inject } from '@angular/core';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { AX_DATETIME_CONFIG } from './dateTime.config';\nimport { AXDateTime } from './datetime.types';\nimport { AX_DATETIME_HOLIDAYS_LOADER } from './holidays.loader';\nimport * as i0 from \"@angular/core\";\nexport class AXCalendarService {\n get calendar() {\n return this.getActiveCalendar();\n }\n getDefaultCalendar() {\n return this.config.calendars[this.config.calendar];\n }\n getActiveCalendar() {\n return this.activeCalendar.getValue();\n }\n setActiveCalendar(name) {\n if (name != this.calendar?.name()) {\n const calendar = this.resolveCalendar(name);\n this.activeCalendar.next(calendar);\n this.eventService.emitEvent({\n type: AXSystemEvents.AXCalendarChanged,\n payload: this.getActiveCalendar(),\n });\n }\n }\n get holidays() {\n return this._holidays;\n }\n constructor() {\n this.config = inject(AX_DATETIME_CONFIG);\n this._holidaysLoader = inject(AX_DATETIME_HOLIDAYS_LOADER);\n this.eventService = inject(AXEventService);\n this.formatService = inject(AXFormatService);\n this.localeService = inject(AXLocaleService);\n this.activeCalendar = new BehaviorSubject(this.getDefaultCalendar());\n this.calendarChanges$ = this.activeCalendar.asObservable();\n this.onHolidaysChanged = new Subject();\n this._holidays = [];\n this.loadHolidays();\n //\n this.localeService.profileChanged$.subscribe((locale) => {\n if (locale?.calendar?.system) {\n this.setActiveCalendar(locale.calendar.system);\n }\n });\n }\n loadHolidays(options) {\n return this._holidaysLoader.getHolidays(options).then((value) => {\n this._holidays = value;\n this.onHolidaysChanged.next(this._holidays);\n });\n }\n isValidDate(value) {\n try {\n if (!value) {\n return false;\n }\n //\n if (value instanceof AXDateTime) {\n return true;\n }\n // Check if it's a Date object\n if (value instanceof Date) {\n return !isNaN(value.getTime());\n }\n // Check if it's a valid date string\n if (typeof value === 'string') {\n const parsed = new Date(value);\n return !isNaN(parsed.getTime());\n }\n // Check if it's an AXDateValue object\n if (typeof value === 'object') {\n return !!(value.year &&\n typeof value.month === 'number' &&\n value.month >= 1 &&\n value.month <= 12 &&\n value.year > 0);\n }\n return false;\n }\n catch (error) {\n return false;\n }\n }\n create(value, calendarName) {\n try {\n const calendar = calendarName ? this.resolveCalendar(calendarName) : this.calendar;\n if (!this.isValidDate(value)) {\n throw new Error(`Invalid Date value: ${value}`);\n }\n if (value instanceof AXDateTime) {\n return value;\n }\n else if (typeof value === 'string') {\n return new AXDateTime(new Date(value), calendar);\n }\n else if (value instanceof Date) {\n return new AXDateTime(value, calendar);\n }\n else if (value?.year && value?.month) {\n return calendar.create(value);\n }\n return this.now();\n }\n catch (error) {\n console.error('Error creating date:', error);\n throw new Error(`Invalid Date value: ${value}`);\n }\n }\n now(calendarName) {\n const calendar = calendarName ? this.resolveCalendar(calendarName) : this.calendar;\n return new AXDateTime(new Date(), calendar);\n }\n resolveCalendar(name) {\n const c = this.config.calendars[name];\n if (!c) {\n return this.calendar;\n }\n return c;\n }\n convert(value, calendarName) {\n const isISOString = (str) => {\n if (!/\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(.\\d{3}Z)?/.test(str))\n return false;\n const d = new Date(str);\n return d instanceof Date && !isNaN(d.getTime()); // valid date\n };\n //\n const calendar = calendarName ? this.resolveCalendar(calendarName) : this.calendar;\n if (typeof value === 'string') {\n if (isISOString(value))\n return new AXDateTime(new Date(value), calendar);\n else\n return calendar.parse(value);\n }\n const date = value instanceof AXDateTime ? value.date : value;\n return new AXDateTime(date, calendar);\n }\n format(value, format, options) {\n const calendar = options?.calendar ? this.resolveCalendar(options.calendar) : this.calendar;\n return this.formatService.format(value, 'datetime', {\n format: format,\n calendar: calendar.name(),\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXCalendarService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXCalendarService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXCalendarService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvZGF0ZS10aW1lL3NyYy9saWIvY2FsZW5kYXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEQsT0FBTyxFQUFvQixrQkFBa0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3pFLE9BQU8sRUFBYyxVQUFVLEVBQXFDLE1BQU0sa0JBQWtCLENBQUM7QUFFN0YsT0FBTyxFQUEwQywyQkFBMkIsRUFBRSxNQUFNLG1CQUFtQixDQUFDOztBQUd4RyxNQUFNLE9BQU8saUJBQWlCO0lBTzVCLElBQVcsUUFBUTtRQUNqQixPQUFPLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFLTSxrQkFBa0I7UUFDdkIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFTSxpQkFBaUI7UUFDdEIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFTSxpQkFBaUIsQ0FBQyxJQUFZO1FBQ25DLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUNsQyxNQUFNLFFBQVEsR0FB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QyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ25GLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDOUIsSUFBSSxXQUFXLENBQUMsS0FBSyxDQUFDO2dCQUFFLE9BQU8sSUFBSSxVQUFVLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7O2dCQUNwRSxPQUFPLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDcEMsQ0FBQztRQUNELE1BQU0sSUFBSSxHQUFHLEtBQUssWUFBWSxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFFLEtBQWMsQ0FBQztRQUN4RSxPQUFPLElBQUksVUFBVSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRU0sTUFBTSxDQUFDLEtBQTJCLEVBQUUsTUFBYyxFQUFFLE9BQW9DO1FBQzdGLE1BQU0sUUFBUSxHQUFHLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBRTVGLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRTtZQUNsRCxNQUFNLEVBQUUsTUFBTTtZQUNkLFFBQVEsRUFBRSxRQUFRLENBQUMsSUFBSSxFQUFFO1NBQzFCLENBQUMsQ0FBQztJQUNMLENBQUM7OEdBMUpVLGlCQUFpQjtrSEFBakIsaUJBQWlCLGNBREosTUFBTTs7MkZBQ25CLGlCQUFpQjtrQkFEN0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWEV2ZW50U2VydmljZSwgQVhTeXN0ZW1FdmVudHMgfSBmcm9tICdAYWNvcmV4L2NvcmUvZXZlbnRzJztcbmltcG9ydCB7IEFYRm9ybWF0U2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29yZS9mb3JtYXQnO1xuaW1wb3J0IHsgQVhMb2NhbGVTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb3JlL2xvY2FsZSc7XG5pbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQVhEYXRlVGltZUNvbmZpZywgQVhfREFURVRJTUVfQ09ORklHIH0gZnJvbSAnLi9kYXRlVGltZS5jb25maWcnO1xuaW1wb3J0IHsgQVhDYWxlbmRhciwgQVhEYXRlVGltZSwgQVhEYXRlVmFsdWUsIEFYVmFsaWREYXRlVGltZVZhbHVlIH0gZnJvbSAnLi9kYXRldGltZS50eXBlcyc7XG5pbXBvcnQgeyBBWERhdGVUaW1lRm9ybWF0dGVyT3B0aW9ucyB9IGZyb20gJy4vZm9ybWF0dGVycy9kYXRldGltZS5mb3JtYXR0ZXInO1xuaW1wb3J0IHsgQVhIb2xpZGF5RGF0ZSwgQVhIb2xpZGF5c0xvYWRlck9wdGlvbnMsIEFYX0RBVEVUSU1FX0hPTElEQVlTX0xPQURFUiB9IGZyb20gJy4vaG9saWRheXMubG9hZGVyJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBBWENhbGVuZGFyU2VydmljZSB7XG4gIHByaXZhdGUgY29uZmlnOiBBWERhdGVUaW1lQ29uZmlnID0gaW5qZWN0KEFYX0RBVEVUSU1FX0NPTkZJRyk7XG4gIHByaXZhdGUgX2hvbGlkYXlzTG9hZGVyID0gaW5qZWN0KEFYX0RBVEVUSU1FX0hPTElEQVlTX0xPQURFUik7XG4gIHByaXZhdGUgZXZlbnRTZXJ2aWNlID0gaW5qZWN0KEFYRXZlbnRTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBmb3JtYXRTZXJ2aWNlID0gaW5qZWN0KEFYRm9ybWF0U2VydmljZSk7XG4gIHByaXZhdGUgbG9jYWxlU2VydmljZSA9IGluamVjdChBWExvY2FsZVNlcnZpY2UpO1xuXG4gIHB1YmxpYyBnZXQgY2FsZW5kYXIoKTogQVhDYWxlbmRhciB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0QWN0aXZlQ2FsZW5kYXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgYWN0aXZlQ2FsZW5kYXIgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEFYQ2FsZW5kYXI+KHRoaXMuZ2V0RGVmYXVsdENhbGVuZGFyKCkpO1xuICBjYWxlbmRhckNoYW5nZXMkID0gdGhpcy5hY3RpdmVDYWxlbmRhci5hc09ic2VydmFibGUoKTtcblxuICBwdWJsaWMgZ2V0RGVmYXVsdENhbGVuZGFyKCk6IEFYQ2FsZW5kYXIge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5jYWxlbmRhcnNbdGhpcy5jb25maWcuY2FsZW5kYXJdO1xuICB9XG5cbiAgcHVibGljIGdldEFjdGl2ZUNhbGVuZGFyKCk6IEFYQ2FsZW5kYXIge1xuICAgIHJldHVybiB0aGlzLmFjdGl2ZUNhbGVuZGFyLmdldFZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgc2V0QWN0aXZlQ2FsZW5kYXIobmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKG5hbWUgIT0gdGhpcy5jYWxlbmRhcj8ubmFtZSgpKSB7XG4gICAgICBjb25zdCBjYWxlbmRhciA9IHRoaXMucmVzb2x2ZUNhbGVuZGFyKG5hbWUpO1xuICAgICAgdGhpcy5hY3RpdmVDYWxlbmRhci5uZXh0KGNhbGVuZGFyKTtcbiAgICAgIHRoaXMuZXZlbnRTZXJ2aWNlLmVtaXRFdmVudCh7XG4gICAgICAgIHR5cGU6IEFYU3lzdGVtRXZlbnRzLkFYQ2FsZW5kYXJDaGFuZ2VkLFxuICAgICAgICBwYXlsb2FkOiB0aGlzLmdldEFjdGl2ZUNhbGVuZGFyKCksXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25Ib2xpZGF5c0NoYW5nZWQ6IFN1YmplY3Q8QVhIb2xpZGF5RGF0ZVtdPiA9IG5ldyBTdWJqZWN0PEFYSG9saWRheURhdGVbXT4oKTtcbiAgcHJpdmF0ZSBfaG9saWRheXM6IEFYSG9saWRheURhdGVbXSA9IFtdO1xuICBwdWJsaWMgZ2V0IGhvbGlkYXlzKCk6IEFYSG9saWRheURhdGVbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2hvbGlkYXlzO1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5sb2FkSG9saWRheXMoKTtcbiAgICAvL1xuICAgIHRoaXMubG9jYWxlU2VydmljZS5wcm9maWxlQ2hhbmdlZCQuc3Vic2NyaWJlKChsb2NhbGUpID0+IHtcbiAgICAgIGlmIChsb2NhbGU/LmNhbGVuZGFyPy5zeXN0ZW0pIHtcbiAgICAgICAgdGhpcy5zZXRBY3RpdmVDYWxlbmRhcihsb2NhbGUuY2FsZW5kYXIuc3lzdGVtKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBsb2FkSG9saWRheXMob3B0aW9ucz86IEFYSG9saWRheXNMb2FkZXJPcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMuX2hvbGlkYXlzTG9hZGVyLmdldEhvbGlkYXlzKG9wdGlvbnMpLnRoZW4oKHZhbHVlKSA9PiB7XG4gICAgICB0aGlzLl9ob2xpZGF5cyA9IHZhbHVlO1xuICAgICAgdGhpcy5vbkhvbGlkYXlzQ2hhbmdlZC5uZXh0KHRoaXMuX2hvbGlkYXlzKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBpc1ZhbGlkRGF0ZSh2YWx1ZTogYW55KTogYm9vbGVhbiB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgLy9cbiAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEFYRGF0ZVRpbWUpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICAvLyBDaGVjayBpZiBpdCdzIGEgRGF0ZSBvYmplY3RcbiAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTih2YWx1ZS5nZXRUaW1lKCkpO1xuICAgICAgfVxuICAgICAgLy8gQ2hlY2sgaWYgaXQncyBhIHZhbGlkIGRhdGUgc3RyaW5nXG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICBjb25zdCBwYXJzZWQgPSBuZXcgRGF0ZSh2YWx1ZSk7XG4gICAgICAgIHJldHVybiAhaXNOYU4ocGFyc2VkLmdldFRpbWUoKSk7XG4gICAgICB9XG4gICAgICAvLyBDaGVjayBpZiBpdCdzIGFuIEFYRGF0ZVZhbHVlIG9iamVjdFxuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgcmV0dXJuICEhKFxuICAgICAgICAgIHZhbHVlLnllYXIgJiZcbiAgICAgICAgICB0eXBlb2YgdmFsdWUubW9udGggPT09ICdudW1iZXInICYmXG4gICAgICAgICAgdmFsdWUubW9udGggPj0gMSAmJlxuICAgICAgICAgIHZhbHVlLm1vbnRoIDw9IDEyICYmXG4gICAgICAgICAgdmFsdWUueWVhciA+IDBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBjcmVhdGUodmFsdWU6IEFYRGF0ZVZhbHVlLCBjYWxlbmRhck5hbWU/OiBzdHJpbmcpOiBBWERhdGVUaW1lO1xuICBwdWJsaWMgY3JlYXRlKHZhbHVlOiBEYXRlLCBjYWxlbmRhck5hbWU/OiBzdHJpbmcpOiBBWERhdGVUaW1lO1xuICBwdWJsaWMgY3JlYXRlKHZhbHVlOiBzdHJpbmcsIGNhbGVuZGFyTmFtZT86IHN0cmluZyk6IEFYRGF0ZVRpbWU7XG4gIHB1YmxpYyBjcmVhdGUodmFsdWU6IEFYRGF0ZVRpbWUpOiBBWERhdGVUaW1lO1xuICBwdWJsaWMgY3JlYXRlKHZhbHVlOiBBWERhdGVWYWx1ZSB8IERhdGUgfCBzdHJpbmcgfCBBWERhdGVUaW1lLCBjYWxlbmRhck5hbWU/OiBzdHJpbmcpOiBBWERhdGVUaW1lIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgY2FsZW5kYXIgPSBjYWxlbmRhck5hbWUgPyB0aGlzLnJlc29sdmVDYWxlbmRhcihjYWxlbmRhck5hbWUpIDogdGhpcy5jYWxlbmRhcjtcblxuICAgICAgaWYgKCF0aGlzLmlzVmFsaWREYXRlKHZhbHVlKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgRGF0ZSB2YWx1ZTogJHt2YWx1ZX1gKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQVhEYXRlVGltZSkge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBBWERhdGVUaW1lKG5ldyBEYXRlKHZhbHVlKSwgY2FsZW5kYXIpO1xuICAgICAgfSBlbHNlIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBBWERhdGVUaW1lKHZhbHVlLCBjYWxlbmRhcik7XG4gICAgICB9IGVsc2UgaWYgKHZhbHVlPy55ZWFyICYmIHZhbHVlPy5tb250aCkge1xuICAgICAgICByZXR1cm4gY2FsZW5kYXIuY3JlYXRlKHZhbHVlIGFzIEFYRGF0ZVZhbHVlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLm5vdygpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBjcmVhdGluZyBkYXRlOicsIGVycm9yKTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBEYXRlIHZhbHVlOiAke3ZhbHVlfWApO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBub3coY2FsZW5kYXJOYW1lPzogc3RyaW5nKTogQVhEYXRlVGltZSB7XG4gICAgY29uc3QgY2FsZW5kYXIgPSBjYWxlbmRhck5hbWUgPyB0aGlzLnJlc29sdmVDYWxlbmRhcihjYWxlbmRhck5hbWUpIDogdGhpcy5jYWxlbmRhcjtcbiAgICByZXR1cm4gbmV3IEFYRGF0ZVRpbWUobmV3IERhdGUoKSwgY2FsZW5kYXIpO1xuICB9XG5cbiAgcHVibGljIHJlc29sdmVDYWxlbmRhcihuYW1lOiBzdHJpbmcpOiBBWENhbGVuZGFyIHtcbiAgICBjb25zdCBjID0gdGhpcy5jb25maWcuY2FsZW5kYXJzW25hbWVdO1xuICAgIGlmICghYykge1xuICAgICAgcmV0dXJuIHRoaXMuY2FsZW5kYXI7XG4gICAgfVxuICAgIHJldHVybiBjO1xuICB9XG5cbiAgcHVibGljIGNvbnZlcnQodmFsdWU6IEFYVmFsaWREYXRlVGltZVZhbHVlLCBjYWxlbmRhck5hbWU/OiBzdHJpbmcpOiBBWERhdGVUaW1lIHtcbiAgICBjb25zdCBpc0lTT1N0cmluZyA9IChzdHIpID0+IHtcbiAgICAgIGlmICghL1xcZHs0fS1cXGR7Mn0tXFxkezJ9VFxcZHsyfTpcXGR7Mn06XFxkezJ9KC5cXGR7M31aKT8vLnRlc3Qoc3RyKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgY29uc3QgZCA9IG5ldyBEYXRlKHN0cik7XG4gICAgICByZXR1cm4gZCBpbnN0YW5jZW9mIERhdGUgJiYgIWlzTmFOKGQuZ2V0VGltZSgpKTsgLy8gdmFsaWQgZGF0ZVxuICAgIH07XG4gICAgLy9cbiAgICBjb25zdCBjYWxlbmRhciA9IGNhbGVuZGFyTmFtZSA/IHRoaXMucmVzb2x2ZUNhbGVuZGFyKGNhbGVuZGFyTmFtZSkgOiB0aGlzLmNhbGVuZGFyO1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICBpZiAoaXNJU09TdHJpbmcodmFsdWUpKSByZXR1cm4gbmV3IEFYRGF0ZVRpbWUobmV3IERhdGUodmFsdWUpLCBjYWxlbmRhcik7XG4gICAgICBlbHNlIHJldHVybiBjYWxlbmRhci5wYXJzZSh2YWx1ZSk7XG4gICAgfVxuICAgIGNvbnN0IGRhdGUgPSB2YWx1ZSBpbnN0YW5jZW9mIEFYRGF0ZVRpbWUgPyB2YWx1ZS5kYXRlIDogKHZhbHVlIGFzIERhdGUpO1xuICAgIHJldHVybiBuZXcgQVhEYXRlVGltZShkYXRlLCBjYWxlbmRhcik7XG4gIH1cblxuICBwdWJsaWMgZm9ybWF0KHZhbHVlOiBBWFZhbGlkRGF0ZVRpbWVWYWx1ZSwgZm9ybWF0OiBzdHJpbmcsIG9wdGlvbnM/OiBBWERhdGVUaW1lRm9ybWF0dGVyT3B0aW9ucyk6IHN0cmluZyB7XG4gICAgY29uc3QgY2FsZW5kYXIgPSBvcHRpb25zPy5jYWxlbmRhciA/IHRoaXMucmVzb2x2ZUNhbGVuZGFyKG9wdGlvbnMuY2FsZW5kYXIpIDogdGhpcy5jYWxlbmRhcjtcblxuICAgIHJldHVybiB0aGlzLmZvcm1hdFNlcnZpY2UuZm9ybWF0KHZhbHVlLCAnZGF0ZXRpbWUnLCB7XG4gICAgICBmb3JtYXQ6IGZvcm1hdCxcbiAgICAgIGNhbGVuZGFyOiBjYWxlbmRhci5uYW1lKCksXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==","import { AXFormatService } from '@acorex/core/format';\nimport { Pipe, inject } from '@angular/core';\nimport { AXCalendarService } from './calendar.service';\nimport * as i0 from \"@angular/core\";\n/**\n * @deprecated The pipe should not be used, use format instead\n */\nexport class AXDateTimePipe {\n constructor() {\n this._calendarService = inject(AXCalendarService);\n this.formatService = inject(AXFormatService);\n }\n transform(value, format, calendarName) {\n if (value == null) {\n return '';\n }\n let calendar = this._calendarService.calendar;\n if (calendarName) {\n calendar = this._calendarService.resolveCalendar(calendarName);\n }\n const val = this._calendarService.convert(value, calendar.name());\n return this.formatService.format(val, 'datetime', format);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXDateTimePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.0.4\", ngImport: i0, type: AXDateTimePipe, isStandalone: true, name: \"axDate\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXDateTimePipe, decorators: [{\n type: Pipe,\n args: [{ name: 'axDate' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvZGF0ZS10aW1lL3NyYy9saWIvZGF0ZXRpbWUucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDOztBQUd2RDs7R0FFRztBQUVILE1BQU0sT0FBTyxjQUFjO0lBRDNCO1FBRVUscUJBQWdCLEdBQXNCLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ2hFLGtCQUFhLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0tBYWpEO0lBWEMsU0FBUyxDQUFDLEtBQWlDLEVBQUUsTUFBZSxFQUFFLFlBQXFCO1FBQ2pGLElBQUksS0FBSyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ2xCLE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQztRQUNELElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUM7UUFDOUMsSUFBSSxZQUFZLEVBQUUsQ0FBQztZQUNqQixRQUFRLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNqRSxDQUFDO1FBQ0QsTUFBTSxHQUFHLEdBQWUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDOUUsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsVUFBVSxFQUFFLE1BQWEsQ0FBQyxDQUFDO0lBQ25FLENBQUM7OEdBZFUsY0FBYzs0R0FBZCxjQUFjOzsyRkFBZCxjQUFjO2tCQUQxQixJQUFJO21CQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYRm9ybWF0U2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29yZS9mb3JtYXQnO1xuaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWENhbGVuZGFyU2VydmljZSB9IGZyb20gJy4vY2FsZW5kYXIuc2VydmljZSc7XG5pbXBvcnQgeyBBWERhdGVUaW1lIH0gZnJvbSAnLi9kYXRldGltZS50eXBlcyc7XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgVGhlIHBpcGUgc2hvdWxkIG5vdCBiZSB1c2VkLCB1c2UgZm9ybWF0IGluc3RlYWRcbiAqL1xuQFBpcGUoeyBuYW1lOiAnYXhEYXRlJyB9KVxuZXhwb3J0IGNsYXNzIEFYRGF0ZVRpbWVQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHByaXZhdGUgX2NhbGVuZGFyU2VydmljZTogQVhDYWxlbmRhclNlcnZpY2UgPSBpbmplY3QoQVhDYWxlbmRhclNlcnZpY2UpO1xuICBwcml2YXRlIGZvcm1hdFNlcnZpY2UgPSBpbmplY3QoQVhGb3JtYXRTZXJ2aWNlKTtcblxuICB0cmFuc2Zvcm0odmFsdWU6IERhdGUgfCBBWERhdGVUaW1lIHwgc3RyaW5nLCBmb3JtYXQ/OiBzdHJpbmcsIGNhbGVuZGFyTmFtZT86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgbGV0IGNhbGVuZGFyID0gdGhpcy5fY2FsZW5kYXJTZXJ2aWNlLmNhbGVuZGFyO1xuICAgIGlmIChjYWxlbmRhck5hbWUpIHtcbiAgICAgIGNhbGVuZGFyID0gdGhpcy5fY2FsZW5kYXJTZXJ2aWNlLnJlc29sdmVDYWxlbmRhcihjYWxlbmRhck5hbWUpO1xuICAgIH1cbiAgICBjb25zdCB2YWw6IEFYRGF0ZVRpbWUgPSB0aGlzLl9jYWxlbmRhclNlcnZpY2UuY29udmVydCh2YWx1ZSwgY2FsZW5kYXIubmFtZSgpKTtcbiAgICByZXR1cm4gdGhpcy5mb3JtYXRTZXJ2aWNlLmZvcm1hdCh2YWwsICdkYXRldGltZScsIGZvcm1hdCBhcyBhbnkpO1xuICB9XG59XG4iXX0=","import { AXLocaleService } from '@acorex/core/locale';\nimport { inject, Injectable } from '@angular/core';\nimport { isNil } from 'lodash-es';\nimport { AXCalendarService } from '../calendar.service';\nimport * as i0 from \"@angular/core\";\nexport class AXDateFormatter {\n constructor() {\n this.calendarService = inject(AXCalendarService);\n this.localeService = inject(AXLocaleService);\n }\n get name() {\n return 'date';\n }\n format(value, options) {\n if (isNil(value)) {\n return '';\n }\n //\n if (!this.calendarService.isValidDate(value))\n return 'Invalid date';\n //\n const effectiveOptions = typeof options == 'object'\n ? {\n format: options.format ?? 'short',\n locale: options.locale,\n calendar: options.calendar ?? this.calendarService.calendar.name(),\n }\n : {\n format: options,\n calendar: this.calendarService.calendar.name(),\n };\n //\n const formats = this.localeService.activeProfile().formats;\n const map = {\n short: formats.date.short,\n medium: formats.date.medium,\n long: formats.date.long,\n full: formats.date.full,\n };\n const format = map[effectiveOptions.format] ?? effectiveOptions.format ?? map['short'];\n //\n return this.calendarService\n .convert(value, effectiveOptions.calendar)\n .format(format, { locale: effectiveOptions.locale });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXDateFormatter, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXDateFormatter }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXDateFormatter, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS5mb3JtYXR0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL2RhdGUtdGltZS9zcmMvbGliL2Zvcm1hdHRlcnMvZGF0ZS5mb3JtYXR0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbEMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7O0FBS3hELE1BQU0sT0FBTyxlQUFlO0lBRDVCO1FBRVUsb0JBQWUsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUM1QyxrQkFBYSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztLQXNDakQ7SUFwQ0MsSUFBSSxJQUFJO1FBQ04sT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUEyQixFQUFFLE9BQTZDO1FBQy9FLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDakIsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBQ0QsRUFBRTtRQUNGLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7WUFBRSxPQUFPLGNBQWMsQ0FBQztRQUNwRSxFQUFFO1FBQ0YsTUFBTSxnQkFBZ0IsR0FDcEIsT0FBTyxPQUFPLElBQUksUUFBUTtZQUN4QixDQUFDLENBQUM7Z0JBQ0UsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNLElBQUksT0FBTztnQkFDakMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNO2dCQUN0QixRQUFRLEVBQUUsT0FBTyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUU7YUFDbkU7WUFDSCxDQUFDLENBQUM7Z0JBQ0UsTUFBTSxFQUFFLE9BQU87Z0JBQ2YsUUFBUSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRTthQUMvQyxDQUFDO1FBQ1IsRUFBRTtRQUNGLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxFQUFFLENBQUMsT0FBTyxDQUFDO1FBQzNELE1BQU0sR0FBRyxHQUFHO1lBQ1YsS0FBSyxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSztZQUN6QixNQUFNLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNO1lBQzNCLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUk7WUFDdkIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSTtTQUN4QixDQUFDO1FBQ0YsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLGdCQUFnQixDQUFDLE1BQTBCLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQyxNQUFNLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNHLEVBQUU7UUFDRixPQUFPLElBQUksQ0FBQyxlQUFlO2FBQ3hCLE9BQU8sQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLENBQUMsUUFBa0IsQ0FBQzthQUNuRCxNQUFNLENBQUMsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDekQsQ0FBQzs4R0F2Q1UsZUFBZTtrSEFBZixlQUFlOzsyRkFBZixlQUFlO2tCQUQzQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhGb3JtYXR0ZXIgfSBmcm9tICdAYWNvcmV4L2NvcmUvZm9ybWF0JztcbmltcG9ydCB7IEFYTG9jYWxlU2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29yZS9sb2NhbGUnO1xuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpc05pbCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBBWENhbGVuZGFyU2VydmljZSB9IGZyb20gJy4uL2NhbGVuZGFyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQVhWYWxpZERhdGVUaW1lVmFsdWUgfSBmcm9tICcuLi9kYXRldGltZS50eXBlcyc7XG5pbXBvcnQgeyBBWERhdGVUaW1lRm9ybWF0dGVyT3B0aW9ucyB9IGZyb20gJy4vZGF0ZXRpbWUuZm9ybWF0dGVyJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFYRGF0ZUZvcm1hdHRlciBpbXBsZW1lbnRzIEFYRm9ybWF0dGVyIHtcbiAgcHJpdmF0ZSBjYWxlbmRhclNlcnZpY2UgPSBpbmplY3QoQVhDYWxlbmRhclNlcnZpY2UpO1xuICBwcml2YXRlIGxvY2FsZVNlcnZpY2UgPSBpbmplY3QoQVhMb2NhbGVTZXJ2aWNlKTtcblxuICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnZGF0ZSc7XG4gIH1cblxuICBmb3JtYXQodmFsdWU6IEFYVmFsaWREYXRlVGltZVZhbHVlLCBvcHRpb25zPzogQVhEYXRlVGltZUZvcm1hdHRlck9wdGlvbnMgfCBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmIChpc05pbCh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgLy9cbiAgICBpZiAoIXRoaXMuY2FsZW5kYXJTZXJ2aWNlLmlzVmFsaWREYXRlKHZhbHVlKSkgcmV0dXJuICdJbnZhbGlkIGRhdGUnO1xuICAgIC8vXG4gICAgY29uc3QgZWZmZWN0aXZlT3B0aW9ucyA9XG4gICAgICB0eXBlb2Ygb3B0aW9ucyA9PSAnb2JqZWN0J1xuICAgICAgICA/IHtcbiAgICAgICAgICAgIGZvcm1hdDogb3B0aW9ucy5mb3JtYXQgPz8gJ3Nob3J0JyxcbiAgICAgICAgICAgIGxvY2FsZTogb3B0aW9ucy5sb2NhbGUsXG4gICAgICAgICAgICBjYWxlbmRhcjogb3B0aW9ucy5jYWxlbmRhciA/PyB0aGlzLmNhbGVuZGFyU2VydmljZS5jYWxlbmRhci5uYW1lKCksXG4gICAgICAgICAgfVxuICAgICAgICA6IHtcbiAgICAgICAgICAgIGZvcm1hdDogb3B0aW9ucyxcbiAgICAgICAgICAgIGNhbGVuZGFyOiB0aGlzLmNhbGVuZGFyU2VydmljZS5jYWxlbmRhci5uYW1lKCksXG4gICAgICAgICAgfTtcbiAgICAvL1xuICAgIGNvbnN0IGZvcm1hdHMgPSB0aGlzLmxvY2FsZVNlcnZpY2UuYWN0aXZlUHJvZmlsZSgpLmZvcm1hdHM7XG4gICAgY29uc3QgbWFwID0ge1xuICAgICAgc2hvcnQ6IGZvcm1hdHMuZGF0ZS5zaG9ydCxcbiAgICAgIG1lZGl1bTogZm9ybWF0cy5kYXRlLm1lZGl1bSxcbiAgICAgIGxvbmc6IGZvcm1hdHMuZGF0ZS5sb25nLFxuICAgICAgZnVsbDogZm9ybWF0cy5kYXRlLmZ1bGwsXG4gICAgfTtcbiAgICBjb25zdCBmb3JtYXQgPSBtYXBbZWZmZWN0aXZlT3B0aW9ucy5mb3JtYXQgYXMga2V5b2YgdHlwZW9mIG1hcF0gPz8gZWZmZWN0aXZlT3B0aW9ucy5mb3JtYXQgPz8gbWFwWydzaG9ydCddO1xuICAgIC8vXG4gICAgcmV0dXJuIHRoaXMuY2FsZW5kYXJTZXJ2aWNlXG4gICAgICAuY29udmVydCh2YWx1ZSwgZWZmZWN0aXZlT3B0aW9ucy5jYWxlbmRhciBhcyBzdHJpbmcpXG4gICAgICAuZm9ybWF0KGZvcm1hdCwgeyBsb2NhbGU6IGVmZmVjdGl2ZU9wdGlvbnMubG9jYWxlIH0pO1xuICB9XG59XG4iXX0=","import { AXLocaleService } from '@acorex/core/locale';\nimport { Injectable, inject } from '@angular/core';\nimport { isNil } from 'lodash-es';\nimport { AXCalendarService } from '../calendar.service';\nimport * as i0 from \"@angular/core\";\nexport class AXDateTimeFormatter {\n constructor() {\n this.localeService = inject(AXLocaleService);\n this.calendarService = inject(AXCalendarService);\n }\n get name() {\n return 'datetime';\n }\n format(value, options) {\n if (isNil(value)) {\n return '';\n }\n //\n if (!this.calendarService.isValidDate(value))\n return 'Invalid date';\n //\n const effectiveOptions = typeof options == 'object'\n ? {\n format: options.format ?? 'date',\n locale: options.locale,\n calendar: options.calendar ?? this.calendarService.calendar.name(),\n }\n : {\n format: options,\n calendar: this.calendarService.calendar.name(),\n };\n //\n const formats = this.localeService.activeProfile().formats;\n const map = {\n longDate: formats.date.long,\n shortDate: formats.date.short,\n mediumDate: formats.date.medium,\n date: formats.date.short,\n //\n longTime: formats.time.long,\n shortTime: formats.time.short,\n mediumTime: formats.time.medium,\n time: formats.time.short,\n //\n long: formats.datetime.long,\n short: formats.datetime.short,\n medium: formats.datetime.medium,\n full: formats.datetime.full,\n };\n const format = map[effectiveOptions.format] ?? effectiveOptions.format ?? map['date'];\n //\n return this.calendarService\n .convert(value, effectiveOptions.calendar)\n .format(format, { locale: effectiveOptions.locale });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXDateTimeFormatter, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXDateTimeFormatter }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXDateTimeFormatter, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUuZm9ybWF0dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9kYXRlLXRpbWUvc3JjL2xpYi9mb3JtYXR0ZXJzL2RhdGV0aW1lLmZvcm1hdHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNsQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7QUFnQnhELE1BQU0sT0FBTyxtQkFBbUI7SUFEaEM7UUFFVSxrQkFBYSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUN4QyxvQkFBZSxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0tBZ0RyRDtJQTlDQyxJQUFJLElBQUk7UUFDTixPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQTJCLEVBQUUsT0FBNkM7UUFDL0UsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNqQixPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFDRCxFQUFFO1FBQ0YsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztZQUFFLE9BQU8sY0FBYyxDQUFDO1FBQ3BFLEVBQUU7UUFDRixNQUFNLGdCQUFnQixHQUNwQixPQUFPLE9BQU8sSUFBSSxRQUFRO1lBQ3hCLENBQUMsQ0FBQztnQkFDRSxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU0sSUFBSSxNQUFNO2dCQUNoQyxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU07Z0JBQ3RCLFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRTthQUNuRTtZQUNILENBQUMsQ0FBQztnQkFDRSxNQUFNLEVBQUUsT0FBTztnQkFDZixRQUFRLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFO2FBQy9DLENBQUM7UUFDUixFQUFFO1FBQ0YsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxPQUFPLENBQUM7UUFDM0QsTUFBTSxHQUFHLEdBQUc7WUFDVixRQUFRLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJO1lBQzNCLFNBQVMsRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUs7WUFDN0IsVUFBVSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTTtZQUMvQixJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLO1lBQ3hCLEVBQUU7WUFDRixRQUFRLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJO1lBQzNCLFNBQVMsRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUs7WUFDN0IsVUFBVSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTTtZQUMvQixJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLO1lBQ3hCLEVBQUU7WUFDRixJQUFJLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJO1lBQzNCLEtBQUssRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUs7WUFDN0IsTUFBTSxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTTtZQUMvQixJQUFJLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJO1NBQzVCLENBQUM7UUFDRixNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsTUFBMEIsQ0FBQyxJQUFJLGdCQUFnQixDQUFDLE1BQU0sSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDMUcsRUFBRTtRQUNGLE9BQU8sSUFBSSxDQUFDLGVBQWU7YUFDeEIsT0FBTyxDQUFDLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyxRQUFrQixDQUFDO2FBQ25ELE1BQU0sQ0FBQyxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUN6RCxDQUFDOzhHQWpEVSxtQkFBbUI7a0hBQW5CLG1CQUFtQjs7MkZBQW5CLG1CQUFtQjtrQkFEL0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYRm9ybWF0T3B0aW9ucywgQVhGb3JtYXR0ZXIgfSBmcm9tICdAYWNvcmV4L2NvcmUvZm9ybWF0JztcbmltcG9ydCB7IEFYTG9jYWxlU2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29yZS9sb2NhbGUnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpc05pbCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBBWENhbGVuZGFyU2VydmljZSB9IGZyb20gJy4uL2NhbGVuZGFyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQVhWYWxpZERhdGVUaW1lVmFsdWUgfSBmcm9tICcuLi9kYXRldGltZS50eXBlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhEYXRlVGltZUZvcm1hdHRlck9wdGlvbnMgZXh0ZW5kcyBBWEZvcm1hdE9wdGlvbnMge1xuICBmb3JtYXQ/OiBzdHJpbmc7XG4gIGNhbGVuZGFyPzogc3RyaW5nO1xuICBsb2NhbGU/OiBzdHJpbmc7XG59XG5cbmRlY2xhcmUgbW9kdWxlICdAYWNvcmV4L2NvcmUvZm9ybWF0JyB7XG4gIGludGVyZmFjZSBBWEZvcm1hdE9wdGlvbnNNYXAge1xuICAgIGRhdGV0aW1lOiBBWERhdGVUaW1lRm9ybWF0dGVyT3B0aW9ucztcbiAgfVxufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQVhEYXRlVGltZUZvcm1hdHRlciBpbXBsZW1lbnRzIEFYRm9ybWF0dGVyIHtcbiAgcHJpdmF0ZSBsb2NhbGVTZXJ2aWNlID0gaW5qZWN0KEFYTG9jYWxlU2VydmljZSk7XG4gIHByaXZhdGUgY2FsZW5kYXJTZXJ2aWNlID0gaW5qZWN0KEFYQ2FsZW5kYXJTZXJ2aWNlKTtcblxuICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnZGF0ZXRpbWUnO1xuICB9XG5cbiAgZm9ybWF0KHZhbHVlOiBBWFZhbGlkRGF0ZVRpbWVWYWx1ZSwgb3B0aW9ucz86IEFYRGF0ZVRpbWVGb3JtYXR0ZXJPcHRpb25zIHwgc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoaXNOaWwodmFsdWUpKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIC8vXG4gICAgaWYgKCF0aGlzLmNhbGVuZGFyU2VydmljZS5pc1ZhbGlkRGF0ZSh2YWx1ZSkpIHJldHVybiAnSW52YWxpZCBkYXRlJztcbiAgICAvL1xuICAgIGNvbnN0IGVmZmVjdGl2ZU9wdGlvbnMgPVxuICAgICAgdHlwZW9mIG9wdGlvbnMgPT0gJ29iamVjdCdcbiAgICAgICAgPyB7XG4gICAgICAgICAgICBmb3JtYXQ6IG9wdGlvbnMuZm9ybWF0ID8/ICdkYXRlJyxcbiAgICAgICAgICAgIGxvY2FsZTogb3B0aW9ucy5sb2NhbGUsXG4gICAgICAgICAgICBjYWxlbmRhcjogb3B0aW9ucy5jYWxlbmRhciA/PyB0aGlzLmNhbGVuZGFyU2VydmljZS5jYWxlbmRhci5uYW1lKCksXG4gICAgICAgICAgfVxuICAgICAgICA6IHtcbiAgICAgICAgICAgIGZvcm1hdDogb3B0aW9ucyxcbiAgICAgICAgICAgIGNhbGVuZGFyOiB0aGlzLmNhbGVuZGFyU2VydmljZS5jYWxlbmRhci5uYW1lKCksXG4gICAgICAgICAgfTtcbiAgICAvL1xuICAgIGNvbnN0IGZvcm1hdHMgPSB0aGlzLmxvY2FsZVNlcnZpY2UuYWN0aXZlUHJvZmlsZSgpLmZvcm1hdHM7XG4gICAgY29uc3QgbWFwID0ge1xuICAgICAgbG9uZ0RhdGU6IGZvcm1hdHMuZGF0ZS5sb25nLFxuICAgICAgc2hvcnREYXRlOiBmb3JtYXRzLmRhdGUuc2hvcnQsXG4gICAgICBtZWRpdW1EYXRlOiBmb3JtYXRzLmRhdGUubWVkaXVtLFxuICAgICAgZGF0ZTogZm9ybWF0cy5kYXRlLnNob3J0LFxuICAgICAgLy9cbiAgICAgIGxvbmdUaW1lOiBmb3JtYXRzLnRpbWUubG9uZyxcbiAgICAgIHNob3J0VGltZTogZm9ybWF0cy50aW1lLnNob3J0LFxuICAgICAgbWVkaXVtVGltZTogZm9ybWF0cy50aW1lLm1lZGl1bSxcbiAgICAgIHRpbWU6IGZvcm1hdHMudGltZS5zaG9ydCxcbiAgICAgIC8vXG4gICAgICBsb25nOiBmb3JtYXRzLmRhdGV0aW1lLmxvbmcsXG4gICAgICBzaG9ydDogZm9ybWF0cy5kYXRldGltZS5zaG9ydCxcbiAgICAgIG1lZGl1bTogZm9ybWF0cy5kYXRldGltZS5tZWRpdW0sXG4gICAgICBmdWxsOiBmb3JtYXRzLmRhdGV0aW1lLmZ1bGwsXG4gICAgfTtcbiAgICBjb25zdCBmb3JtYXQgPSBtYXBbZWZmZWN0aXZlT3B0aW9ucy5mb3JtYXQgYXMga2V5b2YgdHlwZW9mIG1hcF0gPz8gZWZmZWN0aXZlT3B0aW9ucy5mb3JtYXQgPz8gbWFwWydkYXRlJ107XG4gICAgLy9cbiAgICByZXR1cm4gdGhpcy5jYWxlbmRhclNlcnZpY2VcbiAgICAgIC5jb252ZXJ0KHZhbHVlLCBlZmZlY3RpdmVPcHRpb25zLmNhbGVuZGFyIGFzIHN0cmluZylcbiAgICAgIC5mb3JtYXQoZm9ybWF0LCB7IGxvY2FsZTogZWZmZWN0aXZlT3B0aW9ucy5sb2NhbGUgfSk7XG4gIH1cbn1cbiJdfQ==","import { AXTranslationService } from '@acorex/core/translation';\nimport { inject, Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class AXTimeDurationFormatter {\n constructor() {\n this.translationService = inject(AXTranslationService);\n }\n get name() {\n return 'time-duration';\n }\n format(value, options) {\n const milliseconds = Number(value);\n if (milliseconds === null || isNaN(milliseconds)) {\n return '...';\n }\n // Convert milliseconds to various units\n const totalMilliseconds = milliseconds % 1000;\n const totalSeconds = Math.floor(milliseconds / 1000);\n const seconds = totalSeconds % 60;\n const totalMinutes = Math.floor(totalSeconds / 60);\n const minutes = totalMinutes % 60;\n const totalHours = Math.floor(totalMinutes / 60);\n // Helper function for zero-padding\n const pad = (num, length = 2) => num.toString().padStart(length, '0');\n // Default format if none provided\n const format = options?.format || (totalHours >= 0 ? 'HH:mm:ss' : 'mm:ss');\n const formattedTime = [];\n // Parse format and build the time string accordingly\n if (format.includes('HH') || format.includes('H')) {\n formattedTime.push(pad(totalHours));\n }\n if (format.includes('mm')) {\n formattedTime.push(pad(minutes));\n }\n else if (format.includes('m')) {\n formattedTime.push(minutes.toString());\n }\n if (format.includes('ss')) {\n formattedTime.push(pad(seconds));\n }\n else if (format.includes('s')) {\n formattedTime.push(seconds.toString());\n }\n if (format.includes('ms') || format.includes('MS')) {\n formattedTime.push(pad(totalMilliseconds, 3));\n }\n // Join the parts according to the format\n return formattedTime.join(format.includes('ms') || format.includes('MS') ? ':' : ':');\n }\n async millisecondsToMask(ms, startUnit = 'YEAR', endUnit = 'MILLISECOND') {\n if (ms <= 0)\n return '';\n const translations = await Promise.all([\n this.translationService.translateAsync('@acorex:dateTime.units.year'),\n this.translationService.translateAsync('@acorex:dateTime.units.month'),\n this.translationService.translateAsync('@acorex:dateTime.units.week'),\n this.translationService.translateAsync('@acorex:dateTime.units.day'),\n this.translationService.translateAsync('@acorex:dateTime.units.hour'),\n this.translationService.translateAsync('@acorex:dateTime.units.minute'),\n this.translationService.translateAsync('@acorex:dateTime.units.second'),\n this.translationService.translateAsync('@acorex:dateTime.units.millisecond'),\n ]);\n const units = [\n { key: 'YEAR', label: translations[0].toLocaleUpperCase(), value: 1000 * 60 * 60 * 24 * 365 },\n { key: 'MONTH', label: translations[1].toLocaleUpperCase(), value: 1000 * 60 * 60 * 24 * 30 },\n { key: 'WEEK', label: translations[2].toLocaleUpperCase(), value: 1000 * 60 * 60 * 24 * 7 },\n { key: 'DAY', label: translations[3].toLocaleUpperCase(), value: 1000 * 60 * 60 * 24 },\n { key: 'HOUR', label: translations[4].toLocaleUpperCase(), value: 1000 * 60 * 60 },\n { key: 'MINUTE', label: translations[5].toLocaleUpperCase(), value: 1000 * 60 },\n { key: 'SECOND', label: translations[6].toLocaleUpperCase(), value: 1000 },\n { key: 'MILLISECOND', label: translations[7].toLocaleUpperCase(), value: 1 },\n ];\n const startIndex = units.findIndex((u) => u.key === startUnit.toUpperCase());\n const endIndex = units.findIndex((u) => u.key === endUnit.toUpperCase());\n if (startIndex === -1 || endIndex === -1 || startIndex > endIndex) {\n throw new Error('Invalid time unit range');\n }\n const limitedUnits = units.slice(startIndex, endIndex + 1);\n const result = limitedUnits.map((unit) => {\n const count = Math.floor(ms / unit.value);\n ms %= unit.value;\n // Special handling for milliseconds (3 digits)\n if (unit.key === 'MILLISECOND') {\n if (count < 10) {\n return `00${count} (${unit.label})`;\n }\n else if (count < 100) {\n return `0${count} (${unit.label})`;\n }\n else {\n return `${count} (${unit.label})`;\n }\n }\n else {\n // For other units, pad with one zero if less than 10\n const paddedCount = count < 10 ? `0${count}` : `${count}`;\n return `${paddedCount} (${unit.label})`;\n }\n });\n if (this.translationService.getActiveLang() === 'fa-IR') {\n return result.reverse().join(' : ');\n }\n else {\n return result.join(' : ');\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXTimeDurationFormatter, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXTimeDurationFormatter }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXTimeDurationFormatter, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1kdXJhdGlvbi5mb3JtYXR0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL2RhdGUtdGltZS9zcmMvbGliL2Zvcm1hdHRlcnMvdGltZS1kdXJhdGlvbi5mb3JtYXR0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBZW5ELE1BQU0sT0FBTyx1QkFBdUI7SUFEcEM7UUFrREUsdUJBQWtCLEdBQXlCLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0tBaUV6RTtJQWpIQyxJQUFJLElBQUk7UUFDTixPQUFPLGVBQWUsQ0FBQztJQUN6QixDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQWEsRUFBRSxPQUF3QztRQUM1RCxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkMsSUFBSSxZQUFZLEtBQUssSUFBSSxJQUFJLEtBQUssQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO1lBQ2pELE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUVELHdDQUF3QztRQUN4QyxNQUFNLGlCQUFpQixHQUFHLFlBQVksR0FBRyxJQUFJLENBQUM7UUFDOUMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDckQsTUFBTSxPQUFPLEdBQUcsWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUNsQyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUMsQ0FBQztRQUNuRCxNQUFNLE9BQU8sR0FBRyxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ2xDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsWUFB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LENBQUM7b0JBQ2YsT0FBTyxLQUFLLEtBQUssS0FBSyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUM7Z0JBQ3RDLENBQUM7cUJBQU0sSUFBSSxLQUFLLEdBQUcsR0FBRyxFQUFFLENBQUM7b0JBQ3ZCLE9BQU8sSUFBSSxLQUFLLEtBQUssSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDO2dCQUNyQyxDQUFDO3FCQUFNLENBQUM7b0JBQ04sT0FBTyxHQUFHLEtBQUssS0FBSyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUM7Z0JBQ3BDLENBQUM7WUFDSCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04scURBQXFEO2dCQUNyRCxNQUFNLFdBQVcsR0FBRyxLQUFLLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssRUFBRSxDQUFDO2dCQUMxRCxPQUFPLEdBQUcsV0FBVyxLQUFLLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQztZQUMxQyxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLEVBQUUsS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUN4RCxPQUFPLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEMsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUIsQ0FBQztJQUNILENBQUM7OEdBakhVLHVCQUF1QjtrSEFBdkIsdUJBQXVCOzsyRkFBdkIsdUJBQXVCO2tCQURuQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhGb3JtYXRPcHRpb25zLCBBWEZvcm1hdHRlciB9IGZyb20gJ0BhY29yZXgvY29yZS9mb3JtYXQnO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvcmUvdHJhbnNsYXRpb24nO1xuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhUaW1lRHVyYXRpb25Gb3JtYXR0ZXJPcHRpb25zIGV4dGVuZHMgQVhGb3JtYXRPcHRpb25zIHtcbiAgZm9ybWF0OiBzdHJpbmc7XG59XG5cbmRlY2xhcmUgbW9kdWxlICdAYWNvcmV4L2NvcmUvZm9ybWF0JyB7XG4gIGludGVyZmFjZSBBWEZvcm1hdE9wdGlvbnNNYXAge1xuICAgIGR1cmF0aW9uOiBBWFRpbWVEdXJhdGlvbkZvcm1hdHRlck9wdGlvbnM7XG4gIH1cbn1cblxudHlwZSBBWFRpbWVEdXJhdGlvblVuaXQgPSAnWUVBUicgfCAnTU9OVEgnIHwgJ1dFRUsnIHwgJ0RBWScgfCAnSE9VUicgfCAnTUlOVVRFJyB8ICdTRUNPTkQnIHwgJ01JTExJU0VDT05EJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFYVGltZUR1cmF0aW9uRm9ybWF0dGVyIGltcGxlbWVudHMgQVhGb3JtYXR0ZXIge1xuICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAndGltZS1kdXJhdGlvbic7XG4gIH1cblxuICBmb3JtYXQodmFsdWU6IG51bWJlciwgb3B0aW9ucz86IEFYVGltZUR1cmF0aW9uRm9ybWF0dGVyT3B0aW9ucyk6IHN0cmluZyB7XG4gICAgY29uc3QgbWlsbGlzZWNvbmRzID0gTnVtYmVyKHZhbHVlKTtcbiAgICBpZiAobWlsbGlzZWNvbmRzID09PSBudWxsIHx8IGlzTmFOKG1pbGxpc2Vjb25kcykpIHtcbiAgICAgIHJldHVybiAnLi4uJztcbiAgICB9XG5cbiAgICAvLyBDb252ZXJ0IG1pbGxpc2Vjb25kcyB0byB2YXJpb3VzIHVuaXRzXG4gICAgY29uc3QgdG90YWxNaWxsaXNlY29uZHMgPSBtaWxsaXNlY29uZHMgJSAxMDAwO1xuICAgIGNvbnN0IHRvdGFsU2Vjb25kcyA9IE1hdGguZmxvb3IobWlsbGlzZWNvbmRzIC8gMTAwMCk7XG4gICAgY29uc3Qgc2Vjb25kcyA9IHRvdGFsU2Vjb25kcyAlIDYwO1xuICAgIGNvbnN0IHRvdGFsTWludXRlcyA9IE1hdGguZmxvb3IodG90YWxTZWNvbmRzIC8gNjApO1xuICAgIGNvbnN0IG1pbnV0ZXMgPSB0b3RhbE1pbnV0ZXMgJSA2MDtcbiAgICBjb25zdCB0b3RhbEhvdXJzID0gTWF0aC5mbG9vcih0b3RhbE1pbnV0ZXMgLyA2MCk7XG5cbiAgICAvLyBIZWxwZXIgZnVuY3Rpb24gZm9yIHplcm8tcGFkZGluZ1xuICAgIGNvbnN0IHBhZCA9IChudW06IG51bWJlciwgbGVuZ3RoID0gMikgPT4gbnVtLnRvU3RyaW5nKCkucGFkU3RhcnQobGVuZ3RoLCAnMCcpO1xuXG4gICAgLy8gRGVmYXVsdCBmb3JtYXQgaWYgbm9uZSBwcm92aWRlZFxuICAgIGNvbnN0IGZvcm1hdCA9IG9wdGlvbnM/LmZvcm1hdCB8fCAodG90YWxIb3VycyA+PSAwID8gJ0hIOm1tOnNzJyA6ICdtbTpzcycpO1xuXG4gICAgY29uc3QgZm9ybWF0dGVkVGltZSA9IFtdO1xuXG4gICAgLy8gUGFyc2UgZm9ybWF0IGFuZCBidWlsZCB0aGUgdGltZSBzdHJpbmcgYWNjb3JkaW5nbHlcbiAgICBpZiAoZm9ybWF0LmluY2x1ZGVzKCdISCcpIHx8IGZvcm1hdC5pbmNsdWRlcygnSCcpKSB7XG4gICAgICBmb3JtYXR0ZWRUaW1lLnB1c2gocGFkKHRvdGFsSG91cnMpKTtcbiAgICB9XG4gICAgaWYgKGZvcm1hdC5pbmNsdWRlcygnbW0nKSkge1xuICAgICAgZm9ybWF0dGVkVGltZS5wdXNoKHBhZChtaW51dGVzKSk7XG4gICAgfSBlbHNlIGlmIChmb3JtYXQuaW5jbHVkZXMoJ20nKSkge1xuICAgICAgZm9ybWF0dGVkVGltZS5wdXNoKG1pbnV0ZXMudG9TdHJpbmcoKSk7XG4gICAgfVxuICAgIGlmIChmb3JtYXQuaW5jbHVkZXMoJ3NzJykpIHtcbiAgICAgIGZvcm1hdHRlZFRpbWUucHVzaChwYWQoc2Vjb25kcykpO1xuICAgIH0gZWxzZSBpZiAoZm9ybWF0LmluY2x1ZGVzKCdzJykpIHtcbiAgICAgIGZvcm1hdHRlZFRpbWUucHVzaChzZWNvbmRzLnRvU3RyaW5nKCkpO1xuICAgIH1cbiAgICBpZiAoZm9ybWF0LmluY2x1ZGVzKCdtcycpIHx8IGZvcm1hdC5pbmNsdWRlcygnTVMnKSkge1xuICAgICAgZm9ybWF0dGVkVGltZS5wdXNoKHBhZCh0b3RhbE1pbGxpc2Vjb25kcywgMykpO1xuICAgIH1cblxuICAgIC8vIEpvaW4gdGhlIHBhcnRzIGFjY29yZGluZyB0byB0aGUgZm9ybWF0XG4gICAgcmV0dXJuIGZvcm1hdHRlZFRpbWUuam9pbihmb3JtYXQuaW5jbHVkZXMoJ21zJykgfHwgZm9ybWF0LmluY2x1ZGVzKCdNUycpID8gJzonIDogJzonKTtcbiAgfVxuXG4gIHRyYW5zbGF0aW9uU2VydmljZTogQVhUcmFuc2xhdGlvblNlcnZpY2UgPSBpbmplY3QoQVhUcmFuc2xhdGlvblNlcnZpY2UpO1xuXG4gIGFzeW5jIG1pbGxpc2Vjb25kc1RvTWFzayhcbiAgICBtczogbnVtYmVyLFxuICAgIHN0YXJ0VW5pdDogQVhUaW1lRHVyYXRpb25Vbml0ID0gJ1lFQVInLFxuICAgIGVuZFVuaXQ6IEFYVGltZUR1cmF0aW9uVW5pdCA9ICdNSUxMSVNFQ09ORCcsXG4gICk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgaWYgKG1zIDw9IDApIHJldHVybiAnJztcblxuICAgIGNvbnN0IHRyYW5zbGF0aW9ucyA9IGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAgIHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdAYWNvcmV4OmRhdGVUaW1lLnVuaXRzLnllYXInKSxcbiAgICAgIHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdAYWNvcmV4OmRhdGVUaW1lLnVuaXRzLm1vbnRoJyksXG4gICAgICB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGVBc3luYygnQGFjb3JleDpkYXRlVGltZS51bml0cy53ZWVrJyksXG4gICAgICB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGVBc3luYygnQGFjb3JleDpkYXRlVGltZS51bml0cy5kYXknKSxcbiAgICAgIHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdAYWNvcmV4OmRhdGVUaW1lLnVuaXRzLmhvdXInKSxcbiAgICAgIHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdAYWNvcmV4OmRhdGVUaW1lLnVuaXRzLm1pbnV0ZScpLFxuICAgICAgdGhpcy50cmFuc2xhdGlvblNlcnZpY2UudHJhbnNsYXRlQXN5bmMoJ0BhY29yZXg6ZGF0ZVRpbWUudW5pdHMuc2Vjb25kJyksXG4gICAgICB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGVBc3luYygnQGFjb3JleDpkYXRlVGltZS51bml0cy5taWxsaXNlY29uZCcpLFxuICAgIF0pO1xuXG4gICAgY29uc3QgdW5pdHMgPSBbXG4gICAgICB7IGtleTogJ1lFQVInLCBsYWJlbDogdHJhbnNsYXRpb25zWzBdLnRvTG9jYWxlVXBwZXJDYXNlKCksIHZhbHVlOiAxMDAwICogNjAgKiA2MCAqIDI0ICogMzY1IH0sXG4gICAgICB7IGtleTogJ01PTlRIJywgbGFiZWw6IHRyYW5zbGF0aW9uc1sxXS50b0xvY2FsZVVwcGVyQ2FzZSgpLCB2YWx1ZTogMTAwMCAqIDYwICogNjAgKiAyNCAqIDMwIH0sXG4gICAgICB7IGtleTogJ1dFRUsnLCBsYWJlbDogdHJhbnNsYXRpb25zWzJdLnRvTG9jYWxlVXBwZXJDYXNlKCksIHZhbHVlOiAxMDAwICogNjAgKiA2MCAqIDI0ICogNyB9LFxuICAgICAgeyBrZXk6ICdEQVknLCBsYWJlbDogdHJhbnNsYXRpb25zWzNdLnRvTG9jYWxlVXBwZXJDYXNlKCksIHZhbHVlOiAxMDAwICogNjAgKiA2MCAqIDI0IH0sXG4gICAgICB7IGtleTogJ0hPVVInLCBsYWJlbDogdHJhbnNsYXRpb25zWzRdLnRvTG9jYWxlVXBwZXJDYXNlKCksIHZhbHVlOiAxMDAwICogNjAgKiA2MCB9LFxuICAgICAgeyBrZXk6ICdNSU5VVEUnLCBsYWJlbDogdHJhbnNsYXRpb25zWzVdLnRvTG9jYWxlVXBwZXJDYXNlKCksIHZhbHVlOiAxMDAwICogNjAgfSxcbiAgICAgIHsga2V5OiAnU0VDT05EJywgbGFiZWw6IHRyYW5zbGF0aW9uc1s2XS50b0xvY2FsZVVwcGVyQ2FzZSgpLCB2YWx1ZTogMTAwMCB9LFxuICAgICAgeyBrZXk6ICdNSUxMSVNFQ09ORCcsIGxhYmVsOiB0cmFuc2xhdGlvbnNbN10udG9Mb2NhbGVVcHBlckNhc2UoKSwgdmFsdWU6IDEgfSxcbiAgICBdO1xuXG4gICAgY29uc3Qgc3RhcnRJbmRleCA9IHVuaXRzLmZpbmRJbmRleCgodSkgPT4gdS5rZXkgPT09IHN0YXJ0VW5pdC50b1VwcGVyQ2FzZSgpKTtcbiAgICBjb25zdCBlbmRJbmRleCA9IHVuaXRzLmZpbmRJbmRleCgodSkgPT4gdS5rZXkgPT09IGVuZFVuaXQudG9VcHBlckNhc2UoKSk7XG5cbiAgICBpZiAoc3RhcnRJbmRleCA9PT0gLTEgfHwgZW5kSW5kZXggPT09IC0xIHx8IHN0YXJ0SW5kZXggPiBlbmRJbmRleCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHRpbWUgdW5pdCByYW5nZScpO1xuICAgIH1cblxuICAgIGNvbnN0IGxpbWl0ZWRVbml0cyA9IHVuaXRzLnNsaWNlKHN0YXJ0SW5kZXgsIGVuZEluZGV4ICsgMSk7XG4gICAgY29uc3QgcmVzdWx0ID0gbGltaXRlZFVuaXRzLm1hcCgodW5pdCkgPT4ge1xuICAgICAgY29uc3QgY291bnQgPSBNYXRoLmZsb29yKG1zIC8gdW5pdC52YWx1ZSk7XG4gICAgICBtcyAlPSB1bml0LnZhbHVlO1xuXG4gICAgICAvLyBTcGVjaWFsIGhhbmRsaW5nIGZvciBtaWxsaXNlY29uZHMgKDMgZGlnaXRzKVxuICAgICAgaWYgKHVuaXQua2V5ID09PSAnTUlMTElTRUNPTkQnKSB7XG4gICAgICAgIGlmIChjb3VudCA8IDEwKSB7XG4gICAgICAgICAgcmV0dXJuIGAwMCR7Y291bnR9ICgke3VuaXQubGFiZWx9KWA7XG4gICAgICAgIH0gZWxzZSBpZiAoY291bnQgPCAxMDApIHtcbiAgICAgICAgICByZXR1cm4gYDAke2NvdW50fSAoJHt1bml0LmxhYmVsfSlgO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBgJHtjb3VudH0gKCR7dW5pdC5sYWJlbH0pYDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gRm9yIG90aGVyIHVuaXRzLCBwYWQgd2l0aCBvbmUgemVybyBpZiBsZXNzIHRoYW4gMTBcbiAgICAgICAgY29uc3QgcGFkZGVkQ291bnQgPSBjb3VudCA8IDEwID8gYDAke2NvdW50fWAgOiBgJHtjb3VudH1gO1xuICAgICAgICByZXR1cm4gYCR7cGFkZGVkQ291bnR9ICgke3VuaXQubGFiZWx9KWA7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAodGhpcy50cmFuc2xhdGlvblNlcnZpY2UuZ2V0QWN0aXZlTGFuZygpID09PSAnZmEtSVInKSB7XG4gICAgICByZXR1cm4gcmVzdWx0LnJldmVyc2UoKS5qb2luKCcgOiAnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHJlc3VsdC5qb2luKCcgOiAnKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==","import { AXLocaleService } from '@acorex/core/locale';\nimport { Injectable, inject } from '@angular/core';\nimport { isNil } from 'lodash-es';\nimport { AXCalendarService } from '../calendar.service';\nimport * as i0 from \"@angular/core\";\nexport class AXTimeFormatter {\n constructor() {\n this.calendarService = inject(AXCalendarService);\n this.localeService = inject(AXLocaleService);\n }\n get name() {\n return 'time';\n }\n format(value, options) {\n if (isNil(value)) {\n return '';\n }\n //\n if (!this.calendarService.isValidDate(value))\n return 'Invalid date';\n //\n const effectiveOptions = typeof options == 'object'\n ? {\n format: options.format ?? 'short',\n locale: options.locale,\n calendar: options.calendar ?? this.calendarService.calendar.name(),\n }\n : {\n format: options,\n calendar: this.calendarService.calendar.name(),\n };\n //\n const formats = this.localeService.activeProfile().formats;\n const map = {\n short: formats.time.short,\n medium: formats.time.medium,\n long: formats.time.long,\n full: formats.time.full,\n };\n const format = map[effectiveOptions.format] ?? effectiveOptions.format ?? map['short'];\n //\n return this.calendarService\n .convert(value, effectiveOptions.calendar)\n .format(format, { locale: effectiveOptions.locale });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXTimeFormatter, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXTimeFormatter }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXTimeFormatter, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS5mb3JtYXR0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL2RhdGUtdGltZS9zcmMvbGliL2Zvcm1hdHRlcnMvdGltZS5mb3JtYXR0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbEMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7O0FBS3hELE1BQU0sT0FBTyxlQUFlO0lBRDVCO1FBRVUsb0JBQWUsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUM1QyxrQkFBYSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztLQXNDakQ7SUFwQ0MsSUFBSSxJQUFJO1FBQ04sT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUEyQixFQUFFLE9BQTZDO1FBQy9FLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDakIsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBQ0QsRUFBRTtRQUNGLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7WUFBRSxPQUFPLGNBQWMsQ0FBQztRQUNwRSxFQUFFO1FBQ0YsTUFBTSxnQkFBZ0IsR0FDcEIsT0FBTyxPQUFPLElBQUksUUFBUTtZQUN4QixDQUFDLENBQUM7Z0JBQ0UsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNLElBQUksT0FBTztnQkFDakMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNO2dCQUN0QixRQUFRLEVBQUUsT0FBTyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUU7YUFDbkU7WUFDSCxDQUFDLENBQUM7Z0JBQ0UsTUFBTSxFQUFFLE9BQU87Z0JBQ2YsUUFBUSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRTthQUMvQyxDQUFDO1FBQ1IsRUFBRTtRQUNGLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxFQUFFLENBQUMsT0FBTyxDQUFDO1FBQzNELE1BQU0sR0FBRyxHQUFHO1lBQ1YsS0FBSyxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSztZQUN6QixNQUFNLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNO1lBQzNCLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUk7WUFDdkIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSTtTQUN4QixDQUFDO1FBQ0YsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLGdCQUFnQixDQUFDLE1BQTBCLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQyxNQUFNLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNHLEVBQUU7UUFDRixPQUFPLElBQUksQ0FBQyxlQUFlO2FBQ3hCLE9BQU8sQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLENBQUMsUUFBa0IsQ0FBQzthQUNuRCxNQUFNLENBQUMsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDekQsQ0FBQzs4R0F2Q1UsZUFBZTtrSEFBZixlQUFlOzsyRkFBZixlQUFlO2tCQUQzQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhGb3JtYXR0ZXIgfSBmcm9tICdAYWNvcmV4L2NvcmUvZm9ybWF0JztcbmltcG9ydCB7IEFYTG9jYWxlU2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29yZS9sb2NhbGUnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpc05pbCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBBWENhbGVuZGFyU2VydmljZSB9IGZyb20gJy4uL2NhbGVuZGFyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQVhWYWxpZERhdGVUaW1lVmFsdWUgfSBmcm9tICcuLi9kYXRldGltZS50eXBlcyc7XG5pbXBvcnQgeyBBWERhdGVUaW1lRm9ybWF0dGVyT3B0aW9ucyB9IGZyb20gJy4vZGF0ZXRpbWUuZm9ybWF0dGVyJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFYVGltZUZvcm1hdHRlciBpbXBsZW1lbnRzIEFYRm9ybWF0dGVyIHtcbiAgcHJpdmF0ZSBjYWxlbmRhclNlcnZpY2UgPSBpbmplY3QoQVhDYWxlbmRhclNlcnZpY2UpO1xuICBwcml2YXRlIGxvY2FsZVNlcnZpY2UgPSBpbmplY3QoQVhMb2NhbGVTZXJ2aWNlKTtcblxuICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAndGltZSc7XG4gIH1cblxuICBmb3JtYXQodmFsdWU6IEFYVmFsaWREYXRlVGltZVZhbHVlLCBvcHRpb25zPzogQVhEYXRlVGltZUZvcm1hdHRlck9wdGlvbnMgfCBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmIChpc05pbCh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgLy9cbiAgICBpZiAoIXRoaXMuY2FsZW5kYXJTZXJ2aWNlLmlzVmFsaWREYXRlKHZhbHVlKSkgcmV0dXJuICdJbnZhbGlkIGRhdGUnO1xuICAgIC8vXG4gICAgY29uc3QgZWZmZWN0aXZlT3B0aW9ucyA9XG4gICAgICB0eXBlb2Ygb3B0aW9ucyA9PSAnb2JqZWN0J1xuICAgICAgICA/IHtcbiAgICAgICAgICAgIGZvcm1hdDogb3B0aW9ucy5mb3JtYXQgPz8gJ3Nob3J0JyxcbiAgICAgICAgICAgIGxvY2FsZTogb3B0aW9ucy5sb2NhbGUsXG4gICAgICAgICAgICBjYWxlbmRhcjogb3B0aW9ucy5jYWxlbmRhciA/PyB0aGlzLmNhbGVuZGFyU2VydmljZS5jYWxlbmRhci5uYW1lKCksXG4gICAgICAgICAgfVxuICAgICAgICA6IHtcbiAgICAgICAgICAgIGZvcm1hdDogb3B0aW9ucyxcbiAgICAgICAgICAgIGNhbGVuZGFyOiB0aGlzLmNhbGVuZGFyU2VydmljZS5jYWxlbmRhci5uYW1lKCksXG4gICAgICAgICAgfTtcbiAgICAvL1xuICAgIGNvbnN0IGZvcm1hdHMgPSB0aGlzLmxvY2FsZVNlcnZpY2UuYWN0aXZlUHJvZmlsZSgpLmZvcm1hdHM7XG4gICAgY29uc3QgbWFwID0ge1xuICAgICAgc2hvcnQ6IGZvcm1hdHMudGltZS5zaG9ydCxcbiAgICAgIG1lZGl1bTogZm9ybWF0cy50aW1lLm1lZGl1bSxcbiAgICAgIGxvbmc6IGZvcm1hdHMudGltZS5sb25nLFxuICAgICAgZnVsbDogZm9ybWF0cy50aW1lLmZ1bGwsXG4gICAgfTtcbiAgICBjb25zdCBmb3JtYXQgPSBtYXBbZWZmZWN0aXZlT3B0aW9ucy5mb3JtYXQgYXMga2V5b2YgdHlwZW9mIG1hcF0gPz8gZWZmZWN0aXZlT3B0aW9ucy5mb3JtYXQgPz8gbWFwWydzaG9ydCddO1xuICAgIC8vXG4gICAgcmV0dXJuIHRoaXMuY2FsZW5kYXJTZXJ2aWNlXG4gICAgICAuY29udmVydCh2YWx1ZSwgZWZmZWN0aXZlT3B0aW9ucy5jYWxlbmRhciBhcyBzdHJpbmcpXG4gICAgICAuZm9ybWF0KGZvcm1hdCwgeyBsb2NhbGU6IGVmZmVjdGl2ZU9wdGlvbnMubG9jYWxlIH0pO1xuICB9XG59XG4iXX0=","import { Injectable } from '@angular/core';\nimport { isNil } from 'lodash-es';\nimport * as i0 from \"@angular/core\";\nexport class AXTimeLeftFormatter {\n get name() {\n return 'timeleft';\n }\n format(value, options) {\n const valueNumber = Number(value);\n const sign = valueNumber >= 0 ? 'left' : 'ago';\n const milliseconds = Math.abs(valueNumber);\n const durationInSeconds = Math.round(milliseconds / 1000);\n let format = options?.format;\n // Determine the best format if format is null\n if (isNil(format)) {\n if (durationInSeconds < 45)\n format = 's';\n else if (durationInSeconds < 60 * 45)\n format = 'm';\n else if (durationInSeconds < 60 * 60 * 22)\n format = 'h';\n else if (durationInSeconds < 60 * 60 * 24 * 26)\n format = 'd';\n else if (durationInSeconds < 60 * 60 * 24 * 320)\n format = 'M';\n else\n format = 'y';\n }\n // Helper function for zero-padding\n const pad = (num) => num.toString().padStart(2, '0');\n switch (format) {\n case 's':\n return `${durationInSeconds} seconds ${sign}`;\n case 'ss':\n return `${pad(durationInSeconds)} seconds ${sign}`;\n case 'm':\n return `${Math.round(durationInSeconds / 60)} minute${durationInSeconds >= 120 ? 's' : ''} ${sign}`;\n case 'mm':\n return `${pad(Math.round(durationInSeconds / 60))} minutes ${sign}`;\n case 'h':\n case 'H':\n if (durationInSeconds < 60 * 89)\n return `an hour ${sign}`;\n return `${Math.round(durationInSeconds / 3600)} hour${durationInSeconds >= 60 * 180 ? 's' : ''} ${sign}`;\n case 'hh':\n case 'HH':\n if (durationInSeconds < 60 * 89)\n return `01 hour ${sign}`;\n return `${pad(Math.round(durationInSeconds / 3600))} hours ${sign}`;\n case 'd':\n case 'D':\n if (durationInSeconds < 60 * 60 * 35)\n return `a day ${sign}`;\n return `${Math.round(durationInSeconds / (3600 * 24))} day${durationInSeconds >= 60 * 60 * 70 ? 's' : ''} ${sign}`;\n case 'dd':\n case 'DD':\n if (durationInSeconds < 60 * 60 * 35)\n return `01 day ${sign}`;\n return `${pad(Math.round(durationInSeconds / (3600 * 24)))} days ${sign}`;\n case 'M':\n if (durationInSeconds < 60 * 60 * 24 * 45)\n return `a month ${sign}`;\n return `${Math.round(durationInSeconds / (3600 * 24 * 30))} month${durationInSeconds >= 60 * 60 * 24 * 90 ? 's' : ''} ${sign}`;\n case 'MM':\n if (durationInSeconds < 60 * 60 * 24 * 45)\n return `01 month ${sign}`;\n return `${pad(Math.round(durationInSeconds / (3600 * 24 * 30)))} months ${sign}`;\n case 'y':\n case 'Y':\n if (durationInSeconds < 60 * 60 * 24 * 547)\n return `a year ${sign}`;\n return `${Math.round(durationInSeconds / (3600 * 24 * 365))} year${durationInSeconds >= 60 * 60 * 24 * 730 ? 's' : ''} ${sign}`;\n case 'yy':\n case 'YY':\n case 'yyyy':\n case 'YYYY':\n if (durationInSeconds < 60 * 60 * 24 * 547)\n return `01 year ${sign}`;\n return `${pad(Math.round(durationInSeconds / (3600 * 24 * 365)))} years ${sign}`;\n default:\n return 'Invalid format';\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXTimeLeftFormatter, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXTimeLeftFormatter }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXTimeLeftFormatter, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZWxlZnQuZm9ybWF0dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9kYXRlLXRpbWUvc3JjL2xpYi9mb3JtYXR0ZXJzL3RpbWVsZWZ0LmZvcm1hdHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxXQUFXLENBQUM7O0FBYWxDLE1BQU0sT0FBTyxtQkFBbUI7SUFDOUIsSUFBSSxJQUFJO1FBQ04sT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFzQixFQUFFLE9BQW9DO1FBQ2pFLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNsQyxNQUFNLElBQUksR0FBRyxXQUFXLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUMvQyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzNDLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDMUQsSUFBSSxNQUFNLEdBQUcsT0FBTyxFQUFFLE1BQU0sQ0FBQztRQUM3Qiw4Q0FBOEM7UUFDOUMsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUNsQixJQUFJLGlCQUFpQixHQUFHLEVBQUU7Z0JBQUUsTUFBTSxHQUFHLEdBQUcsQ0FBQztpQkFDcEMsSUFBSSxpQkFBaUIsR0FBRyxFQUFFLEdBQUcsRUFBRTtnQkFBRSxNQUFNLEdBQUcsR0FBRyxDQUFDO2lCQUM5QyxJQUFJLGlCQUFpQixHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRTtnQkFBRSxNQUFNLEdBQUcsR0FB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RSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsR0FBRztvQkFBRSxPQUFPLFdBQVcsSUFBSSxFQUFFLENBQUM7Z0JBQ3JFLE9BQU8sR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLElBQUksR0FBRyxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDO1lBQ25GO2dCQUNFLE9BQU8sZ0JBQWdCLENBQUM7UUFDNUIsQ0FBQztJQUNILENBQUM7OEdBcEVVLG1CQUFtQjtrSEFBbkIsbUJBQW1COzsyRkFBbkIsbUJBQW1CO2tCQUQvQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhGb3JtYXRPcHRpb25zLCBBWEZvcm1hdHRlciB9IGZyb20gJ0BhY29yZXgvY29yZS9mb3JtYXQnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXNOaWwgfSBmcm9tICdsb2Rhc2gtZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFYVGltZUxlZnRGb3JtYXR0ZXJPcHRpb25zIGV4dGVuZHMgQVhGb3JtYXRPcHRpb25zIHtcbiAgZm9ybWF0OiBzdHJpbmc7XG59XG5cbmRlY2xhcmUgbW9kdWxlICdAYWNvcmV4L2NvcmUvZm9ybWF0JyB7XG4gIGludGVyZmFjZSBBWEZvcm1hdE9wdGlvbnNNYXAge1xuICAgIHRpbWVsZWZ0OiBBWFRpbWVMZWZ0Rm9ybWF0dGVyT3B0aW9ucztcbiAgfVxufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQVhUaW1lTGVmdEZvcm1hdHRlciBpbXBsZW1lbnRzIEFYRm9ybWF0dGVyIHtcbiAgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ3RpbWVsZWZ0JztcbiAgfVxuXG4gIGZvcm1hdCh2YWx1ZTogbnVtYmVyIHwgc3RyaW5nLCBvcHRpb25zPzogQVhUaW1lTGVmdEZvcm1hdHRlck9wdGlvbnMpOiBzdHJpbmcge1xuICAgIGNvbnN0IHZhbHVlTnVtYmVyID0gTnVtYmVyKHZhbHVlKTtcbiAgICBjb25zdCBzaWduID0gdmFsdWVOdW1iZXIgPj0gMCA/ICdsZWZ0JyA6ICdhZ28nO1xuICAgIGNvbnN0IG1pbGxpc2Vjb25kcyA9IE1hdGguYWJzKHZhbHVlTnVtYmVyKTtcbiAgICBjb25zdCBkdXJhdGlvbkluU2Vjb25kcyA9IE1hdGgucm91bmQobWlsbGlzZWNvbmRzIC8gMTAwMCk7XG4gICAgbGV0IGZvcm1hdCA9IG9wdGlvbnM/LmZvcm1hdDtcbiAgICAvLyBEZXRlcm1pbmUgdGhlIGJlc3QgZm9ybWF0IGlmIGZvcm1hdCBpcyBudWxsXG4gICAgaWYgKGlzTmlsKGZvcm1hdCkpIHtcbiAgICAgIGlmIChkdXJhdGlvbkluU2Vjb25kcyA8IDQ1KSBmb3JtYXQgPSAncyc7XG4gICAgICBlbHNlIGlmIChkdXJhdGlvbkluU2Vjb25kcyA8IDYwICogNDUpIGZvcm1hdCA9ICdtJztcbiAgICAgIGVsc2UgaWYgKGR1cmF0aW9uSW5TZWNvbmRzIDwgNjAgKiA2MCAqIDIyKSBmb3JtYXQgPSAnaCc7XG4gICAgICBlbHNlIGlmIChkdXJhdGlvbkluU2Vjb25kcyA8IDYwICogNjAgKiAyNCAqIDI2KSBmb3JtYXQgPSAnZCc7XG4gICAgICBlbHNlIGlmIChkdXJhdGlvbkluU2Vjb25kcyA8IDYwICogNjAgKiAyNCAqIDMyMCkgZm9ybWF0ID0gJ00nO1xuICAgICAgZWxzZSBmb3JtYXQgPSAneSc7XG4gICAgfVxuXG4gICAgLy8gSGVscGVyIGZ1bmN0aW9uIGZvciB6ZXJvLXBhZGRpbmdcbiAgICBjb25zdCBwYWQgPSAobnVtOiBudW1iZXIpID0+IG51bS50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyk7XG5cbiAgICBzd2l0Y2ggKGZvcm1hdCkge1xuICAgICAgY2FzZSAncyc6XG4gICAgICAgIHJldHVybiBgJHtkdXJhdGlvbkluU2Vjb25kc30gc2Vjb25kcyAke3NpZ259YDtcbiAgICAgIGNhc2UgJ3NzJzpcbiAgICAgICAgcmV0dXJuIGAke3BhZChkdXJhdGlvbkluU2Vjb25kcyl9IHNlY29uZHMgJHtzaWdufWA7XG4gICAgICBjYXNlICdtJzpcbiAgICAgICAgcmV0dXJuIGAke01hdGgucm91bmQoZHVyYXRpb25JblNlY29uZHMgLyA2MCl9IG1pbnV0ZSR7ZHVyYXRpb25JblNlY29uZHMgPj0gMTIwID8gJ3MnIDogJyd9ICR7c2lnbn1gO1xuICAgICAgY2FzZSAnbW0nOlxuICAgICAgICByZXR1cm4gYCR7cGFkKE1hdGgucm91bmQoZHVyYXRpb25JblNlY29uZHMgLyA2MCkpfSBtaW51dGVzICR7c2lnbn1gO1xuICAgICAgY2FzZSAnaCc6XG4gICAgICBjYXNlICdIJzpcbiAgICAgICAgaWYgKGR1cmF0aW9uSW5TZWNvbmRzIDwgNjAgKiA4OSkgcmV0dXJuIGBhbiBob3VyICR7c2lnbn1gO1xuICAgICAgICByZXR1cm4gYCR7TWF0aC5yb3VuZChkdXJhdGlvbkluU2Vjb25kcyAvIDM2MDApfSBob3VyJHtkdXJhdGlvbkluU2Vjb25kcyA+PSA2MCAqIDE4MCA/ICdzJyA6ICcnfSAke3NpZ259YDtcbiAgICAgIGNhc2UgJ2hoJzpcbiAgICAgIGNhc2UgJ0hIJzpcbiAgICAgICAgaWYgKGR1cmF0aW9uSW5TZWNvbmRzIDwgNjAgKiA4OSkgcmV0dXJuIGAwMSBob3VyICR7c2lnbn1gO1xuICAgICAgICByZXR1cm4gYCR7cGFkKE1hdGgucm91bmQoZHVyYXRpb25JblNlY29uZHMgLyAzNjAwKSl9IGhvdXJzICR7c2lnbn1gO1xuICAgICAgY2FzZSAnZCc6XG4gICAgICBjYXNlICdEJzpcbiAgICAgICAgaWYgKGR1cmF0aW9uSW5TZWNvbmRzIDwgNjAgKiA2MCAqIDM1KSByZXR1cm4gYGEgZGF5ICR7c2lnbn1gO1xuICAgICAgICByZXR1cm4gYCR7TWF0aC5yb3VuZChkdXJhdGlvbkluU2Vjb25kcyAvICgzNjAwICogMjQpKX0gZGF5JHtkdXJhdGlvbkluU2Vjb25kcyA+PSA2MCAqIDYwICogNzAgPyAncycgOiAnJ30gJHtzaWdufWA7XG4gICAgICBjYXNlICdkZCc6XG4gICAgICBjYXNlICdERCc6XG4gICAgICAgIGlmIChkdXJhdGlvbkluU2Vjb25kcyA8IDYwICogNjAgKiAzNSkgcmV0dXJuIGAwMSBkYXkgJHtzaWdufWA7XG4gICAgICAgIHJldHVybiBgJHtwYWQoTWF0aC5yb3VuZChkdXJhdGlvbkluU2Vjb25kcyAvICgzNjAwICogMjQpKSl9IGRheXMgJHtzaWdufWA7XG4gICAgICBjYXNlICdNJzpcbiAgICAgICAgaWYgKGR1cmF0aW9uSW5TZWNvbmRzIDwgNjAgKiA2MCAqIDI0ICogNDUpIHJldHVybiBgYSBtb250aCAke3NpZ259YDtcbiAgICAgICAgcmV0dXJuIGAke01hdGgucm91bmQoZHVyYXRpb25JblNlY29uZHMgLyAoMzYwMCAqIDI0ICogMzApKX0gbW9udGgke2R1cmF0aW9uSW5TZWNvbmRzID49IDYwICogNjAgKiAyNCAqIDkwID8gJ3MnIDogJyd9ICR7c2lnbn1gO1xuICAgICAgY2FzZSAnTU0nOlxuICAgICAgICBpZiAoZHVyYXRpb25JblNlY29uZHMgPCA2MCAqIDYwICogMjQgKiA0NSkgcmV0dXJuIGAwMSBtb250aCAke3NpZ259YDtcbiAgICAgICAgcmV0dXJuIGAke3BhZChNYXRoLnJvdW5kKGR1cmF0aW9uSW5TZWNvbmRzIC8gKDM2MDAgKiAyNCAqIDMwKSkpfSBtb250aHMgJHtzaWdufWA7XG4gICAgICBjYXNlICd5JzpcbiAgICAgIGNhc2UgJ1knOlxuICAgICAgICBpZiAoZHVyYXRpb25JblNlY29uZHMgPCA2MCAqIDYwICogMjQgKiA1NDcpIHJldHVybiBgYSB5ZWFyICR7c2lnbn1gO1xuICAgICAgICByZXR1cm4gYCR7TWF0aC5yb3VuZChkdXJhdGlvbkluU2Vjb25kcyAvICgzNjAwICogMjQgKiAzNjUpKX0geWVhciR7ZHVyYXRpb25JblNlY29uZHMgPj0gNjAgKiA2MCAqIDI0ICogNzMwID8gJ3MnIDogJyd9ICR7c2lnbn1gO1xuICAgICAgY2FzZSAneXknOlxuICAgICAgY2FzZSAnWVknOlxuICAgICAgY2FzZSAneXl5eSc6XG4gICAgICBjYXNlICdZWVlZJzpcbiAgICAgICAgaWYgKGR1cmF0aW9uSW5TZWNvbmRzIDwgNjAgKiA2MCAqIDI0ICogNTQ3KSByZXR1cm4gYDAxIHllYXIgJHtzaWdufWA7XG4gICAgICAgIHJldHVybiBgJHtwYWQoTWF0aC5yb3VuZChkdXJhdGlvbkluU2Vjb25kcyAvICgzNjAwICogMjQgKiAzNjUpKSl9IHllYXJzICR7c2lnbn1gO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdJbnZhbGlkIGZvcm1hdCc7XG4gICAgfVxuICB9XG59XG4iXX0=","import { AXFormatModule } from '@acorex/core/format';\nimport { NgModule } from '@angular/core';\nimport { AXDateTimePipe } from './datetime.pipe';\nimport { AXDateFormatter } from './formatters/date.formatter';\nimport { AXDateTimeFormatter } from './formatters/datetime.formatter';\nimport { AXTimeDurationFormatter } from './formatters/time-duration.formatter';\nimport { AXTimeFormatter } from './formatters/time.formatter';\nimport { AXTimeLeftFormatter } from './formatters/timeleft.formatter';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/core/format\";\nexport class AXDateTimeModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXDateTimeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.0.4\", ngImport: i0, type: AXDateTimeModule, imports: [i1.AXFormatModule, AXDateTimePipe], exports: [AXDateTimePipe] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXDateTimeModule, imports: [AXFormatModule.forChild({\n formatters: [AXDateTimeFormatter, AXDateFormatter, AXTimeFormatter, AXTimeLeftFormatter, AXTimeDurationFormatter],\n })] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXDateTimeModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [\n AXFormatModule.forChild({\n formatters: [AXDateTimeFormatter, AXDateFormatter, AXTimeFormatter, AXTimeLeftFormatter, AXTimeDurationFormatter],\n }),\n AXDateTimePipe,\n ],\n exports: [AXDateTimePipe],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9kYXRlLXRpbWUvc3JjL2xpYi9kYXRldGltZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMvRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDOUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0saUNBQWlDLENBQUM7OztBQVd0RSxNQUFNLE9BQU8sZ0JBQWdCOzhHQUFoQixnQkFBZ0I7K0dBQWhCLGdCQUFnQiwrQkFKekIsY0FBYyxhQUVOLGNBQWM7K0dBRWIsZ0JBQWdCLFlBUHpCLGNBQWMsQ0FBQyxRQUFRLENBQUM7Z0JBQ3RCLFVBQVUsRUFBRSxDQUFDLG1CQUFtQixFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsbUJBQW1CLEVBQUUsdUJBQXVCLENBQUM7YUFDbEgsQ0FBQzs7MkZBS08sZ0JBQWdCO2tCQVQ1QixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCxjQUFjLENBQUMsUUFBUSxDQUFDOzRCQUN0QixVQUFVLEVBQUUsQ0FBQyxtQkFBbUIsRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLG1CQUFtQixFQUFFLHVCQUF1QixDQUFDO3lCQUNsSCxDQUFDO3dCQUNGLGNBQWM7cUJBQ2Y7b0JBQ0QsT0FBTyxFQUFFLENBQUMsY0FBYyxDQUFDO2lCQUMxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYRm9ybWF0TW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb3JlL2Zvcm1hdCc7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhEYXRlVGltZVBpcGUgfSBmcm9tICcuL2RhdGV0aW1lLnBpcGUnO1xuaW1wb3J0IHsgQVhEYXRlRm9ybWF0dGVyIH0gZnJvbSAnLi9mb3JtYXR0ZXJzL2RhdGUuZm9ybWF0dGVyJztcbmltcG9ydCB7IEFYRGF0ZVRpbWVGb3JtYXR0ZXIgfSBmcm9tICcuL2Zvcm1hdHRlcnMvZGF0ZXRpbWUuZm9ybWF0dGVyJztcbmltcG9ydCB7IEFYVGltZUR1cmF0aW9uRm9ybWF0dGVyIH0gZnJvbSAnLi9mb3JtYXR0ZXJzL3RpbWUtZHVyYXRpb24uZm9ybWF0dGVyJztcbmltcG9ydCB7IEFYVGltZUZvcm1hdHRlciB9IGZyb20gJy4vZm9ybWF0dGVycy90aW1lLmZvcm1hdHRlcic7XG5pbXBvcnQgeyBBWFRpbWVMZWZ0Rm9ybWF0dGVyIH0gZnJvbSAnLi9mb3JtYXR0ZXJzL3RpbWVsZWZ0LmZvcm1hdHRlcic7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtcbiAgICBBWEZvcm1hdE1vZHVsZS5mb3JDaGlsZCh7XG4gICAgICBmb3JtYXR0ZXJzOiBbQVhEYXRlVGltZUZvcm1hdHRlciwgQVhEYXRlRm9ybWF0dGVyLCBBWFRpbWVGb3JtYXR0ZXIsIEFYVGltZUxlZnRGb3JtYXR0ZXIsIEFYVGltZUR1cmF0aW9uRm9ybWF0dGVyXSxcbiAgICB9KSxcbiAgICBBWERhdGVUaW1lUGlwZSxcbiAgXSxcbiAgZXhwb3J0czogW0FYRGF0ZVRpbWVQaXBlXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhEYXRlVGltZU1vZHVsZSB7fVxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LWNvcmUtZGF0ZS10aW1lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9kYXRlLXRpbWUvc3JjL2Fjb3JleC1jb3JlLWRhdGUtdGltZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}
|