@skyux/datetime 13.0.0-alpha.0 → 13.0.0-alpha.1
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.
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"skyux-datetime.mjs","sources":["../tmp-esm2022/lib/modules/shared/sky-datetime-resources.module.js","../tmp-esm2022/lib/modules/date-pipe/date.service.js","../tmp-esm2022/lib/modules/date-pipe/date.pipe.js","../tmp-esm2022/lib/modules/datepicker/fuzzy/fuzzy-date.service.js","../tmp-esm2022/lib/modules/date-pipe/fuzzy-date.pipe.js","../tmp-esm2022/lib/modules/date-pipe/date-pipe.module.js","../tmp-esm2022/lib/modules/datepicker/date-formatter.js","../tmp-esm2022/lib/modules/datepicker/calendar/datepicker-calendar-inner.component.js","../tmp-esm2022/lib/modules/datepicker/calendar/datepicker-calendar.service.js","../tmp-esm2022/lib/modules/datepicker/calendar/datepicker-calendar-label.pipe.js","../tmp-esm2022/lib/modules/datepicker/calendar/daypicker-button.component.js","../tmp-esm2022/lib/modules/datepicker/calendar/daypicker-cell.component.js","../tmp-esm2022/lib/modules/datepicker/calendar/daypicker.component.js","../tmp-esm2022/lib/modules/datepicker/calendar/monthpicker.component.js","../tmp-esm2022/lib/modules/datepicker/calendar/yearpicker.component.js","../tmp-esm2022/lib/modules/datepicker/datepicker-config.service.js","../tmp-esm2022/lib/modules/datepicker/calendar/datepicker-calendar.component.js","../tmp-esm2022/lib/modules/datepicker/datepicker-host.service.js","../tmp-esm2022/lib/modules/datepicker/datepicker.component.js","../tmp-esm2022/lib/modules/datepicker/datepicker-input.directive.js","../tmp-esm2022/lib/modules/datepicker/fuzzy/datepicker-input-fuzzy.directive.js","../tmp-esm2022/lib/modules/datepicker/datepicker.module.js","../tmp-esm2022/lib/modules/date-range-picker/types/date-range-calculator-type.js","../tmp-esm2022/lib/modules/date-range-picker/date-range-picker-end-date-resource-key.pipe.js","../tmp-esm2022/lib/modules/date-range-picker/date-range-picker-start-date-resource-key.pipe.js","../tmp-esm2022/lib/modules/date-range-picker/types/date-range-calculator.js","../tmp-esm2022/lib/modules/date-range-picker/types/date-range-calculator-id.js","../tmp-esm2022/lib/modules/date-range-picker/types/date-range-relative-value.js","../tmp-esm2022/lib/modules/date-range-picker/types/date-range-default-calculator-configs.js","../tmp-esm2022/lib/modules/date-range-picker/date-range.service.js","../tmp-esm2022/lib/modules/date-range-picker/date-range-picker.component.js","../tmp-esm2022/lib/modules/date-range-picker/date-range-picker.module.js","../tmp-esm2022/lib/modules/timepicker/timepicker.component.js","../tmp-esm2022/lib/modules/timepicker/timepicker.directive.js","../tmp-esm2022/lib/modules/timepicker/timepicker.module.js","../tmp-esm2022/skyux-datetime.js"],"sourcesContent":["/* istanbul ignore file */\n/**\n * NOTICE: DO NOT MODIFY THIS FILE!\n * The contents of this file were automatically generated by\n * the 'ng generate @skyux/i18n:lib-resources-module lib/modules/shared/sky-datetime' schematic.\n * To update this file, simply rerun the command.\n */\nimport { NgModule } from '@angular/core';\nimport { SkyI18nModule, SkyLibResourcesService, } from '@skyux/i18n';\nimport * as i0 from \"@angular/core\";\nconst RESOURCES = {\n 'EN-AU': {\n skyux_date_range_picker_format_label_last_fiscal_year: {\n message: 'Last financial year',\n },\n skyux_date_range_picker_format_label_this_fiscal_year: {\n message: 'This financial year',\n },\n skyux_date_range_picker_format_label_next_fiscal_year: {\n message: 'Next financial year',\n },\n },\n 'EN-GB': {\n skyux_date_range_picker_format_label_last_fiscal_year: {\n message: 'Last financial year',\n },\n skyux_date_range_picker_format_label_this_fiscal_year: {\n message: 'This financial year',\n },\n skyux_date_range_picker_format_label_next_fiscal_year: {\n message: 'Next financial year',\n },\n },\n 'EN-NZ': {\n skyux_date_range_picker_format_label_last_fiscal_year: {\n message: 'Last financial year',\n },\n skyux_date_range_picker_format_label_this_fiscal_year: {\n message: 'This financial year',\n },\n skyux_date_range_picker_format_label_next_fiscal_year: {\n message: 'Next financial year',\n },\n },\n 'EN-US': {\n skyux_datepicker_format_hint_text: { message: 'Use the format {0}.' },\n skyux_datepicker_trigger_button_label: { message: 'Select date' },\n skyux_datepicker_trigger_button_label_context: {\n message: 'Open calendar for {0}',\n },\n skyux_datepicker_move_calendar_previous_day: { message: 'Previous month' },\n skyux_datepicker_move_calendar_next_day: { message: 'Next month' },\n skyux_datepicker_move_calendar_previous_month: { message: 'Previous year' },\n skyux_datepicker_move_calendar_next_month: { message: 'Next year' },\n skyux_datepicker_move_calendar_previous_year: { message: 'Previous page' },\n skyux_datepicker_move_calendar_next_year: { message: 'Next page' },\n skyux_timepicker_button_label: { message: 'Choose time' },\n skyux_timepicker_button_label_context: {\n message: 'Open time picker for {0}',\n },\n skyux_timepicker_close: { message: 'Done' },\n skyux_date_range_picker_default_label: { message: 'Select a date range' },\n skyux_date_range_picker_end_date_before_start_date_error_label_text: {\n message: 'Change the date range so that the end date is before the start date.',\n },\n skyux_date_range_picker_format_label_specific_range: {\n message: 'Specific range',\n },\n skyux_date_range_picker_format_label_before: { message: 'Before' },\n skyux_date_range_picker_format_label_after: { message: 'After' },\n skyux_date_range_picker_format_label_any_time: { message: 'At any time' },\n skyux_date_range_picker_format_label_yesterday: { message: 'Yesterday' },\n skyux_date_range_picker_format_label_today: { message: 'Today' },\n skyux_date_range_picker_format_label_tomorrow: { message: 'Tomorrow' },\n skyux_date_range_picker_format_label_last_week: { message: 'Last week' },\n skyux_date_range_picker_format_label_this_week: { message: 'This week' },\n skyux_date_range_picker_format_label_next_week: { message: 'Next week' },\n skyux_date_range_picker_format_label_last_month: { message: 'Last month' },\n skyux_date_range_picker_format_label_this_month: { message: 'This month' },\n skyux_date_range_picker_format_label_next_month: { message: 'Next month' },\n skyux_date_range_picker_format_label_last_quarter: {\n message: 'Last quarter',\n },\n skyux_date_range_picker_format_label_this_quarter: {\n message: 'This quarter',\n },\n skyux_date_range_picker_format_label_next_quarter: {\n message: 'Next quarter',\n },\n skyux_date_range_picker_format_label_last_calendar_year: {\n message: 'Last calendar year',\n },\n skyux_date_range_picker_format_label_this_calendar_year: {\n message: 'This calendar year',\n },\n skyux_date_range_picker_format_label_next_calendar_year: {\n message: 'Next calendar year',\n },\n skyux_date_range_picker_format_label_last_fiscal_year: {\n message: 'Last fiscal year',\n },\n skyux_date_range_picker_format_label_this_fiscal_year: {\n message: 'This fiscal year',\n },\n skyux_date_range_picker_format_label_next_fiscal_year: {\n message: 'Next fiscal year',\n },\n skyux_date_range_picker_start_date_label: { message: 'From date' },\n skyux_date_range_picker_end_date_label: { message: 'To date' },\n skyux_date_range_picker_before_date_label: { message: 'Before date' },\n skyux_date_range_picker_after_date_label: { message: 'After date' },\n skyux_date_range_picker_default_aria_label: { message: '{0} for {1}' },\n },\n 'FR-CA': {\n skyux_datepicker_format_hint_text: { message: 'Utilisez le format {0}.' },\n skyux_datepicker_trigger_button_label: { message: 'Sélectionner la date' },\n skyux_datepicker_trigger_button_label_context: {\n message: 'Ouvrir le calendrier pour {0}',\n },\n skyux_datepicker_move_calendar_previous_day: { message: 'Mois précédent' },\n skyux_datepicker_move_calendar_next_day: { message: 'Le mois prochain' },\n skyux_datepicker_move_calendar_previous_month: {\n message: 'Année précédente',\n },\n skyux_datepicker_move_calendar_next_month: { message: 'Année suivante' },\n skyux_datepicker_move_calendar_previous_year: {\n message: 'Page précédente',\n },\n skyux_datepicker_move_calendar_next_year: { message: 'Page suivante' },\n skyux_timepicker_button_label: { message: 'Choisir l’heure' },\n skyux_timepicker_button_label_context: {\n message: 'Ouvrir le sélecteur d’heure pour {0}',\n },\n skyux_timepicker_close: { message: 'Terminé' },\n skyux_date_range_picker_default_label: {\n message: 'Sélectionner une plage de dates',\n },\n skyux_date_range_picker_end_date_before_start_date_error_label_text: {\n message: 'Modifiez la plage de date de façon à ce que la date de fin soit avant la date de début.',\n },\n skyux_date_range_picker_format_label_specific_range: {\n message: 'Plage spécifique',\n },\n skyux_date_range_picker_format_label_before: { message: 'Avant' },\n skyux_date_range_picker_format_label_after: { message: 'Après' },\n skyux_date_range_picker_format_label_any_time: {\n message: 'N’importe quand',\n },\n skyux_date_range_picker_format_label_yesterday: { message: 'Hier' },\n skyux_date_range_picker_format_label_today: { message: 'Aujourd’hui' },\n skyux_date_range_picker_format_label_tomorrow: { message: 'Demain' },\n skyux_date_range_picker_format_label_last_week: {\n message: 'La semaine dernière',\n },\n skyux_date_range_picker_format_label_this_week: {\n message: 'Cette semaine',\n },\n skyux_date_range_picker_format_label_next_week: {\n message: 'La semaine prochaine',\n },\n skyux_date_range_picker_format_label_last_month: {\n message: 'Le mois dernier',\n },\n skyux_date_range_picker_format_label_this_month: { message: 'Ce mois-ci' },\n skyux_date_range_picker_format_label_next_month: {\n message: 'Le mois prochain',\n },\n skyux_date_range_picker_format_label_last_quarter: {\n message: 'Le trimestre dernier',\n },\n skyux_date_range_picker_format_label_this_quarter: {\n message: 'Ce trimestre',\n },\n skyux_date_range_picker_format_label_next_quarter: {\n message: 'Le trimestre prochain',\n },\n skyux_date_range_picker_format_label_last_calendar_year: {\n message: 'Dernière année civile',\n },\n skyux_date_range_picker_format_label_this_calendar_year: {\n message: 'Cette année civile',\n },\n skyux_date_range_picker_format_label_next_calendar_year: {\n message: 'Prochaine année civile',\n },\n skyux_date_range_picker_format_label_last_fiscal_year: {\n message: 'Dernier exercice',\n },\n skyux_date_range_picker_format_label_this_fiscal_year: {\n message: 'L’exercice en cours',\n },\n skyux_date_range_picker_format_label_next_fiscal_year: {\n message: 'Le prochain exercice',\n },\n skyux_date_range_picker_start_date_label: {\n message: 'À partir de la date du',\n },\n skyux_date_range_picker_end_date_label: { message: 'À ce jour' },\n skyux_date_range_picker_before_date_label: { message: 'Date avant' },\n skyux_date_range_picker_after_date_label: { message: 'Date après' },\n skyux_date_range_picker_default_aria_label: { message: '{0} pour {1}' },\n },\n};\nSkyLibResourcesService.addResources(RESOURCES);\n/**\n * Import into any component library module that needs to use resource strings.\n */\nexport class SkyDatetimeResourcesModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDatetimeResourcesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDatetimeResourcesModule, exports: [SkyI18nModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDatetimeResourcesModule, imports: [SkyI18nModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDatetimeResourcesModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [SkyI18nModule],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2t5LWRhdGV0aW1lLXJlc291cmNlcy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL3NoYXJlZC9za3ktZGF0ZXRpbWUtcmVzb3VyY2VzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwQkFBMEI7QUFDMUI7Ozs7O0dBS0c7QUFDSCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFDTCxhQUFhLEVBRWIsc0JBQXNCLEdBQ3ZCLE1BQU0sYUFBYSxDQUFDOztBQUVyQixNQUFNLFNBQVMsR0FBb0M7SUFDakQsT0FBTyxFQUFFO1FBQ1AscURBQXFELEVBQUU7WUFDckQsT0FBTyxFQUFFLHFCQUFxQjtTQUMvQjtRQUNELHFEQUFxRCxFQUFFO1lBQ3JELE9BQU8sRUFBRSxxQkFBcUI7U0FDL0I7UUFDRCxxREFBcUQsRUFBRTtZQUNyRCxPQUFPLEVBQUUscUJBQXFCO1NBQy9CO0tBQ0Y7SUFDRCxPQUFPLEVBQUU7UUFDUCxxREFBcUQsRUFBRTtZQUNyRCxPQUFPLEVBQUUscUJBQXFCO1NBQy9CO1FBQ0QscURBQXFELEVBQUU7WUFDckQsT0FBTyxFQUFFLHFCQUFxQjtTQUMvQjtRQUNELHFEQUFxRCxFQUFFO1lBQ3JELE9BQU8sRUFBRSxxQkFBcUI7U0FDL0I7S0FDRjtJQUNELE9BQU8sRUFBRTtRQUNQLHFEQUFxRCxFQUFFO1lBQ3JELE9BQU8sRUFBRSxxQkFBcUI7U0FDL0I7UUFDRCxxREFBcUQsRUFBRTtZQUNyRCxPQUFPLEVBQUUscUJBQXFCO1NBQy9CO1FBQ0QscURBQXFELEVBQUU7WUFDckQsT0FBTyxFQUFFLHFCQUFxQjtTQUMvQjtLQUNGO0lBQ0QsT0FBTyxFQUFFO1FBQ1AsaUNBQWlDLEVBQUUsRUFBRSxPQUFPLEVBQUUscUJBQXFCLEVBQUU7UUFDckUscUNB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QWMsRUFBRTtLQUN4RTtDQUNGLENBQUM7QUFFRixzQkFBc0IsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7QUFFL0M7O0dBRUc7QUFJSCxNQUFNLE9BQU8sMEJBQTBCOzhHQUExQiwwQkFBMEI7K0dBQTFCLDBCQUEwQixZQUYzQixhQUFhOytHQUVaLDBCQUEwQixZQUYzQixhQUFhOzsyRkFFWiwwQkFBMEI7a0JBSHRDLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsYUFBYSxDQUFDO2lCQUN6QiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGlzdGFuYnVsIGlnbm9yZSBmaWxlICovXG4vKipcbiAqIE5PVElDRTogRE8gTk9UIE1PRElGWSBUSElTIEZJTEUhXG4gKiBUaGUgY29udGVudHMgb2YgdGhpcyBmaWxlIHdlcmUgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnlcbiAqIHRoZSAnbmcgZ2VuZXJhdGUgQHNreXV4L2kxOG46bGliLXJlc291cmNlcy1tb2R1bGUgbGliL21vZHVsZXMvc2hhcmVkL3NreS1kYXRldGltZScgc2NoZW1hdGljLlxuICogVG8gdXBkYXRlIHRoaXMgZmlsZSwgc2ltcGx5IHJlcnVuIHRoZSBjb21tYW5kLlxuICovXG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgU2t5STE4bk1vZHVsZSxcbiAgU2t5TGliUmVzb3VyY2VzLFxuICBTa3lMaWJSZXNvdXJjZXNTZXJ2aWNlLFxufSBmcm9tICdAc2t5dXgvaTE4bic7XG5cbmNvbnN0IFJFU09VUkNFUzogUmVjb3JkPHN0cmluZywgU2t5TGliUmVzb3VyY2VzPiA9IHtcbiAgJ0VOLUFVJzoge1xuICAgIHNreXV4X2RhdGVfcmFuZ2VfcGlja2VyX2Zvcm1hdF9sYWJlbF9sYXN0X2Zpc2NhbF95ZWFyOiB7XG4gICAgICBtZXNzYWdlOiAnTGFzdCBmaW5hbmNpYWwgeWVhcicsXG4gICAgfSxcbiAgICBza3l1eF9kYXRlX3JhbmdlX3BpY2tlcl9mb3JtYXRfbGFiZWxfdGhpc19maXNjYWxfeWVhcjoge1xuICAgICAgbWVzc2FnZTogJ1RoaXMgZmluYW5jaWFsIHllYXInLFxuICAgIH0sXG4gICAgc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZm9ybWF0X2xhYmVsX25leHRfZmlzY2FsX3llYXI6IHtcbiAgICAgIG1lc3NhZ2U6ICdOZXh0IGZpbmFuY2lhbCB5ZWFyJyxcbiAgICB9LFxuICB9LFxuICAnRU4tR0InOiB7XG4gICAgc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZm9ybWF0X2xhYmVsX2xhc3RfZmlzY2FsX3llYXI6IHtcbiAgICAgIG1lc3NhZ2U6ICdMYXN0IGZpbmFuY2lhbCB5ZWFyJyxcbiAgICB9LFxuICAgIHNreXV4X2RhdGVfcmFuZ2VfcGlja2VyX2Zvcm1hdF9sYWJlbF90aGlzX2Zpc2NhbF95ZWFyOiB7XG4gICAgICBtZXNzYWdlOiAnVGhpcyBmaW5hbmNpYWwgeWVhcicsXG4gICAgfSxcbiAgICBza3l1eF9kYXRlX3JhbmdlX3BpY2tlcl9mb3JtYXRfbGFiZWxfbmV4dF9maXNjYWxfeWVhcjoge1xuICAgICAgbWVzc2FnZTogJ05leHQgZmluYW5jaWFsIHllYXInLFxuICAgIH0sXG4gIH0sXG4gICdFTi1OWic6IHtcbiAgICBza3l1eF9kYXRlX3JhbmdlX3BpY2tlcl9mb3JtYXRfbGFiZWxfbGFzdF9maXNjYWxfeWVhcjoge1xuICAgICAgbWVzc2FnZTogJ0xhc3QgZmluYW5jaWFsIHllYXInLFxuICAgIH0sXG4gICAgc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZm9ybWF0X2xhYmVsX3RoaXNfZmlzY2FsX3llYXI6IHtcbiAgICAgIG1lc3NhZ2U6ICdUaGlzIGZpbmFuY2lhbCB5ZWFyJyxcbiAgICB9LFxuICAgIHNreXV4X2RhdGVfcmFuZ2VfcGlja2VyX2Zvcm1hdF9sYWJlbF9uZXh0X2Zpc2NhbF95ZWFyOiB7XG4gICAgICBtZXNzYWdlOiAnTmV4dCBmaW5hbmNpYWwgeWVhcicsXG4gICAgfSxcbiAgfSxcbiAgJ0VOLVVTJzoge1xuICAgIHNreXV4X2RhdGVwaWNrZXJfZm9ybWF0X2hpbnRfdGV4dDogeyBtZXNzYWdlOiAnVXNlIHRoZSBmb3JtYXQgezB9LicgfSxcbiAgICBza3l1eF9kYXRlcGlja2VyX3RyaWdnZXJfYnV0dG9uX2xhYmVsOiB7IG1lc3NhZ2U6ICdTZWxlY3QgZGF0ZScgfSxcbiAgICBza3l1eF9kYXRlcGlja2VyX3RyaWdnZXJfYnV0dG9uX2xhYmVsX2NvbnRleHQ6IHtcbiAgICAgIG1lc3NhZ2U6ICdPcGVuIGNhbGVuZGFyIGZvciB7MH0nLFxuICAgIH0sXG4gICAgc2t5dXhfZGF0ZXBpY2tlcl9tb3ZlX2NhbGVuZGFyX3ByZXZpb3VzX2RheTogeyBtZXNzYWdlOiAnUHJldmlvdXMgbW9udGgnIH0sXG4gICAgc2t5dXhfZGF0ZXBpY2tlcl9tb3ZlX2NhbGVuZGFyX25leHRfZGF5OiB7IG1lc3NhZ2U6ICdOZXh0IG1vbnRoJyB9LFxuICAgIHNreXV4X2RhdGVwaWNrZXJfbW92ZV9jYWxlbmRhcl9wcmV2aW91c19tb250aDogeyBtZXNzYWdlOiAnUHJldmlvdXMgeWVhcicgfSxcbiAgICBza3l1eF9kYXRlcGlja2VyX21vdmVfY2FsZW5kYXJfbmV4dF9tb250aDogeyBtZXNzYWdlOiAnTmV4dCB5ZWFyJyB9LFxuICAgIHNreXV4X2RhdGVwaWNrZXJfbW92ZV9jYWxlbmRhcl9wcmV2aW91c195ZWFyOiB7IG1lc3NhZ2U6ICdQcmV2aW91cyBwYWdlJyB9LFxuICAgIHNreXV4X2RhdGVwaWNrZXJfbW92ZV9jYWxlbmRhcl9uZXh0X3llYXI6IHsgbWVzc2FnZTogJ05leHQgcGFnZScgfSxcbiAgICBza3l1eF90aW1lcGlja2VyX2J1dHRvbl9sYWJlbDogeyBtZXNzYWdlOiAnQ2hvb3NlIHRpbWUnIH0sXG4gICAgc2t5dXhfdGltZXBpY2tlcl9idXR0b25fbGFiZWxfY29udGV4dDoge1xuICAgICAgbWVzc2FnZTogJ09wZW4gdGltZSBwaWNrZXIgZm9yIHswfScsXG4gICAgfSxcbiAgICBza3l1eF90aW1lcGlja2VyX2Nsb3NlOiB7IG1lc3NhZ2U6ICdEb25lJyB9LFxuICAgIHNreXV4X2RhdGVfcmFuZ2VfcGlja2VyX2RlZmF1bHRfbGFiZWw6IHsgbWVzc2FnZTogJ1NlbGVjdCBhIGRhdGUgcmFuZ2UnIH0sXG4gICAgc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZW5kX2RhdGVfYmVmb3JlX3N0YXJ0X2RhdGVfZXJyb3JfbGFiZWxfdGV4dDoge1xuICAgICAgbWVzc2FnZTpcbiAgICAgICAgJ0NoYW5nZSB0aGUgZGF0ZSByYW5nZSBzbyB0aGF0IHRoZSBlbmQgZGF0ZSBpcyBiZWZvcmUgdGhlIHN0YXJ0IGRhdGUuJyxcbiAgICB9LFxuICAgIHNreXV4X2RhdGVfcmFuZ2VfcGlja2VyX2Zvcm1hdF9sYWJlbF9zcGVjaWZpY19yYW5nZToge1xuICAgICAgbWVzc2FnZTogJ1NwZWNpZmljIHJhbmdlJyxcbiAgICB9LFxuICAgIHNreXV4X2RhdGVfcmFuZ2VfcGlja2VyX2Zvcm1hdF9sYWJlbF9iZWZvcmU6IHsgbWVzc2FnZTogJ0JlZm9yZScgfSxcbiAgICBza3l1eF9kYXRlX3JhbmdlX3BpY2tlcl9mb3JtYXRfbGFiZWxfYWZ0ZXI6IHsgbWVzc2FnZTogJ0FmdGVyJyB9LFxuICAgIHNreXV4X2RhdGVfcmFuZ2VfcGlja2VyX2Zvcm1hdF9sYWJlbF9hbnlfdGltZTogeyBtZXNzYWdlOiAnQXQgYW55IHRpbWUnIH0sXG4gICAgc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZm9ybWF0X2xhYmVsX3llc3RlcmRheTogeyBtZXNzYWdlOiAnWWVzdGVyZGF5JyB9LFxuICAgIHNreXV4X2RhdGVfcmFuZ2VfcGlja2VyX2Zvcm1hdF9sYWJlbF90b2RheTogeyBtZXNzYWdlOiAnVG9kYXknIH0sXG4gICAgc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZm9ybWF0X2xhYmVsX3RvbW9ycm93OiB7IG1lc3NhZ2U6ICdUb21vcnJvdycgfSxcbiAgICBza3l1eF9kYXRlX3JhbmdlX3BpY2tlcl9mb3JtYXRfbGFiZWxfbGFzdF93ZWVrOiB7IG1lc3NhZ2U6ICdMYXN0IHdlZWsnIH0sXG4gICAgc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZm9ybWF0X2xhYmVsX3RoaXNfd2VlazogeyBtZXNzYWdlOiAnVGhpcyB3ZWVrJyB9LFxuICAgIHNreXV4X2RhdGVfcmFuZ2VfcGlja2VyX2Zvcm1hdF9sYWJlbF9uZXh0X3dlZWs6IHsgbWVzc2FnZTogJ05leHQgd2VlaycgfSxcbiAgICBza3l1eF9kYXRlX3JhbmdlX3BpY2tlcl9mb3JtYXRfbGFiZWxfbGFzdF9tb250aDogeyBtZXNzYWdlOiAnTGFzdCBtb250aCcgfSxcbiAgICBza3l1eF9kYXRlX3JhbmdlX3BpY2tlcl9mb3JtYXRfbGFiZWxfdGhpc19tb250aDogeyBtZXNzYWdlOiAnVGhpcyBtb250aCcgfSxcbiAgICBza3l1eF9kYXRlX3JhbmdlX3BpY2tlcl9mb3JtYXRfbGFiZWxfbmV4dF9tb250aDogeyBtZXNzYWdlOiAnTmV4dCBtb250aCcgfSxcbiAgICBza3l1eF9kYXRlX3JhbmdlX3BpY2tlcl9mb3JtYXRfbGFiZWxfbGFzdF9xdWFydGVyOiB7XG4gICAgICBtZXNzYWdlOiAnTGFzdCBxdWFydGVyJyxcbiAgICB9LFxuICAgIHNreXV4X2RhdGVfcmFuZ2VfcGlja2VyX2Zvcm1hdF9sYWJlbF90aGlzX3F1YXJ0ZXI6IHtcbiAgICAgIG1lc3NhZ2U6ICdUaGlzIHF1YXJ0ZXInLFxuICAgIH0sXG4gICAgc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZm9ybWF0X2xhYmVsX25leHRfcXVhcnRlcjoge1xuICAgICAgbWVzc2FnZTogJ05leHQgcXVhcnRlcicsXG4gICAgfSxcbiAgICBza3l1eF9kYXRlX3JhbmdlX3BpY2tlcl9mb3JtYXRfbGFiZWxfbGFzdF9jYWxlbmRhcl95ZWFyOiB7XG4gICAgICBtZXNzYWdlOiAnTGFzdCBjYWxlbmRhciB5ZWFyJyxcbiAgICB9LFxuICAgIHNreXV4X2RhdGVfcmFuZ2VfcGlja2VyX2Zvcm1hdF9sYWJlbF90aGlzX2NhbGVuZGFyX3llYXI6IHtcbiAgICAgIG1lc3NhZ2U6ICdUaGlzIGNhbGVuZGFyIHllYXInLFxuICAgIH0sXG4gICAgc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZm9ybWF0X2xhYmVsX25leHRfY2FsZW5kYXJfeWVhcjoge1xuICAgICAgbWVzc2FnZTogJ05leHQgY2FsZW5kYXIgeWVhcicsXG4gICAgfSxcbiAgICBza3l1eF9kYXRlX3JhbmdlX3BpY2tlcl9mb3JtYXRfbGFiZWxfbGFzdF9maXNjYWxfeWVhcjoge1xuICAgICAgbWVzc2FnZTogJ0xhc3QgZmlzY2FsIHllYXInLFxuICAgIH0sXG4gICAgc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZm9ybWF0X2xhYmVsX3RoaXNfZmlzY2FsX3llYXI6IHtcbiAgICAgIG1lc3NhZ2U6ICdUaGlzIGZpc2NhbCB5ZWFyJyxcbiAgICB9LFxuICAgIHNreXV4X2RhdGVfcmFuZ2VfcGlja2VyX2Zvcm1hdF9sYWJlbF9uZXh0X2Zpc2NhbF95ZWFyOiB7XG4gICAgICBtZXNzYWdlOiAnTmV4dCBmaXNjYWwgeWVhcicsXG4gICAgfSxcbiAgICBza3l1eF9kYXRlX3JhbmdlX3BpY2tlcl9zdGFydF9kYXRlX2xhYmVsOiB7IG1lc3NhZ2U6ICdGcm9tIGRhdGUnIH0sXG4gICAgc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZW5kX2RhdGVfbGFiZWw6IHsgbWVzc2FnZTogJ1RvIGRhdGUnIH0sXG4gICAgc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfYmVmb3JlX2RhdGVfbGFiZWw6IHsgbWVzc2FnZTogJ0JlZm9yZSBkYXRlJyB9LFxuICAgIHNreXV4X2RhdGVfcmFuZ2VfcGlja2VyX2FmdGVyX2RhdGVfbGFiZWw6IHsgbWVzc2FnZTogJ0FmdGVyIGRhdGUnIH0sXG4gICAgc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZGVmYXVsdF9hcmlhX2xhYmVsOiB7IG1lc3NhZ2U6ICd7MH0gZm9yIHsxfScgfSxcbiAgfSxcbiAgJ0ZSLUNBJzoge1xuICAgIHNreXV4X2RhdGVwaWNrZXJfZm9ybWF0X2hpbnRfdGV4dDogeyBtZXNzYWdlOiAnVXRpbGlzZXogbGUgZm9ybWF0IHswfS4nIH0sXG4gICAgc2t5dXhfZGF0ZXBpY2tlcl90cmlnZ2VyX2J1dHRvbl9sYWJlbDogeyBtZXNzYWdlOiAnU8OpbGVjdGlvbm5lciBsYSBkYXRlJyB9LFxuICAgIHNreXV4X2RhdGVwaWNrZXJfdHJpZ2dlcl9idXR0b25fbGFiZWxfY29udGV4dDoge1xuICAgICAgbWVzc2FnZTogJ091dnJpciBsZSBjYWxlbmRyaWVyIHBvdXIgezB9JyxcbiAgICB9LFxuICAgIHNreXV4X2RhdGVwaWNrZXJfbW92ZV9jYWxlbmRhcl9wcmV2aW91c19kYXk6IHsgbWVzc2FnZTogJ01vaXMgcHLDqWPDqWRlbnQnIH0sXG4gICAgc2t5dXhfZGF0ZXBpY2tlcl9tb3ZlX2NhbGVuZGFyX25leHRfZGF5OiB7IG1lc3NhZ2U6ICdMZSBtb2lzIHByb2NoYWluJyB9LFxuICAgIHNreXV4X2RhdGVwaWNrZXJfbW92ZV9jYWxlbmRhcl9wcmV2aW91c19tb250aDoge1xuICAgICAgbWVzc2FnZTogJ0FubsOpZSBwcsOpY8OpZGVudGUnLFxuICAgIH0sXG4gICAgc2t5dXhfZGF0ZXBpY2tlcl9tb3ZlX2NhbGVuZGFyX25leHRfbW9udGg6IHsgbWVzc2FnZTogJ0FubsOpZSBzdWl2YW50ZScgfSxcbiAgICBza3l1eF9kYXRlcGlja2VyX21vdmVfY2FsZW5kYXJfcHJldmlvdXNfeWVhcjoge1xuICAgICAgbWVzc2FnZTogJ1BhZ2UgcHLDqWPDqWRlbnRlJyxcbiAgICB9LFxuICAgIHNreXV4X2RhdGVwaWNrZXJfbW92ZV9jYWxlbmRhcl9uZXh0X3llYXI6IHsgbWVzc2FnZTogJ1BhZ2Ugc3VpdmFudGUnIH0sXG4gICAgc2t5dXhfdGltZXBpY2tlcl9idXR0b25fbGFiZWw6IHsgbWVzc2FnZTogJ0Nob2lzaXIgbOKAmWhldXJlJyB9LFxuICAgIHNreXV4X3RpbWVwaWNrZXJfYnV0dG9uX2xhYmVsX2NvbnRleHQ6IHtcbiAgICAgIG1lc3NhZ2U6ICdPdXZyaXIgbGUgc8OpbGVjdGV1ciBk4oCZaGV1cmUgcG91ciB7MH0nLFxuICAgIH0sXG4gICAgc2t5dXhfdGltZXBpY2tlcl9jbG9zZTogeyBtZXNzYWdlOiAnVGVybWluw6knIH0sXG4gICAgc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZGVmYXVsdF9sYWJlbDoge1xuICAgICAgbWVzc2FnZTogJ1PDqWxlY3Rpb25uZXIgdW5lIHBsYWdlIGRlIGRhdGVzJyxcbiAgICB9LFxuICAgIHNreXV4X2RhdGVfcmFuZ2VfcGlja2VyX2VuZF9kYXRlX2JlZm9yZV9zdGFydF9kYXRlX2Vycm9yX2xhYmVsX3RleHQ6IHtcbiAgICAgIG1lc3NhZ2U6XG4gICAgICAgICdNb2RpZmlleiBsYSBwbGFnZSBkZSBkYXRlIGRlIGZhw6dvbiDDoCBjZSBxdWUgbGEgZGF0ZSBkZSBmaW4gc29pdCBhdmFudCBsYSBkYXRlIGRlIGTDqWJ1dC4nLFxuICAgIH0sXG4gICAgc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZm9ybWF0X2xhYmVsX3NwZWNpZmljX3JhbmdlOiB7XG4gICAgICBtZXNzYWdlOiAnUGxhZ2Ugc3DDqWNpZmlxdWUnLFxuICAgIH0sXG4gICAgc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZm9ybWF0X2xhYmVsX2JlZm9yZTogeyBtZXNzYWdlOiAnQXZhbnQnIH0sXG4gICAgc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZm9ybWF0X2xhYmVsX2FmdGVyOiB7IG1lc3NhZ2U6ICdBcHLDqHMnIH0sXG4gICAgc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZm9ybWF0X2xhYmVsX2FueV90aW1lOiB7XG4gICAgICBtZXNzYWdlOiAnTuKAmWltcG9ydGUgcXVhbmQnLFxuICAgIH0sXG4gICAgc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZm9ybWF0X2xhYmVsX3llc3RlcmRheTogeyBtZXNzYWdlOiAnSGllcicgfSxcbiAgICBza3l1eF9kYXRlX3JhbmdlX3BpY2tlcl9mb3JtYXRfbGFiZWxfdG9kYXk6IHsgbWVzc2FnZTogJ0F1am91cmTigJlodWknIH0sXG4gICAgc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZm9ybWF0X2xhYmVsX3RvbW9ycm93OiB7IG1lc3NhZ2U6ICdEZW1haW4nIH0sXG4gICAgc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZm9ybWF0X2xhYmVsX2xhc3Rfd2Vlazoge1xuICAgICAgbWVzc2FnZTogJ0xhIHNlbWFpbmUgZGVybmnDqHJlJyxcbiAgICB9LFxuICAgIHNreXV4X2RhdGVfcmFuZ2VfcGlja2VyX2Zvcm1hdF9sYWJlbF90aGlzX3dlZWs6IHtcbiAgICAgIG1lc3NhZ2U6ICdDZXR0ZSBzZW1haW5lJyxcbiAgICB9LFxuICAgIHNreXV4X2RhdGVfcmFuZ2VfcGlja2VyX2Zvcm1hdF9sYWJlbF9uZXh0X3dlZWs6IHtcbiAgICAgIG1lc3NhZ2U6ICdMYSBzZW1haW5lIHByb2NoYWluZScsXG4gICAgfSxcbiAgICBza3l1eF9kYXRlX3JhbmdlX3BpY2tlcl9mb3JtYXRfbGFiZWxfbGFzdF9tb250aDoge1xuICAgICAgbWVzc2FnZTogJ0xlIG1vaXMgZGVybmllcicsXG4gICAgfSxcbiAgICBza3l1eF9kYXRlX3JhbmdlX3BpY2tlcl9mb3JtYXRfbGFiZWxfdGhpc19tb250aDogeyBtZXNzYWdlOiAnQ2UgbW9pcy1jaScgfSxcbiAgICBza3l1eF9kYXRlX3JhbmdlX3BpY2tlcl9mb3JtYXRfbGFiZWxfbmV4dF9tb250aDoge1xuICAgICAgbWVzc2FnZTogJ0xlIG1vaXMgcHJvY2hhaW4nLFxuICAgIH0sXG4gICAgc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZm9ybWF0X2xhYmVsX2xhc3RfcXVhcnRlcjoge1xuICAgICAgbWVzc2FnZTogJ0xlIHRyaW1lc3RyZSBkZXJuaWVyJyxcbiAgICB9LFxuICAgIHNreXV4X2RhdGVfcmFuZ2VfcGlja2VyX2Zvcm1hdF9sYWJlbF90aGlzX3F1YXJ0ZXI6IHtcbiAgICAgIG1lc3NhZ2U6ICdDZSB0cmltZXN0cmUnLFxuICAgIH0sXG4gICAgc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZm9ybWF0X2xhYmVsX25leHRfcXVhcnRlcjoge1xuICAgICAgbWVzc2FnZTogJ0xlIHRyaW1lc3RyZSBwcm9jaGFpbicsXG4gICAgfSxcbiAgICBza3l1eF9kYXRlX3JhbmdlX3BpY2tlcl9mb3JtYXRfbGFiZWxfbGFzdF9jYWxlbmRhcl95ZWFyOiB7XG4gICAgICBtZXNzYWdlOiAnRGVybmnDqHJlIGFubsOpZSBjaXZpbGUnLFxuICAgIH0sXG4gICAgc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZm9ybWF0X2xhYmVsX3RoaXNfY2FsZW5kYXJfeWVhcjoge1xuICAgICAgbWVzc2FnZTogJ0NldHRlIGFubsOpZSBjaXZpbGUnLFxuICAgIH0sXG4gICAgc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZm9ybWF0X2xhYmVsX25leHRfY2FsZW5kYXJfeWVhcjoge1xuICAgICAgbWVzc2FnZTogJ1Byb2NoYWluZSBhbm7DqWUgY2l2aWxlJyxcbiAgICB9LFxuICAgIHNreXV4X2RhdGVfcmFuZ2VfcGlja2VyX2Zvcm1hdF9sYWJlbF9sYXN0X2Zpc2NhbF95ZWFyOiB7XG4gICAgICBtZXNzYWdlOiAnRGVybmllciBleGVyY2ljZScsXG4gICAgfSxcbiAgICBza3l1eF9kYXRlX3JhbmdlX3BpY2tlcl9mb3JtYXRfbGFiZWxfdGhpc19maXNjYWxfeWVhcjoge1xuICAgICAgbWVzc2FnZTogJ0zigJlleGVyY2ljZSBlbiBjb3VycycsXG4gICAgfSxcbiAgICBza3l1eF9kYXRlX3JhbmdlX3BpY2tlcl9mb3JtYXRfbGFiZWxfbmV4dF9maXNjYWxfeWVhcjoge1xuICAgICAgbWVzc2FnZTogJ0xlIHByb2NoYWluIGV4ZXJjaWNlJyxcbiAgICB9LFxuICAgIHNreXV4X2RhdGVfcmFuZ2VfcGlja2VyX3N0YXJ0X2RhdGVfbGFiZWw6IHtcbiAgICAgIG1lc3NhZ2U6ICfDgCBwYXJ0aXIgZGUgbGEgZGF0ZSBkdScsXG4gICAgfSxcbiAgICBza3l1eF9kYXRlX3JhbmdlX3BpY2tlcl9lbmRfZGF0ZV9sYWJlbDogeyBtZXNzYWdlOiAnw4AgY2Ugam91cicgfSxcbiAgICBza3l1eF9kYXRlX3JhbmdlX3BpY2tlcl9iZWZvcmVfZGF0ZV9sYWJlbDogeyBtZXNzYWdlOiAnRGF0ZSBhdmFudCcgfSxcbiAgICBza3l1eF9kYXRlX3JhbmdlX3BpY2tlcl9hZnRlcl9kYXRlX2xhYmVsOiB7IG1lc3NhZ2U6ICdEYXRlIGFwcsOocycgfSxcbiAgICBza3l1eF9kYXRlX3JhbmdlX3BpY2tlcl9kZWZhdWx0X2FyaWFfbGFiZWw6IHsgbWVzc2FnZTogJ3swfSBwb3VyIHsxfScgfSxcbiAgfSxcbn07XG5cblNreUxpYlJlc291cmNlc1NlcnZpY2UuYWRkUmVzb3VyY2VzKFJFU09VUkNFUyk7XG5cbi8qKlxuICogSW1wb3J0IGludG8gYW55IGNvbXBvbmVudCBsaWJyYXJ5IG1vZHVsZSB0aGF0IG5lZWRzIHRvIHVzZSByZXNvdXJjZSBzdHJpbmdzLlxuICovXG5ATmdNb2R1bGUoe1xuICBleHBvcnRzOiBbU2t5STE4bk1vZHVsZV0sXG59KVxuZXhwb3J0IGNsYXNzIFNreURhdGV0aW1lUmVzb3VyY2VzTW9kdWxlIHt9XG4iXX0=","// This class is mostly ported from the Angular 4.x DatePipe in order to maintain the old\n// behavior of using the `Intl` API for formatting dates rather than having to register every\n// supported locale.\n// https://github.com/angular/angular/blob/4.4.x/packages/common/src/pipes/date_pipe.ts\nimport { Injectable, inject } from '@angular/core';\nimport { SkyAppLocaleProvider, SkyIntlDateFormatter, } from '@skyux/i18n';\nimport moment from 'moment';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport * as i0 from \"@angular/core\";\n/**\n * @internal\n */\nexport class SkyDateService {\n /* spell-checker:disable */\n // See: https://github.com/angular/angular/blob/17.3.x/packages/common/src/pipes/date_pipe.ts\n // See: https://www.ibm.com/docs/en/app-connect/11.0.0?topic=function-formatting-parsing-datetimes-as-strings\n #ALIASES = {\n // TODO: replace with 'M/d/yy, h:mm a' in a breaking change.\n short: 'yMdjm',\n // TODO: replace with 'MMM d, y, h:mm:ss a' in a breaking change.\n medium: 'yMMMdjms',\n // TODO: This format was modified from 'MMMM d, y, h:mm:ss a z' due to the limitations of the Intl API.\n long: 'MMMM d, y, h:mm:ss a Z',\n // TODO: This format was modified from 'EEEE, MMMM d, y, h:mm:ss a zzzz' due to the limitations of the Intl API.\n full: 'EEEE, MMMM d, y, h:mm:ss a z',\n // TODO: Replace with 'M/d/yy' in a breaking change.\n shortDate: 'yMd',\n // TODO: Replace with 'MMM d, y' in a breaking change.\n mediumDate: 'yMMMd',\n // TODO: Replace with 'MMMM d, y' in a breaking change.\n longDate: 'yMMMMd',\n // TODO: Replace with 'EEEE, MMMM d, y' in a breaking change.\n fullDate: 'yMMMMEEEEd',\n // TODO: Replace with 'h:mm a' in a breaking change.\n shortTime: 'jm',\n // TODO: Replace with 'h:mm:ss a' in a breaking change.\n mediumTime: 'jms',\n // TODO: This format was modified from 'h:mm:ss a z' due to the limitations of the Intl API.\n longTime: 'h:mm:ss a Z',\n // TODO: This format was modified from 'h:mm:ss a zzzz' due to the limitations of the Intl API.\n fullTime: 'h:mm:ss a z',\n };\n /* spell-checker:enable */\n #defaultFormat = 'short';\n #defaultLocale = 'en-US';\n #ngUnsubscribe = new Subject();\n constructor() {\n inject(SkyAppLocaleProvider)\n .getLocaleInfo()\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((localeInfo) => {\n this.#defaultLocale = localeInfo.locale;\n });\n }\n ngOnDestroy() {\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n }\n format(value, locale, format) {\n let date;\n const pattern = format || this.#defaultFormat;\n if (isBlank(value) || value !== value) {\n return undefined;\n }\n // Moment will interpret any non-date object as today's date. That would\n // introduce a breaking change, so we check for it here. This could probably be removed\n // in a future major version.\n if (value instanceof Object && !(value instanceof Date)) {\n throw new Error('Invalid value: ' + value);\n }\n // Use moment to avoid inconsistencies between browsers interpreting the value differently.\n const momentDate = moment(value);\n if (momentDate.isValid()) {\n date = momentDate.toDate();\n }\n else {\n throw new Error('Invalid value: ' + value);\n }\n return SkyIntlDateFormatter.format(date, locale || this.#defaultLocale, this.#ALIASES[pattern] || pattern);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDateService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDateService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: () => [] });\nfunction isBlank(obj) {\n return !obj;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2RhdGV0aW1lL3NyYy9saWIvbW9kdWxlcy9kYXRlLXBpcGUvZGF0ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHlGQUF5RjtBQUN6Riw2RkFBNkY7QUFDN0Ysb0JBQW9CO0FBQ3BCLHVGQUF1RjtBQUN2RixPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBRUwsb0JBQW9CLEVBQ3BCLG9CQUFvQixHQUNyQixNQUFNLGFBQWEsQ0FBQztBQUVyQixPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBRTNDOztHQUVHO0FBSUgsTUFBTSxPQUFPLGNBQWM7SUFDekIsMkJBQTJCO0lBQzNCLDZGQUE2RjtJQUM3Riw2R0FBNkc7SUFDN0csUUFBUSxHQUEyQjtRQUNqQyw0REFBNEQ7UUFDNUQsS0FBSyxFQUFFLE9BQU87UUFDZCxpRUFBaUU7UUFDakUsTUFBTSxFQUFFLFVBQVU7UUFDbEIsdUdBQXVHO1FBQ3ZHLElBQUksRUFBRSx3QkFBd0I7UUFDOUIsZ0hBQWdIO1FBQ2hILElBQUksRUFBRSw4QkFBOEI7UUFDcEMsb0RBQW9EO1FBQ3BELFNBQVMsRUFBRSxLQUFLO1FBQ2hCLHNEQUFzRDtRQUN0RCxVQUFVLEVBQUUsT0FBTztRQUNuQix1REFBdUQ7UUFDdkQsUUFBUSxFQUFFLFFBQVE7UUFDbEIsNkRBQTZEO1FBQzdELFFBQVEsRUFBRSxZQUFZO1FBQ3RCLG9EQUFvRDtRQUNwRCxTQUFTLEVBQUUsSUFBSTtRQUNmLHVEQUF1RDtRQUN2RCxVQUFVLEVBQUUsS0FBSztRQUNqQiw0RkFBNEY7UUFDNUYsUUFBUSxFQUFFLGFBQWE7UUFDdkIsK0ZBQStGO1FBQy9GLFFBQVEsRUFBRSxhQUFhO0tBQ3hCLENBQUM7SUFDRiwwQkFBMEI7SUFFMUIsY0FBYyxHQUFHLE9BQU8sQ0FBQztJQUN6QixjQUFjLEdBQUcsT0FBTyxDQUFDO0lBQ3pCLGNBQWMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBRXJDO1FBQ0UsTUFBTSxDQUFDLG9CQUFvQixDQUFDO2FBQ3pCLGFBQWEsRUFBRTthQUNmLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2FBQ3BDLFNBQVMsQ0FBQyxDQUFDLFVBQTRCLEVBQUUsRUFBRTtZQUMxQyxJQUFJLENBQUMsY0FBYyxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUM7UUFDMUMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVNLE1BQU0sQ0FDWCxLQUFVLEVBQ1YsTUFBZSxFQUNmLE1BQWU7UUFFZixJQUFJLElBQVUsQ0FBQztRQUNmLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDO1FBRTlDLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUN0QyxPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO1FBRUQsd0VBQXdFO1FBQ3hFLHVGQUF1RjtRQUN2Riw2QkFBNkI7UUFDN0IsSUFBSSxLQUFLLFlBQVksTUFBTSxJQUFJLENBQUMsQ0FBQyxLQUFLLFlBQVksSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUN4RCxNQUFNLElBQUksS0FBSyxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxDQUFDO1FBQzdDLENBQUM7UUFFRCwyRkFBMkY7UUFDM0YsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLElBQUksVUFBVSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7WUFDekIsSUFBSSxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUM3QixDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sSUFBSSxLQUFLLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDLENBQUM7UUFDN0MsQ0FBQztRQUVELE9BQU8sb0JBQW9CLENBQUMsTUFBTSxDQUNoQyxJQUFJLEVBQ0osTUFBTSxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQzdCLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksT0FBTyxDQUNsQyxDQUFDO0lBQ0osQ0FBQzs4R0FsRlUsY0FBYztrSEFBZCxjQUFjLGNBRmIsTUFBTTs7MkZBRVAsY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7O0FBc0ZELFNBQVMsT0FBTyxDQUFDLEdBQVE7SUFDdkIsT0FBTyxDQUFDLEdBQUcsQ0FBQztBQUNkLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGlzIGNsYXNzIGlzIG1vc3RseSBwb3J0ZWQgZnJvbSB0aGUgQW5ndWxhciA0LnggRGF0ZVBpcGUgaW4gb3JkZXIgdG8gbWFpbnRhaW4gdGhlIG9sZFxuLy8gYmVoYXZpb3Igb2YgdXNpbmcgdGhlIGBJbnRsYCBBUEkgZm9yIGZvcm1hdHRpbmcgZGF0ZXMgcmF0aGVyIHRoYW4gaGF2aW5nIHRvIHJlZ2lzdGVyIGV2ZXJ5XG4vLyBzdXBwb3J0ZWQgbG9jYWxlLlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9ibG9iLzQuNC54L3BhY2thZ2VzL2NvbW1vbi9zcmMvcGlwZXMvZGF0ZV9waXBlLnRzXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBPbkRlc3Ryb3ksIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgU2t5QXBwTG9jYWxlSW5mbyxcbiAgU2t5QXBwTG9jYWxlUHJvdmlkZXIsXG4gIFNreUludGxEYXRlRm9ybWF0dGVyLFxufSBmcm9tICdAc2t5dXgvaTE4bic7XG5cbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFNreURhdGVTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgLyogc3BlbGwtY2hlY2tlcjpkaXNhYmxlICovXG4gIC8vIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9ibG9iLzE3LjMueC9wYWNrYWdlcy9jb21tb24vc3JjL3BpcGVzL2RhdGVfcGlwZS50c1xuICAvLyBTZWU6IGh0dHBzOi8vd3d3LmlibS5jb20vZG9jcy9lbi9hcHAtY29ubmVjdC8xMS4wLjA/dG9waWM9ZnVuY3Rpb24tZm9ybWF0dGluZy1wYXJzaW5nLWRhdGV0aW1lcy1hcy1zdHJpbmdzXG4gICNBTElBU0VTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgIC8vIFRPRE86IHJlcGxhY2Ugd2l0aCAnTS9kL3l5LCBoOm1tIGEnIGluIGEgYnJlYWtpbmcgY2hhbmdlLlxuICAgIHNob3J0OiAneU1kam0nLFxuICAgIC8vIFRPRE86IHJlcGxhY2Ugd2l0aCAnTU1NIGQsIHksIGg6bW06c3MgYScgaW4gYSBicmVha2luZyBjaGFuZ2UuXG4gICAgbWVkaXVtOiAneU1NTWRqbXMnLFxuICAgIC8vIFRPRE86IFRoaXMgZm9ybWF0IHdhcyBtb2RpZmllZCBmcm9tICdNTU1NIGQsIHksIGg6bW06c3MgYSB6JyBkdWUgdG8gdGhlIGxpbWl0YXRpb25zIG9mIHRoZSBJbnRsIEFQSS5cbiAgICBsb25nOiAnTU1NTSBkLCB5LCBoOm1tOnNzIGEgWicsXG4gICAgLy8gVE9ETzogVGhpcyBmb3JtYXQgd2FzIG1vZGlmaWVkIGZyb20gJ0VFRUUsIE1NTU0gZCwgeSwgaDptbTpzcyBhIHp6enonIGR1ZSB0byB0aGUgbGltaXRhdGlvbnMgb2YgdGhlIEludGwgQVBJLlxuICAgIGZ1bGw6ICdFRUVFLCBNTU1NIGQsIHksIGg6bW06c3MgYSB6JyxcbiAgICAvLyBUT0RPOiBSZXBsYWNlIHdpdGggJ00vZC95eScgaW4gYSBicmVha2luZyBjaGFuZ2UuXG4gICAgc2hvcnREYXRlOiAneU1kJyxcbiAgICAvLyBUT0RPOiBSZXBsYWNlIHdpdGggJ01NTSBkLCB5JyBpbiBhIGJyZWFraW5nIGNoYW5nZS5cbiAgICBtZWRpdW1EYXRlOiAneU1NTWQnLFxuICAgIC8vIFRPRE86IFJlcGxhY2Ugd2l0aCAnTU1NTSBkLCB5JyBpbiBhIGJyZWFraW5nIGNoYW5nZS5cbiAgICBsb25nRGF0ZTogJ3lNTU1NZCcsXG4gICAgLy8gVE9ETzogUmVwbGFjZSB3aXRoICdFRUVFLCBNTU1NIGQsIHknIGluIGEgYnJlYWtpbmcgY2hhbmdlLlxuICAgIGZ1bGxEYXRlOiAneU1NTU1FRUVFZCcsXG4gICAgLy8gVE9ETzogUmVwbGFjZSB3aXRoICdoOm1tIGEnIGluIGEgYnJlYWtpbmcgY2hhbmdlLlxuICAgIHNob3J0VGltZTogJ2ptJyxcbiAgICAvLyBUT0RPOiBSZXBsYWNlIHdpdGggJ2g6bW06c3MgYScgaW4gYSBicmVha2luZyBjaGFuZ2UuXG4gICAgbWVkaXVtVGltZTogJ2ptcycsXG4gICAgLy8gVE9ETzogVGhpcyBmb3JtYXQgd2FzIG1vZGlmaWVkIGZyb20gJ2g6bW06c3MgYSB6JyBkdWUgdG8gdGhlIGxpbWl0YXRpb25zIG9mIHRoZSBJbnRsIEFQSS5cbiAgICBsb25nVGltZTogJ2g6bW06c3MgYSBaJyxcbiAgICAvLyBUT0RPOiBUaGlzIGZvcm1hdCB3YXMgbW9kaWZpZWQgZnJvbSAnaDptbTpzcyBhIHp6enonIGR1ZSB0byB0aGUgbGltaXRhdGlvbnMgb2YgdGhlIEludGwgQVBJLlxuICAgIGZ1bGxUaW1lOiAnaDptbTpzcyBhIHonLFxuICB9O1xuICAvKiBzcGVsbC1jaGVja2VyOmVuYWJsZSAqL1xuXG4gICNkZWZhdWx0Rm9ybWF0ID0gJ3Nob3J0JztcbiAgI2RlZmF1bHRMb2NhbGUgPSAnZW4tVVMnO1xuICAjbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgaW5qZWN0KFNreUFwcExvY2FsZVByb3ZpZGVyKVxuICAgICAgLmdldExvY2FsZUluZm8oKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgobG9jYWxlSW5mbzogU2t5QXBwTG9jYWxlSW5mbykgPT4ge1xuICAgICAgICB0aGlzLiNkZWZhdWx0TG9jYWxlID0gbG9jYWxlSW5mby5sb2NhbGU7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgZm9ybWF0KFxuICAgIHZhbHVlOiBhbnksXG4gICAgbG9jYWxlPzogc3RyaW5nLFxuICAgIGZvcm1hdD86IHN0cmluZyxcbiAgKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBsZXQgZGF0ZTogRGF0ZTtcbiAgICBjb25zdCBwYXR0ZXJuID0gZm9ybWF0IHx8IHRoaXMuI2RlZmF1bHRGb3JtYXQ7XG5cbiAgICBpZiAoaXNCbGFuayh2YWx1ZSkgfHwgdmFsdWUgIT09IHZhbHVlKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8vIE1vbWVudCB3aWxsIGludGVycHJldCBhbnkgbm9uLWRhdGUgb2JqZWN0IGFzIHRvZGF5J3MgZGF0ZS4gVGhhdCB3b3VsZFxuICAgIC8vIGludHJvZHVjZSBhIGJyZWFraW5nIGNoYW5nZSwgc28gd2UgY2hlY2sgZm9yIGl0IGhlcmUuIFRoaXMgY291bGQgcHJvYmFibHkgYmUgcmVtb3ZlZFxuICAgIC8vIGluIGEgZnV0dXJlIG1ham9yIHZlcnNpb24uXG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0ICYmICEodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHZhbHVlOiAnICsgdmFsdWUpO1xuICAgIH1cblxuICAgIC8vIFVzZSBtb21lbnQgdG8gYXZvaWQgaW5jb25zaXN0ZW5jaWVzIGJldHdlZW4gYnJvd3NlcnMgaW50ZXJwcmV0aW5nIHRoZSB2YWx1ZSBkaWZmZXJlbnRseS5cbiAgICBjb25zdCBtb21lbnREYXRlID0gbW9tZW50KHZhbHVlKTtcbiAgICBpZiAobW9tZW50RGF0ZS5pc1ZhbGlkKCkpIHtcbiAgICAgIGRhdGUgPSBtb21lbnREYXRlLnRvRGF0ZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgdmFsdWU6ICcgKyB2YWx1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIFNreUludGxEYXRlRm9ybWF0dGVyLmZvcm1hdChcbiAgICAgIGRhdGUsXG4gICAgICBsb2NhbGUgfHwgdGhpcy4jZGVmYXVsdExvY2FsZSxcbiAgICAgIHRoaXMuI0FMSUFTRVNbcGF0dGVybl0gfHwgcGF0dGVybixcbiAgICApO1xuICB9XG59XG5cbmZ1bmN0aW9uIGlzQmxhbmsob2JqOiBhbnkpOiBib29sZWFuIHtcbiAgcmV0dXJuICFvYmo7XG59XG4iXX0=","import { Pipe, inject } from '@angular/core';\nimport { SkyAppLocaleProvider } from '@skyux/i18n';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { SkyDateService } from './date.service';\nimport * as i0 from \"@angular/core\";\n/**\n * Formats date values according to locale rules.\n * @example\n * ```markup\n * {{ myDate | skyDate }}\n * {{ myDate | skyDate:'medium' }}\n * {{ myDate | skyDate:'medium':'en-CA' }}\n * ```\n */\nexport class SkyDatePipe {\n #dateSvc = inject(SkyDateService);\n #defaultFormat = 'short';\n #defaultLocale = 'en-US';\n #format;\n #formattedValue;\n #locale;\n #ngUnsubscribe = new Subject();\n #value;\n constructor() {\n inject(SkyAppLocaleProvider)\n .getLocaleInfo()\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((localeInfo) => {\n this.#defaultLocale = localeInfo.locale;\n this.#updateFormattedValue();\n });\n }\n ngOnDestroy() {\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n }\n /**\n * Transforms a date value using locale and format rules.\n * @param value Specifies the date value to transform.\n * @param format Specifies the format to apply to the transform. The format string is\n * constructed by a series of symbols that represent date-time values. The symbols are\n * identical to [Angular's `DatePipe`](https://angular.io/api/common/DatePipe#pre-defined-format-options) format options.\n * @param locale Specifies the locale code to use in the transform.\n */\n transform(value, format, locale) {\n this.#value = value;\n this.#format = format;\n this.#locale = locale;\n this.#updateFormattedValue();\n return this.#formattedValue ?? '';\n }\n #updateFormattedValue() {\n const locale = this.#locale || this.#defaultLocale;\n const format = this.#format || this.#defaultFormat;\n this.#formattedValue = this.#dateSvc.format(this.#value, locale, format);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDatePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDatePipe, isStandalone: false, name: \"skyDate\", pure: false }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDatePipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'skyDate',\n pure: false,\n standalone: false,\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2RhdGV0aW1lL3NyYy9saWIvbW9kdWxlcy9kYXRlLXBpcGUvZGF0ZS5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYSxJQUFJLEVBQWlCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQW9CLG9CQUFvQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXJFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFFaEQ7Ozs7Ozs7O0dBUUc7QUFNSCxNQUFNLE9BQU8sV0FBVztJQUN0QixRQUFRLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ2xDLGNBQWMsR0FBRyxPQUFPLENBQUM7SUFDekIsY0FBYyxHQUFHLE9BQU8sQ0FBQztJQUN6QixPQUFPLENBQXFCO0lBQzVCLGVBQWUsQ0FBcUI7SUFDcEMsT0FBTyxDQUFxQjtJQUM1QixjQUFjLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUNyQyxNQUFNLENBQU07SUFFWjtRQUNFLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQzthQUN6QixhQUFhLEVBQUU7YUFDZixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQzthQUNwQyxTQUFTLENBQUMsQ0FBQyxVQUE0QixFQUFFLEVBQUU7WUFDMUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDO1lBQ3hDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQy9CLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0ksU0FBUyxDQUFDLEtBQVUsRUFBRSxNQUFlLEVBQUUsTUFBZTtRQUMzRCxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNwQixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUN0QixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUV0QixJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUU3QixPQUFPLElBQUksQ0FBQyxlQUFlLElBQUksRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFRCxxQkFBcUI7UUFDbkIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDO1FBQ25ELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQztRQUVuRCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzNFLENBQUM7OEdBaERVLFdBQVc7NEdBQVgsV0FBVzs7MkZBQVgsV0FBVztrQkFMdkIsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsU0FBUztvQkFDZixJQUFJLEVBQUUsS0FBSztvQkFDWCxVQUFVLEVBQUUsS0FBSztpQkFDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPbkRlc3Ryb3ksIFBpcGUsIFBpcGVUcmFuc2Zvcm0sIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2t5QXBwTG9jYWxlSW5mbywgU2t5QXBwTG9jYWxlUHJvdmlkZXIgfSBmcm9tICdAc2t5dXgvaTE4bic7XG5cbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgU2t5RGF0ZVNlcnZpY2UgfSBmcm9tICcuL2RhdGUuc2VydmljZSc7XG5cbi8qKlxuICogRm9ybWF0cyBkYXRlIHZhbHVlcyBhY2NvcmRpbmcgdG8gbG9jYWxlIHJ1bGVzLlxuICogQGV4YW1wbGVcbiAqIGBgYG1hcmt1cFxuICoge3sgbXlEYXRlIHwgc2t5RGF0ZSB9fVxuICoge3sgbXlEYXRlIHwgc2t5RGF0ZTonbWVkaXVtJyB9fVxuICoge3sgbXlEYXRlIHwgc2t5RGF0ZTonbWVkaXVtJzonZW4tQ0EnIH19XG4gKiBgYGBcbiAqL1xuQFBpcGUoe1xuICBuYW1lOiAnc2t5RGF0ZScsXG4gIHB1cmU6IGZhbHNlLFxuICBzdGFuZGFsb25lOiBmYWxzZSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5RGF0ZVBpcGUgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIFBpcGVUcmFuc2Zvcm0ge1xuICAjZGF0ZVN2YyA9IGluamVjdChTa3lEYXRlU2VydmljZSk7XG4gICNkZWZhdWx0Rm9ybWF0ID0gJ3Nob3J0JztcbiAgI2RlZmF1bHRMb2NhbGUgPSAnZW4tVVMnO1xuICAjZm9ybWF0OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICNmb3JtYXR0ZWRWYWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAjbG9jYWxlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICNuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgI3ZhbHVlOiBhbnk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgaW5qZWN0KFNreUFwcExvY2FsZVByb3ZpZGVyKVxuICAgICAgLmdldExvY2FsZUluZm8oKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgobG9jYWxlSW5mbzogU2t5QXBwTG9jYWxlSW5mbykgPT4ge1xuICAgICAgICB0aGlzLiNkZWZhdWx0TG9jYWxlID0gbG9jYWxlSW5mby5sb2NhbGU7XG4gICAgICAgIHRoaXMuI3VwZGF0ZUZvcm1hdHRlZFZhbHVlKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gIH1cblxuICAvKipcbiAgICogVHJhbnNmb3JtcyBhIGRhdGUgdmFsdWUgdXNpbmcgbG9jYWxlIGFuZCBmb3JtYXQgcnVsZXMuXG4gICAqIEBwYXJhbSB2YWx1ZSBTcGVjaWZpZXMgdGhlIGRhdGUgdmFsdWUgdG8gdHJhbnNmb3JtLlxuICAgKiBAcGFyYW0gZm9ybWF0IFNwZWNpZmllcyB0aGUgZm9ybWF0IHRvIGFwcGx5IHRvIHRoZSB0cmFuc2Zvcm0uIFRoZSBmb3JtYXQgc3RyaW5nIGlzXG4gICAqIGNvbnN0cnVjdGVkIGJ5IGEgc2VyaWVzIG9mIHN5bWJvbHMgdGhhdCByZXByZXNlbnQgZGF0ZS10aW1lIHZhbHVlcy4gVGhlIHN5bWJvbHMgYXJlXG4gICAqIGlkZW50aWNhbCB0byBbQW5ndWxhcidzIGBEYXRlUGlwZWBdKGh0dHBzOi8vYW5ndWxhci5pby9hcGkvY29tbW9uL0RhdGVQaXBlI3ByZS1kZWZpbmVkLWZvcm1hdC1vcHRpb25zKSBmb3JtYXQgb3B0aW9ucy5cbiAgICogQHBhcmFtIGxvY2FsZSBTcGVjaWZpZXMgdGhlIGxvY2FsZSBjb2RlIHRvIHVzZSBpbiB0aGUgdHJhbnNmb3JtLlxuICAgKi9cbiAgcHVibGljIHRyYW5zZm9ybSh2YWx1ZTogYW55LCBmb3JtYXQ/OiBzdHJpbmcsIGxvY2FsZT86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgdGhpcy4jdmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLiNmb3JtYXQgPSBmb3JtYXQ7XG4gICAgdGhpcy4jbG9jYWxlID0gbG9jYWxlO1xuXG4gICAgdGhpcy4jdXBkYXRlRm9ybWF0dGVkVmFsdWUoKTtcblxuICAgIHJldHVybiB0aGlzLiNmb3JtYXR0ZWRWYWx1ZSA/PyAnJztcbiAgfVxuXG4gICN1cGRhdGVGb3JtYXR0ZWRWYWx1ZSgpOiB2b2lkIHtcbiAgICBjb25zdCBsb2NhbGUgPSB0aGlzLiNsb2NhbGUgfHwgdGhpcy4jZGVmYXVsdExvY2FsZTtcbiAgICBjb25zdCBmb3JtYXQgPSB0aGlzLiNmb3JtYXQgfHwgdGhpcy4jZGVmYXVsdEZvcm1hdDtcblxuICAgIHRoaXMuI2Zvcm1hdHRlZFZhbHVlID0gdGhpcy4jZGF0ZVN2Yy5mb3JtYXQodGhpcy4jdmFsdWUsIGxvY2FsZSwgZm9ybWF0KTtcbiAgfVxufVxuIl19","import { Injectable } from '@angular/core';\nimport moment from 'moment';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@skyux/i18n\";\n/**\n * @internal\n */\nexport class SkyFuzzyDateService {\n #currentLocale;\n #ngUnsubscribe = new Subject();\n constructor(localeProvider) {\n this.#currentLocale = localeProvider.defaultLocale;\n localeProvider\n .getLocaleInfo()\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((localeInfo) => {\n this.#currentLocale = localeInfo.locale;\n });\n }\n /* istanbul ignore next */\n ngOnDestroy() {\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n }\n /**\n * Returns the browser's current locale string.\n */\n getCurrentLocale() {\n return this.#currentLocale;\n }\n /**\n * Returns the short format of the provided locale.\n * If not provided, the locale will be taken from the browser's default locale.\n */\n getLocaleShortFormat(locale) {\n return moment.localeData(locale || this.#currentLocale).longDateFormat('L');\n }\n /**\n * Formats a fuzzy date by using the provided format and locale strings.\n * If not provided, the locale will be taken from the browser's default locale.\n */\n format(fuzzyDate, format, locale) {\n if (!this.#isFuzzyDateValid(fuzzyDate)) {\n return '';\n }\n if (!format) {\n return '';\n }\n const separator = this.#getDateSeparator(format);\n const dateParts = [];\n const formatTokens = separator\n ? format.split(separator)\n : [format];\n locale = locale || this.#currentLocale;\n const fuzzyDateMoment = this.getMomentFromFuzzyDate(fuzzyDate).locale(locale);\n for (const token of formatTokens) {\n /* istanbul ignore else */\n if (token) {\n switch (token.substr(0, 1).toLowerCase()) {\n case 'y':\n if (fuzzyDate.year) {\n dateParts.push(fuzzyDateMoment.format(token));\n }\n break;\n case 'm':\n if (fuzzyDate.month) {\n dateParts.push(fuzzyDateMoment.format(token));\n }\n break;\n case 'd':\n if (fuzzyDate.day) {\n dateParts.push(fuzzyDateMoment.format(token));\n }\n break;\n }\n }\n }\n return dateParts.join(separator);\n }\n /**\n * If not provided, years will default to current year; months will default to January;\n * days will default to 1st of the month.\n */\n getMomentFromFuzzyDate(fuzzyDate) {\n if (!fuzzyDate) {\n return;\n }\n const year = fuzzyDate.year || this.#getDefaultYear(fuzzyDate);\n const month = fuzzyDate.month && fuzzyDate.month > 0 ? fuzzyDate.month - 1 : 0;\n const day = fuzzyDate.day || 1;\n return moment([year, month, day]);\n }\n /**\n * Gets a string instance of a fuzzy date.\n * @deprecated Deprecated in favor of the `format` function.\n */\n getStringFromFuzzyDate(fuzzyDate, dateFormat) {\n if (!fuzzyDate || !dateFormat) {\n return;\n }\n const separator = this.#getDateSeparator(dateFormat);\n const dateFormatIndexes = this.#getDateFormatIndexes(dateFormat);\n let dateString = '';\n // Get the components of the date in the order expected of the local format.\n const dateComponents = [\n { value: fuzzyDate.year || 0, index: dateFormatIndexes.yearIndex },\n { value: fuzzyDate.month || 0, index: dateFormatIndexes.monthIndex },\n { value: fuzzyDate.day || 0, index: dateFormatIndexes.dayIndex },\n ];\n dateComponents.sort((a, b) => a.index - b.index);\n dateComponents.forEach((component) => {\n if (component.value > 0 && component.index > -1) {\n if (dateString) {\n dateString += separator;\n }\n dateString += component.value.toString();\n }\n });\n return dateString.trim();\n }\n getFuzzyDateFromSelectedDate(selectedDate, dateFormat) {\n if (!selectedDate || !dateFormat) {\n return;\n }\n const fuzzyDate = {};\n const dateFormatIndexes = this.#getDateFormatIndexes(dateFormat);\n if (dateFormatIndexes.yearIndex > -1) {\n fuzzyDate.year = selectedDate.getFullYear();\n }\n if (dateFormatIndexes.dayIndex > -1) {\n fuzzyDate.day = selectedDate.getDate();\n }\n if (dateFormatIndexes.monthIndex > -1) {\n fuzzyDate.month = selectedDate.getMonth() + 1; // getMonth() is 0-indexed.\n }\n return fuzzyDate;\n }\n getFuzzyDateFromString(date, dateFormat) {\n if (!date || !dateFormat) {\n return;\n }\n let day;\n let month;\n let year;\n const dateComponents = this.#getDateComponents(date);\n const indexes = this.#getDateValueIndexes(date, dateFormat);\n // Look at the date string's component count:\n // 3 indicates a full date\n // 2 indicates a month-year or month-day date\n // 1 indicates a year\n // Other indicates a problem\n switch (dateComponents.length) {\n case 3:\n year = dateComponents[indexes.yearIndex];\n month = dateComponents[indexes.monthIndex];\n day = dateComponents[indexes.dayIndex];\n break;\n case 2:\n // First, check for a 4-digit year. If year exists, then we assume the other component\n // is the month. Otherwise, we can assume the input is mm/dd or mm/yy (2-digit year).\n year = this.#get4DigitYearFromDateString(date);\n if (year) {\n month =\n dateComponents[0] === year.toString()\n ? dateComponents[1]\n : dateComponents[0];\n }\n else {\n if (indexes.dayIndex > -1) {\n // mm/dd\n month =\n indexes.monthIndex < indexes.dayIndex\n ? dateComponents[0]\n : dateComponents[1];\n day =\n month === dateComponents[1]\n ? dateComponents[0]\n : dateComponents[1];\n }\n else {\n // mm/yy\n month =\n indexes.monthIndex < indexes.yearIndex\n ? dateComponents[0]\n : dateComponents[1];\n year =\n month === dateComponents[1]\n ? dateComponents[0]\n : dateComponents[1];\n }\n }\n break;\n case 1:\n year = date;\n break;\n default:\n return;\n }\n if (month) {\n // Check if month is valid.\n month = this.#getMonthNumber(month);\n if (month === undefined) {\n return;\n }\n // Check if day is valid.\n if (day) {\n day = parseInt(day, 10);\n const fuzzyMoment = this.getMomentFromFuzzyDate({\n month: month,\n day: day,\n year: year,\n });\n if (isNaN(day) || !fuzzyMoment.isValid()) {\n return;\n }\n }\n }\n if (year) {\n year =\n year.toString().length === 2\n ? moment.parseTwoDigitYear(year)\n : parseInt(year.toString(), 10);\n if (isNaN(year) || year.toString().length !== 4) {\n return;\n }\n }\n return {\n month: month,\n day: day,\n year: year,\n };\n }\n getFuzzyDateRange(startFuzzyDate, endFuzzyDate) {\n const start = this.getMomentFromFuzzyDate(startFuzzyDate);\n const end = this.getMomentFromFuzzyDate(endFuzzyDate);\n let days;\n let months;\n let years;\n let valid = false;\n if (startFuzzyDate &&\n startFuzzyDate.year &&\n endFuzzyDate &&\n endFuzzyDate.year) {\n years = end.diff(start, 'years');\n months = end.diff(start, 'months');\n days = end.diff(start, 'days');\n valid = end.diff(start) >= 0;\n }\n return {\n years: years,\n months: months,\n days: days,\n startDate: start.toDate(),\n endDate: end.toDate(),\n valid: valid,\n };\n }\n getCurrentFuzzyDate() {\n const currentDate = moment();\n return {\n day: currentDate.date(),\n month: currentDate.month() + 1, // month() is 0-indexed.\n year: currentDate.year(),\n };\n }\n #getMostRecentLeapYear() {\n let leapYear = new Date().getFullYear();\n while (!this.#isLeapYear(leapYear)) {\n leapYear -= 1;\n }\n return leapYear;\n }\n /**\n * Returns the first separator found in the provided date format string.\n * Accepted separators: ['/', '.', '-', ' '].\n * @param dateFormat\n */\n #getDateSeparator(dateFormat) {\n let returnValue;\n const separators = ['/', '.', '-', ' '];\n separators.forEach((separator) => {\n if (!returnValue && dateFormat.indexOf(separator) > 0) {\n returnValue = separator;\n }\n });\n return returnValue;\n }\n #get4DigitYearFromDateString(date) {\n let year;\n const separator = this.#getDateSeparator(date);\n if (separator) {\n // Find the number value in the string that is 4 digits long.\n date.split(separator).forEach((dateComponent) => {\n if (!year && parseInt(dateComponent, 10).toString().length === 4) {\n year = dateComponent;\n }\n });\n }\n if (year && !isNaN(Number(year))) {\n return parseInt(year, 10);\n }\n return undefined;\n }\n #isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n #getMonthNumber(month) {\n let returnValue;\n const monthAsNumber = parseInt(month, 10);\n // If the month component is a string (\"January\"), we check to see if it is a valid month\n if (isNaN(monthAsNumber)) {\n if (!moment(month, 'MMMM').isValid()) {\n return;\n }\n returnValue = parseInt(moment().month(month).format('M'), 10);\n }\n else {\n returnValue = monthAsNumber;\n }\n // Ensure that the month is between 1 and 12\n if (!(1 <= returnValue && returnValue <= 12)) {\n return;\n }\n return returnValue;\n }\n #getDefaultYear(fuzzyDate) {\n // Check if we need to return a leap year or the current year.\n if (fuzzyDate.month === 2 && fuzzyDate.day === 29) {\n return this.#getMostRecentLeapYear();\n }\n else {\n return new Date().getFullYear();\n }\n }\n #getDateComponents(date) {\n const separator = this.#getDateSeparator(date);\n if (separator) {\n return date.split(separator);\n }\n else {\n return [date];\n }\n }\n // Returns the order of year, month, and day from the provided date format.\n #getDateFormatIndexes(dateFormat) {\n dateFormat = dateFormat.toLowerCase();\n return {\n yearIndex: dateFormat.indexOf('y'),\n monthIndex: dateFormat.indexOf('m'),\n dayIndex: dateFormat.indexOf('d'),\n };\n }\n // Returns the index of each of the date components in the provided string (month, day, year).\n #getDateValueIndexes(date, dateFormat) {\n const dateFormatIndexes = this.#getDateFormatIndexes(dateFormat);\n const dateComponentIndexes = [];\n if (dateFormatIndexes.yearIndex > -1) {\n dateComponentIndexes.push(dateFormatIndexes.yearIndex);\n }\n if (dateFormatIndexes.monthIndex > -1) {\n dateComponentIndexes.push(dateFormatIndexes.monthIndex);\n }\n if (dateFormatIndexes.dayIndex > -1) {\n dateComponentIndexes.push(dateFormatIndexes.dayIndex);\n }\n dateComponentIndexes.sort(function (a, b) {\n return a - b;\n });\n return {\n yearIndex: dateComponentIndexes.indexOf(dateFormatIndexes.yearIndex),\n monthIndex: dateComponentIndexes.indexOf(dateFormatIndexes.monthIndex),\n dayIndex: dateComponentIndexes.indexOf(dateFormatIndexes.dayIndex),\n };\n }\n /**\n * Validates the provided SkyFuzzyDate object. Valid fuzzy dates are as follows:\n * month, day, year\n * month, year\n * month, day\n * year only\n */\n #isFuzzyDateValid(fuzzyDate) {\n if (!fuzzyDate) {\n return false;\n }\n // If none of the dates part are specified, return false.\n if (!fuzzyDate.day && !fuzzyDate.month && !fuzzyDate.year) {\n return false;\n }\n // If only month is specified, return false.\n if (!fuzzyDate.day && fuzzyDate.month && !fuzzyDate.year) {\n return false;\n }\n // If only day is specified, return false.\n if (fuzzyDate.day && !fuzzyDate.month && !fuzzyDate.year) {\n return false;\n }\n return true;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyFuzzyDateService, deps: [{ token: i1.SkyAppLocaleProvider }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyFuzzyDateService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyFuzzyDateService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: () => [{ type: i1.SkyAppLocaleProvider }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnV6enktZGF0ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2RhdGV0aW1lL3NyYy9saWIvbW9kdWxlcy9kYXRlcGlja2VyL2Z1enp5L2Z1enp5LWRhdGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBR3RELE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBeUIzQzs7R0FFRztBQUlILE1BQU0sT0FBTyxtQkFBbUI7SUFDOUIsY0FBYyxDQUFTO0lBRXZCLGNBQWMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBRXJDLFlBQVksY0FBb0M7UUFDOUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUMsYUFBYSxDQUFDO1FBQ25ELGNBQWM7YUFDWCxhQUFhLEVBQUU7YUFDZixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQzthQUNwQyxTQUFTLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRTtZQUN4QixJQUFJLENBQUMsY0FBYyxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUM7UUFDMUMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsMEJBQTBCO0lBQ25CLFdBQVc7UUFDaEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFRDs7T0FFRztJQUNJLGdCQUFnQjtRQUNyQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDN0IsQ0FBQztJQUVEOzs7T0FHRztJQUNJLG9C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QUMsVUFBVSxDQUFDO1lBQ3RFLFFBQVEsRUFBRSxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDO1NBQ25FLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsaUJBQWlCLENBQUMsU0FBdUI7UUFDdkMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2YsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBRUQseURBQXlEO1FBQ3pELElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUMxRCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFFRCw0Q0FBNEM7UUFDNUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksU0FBUyxDQUFDLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN6RCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFFRCwwQ0FBMEM7UUFDMUMsSUFBSSxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN6RCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7OEdBdGRVLG1CQUFtQjtrSEFBbkIsbUJBQW1CLGNBRmxCLE1BQU07OzJGQUVQLG1CQUFtQjtrQkFIL0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNreUFwcExvY2FsZVByb3ZpZGVyIH0gZnJvbSAnQHNreXV4L2kxOG4nO1xuXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNreUZ1enp5RGF0ZSB9IGZyb20gJy4vZnV6enktZGF0ZSc7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmludGVyZmFjZSBTa3lEYXRlSW5kZXhlcyB7XG4gIHllYXJJbmRleDogbnVtYmVyO1xuICBtb250aEluZGV4OiBudW1iZXI7XG4gIGRheUluZGV4OiBudW1iZXI7XG59XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmludGVyZmFjZSBTa3lGdXp6eURhdGVSYW5nZSB7XG4gIHllYXJzOiBzdHJpbmc7XG4gIG1vbnRoczogc3RyaW5nO1xuICBkYXlzOiBzdHJpbmc7XG4gIHN0YXJ0RGF0ZTogRGF0ZTtcbiAgZW5kRGF0ZTogRGF0ZTtcbiAgdmFsaWQ6IGJvb2xlYW47XG59XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lGdXp6eURhdGVTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgI2N1cnJlbnRMb2NhbGU6IHN0cmluZztcblxuICAjbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IobG9jYWxlUHJvdmlkZXI6IFNreUFwcExvY2FsZVByb3ZpZGVyKSB7XG4gICAgdGhpcy4jY3VycmVudExvY2FsZSA9IGxvY2FsZVByb3ZpZGVyLmRlZmF1bHRMb2NhbGU7XG4gICAgbG9jYWxlUHJvdmlkZXJcbiAgICAgIC5nZXRMb2NhbGVJbmZvKClcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKGxvY2FsZUluZm8pID0+IHtcbiAgICAgICAgdGhpcy4jY3VycmVudExvY2FsZSA9IGxvY2FsZUluZm8ubG9jYWxlO1xuICAgICAgfSk7XG4gIH1cblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGJyb3dzZXIncyBjdXJyZW50IGxvY2FsZSBzdHJpbmcuXG4gICAqL1xuICBwdWJsaWMgZ2V0Q3VycmVudExvY2FsZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLiNjdXJyZW50TG9jYWxlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHNob3J0IGZvcm1hdCBvZiB0aGUgcHJvdmlkZWQgbG9jYWxlLlxuICAgKiBJZiBub3QgcHJvdmlkZWQsIHRoZSBsb2NhbGUgd2lsbCBiZSB0YWtlbiBmcm9tIHRoZSBicm93c2VyJ3MgZGVmYXVsdCBsb2NhbGUuXG4gICAqL1xuICBwdWJsaWMgZ2V0TG9jYWxlU2hvcnRGb3JtYXQobG9jYWxlPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbW9tZW50LmxvY2FsZURhdGEobG9jYWxlIHx8IHRoaXMuI2N1cnJlbnRMb2NhbGUpLmxvbmdEYXRlRm9ybWF0KCdMJyk7XG4gIH1cblxuICAvKipcbiAgICogRm9ybWF0cyBhIGZ1enp5IGRhdGUgYnkgdXNpbmcgdGhlIHByb3ZpZGVkIGZvcm1hdCBhbmQgbG9jYWxlIHN0cmluZ3MuXG4gICAqIElmIG5vdCBwcm92aWRlZCwgdGhlIGxvY2FsZSB3aWxsIGJlIHRha2VuIGZyb20gdGhlIGJyb3dzZXIncyBkZWZhdWx0IGxvY2FsZS5cbiAgICovXG4gIHB1YmxpYyBmb3JtYXQoXG4gICAgZnV6enlEYXRlOiBTa3lGdXp6eURhdGUsXG4gICAgZm9ybWF0Pzogc3RyaW5nLFxuICAgIGxvY2FsZT86IHN0cmluZyxcbiAgKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuI2lzRnV6enlEYXRlVmFsaWQoZnV6enlEYXRlKSkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGlmICghZm9ybWF0KSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgY29uc3Qgc2VwYXJhdG9yID0gdGhpcy4jZ2V0RGF0ZVNlcGFyYXRvcihmb3JtYXQpO1xuICAgIGNvbnN0IGRhdGVQYXJ0czogc3RyaW5nW10gPSBbXTtcbiAgICBjb25zdCBmb3JtYXRUb2tlbnM6IHN0cmluZ1tdID0gc2VwYXJhdG9yXG4gICAgICA/IGZvcm1hdC5zcGxpdChzZXBhcmF0b3IpXG4gICAgICA6IFtmb3JtYXRdO1xuICAgIGxvY2FsZSA9IGxvY2FsZSB8fCB0aGlzLiNjdXJyZW50TG9jYWxlO1xuICAgIGNvbnN0IGZ1enp5RGF0ZU1vbWVudCA9XG4gICAgICB0aGlzLmdldE1vbWVudEZyb21GdXp6eURhdGUoZnV6enlEYXRlKS5sb2NhbGUobG9jYWxlKTtcblxuICAgIGZvciAoY29uc3QgdG9rZW4gb2YgZm9ybWF0VG9rZW5zKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKHRva2VuKSB7XG4gICAgICAgIHN3aXRjaCAodG9rZW4uc3Vic3RyKDAsIDEpLnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgICAgICBjYXNlICd5JzpcbiAgICAgICAgICAgIGlmIChmdXp6eURhdGUueWVhcikge1xuICAgICAgICAgICAgICBkYXRlUGFydHMucHVzaChmdXp6eURhdGVNb21lbnQuZm9ybWF0KHRva2VuKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdtJzpcbiAgICAgICAgICAgIGlmIChmdXp6eURhdGUubW9udGgpIHtcbiAgICAgICAgICAgICAgZGF0ZVBhcnRzLnB1c2goZnV6enlEYXRlTW9tZW50LmZvcm1hdCh0b2tlbikpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICBpZiAoZnV6enlEYXRlLmRheSkge1xuICAgICAgICAgICAgICBkYXRlUGFydHMucHVzaChmdXp6eURhdGVNb21lbnQuZm9ybWF0KHRva2VuKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBkYXRlUGFydHMuam9pbihzZXBhcmF0b3IpO1xuICB9XG5cbiAgLyoqXG4gICAqIElmIG5vdCBwcm92aWRlZCwgeWVhcnMgd2lsbCBkZWZhdWx0IHRvIGN1cnJlbnQgeWVhcjsgbW9udGhzIHdpbGwgZGVmYXVsdCB0byBKYW51YXJ5O1xuICAgKiBkYXlzIHdpbGwgZGVmYXVsdCB0byAxc3Qgb2YgdGhlIG1vbnRoLlxuICAgKi9cbiAgcHVibGljIGdldE1vbWVudEZyb21GdXp6eURhdGUoZnV6enlEYXRlPzogU2t5RnV6enlEYXRlKTogYW55IHtcbiAgICBpZiAoIWZ1enp5RGF0ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHllYXIgPSBmdXp6eURhdGUueWVhciB8fCB0aGlzLiNnZXREZWZhdWx0WWVhcihmdXp6eURhdGUpO1xuICAgIGNvbnN0IG1vbnRoID1cbiAgICAgIGZ1enp5RGF0ZS5tb250aCAmJiBmdXp6eURhdGUubW9udGggPiAwID8gZnV6enlEYXRlLm1vbnRoIC0gMSA6IDA7XG4gICAgY29uc3QgZGF5ID0gZnV6enlEYXRlLmRheSB8fCAxO1xuXG4gICAgcmV0dXJuIG1vbWVudChbeWVhciwgbW9udGgsIGRheV0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgYSBzdHJpbmcgaW5zdGFuY2Ugb2YgYSBmdXp6eSBkYXRlLlxuICAgKiBAZGVwcmVjYXRlZCBEZXByZWNhdGVkIGluIGZhdm9yIG9mIHRoZSBgZm9ybWF0YCBmdW5jdGlvbi5cbiAgICovXG4gIHB1YmxpYyBnZXRTdHJpbmdGcm9tRnV6enlEYXRlKFxuICAgIGZ1enp5RGF0ZT86IFNreUZ1enp5RGF0ZSxcbiAgICBkYXRlRm9ybWF0Pzogc3RyaW5nLFxuICApOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGlmICghZnV6enlEYXRlIHx8ICFkYXRlRm9ybWF0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgc2VwYXJhdG9yID0gdGhpcy4jZ2V0RGF0ZVNlcGFyYXRvcihkYXRlRm9ybWF0KTtcbiAgICBjb25zdCBkYXRlRm9ybWF0SW5kZXhlcyA9IHRoaXMuI2dldERhdGVGb3JtYXRJbmRleGVzKGRhdGVGb3JtYXQpO1xuICAgIGxldCBkYXRlU3RyaW5nID0gJyc7XG5cbiAgICAvLyBHZXQgdGhlIGNvbXBvbmVudHMgb2YgdGhlIGRhdGUgaW4gdGhlIG9yZGVyIGV4cGVjdGVkIG9mIHRoZSBsb2NhbCBmb3JtYXQuXG4gICAgY29uc3QgZGF0ZUNvbXBvbmVudHMgPSBbXG4gICAgICB7IHZhbHVlOiBmdXp6eURhdGUueWVhciB8fCAwLCBpbmRleDogZGF0ZUZvcm1hdEluZGV4ZXMueWVhckluZGV4IH0sXG4gICAgICB7IHZhbHVlOiBmdXp6eURhdGUubW9udGggfHwgMCwgaW5kZXg6IGRhdGVGb3JtYXRJbmRleGVzLm1vbnRoSW5kZXggfSxcbiAgICAgIHsgdmFsdWU6IGZ1enp5RGF0ZS5kYXkgfHwgMCwgaW5kZXg6IGRhdGVGb3JtYXRJbmRleGVzLmRheUluZGV4IH0sXG4gICAgXTtcbiAgICBkYXRlQ29tcG9uZW50cy5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4gYS5pbmRleCAtIGIuaW5kZXgpO1xuXG4gICAgZGF0ZUNvbXBvbmVudHMuZm9yRWFjaCgoY29tcG9uZW50KSA9PiB7XG4gICAgICBpZiAoY29tcG9uZW50LnZhbHVlID4gMCAmJiBjb21wb25lbnQuaW5kZXggPiAtMSkge1xuICAgICAgICBpZiAoZGF0ZVN0cmluZykge1xuICAgICAgICAgIGRhdGVTdHJpbmcgKz0gc2VwYXJhdG9yO1xuICAgICAgICB9XG4gICAgICAgIGRhdGVTdHJpbmcgKz0gY29tcG9uZW50LnZhbHVlLnRvU3RyaW5nKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZGF0ZVN0cmluZy50cmltKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0RnV6enlEYXRlRnJvbVNlbGVjdGVkRGF0ZShcbiAgICBzZWxlY3RlZERhdGU/OiBEYXRlLFxuICAgIGRhdGVGb3JtYXQ/OiBzdHJpbmcsXG4gICk6IFNreUZ1enp5RGF0ZSB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCFzZWxlY3RlZERhdGUgfHwgIWRhdGVGb3JtYXQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBmdXp6eURhdGU6IFNreUZ1enp5RGF0ZSA9IHt9O1xuICAgIGNvbnN0IGRhdGVGb3JtYXRJbmRleGVzID0gdGhpcy4jZ2V0RGF0ZUZvcm1hdEluZGV4ZXMoZGF0ZUZvcm1hdCk7XG5cbiAgICBpZiAoZGF0ZUZvcm1hdEluZGV4ZXMueWVhckluZGV4ID4gLTEpIHtcbiAgICAgIGZ1enp5RGF0ZS55ZWFyID0gc2VsZWN0ZWREYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgfVxuXG4gICAgaWYgKGRhdGVGb3JtYXRJbmRleGVzLmRheUluZGV4ID4gLTEpIHtcbiAgICAgIGZ1enp5RGF0ZS5kYXkgPSBzZWxlY3RlZERhdGUuZ2V0RGF0ZSgpO1xuICAgIH1cblxuICAgIGlmIChkYXRlRm9ybWF0SW5kZXhlcy5tb250aEluZGV4ID4gLTEpIHtcbiAgICAgIGZ1enp5RGF0ZS5tb250aCA9IHNlbGVjdGVkRGF0ZS5nZXRNb250aCgpICsgMTsgLy8gZ2V0TW9udGgoKSBpcyAwLWluZGV4ZWQuXG4gICAgfVxuXG4gICAgcmV0dXJuIGZ1enp5RGF0ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRGdXp6eURhdGVGcm9tU3RyaW5nKFxuICAgIGRhdGU6IHN0cmluZyxcbiAgICBkYXRlRm9ybWF0Pzogc3RyaW5nLFxuICApOiBTa3lGdXp6eURhdGUgfCB1bmRlZmluZWQge1xuICAgIGlmICghZGF0ZSB8fCAhZGF0ZUZvcm1hdCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBkYXk6IGFueTtcbiAgICBsZXQgbW9udGg6IGFueTtcbiAgICBsZXQgeWVhcjogYW55O1xuXG4gICAgY29uc3QgZGF0ZUNvbXBvbmVudHMgPSB0aGlzLiNnZXREYXRlQ29tcG9uZW50cyhkYXRlKTtcbiAgICBjb25zdCBpbmRleGVzID0gdGhpcy4jZ2V0RGF0ZVZhbHVlSW5kZXhlcyhkYXRlLCBkYXRlRm9ybWF0KTtcblxuICAgIC8vIExvb2sgYXQgdGhlIGRhdGUgc3RyaW5nJ3MgY29tcG9uZW50IGNvdW50OlxuICAgIC8vIDMgaW5kaWNhdGVzIGEgZnVsbCBkYXRlXG4gICAgLy8gMiBpbmRpY2F0ZXMgYSBtb250aC15ZWFyIG9yIG1vbnRoLWRheSBkYXRlXG4gICAgLy8gMSBpbmRpY2F0ZXMgYSB5ZWFyXG4gICAgLy8gT3RoZXIgaW5kaWNhdGVzIGEgcHJvYmxlbVxuICAgIHN3aXRjaCAoZGF0ZUNvbXBvbmVudHMubGVuZ3RoKSB7XG4gICAgICBjYXNlIDM6XG4gICAgICAgIHllYXIgPSBkYXRlQ29tcG9uZW50c1tpbmRleGVzLnllYXJJbmRleF07XG4gICAgICAgIG1vbnRoID0gZGF0ZUNvbXBvbmVudHNbaW5kZXhlcy5tb250aEluZGV4XTtcbiAgICAgICAgZGF5ID0gZGF0ZUNvbXBvbmVudHNbaW5kZXhlcy5kYXlJbmRleF07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyOlxuICAgICAgICAvLyBGaXJzdCwgY2hlY2sgZm9yIGEgNC1kaWdpdCB5ZWFyLiBJZiB5ZWFyIGV4aXN0cywgdGhlbiB3ZSBhc3N1bWUgdGhlIG90aGVyIGNvbXBvbmVudFxuICAgICAgICAvLyBpcyB0aGUgbW9udGguIE90aGVyd2lzZSwgd2UgY2FuIGFzc3VtZSB0aGUgaW5wdXQgaXMgbW0vZGQgb3IgbW0veXkgKDItZGlnaXQgeWVhcikuXG4gICAgICAgIHllYXIgPSB0aGlzLiNnZXQ0RGlnaXRZZWFyRnJvbURhdGVTdHJpbmcoZGF0ZSk7XG4gICAgICAgIGlmICh5ZWFyKSB7XG4gICAgICAgICAgbW9udGggPVxuICAgICAgICAgICAgZGF0ZUNvbXBvbmVudHNbMF0gPT09IHllYXIudG9TdHJpbmcoKVxuICAgICAgICAgICAgICA/IGRhdGVDb21wb25lbnRzWzFdXG4gICAgICAgICAgICAgIDogZGF0ZUNvbXBvbmVudHNbMF07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKGluZGV4ZXMuZGF5SW5kZXggPiAtMSkge1xuICAgICAgICAgICAgLy8gbW0vZGRcbiAgICAgICAgICAgIG1vbnRoID1cbiAgICAgICAgICAgICAgaW5kZXhlcy5tb250aEluZGV4IDwgaW5kZXhlcy5kYXlJbmRleFxuICAgICAgICAgICAgICAgID8gZGF0ZUNvbXBvbmVudHNbMF1cbiAgICAgICAgICAgICAgICA6IGRhdGVDb21wb25lbnRzWzFdO1xuICAgICAgICAgICAgZGF5ID1cbiAgICAgICAgICAgICAgbW9udGggPT09IGRhdGVDb21wb25lbnRzWzFdXG4gICAgICAgICAgICAgICAgPyBkYXRlQ29tcG9uZW50c1swXVxuICAgICAgICAgICAgICAgIDogZGF0ZUNvbXBvbmVudHNbMV07XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIG1tL3l5XG4gICAgICAgICAgICBtb250aCA9XG4gICAgICAgICAgICAgIGluZGV4ZXMubW9udGhJbmRleCA8IGluZGV4ZXMueWVhckluZGV4XG4gICAgICAgICAgICAgICAgPyBkYXRlQ29tcG9uZW50c1swXVxuICAgICAgICAgICAgICAgIDogZGF0ZUNvbXBvbmVudHNbMV07XG4gICAgICAgICAgICB5ZWFyID1cbiAgICAgICAgICAgICAgbW9udGggPT09IGRhdGVDb21wb25lbnRzWzFdXG4gICAgICAgICAgICAgICAgPyBkYXRlQ29tcG9uZW50c1swXVxuICAgICAgICAgICAgICAgIDogZGF0ZUNvbXBvbmVudHNbMV07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxOlxuICAgICAgICB5ZWFyID0gZGF0ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKG1vbnRoKSB7XG4gICAgICAvLyBDaGVjayBpZiBtb250aCBpcyB2YWxpZC5cbiAgICAgIG1vbnRoID0gdGhpcy4jZ2V0TW9udGhOdW1iZXIobW9udGgpO1xuICAgICAgaWYgKG1vbnRoID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBDaGVjayBpZiBkYXkgaXMgdmFsaWQuXG4gICAgICBpZiAoZGF5KSB7XG4gICAgICAgIGRheSA9IHBhcnNlSW50KGRheSwgMTApO1xuICAgICAgICBjb25zdCBmdXp6eU1vbWVudCA9IHRoaXMuZ2V0TW9tZW50RnJvbUZ1enp5RGF0ZSh7XG4gICAgICAgICAgbW9udGg6IG1vbnRoLFxuICAgICAgICAgIGRheTogZGF5LFxuICAgICAgICAgIHllYXI6IHllYXIsXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoaXNOYU4oZGF5KSB8fCAhZnV6enlNb21lbnQuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHllYXIpIHtcbiAgICAgIHllYXIgPVxuICAgICAgICB5ZWFyLnRvU3RyaW5nKCkubGVuZ3RoID09PSAyXG4gICAgICAgICAgPyBtb21lbnQucGFyc2VUd29EaWdpdFllYXIoeWVhcilcbiAgICAgICAgICA6IHBhcnNlSW50KHllYXIudG9TdHJpbmcoKSwgMTApO1xuICAgICAgaWYgKGlzTmFOKHllYXIpIHx8IHllYXIudG9TdHJpbmcoKS5sZW5ndGggIT09IDQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBtb250aDogbW9udGgsXG4gICAgICBkYXk6IGRheSxcbiAgICAgIHllYXI6IHllYXIsXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRGdXp6eURhdGVSYW5nZShcbiAgICBzdGFydEZ1enp5RGF0ZTogU2t5RnV6enlEYXRlLFxuICAgIGVuZEZ1enp5RGF0ZTogU2t5RnV6enlEYXRlLFxuICApOiBTa3lGdXp6eURhdGVSYW5nZSB7XG4gICAgY29uc3Qgc3RhcnQgPSB0aGlzLmdldE1vbWVudEZyb21GdXp6eURhdGUoc3RhcnRGdXp6eURhdGUpO1xuICAgIGNvbnN0IGVuZCA9IHRoaXMuZ2V0TW9tZW50RnJvbUZ1enp5RGF0ZShlbmRGdXp6eURhdGUpO1xuICAgIGxldCBkYXlzO1xuICAgIGxldCBtb250aHM7XG4gICAgbGV0IHllYXJzO1xuICAgIGxldCB2YWxpZCA9IGZhbHNlO1xuXG4gICAgaWYgKFxuICAgICAgc3RhcnRGdXp6eURhdGUgJiZcbiAgICAgIHN0YXJ0RnV6enlEYXRlLnllYXIgJiZcbiAgICAgIGVuZEZ1enp5RGF0ZSAmJlxuICAgICAgZW5kRnV6enlEYXRlLnllYXJcbiAgICApIHtcbiAgICAgIHllYXJzID0gZW5kLmRpZmYoc3RhcnQsICd5ZWFycycpO1xuICAgICAgbW9udGhzID0gZW5kLmRpZmYoc3RhcnQsICdtb250aHMnKTtcbiAgICAgIGRheXMgPSBlbmQuZGlmZihzdGFydCwgJ2RheXMnKTtcbiAgICAgIHZhbGlkID0gZW5kLmRpZmYoc3RhcnQpID49IDA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHllYXJzOiB5ZWFycyxcbiAgICAgIG1vbnRoczogbW9udGhzLFxuICAgICAgZGF5czogZGF5cyxcbiAgICAgIHN0YXJ0RGF0ZTogc3RhcnQudG9EYXRlKCksXG4gICAgICBlbmREYXRlOiBlbmQudG9EYXRlKCksXG4gICAgICB2YWxpZDogdmFsaWQsXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDdXJyZW50RnV6enlEYXRlKCk6IFNreUZ1enp5RGF0ZSB7XG4gICAgY29uc3QgY3VycmVudERhdGUgPSBtb21lbnQoKTtcblxuICAgIHJldHVybiB7XG4gICAgICBkYXk6IGN1cnJlbnREYXRlLmRhdGUoKSxcbiAgICAgIG1vbnRoOiBjdXJyZW50RGF0ZS5tb250aCgpICsgMSwgLy8gbW9udGgoKSBpcyAwLWluZGV4ZWQuXG4gICAgICB5ZWFyOiBjdXJyZW50RGF0ZS55ZWFyKCksXG4gICAgfTtcbiAgfVxuXG4gICNnZXRNb3N0UmVjZW50TGVhcFllYXIoKTogbnVtYmVyIHtcbiAgICBsZXQgbGVhcFllYXIgPSBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCk7XG5cbiAgICB3aGlsZSAoIXRoaXMuI2lzTGVhcFllYXIobGVhcFllYXIpKSB7XG4gICAgICBsZWFwWWVhciAtPSAxO1xuICAgIH1cblxuICAgIHJldHVybiBsZWFwWWVhcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBmaXJzdCBzZXBhcmF0b3IgZm91bmQgaW4gdGhlIHByb3ZpZGVkIGRhdGUgZm9ybWF0IHN0cmluZy5cbiAgICogQWNjZXB0ZWQgc2VwYXJhdG9yczogWycvJywgJy4nLCAnLScsICcgJ10uXG4gICAqIEBwYXJhbSBkYXRlRm9ybWF0XG4gICAqL1xuICAjZ2V0RGF0ZVNlcGFyYXRvcihkYXRlRm9ybWF0OiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGxldCByZXR1cm5WYWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIGNvbnN0IHNlcGFyYXRvcnMgPSBbJy8nLCAnLicsICctJywgJyAnXTtcblxuICAgIHNlcGFyYXRvcnMuZm9yRWFjaCgoc2VwYXJhdG9yKSA9PiB7XG4gICAgICBpZiAoIXJldHVyblZhbHVlICYmIGRhdGVGb3JtYXQuaW5kZXhPZihzZXBhcmF0b3IpID4gMCkge1xuICAgICAgICByZXR1cm5WYWx1ZSA9IHNlcGFyYXRvcjtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiByZXR1cm5WYWx1ZTtcbiAgfVxuXG4gICNnZXQ0RGlnaXRZZWFyRnJvbURhdGVTdHJpbmcoZGF0ZTogc3RyaW5nKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgICBsZXQgeWVhcjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIGNvbnN0IHNlcGFyYXRvciA9IHRoaXMuI2dldERhdGVTZXBhcmF0b3IoZGF0ZSk7XG5cbiAgICBpZiAoc2VwYXJhdG9yKSB7XG4gICAgICAvLyBGaW5kIHRoZSBudW1iZXIgdmFsdWUgaW4gdGhlIHN0cmluZyB0aGF0IGlzIDQgZGlnaXRzIGxvbmcuXG4gICAgICBkYXRlLnNwbGl0KHNlcGFyYXRvcikuZm9yRWFjaCgoZGF0ZUNvbXBvbmVudCkgPT4ge1xuICAgICAgICBpZiAoIXllYXIgJiYgcGFyc2VJbnQoZGF0ZUNvbXBvbmVudCwgMTApLnRvU3RyaW5nKCkubGVuZ3RoID09PSA0KSB7XG4gICAgICAgICAgeWVhciA9IGRhdGVDb21wb25lbnQ7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICh5ZWFyICYmICFpc05hTihOdW1iZXIoeWVhcikpKSB7XG4gICAgICByZXR1cm4gcGFyc2VJbnQoeWVhciwgMTApO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgI2lzTGVhcFllYXIoeWVhcjogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICh5ZWFyICUgNCA9PT0gMCAmJiB5ZWFyICUgMTAwICE9PSAwKSB8fCB5ZWFyICUgNDAwID09PSAwO1xuICB9XG5cbiAgI2dldE1vbnRoTnVtYmVyKG1vbnRoOiBzdHJpbmcpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICAgIGxldCByZXR1cm5WYWx1ZTogbnVtYmVyO1xuICAgIGNvbnN0IG1vbnRoQXNOdW1iZXIgPSBwYXJzZUludChtb250aCwgMTApO1xuXG4gICAgLy8gSWYgdGhlIG1vbnRoIGNvbXBvbmVudCBpcyBhIHN0cmluZyAoXCJKYW51YXJ5XCIpLCB3ZSBjaGVjayB0byBzZWUgaWYgaXQgaXMgYSB2YWxpZCBtb250aFxuICAgIGlmIChpc05hTihtb250aEFzTnVtYmVyKSkge1xuICAgICAgaWYgKCFtb21lbnQobW9udGgsICdNTU1NJykuaXNWYWxpZCgpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHJldHVyblZhbHVlID0gcGFyc2VJbnQobW9tZW50KCkubW9udGgobW9udGgpLmZvcm1hdCgnTScpLCAxMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVyblZhbHVlID0gbW9udGhBc051bWJlcjtcbiAgICB9XG5cbiAgICAvLyBFbnN1cmUgdGhhdCB0aGUgbW9udGggaXMgYmV0d2VlbiAxIGFuZCAxMlxuICAgIGlmICghKDEgPD0gcmV0dXJuVmFsdWUgJiYgcmV0dXJuVmFsdWUgPD0gMTIpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcmV0dXJuIHJldHVyblZhbHVlO1xuICB9XG5cbiAgI2dldERlZmF1bHRZZWFyKGZ1enp5RGF0ZTogU2t5RnV6enlEYXRlKTogbnVtYmVyIHtcbiAgICAvLyBDaGVjayBpZiB3ZSBuZWVkIHRvIHJldHVybiBhIGxlYXAgeWVhciBvciB0aGUgY3VycmVudCB5ZWFyLlxuICAgIGlmIChmdXp6eURhdGUubW9udGggPT09IDIgJiYgZnV6enlEYXRlLmRheSA9PT0gMjkpIHtcbiAgICAgIHJldHVybiB0aGlzLiNnZXRNb3N0UmVjZW50TGVhcFllYXIoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKTtcbiAgICB9XG4gIH1cblxuICAjZ2V0RGF0ZUNvbXBvbmVudHMoZGF0ZTogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IHNlcGFyYXRvciA9IHRoaXMuI2dldERhdGVTZXBhcmF0b3IoZGF0ZSk7XG4gICAgaWYgKHNlcGFyYXRvcikge1xuICAgICAgcmV0dXJuIGRhdGUuc3BsaXQoc2VwYXJhdG9yKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFtkYXRlXTtcbiAgICB9XG4gIH1cblxuICAvLyBSZXR1cm5zIHRoZSBvcmRlciBvZiB5ZWFyLCBtb250aCwgYW5kIGRheSBmcm9tIHRoZSBwcm92aWRlZCBkYXRlIGZvcm1hdC5cbiAgI2dldERhdGVGb3JtYXRJbmRleGVzKGRhdGVGb3JtYXQ6IHN0cmluZyk6IFNreURhdGVJbmRleGVzIHtcbiAgICBkYXRlRm9ybWF0ID0gZGF0ZUZvcm1hdC50b0xvd2VyQ2FzZSgpO1xuICAgIHJldHVybiB7XG4gICAgICB5ZWFySW5kZXg6IGRhdGVGb3JtYXQuaW5kZXhPZigneScpLFxuICAgICAgbW9udGhJbmRleDogZGF0ZUZvcm1hdC5pbmRleE9mKCdtJyksXG4gICAgICBkYXlJbmRleDogZGF0ZUZvcm1hdC5pbmRleE9mKCdkJyksXG4gICAgfTtcbiAgfVxuXG4gIC8vIFJldHVybnMgdGhlIGluZGV4IG9mIGVhY2ggb2YgdGhlIGRhdGUgY29tcG9uZW50cyBpbiB0aGUgcHJvdmlkZWQgc3RyaW5nIChtb250aCwgZGF5LCB5ZWFyKS5cbiAgI2dldERhdGVWYWx1ZUluZGV4ZXMoZGF0ZTogc3RyaW5nLCBkYXRlRm9ybWF0OiBzdHJpbmcpOiBTa3lEYXRlSW5kZXhlcyB7XG4gICAgY29uc3QgZGF0ZUZvcm1hdEluZGV4ZXMgPSB0aGlzLiNnZXREYXRlRm9ybWF0SW5kZXhlcyhkYXRlRm9ybWF0KTtcbiAgICBjb25zdCBkYXRlQ29tcG9uZW50SW5kZXhlcyA9IFtdO1xuICAgIGlmIChkYXRlRm9ybWF0SW5kZXhlcy55ZWFySW5kZXggPiAtMSkge1xuICAgICAgZGF0ZUNvbXBvbmVudEluZGV4ZXMucHVzaChkYXRlRm9ybWF0SW5kZXhlcy55ZWFySW5kZXgpO1xuICAgIH1cblxuICAgIGlmIChkYXRlRm9ybWF0SW5kZXhlcy5tb250aEluZGV4ID4gLTEpIHtcbiAgICAgIGRhdGVDb21wb25lbnRJbmRleGVzLnB1c2goZGF0ZUZvcm1hdEluZGV4ZXMubW9udGhJbmRleCk7XG4gICAgfVxuXG4gICAgaWYgKGRhdGVGb3JtYXRJbmRleGVzLmRheUluZGV4ID4gLTEpIHtcbiAgICAgIGRhdGVDb21wb25lbnRJbmRleGVzLnB1c2goZGF0ZUZvcm1hdEluZGV4ZXMuZGF5SW5kZXgpO1xuICAgIH1cblxuICAgIGRhdGVDb21wb25lbnRJbmRleGVzLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgIHJldHVybiBhIC0gYjtcbiAgICB9KTtcblxuICAgIHJldHVybiB7XG4gICAgICB5ZWFySW5kZXg6IGRhdGVDb21wb25lbnRJbmRleGVzLmluZGV4T2YoZGF0ZUZvcm1hdEluZGV4ZXMueWVhckluZGV4KSxcbiAgICAgIG1vbnRoSW5kZXg6IGRhdGVDb21wb25lbnRJbmRleGVzLmluZGV4T2YoZGF0ZUZvcm1hdEluZGV4ZXMubW9udGhJbmRleCksXG4gICAgICBkYXlJbmRleDogZGF0ZUNvbXBvbmVudEluZGV4ZXMuaW5kZXhPZihkYXRlRm9ybWF0SW5kZXhlcy5kYXlJbmRleCksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhlIHByb3ZpZGVkIFNreUZ1enp5RGF0ZSBvYmplY3QuIFZhbGlkIGZ1enp5IGRhdGVzIGFyZSBhcyBmb2xsb3dzOlxuICAgKiBtb250aCwgZGF5LCB5ZWFyXG4gICAqIG1vbnRoLCB5ZWFyXG4gICAqIG1vbnRoLCBkYXlcbiAgICogeWVhciBvbmx5XG4gICAqL1xuICAjaXNGdXp6eURhdGVWYWxpZChmdXp6eURhdGU6IFNreUZ1enp5RGF0ZSk6IGJvb2xlYW4ge1xuICAgIGlmICghZnV6enlEYXRlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gSWYgbm9uZSBvZiB0aGUgZGF0ZXMgcGFydCBhcmUgc3BlY2lmaWVkLCByZXR1cm4gZmFsc2UuXG4gICAgaWYgKCFmdXp6eURhdGUuZGF5ICYmICFmdXp6eURhdGUubW9udGggJiYgIWZ1enp5RGF0ZS55ZWFyKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gSWYgb25seSBtb250aCBpcyBzcGVjaWZpZWQsIHJldHVybiBmYWxzZS5cbiAgICBpZiAoIWZ1enp5RGF0ZS5kYXkgJiYgZnV6enlEYXRlLm1vbnRoICYmICFmdXp6eURhdGUueWVhcikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIElmIG9ubHkgZGF5IGlzIHNwZWNpZmllZCwgcmV0dXJuIGZhbHNlLlxuICAgIGlmIChmdXp6eURhdGUuZGF5ICYmICFmdXp6eURhdGUubW9udGggJiYgIWZ1enp5RGF0ZS55ZWFyKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cbiJdfQ==","import { Pipe } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"../datepicker/fuzzy/fuzzy-date.service\";\n/**\n * Formats date values using two or more date tokens that represent the day, month,\n * and year. The tokens are described in the [moment.js values](https://momentjs.com/docs/#/displaying/).\n * @example\n * ```markup\n * {{ myFuzzyDate | skyFuzzyDate:'MMM Y' }}\n * {{ myFuzzyDate | skyFuzzyDate:'MMM Y':'en-CA' }}\n * ```\n */\nexport class SkyFuzzyDatePipe {\n #fuzzyDateService;\n constructor(fuzzyDateService) {\n this.#fuzzyDateService = fuzzyDateService;\n }\n /**\n * Transforms fuzzy date values using two or more date tokens that represent the day, month,\n * and year.\n * @param value Specifies the date value to transform.\n * @param format Specifies the format to apply to the transform. You construct the format\n * string with a two or more tokens that specify the components of date-time value. The\n * tokens are described in the [moment.js values](https://momentjs.com/docs/#/displaying/).\n * If you don't provide a format, `SkyFuzzyDatePipe` attempts to format fuzzy dates based\n * on the browser's default locale.\n * @param locale Specifies the locale code to use in the transform.\n */\n transform(value, format, locale) {\n if (!value) {\n return '';\n }\n const fuzzyDateFormat = format || this.#fuzzyDateService.getLocaleShortFormat(locale);\n const fuzzyDateLocale = locale || this.#fuzzyDateService.getCurrentLocale();\n return this.#fuzzyDateService.format(value, fuzzyDateFormat, fuzzyDateLocale);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyFuzzyDatePipe, deps: [{ token: i1.SkyFuzzyDateService }], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyFuzzyDatePipe, isStandalone: false, name: \"skyFuzzyDate\", pure: false }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyFuzzyDatePipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'skyFuzzyDate',\n pure: false,\n standalone: false,\n }]\n }], ctorParameters: () => [{ type: i1.SkyFuzzyDateService }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnV6enktZGF0ZS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2RhdGV0aW1lL3NyYy9saWIvbW9kdWxlcy9kYXRlLXBpcGUvZnV6enktZGF0ZS5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDOzs7QUFLcEQ7Ozs7Ozs7O0dBUUc7QUFNSCxNQUFNLE9BQU8sZ0JBQWdCO0lBQzNCLGlCQUFpQixDQUFzQjtJQUV2QyxZQUFZLGdCQUFxQztRQUMvQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsZ0JBQWdCLENBQUM7SUFDNUMsQ0FBQztJQUVEOzs7Ozs7Ozs7O09BVUc7SUFDSSxTQUFTLENBQ2QsS0FBbUIsRUFDbkIsTUFBZSxFQUNmLE1BQWU7UUFFZixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDWCxPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFDRCxNQUFNLGVBQWUsR0FDbkIsTUFBTSxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNoRSxNQUFNLGVBQWUsR0FBRyxNQUFNLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDNUUsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUNsQyxLQUFLLEVBQ0wsZUFBZSxFQUNmLGVBQWUsQ0FDaEIsQ0FBQztJQUNKLENBQUM7OEdBbENVLGdCQUFnQjs0R0FBaEIsZ0JBQWdCOzsyRkFBaEIsZ0JBQWdCO2tCQUw1QixJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxjQUFjO29CQUNwQixJQUFJLEVBQUUsS0FBSztvQkFDWCxVQUFVLEVBQUUsS0FBSztpQkFDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFNreUZ1enp5RGF0ZSB9IGZyb20gJy4uL2RhdGVwaWNrZXIvZnV6enkvZnV6enktZGF0ZSc7XG5pbXBvcnQgeyBTa3lGdXp6eURhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vZGF0ZXBpY2tlci9mdXp6eS9mdXp6eS1kYXRlLnNlcnZpY2UnO1xuXG4vKipcbiAqIEZvcm1hdHMgZGF0ZSB2YWx1ZXMgdXNpbmcgdHdvIG9yIG1vcmUgZGF0ZSB0b2tlbnMgdGhhdCByZXByZXNlbnQgdGhlIGRheSwgbW9udGgsXG4gKiBhbmQgeWVhci4gVGhlIHRva2VucyBhcmUgZGVzY3JpYmVkIGluIHRoZSBbbW9tZW50LmpzIHZhbHVlc10oaHR0cHM6Ly9tb21lbnRqcy5jb20vZG9jcy8jL2Rpc3BsYXlpbmcvKS5cbiAqIEBleGFtcGxlXG4gKiBgYGBtYXJrdXBcbiAqIHt7IG15RnV6enlEYXRlIHwgc2t5RnV6enlEYXRlOidNTU0gWScgfX1cbiAqIHt7IG15RnV6enlEYXRlIHwgc2t5RnV6enlEYXRlOidNTU0gWSc6J2VuLUNBJyB9fVxuICogYGBgXG4gKi9cbkBQaXBlKHtcbiAgbmFtZTogJ3NreUZ1enp5RGF0ZScsXG4gIHB1cmU6IGZhbHNlLFxuICBzdGFuZGFsb25lOiBmYWxzZSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5RnV6enlEYXRlUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAjZnV6enlEYXRlU2VydmljZTogU2t5RnV6enlEYXRlU2VydmljZTtcblxuICBjb25zdHJ1Y3RvcihmdXp6eURhdGVTZXJ2aWNlOiBTa3lGdXp6eURhdGVTZXJ2aWNlKSB7XG4gICAgdGhpcy4jZnV6enlEYXRlU2VydmljZSA9IGZ1enp5RGF0ZVNlcnZpY2U7XG4gIH1cblxuICAvKipcbiAgICogVHJhbnNmb3JtcyBmdXp6eSBkYXRlIHZhbHVlcyB1c2luZyB0d28gb3IgbW9yZSBkYXRlIHRva2VucyB0aGF0IHJlcHJlc2VudCB0aGUgZGF5LCBtb250aCxcbiAgICogYW5kIHllYXIuXG4gICAqIEBwYXJhbSB2YWx1ZSBTcGVjaWZpZXMgdGhlIGRhdGUgdmFsdWUgdG8gdHJhbnNmb3JtLlxuICAgKiBAcGFyYW0gZm9ybWF0IFNwZWNpZmllcyB0aGUgZm9ybWF0IHRvIGFwcGx5IHRvIHRoZSB0cmFuc2Zvcm0uIFlvdSBjb25zdHJ1Y3QgdGhlIGZvcm1hdFxuICAgKiBzdHJpbmcgd2l0aCBhIHR3byBvciBtb3JlIHRva2VucyB0aGF0IHNwZWNpZnkgdGhlIGNvbXBvbmVudHMgb2YgZGF0ZS10aW1lIHZhbHVlLiBUaGVcbiAgICogdG9rZW5zIGFyZSBkZXNjcmliZWQgaW4gdGhlIFttb21lbnQuanMgdmFsdWVzXShodHRwczovL21vbWVudGpzLmNvbS9kb2NzLyMvZGlzcGxheWluZy8pLlxuICAgKiBJZiB5b3UgZG9uJ3QgcHJvdmlkZSBhIGZvcm1hdCwgYFNreUZ1enp5RGF0ZVBpcGVgIGF0dGVtcHRzIHRvIGZvcm1hdCBmdXp6eSBkYXRlcyBiYXNlZFxuICAgKiBvbiB0aGUgYnJvd3NlcidzIGRlZmF1bHQgbG9jYWxlLlxuICAgKiBAcGFyYW0gbG9jYWxlIFNwZWNpZmllcyB0aGUgbG9jYWxlIGNvZGUgdG8gdXNlIGluIHRoZSB0cmFuc2Zvcm0uXG4gICAqL1xuICBwdWJsaWMgdHJhbnNmb3JtKFxuICAgIHZhbHVlOiBTa3lGdXp6eURhdGUsXG4gICAgZm9ybWF0Pzogc3RyaW5nLFxuICAgIGxvY2FsZT86IHN0cmluZyxcbiAgKTogc3RyaW5nIHtcbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIGNvbnN0IGZ1enp5RGF0ZUZvcm1hdCA9XG4gICAgICBmb3JtYXQgfHwgdGhpcy4jZnV6enlEYXRlU2VydmljZS5nZXRMb2NhbGVTaG9ydEZvcm1hdChsb2NhbGUpO1xuICAgIGNvbnN0IGZ1enp5RGF0ZUxvY2FsZSA9IGxvY2FsZSB8fCB0aGlzLiNmdXp6eURhdGVTZXJ2aWNlLmdldEN1cnJlbnRMb2NhbGUoKTtcbiAgICByZXR1cm4gdGhpcy4jZnV6enlEYXRlU2VydmljZS5mb3JtYXQoXG4gICAgICB2YWx1ZSxcbiAgICAgIGZ1enp5RGF0ZUZvcm1hdCxcbiAgICAgIGZ1enp5RGF0ZUxvY2FsZSxcbiAgICApO1xuICB9XG59XG4iXX0=","import { NgModule } from '@angular/core';\nimport { SkyDatetimeResourcesModule } from '../shared/sky-datetime-resources.module';\nimport { SkyDatePipe } from './date.pipe';\nimport { SkyFuzzyDatePipe } from './fuzzy-date.pipe';\nimport * as i0 from \"@angular/core\";\nexport class SkyDatePipeModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDatePipeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDatePipeModule, declarations: [SkyDatePipe, SkyFuzzyDatePipe], imports: [SkyDatetimeResourcesModule], exports: [SkyDatePipe, SkyFuzzyDatePipe] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDatePipeModule, providers: [SkyDatePipe, SkyFuzzyDatePipe], imports: [SkyDatetimeResourcesModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDatePipeModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [SkyDatePipe, SkyFuzzyDatePipe],\n providers: [SkyDatePipe, SkyFuzzyDatePipe],\n imports: [SkyDatetimeResourcesModule],\n exports: [SkyDatePipe, SkyFuzzyDatePipe],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waXBlLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9kYXRldGltZS9zcmMvbGliL21vZHVsZXMvZGF0ZS1waXBlL2RhdGUtcGlwZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUVyRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDOztBQVFyRCxNQUFNLE9BQU8saUJBQWlCOzhHQUFqQixpQkFBaUI7K0dBQWpCLGlCQUFpQixpQkFMYixXQUFXLEVBQUUsZ0JBQWdCLGFBRWxDLDBCQUEwQixhQUMxQixXQUFXLEVBQUUsZ0JBQWdCOytHQUU1QixpQkFBaUIsYUFKakIsQ0FBQyxXQUFXLEVBQUUsZ0JBQWdCLENBQUMsWUFDaEMsMEJBQTBCOzsyRkFHekIsaUJBQWlCO2tCQU43QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLFdBQVcsRUFBRSxnQkFBZ0IsQ0FBQztvQkFDN0MsU0FBUyxFQUFFLENBQUMsV0FBVyxFQUFFLGdCQUFnQixDQUFDO29CQUMxQyxPQUFPLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQztvQkFDckMsT0FBTyxFQUFFLENBQUMsV0FBVyxFQUFFLGdCQUFnQixDQUFDO2lCQUN6QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFNreURhdGV0aW1lUmVzb3VyY2VzTW9kdWxlIH0gZnJvbSAnLi4vc2hhcmVkL3NreS1kYXRldGltZS1yZXNvdXJjZXMubW9kdWxlJztcblxuaW1wb3J0IHsgU2t5RGF0ZVBpcGUgfSBmcm9tICcuL2RhdGUucGlwZSc7XG5pbXBvcnQgeyBTa3lGdXp6eURhdGVQaXBlIH0gZnJvbSAnLi9mdXp6eS1kYXRlLnBpcGUnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtTa3lEYXRlUGlwZSwgU2t5RnV6enlEYXRlUGlwZV0sXG4gIHByb3ZpZGVyczogW1NreURhdGVQaXBlLCBTa3lGdXp6eURhdGVQaXBlXSxcbiAgaW1wb3J0czogW1NreURhdGV0aW1lUmVzb3VyY2VzTW9kdWxlXSxcbiAgZXhwb3J0czogW1NreURhdGVQaXBlLCBTa3lGdXp6eURhdGVQaXBlXSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5RGF0ZVBpcGVNb2R1bGUge31cbiJdfQ==","import moment from 'moment';\nexport class SkyDateFormatter {\n static { this.defaultLocale = 'en-US'; }\n static { this.defaultShortDateFormat = 'MM/DD/YYYY'; }\n /**\n * Sets moment's global locale.\n */\n static setLocale(locale) {\n moment.locale(locale || SkyDateFormatter.defaultLocale);\n }\n /**\n * Returns the preferred short date format for the current locale.\n */\n static getPreferredShortDateFormat() {\n /* istanbul ignore next */\n return (moment.localeData().longDateFormat('L') ||\n SkyDateFormatter.defaultShortDateFormat);\n }\n format(date, format) {\n return moment(date.getTime()).format(format);\n }\n getDateFromString(dateString, format, \n /* istanbul ignore next */\n strict = false) {\n let momentValue = moment(dateString, format, strict);\n if (!momentValue.isValid()) {\n momentValue = moment(dateString, 'YYYY-MM-DDThh:mm:ss.SZ', strict);\n }\n return momentValue.toDate();\n }\n dateIsValid(date) {\n return !!(date &&\n date instanceof Date &&\n !isNaN(date.valueOf()) &&\n !isNaN(new Date(date).getDate()));\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1mb3JtYXR0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL2RhdGVwaWNrZXIvZGF0ZS1mb3JtYXR0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBRTVCLE1BQU0sT0FBTyxnQkFBZ0I7YUFDWixrQkFBYSxHQUFHLE9BQU8sQ0FBQzthQUV4QiwyQkFBc0IsR0FBRyxZQUFZLENBQUM7SUFFckQ7O09BRUc7SUFDSSxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQWM7UUFDcEMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLElBQUksZ0JBQWdCLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLDJCQUEyQjtRQUN2QywwQkFBMEI7UUFDMUIsT0FBTyxDQUNMLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDO1lBQ3ZDLGdCQUFnQixDQUFDLHNCQUFzQixDQUN4QyxDQUFDO0lBQ0osQ0FBQztJQUVNLE1BQU0sQ0FBQyxJQUFVLEVBQUUsTUFBZTtRQUN2QyxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVNLGlCQUFpQixDQUN0QixVQUFrQixFQUNsQixNQUFlO0lBQ2YsMEJBQTBCO0lBQzFCLE1BQU0sR0FBRyxLQUFLO1FBRWQsSUFBSSxXQUFXLEdBQUcsTUFBTSxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFckQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1lBQzNCLFdBQVcsR0FBRyxNQUFNLENBQUMsVUFBVSxFQUFFLHdCQUF3QixFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3JFLENBQUM7UUFFRCxPQUFPLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRU0sV0FBVyxDQUFDLElBQXNCO1FBQ3ZDLE9BQU8sQ0FBQyxDQUFDLENBQ1AsSUFBSTtZQUNKLElBQUksWUFBWSxJQUFJO1lBQ3BCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUN0QixDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUNqQyxDQUFDO0lBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcblxuZXhwb3J0IGNsYXNzIFNreURhdGVGb3JtYXR0ZXIge1xuICBwcml2YXRlIHN0YXRpYyBkZWZhdWx0TG9jYWxlID0gJ2VuLVVTJztcblxuICBwcml2YXRlIHN0YXRpYyBkZWZhdWx0U2hvcnREYXRlRm9ybWF0ID0gJ01NL0REL1lZWVknO1xuXG4gIC8qKlxuICAgKiBTZXRzIG1vbWVudCdzIGdsb2JhbCBsb2NhbGUuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHNldExvY2FsZShsb2NhbGU6IHN0cmluZyk6IHZvaWQge1xuICAgIG1vbWVudC5sb2NhbGUobG9jYWxlIHx8IFNreURhdGVGb3JtYXR0ZXIuZGVmYXVsdExvY2FsZSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgcHJlZmVycmVkIHNob3J0IGRhdGUgZm9ybWF0IGZvciB0aGUgY3VycmVudCBsb2NhbGUuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGdldFByZWZlcnJlZFNob3J0RGF0ZUZvcm1hdCgpOiBzdHJpbmcge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgcmV0dXJuIChcbiAgICAgIG1vbWVudC5sb2NhbGVEYXRhKCkubG9uZ0RhdGVGb3JtYXQoJ0wnKSB8fFxuICAgICAgU2t5RGF0ZUZvcm1hdHRlci5kZWZhdWx0U2hvcnREYXRlRm9ybWF0XG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBmb3JtYXQoZGF0ZTogRGF0ZSwgZm9ybWF0Pzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbW9tZW50KGRhdGUuZ2V0VGltZSgpKS5mb3JtYXQoZm9ybWF0KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXREYXRlRnJvbVN0cmluZyhcbiAgICBkYXRlU3RyaW5nOiBzdHJpbmcsXG4gICAgZm9ybWF0Pzogc3RyaW5nLFxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgc3RyaWN0ID0gZmFsc2UsXG4gICk6IERhdGUge1xuICAgIGxldCBtb21lbnRWYWx1ZSA9IG1vbWVudChkYXRlU3RyaW5nLCBmb3JtYXQsIHN0cmljdCk7XG5cbiAgICBpZiAoIW1vbWVudFZhbHVlLmlzVmFsaWQoKSkge1xuICAgICAgbW9tZW50VmFsdWUgPSBtb21lbnQoZGF0ZVN0cmluZywgJ1lZWVktTU0tRERUaGg6bW06c3MuU1onLCBzdHJpY3QpO1xuICAgIH1cblxuICAgIHJldHVybiBtb21lbnRWYWx1ZS50b0RhdGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBkYXRlSXNWYWxpZChkYXRlOiBEYXRlIHwgdW5kZWZpbmVkKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhKFxuICAgICAgZGF0ZSAmJlxuICAgICAgZGF0ZSBpbnN0YW5jZW9mIERhdGUgJiZcbiAgICAgICFpc05hTihkYXRlLnZhbHVlT2YoKSkgJiZcbiAgICAgICFpc05hTihuZXcgRGF0ZShkYXRlKS5nZXREYXRlKCkpXG4gICAgKTtcbiAgfVxufVxuIl19","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output, ViewEncapsulation, inject, } from '@angular/core';\nimport { SkyLiveAnnouncerService } from '@skyux/core';\nimport { SkyLibResourcesService } from '@skyux/i18n';\nimport { SkyIconModule } from '@skyux/icon';\nimport { Subject, takeUntil } from 'rxjs';\nimport { SkyDateFormatter } from '../date-formatter';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nimport * as i2 from \"@skyux/icon\";\nlet nextDatepickerId = 0;\n/**\n * @internal\n */\nexport class SkyDatepickerCalendarInnerComponent {\n constructor() {\n this.selectedDateChange = new EventEmitter(undefined);\n this.calendarModeChange = new EventEmitter();\n // TODO: `activeDate` is very similar to `selectedDate` and at the very least should be able to be undefined. However, this would take considerable refactoring to do and thus has been deferred.\n this.activeDate = new Date();\n this.activeDateId = '';\n this.title = '';\n this.minMode = 'day';\n this.maxMode = 'year';\n this.monthColLimit = 3;\n this.yearColLimit = 5;\n this.datepickerMode = 'day';\n this.yearRange = 20;\n this.formatDay = 'DD';\n this.formatMonth = 'MMMM';\n this.formatYear = 'YYYY';\n this.formatDayHeader = 'dd';\n this.formatDayTitle = 'MMMM YYYY';\n this.formatMonthTitle = 'YYYY';\n this.formatDayLabel = 'dddd, MMMM Do YYYY';\n this.formatMonthLabel = 'MMMM YYYY';\n this.formatYearLabel = 'YYYY';\n this.datepickerId = `sky-datepicker-${++nextDatepickerId}`;\n this.stepDay = {};\n this.stepMonth = {};\n this.stepYear = {};\n this.modes = ['day', 'month', 'year'];\n this.dateFormatter = new SkyDateFormatter();\n this.keys = [\n 'enter',\n ' ',\n 'spacebar',\n 'pageup',\n 'pagedown',\n 'end',\n 'home',\n 'arrowleft',\n 'arrowup',\n 'arrowright',\n 'arrowdown',\n ];\n this.#ngUnsubscribe = new Subject();\n this.#_startingDay = 0;\n this.#resourcesSvc = inject(SkyLibResourcesService);\n this.#liveAnnouncerSvc = inject(SkyLiveAnnouncerService);\n }\n set startingDay(value) {\n this.#_startingDay = value || 0;\n }\n get startingDay() {\n return this.#_startingDay;\n }\n set selectedDate(value) {\n if (value && this.dateFormatter.dateIsValid(value)) {\n this.#_selectedDate = value;\n this.activeDate = value;\n }\n else {\n this.#_selectedDate = undefined;\n this.activeDate = new Date();\n }\n }\n get selectedDate() {\n return this.#_selectedDate;\n }\n #ngUnsubscribe;\n #prevDay;\n #nextDay;\n #prevMonth;\n #nextMonth;\n #prevYear;\n #nextYear;\n #_selectedDate;\n #_startingDay;\n #resourcesSvc;\n #liveAnnouncerSvc;\n ngOnInit() {\n if (this.selectedDate) {\n this.activeDate = new Date(this.selectedDate);\n }\n else {\n this.activeDate = this.startAtDate ?? new Date();\n }\n this.#resourcesSvc\n .getStrings({\n prevDay: 'skyux_datepicker_move_calendar_previous_day',\n nextDay: 'skyux_datepicker_move_calendar_next_day',\n prevMonth: 'skyux_datepicker_move_calendar_previous_month',\n nextMonth: 'skyux_datepicker_move_calendar_next_month',\n prevYear: 'skyux_datepicker_move_calendar_previous_year',\n nextYear: 'skyux_datepicker_move_calendar_next_year',\n })\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((resources) => {\n this.#prevDay = resources.prevDay;\n this.#nextDay = resources.nextDay;\n this.#prevMonth = resources.prevMonth;\n this.#nextMonth = resources.nextMonth;\n this.#prevYear = resources.prevYear;\n this.#nextYear = resources.nextYear;\n this.refreshView();\n });\n }\n ngOnChanges(changes) {\n this.refreshView();\n }\n ngOnDestroy() {\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n }\n setCompareHandler(handler, type) {\n if (type === 'day') {\n this.compareHandlerDay = handler;\n }\n if (type === 'month') {\n this.compareHandlerMonth = handler;\n }\n if (type === 'year') {\n this.compareHandlerYear = handler;\n }\n }\n compare(date1, date2) {\n if (date1 === undefined || date2 === undefined) {\n return undefined;\n }\n if (this.datepickerMode === 'day' && this.compareHandlerDay) {\n return this.compareHandlerDay(date1, date2);\n }\n if (this.datepickerMode === 'month' && this.compareHandlerMonth) {\n return this.compareHandlerMonth(date1, date2);\n }\n /* istanbul ignore else */\n /* sanity check */\n if (this.datepickerMode === 'year' && this.compareHandlerYear) {\n return this.compareHandlerYear(date1, date2);\n }\n /* istanbul ignore next */\n return undefined;\n }\n setRefreshViewHandler(handler, type) {\n if (type === 'day') {\n this.refreshViewHandlerDay = handler;\n }\n if (type === 'month') {\n this.refreshViewHandlerMonth = handler;\n }\n if (type === 'year') {\n this.refreshViewHandlerYear = handler;\n }\n }\n refreshView() {\n if (this.datepickerMode === 'day' && this.refreshViewHandlerDay) {\n this.title = this.refreshViewHandlerDay();\n this.previousLabel = this.#prevDay;\n this.nextLabel = this.#nextDay;\n }\n if (this.datepickerMode === 'month' && this.refreshViewHandlerMonth) {\n this.title = this.refreshViewHandlerMonth();\n this.previousLabel = this.#prevMonth;\n this.nextLabel = this.#nextMonth;\n }\n if (this.datepickerMode === 'year' && this.refreshViewHandlerYear) {\n this.title = this.refreshViewHandlerYear();\n this.previousLabel = this.#prevYear;\n this.nextLabel = this.#nextYear;\n }\n }\n setKeydownHandler(handler, type) {\n if (type === 'day') {\n this.handleKeydownDay = handler;\n }\n if (type === 'month') {\n this.handleKeydownMonth = handler;\n }\n if (type === 'year') {\n this.handleKeydownYear = handler;\n }\n }\n handleKeydown(key, event) {\n if (this.datepickerMode === 'day' && this.handleKeydownDay) {\n this.handleKeydownDay(key, event);\n }\n if (this.datepickerMode === 'month' && this.handleKeydownMonth) {\n this.handleKeydownMonth(key, event);\n }\n if (this.datepickerMode === 'year' && this.handleKeydownYear) {\n this.handleKeydownYear(key, event);\n }\n }\n dateFilter(date, format) {\n return this.dateFormatter.format(date, format);\n }\n isActive(dateObject) {\n if (this.compare(dateObject.date, this.activeDate) === 0) {\n this.activeDateId = dateObject.uid;\n return true;\n }\n return false;\n }\n onKeydown(event) {\n const key = event.key?.toLowerCase();\n if (!this.keys.includes(key) || event.shiftKey) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n if (key === 'enter' || key === 'spacebar' || key === ' ') {\n if (this.isDisabled(this.activeDate)) {\n return;\n }\n this.select(this.activeDate);\n }\n else if (event.ctrlKey && (key === 'arrowup' || key === 'arrowdown')) {\n this.toggleMode(key === 'arrowup' ? 1 : -1);\n }\n else {\n this.handleKeydown(key, event);\n this.refreshView();\n }\n }\n createDateObject(date, format, isSecondary, id) {\n const customDateMatch = this.#getCustomDate(date);\n const dateObject = {\n date: new Date(date.getFullYear(), date.getMonth(), date.getDate()),\n label: this.dateFilter(date, format),\n selected: !!this.selectedDate && this.compare(date, this.selectedDate) === 0,\n disabled: this.isDisabled(date),\n current: this.compare(date, new Date()) === 0,\n secondary: isSecondary,\n uid: id,\n keyDate: customDateMatch ? customDateMatch.keyDate : undefined,\n keyDateText: customDateMatch ? customDateMatch.keyDateText : [],\n };\n return dateObject;\n }\n createCalendarRows(dates, size) {\n const rows = [];\n while (dates.length > 0) {\n rows.push(dates.splice(0, size));\n }\n return rows;\n }\n /*\n This is ensures that no strangeness happens when converting a date to local time.\n */\n fixTimeZone(date) {\n const newDate = new Date(date);\n newDate.setFullYear(date.getFullYear(), date.getMonth(), date.getDate());\n return newDate;\n }\n selectCalendar(event, date, closePicker = false) {\n if (!closePicker) {\n event.preventDefault();\n event.stopPropagation();\n }\n this.select(date);\n }\n select(date, isManual = true) {\n this.activeDate = new Date(date.getFullYear(), date.getMonth(), date.getDate());\n /*\n Only actually select date if in minMode (day picker mode).\n Otherwise, just change the active view for the datepicker.\n */\n if (this.datepickerMode === this.minMode) {\n this.selectedDate = new Date(this.activeDate);\n if (isManual) {\n this.selectedDateChange.emit(this.selectedDate);\n }\n }\n else {\n this.datepickerMode =\n this.modes[this.modes.indexOf(this.datepickerMode) - 1];\n this.calendarModeChange.emit(this.datepickerMode);\n }\n this.refreshView();\n }\n moveCalendar(event, direction) {\n event.preventDefault();\n event.stopPropagation();\n this.move(direction);\n }\n move(direction) {\n let expectedStep;\n if (this.datepickerMode === 'day') {\n expectedStep = this.stepDay;\n }\n if (this.datepickerMode === 'month') {\n expectedStep = this.stepMonth;\n }\n if (this.datepickerMode === 'year') {\n expectedStep = this.stepYear;\n }\n /* istanbul ignore else */\n /* sanity check */\n if (expectedStep) {\n const year = this.activeDate.getFullYear() + direction * (expectedStep.years || 0);\n const month = this.activeDate.getMonth() + direction * (expectedStep.months || 0);\n this.activeDate = new Date(year, month, 1);\n this.refreshView();\n }\n }\n toggleModeCalendar(event) {\n event.preventDefault();\n event.stopPropagation();\n this.toggleMode(1);\n }\n toggleMode(direction) {\n /*istanbul ignore next */\n direction = direction || 1;\n /* istanbul ignore else */\n /* sanity check */\n if (!(direction === 1 && this.datepickerMode === this.maxMode) &&\n !(this.datepickerMode === this.minMode && direction === -1)) {\n this.datepickerMode =\n this.modes[this.modes.indexOf(this.datepickerMode) + direction];\n this.calendarModeChange.emit(this.datepickerMode);\n this.refreshView();\n }\n }\n announceDate(date, format) {\n const caption = this.dateFilter(date, format);\n this.#liveAnnouncerSvc.announce(caption);\n }\n /**\n * Date is disabled if it meets any of these criteria:\n * 1. Date falls outside the min or max dates set by the SkyDatepickerConfigService.\n * 2. Date is marked as disabled in the customDates array.\n */\n isDisabled(date) {\n const customDate = this.#getCustomDate(date);\n const minDateCompare = this.compare(date, this.minDate);\n const maxDateCompare = this.compare(date, this.maxDate);\n return ((minDateCompare !== undefined && minDateCompare < 0) ||\n (maxDateCompare !== undefined && maxDateCompare > 0) ||\n !!customDate?.disabled);\n }\n #getCustomDate(date) {\n if (this.customDates) {\n return this.customDates.find((customDate) => {\n return customDate.date.getTime() === date.getTime();\n });\n }\n return undefined;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDatepickerCalendarInnerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.5\", type: SkyDatepickerCalendarInnerComponent, isStandalone: true, selector: \"sky-datepicker-inner\", inputs: { customDates: \"customDates\", startingDay: \"startingDay\", minDate: \"minDate\", maxDate: \"maxDate\", startAtDate: \"startAtDate\", selectedDate: \"selectedDate\" }, outputs: { selectedDateChange: \"selectedDateChange\", calendarModeChange: \"calendarModeChange\" }, usesOnChanges: true, ngImport: i0, template: \"@if (datepickerMode) {\\n <div class=\\\"sky-datepicker-calendar-inner\\\">\\n <div class=\\\"sky-datepicker-calendar-header\\\">\\n <span class=\\\"sky-datepicker-header-left\\\">\\n <button\\n type=\\\"button\\\"\\n class=\\\"sky-btn sky-btn-default sky-btn-sm sky-datepicker-btn-previous\\\"\\n [attr.aria-label]=\\\"previousLabel\\\"\\n (click)=\\\"moveCalendar($event, -1)\\\"\\n >\\n <sky-icon class=\\\"sky-datepicker-chevron\\\" iconName=\\\"chevron-left\\\" />\\n </button>\\n </span>\\n <span class=\\\"sky-datepicker-header-center\\\">\\n <!-- display: inline -->\\n <button\\n type=\\\"button\\\"\\n class=\\\"sky-btn sky-btn-default sky-btn-sm sky-datepicker-calendar-title\\\"\\n [id]=\\\"datepickerId + '-title'\\\"\\n [disabled]=\\\"datepickerMode === maxMode\\\"\\n [ngClass]=\\\"{\\n 'sky-btn-disabled': datepickerMode === maxMode\\n }\\\"\\n (click)=\\\"toggleModeCalendar($event)\\\"\\n >{{ title }}</button\\n >\\n </span>\\n <span class=\\\"sky-datepicker-header-right\\\">\\n <button\\n type=\\\"button\\\"\\n class=\\\"sky-btn sky-btn-default sky-btn-sm sky-datepicker-btn-next\\\"\\n [attr.aria-label]=\\\"nextLabel\\\"\\n (click)=\\\"moveCalendar($event, 1)\\\"\\n >\\n <sky-icon class=\\\"sky-datepicker-chevron\\\" iconName=\\\"chevron-right\\\" />\\n </button>\\n </span>\\n </div>\\n <ng-content />\\n </div>\\n}\\n\", styles: [\".sky-datepicker-calendar-inner:not(.sky-theme-modern *){--sky-override-button-box-shadow: none;--sky-override-button-box-shadow-focus: none;--sky-override-chevron-color: #212327;--sky-override-datepicker-background-color: #ffffff;--sky-override-datepicker-border: 1px solid #e2e3e4;--sky-override-datepicker-border-color-hover: #eeeeef;--sky-override-datepicker-border-radius: 5px;--sky-override-datepicker-button-background-color: #ffffff;--sky-override-datepicker-button-background-color-active: #eeeeef;--sky-override-datepicker-button-background-color-disabled: #ffffff;--sky-override-datepicker-button-background-color-hover: #eeeeef;--sky-override-datepicker-button-border: 2px solid #ffffff;--sky-override-datepicker-button-selected-background: #c1e8fb;--sky-override-datepicker-button-selected-border: 2px solid #00b4f1;--sky-override-datepicker-calendar-top-padding: 0;--sky-override-datepicker-chevron-size: inherit;--sky-override-datepicker-day-btn-font-size: 12px;--sky-override-datepicker-day-btn-line-height: 1.5;--sky-override-datepicker-day-button-padding: 5px 10px;--sky-override-datepicker-day-button-size: 100%;--sky-override-datepicker-focus-outline: auto;--sky-override-datepicker-horizontal-padding: 0;--sky-override-datepicker-month-year-button-padding: 6px 12px;--sky-override-datepicker-nav-button-padding: 5px 10px;--sky-override-datepicker-nav-space: 0;--sky-override-datepicker-secondary-date-color: #686c73;--sky-override-datepicker-table-border-spacing: 2px;--sky-override-datepicker-td-padding: 1px;--sky-override-datepicker-title-font-style: 700;--sky-override-datepicker-vertical-padding: 0;--sky-override-datepicker-weekday-font-size: 12px;--sky-override-datepicker-weekday-font-weight: 900}.sky-theme-modern:not(.sky-theme-brand-base) .sky-datepicker-calendar-inner{--sky-override-chevron-color: var(--sky-color-text-default);--sky-override-datepicker-box-shadow: inset 0 0 0 1px var(--modern-color-gray-15);--sky-override-datepicker-button-active-border-width: var(--modern-size-1);--sky-override-datepicker-button-background-color: var(--modern-color-white);--sky-override-datepicker-button-background-color-active: var( --modern-color-white );--sky-override-datepicker-button-background-color-hover: var( --modern-color-white );--sky-override-datepicker-button-border-color-disabled: var( --sky-color-background-action-secondary-disabled );--sky-override-datepicker-button-border-color-transparent: var( --modern-color-transparent );--sky-override-button-box-shadow-focus: inset 0 0 0 var(--sky-border-width-action-focus) var(--sky-color-border-action-tertiary-focus), var(--sky-elevation-focus);--sky-override-datepicker-calendar-top-padding: 0;--sky-override-datepicker-day-btn-font-size: 12px;--sky-override-datepicker-horizontal-padding: 10px;--sky-override-datepicker-month-year-button-padding: 5px 7px;--sky-override-datepicker-nav-button-padding: 5px 7px;--sky-override-datepicker-nav-space: 0;--sky-override-datepicker-table-border-spacing: 2px;--sky-override-datepicker-td-padding: 1px;--sky-override-datepicker-title-font-style: 700;--sky-override-datepicker-vertical-padding: 5px;--sky-override-datepicker-weekday-font-size: 12.8px;--sky-override-datepicker-weekday-font-weight: 900}.sky-theme-modern.sky-theme-brand-base .sky-datepicker-calendar-inner .sky-datepicker-calendar-header .sky-btn-default{line-height:1}.sky-theme-modern.sky-theme-brand-base .sky-datepicker-calendar-inner sky-yearpicker td{width:20%}.sky-theme-modern.sky-theme-brand-base .sky-datepicker-calendar-inner sky-monthpicker td{width:33%}.sky-datepicker-calendar-inner{border-radius:var(--sky-override-datepicker-border-radius, var(--sky-border-radius-s));background-color:var(--sky-override-datepicker-background-color, var(--sky-color-background-container-menu));border:var(--sky-override-datepicker-border);box-shadow:var(--sky-override-datepicker-box-shadow)}.sky-datepicker-calendar-inner .sky-datepicker-calendar-header{width:100%;display:flex;padding:var(--sky-override-datepicker-vertical-padding, var(--sky-comp-datepicker-header-space-inset-top)) var(--sky-override-datepicker-horizontal-padding, var(--sky-comp-datepicker-header-space-inset-right)) 0 var(--sky-override-datepicker-horizontal-padding, var(--sky-comp-datepicker-header-space-inset-left))}.sky-datepicker-calendar-inner .sky-datepicker-calendar-table-container{padding:var(--sky-override-datepicker-calendar-top-padding, var(--sky-comp-datepicker-calendar-space-inset-top)) var(--sky-override-datepicker-horizontal-padding, var(--sky-comp-datepicker-calendar-space-inset-right)) var(--sky-override-datepicker-vertical-padding, var(--sky-comp-datepicker-calendar-space-inset-bottom)) var(--sky-override-datepicker-horizontal-padding, var(--sky-comp-datepicker-calendar-space-inset-left))}.sky-datepicker-calendar-inner .sky-datepicker-calendar-table-container:focus-visible{outline:var(--sky-override-datepicker-focus-outline, none)}.sky-datepicker-calendar-inner .sky-datepicker-calendar-table-container:focus-visible .sky-btn.sky-btn-active{border:var(--sky-override-datepicker-button-selected-border, none);box-shadow:var(--sky-override-button-box-shadow, inset 0 0 0 var(--sky-border-width-action-active) var(--sky-color-border-action-tertiary-active))}.sky-datepicker-calendar-inner .sky-btn-default{background-color:var(--sky-override-datepicker-button-background-color, var(--sky-color-background-action-tertiary-base));border:var(--sky-override-datepicker-button-border, none);box-shadow:var(--sky-override-button-box-shadow, inset 0 0 0 var(--sky-border-width-action-base) var(--sky-color-border-action-tertiary-base))}.sky-datepicker-calendar-inner .sky-btn-default:hover{background-color:var(--sky-override-datepicker-button-background-color-hover, var(--sky-color-background-action-tertiary-hover));border-color:var(--sky-override-datepicker-border-color-hover);box-shadow:var(--sky-override-button-box-shadow, inset 0 0 0 var(--sky-border-width-action-hover) var(--sky-color-border-action-tertiary-hover))}.sky-datepicker-calendar-inner .sky-btn-default:active{background-color:var(--sky-override-datepicker-button-background-color-active, var(--sky-color-background-action-tertiary-active));box-shadow:var(--sky-override-button-box-shadow, inset 0 0 0 var(--sky-border-width-action-active) var(--sky-override-datepicker-button-border-color-transparent, var(--sky-color-border-action-tertiary-active)))}.sky-datepicker-calendar-inner .sky-btn-default:focus-visible:not(:active){box-shadow:var(--sky-override-button-box-shadow-focus, inset 0 0 0 var(--sky-border-width-action-focus) var(--sky-color-border-action-tertiary-focus))}.sky-datepicker-calendar-inner .sky-btn-default.sky-btn.sky-datepicker-btn-date.sky-btn-disabled{background-color:var(--sky-override-datepicker-button-background-color-disabled, var(--sky-color-background-action-tertiary-disabled));box-shadow:var(--sky-override-button-box-shadow, inset 0 0 0 var(--sky-override-datepicker-button-border-color-transparent, var(--sky-border-width-action-disabled)) var(--sky-color-border-action-tertiary-disabled))}.sky-datepicker-calendar-inner .sky-btn-default.sky-datepicker-btn-next,.sky-datepicker-calendar-inner .sky-btn-default.sky-datepicker-btn-previous{padding:var(--sky-override-datepicker-nav-button-padding, var(--sky-comp-button-borderless-space-inset-top) var(--sky-comp-button-borderless-space-inset-right) var(--sky-comp-button-borderless-space-inset-bottom) var(--sky-comp-button-borderless-space-inset-left))}.sky-datepicker-calendar-inner .sky-btn-default.sky-datepicker-btn-previous{margin-right:var(--sky-override-datepicker-nav-space, var(--sky-space-gap-action_group-s))}.sky-datepicker-calendar-inner .sky-btn-default.sky-datepicker-btn-next{margin-left:var(--sky-override-datepicker-nav-space, var(--sky-space-gap-action_group-s))}.sky-datepicker-calendar-inner .sky-btn-default.sky-datepicker-calendar-title{font-weight:var(--sky-override-datepicker-title-font-style, var(--sky-font-style-emphasized));padding:var(--sky-override-datepicker-nav-button-padding, var(--sky-comp-button-borderless-space-inset-top) auto var(--sky-comp-button-borderless-space-inset-bottom))}.sky-datepicker-calendar-inner .sky-datepicker-btn-date{min-width:100%}.sky-datepicker-calendar-inner .sky-btn-sm.sky-datepicker-btn-date{font-size:var(--sky-override-datepicker-day-btn-font-size, var(--sky-font-size-body-m));height:var(--sky-override-datepicker-day-button-size, var(--sky-size-picker_btn));line-height:var(--sky-override-datepicker-day-btn-line-height, var(--sky-font-line_height-body-m));min-width:var(--sky-override-datepicker-day-button-size, 0);padding:var(--sky-override-datepicker-day-button-padding, 0);width:var(--sky-override-datepicker-day-button-size, var(--sky-size-picker_btn))}.sky-datepicker-calendar-inner .sky-datepicker-center{text-align:center}.sky-datepicker-calendar-inner .sky-btn.sky-btn-default.sky-datepicker-btn-selected,.sky-datepicker-calendar-inner .sky-btn.sky-btn-default.sky-datepicker-btn-selected:hover{background-color:var(--sky-override-datepicker-button-selected-background, var(--sky-color-background-selected-soft));border:var(--sky-override-datepicker-button-selected-border);box-shadow:var(--sky-override-button-box-shadow, inset 0 0 0 var(--sky-border-width-selected-s) var(--sky-color-border-selected))}.sky-datepicker-calendar-inner .sky-btn.sky-btn-active{box-shadow:var(--sky-override-button-box-shadow, inset 0 0 0 var(--sky-override-datepicker-button-active-border-width, var(--sky-border-width-action-active)) var(--sky-color-border-action-tertiary-active));background-color:var(--sky-override-datepicker-button-background-color-active, var(--sky-color-background-action-tertiary-active))}.sky-datepicker-calendar-inner .sky-datepicker-secondary{color:var(--sky-override-datepicker-secondary-date-color, var(--sky-color-text-deemphasized))}.sky-datepicker-calendar-inner .sky-datepicker-calendar-title{width:100%}.sky-datepicker-calendar-inner .sky-datepicker-header-left{text-align:left}.sky-datepicker-calendar-inner .sky-datepicker-header-center{display:flex;width:100%}.sky-datepicker-calendar-inner .sky-datepicker-header-right{text-align:right}.sky-datepicker-calendar-inner table{border-spacing:var(--sky-override-datepicker-table-border-spacing, var(--sky-space-gap-action_group-s))}.sky-datepicker-calendar-inner table td{padding:var(--sky-override-datepicker-td-padding, 0)}.sky-datepicker-calendar-inner table th{padding-bottom:var(--sky-override-datepicker-td-padding, calc(var(--sky-space-gap-text_action-xs) - var(--sky-space-gap-action_group-s)))}.sky-datepicker-chevron{color:var(--sky-override-chevron-color, var(--sky-color-icon-deemphasized))}sky-yearpicker .sky-btn.sky-btn-default,sky-monthpicker .sky-btn.sky-btn-default{padding:var(--sky-override-datepicker-month-year-button-padding, var(--sky-comp-button-borderless-space-inset-top) var(--sky-comp-button-borderless-space-inset-right) var(--sky-comp-button-borderless-space-inset-bottom) var(--sky-comp-button-borderless-space-inset-left))}.sky-datepicker-weekday-text{font-size:var(--sky-override-datepicker-weekday-font-size, var(--sky-font-size-body-m));font-weight:var(--sky-override-datepicker-weekday-font-weight, var(--sky-font-style-emphasized))}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"ngmodule\", type: SkyIconModule }, { kind: \"component\", type: i2.λ1, selector: \"sky-icon\", inputs: [\"icon\", \"iconName\", \"iconType\", \"size\", \"fixedWidth\", \"variant\", \"iconSize\"] }], encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDatepickerCalendarInnerComponent, decorators: [{\n type: Component,\n args: [{ encapsulation: ViewEncapsulation.None, imports: [CommonModule, SkyIconModule], selector: 'sky-datepicker-inner', template: \"@if (datepickerMode) {\\n <div class=\\\"sky-datepicker-calendar-inner\\\">\\n <div class=\\\"sky-datepicker-calendar-header\\\">\\n <span class=\\\"sky-datepicker-header-left\\\">\\n <button\\n type=\\\"button\\\"\\n class=\\\"sky-btn sky-btn-default sky-btn-sm sky-datepicker-btn-previous\\\"\\n [attr.aria-label]=\\\"previousLabel\\\"\\n (click)=\\\"moveCalendar($event, -1)\\\"\\n >\\n <sky-icon class=\\\"sky-datepicker-chevron\\\" iconName=\\\"chevron-left\\\" />\\n </button>\\n </span>\\n <span class=\\\"sky-datepicker-header-center\\\">\\n <!-- display: inline -->\\n <button\\n type=\\\"button\\\"\\n class=\\\"sky-btn sky-btn-default sky-btn-sm sky-datepicker-calendar-title\\\"\\n [id]=\\\"datepickerId + '-title'\\\"\\n [disabled]=\\\"datepickerMode === maxMode\\\"\\n [ngClass]=\\\"{\\n 'sky-btn-disabled': datepickerMode === maxMode\\n }\\\"\\n (click)=\\\"toggleModeCalendar($event)\\\"\\n >{{ title }}</button\\n >\\n </span>\\n <span class=\\\"sky-datepicker-header-right\\\">\\n <button\\n type=\\\"button\\\"\\n class=\\\"sky-btn sky-btn-default sky-btn-sm sky-datepicker-btn-next\\\"\\n [attr.aria-label]=\\\"nextLabel\\\"\\n (click)=\\\"moveCalendar($event, 1)\\\"\\n >\\n <sky-icon class=\\\"sky-datepicker-chevron\\\" iconName=\\\"chevron-right\\\" />\\n </button>\\n </span>\\n </div>\\n <ng-content />\\n </div>\\n}\\n\", styles: [\".sky-datepicker-calendar-inner:not(.sky-theme-modern *){--sky-override-button-box-shadow: none;--sky-override-button-box-shadow-focus: none;--sky-override-chevron-color: #212327;--sky-override-datepicker-background-color: #ffffff;--sky-override-datepicker-border: 1px solid #e2e3e4;--sky-override-datepicker-border-color-hover: #eeeeef;--sky-override-datepicker-border-radius: 5px;--sky-override-datepicker-button-background-color: #ffffff;--sky-override-datepicker-button-background-color-active: #eeeeef;--sky-override-datepicker-button-background-color-disabled: #ffffff;--sky-override-datepicker-button-background-color-hover: #eeeeef;--sky-override-datepicker-button-border: 2px solid #ffffff;--sky-override-datepicker-button-selected-background: #c1e8fb;--sky-override-datepicker-button-selected-border: 2px solid #00b4f1;--sky-override-datepicker-calendar-top-padding: 0;--sky-override-datepicker-chevron-size: inherit;--sky-override-datepicker-day-btn-font-size: 12px;--sky-override-datepicker-day-btn-line-height: 1.5;--sky-override-datepicker-day-button-padding: 5px 10px;--sky-override-datepicker-day-button-size: 100%;--sky-override-datepicker-focus-outline: auto;--sky-override-datepicker-horizontal-padding: 0;--sky-override-datepicker-month-year-button-padding: 6px 12px;--sky-override-datepicker-nav-button-padding: 5px 10px;--sky-override-datepicker-nav-space: 0;--sky-override-datepicker-secondary-date-color: #686c73;--sky-override-datepicker-table-border-spacing: 2px;--sky-override-datepicker-td-padding: 1px;--sky-override-datepicker-title-font-style: 700;--sky-override-datepicker-vertical-padding: 0;--sky-override-datepicker-weekday-font-size: 12px;--sky-override-datepicker-weekday-font-weight: 900}.sky-theme-modern:not(.sky-theme-brand-base) .sky-datepicker-calendar-inner{--sky-override-chevron-color: var(--sky-color-text-default);--sky-override-datepicker-box-shadow: inset 0 0 0 1px var(--modern-color-gray-15);--sky-override-datepicker-button-active-border-width: var(--modern-size-1);--sky-override-datepicker-button-background-color: var(--modern-color-white);--sky-override-datepicker-button-background-color-active: var( --modern-color-white );--sky-override-datepicker-button-background-color-hover: var( --modern-color-white );--sky-override-datepicker-button-border-color-disabled: var( --sky-color-background-action-secondary-disabled );--sky-override-datepicker-button-border-color-transparent: var( --modern-color-transparent );--sky-override-button-box-shadow-focus: inset 0 0 0 var(--sky-border-width-action-focus) var(--sky-color-border-action-tertiary-focus), var(--sky-elevation-focus);--sky-override-datepicker-calendar-top-padding: 0;--sky-override-datepicker-day-btn-font-size: 12px;--sky-override-datepicker-horizontal-padding: 10px;--sky-override-datepicker-month-year-button-padding: 5px 7px;--sky-override-datepicker-nav-button-padding: 5px 7px;--sky-override-datepicker-nav-space: 0;--sky-override-datepicker-table-border-spacing: 2px;--sky-override-datepicker-td-padding: 1px;--sky-override-datepicker-title-font-style: 700;--sky-override-datepicker-vertical-padding: 5px;--sky-override-datepicker-weekday-font-size: 12.8px;--sky-override-datepicker-weekday-font-weight: 900}.sky-theme-modern.sky-theme-brand-base .sky-datepicker-calendar-inner .sky-datepicker-calendar-header .sky-btn-default{line-height:1}.sky-theme-modern.sky-theme-brand-base .sky-datepicker-calendar-inner sky-yearpicker td{width:20%}.sky-theme-modern.sky-theme-brand-base .sky-datepicker-calendar-inner sky-monthpicker td{width:33%}.sky-datepicker-calendar-inner{border-radius:var(--sky-override-datepicker-border-radius, var(--sky-border-radius-s));background-color:var(--sky-override-datepicker-background-color, var(--sky-color-background-container-menu));border:var(--sky-override-datepicker-border);box-shadow:var(--sky-override-datepicker-box-shadow)}.sky-datepicker-calendar-inner .sky-datepicker-calendar-header{width:100%;display:flex;padding:var(--sky-override-datepicker-vertical-padding, var(--sky-comp-datepicker-header-space-inset-top)) var(--sky-override-datepicker-horizontal-padding, var(--sky-comp-datepicker-header-space-inset-right)) 0 var(--sky-override-datepicker-horizontal-padding, var(--sky-comp-datepicker-header-space-inset-left))}.sky-datepicker-calendar-inner .sky-datepicker-calendar-table-container{padding:var(--sky-override-datepicker-calendar-top-padding, var(--sky-comp-datepicker-calendar-space-inset-top)) var(--sky-override-datepicker-horizontal-padding, var(--sky-comp-datepicker-calendar-space-inset-right)) var(--sky-override-datepicker-vertical-padding, var(--sky-comp-datepicker-calendar-space-inset-bottom)) var(--sky-override-datepicker-horizontal-padding, var(--sky-comp-datepicker-calendar-space-inset-left))}.sky-datepicker-calendar-inner .sky-datepicker-calendar-table-container:focus-visible{outline:var(--sky-override-datepicker-focus-outline, none)}.sky-datepicker-calendar-inner .sky-datepicker-calendar-table-container:focus-visible .sky-btn.sky-btn-active{border:var(--sky-override-datepicker-button-selected-border, none);box-shadow:var(--sky-override-button-box-shadow, inset 0 0 0 var(--sky-border-width-action-active) var(--sky-color-border-action-tertiary-active))}.sky-datepicker-calendar-inner .sky-btn-default{background-color:var(--sky-override-datepicker-button-background-color, var(--sky-color-background-action-tertiary-base));border:var(--sky-override-datepicker-button-border, none);box-shadow:var(--sky-override-button-box-shadow, inset 0 0 0 var(--sky-border-width-action-base) var(--sky-color-border-action-tertiary-base))}.sky-datepicker-calendar-inner .sky-btn-default:hover{background-color:var(--sky-override-datepicker-button-background-color-hover, var(--sky-color-background-action-tertiary-hover));border-color:var(--sky-override-datepicker-border-color-hover);box-shadow:var(--sky-override-button-box-shadow, inset 0 0 0 var(--sky-border-width-action-hover) var(--sky-color-border-action-tertiary-hover))}.sky-datepicker-calendar-inner .sky-btn-default:active{background-color:var(--sky-override-datepicker-button-background-color-active, var(--sky-color-background-action-tertiary-active));box-shadow:var(--sky-override-button-box-shadow, inset 0 0 0 var(--sky-border-width-action-active) var(--sky-override-datepicker-button-border-color-transparent, var(--sky-color-border-action-tertiary-active)))}.sky-datepicker-calendar-inner .sky-btn-default:focus-visible:not(:active){box-shadow:var(--sky-override-button-box-shadow-focus, inset 0 0 0 var(--sky-border-width-action-focus) var(--sky-color-border-action-tertiary-focus))}.sky-datepicker-calendar-inner .sky-btn-default.sky-btn.sky-datepicker-btn-date.sky-btn-disabled{background-color:var(--sky-override-datepicker-button-background-color-disabled, var(--sky-color-background-action-tertiary-disabled));box-shadow:var(--sky-override-button-box-shadow, inset 0 0 0 var(--sky-override-datepicker-button-border-color-transparent, var(--sky-border-width-action-disabled)) var(--sky-color-border-action-tertiary-disabled))}.sky-datepicker-calendar-inner .sky-btn-default.sky-datepicker-btn-next,.sky-datepicker-calendar-inner .sky-btn-default.sky-datepicker-btn-previous{padding:var(--sky-override-datepicker-nav-button-padding, var(--sky-comp-button-borderless-space-inset-top) var(--sky-comp-button-borderless-space-inset-right) var(--sky-comp-button-borderless-space-inset-bottom) var(--sky-comp-button-borderless-space-inset-left))}.sky-datepicker-calendar-inner .sky-btn-default.sky-datepicker-btn-previous{margin-right:var(--sky-override-datepicker-nav-space, var(--sky-space-gap-action_group-s))}.sky-datepicker-calendar-inner .sky-btn-default.sky-datepicker-btn-next{margin-left:var(--sky-override-datepicker-nav-space, var(--sky-space-gap-action_group-s))}.sky-datepicker-calendar-inner .sky-btn-default.sky-datepicker-calendar-title{font-weight:var(--sky-override-datepicker-title-font-style, var(--sky-font-style-emphasized));padding:var(--sky-override-datepicker-nav-button-padding, var(--sky-comp-button-borderless-space-inset-top) auto var(--sky-comp-button-borderless-space-inset-bottom))}.sky-datepicker-calendar-inner .sky-datepicker-btn-date{min-width:100%}.sky-datepicker-calendar-inner .sky-btn-sm.sky-datepicker-btn-date{font-size:var(--sky-override-datepicker-day-btn-font-size, var(--sky-font-size-body-m));height:var(--sky-override-datepicker-day-button-size, var(--sky-size-picker_btn));line-height:var(--sky-override-datepicker-day-btn-line-height, var(--sky-font-line_height-body-m));min-width:var(--sky-override-datepicker-day-button-size, 0);padding:var(--sky-override-datepicker-day-button-padding, 0);width:var(--sky-override-datepicker-day-button-size, var(--sky-size-picker_btn))}.sky-datepicker-calendar-inner .sky-datepicker-center{text-align:center}.sky-datepicker-calendar-inner .sky-btn.sky-btn-default.sky-datepicker-btn-selected,.sky-datepicker-calendar-inner .sky-btn.sky-btn-default.sky-datepicker-btn-selected:hover{background-color:var(--sky-override-datepicker-button-selected-background, var(--sky-color-background-selected-soft));border:var(--sky-override-datepicker-button-selected-border);box-shadow:var(--sky-override-button-box-shadow, inset 0 0 0 var(--sky-border-width-selected-s) var(--sky-color-border-selected))}.sky-datepicker-calendar-inner .sky-btn.sky-btn-active{box-shadow:var(--sky-override-button-box-shadow, inset 0 0 0 var(--sky-override-datepicker-button-active-border-width, var(--sky-border-width-action-active)) var(--sky-color-border-action-tertiary-active));background-color:var(--sky-override-datepicker-button-background-color-active, var(--sky-color-background-action-tertiary-active))}.sky-datepicker-calendar-inner .sky-datepicker-secondary{color:var(--sky-override-datepicker-secondary-date-color, var(--sky-color-text-deemphasized))}.sky-datepicker-calendar-inner .sky-datepicker-calendar-title{width:100%}.sky-datepicker-calendar-inner .sky-datepicker-header-left{text-align:left}.sky-datepicker-calendar-inner .sky-datepicker-header-center{display:flex;width:100%}.sky-datepicker-calendar-inner .sky-datepicker-header-right{text-align:right}.sky-datepicker-calendar-inner table{border-spacing:var(--sky-override-datepicker-table-border-spacing, var(--sky-space-gap-action_group-s))}.sky-datepicker-calendar-inner table td{padding:var(--sky-override-datepicker-td-padding, 0)}.sky-datepicker-calendar-inner table th{padding-bottom:var(--sky-override-datepicker-td-padding, calc(var(--sky-space-gap-text_action-xs) - var(--sky-space-gap-action_group-s)))}.sky-datepicker-chevron{color:var(--sky-override-chevron-color, var(--sky-color-icon-deemphasized))}sky-yearpicker .sky-btn.sky-btn-default,sky-monthpicker .sky-btn.sky-btn-default{padding:var(--sky-override-datepicker-month-year-button-padding, var(--sky-comp-button-borderless-space-inset-top) var(--sky-comp-button-borderless-space-inset-right) var(--sky-comp-button-borderless-space-inset-bottom) var(--sky-comp-button-borderless-space-inset-left))}.sky-datepicker-weekday-text{font-size:var(--sky-override-datepicker-weekday-font-size, var(--sky-font-size-body-m));font-weight:var(--sky-override-datepicker-weekday-font-weight, var(--sky-font-style-emphasized))}\\n\"] }]\n }], propDecorators: { customDates: [{\n type: Input\n }], startingDay: [{\n type: Input\n }], minDate: [{\n type: Input\n }], maxDate: [{\n type: Input\n }], startAtDate: [{\n type: Input\n }], selectedDate: [{\n type: Input\n }], selectedDateChange: [{\n type: Output\n }], calendarModeChange: [{\n type: Output\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci1jYWxlbmRhci1pbm5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL2RhdGVwaWNrZXIvY2FsZW5kYXIvZGF0ZXBpY2tlci1jYWxlbmRhci1pbm5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL2RhdGVwaWNrZXIvY2FsZW5kYXIvZGF0ZXBpY2tlci1jYWxlbmRhci1pbm5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUlMLE1BQU0sRUFFTixpQkFBaUIsRUFDakIsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN0RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDckQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUU1QyxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUxQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7OztBQVFyRCxJQUFJLGdCQUFnQixHQUFHLENBQUMsQ0FBQztBQUV6Qjs7R0FFRztBQVFILE1BQU0sT0FBTyxtQ0FBbUM7SUFQaEQ7UUErQ1MsdUJBQWtCLEdBQXVCLElBQUksWUFBWSxDQUM5RCxTQUFTLENBQ1YsQ0FBQztRQUdLLHVCQUFrQixHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO1FBRTdF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YUFBYTs7MkZBSzFCLG1DQUFtQztrQkFQL0MsU0FBUztvQ0FDTyxpQkFBaUIsQ0FBQyxJQUFJLFdBQzVCLENBQUMsWUFBWSxFQUFFLGFBQWEsQ0FBQyxZQUM1QixzQkFBc0I7OEJBUXpCLFdBQVc7c0JBRGpCLEtBQUs7Z0JBSUssV0FBVztzQkFEckIsS0FBSztnQkFVQyxPQUFPO3NCQURiLEtBQUs7Z0JBSUMsT0FBTztzQkFEYixLQUFLO2dCQUlDLFdBQVc7c0JBRGpCLEtBQUs7Z0JBSUssWUFBWTtzQkFEdEIsS0FBSztnQkFnQkMsa0JBQWtCO3NCQUR4QixNQUFNO2dCQU1BLGtCQUFrQjtzQkFEeEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIGluamVjdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTa3lMaXZlQW5ub3VuY2VyU2VydmljZSB9IGZyb20gJ0Bza3l1eC9jb3JlJztcbmltcG9ydCB7IFNreUxpYlJlc291cmNlc1NlcnZpY2UgfSBmcm9tICdAc2t5dXgvaTE4bic7XG5pbXBvcnQgeyBTa3lJY29uTW9kdWxlIH0gZnJvbSAnQHNreXV4L2ljb24nO1xuXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU2t5RGF0ZUZvcm1hdHRlciB9IGZyb20gJy4uL2RhdGUtZm9ybWF0dGVyJztcbmltcG9ydCB7IFNreURhdGVwaWNrZXJDdXN0b21EYXRlIH0gZnJvbSAnLi4vZGF0ZXBpY2tlci1jdXN0b20tZGF0ZSc7XG5cbmltcG9ydCB7IFNreURheVBpY2tlckNvbnRleHQgfSBmcm9tICcuL2RheXBpY2tlci1jb250ZXh0JztcblxudHlwZSBEYXRlQ29tcGFyYXRvciA9IChkYXRlMTogRGF0ZSwgZGF0ZTI6IERhdGUpID0+IG51bWJlciB8IHVuZGVmaW5lZDtcbnR5cGUgS2V5Ym9hcmRFdmVudEhhbmRsZXIgPSAoa2V5OiBzdHJpbmcsIGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB2b2lkO1xuXG5sZXQgbmV4dERhdGVwaWNrZXJJZCA9IDA7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbkBDb21wb25lbnQoe1xuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBTa3lJY29uTW9kdWxlXSxcbiAgc2VsZWN0b3I6ICdza3ktZGF0ZXBpY2tlci1pbm5lcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRlcGlja2VyLWNhbGVuZGFyLWlubmVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2RhdGVwaWNrZXItY2FsZW5kYXItaW5uZXIuY29tcG9uZW50LnNjc3MnLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lEYXRlcGlja2VyQ2FsZW5kYXJJbm5lckNvbXBvbmVudFxuICBpbXBsZW1lbnRzIE9uRGVzdHJveSwgT25Jbml0LCBPbkNoYW5nZXNcbntcbiAgQElucHV0KClcbiAgcHVibGljIGN1c3RvbURhdGVzOiBTa3lEYXRlcGlja2VyQ3VzdG9tRGF0ZVtdIHwgdW5kZWZpbmVkO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgc3RhcnRpbmdEYXkodmFsdWU6IG51bWJlciB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19zdGFydGluZ0RheSA9IHZhbHVlIHx8IDA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHN0YXJ0aW5nRGF5KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuI19zdGFydGluZ0RheTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBtaW5EYXRlOiBEYXRlIHwgdW5kZWZpbmVkO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBtYXhEYXRlOiBEYXRlIHwgdW5kZWZpbmVkO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzdGFydEF0RGF0ZTogRGF0ZSB8IHVuZGVmaW5lZDtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHNlbGVjdGVkRGF0ZSh2YWx1ZTogRGF0ZSB8IHVuZGVmaW5lZCkge1xuICAgIGlmICh2YWx1ZSAmJiB0aGlzLmRhdGVGb3JtYXR0ZXIuZGF0ZUlzVmFsaWQodmFsdWUpKSB7XG4gICAgICB0aGlzLiNfc2VsZWN0ZWREYXRlID0gdmFsdWU7XG4gICAgICB0aGlzLmFjdGl2ZURhdGUgPSB2YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy4jX3NlbGVjdGVkRGF0ZSA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuYWN0aXZlRGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBzZWxlY3RlZERhdGUoKTogRGF0ZSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI19zZWxlY3RlZERhdGU7XG4gIH1cblxuICBAT3V0cHV0KClcbiAgcHVibGljIHNlbGVjdGVkRGF0ZUNoYW5nZTogRXZlbnRFbWl0dGVyPERhdGU+ID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPihcbiAgICB1bmRlZmluZWQsXG4gICk7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBjYWxlbmRhck1vZGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgLy8gVE9ETzogYGFjdGl2ZURhdGVgIGlzIHZlcnkgc2ltaWxhciB0byBgc2VsZWN0ZWREYXRlYCBhbmQgYXQgdGhlIHZlcnkgbGVhc3Qgc2hvdWxkIGJlIGFibGUgdG8gYmUgdW5kZWZpbmVkLiBIb3dldmVyLCB0aGlzIHdvdWxkIHRha2UgY29uc2lkZXJhYmxlIHJlZmFjdG9yaW5nIHRvIGRvIGFuZCB0aHVzIGhhcyBiZWVuIGRlZmVycmVkLlxuICBwdWJsaWMgYWN0aXZlRGF0ZSA9IG5ldyBEYXRlKCk7XG4gIHB1YmxpYyBhY3RpdmVEYXRlSWQgPSAnJztcblxuICBwdWJsaWMgdGl0bGUgPSAnJztcblxuICBwdWJsaWMgbWluTW9kZSA9ICdkYXknO1xuICBwdWJsaWMgbWF4TW9kZSA9ICd5ZWFyJztcbiAgcHVibGljIG1vbnRoQ29sTGltaXQgPSAzO1xuICBwdWJsaWMgeWVhckNvbExpbWl0ID0gNTtcbiAgcHVibGljIGRhdGVwaWNrZXJNb2RlID0gJ2RheSc7XG4gIHB1YmxpYyB5ZWFyUmFuZ2UgPSAyMDtcblxuICBwdWJsaWMgZm9ybWF0RGF5ID0gJ0REJztcbiAgcHVibGljIGZvcm1hdE1vbnRoID0gJ01NTU0nO1xuICBwdWJsaWMgZm9ybWF0WWVhciA9ICdZWVlZJztcbiAgcHVibGljIGZvcm1hdERheUhlYWRlciA9ICdkZCc7XG4gIHB1YmxpYyBmb3JtYXREYXlUaXRsZSA9ICdNTU1NIFlZWVknO1xuICBwdWJsaWMgZm9ybWF0TW9udGhUaXRsZSA9ICdZWVlZJztcbiAgcHVibGljIGZvcm1hdERheUxhYmVsID0gJ2RkZGQsIE1NTU0gRG8gWVlZWSc7XG4gIHB1YmxpYyBmb3JtYXRNb250aExhYmVsID0gJ01NTU0gWVlZWSc7XG4gIHB1YmxpYyBmb3JtYXRZZWFyTGFiZWwgPSAnWVlZWSc7XG5cbiAgcHVibGljIHByZXZpb3VzTGFiZWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHVibGljIG5leHRMYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyBkYXRlcGlja2VySWQgPSBgc2t5LWRhdGVwaWNrZXItJHsrK25leHREYXRlcGlja2VySWR9YDtcblxuICBwdWJsaWMgc3RlcERheTogYW55ID0ge307XG4gIHB1YmxpYyBzdGVwTW9udGg6IGFueSA9IHt9O1xuICBwdWJsaWMgc3RlcFllYXI6IGFueSA9IHt9O1xuXG4gIHByb3RlY3RlZCBtb2Rlczogc3RyaW5nW10gPSBbJ2RheScsICdtb250aCcsICd5ZWFyJ107XG4gIHByb3RlY3RlZCBkYXRlRm9ybWF0dGVyOiBTa3lEYXRlRm9ybWF0dGVyID0gbmV3IFNreURhdGVGb3JtYXR0ZXIoKTtcblxuICBwdWJsaWMgcmVmcmVzaFZpZXdIYW5kbGVyRGF5OiAoKCkgPT4gc3RyaW5nKSB8IHVuZGVmaW5lZDtcbiAgcHVibGljIGNvbXBhcmVIYW5kbGVyRGF5OiBEYXRlQ29tcGFyYXRvciB8IHVuZGVmaW5lZDtcbiAgcHVibGljIHJlZnJlc2hWaWV3SGFuZGxlck1vbnRoOiAoKCkgPT4gc3RyaW5nKSB8IHVuZGVmaW5lZDtcbiAgcHVibGljIGNvbXBhcmVIYW5kbGVyTW9udGg6IERhdGVDb21wYXJhdG9yIHwgdW5kZWZpbmVkO1xuICBwdWJsaWMgcmVmcmVzaFZpZXdIYW5kbGVyWWVhcjogKCgpID0+IHN0cmluZykgfCB1bmRlZmluZWQ7XG4gIHB1YmxpYyBjb21wYXJlSGFuZGxlclllYXI6IERhdGVDb21wYXJhdG9yIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyBoYW5kbGVLZXlkb3duRGF5OiBLZXlib2FyZEV2ZW50SGFuZGxlciB8IHVuZGVmaW5lZDtcbiAgcHVibGljIGhhbmRsZUtleWRvd25Nb250aDogS2V5Ym9hcmRFdmVudEhhbmRsZXIgfCB1bmRlZmluZWQ7XG4gIHB1YmxpYyBoYW5kbGVLZXlkb3duWWVhcjogS2V5Ym9hcmRFdmVudEhhbmRsZXIgfCB1bmRlZmluZWQ7XG5cbiAgcHVibGljIGtleXMgPSBbXG4gICAgJ2VudGVyJyxcbiAgICAnICcsXG4gICAgJ3NwYWNlYmFyJyxcbiAgICAncGFnZXVwJyxcbiAgICAncGFnZWRvd24nLFxuICAgICdlbmQnLFxuICAgICdob21lJyxcbiAgICAnYXJyb3dsZWZ0JyxcbiAgICAnYXJyb3d1cCcsXG4gICAgJ2Fycm93cmlnaHQnLFxuICAgICdhcnJvd2Rvd24nLFxuICBdO1xuXG4gICNuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgI3ByZXZEYXk6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgI25leHREYXk6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgI3ByZXZNb250aDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAjbmV4dE1vbnRoOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICNwcmV2WWVhcjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAjbmV4dFllYXI6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAjX3NlbGVjdGVkRGF0ZTogRGF0ZSB8IHVuZGVmaW5lZDtcbiAgI19zdGFydGluZ0RheSA9IDA7XG5cbiAgcmVhZG9ubHkgI3Jlc291cmNlc1N2YyA9IGluamVjdChTa3lMaWJSZXNvdXJjZXNTZXJ2aWNlKTtcbiAgcmVhZG9ubHkgI2xpdmVBbm5vdW5jZXJTdmMgPSBpbmplY3QoU2t5TGl2ZUFubm91bmNlclNlcnZpY2UpO1xuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZERhdGUpIHtcbiAgICAgIHRoaXMuYWN0aXZlRGF0ZSA9IG5ldyBEYXRlKHRoaXMuc2VsZWN0ZWREYXRlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hY3RpdmVEYXRlID0gdGhpcy5zdGFydEF0RGF0ZSA/PyBuZXcgRGF0ZSgpO1xuICAgIH1cblxuICAgIHRoaXMuI3Jlc291cmNlc1N2Y1xuICAgICAgLmdldFN0cmluZ3Moe1xuICAgICAgICBwcmV2RGF5OiAnc2t5dXhfZGF0ZXBpY2tlcl9tb3ZlX2NhbGVuZGFyX3ByZXZpb3VzX2RheScsXG4gICAgICAgIG5leHREYXk6ICdza3l1eF9kYXRlcGlja2VyX21vdmVfY2FsZW5kYXJfbmV4dF9kYXknLFxuICAgICAgICBwcmV2TW9udGg6ICdza3l1eF9kYXRlcGlja2VyX21vdmVfY2FsZW5kYXJfcHJldmlvdXNfbW9udGgnLFxuICAgICAgICBuZXh0TW9udGg6ICdza3l1eF9kYXRlcGlja2VyX21vdmVfY2FsZW5kYXJfbmV4dF9tb250aCcsXG4gICAgICAgIHByZXZZZWFyOiAnc2t5dXhfZGF0ZXBpY2tlcl9tb3ZlX2NhbGVuZGFyX3ByZXZpb3VzX3llYXInLFxuICAgICAgICBuZXh0WWVhcjogJ3NreXV4X2RhdGVwaWNrZXJfbW92ZV9jYWxlbmRhcl9uZXh0X3llYXInLFxuICAgICAgfSlcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKHJlc291cmNlcykgPT4ge1xuICAgICAgICB0aGlzLiNwcmV2RGF5ID0gcmVzb3VyY2VzLnByZXZEYXk7XG4gICAgICAgIHRoaXMuI25leHREYXkgPSByZXNvdXJjZXMubmV4dERheTtcbiAgICAgICAgdGhpcy4jcHJldk1vbnRoID0gcmVzb3VyY2VzLnByZXZNb250aDtcbiAgICAgICAgdGhpcy4jbmV4dE1vbnRoID0gcmVzb3VyY2VzLm5leHRNb250aDtcbiAgICAgICAgdGhpcy4jcHJldlllYXIgPSByZXNvdXJjZXMucHJldlllYXI7XG4gICAgICAgIHRoaXMuI25leHRZZWFyID0gcmVzb3VyY2VzLm5leHRZZWFyO1xuXG4gICAgICAgIHRoaXMucmVmcmVzaFZpZXcoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICB0aGlzLnJlZnJlc2hWaWV3KCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIHNldENvbXBhcmVIYW5kbGVyKGhhbmRsZXI6IERhdGVDb21wYXJhdG9yLCB0eXBlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodHlwZSA9PT0gJ2RheScpIHtcbiAgICAgIHRoaXMuY29tcGFyZUhhbmRsZXJEYXkgPSBoYW5kbGVyO1xuICAgIH1cblxuICAgIGlmICh0eXBlID09PSAnbW9udGgnKSB7XG4gICAgICB0aGlzLmNvbXBhcmVIYW5kbGVyTW9udGggPSBoYW5kbGVyO1xuICAgIH1cblxuICAgIGlmICh0eXBlID09PSAneWVhcicpIHtcbiAgICAgIHRoaXMuY29tcGFyZUhhbmRsZXJZZWFyID0gaGFuZGxlcjtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgY29tcGFyZShcbiAgICBkYXRlMTogRGF0ZSB8IHVuZGVmaW5lZCxcbiAgICBkYXRlMjogRGF0ZSB8IHVuZGVmaW5lZCxcbiAgKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoZGF0ZTEgPT09IHVuZGVmaW5lZCB8fCBkYXRlMiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmRhdGVwaWNrZXJNb2RlID09PSAnZGF5JyAmJiB0aGlzLmNvbXBhcmVIYW5kbGVyRGF5KSB7XG4gICAgICByZXR1cm4gdGhpcy5jb21wYXJlSGFuZGxlckRheShkYXRlMSwgZGF0ZTIpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmRhdGVwaWNrZXJNb2RlID09PSAnbW9udGgnICYmIHRoaXMuY29tcGFyZUhhbmRsZXJNb250aCkge1xuICAgICAgcmV0dXJuIHRoaXMuY29tcGFyZUhhbmRsZXJNb250aChkYXRlMSwgZGF0ZTIpO1xuICAgIH1cblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgLyogc2FuaXR5IGNoZWNrICovXG4gICAgaWYgKHRoaXMuZGF0ZXBpY2tlck1vZGUgPT09ICd5ZWFyJyAmJiB0aGlzLmNvbXBhcmVIYW5kbGVyWWVhcikge1xuICAgICAgcmV0dXJuIHRoaXMuY29tcGFyZUhhbmRsZXJZZWFyKGRhdGUxLCBkYXRlMik7XG4gICAgfVxuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHVibGljIHNldFJlZnJlc2hWaWV3SGFuZGxlcihoYW5kbGVyOiAoKSA9PiBzdHJpbmcsIHR5cGU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0eXBlID09PSAnZGF5Jykge1xuICAgICAgdGhpcy5yZWZyZXNoVmlld0hhbmRsZXJEYXkgPSBoYW5kbGVyO1xuICAgIH1cblxuICAgIGlmICh0eXBlID09PSAnbW9udGgnKSB7XG4gICAgICB0aGlzLnJlZnJlc2hWaWV3SGFuZGxlck1vbnRoID0gaGFuZGxlcjtcbiAgICB9XG5cbiAgICBpZiAodHlwZSA9PT0gJ3llYXInKSB7XG4gICAgICB0aGlzLnJlZnJlc2hWaWV3SGFuZGxlclllYXIgPSBoYW5kbGVyO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyByZWZyZXNoVmlldygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kYXRlcGlja2VyTW9kZSA9PT0gJ2RheScgJiYgdGhpcy5yZWZyZXNoVmlld0hhbmRsZXJEYXkpIHtcbiAgICAgIHRoaXMudGl0bGUgPSB0aGlzLnJlZnJlc2hWaWV3SGFuZGxlckRheSgpO1xuICAgICAgdGhpcy5wcmV2aW91c0xhYmVsID0gdGhpcy4jcHJldkRheTtcbiAgICAgIHRoaXMubmV4dExhYmVsID0gdGhpcy4jbmV4dERheTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5kYXRlcGlja2VyTW9kZSA9PT0gJ21vbnRoJyAmJiB0aGlzLnJlZnJlc2hWaWV3SGFuZGxlck1vbnRoKSB7XG4gICAgICB0aGlzLnRpdGxlID0gdGhpcy5yZWZyZXNoVmlld0hhbmRsZXJNb250aCgpO1xuICAgICAgdGhpcy5wcmV2aW91c0xhYmVsID0gdGhpcy4jcHJldk1vbnRoO1xuICAgICAgdGhpcy5uZXh0TGFiZWwgPSB0aGlzLiNuZXh0TW9udGg7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZGF0ZXBpY2tlck1vZGUgPT09ICd5ZWFyJyAmJiB0aGlzLnJlZnJlc2hWaWV3SGFuZGxlclllYXIpIHtcbiAgICAgIHRoaXMudGl0bGUgPSB0aGlzLnJlZnJlc2hWaWV3SGFuZGxlclllYXIoKTtcbiAgICAgIHRoaXMucHJldmlvdXNMYWJlbCA9IHRoaXMuI3ByZXZZZWFyO1xuICAgICAgdGhpcy5uZXh0TGFiZWwgPSB0aGlzLiNuZXh0WWVhcjtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2V0S2V5ZG93bkhhbmRsZXIoaGFuZGxlcjogS2V5Ym9hcmRFdmVudEhhbmRsZXIsIHR5cGU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0eXBlID09PSAnZGF5Jykge1xuICAgICAgdGhpcy5oYW5kbGVLZXlkb3duRGF5ID0gaGFuZGxlcjtcbiAgICB9XG5cbiAgICBpZiAodHlwZSA9PT0gJ21vbnRoJykge1xuICAgICAgdGhpcy5oYW5kbGVLZXlkb3duTW9udGggPSBoYW5kbGVyO1xuICAgIH1cblxuICAgIGlmICh0eXBlID09PSAneWVhcicpIHtcbiAgICAgIHRoaXMuaGFuZGxlS2V5ZG93blllYXIgPSBoYW5kbGVyO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVLZXlkb3duKGtleTogc3RyaW5nLCBldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRhdGVwaWNrZXJNb2RlID09PSAnZGF5JyAmJiB0aGlzLmhhbmRsZUtleWRvd25EYXkpIHtcbiAgICAgIHRoaXMuaGFuZGxlS2V5ZG93bkRheShrZXksIGV2ZW50KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5kYXRlcGlja2VyTW9kZSA9PT0gJ21vbnRoJyAmJiB0aGlzLmhhbmRsZUtleWRvd25Nb250aCkge1xuICAgICAgdGhpcy5oYW5kbGVLZXlkb3duTW9udGgoa2V5LCBldmVudCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZGF0ZXBpY2tlck1vZGUgPT09ICd5ZWFyJyAmJiB0aGlzLmhhbmRsZUtleWRvd25ZZWFyKSB7XG4gICAgICB0aGlzLmhhbmRsZUtleWRvd25ZZWFyKGtleSwgZXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBkYXRlRmlsdGVyKGRhdGU6IERhdGUsIGZvcm1hdDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5kYXRlRm9ybWF0dGVyLmZvcm1hdChkYXRlLCBmb3JtYXQpO1xuICB9XG5cbiAgcHVibGljIGlzQWN0aXZlKGRhdGVPYmplY3Q6IFNreURheVBpY2tlckNvbnRleHQpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5jb21wYXJlKGRhdGVPYmplY3QuZGF0ZSwgdGhpcy5hY3RpdmVEYXRlKSA9PT0gMCkge1xuICAgICAgdGhpcy5hY3RpdmVEYXRlSWQgPSBkYXRlT2JqZWN0LnVpZDtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBvbktleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBrZXkgPSBldmVudC5rZXk/LnRvTG93ZXJDYXNlKCk7XG5cbiAgICBpZiAoIXRoaXMua2V5cy5pbmNsdWRlcyhrZXkpIHx8IGV2ZW50LnNoaWZ0S2V5KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIGlmIChrZXkgPT09ICdlbnRlcicgfHwga2V5ID09PSAnc3BhY2ViYXInIHx8IGtleSA9PT0gJyAnKSB7XG4gICAgICBpZiAodGhpcy5pc0Rpc2FibGVkKHRoaXMuYWN0aXZlRGF0ZSkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5zZWxlY3QodGhpcy5hY3RpdmVEYXRlKTtcbiAgICB9IGVsc2UgaWYgKGV2ZW50LmN0cmxLZXkgJiYgKGtleSA9PT0gJ2Fycm93dXAnIHx8IGtleSA9PT0gJ2Fycm93ZG93bicpKSB7XG4gICAgICB0aGlzLnRvZ2dsZU1vZGUoa2V5ID09PSAnYXJyb3d1cCcgPyAxIDogLTEpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmhhbmRsZUtleWRvd24oa2V5LCBldmVudCk7XG4gICAgICB0aGlzLnJlZnJlc2hWaWV3KCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNyZWF0ZURhdGVPYmplY3QoXG4gICAgZGF0ZTogRGF0ZSxcbiAgICBmb3JtYXQ6IHN0cmluZyxcbiAgICBpc1NlY29uZGFyeTogYm9vbGVhbixcbiAgICBpZDogc3RyaW5nLFxuICApOiBTa3lEYXlQaWNrZXJDb250ZXh0IHtcbiAgICBjb25zdCBjdXN0b21EYXRlTWF0Y2ggPSB0aGlzLiNnZXRDdXN0b21EYXRlKGRhdGUpO1xuXG4gICAgY29uc3QgZGF0ZU9iamVjdDogU2t5RGF5UGlja2VyQ29udGV4dCA9IHtcbiAgICAgIGRhdGU6IG5ldyBEYXRlKGRhdGUuZ2V0RnVsbFllYXIoKSwgZGF0ZS5nZXRNb250aCgpLCBkYXRlLmdldERhdGUoKSksXG4gICAgICBsYWJlbDogdGhpcy5kYXRlRmlsdGVyKGRhdGUsIGZvcm1hdCksXG4gICAgICBzZWxlY3RlZDpcbiAgICAgICAgISF0aGlzLnNlbGVjdGVkRGF0ZSAmJiB0aGlzLmNvbXBhcmUoZGF0ZSwgdGhpcy5zZWxlY3RlZERhdGUpID09PSAwLFxuICAgICAgZGlzYWJsZWQ6IHRoaXMuaXNEaXNhYmxlZChkYXRlKSxcbiAgICAgIGN1cnJlbnQ6IHRoaXMuY29tcGFyZShkYXRlLCBuZXcgRGF0ZSgpKSA9PT0gMCxcbiAgICAgIHNlY29uZGFyeTogaXNTZWNvbmRhcnksXG4gICAgICB1aWQ6IGlkLFxuICAgICAga2V5RGF0ZTogY3VzdG9tRGF0ZU1hdGNoID8gY3VzdG9tRGF0ZU1hdGNoLmtleURhdGUgOiB1bmRlZmluZWQsXG4gICAgICBrZXlEYXRlVGV4dDogY3VzdG9tRGF0ZU1hdGNoID8gY3VzdG9tRGF0ZU1hdGNoLmtleURhdGVUZXh0IDogW10sXG4gICAgfTtcblxuICAgIHJldHVybiBkYXRlT2JqZWN0O1xuICB9XG5cbiAgcHVibGljIGNyZWF0ZUNhbGVuZGFyUm93cyhcbiAgICBkYXRlczogU2t5RGF5UGlja2VyQ29udGV4dFtdLFxuICAgIHNpemU6IG51bWJlcixcbiAgKTogU2t5RGF5UGlja2VyQ29udGV4dFtdW10ge1xuICAgIGNvbnN0IHJvd3M6IFNreURheVBpY2tlckNvbnRleHRbXVtdID0gW107XG4gICAgd2hpbGUgKGRhdGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIHJvd3MucHVzaChkYXRlcy5zcGxpY2UoMCwgc2l6ZSkpO1xuICAgIH1cbiAgICByZXR1cm4gcm93cztcbiAgfVxuXG4gIC8qXG4gICAgVGhpcyBpcyBlbnN1cmVzIHRoYXQgbm8gc3RyYW5nZW5lc3MgaGFwcGVucyB3aGVuIGNvbnZlcnRpbmcgYSBkYXRlIHRvIGxvY2FsIHRpbWUuXG4gICovXG4gIHB1YmxpYyBmaXhUaW1lWm9uZShkYXRlOiBEYXRlKTogRGF0ZSB7XG4gICAgY29uc3QgbmV3RGF0ZSA9IG5ldyBEYXRlKGRhdGUpO1xuICAgIG5ld0RhdGUuc2V0RnVsbFllYXIoZGF0ZS5nZXRGdWxsWWVhcigpLCBkYXRlLmdldE1vbnRoKCksIGRhdGUuZ2V0RGF0ZSgpKTtcblxuICAgIHJldHVybiBuZXdEYXRlO1xuICB9XG5cbiAgcHVibGljIHNlbGVjdENhbGVuZGFyKGV2ZW50OiBFdmVudCwgZGF0ZTogRGF0ZSwgY2xvc2VQaWNrZXIgPSBmYWxzZSk6IHZvaWQge1xuICAgIGlmICghY2xvc2VQaWNrZXIpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gICAgdGhpcy5zZWxlY3QoZGF0ZSk7XG4gIH1cblxuICBwdWJsaWMgc2VsZWN0KGRhdGU6IERhdGUsIGlzTWFudWFsID0gdHJ1ZSk6IHZvaWQge1xuICAgIHRoaXMuYWN0aXZlRGF0ZSA9IG5ldyBEYXRlKFxuICAgICAgZGF0ZS5nZXRGdWxsWWVhcigpLFxuICAgICAgZGF0ZS5nZXRNb250aCgpLFxuICAgICAgZGF0ZS5nZXREYXRlKCksXG4gICAgKTtcblxuICAgIC8qXG4gICAgICAgIE9ubHkgYWN0dWFsbHkgc2VsZWN0IGRhdGUgaWYgaW4gbWluTW9kZSAoZGF5IHBpY2tlciBtb2RlKS5cbiAgICAgICAgT3RoZXJ3aXNlLCBqdXN0IGNoYW5nZSB0aGUgYWN0aXZlIHZpZXcgZm9yIHRoZSBkYXRlcGlja2VyLlxuICAgICovXG4gICAgaWYgKHRoaXMuZGF0ZXBpY2tlck1vZGUgPT09IHRoaXMubWluTW9kZSkge1xuICAgICAgdGhpcy5zZWxlY3RlZERhdGUgPSBuZXcgRGF0ZSh0aGlzLmFjdGl2ZURhdGUpO1xuICAgICAgaWYgKGlzTWFudWFsKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZERhdGUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRhdGVwaWNrZXJNb2RlID1cbiAgICAgICAgdGhpcy5tb2Rlc1t0aGlzLm1vZGVzLmluZGV4T2YodGhpcy5kYXRlcGlja2VyTW9kZSkgLSAxXTtcbiAgICAgIHRoaXMuY2FsZW5kYXJNb2RlQ2hhbmdlLmVtaXQodGhpcy5kYXRlcGlja2VyTW9kZSk7XG4gICAgfVxuXG4gICAgdGhpcy5yZWZyZXNoVmlldygpO1xuICB9XG5cbiAgcHVibGljIG1vdmVDYWxlbmRhcihldmVudDogRXZlbnQsIGRpcmVjdGlvbjogbnVtYmVyKTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLm1vdmUoZGlyZWN0aW9uKTtcbiAgfVxuXG4gIHB1YmxpYyBtb3ZlKGRpcmVjdGlvbjogbnVtYmVyKTogdm9pZCB7XG4gICAgbGV0IGV4cGVjdGVkU3RlcDogYW55O1xuICAgIGlmICh0aGlzLmRhdGVwaWNrZXJNb2RlID09PSAnZGF5Jykge1xuICAgICAgZXhwZWN0ZWRTdGVwID0gdGhpcy5zdGVwRGF5O1xuICAgIH1cblxuICAgIGlmICh0aGlzLmRhdGVwaWNrZXJNb2RlID09PSAnbW9udGgnKSB7XG4gICAgICBleHBlY3RlZFN0ZXAgPSB0aGlzLnN0ZXBNb250aDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5kYXRlcGlja2VyTW9kZSA9PT0gJ3llYXInKSB7XG4gICAgICBleHBlY3RlZFN0ZXAgPSB0aGlzLnN0ZXBZZWFyO1xuICAgIH1cblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgLyogc2FuaXR5IGNoZWNrICovXG4gICAgaWYgKGV4cGVjdGVkU3RlcCkge1xuICAgICAgY29uc3QgeWVhciA9XG4gICAgICAgIHRoaXMuYWN0aXZlRGF0ZS5nZXRGdWxsWWVhcigpICsgZGlyZWN0aW9uICogKGV4cGVjdGVkU3RlcC55ZWFycyB8fCAwKTtcbiAgICAgIGNvbnN0IG1vbnRoID1cbiAgICAgICAgdGhpcy5hY3RpdmVEYXRlLmdldE1vbnRoKCkgKyBkaXJlY3Rpb24gKiAoZXhwZWN0ZWRTdGVwLm1vbnRocyB8fCAwKTtcblxuICAgICAgdGhpcy5hY3RpdmVEYXRlID0gbmV3IERhdGUoeWVhciwgbW9udGgsIDEpO1xuXG4gICAgICB0aGlzLnJlZnJlc2hWaWV3KCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHRvZ2dsZU1vZGVDYWxlbmRhcihldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMudG9nZ2xlTW9kZSgxKTtcbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGVNb2RlKGRpcmVjdGlvbjogbnVtYmVyKTogdm9pZCB7XG4gICAgLyppc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIGRpcmVjdGlvbiA9IGRpcmVjdGlvbiB8fCAxO1xuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAvKiBzYW5pdHkgY2hlY2sgKi9cbiAgICBpZiAoXG4gICAgICAhKGRpcmVjdGlvbiA9PT0gMSAmJiB0aGlzLmRhdGVwaWNrZXJNb2RlID09PSB0aGlzLm1heE1vZGUpICYmXG4gICAgICAhKHRoaXMuZGF0ZXBpY2tlck1vZGUgPT09IHRoaXMubWluTW9kZSAmJiBkaXJlY3Rpb24gPT09IC0xKVxuICAgICkge1xuICAgICAgdGhpcy5kYXRlcGlja2VyTW9kZSA9XG4gICAgICAgIHRoaXMubW9kZXNbdGhpcy5tb2Rlcy5pbmRleE9mKHRoaXMuZGF0ZXBpY2tlck1vZGUpICsgZGlyZWN0aW9uXTtcbiAgICAgIHRoaXMuY2FsZW5kYXJNb2RlQ2hhbmdlLmVtaXQodGhpcy5kYXRlcGlja2VyTW9kZSk7XG4gICAgICB0aGlzLnJlZnJlc2hWaWV3KCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFubm91bmNlRGF0ZShkYXRlOiBEYXRlLCBmb3JtYXQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGNhcHRpb24gPSB0aGlzLmRhdGVGaWx0ZXIoZGF0ZSwgZm9ybWF0KTtcbiAgICB0aGlzLiNsaXZlQW5ub3VuY2VyU3ZjLmFubm91bmNlKGNhcHRpb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIERhdGUgaXMgZGlzYWJsZWQgaWYgaXQgbWVldHMgYW55IG9mIHRoZXNlIGNyaXRlcmlhOlxuICAgKiAxLiBEYXRlIGZhbGxzIG91dHNpZGUgdGhlIG1pbiBvciBtYXggZGF0ZXMgc2V0IGJ5IHRoZSBTa3lEYXRlcGlja2VyQ29uZmlnU2VydmljZS5cbiAgICogMi4gRGF0ZSBpcyBtYXJrZWQgYXMgZGlzYWJsZWQgaW4gdGhlIGN1c3RvbURhdGVzIGFycmF5LlxuICAgKi9cbiAgcHJvdGVjdGVkIGlzRGlzYWJsZWQoZGF0ZTogRGF0ZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGN1c3RvbURhdGUgPSB0aGlzLiNnZXRDdXN0b21EYXRlKGRhdGUpO1xuICAgIGNvbnN0IG1pbkRhdGVDb21wYXJlID0gdGhpcy5jb21wYXJlKGRhdGUsIHRoaXMubWluRGF0ZSk7XG4gICAgY29uc3QgbWF4RGF0ZUNvbXBhcmUgPSB0aGlzLmNvbXBhcmUoZGF0ZSwgdGhpcy5tYXhEYXRlKTtcblxuICAgIHJldHVybiAoXG4gICAgICAobWluRGF0ZUNvbXBhcmUgIT09IHVuZGVmaW5lZCAmJiBtaW5EYXRlQ29tcGFyZSA8IDApIHx8XG4gICAgICAobWF4RGF0ZUNvbXBhcmUgIT09IHVuZGVmaW5lZCAmJiBtYXhEYXRlQ29tcGFyZSA+IDApIHx8XG4gICAgICAhIWN1c3RvbURhdGU/LmRpc2FibGVkXG4gICAgKTtcbiAgfVxuXG4gICNnZXRDdXN0b21EYXRlKGRhdGU6IERhdGUpOiBTa3lEYXRlcGlja2VyQ3VzdG9tRGF0ZSB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHRoaXMuY3VzdG9tRGF0ZXMpIHtcbiAgICAgIHJldHVybiB0aGlzLmN1c3RvbURhdGVzLmZpbmQoKGN1c3RvbURhdGU6IFNreURhdGVwaWNrZXJDdXN0b21EYXRlKSA9PiB7XG4gICAgICAgIHJldHVybiBjdXN0b21EYXRlLmRhdGUuZ2V0VGltZSgpID09PSBkYXRlLmdldFRpbWUoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG4iLCJAaWYgKGRhdGVwaWNrZXJNb2RlKSB7XG4gIDxkaXYgY2xhc3M9XCJza3ktZGF0ZXBpY2tlci1jYWxlbmRhci1pbm5lclwiPlxuICAgIDxkaXYgY2xhc3M9XCJza3ktZGF0ZXBpY2tlci1jYWxlbmRhci1oZWFkZXJcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwic2t5LWRhdGVwaWNrZXItaGVhZGVyLWxlZnRcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzPVwic2t5LWJ0biBza3ktYnRuLWRlZmF1bHQgc2t5LWJ0bi1zbSBza3ktZGF0ZXBpY2tlci1idG4tcHJldmlvdXNcIlxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwicHJldmlvdXNMYWJlbFwiXG4gICAgICAgICAgKGNsaWNrKT1cIm1vdmVDYWxlbmRhcigkZXZlbnQsIC0xKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c2t5LWljb24gY2xhc3M9XCJza3ktZGF0ZXBpY2tlci1jaGV2cm9uXCIgaWNvbk5hbWU9XCJjaGV2cm9uLWxlZnRcIiAvPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwic2t5LWRhdGVwaWNrZXItaGVhZGVyLWNlbnRlclwiPlxuICAgICAgICA8IS0tIGRpc3BsYXk6IGlubGluZSAtLT5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzPVwic2t5LWJ0biBza3ktYnRuLWRlZmF1bHQgc2t5LWJ0bi1zbSBza3ktZGF0ZXBpY2tlci1jYWxlbmRhci10aXRsZVwiXG4gICAgICAgICAgW2lkXT1cImRhdGVwaWNrZXJJZCArICctdGl0bGUnXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZGF0ZXBpY2tlck1vZGUgPT09IG1heE1vZGVcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICdza3ktYnRuLWRpc2FibGVkJzogZGF0ZXBpY2tlck1vZGUgPT09IG1heE1vZGVcbiAgICAgICAgICB9XCJcbiAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlTW9kZUNhbGVuZGFyKCRldmVudClcIlxuICAgICAgICAgID57eyB0aXRsZSB9fTwvYnV0dG9uXG4gICAgICAgID5cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwic2t5LWRhdGVwaWNrZXItaGVhZGVyLXJpZ2h0XCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzcz1cInNreS1idG4gc2t5LWJ0bi1kZWZhdWx0IHNreS1idG4tc20gc2t5LWRhdGVwaWNrZXItYnRuLW5leHRcIlxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwibmV4dExhYmVsXCJcbiAgICAgICAgICAoY2xpY2spPVwibW92ZUNhbGVuZGFyKCRldmVudCwgMSlcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNreS1pY29uIGNsYXNzPVwic2t5LWRhdGVwaWNrZXItY2hldnJvblwiIGljb25OYW1lPVwiY2hldnJvbi1yaWdodFwiIC8+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuICAgIDxuZy1jb250ZW50IC8+XG4gIDwvZGl2PlxufVxuIl19","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport * as i0 from \"@angular/core\";\n/**\n * Manages the state of the calendar picker.\n * @internal\n */\nexport class SkyDatepickerCalendarService {\n constructor() {\n /**\n * Whether a key date popover is currently displayed.\n * Useful for communicating across all daypicker siblings when a popover is displayed.\n */\n this.keyDatePopoverStream = new Subject();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDatepickerCalendarService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDatepickerCalendarService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDatepickerCalendarService, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci1jYWxlbmRhci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2RhdGV0aW1lL3NyYy9saWIvbW9kdWxlcy9kYXRlcGlja2VyL2NhbGVuZGFyL2RhdGVwaWNrZXItY2FsZW5kYXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBSS9COzs7R0FHRztBQUVILE1BQU0sT0FBTyw0QkFBNEI7SUFEekM7UUFFRTs7O1dBR0c7UUFDSSx5QkFBb0IsR0FDekIsSUFBSSxPQUFPLEVBQW1DLENBQUM7S0FDbEQ7OEdBUFksNEJBQTRCO2tIQUE1Qiw0QkFBNEI7OzJGQUE1Qiw0QkFBNEI7a0JBRHhDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU2t5RGF5UGlja2VyQ29udGV4dCB9IGZyb20gJy4vZGF5cGlja2VyLWNvbnRleHQnO1xuXG4vKipcbiAqIE1hbmFnZXMgdGhlIHN0YXRlIG9mIHRoZSBjYWxlbmRhciBwaWNrZXIuXG4gKiBAaW50ZXJuYWxcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNreURhdGVwaWNrZXJDYWxlbmRhclNlcnZpY2Uge1xuICAvKipcbiAgICogV2hldGhlciBhIGtleSBkYXRlIHBvcG92ZXIgaXMgY3VycmVudGx5IGRpc3BsYXllZC5cbiAgICogVXNlZnVsIGZvciBjb21tdW5pY2F0aW5nIGFjcm9zcyBhbGwgZGF5cGlja2VyIHNpYmxpbmdzIHdoZW4gYSBwb3BvdmVyIGlzIGRpc3BsYXllZC5cbiAgICovXG4gIHB1YmxpYyBrZXlEYXRlUG9wb3ZlclN0cmVhbTogU3ViamVjdDxTa3lEYXlQaWNrZXJDb250ZXh0IHwgdW5kZWZpbmVkPiA9XG4gICAgbmV3IFN1YmplY3Q8U2t5RGF5UGlja2VyQ29udGV4dCB8IHVuZGVmaW5lZD4oKTtcbn1cbiJdfQ==","import { Pipe, inject } from '@angular/core';\nimport { SkyDatepickerCalendarInnerComponent } from './datepicker-calendar-inner.component';\nimport * as i0 from \"@angular/core\";\n/**\n * Formats date values according to formatting rules.\n * @example\n * ```markup\n * {{ myDate | skyDatepickerCalendarLabel }}\n * {{ myDate | skyDatepickerCalendarLabel:'YYYY' }}\n * ```\n * @internal\n */\nexport class SkyDatepickerCalendarLabelPipe {\n #datepicker = inject(SkyDatepickerCalendarInnerComponent);\n #defaultFormat = this.#datepicker.formatDayLabel;\n /**\n * Transforms a date value using locale and format rules.\n * @param value Specifies the date value to transform.\n * @param format Specifies the format to apply to the transform. The format string is\n * constructed by a series of symbols that represent date-time values.\n */\n transform(value, format) {\n let formattedValue = '';\n if (value && value instanceof Date) {\n formattedValue = this.#datepicker.dateFilter(value, format || this.#defaultFormat);\n }\n return formattedValue;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDatepickerCalendarLabelPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDatepickerCalendarLabelPipe, isStandalone: true, name: \"skyDatepickerCalendarLabel\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDatepickerCalendarLabelPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'skyDatepickerCalendarLabel',\n standalone: true,\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci1jYWxlbmRhci1sYWJlbC5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2RhdGV0aW1lL3NyYy9saWIvbW9kdWxlcy9kYXRlcGlja2VyL2NhbGVuZGFyL2RhdGVwaWNrZXItY2FsZW5kYXItbGFiZWwucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFNUQsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sdUNBQXVDLENBQUM7O0FBRTVGOzs7Ozs7OztHQVFHO0FBS0gsTUFBTSxPQUFPLDhCQUE4QjtJQUN6QyxXQUFXLEdBQUcsTUFBTSxDQUFDLG1DQUFtQyxDQUFDLENBQUM7SUFDMUQsY0FBYyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDO0lBRWpEOzs7OztPQUtHO0lBQ0ksU0FBUyxDQUFDLEtBQWMsRUFBRSxNQUFlO1FBQzlDLElBQUksY0FBYyxHQUFHLEVBQUUsQ0FBQztRQUV4QixJQUFJLEtBQUssSUFBSSxLQUFLLFlBQVksSUFBSSxFQUFFLENBQUM7WUFDbkMsY0FBYyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUMxQyxLQUFLLEVBQ0wsTUFBTSxJQUFJLElBQUksQ0FBQyxjQUFjLENBQzlCLENBQUM7UUFDSixDQUFDO1FBRUQsT0FBTyxjQUFjLENBQUM7SUFDeEIsQ0FBQzs4R0FyQlUsOEJBQThCOzRHQUE5Qiw4QkFBOEI7OzJGQUE5Qiw4QkFBOEI7a0JBSjFDLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLDRCQUE0QjtvQkFDbEMsVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFNreURhdGVwaWNrZXJDYWxlbmRhcklubmVyQ29tcG9uZW50IH0gZnJvbSAnLi9kYXRlcGlja2VyLWNhbGVuZGFyLWlubmVyLmNvbXBvbmVudCc7XG5cbi8qKlxuICogRm9ybWF0cyBkYXRlIHZhbHVlcyBhY2NvcmRpbmcgdG8gZm9ybWF0dGluZyBydWxlcy5cbiAqIEBleGFtcGxlXG4gKiBgYGBtYXJrdXBcbiAqIHt7IG15RGF0ZSB8IHNreURhdGVwaWNrZXJDYWxlbmRhckxhYmVsIH19XG4gKiB7eyBteURhdGUgfCBza3lEYXRlcGlja2VyQ2FsZW5kYXJMYWJlbDonWVlZWScgfX1cbiAqIGBgYFxuICogQGludGVybmFsXG4gKi9cbkBQaXBlKHtcbiAgbmFtZTogJ3NreURhdGVwaWNrZXJDYWxlbmRhckxhYmVsJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5RGF0ZXBpY2tlckNhbGVuZGFyTGFiZWxQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICNkYXRlcGlja2VyID0gaW5qZWN0KFNreURhdGVwaWNrZXJDYWxlbmRhcklubmVyQ29tcG9uZW50KTtcbiAgI2RlZmF1bHRGb3JtYXQgPSB0aGlzLiNkYXRlcGlja2VyLmZvcm1hdERheUxhYmVsO1xuXG4gIC8qKlxuICAgKiBUcmFuc2Zvcm1zIGEgZGF0ZSB2YWx1ZSB1c2luZyBsb2NhbGUgYW5kIGZvcm1hdCBydWxlcy5cbiAgICogQHBhcmFtIHZhbHVlIFNwZWNpZmllcyB0aGUgZGF0ZSB2YWx1ZSB0byB0cmFuc2Zvcm0uXG4gICAqIEBwYXJhbSBmb3JtYXQgU3BlY2lmaWVzIHRoZSBmb3JtYXQgdG8gYXBwbHkgdG8gdGhlIHRyYW5zZm9ybS4gVGhlIGZvcm1hdCBzdHJpbmcgaXNcbiAgICogY29uc3RydWN0ZWQgYnkgYSBzZXJpZXMgb2Ygc3ltYm9scyB0aGF0IHJlcHJlc2VudCBkYXRlLXRpbWUgdmFsdWVzLlxuICAgKi9cbiAgcHVibGljIHRyYW5zZm9ybSh2YWx1ZTogdW5rbm93biwgZm9ybWF0Pzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBsZXQgZm9ybWF0dGVkVmFsdWUgPSAnJztcblxuICAgIGlmICh2YWx1ZSAmJiB2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgIGZvcm1hdHRlZFZhbHVlID0gdGhpcy4jZGF0ZXBpY2tlci5kYXRlRmlsdGVyKFxuICAgICAgICB2YWx1ZSxcbiAgICAgICAgZm9ybWF0IHx8IHRoaXMuI2RlZmF1bHRGb3JtYXQsXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBmb3JtYXR0ZWRWYWx1ZTtcbiAgfVxufVxuIl19","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { SkyDatepickerCalendarLabelPipe } from './datepicker-calendar-label.pipe';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"./datepicker-calendar-inner.component\";\nimport * as i2 from \"@angular/common\";\n/**\n * @internal\n */\nexport class SkyDayPickerButtonComponent {\n constructor(datepicker) {\n this.datepicker = datepicker;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDayPickerButtonComponent, deps: [{ token: i1.SkyDatepickerCalendarInnerComponent }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.5\", type: SkyDayPickerButtonComponent, isStandalone: true, selector: \"sky-daypicker-button\", inputs: { date: \"date\" }, ngImport: i0, template: \"@if (date) {\\n <button\\n class=\\\"sky-btn sky-btn-sm sky-btn-default sky-datepicker-btn-date\\\"\\n tabindex=\\\"-1\\\"\\n type=\\\"button\\\"\\n [disabled]=\\\"date.disabled\\\"\\n [ngClass]=\\\"{\\n 'sky-datepicker-btn-selected': date.selected,\\n 'sky-btn-disabled': date.disabled,\\n 'sky-btn-active': datepicker.isActive(date),\\n 'sky-datepicker-btn-disabled': date.disabled,\\n 'sky-datepicker-btn-key-date': date.keyDate\\n }\\\"\\n [attr.aria-label]=\\\"date.date | skyDatepickerCalendarLabel\\\"\\n (click)=\\\"datepicker.selectCalendar($event, date.date, true)\\\"\\n >\\n <span [ngClass]=\\\"{ 'sky-datepicker-secondary': date.secondary }\\\">\\n {{ date.label }}\\n </span>\\n </button>\\n}\\n\", styles: [\".sky-datepicker-btn-date:not(.sky-theme-modern *){--sky-override-daypicker-disabled-style: italic;--sky-override-daypicker-key-date-color: #d93a3d;--sky-override-daypicker-key-date-left: 15px;--sky-override-daypicker-key-date-size: 5px;--sky-override-daypicker-key-date-top: 22px}:host-context(.sky-theme-modern:not(.sky-theme-brand-base)) .sky-datepicker-btn-date{--sky-override-daypicker-disabled-style: italic;--sky-override-daypicker-key-date-left: 12px;--sky-override-daypicker-key-date-top: 22px}.sky-datepicker-btn-disabled{font-style:var(--sky-override-daypicker-disabled-style)}.sky-datepicker-btn-key-date{position:relative}.sky-datepicker-btn-key-date:before{position:absolute;content:\\\"\\\";height:var(--sky-override-daypicker-key-date-size, var(--sky-size-icon-xxxs));width:var(--sky-override-daypicker-key-date-size, var(--sky-size-icon-xxxs));background-color:var(--sky-override-daypicker-key-date-color, var(--sky-color-icon-danger));border-radius:50%;left:var(--sky-override-daypicker-key-date-left, calc(50% - var(--sky-size-icon-xxxs) / 2));top:var(--sky-override-daypicker-key-date-top, calc(50% + var(--sky-font-size-body-m) * var(--sky-font-line_height-body-m) / 2 - var(--sky-size-icon-xxxs) / 2))}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"pipe\", type: SkyDatepickerCalendarLabelPipe, name: \"skyDatepickerCalendarLabel\" }] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDayPickerButtonComponent, decorators: [{\n type: Component,\n args: [{ imports: [CommonModule, SkyDatepickerCalendarLabelPipe], selector: 'sky-daypicker-button', template: \"@if (date) {\\n <button\\n class=\\\"sky-btn sky-btn-sm sky-btn-default sky-datepicker-btn-date\\\"\\n tabindex=\\\"-1\\\"\\n type=\\\"button\\\"\\n [disabled]=\\\"date.disabled\\\"\\n [ngClass]=\\\"{\\n 'sky-datepicker-btn-selected': date.selected,\\n 'sky-btn-disabled': date.disabled,\\n 'sky-btn-active': datepicker.isActive(date),\\n 'sky-datepicker-btn-disabled': date.disabled,\\n 'sky-datepicker-btn-key-date': date.keyDate\\n }\\\"\\n [attr.aria-label]=\\\"date.date | skyDatepickerCalendarLabel\\\"\\n (click)=\\\"datepicker.selectCalendar($event, date.date, true)\\\"\\n >\\n <span [ngClass]=\\\"{ 'sky-datepicker-secondary': date.secondary }\\\">\\n {{ date.label }}\\n </span>\\n </button>\\n}\\n\", styles: [\".sky-datepicker-btn-date:not(.sky-theme-modern *){--sky-override-daypicker-disabled-style: italic;--sky-override-daypicker-key-date-color: #d93a3d;--sky-override-daypicker-key-date-left: 15px;--sky-override-daypicker-key-date-size: 5px;--sky-override-daypicker-key-date-top: 22px}:host-context(.sky-theme-modern:not(.sky-theme-brand-base)) .sky-datepicker-btn-date{--sky-override-daypicker-disabled-style: italic;--sky-override-daypicker-key-date-left: 12px;--sky-override-daypicker-key-date-top: 22px}.sky-datepicker-btn-disabled{font-style:var(--sky-override-daypicker-disabled-style)}.sky-datepicker-btn-key-date{position:relative}.sky-datepicker-btn-key-date:before{position:absolute;content:\\\"\\\";height:var(--sky-override-daypicker-key-date-size, var(--sky-size-icon-xxxs));width:var(--sky-override-daypicker-key-date-size, var(--sky-size-icon-xxxs));background-color:var(--sky-override-daypicker-key-date-color, var(--sky-color-icon-danger));border-radius:50%;left:var(--sky-override-daypicker-key-date-left, calc(50% - var(--sky-size-icon-xxxs) / 2));top:var(--sky-override-daypicker-key-date-top, calc(50% + var(--sky-font-size-body-m) * var(--sky-font-line_height-body-m) / 2 - var(--sky-size-icon-xxxs) / 2))}\\n\"] }]\n }], ctorParameters: () => [{ type: i1.SkyDatepickerCalendarInnerComponent }], propDecorators: { date: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF5cGlja2VyLWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL2RhdGVwaWNrZXIvY2FsZW5kYXIvZGF5cGlja2VyLWJ1dHRvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL2RhdGVwaWNrZXIvY2FsZW5kYXIvZGF5cGlja2VyLWJ1dHRvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHakQsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7QUFHbEY7O0dBRUc7QUFPSCxNQUFNLE9BQU8sMkJBQTJCO0lBT3RDLFlBQW1CLFVBQStDO1FBQS9DLGVBQVUsR0FBVixVQUFVLENBQXFDO0lBQUcsQ0FBQzs4R0FQM0QsMkJBQTJCO2tHQUEzQiwyQkFBMkIsMEdDaEJ4QyxpdEJBcUJBLDh2Q0RWWSxZQUFZLHdIQUFFLDhCQUE4Qjs7MkZBSzNDLDJCQUEyQjtrQkFOdkMsU0FBUzs4QkFDQyxDQUFDLFlBQVksRUFBRSw4QkFBOEIsQ0FBQyxZQUM3QyxzQkFBc0I7d0dBU3pCLElBQUk7c0JBRFYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFNreURhdGVwaWNrZXJDYWxlbmRhcklubmVyQ29tcG9uZW50IH0gZnJvbSAnLi9kYXRlcGlja2VyLWNhbGVuZGFyLWlubmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lEYXRlcGlja2VyQ2FsZW5kYXJMYWJlbFBpcGUgfSBmcm9tICcuL2RhdGVwaWNrZXItY2FsZW5kYXItbGFiZWwucGlwZSc7XG5pbXBvcnQgeyBTa3lEYXlQaWNrZXJDb250ZXh0IH0gZnJvbSAnLi9kYXlwaWNrZXItY29udGV4dCc7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbkBDb21wb25lbnQoe1xuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBTa3lEYXRlcGlja2VyQ2FsZW5kYXJMYWJlbFBpcGVdLFxuICBzZWxlY3RvcjogJ3NreS1kYXlwaWNrZXItYnV0dG9uJyxcbiAgc3R5bGVVcmw6ICcuL2RheXBpY2tlci1idXR0b24uY29tcG9uZW50LnNjc3MnLFxuICB0ZW1wbGF0ZVVybDogJ2RheXBpY2tlci1idXR0b24uY29tcG9uZW50Lmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lEYXlQaWNrZXJCdXR0b25Db21wb25lbnQge1xuICAvKipcbiAgICogVGhlIGRhdGUgdGhpcyBwaWNrZXIgYnV0dG9uIHdpbGwgcmVwcmVzZW50IG9uIHRoZSBjYWxlbmRhci5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBkYXRlOiBTa3lEYXlQaWNrZXJDb250ZXh0IHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBkYXRlcGlja2VyOiBTa3lEYXRlcGlja2VyQ2FsZW5kYXJJbm5lckNvbXBvbmVudCkge31cbn1cbiIsIkBpZiAoZGF0ZSkge1xuICA8YnV0dG9uXG4gICAgY2xhc3M9XCJza3ktYnRuIHNreS1idG4tc20gc2t5LWJ0bi1kZWZhdWx0IHNreS1kYXRlcGlja2VyLWJ0bi1kYXRlXCJcbiAgICB0YWJpbmRleD1cIi0xXCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICBbZGlzYWJsZWRdPVwiZGF0ZS5kaXNhYmxlZFwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgJ3NreS1kYXRlcGlja2VyLWJ0bi1zZWxlY3RlZCc6IGRhdGUuc2VsZWN0ZWQsXG4gICAgICAnc2t5LWJ0bi1kaXNhYmxlZCc6IGRhdGUuZGlzYWJsZWQsXG4gICAgICAnc2t5LWJ0bi1hY3RpdmUnOiBkYXRlcGlja2VyLmlzQWN0aXZlKGRhdGUpLFxuICAgICAgJ3NreS1kYXRlcGlja2VyLWJ0bi1kaXNhYmxlZCc6IGRhdGUuZGlzYWJsZWQsXG4gICAgICAnc2t5LWRhdGVwaWNrZXItYnRuLWtleS1kYXRlJzogZGF0ZS5rZXlEYXRlXG4gICAgfVwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09XCJkYXRlLmRhdGUgfCBza3lEYXRlcGlja2VyQ2FsZW5kYXJMYWJlbFwiXG4gICAgKGNsaWNrKT1cImRhdGVwaWNrZXIuc2VsZWN0Q2FsZW5kYXIoJGV2ZW50LCBkYXRlLmRhdGUsIHRydWUpXCJcbiAgPlxuICAgIDxzcGFuIFtuZ0NsYXNzXT1cInsgJ3NreS1kYXRlcGlja2VyLXNlY29uZGFyeSc6IGRhdGUuc2Vjb25kYXJ5IH1cIj5cbiAgICAgIHt7IGRhdGUubGFiZWwgfX1cbiAgICA8L3NwYW4+XG4gIDwvYnV0dG9uPlxufVxuIl19","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, input, } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { SkyPopoverMessageType, SkyPopoverModule, } from '@skyux/popovers';\nimport { BehaviorSubject } from 'rxjs';\nimport { SkyDatepickerCalendarInnerComponent } from './datepicker-calendar-inner.component';\nimport { SkyDatepickerCalendarService } from './datepicker-calendar.service';\nimport { SkyDayPickerButtonComponent } from './daypicker-button.component';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nimport * as i2 from \"@skyux/popovers\";\n/**\n * @internal\n */\nexport class SkyDayPickerCellComponent {\n #calendarSvc;\n #datepicker;\n constructor() {\n this.#calendarSvc = inject(SkyDatepickerCalendarService);\n this.#datepicker = inject(SkyDatepickerCalendarInnerComponent);\n /**\n * Whether the active date has been changed.\n */\n this.activeDateHasChanged = input(false);\n /**\n * The date this picker cell will represent on the calendar.\n */\n this.date = input();\n this.ariaLabel = computed(() => {\n const date = this.date();\n if (date?.keyDateText) {\n return date.keyDateText.join(', ');\n }\n /* istanbul ignore next: safety check */\n return '';\n });\n this.hasTooltip = computed(() => {\n const date = this.date();\n return (date &&\n date.keyDate &&\n date.keyDateText &&\n date.keyDateText.length > 0 &&\n date.keyDateText[0].length > 0);\n });\n this.popoverController = new BehaviorSubject({});\n // show the tooltip if this is the active date and is not the\n // initial active date (activeDateHasChanged)\n effect(() => {\n const activeDateHasChanged = this.activeDateHasChanged();\n const hasTooltip = this.hasTooltip();\n const date = this.date();\n if (date &&\n activeDateHasChanged &&\n hasTooltip &&\n this.#datepicker.isActive(date)) {\n this.#showTooltip();\n }\n });\n // Hide this cell's tooltip if another cell opens a tooltip.\n this.#calendarSvc.keyDatePopoverStream\n .pipe(takeUntilDestroyed())\n .subscribe((popoverDate) => {\n if (!popoverDate || popoverDate?.uid !== this.date()?.uid) {\n this.#hideTooltip();\n }\n });\n }\n onDayMouseenter() {\n if (this.hasTooltip()) {\n this.#showTooltip();\n this.#calendarSvc.keyDatePopoverStream.next(this.date());\n }\n }\n onDayMouseleave() {\n if (this.hasTooltip()) {\n this.#hideTooltip();\n this.#calendarSvc.keyDatePopoverStream.next(undefined);\n }\n }\n #hideTooltip() {\n this.popoverController.next({ type: SkyPopoverMessageType.Close });\n }\n #showTooltip() {\n this.popoverController.next({ type: SkyPopoverMessageType.Open });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDayPickerCellComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.5\", type: SkyDayPickerCellComponent, isStandalone: true, selector: \"sky-daypicker-cell\", inputs: { activeDateHasChanged: { classPropertyName: \"activeDateHasChanged\", publicName: \"activeDateHasChanged\", isSignal: true, isRequired: false, transformFunction: null }, date: { classPropertyName: \"date\", publicName: \"date\", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: \"@if (hasTooltip()) {\\n <div\\n class=\\\"sky-daypicker-cell\\\"\\n skyPopoverPlacement=\\\"left\\\"\\n [attr.aria-label]=\\\"ariaLabel()\\\"\\n [skyPopover]=\\\"dayInfoPopover\\\"\\n [skyPopoverMessageStream]=\\\"popoverController\\\"\\n (mouseenter)=\\\"onDayMouseenter()\\\"\\n (mouseleave)=\\\"onDayMouseleave()\\\"\\n >\\n <ng-container *ngTemplateOutlet=\\\"daypickerButtonTemplateRef\\\" />\\n <sky-popover #dayInfoPopover>\\n @for (text of date()?.keyDateText; track text) {\\n <div>\\n {{ text }}\\n </div>\\n }\\n </sky-popover>\\n </div>\\n} @else {\\n <div\\n class=\\\"sky-daypicker-cell\\\"\\n (mouseenter)=\\\"onDayMouseenter()\\\"\\n (mouseleave)=\\\"onDayMouseleave()\\\"\\n >\\n <ng-container *ngTemplateOutlet=\\\"daypickerButtonTemplateRef\\\" />\\n </div>\\n}\\n\\n<ng-template #daypickerButtonTemplateRef>\\n <sky-daypicker-button [date]=\\\"date()\\\" />\\n</ng-template>\\n\", dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"component\", type: SkyDayPickerButtonComponent, selector: \"sky-daypicker-button\", inputs: [\"date\"] }, { kind: \"ngmodule\", type: SkyPopoverModule }, { kind: \"component\", type: i2.λ6, selector: \"sky-popover\", inputs: [\"alignment\", \"placement\", \"popoverTitle\", \"popoverType\"], outputs: [\"popoverClosed\", \"popoverOpened\"] }, { kind: \"directive\", type: i2.λ7, selector: \"[skyPopover]\", inputs: [\"skyPopover\", \"skyPopoverAlignment\", \"skyPopoverMessageStream\", \"skyPopoverPlacement\", \"skyPopoverTrigger\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDayPickerCellComponent, decorators: [{\n type: Component,\n args: [{ changeDetection: ChangeDetectionStrategy.OnPush, imports: [CommonModule, SkyDayPickerButtonComponent, SkyPopoverModule], selector: 'sky-daypicker-cell', template: \"@if (hasTooltip()) {\\n <div\\n class=\\\"sky-daypicker-cell\\\"\\n skyPopoverPlacement=\\\"left\\\"\\n [attr.aria-label]=\\\"ariaLabel()\\\"\\n [skyPopover]=\\\"dayInfoPopover\\\"\\n [skyPopoverMessageStream]=\\\"popoverController\\\"\\n (mouseenter)=\\\"onDayMouseenter()\\\"\\n (mouseleave)=\\\"onDayMouseleave()\\\"\\n >\\n <ng-container *ngTemplateOutlet=\\\"daypickerButtonTemplateRef\\\" />\\n <sky-popover #dayInfoPopover>\\n @for (text of date()?.keyDateText; track text) {\\n <div>\\n {{ text }}\\n </div>\\n }\\n </sky-popover>\\n </div>\\n} @else {\\n <div\\n class=\\\"sky-daypicker-cell\\\"\\n (mouseenter)=\\\"onDayMouseenter()\\\"\\n (mouseleave)=\\\"onDayMouseleave()\\\"\\n >\\n <ng-container *ngTemplateOutlet=\\\"daypickerButtonTemplateRef\\\" />\\n </div>\\n}\\n\\n<ng-template #daypickerButtonTemplateRef>\\n <sky-daypicker-button [date]=\\\"date()\\\" />\\n</ng-template>\\n\" }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF5cGlja2VyLWNlbGwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2RhdGV0aW1lL3NyYy9saWIvbW9kdWxlcy9kYXRlcGlja2VyL2NhbGVuZGFyL2RheXBpY2tlci1jZWxsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9kYXRldGltZS9zcmMvbGliL21vZHVsZXMvZGF0ZXBpY2tlci9jYWxlbmRhci9kYXlwaWNrZXItY2VsbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUNSLE1BQU0sRUFDTixNQUFNLEVBQ04sS0FBSyxHQUNOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFFTCxxQkFBcUIsRUFDckIsZ0JBQWdCLEdBQ2pCLE1BQU0saUJBQWlCLENBQUM7QUFFekIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV2QyxPQUFPLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUM1RixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM3RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7OztBQUczRTs7R0FFRztBQU9ILE1BQU0sT0FBTyx5QkFBeUI7SUFDM0IsWUFBWSxDQUF3QztJQUNwRCxXQUFXLENBQStDO0lBcUNuRTtRQXRDUyxpQkFBWSxHQUFHLE1BQU0sQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO1FBQ3BELGdCQUFXLEdBQUcsTUFBTSxD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QUFDLEVBQUUsSUFBSSxFQUFFLHFCQUFxQixDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDcEUsQ0FBQzs4R0F2RlUseUJBQXlCO2tHQUF6Qix5QkFBeUIsb1hDaEN0QyxpNEJBZ0NBLDJDREpZLFlBQVksc01BQUUsMkJBQTJCLGtGQUFFLGdCQUFnQjs7MkZBSTFELHlCQUF5QjtrQkFOckMsU0FBUztzQ0FDUyx1QkFBdUIsQ0FBQyxNQUFNLFdBQ3RDLENBQUMsWUFBWSxFQUFFLDJCQUEyQixFQUFFLGdCQUFnQixDQUFDLFlBQzVELG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBjb21wdXRlZCxcbiAgZWZmZWN0LFxuICBpbmplY3QsXG4gIGlucHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7XG4gIFNreVBvcG92ZXJNZXNzYWdlLFxuICBTa3lQb3BvdmVyTWVzc2FnZVR5cGUsXG4gIFNreVBvcG92ZXJNb2R1bGUsXG59IGZyb20gJ0Bza3l1eC9wb3BvdmVycyc7XG5cbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBTa3lEYXRlcGlja2VyQ2FsZW5kYXJJbm5lckNvbXBvbmVudCB9IGZyb20gJy4vZGF0ZXBpY2tlci1jYWxlbmRhci1pbm5lci5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5RGF0ZXBpY2tlckNhbGVuZGFyU2VydmljZSB9IGZyb20gJy4vZGF0ZXBpY2tlci1jYWxlbmRhci5zZXJ2aWNlJztcbmltcG9ydCB7IFNreURheVBpY2tlckJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4vZGF5cGlja2VyLWJ1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5RGF5UGlja2VyQ29udGV4dCB9IGZyb20gJy4vZGF5cGlja2VyLWNvbnRleHQnO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5AQ29tcG9uZW50KHtcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFNreURheVBpY2tlckJ1dHRvbkNvbXBvbmVudCwgU2t5UG9wb3Zlck1vZHVsZV0sXG4gIHNlbGVjdG9yOiAnc2t5LWRheXBpY2tlci1jZWxsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RheXBpY2tlci1jZWxsLmNvbXBvbmVudC5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgU2t5RGF5UGlja2VyQ2VsbENvbXBvbmVudCB7XG4gIHJlYWRvbmx5ICNjYWxlbmRhclN2YyA9IGluamVjdChTa3lEYXRlcGlja2VyQ2FsZW5kYXJTZXJ2aWNlKTtcbiAgcmVhZG9ubHkgI2RhdGVwaWNrZXIgPSBpbmplY3QoU2t5RGF0ZXBpY2tlckNhbGVuZGFySW5uZXJDb21wb25lbnQpO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBhY3RpdmUgZGF0ZSBoYXMgYmVlbiBjaGFuZ2VkLlxuICAgKi9cbiAgcHVibGljIGFjdGl2ZURhdGVIYXNDaGFuZ2VkID0gaW5wdXQoZmFsc2UpO1xuXG4gIC8qKlxuICAgKiBUaGUgZGF0ZSB0aGlzIHBpY2tlciBjZWxsIHdpbGwgcmVwcmVzZW50IG9uIHRoZSBjYWxlbmRhci5cbiAgICovXG4gIHB1YmxpYyBkYXRlID0gaW5wdXQ8U2t5RGF5UGlja2VyQ29udGV4dCB8IHVuZGVmaW5lZD4oKTtcblxuICBwcm90ZWN0ZWQgYXJpYUxhYmVsID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGRhdGUgPSB0aGlzLmRhdGUoKTtcblxuICAgIGlmIChkYXRlPy5rZXlEYXRlVGV4dCkge1xuICAgICAgcmV0dXJuIGRhdGUua2V5RGF0ZVRleHQuam9pbignLCAnKTtcbiAgICB9XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogc2FmZXR5IGNoZWNrICovXG4gICAgcmV0dXJuICcnO1xuICB9KTtcblxuICBwcm90ZWN0ZWQgaGFzVG9vbHRpcCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBkYXRlID0gdGhpcy5kYXRlKCk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgZGF0ZSAmJlxuICAgICAgZGF0ZS5rZXlEYXRlICYmXG4gICAgICBkYXRlLmtleURhdGVUZXh0ICYmXG4gICAgICBkYXRlLmtleURhdGVUZXh0Lmxlbmd0aCA+IDAgJiZcbiAgICAgIGRhdGUua2V5RGF0ZVRleHRbMF0ubGVuZ3RoID4gMFxuICAgICk7XG4gIH0pO1xuXG4gIHByb3RlY3RlZCBwb3BvdmVyQ29udHJvbGxlciA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U2t5UG9wb3Zlck1lc3NhZ2U+KHt9KTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICAvLyBzaG93IHRoZSB0b29sdGlwIGlmIHRoaXMgaXMgdGhlIGFjdGl2ZSBkYXRlIGFuZCBpcyBub3QgdGhlXG4gICAgLy8gaW5pdGlhbCBhY3RpdmUgZGF0ZSAoYWN0aXZlRGF0ZUhhc0NoYW5nZWQpXG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IGFjdGl2ZURhdGVIYXNDaGFuZ2VkID0gdGhpcy5hY3RpdmVEYXRlSGFzQ2hhbmdlZCgpO1xuICAgICAgY29uc3QgaGFzVG9vbHRpcCA9IHRoaXMuaGFzVG9vbHRpcCgpO1xuICAgICAgY29uc3QgZGF0ZSA9IHRoaXMuZGF0ZSgpO1xuXG4gICAgICBpZiAoXG4gICAgICAgIGRhdGUgJiZcbiAgICAgICAgYWN0aXZlRGF0ZUhhc0NoYW5nZWQgJiZcbiAgICAgICAgaGFzVG9vbHRpcCAmJlxuICAgICAgICB0aGlzLiNkYXRlcGlja2VyLmlzQWN0aXZlKGRhdGUpXG4gICAgICApIHtcbiAgICAgICAgdGhpcy4jc2hvd1Rvb2x0aXAoKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIEhpZGUgdGhpcyBjZWxsJ3MgdG9vbHRpcCBpZiBhbm90aGVyIGNlbGwgb3BlbnMgYSB0b29sdGlwLlxuICAgIHRoaXMuI2NhbGVuZGFyU3ZjLmtleURhdGVQb3BvdmVyU3RyZWFtXG4gICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSlcbiAgICAgIC5zdWJzY3JpYmUoKHBvcG92ZXJEYXRlKSA9PiB7XG4gICAgICAgIGlmICghcG9wb3ZlckRhdGUgfHwgcG9wb3ZlckRhdGU/LnVpZCAhPT0gdGhpcy5kYXRlKCk/LnVpZCkge1xuICAgICAgICAgIHRoaXMuI2hpZGVUb29sdGlwKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uRGF5TW91c2VlbnRlcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oYXNUb29sdGlwKCkpIHtcbiAgICAgIHRoaXMuI3Nob3dUb29sdGlwKCk7XG4gICAgICB0aGlzLiNjYWxlbmRhclN2Yy5rZXlEYXRlUG9wb3ZlclN0cmVhbS5uZXh0KHRoaXMuZGF0ZSgpKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb25EYXlNb3VzZWxlYXZlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmhhc1Rvb2x0aXAoKSkge1xuICAgICAgdGhpcy4jaGlkZVRvb2x0aXAoKTtcbiAgICAgIHRoaXMuI2NhbGVuZGFyU3ZjLmtleURhdGVQb3BvdmVyU3RyZWFtLm5leHQodW5kZWZpbmVkKTtcbiAgICB9XG4gIH1cblxuICAjaGlkZVRvb2x0aXAoKTogdm9pZCB7XG4gICAgdGhpcy5wb3BvdmVyQ29udHJvbGxlci5uZXh0KHsgdHlwZTogU2t5UG9wb3Zlck1lc3NhZ2VUeXBlLkNsb3NlIH0pO1xuICB9XG5cbiAgI3Nob3dUb29sdGlwKCk6IHZvaWQge1xuICAgIHRoaXMucG9wb3ZlckNvbnRyb2xsZXIubmV4dCh7IHR5cGU6IFNreVBvcG92ZXJNZXNzYWdlVHlwZS5PcGVuIH0pO1xuICB9XG59XG4iLCJAaWYgKGhhc1Rvb2x0aXAoKSkge1xuICA8ZGl2XG4gICAgY2xhc3M9XCJza3ktZGF5cGlja2VyLWNlbGxcIlxuICAgIHNreVBvcG92ZXJQbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbCgpXCJcbiAgICBbc2t5UG9wb3Zlcl09XCJkYXlJbmZvUG9wb3ZlclwiXG4gICAgW3NreVBvcG92ZXJNZXNzYWdlU3RyZWFtXT1cInBvcG92ZXJDb250cm9sbGVyXCJcbiAgICAobW91c2VlbnRlcik9XCJvbkRheU1vdXNlZW50ZXIoKVwiXG4gICAgKG1vdXNlbGVhdmUpPVwib25EYXlNb3VzZWxlYXZlKClcIlxuICA+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRheXBpY2tlckJ1dHRvblRlbXBsYXRlUmVmXCIgLz5cbiAgICA8c2t5LXBvcG92ZXIgI2RheUluZm9Qb3BvdmVyPlxuICAgICAgQGZvciAodGV4dCBvZiBkYXRlKCk/LmtleURhdGVUZXh0OyB0cmFjayB0ZXh0KSB7XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAge3sgdGV4dCB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICA8L3NreS1wb3BvdmVyPlxuICA8L2Rpdj5cbn0gQGVsc2Uge1xuICA8ZGl2XG4gICAgY2xhc3M9XCJza3ktZGF5cGlja2VyLWNlbGxcIlxuICAgIChtb3VzZWVudGVyKT1cIm9uRGF5TW91c2VlbnRlcigpXCJcbiAgICAobW91c2VsZWF2ZSk9XCJvbkRheU1vdXNlbGVhdmUoKVwiXG4gID5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGF5cGlja2VyQnV0dG9uVGVtcGxhdGVSZWZcIiAvPlxuICA8L2Rpdj5cbn1cblxuPG5nLXRlbXBsYXRlICNkYXlwaWNrZXJCdXR0b25UZW1wbGF0ZVJlZj5cbiAgPHNreS1kYXlwaWNrZXItYnV0dG9uIFtkYXRlXT1cImRhdGUoKVwiIC8+XG48L25nLXRlbXBsYXRlPlxuIl19","import { Component, EventEmitter, Input, Output, } from '@angular/core';\nimport { SkyWaitModule } from '@skyux/indicators';\nimport { Subject } from 'rxjs';\nimport { SkyDayPickerCellComponent } from './daypicker-cell.component';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"./datepicker-calendar-inner.component\";\nimport * as i2 from \"@skyux/indicators\";\n/**\n * @internal\n */\nexport class SkyDayPickerComponent {\n set customDates(value) {\n /* istanbul ignore else */\n if (value) {\n this.#applyCustomDates(value, this.rows);\n }\n }\n #daysInMonth;\n #initialDate;\n #ngUnsubscribe;\n constructor(datepicker) {\n this.calendarDateRangeChange = new EventEmitter();\n this.isWaiting = false;\n this.activeDateHasChanged = false;\n this.labels = [];\n this.title = '';\n this.rows = [];\n this.weekNumbers = [];\n this.#daysInMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n this.#ngUnsubscribe = new Subject();\n this.datepicker = datepicker;\n }\n ngOnInit() {\n this.datepicker.stepDay = { months: 1 };\n this.#initialDate = this.datepicker.activeDate.getDate();\n this.datepicker.setRefreshViewHandler(() => this.#refreshDayView(), 'day');\n this.datepicker.setCompareHandler(this.#compareDays, 'day');\n this.datepicker.setKeydownHandler((key, event) => {\n this.#keydownDays(key, event);\n }, 'day');\n this.datepicker.refreshView();\n }\n ngOnDestroy() {\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n }\n getDates(startDate, n) {\n const dates = new Array(n);\n let current = new Date(startDate.getTime());\n let i = 0;\n let date;\n while (i < n) {\n date = new Date(current.getTime());\n date = this.datepicker.fixTimeZone(date);\n dates[i++] = date;\n current = new Date(current.getFullYear(), current.getMonth(), current.getDate() + 1);\n }\n return dates;\n }\n #compareDays(date1, date2) {\n const d1 = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate());\n const d2 = new Date(date2.getFullYear(), date2.getMonth(), date2.getDate());\n return d1.getTime() - d2.getTime();\n }\n #refreshDayView() {\n const year = this.datepicker.activeDate.getFullYear();\n const month = this.datepicker.activeDate.getMonth();\n const firstDayOfMonth = new Date(year, month, 1);\n const difference = this.datepicker.startingDay - firstDayOfMonth.getDay();\n const numDisplayedFromPreviousMonth = difference > 0 ? 7 - difference : -difference;\n const firstDate = new Date(firstDayOfMonth.getTime());\n if (this.datepicker.activeDate.getDate() !== this.#initialDate) {\n this.activeDateHasChanged = true;\n }\n /* istanbul ignore else */\n /* sanity check */\n if (numDisplayedFromPreviousMonth > 0) {\n firstDate.setDate(-numDisplayedFromPreviousMonth + 1);\n }\n // 42 is the number of days on a six-week calendar\n const days = this.getDates(firstDate, 42);\n const pickerDates = [];\n for (let i = 0; i < 42; i++) {\n const _dateObject = this.datepicker.createDateObject(days[i], this.datepicker.formatDay, days[i].getMonth() !== month, this.datepicker.datepickerId + '-' + i);\n pickerDates[i] = _dateObject;\n }\n this.labels = [];\n for (let j = 0; j < 7; j++) {\n this.labels[j] = {};\n this.labels[j].abbr = this.datepicker.dateFilter(pickerDates[j].date, this.datepicker.formatDayHeader);\n this.labels[j].full = this.datepicker.dateFilter(pickerDates[j].date, 'EEEE');\n }\n const oldDateRange = this.#getDateRange(this.rows);\n this.rows = this.datepicker.createCalendarRows(pickerDates, 7);\n const newDateRange = this.#getDateRange(this.rows);\n if (!this.#dateRangeRowsAreEqual(oldDateRange, newDateRange)) {\n // Safety check\n /* istanbul ignore else */\n if (newDateRange) {\n this.calendarDateRangeChange.next({\n startDate: newDateRange.startDate,\n endDate: newDateRange.endDate,\n });\n }\n else {\n this.calendarDateRangeChange.next(undefined);\n }\n }\n return this.datepicker.dateFilter(this.datepicker.activeDate, this.datepicker.formatDayTitle);\n }\n #keydownDays(key, event) {\n let date = this.datepicker.activeDate.getDate();\n /* istanbul ignore else */\n /* sanity check */\n if (key === 'arrowleft') {\n date = date - 1;\n }\n else if (key === 'arrowup') {\n date = date - 7;\n }\n else if (key === 'arrowright') {\n date = date + 1;\n }\n else if (key === 'arrowdown') {\n date = date + 7;\n }\n else if (key === 'pageup' || key === 'pagedown') {\n const month = this.datepicker.activeDate.getMonth() + (key === 'pageup' ? -1 : 1);\n this.datepicker.activeDate.setMonth(month, 1);\n date = Math.min(this.#getDaysInMonth(this.datepicker.activeDate.getFullYear(), this.datepicker.activeDate.getMonth()), date);\n }\n else if (key === 'home') {\n date = 1;\n }\n else if (key === 'end') {\n date = this.#getDaysInMonth(this.datepicker.activeDate.getFullYear(), this.datepicker.activeDate.getMonth());\n }\n this.datepicker.activeDate.setDate(date);\n this.datepicker.announceDate(this.datepicker.activeDate, this.datepicker.formatDayLabel);\n }\n #getDaysInMonth(year, month) {\n return month === 1 &&\n year % 4 === 0 &&\n (year % 400 === 0 || year % 100 !== 0)\n ? 29\n : this.#daysInMonth[month];\n }\n /**\n * Applies custom date properties to the existing dates displayed in the calendar.\n */\n #applyCustomDates(customDates, dateRows) {\n let date;\n let newDate;\n let dateIndex;\n /* istanbul ignore else */\n if (customDates && dateRows) {\n customDates.forEach((customDate) => {\n dateIndex = -1;\n dateRows.forEach((row) => {\n if (dateIndex === -1) {\n dateIndex = row.findIndex((d) => {\n return d.date.getTime() === customDate.date.getTime();\n });\n if (dateIndex > -1) {\n date = row[dateIndex];\n // Replace the date with a new instance so the display gets updated.\n newDate = {\n current: date.current,\n date: date.date,\n disabled: !!date.disabled || !!customDate.disabled,\n keyDate: !!customDate.keyDate || !!date.keyDate,\n keyDateText: customDate.keyDateText || date.keyDateText,\n label: date.label,\n secondary: date.secondary,\n selected: date.selected,\n uid: date.uid,\n };\n row[dateIndex] = newDate;\n }\n }\n });\n });\n }\n }\n #dateRangeRowsAreEqual(rangeA, rangeB) {\n /* istanbul ignore if */\n if (!rangeA && !rangeB) {\n return true;\n }\n else if (rangeA && rangeB) {\n return (this.#compareDays(rangeA.startDate, rangeB.startDate) === 0 &&\n this.#compareDays(rangeA.endDate, rangeB.endDate) === 0);\n }\n else {\n return false;\n }\n }\n #getDateRange(rows) {\n /* istanbul ignore else */\n if (rows && rows.length > 0) {\n return {\n startDate: rows[0][0].date,\n endDate: rows[rows.length - 1][rows[rows.length - 1].length - 1].date,\n };\n }\n return undefined;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDayPickerComponent, deps: [{ token: i1.SkyDatepickerCalendarInnerComponent }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.5\", type: SkyDayPickerComponent, isStandalone: true, selector: \"sky-daypicker\", inputs: { customDates: \"customDates\", isWaiting: \"isWaiting\" }, outputs: { calendarDateRangeChange: \"calendarDateRangeChange\" }, ngImport: i0, template: \"<table\\n class=\\\"sky-daypicker-table\\\"\\n role=\\\"grid\\\"\\n [attr.aria-labelledby]=\\\"datepicker.datepickerId + '-title'\\\"\\n>\\n <thead>\\n <tr>\\n @for (label of labels; track label.full) {\\n <th scope=\\\"col\\\" class=\\\"sky-datepicker-center sky-datepicker-weekdays\\\">\\n <!-- display: inline -->\\n <span\\n class=\\\"sky-datepicker-weekday-text\\\"\\n [attr.aria-label]=\\\"label.full\\\"\\n >{{ label.abbr }}</span\\n >\\n </th>\\n }\\n </tr>\\n </thead>\\n <tbody>\\n <!-- Wait indicator for async custom date stream -->\\n <sky-wait [isWaiting]=\\\"isWaiting\\\" />\\n @for (row of rows; track $index) {\\n <tr role=\\\"row\\\">\\n @for (date of row; track date.uid) {\\n <td class=\\\"sky-datepicker-center\\\" role=\\\"gridcell\\\" [id]=\\\"date.uid\\\">\\n <sky-daypicker-cell\\n [activeDateHasChanged]=\\\"activeDateHasChanged\\\"\\n [date]=\\\"date\\\"\\n />\\n </td>\\n }\\n </tr>\\n }\\n </tbody>\\n</table>\\n\", dependencies: [{ kind: \"component\", type: SkyDayPickerCellComponent, selector: \"sky-daypicker-cell\", inputs: [\"activeDateHasChanged\", \"date\"] }, { kind: \"ngmodule\", type: SkyWaitModule }, { kind: \"component\", type: i2.λ14, selector: \"sky-wait\", inputs: [\"ariaLabel\", \"isWaiting\", \"isFullPage\", \"isNonBlocking\", \"screenReaderCompletedText\"] }] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDayPickerComponent, decorators: [{\n type: Component,\n args: [{ imports: [SkyDayPickerCellComponent, SkyWaitModule], selector: 'sky-daypicker', template: \"<table\\n class=\\\"sky-daypicker-table\\\"\\n role=\\\"grid\\\"\\n [attr.aria-labelledby]=\\\"datepicker.datepickerId + '-title'\\\"\\n>\\n <thead>\\n <tr>\\n @for (label of labels; track label.full) {\\n <th scope=\\\"col\\\" class=\\\"sky-datepicker-center sky-datepicker-weekdays\\\">\\n <!-- display: inline -->\\n <span\\n class=\\\"sky-datepicker-weekday-text\\\"\\n [attr.aria-label]=\\\"label.full\\\"\\n >{{ label.abbr }}</span\\n >\\n </th>\\n }\\n </tr>\\n </thead>\\n <tbody>\\n <!-- Wait indicator for async custom date stream -->\\n <sky-wait [isWaiting]=\\\"isWaiting\\\" />\\n @for (row of rows; track $index) {\\n <tr role=\\\"row\\\">\\n @for (date of row; track date.uid) {\\n <td class=\\\"sky-datepicker-center\\\" role=\\\"gridcell\\\" [id]=\\\"date.uid\\\">\\n <sky-daypicker-cell\\n [activeDateHasChanged]=\\\"activeDateHasChanged\\\"\\n [date]=\\\"date\\\"\\n />\\n </td>\\n }\\n </tr>\\n }\\n </tbody>\\n</table>\\n\" }]\n }], ctorParameters: () => [{ type: i1.SkyDatepickerCalendarInnerComponent }], propDecorators: { customDates: [{\n type: Input\n }], calendarDateRangeChange: [{\n type: Output\n }], isWaiting: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF5cGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9kYXRldGltZS9zcmMvbGliL21vZHVsZXMvZGF0ZXBpY2tlci9jYWxlbmRhci9kYXlwaWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2RhdGV0aW1lL3NyYy9saWIvbW9kdWxlcy9kYXRlcGlja2VyL2NhbGVuZGFyL2RheXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVsRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBTS9CLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7O0FBWXZFOztHQUVHO0FBTUgsTUFBTSxPQUFPLHFCQUFxQjtJQUNoQyxJQUNXLFdBQVcsQ0FBQyxLQUE0QztRQUNqRSwwQkFBMEI7UUFDMUIsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNDLENBQUM7SUFDSCxDQUFDO0lBa0JELFlBQVksQ0FBOEQ7SUFDMUUsWUFBWSxDQUFxQjtJQUNqQyxjQUFjLENBQXVCO0lBRXJDLFlBQVksVUFBK0M7UUFuQnBELDRCQUF1QixHQUFHLElBQUksWUFBWSxFQUU5QyxDQUFDO1FBR0csY0FBUyxHQUF3QixLQUFLLENBQUM7UUFFdkMseUJBQW9CLEdBQUcsS0FBSyxDQUFDO1FBQzdCLFdBQU0sR0FBVSxFQUFFLENBQUM7UUFD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QUFhLENBQUMsSUFBNkI7UUFDekMsMEJBQTBCO1FBQzFCLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDNUIsT0FBTztnQkFDTCxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUk7Z0JBQzFCLE9BQU8sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSTthQUN0RSxDQUFDO1FBQ0osQ0FBQztRQUNELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7OEdBblFVLHFCQUFxQjtrR0FBckIscUJBQXFCLDBNQ3BDbEMsMmhDQW9DQSw0Q0RKWSx5QkFBeUIsd0dBQUUsYUFBYTs7MkZBSXZDLHFCQUFxQjtrQkFMakMsU0FBUzs4QkFDQyxDQUFDLHlCQUF5QixFQUFFLGFBQWEsQ0FBQyxZQUN6QyxlQUFlO3dHQUtkLFdBQVc7c0JBRHJCLEtBQUs7Z0JBU0MsdUJBQXVCO3NCQUQ3QixNQUFNO2dCQU1BLFNBQVM7c0JBRGYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTa3lXYWl0TW9kdWxlIH0gZnJvbSAnQHNreXV4L2luZGljYXRvcnMnO1xuXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFNreURhdGVwaWNrZXJDdXN0b21EYXRlIH0gZnJvbSAnLi4vZGF0ZXBpY2tlci1jdXN0b20tZGF0ZSc7XG5cbmltcG9ydCB7IFNreURhdGVwaWNrZXJDYWxlbmRhckNoYW5nZSB9IGZyb20gJy4vZGF0ZXBpY2tlci1jYWxlbmRhci1jaGFuZ2UnO1xuaW1wb3J0IHsgU2t5RGF0ZXBpY2tlckNhbGVuZGFySW5uZXJDb21wb25lbnQgfSBmcm9tICcuL2RhdGVwaWNrZXItY2FsZW5kYXItaW5uZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFNreURheVBpY2tlckNlbGxDb21wb25lbnQgfSBmcm9tICcuL2RheXBpY2tlci1jZWxsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lEYXlQaWNrZXJDb250ZXh0IH0gZnJvbSAnLi9kYXlwaWNrZXItY29udGV4dCc7XG5cbi8qKlxuICogSGVscGVyIGludGVyZmFjZSB0byBjb21wYXJlIGRhdGUgcmFuZ2VzLlxuICogQGludGVybmFsXG4gKi9cbmludGVyZmFjZSBTa3lEYXRlUmFuZ2Uge1xuICBlbmREYXRlOiBEYXRlO1xuICBzdGFydERhdGU6IERhdGU7XG59XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbkBDb21wb25lbnQoe1xuICBpbXBvcnRzOiBbU2t5RGF5UGlja2VyQ2VsbENvbXBvbmVudCwgU2t5V2FpdE1vZHVsZV0sXG4gIHNlbGVjdG9yOiAnc2t5LWRheXBpY2tlcicsXG4gIHRlbXBsYXRlVXJsOiAnZGF5cGlja2VyLmNvbXBvbmVudC5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgU2t5RGF5UGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95LCBPbkluaXQge1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGN1c3RvbURhdGVzKHZhbHVlOiBTa3lEYXRlcGlja2VyQ3VzdG9tRGF0ZVtdIHwgdW5kZWZpbmVkKSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuI2FwcGx5Q3VzdG9tRGF0ZXModmFsdWUsIHRoaXMucm93cyk7XG4gICAgfVxuICB9XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBjYWxlbmRhckRhdGVSYW5nZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8XG4gICAgU2t5RGF0ZXBpY2tlckNhbGVuZGFyQ2hhbmdlIHwgdW5kZWZpbmVkXG4gID4oKTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgaXNXYWl0aW5nOiBib29sZWFuIHwgdW5kZWZpbmVkID0gZmFsc2U7XG5cbiAgcHVibGljIGFjdGl2ZURhdGVIYXNDaGFuZ2VkID0gZmFsc2U7XG4gIHB1YmxpYyBsYWJlbHM6IGFueVtdID0gW107XG4gIHB1YmxpYyB0aXRsZSA9ICcnO1xuICBwdWJsaWMgcm93czogU2t5RGF5UGlja2VyQ29udGV4dFtdW10gPSBbXTtcbiAgcHVibGljIHdlZWtOdW1iZXJzOiBudW1iZXJbXSA9IFtdO1xuICBwdWJsaWMgZGF0ZXBpY2tlcjogU2t5RGF0ZXBpY2tlckNhbGVuZGFySW5uZXJDb21wb25lbnQ7XG4gIHB1YmxpYyBDVVJSRU5UX1RIRU1FX1RFTVBMQVRFOiBhbnk7XG5cbiAgI2RheXNJbk1vbnRoOiBudW1iZXJbXSA9IFszMSwgMjgsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzEsIDMwLCAzMSwgMzAsIDMxXTtcbiAgI2luaXRpYWxEYXRlOiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICNuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihkYXRlcGlja2VyOiBTa3lEYXRlcGlja2VyQ2FsZW5kYXJJbm5lckNvbXBvbmVudCkge1xuICAgIHRoaXMuZGF0ZXBpY2tlciA9IGRhdGVwaWNrZXI7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5kYXRlcGlja2VyLnN0ZXBEYXkgPSB7IG1vbnRoczogMSB9O1xuICAgIHRoaXMuI2luaXRpYWxEYXRlID0gdGhpcy5kYXRlcGlja2VyLmFjdGl2ZURhdGUuZ2V0RGF0ZSgpO1xuXG4gICAgdGhpcy5kYXRlcGlja2VyLnNldFJlZnJlc2hWaWV3SGFuZGxlcigoKSA9PiB0aGlzLiNyZWZyZXNoRGF5VmlldygpLCAnZGF5Jyk7XG5cbiAgICB0aGlzLmRhdGVwaWNrZXIuc2V0Q29tcGFyZUhhbmRsZXIodGhpcy4jY29tcGFyZURheXMsICdkYXknKTtcblxuICAgIHRoaXMuZGF0ZXBpY2tlci5zZXRLZXlkb3duSGFuZGxlcigoa2V5OiBzdHJpbmcsIGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICB0aGlzLiNrZXlkb3duRGF5cyhrZXksIGV2ZW50KTtcbiAgICB9LCAnZGF5Jyk7XG5cbiAgICB0aGlzLmRhdGVwaWNrZXIucmVmcmVzaFZpZXcoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0RGF0ZXMoc3RhcnREYXRlOiBEYXRlLCBuOiBudW1iZXIpOiBEYXRlW10ge1xuICAgIGNvbnN0IGRhdGVzOiBEYXRlW10gPSBuZXcgQXJyYXkobik7XG4gICAgbGV0IGN1cnJlbnQgPSBuZXcgRGF0ZShzdGFydERhdGUuZ2V0VGltZSgpKTtcbiAgICBsZXQgaSA9IDA7XG4gICAgbGV0IGRhdGU6IERhdGU7XG4gICAgd2hpbGUgKGkgPCBuKSB7XG4gICAgICBkYXRlID0gbmV3IERhdGUoY3VycmVudC5nZXRUaW1lKCkpO1xuICAgICAgZGF0ZSA9IHRoaXMuZGF0ZXBpY2tlci5maXhUaW1lWm9uZShkYXRlKTtcbiAgICAgIGRhdGVzW2krK10gPSBkYXRlO1xuICAgICAgY3VycmVudCA9IG5ldyBEYXRlKFxuICAgICAgICBjdXJyZW50LmdldEZ1bGxZZWFyKCksXG4gICAgICAgIGN1cnJlbnQuZ2V0TW9udGgoKSxcbiAgICAgICAgY3VycmVudC5nZXREYXRlKCkgKyAxLFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIGRhdGVzO1xuICB9XG5cbiAgI2NvbXBhcmVEYXlzKGRhdGUxOiBEYXRlLCBkYXRlMjogRGF0ZSk6IG51bWJlciB7XG4gICAgY29uc3QgZDEgPSBuZXcgRGF0ZShkYXRlMS5nZXRGdWxsWWVhcigpLCBkYXRlMS5nZXRNb250aCgpLCBkYXRlMS5nZXREYXRlKCkpO1xuICAgIGNvbnN0IGQyID0gbmV3IERhdGUoZGF0ZTIuZ2V0RnVsbFllYXIoKSwgZGF0ZTIuZ2V0TW9udGgoKSwgZGF0ZTIuZ2V0RGF0ZSgpKTtcbiAgICByZXR1cm4gZDEuZ2V0VGltZSgpIC0gZDIuZ2V0VGltZSgpO1xuICB9XG5cbiAgI3JlZnJlc2hEYXlWaWV3KCk6IHN0cmluZyB7XG4gICAgY29uc3QgeWVhciA9IHRoaXMuZGF0ZXBpY2tlci5hY3RpdmVEYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgY29uc3QgbW9udGggPSB0aGlzLmRhdGVwaWNrZXIuYWN0aXZlRGF0ZS5nZXRNb250aCgpO1xuICAgIGNvbnN0IGZpcnN0RGF5T2ZNb250aCA9IG5ldyBEYXRlKHllYXIsIG1vbnRoLCAxKTtcbiAgICBjb25zdCBkaWZmZXJlbmNlID0gdGhpcy5kYXRlcGlja2VyLnN0YXJ0aW5nRGF5IC0gZmlyc3REYXlPZk1vbnRoLmdldERheSgpO1xuICAgIGNvbnN0IG51bURpc3BsYXllZEZyb21QcmV2aW91c01vbnRoID1cbiAgICAgIGRpZmZlcmVuY2UgPiAwID8gNyAtIGRpZmZlcmVuY2UgOiAtZGlmZmVyZW5jZTtcbiAgICBjb25zdCBmaXJzdERhdGUgPSBuZXcgRGF0ZShmaXJzdERheU9mTW9udGguZ2V0VGltZSgpKTtcblxuICAgIGlmICh0aGlzLmRhdGVwaWNrZXIuYWN0aXZlRGF0ZS5nZXREYXRlKCkgIT09IHRoaXMuI2luaXRpYWxEYXRlKSB7XG4gICAgICB0aGlzLmFjdGl2ZURhdGVIYXNDaGFuZ2VkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIC8qIHNhbml0eSBjaGVjayAqL1xuICAgIGlmIChudW1EaXNwbGF5ZWRGcm9tUHJldmlvdXNNb250aCA+IDApIHtcbiAgICAgIGZpcnN0RGF0ZS5zZXREYXRlKC1udW1EaXNwbGF5ZWRGcm9tUHJldmlvdXNNb250aCArIDEpO1xuICAgIH1cblxuICAgIC8vIDQyIGlzIHRoZSBudW1iZXIgb2YgZGF5cyBvbiBhIHNpeC13ZWVrIGNhbGVuZGFyXG4gICAgY29uc3QgZGF5czogRGF0ZVtdID0gdGhpcy5nZXREYXRlcyhmaXJzdERhdGUsIDQyKTtcbiAgICBjb25zdCBwaWNrZXJEYXRlczogU2t5RGF5UGlja2VyQ29udGV4dFtdID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCA0MjsgaSsrKSB7XG4gICAgICBjb25zdCBfZGF0ZU9iamVjdCA9IHRoaXMuZGF0ZXBpY2tlci5jcmVhdGVEYXRlT2JqZWN0KFxuICAgICAgICBkYXlzW2ldLFxuICAgICAgICB0aGlzLmRhdGVwaWNrZXIuZm9ybWF0RGF5LFxuICAgICAgICBkYXlzW2ldLmdldE1vbnRoKCkgIT09IG1vbnRoLFxuICAgICAgICB0aGlzLmRhdGVwaWNrZXIuZGF0ZXBpY2tlcklkICsgJy0nICsgaSxcbiAgICAgICk7XG4gICAgICBwaWNrZXJEYXRlc1tpXSA9IF9kYXRlT2JqZWN0O1xuICAgIH1cblxuICAgIHRoaXMubGFiZWxzID0gW107XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCA3OyBqKyspIHtcbiAgICAgIHRoaXMubGFiZWxzW2pdID0ge307XG4gICAgICB0aGlzLmxhYmVsc1tqXS5hYmJyID0gdGhpcy5kYXRlcGlja2VyLmRhdGVGaWx0ZXIoXG4gICAgICAgIHBpY2tlckRhdGVzW2pdLmRhdGUsXG4gICAgICAgIHRoaXMuZGF0ZXBpY2tlci5mb3JtYXREYXlIZWFkZXIsXG4gICAgICApO1xuICAgICAgdGhpcy5sYWJlbHNbal0uZnVsbCA9IHRoaXMuZGF0ZXBpY2tlci5kYXRlRmlsdGVyKFxuICAgICAgICBwaWNrZXJEYXRlc1tqXS5kYXRlLFxuICAgICAgICAnRUVFRScsXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IG9sZERhdGVSYW5nZSA9IHRoaXMuI2dldERhdGVSYW5nZSh0aGlzLnJvd3MpO1xuICAgIHRoaXMucm93cyA9IHRoaXMuZGF0ZXBpY2tlci5jcmVhdGVDYWxlbmRhclJvd3MocGlja2VyRGF0ZXMsIDcpO1xuICAgIGNvbnN0IG5ld0RhdGVSYW5nZSA9IHRoaXMuI2dldERhdGVSYW5nZSh0aGlzLnJvd3MpO1xuXG4gICAgaWYgKCF0aGlzLiNkYXRlUmFuZ2VSb3dzQXJlRXF1YWwob2xkRGF0ZVJhbmdlLCBuZXdEYXRlUmFuZ2UpKSB7XG4gICAgICAvLyBTYWZldHkgY2hlY2tcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICBpZiAobmV3RGF0ZVJhbmdlKSB7XG4gICAgICAgIHRoaXMuY2FsZW5kYXJEYXRlUmFuZ2VDaGFuZ2UubmV4dCh7XG4gICAgICAgICAgc3RhcnREYXRlOiBuZXdEYXRlUmFuZ2Uuc3RhcnREYXRlLFxuICAgICAgICAgIGVuZERhdGU6IG5ld0RhdGVSYW5nZS5lbmREYXRlLFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY2FsZW5kYXJEYXRlUmFuZ2VDaGFuZ2UubmV4dCh1bmRlZmluZWQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmRhdGVwaWNrZXIuZGF0ZUZpbHRlcihcbiAgICAgIHRoaXMuZGF0ZXBpY2tlci5hY3RpdmVEYXRlLFxuICAgICAgdGhpcy5kYXRlcGlja2VyLmZvcm1hdERheVRpdGxlLFxuICAgICk7XG4gIH1cblxuICAja2V5ZG93bkRheXMoa2V5OiBzdHJpbmcsIGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgbGV0IGRhdGUgPSB0aGlzLmRhdGVwaWNrZXIuYWN0aXZlRGF0ZS5nZXREYXRlKCk7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAvKiBzYW5pdHkgY2hlY2sgKi9cbiAgICBpZiAoa2V5ID09PSAnYXJyb3dsZWZ0Jykge1xuICAgICAgZGF0ZSA9IGRhdGUgLSAxO1xuICAgIH0gZWxzZSBpZiAoa2V5ID09PSAnYXJyb3d1cCcpIHtcbiAgICAgIGRhdGUgPSBkYXRlIC0gNztcbiAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ2Fycm93cmlnaHQnKSB7XG4gICAgICBkYXRlID0gZGF0ZSArIDE7XG4gICAgfSBlbHNlIGlmIChrZXkgPT09ICdhcnJvd2Rvd24nKSB7XG4gICAgICBkYXRlID0gZGF0ZSArIDc7XG4gICAgfSBlbHNlIGlmIChrZXkgPT09ICdwYWdldXAnIHx8IGtleSA9PT0gJ3BhZ2Vkb3duJykge1xuICAgICAgY29uc3QgbW9udGggPVxuICAgICAgICB0aGlzLmRhdGVwaWNrZXIuYWN0aXZlRGF0ZS5nZXRNb250aCgpICsgKGtleSA9PT0gJ3BhZ2V1cCcgPyAtMSA6IDEpO1xuICAgICAgdGhpcy5kYXRlcGlja2VyLmFjdGl2ZURhdGUuc2V0TW9udGgobW9udGgsIDEpO1xuICAgICAgZGF0ZSA9IE1hdGgubWluKFxuICAgICAgICB0aGlzLiNnZXREYXlzSW5Nb250aChcbiAgICAgICAgICB0aGlzLmRhdGVwaWNrZXIuYWN0aXZlRGF0ZS5nZXRGdWxsWWVhcigpLFxuICAgICAgICAgIHRoaXMuZGF0ZXBpY2tlci5hY3RpdmVEYXRlLmdldE1vbnRoKCksXG4gICAgICAgICksXG4gICAgICAgIGRhdGUsXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAoa2V5ID09PSAnaG9tZScpIHtcbiAgICAgIGRhdGUgPSAxO1xuICAgIH0gZWxzZSBpZiAoa2V5ID09PSAnZW5kJykge1xuICAgICAgZGF0ZSA9IHRoaXMuI2dldERheXNJbk1vbnRoKFxuICAgICAgICB0aGlzLmRhdGVwaWNrZXIuYWN0aXZlRGF0ZS5nZXRGdWxsWWVhcigpLFxuICAgICAgICB0aGlzLmRhdGVwaWNrZXIuYWN0aXZlRGF0ZS5nZXRNb250aCgpLFxuICAgICAgKTtcbiAgICB9XG4gICAgdGhpcy5kYXRlcGlja2VyLmFjdGl2ZURhdGUuc2V0RGF0ZShkYXRlKTtcbiAgICB0aGlzLmRhdGVwaWNrZXIuYW5ub3VuY2VEYXRlKFxuICAgICAgdGhpcy5kYXRlcGlja2VyLmFjdGl2ZURhdGUsXG4gICAgICB0aGlzLmRhdGVwaWNrZXIuZm9ybWF0RGF5TGFiZWwsXG4gICAgKTtcbiAgfVxuXG4gICNnZXREYXlzSW5Nb250aCh5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiBtb250aCA9PT0gMSAmJlxuICAgICAgeWVhciAlIDQgPT09IDAgJiZcbiAgICAgICh5ZWFyICUgNDAwID09PSAwIHx8IHllYXIgJSAxMDAgIT09IDApXG4gICAgICA/IDI5XG4gICAgICA6IHRoaXMuI2RheXNJbk1vbnRoW21vbnRoXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBsaWVzIGN1c3RvbSBkYXRlIHByb3BlcnRpZXMgdG8gdGhlIGV4aXN0aW5nIGRhdGVzIGRpc3BsYXllZCBpbiB0aGUgY2FsZW5kYXIuXG4gICAqL1xuICAjYXBwbHlDdXN0b21EYXRlcyhcbiAgICBjdXN0b21EYXRlczogU2t5RGF0ZXBpY2tlckN1c3RvbURhdGVbXSxcbiAgICBkYXRlUm93czogU2t5RGF5UGlja2VyQ29udGV4dFtdW10sXG4gICk6IHZvaWQge1xuICAgIGxldCBkYXRlOiBTa3lEYXlQaWNrZXJDb250ZXh0O1xuICAgIGxldCBuZXdEYXRlOiBTa3lEYXlQaWNrZXJDb250ZXh0O1xuICAgIGxldCBkYXRlSW5kZXg6IG51bWJlcjtcblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKGN1c3RvbURhdGVzICYmIGRhdGVSb3dzKSB7XG4gICAgICBjdXN0b21EYXRlcy5mb3JFYWNoKChjdXN0b21EYXRlKSA9PiB7XG4gICAgICAgIGRhdGVJbmRleCA9IC0xO1xuICAgICAgICBkYXRlUm93cy5mb3JFYWNoKChyb3cpID0+IHtcbiAgICAgICAgICBpZiAoZGF0ZUluZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgZGF0ZUluZGV4ID0gcm93LmZpbmRJbmRleCgoZCkgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4gZC5kYXRlLmdldFRpbWUoKSA9PT0gY3VzdG9tRGF0ZS5kYXRlLmdldFRpbWUoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKGRhdGVJbmRleCA+IC0xKSB7XG4gICAgICAgICAgICAgIGRhdGUgPSByb3dbZGF0ZUluZGV4XTtcbiAgICAgICAgICAgICAgLy8gUmVwbGFjZSB0aGUgZGF0ZSB3aXRoIGEgbmV3IGluc3RhbmNlIHNvIHRoZSBkaXNwbGF5IGdldHMgdXBkYXRlZC5cbiAgICAgICAgICAgICAgbmV3RGF0ZSA9IHtcbiAgICAgICAgICAgICAgICBjdXJyZW50OiBkYXRlLmN1cnJlbnQsXG4gICAgICAgICAgICAgICAgZGF0ZTogZGF0ZS5kYXRlLFxuICAgICAgICAgICAgICAgIGRpc2FibGVkOiAhIWRhdGUuZGlzYWJsZWQgfHwgISFjdXN0b21EYXRlLmRpc2FibGVkLFxuICAgICAgICAgICAgICAgIGtleURhdGU6ICEhY3VzdG9tRGF0ZS5rZXlEYXRlIHx8ICEhZGF0ZS5rZXlEYXRlLFxuICAgICAgICAgICAgICAgIGtleURhdGVUZXh0OiBjdXN0b21EYXRlLmtleURhdGVUZXh0IHx8IGRhdGUua2V5RGF0ZVRleHQsXG4gICAgICAgICAgICAgICAgbGFiZWw6IGRhdGUubGFiZWwsXG4gICAgICAgICAgICAgICAgc2Vjb25kYXJ5OiBkYXRlLnNlY29uZGFyeSxcbiAgICAgICAgICAgICAgICBzZWxlY3RlZDogZGF0ZS5zZWxlY3RlZCxcbiAgICAgICAgICAgICAgICB1aWQ6IGRhdGUudWlkLFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICByb3dbZGF0ZUluZGV4XSA9IG5ld0RhdGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gICNkYXRlUmFuZ2VSb3dzQXJlRXF1YWwoXG4gICAgcmFuZ2VBPzogU2t5RGF0ZVJhbmdlLFxuICAgIHJhbmdlQj86IFNreURhdGVSYW5nZSxcbiAgKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKCFyYW5nZUEgJiYgIXJhbmdlQikge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIGlmIChyYW5nZUEgJiYgcmFuZ2VCKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICB0aGlzLiNjb21wYXJlRGF5cyhyYW5nZUEuc3RhcnREYXRlLCByYW5nZUIuc3RhcnREYXRlKSA9PT0gMCAmJlxuICAgICAgICB0aGlzLiNjb21wYXJlRGF5cyhyYW5nZUEuZW5kRGF0ZSwgcmFuZ2VCLmVuZERhdGUpID09PSAwXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgI2dldERhdGVSYW5nZShyb3dzOiBTa3lEYXlQaWNrZXJDb250ZXh0W11bXSk6IFNreURhdGVSYW5nZSB8IHVuZGVmaW5lZCB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAocm93cyAmJiByb3dzLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN0YXJ0RGF0ZTogcm93c1swXVswXS5kYXRlLFxuICAgICAgICBlbmREYXRlOiByb3dzW3Jvd3MubGVuZ3RoIC0gMV1bcm93c1tyb3dzLmxlbmd0aCAtIDFdLmxlbmd0aCAtIDFdLmRhdGUsXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG4iLCI8dGFibGVcbiAgY2xhc3M9XCJza3ktZGF5cGlja2VyLXRhYmxlXCJcbiAgcm9sZT1cImdyaWRcIlxuICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiZGF0ZXBpY2tlci5kYXRlcGlja2VySWQgKyAnLXRpdGxlJ1wiXG4+XG4gIDx0aGVhZD5cbiAgICA8dHI+XG4gICAgICBAZm9yIChsYWJlbCBvZiBsYWJlbHM7IHRyYWNrIGxhYmVsLmZ1bGwpIHtcbiAgICAgICAgPHRoIHNjb3BlPVwiY29sXCIgY2xhc3M9XCJza3ktZGF0ZXBpY2tlci1jZW50ZXIgc2t5LWRhdGVwaWNrZXItd2Vla2RheXNcIj5cbiAgICAgICAgICA8IS0tIGRpc3BsYXk6IGlubGluZSAtLT5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3M9XCJza3ktZGF0ZXBpY2tlci13ZWVrZGF5LXRleHRcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJsYWJlbC5mdWxsXCJcbiAgICAgICAgICAgID57eyBsYWJlbC5hYmJyIH19PC9zcGFuXG4gICAgICAgICAgPlxuICAgICAgICA8L3RoPlxuICAgICAgfVxuICAgIDwvdHI+XG4gIDwvdGhlYWQ+XG4gIDx0Ym9keT5cbiAgICA8IS0tIFdhaXQgaW5kaWNhdG9yIGZvciBhc3luYyBjdXN0b20gZGF0ZSBzdHJlYW0gLS0+XG4gICAgPHNreS13YWl0IFtpc1dhaXRpbmddPVwiaXNXYWl0aW5nXCIgLz5cbiAgICBAZm9yIChyb3cgb2Ygcm93czsgdHJhY2sgJGluZGV4KSB7XG4gICAgICA8dHIgcm9sZT1cInJvd1wiPlxuICAgICAgICBAZm9yIChkYXRlIG9mIHJvdzsgdHJhY2sgZGF0ZS51aWQpIHtcbiAgICAgICAgICA8dGQgY2xhc3M9XCJza3ktZGF0ZXBpY2tlci1jZW50ZXJcIiByb2xlPVwiZ3JpZGNlbGxcIiBbaWRdPVwiZGF0ZS51aWRcIj5cbiAgICAgICAgICAgIDxza3ktZGF5cGlja2VyLWNlbGxcbiAgICAgICAgICAgICAgW2FjdGl2ZURhdGVIYXNDaGFuZ2VkXT1cImFjdGl2ZURhdGVIYXNDaGFuZ2VkXCJcbiAgICAgICAgICAgICAgW2RhdGVdPVwiZGF0ZVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvdGQ+XG4gICAgICAgIH1cbiAgICAgIDwvdHI+XG4gICAgfVxuICA8L3Rib2R5PlxuPC90YWJsZT5cbiJdfQ==","import { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { SkyDatepickerCalendarLabelPipe } from './datepicker-calendar-label.pipe';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"./datepicker-calendar-inner.component\";\nimport * as i2 from \"@angular/common\";\n/**\n * @internal\n */\nexport class SkyMonthPickerComponent {\n constructor(datepicker) {\n this.rows = [];\n this.title = '';\n this.datepicker = datepicker;\n }\n ngOnInit() {\n this.datepicker.stepMonth = {\n years: 1,\n };\n this.datepicker.setRefreshViewHandler(() => this.#refreshMonthView(), 'month');\n this.datepicker.setCompareHandler(this.#compareMonth, 'month');\n this.datepicker.refreshView();\n this.datepicker.setKeydownHandler((key, event) => {\n this.#keydownMonths(key, event);\n }, 'month');\n }\n #compareMonth(date1, date2) {\n const d1 = new Date(date1.getFullYear(), date1.getMonth());\n const d2 = new Date(date2.getFullYear(), date2.getMonth());\n return d1.getTime() - d2.getTime();\n }\n #refreshMonthView() {\n const months = new Array(12);\n const year = this.datepicker.activeDate.getFullYear();\n let date;\n for (let i = 0; i < 12; i++) {\n date = new Date(year, i, 1);\n date = this.datepicker.fixTimeZone(date);\n months[i] = this.datepicker.createDateObject(date, this.datepicker.formatMonth, false, this.datepicker.datepickerId + '-' + i);\n }\n this.rows = this.datepicker.createCalendarRows(months, this.datepicker.monthColLimit);\n return this.datepicker.dateFilter(this.datepicker.activeDate, this.datepicker.formatMonthTitle);\n }\n #keydownMonths(key, event) {\n let date = this.datepicker.activeDate.getMonth();\n /* istanbul ignore else */\n /* sanity check */\n if (key === 'arrowleft') {\n date = date - 1;\n }\n else if (key === 'arrowup') {\n date = date - this.datepicker.monthColLimit;\n }\n else if (key === 'arrowright') {\n date = date + 1;\n }\n else if (key === 'arrowdown') {\n date = date + this.datepicker.monthColLimit;\n }\n else if (key === 'pageup' || key === 'pagedown') {\n const year = this.datepicker.activeDate.getFullYear() + (key === 'pageup' ? -1 : 1);\n this.datepicker.activeDate.setFullYear(year);\n }\n else if (key === 'home') {\n date = 0;\n }\n else if (key === 'end') {\n date = 11;\n }\n this.datepicker.activeDate.setMonth(date);\n this.datepicker.announceDate(this.datepicker.activeDate, this.datepicker.formatMonthLabel);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyMonthPickerComponent, deps: [{ token: i1.SkyDatepickerCalendarInnerComponent }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.5\", type: SkyMonthPickerComponent, isStandalone: true, selector: \"sky-monthpicker\", ngImport: i0, template: \"<table role=\\\"grid\\\">\\n <tbody>\\n @for (row of rows; track $index) {\\n <tr>\\n @for (date of row; track date.uid) {\\n <td class=\\\"text-center\\\" role=\\\"gridcell\\\" [id]=\\\"date.uid\\\">\\n <button\\n type=\\\"button\\\"\\n class=\\\"sky-btn sky-btn-default sky-datepicker-btn-date\\\"\\n tabindex=\\\"-1\\\"\\n [ngClass]=\\\"{\\n 'sky-datepicker-btn-selected': date.selected,\\n 'sky-btn-disabled': date.disabled,\\n 'sky-btn-active': datepicker.isActive(date)\\n }\\\"\\n [attr.aria-label]=\\\"\\n date.date\\n | skyDatepickerCalendarLabel: datepicker.formatMonthLabel\\n \\\"\\n [disabled]=\\\"date.disabled\\\"\\n (click)=\\\"datepicker.selectCalendar($event, date.date)\\\"\\n >\\n <span [ngClass]=\\\"{ 'sky-datepicker-current': date.current }\\\">{{\\n date.label\\n }}</span>\\n </button>\\n </td>\\n }\\n </tr>\\n }\\n </tbody>\\n</table>\\n\", dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"pipe\", type: SkyDatepickerCalendarLabelPipe, name: \"skyDatepickerCalendarLabel\" }] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyMonthPickerComponent, decorators: [{\n type: Component,\n args: [{ imports: [CommonModule, SkyDatepickerCalendarLabelPipe], selector: 'sky-monthpicker', template: \"<table role=\\\"grid\\\">\\n <tbody>\\n @for (row of rows; track $index) {\\n <tr>\\n @for (date of row; track date.uid) {\\n <td class=\\\"text-center\\\" role=\\\"gridcell\\\" [id]=\\\"date.uid\\\">\\n <button\\n type=\\\"button\\\"\\n class=\\\"sky-btn sky-btn-default sky-datepicker-btn-date\\\"\\n tabindex=\\\"-1\\\"\\n [ngClass]=\\\"{\\n 'sky-datepicker-btn-selected': date.selected,\\n 'sky-btn-disabled': date.disabled,\\n 'sky-btn-active': datepicker.isActive(date)\\n }\\\"\\n [attr.aria-label]=\\\"\\n date.date\\n | skyDatepickerCalendarLabel: datepicker.formatMonthLabel\\n \\\"\\n [disabled]=\\\"date.disabled\\\"\\n (click)=\\\"datepicker.selectCalendar($event, date.date)\\\"\\n >\\n <span [ngClass]=\\\"{ 'sky-datepicker-current': date.current }\\\">{{\\n date.label\\n }}</span>\\n </button>\\n </td>\\n }\\n </tr>\\n }\\n </tbody>\\n</table>\\n\" }]\n }], ctorParameters: () => [{ type: i1.SkyDatepickerCalendarInnerComponent }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9udGhwaWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2RhdGV0aW1lL3NyYy9saWIvbW9kdWxlcy9kYXRlcGlja2VyL2NhbGVuZGFyL21vbnRocGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9kYXRldGltZS9zcmMvbGliL21vZHVsZXMvZGF0ZXBpY2tlci9jYWxlbmRhci9tb250aHBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUdsRCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7OztBQUdsRjs7R0FFRztBQU1ILE1BQU0sT0FBTyx1QkFBdUI7SUFPbEMsWUFBWSxVQUErQztRQUpwRCxTQUFJLEdBQTRCLEVBQUUsQ0FBQztRQUVuQyxVQUFLLEdBQUcsRUFBRSxDQUFDO1FBR2hCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO0lBQy9CLENBQUM7SUFFTSxRQUFRO1FBQ2IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLEdBQUc7WUFDMUIsS0FBSyxFQUFFLENBQUM7U0FDVCxDQUFDO1FBRUYsSUFBSSxDQUFDLFVBQVUsQ0FBQyxxQkFBcUIsQ0FDbkMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEVBQzlCLE9BQU8sQ0FDUixDQUFDO1FBRUYsSUFBSSxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRS9ELElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFOUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEdBQVcsRUFBRSxLQUFvQixFQUFFLEVBQUU7WUFDdEUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDbEMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2QsQ0FBQztJQUVELGFBQWEsQ0FBQyxLQUFXLEVBQUUsS0FBVztRQUNwQyxNQUFNLEVBQUUsR0FBRyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDM0QsTUFBTSxFQUFFLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxFQUFFLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQzNELE9BQU8sRUFBRSxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsTUFBTSxNQUFNLEdBQUcsSUFBSSxLQUFLLENBQXNCLEVBQUUsQ0FBQyxDQUFDO1FBQ2xELE1BQU0sSUFBSSxHQUFXLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzlELElBQUksSUFBVSxDQUFDO1FBRWYsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzVCLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzVCLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN6QyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FDMUMsSUFBSSxFQUNKLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUMzQixLQUFLLEVBQ0wsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FDdkMsQ0FBQztRQUNKLENBQUM7UUFFRCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsa0JBQWtCLENBQzVDLE1BQU0sRUFDTixJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FDOUIsQ0FBQztRQUVGLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQy9CLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUMxQixJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUNqQyxDQUFDO0lBQ0osQ0FBQztJQUVELGNBQWMsQ0FBQyxHQUFXLEVBQUUsS0FBb0I7UUFDOUMsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFakQsMEJBQTBCO1FBQzFCLGtCQUFrQjtRQUNsQixJQUFJLEdBQUcsS0FBSyxXQUFXLEVBQUUsQ0FBQztZQUN4QixJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQztRQUNsQixDQUFDO2FBQU0sSUFBSSxHQUFHLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDN0IsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQztRQUM5QyxDQUFDO2FBQU0sSUFBSSxHQUFHLEtBQUssWUFBWSxFQUFFLENBQUM7WUFDaEMsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLENBQUM7UUFDbEIsQ0FBQzthQUFNLElBQUksR0FBRyxLQUFLLFdBQVcsRUFBRSxDQUFDO1lBQy9CLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUM7UUFDOUMsQ0FBQzthQUFNLElBQUksR0FBRyxLQUFLLFFBQVEsSUFBSSxHQUFHLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDbEQsTUFBTSxJQUFJLEdBQ1IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDekUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9DLENBQUM7YUFBTSxJQUFJLEdBQUcsS0FBSyxNQUFNLEVBQUUsQ0FBQztZQUMxQixJQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQ1gsQ0FBQzthQUFNLElBQUksR0FBRyxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQ3pCLElBQUksR0FBRyxFQUFFLENBQUM7UUFDWixDQUFDO1FBQ0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUMxQixJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFDMUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FDakMsQ0FBQztJQUNKLENBQUM7OEdBMUZVLHVCQUF1QjtrR0FBdkIsdUJBQXVCLDJFQ2ZwQyxnbENBZ0NBLDJDRHJCWSxZQUFZLHdIQUFFLDhCQUE4Qjs7MkZBSTNDLHVCQUF1QjtrQkFMbkMsU0FBUzs4QkFDQyxDQUFDLFlBQVksRUFBRSw4QkFBOEIsQ0FBQyxZQUM3QyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgU2t5RGF0ZXBpY2tlckNhbGVuZGFySW5uZXJDb21wb25lbnQgfSBmcm9tICcuL2RhdGVwaWNrZXItY2FsZW5kYXItaW5uZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFNreURhdGVwaWNrZXJDYWxlbmRhckxhYmVsUGlwZSB9IGZyb20gJy4vZGF0ZXBpY2tlci1jYWxlbmRhci1sYWJlbC5waXBlJztcbmltcG9ydCB7IFNreURheVBpY2tlckNvbnRleHQgfSBmcm9tICcuL2RheXBpY2tlci1jb250ZXh0JztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuQENvbXBvbmVudCh7XG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFNreURhdGVwaWNrZXJDYWxlbmRhckxhYmVsUGlwZV0sXG4gIHNlbGVjdG9yOiAnc2t5LW1vbnRocGlja2VyJyxcbiAgdGVtcGxhdGVVcmw6ICdtb250aHBpY2tlci5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIFNreU1vbnRoUGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHVibGljIGRhdGVwaWNrZXI6IFNreURhdGVwaWNrZXJDYWxlbmRhcklubmVyQ29tcG9uZW50O1xuXG4gIHB1YmxpYyByb3dzOiBTa3lEYXlQaWNrZXJDb250ZXh0W11bXSA9IFtdO1xuXG4gIHB1YmxpYyB0aXRsZSA9ICcnO1xuXG4gIGNvbnN0cnVjdG9yKGRhdGVwaWNrZXI6IFNreURhdGVwaWNrZXJDYWxlbmRhcklubmVyQ29tcG9uZW50KSB7XG4gICAgdGhpcy5kYXRlcGlja2VyID0gZGF0ZXBpY2tlcjtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmRhdGVwaWNrZXIuc3RlcE1vbnRoID0ge1xuICAgICAgeWVhcnM6IDEsXG4gICAgfTtcblxuICAgIHRoaXMuZGF0ZXBpY2tlci5zZXRSZWZyZXNoVmlld0hhbmRsZXIoXG4gICAgICAoKSA9PiB0aGlzLiNyZWZyZXNoTW9udGhWaWV3KCksXG4gICAgICAnbW9udGgnLFxuICAgICk7XG5cbiAgICB0aGlzLmRhdGVwaWNrZXIuc2V0Q29tcGFyZUhhbmRsZXIodGhpcy4jY29tcGFyZU1vbnRoLCAnbW9udGgnKTtcblxuICAgIHRoaXMuZGF0ZXBpY2tlci5yZWZyZXNoVmlldygpO1xuXG4gICAgdGhpcy5kYXRlcGlja2VyLnNldEtleWRvd25IYW5kbGVyKChrZXk6IHN0cmluZywgZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgIHRoaXMuI2tleWRvd25Nb250aHMoa2V5LCBldmVudCk7XG4gICAgfSwgJ21vbnRoJyk7XG4gIH1cblxuICAjY29tcGFyZU1vbnRoKGRhdGUxOiBEYXRlLCBkYXRlMjogRGF0ZSk6IG51bWJlciB7XG4gICAgY29uc3QgZDEgPSBuZXcgRGF0ZShkYXRlMS5nZXRGdWxsWWVhcigpLCBkYXRlMS5nZXRNb250aCgpKTtcbiAgICBjb25zdCBkMiA9IG5ldyBEYXRlKGRhdGUyLmdldEZ1bGxZZWFyKCksIGRhdGUyLmdldE1vbnRoKCkpO1xuICAgIHJldHVybiBkMS5nZXRUaW1lKCkgLSBkMi5nZXRUaW1lKCk7XG4gIH1cblxuICAjcmVmcmVzaE1vbnRoVmlldygpOiBzdHJpbmcge1xuICAgIGNvbnN0IG1vbnRocyA9IG5ldyBBcnJheTxTa3lEYXlQaWNrZXJDb250ZXh0PigxMik7XG4gICAgY29uc3QgeWVhcjogbnVtYmVyID0gdGhpcy5kYXRlcGlja2VyLmFjdGl2ZURhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICBsZXQgZGF0ZTogRGF0ZTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTI7IGkrKykge1xuICAgICAgZGF0ZSA9IG5ldyBEYXRlKHllYXIsIGksIDEpO1xuICAgICAgZGF0ZSA9IHRoaXMuZGF0ZXBpY2tlci5maXhUaW1lWm9uZShkYXRlKTtcbiAgICAgIG1vbnRoc1tpXSA9IHRoaXMuZGF0ZXBpY2tlci5jcmVhdGVEYXRlT2JqZWN0KFxuICAgICAgICBkYXRlLFxuICAgICAgICB0aGlzLmRhdGVwaWNrZXIuZm9ybWF0TW9udGgsXG4gICAgICAgIGZhbHNlLFxuICAgICAgICB0aGlzLmRhdGVwaWNrZXIuZGF0ZXBpY2tlcklkICsgJy0nICsgaSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5yb3dzID0gdGhpcy5kYXRlcGlja2VyLmNyZWF0ZUNhbGVuZGFyUm93cyhcbiAgICAgIG1vbnRocyxcbiAgICAgIHRoaXMuZGF0ZXBpY2tlci5tb250aENvbExpbWl0LFxuICAgICk7XG5cbiAgICByZXR1cm4gdGhpcy5kYXRlcGlja2VyLmRhdGVGaWx0ZXIoXG4gICAgICB0aGlzLmRhdGVwaWNrZXIuYWN0aXZlRGF0ZSxcbiAgICAgIHRoaXMuZGF0ZXBpY2tlci5mb3JtYXRNb250aFRpdGxlLFxuICAgICk7XG4gIH1cblxuICAja2V5ZG93bk1vbnRocyhrZXk6IHN0cmluZywgZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBsZXQgZGF0ZSA9IHRoaXMuZGF0ZXBpY2tlci5hY3RpdmVEYXRlLmdldE1vbnRoKCk7XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIC8qIHNhbml0eSBjaGVjayAqL1xuICAgIGlmIChrZXkgPT09ICdhcnJvd2xlZnQnKSB7XG4gICAgICBkYXRlID0gZGF0ZSAtIDE7XG4gICAgfSBlbHNlIGlmIChrZXkgPT09ICdhcnJvd3VwJykge1xuICAgICAgZGF0ZSA9IGRhdGUgLSB0aGlzLmRhdGVwaWNrZXIubW9udGhDb2xMaW1pdDtcbiAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ2Fycm93cmlnaHQnKSB7XG4gICAgICBkYXRlID0gZGF0ZSArIDE7XG4gICAgfSBlbHNlIGlmIChrZXkgPT09ICdhcnJvd2Rvd24nKSB7XG4gICAgICBkYXRlID0gZGF0ZSArIHRoaXMuZGF0ZXBpY2tlci5tb250aENvbExpbWl0O1xuICAgIH0gZWxzZSBpZiAoa2V5ID09PSAncGFnZXVwJyB8fCBrZXkgPT09ICdwYWdlZG93bicpIHtcbiAgICAgIGNvbnN0IHllYXIgPVxuICAgICAgICB0aGlzLmRhdGVwaWNrZXIuYWN0aXZlRGF0ZS5nZXRGdWxsWWVhcigpICsgKGtleSA9PT0gJ3BhZ2V1cCcgPyAtMSA6IDEpO1xuICAgICAgdGhpcy5kYXRlcGlja2VyLmFjdGl2ZURhdGUuc2V0RnVsbFllYXIoeWVhcik7XG4gICAgfSBlbHNlIGlmIChrZXkgPT09ICdob21lJykge1xuICAgICAgZGF0ZSA9IDA7XG4gICAgfSBlbHNlIGlmIChrZXkgPT09ICdlbmQnKSB7XG4gICAgICBkYXRlID0gMTE7XG4gICAgfVxuICAgIHRoaXMuZGF0ZXBpY2tlci5hY3RpdmVEYXRlLnNldE1vbnRoKGRhdGUpO1xuICAgIHRoaXMuZGF0ZXBpY2tlci5hbm5vdW5jZURhdGUoXG4gICAgICB0aGlzLmRhdGVwaWNrZXIuYWN0aXZlRGF0ZSxcbiAgICAgIHRoaXMuZGF0ZXBpY2tlci5mb3JtYXRNb250aExhYmVsLFxuICAgICk7XG4gIH1cbn1cbiIsIjx0YWJsZSByb2xlPVwiZ3JpZFwiPlxuICA8dGJvZHk+XG4gICAgQGZvciAocm93IG9mIHJvd3M7IHRyYWNrICRpbmRleCkge1xuICAgICAgPHRyPlxuICAgICAgICBAZm9yIChkYXRlIG9mIHJvdzsgdHJhY2sgZGF0ZS51aWQpIHtcbiAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiIHJvbGU9XCJncmlkY2VsbFwiIFtpZF09XCJkYXRlLnVpZFwiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJza3ktYnRuIHNreS1idG4tZGVmYXVsdCBza3ktZGF0ZXBpY2tlci1idG4tZGF0ZVwiXG4gICAgICAgICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgJ3NreS1kYXRlcGlja2VyLWJ0bi1zZWxlY3RlZCc6IGRhdGUuc2VsZWN0ZWQsXG4gICAgICAgICAgICAgICAgJ3NreS1idG4tZGlzYWJsZWQnOiBkYXRlLmRpc2FibGVkLFxuICAgICAgICAgICAgICAgICdza3ktYnRuLWFjdGl2ZSc6IGRhdGVwaWNrZXIuaXNBY3RpdmUoZGF0ZSlcbiAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICAgICAgICAgZGF0ZS5kYXRlXG4gICAgICAgICAgICAgICAgICB8IHNreURhdGVwaWNrZXJDYWxlbmRhckxhYmVsOiBkYXRlcGlja2VyLmZvcm1hdE1vbnRoTGFiZWxcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRhdGUuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiZGF0ZXBpY2tlci5zZWxlY3RDYWxlbmRhcigkZXZlbnQsIGRhdGUuZGF0ZSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhbiBbbmdDbGFzc109XCJ7ICdza3ktZGF0ZXBpY2tlci1jdXJyZW50JzogZGF0ZS5jdXJyZW50IH1cIj57e1xuICAgICAgICAgICAgICAgIGRhdGUubGFiZWxcbiAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICB9XG4gICAgICA8L3RyPlxuICAgIH1cbiAgPC90Ym9keT5cbjwvdGFibGU+XG4iXX0=","import { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { SkyDatepickerCalendarLabelPipe } from './datepicker-calendar-label.pipe';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"./datepicker-calendar-inner.component\";\nimport * as i2 from \"@angular/common\";\n/**\n * @internal\n */\nexport class SkyYearPickerComponent {\n constructor(datepicker) {\n this.rows = [];\n this.title = '';\n this.datepicker = datepicker;\n }\n ngOnInit() {\n this.datepicker.stepYear = { years: this.datepicker.yearRange };\n this.datepicker.setRefreshViewHandler(() => this.#refreshYearView(), 'year');\n this.datepicker.setCompareHandler(this.#compareYears, 'year');\n this.datepicker.setKeydownHandler((key, event) => {\n this.#keydownYears(key, event);\n }, 'year');\n this.datepicker.refreshView();\n }\n getStartingYear(year) {\n return (Math.floor((year - 1) / this.datepicker.yearRange) *\n this.datepicker.yearRange +\n 1);\n }\n #compareYears(date1, date2) {\n return date1.getFullYear() - date2.getFullYear();\n }\n #refreshYearView() {\n const years = new Array(this.datepicker.yearRange);\n let date;\n const start = this.getStartingYear(this.datepicker.activeDate.getFullYear());\n for (let i = 0; i < this.datepicker.yearRange; i++) {\n date = new Date(this.datepicker.activeDate);\n date.setFullYear(start + i, 0, 1);\n years[i] = this.datepicker.createDateObject(date, this.datepicker.formatYear, false, this.datepicker.datepickerId + '-' + i);\n }\n const newTitle = [\n years[0].label,\n years[this.datepicker.yearRange - 1].label,\n ].join(' - ');\n this.rows = this.datepicker.createCalendarRows(years, this.datepicker.yearColLimit);\n return newTitle;\n }\n #keydownYears(key, event) {\n let date = this.datepicker.activeDate.getFullYear();\n /* istanbul ignore else */\n /* sanity check */\n if (key === 'arrowleft') {\n date = date - 1;\n }\n else if (key === 'arrowup') {\n date = date - this.datepicker.yearColLimit;\n }\n else if (key === 'arrowright') {\n date = date + 1;\n }\n else if (key === 'arrowdown') {\n date = date + this.datepicker.yearColLimit;\n }\n else if (key === 'pageup' || key === 'pagedown') {\n date += (key === 'pageup' ? -1 : 1) * this.datepicker.yearRange;\n }\n else if (key === 'home') {\n date = this.getStartingYear(this.datepicker.activeDate.getFullYear());\n }\n else if (key === 'end') {\n date =\n this.getStartingYear(this.datepicker.activeDate.getFullYear()) +\n this.datepicker.yearRange -\n 1;\n }\n this.datepicker.activeDate.setFullYear(date);\n this.datepicker.announceDate(this.datepicker.activeDate, this.datepicker.formatYearLabel);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyYearPickerComponent, deps: [{ token: i1.SkyDatepickerCalendarInnerComponent }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.5\", type: SkyYearPickerComponent, isStandalone: true, selector: \"sky-yearpicker\", ngImport: i0, template: \"<table role=\\\"grid\\\">\\n <tbody>\\n @for (row of rows; track $index) {\\n <tr>\\n @for (date of row; track date.uid) {\\n <td class=\\\"sky-datepicker-row\\\" role=\\\"gridcell\\\">\\n <button\\n type=\\\"button\\\"\\n class=\\\"sky-btn sky-btn-default sky-datepicker-btn-date\\\"\\n tabindex=\\\"-1\\\"\\n [ngClass]=\\\"{\\n 'sky-datepicker-btn-selected': date.selected,\\n 'sky-btn-disabled': date.disabled,\\n 'sky-btn-active': datepicker.isActive(date)\\n }\\\"\\n [attr.aria-label]=\\\"\\n date.date\\n | skyDatepickerCalendarLabel: datepicker.formatYearLabel\\n \\\"\\n [disabled]=\\\"date.disabled\\\"\\n (click)=\\\"datepicker.selectCalendar($event, date.date)\\\"\\n >\\n <span [ngClass]=\\\"{ 'sky-datepicker-current': date.current }\\\">{{\\n date.label\\n }}</span>\\n </button>\\n </td>\\n }\\n </tr>\\n }\\n </tbody>\\n</table>\\n\", dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"pipe\", type: SkyDatepickerCalendarLabelPipe, name: \"skyDatepickerCalendarLabel\" }] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyYearPickerComponent, decorators: [{\n type: Component,\n args: [{ imports: [CommonModule, SkyDatepickerCalendarLabelPipe], selector: 'sky-yearpicker', template: \"<table role=\\\"grid\\\">\\n <tbody>\\n @for (row of rows; track $index) {\\n <tr>\\n @for (date of row; track date.uid) {\\n <td class=\\\"sky-datepicker-row\\\" role=\\\"gridcell\\\">\\n <button\\n type=\\\"button\\\"\\n class=\\\"sky-btn sky-btn-default sky-datepicker-btn-date\\\"\\n tabindex=\\\"-1\\\"\\n [ngClass]=\\\"{\\n 'sky-datepicker-btn-selected': date.selected,\\n 'sky-btn-disabled': date.disabled,\\n 'sky-btn-active': datepicker.isActive(date)\\n }\\\"\\n [attr.aria-label]=\\\"\\n date.date\\n | skyDatepickerCalendarLabel: datepicker.formatYearLabel\\n \\\"\\n [disabled]=\\\"date.disabled\\\"\\n (click)=\\\"datepicker.selectCalendar($event, date.date)\\\"\\n >\\n <span [ngClass]=\\\"{ 'sky-datepicker-current': date.current }\\\">{{\\n date.label\\n }}</span>\\n </button>\\n </td>\\n }\\n </tr>\\n }\\n </tbody>\\n</table>\\n\" }]\n }], ctorParameters: () => [{ type: i1.SkyDatepickerCalendarInnerComponent }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieWVhcnBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL2RhdGVwaWNrZXIvY2FsZW5kYXIveWVhcnBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL2RhdGVwaWNrZXIvY2FsZW5kYXIveWVhcnBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUdsRCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7OztBQUdsRjs7R0FFRztBQU1ILE1BQU0sT0FBTyxzQkFBc0I7SUFPakMsWUFBWSxVQUErQztRQUpwRCxTQUFJLEdBQTRCLEVBQUUsQ0FBQztRQUVuQyxVQUFLLEdBQUcsRUFBRSxDQUFDO1FBR2hCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO0lBQy9CLENBQUM7SUFFTSxRQUFRO1FBQ2IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUVoRSxJQUFJLENBQUMsVUFBVSxDQUFDLHFCQUFxQixDQUNuQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsRUFDN0IsTUFBTSxDQUNQLENBQUM7UUFFRixJQUFJLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFOUQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxp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IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTa3lEYXRlcGlja2VyQ2FsZW5kYXJJbm5lckNvbXBvbmVudCB9IGZyb20gJy4vZGF0ZXBpY2tlci1jYWxlbmRhci1pbm5lci5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5RGF0ZXBpY2tlckNhbGVuZGFyTGFiZWxQaXBlIH0gZnJvbSAnLi9kYXRlcGlja2VyLWNhbGVuZGFyLWxhYmVsLnBpcGUnO1xuaW1wb3J0IHsgU2t5RGF5UGlja2VyQ29udGV4dCB9IGZyb20gJy4vZGF5cGlja2VyLWNvbnRleHQnO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5AQ29tcG9uZW50KHtcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgU2t5RGF0ZXBpY2tlckNhbGVuZGFyTGFiZWxQaXBlXSxcbiAgc2VsZWN0b3I6ICdza3kteWVhcnBpY2tlcicsXG4gIHRlbXBsYXRlVXJsOiAneWVhcnBpY2tlci5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIFNreVllYXJQaWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwdWJsaWMgZGF0ZXBpY2tlcjogU2t5RGF0ZXBpY2tlckNhbGVuZGFySW5uZXJDb21wb25lbnQ7XG5cbiAgcHVibGljIHJvd3M6IFNreURheVBpY2tlckNvbnRleHRbXVtdID0gW107XG5cbiAgcHVibGljIHRpdGxlID0gJyc7XG5cbiAgY29uc3RydWN0b3IoZGF0ZXBpY2tlcjogU2t5RGF0ZXBpY2tlckNhbGVuZGFySW5uZXJDb21wb25lbnQpIHtcbiAgICB0aGlzLmRhdGVwaWNrZXIgPSBkYXRlcGlja2VyO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZGF0ZXBpY2tlci5zdGVwWWVhciA9IHsgeWVhcnM6IHRoaXMuZGF0ZXBpY2tlci55ZWFyUmFuZ2UgfTtcblxuICAgIHRoaXMuZGF0ZXBpY2tlci5zZXRSZWZyZXNoVmlld0hhbmRsZXIoXG4gICAgICAoKSA9PiB0aGlzLiNyZWZyZXNoWWVhclZpZXcoKSxcbiAgICAgICd5ZWFyJyxcbiAgICApO1xuXG4gICAgdGhpcy5kYXRlcGlja2VyLnNldENvbXBhcmVIYW5kbGVyKHRoaXMuI2NvbXBhcmVZZWFycywgJ3llYXInKTtcblxuICAgIHRoaXMuZGF0ZXBpY2tlci5zZXRLZXlkb3duSGFuZGxlcigoa2V5OiBzdHJpbmcsIGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICB0aGlzLiNrZXlkb3duWWVhcnMoa2V5LCBldmVudCk7XG4gICAgfSwgJ3llYXInKTtcblxuICAgIHRoaXMuZGF0ZXBpY2tlci5yZWZyZXNoVmlldygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldFN0YXJ0aW5nWWVhcih5ZWFyOiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiAoXG4gICAgICBNYXRoLmZsb29yKCh5ZWFyIC0gMSkgLyB0aGlzLmRhdGVwaWNrZXIueWVhclJhbmdlKSAqXG4gICAgICAgIHRoaXMuZGF0ZXBpY2tlci55ZWFyUmFuZ2UgK1xuICAgICAgMVxuICAgICk7XG4gIH1cblxuICAjY29tcGFyZVllYXJzKGRhdGUxOiBEYXRlLCBkYXRlMjogRGF0ZSk6IG51bWJlciB7XG4gICAgcmV0dXJuIGRhdGUxLmdldEZ1bGxZZWFyKCkgLSBkYXRlMi5nZXRGdWxsWWVhcigpO1xuICB9XG5cbiAgI3JlZnJlc2hZZWFyVmlldygpOiBzdHJpbmcge1xuICAgIGNvbnN0IHllYXJzID0gbmV3IEFycmF5PFNreURheVBpY2tlckNvbnRleHQ+KHRoaXMuZGF0ZXBpY2tlci55ZWFyUmFuZ2UpO1xuICAgIGxldCBkYXRlOiBEYXRlO1xuICAgIGNvbnN0IHN0YXJ0ID0gdGhpcy5nZXRTdGFydGluZ1llYXIoXG4gICAgICB0aGlzLmRhdGVwaWNrZXIuYWN0aXZlRGF0ZS5nZXRGdWxsWWVhcigpLFxuICAgICk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZGF0ZXBpY2tlci55ZWFyUmFuZ2U7IGkrKykge1xuICAgICAgZGF0ZSA9IG5ldyBEYXRlKHRoaXMuZGF0ZXBpY2tlci5hY3RpdmVEYXRlKTtcbiAgICAgIGRhdGUuc2V0RnVsbFllYXIoc3RhcnQgKyBpLCAwLCAxKTtcblxuICAgICAgeWVhcnNbaV0gPSB0aGlzLmRhdGVwaWNrZXIuY3JlYXRlRGF0ZU9iamVjdChcbiAgICAgICAgZGF0ZSxcbiAgICAgICAgdGhpcy5kYXRlcGlja2VyLmZvcm1hdFllYXIsXG4gICAgICAgIGZhbHNlLFxuICAgICAgICB0aGlzLmRhdGVwaWNrZXIuZGF0ZXBpY2tlcklkICsgJy0nICsgaSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgbmV3VGl0bGUgPSBbXG4gICAgICB5ZWFyc1swXS5sYWJlbCxcbiAgICAgIHllYXJzW3RoaXMuZGF0ZXBpY2tlci55ZWFyUmFuZ2UgLSAxXS5sYWJlbCxcbiAgICBdLmpvaW4oJyAtICcpO1xuICAgIHRoaXMucm93cyA9IHRoaXMuZGF0ZXBpY2tlci5jcmVhdGVDYWxlbmRhclJvd3MoXG4gICAgICB5ZWFycyxcbiAgICAgIHRoaXMuZGF0ZXBpY2tlci55ZWFyQ29sTGltaXQsXG4gICAgKTtcblxuICAgIHJldHVybiBuZXdUaXRsZTtcbiAgfVxuXG4gICNrZXlkb3duWWVhcnMoa2V5OiBzdHJpbmcsIGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgbGV0IGRhdGUgPSB0aGlzLmRhdGVwaWNrZXIuYWN0aXZlRGF0ZS5nZXRGdWxsWWVhcigpO1xuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAvKiBzYW5pdHkgY2hlY2sgKi9cbiAgICBpZiAoa2V5ID09PSAnYXJyb3dsZWZ0Jykge1xuICAgICAgZGF0ZSA9IGRhdGUgLSAxO1xuICAgIH0gZWxzZSBpZiAoa2V5ID09PSAnYXJyb3d1cCcpIHtcbiAgICAgIGRhdGUgPSBkYXRlIC0gdGhpcy5kYXRlcGlja2VyLnllYXJDb2xMaW1pdDtcbiAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ2Fycm93cmlnaHQnKSB7XG4gICAgICBkYXRlID0gZGF0ZSArIDE7XG4gICAgfSBlbHNlIGlmIChrZXkgPT09ICdhcnJvd2Rvd24nKSB7XG4gICAgICBkYXRlID0gZGF0ZSArIHRoaXMuZGF0ZXBpY2tlci55ZWFyQ29sTGltaXQ7XG4gICAgfSBlbHNlIGlmIChrZXkgPT09ICdwYWdldXAnIHx8IGtleSA9PT0gJ3BhZ2Vkb3duJykge1xuICAgICAgZGF0ZSArPSAoa2V5ID09PSAncGFnZXVwJyA/IC0xIDogMSkgKiB0aGlzLmRhdGVwaWNrZXIueWVhclJhbmdlO1xuICAgIH0gZWxzZSBpZiAoa2V5ID09PSAnaG9tZScpIHtcbiAgICAgIGRhdGUgPSB0aGlzLmdldFN0YXJ0aW5nWWVhcih0aGlzLmRhdGVwaWNrZXIuYWN0aXZlRGF0ZS5nZXRGdWxsWWVhcigpKTtcbiAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ2VuZCcpIHtcbiAgICAgIGRhdGUgPVxuICAgICAgICB0aGlzLmdldFN0YXJ0aW5nWWVhcih0aGlzLmRhdGVwaWNrZXIuYWN0aXZlRGF0ZS5nZXRGdWxsWWVhcigpKSArXG4gICAgICAgIHRoaXMuZGF0ZXBpY2tlci55ZWFyUmFuZ2UgLVxuICAgICAgICAxO1xuICAgIH1cbiAgICB0aGlzLmRhdGVwaWNrZXIuYWN0aXZlRGF0ZS5zZXRGdWxsWWVhcihkYXRlKTtcbiAgICB0aGlzLmRhdGVwaWNrZXIuYW5ub3VuY2VEYXRlKFxuICAgICAgdGhpcy5kYXRlcGlja2VyLmFjdGl2ZURhdGUsXG4gICAgICB0aGlzLmRhdGVwaWNrZXIuZm9ybWF0WWVhckxhYmVsLFxuICAgICk7XG4gIH1cbn1cbiIsIjx0YWJsZSByb2xlPVwiZ3JpZFwiPlxuICA8dGJvZHk+XG4gICAgQGZvciAocm93IG9mIHJvd3M7IHRyYWNrICRpbmRleCkge1xuICAgICAgPHRyPlxuICAgICAgICBAZm9yIChkYXRlIG9mIHJvdzsgdHJhY2sgZGF0ZS51aWQpIHtcbiAgICAgICAgICA8dGQgY2xhc3M9XCJza3ktZGF0ZXBpY2tlci1yb3dcIiByb2xlPVwiZ3JpZGNlbGxcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGNsYXNzPVwic2t5LWJ0biBza3ktYnRuLWRlZmF1bHQgc2t5LWRhdGVwaWNrZXItYnRuLWRhdGVcIlxuICAgICAgICAgICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICdza3ktZGF0ZXBpY2tlci1idG4tc2VsZWN0ZWQnOiBkYXRlLnNlbGVjdGVkLFxuICAgICAgICAgICAgICAgICdza3ktYnRuLWRpc2FibGVkJzogZGF0ZS5kaXNhYmxlZCxcbiAgICAgICAgICAgICAgICAnc2t5LWJ0bi1hY3RpdmUnOiBkYXRlcGlja2VyLmlzQWN0aXZlKGRhdGUpXG4gICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICAgICAgICAgIGRhdGUuZGF0ZVxuICAgICAgICAgICAgICAgICAgfCBza3lEYXRlcGlja2VyQ2FsZW5kYXJMYWJlbDogZGF0ZXBpY2tlci5mb3JtYXRZZWFyTGFiZWxcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRhdGUuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiZGF0ZXBpY2tlci5zZWxlY3RDYWxlbmRhcigkZXZlbnQsIGRhdGUuZGF0ZSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhbiBbbmdDbGFzc109XCJ7ICdza3ktZGF0ZXBpY2tlci1jdXJyZW50JzogZGF0ZS5jdXJyZW50IH1cIj57e1xuICAgICAgICAgICAgICAgIGRhdGUubGFiZWxcbiAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICB9XG4gICAgICA8L3RyPlxuICAgIH1cbiAgPC90Ym9keT5cbjwvdGFibGU+XG4iXX0=","import { Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class SkyDatepickerConfigService {\n constructor() {\n /**\n * The starting day of the week in the calendar,\n * where `0` sets the starting day to Sunday.\n * @default 0\n */\n this.startingDay = 0;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDatepickerConfigService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDatepickerConfigService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDatepickerConfigService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci1jb25maWcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9kYXRldGltZS9zcmMvbGliL21vZHVsZXMvZGF0ZXBpY2tlci9kYXRlcGlja2VyLWNvbmZpZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBSzNDLE1BQU0sT0FBTywwQkFBMEI7SUFIdkM7UUEwQkU7Ozs7V0FJRztRQUNJLGdCQUFXLEdBQUcsQ0FBQyxDQUFDO0tBQ3hCOzhHQTdCWSwwQkFBMEI7a0hBQTFCLDBCQUEwQixjQUZ6QixNQUFNOzsyRkFFUCwwQkFBMEI7a0JBSHRDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgU2t5RGF0ZXBpY2tlckNvbmZpZ1NlcnZpY2Uge1xuICAvKipcbiAgICogVGhlIGRhdGUgZm9ybWF0IGZvciB0aGUgaW5wdXQuXG4gICAqIEBkZWZhdWx0IFwiTU0vREQvWVlZWVwiXG4gICAqL1xuICBwdWJsaWMgZGF0ZUZvcm1hdDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgbGF0ZXN0IHNlbGVjdGFibGUgZGF0ZSB0aGF0IGlzIGF2YWlsYWJsZSBpbiB0aGUgY2FsZW5kYXIuXG4gICAqL1xuICBwdWJsaWMgbWF4RGF0ZTogRGF0ZSB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIGVhcmxpZXN0IHNlbGVjdGFibGUgZGF0ZSB0aGF0IGlzIGF2YWlsYWJsZSBpbiB0aGUgY2FsZW5kYXIuXG4gICAqL1xuICBwdWJsaWMgbWluRGF0ZTogRGF0ZSB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIGRhdGUgdG8gb3BlbiB0aGUgY2FsZW5kYXIgdG8gaW5pdGlhbGx5LlxuICAgKiBAZGVmYXVsdCB0aGUgY3VycmVudCBkYXRlXG4gICAqL1xuICBwdWJsaWMgc3RhcnRBdERhdGU6IERhdGUgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBzdGFydGluZyBkYXkgb2YgdGhlIHdlZWsgaW4gdGhlIGNhbGVuZGFyLFxuICAgKiB3aGVyZSBgMGAgc2V0cyB0aGUgc3RhcnRpbmcgZGF5IHRvIFN1bmRheS5cbiAgICogQGRlZmF1bHQgMFxuICAgKi9cbiAgcHVibGljIHN0YXJ0aW5nRGF5ID0gMDtcbn1cbiJdfQ==","import { Component, EventEmitter, Input, Output, ViewChild, } from '@angular/core';\nimport { SkyDateFormatter } from '../date-formatter';\nimport { SkyDatepickerCalendarInnerComponent } from './datepicker-calendar-inner.component';\nimport { SkyDayPickerComponent } from './daypicker.component';\nimport { SkyMonthPickerComponent } from './monthpicker.component';\nimport { SkyYearPickerComponent } from './yearpicker.component';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"../datepicker-config.service\";\n/**\n * @internal\n */\nexport class SkyDatepickerCalendarComponent {\n /** starting day of the week from 0-6 (0=Sunday, ..., 6=Saturday) */\n set startingDay(start) {\n this.#_startingDay = start ?? 0;\n }\n get startingDay() {\n return this.#_startingDay;\n }\n #formatter;\n #_startingDay;\n #config;\n constructor(config) {\n this.calendarDateRangeChange = new EventEmitter();\n this.calendarModeChange = new EventEmitter();\n this.selectedDateChange = new EventEmitter(undefined);\n this._now = new Date();\n this.#formatter = new SkyDateFormatter();\n this.#_startingDay = 0;\n this.#config = config;\n this.configureOptions();\n }\n configureOptions() {\n Object.assign(this, this.#config);\n }\n onCalendarDateRangeChange(event) {\n this.calendarDateRangeChange.next(event);\n }\n onCalendarModeChange(event) {\n this.calendarModeChange.emit(event);\n }\n onSelectedDateChange(event) {\n this.selectedDateChange.emit(event);\n }\n writeValue(value) {\n if (value !== undefined &&\n this.#formatter.dateIsValid(value) &&\n this.selectedDate !== undefined &&\n this.datepicker?.compareHandlerDay &&\n this.datepicker.compareHandlerDay(value, this.selectedDate) === 0) {\n return;\n }\n if (value && this.#formatter.dateIsValid(value)) {\n this.selectedDate = value;\n this.datepicker?.select(value, false);\n }\n else {\n this.selectedDate = this.startAtDate ?? new Date();\n this.datepicker?.select(this.startAtDate ?? new Date(), false);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDatepickerCalendarComponent, deps: [{ token: i1.SkyDatepickerConfigService }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.5\", type: SkyDatepickerCalendarComponent, isStandalone: true, selector: \"sky-datepicker-calendar\", inputs: { customDates: \"customDates\", isDaypickerWaiting: \"isDaypickerWaiting\", minDate: \"minDate\", maxDate: \"maxDate\", startAtDate: \"startAtDate\", selectedDate: \"selectedDate\", startingDay: \"startingDay\" }, outputs: { calendarDateRangeChange: \"calendarDateRangeChange\", calendarModeChange: \"calendarModeChange\", selectedDateChange: \"selectedDateChange\" }, viewQueries: [{ propertyName: \"datepicker\", first: true, predicate: SkyDatepickerCalendarInnerComponent, descendants: true, read: SkyDatepickerCalendarInnerComponent, static: true }], ngImport: i0, template: \"<div class=\\\"sky-datepicker-calendar\\\">\\n <sky-datepicker-inner\\n [customDates]=\\\"customDates\\\"\\n [maxDate]=\\\"maxDate\\\"\\n [minDate]=\\\"minDate\\\"\\n [startAtDate]=\\\"startAtDate\\\"\\n [selectedDate]=\\\"selectedDate\\\"\\n [startingDay]=\\\"startingDay\\\"\\n (calendarModeChange)=\\\"onCalendarModeChange($event)\\\"\\n (selectedDateChange)=\\\"onSelectedDateChange($event)\\\"\\n >\\n <div\\n class=\\\"sky-datepicker-calendar-table-container\\\"\\n autofocus\\n tabindex=\\\"0\\\"\\n (keydown)=\\\"datepicker?.onKeydown($event)\\\"\\n >\\n @if (datepicker?.datepickerMode === 'day') {\\n <sky-daypicker\\n [customDates]=\\\"customDates\\\"\\n [isWaiting]=\\\"isDaypickerWaiting\\\"\\n (calendarDateRangeChange)=\\\"onCalendarDateRangeChange($event)\\\"\\n />\\n } @else if (datepicker?.datepickerMode === 'month') {\\n <sky-monthpicker />\\n } @else if (datepicker?.datepickerMode === 'year') {\\n <sky-yearpicker />\\n }\\n </div>\\n </sky-datepicker-inner>\\n</div>\\n\", styles: [\".sky-datepicker-calendar{display:block}\\n\"], dependencies: [{ kind: \"component\", type: SkyDatepickerCalendarInnerComponent, selector: \"sky-datepicker-inner\", inputs: [\"customDates\", \"startingDay\", \"minDate\", \"maxDate\", \"startAtDate\", \"selectedDate\"], outputs: [\"selectedDateChange\", \"calendarModeChange\"] }, { kind: \"component\", type: SkyDayPickerComponent, selector: \"sky-daypicker\", inputs: [\"customDates\", \"isWaiting\"], outputs: [\"calendarDateRangeChange\"] }, { kind: \"component\", type: SkyMonthPickerComponent, selector: \"sky-monthpicker\" }, { kind: \"component\", type: SkyYearPickerComponent, selector: \"sky-yearpicker\" }] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDatepickerCalendarComponent, decorators: [{\n type: Component,\n args: [{ imports: [\n SkyDatepickerCalendarInnerComponent,\n SkyDayPickerComponent,\n SkyMonthPickerComponent,\n SkyYearPickerComponent,\n ], selector: 'sky-datepicker-calendar', template: \"<div class=\\\"sky-datepicker-calendar\\\">\\n <sky-datepicker-inner\\n [customDates]=\\\"customDates\\\"\\n [maxDate]=\\\"maxDate\\\"\\n [minDate]=\\\"minDate\\\"\\n [startAtDate]=\\\"startAtDate\\\"\\n [selectedDate]=\\\"selectedDate\\\"\\n [startingDay]=\\\"startingDay\\\"\\n (calendarModeChange)=\\\"onCalendarModeChange($event)\\\"\\n (selectedDateChange)=\\\"onSelectedDateChange($event)\\\"\\n >\\n <div\\n class=\\\"sky-datepicker-calendar-table-container\\\"\\n autofocus\\n tabindex=\\\"0\\\"\\n (keydown)=\\\"datepicker?.onKeydown($event)\\\"\\n >\\n @if (datepicker?.datepickerMode === 'day') {\\n <sky-daypicker\\n [customDates]=\\\"customDates\\\"\\n [isWaiting]=\\\"isDaypickerWaiting\\\"\\n (calendarDateRangeChange)=\\\"onCalendarDateRangeChange($event)\\\"\\n />\\n } @else if (datepicker?.datepickerMode === 'month') {\\n <sky-monthpicker />\\n } @else if (datepicker?.datepickerMode === 'year') {\\n <sky-yearpicker />\\n }\\n </div>\\n </sky-datepicker-inner>\\n</div>\\n\", styles: [\".sky-datepicker-calendar{display:block}\\n\"] }]\n }], ctorParameters: () => [{ type: i1.SkyDatepickerConfigService }], propDecorators: { customDates: [{\n type: Input\n }], isDaypickerWaiting: [{\n type: Input\n }], minDate: [{\n type: Input\n }], maxDate: [{\n type: Input\n }], startAtDate: [{\n type: Input\n }], selectedDate: [{\n type: Input\n }], startingDay: [{\n type: Input\n }], calendarDateRangeChange: [{\n type: Output\n }], calendarModeChange: [{\n type: Output\n }], selectedDateChange: [{\n type: Output\n }], datepicker: [{\n type: ViewChild,\n args: [SkyDatepickerCalendarInnerComponent, {\n read: SkyDatepickerCalendarInnerComponent,\n static: true,\n }]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci1jYWxlbmRhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL2RhdGVwaWNrZXIvY2FsZW5kYXIvZGF0ZXBpY2tlci1jYWxlbmRhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL2RhdGVwaWNrZXIvY2FsZW5kYXIvZGF0ZXBpY2tlci1jYWxlbmRhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUtyRCxPQUFPLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUM1RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7O0FBRWhFOztHQUVHO0FBWUgsTUFBTSxPQUFPLDhCQUE4QjtJQW9CekMsb0VBQW9FO0lBQ3BFLElBQ1csV0FBVyxDQUFDLEtBQXlCO1FBQzlDLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxJQUFJLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsSUFBVyxXQUFXO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM1QixDQUFDO0lBcUJELFVBQVUsQ0FBMEI7SUFFcEMsYUFBYSxDQUFLO0lBRWxCLE9BQU8sQ0FBNkI7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QUFtQyxFQUFFO3dCQUM5QyxJQUFJLEVBQUUsbUNBQW1DO3dCQUN6QyxNQUFNLEVBQUUsSUFBSTtxQkFDYiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTa3lEYXRlRm9ybWF0dGVyIH0gZnJvbSAnLi4vZGF0ZS1mb3JtYXR0ZXInO1xuaW1wb3J0IHsgU2t5RGF0ZXBpY2tlckNvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi9kYXRlcGlja2VyLWNvbmZpZy5zZXJ2aWNlJztcbmltcG9ydCB7IFNreURhdGVwaWNrZXJDdXN0b21EYXRlIH0gZnJvbSAnLi4vZGF0ZXBpY2tlci1jdXN0b20tZGF0ZSc7XG5cbmltcG9ydCB7IFNreURhdGVwaWNrZXJDYWxlbmRhckNoYW5nZSB9IGZyb20gJy4vZGF0ZXBpY2tlci1jYWxlbmRhci1jaGFuZ2UnO1xuaW1wb3J0IHsgU2t5RGF0ZXBpY2tlckNhbGVuZGFySW5uZXJDb21wb25lbnQgfSBmcm9tICcuL2RhdGVwaWNrZXItY2FsZW5kYXItaW5uZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFNreURheVBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4vZGF5cGlja2VyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lNb250aFBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4vbW9udGhwaWNrZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFNreVllYXJQaWNrZXJDb21wb25lbnQgfSBmcm9tICcuL3llYXJwaWNrZXIuY29tcG9uZW50JztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuQENvbXBvbmVudCh7XG4gIGltcG9ydHM6IFtcbiAgICBTa3lEYXRlcGlja2VyQ2FsZW5kYXJJbm5lckNvbXBvbmVudCxcbiAgICBTa3lEYXlQaWNrZXJDb21wb25lbnQsXG4gICAgU2t5TW9udGhQaWNrZXJDb21wb25lbnQsXG4gICAgU2t5WWVhclBpY2tlckNvbXBvbmVudCxcbiAgXSxcbiAgc2VsZWN0b3I6ICdza3ktZGF0ZXBpY2tlci1jYWxlbmRhcicsXG4gIHN0eWxlVXJsOiAnLi9kYXRlcGlja2VyLWNhbGVuZGFyLmNvbXBvbmVudC5zY3NzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGVwaWNrZXItY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lEYXRlcGlja2VyQ2FsZW5kYXJDb21wb25lbnQge1xuICBASW5wdXQoKVxuICBwdWJsaWMgY3VzdG9tRGF0ZXM6IFNreURhdGVwaWNrZXJDdXN0b21EYXRlW10gfCB1bmRlZmluZWQ7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGlzRGF5cGlja2VyV2FpdGluZzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgbWluRGF0ZTogRGF0ZSB8IHVuZGVmaW5lZDtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgbWF4RGF0ZTogRGF0ZSB8IHVuZGVmaW5lZDtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgc3RhcnRBdERhdGU6IERhdGUgfCB1bmRlZmluZWQ7XG5cbiAgLyoqIGN1cnJlbnRseSBzZWxlY3RlZCBkYXRlICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZWxlY3RlZERhdGU6IERhdGUgfCB1bmRlZmluZWQ7XG5cbiAgLyoqIHN0YXJ0aW5nIGRheSBvZiB0aGUgd2VlayBmcm9tIDAtNiAoMD1TdW5kYXksIC4uLiwgNj1TYXR1cmRheSkgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBzdGFydGluZ0RheShzdGFydDogbnVtYmVyIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX3N0YXJ0aW5nRGF5ID0gc3RhcnQgPz8gMDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc3RhcnRpbmdEYXkoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy4jX3N0YXJ0aW5nRGF5O1xuICB9XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBjYWxlbmRhckRhdGVSYW5nZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8XG4gICAgU2t5RGF0ZXBpY2tlckNhbGVuZGFyQ2hhbmdlIHwgdW5kZWZpbmVkXG4gID4oKTtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIGNhbGVuZGFyTW9kZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgc2VsZWN0ZWREYXRlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPih1bmRlZmluZWQpO1xuXG4gIEBWaWV3Q2hpbGQoU2t5RGF0ZXBpY2tlckNhbGVuZGFySW5uZXJDb21wb25lbnQsIHtcbiAgICByZWFkOiBTa3lEYXRlcGlja2VyQ2FsZW5kYXJJbm5lckNvbXBvbmVudCxcbiAgICBzdGF0aWM6IHRydWUsXG4gIH0pXG4gIHB1YmxpYyBkYXRlcGlja2VyOiBTa3lEYXRlcGlja2VyQ2FsZW5kYXJJbm5lckNvbXBvbmVudCB8IHVuZGVmaW5lZDtcblxuICBwcm90ZWN0ZWQgX25vdzogRGF0ZSA9IG5ldyBEYXRlKCk7XG5cbiAgI2Zvcm1hdHRlciA9IG5ldyBTa3lEYXRlRm9ybWF0dGVyKCk7XG5cbiAgI19zdGFydGluZ0RheSA9IDA7XG5cbiAgI2NvbmZpZzogU2t5RGF0ZXBpY2tlckNvbmZpZ1NlcnZpY2U7XG5cbiAgY29uc3RydWN0b3IoY29uZmlnOiBTa3lEYXRlcGlja2VyQ29uZmlnU2VydmljZSkge1xuICAgIHRoaXMuI2NvbmZpZyA9IGNvbmZpZztcbiAgICB0aGlzLmNvbmZpZ3VyZU9wdGlvbnMoKTtcbiAgfVxuXG4gIHB1YmxpYyBjb25maWd1cmVPcHRpb25zKCk6IHZvaWQge1xuICAgIE9iamVjdC5hc3NpZ24odGhpcywgdGhpcy4jY29uZmlnKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkNhbGVuZGFyRGF0ZVJhbmdlQ2hhbmdlKFxuICAgIGV2ZW50OiBTa3lEYXRlcGlja2VyQ2FsZW5kYXJDaGFuZ2UgfCB1bmRlZmluZWQsXG4gICk6IHZvaWQge1xuICAgIHRoaXMuY2FsZW5kYXJEYXRlUmFuZ2VDaGFuZ2UubmV4dChldmVudCk7XG4gIH1cblxuICBwdWJsaWMgb25DYWxlbmRhck1vZGVDaGFuZ2UoZXZlbnQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuY2FsZW5kYXJNb2RlQ2hhbmdlLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgcHVibGljIG9uU2VsZWN0ZWREYXRlQ2hhbmdlKGV2ZW50OiBEYXRlKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZERhdGVDaGFuZ2UuZW1pdChldmVudCk7XG4gIH1cblxuICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogRGF0ZSB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgIHZhbHVlICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIHRoaXMuI2Zvcm1hdHRlci5kYXRlSXNWYWxpZCh2YWx1ZSkgJiZcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIHRoaXMuZGF0ZXBpY2tlcj8uY29tcGFyZUhhbmRsZXJEYXkgJiZcbiAgICAgIHRoaXMuZGF0ZXBpY2tlci5jb21wYXJlSGFuZGxlckRheSh2YWx1ZSwgdGhpcy5zZWxlY3RlZERhdGUpID09PSAwXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlICYmIHRoaXMuI2Zvcm1hdHRlci5kYXRlSXNWYWxpZCh2YWx1ZSkpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gdmFsdWU7XG4gICAgICB0aGlzLmRhdGVwaWNrZXI/LnNlbGVjdCh2YWx1ZSwgZmFsc2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZSA9IHRoaXMuc3RhcnRBdERhdGUgPz8gbmV3IERhdGUoKTtcbiAgICAgIHRoaXMuZGF0ZXBpY2tlcj8uc2VsZWN0KHRoaXMuc3RhcnRBdERhdGUgPz8gbmV3IERhdGUoKSwgZmFsc2UpO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInNreS1kYXRlcGlja2VyLWNhbGVuZGFyXCI+XG4gIDxza3ktZGF0ZXBpY2tlci1pbm5lclxuICAgIFtjdXN0b21EYXRlc109XCJjdXN0b21EYXRlc1wiXG4gICAgW21heERhdGVdPVwibWF4RGF0ZVwiXG4gICAgW21pbkRhdGVdPVwibWluRGF0ZVwiXG4gICAgW3N0YXJ0QXREYXRlXT1cInN0YXJ0QXREYXRlXCJcbiAgICBbc2VsZWN0ZWREYXRlXT1cInNlbGVjdGVkRGF0ZVwiXG4gICAgW3N0YXJ0aW5nRGF5XT1cInN0YXJ0aW5nRGF5XCJcbiAgICAoY2FsZW5kYXJNb2RlQ2hhbmdlKT1cIm9uQ2FsZW5kYXJNb2RlQ2hhbmdlKCRldmVudClcIlxuICAgIChzZWxlY3RlZERhdGVDaGFuZ2UpPVwib25TZWxlY3RlZERhdGVDaGFuZ2UoJGV2ZW50KVwiXG4gID5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInNreS1kYXRlcGlja2VyLWNhbGVuZGFyLXRhYmxlLWNvbnRhaW5lclwiXG4gICAgICBhdXRvZm9jdXNcbiAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAoa2V5ZG93bik9XCJkYXRlcGlja2VyPy5vbktleWRvd24oJGV2ZW50KVwiXG4gICAgPlxuICAgICAgQGlmIChkYXRlcGlja2VyPy5kYXRlcGlja2VyTW9kZSA9PT0gJ2RheScpIHtcbiAgICAgICAgPHNreS1kYXlwaWNrZXJcbiAgICAgICAgICBbY3VzdG9tRGF0ZXNdPVwiY3VzdG9tRGF0ZXNcIlxuICAgICAgICAgIFtpc1dhaXRpbmddPVwiaXNEYXlwaWNrZXJXYWl0aW5nXCJcbiAgICAgICAgICAoY2FsZW5kYXJEYXRlUmFuZ2VDaGFuZ2UpPVwib25DYWxlbmRhckRhdGVSYW5nZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgLz5cbiAgICAgIH0gQGVsc2UgaWYgKGRhdGVwaWNrZXI/LmRhdGVwaWNrZXJNb2RlID09PSAnbW9udGgnKSB7XG4gICAgICAgIDxza3ktbW9udGhwaWNrZXIgLz5cbiAgICAgIH0gQGVsc2UgaWYgKGRhdGVwaWNrZXI/LmRhdGVwaWNrZXJNb2RlID09PSAneWVhcicpIHtcbiAgICAgICAgPHNreS15ZWFycGlja2VyIC8+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIDwvc2t5LWRhdGVwaWNrZXItaW5uZXI+XG48L2Rpdj5cbiJdfQ==","import { DestroyRef, Injectable, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Subject, fromEvent } from 'rxjs';\nimport * as i0 from \"@angular/core\";\n/**\n * Handles interactions between the datepicker host component and the input\n * directive.\n * @internal\n */\nexport class SkyDatepickerHostService {\n #destroyRef = inject(DestroyRef);\n /**\n * Fires when the picker or trigger button loses focus.\n */\n get focusout() {\n return this.#focusoutObs;\n }\n #focusout = new Subject();\n #focusoutObs = this.#focusout.asObservable();\n #host;\n #isInitialized = false;\n ngOnDestroy() {\n this.#focusout.complete();\n }\n init(host) {\n if (this.#isInitialized) {\n throw new Error('The datepicker host service is already initialized.');\n }\n this.#host = host;\n this.#isInitialized = true;\n const triggerButtonEl = this.#host.triggerButtonRef?.nativeElement;\n if (triggerButtonEl instanceof Element) {\n fromEvent(triggerButtonEl, 'focusout')\n .pipe(takeUntilDestroyed(this.#destroyRef))\n .subscribe((evt) => {\n this.#handleFocusoutEvent(evt);\n });\n }\n }\n isFocusingDatepicker(evt) {\n const buttonEl = this.#host?.triggerButtonRef?.nativeElement;\n return buttonEl instanceof Element && buttonEl === evt.relatedTarget;\n }\n #handleFocusoutEvent(evt) {\n if (this.#host) {\n const relatedTarget = evt.relatedTarget;\n const overlayEl = this.#host.getPickerRef()?.nativeElement;\n const isFocusingOverlay = relatedTarget instanceof Element &&\n !!overlayEl?.contains(relatedTarget);\n if (relatedTarget === null || !isFocusingOverlay) {\n this.#focusout.next(evt);\n }\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDatepickerHostService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDatepickerHostService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDatepickerHostService, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci1ob3N0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci1ob3N0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQWEsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRWhFLE9BQU8sRUFBYyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUl0RDs7OztHQUlHO0FBRUgsTUFBTSxPQUFPLHdCQUF3QjtJQUMxQixXQUFXLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRTFDOztPQUVHO0lBQ0gsSUFBVyxRQUFRO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBRUQsU0FBUyxHQUFHLElBQUksT0FBTyxFQUFjLENBQUM7SUFDdEMsWUFBWSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDN0MsS0FBSyxDQUFxQztJQUMxQyxjQUFjLEdBQUcsS0FBSyxDQUFDO0lBRWhCLFdBQVc7UUFDaEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRU0sSUFBSSxDQUFDLElBQTRCO1FBQ3RDLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3hCLE1BQU0sSUFBSSxLQUFLLENBQUMscURBQXFELENBQUMsQ0FBQztRQUN6RSxDQUFDO1FBRUQsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7UUFFM0IsTUFBTSxlQUFlLEdBQ25CLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEVBQUUsYUFBYSxDQUFDO1FBRTdDLElBQUksZUFBZSxZQUFZLE9BQU8sRUFBRSxDQUFDO1lBQ3ZDLFNBQVMsQ0FBYSxlQUFlLEVBQUUsVUFBVSxDQUFDO2lCQUMvQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2lCQUMxQyxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDakIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2pDLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztJQUNILENBQUM7SUFFTSxvQkFBb0IsQ0FBQyxHQUFlO1FBQ3pDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxDQUFDO1FBRTdELE9BQU8sUUFBUSxZQUFZLE9BQU8sSUFBSSxRQUFRLEtBQUssR0FBRyxDQUFDLGFBQWEsQ0FBQztJQUN2RSxDQUFDO0lBRUQsb0JBQW9CLENBQUMsR0FBZTtRQUNsQyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNmLE1BQU0sYUFBYSxHQUFHLEdBQUcsQ0FBQyxhQUFhLENBQUM7WUFDeEMsTUFBTSxTQUFTLEdBQ2IsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsRUFBRSxhQUFhLENBQUM7WUFFM0MsTUFBTSxpQkFBaUIsR0FDckIsYUFBYSxZQUFZLE9BQU87Z0JBQ2hDLENBQUMsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBRXZDLElBQUksYUFBYSxLQUFLLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7Z0JBQ2pELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzNCLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQzs4R0EzRFUsd0JBQXdCO2tIQUF4Qix3QkFBd0I7OzJGQUF4Qix3QkFBd0I7a0JBRHBDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEZXN0cm95UmVmLCBJbmplY3RhYmxlLCBPbkRlc3Ryb3ksIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU2t5RGF0ZXBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4vZGF0ZXBpY2tlci5jb21wb25lbnQnO1xuXG4vKipcbiAqIEhhbmRsZXMgaW50ZXJhY3Rpb25zIGJldHdlZW4gdGhlIGRhdGVwaWNrZXIgaG9zdCBjb21wb25lbnQgYW5kIHRoZSBpbnB1dFxuICogZGlyZWN0aXZlLlxuICogQGludGVybmFsXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTa3lEYXRlcGlja2VySG9zdFNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICByZWFkb25seSAjZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGUgcGlja2VyIG9yIHRyaWdnZXIgYnV0dG9uIGxvc2VzIGZvY3VzLlxuICAgKi9cbiAgcHVibGljIGdldCBmb2N1c291dCgpOiBPYnNlcnZhYmxlPEZvY3VzRXZlbnQ+IHtcbiAgICByZXR1cm4gdGhpcy4jZm9jdXNvdXRPYnM7XG4gIH1cblxuICAjZm9jdXNvdXQgPSBuZXcgU3ViamVjdDxGb2N1c0V2ZW50PigpO1xuICAjZm9jdXNvdXRPYnMgPSB0aGlzLiNmb2N1c291dC5hc09ic2VydmFibGUoKTtcbiAgI2hvc3Q6IFNreURhdGVwaWNrZXJDb21wb25lbnQgfCB1bmRlZmluZWQ7XG4gICNpc0luaXRpYWxpemVkID0gZmFsc2U7XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuI2ZvY3Vzb3V0LmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgaW5pdChob3N0OiBTa3lEYXRlcGlja2VyQ29tcG9uZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuI2lzSW5pdGlhbGl6ZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIGRhdGVwaWNrZXIgaG9zdCBzZXJ2aWNlIGlzIGFscmVhZHkgaW5pdGlhbGl6ZWQuJyk7XG4gICAgfVxuXG4gICAgdGhpcy4jaG9zdCA9IGhvc3Q7XG4gICAgdGhpcy4jaXNJbml0aWFsaXplZCA9IHRydWU7XG5cbiAgICBjb25zdCB0cmlnZ2VyQnV0dG9uRWw6IEVsZW1lbnQgfCB1bmRlZmluZWQgPVxuICAgICAgdGhpcy4jaG9zdC50cmlnZ2VyQnV0dG9uUmVmPy5uYXRpdmVFbGVtZW50O1xuXG4gICAgaWYgKHRyaWdnZXJCdXR0b25FbCBpbnN0YW5jZW9mIEVsZW1lbnQpIHtcbiAgICAgIGZyb21FdmVudDxGb2N1c0V2ZW50Pih0cmlnZ2VyQnV0dG9uRWwsICdmb2N1c291dCcpXG4gICAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLiNkZXN0cm95UmVmKSlcbiAgICAgICAgLnN1YnNjcmliZSgoZXZ0KSA9PiB7XG4gICAgICAgICAgdGhpcy4jaGFuZGxlRm9jdXNvdXRFdmVudChldnQpO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaXNGb2N1c2luZ0RhdGVwaWNrZXIoZXZ0OiBGb2N1c0V2ZW50KTogYm9vbGVhbiB7XG4gICAgY29uc3QgYnV0dG9uRWwgPSB0aGlzLiNob3N0Py50cmlnZ2VyQnV0dG9uUmVmPy5uYXRpdmVFbGVtZW50O1xuXG4gICAgcmV0dXJuIGJ1dHRvbkVsIGluc3RhbmNlb2YgRWxlbWVudCAmJiBidXR0b25FbCA9PT0gZXZ0LnJlbGF0ZWRUYXJnZXQ7XG4gIH1cblxuICAjaGFuZGxlRm9jdXNvdXRFdmVudChldnQ6IEZvY3VzRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy4jaG9zdCkge1xuICAgICAgY29uc3QgcmVsYXRlZFRhcmdldCA9IGV2dC5yZWxhdGVkVGFyZ2V0O1xuICAgICAgY29uc3Qgb3ZlcmxheUVsOiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZCA9XG4gICAgICAgIHRoaXMuI2hvc3QuZ2V0UGlja2VyUmVmKCk/Lm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICAgIGNvbnN0IGlzRm9jdXNpbmdPdmVybGF5ID1cbiAgICAgICAgcmVsYXRlZFRhcmdldCBpbnN0YW5jZW9mIEVsZW1lbnQgJiZcbiAgICAgICAgISFvdmVybGF5RWw/LmNvbnRhaW5zKHJlbGF0ZWRUYXJnZXQpO1xuXG4gICAgICBpZiAocmVsYXRlZFRhcmdldCA9PT0gbnVsbCB8fCAhaXNGb2N1c2luZ092ZXJsYXkpIHtcbiAgICAgICAgdGhpcy4jZm9jdXNvdXQubmV4dChldnQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, ElementRef, EnvironmentInjector, EventEmitter, Inject, Input, Optional, Output, TemplateRef, ViewChild, inject, output, } from '@angular/core';\nimport { SKY_STACKING_CONTEXT, SkyAffixAutoFitContext, SkyAppFormat, } from '@skyux/core';\nimport { SkyLibResourcesService } from '@skyux/i18n';\nimport { SkyIconModule } from '@skyux/icon';\nimport { Subject, fromEvent } from 'rxjs';\nimport { debounceTime, takeUntil } from 'rxjs/operators';\nimport { SkyDatetimeResourcesModule } from '../shared/sky-datetime-resources.module';\nimport { SkyDatepickerCalendarComponent } from './calendar/datepicker-calendar.component';\nimport { SkyDatepickerHostService } from './datepicker-host.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@skyux/core\";\nimport * as i2 from \"@skyux/forms\";\nimport * as i3 from \"@skyux/theme\";\nimport * as i4 from \"@angular/common\";\nimport * as i5 from \"@skyux/i18n\";\nimport * as i6 from \"@skyux/icon\";\nlet nextId = 0;\n/**\n * Creates the datepicker button and calendar.\n * You must wrap this component around an input with the `skyDatepickerInput` directive.\n */\nexport class SkyDatepickerComponent {\n set dateFormat(value) {\n this.#_dateFormat = value;\n this.dateFormatChange.emit(value);\n this.#populateInputBoxHelpText();\n }\n get dateFormat() {\n return this.#_dateFormat;\n }\n get disabled() {\n return this.#_disabled;\n }\n set disabled(value) {\n this.#_disabled = value;\n this.#changeDetector.markForCheck();\n }\n set selectedDate(value) {\n this.#_selectedDate = value;\n if (this.calendar) {\n this.calendar.writeValue(value);\n }\n }\n get selectedDate() {\n return this.#_selectedDate;\n }\n set calendarRef(value) {\n if (value) {\n this.#_calendarRef = value;\n this.#addKeyupListener();\n // Wait for the calendar component to render before gauging dimensions.\n setTimeout(() => {\n if (this.calendarRef) {\n this.calendar?.writeValue(this.selectedDate);\n this.#destroyAffixer();\n this.#createAffixer();\n setTimeout(() => {\n if (this.calendarRef) {\n this.#coreAdapter.applyAutoFocus(this.calendarRef);\n this.isVisible = true;\n this.#changeDetector.markForCheck();\n }\n });\n }\n });\n }\n }\n get calendarRef() {\n return this.#_calendarRef;\n }\n #affixer;\n #calendarUnsubscribe;\n #customDatesSubscription;\n #ngUnsubscribe;\n #overlay;\n #overlayKeyupListener;\n #_calendarRef;\n #_dateFormat;\n #_disabled;\n #_selectedDate;\n #affixService;\n #appFormatter;\n #changeDetector;\n #coreAdapter;\n #dateFormatHintTextTemplateString;\n #environmentInjector;\n #resourceSvc;\n #overlayService;\n #zIndex;\n #datepickerHostSvc;\n #elementRef;\n constructor(affixService, changeDetector, coreAdapter, overlayService, inputBoxHostService, themeSvc, stackingContext) {\n this.inputBoxHostService = inputBoxHostService;\n /**\n * Adds a class to the datepicker.\n * @default \"\"\n */\n this.pickerClass = '';\n /**\n * Fires when the range of displayed dates in the calendar changes. Provides the\n * current range of displayed dates and a mutable `customDate` property consumers can use\n * to modify individual dates on the calendar.\n */\n this.calendarDateRangeChange = new EventEmitter();\n /**\n * @internal\n */\n this.dateFormatChange = new EventEmitter();\n /**\n * @internal\n */\n this.openChange = new EventEmitter();\n /**\n * Fires when a user selects a date from the calendar.\n * @internal\n */\n this.calendarDateChange = output();\n this.dateChange = new EventEmitter();\n this.isDaypickerWaiting = false;\n this.isOpen = false;\n this.isVisible = false;\n this.#calendarUnsubscribe = new Subject();\n this.#ngUnsubscribe = new Subject();\n this.#_disabled = false;\n this.#appFormatter = inject(SkyAppFormat);\n this.#dateFormatHintTextTemplateString = '';\n this.#environmentInjector = inject(EnvironmentInjector);\n this.#resourceSvc = inject(SkyLibResourcesService);\n this.#datepickerHostSvc = inject(SkyDatepickerHostService);\n this.#elementRef = inject(ElementRef);\n this.#affixService = affixService;\n this.#changeDetector = changeDetector;\n this.#coreAdapter = coreAdapter;\n this.#overlayService = overlayService;\n const uniqueId = nextId++;\n this.calendarId = `sky-datepicker-calendar-${uniqueId}`;\n this.triggerButtonId = `sky-datepicker-button-${uniqueId}`;\n this.#zIndex = stackingContext?.zIndex;\n // Update icons when theme changes.\n themeSvc?.settingsChange\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe(() => {\n this.#changeDetector.markForCheck();\n });\n }\n ngOnInit() {\n if (this.inputBoxHostService && this.inputTemplateRef) {\n this.inputBoxHostService.populate({\n inputTemplate: this.inputTemplateRef,\n buttonsTemplate: this.triggerButtonTemplateRef,\n });\n this.#resourceSvc\n .getString('skyux_datepicker_format_hint_text')\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((templateString) => {\n this.#dateFormatHintTextTemplateString = templateString;\n this.#populateInputBoxHelpText();\n });\n }\n }\n ngAfterViewInit() {\n this.#datepickerHostSvc.init(this);\n }\n ngOnDestroy() {\n this.dateChange.complete();\n this.openChange.complete();\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n this.#removePickerEventListeners();\n this.#destroyAffixer();\n this.#destroyOverlay();\n }\n onCalendarModeChange() {\n // Let the calendar populate in the DOM before recalculating placement.\n setTimeout(() => {\n this.#affixer?.reaffix();\n });\n }\n onSelectedDateChange(value) {\n this.calendarDateChange.emit(value);\n this.dateChange.emit(value);\n this.#closePicker();\n }\n onTriggerButtonClick() {\n if (this.isOpen) {\n this.#closePicker();\n }\n else {\n this.#openPicker();\n }\n }\n onCalendarDateRangeChange(event) {\n /* istanbul ignore else */\n if (event) {\n this.#cancelCustomDatesSubscription();\n const args = {\n startDate: event.startDate,\n endDate: event.endDate,\n customDates: undefined,\n };\n this.calendarDateRangeChange.emit(args);\n // If consumer has added an observable to the args, watch for incoming custom dates.\n /* istanbul ignore else */\n if (args.customDates) {\n this.isDaypickerWaiting = true;\n // Avoid an ExpressionChangedAfterItHasBeenCheckedError.\n this.#changeDetector.detectChanges();\n this.#customDatesSubscription = args.customDates\n .pipe(debounceTime(250))\n .subscribe((result) => {\n this.customDates = result;\n this.isDaypickerWaiting = false;\n // Trigger change detection in child components to show changes in the calendar.\n this.#changeDetector.markForCheck();\n });\n }\n else {\n // If consumer returns an undefined value after custom dates have\n // already been established, remove custom dates.\n if (this.customDates) {\n this.customDates = undefined;\n // Avoid an ExpressionChangedAfterItHasBeenCheckedError.\n this.#changeDetector.detectChanges();\n }\n }\n }\n }\n /**\n * Whether the datepicker component contains the provided focus event target.\n * @internal\n */\n containsTarget(target) {\n return (this.#elementRef.nativeElement.contains(target) ||\n this.getPickerRef()?.nativeElement.contains(target));\n }\n /**\n * Gets the element reference of the picker overlay.\n * @internal\n */\n getPickerRef() {\n return this.#overlay?.componentRef.location;\n }\n #closePicker() {\n this.#destroyAffixer();\n this.#destroyOverlay();\n this.#removePickerEventListeners();\n this.triggerButtonRef?.nativeElement.focus();\n this.isOpen = false;\n this.openChange.emit(false);\n }\n #openPicker() {\n this.isVisible = false;\n this.#changeDetector.markForCheck();\n this.#removePickerEventListeners();\n this.#destroyOverlay();\n this.#createOverlay();\n this.isOpen = true;\n this.#changeDetector.markForCheck();\n this.openChange.emit(true);\n }\n #createAffixer() {\n if (this.calendarRef && this.triggerButtonRef) {\n const affixer = this.#affixService.createAffixer(this.calendarRef);\n // Hide calendar when trigger button is scrolled off-screen.\n affixer.placementChange\n .pipe(takeUntil(this.#calendarUnsubscribe))\n .subscribe((change) => {\n this.isVisible = change.placement !== null;\n this.#changeDetector.markForCheck();\n });\n affixer.affixTo(this.triggerButtonRef.nativeElement, {\n autoFitContext: SkyAffixAutoFitContext.Viewport,\n enableAutoFit: true,\n horizontalAlignment: 'right',\n isSticky: true,\n placement: 'below',\n });\n this.#affixer = affixer;\n }\n }\n #destroyAffixer() {\n /*istanbul ignore else*/\n if (this.#affixer) {\n this.#affixer.destroy();\n this.#affixer = undefined;\n }\n }\n #createOverlay() {\n if (this.calendarTemplateRef) {\n const overlay = this.#overlayService.create({\n wrapperClass: this.pickerClass,\n enableClose: false,\n enablePointerEvents: false,\n environmentInjector: this.#environmentInjector,\n });\n if (this.#zIndex) {\n this.#zIndex\n .pipe(takeUntil(this.#calendarUnsubscribe))\n .subscribe((zIndex) => {\n overlay.componentRef.instance.zIndex = zIndex.toString(10);\n });\n }\n overlay.backdropClick\n .pipe(takeUntil(this.#calendarUnsubscribe))\n .subscribe(() => {\n /* istanbul ignore else */\n if (this.isOpen) {\n this.#closePicker();\n }\n });\n overlay.attachTemplate(this.calendarTemplateRef);\n this.#overlay = overlay;\n }\n }\n #destroyOverlay() {\n /*istanbul ignore else*/\n if (this.#overlay) {\n this.#overlayService.close(this.#overlay);\n this.#overlay = undefined;\n }\n }\n #addKeyupListener() {\n const datepickerCalendarElement = this.calendarRef?.nativeElement;\n if (datepickerCalendarElement) {\n this.#overlayKeyupListener = fromEvent(datepickerCalendarElement, 'keyup')\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((event) => {\n const key = event.key?.toLowerCase();\n if (key === 'escape' && this.isOpen) {\n this.#closePicker();\n }\n });\n }\n }\n #removePickerEventListeners() {\n this.#calendarUnsubscribe.next();\n this.#calendarUnsubscribe.complete();\n this.#calendarUnsubscribe = new Subject();\n this.#overlayKeyupListener?.unsubscribe();\n }\n #cancelCustomDatesSubscription() {\n if (this.#customDatesSubscription) {\n this.#customDatesSubscription.unsubscribe();\n this.#customDatesSubscription = undefined;\n }\n }\n #populateInputBoxHelpText() {\n if (this.inputBoxHostService && this.inputTemplateRef) {\n /* safety check */\n /* istanbul ignore else */\n if (this.dateFormat) {\n this.inputBoxHostService?.setHintText(this.#appFormatter.formatText(this.#dateFormatHintTextTemplateString, this.dateFormat));\n }\n else {\n this.inputBoxHostService?.setHintText('');\n }\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDatepickerComponent, deps: [{ token: i1.SkyAffixService }, { token: i0.ChangeDetectorRef }, { token: i1.SkyCoreAdapterService }, { token: i1.SkyOverlayService }, { token: i2.SkyInputBoxHostService, optional: true }, { token: i3.SkyThemeService, optional: true }, { token: SKY_STACKING_CONTEXT, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.5\", type: SkyDatepickerComponent, isStandalone: true, selector: \"sky-datepicker\", inputs: { pickerClass: \"pickerClass\" }, outputs: { calendarDateRangeChange: \"calendarDateRangeChange\", dateFormatChange: \"dateFormatChange\", openChange: \"openChange\", calendarDateChange: \"calendarDateChange\" }, providers: [SkyDatepickerHostService], viewQueries: [{ propertyName: \"calendar\", first: true, predicate: SkyDatepickerCalendarComponent, descendants: true }, { propertyName: \"calendarRef\", first: true, predicate: [\"calendarRef\"], descendants: true, read: ElementRef }, { propertyName: \"calendarTemplateRef\", first: true, predicate: [\"calendarTemplateRef\"], descendants: true, read: TemplateRef }, { propertyName: \"triggerButtonRef\", first: true, predicate: [\"triggerButtonRef\"], descendants: true, read: ElementRef }, { propertyName: \"inputTemplateRef\", first: true, predicate: [\"inputTemplateRef\"], descendants: true, read: TemplateRef, static: true }, { propertyName: \"triggerButtonTemplateRef\", first: true, predicate: [\"triggerButtonTemplateRef\"], descendants: true, read: TemplateRef, static: true }], ngImport: i0, template: \"<div class=\\\"sky-datepicker\\\">\\n @if (!inputBoxHostService) {\\n <div class=\\\"sky-input-group\\\">\\n <ng-container *ngTemplateOutlet=\\\"inputTemplateRef\\\" />\\n <ng-container *ngTemplateOutlet=\\\"triggerButtonTemplateRef\\\" />\\n </div>\\n }\\n</div>\\n\\n<ng-template #inputTemplateRef>\\n <ng-content />\\n</ng-template>\\n\\n<ng-template #triggerButtonTemplateRef>\\n <div class=\\\"sky-input-group-btn\\\">\\n <button\\n #triggerButtonRef\\n aria-haspopup=\\\"dialog\\\"\\n class=\\\"sky-btn sky-btn-default sky-input-group-datepicker-btn\\\"\\n type=\\\"button\\\"\\n [attr.aria-controls]=\\\"isOpen ? calendarId : null\\\"\\n [attr.aria-expanded]=\\\"isOpen\\\"\\n [attr.aria-label]=\\\"\\n inputBoxHostService?.labelText\\n ? ('skyux_datepicker_trigger_button_label_context'\\n | skyLibResources: inputBoxHostService?.labelText)\\n : ('skyux_datepicker_trigger_button_label' | skyLibResources)\\n \\\"\\n [attr.id]=\\\"triggerButtonId\\\"\\n [attr.title]=\\\"\\n inputBoxHostService?.labelText\\n ? ('skyux_datepicker_trigger_button_label_context'\\n | skyLibResources: inputBoxHostService?.labelText)\\n : ('skyux_datepicker_trigger_button_label' | skyLibResources)\\n \\\"\\n [disabled]=\\\"disabled\\\"\\n (click)=\\\"onTriggerButtonClick()\\\"\\n >\\n <sky-icon iconName=\\\"calendar-ltr\\\" iconSize=\\\"l\\\" />\\n </button>\\n </div>\\n</ng-template>\\n\\n<ng-template #calendarTemplateRef>\\n <div\\n #calendarRef\\n class=\\\"sky-datepicker-calendar-container sky-shadow sky-elevation-4\\\"\\n role=\\\"dialog\\\"\\n [attr.aria-labelledby]=\\\"triggerButtonId\\\"\\n [attr.id]=\\\"calendarId\\\"\\n [class.sky-datepicker-hidden]=\\\"!isVisible\\\"\\n >\\n <sky-datepicker-calendar\\n cdkTrapFocus\\n [customDates]=\\\"customDates\\\"\\n [isDaypickerWaiting]=\\\"isDaypickerWaiting\\\"\\n [maxDate]=\\\"maxDate\\\"\\n [minDate]=\\\"minDate\\\"\\n [startAtDate]=\\\"startAtDate\\\"\\n [startingDay]=\\\"startingDay\\\"\\n (calendarDateRangeChange)=\\\"onCalendarDateRangeChange($event)\\\"\\n (calendarModeChange)=\\\"onCalendarModeChange()\\\"\\n (selectedDateChange)=\\\"onSelectedDateChange($event)\\\"\\n />\\n </div>\\n</ng-template>\\n\", styles: [\".sky-datepicker-calendar-container:not(.sky-theme-modern *){--sky-override-datepicker-border-radius: 5px}.sky-datepicker-calendar-container{position:fixed;border-radius:var(--sky-override-datepicker-border-radius, var(--sky-border-radius-s))}.sky-datepicker-hidden{visibility:hidden}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i4.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"component\", type: SkyDatepickerCalendarComponent, selector: \"sky-datepicker-calendar\", inputs: [\"customDates\", \"isDaypickerWaiting\", \"minDate\", \"maxDate\", \"startAtDate\", \"selectedDate\", \"startingDay\"], outputs: [\"calendarDateRangeChange\", \"calendarModeChange\", \"selectedDateChange\"] }, { kind: \"ngmodule\", type: SkyDatetimeResourcesModule }, { kind: \"pipe\", type: i5.SkyLibResourcesPipe, name: \"skyLibResources\" }, { kind: \"ngmodule\", type: SkyIconModule }, { kind: \"component\", type: i6.λ1, selector: \"sky-icon\", inputs: [\"icon\", \"iconName\", \"iconType\", \"size\", \"fixedWidth\", \"variant\", \"iconSize\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDatepickerComponent, decorators: [{\n type: Component,\n args: [{ changeDetection: ChangeDetectionStrategy.OnPush, imports: [\n CommonModule,\n SkyDatepickerCalendarComponent,\n SkyDatetimeResourcesModule,\n SkyIconModule,\n ], providers: [SkyDatepickerHostService], selector: 'sky-datepicker', template: \"<div class=\\\"sky-datepicker\\\">\\n @if (!inputBoxHostService) {\\n <div class=\\\"sky-input-group\\\">\\n <ng-container *ngTemplateOutlet=\\\"inputTemplateRef\\\" />\\n <ng-container *ngTemplateOutlet=\\\"triggerButtonTemplateRef\\\" />\\n </div>\\n }\\n</div>\\n\\n<ng-template #inputTemplateRef>\\n <ng-content />\\n</ng-template>\\n\\n<ng-template #triggerButtonTemplateRef>\\n <div class=\\\"sky-input-group-btn\\\">\\n <button\\n #triggerButtonRef\\n aria-haspopup=\\\"dialog\\\"\\n class=\\\"sky-btn sky-btn-default sky-input-group-datepicker-btn\\\"\\n type=\\\"button\\\"\\n [attr.aria-controls]=\\\"isOpen ? calendarId : null\\\"\\n [attr.aria-expanded]=\\\"isOpen\\\"\\n [attr.aria-label]=\\\"\\n inputBoxHostService?.labelText\\n ? ('skyux_datepicker_trigger_button_label_context'\\n | skyLibResources: inputBoxHostService?.labelText)\\n : ('skyux_datepicker_trigger_button_label' | skyLibResources)\\n \\\"\\n [attr.id]=\\\"triggerButtonId\\\"\\n [attr.title]=\\\"\\n inputBoxHostService?.labelText\\n ? ('skyux_datepicker_trigger_button_label_context'\\n | skyLibResources: inputBoxHostService?.labelText)\\n : ('skyux_datepicker_trigger_button_label' | skyLibResources)\\n \\\"\\n [disabled]=\\\"disabled\\\"\\n (click)=\\\"onTriggerButtonClick()\\\"\\n >\\n <sky-icon iconName=\\\"calendar-ltr\\\" iconSize=\\\"l\\\" />\\n </button>\\n </div>\\n</ng-template>\\n\\n<ng-template #calendarTemplateRef>\\n <div\\n #calendarRef\\n class=\\\"sky-datepicker-calendar-container sky-shadow sky-elevation-4\\\"\\n role=\\\"dialog\\\"\\n [attr.aria-labelledby]=\\\"triggerButtonId\\\"\\n [attr.id]=\\\"calendarId\\\"\\n [class.sky-datepicker-hidden]=\\\"!isVisible\\\"\\n >\\n <sky-datepicker-calendar\\n cdkTrapFocus\\n [customDates]=\\\"customDates\\\"\\n [isDaypickerWaiting]=\\\"isDaypickerWaiting\\\"\\n [maxDate]=\\\"maxDate\\\"\\n [minDate]=\\\"minDate\\\"\\n [startAtDate]=\\\"startAtDate\\\"\\n [startingDay]=\\\"startingDay\\\"\\n (calendarDateRangeChange)=\\\"onCalendarDateRangeChange($event)\\\"\\n (calendarModeChange)=\\\"onCalendarModeChange()\\\"\\n (selectedDateChange)=\\\"onSelectedDateChange($event)\\\"\\n />\\n </div>\\n</ng-template>\\n\", styles: [\".sky-datepicker-calendar-container:not(.sky-theme-modern *){--sky-override-datepicker-border-radius: 5px}.sky-datepicker-calendar-container{position:fixed;border-radius:var(--sky-override-datepicker-border-radius, var(--sky-border-radius-s))}.sky-datepicker-hidden{visibility:hidden}\\n\"] }]\n }], ctorParameters: () => [{ type: i1.SkyAffixService }, { type: i0.ChangeDetectorRef }, { type: i1.SkyCoreAdapterService }, { type: i1.SkyOverlayService }, { type: i2.SkyInputBoxHostService, decorators: [{\n type: Optional\n }] }, { type: i3.SkyThemeService, decorators: [{\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [SKY_STACKING_CONTEXT]\n }] }], propDecorators: { pickerClass: [{\n type: Input\n }], calendarDateRangeChange: [{\n type: Output\n }], dateFormatChange: [{\n type: Output\n }], openChange: [{\n type: Output\n }], calendar: [{\n type: ViewChild,\n args: [SkyDatepickerCalendarComponent]\n }], calendarRef: [{\n type: ViewChild,\n args: ['calendarRef', {\n read: ElementRef,\n }]\n }], calendarTemplateRef: [{\n type: ViewChild,\n args: ['calendarTemplateRef', {\n read: TemplateRef,\n }]\n }], triggerButtonRef: [{\n type: ViewChild,\n args: ['triggerButtonRef', {\n read: ElementRef,\n }]\n }], inputTemplateRef: [{\n type: ViewChild,\n args: ['inputTemplateRef', {\n read: TemplateRef,\n static: true,\n }]\n }], triggerButtonTemplateRef: [{\n type: ViewChild,\n args: ['triggerButtonTemplateRef', {\n read: TemplateRef,\n static: true,\n }]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUVMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsVUFBVSxFQUNWLG1CQUFtQixFQUNuQixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFHTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFdBQVcsRUFDWCxTQUFTLEVBQ1QsTUFBTSxFQUNOLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLHNCQUFzQixFQUd0QixZQUFZLEdBS2IsTUFBTSxhQUFhLENBQUM7QUFFckIsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFHNUMsT0FBTyxFQUFjLE9BQU8sRUFBZ0IsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFekQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFHckYsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFFMUYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sMkJBQTJCLENB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RUFBRSxXQUFXO3dCQUNqQixNQUFNLEVBQUUsSUFBSTtxQkFDYiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRW52aXJvbm1lbnRJbmplY3RvcixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgaW5qZWN0LFxuICBvdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgU0tZX1NUQUNLSU5HX0NPTlRFWFQsXG4gIFNreUFmZml4QXV0b0ZpdENvbnRleHQsXG4gIFNreUFmZml4U2VydmljZSxcbiAgU2t5QWZmaXhlcixcbiAgU2t5QXBwRm9ybWF0LFxuICBTa3lDb3JlQWRhcHRlclNlcnZpY2UsXG4gIFNreU92ZXJsYXlJbnN0YW5jZSxcbiAgU2t5T3ZlcmxheVNlcnZpY2UsXG4gIFNreVN0YWNraW5nQ29udGV4dCxcbn0gZnJvbSAnQHNreXV4L2NvcmUnO1xuaW1wb3J0IHsgU2t5SW5wdXRCb3hIb3N0U2VydmljZSB9IGZyb20gJ0Bza3l1eC9mb3Jtcyc7XG5pbXBvcnQgeyBTa3lMaWJSZXNvdXJjZXNTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L2kxOG4nO1xuaW1wb3J0IHsgU2t5SWNvbk1vZHVsZSB9IGZyb20gJ0Bza3l1eC9pY29uJztcbmltcG9ydCB7IFNreVRoZW1lU2VydmljZSB9IGZyb20gJ0Bza3l1eC90aGVtZSc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiwgZnJvbUV2ZW50IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgU2t5RGF0ZXRpbWVSZXNvdXJjZXNNb2R1bGUgfSBmcm9tICcuLi9zaGFyZWQvc2t5LWRhdGV0aW1lLXJlc291cmNlcy5tb2R1bGUnO1xuXG5pbXBvcnQgeyBTa3lEYXRlcGlja2VyQ2FsZW5kYXJDaGFuZ2UgfSBmcm9tICcuL2NhbGVuZGFyL2RhdGVwaWNrZXItY2FsZW5kYXItY2hhbmdlJztcbmltcG9ydCB7IFNreURhdGVwaWNrZXJDYWxlbmRhckNvbXBvbmVudCB9IGZyb20gJy4vY2FsZW5kYXIvZGF0ZXBpY2tlci1jYWxlbmRhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5RGF0ZXBpY2tlckN1c3RvbURhdGUgfSBmcm9tICcuL2RhdGVwaWNrZXItY3VzdG9tLWRhdGUnO1xuaW1wb3J0IHsgU2t5RGF0ZXBpY2tlckhvc3RTZXJ2aWNlIH0gZnJvbSAnLi9kYXRlcGlja2VyLWhvc3Quc2VydmljZSc7XG5cbmxldCBuZXh0SWQgPSAwO1xuXG4vKipcbiAqIENyZWF0ZXMgdGhlIGRhdGVwaWNrZXIgYnV0dG9uIGFuZCBjYWxlbmRhci5cbiAqIFlvdSBtdXN0IHdyYXAgdGhpcyBjb21wb25lbnQgYXJvdW5kIGFuIGlucHV0IHdpdGggdGhlIGBza3lEYXRlcGlja2VySW5wdXRgIGRpcmVjdGl2ZS5cbiAqL1xuQENvbXBvbmVudCh7XG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFNreURhdGVwaWNrZXJDYWxlbmRhckNvbXBvbmVudCxcbiAgICBTa3lEYXRldGltZVJlc291cmNlc01vZHVsZSxcbiAgICBTa3lJY29uTW9kdWxlLFxuICBdLFxuICBwcm92aWRlcnM6IFtTa3lEYXRlcGlja2VySG9zdFNlcnZpY2VdLFxuICBzZWxlY3RvcjogJ3NreS1kYXRlcGlja2VyJyxcbiAgc3R5bGVVcmw6ICcuL2RhdGVwaWNrZXIuY29tcG9uZW50LnNjc3MnLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0ZXBpY2tlci5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIFNreURhdGVwaWNrZXJDb21wb25lbnRcbiAgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIE9uSW5pdFxue1xuICAvKipcbiAgICogQWRkcyBhIGNsYXNzIHRvIHRoZSBkYXRlcGlja2VyLlxuICAgKiBAZGVmYXVsdCBcIlwiXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgcGlja2VyQ2xhc3M6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICcnO1xuXG4gIHB1YmxpYyBzZXQgZGF0ZUZvcm1hdCh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX2RhdGVGb3JtYXQgPSB2YWx1ZTtcbiAgICB0aGlzLmRhdGVGb3JtYXRDaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gICAgdGhpcy4jcG9wdWxhdGVJbnB1dEJveEhlbHBUZXh0KCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRhdGVGb3JtYXQoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy4jX2RhdGVGb3JtYXQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLiNfZGlzYWJsZWQ7XG4gIH1cblxuICBwdWJsaWMgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX2Rpc2FibGVkID0gdmFsdWU7XG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwdWJsaWMgc2V0IHNlbGVjdGVkRGF0ZSh2YWx1ZTogRGF0ZSB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19zZWxlY3RlZERhdGUgPSB2YWx1ZTtcbiAgICBpZiAodGhpcy5jYWxlbmRhcikge1xuICAgICAgdGhpcy5jYWxlbmRhci53cml0ZVZhbHVlKHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNlbGVjdGVkRGF0ZSgpOiBEYXRlIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy4jX3NlbGVjdGVkRGF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHRoZSByYW5nZSBvZiBkaXNwbGF5ZWQgZGF0ZXMgaW4gdGhlIGNhbGVuZGFyIGNoYW5nZXMuIFByb3ZpZGVzIHRoZVxuICAgKiBjdXJyZW50IHJhbmdlIG9mIGRpc3BsYXllZCBkYXRlcyBhbmQgYSBtdXRhYmxlIGBjdXN0b21EYXRlYCBwcm9wZXJ0eSBjb25zdW1lcnMgY2FuIHVzZVxuICAgKiB0byBtb2RpZnkgaW5kaXZpZHVhbCBkYXRlcyBvbiB0aGUgY2FsZW5kYXIuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIGNhbGVuZGFyRGF0ZVJhbmdlQ2hhbmdlID1cbiAgICBuZXcgRXZlbnRFbWl0dGVyPFNreURhdGVwaWNrZXJDYWxlbmRhckNoYW5nZT4oKTtcblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIGRhdGVGb3JtYXRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIG9wZW5DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gYSB1c2VyIHNlbGVjdHMgYSBkYXRlIGZyb20gdGhlIGNhbGVuZGFyLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBjYWxlbmRhckRhdGVDaGFuZ2UgPSBvdXRwdXQ8RGF0ZT4oKTtcblxuICBwdWJsaWMgY2FsZW5kYXJJZDogc3RyaW5nO1xuXG4gIHB1YmxpYyBjdXN0b21EYXRlczogU2t5RGF0ZXBpY2tlckN1c3RvbURhdGVbXSB8IHVuZGVmaW5lZDtcblxuICBwdWJsaWMgZGF0ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZT4oKTtcblxuICBwdWJsaWMgaXNEYXlwaWNrZXJXYWl0aW5nID0gZmFsc2U7XG5cbiAgcHVibGljIGlzT3BlbiA9IGZhbHNlO1xuXG4gIHB1YmxpYyBpc1Zpc2libGUgPSBmYWxzZTtcblxuICBwdWJsaWMgbWF4RGF0ZTogRGF0ZSB8IHVuZGVmaW5lZDtcblxuICBwdWJsaWMgbWluRGF0ZTogRGF0ZSB8IHVuZGVmaW5lZDtcblxuICBwdWJsaWMgc3RhcnRBdERhdGU6IERhdGUgfCB1bmRlZmluZWQ7XG5cbiAgcHVibGljIHN0YXJ0aW5nRGF5OiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgcHVibGljIHRyaWdnZXJCdXR0b25JZDogc3RyaW5nO1xuXG4gIEBWaWV3Q2hpbGQoU2t5RGF0ZXBpY2tlckNhbGVuZGFyQ29tcG9uZW50KVxuICBwdWJsaWMgY2FsZW5kYXI6IFNreURhdGVwaWNrZXJDYWxlbmRhckNvbXBvbmVudCB8IHVuZGVmaW5lZDtcblxuICBAVmlld0NoaWxkKCdjYWxlbmRhclJlZicsIHtcbiAgICByZWFkOiBFbGVtZW50UmVmLFxuICB9KVxuICBwdWJsaWMgc2V0IGNhbGVuZGFyUmVmKHZhbHVlOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLiNfY2FsZW5kYXJSZWYgPSB2YWx1ZTtcblxuICAgICAgdGhpcy4jYWRkS2V5dXBMaXN0ZW5lcigpO1xuXG4gICAgICAvLyBXYWl0IGZvciB0aGUgY2FsZW5kYXIgY29tcG9uZW50IHRvIHJlbmRlciBiZWZvcmUgZ2F1Z2luZyBkaW1lbnNpb25zLlxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmNhbGVuZGFyUmVmKSB7XG4gICAgICAgICAgdGhpcy5jYWxlbmRhcj8ud3JpdGVWYWx1ZSh0aGlzLnNlbGVjdGVkRGF0ZSk7XG5cbiAgICAgICAgICB0aGlzLiNkZXN0cm95QWZmaXhlcigpO1xuICAgICAgICAgIHRoaXMuI2NyZWF0ZUFmZml4ZXIoKTtcblxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuY2FsZW5kYXJSZWYpIHtcbiAgICAgICAgICAgICAgdGhpcy4jY29yZUFkYXB0ZXIuYXBwbHlBdXRvRm9jdXModGhpcy5jYWxlbmRhclJlZik7XG5cbiAgICAgICAgICAgICAgdGhpcy5pc1Zpc2libGUgPSB0cnVlO1xuICAgICAgICAgICAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBjYWxlbmRhclJlZigpOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy4jX2NhbGVuZGFyUmVmO1xuICB9XG5cbiAgQFZpZXdDaGlsZCgnY2FsZW5kYXJUZW1wbGF0ZVJlZicsIHtcbiAgICByZWFkOiBUZW1wbGF0ZVJlZixcbiAgfSlcbiAgcHVibGljIGNhbGVuZGFyVGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPHVua25vd24+IHwgdW5kZWZpbmVkO1xuXG4gIEBWaWV3Q2hpbGQoJ3RyaWdnZXJCdXR0b25SZWYnLCB7XG4gICAgcmVhZDogRWxlbWVudFJlZixcbiAgfSlcbiAgcHVibGljIHRyaWdnZXJCdXR0b25SZWY6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWQ7XG5cbiAgQFZpZXdDaGlsZCgnaW5wdXRUZW1wbGF0ZVJlZicsIHtcbiAgICByZWFkOiBUZW1wbGF0ZVJlZixcbiAgICBzdGF0aWM6IHRydWUsXG4gIH0pXG4gIHB1YmxpYyBpbnB1dFRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjx1bmtub3duPiB8IHVuZGVmaW5lZDtcblxuICBAVmlld0NoaWxkKCd0cmlnZ2VyQnV0dG9uVGVtcGxhdGVSZWYnLCB7XG4gICAgcmVhZDogVGVtcGxhdGVSZWYsXG4gICAgc3RhdGljOiB0cnVlLFxuICB9KVxuICBwdWJsaWMgdHJpZ2dlckJ1dHRvblRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjx1bmtub3duPiB8IHVuZGVmaW5lZDtcblxuICAjYWZmaXhlcjogU2t5QWZmaXhlciB8IHVuZGVmaW5lZDtcblxuICAjY2FsZW5kYXJVbnN1YnNjcmliZTogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgI2N1c3RvbURhdGVzU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQ7XG5cbiAgI25nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICNvdmVybGF5OiBTa3lPdmVybGF5SW5zdGFuY2UgfCB1bmRlZmluZWQ7XG5cbiAgI292ZXJsYXlLZXl1cExpc3RlbmVyOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQ7XG5cbiAgI19jYWxlbmRhclJlZjogRWxlbWVudFJlZiB8IHVuZGVmaW5lZDtcblxuICAjX2RhdGVGb3JtYXQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAjX2Rpc2FibGVkOiBib29sZWFuIHwgdW5kZWZpbmVkID0gZmFsc2U7XG5cbiAgI19zZWxlY3RlZERhdGU6IERhdGUgfCB1bmRlZmluZWQ7XG5cbiAgI2FmZml4U2VydmljZTogU2t5QWZmaXhTZXJ2aWNlO1xuICByZWFkb25seSAjYXBwRm9ybWF0dGVyID0gaW5qZWN0KFNreUFwcEZvcm1hdCk7XG4gICNjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWY7XG4gICNjb3JlQWRhcHRlcjogU2t5Q29yZUFkYXB0ZXJTZXJ2aWNlO1xuICAjZGF0ZUZvcm1hdEhpbnRUZXh0VGVtcGxhdGVTdHJpbmcgPSAnJztcbiAgcmVhZG9ubHkgI2Vudmlyb25tZW50SW5qZWN0b3IgPSBpbmplY3QoRW52aXJvbm1lbnRJbmplY3Rvcik7XG4gIHJlYWRvbmx5ICNyZXNvdXJjZVN2YyA9IGluamVjdChTa3lMaWJSZXNvdXJjZXNTZXJ2aWNlKTtcbiAgI292ZXJsYXlTZXJ2aWNlOiBTa3lPdmVybGF5U2VydmljZTtcbiAgcmVhZG9ubHkgI3pJbmRleDogT2JzZXJ2YWJsZTxudW1iZXI+IHwgdW5kZWZpbmVkO1xuXG4gIHJlYWRvbmx5ICNkYXRlcGlja2VySG9zdFN2YyA9IGluamVjdChTa3lEYXRlcGlja2VySG9zdFNlcnZpY2UpO1xuICByZWFkb25seSAjZWxlbWVudFJlZiA9IGluamVjdChFbGVtZW50UmVmKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBhZmZpeFNlcnZpY2U6IFNreUFmZml4U2VydmljZSxcbiAgICBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgY29yZUFkYXB0ZXI6IFNreUNvcmVBZGFwdGVyU2VydmljZSxcbiAgICBvdmVybGF5U2VydmljZTogU2t5T3ZlcmxheVNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgcHVibGljIGlucHV0Qm94SG9zdFNlcnZpY2U/OiBTa3lJbnB1dEJveEhvc3RTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIHRoZW1lU3ZjPzogU2t5VGhlbWVTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpXG4gICAgQEluamVjdChTS1lfU1RBQ0tJTkdfQ09OVEVYVClcbiAgICBzdGFja2luZ0NvbnRleHQ/OiBTa3lTdGFja2luZ0NvbnRleHQsXG4gICkge1xuICAgIHRoaXMuI2FmZml4U2VydmljZSA9IGFmZml4U2VydmljZTtcbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3RvciA9IGNoYW5nZURldGVjdG9yO1xuICAgIHRoaXMuI2NvcmVBZGFwdGVyID0gY29yZUFkYXB0ZXI7XG4gICAgdGhpcy4jb3ZlcmxheVNlcnZpY2UgPSBvdmVybGF5U2VydmljZTtcbiAgICBjb25zdCB1bmlxdWVJZCA9IG5leHRJZCsrO1xuICAgIHRoaXMuY2FsZW5kYXJJZCA9IGBza3ktZGF0ZXBpY2tlci1jYWxlbmRhci0ke3VuaXF1ZUlkfWA7XG4gICAgdGhpcy50cmlnZ2VyQnV0dG9uSWQgPSBgc2t5LWRhdGVwaWNrZXItYnV0dG9uLSR7dW5pcXVlSWR9YDtcbiAgICB0aGlzLiN6SW5kZXggPSBzdGFja2luZ0NvbnRleHQ/LnpJbmRleDtcblxuICAgIC8vIFVwZGF0ZSBpY29ucyB3aGVuIHRoZW1lIGNoYW5nZXMuXG4gICAgdGhlbWVTdmM/LnNldHRpbmdzQ2hhbmdlXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pbnB1dEJveEhvc3RTZXJ2aWNlICYmIHRoaXMuaW5wdXRUZW1wbGF0ZVJlZikge1xuICAgICAgdGhpcy5pbnB1dEJveEhvc3RTZXJ2aWNlLnBvcHVsYXRlKHtcbiAgICAgICAgaW5wdXRUZW1wbGF0ZTogdGhpcy5pbnB1dFRlbXBsYXRlUmVmLFxuICAgICAgICBidXR0b25zVGVtcGxhdGU6IHRoaXMudHJpZ2dlckJ1dHRvblRlbXBsYXRlUmVmLFxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuI3Jlc291cmNlU3ZjXG4gICAgICAgIC5nZXRTdHJpbmcoJ3NreXV4X2RhdGVwaWNrZXJfZm9ybWF0X2hpbnRfdGV4dCcpXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgICAgLnN1YnNjcmliZSgodGVtcGxhdGVTdHJpbmcpID0+IHtcbiAgICAgICAgICB0aGlzLiNkYXRlRm9ybWF0SGludFRleHRUZW1wbGF0ZVN0cmluZyA9IHRlbXBsYXRlU3RyaW5nO1xuICAgICAgICAgIHRoaXMuI3BvcHVsYXRlSW5wdXRCb3hIZWxwVGV4dCgpO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuI2RhdGVwaWNrZXJIb3N0U3ZjLmluaXQodGhpcyk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kYXRlQ2hhbmdlLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5vcGVuQ2hhbmdlLmNvbXBsZXRlKCk7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMuI3JlbW92ZVBpY2tlckV2ZW50TGlzdGVuZXJzKCk7XG4gICAgdGhpcy4jZGVzdHJveUFmZml4ZXIoKTtcbiAgICB0aGlzLiNkZXN0cm95T3ZlcmxheSgpO1xuICB9XG5cbiAgcHVibGljIG9uQ2FsZW5kYXJNb2RlQ2hhbmdlKCk6IHZvaWQge1xuICAgIC8vIExldCB0aGUgY2FsZW5kYXIgcG9wdWxhdGUgaW4gdGhlIERPTSBiZWZvcmUgcmVjYWxjdWxhdGluZyBwbGFjZW1lbnQuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLiNhZmZpeGVyPy5yZWFmZml4KCk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgb25TZWxlY3RlZERhdGVDaGFuZ2UodmFsdWU6IERhdGUpOiB2b2lkIHtcbiAgICB0aGlzLmNhbGVuZGFyRGF0ZUNoYW5nZS5lbWl0KHZhbHVlKTtcbiAgICB0aGlzLmRhdGVDaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gICAgdGhpcy4jY2xvc2VQaWNrZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBvblRyaWdnZXJCdXR0b25DbGljaygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc09wZW4pIHtcbiAgICAgIHRoaXMuI2Nsb3NlUGlja2VyKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuI29wZW5QaWNrZXIoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25DYWxlbmRhckRhdGVSYW5nZUNoYW5nZShldmVudD86IFNreURhdGVwaWNrZXJDYWxlbmRhckNoYW5nZSk6IHZvaWQge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKGV2ZW50KSB7XG4gICAgICB0aGlzLiNjYW5jZWxDdXN0b21EYXRlc1N1YnNjcmlwdGlvbigpO1xuXG4gICAgICBjb25zdCBhcmdzOiBTa3lEYXRlcGlja2VyQ2FsZW5kYXJDaGFuZ2UgPSB7XG4gICAgICAgIHN0YXJ0RGF0ZTogZXZlbnQuc3RhcnREYXRlLFxuICAgICAgICBlbmREYXRlOiBldmVudC5lbmREYXRlLFxuICAgICAgICBjdXN0b21EYXRlczogdW5kZWZpbmVkLFxuICAgICAgfTtcbiAgICAgIHRoaXMuY2FsZW5kYXJEYXRlUmFuZ2VDaGFuZ2UuZW1pdChhcmdzKTtcbiAgICAgIC8vIElmIGNvbnN1bWVyIGhhcyBhZGRlZCBhbiBvYnNlcnZhYmxlIHRvIHRoZSBhcmdzLCB3YXRjaCBmb3IgaW5jb21pbmcgY3VzdG9tIGRhdGVzLlxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgIGlmIChhcmdzLmN1c3RvbURhdGVzKSB7XG4gICAgICAgIHRoaXMuaXNEYXlwaWNrZXJXYWl0aW5nID0gdHJ1ZTtcbiAgICAgICAgLy8gQXZvaWQgYW4gRXhwcmVzc2lvbkNoYW5nZWRBZnRlckl0SGFzQmVlbkNoZWNrZWRFcnJvci5cbiAgICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgICAgIHRoaXMuI2N1c3RvbURhdGVzU3Vic2NyaXB0aW9uID0gYXJncy5jdXN0b21EYXRlc1xuICAgICAgICAgIC5waXBlKGRlYm91bmNlVGltZSgyNTApKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jdXN0b21EYXRlcyA9IHJlc3VsdDtcbiAgICAgICAgICAgIHRoaXMuaXNEYXlwaWNrZXJXYWl0aW5nID0gZmFsc2U7XG5cbiAgICAgICAgICAgIC8vIFRyaWdnZXIgY2hhbmdlIGRldGVjdGlvbiBpbiBjaGlsZCBjb21wb25lbnRzIHRvIHNob3cgY2hhbmdlcyBpbiB0aGUgY2FsZW5kYXIuXG4gICAgICAgICAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIElmIGNvbnN1bWVyIHJldHVybnMgYW4gdW5kZWZpbmVkIHZhbHVlIGFmdGVyIGN1c3RvbSBkYXRlcyBoYXZlXG4gICAgICAgIC8vIGFscmVhZHkgYmVlbiBlc3RhYmxpc2hlZCwgcmVtb3ZlIGN1c3RvbSBkYXRlcy5cbiAgICAgICAgaWYgKHRoaXMuY3VzdG9tRGF0ZXMpIHtcbiAgICAgICAgICB0aGlzLmN1c3RvbURhdGVzID0gdW5kZWZpbmVkO1xuICAgICAgICAgIC8vIEF2b2lkIGFuIEV4cHJlc3Npb25DaGFuZ2VkQWZ0ZXJJdEhhc0JlZW5DaGVja2VkRXJyb3IuXG4gICAgICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGRhdGVwaWNrZXIgY29tcG9uZW50IGNvbnRhaW5zIHRoZSBwcm92aWRlZCBmb2N1cyBldmVudCB0YXJnZXQuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIGNvbnRhaW5zVGFyZ2V0KHRhcmdldDogRXZlbnRUYXJnZXQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy4jZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKHRhcmdldCkgfHxcbiAgICAgIHRoaXMuZ2V0UGlja2VyUmVmKCk/Lm5hdGl2ZUVsZW1lbnQuY29udGFpbnModGFyZ2V0KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgZWxlbWVudCByZWZlcmVuY2Ugb2YgdGhlIHBpY2tlciBvdmVybGF5LlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBnZXRQaWNrZXJSZWYoKTogRWxlbWVudFJlZiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI292ZXJsYXk/LmNvbXBvbmVudFJlZi5sb2NhdGlvbjtcbiAgfVxuXG4gICNjbG9zZVBpY2tlcigpOiB2b2lkIHtcbiAgICB0aGlzLiNkZXN0cm95QWZmaXhlcigpO1xuICAgIHRoaXMuI2Rlc3Ryb3lPdmVybGF5KCk7XG4gICAgdGhpcy4jcmVtb3ZlUGlja2VyRXZlbnRMaXN0ZW5lcnMoKTtcbiAgICB0aGlzLnRyaWdnZXJCdXR0b25SZWY/Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB0aGlzLmlzT3BlbiA9IGZhbHNlO1xuICAgIHRoaXMub3BlbkNoYW5nZS5lbWl0KGZhbHNlKTtcbiAgfVxuXG4gICNvcGVuUGlja2VyKCk6IHZvaWQge1xuICAgIHRoaXMuaXNWaXNpYmxlID0gZmFsc2U7XG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG5cbiAgICB0aGlzLiNyZW1vdmVQaWNrZXJFdmVudExpc3RlbmVycygpO1xuICAgIHRoaXMuI2Rlc3Ryb3lPdmVybGF5KCk7XG4gICAgdGhpcy4jY3JlYXRlT3ZlcmxheSgpO1xuXG4gICAgdGhpcy5pc09wZW4gPSB0cnVlO1xuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgIHRoaXMub3BlbkNoYW5nZS5lbWl0KHRydWUpO1xuICB9XG5cbiAgI2NyZWF0ZUFmZml4ZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY2FsZW5kYXJSZWYgJiYgdGhpcy50cmlnZ2VyQnV0dG9uUmVmKSB7XG4gICAgICBjb25zdCBhZmZpeGVyID0gdGhpcy4jYWZmaXhTZXJ2aWNlLmNyZWF0ZUFmZml4ZXIodGhpcy5jYWxlbmRhclJlZik7XG5cbiAgICAgIC8vIEhpZGUgY2FsZW5kYXIgd2hlbiB0cmlnZ2VyIGJ1dHRvbiBpcyBzY3JvbGxlZCBvZmYtc2NyZWVuLlxuICAgICAgYWZmaXhlci5wbGFjZW1lbnRDaGFuZ2VcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI2NhbGVuZGFyVW5zdWJzY3JpYmUpKVxuICAgICAgICAuc3Vic2NyaWJlKChjaGFuZ2UpID0+IHtcbiAgICAgICAgICB0aGlzLmlzVmlzaWJsZSA9IGNoYW5nZS5wbGFjZW1lbnQgIT09IG51bGw7XG4gICAgICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICBhZmZpeGVyLmFmZml4VG8odGhpcy50cmlnZ2VyQnV0dG9uUmVmLm5hdGl2ZUVsZW1lbnQsIHtcbiAgICAgICAgYXV0b0ZpdENvbnRleHQ6IFNreUFmZml4QXV0b0ZpdENvbnRleHQuVmlld3BvcnQsXG4gICAgICAgIGVuYWJsZUF1dG9GaXQ6IHRydWUsXG4gICAgICAgIGhvcml6b250YWxBbGlnbm1lbnQ6ICdyaWdodCcsXG4gICAgICAgIGlzU3RpY2t5OiB0cnVlLFxuICAgICAgICBwbGFjZW1lbnQ6ICdiZWxvdycsXG4gICAgICB9KTtcblxuICAgICAgdGhpcy4jYWZmaXhlciA9IGFmZml4ZXI7XG4gICAgfVxuICB9XG5cbiAgI2Rlc3Ryb3lBZmZpeGVyKCk6IHZvaWQge1xuICAgIC8qaXN0YW5idWwgaWdub3JlIGVsc2UqL1xuICAgIGlmICh0aGlzLiNhZmZpeGVyKSB7XG4gICAgICB0aGlzLiNhZmZpeGVyLmRlc3Ryb3koKTtcbiAgICAgIHRoaXMuI2FmZml4ZXIgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgI2NyZWF0ZU92ZXJsYXkoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY2FsZW5kYXJUZW1wbGF0ZVJlZikge1xuICAgICAgY29uc3Qgb3ZlcmxheSA9IHRoaXMuI292ZXJsYXlTZXJ2aWNlLmNyZWF0ZSh7XG4gICAgICAgIHdyYXBwZXJDbGFzczogdGhpcy5waWNrZXJDbGFzcyxcbiAgICAgICAgZW5hYmxlQ2xvc2U6IGZhbHNlLFxuICAgICAgICBlbmFibGVQb2ludGVyRXZlbnRzOiBmYWxzZSxcbiAgICAgICAgZW52aXJvbm1lbnRJbmplY3RvcjogdGhpcy4jZW52aXJvbm1lbnRJbmplY3RvcixcbiAgICAgIH0pO1xuXG4gICAgICBpZiAodGhpcy4jekluZGV4KSB7XG4gICAgICAgIHRoaXMuI3pJbmRleFxuICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNjYWxlbmRhclVuc3Vic2NyaWJlKSlcbiAgICAgICAgICAuc3Vic2NyaWJlKCh6SW5kZXgpID0+IHtcbiAgICAgICAgICAgIG92ZXJsYXkuY29tcG9uZW50UmVmLmluc3RhbmNlLnpJbmRleCA9IHpJbmRleC50b1N0cmluZygxMCk7XG4gICAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIG92ZXJsYXkuYmFja2Ryb3BDbGlja1xuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jY2FsZW5kYXJVbnN1YnNjcmliZSkpXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICAgICAgICB0aGlzLiNjbG9zZVBpY2tlcigpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgIG92ZXJsYXkuYXR0YWNoVGVtcGxhdGUodGhpcy5jYWxlbmRhclRlbXBsYXRlUmVmKTtcblxuICAgICAgdGhpcy4jb3ZlcmxheSA9IG92ZXJsYXk7XG4gICAgfVxuICB9XG5cbiAgI2Rlc3Ryb3lPdmVybGF5KCk6IHZvaWQge1xuICAgIC8qaXN0YW5idWwgaWdub3JlIGVsc2UqL1xuICAgIGlmICh0aGlzLiNvdmVybGF5KSB7XG4gICAgICB0aGlzLiNvdmVybGF5U2VydmljZS5jbG9zZSh0aGlzLiNvdmVybGF5KTtcbiAgICAgIHRoaXMuI292ZXJsYXkgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgI2FkZEtleXVwTGlzdGVuZXIoKTogdm9pZCB7XG4gICAgY29uc3QgZGF0ZXBpY2tlckNhbGVuZGFyRWxlbWVudCA9IHRoaXMuY2FsZW5kYXJSZWY/Lm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICBpZiAoZGF0ZXBpY2tlckNhbGVuZGFyRWxlbWVudCkge1xuICAgICAgdGhpcy4jb3ZlcmxheUtleXVwTGlzdGVuZXIgPSBmcm9tRXZlbnQ8S2V5Ym9hcmRFdmVudD4oXG4gICAgICAgIGRhdGVwaWNrZXJDYWxlbmRhckVsZW1lbnQsXG4gICAgICAgICdrZXl1cCcsXG4gICAgICApXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgICBjb25zdCBrZXkgPSBldmVudC5rZXk/LnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgaWYgKGtleSA9PT0gJ2VzY2FwZScgJiYgdGhpcy5pc09wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuI2Nsb3NlUGlja2VyKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAjcmVtb3ZlUGlja2VyRXZlbnRMaXN0ZW5lcnMoKTogdm9pZCB7XG4gICAgdGhpcy4jY2FsZW5kYXJVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy4jY2FsZW5kYXJVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMuI2NhbGVuZGFyVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgIHRoaXMuI292ZXJsYXlLZXl1cExpc3RlbmVyPy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgI2NhbmNlbEN1c3RvbURhdGVzU3Vic2NyaXB0aW9uKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLiNjdXN0b21EYXRlc1N1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy4jY3VzdG9tRGF0ZXNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgIHRoaXMuI2N1c3RvbURhdGVzU3Vic2NyaXB0aW9uID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gICNwb3B1bGF0ZUlucHV0Qm94SGVscFRleHQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaW5wdXRCb3hIb3N0U2VydmljZSAmJiB0aGlzLmlucHV0VGVtcGxhdGVSZWYpIHtcbiAgICAgIC8qIHNhZmV0eSBjaGVjayAqL1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgIGlmICh0aGlzLmRhdGVGb3JtYXQpIHtcbiAgICAgICAgdGhpcy5pbnB1dEJveEhvc3RTZXJ2aWNlPy5zZXRIaW50VGV4dChcbiAgICAgICAgICB0aGlzLiNhcHBGb3JtYXR0ZXIuZm9ybWF0VGV4dChcbiAgICAgICAgICAgIHRoaXMuI2RhdGVGb3JtYXRIaW50VGV4dFRlbXBsYXRlU3RyaW5nLFxuICAgICAgICAgICAgdGhpcy5kYXRlRm9ybWF0LFxuICAgICAgICAgICksXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmlucHV0Qm94SG9zdFNlcnZpY2U/LnNldEhpbnRUZXh0KCcnKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJza3ktZGF0ZXBpY2tlclwiPlxuICBAaWYgKCFpbnB1dEJveEhvc3RTZXJ2aWNlKSB7XG4gICAgPGRpdiBjbGFzcz1cInNreS1pbnB1dC1ncm91cFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImlucHV0VGVtcGxhdGVSZWZcIiAvPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRyaWdnZXJCdXR0b25UZW1wbGF0ZVJlZlwiIC8+XG4gICAgPC9kaXY+XG4gIH1cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2lucHV0VGVtcGxhdGVSZWY+XG4gIDxuZy1jb250ZW50IC8+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3RyaWdnZXJCdXR0b25UZW1wbGF0ZVJlZj5cbiAgPGRpdiBjbGFzcz1cInNreS1pbnB1dC1ncm91cC1idG5cIj5cbiAgICA8YnV0dG9uXG4gICAgICAjdHJpZ2dlckJ1dHRvblJlZlxuICAgICAgYXJpYS1oYXNwb3B1cD1cImRpYWxvZ1wiXG4gICAgICBjbGFzcz1cInNreS1idG4gc2t5LWJ0bi1kZWZhdWx0IHNreS1pbnB1dC1ncm91cC1kYXRlcGlja2VyLWJ0blwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIFthdHRyLmFyaWEtY29udHJvbHNdPVwiaXNPcGVuID8gY2FsZW5kYXJJZCA6IG51bGxcIlxuICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJpc09wZW5cIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgaW5wdXRCb3hIb3N0U2VydmljZT8ubGFiZWxUZXh0XG4gICAgICAgICAgPyAoJ3NreXV4X2RhdGVwaWNrZXJfdHJpZ2dlcl9idXR0b25fbGFiZWxfY29udGV4dCdcbiAgICAgICAgICAgIHwgc2t5TGliUmVzb3VyY2VzOiBpbnB1dEJveEhvc3RTZXJ2aWNlPy5sYWJlbFRleHQpXG4gICAgICAgICAgOiAoJ3NreXV4X2RhdGVwaWNrZXJfdHJpZ2dlcl9idXR0b25fbGFiZWwnIHwgc2t5TGliUmVzb3VyY2VzKVxuICAgICAgXCJcbiAgICAgIFthdHRyLmlkXT1cInRyaWdnZXJCdXR0b25JZFwiXG4gICAgICBbYXR0ci50aXRsZV09XCJcbiAgICAgICAgaW5wdXRCb3hIb3N0U2VydmljZT8ubGFiZWxUZXh0XG4gICAgICAgICAgPyAoJ3NreXV4X2RhdGVwaWNrZXJfdHJpZ2dlcl9idXR0b25fbGFiZWxfY29udGV4dCdcbiAgICAgICAgICAgIHwgc2t5TGliUmVzb3VyY2VzOiBpbnB1dEJveEhvc3RTZXJ2aWNlPy5sYWJlbFRleHQpXG4gICAgICAgICAgOiAoJ3NreXV4X2RhdGVwaWNrZXJfdHJpZ2dlcl9idXR0b25fbGFiZWwnIHwgc2t5TGliUmVzb3VyY2VzKVxuICAgICAgXCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAoY2xpY2spPVwib25UcmlnZ2VyQnV0dG9uQ2xpY2soKVwiXG4gICAgPlxuICAgICAgPHNreS1pY29uIGljb25OYW1lPVwiY2FsZW5kYXItbHRyXCIgaWNvblNpemU9XCJsXCIgLz5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2NhbGVuZGFyVGVtcGxhdGVSZWY+XG4gIDxkaXZcbiAgICAjY2FsZW5kYXJSZWZcbiAgICBjbGFzcz1cInNreS1kYXRlcGlja2VyLWNhbGVuZGFyLWNvbnRhaW5lciBza3ktc2hhZG93IHNreS1lbGV2YXRpb24tNFwiXG4gICAgcm9sZT1cImRpYWxvZ1wiXG4gICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cInRyaWdnZXJCdXR0b25JZFwiXG4gICAgW2F0dHIuaWRdPVwiY2FsZW5kYXJJZFwiXG4gICAgW2NsYXNzLnNreS1kYXRlcGlja2VyLWhpZGRlbl09XCIhaXNWaXNpYmxlXCJcbiAgPlxuICAgIDxza3ktZGF0ZXBpY2tlci1jYWxlbmRhclxuICAgICAgY2RrVHJhcEZvY3VzXG4gICAgICBbY3VzdG9tRGF0ZXNdPVwiY3VzdG9tRGF0ZXNcIlxuICAgICAgW2lzRGF5cGlja2VyV2FpdGluZ109XCJpc0RheXBpY2tlcldhaXRpbmdcIlxuICAgICAgW21heERhdGVdPVwibWF4RGF0ZVwiXG4gICAgICBbbWluRGF0ZV09XCJtaW5EYXRlXCJcbiAgICAgIFtzdGFydEF0RGF0ZV09XCJzdGFydEF0RGF0ZVwiXG4gICAgICBbc3RhcnRpbmdEYXldPVwic3RhcnRpbmdEYXlcIlxuICAgICAgKGNhbGVuZGFyRGF0ZVJhbmdlQ2hhbmdlKT1cIm9uQ2FsZW5kYXJEYXRlUmFuZ2VDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAoY2FsZW5kYXJNb2RlQ2hhbmdlKT1cIm9uQ2FsZW5kYXJNb2RlQ2hhbmdlKClcIlxuICAgICAgKHNlbGVjdGVkRGF0ZUNoYW5nZSk9XCJvblNlbGVjdGVkRGF0ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAvPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=","import { Directive, HostListener, Input, Optional, forwardRef, inject, } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR, } from '@angular/forms';\nimport moment from 'moment';\nimport { Subject } from 'rxjs';\nimport { distinctUntilChanged, takeUntil } from 'rxjs/operators';\nimport { SkyDateFormatter } from './date-formatter';\nimport { SkyDatepickerHostService } from './datepicker-host.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"./datepicker-config.service\";\nimport * as i2 from \"@skyux/i18n\";\nimport * as i3 from \"./datepicker.component\";\nconst SKY_DATEPICKER_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SkyDatepickerInputDirective),\n multi: true,\n};\nconst SKY_DATEPICKER_VALIDATOR = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => SkyDatepickerInputDirective),\n multi: true,\n};\nexport class SkyDatepickerInputDirective {\n /**\n * The date format for the input. Place this attribute on the `input` element\n * to override the default in the `SkyDatepickerConfigService`.\n * @default \"MM/DD/YYYY\"\n */\n set dateFormat(value) {\n /* istanbul ignore else */\n if (value !== this.#_dateFormat) {\n this.#_dateFormat = value;\n this.#applyDateFormat();\n }\n }\n // TODO: Refactor to not have getter logic\n get dateFormat() {\n return (this.#_dateFormat ||\n this.#configService.dateFormat ||\n this.#preferredShortDateFormat);\n }\n /**\n * Whether to disable the datepicker on template-driven forms. Don't use this input on reactive forms because they may overwrite the input or leave the control out of sync.\n * To set the disabled state on reactive forms, use the `FormControl` instead.\n * @default false\n */\n set disabled(value) {\n this.#_disabled = value || false;\n this.#datepickerComponent.disabled = value;\n this.#renderer.setProperty(this.#elementRef.nativeElement, 'disabled', value);\n }\n get disabled() {\n return this.#_disabled;\n }\n /**\n * The latest date that is available in the calendar. Place this attribute on\n * the `input` element to override the default in `SkyDatepickerConfigService`.\n */\n set maxDate(value) {\n this.#_maxDate = value;\n this.#datepickerComponent.maxDate = this.maxDate;\n this.#onValidatorChange();\n }\n // TODO: Refactor to not have getter logic\n get maxDate() {\n return this.#_maxDate || this.#configService.maxDate;\n }\n /**\n * The earliest date that is available in the calendar. Place this attribute on\n * the `input` element to override the default in `SkyDatepickerConfigService`. To avoid validation errors, the time associated with the minimum date must be midnight. This is necessary because the datepicker automatically sets the time on the `Date` object for selected dates to midnight in the current user's time zone.\n */\n set minDate(value) {\n this.#_minDate = value;\n this.#datepickerComponent.minDate = this.minDate;\n this.#onValidatorChange();\n }\n // TODO: Refactor to not have getter logic\n get minDate() {\n return this.#_minDate || this.#configService.minDate;\n }\n /**\n * The date to open the calendar to initially. Place this attribute on the `input` element to override the default in `SkyDatepickerConfigService`.\n * @default The current date\n */\n set startAtDate(value) {\n this.#_startAtDate = value;\n this.#datepickerComponent.startAtDate = this.startAtDate;\n }\n // TODO: Refactor to not have getter logic\n get startAtDate() {\n return this.#_startAtDate || this.#configService.startAtDate;\n }\n /**\n * Creates the datepicker input and calendar. Place this directive on an `input` element,\n * and wrap the input in a `sky-datepicker` component. The value that users select is driven\n * through the `ngModel` attribute specified on the `input` element.\n * @required\n */\n set skyDatepickerInput(value) {\n if (value) {\n console.warn('[Deprecation warning] You no longer need to provide a template reference variable ' +\n 'to the `skyDatepickerInput` attribute (this will be a breaking change in the next ' +\n 'major version release).\\n' +\n 'Do this instead:\\n' +\n '<sky-datepicker>\\n <input skyDatepickerInput />\\n</sky-datepicker>');\n }\n }\n /**\n * The starting day of the week in the calendar, where `0` sets the starting day\n * to Sunday. Place this attribute on the `input` element to override the default\n * in `SkyDatepickerConfigService`.\n * @default 0\n */\n set startingDay(value) {\n this.#_startingDay = value;\n this.#datepickerComponent.startingDay = this.startingDay;\n this.#onValidatorChange();\n }\n // TODO: Refactor to not have getter logic\n get startingDay() {\n return this.#_startingDay || this.#configService.startingDay;\n }\n /**\n * Whether the format of the date value must match the format from the `dateFormat` value.\n * If this property is `true` and the datepicker input directive cannot find an exact match, then\n * the input is marked as invalid.\n * If this property is `false` and the datepicker input directive cannot find an exact match, then\n * it attempts to format the string based on the [ISO 8601 standard format](https://www.iso.org/iso-8601-date-and-time-format.html).\n * @default false\n */\n set strict(value) {\n this.#_strict = value || false;\n }\n get strict() {\n return this.#_strict;\n }\n get #value() {\n return this.#_value;\n }\n set #value(value) {\n this.#updateValue(value);\n }\n #control;\n #dateFormatter;\n #preferredShortDateFormat;\n #ngUnsubscribe;\n #notifyTouched;\n #_dateFormat;\n #_disabled;\n #_maxDate;\n #_minDate;\n #_startAtDate;\n #_startingDay;\n #_strict;\n #_value;\n #changeDetector;\n #configService;\n #elementRef;\n #localeProvider;\n #renderer;\n #datepickerComponent;\n #datepickerHostSvc;\n constructor(changeDetector, configService, elementRef, localeProvider, renderer, datepickerComponent) {\n /**\n * Whether to disable date validation on the datepicker input.\n * @default false\n */\n this.skyDatepickerNoValidate = false;\n this.#dateFormatter = new SkyDateFormatter();\n this.#ngUnsubscribe = new Subject();\n this.#_disabled = false;\n this.#_strict = false;\n this.#datepickerHostSvc = inject(SkyDatepickerHostService, {\n optional: true,\n });\n // istanbul ignore next\n this.#onChange = (_) => { };\n // istanbul ignore next\n this.#onValidatorChange = () => { };\n if (!datepickerComponent) {\n throw new Error('You must wrap the `skyDatepickerInput` directive within a ' +\n '`<sky-datepicker>` component!');\n }\n this.#changeDetector = changeDetector;\n this.#configService = configService;\n this.#elementRef = elementRef;\n this.#localeProvider = localeProvider;\n this.#renderer = renderer;\n this.#datepickerComponent = datepickerComponent;\n this.#localeProvider\n .getLocaleInfo()\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((localeInfo) => {\n SkyDateFormatter.setLocale(localeInfo.locale);\n this.#preferredShortDateFormat =\n SkyDateFormatter.getPreferredShortDateFormat();\n this.#applyDateFormat();\n });\n this.#datepickerHostSvc?.focusout\n .pipe(takeUntilDestroyed())\n .subscribe((evt) => {\n const isFocusingInput = evt.relatedTarget === this.#elementRef.nativeElement;\n if (!isFocusingInput) {\n this.#notifyTouched?.();\n }\n });\n }\n ngOnInit() {\n const element = this.#elementRef.nativeElement;\n this.#renderer.addClass(element, 'sky-form-control');\n }\n ngAfterContentInit() {\n this.#datepickerComponent.dateFormat = this.dateFormat;\n this.#datepickerComponent.dateChange\n .pipe(distinctUntilChanged())\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((value) => {\n this.#value = value;\n });\n }\n ngAfterViewInit() {\n // This is needed to address a bug in Angular 4.\n // When a control value is set initially, its value is not represented on the view.\n // See: https://github.com/angular/angular/issues/13792\n // Of note is the parent check which allows us to determine if the form is reactive.\n // Without this check there is a changed before checked error\n /* istanbul ignore else */\n if (this.#control && this.#control.parent) {\n setTimeout(() => {\n this.#control?.setValue(this.#value, {\n emitEvent: false,\n });\n this.#changeDetector.markForCheck();\n });\n }\n }\n ngOnDestroy() {\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n }\n onInputChange(event) {\n const value = event.target.value;\n if (this.skyDatepickerNoValidate) {\n this.#onValueChange(value);\n return;\n }\n // Don't try to parse the string value into a Date value if it is malformed.\n if (this.#isDateStringValid(value)) {\n this.#onValueChange(value);\n return;\n }\n this.#_value = value;\n this.#onChange(value);\n this.#control?.setErrors({\n skyDate: {\n invalid: value,\n },\n });\n }\n onInput() {\n this.#control?.markAsDirty();\n }\n writeValue(value) {\n this.#updateValue(value, false);\n }\n validate(control) {\n if (!this.#control) {\n this.#control = control;\n // Account for any date conversion that may have occurred prior to validation.\n if (this.#control.value !== this.#value) {\n this.#control.patchValue(this.#value, { emitEvent: false });\n }\n }\n if (this.skyDatepickerNoValidate) {\n return null;\n }\n const value = control.value;\n if (!value) {\n return null;\n }\n if (value instanceof Date) {\n const isDateValid = this.#dateFormatter.dateIsValid(value);\n if (!isDateValid) {\n // Mark the invalid control as touched so that the input's invalid CSS styles appear.\n // (This is only required when the invalid value is set by the FormControl constructor.)\n this.#control.markAsTouched();\n return {\n skyDate: {\n invalid: value,\n },\n };\n }\n const minDate = this.minDate;\n if (minDate &&\n this.#dateFormatter.dateIsValid(minDate) &&\n value < minDate) {\n return {\n skyDate: {\n minDate,\n minDateFormatted: this.#dateFormatter.format(minDate, this.dateFormat),\n },\n };\n }\n const maxDate = this.maxDate;\n if (maxDate &&\n this.#dateFormatter.dateIsValid(maxDate) &&\n value > maxDate) {\n return {\n skyDate: {\n maxDate,\n maxDateFormatted: this.#dateFormatter.format(maxDate, this.dateFormat),\n },\n };\n }\n }\n else {\n // Mark the invalid control as touched so that the input's invalid CSS styles appear.\n // (This is only required when the invalid value is set by the FormControl constructor.)\n this.#control.markAsTouched();\n return {\n skyDate: {\n invalid: value,\n },\n };\n }\n return null;\n }\n registerOnChange(fn) {\n this.#onChange = fn;\n }\n registerOnTouched(fn) {\n this.#notifyTouched = fn;\n }\n registerOnValidatorChange(fn) {\n this.#onValidatorChange = fn;\n }\n setDisabledState(disabled) {\n this.disabled = disabled;\n this.#datepickerComponent.disabled = disabled;\n }\n /**\n * Detects changes to the underlying input element's value and updates the ngModel accordingly.\n * This is useful if you need to update the ngModel value before the input element loses focus.\n */\n detectInputValueChange() {\n this.#onValueChange(this.#elementRef.nativeElement.value);\n }\n onFocusout(evt) {\n if (!this.#datepickerHostSvc?.isFocusingDatepicker(evt)) {\n this.#notifyTouched?.();\n }\n }\n #applyDateFormat() {\n this.#datepickerComponent.dateFormat = this.dateFormat;\n if (this.#value) {\n const formattedDate = this.#dateFormatter.format(this.#value, this.dateFormat);\n this.#setInputElementValue(formattedDate);\n this.#changeDetector.markForCheck();\n }\n }\n #onValueChange(newValue) {\n this.#value = newValue;\n }\n #setInputElementValue(value) {\n this.#renderer.setProperty(this.#elementRef.nativeElement, 'value', value);\n }\n /**\n * Gets the date value from a value - if possible.\n * Will not convert unconvertible dates or numbers outside of the current month's number of days.\n * Returns `undefined` if the value can not be converted.\n */\n #getDateValue(value) {\n if (value instanceof Date) {\n return value;\n }\n else if (typeof value === 'string') {\n return this.#getShortcutOrDateValue(value);\n }\n return undefined;\n }\n /**\n * Converts a string to a date object if the string is a valid date string.\n * It will also convert numeric input to a date if that number is within the current month's number of days.\n * If the string can not be converted, `undefined` be returned.\n */\n #getShortcutOrDateValue(value) {\n const num = Number(value);\n if (Number.isInteger(num)) {\n // We require 8 digits in order to know that we have all information needed to determine what part of the number is the month (2), day (2), and year (4).\n if (value.length === 8) {\n const regex = new RegExp(/\\b(MM)\\b|\\b(DD)\\b|\\b(YY)\\b|\\b(YYYY)\\b/, 'g');\n const formatTokensOnly = this.dateFormat\n ?.match(regex)\n ?.join('')\n .replace(new RegExp(/Y+/), 'YYYY');\n if (formatTokensOnly && formatTokensOnly.length === 8) {\n const date = this.#dateFormatter.getDateFromString(value, formatTokensOnly, true);\n if (this.#dateFormatter.dateIsValid(date)) {\n return date;\n }\n }\n }\n const now = new Date();\n const shortcutDate = new Date(now.getFullYear(), now.getMonth(), num);\n const daysInMonth = shortcutDate.getDate();\n if (num > 0 && num <= daysInMonth) {\n return shortcutDate;\n }\n }\n else {\n const date = this.#dateFormatter.getDateFromString(value, this.dateFormat, this.strict);\n if (this.#dateFormatter.dateIsValid(date)) {\n return date;\n }\n }\n return undefined;\n }\n /**\n * Validates the input value to ensure it is formatted correctly.\n */\n #isDateStringValid(value) {\n if (!value || typeof value !== 'string') {\n return true;\n }\n // Does the value only include digits, dashes, or slashes?\n const regexp = /^[\\d/-]+$/;\n const isValid = regexp.test(value);\n if (isValid) {\n return true;\n }\n return moment(value).isValid();\n }\n // istanbul ignore next\n #onChange;\n // istanbul ignore next\n #onValidatorChange;\n /**\n * Update the value of the form control and input element\n * @param emitEvent Denotes if we emit an event to the consumer's form control. We do not want to do this if the value is being updated via a `setValue` call or a `patchValue` call as this is already handled by Angular.\n * In these cases we do not want to fire `onChange` as it will cause extra `valueChange` and `statusChange` events and the status of the form should not be affected by these changes.\n */\n #updateValue(value, emitEvent = true) {\n if (this.#_value === value) {\n return;\n }\n const isValidDateString = this.#isDateStringValid(value);\n // If the string value supplied is malformed, do not set the value to its Date equivalent.\n // (JavaScript's Date parser will convert poorly formatted dates to Date objects, such as \"abc 123\", which isn't ideal.)\n if (!isValidDateString) {\n this.#_value = value;\n if (emitEvent) {\n this.#onChange(this.#_value);\n }\n else {\n this.#control?.setValue(this.#_value, { emitEvent: false });\n }\n this.#datepickerComponent.selectedDate = this.#_value;\n this.#setInputElementValue(value);\n }\n else {\n // This value represents the date value for the input if possible.\n // This value will take into account all shortcut functionality.\n const dateValue = this.#getDateValue(value);\n const areDatesEqual = this.#_value instanceof Date &&\n dateValue &&\n dateValue.getTime() === this.#_value.getTime();\n if (dateValue !== this.#_value || !areDatesEqual) {\n this.#_value = dateValue || value;\n if (emitEvent) {\n this.#onChange(this.#_value);\n }\n else {\n this.#control?.setValue(this.#_value, { emitEvent: false });\n }\n this.#datepickerComponent.selectedDate = this.#_value;\n }\n if (dateValue) {\n const formattedDateString = this.#dateFormatter.format(dateValue, this.dateFormat);\n this.#setInputElementValue(formattedDateString);\n }\n else {\n this.#setInputElementValue(value || '');\n }\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDatepickerInputDirective, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.SkyDatepickerConfigService }, { token: i0.ElementRef }, { token: i2.SkyAppLocaleProvider }, { token: i0.Renderer2 }, { token: i3.SkyDatepickerComponent, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.0.5\", type: SkyDatepickerInputDirective, isStandalone: true, selector: \"[skyDatepickerInput]\", inputs: { dateFormat: \"dateFormat\", disabled: \"disabled\", maxDate: \"maxDate\", minDate: \"minDate\", startAtDate: \"startAtDate\", skyDatepickerInput: \"skyDatepickerInput\", skyDatepickerNoValidate: \"skyDatepickerNoValidate\", startingDay: \"startingDay\", strict: \"strict\" }, host: { listeners: { \"focusout\": \"onFocusout($event)\", \"change\": \"onInputChange($event)\", \"input\": \"onInput()\" } }, providers: [SKY_DATEPICKER_VALUE_ACCESSOR, SKY_DATEPICKER_VALIDATOR], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDatepickerInputDirective, decorators: [{\n type: Directive,\n args: [{\n host: {\n '(focusout)': 'onFocusout($event)',\n },\n providers: [SKY_DATEPICKER_VALUE_ACCESSOR, SKY_DATEPICKER_VALIDATOR],\n selector: '[skyDatepickerInput]',\n standalone: true,\n }]\n }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.SkyDatepickerConfigService }, { type: i0.ElementRef }, { type: i2.SkyAppLocaleProvider }, { type: i0.Renderer2 }, { type: i3.SkyDatepickerComponent, decorators: [{\n type: Optional\n }] }], propDecorators: { dateFormat: [{\n type: Input\n }], disabled: [{\n type: Input\n }], maxDate: [{\n type: Input\n }], minDate: [{\n type: Input\n }], startAtDate: [{\n type: Input\n }], skyDatepickerInput: [{\n type: Input\n }], skyDatepickerNoValidate: [{\n type: Input\n }], startingDay: [{\n type: Input\n }], strict: [{\n type: Input\n }], onInputChange: [{\n type: HostListener,\n args: ['change', ['$event']]\n }], onInput: [{\n type: HostListener,\n args: ['input']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci1pbnB1dC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci1pbnB1dC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUlMLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUdMLFFBQVEsRUFFUixVQUFVLEVBQ1YsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFHTCxhQUFhLEVBQ2IsaUJBQWlCLEdBR2xCLE1BQU0sZ0JBQWdCLENBQUM7QUFHeEIsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWpFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXBELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7OztBQUdyRSxNQUFNLDZCQUE2QixHQUFHO0lBQ3BDLE9BQU8sRUFBRSxpQkFBaUI7SUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQztJQUMxRCxLQUFLLEVBQUUsSUFBSTtDQUNaLENBQUM7QUFFRixNQUFNLHdCQUF3QixHQUFHO0lBQy9CLE9BQU8sRUFBRSxhQUFhO0lBQ3RCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsMkJBQTJCLENBQUM7SUFDMUQsS0FBSyxFQUFFLElBQUk7Q0FDWixDQUFDO0FBVUYsTUFBTSxPQUFPLDJCQUEy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RG5CLFlBQVk7dUJBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQTBCM0IsT0FBTztzQkFEYixZQUFZO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIFJlbmRlcmVyMixcbiAgZm9yd2FyZFJlZixcbiAgaW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7XG4gIEFic3RyYWN0Q29udHJvbCxcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gIE5HX1ZBTElEQVRPUlMsXG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxuICBWYWxpZGF0aW9uRXJyb3JzLFxuICBWYWxpZGF0b3IsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFNreUFwcExvY2FsZVByb3ZpZGVyIH0gZnJvbSAnQHNreXV4L2kxOG4nO1xuXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBTa3lEYXRlRm9ybWF0dGVyIH0gZnJvbSAnLi9kYXRlLWZvcm1hdHRlcic7XG5pbXBvcnQgeyBTa3lEYXRlcGlja2VyQ29uZmlnU2VydmljZSB9IGZyb20gJy4vZGF0ZXBpY2tlci1jb25maWcuc2VydmljZSc7XG5pbXBvcnQgeyBTa3lEYXRlcGlja2VySG9zdFNlcnZpY2UgfSBmcm9tICcuL2RhdGVwaWNrZXItaG9zdC5zZXJ2aWNlJztcbmltcG9ydCB7IFNreURhdGVwaWNrZXJDb21wb25lbnQgfSBmcm9tICcuL2RhdGVwaWNrZXIuY29tcG9uZW50JztcblxuY29uc3QgU0tZX0RBVEVQSUNLRVJfVkFMVUVfQUNDRVNTT1IgPSB7XG4gIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBTa3lEYXRlcGlja2VySW5wdXREaXJlY3RpdmUpLFxuICBtdWx0aTogdHJ1ZSxcbn07XG5cbmNvbnN0IFNLWV9EQVRFUElDS0VSX1ZBTElEQVRPUiA9IHtcbiAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gU2t5RGF0ZXBpY2tlcklucHV0RGlyZWN0aXZlKSxcbiAgbXVsdGk6IHRydWUsXG59O1xuXG5ARGlyZWN0aXZlKHtcbiAgaG9zdDoge1xuICAgICcoZm9jdXNvdXQpJzogJ29uRm9jdXNvdXQoJGV2ZW50KScsXG4gIH0sXG4gIHByb3ZpZGVyczogW1NLWV9EQVRFUElDS0VSX1ZBTFVFX0FDQ0VTU09SLCBTS1lfREFURVBJQ0tFUl9WQUxJREFUT1JdLFxuICBzZWxlY3RvcjogJ1tza3lEYXRlcGlja2VySW5wdXRdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5RGF0ZXBpY2tlcklucHV0RGlyZWN0aXZlXG4gIGltcGxlbWVudHNcbiAgICBPbkluaXQsXG4gICAgT25EZXN0cm95LFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgICBWYWxpZGF0b3JcbntcbiAgLyoqXG4gICAqIFRoZSBkYXRlIGZvcm1hdCBmb3IgdGhlIGlucHV0LiBQbGFjZSB0aGlzIGF0dHJpYnV0ZSBvbiB0aGUgYGlucHV0YCBlbGVtZW50XG4gICAqIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGluIHRoZSBgU2t5RGF0ZXBpY2tlckNvbmZpZ1NlcnZpY2VgLlxuICAgKiBAZGVmYXVsdCBcIk1NL0REL1lZWVlcIlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBkYXRlRm9ybWF0KHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICh2YWx1ZSAhPT0gdGhpcy4jX2RhdGVGb3JtYXQpIHtcbiAgICAgIHRoaXMuI19kYXRlRm9ybWF0ID0gdmFsdWU7XG4gICAgICB0aGlzLiNhcHBseURhdGVGb3JtYXQoKTtcbiAgICB9XG4gIH1cblxuICAvLyBUT0RPOiBSZWZhY3RvciB0byBub3QgaGF2ZSBnZXR0ZXIgbG9naWNcbiAgcHVibGljIGdldCBkYXRlRm9ybWF0KCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuI19kYXRlRm9ybWF0IHx8XG4gICAgICB0aGlzLiNjb25maWdTZXJ2aWNlLmRhdGVGb3JtYXQgfHxcbiAgICAgIHRoaXMuI3ByZWZlcnJlZFNob3J0RGF0ZUZvcm1hdFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0byBkaXNhYmxlIHRoZSBkYXRlcGlja2VyIG9uIHRlbXBsYXRlLWRyaXZlbiBmb3Jtcy4gRG9uJ3QgdXNlIHRoaXMgaW5wdXQgb24gcmVhY3RpdmUgZm9ybXMgYmVjYXVzZSB0aGV5IG1heSBvdmVyd3JpdGUgdGhlIGlucHV0IG9yIGxlYXZlIHRoZSBjb250cm9sIG91dCBvZiBzeW5jLlxuICAgKiBUbyBzZXQgdGhlIGRpc2FibGVkIHN0YXRlIG9uIHJlYWN0aXZlIGZvcm1zLCB1c2UgdGhlIGBGb3JtQ29udHJvbGAgaW5zdGVhZC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfZGlzYWJsZWQgPSB2YWx1ZSB8fCBmYWxzZTtcbiAgICB0aGlzLiNkYXRlcGlja2VyQ29tcG9uZW50LmRpc2FibGVkID0gdmFsdWU7XG4gICAgdGhpcy4jcmVuZGVyZXIuc2V0UHJvcGVydHkoXG4gICAgICB0aGlzLiNlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAnZGlzYWJsZWQnLFxuICAgICAgdmFsdWUsXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuI19kaXNhYmxlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgbGF0ZXN0IGRhdGUgdGhhdCBpcyBhdmFpbGFibGUgaW4gdGhlIGNhbGVuZGFyLiBQbGFjZSB0aGlzIGF0dHJpYnV0ZSBvblxuICAgKiB0aGUgYGlucHV0YCBlbGVtZW50IHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGluIGBTa3lEYXRlcGlja2VyQ29uZmlnU2VydmljZWAuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IG1heERhdGUodmFsdWU6IERhdGUgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfbWF4RGF0ZSA9IHZhbHVlO1xuICAgIHRoaXMuI2RhdGVwaWNrZXJDb21wb25lbnQubWF4RGF0ZSA9IHRoaXMubWF4RGF0ZTtcblxuICAgIHRoaXMuI29uVmFsaWRhdG9yQ2hhbmdlKCk7XG4gIH1cblxuICAvLyBUT0RPOiBSZWZhY3RvciB0byBub3QgaGF2ZSBnZXR0ZXIgbG9naWNcbiAgcHVibGljIGdldCBtYXhEYXRlKCk6IERhdGUgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLiNfbWF4RGF0ZSB8fCB0aGlzLiNjb25maWdTZXJ2aWNlLm1heERhdGU7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGVhcmxpZXN0IGRhdGUgdGhhdCBpcyBhdmFpbGFibGUgaW4gdGhlIGNhbGVuZGFyLiBQbGFjZSB0aGlzIGF0dHJpYnV0ZSBvblxuICAgKiB0aGUgYGlucHV0YCBlbGVtZW50IHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGluIGBTa3lEYXRlcGlja2VyQ29uZmlnU2VydmljZWAuIFRvIGF2b2lkIHZhbGlkYXRpb24gZXJyb3JzLCB0aGUgdGltZSBhc3NvY2lhdGVkIHdpdGggdGhlIG1pbmltdW0gZGF0ZSBtdXN0IGJlIG1pZG5pZ2h0LiBUaGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIHRoZSBkYXRlcGlja2VyIGF1dG9tYXRpY2FsbHkgc2V0cyB0aGUgdGltZSBvbiB0aGUgYERhdGVgIG9iamVjdCBmb3Igc2VsZWN0ZWQgZGF0ZXMgdG8gbWlkbmlnaHQgaW4gdGhlIGN1cnJlbnQgdXNlcidzIHRpbWUgem9uZS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgbWluRGF0ZSh2YWx1ZTogRGF0ZSB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19taW5EYXRlID0gdmFsdWU7XG4gICAgdGhpcy4jZGF0ZXBpY2tlckNvbXBvbmVudC5taW5EYXRlID0gdGhpcy5taW5EYXRlO1xuXG4gICAgdGhpcy4jb25WYWxpZGF0b3JDaGFuZ2UoKTtcbiAgfVxuXG4gIC8vIFRPRE86IFJlZmFjdG9yIHRvIG5vdCBoYXZlIGdldHRlciBsb2dpY1xuICBwdWJsaWMgZ2V0IG1pbkRhdGUoKTogRGF0ZSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI19taW5EYXRlIHx8IHRoaXMuI2NvbmZpZ1NlcnZpY2UubWluRGF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgZGF0ZSB0byBvcGVuIHRoZSBjYWxlbmRhciB0byBpbml0aWFsbHkuIFBsYWNlIHRoaXMgYXR0cmlidXRlIG9uIHRoZSBgaW5wdXRgIGVsZW1lbnQgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgaW4gYFNreURhdGVwaWNrZXJDb25maWdTZXJ2aWNlYC5cbiAgICogQGRlZmF1bHQgVGhlIGN1cnJlbnQgZGF0ZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBzdGFydEF0RGF0ZSh2YWx1ZTogRGF0ZSB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19zdGFydEF0RGF0ZSA9IHZhbHVlO1xuICAgIHRoaXMuI2RhdGVwaWNrZXJDb21wb25lbnQuc3RhcnRBdERhdGUgPSB0aGlzLnN0YXJ0QXREYXRlO1xuICB9XG5cbiAgLy8gVE9ETzogUmVmYWN0b3IgdG8gbm90IGhhdmUgZ2V0dGVyIGxvZ2ljXG4gIHB1YmxpYyBnZXQgc3RhcnRBdERhdGUoKTogRGF0ZSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI19zdGFydEF0RGF0ZSB8fCB0aGlzLiNjb25maWdTZXJ2aWNlLnN0YXJ0QXREYXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgdGhlIGRhdGVwaWNrZXIgaW5wdXQgYW5kIGNhbGVuZGFyLiBQbGFjZSB0aGlzIGRpcmVjdGl2ZSBvbiBhbiBgaW5wdXRgIGVsZW1lbnQsXG4gICAqIGFuZCB3cmFwIHRoZSBpbnB1dCBpbiBhIGBza3ktZGF0ZXBpY2tlcmAgY29tcG9uZW50LiBUaGUgdmFsdWUgdGhhdCB1c2VycyBzZWxlY3QgaXMgZHJpdmVuXG4gICAqIHRocm91Z2ggdGhlIGBuZ01vZGVsYCBhdHRyaWJ1dGUgc3BlY2lmaWVkIG9uIHRoZSBgaW5wdXRgIGVsZW1lbnQuXG4gICAqIEByZXF1aXJlZFxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBza3lEYXRlcGlja2VySW5wdXQoXG4gICAgdmFsdWU6IFNreURhdGVwaWNrZXJDb21wb25lbnQgfCB1bmRlZmluZWQgfCAnJyxcbiAgKSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICdbRGVwcmVjYXRpb24gd2FybmluZ10gWW91IG5vIGxvbmdlciBuZWVkIHRvIHByb3ZpZGUgYSB0ZW1wbGF0ZSByZWZlcmVuY2UgdmFyaWFibGUgJyArXG4gICAgICAgICAgJ3RvIHRoZSBgc2t5RGF0ZXBpY2tlcklucHV0YCBhdHRyaWJ1dGUgKHRoaXMgd2lsbCBiZSBhIGJyZWFraW5nIGNoYW5nZSBpbiB0aGUgbmV4dCAnICtcbiAgICAgICAgICAnbWFqb3IgdmVyc2lvbiByZWxlYXNlKS5cXG4nICtcbiAgICAgICAgICAnRG8gdGhpcyBpbnN0ZWFkOlxcbicgK1xuICAgICAgICAgICc8c2t5LWRhdGVwaWNrZXI+XFxuICA8aW5wdXQgc2t5RGF0ZXBpY2tlcklucHV0IC8+XFxuPC9za3ktZGF0ZXBpY2tlcj4nLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0byBkaXNhYmxlIGRhdGUgdmFsaWRhdGlvbiBvbiB0aGUgZGF0ZXBpY2tlciBpbnB1dC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBza3lEYXRlcGlja2VyTm9WYWxpZGF0ZTogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBUaGUgc3RhcnRpbmcgZGF5IG9mIHRoZSB3ZWVrIGluIHRoZSBjYWxlbmRhciwgd2hlcmUgYDBgIHNldHMgdGhlIHN0YXJ0aW5nIGRheVxuICAgKiB0byBTdW5kYXkuIFBsYWNlIHRoaXMgYXR0cmlidXRlIG9uIHRoZSBgaW5wdXRgIGVsZW1lbnQgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHRcbiAgICogaW4gYFNreURhdGVwaWNrZXJDb25maWdTZXJ2aWNlYC5cbiAgICogQGRlZmF1bHQgMFxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBzdGFydGluZ0RheSh2YWx1ZTogbnVtYmVyIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX3N0YXJ0aW5nRGF5ID0gdmFsdWU7XG4gICAgdGhpcy4jZGF0ZXBpY2tlckNvbXBvbmVudC5zdGFydGluZ0RheSA9IHRoaXMuc3RhcnRpbmdEYXk7XG5cbiAgICB0aGlzLiNvblZhbGlkYXRvckNoYW5nZSgpO1xuICB9XG5cbiAgLy8gVE9ETzogUmVmYWN0b3IgdG8gbm90IGhhdmUgZ2V0dGVyIGxvZ2ljXG4gIHB1YmxpYyBnZXQgc3RhcnRpbmdEYXkoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy4jX3N0YXJ0aW5nRGF5IHx8IHRoaXMuI2NvbmZpZ1NlcnZpY2Uuc3RhcnRpbmdEYXk7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgZm9ybWF0IG9mIHRoZSBkYXRlIHZhbHVlIG11c3QgbWF0Y2ggdGhlIGZvcm1hdCBmcm9tIHRoZSBgZGF0ZUZvcm1hdGAgdmFsdWUuXG4gICAqIElmIHRoaXMgcHJvcGVydHkgaXMgYHRydWVgIGFuZCB0aGUgZGF0ZXBpY2tlciBpbnB1dCBkaXJlY3RpdmUgY2Fubm90IGZpbmQgYW4gZXhhY3QgbWF0Y2gsIHRoZW5cbiAgICogdGhlIGlucHV0IGlzIG1hcmtlZCBhcyBpbnZhbGlkLlxuICAgKiBJZiB0aGlzIHByb3BlcnR5IGlzIGBmYWxzZWAgYW5kIHRoZSBkYXRlcGlja2VyIGlucHV0IGRpcmVjdGl2ZSBjYW5ub3QgZmluZCBhbiBleGFjdCBtYXRjaCwgdGhlblxuICAgKiBpdCBhdHRlbXB0cyB0byBmb3JtYXQgdGhlIHN0cmluZyBiYXNlZCBvbiB0aGUgW0lTTyA4NjAxIHN0YW5kYXJkIGZvcm1hdF0oaHR0cHM6Ly93d3cuaXNvLm9yZy9pc28tODYwMS1kYXRlLWFuZC10aW1lLWZvcm1hdC5odG1sKS5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgc3RyaWN0KHZhbHVlOiBib29sZWFuIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX3N0cmljdCA9IHZhbHVlIHx8IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIGdldCBzdHJpY3QoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuI19zdHJpY3Q7XG4gIH1cblxuICBnZXQgI3ZhbHVlKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuI192YWx1ZTtcbiAgfVxuXG4gIHNldCAjdmFsdWUodmFsdWU6IGFueSkge1xuICAgIHRoaXMuI3VwZGF0ZVZhbHVlKHZhbHVlKTtcbiAgfVxuXG4gICNjb250cm9sOiBBYnN0cmFjdENvbnRyb2wgfCB1bmRlZmluZWQ7XG4gICNkYXRlRm9ybWF0dGVyID0gbmV3IFNreURhdGVGb3JtYXR0ZXIoKTtcbiAgI3ByZWZlcnJlZFNob3J0RGF0ZUZvcm1hdDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAjbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICNub3RpZnlUb3VjaGVkOiAoKCkgPT4gdm9pZCkgfCB1bmRlZmluZWQ7XG5cbiAgI19kYXRlRm9ybWF0OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICNfZGlzYWJsZWQgPSBmYWxzZTtcbiAgI19tYXhEYXRlOiBEYXRlIHwgdW5kZWZpbmVkO1xuICAjX21pbkRhdGU6IERhdGUgfCB1bmRlZmluZWQ7XG4gICNfc3RhcnRBdERhdGU6IERhdGUgfCB1bmRlZmluZWQ7XG4gICNfc3RhcnRpbmdEYXk6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgI19zdHJpY3QgPSBmYWxzZTtcbiAgI192YWx1ZTogYW55O1xuXG4gICNjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWY7XG4gICNjb25maWdTZXJ2aWNlOiBTa3lEYXRlcGlja2VyQ29uZmlnU2VydmljZTtcbiAgI2VsZW1lbnRSZWY6IEVsZW1lbnRSZWY7XG4gICNsb2NhbGVQcm92aWRlcjogU2t5QXBwTG9jYWxlUHJvdmlkZXI7XG4gICNyZW5kZXJlcjogUmVuZGVyZXIyO1xuICAjZGF0ZXBpY2tlckNvbXBvbmVudDogU2t5RGF0ZXBpY2tlckNvbXBvbmVudDtcblxuICByZWFkb25seSAjZGF0ZXBpY2tlckhvc3RTdmMgPSBpbmplY3QoU2t5RGF0ZXBpY2tlckhvc3RTZXJ2aWNlLCB7XG4gICAgb3B0aW9uYWw6IHRydWUsXG4gIH0pO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBjb25maWdTZXJ2aWNlOiBTa3lEYXRlcGlja2VyQ29uZmlnU2VydmljZSxcbiAgICBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIGxvY2FsZVByb3ZpZGVyOiBTa3lBcHBMb2NhbGVQcm92aWRlcixcbiAgICByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIEBPcHRpb25hbCgpIGRhdGVwaWNrZXJDb21wb25lbnQ/OiBTa3lEYXRlcGlja2VyQ29tcG9uZW50LFxuICApIHtcbiAgICBpZiAoIWRhdGVwaWNrZXJDb21wb25lbnQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ1lvdSBtdXN0IHdyYXAgdGhlIGBza3lEYXRlcGlja2VySW5wdXRgIGRpcmVjdGl2ZSB3aXRoaW4gYSAnICtcbiAgICAgICAgICAnYDxza3ktZGF0ZXBpY2tlcj5gIGNvbXBvbmVudCEnLFxuICAgICAgKTtcbiAgICB9XG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IgPSBjaGFuZ2VEZXRlY3RvcjtcbiAgICB0aGlzLiNjb25maWdTZXJ2aWNlID0gY29uZmlnU2VydmljZTtcbiAgICB0aGlzLiNlbGVtZW50UmVmID0gZWxlbWVudFJlZjtcbiAgICB0aGlzLiNsb2NhbGVQcm92aWRlciA9IGxvY2FsZVByb3ZpZGVyO1xuICAgIHRoaXMuI3JlbmRlcmVyID0gcmVuZGVyZXI7XG4gICAgdGhpcy4jZGF0ZXBpY2tlckNvbXBvbmVudCA9IGRhdGVwaWNrZXJDb21wb25lbnQ7XG5cbiAgICB0aGlzLiNsb2NhbGVQcm92aWRlclxuICAgICAgLmdldExvY2FsZUluZm8oKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgobG9jYWxlSW5mbykgPT4ge1xuICAgICAgICBTa3lEYXRlRm9ybWF0dGVyLnNldExvY2FsZShsb2NhbGVJbmZvLmxvY2FsZSk7XG4gICAgICAgIHRoaXMuI3ByZWZlcnJlZFNob3J0RGF0ZUZvcm1hdCA9XG4gICAgICAgICAgU2t5RGF0ZUZvcm1hdHRlci5nZXRQcmVmZXJyZWRTaG9ydERhdGVGb3JtYXQoKTtcbiAgICAgICAgdGhpcy4jYXBwbHlEYXRlRm9ybWF0KCk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuI2RhdGVwaWNrZXJIb3N0U3ZjPy5mb2N1c291dFxuICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpXG4gICAgICAuc3Vic2NyaWJlKChldnQpID0+IHtcbiAgICAgICAgY29uc3QgaXNGb2N1c2luZ0lucHV0ID1cbiAgICAgICAgICBldnQucmVsYXRlZFRhcmdldCA9PT0gdGhpcy4jZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuXG4gICAgICAgIGlmICghaXNGb2N1c2luZ0lucHV0KSB7XG4gICAgICAgICAgdGhpcy4jbm90aWZ5VG91Y2hlZD8uKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLiNlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICB0aGlzLiNyZW5kZXJlci5hZGRDbGFzcyhlbGVtZW50LCAnc2t5LWZvcm0tY29udHJvbCcpO1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLiNkYXRlcGlja2VyQ29tcG9uZW50LmRhdGVGb3JtYXQgPSB0aGlzLmRhdGVGb3JtYXQ7XG4gICAgdGhpcy4jZGF0ZXBpY2tlckNvbXBvbmVudC5kYXRlQ2hhbmdlXG4gICAgICAucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgdGhpcy4jdmFsdWUgPSB2YWx1ZTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAvLyBUaGlzIGlzIG5lZWRlZCB0byBhZGRyZXNzIGEgYnVnIGluIEFuZ3VsYXIgNC5cbiAgICAvLyBXaGVuIGEgY29udHJvbCB2YWx1ZSBpcyBzZXQgaW5pdGlhbGx5LCBpdHMgdmFsdWUgaXMgbm90IHJlcHJlc2VudGVkIG9uIHRoZSB2aWV3LlxuICAgIC8vIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvMTM3OTJcbiAgICAvLyBPZiBub3RlIGlzIHRoZSBwYXJlbnQgY2hlY2sgd2hpY2ggYWxsb3dzIHVzIHRvIGRldGVybWluZSBpZiB0aGUgZm9ybSBpcyByZWFjdGl2ZS5cbiAgICAvLyBXaXRob3V0IHRoaXMgY2hlY2sgdGhlcmUgaXMgYSBjaGFuZ2VkIGJlZm9yZSBjaGVja2VkIGVycm9yXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAodGhpcy4jY29udHJvbCAmJiB0aGlzLiNjb250cm9sLnBhcmVudCkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuI2NvbnRyb2w/LnNldFZhbHVlKHRoaXMuI3ZhbHVlLCB7XG4gICAgICAgICAgZW1pdEV2ZW50OiBmYWxzZSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignY2hhbmdlJywgWyckZXZlbnQnXSlcbiAgcHVibGljIG9uSW5wdXRDaGFuZ2UoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IHZhbHVlID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuXG4gICAgaWYgKHRoaXMuc2t5RGF0ZXBpY2tlck5vVmFsaWRhdGUpIHtcbiAgICAgIHRoaXMuI29uVmFsdWVDaGFuZ2UodmFsdWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIERvbid0IHRyeSB0byBwYXJzZSB0aGUgc3RyaW5nIHZhbHVlIGludG8gYSBEYXRlIHZhbHVlIGlmIGl0IGlzIG1hbGZvcm1lZC5cbiAgICBpZiAodGhpcy4jaXNEYXRlU3RyaW5nVmFsaWQodmFsdWUpKSB7XG4gICAgICB0aGlzLiNvblZhbHVlQ2hhbmdlKHZhbHVlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLiNfdmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLiNvbkNoYW5nZSh2YWx1ZSk7XG5cbiAgICB0aGlzLiNjb250cm9sPy5zZXRFcnJvcnMoe1xuICAgICAgc2t5RGF0ZToge1xuICAgICAgICBpbnZhbGlkOiB2YWx1ZSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdpbnB1dCcpXG4gIHB1YmxpYyBvbklucHV0KCk6IHZvaWQge1xuICAgIHRoaXMuI2NvbnRyb2w/Lm1hcmtBc0RpcnR5KCk7XG4gIH1cblxuICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy4jdXBkYXRlVmFsdWUodmFsdWUsIGZhbHNlKTtcbiAgfVxuXG4gIHB1YmxpYyB2YWxpZGF0ZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgaWYgKCF0aGlzLiNjb250cm9sKSB7XG4gICAgICB0aGlzLiNjb250cm9sID0gY29udHJvbDtcbiAgICAgIC8vIEFjY291bnQgZm9yIGFueSBkYXRlIGNvbnZlcnNpb24gdGhhdCBtYXkgaGF2ZSBvY2N1cnJlZCBwcmlvciB0byB2YWxpZGF0aW9uLlxuICAgICAgaWYgKHRoaXMuI2NvbnRyb2wudmFsdWUgIT09IHRoaXMuI3ZhbHVlKSB7XG4gICAgICAgIHRoaXMuI2NvbnRyb2wucGF0Y2hWYWx1ZSh0aGlzLiN2YWx1ZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLnNreURhdGVwaWNrZXJOb1ZhbGlkYXRlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCB2YWx1ZTogdW5rbm93biA9IGNvbnRyb2wudmFsdWU7XG5cbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICBjb25zdCBpc0RhdGVWYWxpZCA9IHRoaXMuI2RhdGVGb3JtYXR0ZXIuZGF0ZUlzVmFsaWQodmFsdWUpO1xuXG4gICAgICBpZiAoIWlzRGF0ZVZhbGlkKSB7XG4gICAgICAgIC8vIE1hcmsgdGhlIGludmFsaWQgY29udHJvbCBhcyB0b3VjaGVkIHNvIHRoYXQgdGhlIGlucHV0J3MgaW52YWxpZCBDU1Mgc3R5bGVzIGFwcGVhci5cbiAgICAgICAgLy8gKFRoaXMgaXMgb25seSByZXF1aXJlZCB3aGVuIHRoZSBpbnZhbGlkIHZhbHVlIGlzIHNldCBieSB0aGUgRm9ybUNvbnRyb2wgY29uc3RydWN0b3IuKVxuICAgICAgICB0aGlzLiNjb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHNreURhdGU6IHtcbiAgICAgICAgICAgIGludmFsaWQ6IHZhbHVlLFxuICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1pbkRhdGUgPSB0aGlzLm1pbkRhdGU7XG5cbiAgICAgIGlmIChcbiAgICAgICAgbWluRGF0ZSAmJlxuICAgICAgICB0aGlzLiNkYXRlRm9ybWF0dGVyLmRhdGVJc1ZhbGlkKG1pbkRhdGUpICYmXG4gICAgICAgIHZhbHVlIDwgbWluRGF0ZVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgc2t5RGF0ZToge1xuICAgICAgICAgICAgbWluRGF0ZSxcbiAgICAgICAgICAgIG1pbkRhdGVGb3JtYXR0ZWQ6IHRoaXMuI2RhdGVGb3JtYXR0ZXIuZm9ybWF0KFxuICAgICAgICAgICAgICBtaW5EYXRlLFxuICAgICAgICAgICAgICB0aGlzLmRhdGVGb3JtYXQsXG4gICAgICAgICAgICApLFxuICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1heERhdGUgPSB0aGlzLm1heERhdGU7XG5cbiAgICAgIGlmIChcbiAgICAgICAgbWF4RGF0ZSAmJlxuICAgICAgICB0aGlzLiNkYXRlRm9ybWF0dGVyLmRhdGVJc1ZhbGlkKG1heERhdGUpICYmXG4gICAgICAgIHZhbHVlID4gbWF4RGF0ZVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgc2t5RGF0ZToge1xuICAgICAgICAgICAgbWF4RGF0ZSxcbiAgICAgICAgICAgIG1heERhdGVGb3JtYXR0ZWQ6IHRoaXMuI2RhdGVGb3JtYXR0ZXIuZm9ybWF0KFxuICAgICAgICAgICAgICBtYXhEYXRlLFxuICAgICAgICAgICAgICB0aGlzLmRhdGVGb3JtYXQsXG4gICAgICAgICAgICApLFxuICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIE1hcmsgdGhlIGludmFsaWQgY29udHJvbCBhcyB0b3VjaGVkIHNvIHRoYXQgdGhlIGlucHV0J3MgaW52YWxpZCBDU1Mgc3R5bGVzIGFwcGVhci5cbiAgICAgIC8vIChUaGlzIGlzIG9ubHkgcmVxdWlyZWQgd2hlbiB0aGUgaW52YWxpZCB2YWx1ZSBpcyBzZXQgYnkgdGhlIEZvcm1Db250cm9sIGNvbnN0cnVjdG9yLilcbiAgICAgIHRoaXMuI2NvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBza3lEYXRlOiB7XG4gICAgICAgICAgaW52YWxpZDogdmFsdWUsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IGFueSkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuI29uQ2hhbmdlID0gZm47XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLiNub3RpZnlUb3VjaGVkID0gZm47XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZShmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuI29uVmFsaWRhdG9yQ2hhbmdlID0gZm47XG4gIH1cblxuICBwdWJsaWMgc2V0RGlzYWJsZWRTdGF0ZShkaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBkaXNhYmxlZDtcbiAgICB0aGlzLiNkYXRlcGlja2VyQ29tcG9uZW50LmRpc2FibGVkID0gZGlzYWJsZWQ7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZWN0cyBjaGFuZ2VzIHRvIHRoZSB1bmRlcmx5aW5nIGlucHV0IGVsZW1lbnQncyB2YWx1ZSBhbmQgdXBkYXRlcyB0aGUgbmdNb2RlbCBhY2NvcmRpbmdseS5cbiAgICogVGhpcyBpcyB1c2VmdWwgaWYgeW91IG5lZWQgdG8gdXBkYXRlIHRoZSBuZ01vZGVsIHZhbHVlIGJlZm9yZSB0aGUgaW5wdXQgZWxlbWVudCBsb3NlcyBmb2N1cy5cbiAgICovXG4gIHB1YmxpYyBkZXRlY3RJbnB1dFZhbHVlQ2hhbmdlKCk6IHZvaWQge1xuICAgIHRoaXMuI29uVmFsdWVDaGFuZ2UodGhpcy4jZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvbkZvY3Vzb3V0KGV2dDogRm9jdXNFdmVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy4jZGF0ZXBpY2tlckhvc3RTdmM/LmlzRm9jdXNpbmdEYXRlcGlja2VyKGV2dCkpIHtcbiAgICAgIHRoaXMuI25vdGlmeVRvdWNoZWQ/LigpO1xuICAgIH1cbiAgfVxuXG4gICNhcHBseURhdGVGb3JtYXQoKTogdm9pZCB7XG4gICAgdGhpcy4jZGF0ZXBpY2tlckNvbXBvbmVudC5kYXRlRm9ybWF0ID0gdGhpcy5kYXRlRm9ybWF0O1xuICAgIGlmICh0aGlzLiN2YWx1ZSkge1xuICAgICAgY29uc3QgZm9ybWF0dGVkRGF0ZSA9IHRoaXMuI2RhdGVGb3JtYXR0ZXIuZm9ybWF0KFxuICAgICAgICB0aGlzLiN2YWx1ZSxcbiAgICAgICAgdGhpcy5kYXRlRm9ybWF0LFxuICAgICAgKTtcbiAgICAgIHRoaXMuI3NldElucHV0RWxlbWVudFZhbHVlKGZvcm1hdHRlZERhdGUpO1xuICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgI29uVmFsdWVDaGFuZ2UobmV3VmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuI3ZhbHVlID0gbmV3VmFsdWU7XG4gIH1cblxuICAjc2V0SW5wdXRFbGVtZW50VmFsdWUodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuI3JlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMuI2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ3ZhbHVlJywgdmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGRhdGUgdmFsdWUgZnJvbSBhIHZhbHVlIC0gaWYgcG9zc2libGUuXG4gICAqIFdpbGwgbm90IGNvbnZlcnQgdW5jb252ZXJ0aWJsZSBkYXRlcyBvciBudW1iZXJzIG91dHNpZGUgb2YgdGhlIGN1cnJlbnQgbW9udGgncyBudW1iZXIgb2YgZGF5cy5cbiAgICogUmV0dXJucyBgdW5kZWZpbmVkYCBpZiB0aGUgdmFsdWUgY2FuIG5vdCBiZSBjb252ZXJ0ZWQuXG4gICAqL1xuICAjZ2V0RGF0ZVZhbHVlKHZhbHVlOiB1bmtub3duKTogRGF0ZSB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIHRoaXMuI2dldFNob3J0Y3V0T3JEYXRlVmFsdWUodmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGEgc3RyaW5nIHRvIGEgZGF0ZSBvYmplY3QgaWYgdGhlIHN0cmluZyBpcyBhIHZhbGlkIGRhdGUgc3RyaW5nLlxuICAgKiBJdCB3aWxsIGFsc28gY29udmVydCBudW1lcmljIGlucHV0IHRvIGEgZGF0ZSBpZiB0aGF0IG51bWJlciBpcyB3aXRoaW4gdGhlIGN1cnJlbnQgbW9udGgncyBudW1iZXIgb2YgZGF5cy5cbiAgICogSWYgdGhlIHN0cmluZyBjYW4gbm90IGJlIGNvbnZlcnRlZCwgYHVuZGVmaW5lZGAgYmUgcmV0dXJuZWQuXG4gICAqL1xuICAjZ2V0U2hvcnRjdXRPckRhdGVWYWx1ZSh2YWx1ZTogc3RyaW5nKTogRGF0ZSB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgbnVtID0gTnVtYmVyKHZhbHVlKTtcbiAgICBpZiAoTnVtYmVyLmlzSW50ZWdlcihudW0pKSB7XG4gICAgICAvLyBXZSByZXF1aXJlIDggZGlnaXRzIGluIG9yZGVyIHRvIGtub3cgdGhhdCB3ZSBoYXZlIGFsbCBpbmZvcm1hdGlvbiBuZWVkZWQgdG8gZGV0ZXJtaW5lIHdoYXQgcGFydCBvZiB0aGUgbnVtYmVyIGlzIHRoZSBtb250aCAoMiksIGRheSAoMiksIGFuZCB5ZWFyICg0KS5cbiAgICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDgpIHtcbiAgICAgICAgY29uc3QgcmVnZXggPSBuZXcgUmVnRXhwKC9cXGIoTU0pXFxifFxcYihERClcXGJ8XFxiKFlZKVxcYnxcXGIoWVlZWSlcXGIvLCAnZycpO1xuICAgICAgICBjb25zdCBmb3JtYXRUb2tlbnNPbmx5ID0gdGhpcy5kYXRlRm9ybWF0XG4gICAgICAgICAgPy5tYXRjaChyZWdleClcbiAgICAgICAgICA/LmpvaW4oJycpXG4gICAgICAgICAgLnJlcGxhY2UobmV3IFJlZ0V4cCgvWSsvKSwgJ1lZWVknKTtcblxuICAgICAgICBpZiAoZm9ybWF0VG9rZW5zT25seSAmJiBmb3JtYXRUb2tlbnNPbmx5Lmxlbmd0aCA9PT0gOCkge1xuICAgICAgICAgIGNvbnN0IGRhdGUgPSB0aGlzLiNkYXRlRm9ybWF0dGVyLmdldERhdGVGcm9tU3RyaW5nKFxuICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICBmb3JtYXRUb2tlbnNPbmx5LFxuICAgICAgICAgICAgdHJ1ZSxcbiAgICAgICAgICApO1xuICAgICAgICAgIGlmICh0aGlzLiNkYXRlRm9ybWF0dGVyLmRhdGVJc1ZhbGlkKGRhdGUpKSB7XG4gICAgICAgICAgICByZXR1cm4gZGF0ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gICAgICBjb25zdCBzaG9ydGN1dERhdGUgPSBuZXcgRGF0ZShub3cuZ2V0RnVsbFllYXIoKSwgbm93LmdldE1vbnRoKCksIG51bSk7XG4gICAgICBjb25zdCBkYXlzSW5Nb250aCA9IHNob3J0Y3V0RGF0ZS5nZXREYXRlKCk7XG4gICAgICBpZiAobnVtID4gMCAmJiBudW0gPD0gZGF5c0luTW9udGgpIHtcbiAgICAgICAgcmV0dXJuIHNob3J0Y3V0RGF0ZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZGF0ZSA9IHRoaXMuI2RhdGVGb3JtYXR0ZXIuZ2V0RGF0ZUZyb21TdHJpbmcoXG4gICAgICAgIHZhbHVlLFxuICAgICAgICB0aGlzLmRhdGVGb3JtYXQsXG4gICAgICAgIHRoaXMuc3RyaWN0LFxuICAgICAgKTtcbiAgICAgIGlmICh0aGlzLiNkYXRlRm9ybWF0dGVyLmRhdGVJc1ZhbGlkKGRhdGUpKSB7XG4gICAgICAgIHJldHVybiBkYXRlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGUgaW5wdXQgdmFsdWUgdG8gZW5zdXJlIGl0IGlzIGZvcm1hdHRlZCBjb3JyZWN0bHkuXG4gICAqL1xuICAjaXNEYXRlU3RyaW5nVmFsaWQodmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICghdmFsdWUgfHwgdHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLy8gRG9lcyB0aGUgdmFsdWUgb25seSBpbmNsdWRlIGRpZ2l0cywgZGFzaGVzLCBvciBzbGFzaGVzP1xuICAgIGNvbnN0IHJlZ2V4cCA9IC9eW1xcZC8tXSskLztcbiAgICBjb25zdCBpc1ZhbGlkID0gcmVnZXhwLnRlc3QodmFsdWUpO1xuXG4gICAgaWYgKGlzVmFsaWQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBtb21lbnQodmFsdWUpLmlzVmFsaWQoKTtcbiAgfVxuXG4gIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG4gICNvbkNoYW5nZSA9IChfOiBhbnkpOiB2b2lkID0+IHt9O1xuICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dFxuICAjb25WYWxpZGF0b3JDaGFuZ2UgPSAoKTogdm9pZCA9PiB7fTtcblxuICAvKipcbiAgICogVXBkYXRlIHRoZSB2YWx1ZSBvZiB0aGUgZm9ybSBjb250cm9sIGFuZCBpbnB1dCBlbGVtZW50XG4gICAqIEBwYXJhbSBlbWl0RXZlbnQgRGVub3RlcyBpZiB3ZSBlbWl0IGFuIGV2ZW50IHRvIHRoZSBjb25zdW1lcidzIGZvcm0gY29udHJvbC4gV2UgZG8gbm90IHdhbnQgdG8gZG8gdGhpcyBpZiB0aGUgdmFsdWUgaXMgYmVpbmcgdXBkYXRlZCB2aWEgYSBgc2V0VmFsdWVgIGNhbGwgb3IgYSBgcGF0Y2hWYWx1ZWAgY2FsbCBhcyB0aGlzIGlzIGFscmVhZHkgaGFuZGxlZCBieSBBbmd1bGFyLlxuICAgKiBJbiB0aGVzZSBjYXNlcyB3ZSBkbyBub3Qgd2FudCB0byBmaXJlIGBvbkNoYW5nZWAgYXMgaXQgd2lsbCBjYXVzZSBleHRyYSBgdmFsdWVDaGFuZ2VgIGFuZCBgc3RhdHVzQ2hhbmdlYCBldmVudHMgYW5kIHRoZSBzdGF0dXMgb2YgdGhlIGZvcm0gc2hvdWxkIG5vdCBiZSBhZmZlY3RlZCBieSB0aGVzZSBjaGFuZ2VzLlxuICAgKi9cbiAgI3VwZGF0ZVZhbHVlKHZhbHVlOiBhbnksIGVtaXRFdmVudCA9IHRydWUpOiB2b2lkIHtcbiAgICBpZiAodGhpcy4jX3ZhbHVlID09PSB2YWx1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGlzVmFsaWREYXRlU3RyaW5nID0gdGhpcy4jaXNEYXRlU3RyaW5nVmFsaWQodmFsdWUpO1xuXG4gICAgLy8gSWYgdGhlIHN0cmluZyB2YWx1ZSBzdXBwbGllZCBpcyBtYWxmb3JtZWQsIGRvIG5vdCBzZXQgdGhlIHZhbHVlIHRvIGl0cyBEYXRlIGVxdWl2YWxlbnQuXG4gICAgLy8gKEphdmFTY3JpcHQncyBEYXRlIHBhcnNlciB3aWxsIGNvbnZlcnQgcG9vcmx5IGZvcm1hdHRlZCBkYXRlcyB0byBEYXRlIG9iamVjdHMsIHN1Y2ggYXMgXCJhYmMgMTIzXCIsIHdoaWNoIGlzbid0IGlkZWFsLilcbiAgICBpZiAoIWlzVmFsaWREYXRlU3RyaW5nKSB7XG4gICAgICB0aGlzLiNfdmFsdWUgPSB2YWx1ZTtcbiAgICAgIGlmIChlbWl0RXZlbnQpIHtcbiAgICAgICAgdGhpcy4jb25DaGFuZ2UodGhpcy4jX3ZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuI2NvbnRyb2w/LnNldFZhbHVlKHRoaXMuI192YWx1ZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgfVxuXG4gICAgICB0aGlzLiNkYXRlcGlja2VyQ29tcG9uZW50LnNlbGVjdGVkRGF0ZSA9IHRoaXMuI192YWx1ZTtcblxuICAgICAgdGhpcy4jc2V0SW5wdXRFbGVtZW50VmFsdWUodmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBUaGlzIHZhbHVlIHJlcHJlc2VudHMgdGhlIGRhdGUgdmFsdWUgZm9yIHRoZSBpbnB1dCBpZiBwb3NzaWJsZS5cbiAgICAgIC8vIFRoaXMgdmFsdWUgd2lsbCB0YWtlIGludG8gYWNjb3VudCBhbGwgc2hvcnRjdXQgZnVuY3Rpb25hbGl0eS5cbiAgICAgIGNvbnN0IGRhdGVWYWx1ZTogRGF0ZSB8IHVuZGVmaW5lZCA9IHRoaXMuI2dldERhdGVWYWx1ZSh2YWx1ZSk7XG5cbiAgICAgIGNvbnN0IGFyZURhdGVzRXF1YWwgPVxuICAgICAgICB0aGlzLiNfdmFsdWUgaW5zdGFuY2VvZiBEYXRlICYmXG4gICAgICAgIGRhdGVWYWx1ZSAmJlxuICAgICAgICBkYXRlVmFsdWUuZ2V0VGltZSgpID09PSB0aGlzLiNfdmFsdWUuZ2V0VGltZSgpO1xuXG4gICAgICBpZiAoZGF0ZVZhbHVlICE9PSB0aGlzLiNfdmFsdWUgfHwgIWFyZURhdGVzRXF1YWwpIHtcbiAgICAgICAgdGhpcy4jX3ZhbHVlID0gZGF0ZVZhbHVlIHx8IHZhbHVlO1xuICAgICAgICBpZiAoZW1pdEV2ZW50KSB7XG4gICAgICAgICAgdGhpcy4jb25DaGFuZ2UodGhpcy4jX3ZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLiNjb250cm9sPy5zZXRWYWx1ZSh0aGlzLiNfdmFsdWUsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuI2RhdGVwaWNrZXJDb21wb25lbnQuc2VsZWN0ZWREYXRlID0gdGhpcy4jX3ZhbHVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoZGF0ZVZhbHVlKSB7XG4gICAgICAgIGNvbnN0IGZvcm1hdHRlZERhdGVTdHJpbmcgPSB0aGlzLiNkYXRlRm9ybWF0dGVyLmZvcm1hdChcbiAgICAgICAgICBkYXRlVmFsdWUsXG4gICAgICAgICAgdGhpcy5kYXRlRm9ybWF0LFxuICAgICAgICApO1xuICAgICAgICB0aGlzLiNzZXRJbnB1dEVsZW1lbnRWYWx1ZShmb3JtYXR0ZWREYXRlU3RyaW5nKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuI3NldElucHV0RWxlbWVudFZhbHVlKHZhbHVlIHx8ICcnKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==","import { Directive, HostListener, Input, Optional, forwardRef, inject, } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR, } from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport { distinctUntilChanged, takeUntil } from 'rxjs/operators';\nimport { SkyDateFormatter } from '../date-formatter';\nimport { SkyDatepickerHostService } from '../datepicker-host.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"../datepicker-config.service\";\nimport * as i2 from \"./fuzzy-date.service\";\nimport * as i3 from \"@skyux/i18n\";\nimport * as i4 from \"../datepicker.component\";\nconst SKY_FUZZY_DATEPICKER_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SkyFuzzyDatepickerInputDirective),\n multi: true,\n};\nconst SKY_FUZZY_DATEPICKER_VALIDATOR = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => SkyFuzzyDatepickerInputDirective),\n multi: true,\n};\nexport class SkyFuzzyDatepickerInputDirective {\n /**\n * The date format for the input. Place this attribute on the `input` element\n * to override the default in `SkyDatepickerConfigService`.\n * @default \"MM/DD/YYYY\"\n */\n set dateFormat(value) {\n this.#_dateFormat = value;\n if (this.#value) {\n const formattedDate = this.#fuzzyDateService.format(this.#value, this.dateFormat, this.#locale);\n this.#setInputElementValue(formattedDate);\n this.#changeDetector.markForCheck();\n }\n }\n // TODO: Refactor to not have getter logic\n get dateFormat() {\n return (this.#_dateFormat ||\n this.#configService.dateFormat ||\n this.#preferredShortDateFormat);\n }\n /**\n * Whether to disable the datepicker on template-driven forms. Don't use this input on reactive forms because they may overwrite the input or leave the control out of sync.\n * To set the disabled state on reactive forms, use the `FormControl` instead.\n * @default false\n */\n set disabled(value) {\n this.#_disabled = value;\n this.#datepickerComponent.disabled = value;\n this.#renderer.setProperty(this.#elementRef.nativeElement, 'disabled', value);\n }\n get disabled() {\n return this.#_disabled;\n }\n /**\n * Whether to prevent users from specifying dates that are in the future.\n * Place this attribute on the `input` element.\n * @default false\n */\n set futureDisabled(value) {\n this.#_futureDisabled = value;\n this.#datepickerComponent.maxDate = this.#getMaxDate();\n this.#onValidatorChange();\n }\n get futureDisabled() {\n return this.#_futureDisabled;\n }\n /**\n * The latest fuzzy date allowed. Place this attribute on the `input` element\n * to prevent fuzzy dates after a specified date. This property accepts\n * a `SkyFuzzyDate` value that includes numeric month, day, and year values.\n * For example: `{ month: 1, day: 1, year: 2027 }`.\n */\n set maxDate(value) {\n this.#_maxDate = value;\n this.#datepickerComponent.maxDate = this.#getMaxDate();\n this.#onValidatorChange();\n }\n get maxDate() {\n return this.#_maxDate;\n }\n /**\n * The earliest fuzzy date allowed. Place this attribute on the `input` element\n * to prevent fuzzy dates before a specified date. This property accepts a `SkyFuzzyDate` value\n * that includes numeric month, day, and year values.\n * For example: `{ month: 1, day: 1, year: 2007 }`.\n */\n set minDate(value) {\n this.#_minDate = value;\n this.#datepickerComponent.minDate = this.#getMinDate();\n this.#onValidatorChange();\n }\n get minDate() {\n return this.#_minDate;\n }\n /**\n * The fuzzy date to open the calendar to initially.\n * This property accepts a `SkyFuzzyDate` value that includes numeric month, day, and year values.\n * For example: `{ month: 1, day: 1, year: 2007 }`.\n * @default The current date\n */\n set startAtDate(value) {\n this.#_startAtDate = value;\n this.#datepickerComponent.startAtDate = this.#getStartAtDate();\n }\n // TODO: Refactor to not have getter logic\n get startAtDate() {\n return this.#_startAtDate;\n }\n /**\n * The starting day of the week in the calendar, where `0` sets the starting day\n * to Sunday. Place this attribute on the `input` element to override the default\n * in `SkyDatepickerConfigService`.\n * @default 0\n */\n set startingDay(value) {\n this.#_startingDay = value;\n this.#datepickerComponent.startingDay = this.startingDay;\n this.#onValidatorChange();\n }\n // TODO: Refactor to not have getter logic\n get startingDay() {\n return this.#_startingDay || this.#configService.startingDay;\n }\n /**\n * Whether to require the year in fuzzy dates.\n * @default false\n */\n set yearRequired(value) {\n this.#_yearRequired = value;\n this.#onValidatorChange();\n }\n get yearRequired() {\n return this.#_yearRequired;\n }\n get #value() {\n return this.#_value;\n }\n set #value(value) {\n this.#updateValue(value);\n }\n #control;\n #dateFormatter;\n #locale;\n #preferredShortDateFormat;\n #ngUnsubscribe;\n #notifyTouched;\n #_futureDisabled;\n #_dateFormat;\n #_disabled;\n #_maxDate;\n #_minDate;\n #_startAtDate;\n #_startingDay;\n #_value;\n #_yearRequired;\n #changeDetector;\n #configService;\n #elementRef;\n #fuzzyDateService;\n #renderer;\n #datepickerComponent;\n #datepickerHostSvc;\n constructor(changeDetector, configService, elementRef, fuzzyDateService, localeProvider, renderer, datepickerComponent) {\n /**\n * Whether to disable date validation on the fuzzy datepicker input.\n * @default false\n */\n this.skyDatepickerNoValidate = false;\n this.#dateFormatter = new SkyDateFormatter();\n this.#ngUnsubscribe = new Subject();\n this.#_futureDisabled = false;\n this.#_disabled = false;\n this.#_yearRequired = false;\n this.#datepickerHostSvc = inject(SkyDatepickerHostService, {\n optional: true,\n });\n // istanbul ignore next\n this.#onChange = (_) => { };\n // istanbul ignore next\n this.#onValidatorChange = () => { };\n if (!datepickerComponent) {\n throw new Error('You must wrap the `skyFuzzyDatepickerInput` directive within a ' +\n '`<sky-datepicker>` component!');\n }\n this.#changeDetector = changeDetector;\n this.#configService = configService;\n this.#elementRef = elementRef;\n this.#fuzzyDateService = fuzzyDateService;\n this.#renderer = renderer;\n this.#datepickerComponent = datepickerComponent;\n this.#locale = localeProvider.defaultLocale;\n localeProvider\n .getLocaleInfo()\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((localeInfo) => {\n this.#locale = localeInfo.locale;\n SkyDateFormatter.setLocale(this.#locale);\n this.#preferredShortDateFormat =\n SkyDateFormatter.getPreferredShortDateFormat();\n });\n this.#datepickerHostSvc?.focusout\n .pipe(takeUntilDestroyed())\n .subscribe((evt) => {\n const isFocusingInput = evt.relatedTarget === this.#elementRef.nativeElement;\n if (!isFocusingInput) {\n this.#notifyTouched?.();\n }\n });\n }\n ngOnInit() {\n if (this.yearRequired) {\n if (this.dateFormat?.toLowerCase().indexOf('y') === -1) {\n throw new Error('You have configured conflicting settings. Year is required and dateFormat does not include year.');\n }\n }\n const element = this.#elementRef.nativeElement;\n this.#renderer.addClass(element, 'sky-form-control');\n }\n ngAfterContentInit() {\n this.#datepickerComponent.dateChange\n .pipe(distinctUntilChanged(), takeUntil(this.#ngUnsubscribe))\n .subscribe((value) => {\n this.#value = value;\n });\n }\n ngAfterViewInit() {\n // This is needed to address a bug in Angular 4.\n // When a control value is set initially, its value is not represented on the view.\n // See: https://github.com/angular/angular/issues/13792\n // Of note is the parent check which allows us to determine if the form is reactive.\n // Without this check there is a changed before checked error\n /* istanbul ignore else */\n if (this.#control && this.#control.parent) {\n setTimeout(() => {\n this.#control?.setValue(this.#value, {\n emitEvent: false,\n });\n this.#changeDetector.markForCheck();\n });\n }\n }\n ngOnDestroy() {\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n }\n onInputChange(event) {\n this.#onValueChange(event.target.value);\n }\n onInputBlur() {\n const formattedDate = this.#fuzzyDateService.format(this.#value, this.dateFormat, this.#locale);\n if (this.#control?.valid) {\n this.#setInputElementValue(formattedDate);\n }\n }\n onInput() {\n this.#control?.markAsDirty();\n }\n writeValue(value) {\n this.#updateValue(value, false);\n }\n validate(control) {\n if (!this.#control) {\n this.#control = control;\n }\n if (this.skyDatepickerNoValidate) {\n return null;\n }\n if (!this.#control.value) {\n return null;\n }\n const value = control.value;\n let fuzzyDate;\n let validationError = null;\n if (typeof value === 'string') {\n fuzzyDate = this.#fuzzyDateService.getFuzzyDateFromString(value, this.dateFormat);\n }\n else {\n fuzzyDate = value;\n }\n if (!fuzzyDate) {\n validationError = {\n skyFuzzyDate: {\n invalid: value,\n },\n };\n }\n else {\n if (!fuzzyDate.year && this.yearRequired) {\n validationError = {\n skyFuzzyDate: {\n yearRequired: value,\n },\n };\n }\n if (!validationError && fuzzyDate.year) {\n let fuzzyDateRange;\n if (this.maxDate) {\n fuzzyDateRange = this.#fuzzyDateService.getFuzzyDateRange(fuzzyDate, this.maxDate);\n if (!fuzzyDateRange.valid) {\n validationError = {\n skyFuzzyDate: {\n maxDate: value,\n maxDateFormatted: this.#dateFormatter.format(fuzzyDateRange.endDate, this.dateFormat),\n },\n };\n }\n }\n if (!validationError && this.minDate) {\n fuzzyDateRange = this.#fuzzyDateService.getFuzzyDateRange(this.minDate, fuzzyDate);\n if (!fuzzyDateRange.valid) {\n validationError = {\n skyFuzzyDate: {\n minDate: value,\n minDateFormatted: this.#dateFormatter.format(fuzzyDateRange.startDate, this.dateFormat),\n },\n };\n }\n }\n if (!validationError && this.futureDisabled) {\n fuzzyDateRange = this.#fuzzyDateService.getFuzzyDateRange(fuzzyDate, this.#fuzzyDateService.getCurrentFuzzyDate());\n if (!fuzzyDateRange.valid) {\n validationError = {\n skyFuzzyDate: {\n futureDisabled: value,\n },\n };\n }\n }\n }\n }\n if (validationError) {\n // Mark the invalid control as touched so that the input's invalid CSS styles appear.\n // (This is only required when the invalid value is set by the FormControl constructor.)\n this.#control.markAsTouched();\n }\n return validationError;\n }\n registerOnChange(fn) {\n this.#onChange = fn;\n }\n registerOnTouched(fn) {\n this.#notifyTouched = fn;\n }\n registerOnValidatorChange(fn) {\n this.#onValidatorChange = fn;\n }\n setDisabledState(disabled) {\n this.disabled = disabled;\n this.#datepickerComponent.disabled = disabled;\n }\n /**\n * Detects changes to the underlying input element's value and updates the ngModel accordingly.\n * This is useful if you need to update the ngModel value before the input element loses focus.\n */\n detectInputValueChange() {\n this.#onValueChange(this.#elementRef.nativeElement.value);\n }\n onFocusout(evt) {\n if (!this.#datepickerHostSvc?.isFocusingDatepicker(evt)) {\n this.#notifyTouched?.();\n }\n }\n #onValueChange(newValue) {\n this.#value = newValue;\n }\n #setInputElementValue(value) {\n this.#renderer.setProperty(this.#elementRef.nativeElement, 'value', value);\n }\n #getMaxDate() {\n if (this.maxDate) {\n const maxDate = this.#fuzzyDateService.getMomentFromFuzzyDate(this.maxDate);\n if (maxDate.isValid()) {\n return maxDate.toDate();\n }\n }\n else if (this.futureDisabled) {\n return new Date();\n }\n return this.#configService.maxDate;\n }\n #getMinDate() {\n if (this.minDate) {\n const minDate = this.#fuzzyDateService.getMomentFromFuzzyDate(this.minDate);\n if (minDate.isValid()) {\n return minDate.toDate();\n }\n }\n return this.#configService.minDate;\n }\n #getStartAtDate() {\n if (this.startAtDate) {\n const startAtDate = this.#fuzzyDateService.getMomentFromFuzzyDate(this.startAtDate);\n if (startAtDate.isValid()) {\n return startAtDate.toDate();\n }\n }\n return this.#configService.startAtDate;\n }\n /* istanbul ignore next */\n #fuzzyDatesEqual(dateA, dateB) {\n return !!(dateA &&\n dateB &&\n ((!dateA.day && !dateB.day) || dateA.day === dateB.day) &&\n ((!dateA.month && !dateB.month) || dateA.month === dateB.month) &&\n ((!dateA.year && !dateB.year) || dateA.year === dateB.year));\n }\n // istanbul ignore next\n #onChange;\n // istanbul ignore next\n #onValidatorChange;\n /**\n * Update the value of the form control and input element\n * @param emitEvent Denotes if we emit an event to the consumer's form control. We do not want to do this if the value is being updated via a `setValue` call or a `patchValue` call as this is already handled by Angular.\n * In these cases we do not want to fire `onChange` as it will cause extra `valueChange` and `statusChange` events and the status of the form should not be affected by these changes.\n */\n #updateValue(value, emitEvent = true) {\n if (this.#_value === value ||\n (this.#_value === undefined && value === null)) {\n return;\n }\n let fuzzyDate;\n let fuzzyMoment;\n let dateValue;\n let formattedDate;\n if (value instanceof Date) {\n dateValue = value;\n formattedDate = this.#dateFormatter.format(value, this.dateFormat);\n fuzzyDate = this.#fuzzyDateService.getFuzzyDateFromSelectedDate(value, this.dateFormat);\n }\n else if (typeof value === 'string') {\n fuzzyDate = this.#fuzzyDateService.getFuzzyDateFromString(value, this.dateFormat);\n if (fuzzyDate) {\n formattedDate = this.#fuzzyDateService.format(fuzzyDate, this.dateFormat, this.#locale);\n }\n if (!formattedDate) {\n formattedDate = value;\n }\n fuzzyMoment = this.#fuzzyDateService.getMomentFromFuzzyDate(fuzzyDate);\n if (fuzzyMoment) {\n dateValue = fuzzyMoment.toDate();\n }\n }\n else {\n fuzzyDate = value;\n formattedDate = this.#fuzzyDateService.format(fuzzyDate, this.dateFormat, this.#locale);\n fuzzyMoment = this.#fuzzyDateService.getMomentFromFuzzyDate(fuzzyDate);\n if (fuzzyMoment) {\n dateValue = fuzzyMoment.toDate();\n }\n }\n const areFuzzyDatesEqual = this.#fuzzyDatesEqual(this.#_value, fuzzyDate);\n const isNewValue = fuzzyDate !== this.#_value || !areFuzzyDatesEqual;\n this.#_value = fuzzyDate || value;\n if (isNewValue) {\n if (emitEvent) {\n this.#onChange(this.#_value);\n }\n else {\n this.#control?.setValue(this.#_value, { emitEvent: false });\n }\n this.#datepickerComponent.selectedDate = dateValue;\n }\n this.#setInputElementValue(formattedDate || '');\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyFuzzyDatepickerInputDirective, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.SkyDatepickerConfigService }, { token: i0.ElementRef }, { token: i2.SkyFuzzyDateService }, { token: i3.SkyAppLocaleProvider }, { token: i0.Renderer2 }, { token: i4.SkyDatepickerComponent, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.0.5\", type: SkyFuzzyDatepickerInputDirective, isStandalone: true, selector: \"[skyFuzzyDatepickerInput]\", inputs: { dateFormat: \"dateFormat\", disabled: \"disabled\", futureDisabled: \"futureDisabled\", maxDate: \"maxDate\", minDate: \"minDate\", startAtDate: \"startAtDate\", skyDatepickerNoValidate: \"skyDatepickerNoValidate\", startingDay: \"startingDay\", yearRequired: \"yearRequired\" }, host: { listeners: { \"focusout\": \"onFocusout($event)\", \"change\": \"onInputChange($event)\", \"blur\": \"onInputBlur()\", \"input\": \"onInput()\" } }, providers: [\n SKY_FUZZY_DATEPICKER_VALUE_ACCESSOR,\n SKY_FUZZY_DATEPICKER_VALIDATOR,\n ], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyFuzzyDatepickerInputDirective, decorators: [{\n type: Directive,\n args: [{\n host: {\n '(focusout)': 'onFocusout($event)',\n },\n providers: [\n SKY_FUZZY_DATEPICKER_VALUE_ACCESSOR,\n SKY_FUZZY_DATEPICKER_VALIDATOR,\n ],\n selector: '[skyFuzzyDatepickerInput]',\n standalone: true,\n }]\n }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.SkyDatepickerConfigService }, { type: i0.ElementRef }, { type: i2.SkyFuzzyDateService }, { type: i3.SkyAppLocaleProvider }, { type: i0.Renderer2 }, { type: i4.SkyDatepickerComponent, decorators: [{\n type: Optional\n }] }], propDecorators: { dateFormat: [{\n type: Input\n }], disabled: [{\n type: Input\n }], futureDisabled: [{\n type: Input\n }], maxDate: [{\n type: Input\n }], minDate: [{\n type: Input\n }], startAtDate: [{\n type: Input\n }], skyDatepickerNoValidate: [{\n type: Input\n }], startingDay: [{\n type: Input\n }], yearRequired: [{\n type: Input\n }], onInputChange: [{\n type: HostListener,\n args: ['change', ['$event']]\n }], onInputBlur: [{\n type: HostListener,\n args: ['blur']\n }], onInput: [{\n type: HostListener,\n args: ['input']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci1pbnB1dC1mdXp6eS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL2RhdGVwaWNrZXIvZnV6enkvZGF0ZXBpY2tlci1pbnB1dC1mdXp6eS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUlMLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUdMLFFBQVEsRUFFUixVQUFVLEVBQ1YsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFHTCxhQUFhLEVBQ2IsaUJBQWlCLEdBR2xCLE1BQU0sZ0JBQWdCLENBQUM7QUFHeEIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFakUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFckQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7OztBQU10RSxNQUFNLG1DQUFtQyxHQUFHO0lBQzFDLE9BQU8sRUFBRSxpQkFBaUI7SUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxnQ0FBZ0MsQ0FBQztJQUMvRCxLQUFLLEVBQUUsSUFBSTtDQUNaLENBQUM7QUFFRixNQUFNLDhCQUE4QixHQUFHO0lBQ3JDLE9BQU8sRUFBRSxhQUFhO0lBQ3RCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsZ0NBQWdDLENBQUM7SUFDL0QsS0FBSyxFQUFFLElBQUk7Q0FDWixDQUFDO0FBYUYsTUFBTSxPQUFPLGdDQUFnQztJQVMzQzs7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VCxJQUFJLEVBQUU7d0JBQ0osWUFBWSxFQUFFLG9CQUFvQjtxQkFDbkM7b0JBQ0QsU0FBUyxFQUFFO3dCQUNULG1DQUFtQzt3QkFDbkMsOEJBQThCO3FCQUMvQjtvQkFDRCxRQUFRLEVBQUUsMkJBQTJCO29CQUNyQyxVQUFVLEVBQUUsSUFBSTtpQkFDakI7OzBCQStOSSxRQUFRO3lDQS9NQSxVQUFVO3NCQURwQixLQUFLO2dCQThCSyxRQUFRO3NCQURsQixLQUFLO2dCQXNCSyxjQUFjO3NCQUR4QixLQUFLO2dCQWtCSyxPQUFPO3NCQURqQixLQUFLO2dCQWtCSyxPQUFPO3NCQURqQixLQUFLO2dCQWtCSyxXQUFXO3NCQURyQixLQUFLO2dCQWdCQyx1QkFBdUI7c0JBRDdCLEtBQUs7Z0JBVUssV0FBVztzQkFEckIsS0FBSztnQkFrQkssWUFBWTtzQkFEdEIsS0FBSztnQkF3SkMsYUFBYTtzQkFEbkIsWUFBWTt1QkFBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBTTNCLFdBQVc7c0JBRGpCLFlBQVk7dUJBQUMsTUFBTTtnQkFjYixPQUFPO3NCQURiLFlBQVk7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgUmVuZGVyZXIyLFxuICBmb3J3YXJkUmVmLFxuICBpbmplY3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHtcbiAgQWJzdHJhY3RDb250cm9sLFxuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgTkdfVkFMSURBVE9SUyxcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gIFZhbGlkYXRpb25FcnJvcnMsXG4gIFZhbGlkYXRvcixcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU2t5QXBwTG9jYWxlUHJvdmlkZXIgfSBmcm9tICdAc2t5dXgvaTE4bic7XG5cbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNreURhdGVGb3JtYXR0ZXIgfSBmcm9tICcuLi9kYXRlLWZvcm1hdHRlcic7XG5pbXBvcnQgeyBTa3lEYXRlcGlja2VyQ29uZmlnU2VydmljZSB9IGZyb20gJy4uL2RhdGVwaWNrZXItY29uZmlnLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2t5RGF0ZXBpY2tlckhvc3RTZXJ2aWNlIH0gZnJvbSAnLi4vZGF0ZXBpY2tlci1ob3N0LnNlcnZpY2UnO1xuaW1wb3J0IHsgU2t5RGF0ZXBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4uL2RhdGVwaWNrZXIuY29tcG9uZW50JztcblxuaW1wb3J0IHsgU2t5RnV6enlEYXRlIH0gZnJvbSAnLi9mdXp6eS1kYXRlJztcbmltcG9ydCB7IFNreUZ1enp5RGF0ZVNlcnZpY2UgfSBmcm9tICcuL2Z1enp5LWRhdGUuc2VydmljZSc7XG5cbmNvbnN0IFNLWV9GVVpaWV9EQVRFUElDS0VSX1ZBTFVFX0FDQ0VTU09SID0ge1xuICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gU2t5RnV6enlEYXRlcGlja2VySW5wdXREaXJlY3RpdmUpLFxuICBtdWx0aTogdHJ1ZSxcbn07XG5cbmNvbnN0IFNLWV9GVVpaWV9EQVRFUElDS0VSX1ZBTElEQVRPUiA9IHtcbiAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gU2t5RnV6enlEYXRlcGlja2VySW5wdXREaXJlY3RpdmUpLFxuICBtdWx0aTogdHJ1ZSxcbn07XG5cbkBEaXJlY3RpdmUoe1xuICBob3N0OiB7XG4gICAgJyhmb2N1c291dCknOiAnb25Gb2N1c291dCgkZXZlbnQpJyxcbiAgfSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgU0tZX0ZVWlpZX0RBVEVQSUNLRVJfVkFMVUVfQUNDRVNTT1IsXG4gICAgU0tZX0ZVWlpZX0RBVEVQSUNLRVJfVkFMSURBVE9SLFxuICBdLFxuICBzZWxlY3RvcjogJ1tza3lGdXp6eURhdGVwaWNrZXJJbnB1dF0nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lGdXp6eURhdGVwaWNrZXJJbnB1dERpcmVjdGl2ZVxuICBpbXBsZW1lbnRzXG4gICAgT25Jbml0LFxuICAgIE9uRGVzdHJveSxcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gICAgVmFsaWRhdG9yXG57XG4gIC8qKlxuICAgKiBUaGUgZGF0ZSBmb3JtYXQgZm9yIHRoZSBpbnB1dC4gUGxhY2UgdGhpcyBhdHRyaWJ1dGUgb24gdGhlIGBpbnB1dGAgZWxlbWVudFxuICAgKiB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBpbiBgU2t5RGF0ZXBpY2tlckNvbmZpZ1NlcnZpY2VgLlxuICAgKiBAZGVmYXVsdCBcIk1NL0REL1lZWVlcIlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBkYXRlRm9ybWF0KHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfZGF0ZUZvcm1hdCA9IHZhbHVlO1xuXG4gICAgaWYgKHRoaXMuI3ZhbHVlKSB7XG4gICAgICBjb25zdCBmb3JtYXR0ZWREYXRlID0gdGhpcy4jZnV6enlEYXRlU2VydmljZS5mb3JtYXQoXG4gICAgICAgIHRoaXMuI3ZhbHVlLFxuICAgICAgICB0aGlzLmRhdGVGb3JtYXQsXG4gICAgICAgIHRoaXMuI2xvY2FsZSxcbiAgICAgICk7XG4gICAgICB0aGlzLiNzZXRJbnB1dEVsZW1lbnRWYWx1ZShmb3JtYXR0ZWREYXRlKTtcbiAgICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIC8vIFRPRE86IFJlZmFjdG9yIHRvIG5vdCBoYXZlIGdldHRlciBsb2dpY1xuICBwdWJsaWMgZ2V0IGRhdGVGb3JtYXQoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy4jX2RhdGVGb3JtYXQgfHxcbiAgICAgIHRoaXMuI2NvbmZpZ1NlcnZpY2UuZGF0ZUZvcm1hdCB8fFxuICAgICAgdGhpcy4jcHJlZmVycmVkU2hvcnREYXRlRm9ybWF0XG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGRpc2FibGUgdGhlIGRhdGVwaWNrZXIgb24gdGVtcGxhdGUtZHJpdmVuIGZvcm1zLiBEb24ndCB1c2UgdGhpcyBpbnB1dCBvbiByZWFjdGl2ZSBmb3JtcyBiZWNhdXNlIHRoZXkgbWF5IG92ZXJ3cml0ZSB0aGUgaW5wdXQgb3IgbGVhdmUgdGhlIGNvbnRyb2wgb3V0IG9mIHN5bmMuXG4gICAqIFRvIHNldCB0aGUgZGlzYWJsZWQgc3RhdGUgb24gcmVhY3RpdmUgZm9ybXMsIHVzZSB0aGUgYEZvcm1Db250cm9sYCBpbnN0ZWFkLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19kaXNhYmxlZCA9IHZhbHVlO1xuICAgIHRoaXMuI2RhdGVwaWNrZXJDb21wb25lbnQuZGlzYWJsZWQgPSB2YWx1ZTtcblxuICAgIHRoaXMuI3JlbmRlcmVyLnNldFByb3BlcnR5KFxuICAgICAgdGhpcy4jZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgJ2Rpc2FibGVkJyxcbiAgICAgIHZhbHVlLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLiNfZGlzYWJsZWQ7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0byBwcmV2ZW50IHVzZXJzIGZyb20gc3BlY2lmeWluZyBkYXRlcyB0aGF0IGFyZSBpbiB0aGUgZnV0dXJlLlxuICAgKiBQbGFjZSB0aGlzIGF0dHJpYnV0ZSBvbiB0aGUgYGlucHV0YCBlbGVtZW50LlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBmdXR1cmVEaXNhYmxlZCh2YWx1ZTogYm9vbGVhbiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19mdXR1cmVEaXNhYmxlZCA9IHZhbHVlO1xuICAgIHRoaXMuI2RhdGVwaWNrZXJDb21wb25lbnQubWF4RGF0ZSA9IHRoaXMuI2dldE1heERhdGUoKTtcbiAgICB0aGlzLiNvblZhbGlkYXRvckNoYW5nZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBmdXR1cmVEaXNhYmxlZCgpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy4jX2Z1dHVyZURpc2FibGVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBsYXRlc3QgZnV6enkgZGF0ZSBhbGxvd2VkLiBQbGFjZSB0aGlzIGF0dHJpYnV0ZSBvbiB0aGUgYGlucHV0YCBlbGVtZW50XG4gICAqIHRvIHByZXZlbnQgZnV6enkgZGF0ZXMgYWZ0ZXIgYSBzcGVjaWZpZWQgZGF0ZS4gVGhpcyBwcm9wZXJ0eSBhY2NlcHRzXG4gICAqIGEgYFNreUZ1enp5RGF0ZWAgdmFsdWUgdGhhdCBpbmNsdWRlcyBudW1lcmljIG1vbnRoLCBkYXksIGFuZCB5ZWFyIHZhbHVlcy5cbiAgICogRm9yIGV4YW1wbGU6IGB7IG1vbnRoOiAxLCBkYXk6IDEsIHllYXI6IDIwMjcgfWAuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IG1heERhdGUodmFsdWU6IFNreUZ1enp5RGF0ZSB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19tYXhEYXRlID0gdmFsdWU7XG4gICAgdGhpcy4jZGF0ZXBpY2tlckNvbXBvbmVudC5tYXhEYXRlID0gdGhpcy4jZ2V0TWF4RGF0ZSgpO1xuICAgIHRoaXMuI29uVmFsaWRhdG9yQ2hhbmdlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG1heERhdGUoKTogU2t5RnV6enlEYXRlIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy4jX21heERhdGU7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGVhcmxpZXN0IGZ1enp5IGRhdGUgYWxsb3dlZC4gUGxhY2UgdGhpcyBhdHRyaWJ1dGUgb24gdGhlIGBpbnB1dGAgZWxlbWVudFxuICAgKiB0byBwcmV2ZW50IGZ1enp5IGRhdGVzIGJlZm9yZSBhIHNwZWNpZmllZCBkYXRlLiBUaGlzIHByb3BlcnR5IGFjY2VwdHMgYSBgU2t5RnV6enlEYXRlYCB2YWx1ZVxuICAgKiB0aGF0IGluY2x1ZGVzIG51bWVyaWMgbW9udGgsIGRheSwgYW5kIHllYXIgdmFsdWVzLlxuICAgKiBGb3IgZXhhbXBsZTogYHsgbW9udGg6IDEsIGRheTogMSwgeWVhcjogMjAwNyB9YC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgbWluRGF0ZSh2YWx1ZTogU2t5RnV6enlEYXRlIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX21pbkRhdGUgPSB2YWx1ZTtcbiAgICB0aGlzLiNkYXRlcGlja2VyQ29tcG9uZW50Lm1pbkRhdGUgPSB0aGlzLiNnZXRNaW5EYXRlKCk7XG4gICAgdGhpcy4jb25WYWxpZGF0b3JDaGFuZ2UoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbWluRGF0ZSgpOiBTa3lGdXp6eURhdGUgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLiNfbWluRGF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgZnV6enkgZGF0ZSB0byBvcGVuIHRoZSBjYWxlbmRhciB0byBpbml0aWFsbHkuXG4gICAqIFRoaXMgcHJvcGVydHkgYWNjZXB0cyBhIGBTa3lGdXp6eURhdGVgIHZhbHVlIHRoYXQgaW5jbHVkZXMgbnVtZXJpYyBtb250aCwgZGF5LCBhbmQgeWVhciB2YWx1ZXMuXG4gICAqIEZvciBleGFtcGxlOiBgeyBtb250aDogMSwgZGF5OiAxLCB5ZWFyOiAyMDA3IH1gLlxuICAgKiBAZGVmYXVsdCBUaGUgY3VycmVudCBkYXRlXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHN0YXJ0QXREYXRlKHZhbHVlOiBTa3lGdXp6eURhdGUgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfc3RhcnRBdERhdGUgPSB2YWx1ZTtcbiAgICB0aGlzLiNkYXRlcGlja2VyQ29tcG9uZW50LnN0YXJ0QXREYXRlID0gdGhpcy4jZ2V0U3RhcnRBdERhdGUoKTtcbiAgfVxuXG4gIC8vIFRPRE86IFJlZmFjdG9yIHRvIG5vdCBoYXZlIGdldHRlciBsb2dpY1xuICBwdWJsaWMgZ2V0IHN0YXJ0QXREYXRlKCk6IFNreUZ1enp5RGF0ZSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI19zdGFydEF0RGF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGRpc2FibGUgZGF0ZSB2YWxpZGF0aW9uIG9uIHRoZSBmdXp6eSBkYXRlcGlja2VyIGlucHV0LlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNreURhdGVwaWNrZXJOb1ZhbGlkYXRlOiBib29sZWFuIHwgdW5kZWZpbmVkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFRoZSBzdGFydGluZyBkYXkgb2YgdGhlIHdlZWsgaW4gdGhlIGNhbGVuZGFyLCB3aGVyZSBgMGAgc2V0cyB0aGUgc3RhcnRpbmcgZGF5XG4gICAqIHRvIFN1bmRheS4gUGxhY2UgdGhpcyBhdHRyaWJ1dGUgb24gdGhlIGBpbnB1dGAgZWxlbWVudCB0byBvdmVycmlkZSB0aGUgZGVmYXVsdFxuICAgKiBpbiBgU2t5RGF0ZXBpY2tlckNvbmZpZ1NlcnZpY2VgLlxuICAgKiBAZGVmYXVsdCAwXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHN0YXJ0aW5nRGF5KHZhbHVlOiBudW1iZXIgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfc3RhcnRpbmdEYXkgPSB2YWx1ZTtcbiAgICB0aGlzLiNkYXRlcGlja2VyQ29tcG9uZW50LnN0YXJ0aW5nRGF5ID0gdGhpcy5zdGFydGluZ0RheTtcblxuICAgIHRoaXMuI29uVmFsaWRhdG9yQ2hhbmdlKCk7XG4gIH1cblxuICAvLyBUT0RPOiBSZWZhY3RvciB0byBub3QgaGF2ZSBnZXR0ZXIgbG9naWNcbiAgcHVibGljIGdldCBzdGFydGluZ0RheSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLiNfc3RhcnRpbmdEYXkgfHwgdGhpcy4jY29uZmlnU2VydmljZS5zdGFydGluZ0RheTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHJlcXVpcmUgdGhlIHllYXIgaW4gZnV6enkgZGF0ZXMuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHllYXJSZXF1aXJlZCh2YWx1ZTogYm9vbGVhbiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI195ZWFyUmVxdWlyZWQgPSB2YWx1ZTtcbiAgICB0aGlzLiNvblZhbGlkYXRvckNoYW5nZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCB5ZWFyUmVxdWlyZWQoKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI195ZWFyUmVxdWlyZWQ7XG4gIH1cblxuICBnZXQgI3ZhbHVlKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuI192YWx1ZTtcbiAgfVxuXG4gIHNldCAjdmFsdWUodmFsdWU6IGFueSkge1xuICAgIHRoaXMuI3VwZGF0ZVZhbHVlKHZhbHVlKTtcbiAgfVxuXG4gICNjb250cm9sOiBBYnN0cmFjdENvbnRyb2wgfCB1bmRlZmluZWQ7XG5cbiAgI2RhdGVGb3JtYXR0ZXIgPSBuZXcgU2t5RGF0ZUZvcm1hdHRlcigpO1xuXG4gICNsb2NhbGU6IHN0cmluZztcblxuICAjcHJlZmVycmVkU2hvcnREYXRlRm9ybWF0OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgI25nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICNub3RpZnlUb3VjaGVkOiAoKCkgPT4gdm9pZCkgfCB1bmRlZmluZWQ7XG5cbiAgI19mdXR1cmVEaXNhYmxlZDogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IGZhbHNlO1xuXG4gICNfZGF0ZUZvcm1hdDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gICNfZGlzYWJsZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQgPSBmYWxzZTtcblxuICAjX21heERhdGU6IFNreUZ1enp5RGF0ZSB8IHVuZGVmaW5lZDtcblxuICAjX21pbkRhdGU6IFNreUZ1enp5RGF0ZSB8IHVuZGVmaW5lZDtcblxuICAjX3N0YXJ0QXREYXRlOiBTa3lGdXp6eURhdGUgfCB1bmRlZmluZWQ7XG5cbiAgI19zdGFydGluZ0RheTogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gICNfdmFsdWU6IGFueTtcblxuICAjX3llYXJSZXF1aXJlZDogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IGZhbHNlO1xuXG4gICNjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWY7XG4gICNjb25maWdTZXJ2aWNlOiBTa3lEYXRlcGlja2VyQ29uZmlnU2VydmljZTtcbiAgI2VsZW1lbnRSZWY6IEVsZW1lbnRSZWY7XG4gICNmdXp6eURhdGVTZXJ2aWNlOiBTa3lGdXp6eURhdGVTZXJ2aWNlO1xuICAjcmVuZGVyZXI6IFJlbmRlcmVyMjtcbiAgI2RhdGVwaWNrZXJDb21wb25lbnQ6IFNreURhdGVwaWNrZXJDb21wb25lbnQ7XG5cbiAgcmVhZG9ubHkgI2RhdGVwaWNrZXJIb3N0U3ZjID0gaW5qZWN0KFNreURhdGVwaWNrZXJIb3N0U2VydmljZSwge1xuICAgIG9wdGlvbmFsOiB0cnVlLFxuICB9KTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgY29uZmlnU2VydmljZTogU2t5RGF0ZXBpY2tlckNvbmZpZ1NlcnZpY2UsXG4gICAgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBmdXp6eURhdGVTZXJ2aWNlOiBTa3lGdXp6eURhdGVTZXJ2aWNlLFxuICAgIGxvY2FsZVByb3ZpZGVyOiBTa3lBcHBMb2NhbGVQcm92aWRlcixcbiAgICByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIEBPcHRpb25hbCgpIGRhdGVwaWNrZXJDb21wb25lbnQ/OiBTa3lEYXRlcGlja2VyQ29tcG9uZW50LFxuICApIHtcbiAgICBpZiAoIWRhdGVwaWNrZXJDb21wb25lbnQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ1lvdSBtdXN0IHdyYXAgdGhlIGBza3lGdXp6eURhdGVwaWNrZXJJbnB1dGAgZGlyZWN0aXZlIHdpdGhpbiBhICcgK1xuICAgICAgICAgICdgPHNreS1kYXRlcGlja2VyPmAgY29tcG9uZW50IScsXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yID0gY2hhbmdlRGV0ZWN0b3I7XG4gICAgdGhpcy4jY29uZmlnU2VydmljZSA9IGNvbmZpZ1NlcnZpY2U7XG4gICAgdGhpcy4jZWxlbWVudFJlZiA9IGVsZW1lbnRSZWY7XG4gICAgdGhpcy4jZnV6enlEYXRlU2VydmljZSA9IGZ1enp5RGF0ZVNlcnZpY2U7XG4gICAgdGhpcy4jcmVuZGVyZXIgPSByZW5kZXJlcjtcbiAgICB0aGlzLiNkYXRlcGlja2VyQ29tcG9uZW50ID0gZGF0ZXBpY2tlckNvbXBvbmVudDtcblxuICAgIHRoaXMuI2xvY2FsZSA9IGxvY2FsZVByb3ZpZGVyLmRlZmF1bHRMb2NhbGU7XG4gICAgbG9jYWxlUHJvdmlkZXJcbiAgICAgIC5nZXRMb2NhbGVJbmZvKClcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKGxvY2FsZUluZm8pID0+IHtcbiAgICAgICAgdGhpcy4jbG9jYWxlID0gbG9jYWxlSW5mby5sb2NhbGU7XG4gICAgICAgIFNreURhdGVGb3JtYXR0ZXIuc2V0TG9jYWxlKHRoaXMuI2xvY2FsZSk7XG4gICAgICAgIHRoaXMuI3ByZWZlcnJlZFNob3J0RGF0ZUZvcm1hdCA9XG4gICAgICAgICAgU2t5RGF0ZUZvcm1hdHRlci5nZXRQcmVmZXJyZWRTaG9ydERhdGVGb3JtYXQoKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy4jZGF0ZXBpY2tlckhvc3RTdmM/LmZvY3Vzb3V0XG4gICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSlcbiAgICAgIC5zdWJzY3JpYmUoKGV2dCkgPT4ge1xuICAgICAgICBjb25zdCBpc0ZvY3VzaW5nSW5wdXQgPVxuICAgICAgICAgIGV2dC5yZWxhdGVkVGFyZ2V0ID09PSB0aGlzLiNlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICAgICAgaWYgKCFpc0ZvY3VzaW5nSW5wdXQpIHtcbiAgICAgICAgICB0aGlzLiNub3RpZnlUb3VjaGVkPy4oKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMueWVhclJlcXVpcmVkKSB7XG4gICAgICBpZiAodGhpcy5kYXRlRm9ybWF0Py50b0xvd2VyQ2FzZSgpLmluZGV4T2YoJ3knKSA9PT0gLTEpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICdZb3UgaGF2ZSBjb25maWd1cmVkIGNvbmZsaWN0aW5nIHNldHRpbmdzLiBZZWFyIGlzIHJlcXVpcmVkIGFuZCBkYXRlRm9ybWF0IGRvZXMgbm90IGluY2x1ZGUgeWVhci4nLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLiNlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICB0aGlzLiNyZW5kZXJlci5hZGRDbGFzcyhlbGVtZW50LCAnc2t5LWZvcm0tY29udHJvbCcpO1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLiNkYXRlcGlja2VyQ29tcG9uZW50LmRhdGVDaGFuZ2VcbiAgICAgIC5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksIHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKHZhbHVlOiBEYXRlKSA9PiB7XG4gICAgICAgIHRoaXMuI3ZhbHVlID0gdmFsdWU7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgLy8gVGhpcyBpcyBuZWVkZWQgdG8gYWRkcmVzcyBhIGJ1ZyBpbiBBbmd1bGFyIDQuXG4gICAgLy8gV2hlbiBhIGNvbnRyb2wgdmFsdWUgaXMgc2V0IGluaXRpYWxseSwgaXRzIHZhbHVlIGlzIG5vdCByZXByZXNlbnRlZCBvbiB0aGUgdmlldy5cbiAgICAvLyBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzEzNzkyXG4gICAgLy8gT2Ygbm90ZSBpcyB0aGUgcGFyZW50IGNoZWNrIHdoaWNoIGFsbG93cyB1cyB0byBkZXRlcm1pbmUgaWYgdGhlIGZvcm0gaXMgcmVhY3RpdmUuXG4gICAgLy8gV2l0aG91dCB0aGlzIGNoZWNrIHRoZXJlIGlzIGEgY2hhbmdlZCBiZWZvcmUgY2hlY2tlZCBlcnJvclxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG5cbiAgICBpZiAodGhpcy4jY29udHJvbCAmJiB0aGlzLiNjb250cm9sLnBhcmVudCkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuI2NvbnRyb2w/LnNldFZhbHVlKHRoaXMuI3ZhbHVlLCB7XG4gICAgICAgICAgZW1pdEV2ZW50OiBmYWxzZSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignY2hhbmdlJywgWyckZXZlbnQnXSlcbiAgcHVibGljIG9uSW5wdXRDaGFuZ2UoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuI29uVmFsdWVDaGFuZ2UoZXZlbnQudGFyZ2V0LnZhbHVlKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2JsdXInKVxuICBwdWJsaWMgb25JbnB1dEJsdXIoKTogdm9pZCB7XG4gICAgY29uc3QgZm9ybWF0dGVkRGF0ZSA9IHRoaXMuI2Z1enp5RGF0ZVNlcnZpY2UuZm9ybWF0KFxuICAgICAgdGhpcy4jdmFsdWUsXG4gICAgICB0aGlzLmRhdGVGb3JtYXQsXG4gICAgICB0aGlzLiNsb2NhbGUsXG4gICAgKTtcblxuICAgIGlmICh0aGlzLiNjb250cm9sPy52YWxpZCkge1xuICAgICAgdGhpcy4jc2V0SW5wdXRFbGVtZW50VmFsdWUoZm9ybWF0dGVkRGF0ZSk7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignaW5wdXQnKVxuICBwdWJsaWMgb25JbnB1dCgpOiB2b2lkIHtcbiAgICB0aGlzLiNjb250cm9sPy5tYXJrQXNEaXJ0eSgpO1xuICB9XG5cbiAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuI3VwZGF0ZVZhbHVlKHZhbHVlLCBmYWxzZSk7XG4gIH1cblxuICBwdWJsaWMgdmFsaWRhdGUoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIGlmICghdGhpcy4jY29udHJvbCkge1xuICAgICAgdGhpcy4jY29udHJvbCA9IGNvbnRyb2w7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc2t5RGF0ZXBpY2tlck5vVmFsaWRhdGUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmICghdGhpcy4jY29udHJvbC52YWx1ZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgdmFsdWU6IGFueSA9IGNvbnRyb2wudmFsdWU7XG5cbiAgICBsZXQgZnV6enlEYXRlOiBTa3lGdXp6eURhdGUgfCB1bmRlZmluZWQ7XG4gICAgbGV0IHZhbGlkYXRpb25FcnJvcjogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPSBudWxsO1xuXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGZ1enp5RGF0ZSA9IHRoaXMuI2Z1enp5RGF0ZVNlcnZpY2UuZ2V0RnV6enlEYXRlRnJvbVN0cmluZyhcbiAgICAgICAgdmFsdWUsXG4gICAgICAgIHRoaXMuZGF0ZUZvcm1hdCxcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZ1enp5RGF0ZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIGlmICghZnV6enlEYXRlKSB7XG4gICAgICB2YWxpZGF0aW9uRXJyb3IgPSB7XG4gICAgICAgIHNreUZ1enp5RGF0ZToge1xuICAgICAgICAgIGludmFsaWQ6IHZhbHVlLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFmdXp6eURhdGUueWVhciAmJiB0aGlzLnllYXJSZXF1aXJlZCkge1xuICAgICAgICB2YWxpZGF0aW9uRXJyb3IgPSB7XG4gICAgICAgICAgc2t5RnV6enlEYXRlOiB7XG4gICAgICAgICAgICB5ZWFyUmVxdWlyZWQ6IHZhbHVlLFxuICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGlmICghdmFsaWRhdGlvbkVycm9yICYmIGZ1enp5RGF0ZS55ZWFyKSB7XG4gICAgICAgIGxldCBmdXp6eURhdGVSYW5nZTtcblxuICAgICAgICBpZiAodGhpcy5tYXhEYXRlKSB7XG4gICAgICAgICAgZnV6enlEYXRlUmFuZ2UgPSB0aGlzLiNmdXp6eURhdGVTZXJ2aWNlLmdldEZ1enp5RGF0ZVJhbmdlKFxuICAgICAgICAgICAgZnV6enlEYXRlLFxuICAgICAgICAgICAgdGhpcy5tYXhEYXRlLFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBpZiAoIWZ1enp5RGF0ZVJhbmdlLnZhbGlkKSB7XG4gICAgICAgICAgICB2YWxpZGF0aW9uRXJyb3IgPSB7XG4gICAgICAgICAgICAgIHNreUZ1enp5RGF0ZToge1xuICAgICAgICAgICAgICAgIG1heERhdGU6IHZhbHVlLFxuICAgICAgICAgICAgICAgIG1heERhdGVGb3JtYXR0ZWQ6IHRoaXMuI2RhdGVGb3JtYXR0ZXIuZm9ybWF0KFxuICAgICAgICAgICAgICAgICAgZnV6enlEYXRlUmFuZ2UuZW5kRGF0ZSxcbiAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZUZvcm1hdCxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXZhbGlkYXRpb25FcnJvciAmJiB0aGlzLm1pbkRhdGUpIHtcbiAgICAgICAgICBmdXp6eURhdGVSYW5nZSA9IHRoaXMuI2Z1enp5RGF0ZVNlcnZpY2UuZ2V0RnV6enlEYXRlUmFuZ2UoXG4gICAgICAgICAgICB0aGlzLm1pbkRhdGUsXG4gICAgICAgICAgICBmdXp6eURhdGUsXG4gICAgICAgICAgKTtcbiAgICAgICAgICBpZiAoIWZ1enp5RGF0ZVJhbmdlLnZhbGlkKSB7XG4gICAgICAgICAgICB2YWxpZGF0aW9uRXJyb3IgPSB7XG4gICAgICAgICAgICAgIHNreUZ1enp5RGF0ZToge1xuICAgICAgICAgICAgICAgIG1pbkRhdGU6IHZhbHVlLFxuICAgICAgICAgICAgICAgIG1pbkRhdGVGb3JtYXR0ZWQ6IHRoaXMuI2RhdGVGb3JtYXR0ZXIuZm9ybWF0KFxuICAgICAgICAgICAgICAgICAgZnV6enlEYXRlUmFuZ2Uuc3RhcnREYXRlLFxuICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlRm9ybWF0LFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdmFsaWRhdGlvbkVycm9yICYmIHRoaXMuZnV0dXJlRGlzYWJsZWQpIHtcbiAgICAgICAgICBmdXp6eURhdGVSYW5nZSA9IHRoaXMuI2Z1enp5RGF0ZVNlcnZpY2UuZ2V0RnV6enlEYXRlUmFuZ2UoXG4gICAgICAgICAgICBmdXp6eURhdGUsXG4gICAgICAgICAgICB0aGlzLiNmdXp6eURhdGVTZXJ2aWNlLmdldEN1cnJlbnRGdXp6eURhdGUoKSxcbiAgICAgICAgICApO1xuICAgICAgICAgIGlmICghZnV6enlEYXRlUmFuZ2UudmFsaWQpIHtcbiAgICAgICAgICAgIHZhbGlkYXRpb25FcnJvciA9IHtcbiAgICAgICAgICAgICAgc2t5RnV6enlEYXRlOiB7XG4gICAgICAgICAgICAgICAgZnV0dXJlRGlzYWJsZWQ6IHZhbHVlLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodmFsaWRhdGlvbkVycm9yKSB7XG4gICAgICAvLyBNYXJrIHRoZSBpbnZhbGlkIGNvbnRyb2wgYXMgdG91Y2hlZCBzbyB0aGF0IHRoZSBpbnB1dCdzIGludmFsaWQgQ1NTIHN0eWxlcyBhcHBlYXIuXG4gICAgICAvLyAoVGhpcyBpcyBvbmx5IHJlcXVpcmVkIHdoZW4gdGhlIGludmFsaWQgdmFsdWUgaXMgc2V0IGJ5IHRoZSBGb3JtQ29udHJvbCBjb25zdHJ1Y3Rvci4pXG4gICAgICB0aGlzLiNjb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWRhdGlvbkVycm9yO1xuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogYW55KSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy4jb25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuI25vdGlmeVRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy4jb25WYWxpZGF0b3JDaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHB1YmxpYyBzZXREaXNhYmxlZFN0YXRlKGRpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGRpc2FibGVkO1xuICAgIHRoaXMuI2RhdGVwaWNrZXJDb21wb25lbnQuZGlzYWJsZWQgPSBkaXNhYmxlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlY3RzIGNoYW5nZXMgdG8gdGhlIHVuZGVybHlpbmcgaW5wdXQgZWxlbWVudCdzIHZhbHVlIGFuZCB1cGRhdGVzIHRoZSBuZ01vZGVsIGFjY29yZGluZ2x5LlxuICAgKiBUaGlzIGlzIHVzZWZ1bCBpZiB5b3UgbmVlZCB0byB1cGRhdGUgdGhlIG5nTW9kZWwgdmFsdWUgYmVmb3JlIHRoZSBpbnB1dCBlbGVtZW50IGxvc2VzIGZvY3VzLlxuICAgKi9cbiAgcHVibGljIGRldGVjdElucHV0VmFsdWVDaGFuZ2UoKTogdm9pZCB7XG4gICAgdGhpcy4jb25WYWx1ZUNoYW5nZSh0aGlzLiNlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQudmFsdWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uRm9jdXNvdXQoZXZ0OiBGb2N1c0V2ZW50KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLiNkYXRlcGlja2VySG9zdFN2Yz8uaXNGb2N1c2luZ0RhdGVwaWNrZXIoZXZ0KSkge1xuICAgICAgdGhpcy4jbm90aWZ5VG91Y2hlZD8uKCk7XG4gICAgfVxuICB9XG5cbiAgI29uVmFsdWVDaGFuZ2UobmV3VmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuI3ZhbHVlID0gbmV3VmFsdWU7XG4gIH1cblxuICAjc2V0SW5wdXRFbGVtZW50VmFsdWUodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuI3JlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMuI2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ3ZhbHVlJywgdmFsdWUpO1xuICB9XG5cbiAgI2dldE1heERhdGUoKTogRGF0ZSB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHRoaXMubWF4RGF0ZSkge1xuICAgICAgY29uc3QgbWF4RGF0ZSA9IHRoaXMuI2Z1enp5RGF0ZVNlcnZpY2UuZ2V0TW9tZW50RnJvbUZ1enp5RGF0ZShcbiAgICAgICAgdGhpcy5tYXhEYXRlLFxuICAgICAgKTtcbiAgICAgIGlmIChtYXhEYXRlLmlzVmFsaWQoKSkge1xuICAgICAgICByZXR1cm4gbWF4RGF0ZS50b0RhdGUoKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMuZnV0dXJlRGlzYWJsZWQpIHtcbiAgICAgIHJldHVybiBuZXcgRGF0ZSgpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy4jY29uZmlnU2VydmljZS5tYXhEYXRlO1xuICB9XG5cbiAgI2dldE1pbkRhdGUoKTogRGF0ZSB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHRoaXMubWluRGF0ZSkge1xuICAgICAgY29uc3QgbWluRGF0ZSA9IHRoaXMuI2Z1enp5RGF0ZVNlcnZpY2UuZ2V0TW9tZW50RnJvbUZ1enp5RGF0ZShcbiAgICAgICAgdGhpcy5taW5EYXRlLFxuICAgICAgKTtcbiAgICAgIGlmIChtaW5EYXRlLmlzVmFsaWQoKSkge1xuICAgICAgICByZXR1cm4gbWluRGF0ZS50b0RhdGUoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuI2NvbmZpZ1NlcnZpY2UubWluRGF0ZTtcbiAgfVxuXG4gICNnZXRTdGFydEF0RGF0ZSgpOiBEYXRlIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAodGhpcy5zdGFydEF0RGF0ZSkge1xuICAgICAgY29uc3Qgc3RhcnRBdERhdGUgPSB0aGlzLiNmdXp6eURhdGVTZXJ2aWNlLmdldE1vbWVudEZyb21GdXp6eURhdGUoXG4gICAgICAgIHRoaXMuc3RhcnRBdERhdGUsXG4gICAgICApO1xuICAgICAgaWYgKHN0YXJ0QXREYXRlLmlzVmFsaWQoKSkge1xuICAgICAgICByZXR1cm4gc3RhcnRBdERhdGUudG9EYXRlKCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzLiNjb25maWdTZXJ2aWNlLnN0YXJ0QXREYXRlO1xuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgI2Z1enp5RGF0ZXNFcXVhbChkYXRlQT86IFNreUZ1enp5RGF0ZSwgZGF0ZUI/OiBTa3lGdXp6eURhdGUpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISEoXG4gICAgICBkYXRlQSAmJlxuICAgICAgZGF0ZUIgJiZcbiAgICAgICgoIWRhdGVBLmRheSAmJiAhZGF0ZUIuZGF5KSB8fCBkYXRlQS5kYXkgPT09IGRhdGVCLmRheSkgJiZcbiAgICAgICgoIWRhdGVBLm1vbnRoICYmICFkYXRlQi5tb250aCkgfHwgZGF0ZUEubW9udGggPT09IGRhdGVCLm1vbnRoKSAmJlxuICAgICAgKCghZGF0ZUEueWVhciAmJiAhZGF0ZUIueWVhcikgfHwgZGF0ZUEueWVhciA9PT0gZGF0ZUIueWVhcilcbiAgICApO1xuICB9XG5cbiAgLy8gaXN0YW5idWwgaWdub3JlIG5leHRcbiAgI29uQ2hhbmdlID0gKF86IGFueSk6IHZvaWQgPT4ge307XG4gIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG4gICNvblZhbGlkYXRvckNoYW5nZSA9ICgpOiB2b2lkID0+IHt9O1xuXG4gIC8qKlxuICAgKiBVcGRhdGUgdGhlIHZhbHVlIG9mIHRoZSBmb3JtIGNvbnRyb2wgYW5kIGlucHV0IGVsZW1lbnRcbiAgICogQHBhcmFtIGVtaXRFdmVudCBEZW5vdGVzIGlmIHdlIGVtaXQgYW4gZXZlbnQgdG8gdGhlIGNvbnN1bWVyJ3MgZm9ybSBjb250cm9sLiBXZSBkbyBub3Qgd2FudCB0byBkbyB0aGlzIGlmIHRoZSB2YWx1ZSBpcyBiZWluZyB1cGRhdGVkIHZpYSBhIGBzZXRWYWx1ZWAgY2FsbCBvciBhIGBwYXRjaFZhbHVlYCBjYWxsIGFzIHRoaXMgaXMgYWxyZWFkeSBoYW5kbGVkIGJ5IEFuZ3VsYXIuXG4gICAqIEluIHRoZXNlIGNhc2VzIHdlIGRvIG5vdCB3YW50IHRvIGZpcmUgYG9uQ2hhbmdlYCBhcyBpdCB3aWxsIGNhdXNlIGV4dHJhIGB2YWx1ZUNoYW5nZWAgYW5kIGBzdGF0dXNDaGFuZ2VgIGV2ZW50cyBhbmQgdGhlIHN0YXR1cyBvZiB0aGUgZm9ybSBzaG91bGQgbm90IGJlIGFmZmVjdGVkIGJ5IHRoZXNlIGNoYW5nZXMuXG4gICAqL1xuICAjdXBkYXRlVmFsdWUodmFsdWU6IGFueSwgZW1pdEV2ZW50ID0gdHJ1ZSk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgIHRoaXMuI192YWx1ZSA9PT0gdmFsdWUgfHxcbiAgICAgICh0aGlzLiNfdmFsdWUgPT09IHVuZGVmaW5lZCAmJiB2YWx1ZSA9PT0gbnVsbClcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgZnV6enlEYXRlOiBTa3lGdXp6eURhdGUgfCB1bmRlZmluZWQ7XG4gICAgbGV0IGZ1enp5TW9tZW50OiBhbnk7XG4gICAgbGV0IGRhdGVWYWx1ZTogRGF0ZSB8IHVuZGVmaW5lZDtcbiAgICBsZXQgZm9ybWF0dGVkRGF0ZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgZGF0ZVZhbHVlID0gdmFsdWU7XG4gICAgICBmb3JtYXR0ZWREYXRlID0gdGhpcy4jZGF0ZUZvcm1hdHRlci5mb3JtYXQodmFsdWUsIHRoaXMuZGF0ZUZvcm1hdCk7XG4gICAgICBmdXp6eURhdGUgPSB0aGlzLiNmdXp6eURhdGVTZXJ2aWNlLmdldEZ1enp5RGF0ZUZyb21TZWxlY3RlZERhdGUoXG4gICAgICAgIHZhbHVlLFxuICAgICAgICB0aGlzLmRhdGVGb3JtYXQsXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgZnV6enlEYXRlID0gdGhpcy4jZnV6enlEYXRlU2VydmljZS5nZXRGdXp6eURhdGVGcm9tU3RyaW5nKFxuICAgICAgICB2YWx1ZSxcbiAgICAgICAgdGhpcy5kYXRlRm9ybWF0LFxuICAgICAgKTtcbiAgICAgIGlmIChmdXp6eURhdGUpIHtcbiAgICAgICAgZm9ybWF0dGVkRGF0ZSA9IHRoaXMuI2Z1enp5RGF0ZVNlcnZpY2UuZm9ybWF0KFxuICAgICAgICAgIGZ1enp5RGF0ZSxcbiAgICAgICAgICB0aGlzLmRhdGVGb3JtYXQsXG4gICAgICAgICAgdGhpcy4jbG9jYWxlLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWZvcm1hdHRlZERhdGUpIHtcbiAgICAgICAgZm9ybWF0dGVkRGF0ZSA9IHZhbHVlO1xuICAgICAgfVxuXG4gICAgICBmdXp6eU1vbWVudCA9IHRoaXMuI2Z1enp5RGF0ZVNlcnZpY2UuZ2V0TW9tZW50RnJvbUZ1enp5RGF0ZShmdXp6eURhdGUpO1xuXG4gICAgICBpZiAoZnV6enlNb21lbnQpIHtcbiAgICAgICAgZGF0ZVZhbHVlID0gZnV6enlNb21lbnQudG9EYXRlKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGZ1enp5RGF0ZSA9IHZhbHVlIGFzIFNreUZ1enp5RGF0ZTtcbiAgICAgIGZvcm1hdHRlZERhdGUgPSB0aGlzLiNmdXp6eURhdGVTZXJ2aWNlLmZvcm1hdChcbiAgICAgICAgZnV6enlEYXRlLFxuICAgICAgICB0aGlzLmRhdGVGb3JtYXQsXG4gICAgICAgIHRoaXMuI2xvY2FsZSxcbiAgICAgICk7XG4gICAgICBmdXp6eU1vbWVudCA9IHRoaXMuI2Z1enp5RGF0ZVNlcnZpY2UuZ2V0TW9tZW50RnJvbUZ1enp5RGF0ZShmdXp6eURhdGUpO1xuXG4gICAgICBpZiAoZnV6enlNb21lbnQpIHtcbiAgICAgICAgZGF0ZVZhbHVlID0gZnV6enlNb21lbnQudG9EYXRlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgYXJlRnV6enlEYXRlc0VxdWFsID0gdGhpcy4jZnV6enlEYXRlc0VxdWFsKHRoaXMuI192YWx1ZSwgZnV6enlEYXRlKTtcbiAgICBjb25zdCBpc05ld1ZhbHVlID0gZnV6enlEYXRlICE9PSB0aGlzLiNfdmFsdWUgfHwgIWFyZUZ1enp5RGF0ZXNFcXVhbDtcblxuICAgIHRoaXMuI192YWx1ZSA9IGZ1enp5RGF0ZSB8fCB2YWx1ZTtcblxuICAgIGlmIChpc05ld1ZhbHVlKSB7XG4gICAgICBpZiAoZW1pdEV2ZW50KSB7XG4gICAgICAgIHRoaXMuI29uQ2hhbmdlKHRoaXMuI192YWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLiNjb250cm9sPy5zZXRWYWx1ZSh0aGlzLiNfdmFsdWUsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgIH1cblxuICAgICAgdGhpcy4jZGF0ZXBpY2tlckNvbXBvbmVudC5zZWxlY3RlZERhdGUgPSBkYXRlVmFsdWU7XG4gICAgfVxuXG4gICAgdGhpcy4jc2V0SW5wdXRFbGVtZW50VmFsdWUoZm9ybWF0dGVkRGF0ZSB8fCAnJyk7XG4gIH1cbn1cbiJdfQ==","import { NgModule } from '@angular/core';\nimport { SkyDatepickerCalendarInnerComponent } from './calendar/datepicker-calendar-inner.component';\nimport { SkyDatepickerCalendarComponent } from './calendar/datepicker-calendar.component';\nimport { SkyDatepickerCalendarService } from './calendar/datepicker-calendar.service';\nimport { SkyDayPickerButtonComponent } from './calendar/daypicker-button.component';\nimport { SkyDayPickerCellComponent } from './calendar/daypicker-cell.component';\nimport { SkyDayPickerComponent } from './calendar/daypicker.component';\nimport { SkyMonthPickerComponent } from './calendar/monthpicker.component';\nimport { SkyYearPickerComponent } from './calendar/yearpicker.component';\nimport { SkyDatepickerInputDirective } from './datepicker-input.directive';\nimport { SkyDatepickerComponent } from './datepicker.component';\nimport { SkyFuzzyDatepickerInputDirective } from './fuzzy/datepicker-input-fuzzy.directive';\nimport * as i0 from \"@angular/core\";\nexport class SkyDatepickerModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDatepickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDatepickerModule, imports: [SkyDatepickerCalendarComponent,\n SkyDatepickerCalendarInnerComponent,\n SkyDatepickerComponent,\n SkyDatepickerInputDirective,\n SkyDayPickerButtonComponent,\n SkyDayPickerCellComponent,\n SkyDayPickerComponent,\n SkyFuzzyDatepickerInputDirective,\n SkyMonthPickerComponent,\n SkyYearPickerComponent], exports: [SkyDatepickerCalendarComponent,\n SkyDatepickerComponent,\n SkyDatepickerInputDirective,\n SkyFuzzyDatepickerInputDirective] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDatepickerModule, providers: [SkyDatepickerCalendarService], imports: [SkyDatepickerCalendarComponent,\n SkyDatepickerCalendarInnerComponent,\n SkyDatepickerComponent,\n SkyDayPickerButtonComponent,\n SkyDayPickerCellComponent,\n SkyDayPickerComponent,\n SkyMonthPickerComponent,\n SkyYearPickerComponent] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDatepickerModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [\n SkyDatepickerCalendarComponent,\n SkyDatepickerCalendarInnerComponent,\n SkyDatepickerComponent,\n SkyDatepickerInputDirective,\n SkyDayPickerButtonComponent,\n SkyDayPickerCellComponent,\n SkyDayPickerComponent,\n SkyFuzzyDatepickerInputDirective,\n SkyMonthPickerComponent,\n SkyYearPickerComponent,\n ],\n exports: [\n SkyDatepickerCalendarComponent,\n SkyDatepickerComponent,\n SkyDatepickerInputDirective,\n SkyFuzzyDatepickerInputDirective,\n ],\n providers: [SkyDatepickerCalendarService],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUNyRyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUMxRixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUN0RixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNwRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNoRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMzRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7QUF1QjVGLE1BQU0sT0FBTyxtQkFBbUI7OEdBQW5CLG1CQUFtQjsrR0FBbkIsbUJBQW1CLFlBbkI1Qiw4QkFBOEI7WUFDOUIsbUNBQW1DO1lBQ25DLHNCQUFzQjtZQUN0QiwyQkFBMkI7WUFDM0IsMkJBQTJCO1lBQzNCLHlCQUF5QjtZQUN6QixxQkFBcUI7WUFDckIsZ0NBQWdDO1lBQ2hDLHVCQUF1QjtZQUN2QixzQkFBc0IsYUFHdEIsOEJBQThCO1lBQzlCLHNCQUFzQjtZQUN0QiwyQkFBMkI7WUFDM0IsZ0NBQWdDOytHQUl2QixtQkFBbUIsYUFGbkIsQ0FBQyw0QkFBNEIsQ0FBQyxZQWpCdkMsOEJBQThCO1lBQzlCLG1DQUFtQztZQUNuQyxzQkFBc0I7WUFFdEIsMkJBQTJCO1lBQzNCLHlCQUF5QjtZQUN6QixxQkFBcUI7WUFFckIsdUJBQXVCO1lBQ3ZCLHNCQUFzQjs7MkZBVWIsbUJBQW1CO2tCQXJCL0IsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1AsOEJBQThCO3dCQUM5QixtQ0FBbUM7d0JBQ25DLHNCQUFzQjt3QkFDdEIsMkJBQTJCO3dCQUMzQiwyQkFBMkI7d0JBQzNCLHlCQUF5Qjt3QkFDekIscUJBQXFCO3dCQUNyQixnQ0FBZ0M7d0JBQ2hDLHVCQUF1Qjt3QkFDdkIsc0JBQXNCO3FCQUN2QjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsOEJBQThCO3dCQUM5QixzQkFBc0I7d0JBQ3RCLDJCQUEyQjt3QkFDM0IsZ0NBQWdDO3FCQUNqQztvQkFDRCxTQUFTLEVBQUUsQ0FBQyw0QkFBNEIsQ0FBQztpQkFDMUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTa3lEYXRlcGlja2VyQ2FsZW5kYXJJbm5lckNvbXBvbmVudCB9IGZyb20gJy4vY2FsZW5kYXIvZGF0ZXBpY2tlci1jYWxlbmRhci1pbm5lci5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5RGF0ZXBpY2tlckNhbGVuZGFyQ29tcG9uZW50IH0gZnJvbSAnLi9jYWxlbmRhci9kYXRlcGlja2VyLWNhbGVuZGFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lEYXRlcGlja2VyQ2FsZW5kYXJTZXJ2aWNlIH0gZnJvbSAnLi9jYWxlbmRhci9kYXRlcGlja2VyLWNhbGVuZGFyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2t5RGF5UGlja2VyQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi9jYWxlbmRhci9kYXlwaWNrZXItYnV0dG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lEYXlQaWNrZXJDZWxsQ29tcG9uZW50IH0gZnJvbSAnLi9jYWxlbmRhci9kYXlwaWNrZXItY2VsbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5RGF5UGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi9jYWxlbmRhci9kYXlwaWNrZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFNreU1vbnRoUGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi9jYWxlbmRhci9tb250aHBpY2tlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5WWVhclBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4vY2FsZW5kYXIveWVhcnBpY2tlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5RGF0ZXBpY2tlcklucHV0RGlyZWN0aXZlIH0gZnJvbSAnLi9kYXRlcGlja2VyLWlucHV0LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBTa3lEYXRlcGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi9kYXRlcGlja2VyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lGdXp6eURhdGVwaWNrZXJJbnB1dERpcmVjdGl2ZSB9IGZyb20gJy4vZnV6enkvZGF0ZXBpY2tlci1pbnB1dC1mdXp6eS5kaXJlY3RpdmUnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgU2t5RGF0ZXBpY2tlckNhbGVuZGFyQ29tcG9uZW50LFxuICAgIFNreURhdGVwaWNrZXJDYWxlbmRhcklubmVyQ29tcG9uZW50LFxuICAgIFNreURhdGVwaWNrZXJDb21wb25lbnQsXG4gICAgU2t5RGF0ZXBpY2tlcklucHV0RGlyZWN0aXZlLFxuICAgIFNreURheVBpY2tlckJ1dHRvbkNvbXBvbmVudCxcbiAgICBTa3lEYXlQaWNrZXJDZWxsQ29tcG9uZW50LFxuICAgIFNreURheVBpY2tlckNvbXBvbmVudCxcbiAgICBTa3lGdXp6eURhdGVwaWNrZXJJbnB1dERpcmVjdGl2ZSxcbiAgICBTa3lNb250aFBpY2tlckNvbXBvbmVudCxcbiAgICBTa3lZZWFyUGlja2VyQ29tcG9uZW50LFxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgU2t5RGF0ZXBpY2tlckNhbGVuZGFyQ29tcG9uZW50LFxuICAgIFNreURhdGVwaWNrZXJDb21wb25lbnQsXG4gICAgU2t5RGF0ZXBpY2tlcklucHV0RGlyZWN0aXZlLFxuICAgIFNreUZ1enp5RGF0ZXBpY2tlcklucHV0RGlyZWN0aXZlLFxuICBdLFxuICBwcm92aWRlcnM6IFtTa3lEYXRlcGlja2VyQ2FsZW5kYXJTZXJ2aWNlXSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5RGF0ZXBpY2tlck1vZHVsZSB7fVxuIl19","/**\n * The types of calculations available for a date range calculator.\n */\nexport var SkyDateRangeCalculatorType;\n(function (SkyDateRangeCalculatorType) {\n /**\n * Includes an input for a date after the current date.\n */\n SkyDateRangeCalculatorType[SkyDateRangeCalculatorType[\"After\"] = 0] = \"After\";\n /**\n * Includes an input for a date before the current date.\n */\n SkyDateRangeCalculatorType[SkyDateRangeCalculatorType[\"Before\"] = 1] = \"Before\";\n /**\n * Includes two inputs for a range of dates.\n */\n SkyDateRangeCalculatorType[SkyDateRangeCalculatorType[\"Range\"] = 2] = \"Range\";\n /**\n * Does not accept any input but calculates a specific range based on the current date.\n */\n SkyDateRangeCalculatorType[SkyDateRangeCalculatorType[\"Relative\"] = 3] = \"Relative\";\n})(SkyDateRangeCalculatorType || (SkyDateRangeCalculatorType = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS1jYWxjdWxhdG9yLXR5cGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL2RhdGUtcmFuZ2UtcGlja2VyL3R5cGVzL2RhdGUtcmFuZ2UtY2FsY3VsYXRvci10eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFOLElBQVksMEJBb0JYO0FBcEJELFdBQVksMEJBQTBCO0lBQ3BDOztPQUVHO0lBQ0gsNkVBQUssQ0FBQTtJQUVMOztPQUVHO0lBQ0gsK0VBQU0sQ0FBQTtJQUVOOztPQUVHO0lBQ0gsNkVBQUssQ0FBQTtJQUVMOztPQUVHO0lBQ0gsbUZBQVEsQ0FBQTtBQUNWLENBQUMsRUFwQlcsMEJBQTBCLEtBQTFCLDBCQUEwQixRQW9CckMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoZSB0eXBlcyBvZiBjYWxjdWxhdGlvbnMgYXZhaWxhYmxlIGZvciBhIGRhdGUgcmFuZ2UgY2FsY3VsYXRvci5cbiAqL1xuZXhwb3J0IGVudW0gU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvclR5cGUge1xuICAvKipcbiAgICogSW5jbHVkZXMgYW4gaW5wdXQgZm9yIGEgZGF0ZSBhZnRlciB0aGUgY3VycmVudCBkYXRlLlxuICAgKi9cbiAgQWZ0ZXIsXG5cbiAgLyoqXG4gICAqIEluY2x1ZGVzIGFuIGlucHV0IGZvciBhIGRhdGUgYmVmb3JlIHRoZSBjdXJyZW50IGRhdGUuXG4gICAqL1xuICBCZWZvcmUsXG5cbiAgLyoqXG4gICAqIEluY2x1ZGVzIHR3byBpbnB1dHMgZm9yIGEgcmFuZ2Ugb2YgZGF0ZXMuXG4gICAqL1xuICBSYW5nZSxcblxuICAvKipcbiAgICogRG9lcyBub3QgYWNjZXB0IGFueSBpbnB1dCBidXQgY2FsY3VsYXRlcyBhIHNwZWNpZmljIHJhbmdlIGJhc2VkIG9uIHRoZSBjdXJyZW50IGRhdGUuXG4gICAqL1xuICBSZWxhdGl2ZSxcbn1cbiJdfQ==","import { Pipe } from '@angular/core';\nimport { SkyDateRangeCalculatorType } from './types/date-range-calculator-type';\nimport * as i0 from \"@angular/core\";\nexport class SkyDateRangePickerEndDateResourceKeyPipe {\n transform(calculatorType) {\n if (calculatorType === SkyDateRangeCalculatorType.Range) {\n return 'skyux_date_range_picker_end_date_label';\n }\n return 'skyux_date_range_picker_before_date_label';\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDateRangePickerEndDateResourceKeyPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDateRangePickerEndDateResourceKeyPipe, isStandalone: true, name: \"skyDateRangePickerEndDateResourceKey\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDateRangePickerEndDateResourceKeyPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'skyDateRangePickerEndDateResourceKey',\n standalone: true,\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS1waWNrZXItZW5kLWRhdGUtcmVzb3VyY2Uta2V5LnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL2RhdGUtcmFuZ2UtcGlja2VyL2RhdGUtcmFuZ2UtcGlja2VyLWVuZC1kYXRlLXJlc291cmNlLWtleS5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBRXBELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOztBQU1oRixNQUFNLE9BQU8sd0NBQXdDO0lBQzVDLFNBQVMsQ0FDZCxjQUFzRDtRQUV0RCxJQUFJLGNBQWMsS0FBSywwQkFBMEIsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN4RCxPQUFPLHdDQUF3QyxDQUFDO1FBQ2xELENBQUM7UUFFRCxPQUFPLDJDQUEyQyxDQUFDO0lBQ3JELENBQUM7OEdBVFUsd0NBQXdDOzRHQUF4Qyx3Q0FBd0M7OzJGQUF4Qyx3Q0FBd0M7a0JBSnBELElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLHNDQUFzQztvQkFDNUMsVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9yVHlwZSB9IGZyb20gJy4vdHlwZXMvZGF0ZS1yYW5nZS1jYWxjdWxhdG9yLXR5cGUnO1xuXG5AUGlwZSh7XG4gIG5hbWU6ICdza3lEYXRlUmFuZ2VQaWNrZXJFbmREYXRlUmVzb3VyY2VLZXknLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lEYXRlUmFuZ2VQaWNrZXJFbmREYXRlUmVzb3VyY2VLZXlQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHB1YmxpYyB0cmFuc2Zvcm0oXG4gICAgY2FsY3VsYXRvclR5cGU6IFNreURhdGVSYW5nZUNhbGN1bGF0b3JUeXBlIHwgdW5kZWZpbmVkLFxuICApOiBzdHJpbmcge1xuICAgIGlmIChjYWxjdWxhdG9yVHlwZSA9PT0gU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvclR5cGUuUmFuZ2UpIHtcbiAgICAgIHJldHVybiAnc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZW5kX2RhdGVfbGFiZWwnO1xuICAgIH1cblxuICAgIHJldHVybiAnc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfYmVmb3JlX2RhdGVfbGFiZWwnO1xuICB9XG59XG4iXX0=","import { Pipe } from '@angular/core';\nimport { SkyDateRangeCalculatorType } from './types/date-range-calculator-type';\nimport * as i0 from \"@angular/core\";\nexport class SkyDateRangePickerStartDateResourceKeyPipe {\n transform(calculatorType) {\n if (calculatorType === SkyDateRangeCalculatorType.Range) {\n return 'skyux_date_range_picker_start_date_label';\n }\n return 'skyux_date_range_picker_after_date_label';\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDateRangePickerStartDateResourceKeyPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDateRangePickerStartDateResourceKeyPipe, isStandalone: true, name: \"skyDateRangePickerStartDateResourceKey\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDateRangePickerStartDateResourceKeyPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'skyDateRangePickerStartDateResourceKey',\n standalone: true,\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS1waWNrZXItc3RhcnQtZGF0ZS1yZXNvdXJjZS1rZXkucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9kYXRldGltZS9zcmMvbGliL21vZHVsZXMvZGF0ZS1yYW5nZS1waWNrZXIvZGF0ZS1yYW5nZS1waWNrZXItc3RhcnQtZGF0ZS1yZXNvdXJjZS1rZXkucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUVwRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7QUFNaEYsTUFBTSxPQUFPLDBDQUEwQztJQUc5QyxTQUFTLENBQ2QsY0FBc0Q7UUFFdEQsSUFBSSxjQUFjLEtBQUssMEJBQTBCLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDeEQsT0FBTywwQ0FBMEMsQ0FBQztRQUNwRCxDQUFDO1FBRUQsT0FBTywwQ0FBMEMsQ0FBQztJQUNwRCxDQUFDOzhHQVhVLDBDQUEwQzs0R0FBMUMsMENBQTBDOzsyRkFBMUMsMENBQTBDO2tCQUp0RCxJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSx3Q0FBd0M7b0JBQzlDLFVBQVUsRUFBRSxJQUFJO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvclR5cGUgfSBmcm9tICcuL3R5cGVzL2RhdGUtcmFuZ2UtY2FsY3VsYXRvci10eXBlJztcblxuQFBpcGUoe1xuICBuYW1lOiAnc2t5RGF0ZVJhbmdlUGlja2VyU3RhcnREYXRlUmVzb3VyY2VLZXknLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lEYXRlUmFuZ2VQaWNrZXJTdGFydERhdGVSZXNvdXJjZUtleVBpcGVcbiAgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtXG57XG4gIHB1YmxpYyB0cmFuc2Zvcm0oXG4gICAgY2FsY3VsYXRvclR5cGU6IFNreURhdGVSYW5nZUNhbGN1bGF0b3JUeXBlIHwgdW5kZWZpbmVkLFxuICApOiBzdHJpbmcge1xuICAgIGlmIChjYWxjdWxhdG9yVHlwZSA9PT0gU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvclR5cGUuUmFuZ2UpIHtcbiAgICAgIHJldHVybiAnc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfc3RhcnRfZGF0ZV9sYWJlbCc7XG4gICAgfVxuXG4gICAgcmV0dXJuICdza3l1eF9kYXRlX3JhbmdlX3BpY2tlcl9hZnRlcl9kYXRlX2xhYmVsJztcbiAgfVxufVxuIl19","import { of } from 'rxjs';\n/**\n * Represents the calculator.\n */\nexport class SkyDateRangeCalculator {\n #config;\n #resourcesSvc;\n /**\n * The text to display in the calculator select menu.\n */\n get shortDescription$() {\n if (this.shortDescription) {\n return of(this.shortDescription);\n }\n if (!this.#shortDescriptionResourceKey) {\n throw new Error('Calculator created without short description or resource key.');\n }\n return this.#resourcesSvc.getString(this.#shortDescriptionResourceKey);\n }\n #shortDescriptionResourceKey;\n constructor(\n /**\n * The calculator ID that specifies calculator objects that represent date ranges.\n */\n calculatorId, config, resourcesSvc, _shortDescriptionResourceKey) {\n this.calculatorId = calculatorId;\n this.#config = config;\n this.type = config.type;\n this.shortDescription = config.shortDescription;\n this.#shortDescriptionResourceKey = _shortDescriptionResourceKey;\n this.#resourcesSvc = resourcesSvc;\n }\n /**\n * Gets the current value of the calculator.\n * @param startDateInput The start date.\n * @param endDateInput The end date.\n */\n getValue(startDateInput, endDateInput) {\n const result = this.#config.getValue(startDateInput, endDateInput);\n let startDate = null;\n if (result.startDate instanceof Date) {\n startDate = this.#parseDateWithoutTime(result.startDate);\n }\n let endDate = null;\n if (result.endDate instanceof Date) {\n endDate = this.#parseDateWithoutTime(result.endDate);\n }\n return {\n calculatorId: this.calculatorId,\n startDate,\n endDate,\n };\n }\n /**\n * Performs synchronous validation against the control.\n */\n validate(value) {\n if (!this.#config.validate) {\n return null;\n }\n return this.#config.validate(value);\n }\n /**\n * Get a date object without time information.\n * See: https://stackoverflow.com/a/38050824/6178885\n */\n #parseDateWithoutTime(date) {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate());\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS1jYWxjdWxhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2RhdGV0aW1lL3NyYy9saWIvbW9kdWxlcy9kYXRlLXJhbmdlLXBpY2tlci90eXBlcy9kYXRlLXJhbmdlLWNhbGN1bGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQVF0Qzs7R0FFRztBQUNILE1BQU0sT0FBTyxzQkFBc0I7SUFDakMsT0FBTyxDQUErQjtJQUN0QyxhQUFhLENBQXlCO0lBRXRDOztPQUVHO0lBQ0gsSUFBVyxpQkFBaUI7UUFDMUIsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUMxQixPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNuQyxDQUFDO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyw0QkFBNEIsRUFBRSxDQUFDO1lBQ3ZDLE1BQU0sSUFBSSxLQUFLLENBQ2IsK0RBQStELENBQ2hFLENBQUM7UUFDSixDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsNEJBQTRCLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBUUQsNEJBQTRCLENBQXFCO0lBT2pEO0lBQ0U7O09BRUc7SUFDYSxZQUFzQyxFQUN0RCxNQUFvQyxFQUNwQyxZQUFvQyxFQUNwQyw0QkFBcUM7UUFIckIsaUJBQVksR0FBWixZQUFZLENBQTBCO1FBS3RELElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQztRQUN4QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDO1FBQ2hELElBQUksQ0FBQyw0QkFBNEIsR0FBRyw0QkFBNEIsQ0FBQztRQUNqRSxJQUFJLENBQUMsYUFBYSxHQUFHLFlBQVksQ0FBQztJQUNwQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFFBQVEsQ0FDYixjQUE0QixFQUM1QixZQUEwQjtRQUUxQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFFbkUsSUFBSSxTQUFTLEdBQWdCLElBQUksQ0FBQztRQUNsQyxJQUFJLE1BQU0sQ0FBQyxTQUFTLFlBQVksSUFBSSxFQUFFLENBQUM7WUFDckMsU0FBUyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDM0QsQ0FBQztRQUVELElBQUksT0FBTyxHQUFnQixJQUFJLENBQUM7UUFDaEMsSUFBSSxNQUFNLENBQUMsT0FBTyxZQUFZLElBQUksRUFBRSxDQUFDO1lBQ25DLE9BQU8sR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZELENBQUM7UUFFRCxPQUFPO1lBQ0wsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZO1lBQy9CLFNBQVM7WUFDVCxPQUFPO1NBQ1IsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNJLFFBQVEsQ0FBQyxLQUFvQjtRQUNsQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUMzQixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxxQkFBcUIsQ0FBQyxJQUFVO1FBQzlCLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUN2RSxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBWYWxpZGF0aW9uRXJyb3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU2t5TGliUmVzb3VyY2VzU2VydmljZSB9IGZyb20gJ0Bza3l1eC9pMThuJztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU2t5RGF0ZVJhbmdlIH0gZnJvbSAnLi9kYXRlLXJhbmdlJztcbmltcG9ydCB7IFNreURhdGVSYW5nZUNhbGN1bGF0aW9uIH0gZnJvbSAnLi9kYXRlLXJhbmdlLWNhbGN1bGF0aW9uJztcbmltcG9ydCB7IFNreURhdGVSYW5nZUNhbGN1bGF0b3JDb25maWcgfSBmcm9tICcuL2RhdGUtcmFuZ2UtY2FsY3VsYXRvci1jb25maWcnO1xuaW1wb3J0IHsgU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvcklkIH0gZnJvbSAnLi9kYXRlLXJhbmdlLWNhbGN1bGF0b3ItaWQnO1xuaW1wb3J0IHsgU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvclR5cGUgfSBmcm9tICcuL2RhdGUtcmFuZ2UtY2FsY3VsYXRvci10eXBlJztcblxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSBjYWxjdWxhdG9yLlxuICovXG5leHBvcnQgY2xhc3MgU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvciB7XG4gICNjb25maWc6IFNreURhdGVSYW5nZUNhbGN1bGF0b3JDb25maWc7XG4gICNyZXNvdXJjZXNTdmM6IFNreUxpYlJlc291cmNlc1NlcnZpY2U7XG5cbiAgLyoqXG4gICAqIFRoZSB0ZXh0IHRvIGRpc3BsYXkgaW4gdGhlIGNhbGN1bGF0b3Igc2VsZWN0IG1lbnUuXG4gICAqL1xuICBwdWJsaWMgZ2V0IHNob3J0RGVzY3JpcHRpb24kKCk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgaWYgKHRoaXMuc2hvcnREZXNjcmlwdGlvbikge1xuICAgICAgcmV0dXJuIG9mKHRoaXMuc2hvcnREZXNjcmlwdGlvbik7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLiNzaG9ydERlc2NyaXB0aW9uUmVzb3VyY2VLZXkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ0NhbGN1bGF0b3IgY3JlYXRlZCB3aXRob3V0IHNob3J0IGRlc2NyaXB0aW9uIG9yIHJlc291cmNlIGtleS4nLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy4jcmVzb3VyY2VzU3ZjLmdldFN0cmluZyh0aGlzLiNzaG9ydERlc2NyaXB0aW9uUmVzb3VyY2VLZXkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB0ZXh0IHRvIGRpc3BsYXkgaW4gdGhlIGNhbGN1bGF0b3Igc2VsZWN0IG1lbnUuXG4gICAqIEBkZXByZWNhdGVkIFN1YnNjcmliZSB0byB0aGUgYHNob3J0RGVzY3JpcHRpb24kYCBvYnNlcnZhYmxlIGluc3RlYWQuXG4gICAqL1xuICBwdWJsaWMgc2hvcnREZXNjcmlwdGlvbjogc3RyaW5nO1xuXG4gICNzaG9ydERlc2NyaXB0aW9uUmVzb3VyY2VLZXk6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIHR5cGUgb2YgY2FsY3VsYXRpb25zIGF2YWlsYWJsZSBmb3IgdGhlIGRhdGUgcmFuZ2UuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdHlwZTogU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvclR5cGU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgLyoqXG4gICAgICogVGhlIGNhbGN1bGF0b3IgSUQgdGhhdCBzcGVjaWZpZXMgY2FsY3VsYXRvciBvYmplY3RzIHRoYXQgcmVwcmVzZW50IGRhdGUgcmFuZ2VzLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBjYWxjdWxhdG9ySWQ6IFNreURhdGVSYW5nZUNhbGN1bGF0b3JJZCxcbiAgICBjb25maWc6IFNreURhdGVSYW5nZUNhbGN1bGF0b3JDb25maWcsXG4gICAgcmVzb3VyY2VzU3ZjOiBTa3lMaWJSZXNvdXJjZXNTZXJ2aWNlLFxuICAgIF9zaG9ydERlc2NyaXB0aW9uUmVzb3VyY2VLZXk/OiBzdHJpbmcsXG4gICkge1xuICAgIHRoaXMuI2NvbmZpZyA9IGNvbmZpZztcbiAgICB0aGlzLnR5cGUgPSBjb25maWcudHlwZTtcbiAgICB0aGlzLnNob3J0RGVzY3JpcHRpb24gPSBjb25maWcuc2hvcnREZXNjcmlwdGlvbjtcbiAgICB0aGlzLiNzaG9ydERlc2NyaXB0aW9uUmVzb3VyY2VLZXkgPSBfc2hvcnREZXNjcmlwdGlvblJlc291cmNlS2V5O1xuICAgIHRoaXMuI3Jlc291cmNlc1N2YyA9IHJlc291cmNlc1N2YztcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBjYWxjdWxhdG9yLlxuICAgKiBAcGFyYW0gc3RhcnREYXRlSW5wdXQgVGhlIHN0YXJ0IGRhdGUuXG4gICAqIEBwYXJhbSBlbmREYXRlSW5wdXQgVGhlIGVuZCBkYXRlLlxuICAgKi9cbiAgcHVibGljIGdldFZhbHVlKFxuICAgIHN0YXJ0RGF0ZUlucHV0PzogRGF0ZSB8IG51bGwsXG4gICAgZW5kRGF0ZUlucHV0PzogRGF0ZSB8IG51bGwsXG4gICk6IFNreURhdGVSYW5nZUNhbGN1bGF0aW9uIHtcbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLiNjb25maWcuZ2V0VmFsdWUoc3RhcnREYXRlSW5wdXQsIGVuZERhdGVJbnB1dCk7XG5cbiAgICBsZXQgc3RhcnREYXRlOiBEYXRlIHwgbnVsbCA9IG51bGw7XG4gICAgaWYgKHJlc3VsdC5zdGFydERhdGUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICBzdGFydERhdGUgPSB0aGlzLiNwYXJzZURhdGVXaXRob3V0VGltZShyZXN1bHQuc3RhcnREYXRlKTtcbiAgICB9XG5cbiAgICBsZXQgZW5kRGF0ZTogRGF0ZSB8IG51bGwgPSBudWxsO1xuICAgIGlmIChyZXN1bHQuZW5kRGF0ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgIGVuZERhdGUgPSB0aGlzLiNwYXJzZURhdGVXaXRob3V0VGltZShyZXN1bHQuZW5kRGF0ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGNhbGN1bGF0b3JJZDogdGhpcy5jYWxjdWxhdG9ySWQsXG4gICAgICBzdGFydERhdGUsXG4gICAgICBlbmREYXRlLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogUGVyZm9ybXMgc3luY2hyb25vdXMgdmFsaWRhdGlvbiBhZ2FpbnN0IHRoZSBjb250cm9sLlxuICAgKi9cbiAgcHVibGljIHZhbGlkYXRlKHZhbHVlPzogU2t5RGF0ZVJhbmdlKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIGlmICghdGhpcy4jY29uZmlnLnZhbGlkYXRlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy4jY29uZmlnLnZhbGlkYXRlKHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSBkYXRlIG9iamVjdCB3aXRob3V0IHRpbWUgaW5mb3JtYXRpb24uXG4gICAqIFNlZTogaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzM4MDUwODI0LzYxNzg4ODVcbiAgICovXG4gICNwYXJzZURhdGVXaXRob3V0VGltZShkYXRlOiBEYXRlKTogRGF0ZSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKGRhdGUuZ2V0RnVsbFllYXIoKSwgZGF0ZS5nZXRNb250aCgpLCBkYXRlLmdldERhdGUoKSk7XG4gIH1cbn1cbiJdfQ==","/**\n * `SkyDateRangeCalculatorId` values specify calculator objects that return\n * two `Date` objects to represent date ranges. The values populate the options\n * in the date range picker's dropdown. SKY UX uses `SkyDateRangeService` to create\n * calculators and configures each one with a `validate` function to confirm that dates\n * are compatible. For example, `validate` functions ensure that start dates are before\n * end dates. SKY UX also configures calculators to call a `getValue` function after\n * the `validate` function and return a range of two `Date` objects.\n */\nexport var SkyDateRangeCalculatorId;\n(function (SkyDateRangeCalculatorId) {\n /**\n * Selects no dates and considers all dates within the date range. This is the default selection.\n */\n SkyDateRangeCalculatorId[SkyDateRangeCalculatorId[\"AnyTime\"] = 0] = \"AnyTime\";\n /**\n * Enables users to select an end date with no starting date.\n */\n SkyDateRangeCalculatorId[SkyDateRangeCalculatorId[\"Before\"] = 1] = \"Before\";\n /**\n * Enables users to select a start date with no end date.\n */\n SkyDateRangeCalculatorId[SkyDateRangeCalculatorId[\"After\"] = 2] = \"After\";\n /**\n * Enables users to select specific start and end dates.\n */\n SkyDateRangeCalculatorId[SkyDateRangeCalculatorId[\"SpecificRange\"] = 3] = \"SpecificRange\";\n /**\n * Sets the start and end dates to the day before the current day.\n */\n SkyDateRangeCalculatorId[SkyDateRangeCalculatorId[\"Yesterday\"] = 4] = \"Yesterday\";\n /**\n * Sets the start and end dates to the current day.\n */\n SkyDateRangeCalculatorId[SkyDateRangeCalculatorId[\"Today\"] = 5] = \"Today\";\n /**\n * Sets the start and end dates to the day after the current day.\n */\n SkyDateRangeCalculatorId[SkyDateRangeCalculatorId[\"Tomorrow\"] = 6] = \"Tomorrow\";\n /**\n * Sets the start date to Sunday of the week before the current week and\n * the end date to Saturday of that week.\n */\n SkyDateRangeCalculatorId[SkyDateRangeCalculatorId[\"LastWeek\"] = 7] = \"LastWeek\";\n /**\n * Sets the start date to Sunday of the current week and the end date to Saturday.\n */\n SkyDateRangeCalculatorId[SkyDateRangeCalculatorId[\"ThisWeek\"] = 8] = \"ThisWeek\";\n /**\n * Sets the start date to Sunday of the week after the current week and\n * the end date to Saturday of that week.\n */\n SkyDateRangeCalculatorId[SkyDateRangeCalculatorId[\"NextWeek\"] = 9] = \"NextWeek\";\n /**\n * Sets the start date to the first day of the month before the current month and\n * the end date to the last day of that month.\n */\n SkyDateRangeCalculatorId[SkyDateRangeCalculatorId[\"LastMonth\"] = 10] = \"LastMonth\";\n /**\n * Sets the start date to the first day of the current month and\n * the end date to the last day of the month.\n */\n SkyDateRangeCalculatorId[SkyDateRangeCalculatorId[\"ThisMonth\"] = 11] = \"ThisMonth\";\n /**\n * Sets the start date to the first day of the month after the current month\n * and the end date to the last day of that month.\n */\n SkyDateRangeCalculatorId[SkyDateRangeCalculatorId[\"NextMonth\"] = 12] = \"NextMonth\";\n /**\n * Sets the start date to the first day of the quarter before the current quarter and\n * the end date to the last day of that quarter. Quarters are\n * January to March, April to June, July to September, and October to December.\n */\n SkyDateRangeCalculatorId[SkyDateRangeCalculatorId[\"LastQuarter\"] = 13] = \"LastQuarter\";\n /**\n * Sets the start date to the first day of the current quarter and\n * the end date to the last day of the quarter. Quarters are\n * January to March, April to June, July to September, and October to December.\n */\n SkyDateRangeCalculatorId[SkyDateRangeCalculatorId[\"ThisQuarter\"] = 14] = \"ThisQuarter\";\n /**\n * Sets the start date to the first day of the quarter after the current quarter and\n * the end date to the last day of that quarter. Quarters are\n * January to March, April to June, July to September, and October to December.\n */\n SkyDateRangeCalculatorId[SkyDateRangeCalculatorId[\"NextQuarter\"] = 15] = \"NextQuarter\";\n /**\n * Sets the start date to the first day of the year before the current year\n * and the end date to the last day of that year.\n */\n SkyDateRangeCalculatorId[SkyDateRangeCalculatorId[\"LastCalendarYear\"] = 16] = \"LastCalendarYear\";\n /**\n * Sets the start date to the first day of the current year and\n * the end date to the last day of the year.\n */\n SkyDateRangeCalculatorId[SkyDateRangeCalculatorId[\"ThisCalendarYear\"] = 17] = \"ThisCalendarYear\";\n /**\n * Sets the start date to the first day of the year after the current year and\n * the end date to the last day of that year.\n */\n SkyDateRangeCalculatorId[SkyDateRangeCalculatorId[\"NextCalendarYear\"] = 18] = \"NextCalendarYear\";\n /**\n * Sets the start date to the first day of the fiscal year before the current fiscal year and\n * the end date to the last day of that fiscal year. The fiscal year is Oct. 1 to Sept. 30.\n */\n SkyDateRangeCalculatorId[SkyDateRangeCalculatorId[\"LastFiscalYear\"] = 19] = \"LastFiscalYear\";\n /**\n * Sets the start date to the first day of the current fiscal year and\n * the end date to the last day of the fiscal year. The fiscal year is Oct. 1 to Sept. 30.\n */\n SkyDateRangeCalculatorId[SkyDateRangeCalculatorId[\"ThisFiscalYear\"] = 20] = \"ThisFiscalYear\";\n /**\n * Sets the start date to the first day of the fiscal year after the current fiscal year\n * and the end date to the last day of that fiscal year. The fiscal year is Oct. 1 to Sept. 30.\n */\n SkyDateRangeCalculatorId[SkyDateRangeCalculatorId[\"NextFiscalYear\"] = 21] = \"NextFiscalYear\";\n})(SkyDateRangeCalculatorId || (SkyDateRangeCalculatorId = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS1jYWxjdWxhdG9yLWlkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2RhdGV0aW1lL3NyYy9saWIvbW9kdWxlcy9kYXRlLXJhbmdlLXBpY2tlci90eXBlcy9kYXRlLXJhbmdlLWNhbGN1bGF0b3ItaWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLENBQU4sSUFBWSx3QkErSFg7QUEvSEQsV0FBWSx3QkFBd0I7SUFDbEM7O09BRUc7SUFDSCw2RUFBTyxDQUFBO0lBRVA7O09BRUc7SUFDSCwyRUFBTSxDQUFBO0lBRU47O09BRUc7SUFDSCx5RUFBSyxDQUFBO0lBRUw7O09BRUc7SUFDSCx5RkFBYSxDQUFBO0lBRWI7O09BRUc7SUFDSCxpRkFBUyxDQUFBO0lBRVQ7O09BRUc7SUFDSCx5RUFBSyxDQUFBO0lBRUw7O09BRUc7SUFDSCwrRUFBUSxDQUFBO0lBRVI7OztPQUdHO0lBQ0gsK0VBQVEsQ0FBQTtJQUVSOztPQUVHO0lBQ0gsK0VBQVEsQ0FBQTtJQUVSOzs7T0FHRztJQUNILCtFQUFRLENBQUE7SUFFUjs7O09BR0c7SUFDSCxrRkFBUyxDQUFBO0lBRVQ7OztPQUdHO0lBQ0gsa0ZBQVMsQ0FBQTtJQUVUOzs7T0FHRztJQUNILGtGQUFTLENBQUE7SUFFVDs7OztPQUlHO0lBQ0gsc0ZBQVcsQ0FBQTtJQUVYOzs7O09BSUc7SUFDSCxzRkFBVyxDQUFBO0lBRVg7Ozs7T0FJRztJQUNILHNGQUFXLENBQUE7SUFFWDs7O09BR0c7SUFDSCxnR0FBZ0IsQ0FBQTtJQUVoQjs7O09BR0c7SUFDSCxnR0FBZ0IsQ0FBQTtJQUVoQjs7O09BR0c7SUFDSCxnR0FBZ0IsQ0FBQTtJQUVoQjs7O09BR0c7SUFDSCw0RkFBYyxDQUFBO0lBRWQ7OztPQUdHO0lBQ0gsNEZBQWMsQ0FBQTtJQUVkOzs7T0FHRztJQUNILDRGQUFjLENBQUE7QUFDaEIsQ0FBQyxFQS9IVyx3QkFBd0IsS0FBeEIsd0JBQXdCLFFBK0huQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogYFNreURhdGVSYW5nZUNhbGN1bGF0b3JJZGAgdmFsdWVzIHNwZWNpZnkgY2FsY3VsYXRvciBvYmplY3RzIHRoYXQgcmV0dXJuXG4gKiB0d28gYERhdGVgIG9iamVjdHMgdG8gcmVwcmVzZW50IGRhdGUgcmFuZ2VzLiBUaGUgdmFsdWVzIHBvcHVsYXRlIHRoZSBvcHRpb25zXG4gKiBpbiB0aGUgZGF0ZSByYW5nZSBwaWNrZXIncyBkcm9wZG93bi4gU0tZIFVYIHVzZXMgYFNreURhdGVSYW5nZVNlcnZpY2VgIHRvIGNyZWF0ZVxuICogY2FsY3VsYXRvcnMgYW5kIGNvbmZpZ3VyZXMgZWFjaCBvbmUgd2l0aCBhIGB2YWxpZGF0ZWAgZnVuY3Rpb24gdG8gY29uZmlybSB0aGF0IGRhdGVzXG4gKiBhcmUgY29tcGF0aWJsZS4gRm9yIGV4YW1wbGUsIGB2YWxpZGF0ZWAgZnVuY3Rpb25zIGVuc3VyZSB0aGF0IHN0YXJ0IGRhdGVzIGFyZSBiZWZvcmVcbiAqIGVuZCBkYXRlcy4gU0tZIFVYIGFsc28gY29uZmlndXJlcyBjYWxjdWxhdG9ycyB0byBjYWxsIGEgYGdldFZhbHVlYCBmdW5jdGlvbiBhZnRlclxuICogdGhlIGB2YWxpZGF0ZWAgZnVuY3Rpb24gYW5kIHJldHVybiBhIHJhbmdlIG9mIHR3byBgRGF0ZWAgb2JqZWN0cy5cbiAqL1xuZXhwb3J0IGVudW0gU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvcklkIHtcbiAgLyoqXG4gICAqIFNlbGVjdHMgbm8gZGF0ZXMgYW5kIGNvbnNpZGVycyBhbGwgZGF0ZXMgd2l0aGluIHRoZSBkYXRlIHJhbmdlLiBUaGlzIGlzIHRoZSBkZWZhdWx0IHNlbGVjdGlvbi5cbiAgICovXG4gIEFueVRpbWUsXG5cbiAgLyoqXG4gICAqIEVuYWJsZXMgdXNlcnMgdG8gc2VsZWN0IGFuIGVuZCBkYXRlIHdpdGggbm8gc3RhcnRpbmcgZGF0ZS5cbiAgICovXG4gIEJlZm9yZSxcblxuICAvKipcbiAgICogRW5hYmxlcyB1c2VycyB0byBzZWxlY3QgYSBzdGFydCBkYXRlIHdpdGggbm8gZW5kIGRhdGUuXG4gICAqL1xuICBBZnRlcixcblxuICAvKipcbiAgICogRW5hYmxlcyB1c2VycyB0byBzZWxlY3Qgc3BlY2lmaWMgc3RhcnQgYW5kIGVuZCBkYXRlcy5cbiAgICovXG4gIFNwZWNpZmljUmFuZ2UsXG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHN0YXJ0IGFuZCBlbmQgZGF0ZXMgdG8gdGhlIGRheSBiZWZvcmUgdGhlIGN1cnJlbnQgZGF5LlxuICAgKi9cbiAgWWVzdGVyZGF5LFxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBzdGFydCBhbmQgZW5kIGRhdGVzIHRvIHRoZSBjdXJyZW50IGRheS5cbiAgICovXG4gIFRvZGF5LFxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBzdGFydCBhbmQgZW5kIGRhdGVzIHRvIHRoZSBkYXkgYWZ0ZXIgdGhlIGN1cnJlbnQgZGF5LlxuICAgKi9cbiAgVG9tb3Jyb3csXG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHN0YXJ0IGRhdGUgdG8gU3VuZGF5IG9mIHRoZSB3ZWVrIGJlZm9yZSB0aGUgY3VycmVudCB3ZWVrIGFuZFxuICAgKiB0aGUgZW5kIGRhdGUgdG8gU2F0dXJkYXkgb2YgdGhhdCB3ZWVrLlxuICAgKi9cbiAgTGFzdFdlZWssXG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHN0YXJ0IGRhdGUgdG8gU3VuZGF5IG9mIHRoZSBjdXJyZW50IHdlZWsgYW5kIHRoZSBlbmQgZGF0ZSB0byBTYXR1cmRheS5cbiAgICovXG4gIFRoaXNXZWVrLFxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBzdGFydCBkYXRlIHRvIFN1bmRheSBvZiB0aGUgd2VlayBhZnRlciB0aGUgY3VycmVudCB3ZWVrIGFuZFxuICAgKiB0aGUgZW5kIGRhdGUgdG8gU2F0dXJkYXkgb2YgdGhhdCB3ZWVrLlxuICAgKi9cbiAgTmV4dFdlZWssXG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHN0YXJ0IGRhdGUgdG8gdGhlIGZpcnN0IGRheSBvZiB0aGUgbW9udGggYmVmb3JlIHRoZSBjdXJyZW50IG1vbnRoIGFuZFxuICAgKiB0aGUgZW5kIGRhdGUgdG8gdGhlIGxhc3QgZGF5IG9mIHRoYXQgbW9udGguXG4gICAqL1xuICBMYXN0TW9udGgsXG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHN0YXJ0IGRhdGUgdG8gdGhlIGZpcnN0IGRheSBvZiB0aGUgY3VycmVudCBtb250aCBhbmRcbiAgICogdGhlIGVuZCBkYXRlIHRvIHRoZSBsYXN0IGRheSBvZiB0aGUgbW9udGguXG4gICAqL1xuICBUaGlzTW9udGgsXG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHN0YXJ0IGRhdGUgdG8gdGhlIGZpcnN0IGRheSBvZiB0aGUgbW9udGggYWZ0ZXIgdGhlIGN1cnJlbnQgbW9udGhcbiAgICogYW5kIHRoZSBlbmQgZGF0ZSB0byB0aGUgbGFzdCBkYXkgb2YgdGhhdCBtb250aC5cbiAgICovXG4gIE5leHRNb250aCxcblxuICAvKipcbiAgICogU2V0cyB0aGUgc3RhcnQgZGF0ZSB0byB0aGUgZmlyc3QgZGF5IG9mIHRoZSBxdWFydGVyIGJlZm9yZSB0aGUgY3VycmVudCBxdWFydGVyIGFuZFxuICAgKiB0aGUgZW5kIGRhdGUgdG8gdGhlIGxhc3QgZGF5IG9mIHRoYXQgcXVhcnRlci4gUXVhcnRlcnMgYXJlXG4gICAqIEphbnVhcnkgdG8gTWFyY2gsIEFwcmlsIHRvIEp1bmUsIEp1bHkgdG8gU2VwdGVtYmVyLCBhbmQgT2N0b2JlciB0byBEZWNlbWJlci5cbiAgICovXG4gIExhc3RRdWFydGVyLFxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBzdGFydCBkYXRlIHRvIHRoZSBmaXJzdCBkYXkgb2YgdGhlIGN1cnJlbnQgcXVhcnRlciBhbmRcbiAgICogdGhlIGVuZCBkYXRlIHRvIHRoZSBsYXN0IGRheSBvZiB0aGUgcXVhcnRlci4gUXVhcnRlcnMgYXJlXG4gICAqIEphbnVhcnkgdG8gTWFyY2gsIEFwcmlsIHRvIEp1bmUsIEp1bHkgdG8gU2VwdGVtYmVyLCBhbmQgT2N0b2JlciB0byBEZWNlbWJlci5cbiAgICovXG4gIFRoaXNRdWFydGVyLFxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBzdGFydCBkYXRlIHRvIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHF1YXJ0ZXIgYWZ0ZXIgdGhlIGN1cnJlbnQgcXVhcnRlciBhbmRcbiAgICogdGhlIGVuZCBkYXRlIHRvIHRoZSBsYXN0IGRheSBvZiB0aGF0IHF1YXJ0ZXIuIFF1YXJ0ZXJzIGFyZVxuICAgKiBKYW51YXJ5IHRvIE1hcmNoLCBBcHJpbCB0byBKdW5lLCBKdWx5IHRvIFNlcHRlbWJlciwgYW5kIE9jdG9iZXIgdG8gRGVjZW1iZXIuXG4gICAqL1xuICBOZXh0UXVhcnRlcixcblxuICAvKipcbiAgICogU2V0cyB0aGUgc3RhcnQgZGF0ZSB0byB0aGUgZmlyc3QgZGF5IG9mIHRoZSB5ZWFyIGJlZm9yZSB0aGUgY3VycmVudCB5ZWFyXG4gICAqIGFuZCB0aGUgZW5kIGRhdGUgdG8gdGhlIGxhc3QgZGF5IG9mIHRoYXQgeWVhci5cbiAgICovXG4gIExhc3RDYWxlbmRhclllYXIsXG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHN0YXJ0IGRhdGUgdG8gdGhlIGZpcnN0IGRheSBvZiB0aGUgY3VycmVudCB5ZWFyIGFuZFxuICAgKiB0aGUgZW5kIGRhdGUgdG8gdGhlIGxhc3QgZGF5IG9mIHRoZSB5ZWFyLlxuICAgKi9cbiAgVGhpc0NhbGVuZGFyWWVhcixcblxuICAvKipcbiAgICogU2V0cyB0aGUgc3RhcnQgZGF0ZSB0byB0aGUgZmlyc3QgZGF5IG9mIHRoZSB5ZWFyIGFmdGVyIHRoZSBjdXJyZW50IHllYXIgYW5kXG4gICAqIHRoZSBlbmQgZGF0ZSB0byB0aGUgbGFzdCBkYXkgb2YgdGhhdCB5ZWFyLlxuICAgKi9cbiAgTmV4dENhbGVuZGFyWWVhcixcblxuICAvKipcbiAgICogU2V0cyB0aGUgc3RhcnQgZGF0ZSB0byB0aGUgZmlyc3QgZGF5IG9mIHRoZSBmaXNjYWwgeWVhciBiZWZvcmUgdGhlIGN1cnJlbnQgZmlzY2FsIHllYXIgYW5kXG4gICAqIHRoZSBlbmQgZGF0ZSB0byB0aGUgbGFzdCBkYXkgb2YgdGhhdCBmaXNjYWwgeWVhci4gVGhlIGZpc2NhbCB5ZWFyIGlzIE9jdC4gMSB0byBTZXB0LiAzMC5cbiAgICovXG4gIExhc3RGaXNjYWxZZWFyLFxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBzdGFydCBkYXRlIHRvIHRoZSBmaXJzdCBkYXkgb2YgdGhlIGN1cnJlbnQgZmlzY2FsIHllYXIgYW5kXG4gICAqIHRoZSBlbmQgZGF0ZSB0byB0aGUgbGFzdCBkYXkgb2YgdGhlIGZpc2NhbCB5ZWFyLiBUaGUgZmlzY2FsIHllYXIgaXMgT2N0LiAxIHRvIFNlcHQuIDMwLlxuICAgKi9cbiAgVGhpc0Zpc2NhbFllYXIsXG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHN0YXJ0IGRhdGUgdG8gdGhlIGZpcnN0IGRheSBvZiB0aGUgZmlzY2FsIHllYXIgYWZ0ZXIgdGhlIGN1cnJlbnQgZmlzY2FsIHllYXJcbiAgICogYW5kIHRoZSBlbmQgZGF0ZSB0byB0aGUgbGFzdCBkYXkgb2YgdGhhdCBmaXNjYWwgeWVhci4gVGhlIGZpc2NhbCB5ZWFyIGlzIE9jdC4gMSB0byBTZXB0LiAzMC5cbiAgICovXG4gIE5leHRGaXNjYWxZZWFyLFxufVxuIl19","/**\n * Need to add the following to classes which contain static methods.\n * See: https://github.com/ng-packagr/ng-packagr/issues/641\n * @internal\n */\nexport class SkyDateRangeRelativeValue {\n static get today() {\n const today = new Date();\n return {\n startDate: today,\n endDate: today,\n };\n }\n static get tomorrow() {\n const tomorrow = new Date();\n tomorrow.setDate(tomorrow.getDate() + 1);\n return {\n startDate: tomorrow,\n endDate: tomorrow,\n };\n }\n static get yesterday() {\n const yesterday = new Date();\n yesterday.setDate(yesterday.getDate() - 1);\n return {\n startDate: yesterday,\n endDate: yesterday,\n };\n }\n /**\n * A date range starting with the nearest past Sunday and ending with the following Saturday.\n */\n static get thisWeek() {\n const startDate = new Date();\n startDate.setDate(startDate.getDate() - startDate.getDay());\n const endDate = new Date();\n endDate.setDate(endDate.getDate() - endDate.getDay() + 6);\n return {\n startDate,\n endDate,\n };\n }\n /**\n * A date range starting with the nearest upcoming Sunday and ending with the following Saturday.\n */\n static get nextWeek() {\n const startDate = new Date();\n startDate.setDate(startDate.getDate() - startDate.getDay() + 7);\n const endDate = new Date();\n endDate.setDate(endDate.getDate() - endDate.getDay() + 13);\n return {\n startDate,\n endDate,\n };\n }\n static get lastWeek() {\n const startDate = new Date();\n startDate.setDate(startDate.getDate() - startDate.getDay() - 7);\n const endDate = new Date();\n endDate.setDate(endDate.getDate() - endDate.getDay() - 1);\n return {\n startDate,\n endDate,\n };\n }\n static get thisMonth() {\n const startDate = new Date();\n startDate.setDate(1);\n const endDate = new Date();\n endDate.setMonth(endDate.getMonth() + 1);\n endDate.setDate(0);\n return {\n startDate,\n endDate,\n };\n }\n static get nextMonth() {\n const startDate = new Date();\n startDate.setDate(1);\n startDate.setMonth(startDate.getMonth() + 1);\n const endDate = new Date();\n endDate.setDate(1);\n endDate.setMonth(endDate.getMonth() + 2);\n endDate.setDate(0);\n return {\n startDate,\n endDate,\n };\n }\n static get lastMonth() {\n const startDate = new Date();\n // First, set the day of the month to zero,\n // which points to the last day of the previous month.\n startDate.setDate(0);\n // Finally, set the day of the month to 1.\n startDate.setDate(1);\n const endDate = new Date();\n endDate.setDate(0);\n return {\n startDate,\n endDate,\n };\n }\n static get thisQuarter() {\n const startDate = new Date();\n const endDate = new Date();\n const currentMonth = startDate.getMonth();\n const quarterStartMonth = SkyDateRangeRelativeValue.getQuarterStartMonth(currentMonth);\n startDate.setMonth(quarterStartMonth);\n startDate.setDate(1);\n endDate.setMonth(quarterStartMonth + 3);\n endDate.setDate(0);\n return {\n startDate,\n endDate,\n };\n }\n static get nextQuarter() {\n const startDate = new Date();\n const endDate = new Date();\n const currentMonth = startDate.getMonth();\n const quarterStartMonth = SkyDateRangeRelativeValue.getQuarterStartMonth(currentMonth);\n startDate.setMonth(quarterStartMonth + 3);\n startDate.setDate(1);\n endDate.setMonth(quarterStartMonth + 6);\n endDate.setDate(0);\n return {\n startDate,\n endDate,\n };\n }\n static get lastQuarter() {\n const startDate = new Date();\n startDate.setDate(1);\n const endDate = new Date();\n endDate.setDate(1);\n const currentMonth = startDate.getMonth();\n const quarterStartMonth = SkyDateRangeRelativeValue.getQuarterStartMonth(currentMonth);\n startDate.setMonth(quarterStartMonth - 3);\n startDate.setDate(1);\n endDate.setMonth(quarterStartMonth);\n endDate.setDate(0);\n return {\n startDate,\n endDate,\n };\n }\n static get thisCalendarYear() {\n const startDate = new Date();\n startDate.setDate(1);\n startDate.setMonth(0);\n const endDate = new Date();\n endDate.setDate(1);\n endDate.setMonth(0);\n endDate.setFullYear(endDate.getFullYear() + 1);\n endDate.setDate(0);\n return {\n startDate,\n endDate,\n };\n }\n static get nextCalendarYear() {\n const startDate = new Date();\n startDate.setDate(1);\n startDate.setMonth(0);\n startDate.setFullYear(startDate.getFullYear() + 1);\n const endDate = new Date();\n endDate.setDate(1);\n endDate.setMonth(0);\n endDate.setFullYear(startDate.getFullYear() + 1);\n endDate.setDate(0);\n return {\n startDate,\n endDate,\n };\n }\n static get lastCalendarYear() {\n const startDate = new Date();\n startDate.setDate(1);\n startDate.setMonth(0);\n startDate.setFullYear(startDate.getFullYear() - 1);\n const endDate = new Date();\n endDate.setDate(1);\n endDate.setMonth(0);\n endDate.setDate(0);\n return {\n startDate,\n endDate,\n };\n }\n static get thisFiscalYear() {\n const start = new Date();\n start.setDate(1);\n return SkyDateRangeRelativeValue.getClosestFiscalYearRange(start);\n }\n static get nextFiscalYear() {\n const start = new Date();\n start.setDate(1);\n start.setFullYear(start.getFullYear() + 1);\n return SkyDateRangeRelativeValue.getClosestFiscalYearRange(start);\n }\n static get lastFiscalYear() {\n const start = new Date();\n start.setDate(1);\n start.setFullYear(start.getFullYear() - 1);\n return SkyDateRangeRelativeValue.getClosestFiscalYearRange(start);\n }\n static getQuarterStartMonth(currentMonth) {\n let month;\n if (currentMonth < 3) {\n month = 0;\n }\n else if (currentMonth < 6) {\n month = 3;\n }\n else if (currentMonth < 9) {\n month = 6;\n }\n else {\n month = 9;\n }\n return month;\n }\n /**\n * Return a fiscal year based on a start date.\n * (The fiscal year starts in October and continues through to next September.)\n */\n static getClosestFiscalYearRange(startDate) {\n const endDate = new Date(startDate);\n if (startDate.getMonth() >= 9) {\n startDate.setMonth(9);\n endDate.setFullYear(startDate.getFullYear() + 1);\n endDate.setMonth(9);\n endDate.setDate(0);\n }\n else {\n startDate.setFullYear(startDate.getFullYear() - 1);\n startDate.setMonth(9);\n endDate.setMonth(9);\n endDate.setDate(0);\n }\n return {\n startDate,\n endDate,\n };\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS1yZWxhdGl2ZS12YWx1ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9kYXRldGltZS9zcmMvbGliL21vZHVsZXMvZGF0ZS1yYW5nZS1waWNrZXIvdHlwZXMvZGF0ZS1yYW5nZS1yZWxhdGl2ZS12YWx1ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7OztHQUlHO0FBQ0gsTUFBTSxPQUFnQix5QkFBeUI7SUFDdEMsTUFBTSxLQUFLLEtBQUs7UUFDckIsTUFBTSxLQUFLLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUV6QixPQUFPO1lBQ0wsU0FBUyxFQUFFLEtBQUs7WUFDaEIsT0FBTyxFQUFFLEtBQUs7U0FDZixDQUFDO0lBQ0osQ0FBQztJQUVNLE1BQU0sS0FBSyxRQUFRO1FBQ3hCLE1BQU0sUUFBUSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFFNUIsUUFBUSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFFekMsT0FBTztZQUNMLFNBQVMsRUFBRSxRQUFRO1lBQ25CLE9BQU8sRUFBRSxRQUFRO1NBQ2xCLENBQUM7SUFDSixDQUFDO0lBRU0sTUFBTSxLQUFLLFNBQVM7UUFDekIsTUFBTSxTQUFTLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUU3QixTQUFTLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUUzQyxPQUFPO1lBQ0wsU0FBUyxFQUFFLFNBQVM7WUFDcEIsT0FBTyxFQUFFLFNBQVM7U0FDbkIsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNJLE1BQU0sS0FBSyxRQUFRO1FBQ3hCLE1BQU0sU0FBUyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDN0IsU0FBUyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENB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dGVSYW5nZSB9IGZyb20gJy4vZGF0ZS1yYW5nZSc7XG5cbi8qKlxuICogTmVlZCB0byBhZGQgdGhlIGZvbGxvd2luZyB0byBjbGFzc2VzIHdoaWNoIGNvbnRhaW4gc3RhdGljIG1ldGhvZHMuXG4gKiBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9uZy1wYWNrYWdyL25nLXBhY2thZ3IvaXNzdWVzLzY0MVxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTa3lEYXRlUmFuZ2VSZWxhdGl2ZVZhbHVlIHtcbiAgcHVibGljIHN0YXRpYyBnZXQgdG9kYXkoKTogU2t5RGF0ZVJhbmdlIHtcbiAgICBjb25zdCB0b2RheSA9IG5ldyBEYXRlKCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgc3RhcnREYXRlOiB0b2RheSxcbiAgICAgIGVuZERhdGU6IHRvZGF5LFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGdldCB0b21vcnJvdygpOiBTa3lEYXRlUmFuZ2Uge1xuICAgIGNvbnN0IHRvbW9ycm93ID0gbmV3IERhdGUoKTtcblxuICAgIHRvbW9ycm93LnNldERhdGUodG9tb3Jyb3cuZ2V0RGF0ZSgpICsgMSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgc3RhcnREYXRlOiB0b21vcnJvdyxcbiAgICAgIGVuZERhdGU6IHRvbW9ycm93LFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGdldCB5ZXN0ZXJkYXkoKTogU2t5RGF0ZVJhbmdlIHtcbiAgICBjb25zdCB5ZXN0ZXJkYXkgPSBuZXcgRGF0ZSgpO1xuXG4gICAgeWVzdGVyZGF5LnNldERhdGUoeWVzdGVyZGF5LmdldERhdGUoKSAtIDEpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXJ0RGF0ZTogeWVzdGVyZGF5LFxuICAgICAgZW5kRGF0ZTogeWVzdGVyZGF5LFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQSBkYXRlIHJhbmdlIHN0YXJ0aW5nIHdpdGggdGhlIG5lYXJlc3QgcGFzdCBTdW5kYXkgYW5kIGVuZGluZyB3aXRoIHRoZSBmb2xsb3dpbmcgU2F0dXJkYXkuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGdldCB0aGlzV2VlaygpOiBTa3lEYXRlUmFuZ2Uge1xuICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgc3RhcnREYXRlLnNldERhdGUoc3RhcnREYXRlLmdldERhdGUoKSAtIHN0YXJ0RGF0ZS5nZXREYXkoKSk7XG5cbiAgICBjb25zdCBlbmREYXRlID0gbmV3IERhdGUoKTtcbiAgICBlbmREYXRlLnNldERhdGUoZW5kRGF0ZS5nZXREYXRlKCkgLSBlbmREYXRlLmdldERheSgpICsgNik7XG5cbiAgICByZXR1cm4ge1xuICAgICAgc3RhcnREYXRlLFxuICAgICAgZW5kRGF0ZSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEEgZGF0ZSByYW5nZSBzdGFydGluZyB3aXRoIHRoZSBuZWFyZXN0IHVwY29taW5nIFN1bmRheSBhbmQgZW5kaW5nIHdpdGggdGhlIGZvbGxvd2luZyBTYXR1cmRheS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZ2V0IG5leHRXZWVrKCk6IFNreURhdGVSYW5nZSB7XG4gICAgY29uc3Qgc3RhcnREYXRlID0gbmV3IERhdGUoKTtcbiAgICBzdGFydERhdGUuc2V0RGF0ZShzdGFydERhdGUuZ2V0RGF0ZSgpIC0gc3RhcnREYXRlLmdldERheSgpICsgNyk7XG5cbiAgICBjb25zdCBlbmREYXRlID0gbmV3IERhdGUoKTtcbiAgICBlbmREYXRlLnNldERhdGUoZW5kRGF0ZS5nZXREYXRlKCkgLSBlbmREYXRlLmdldERheSgpICsgMTMpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXJ0RGF0ZSxcbiAgICAgIGVuZERhdGUsXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0IGxhc3RXZWVrKCk6IFNreURhdGVSYW5nZSB7XG4gICAgY29uc3Qgc3RhcnREYXRlID0gbmV3IERhdGUoKTtcbiAgICBzdGFydERhdGUuc2V0RGF0ZShzdGFydERhdGUuZ2V0RGF0ZSgpIC0gc3RhcnREYXRlLmdldERheSgpIC0gNyk7XG5cbiAgICBjb25zdCBlbmREYXRlID0gbmV3IERhdGUoKTtcbiAgICBlbmREYXRlLnNldERhdGUoZW5kRGF0ZS5nZXREYXRlKCkgLSBlbmREYXRlLmdldERheSgpIC0gMSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgc3RhcnREYXRlLFxuICAgICAgZW5kRGF0ZSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBnZXQgdGhpc01vbnRoKCk6IFNreURhdGVSYW5nZSB7XG4gICAgY29uc3Qgc3RhcnREYXRlID0gbmV3IERhdGUoKTtcbiAgICBzdGFydERhdGUuc2V0RGF0ZSgxKTtcblxuICAgIGNvbnN0IGVuZERhdGUgPSBuZXcgRGF0ZSgpO1xuICAgIGVuZERhdGUuc2V0TW9udGgoZW5kRGF0ZS5nZXRNb250aCgpICsgMSk7XG4gICAgZW5kRGF0ZS5zZXREYXRlKDApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXJ0RGF0ZSxcbiAgICAgIGVuZERhdGUsXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0IG5leHRNb250aCgpOiBTa3lEYXRlUmFuZ2Uge1xuICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgc3RhcnREYXRlLnNldERhdGUoMSk7XG4gICAgc3RhcnREYXRlLnNldE1vbnRoKHN0YXJ0RGF0ZS5nZXRNb250aCgpICsgMSk7XG5cbiAgICBjb25zdCBlbmREYXRlID0gbmV3IERhdGUoKTtcbiAgICBlbmREYXRlLnNldERhdGUoMSk7XG4gICAgZW5kRGF0ZS5zZXRNb250aChlbmREYXRlLmdldE1vbnRoKCkgKyAyKTtcbiAgICBlbmREYXRlLnNldERhdGUoMCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgc3RhcnREYXRlLFxuICAgICAgZW5kRGF0ZSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBnZXQgbGFzdE1vbnRoKCk6IFNreURhdGVSYW5nZSB7XG4gICAgY29uc3Qgc3RhcnREYXRlID0gbmV3IERhdGUoKTtcblxuICAgIC8vIEZpcnN0LCBzZXQgdGhlIGRheSBvZiB0aGUgbW9udGggdG8gemVybyxcbiAgICAvLyB3aGljaCBwb2ludHMgdG8gdGhlIGxhc3QgZGF5IG9mIHRoZSBwcmV2aW91cyBtb250aC5cbiAgICBzdGFydERhdGUuc2V0RGF0ZSgwKTtcblxuICAgIC8vIEZpbmFsbHksIHNldCB0aGUgZGF5IG9mIHRoZSBtb250aCB0byAxLlxuICAgIHN0YXJ0RGF0ZS5zZXREYXRlKDEpO1xuXG4gICAgY29uc3QgZW5kRGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgZW5kRGF0ZS5zZXREYXRlKDApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXJ0RGF0ZSxcbiAgICAgIGVuZERhdGUsXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0IHRoaXNRdWFydGVyKCk6IFNreURhdGVSYW5nZSB7XG4gICAgY29uc3Qgc3RhcnREYXRlID0gbmV3IERhdGUoKTtcbiAgICBjb25zdCBlbmREYXRlID0gbmV3IERhdGUoKTtcblxuICAgIGNvbnN0IGN1cnJlbnRNb250aCA9IHN0YXJ0RGF0ZS5nZXRNb250aCgpO1xuICAgIGNvbnN0IHF1YXJ0ZXJTdGFydE1vbnRoID1cbiAgICAgIFNreURhdGVSYW5nZVJlbGF0aXZlVmFsdWUuZ2V0UXVhcnRlclN0YXJ0TW9udGgoY3VycmVudE1vbnRoKTtcblxuICAgIHN0YXJ0RGF0ZS5zZXRNb250aChxdWFydGVyU3RhcnRNb250aCk7XG4gICAgc3RhcnREYXRlLnNldERhdGUoMSk7XG5cbiAgICBlbmREYXRlLnNldE1vbnRoKHF1YXJ0ZXJTdGFydE1vbnRoICsgMyk7XG4gICAgZW5kRGF0ZS5zZXREYXRlKDApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXJ0RGF0ZSxcbiAgICAgIGVuZERhdGUsXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0IG5leHRRdWFydGVyKCk6IFNreURhdGVSYW5nZSB7XG4gICAgY29uc3Qgc3RhcnREYXRlID0gbmV3IERhdGUoKTtcbiAgICBjb25zdCBlbmREYXRlID0gbmV3IERhdGUoKTtcblxuICAgIGNvbnN0IGN1cnJlbnRNb250aCA9IHN0YXJ0RGF0ZS5nZXRNb250aCgpO1xuICAgIGNvbnN0IHF1YXJ0ZXJTdGFydE1vbnRoID1cbiAgICAgIFNreURhdGVSYW5nZVJlbGF0aXZlVmFsdWUuZ2V0UXVhcnRlclN0YXJ0TW9udGgoY3VycmVudE1vbnRoKTtcblxuICAgIHN0YXJ0RGF0ZS5zZXRNb250aChxdWFydGVyU3RhcnRNb250aCArIDMpO1xuICAgIHN0YXJ0RGF0ZS5zZXREYXRlKDEpO1xuXG4gICAgZW5kRGF0ZS5zZXRNb250aChxdWFydGVyU3RhcnRNb250aCArIDYpO1xuICAgIGVuZERhdGUuc2V0RGF0ZSgwKTtcblxuICAgIHJldHVybiB7XG4gICAgICBzdGFydERhdGUsXG4gICAgICBlbmREYXRlLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGdldCBsYXN0UXVhcnRlcigpOiBTa3lEYXRlUmFuZ2Uge1xuICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgc3RhcnREYXRlLnNldERhdGUoMSk7XG5cbiAgICBjb25zdCBlbmREYXRlID0gbmV3IERhdGUoKTtcbiAgICBlbmREYXRlLnNldERhdGUoMSk7XG5cbiAgICBjb25zdCBjdXJyZW50TW9udGggPSBzdGFydERhdGUuZ2V0TW9udGgoKTtcbiAgICBjb25zdCBxdWFydGVyU3RhcnRNb250aCA9XG4gICAgICBTa3lEYXRlUmFuZ2VSZWxhdGl2ZVZhbHVlLmdldFF1YXJ0ZXJTdGFydE1vbnRoKGN1cnJlbnRNb250aCk7XG5cbiAgICBzdGFydERhdGUuc2V0TW9udGgocXVhcnRlclN0YXJ0TW9udGggLSAzKTtcbiAgICBzdGFydERhdGUuc2V0RGF0ZSgxKTtcblxuICAgIGVuZERhdGUuc2V0TW9udGgocXVhcnRlclN0YXJ0TW9udGgpO1xuICAgIGVuZERhdGUuc2V0RGF0ZSgwKTtcblxuICAgIHJldHVybiB7XG4gICAgICBzdGFydERhdGUsXG4gICAgICBlbmREYXRlLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGdldCB0aGlzQ2FsZW5kYXJZZWFyKCk6IFNreURhdGVSYW5nZSB7XG4gICAgY29uc3Qgc3RhcnREYXRlID0gbmV3IERhdGUoKTtcbiAgICBzdGFydERhdGUuc2V0RGF0ZSgxKTtcbiAgICBzdGFydERhdGUuc2V0TW9udGgoMCk7XG5cbiAgICBjb25zdCBlbmREYXRlID0gbmV3IERhdGUoKTtcbiAgICBlbmREYXRlLnNldERhdGUoMSk7XG4gICAgZW5kRGF0ZS5zZXRNb250aCgwKTtcbiAgICBlbmREYXRlLnNldEZ1bGxZZWFyKGVuZERhdGUuZ2V0RnVsbFllYXIoKSArIDEpO1xuICAgIGVuZERhdGUuc2V0RGF0ZSgwKTtcblxuICAgIHJldHVybiB7XG4gICAgICBzdGFydERhdGUsXG4gICAgICBlbmREYXRlLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGdldCBuZXh0Q2FsZW5kYXJZZWFyKCk6IFNreURhdGVSYW5nZSB7XG4gICAgY29uc3Qgc3RhcnREYXRlID0gbmV3IERhdGUoKTtcbiAgICBzdGFydERhdGUuc2V0RGF0ZSgxKTtcbiAgICBzdGFydERhdGUuc2V0TW9udGgoMCk7XG4gICAgc3RhcnREYXRlLnNldEZ1bGxZZWFyKHN0YXJ0RGF0ZS5nZXRGdWxsWWVhcigpICsgMSk7XG5cbiAgICBjb25zdCBlbmREYXRlID0gbmV3IERhdGUoKTtcbiAgICBlbmREYXRlLnNldERhdGUoMSk7XG4gICAgZW5kRGF0ZS5zZXRNb250aCgwKTtcbiAgICBlbmREYXRlLnNldEZ1bGxZZWFyKHN0YXJ0RGF0ZS5nZXRGdWxsWWVhcigpICsgMSk7XG4gICAgZW5kRGF0ZS5zZXREYXRlKDApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXJ0RGF0ZSxcbiAgICAgIGVuZERhdGUsXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0IGxhc3RDYWxlbmRhclllYXIoKTogU2t5RGF0ZVJhbmdlIHtcbiAgICBjb25zdCBzdGFydERhdGUgPSBuZXcgRGF0ZSgpO1xuICAgIHN0YXJ0RGF0ZS5zZXREYXRlKDEpO1xuICAgIHN0YXJ0RGF0ZS5zZXRNb250aCgwKTtcbiAgICBzdGFydERhdGUuc2V0RnVsbFllYXIoc3RhcnREYXRlLmdldEZ1bGxZZWFyKCkgLSAxKTtcblxuICAgIGNvbnN0IGVuZERhdGUgPSBuZXcgRGF0ZSgpO1xuICAgIGVuZERhdGUuc2V0RGF0ZSgxKTtcbiAgICBlbmREYXRlLnNldE1vbnRoKDApO1xuICAgIGVuZERhdGUuc2V0RGF0ZSgwKTtcblxuICAgIHJldHVybiB7XG4gICAgICBzdGFydERhdGUsXG4gICAgICBlbmREYXRlLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGdldCB0aGlzRmlzY2FsWWVhcigpOiBTa3lEYXRlUmFuZ2Uge1xuICAgIGNvbnN0IHN0YXJ0ID0gbmV3IERhdGUoKTtcbiAgICBzdGFydC5zZXREYXRlKDEpO1xuXG4gICAgcmV0dXJuIFNreURhdGVSYW5nZVJlbGF0aXZlVmFsdWUuZ2V0Q2xvc2VzdEZpc2NhbFllYXJSYW5nZShzdGFydCk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGdldCBuZXh0RmlzY2FsWWVhcigpOiBTa3lEYXRlUmFuZ2Uge1xuICAgIGNvbnN0IHN0YXJ0ID0gbmV3IERhdGUoKTtcbiAgICBzdGFydC5zZXREYXRlKDEpO1xuICAgIHN0YXJ0LnNldEZ1bGxZZWFyKHN0YXJ0LmdldEZ1bGxZZWFyKCkgKyAxKTtcblxuICAgIHJldHVybiBTa3lEYXRlUmFuZ2VSZWxhdGl2ZVZhbHVlLmdldENsb3Nlc3RGaXNjYWxZZWFyUmFuZ2Uoc3RhcnQpO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBnZXQgbGFzdEZpc2NhbFllYXIoKTogU2t5RGF0ZVJhbmdlIHtcbiAgICBjb25zdCBzdGFydCA9IG5ldyBEYXRlKCk7XG4gICAgc3RhcnQuc2V0RGF0ZSgxKTtcbiAgICBzdGFydC5zZXRGdWxsWWVhcihzdGFydC5nZXRGdWxsWWVhcigpIC0gMSk7XG5cbiAgICByZXR1cm4gU2t5RGF0ZVJhbmdlUmVsYXRpdmVWYWx1ZS5nZXRDbG9zZXN0RmlzY2FsWWVhclJhbmdlKHN0YXJ0KTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGdldFF1YXJ0ZXJTdGFydE1vbnRoKGN1cnJlbnRNb250aDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBsZXQgbW9udGg6IG51bWJlcjtcbiAgICBpZiAoY3VycmVudE1vbnRoIDwgMykge1xuICAgICAgbW9udGggPSAwO1xuICAgIH0gZWxzZSBpZiAoY3VycmVudE1vbnRoIDwgNikge1xuICAgICAgbW9udGggPSAzO1xuICAgIH0gZWxzZSBpZiAoY3VycmVudE1vbnRoIDwgOSkge1xuICAgICAgbW9udGggPSA2O1xuICAgIH0gZWxzZSB7XG4gICAgICBtb250aCA9IDk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1vbnRoO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIGZpc2NhbCB5ZWFyIGJhc2VkIG9uIGEgc3RhcnQgZGF0ZS5cbiAgICogKFRoZSBmaXNjYWwgeWVhciBzdGFydHMgaW4gT2N0b2JlciBhbmQgY29udGludWVzIHRocm91Z2ggdG8gbmV4dCBTZXB0ZW1iZXIuKVxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgZ2V0Q2xvc2VzdEZpc2NhbFllYXJSYW5nZShzdGFydERhdGU6IERhdGUpOiBTa3lEYXRlUmFuZ2Uge1xuICAgIGNvbnN0IGVuZERhdGUgPSBuZXcgRGF0ZShzdGFydERhdGUpO1xuXG4gICAgaWYgKHN0YXJ0RGF0ZS5nZXRNb250aCgpID49IDkpIHtcbiAgICAgIHN0YXJ0RGF0ZS5zZXRNb250aCg5KTtcbiAgICAgIGVuZERhdGUuc2V0RnVsbFllYXIoc3RhcnREYXRlLmdldEZ1bGxZZWFyKCkgKyAxKTtcbiAgICAgIGVuZERhdGUuc2V0TW9udGgoOSk7XG4gICAgICBlbmREYXRlLnNldERhdGUoMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXJ0RGF0ZS5zZXRGdWxsWWVhcihzdGFydERhdGUuZ2V0RnVsbFllYXIoKSAtIDEpO1xuICAgICAgc3RhcnREYXRlLnNldE1vbnRoKDkpO1xuICAgICAgZW5kRGF0ZS5zZXRNb250aCg5KTtcbiAgICAgIGVuZERhdGUuc2V0RGF0ZSgwKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgc3RhcnREYXRlLFxuICAgICAgZW5kRGF0ZSxcbiAgICB9O1xuICB9XG59XG4iXX0=","import { SkyDateRangeCalculatorId } from './date-range-calculator-id';\nimport { SkyDateRangeCalculatorType } from './date-range-calculator-type';\nimport { SkyDateRangeRelativeValue } from './date-range-relative-value';\nexport const SKY_DEFAULT_CALCULATOR_IDS = [\n SkyDateRangeCalculatorId.AnyTime,\n SkyDateRangeCalculatorId.Before,\n SkyDateRangeCalculatorId.After,\n SkyDateRangeCalculatorId.SpecificRange,\n SkyDateRangeCalculatorId.Yesterday,\n SkyDateRangeCalculatorId.Today,\n SkyDateRangeCalculatorId.Tomorrow,\n SkyDateRangeCalculatorId.LastWeek,\n SkyDateRangeCalculatorId.ThisWeek,\n SkyDateRangeCalculatorId.NextWeek,\n SkyDateRangeCalculatorId.LastMonth,\n SkyDateRangeCalculatorId.ThisMonth,\n SkyDateRangeCalculatorId.NextMonth,\n SkyDateRangeCalculatorId.LastQuarter,\n SkyDateRangeCalculatorId.ThisQuarter,\n SkyDateRangeCalculatorId.NextQuarter,\n SkyDateRangeCalculatorId.LastCalendarYear,\n SkyDateRangeCalculatorId.ThisCalendarYear,\n SkyDateRangeCalculatorId.NextCalendarYear,\n SkyDateRangeCalculatorId.LastFiscalYear,\n SkyDateRangeCalculatorId.ThisFiscalYear,\n SkyDateRangeCalculatorId.NextFiscalYear,\n];\nexport const SKY_DEFAULT_CALCULATOR_CONFIGS = [\n {\n calculatorId: SkyDateRangeCalculatorId.AnyTime,\n type: SkyDateRangeCalculatorType.Relative,\n shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_any_time',\n getValue: (startDate, endDate) => ({ startDate, endDate }),\n },\n {\n calculatorId: SkyDateRangeCalculatorId.Before,\n type: SkyDateRangeCalculatorType.Before,\n shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_before',\n getValue: (startDate, endDate) => ({ startDate, endDate }),\n },\n {\n calculatorId: SkyDateRangeCalculatorId.After,\n type: SkyDateRangeCalculatorType.After,\n shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_after',\n getValue: (startDate, endDate) => ({ startDate, endDate }),\n },\n {\n calculatorId: SkyDateRangeCalculatorId.SpecificRange,\n type: SkyDateRangeCalculatorType.Range,\n shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_specific_range',\n getValue: (startDate, endDate) => ({ startDate, endDate }),\n validate: (value) => {\n if (value &&\n value.startDate &&\n value.endDate &&\n value.startDate > value.endDate) {\n return {\n endDateBeforeStartDate: true,\n };\n }\n return null;\n },\n },\n {\n calculatorId: SkyDateRangeCalculatorId.LastFiscalYear,\n type: SkyDateRangeCalculatorType.Relative,\n shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_last_fiscal_year',\n getValue: () => SkyDateRangeRelativeValue.lastFiscalYear,\n },\n {\n calculatorId: SkyDateRangeCalculatorId.LastMonth,\n type: SkyDateRangeCalculatorType.Relative,\n shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_last_month',\n getValue: () => SkyDateRangeRelativeValue.lastMonth,\n },\n {\n calculatorId: SkyDateRangeCalculatorId.LastQuarter,\n type: SkyDateRangeCalculatorType.Relative,\n shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_last_quarter',\n getValue: () => SkyDateRangeRelativeValue.lastQuarter,\n },\n {\n calculatorId: SkyDateRangeCalculatorId.LastWeek,\n type: SkyDateRangeCalculatorType.Relative,\n shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_last_week',\n getValue: () => SkyDateRangeRelativeValue.lastWeek,\n },\n {\n calculatorId: SkyDateRangeCalculatorId.LastCalendarYear,\n type: SkyDateRangeCalculatorType.Relative,\n shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_last_calendar_year',\n getValue: () => SkyDateRangeRelativeValue.lastCalendarYear,\n },\n {\n calculatorId: SkyDateRangeCalculatorId.NextFiscalYear,\n type: SkyDateRangeCalculatorType.Relative,\n shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_next_fiscal_year',\n getValue: () => SkyDateRangeRelativeValue.nextFiscalYear,\n },\n {\n calculatorId: SkyDateRangeCalculatorId.NextMonth,\n type: SkyDateRangeCalculatorType.Relative,\n shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_next_month',\n getValue: () => SkyDateRangeRelativeValue.nextMonth,\n },\n {\n calculatorId: SkyDateRangeCalculatorId.NextQuarter,\n type: SkyDateRangeCalculatorType.Relative,\n shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_next_quarter',\n getValue: () => SkyDateRangeRelativeValue.nextQuarter,\n },\n {\n calculatorId: SkyDateRangeCalculatorId.NextWeek,\n type: SkyDateRangeCalculatorType.Relative,\n shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_next_week',\n getValue: () => SkyDateRangeRelativeValue.nextWeek,\n },\n {\n calculatorId: SkyDateRangeCalculatorId.NextCalendarYear,\n type: SkyDateRangeCalculatorType.Relative,\n shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_next_calendar_year',\n getValue: () => SkyDateRangeRelativeValue.nextCalendarYear,\n },\n {\n calculatorId: SkyDateRangeCalculatorId.ThisFiscalYear,\n type: SkyDateRangeCalculatorType.Relative,\n shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_this_fiscal_year',\n getValue: () => SkyDateRangeRelativeValue.thisFiscalYear,\n },\n {\n calculatorId: SkyDateRangeCalculatorId.ThisMonth,\n type: SkyDateRangeCalculatorType.Relative,\n shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_this_month',\n getValue: () => SkyDateRangeRelativeValue.thisMonth,\n },\n {\n calculatorId: SkyDateRangeCalculatorId.ThisQuarter,\n type: SkyDateRangeCalculatorType.Relative,\n shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_this_quarter',\n getValue: () => SkyDateRangeRelativeValue.thisQuarter,\n },\n {\n calculatorId: SkyDateRangeCalculatorId.ThisWeek,\n type: SkyDateRangeCalculatorType.Relative,\n shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_this_week',\n getValue: () => SkyDateRangeRelativeValue.thisWeek,\n },\n {\n calculatorId: SkyDateRangeCalculatorId.ThisCalendarYear,\n type: SkyDateRangeCalculatorType.Relative,\n shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_this_calendar_year',\n getValue: () => SkyDateRangeRelativeValue.thisCalendarYear,\n },\n {\n calculatorId: SkyDateRangeCalculatorId.Today,\n type: SkyDateRangeCalculatorType.Relative,\n shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_today',\n getValue: () => SkyDateRangeRelativeValue.today,\n },\n {\n calculatorId: SkyDateRangeCalculatorId.Tomorrow,\n type: SkyDateRangeCalculatorType.Relative,\n shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_tomorrow',\n getValue: () => SkyDateRangeRelativeValue.tomorrow,\n },\n {\n calculatorId: SkyDateRangeCalculatorId.Yesterday,\n type: SkyDateRangeCalculatorType.Relative,\n shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_yesterday',\n getValue: () => SkyDateRangeRelativeValue.yesterday,\n },\n];\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS1kZWZhdWx0LWNhbGN1bGF0b3ItY29uZmlncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9kYXRldGltZS9zcmMvbGliL21vZHVsZXMvZGF0ZS1yYW5nZS1waWNrZXIvdHlwZXMvZGF0ZS1yYW5nZS1kZWZhdWx0LWNhbGN1bGF0b3ItY29uZmlncy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUUxRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUV4RSxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBK0I7SUFDcEUsd0JBQXdCLENBQUMsT0FBTztJQUNoQyx3QkFBd0IsQ0FBQyxNQUFNO0lBQy9CLHdCQUF3QixDQUFDLEtBQUs7SUFDOUIsd0JBQXdCLENBQUMsYUFBYTtJQUN0Qyx3QkFBd0IsQ0FBQyxTQUFTO0lBQ2xDLHdCQUF3QixDQUFDLEtBQUs7SUFDOUIsd0JBQXdCLENBQUMsUUFBUTtJQUNqQyx3QkFBd0IsQ0FBQyxRQUFRO0lBQ2pDLHdCQUF3QixDQUFDLFFBQVE7SUFDakMsd0JBQXdCLENBQUMsUUFBUTtJQUNqQyx3QkFBd0IsQ0FBQyxTQUFTO0lBQ2xDLHdCQUF3QixDQUFDLFNBQVM7SUFDbEMsd0JBQXdCLENBQUMsU0FBUztJQUNsQyx3QkFBd0IsQ0FBQyxXQUFXO0lBQ3BDLHdCQUF3QixDQUFDLFdBQVc7SUFDcEMsd0JBQXdCLENBQUMsV0FBVztJQUNwQyx3QkFBd0IsQ0FBQyxnQkFBZ0I7SUFDekMsd0JBQXdCLENBQUMsZ0JBQWdCO0lBQ3pDLHdCQUF3QixDQUFDLGdCQUFnQjtJQUN6Qyx3QkFBd0IsQ0FBQyxjQUFjO0lBQ3ZDLHdCQUF3QixDQUFDLGNBQWM7SUFDdkMsd0JBQXdCLENBQUMsY0FBYztDQUN4QyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sOEJBQThCLEdBQ3pDO0lBQ0U7UUFDRSxZQUFZLEVBQUUsd0JBQXdCLENBQUMsT0FBTztRQUM5QyxJQUFJLEVBQUUsMEJBQTBCLENBQUMsUUFBUTtRQUN6QywyQkFBMkIsRUFDekIsK0NBQStDO1FBQ2pELFFBQVEsRUFBRSxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLENBQUM7S0FDM0Q7SUFFRDtRQUNFLFlBQVksRUFBRSx3QkFBd0IsQ0FBQyxNQUFNO1FBQzdDLElBQUksRUFBRSwwQkFBMEIsQ0FBQyxNQUFNO1FBQ3ZDLDJCQUEyQixFQUN6Qiw2Q0FBNkM7UUFDL0MsUUFBUSxFQUFFLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsQ0FBQztLQUMzRDtJQUVEO1FBQ0UsWUFBWSxFQUFFLHdCQUF3QixDQUFDLEtBQUs7UUFDNUMsSUFBSSxFQUFFLDBCQUEwQixDQUFDLEtBQUs7UUFDdEMsMkJBQTJCLEVBQUUsNENBQTRDO1FBQ3pFLFFBQVEsRUFBRSxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLENBQUM7S0FDM0Q7SUFFRDtRQUNFLFlBQVksRUFBRSx3QkFBd0IsQ0FBQyxhQUFhO1FBQ3BELElBQUksRUFBRSwwQkFBMEIsQ0FBQyxLQUFLO1FBQ3RDLDJCQUEyQixFQUN6QixxREFBcUQ7UUFDdkQsUUFBUSxFQUFFLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsQ0FBQztRQUMxRCxRQUFRLEVBQUUsQ0FBQyxLQUFLLEVBQTJCLEVBQUU7WUFDM0MsSUFDRSxLQUFLO2dCQUNMLEtBQUssQ0FBQyxTQUFTO2dCQUNmLEtBQUssQ0FBQyxPQUFPO2dCQUNiLEtBQUssQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDLE9BQU8sRUFDL0IsQ0FBQztnQkFDRCxPQUFPO29CQUNMLHNCQUFzQixFQUFFLElBQUk7aUJBQzdCLENBQUM7WUFDSixDQUFDO1lBQ0QsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO0tBQ0Y7SUFFRDtRQUNFLFlBQVksRUFBRSx3QkFBd0IsQ0FBQyxjQUFjO1FBQ3JELElBQUksRUFBRSwwQkFBMEIsQ0FBQyxRQUFRO1FBQ3pDLDJCQUEyQixFQUN6Qix1REFBdUQ7UUFDekQsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLHlCQUF5QixDQUFDLGNBQWM7S0FDekQ7SUFFRDtRQUNFLFlBQVksRUFBRSx3QkFBd0IsQ0FBQyxTQUFTO1FBQ2hELElBQUksRUFBRSwwQkFBMEIsQ0FBQyxRQUFRO1FBQ3pDLDJCQUEyQixFQUN6QixpREFBaUQ7UUFDbkQsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLHlCQUF5QixDQUFDLFNBQVM7S0FDcEQ7SUFFRDtRQUNFLFlBQVksRUFBRSx3QkFBd0IsQ0FBQyxXQUFXO1FBQ2xELElBQUksRUFBRSwwQkFBMEIsQ0FBQyxRQUFRO1FBQ3pDLDJCQUEyQixFQUN6QixtREFBbUQ7UUFDckQsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLHlCQUF5QixDQUFDLFdBQVc7S0FDdEQ7SUFFRDtRQUNFLFlBQVksRUFBRSx3QkFBd0IsQ0FBQyxRQUFRO1FBQy9DLElBQUksRUFBRSwwQkFBMEIsQ0FBQyxRQUFRO1FBQ3pDLDJCQUEyQixFQUN6QixnREFBZ0Q7UUFDbEQsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLHlCQUF5QixDQUFDLFFBQVE7S0FDbkQ7SUFFRDtRQUNFLFlBQVksRUFBRSx3QkFBd0IsQ0FBQyxnQkFBZ0I7UUFDdkQsSUFBSSxFQUFFLDBCQUEwQixDQUFDLFFBQVE7UUFDekMsMkJBQTJCLEVBQ3pCLHlEQUF5RDtRQUMzRCxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMseUJBQXlCLENBQUMsZ0JBQWdCO0tBQzNEO0lBRUQ7UUFDRSxZQUFZLEVBQUUsd0JBQXdCLENBQUMsY0FBYztRQUNyRCxJQUFJLEVBQUUsMEJBQTBCLENBQUMsUUFBUTtRQUN6QywyQkFBMkIsRUFDekIsdURBQXVEO1FBQ3pELFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQyxjQUFjO0tBQ3pEO0lBRUQ7UUFDRSxZQUFZLEVBQUUsd0JBQXdCLENBQUMsU0FBUztRQUNoRCxJQUFJLEVBQUUsMEJBQTBCLENBQUMsUUFBUTtRQUN6QywyQkFBMkIsRUFDekIsaURBQWlEO1FBQ25ELFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQyxTQUFTO0tBQ3BEO0lBRUQ7UUFDRSxZQUFZLEVBQUUsd0JBQXdCLENBQUMsV0FBVztRQUNsRCxJQUFJLEVBQUUsMEJBQTBCLENBQUMsUUFBUTtRQUN6QywyQkFBMkIsRUFDekIsbURBQW1EO1FBQ3JELFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQyxXQUFXO0tBQ3REO0lBRUQ7UUFDRSxZQUFZLEVBQUUsd0JBQXdCLENBQUMsUUFBUTtRQUMvQyxJQUFJLEVBQUUsMEJBQTBCLENBQUMsUUFBUTtRQUN6QywyQkFBMkIsRUFDekIsZ0RBQWdEO1FBQ2xELFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQyxRQUFRO0tBQ25EO0lBRUQ7UUFDRSxZQUFZLEVBQUUsd0JBQXdCLENBQUMsZ0JBQWdCO1FBQ3ZELElBQUksRUFBRSwwQkFBMEIsQ0FBQyxRQUFRO1FBQ3pDLDJCQUEyQixFQUN6Qix5REFBeUQ7UUFDM0QsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLHlCQUF5QixDQUFDLGdCQUFnQjtLQUMzRDtJQUVEO1FBQ0UsWUFBWSxFQUFFLHdCQUF3QixDQUFDLGNBQWM7UUFDckQsSUFBSSxFQUFFLDBCQUEwQixDQUFDLFFBQVE7UUFDekMsMkJBQTJCLEVBQ3pCLHVEQUF1RDtRQUN6RCxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMseUJBQXlCLENBQUMsY0FBYztLQUN6RDtJQUVEO1FBQ0UsWUFBWSxFQUFFLHdCQUF3QixDQUFDLFNBQVM7UUFDaEQsSUFBSSxFQUFFLDBCQUEwQixDQUFDLFFBQVE7UUFDekMsMkJBQTJCLEVBQ3pCLGlEQUFpRDtRQUNuRCxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMseUJBQXlCLENBQUMsU0FBUztLQUNwRDtJQUVEO1FBQ0UsWUFBWSxFQUFFLHdCQUF3QixDQUFDLFdBQVc7UUFDbEQsSUFBSSxFQUFFLDBCQUEwQixDQUFDLFFBQVE7UUFDekMsMkJBQTJCLEVBQ3pCLG1EQUFtRDtRQUNyRCxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMseUJBQXlCLENBQUMsV0FBVztLQUN0RDtJQUVEO1FBQ0UsWUFBWSxFQUFFLHdCQUF3QixDQUFDLFFBQVE7UUFDL0MsSUFBSSxFQUFFLDBCQUEwQixDQUFDLFFBQVE7UUFDekMsMkJBQTJCLEVBQ3pCLGdEQUFnRDtRQUNsRCxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMseUJBQXlCLENBQUMsUUFBUTtLQUNuRDtJQUVEO1FBQ0UsWUFBWSxFQUFFLHdCQUF3QixDQUFDLGdCQUFnQjtRQUN2RCxJQUFJLEVBQUUsMEJBQTBCLENBQUMsUUFBUTtRQUN6QywyQkFBMkIsRUFDekIseURBQXlEO1FBQzNELFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQyxnQkFBZ0I7S0FDM0Q7SUFFRDtRQUNFLFlBQVksRUFBRSx3QkFBd0IsQ0FBQyxLQUFLO1FBQzVDLElBQUksRUFBRSwwQkFBMEIsQ0FBQyxRQUFRO1FBQ3pDLDJCQUEyQixFQUFFLDRDQUE0QztRQUN6RSxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMseUJBQXlCLENBQUMsS0FBSztLQUNoRDtJQUVEO1FBQ0UsWUFBWSxFQUFFLHdCQUF3QixDQUFDLFFBQVE7UUFDL0MsSUFBSSxFQUFFLDBCQUEwQixDQUFDLFFBQVE7UUFDekMsMkJBQTJCLEVBQ3pCLCtDQUErQztRQUNqRCxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMseUJBQXlCLENBQUMsUUFBUTtLQUNuRDtJQUVEO1FBQ0UsWUFBWSxFQUFFLHdCQUF3QixDQUFDLFNBQVM7UUFDaEQsSUFBSSxFQUFFLDBCQUEwQixDQUFDLFFBQVE7UUFDekMsMkJBQTJCLEVBQ3pCLGdEQUFnRDtRQUNsRCxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMseUJBQXlCLENBQUMsU0FBUztLQUNwRDtDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBWYWxpZGF0aW9uRXJyb3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9ySWQgfSBmcm9tICcuL2RhdGUtcmFuZ2UtY2FsY3VsYXRvci1pZCc7XG5pbXBvcnQgeyBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9yVHlwZSB9IGZyb20gJy4vZGF0ZS1yYW5nZS1jYWxjdWxhdG9yLXR5cGUnO1xuaW1wb3J0IHsgU2t5RGF0ZVJhbmdlRGVmYXVsdENhbGN1bGF0b3JDb25maWcgfSBmcm9tICcuL2RhdGUtcmFuZ2UtZGVmYXVsdC1jYWxjdWxhdG9yLWNvbmZpZyc7XG5pbXBvcnQgeyBTa3lEYXRlUmFuZ2VSZWxhdGl2ZVZhbHVlIH0gZnJvbSAnLi9kYXRlLXJhbmdlLXJlbGF0aXZlLXZhbHVlJztcblxuZXhwb3J0IGNvbnN0IFNLWV9ERUZBVUxUX0NBTENVTEFUT1JfSURTOiBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9ySWRbXSA9IFtcbiAgU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvcklkLkFueVRpbWUsXG4gIFNreURhdGVSYW5nZUNhbGN1bGF0b3JJZC5CZWZvcmUsXG4gIFNreURhdGVSYW5nZUNhbGN1bGF0b3JJZC5BZnRlcixcbiAgU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvcklkLlNwZWNpZmljUmFuZ2UsXG4gIFNreURhdGVSYW5nZUNhbGN1bGF0b3JJZC5ZZXN0ZXJkYXksXG4gIFNreURhdGVSYW5nZUNhbGN1bGF0b3JJZC5Ub2RheSxcbiAgU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvcklkLlRvbW9ycm93LFxuICBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9ySWQuTGFzdFdlZWssXG4gIFNreURhdGVSYW5nZUNhbGN1bGF0b3JJZC5UaGlzV2VlayxcbiAgU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvcklkLk5leHRXZWVrLFxuICBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9ySWQuTGFzdE1vbnRoLFxuICBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9ySWQuVGhpc01vbnRoLFxuICBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9ySWQuTmV4dE1vbnRoLFxuICBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9ySWQuTGFzdFF1YXJ0ZXIsXG4gIFNreURhdGVSYW5nZUNhbGN1bGF0b3JJZC5UaGlzUXVhcnRlcixcbiAgU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvcklkLk5leHRRdWFydGVyLFxuICBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9ySWQuTGFzdENhbGVuZGFyWWVhcixcbiAgU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvcklkLlRoaXNDYWxlbmRhclllYXIsXG4gIFNreURhdGVSYW5nZUNhbGN1bGF0b3JJZC5OZXh0Q2FsZW5kYXJZZWFyLFxuICBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9ySWQuTGFzdEZpc2NhbFllYXIsXG4gIFNreURhdGVSYW5nZUNhbGN1bGF0b3JJZC5UaGlzRmlzY2FsWWVhcixcbiAgU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvcklkLk5leHRGaXNjYWxZZWFyLFxuXTtcblxuZXhwb3J0IGNvbnN0IFNLWV9ERUZBVUxUX0NBTENVTEFUT1JfQ09ORklHUzogU2t5RGF0ZVJhbmdlRGVmYXVsdENhbGN1bGF0b3JDb25maWdbXSA9XG4gIFtcbiAgICB7XG4gICAgICBjYWxjdWxhdG9ySWQ6IFNreURhdGVSYW5nZUNhbGN1bGF0b3JJZC5BbnlUaW1lLFxuICAgICAgdHlwZTogU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvclR5cGUuUmVsYXRpdmUsXG4gICAgICBzaG9ydERlc2NyaXB0aW9uUmVzb3VyY2VLZXk6XG4gICAgICAgICdza3l1eF9kYXRlX3JhbmdlX3BpY2tlcl9mb3JtYXRfbGFiZWxfYW55X3RpbWUnLFxuICAgICAgZ2V0VmFsdWU6IChzdGFydERhdGUsIGVuZERhdGUpID0+ICh7IHN0YXJ0RGF0ZSwgZW5kRGF0ZSB9KSxcbiAgICB9LFxuXG4gICAge1xuICAgICAgY2FsY3VsYXRvcklkOiBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9ySWQuQmVmb3JlLFxuICAgICAgdHlwZTogU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvclR5cGUuQmVmb3JlLFxuICAgICAgc2hvcnREZXNjcmlwdGlvblJlc291cmNlS2V5OlxuICAgICAgICAnc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZm9ybWF0X2xhYmVsX2JlZm9yZScsXG4gICAgICBnZXRWYWx1ZTogKHN0YXJ0RGF0ZSwgZW5kRGF0ZSkgPT4gKHsgc3RhcnREYXRlLCBlbmREYXRlIH0pLFxuICAgIH0sXG5cbiAgICB7XG4gICAgICBjYWxjdWxhdG9ySWQ6IFNreURhdGVSYW5nZUNhbGN1bGF0b3JJZC5BZnRlcixcbiAgICAgIHR5cGU6IFNreURhdGVSYW5nZUNhbGN1bGF0b3JUeXBlLkFmdGVyLFxuICAgICAgc2hvcnREZXNjcmlwdGlvblJlc291cmNlS2V5OiAnc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZm9ybWF0X2xhYmVsX2FmdGVyJyxcbiAgICAgIGdldFZhbHVlOiAoc3RhcnREYXRlLCBlbmREYXRlKSA9PiAoeyBzdGFydERhdGUsIGVuZERhdGUgfSksXG4gICAgfSxcblxuICAgIHtcbiAgICAgIGNhbGN1bGF0b3JJZDogU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvcklkLlNwZWNpZmljUmFuZ2UsXG4gICAgICB0eXBlOiBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9yVHlwZS5SYW5nZSxcbiAgICAgIHNob3J0RGVzY3JpcHRpb25SZXNvdXJjZUtleTpcbiAgICAgICAgJ3NreXV4X2RhdGVfcmFuZ2VfcGlja2VyX2Zvcm1hdF9sYWJlbF9zcGVjaWZpY19yYW5nZScsXG4gICAgICBnZXRWYWx1ZTogKHN0YXJ0RGF0ZSwgZW5kRGF0ZSkgPT4gKHsgc3RhcnREYXRlLCBlbmREYXRlIH0pLFxuICAgICAgdmFsaWRhdGU6ICh2YWx1ZSk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHZhbHVlICYmXG4gICAgICAgICAgdmFsdWUuc3RhcnREYXRlICYmXG4gICAgICAgICAgdmFsdWUuZW5kRGF0ZSAmJlxuICAgICAgICAgIHZhbHVlLnN0YXJ0RGF0ZSA+IHZhbHVlLmVuZERhdGVcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGVuZERhdGVCZWZvcmVTdGFydERhdGU6IHRydWUsXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH0sXG4gICAgfSxcblxuICAgIHtcbiAgICAgIGNhbGN1bGF0b3JJZDogU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvcklkLkxhc3RGaXNjYWxZZWFyLFxuICAgICAgdHlwZTogU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvclR5cGUuUmVsYXRpdmUsXG4gICAgICBzaG9ydERlc2NyaXB0aW9uUmVzb3VyY2VLZXk6XG4gICAgICAgICdza3l1eF9kYXRlX3JhbmdlX3BpY2tlcl9mb3JtYXRfbGFiZWxfbGFzdF9maXNjYWxfeWVhcicsXG4gICAgICBnZXRWYWx1ZTogKCkgPT4gU2t5RGF0ZVJhbmdlUmVsYXRpdmVWYWx1ZS5sYXN0RmlzY2FsWWVhcixcbiAgICB9LFxuXG4gICAge1xuICAgICAgY2FsY3VsYXRvcklkOiBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9ySWQuTGFzdE1vbnRoLFxuICAgICAgdHlwZTogU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvclR5cGUuUmVsYXRpdmUsXG4gICAgICBzaG9ydERlc2NyaXB0aW9uUmVzb3VyY2VLZXk6XG4gICAgICAgICdza3l1eF9kYXRlX3JhbmdlX3BpY2tlcl9mb3JtYXRfbGFiZWxfbGFzdF9tb250aCcsXG4gICAgICBnZXRWYWx1ZTogKCkgPT4gU2t5RGF0ZVJhbmdlUmVsYXRpdmVWYWx1ZS5sYXN0TW9udGgsXG4gICAgfSxcblxuICAgIHtcbiAgICAgIGNhbGN1bGF0b3JJZDogU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvcklkLkxhc3RRdWFydGVyLFxuICAgICAgdHlwZTogU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvclR5cGUuUmVsYXRpdmUsXG4gICAgICBzaG9ydERlc2NyaXB0aW9uUmVzb3VyY2VLZXk6XG4gICAgICAgICdza3l1eF9kYXRlX3JhbmdlX3BpY2tlcl9mb3JtYXRfbGFiZWxfbGFzdF9xdWFydGVyJyxcbiAgICAgIGdldFZhbHVlOiAoKSA9PiBTa3lEYXRlUmFuZ2VSZWxhdGl2ZVZhbHVlLmxhc3RRdWFydGVyLFxuICAgIH0sXG5cbiAgICB7XG4gICAgICBjYWxjdWxhdG9ySWQ6IFNreURhdGVSYW5nZUNhbGN1bGF0b3JJZC5MYXN0V2VlayxcbiAgICAgIHR5cGU6IFNreURhdGVSYW5nZUNhbGN1bGF0b3JUeXBlLlJlbGF0aXZlLFxuICAgICAgc2hvcnREZXNjcmlwdGlvblJlc291cmNlS2V5OlxuICAgICAgICAnc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZm9ybWF0X2xhYmVsX2xhc3Rfd2VlaycsXG4gICAgICBnZXRWYWx1ZTogKCkgPT4gU2t5RGF0ZVJhbmdlUmVsYXRpdmVWYWx1ZS5sYXN0V2VlayxcbiAgICB9LFxuXG4gICAge1xuICAgICAgY2FsY3VsYXRvcklkOiBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9ySWQuTGFzdENhbGVuZGFyWWVhcixcbiAgICAgIHR5cGU6IFNreURhdGVSYW5nZUNhbGN1bGF0b3JUeXBlLlJlbGF0aXZlLFxuICAgICAgc2hvcnREZXNjcmlwdGlvblJlc291cmNlS2V5OlxuICAgICAgICAnc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZm9ybWF0X2xhYmVsX2xhc3RfY2FsZW5kYXJfeWVhcicsXG4gICAgICBnZXRWYWx1ZTogKCkgPT4gU2t5RGF0ZVJhbmdlUmVsYXRpdmVWYWx1ZS5sYXN0Q2FsZW5kYXJZZWFyLFxuICAgIH0sXG5cbiAgICB7XG4gICAgICBjYWxjdWxhdG9ySWQ6IFNreURhdGVSYW5nZUNhbGN1bGF0b3JJZC5OZXh0RmlzY2FsWWVhcixcbiAgICAgIHR5cGU6IFNreURhdGVSYW5nZUNhbGN1bGF0b3JUeXBlLlJlbGF0aXZlLFxuICAgICAgc2hvcnREZXNjcmlwdGlvblJlc291cmNlS2V5OlxuICAgICAgICAnc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZm9ybWF0X2xhYmVsX25leHRfZmlzY2FsX3llYXInLFxuICAgICAgZ2V0VmFsdWU6ICgpID0+IFNreURhdGVSYW5nZVJlbGF0aXZlVmFsdWUubmV4dEZpc2NhbFllYXIsXG4gICAgfSxcblxuICAgIHtcbiAgICAgIGNhbGN1bGF0b3JJZDogU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvcklkLk5leHRNb250aCxcbiAgICAgIHR5cGU6IFNreURhdGVSYW5nZUNhbGN1bGF0b3JUeXBlLlJlbGF0aXZlLFxuICAgICAgc2hvcnREZXNjcmlwdGlvblJlc291cmNlS2V5OlxuICAgICAgICAnc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZm9ybWF0X2xhYmVsX25leHRfbW9udGgnLFxuICAgICAgZ2V0VmFsdWU6ICgpID0+IFNreURhdGVSYW5nZVJlbGF0aXZlVmFsdWUubmV4dE1vbnRoLFxuICAgIH0sXG5cbiAgICB7XG4gICAgICBjYWxjdWxhdG9ySWQ6IFNreURhdGVSYW5nZUNhbGN1bGF0b3JJZC5OZXh0UXVhcnRlcixcbiAgICAgIHR5cGU6IFNreURhdGVSYW5nZUNhbGN1bGF0b3JUeXBlLlJlbGF0aXZlLFxuICAgICAgc2hvcnREZXNjcmlwdGlvblJlc291cmNlS2V5OlxuICAgICAgICAnc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZm9ybWF0X2xhYmVsX25leHRfcXVhcnRlcicsXG4gICAgICBnZXRWYWx1ZTogKCkgPT4gU2t5RGF0ZVJhbmdlUmVsYXRpdmVWYWx1ZS5uZXh0UXVhcnRlcixcbiAgICB9LFxuXG4gICAge1xuICAgICAgY2FsY3VsYXRvcklkOiBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9ySWQuTmV4dFdlZWssXG4gICAgICB0eXBlOiBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9yVHlwZS5SZWxhdGl2ZSxcbiAgICAgIHNob3J0RGVzY3JpcHRpb25SZXNvdXJjZUtleTpcbiAgICAgICAgJ3NreXV4X2RhdGVfcmFuZ2VfcGlja2VyX2Zvcm1hdF9sYWJlbF9uZXh0X3dlZWsnLFxuICAgICAgZ2V0VmFsdWU6ICgpID0+IFNreURhdGVSYW5nZVJlbGF0aXZlVmFsdWUubmV4dFdlZWssXG4gICAgfSxcblxuICAgIHtcbiAgICAgIGNhbGN1bGF0b3JJZDogU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvcklkLk5leHRDYWxlbmRhclllYXIsXG4gICAgICB0eXBlOiBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9yVHlwZS5SZWxhdGl2ZSxcbiAgICAgIHNob3J0RGVzY3JpcHRpb25SZXNvdXJjZUtleTpcbiAgICAgICAgJ3NreXV4X2RhdGVfcmFuZ2VfcGlja2VyX2Zvcm1hdF9sYWJlbF9uZXh0X2NhbGVuZGFyX3llYXInLFxuICAgICAgZ2V0VmFsdWU6ICgpID0+IFNreURhdGVSYW5nZVJlbGF0aXZlVmFsdWUubmV4dENhbGVuZGFyWWVhcixcbiAgICB9LFxuXG4gICAge1xuICAgICAgY2FsY3VsYXRvcklkOiBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9ySWQuVGhpc0Zpc2NhbFllYXIsXG4gICAgICB0eXBlOiBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9yVHlwZS5SZWxhdGl2ZSxcbiAgICAgIHNob3J0RGVzY3JpcHRpb25SZXNvdXJjZUtleTpcbiAgICAgICAgJ3NreXV4X2RhdGVfcmFuZ2VfcGlja2VyX2Zvcm1hdF9sYWJlbF90aGlzX2Zpc2NhbF95ZWFyJyxcbiAgICAgIGdldFZhbHVlOiAoKSA9PiBTa3lEYXRlUmFuZ2VSZWxhdGl2ZVZhbHVlLnRoaXNGaXNjYWxZZWFyLFxuICAgIH0sXG5cbiAgICB7XG4gICAgICBjYWxjdWxhdG9ySWQ6IFNreURhdGVSYW5nZUNhbGN1bGF0b3JJZC5UaGlzTW9udGgsXG4gICAgICB0eXBlOiBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9yVHlwZS5SZWxhdGl2ZSxcbiAgICAgIHNob3J0RGVzY3JpcHRpb25SZXNvdXJjZUtleTpcbiAgICAgICAgJ3NreXV4X2RhdGVfcmFuZ2VfcGlja2VyX2Zvcm1hdF9sYWJlbF90aGlzX21vbnRoJyxcbiAgICAgIGdldFZhbHVlOiAoKSA9PiBTa3lEYXRlUmFuZ2VSZWxhdGl2ZVZhbHVlLnRoaXNNb250aCxcbiAgICB9LFxuXG4gICAge1xuICAgICAgY2FsY3VsYXRvcklkOiBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9ySWQuVGhpc1F1YXJ0ZXIsXG4gICAgICB0eXBlOiBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9yVHlwZS5SZWxhdGl2ZSxcbiAgICAgIHNob3J0RGVzY3JpcHRpb25SZXNvdXJjZUtleTpcbiAgICAgICAgJ3NreXV4X2RhdGVfcmFuZ2VfcGlja2VyX2Zvcm1hdF9sYWJlbF90aGlzX3F1YXJ0ZXInLFxuICAgICAgZ2V0VmFsdWU6ICgpID0+IFNreURhdGVSYW5nZVJlbGF0aXZlVmFsdWUudGhpc1F1YXJ0ZXIsXG4gICAgfSxcblxuICAgIHtcbiAgICAgIGNhbGN1bGF0b3JJZDogU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvcklkLlRoaXNXZWVrLFxuICAgICAgdHlwZTogU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvclR5cGUuUmVsYXRpdmUsXG4gICAgICBzaG9ydERlc2NyaXB0aW9uUmVzb3VyY2VLZXk6XG4gICAgICAgICdza3l1eF9kYXRlX3JhbmdlX3BpY2tlcl9mb3JtYXRfbGFiZWxfdGhpc193ZWVrJyxcbiAgICAgIGdldFZhbHVlOiAoKSA9PiBTa3lEYXRlUmFuZ2VSZWxhdGl2ZVZhbHVlLnRoaXNXZWVrLFxuICAgIH0sXG5cbiAgICB7XG4gICAgICBjYWxjdWxhdG9ySWQ6IFNreURhdGVSYW5nZUNhbGN1bGF0b3JJZC5UaGlzQ2FsZW5kYXJZZWFyLFxuICAgICAgdHlwZTogU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvclR5cGUuUmVsYXRpdmUsXG4gICAgICBzaG9ydERlc2NyaXB0aW9uUmVzb3VyY2VLZXk6XG4gICAgICAgICdza3l1eF9kYXRlX3JhbmdlX3BpY2tlcl9mb3JtYXRfbGFiZWxfdGhpc19jYWxlbmRhcl95ZWFyJyxcbiAgICAgIGdldFZhbHVlOiAoKSA9PiBTa3lEYXRlUmFuZ2VSZWxhdGl2ZVZhbHVlLnRoaXNDYWxlbmRhclllYXIsXG4gICAgfSxcblxuICAgIHtcbiAgICAgIGNhbGN1bGF0b3JJZDogU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvcklkLlRvZGF5LFxuICAgICAgdHlwZTogU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvclR5cGUuUmVsYXRpdmUsXG4gICAgICBzaG9ydERlc2NyaXB0aW9uUmVzb3VyY2VLZXk6ICdza3l1eF9kYXRlX3JhbmdlX3BpY2tlcl9mb3JtYXRfbGFiZWxfdG9kYXknLFxuICAgICAgZ2V0VmFsdWU6ICgpID0+IFNreURhdGVSYW5nZVJlbGF0aXZlVmFsdWUudG9kYXksXG4gICAgfSxcblxuICAgIHtcbiAgICAgIGNhbGN1bGF0b3JJZDogU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvcklkLlRvbW9ycm93LFxuICAgICAgdHlwZTogU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvclR5cGUuUmVsYXRpdmUsXG4gICAgICBzaG9ydERlc2NyaXB0aW9uUmVzb3VyY2VLZXk6XG4gICAgICAgICdza3l1eF9kYXRlX3JhbmdlX3BpY2tlcl9mb3JtYXRfbGFiZWxfdG9tb3Jyb3cnLFxuICAgICAgZ2V0VmFsdWU6ICgpID0+IFNreURhdGVSYW5nZVJlbGF0aXZlVmFsdWUudG9tb3Jyb3csXG4gICAgfSxcblxuICAgIHtcbiAgICAgIGNhbGN1bGF0b3JJZDogU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvcklkLlllc3RlcmRheSxcbiAgICAgIHR5cGU6IFNreURhdGVSYW5nZUNhbGN1bGF0b3JUeXBlLlJlbGF0aXZlLFxuICAgICAgc2hvcnREZXNjcmlwdGlvblJlc291cmNlS2V5OlxuICAgICAgICAnc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZm9ybWF0X2xhYmVsX3llc3RlcmRheScsXG4gICAgICBnZXRWYWx1ZTogKCkgPT4gU2t5RGF0ZVJhbmdlUmVsYXRpdmVWYWx1ZS55ZXN0ZXJkYXksXG4gICAgfSxcbiAgXTtcbiJdfQ==","import { Injectable, inject } from '@angular/core';\nimport { SkyLibResourcesService } from '@skyux/i18n';\nimport { SkyDateRangeCalculator } from './types/date-range-calculator';\nimport { SKY_DEFAULT_CALCULATOR_CONFIGS } from './types/date-range-default-calculator-configs';\nimport * as i0 from \"@angular/core\";\n// Start the count higher than the number of available values\n// provided in the SkyDateRangeCalculatorId enum.\nlet lastId = 1000;\n/**\n * Creates and manages `SkyDateRangeCalculator` instances.\n */\nexport class SkyDateRangeService {\n #libResourcesSvc = inject(SkyLibResourcesService);\n get calculators() {\n return this.#calculators;\n }\n #calculators = this.#createDefaultCalculators();\n /**\n * Creates a custom date range calculator.\n * @param config The calculator config.\n */\n createCalculator(config) {\n const newId = lastId++;\n const calculator = new SkyDateRangeCalculator(newId, config, this.#libResourcesSvc);\n this.#calculators.push(calculator);\n return calculator;\n }\n /**\n * Returns calculators from an array of calculator IDs.\n * @param calculatorIds The array of calculator IDs.\n */\n filterCalculators(calculatorIds) {\n const filtered = [];\n for (const calculatorId of calculatorIds) {\n const found = this.#calculators.find((c) => c.calculatorId === calculatorId);\n if (found) {\n filtered.push(found);\n }\n }\n return filtered;\n }\n /**\n * Returns calculators from an array of calculator IDs.\n * @param ids The array of calculator IDs.\n * @deprecated Call `filterCalculators()` instead.\n */\n getCalculators(ids) {\n const promises = ids.map((id) => {\n return this.getCalculatorById(id);\n });\n return Promise.all(promises);\n }\n /**\n * Returns a calculator from a calculator ID.\n * @param id The calculator ID.\n * @deprecated Call `filterCalculators()` instead.\n */\n getCalculatorById(id) {\n const calculatorId = +id;\n const found = this.#calculators.find((calculator) => {\n return calculator.calculatorId === calculatorId;\n });\n return new Promise((resolve, reject) => {\n if (!found) {\n reject(new Error(`A calculator with the ID ${id} was not found.`));\n return;\n }\n resolve(found);\n });\n }\n /**\n * Returns default date range calculators with unresolved resources strings.\n */\n #createDefaultCalculators() {\n const calculators = [];\n for (const defaultConfig of SKY_DEFAULT_CALCULATOR_CONFIGS) {\n calculators.push(new SkyDateRangeCalculator(defaultConfig.calculatorId, {\n getValue: defaultConfig.getValue,\n validate: defaultConfig.validate,\n shortDescription: '',\n type: defaultConfig.type,\n }, this.#libResourcesSvc, defaultConfig.shortDescriptionResourceKey));\n }\n return calculators;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDateRangeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDateRangeService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDateRangeService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2RhdGV0aW1lL3NyYy9saWIvbW9kdWxlcy9kYXRlLXJhbmdlLXBpY2tlci9kYXRlLXJhbmdlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXJELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBR3ZFLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLCtDQUErQyxDQUFDOztBQUUvRiw2REFBNkQ7QUFDN0QsaURBQWlEO0FBQ2pELElBQUksTUFBTSxHQUFHLElBQUksQ0FBQztBQUVsQjs7R0FFRztBQUlILE1BQU0sT0FBTyxtQkFBbUI7SUFDckIsZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQUM7SUFFM0QsSUFBVyxXQUFXO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBRUQsWUFBWSxHQUFHLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO0lBRWhEOzs7T0FHRztJQUNJLGdCQUFnQixDQUNyQixNQUFvQztRQUVwQyxNQUFNLEtBQUssR0FBRyxNQUFNLEVBQUUsQ0FBQztRQUN2QixNQUFNLFVBQVUsR0FBRyxJQUFJLHNCQUFzQixDQUMzQyxLQUFLLEVBQ0wsTUFBTSxFQUNOLElBQUksQ0FBQyxnQkFBZ0IsQ0FDdEIsQ0FBQztRQUVGLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRW5DLE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7SUFFRDs7O09BR0c7SUFDSSxpQkFBaUIsQ0FDdEIsYUFBeUM7UUFFekMsTUFBTSxRQUFRLEdBQTZCLEVBQUUsQ0FBQztRQUU5QyxLQUFLLE1BQU0sWUFBWSxJQUFJLGFBQWEsRUFBRSxDQUFDO1lBQ3pDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUNsQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFlBQVksS0FBSyxZQUFZLENBQ3ZDLENBQUM7WUFFRixJQUFJLEtBQUssRUFBRSxDQUFDO2dCQUNWLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdkIsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLGNBQWMsQ0FDbkIsR0FBK0I7UUFFL0IsTUFBTSxRQUFRLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFO1lBQzlCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksaUJBQWlCLENBQ3RCLEVBQTRCO1FBRTVCLE1BQU0sWUFBWSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBRXpCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUU7WUFDbEQsT0FBTyxVQUFVLENBQUMsWUFBWSxLQUFLLFlBQVksQ0FBQztRQUNsRCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDckMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNYLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyw0QkFBNEIsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7Z0JBQ25FLE9BQU87WUFDVCxDQUFDO1lBRUQsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0gseUJBQXlCO1FBQ3ZCLE1BQU0sV0FBVyxHQUE2QixFQUFFLENBQUM7UUFFakQsS0FBSyxNQUFNLGFBQWEsSUFBSSw4QkFBOEIsRUFBRSxDQUFDO1lBQzNELFdBQVcsQ0FBQyxJQUFJLENBQ2QsSUFBSSxzQkFBc0IsQ0FDeEIsYUFBYSxDQUFDLFlBQVksRUFDMUI7Z0JBQ0UsUUFBUSxFQUFFLGFBQWEsQ0FBQyxRQUFRO2dCQUNoQyxRQUFRLEVBQUUsYUFBYSxDQUFDLFFBQVE7Z0JBQ2hDLGdCQUFnQixFQUFFLEVBQUU7Z0JBQ3BCLElBQUksRUFBRSxhQUFhLENBQUMsSUFBSTthQUN6QixFQUNELElBQUksQ0FBQyxnQkFBZ0IsRUFDckIsYUFBYSxDQUFDLDJCQUEyQixDQUMxQyxDQUNGLENBQUM7UUFDSixDQUFDO1FBRUQsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQzs4R0FoSFUsbUJBQW1CO2tIQUFuQixtQkFBbUIsY0FGbEIsTUFBTTs7MkZBRVAsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2t5TGliUmVzb3VyY2VzU2VydmljZSB9IGZyb20gJ0Bza3l1eC9pMThuJztcblxuaW1wb3J0IHsgU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvciB9IGZyb20gJy4vdHlwZXMvZGF0ZS1yYW5nZS1jYWxjdWxhdG9yJztcbmltcG9ydCB7IFNreURhdGVSYW5nZUNhbGN1bGF0b3JDb25maWcgfSBmcm9tICcuL3R5cGVzL2RhdGUtcmFuZ2UtY2FsY3VsYXRvci1jb25maWcnO1xuaW1wb3J0IHsgU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvcklkIH0gZnJvbSAnLi90eXBlcy9kYXRlLXJhbmdlLWNhbGN1bGF0b3ItaWQnO1xuaW1wb3J0IHsgU0tZX0RFRkFVTFRfQ0FMQ1VMQVRPUl9DT05GSUdTIH0gZnJvbSAnLi90eXBlcy9kYXRlLXJhbmdlLWRlZmF1bHQtY2FsY3VsYXRvci1jb25maWdzJztcblxuLy8gU3RhcnQgdGhlIGNvdW50IGhpZ2hlciB0aGFuIHRoZSBudW1iZXIgb2YgYXZhaWxhYmxlIHZhbHVlc1xuLy8gcHJvdmlkZWQgaW4gdGhlIFNreURhdGVSYW5nZUNhbGN1bGF0b3JJZCBlbnVtLlxubGV0IGxhc3RJZCA9IDEwMDA7XG5cbi8qKlxuICogQ3JlYXRlcyBhbmQgbWFuYWdlcyBgU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvcmAgaW5zdGFuY2VzLlxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgU2t5RGF0ZVJhbmdlU2VydmljZSB7XG4gIHJlYWRvbmx5ICNsaWJSZXNvdXJjZXNTdmMgPSBpbmplY3QoU2t5TGliUmVzb3VyY2VzU2VydmljZSk7XG5cbiAgcHVibGljIGdldCBjYWxjdWxhdG9ycygpOiBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9yW10ge1xuICAgIHJldHVybiB0aGlzLiNjYWxjdWxhdG9ycztcbiAgfVxuXG4gICNjYWxjdWxhdG9ycyA9IHRoaXMuI2NyZWF0ZURlZmF1bHRDYWxjdWxhdG9ycygpO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgY3VzdG9tIGRhdGUgcmFuZ2UgY2FsY3VsYXRvci5cbiAgICogQHBhcmFtIGNvbmZpZyBUaGUgY2FsY3VsYXRvciBjb25maWcuXG4gICAqL1xuICBwdWJsaWMgY3JlYXRlQ2FsY3VsYXRvcihcbiAgICBjb25maWc6IFNreURhdGVSYW5nZUNhbGN1bGF0b3JDb25maWcsXG4gICk6IFNreURhdGVSYW5nZUNhbGN1bGF0b3Ige1xuICAgIGNvbnN0IG5ld0lkID0gbGFzdElkKys7XG4gICAgY29uc3QgY2FsY3VsYXRvciA9IG5ldyBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9yKFxuICAgICAgbmV3SWQsXG4gICAgICBjb25maWcsXG4gICAgICB0aGlzLiNsaWJSZXNvdXJjZXNTdmMsXG4gICAgKTtcblxuICAgIHRoaXMuI2NhbGN1bGF0b3JzLnB1c2goY2FsY3VsYXRvcik7XG5cbiAgICByZXR1cm4gY2FsY3VsYXRvcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGNhbGN1bGF0b3JzIGZyb20gYW4gYXJyYXkgb2YgY2FsY3VsYXRvciBJRHMuXG4gICAqIEBwYXJhbSBjYWxjdWxhdG9ySWRzIFRoZSBhcnJheSBvZiBjYWxjdWxhdG9yIElEcy5cbiAgICovXG4gIHB1YmxpYyBmaWx0ZXJDYWxjdWxhdG9ycyhcbiAgICBjYWxjdWxhdG9ySWRzOiBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9ySWRbXSxcbiAgKTogU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvcltdIHtcbiAgICBjb25zdCBmaWx0ZXJlZDogU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvcltdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IGNhbGN1bGF0b3JJZCBvZiBjYWxjdWxhdG9ySWRzKSB7XG4gICAgICBjb25zdCBmb3VuZCA9IHRoaXMuI2NhbGN1bGF0b3JzLmZpbmQoXG4gICAgICAgIChjKSA9PiBjLmNhbGN1bGF0b3JJZCA9PT0gY2FsY3VsYXRvcklkLFxuICAgICAgKTtcblxuICAgICAgaWYgKGZvdW5kKSB7XG4gICAgICAgIGZpbHRlcmVkLnB1c2goZm91bmQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmaWx0ZXJlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGNhbGN1bGF0b3JzIGZyb20gYW4gYXJyYXkgb2YgY2FsY3VsYXRvciBJRHMuXG4gICAqIEBwYXJhbSBpZHMgVGhlIGFycmF5IG9mIGNhbGN1bGF0b3IgSURzLlxuICAgKiBAZGVwcmVjYXRlZCBDYWxsIGBmaWx0ZXJDYWxjdWxhdG9ycygpYCBpbnN0ZWFkLlxuICAgKi9cbiAgcHVibGljIGdldENhbGN1bGF0b3JzKFxuICAgIGlkczogU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvcklkW10sXG4gICk6IFByb21pc2U8U2t5RGF0ZVJhbmdlQ2FsY3VsYXRvcltdPiB7XG4gICAgY29uc3QgcHJvbWlzZXMgPSBpZHMubWFwKChpZCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0Q2FsY3VsYXRvckJ5SWQoaWQpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIFByb21pc2UuYWxsKHByb21pc2VzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgY2FsY3VsYXRvciBmcm9tIGEgY2FsY3VsYXRvciBJRC5cbiAgICogQHBhcmFtIGlkIFRoZSBjYWxjdWxhdG9yIElELlxuICAgKiBAZGVwcmVjYXRlZCBDYWxsIGBmaWx0ZXJDYWxjdWxhdG9ycygpYCBpbnN0ZWFkLlxuICAgKi9cbiAgcHVibGljIGdldENhbGN1bGF0b3JCeUlkKFxuICAgIGlkOiBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9ySWQsXG4gICk6IFByb21pc2U8U2t5RGF0ZVJhbmdlQ2FsY3VsYXRvcj4ge1xuICAgIGNvbnN0IGNhbGN1bGF0b3JJZCA9ICtpZDtcblxuICAgIGNvbnN0IGZvdW5kID0gdGhpcy4jY2FsY3VsYXRvcnMuZmluZCgoY2FsY3VsYXRvcikgPT4ge1xuICAgICAgcmV0dXJuIGNhbGN1bGF0b3IuY2FsY3VsYXRvcklkID09PSBjYWxjdWxhdG9ySWQ7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgaWYgKCFmb3VuZCkge1xuICAgICAgICByZWplY3QobmV3IEVycm9yKGBBIGNhbGN1bGF0b3Igd2l0aCB0aGUgSUQgJHtpZH0gd2FzIG5vdCBmb3VuZC5gKSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgcmVzb2x2ZShmb3VuZCk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBkZWZhdWx0IGRhdGUgcmFuZ2UgY2FsY3VsYXRvcnMgd2l0aCB1bnJlc29sdmVkIHJlc291cmNlcyBzdHJpbmdzLlxuICAgKi9cbiAgI2NyZWF0ZURlZmF1bHRDYWxjdWxhdG9ycygpOiBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9yW10ge1xuICAgIGNvbnN0IGNhbGN1bGF0b3JzOiBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9yW10gPSBbXTtcblxuICAgIGZvciAoY29uc3QgZGVmYXVsdENvbmZpZyBvZiBTS1lfREVGQVVMVF9DQUxDVUxBVE9SX0NPTkZJR1MpIHtcbiAgICAgIGNhbGN1bGF0b3JzLnB1c2goXG4gICAgICAgIG5ldyBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9yKFxuICAgICAgICAgIGRlZmF1bHRDb25maWcuY2FsY3VsYXRvcklkLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGdldFZhbHVlOiBkZWZhdWx0Q29uZmlnLmdldFZhbHVlLFxuICAgICAgICAgICAgdmFsaWRhdGU6IGRlZmF1bHRDb25maWcudmFsaWRhdGUsXG4gICAgICAgICAgICBzaG9ydERlc2NyaXB0aW9uOiAnJyxcbiAgICAgICAgICAgIHR5cGU6IGRlZmF1bHRDb25maWcudHlwZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHRoaXMuI2xpYlJlc291cmNlc1N2YyxcbiAgICAgICAgICBkZWZhdWx0Q29uZmlnLnNob3J0RGVzY3JpcHRpb25SZXNvdXJjZUtleSxcbiAgICAgICAgKSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNhbGN1bGF0b3JzO1xuICB9XG59XG4iXX0=","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, DestroyRef, ElementRef, HostBinding, Injector, Input, booleanAttribute, computed, inject, runInInjectionContext, signal, viewChildren, } from '@angular/core';\nimport { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';\nimport { FormBuilder, FormControl, FormsModule, NG_VALIDATORS, NG_VALUE_ACCESSOR, NgControl, ReactiveFormsModule, StatusChangeEvent, TouchedChangeEvent, } from '@angular/forms';\nimport { SkyLogService } from '@skyux/core';\nimport { SKY_FORM_ERRORS_ENABLED, SkyFormErrorsModule, SkyInputBoxModule, } from '@skyux/forms';\nimport { distinctUntilChanged, filter, map } from 'rxjs';\nimport { SkyDatepickerComponent } from '../datepicker/datepicker.component';\nimport { SkyDatepickerModule } from '../datepicker/datepicker.module';\nimport { SkyDatetimeResourcesModule } from '../shared/sky-datetime-resources.module';\nimport { SkyDateRangePickerEndDateResourceKeyPipe } from './date-range-picker-end-date-resource-key.pipe';\nimport { SkyDateRangePickerStartDateResourceKeyPipe } from './date-range-picker-start-date-resource-key.pipe';\nimport { SkyDateRangeService } from './date-range.service';\nimport { SkyDateRangeCalculatorType } from './types/date-range-calculator-type';\nimport { SKY_DEFAULT_CALCULATOR_IDS } from './types/date-range-default-calculator-configs';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nimport * as i2 from \"@angular/forms\";\nimport * as i3 from \"../datepicker/datepicker.component\";\nimport * as i4 from \"../datepicker/datepicker-input.directive\";\nimport * as i5 from \"@skyux/i18n\";\nimport * as i6 from \"@skyux/forms\";\nfunction areDateRangesEqual(rangeA, rangeB) {\n return (!!rangeA &&\n !!rangeB &&\n rangeA.calculatorId === rangeB.calculatorId &&\n areDatesEqual(rangeA.startDate, rangeB.startDate) &&\n areDatesEqual(rangeA.endDate, rangeB.endDate));\n}\nfunction areDatesEqual(a, b) {\n if (typeof a !== typeof b) {\n return false;\n }\n if (!a && !b) {\n return true;\n }\n if (typeof a === 'string' && a === b) {\n return true;\n }\n return a instanceof Date && b instanceof Date && a.getTime() === b.getTime();\n}\nfunction isNullOrUndefined(value) {\n return value === undefined || value === null;\n}\nfunction isPartialValue(value) {\n return (isNullOrUndefined(value) ||\n isNullOrUndefined(value.calculatorId) ||\n !('endDate' in value) ||\n !('startDate' in value));\n}\nexport class SkyDateRangePickerComponent {\n constructor() {\n this.#dateRangeSvc = inject(SkyDateRangeService);\n this.#destroyRef = inject(DestroyRef);\n this.#elementRef = inject(ElementRef);\n this.#injector = inject(Injector);\n this.#logger = inject(SkyLogService);\n /**\n * Whether the date range picker is stacked on another form component. When specified, the appropriate\n * vertical spacing is automatically added to the date range picker.\n */\n this.stacked = false;\n this.calculators = this.#dateRangeSvc.calculators;\n this.datepickers = viewChildren(SkyDatepickerComponent);\n this.selectedCalculator = this.calculators[0];\n this.showEndDatePicker = signal(false);\n this.showStartDatePicker = signal(false);\n this.#_calculatorIds = SKY_DEFAULT_CALCULATOR_IDS;\n this.#_value = this.selectedCalculator.getValue();\n this.#calculatorIdControl = new FormControl(this.#getValue().calculatorId, { nonNullable: true });\n this.#calculatorIdInvalid = this.#createStatusChangeSignal(this.#calculatorIdControl);\n this.#calculatorIdTouched = this.#createTouchedChangeSignal(this.#calculatorIdControl);\n this.#endDateControl = new FormControl(this.#getValue().endDate);\n this.#endDateInvalid = this.#createStatusChangeSignal(this.#endDateControl);\n this.#endDateTouched = this.#createTouchedChangeSignal(this.#endDateControl);\n this.#startDateControl = new FormControl(this.#getValue().startDate);\n this.#startDateInvalid = this.#createStatusChangeSignal(this.#startDateControl);\n this.#startDateTouched = this.#createTouchedChangeSignal(this.#startDateControl);\n this.formGroup = inject(FormBuilder).group({\n calculatorId: this.#calculatorIdControl,\n startDate: this.#startDateControl,\n endDate: this.#endDateControl,\n });\n this.calculatorIdHasErrors = computed(() => {\n const touched = this.#calculatorIdTouched();\n const invalid = this.#calculatorIdInvalid() || this.#hostHasCustomError?.();\n return touched && invalid;\n });\n this.endDateHasErrors = computed(() => {\n const calculatorIdHasErrors = this.calculatorIdHasErrors();\n const touched = this.#endDateTouched();\n const invalid = this.#endDateInvalid();\n return calculatorIdHasErrors || (touched && invalid);\n });\n this.startDateHasErrors = computed(() => {\n const calculatorIdHasErrors = this.calculatorIdHasErrors();\n const touched = this.#startDateTouched();\n const invalid = this.#startDateInvalid();\n return calculatorIdHasErrors || (touched && invalid);\n });\n }\n #dateRangeSvc;\n #destroyRef;\n #elementRef;\n #injector;\n #logger;\n /**\n * IDs for the date range options to include in the picker's dropdown.\n * The options specify calculator objects that return two `Date` objects to represent date ranges.\n * By default, this property includes all `SkyDateRangeCalculatorId` values.\n */\n set calculatorIds(calculatorIds) {\n const currentCalculatorId = this.#getValue().calculatorId;\n this.#_calculatorIds = calculatorIds ?? SKY_DEFAULT_CALCULATOR_IDS;\n this.calculators = this.#dateRangeSvc.filterCalculators(this.#_calculatorIds);\n // If the currently selected calculator isn't available anymore,\n // select the first calculator in the new array.\n if (!this.#_calculatorIds.includes(currentCalculatorId)) {\n this.#setValue({ calculatorId: this.calculatorIds[0] });\n }\n }\n get calculatorIds() {\n return this.#_calculatorIds;\n }\n /**\n * Whether to disable the date range picker on template-driven forms. Don't use\n * this input on reactive forms because they may overwrite the input or leave\n * the control out of sync. To set the disabled state on reactive forms,\n * use the `FormControl` instead.\n * @default false\n */\n set disabled(value) {\n if (value) {\n this.formGroup.disable();\n }\n else {\n this.formGroup.enable();\n }\n }\n /**\n * The label for the date range picker.\n * @deprecated Use the `labelText` input instead.\n */\n set label(value) {\n this.#_label = value;\n if (value) {\n this.#logger.deprecated('SkyDateRangePickerComponent.label', {\n deprecationMajorVersion: 10,\n replacementRecommendation: 'Use the `labelText` input instead.',\n });\n }\n }\n get label() {\n return this.#_label;\n }\n #_calculatorIds;\n #_label;\n #_value;\n #hostHasCustomError;\n #notifyChange;\n #notifyTouched;\n #calculatorIdControl;\n #calculatorIdInvalid;\n #calculatorIdTouched;\n #endDateControl;\n #endDateInvalid;\n #endDateTouched;\n #startDateControl;\n #startDateInvalid;\n #startDateTouched;\n ngAfterViewInit() {\n this.hostControl = this.#injector.get(NgControl, null, {\n optional: true,\n self: true,\n })?.control;\n runInInjectionContext(this.#injector, () => {\n if (this.hostControl) {\n this.#hostHasCustomError = this.#createHostCustomErrorChangeSignal(this.hostControl);\n }\n });\n // Set a default value on the control if it's undefined on init.\n // We need to use setTimeout to avoid interfering with the first\n // validation cycle.\n if (isPartialValue(this.hostControl?.value)) {\n setTimeout(() => {\n this.hostControl?.setValue(this.#getValue(), {\n emitEvent: false,\n });\n });\n }\n // If the datepickers' statuses change, we want to retrigger the host\n // control's validation so that their errors are reflected back to the host.\n this.formGroup.events\n .pipe(filter((evt) => evt instanceof StatusChangeEvent), map((evt) => evt.status), distinctUntilChanged(), takeUntilDestroyed(this.#destroyRef))\n .subscribe(() => {\n this.hostControl?.updateValueAndValidity({\n emitEvent: false,\n onlySelf: true,\n });\n });\n // Mark all fields as touched if the host control is touched.\n this.hostControl?.events\n .pipe(filter((evt) => evt instanceof TouchedChangeEvent), map((evt) => evt.touched), distinctUntilChanged(), takeUntilDestroyed(this.#destroyRef))\n .subscribe(() => {\n this.formGroup.markAllAsTouched();\n });\n }\n // Implemented as part of ControlValueAccessor.\n registerOnChange(fn) {\n this.#notifyChange = fn;\n }\n // Implemented as part of ControlValueAccessor.\n registerOnTouched(fn) {\n this.#notifyTouched = fn;\n }\n // Implemented as part of ControlValueAccessor.\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n }\n // Implemented as part of Validator.\n validate(control) {\n let errors = null;\n const calculatorErrors = this.selectedCalculator.validate(control.value);\n const startDateErrors = this.#startDateControl.errors;\n const endDateErrors = this.#endDateControl.errors;\n if (calculatorErrors) {\n errors = {\n skyDateRange: {\n calculatorId: this.#getValue().calculatorId,\n errors: calculatorErrors,\n },\n };\n }\n // Set calculator errors on the select so that they appear beneath it.\n this.#calculatorIdControl.setErrors(errors);\n if (this.showStartDatePicker() && startDateErrors) {\n errors ||= {};\n errors = { ...errors, ...startDateErrors };\n }\n if (this.showEndDatePicker() && endDateErrors) {\n errors ||= {};\n errors = { ...errors, ...endDateErrors };\n }\n return errors;\n }\n // Implemented as part of ControlValueAccessor.\n // The date range picker always has a value, so if the consumer passes in a\n // partial value (via `patchValue`) or null, we need to update the host control's\n // value with the complete value after it's been modified.\n writeValue(value) {\n this.#patchValue(value);\n // Update the host control if it is set to a partial or null value.\n if (isPartialValue(value)) {\n this.hostControl?.setValue(this.#getValue(), {\n emitEvent: false,\n onlySelf: true,\n });\n }\n }\n /**\n * Fires when a user changes the selected calculator ID.\n */\n onCalculatorIdChange() {\n // Reset the value when the calculator ID changes.\n this.#setValue({ calculatorId: +this.#calculatorIdControl.value });\n this.onDateChange();\n }\n /**\n * Fires when a user interacts with a date range picker.\n */\n onDateChange() {\n // Wait until the form control is updated before retrieving its value.\n setTimeout(() => {\n this.#notifyChange?.(this.formGroup.getRawValue());\n });\n }\n /**\n * Fires when the date range picker loses focus.\n */\n onFocusout({ relatedTarget }) {\n if (relatedTarget &&\n !this.#elementRef.nativeElement.contains(relatedTarget) &&\n !this.datepickers().some((picker) => picker.containsTarget(relatedTarget))) {\n this.#notifyTouched?.();\n }\n }\n #getCalculator(calculatorId) {\n const found = this.calculators.find((c) => c.calculatorId === calculatorId);\n /*istanbul ignore if: safety check*/\n if (!found) {\n throw new Error(`A date range calculator with ID (${calculatorId}) could not be found.`);\n }\n return found;\n }\n #getValue() {\n // Important! Return a clone to avoid changing the properties by reference.\n return { ...this.#_value };\n }\n #patchValue(partialValue) {\n if (isNullOrUndefined(partialValue)) {\n this.#setValue(null);\n return;\n }\n const oldValue = this.#getValue();\n // If the new ID is distinct, erase the old start and end dates because\n // they're no longer applicable.\n if (!isNullOrUndefined(partialValue.calculatorId) &&\n oldValue.calculatorId !== partialValue.calculatorId) {\n delete oldValue.endDate;\n delete oldValue.startDate;\n }\n const value = {\n ...oldValue,\n ...partialValue,\n };\n this.#setValue(value);\n }\n /**\n * Sets the value to be used by the date range picker form control.\n */\n #setValue(value) {\n const oldValue = this.#getValue();\n const isValueEmpty = !value || isNullOrUndefined(value.calculatorId);\n const valueOrDefault = isValueEmpty\n ? this.calculators[0].getValue()\n : {\n ...this.#getCalculator(value.calculatorId).getValue(),\n ...value,\n };\n // Ensure falsy values are set to null.\n valueOrDefault.endDate = valueOrDefault.endDate || null;\n valueOrDefault.startDate = valueOrDefault.startDate || null;\n if (!areDateRangesEqual(oldValue, valueOrDefault)) {\n this.#_value = valueOrDefault;\n if (oldValue.calculatorId !== valueOrDefault.calculatorId) {\n this.selectedCalculator = this.#getCalculator(valueOrDefault.calculatorId);\n this.#updatePickerVisibility(this.selectedCalculator);\n }\n this.formGroup.patchValue(valueOrDefault);\n }\n }\n #updatePickerVisibility(calculator) {\n let showEndDatePicker = false;\n let showStartDatePicker = false;\n switch (calculator.type) {\n case SkyDateRangeCalculatorType.Before:\n showEndDatePicker = true;\n break;\n case SkyDateRangeCalculatorType.After:\n showStartDatePicker = true;\n break;\n case SkyDateRangeCalculatorType.Range:\n showEndDatePicker = true;\n showStartDatePicker = true;\n break;\n default:\n break;\n }\n this.showEndDatePicker.set(showEndDatePicker);\n this.showStartDatePicker.set(showStartDatePicker);\n }\n #createHostCustomErrorChangeSignal(control) {\n return toSignal(control.events.pipe(filter((evt) => evt instanceof StatusChangeEvent), map((evt) => {\n const errors = evt.source.errors ?? [];\n const knownErrors = ['required', 'skyDate'];\n return Object.keys(errors).some((error) => {\n return !knownErrors.includes(error);\n });\n })));\n }\n #createStatusChangeSignal(control) {\n return toSignal(control.events.pipe(filter((evt) => evt instanceof StatusChangeEvent), map((evt) => evt.status === 'INVALID'), takeUntilDestroyed(this.#destroyRef)));\n }\n #createTouchedChangeSignal(control) {\n return toSignal(control.events.pipe(filter((evt) => evt instanceof TouchedChangeEvent), map((evt) => evt.touched), takeUntilDestroyed(this.#destroyRef)));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDateRangePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.5\", type: SkyDateRangePickerComponent, isStandalone: true, selector: \"sky-date-range-picker\", inputs: { calculatorIds: \"calculatorIds\", dateFormat: \"dateFormat\", disabled: [\"disabled\", \"disabled\", booleanAttribute], helpPopoverContent: \"helpPopoverContent\", helpPopoverTitle: \"helpPopoverTitle\", hintText: \"hintText\", label: \"label\", labelText: \"labelText\", stacked: [\"stacked\", \"stacked\", booleanAttribute], helpKey: \"helpKey\" }, host: { listeners: { \"focusout\": \"onFocusout($event)\" }, properties: { \"class.sky-form-field-stacked\": \"this.stacked\" } }, providers: [\n {\n provide: NG_VALIDATORS,\n useExisting: SkyDateRangePickerComponent,\n multi: true,\n },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: SkyDateRangePickerComponent,\n multi: true,\n },\n { provide: SKY_FORM_ERRORS_ENABLED, useValue: true },\n ], viewQueries: [{ propertyName: \"datepickers\", predicate: SkyDatepickerComponent, descendants: true, isSignal: true }], ngImport: i0, template: \"<div class=\\\"sky-date-range-picker\\\" [formGroup]=\\\"formGroup\\\">\\n <div\\n class=\\\"sky-date-range-picker-form-group sky-date-range-picker-select-calculator\\\"\\n [ngClass]=\\\"{\\n 'sky-date-range-picker-last-input':\\n !showStartDatePicker() && !showEndDatePicker()\\n }\\\"\\n >\\n <sky-input-box\\n [hasErrors]=\\\"calculatorIdHasErrors()\\\"\\n [helpKey]=\\\"helpKey\\\"\\n [helpPopoverContent]=\\\"helpPopoverContent\\\"\\n [helpPopoverTitle]=\\\"helpPopoverTitle\\\"\\n [hintText]=\\\"hintText\\\"\\n [labelText]=\\\"\\n labelText ||\\n label ||\\n ('skyux_date_range_picker_default_label' | skyLibResources)\\n \\\"\\n >\\n <select formControlName=\\\"calculatorId\\\" (change)=\\\"onCalculatorIdChange()\\\">\\n @for (calculator of calculators; track calculator.calculatorId) {\\n <option [value]=\\\"calculator.calculatorId\\\">\\n {{ calculator.shortDescription$ | async }}\\n </option>\\n }\\n </select>\\n @if (\\n hostControl?.errors?.['skyDateRange']?.errors?.[\\n 'endDateBeforeStartDate'\\n ] && labelText\\n ) {\\n <sky-form-error\\n errorName=\\\"endDateBeforeStartDate\\\"\\n [errorText]=\\\"\\n 'skyux_date_range_picker_end_date_before_start_date_error_label_text'\\n | skyLibResources\\n \\\"\\n />\\n }\\n <span class=\\\"sky-input-box-descendent-form-error\\\">\\n <ng-content select=\\\"sky-form-error\\\" />\\n </span>\\n </sky-input-box>\\n </div>\\n <div\\n class=\\\"sky-date-range-picker-form-group sky-date-range-datepicker-wrapper sky-date-range-picker-start-date\\\"\\n [hidden]=\\\"!showStartDatePicker()\\\"\\n [ngClass]=\\\"{\\n 'sky-date-range-picker-last-input':\\n showStartDatePicker() && !showEndDatePicker()\\n }\\\"\\n >\\n <sky-input-box\\n [hasErrors]=\\\"startDateHasErrors()\\\"\\n [labelText]=\\\"\\n selectedCalculator.type\\n | skyDateRangePickerStartDateResourceKey\\n | skyLibResources\\n \\\"\\n >\\n <sky-datepicker (calendarDateChange)=\\\"onDateChange()\\\">\\n <input\\n formControlName=\\\"startDate\\\"\\n name=\\\"startDate\\\"\\n skyDatepickerInput\\n type=\\\"text\\\"\\n [attr.aria-label]=\\\"\\n labelText || label\\n ? ('skyux_date_range_picker_default_aria_label'\\n | skyLibResources\\n : (selectedCalculator.type\\n | skyDateRangePickerStartDateResourceKey\\n | skyLibResources)\\n : (labelText ? labelText : label))\\n : (selectedCalculator.type\\n | skyDateRangePickerStartDateResourceKey\\n | skyLibResources)\\n \\\"\\n [dateFormat]=\\\"dateFormat\\\"\\n [required]=\\\"showStartDatePicker()\\\"\\n (change)=\\\"onDateChange()\\\"\\n />\\n </sky-datepicker>\\n </sky-input-box>\\n </div>\\n <div\\n class=\\\"sky-date-range-picker-form-group sky-date-range-datepicker-wrapper sky-date-range-picker-end-date\\\"\\n [hidden]=\\\"!showEndDatePicker()\\\"\\n [ngClass]=\\\"{ 'sky-date-range-picker-last-input': showEndDatePicker() }\\\"\\n >\\n <sky-input-box\\n [hasErrors]=\\\"endDateHasErrors()\\\"\\n [labelText]=\\\"\\n selectedCalculator.type\\n | skyDateRangePickerEndDateResourceKey\\n | skyLibResources\\n \\\"\\n >\\n <sky-datepicker (calendarDateChange)=\\\"onDateChange()\\\">\\n <input\\n formControlName=\\\"endDate\\\"\\n name=\\\"endDate\\\"\\n skyDatepickerInput\\n type=\\\"text\\\"\\n [attr.aria-label]=\\\"\\n labelText || label\\n ? ('skyux_date_range_picker_default_aria_label'\\n | skyLibResources\\n : (selectedCalculator.type\\n | skyDateRangePickerEndDateResourceKey\\n | skyLibResources)\\n : (labelText ? labelText : label))\\n : (selectedCalculator.type\\n | skyDateRangePickerEndDateResourceKey\\n | skyLibResources)\\n \\\"\\n [dateFormat]=\\\"dateFormat\\\"\\n [required]=\\\"showEndDatePicker()\\\"\\n (change)=\\\"onDateChange()\\\"\\n />\\n </sky-datepicker>\\n </sky-input-box>\\n </div>\\n</div>\\n\", styles: [\".sky-date-range-picker:not(.sky-theme-modern *){--sky-override-date-range-picker-margin-right: 0;--sky-override-date-range-picker-padding-left: 5px;--sky-override-date-range-picker-padding-right: 5px;--sky-override-date-range-picker-responsive-bottom-margin: var( --sky-margin-stacked-lg )}:host{display:block}.sky-date-range-picker{display:flex}:host .sky-date-range-picker{flex-direction:column}:host .sky-date-range-picker-form-group{flex-basis:100%}:host .sky-date-range-picker-form-group:not(:first-of-type){padding-left:initial}:host .sky-date-range-picker-form-group:not(:last-of-type){padding-right:initial}:host .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input){margin-bottom:var(--sky-override-date-range-picker-responsive-bottom-margin, var(--sky-space-gap-form-l));margin-right:0}:host-context(.sky-responsive-container-xs) .sky-date-range-picker,:host-context(.sky-responsive-container-sm) .sky-date-range-picker,:host-context(.sky-responsive-container-md) .sky-date-range-picker,:host-context(.sky-responsive-container-lg) .sky-date-range-picker{flex-direction:column}:host-context(.sky-responsive-container-xs) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group{flex-basis:100%}:host-context(.sky-responsive-container-xs) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(:first-of-type){padding-left:initial}:host-context(.sky-responsive-container-xs) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(:last-of-type){padding-right:initial}:host-context(.sky-responsive-container-xs) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input),:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input){margin-bottom:var(--sky-override-date-range-picker-responsive-bottom-margin, var(--sky-space-gap-form-l));margin-right:0}@media (min-width: 768px){:host .sky-date-range-picker{flex-direction:initial}:host .sky-date-range-picker-form-group{flex-basis:33.3333333333%;padding:0}:host .sky-date-range-picker-form-group:not(:first-of-type){padding-left:var(--sky-override-date-range-picker-padding-left, 0)}:host .sky-date-range-picker-form-group:not(:last-of-type){padding-right:var(--sky-override-date-range-picker-padding-right, 0)}:host .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input){margin-bottom:0;margin-right:var(--sky-override-date-range-picker-margin-right, var(--sky-space-gap-form-l))}}:host-context(.sky-responsive-container-sm) .sky-date-range-picker,:host-context(.sky-responsive-container-md) .sky-date-range-picker,:host-context(.sky-responsive-container-lg) .sky-date-range-picker{flex-direction:initial}:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group{flex-basis:33.3333333333%;padding:0}:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(:first-of-type){padding-left:var(--sky-override-date-range-picker-padding-left, 0)}:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(:last-of-type){padding-right:var(--sky-override-date-range-picker-padding-right, 0)}:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input){margin-bottom:0;margin-right:var(--sky-override-date-range-picker-margin-right, var(--sky-space-gap-form-l))}@media (min-width: 768px){:host-context(sky-filter-inline-item) .sky-date-range-picker-form-group{flex-basis:100%}}.sky-responsive-container-sm :host-context(sky-filter-inline-item) .sky-date-range-picker-form-group,.sky-responsive-container-md :host-context(sky-filter-inline-item) .sky-date-range-picker-form-group,.sky-responsive-container-lg :host-context(sky-filter-inline-item) .sky-date-range-picker-form-group{flex-basis:100%}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"pipe\", type: i1.AsyncPipe, name: \"async\" }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i2.NgSelectOption, selector: \"option\", inputs: [\"ngValue\", \"value\"] }, { kind: \"directive\", type: i2.ɵNgSelectMultipleOption, selector: \"option\", inputs: [\"ngValue\", \"value\"] }, { kind: \"directive\", type: i2.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { kind: \"directive\", type: i2.SelectControlValueAccessor, selector: \"select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]\", inputs: [\"compareWith\"] }, { kind: \"directive\", type: i2.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i2.NgControlStatusGroup, selector: \"[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]\" }, { kind: \"directive\", type: i2.RequiredValidator, selector: \":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]\", inputs: [\"required\"] }, { kind: \"ngmodule\", type: ReactiveFormsModule }, { kind: \"directive\", type: i2.FormGroupDirective, selector: \"[formGroup]\", inputs: [\"formGroup\"], outputs: [\"ngSubmit\"], exportAs: [\"ngForm\"] }, { kind: \"directive\", type: i2.FormControlName, selector: \"[formControlName]\", inputs: [\"formControlName\", \"disabled\", \"ngModel\"], outputs: [\"ngModelChange\"] }, { kind: \"ngmodule\", type: SkyDatepickerModule }, { kind: \"component\", type: i3.SkyDatepickerComponent, selector: \"sky-datepicker\", inputs: [\"pickerClass\"], outputs: [\"calendarDateRangeChange\", \"dateFormatChange\", \"openChange\", \"calendarDateChange\"] }, { kind: \"directive\", type: i4.SkyDatepickerInputDirective, selector: \"[skyDatepickerInput]\", inputs: [\"dateFormat\", \"disabled\", \"maxDate\", \"minDate\", \"startAtDate\", \"skyDatepickerInput\", \"skyDatepickerNoValidate\", \"startingDay\", \"strict\"] }, { kind: \"pipe\", type: SkyDateRangePickerEndDateResourceKeyPipe, name: \"skyDateRangePickerEndDateResourceKey\" }, { kind: \"pipe\", type: SkyDateRangePickerStartDateResourceKeyPipe, name: \"skyDateRangePickerStartDateResourceKey\" }, { kind: \"ngmodule\", type: SkyDatetimeResourcesModule }, { kind: \"pipe\", type: i5.SkyLibResourcesPipe, name: \"skyLibResources\" }, { kind: \"ngmodule\", type: SkyInputBoxModule }, { kind: \"component\", type: i6.λ10, selector: \"sky-input-box\", inputs: [\"hasErrors\", \"disabled\", \"labelText\", \"characterLimit\", \"stacked\", \"helpPopoverTitle\", \"helpPopoverContent\", \"helpKey\", \"hintText\"] }, { kind: \"directive\", type: i6.λ20, selector: \"input:not([skyId]):not(.sky-form-control),select:not([skyId]):not(.sky-form-control),textarea:not([skyId]):not(.sky-form-control)\", inputs: [\"autocomplete\"] }, { kind: \"component\", type: i6.λ22, selector: \"sky-form-error\", inputs: [\"errorName\", \"errorText\"] }, { kind: \"ngmodule\", type: SkyFormErrorsModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDateRangePickerComponent, decorators: [{\n type: Component,\n args: [{ changeDetection: ChangeDetectionStrategy.OnPush, host: {\n '(focusout)': 'onFocusout($event)',\n }, imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n SkyDatepickerModule,\n SkyDateRangePickerEndDateResourceKeyPipe,\n SkyDateRangePickerStartDateResourceKeyPipe,\n SkyDatetimeResourcesModule,\n SkyInputBoxModule,\n SkyFormErrorsModule,\n ], providers: [\n {\n provide: NG_VALIDATORS,\n useExisting: SkyDateRangePickerComponent,\n multi: true,\n },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: SkyDateRangePickerComponent,\n multi: true,\n },\n { provide: SKY_FORM_ERRORS_ENABLED, useValue: true },\n ], selector: 'sky-date-range-picker', template: \"<div class=\\\"sky-date-range-picker\\\" [formGroup]=\\\"formGroup\\\">\\n <div\\n class=\\\"sky-date-range-picker-form-group sky-date-range-picker-select-calculator\\\"\\n [ngClass]=\\\"{\\n 'sky-date-range-picker-last-input':\\n !showStartDatePicker() && !showEndDatePicker()\\n }\\\"\\n >\\n <sky-input-box\\n [hasErrors]=\\\"calculatorIdHasErrors()\\\"\\n [helpKey]=\\\"helpKey\\\"\\n [helpPopoverContent]=\\\"helpPopoverContent\\\"\\n [helpPopoverTitle]=\\\"helpPopoverTitle\\\"\\n [hintText]=\\\"hintText\\\"\\n [labelText]=\\\"\\n labelText ||\\n label ||\\n ('skyux_date_range_picker_default_label' | skyLibResources)\\n \\\"\\n >\\n <select formControlName=\\\"calculatorId\\\" (change)=\\\"onCalculatorIdChange()\\\">\\n @for (calculator of calculators; track calculator.calculatorId) {\\n <option [value]=\\\"calculator.calculatorId\\\">\\n {{ calculator.shortDescription$ | async }}\\n </option>\\n }\\n </select>\\n @if (\\n hostControl?.errors?.['skyDateRange']?.errors?.[\\n 'endDateBeforeStartDate'\\n ] && labelText\\n ) {\\n <sky-form-error\\n errorName=\\\"endDateBeforeStartDate\\\"\\n [errorText]=\\\"\\n 'skyux_date_range_picker_end_date_before_start_date_error_label_text'\\n | skyLibResources\\n \\\"\\n />\\n }\\n <span class=\\\"sky-input-box-descendent-form-error\\\">\\n <ng-content select=\\\"sky-form-error\\\" />\\n </span>\\n </sky-input-box>\\n </div>\\n <div\\n class=\\\"sky-date-range-picker-form-group sky-date-range-datepicker-wrapper sky-date-range-picker-start-date\\\"\\n [hidden]=\\\"!showStartDatePicker()\\\"\\n [ngClass]=\\\"{\\n 'sky-date-range-picker-last-input':\\n showStartDatePicker() && !showEndDatePicker()\\n }\\\"\\n >\\n <sky-input-box\\n [hasErrors]=\\\"startDateHasErrors()\\\"\\n [labelText]=\\\"\\n selectedCalculator.type\\n | skyDateRangePickerStartDateResourceKey\\n | skyLibResources\\n \\\"\\n >\\n <sky-datepicker (calendarDateChange)=\\\"onDateChange()\\\">\\n <input\\n formControlName=\\\"startDate\\\"\\n name=\\\"startDate\\\"\\n skyDatepickerInput\\n type=\\\"text\\\"\\n [attr.aria-label]=\\\"\\n labelText || label\\n ? ('skyux_date_range_picker_default_aria_label'\\n | skyLibResources\\n : (selectedCalculator.type\\n | skyDateRangePickerStartDateResourceKey\\n | skyLibResources)\\n : (labelText ? labelText : label))\\n : (selectedCalculator.type\\n | skyDateRangePickerStartDateResourceKey\\n | skyLibResources)\\n \\\"\\n [dateFormat]=\\\"dateFormat\\\"\\n [required]=\\\"showStartDatePicker()\\\"\\n (change)=\\\"onDateChange()\\\"\\n />\\n </sky-datepicker>\\n </sky-input-box>\\n </div>\\n <div\\n class=\\\"sky-date-range-picker-form-group sky-date-range-datepicker-wrapper sky-date-range-picker-end-date\\\"\\n [hidden]=\\\"!showEndDatePicker()\\\"\\n [ngClass]=\\\"{ 'sky-date-range-picker-last-input': showEndDatePicker() }\\\"\\n >\\n <sky-input-box\\n [hasErrors]=\\\"endDateHasErrors()\\\"\\n [labelText]=\\\"\\n selectedCalculator.type\\n | skyDateRangePickerEndDateResourceKey\\n | skyLibResources\\n \\\"\\n >\\n <sky-datepicker (calendarDateChange)=\\\"onDateChange()\\\">\\n <input\\n formControlName=\\\"endDate\\\"\\n name=\\\"endDate\\\"\\n skyDatepickerInput\\n type=\\\"text\\\"\\n [attr.aria-label]=\\\"\\n labelText || label\\n ? ('skyux_date_range_picker_default_aria_label'\\n | skyLibResources\\n : (selectedCalculator.type\\n | skyDateRangePickerEndDateResourceKey\\n | skyLibResources)\\n : (labelText ? labelText : label))\\n : (selectedCalculator.type\\n | skyDateRangePickerEndDateResourceKey\\n | skyLibResources)\\n \\\"\\n [dateFormat]=\\\"dateFormat\\\"\\n [required]=\\\"showEndDatePicker()\\\"\\n (change)=\\\"onDateChange()\\\"\\n />\\n </sky-datepicker>\\n </sky-input-box>\\n </div>\\n</div>\\n\", styles: [\".sky-date-range-picker:not(.sky-theme-modern *){--sky-override-date-range-picker-margin-right: 0;--sky-override-date-range-picker-padding-left: 5px;--sky-override-date-range-picker-padding-right: 5px;--sky-override-date-range-picker-responsive-bottom-margin: var( --sky-margin-stacked-lg )}:host{display:block}.sky-date-range-picker{display:flex}:host .sky-date-range-picker{flex-direction:column}:host .sky-date-range-picker-form-group{flex-basis:100%}:host .sky-date-range-picker-form-group:not(:first-of-type){padding-left:initial}:host .sky-date-range-picker-form-group:not(:last-of-type){padding-right:initial}:host .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input){margin-bottom:var(--sky-override-date-range-picker-responsive-bottom-margin, var(--sky-space-gap-form-l));margin-right:0}:host-context(.sky-responsive-container-xs) .sky-date-range-picker,:host-context(.sky-responsive-container-sm) .sky-date-range-picker,:host-context(.sky-responsive-container-md) .sky-date-range-picker,:host-context(.sky-responsive-container-lg) .sky-date-range-picker{flex-direction:column}:host-context(.sky-responsive-container-xs) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group{flex-basis:100%}:host-context(.sky-responsive-container-xs) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(:first-of-type){padding-left:initial}:host-context(.sky-responsive-container-xs) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(:last-of-type){padding-right:initial}:host-context(.sky-responsive-container-xs) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input),:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input){margin-bottom:var(--sky-override-date-range-picker-responsive-bottom-margin, var(--sky-space-gap-form-l));margin-right:0}@media (min-width: 768px){:host .sky-date-range-picker{flex-direction:initial}:host .sky-date-range-picker-form-group{flex-basis:33.3333333333%;padding:0}:host .sky-date-range-picker-form-group:not(:first-of-type){padding-left:var(--sky-override-date-range-picker-padding-left, 0)}:host .sky-date-range-picker-form-group:not(:last-of-type){padding-right:var(--sky-override-date-range-picker-padding-right, 0)}:host .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input){margin-bottom:0;margin-right:var(--sky-override-date-range-picker-margin-right, var(--sky-space-gap-form-l))}}:host-context(.sky-responsive-container-sm) .sky-date-range-picker,:host-context(.sky-responsive-container-md) .sky-date-range-picker,:host-context(.sky-responsive-container-lg) .sky-date-range-picker{flex-direction:initial}:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group{flex-basis:33.3333333333%;padding:0}:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(:first-of-type){padding-left:var(--sky-override-date-range-picker-padding-left, 0)}:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(:last-of-type){padding-right:var(--sky-override-date-range-picker-padding-right, 0)}:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input){margin-bottom:0;margin-right:var(--sky-override-date-range-picker-margin-right, var(--sky-space-gap-form-l))}@media (min-width: 768px){:host-context(sky-filter-inline-item) .sky-date-range-picker-form-group{flex-basis:100%}}.sky-responsive-container-sm :host-context(sky-filter-inline-item) .sky-date-range-picker-form-group,.sky-responsive-container-md :host-context(sky-filter-inline-item) .sky-date-range-picker-form-group,.sky-responsive-container-lg :host-context(sky-filter-inline-item) .sky-date-range-picker-form-group{flex-basis:100%}\\n\"] }]\n }], propDecorators: { calculatorIds: [{\n type: Input\n }], dateFormat: [{\n type: Input\n }], disabled: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], helpPopoverContent: [{\n type: Input\n }], helpPopoverTitle: [{\n type: Input\n }], hintText: [{\n type: Input\n }], label: [{\n type: Input\n }], labelText: [{\n type: Input\n }], stacked: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }, {\n type: HostBinding,\n args: ['class.sky-form-field-stacked']\n }], helpKey: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2RhdGV0aW1lL3NyYy9saWIvbW9kdWxlcy9kYXRlLXJhbmdlLXBpY2tlci9kYXRlLXJhbmdlLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL2RhdGUtcmFuZ2UtcGlja2VyL2RhdGUtcmFuZ2UtcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsVUFBVSxFQUNWLFdBQVcsRUFDWCxRQUFRLEVBQ1IsS0FBSyxFQUdMLGdCQUFnQixFQUNoQixRQUFRLEVBQ1IsTUFBTSxFQUNOLHFCQUFxQixFQUNyQixNQUFNLEVBQ04sWUFBWSxHQUNiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRSxPQUFPLEVBR0wsV0FBVyxFQUNYLFdBQVcsRUFDWCxXQUFXLEVBQ1gsYUFBYSxFQUNiLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsbUJBQW1CLEVBQ25CLGlCQUFpQixFQUNqQixrQkFBa0IsR0FHbkIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsbUJBQW1CLEVBQ25CLGlCQUFpQixHQUNsQixNQUFNLGNBQWMsQ0FBQztBQUV0QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV6RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUVyRixPQUFPLEVBQUUsd0NBQXdDLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUMxRyxPQUFPLEVBQUUsMENBQTBDLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUM5RyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUkzRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNoRixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQzs7Ozs7Ozs7QUFJM0YsU0FBUyxrQkFBa0IsQ0FDekIsTUFBMkMsRUFDM0MsTUFBMkM7SUFFM0MsT0FBTyxDQUNMLENBQUMsQ0FBQyxNQUFNO1FBQ1IsQ0FBQyxDQUFDLE1BQU07UUFDUixNQUFNLENBQUMsWUFBWSxLQUFLLE1BQU0sQ0FBQyxZQUFZO1FBQzNDLGFBQWEsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxTQUFTLENBQUM7UUFDakQsYUFBYSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUM5QyxDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsYUFBYSxDQUFDLENBQVksRUFBRSxDQUFZO0lBQy9DLElBQUksT0FBTyxDQUFDLEtBQUssT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUMxQixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDYixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDckMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsT0FBTyxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQUMvRSxDQUFDO0FBRUQsU0FBUyxpQkFBaUIsQ0FBQyxLQUFjO0lBQ3ZDLE9BQU8sS0FBSyxLQUFLLFNBQVMsSUFBSSxLQUFLLEtBQUssSUFBSSxDQUFDO0FBQy9DLENBQUM7QUFFRCxTQUFTLGNBQWMsQ0FDckIsS0FBMEQ7SUFFMUQsT0FBTyxDQUNMLGlCQUFpQixDQUFDLEtBQUssQ0FBQztRQUN4QixpQkFBaUIsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDO1FBQ3JDLENBQUMsQ0FBQyxTQUFTLElBQUksS0FBSyxDQUFDO1FBQ3JCLENBQUMsQ0FBQyxXQUFXLElBQUksS0FBSyxDQUFDLENBQ3hCLENBQUM7QUFDSixDQUFDO0FBbUNELE1BQU0sT0FBTywyQkFBMkI7SUFqQ3hDO1FBb0NXLGtCQUFhLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDNUMsZ0JBQVcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDakMsZ0JBQVcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDakMsY0FBUyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM3QixZQUFPLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBdUd6Qzs7O1dBR0c7UUFHSSxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBVWIsZ0JBQVcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQztRQUM3QyxnQkFBVyxHQUFHLFlBQVksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBRW5ELHVCQUFrQixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekMsc0JBQWlCLEdBQUcsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQzNDLHdCQUFtQixHQUFHLE1BQU0sQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUV2RCxvQkFBZSxHQUFHLDBCQUEwQixDQUFDO1FBRTdDLFlBQU8sR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxFQUFFLENBQUM7UUFNN0MseUJBQW9CLEdBQUcsSUFBSSxXQUFXLENBQ3BDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxZQUFZLEVBQzdCLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxDQUN0QixDQUFDO1FBQ0YseUJBQW9CLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixDQUNuRCxJQUFJLENBQUMsb0JBQW9CLENBQzFCLENBQUM7UUFDRix5QkFBb0IsR0FBRyxJQUFJLENBQUMsMEJBQTBCLENBQ3BELElBQUksQ0FBQyxvQkFBb0IsQ0FDMUIsQ0FBQztRQUVGLG9CQUFlLEdBQUcsSUFBSSxXQUFXLENBQVksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZFLG9CQUFlLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUN2RSxvQkFBZSxHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFFeEUsc0JBQWlCLEdBQUcsSUFBSSxXQUFXLENBQVksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzNFLHNCQUFpQixHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUMzRSxzQkFBaUIsR0FBRyxJQUFJLENBQUMsMEJBQTBCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFFbEUsY0FBUyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxLQUFLLENBQUM7WUFDOUMsWUFBWSxFQUFFLElBQUksQ0FBQyxvQkFBb0I7WUFDdkMsU0FBUyxFQUFFLElBQUksQ0FBQyxpQkFBaUI7WUFDakMsT0FBTyxFQUFFLElBQUksQ0FBQyxlQUFlO1NBQzlCLENBQUMsQ0FBQztRQUVnQiwwQkFBcUIsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ3ZELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQzVDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxJQUFJLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLENBQUM7WUFDNUUsT0FBTyxPQUFPLElBQUksT0FBTyxDQUFDO1FBQzVCLENBQUMsQ0FBQyxDQUFDO1FBRWdCLHFCQUFnQixHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDbEQsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztZQUMzRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDdkMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBRXZDLE9BQU8scUJBQXFCLElBQUksQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLENBQUM7UUFDdkQsQ0FBQyxDQUFDLENBQUM7UUFFZ0IsdUJBQWtCLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNwRCxNQUFNLHFCQUFxQixHQUFHLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1lBQzNELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ3pDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBRXpDLE9BQU8scUJBQXFCLElBQUksQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLENBQUM7UUFDdkQsQ0FBQyxDQUFDLENBQUM7S0EwU0o7SUFqZVUsYUFBYSxDQUErQjtJQUM1QyxXQUFXLENBQXNCO0lBQ2pDLFdBQVcsQ0FBc0I7SUFDakMsU0FBUyxDQUFvQjtJQUM3QixPQUFPLENBQXlCO0lBRXpDOzs7O09BSUc7SUFDSCxJQUNXLGFBQWEsQ0FDdEIsYUFBcUQ7UUFFckQsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsWUFBWSxDQUFDO1FBRTFELElBQUksQ0FBQyxlQUFlLEdBQUcsYUFBYSxJQUFJLDBCQUEwQixDQUFDO1FBQ25FLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FDckQsSUFBSSxDQUFDLGVBQWUsQ0FDckIsQ0FBQztRQUVGLGdFQUFnRTtRQUNoRSxnREFBZ0Q7UUFDaEQsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQztZQUN4RCxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsWUFBWSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzFELENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBVyxhQUFhO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUM5QixDQUFDO0lBWUQ7Ozs7OztPQU1HO0lBQ0gsSUFDVyxRQUFRLENBQUMsS0FBYztRQUNoQyxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUMzQixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDMUIsQ0FBQztJQUNILENBQUM7SUF3QkQ7OztPQUdHO0lBQ0gsSUFDVyxLQUFLLENBQUMsS0FBeUI7UUFDeEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFFckIsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLG1DQUFtQyxFQUFFO2dCQUMzRCx1QkFBdUIsRUFBRSxFQUFFO2dCQUMzQix5QkFBeUIsRUFBRSxvQ0FBb0M7YUFDaEUsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFXLEtBQUs7UUFDZCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQStCRCxlQUFlLENBQThCO0lBQzdDLE9BQU8sQ0FBcUI7SUFDNUIsT0FBTyxDQUFzQztJQUU3QyxtQkFBbUIsQ0FBMEM7SUFDN0QsYUFBYSxDQUFxRDtJQUNsRSxjQUFjLENBQTJCO0lBRXpDLG9CQUFvQixDQUdsQjtJQUNGLG9CQUFvQixDQUVsQjtJQUNGLG9CQUFvQixDQUVsQjtJQUVGLGVBQWUsQ0FBd0Q7SUFDdkUsZUFBZSxDQUF3RDtJQUN2RSxlQUFlLENBQXlEO0lBRXhFLGlCQUFpQixDQUEwRDtJQUMzRSxpQkFBaUIsQ0FBMEQ7SUFDM0UsaUJBQWlCLENBQTJEO0lBOEJyRSxlQUFlO1FBQ3BCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRTtZQUNyRCxRQUFRLEVBQUUsSUFBSTtZQUNkLElBQUksRUFBRSxJQUFJO1NBQ1gsQ0FBQyxFQUFFLE9BQU8sQ0FBQztRQUVaLHFCQUFxQixDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsR0FBRyxFQUFFO1lBQ3pDLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNyQixJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLGtDQUFrQyxDQUNoRSxJQUFJLENBQUMsV0FBVyxDQUNqQixDQUFDO1lBQ0osQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsZ0VBQWdFO1FBQ2hFLGdFQUFnRTtRQUNoRSxvQkFBb0I7UUFDcEIsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzVDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFO29CQUMzQyxTQUFTLEVBQUUsS0FBSztpQkFDakIsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQscUVBQXFFO1FBQ3JFLDRFQUE0RTtRQUM1RSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU07YUFDbEIsSUFBSSxDQUNILE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxZQUFZLGlCQUFpQixDQUFDLEVBQ2pELEdBQUcsQ0FBQyxDQUFDLEdBQXNCLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFDM0Msb0JBQW9CLEVBQUUsRUFDdEIsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUNyQzthQUNBLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsV0FBVyxFQUFFLHNCQUFzQixDQUFDO2dCQUN2QyxTQUFTLEVBQUUsS0FBSztnQkFDaEIsUUFBUSxFQUFFLElBQUk7YUFDZixDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVMLDZEQUE2RDtRQUM3RCxJQUFJLENBQUMsV0FBVyxFQUFFLE1BQU07YUFDckIsSUFBSSxDQUNILE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxZQUFZLGtCQUFrQixDQUFDLEVBQ2xELEdBQUcsQ0FBQyxDQUFDLEdBQXVCLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFDN0Msb0JBQW9CLEVBQUUsRUFDdEIsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUNyQzthQUNBLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsU0FBUyxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDcEMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsK0NBQStDO0lBQ3hDLGdCQUFnQixDQUFDLEVBQXdCO1FBQzlDLElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCwrQ0FBK0M7SUFDeEMsaUJBQWlCLENBQUMsRUFBYztRQUNyQyxJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsK0NBQStDO0lBQ3hDLGdCQUFnQixDQUFDLFVBQW1CO1FBQ3pDLElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO0lBQzdCLENBQUM7SUFFRCxvQ0FBb0M7SUFDN0IsUUFBUSxDQUFDLE9BQXdCO1FBQ3RDLElBQUksTUFBTSxHQUE0QixJQUFJLENBQUM7UUFFM0MsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6RSxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDO1FBQ3RELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDO1FBRWxELElBQUksZ0JBQWdCLEVBQUUsQ0FBQztZQUNyQixNQUFNLEdBQUc7Z0JBQ1AsWUFBWSxFQUFFO29CQUNaLFlBQVksRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsWUFBWTtvQkFDM0MsTUFBTSxFQUFFLGdCQUFnQjtpQkFDekI7YUFDRixDQUFDO1FBQ0osQ0FBQztRQUVELHNFQUFzRTtRQUN0RSxJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTVDLElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFLElBQUksZUFBZSxFQUFFLENBQUM7WUFDbEQsTUFBTSxLQUFLLEVBQUUsQ0FBQztZQUNkLE1BQU0sR0FBRyxFQUFFLEdBQUcsTUFBTSxFQUFFLEdBQUcsZUFBZSxFQUFFLENBQUM7UUFDN0MsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFLElBQUksYUFBYSxFQUFFLENBQUM7WUFDOUMsTUFBTSxLQUFLLEVBQUUsQ0FBQztZQUNkLE1BQU0sR0FBRyxFQUFFLEdBQUcsTUFBTSxFQUFFLEdBQUcsYUFBYSxFQUFFLENBQUM7UUFDM0MsQ0FBQztRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCwrQ0FBK0M7SUFDL0MsMkVBQTJFO0lBQzNFLGlGQUFpRjtJQUNqRiwwREFBMEQ7SUFDbkQsVUFBVSxDQUFDLEtBQW1EO1FBQ25FLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFeEIsbUVBQW1FO1FBQ25FLElBQUksY0FBYyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFO2dCQUMzQyxTQUFTLEVBQUUsS0FBSztnQkFDaEIsUUFBUSxFQUFFLElBQUk7YUFDZixDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ08sb0JBQW9CO1FBQzVCLGtEQUFrRDtRQUNsRCxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDbkUsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRDs7T0FFRztJQUNPLFlBQVk7UUFDcEIsc0VBQXNFO1FBQ3RFLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQ2xCLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUE2QixDQUN4RCxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDTyxVQUFVLENBQUMsRUFBRSxhQUFhLEVBQWM7UUFDaEQsSUFDRSxhQUFhO1lBQ2IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDO1lBQ3ZELENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxFQUMxRSxDQUFDO1lBQ0QsSUFBSSxDQUFDLGNBQWMsRUFBRSxFQUFFLENBQUM7UUFDMUIsQ0FBQztJQUNILENBQUM7SUFFRCxjQUFjLENBQUMsWUFBb0I7UUFDakMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxZQUFZLEtBQUssWUFBWSxDQUFDLENBQUM7UUFFNUUsb0NBQW9DO1FBQ3BDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNYLE1BQU0sSUFBSSxLQUFLLENBQ2Isb0NBQW9DLFlBQVksdUJBQXVCLENBQ3hFLENBQUM7UUFDSixDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsU0FBUztRQUNQLDJFQUEyRTtRQUMzRSxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELFdBQVcsQ0FDVCxZQUFpRTtRQUVqRSxJQUFJLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNyQixPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUVsQyx1RUFBdUU7UUFDdkUsZ0NBQWdDO1FBQ2hDLElBQ0UsQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDO1lBQzdDLFFBQVEsQ0FBQyxZQUFZLEtBQUssWUFBWSxDQUFDLFlBQVksRUFDbkQsQ0FBQztZQUNELE9BQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQztZQUN4QixPQUFPLFFBQVEsQ0FBQyxTQUFTLENBQUM7UUFDNUIsQ0FBQztRQUVELE1BQU0sS0FBSyxHQUFHO1lBQ1osR0FBRyxRQUFRO1lBQ1gsR0FBRyxZQUFZO1NBQ2hCLENBQUM7UUFFRixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFFRDs7T0FFRztJQUNILFNBQVMsQ0FBQyxLQUFpRDtRQUN6RCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFFbEMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxLQUFLLElBQUksaUJBQWlCLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3JFLE1BQU0sY0FBYyxHQUFHLFlBQVk7WUFDakMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFO1lBQ2hDLENBQUMsQ0FBQztnQkFDRSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLFFBQVEsRUFBRTtnQkFDckQsR0FBRyxLQUFLO2FBQ1QsQ0FBQztRQUVOLHVDQUF1QztRQUN2QyxjQUFjLENBQUMsT0FBTyxHQUFHLGNBQWMsQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDO1FBQ3hELGNBQWMsQ0FBQyxTQUFTLEdBQUcsY0FBYyxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUM7UUFFNUQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsRUFBRSxjQUFjLENBQUMsRUFBRSxDQUFDO1lBQ2xELElBQUksQ0FBQyxPQUFPLEdBQUcsY0FBYyxDQUFDO1lBRTlCLElBQUksUUFBUSxDQUFDLFlBQVksS0FBSyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQzFELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUMzQyxjQUFjLENBQUMsWUFBWSxDQUM1QixDQUFDO2dCQUVGLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztZQUN4RCxDQUFDO1lBRUQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDNUMsQ0FBQztJQUNILENBQUM7SUFFRCx1QkFBdUIsQ0FBQyxVQUFrQztRQUN4RCxJQUFJLGlCQUFpQixHQUFHLEtBQUssQ0FBQztRQUM5QixJQUFJLG1CQUFtQixHQUFHLEtBQUssQ0FBQztRQUVoQyxRQUFRLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN4QixLQUFLLDBCQUEwQixDQUFDLE1BQU07Z0JBQ3BDLGlCQUFpQixHQUFHLElBQUksQ0FBQztnQkFDekIsTUFBTTtZQUVSLEtBQUssMEJBQTBCLENBQUMsS0FBSztnQkFDbkMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO2dCQUMzQixNQUFNO1lBRVIsS0FBSywwQkFBMEIsQ0FBQyxLQUFLO2dCQUNuQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7Z0JBQ3pCLG1CQUFtQixHQUFHLElBQUksQ0FBQztnQkFDM0IsTUFBTTtZQUVSO2dCQUNFLE1BQU07UUFDVixDQUFDO1FBRUQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQsa0NBQWtDLENBQ2hDLE9BQXdCO1FBRXhCLE9BQU8sUUFBUSxDQUNiLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUNqQixNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsWUFBWSxpQkFBaUIsQ0FBQyxFQUNqRCxHQUFHLENBQUMsQ0FBQyxHQUFzQixFQUFFLEVBQUU7WUFDN0IsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDO1lBQ3ZDLE1BQU0sV0FBVyxHQUFHLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBRTVDLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDeEMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdEMsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FDSCxDQUNGLENBQUM7SUFDSixDQUFDO0lBRUQseUJBQXlCLENBQUMsT0FBb0I7UUFDNUMsT0FBTyxRQUFRLENBQ2IsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ2pCLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxZQUFZLGlCQUFpQixDQUFDLEVBQ2pELEdBQUcsQ0FBQyxDQUFDLEdBQXNCLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEtBQUssU0FBUyxDQUFDLEVBQ3pELGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FDckMsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELDBCQUEwQixDQUN4QixPQUFvQjtRQUVwQixPQUFPLFFBQVEsQ0FDYixPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDakIsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLFlBQVksa0JBQWtCLENBQUMsRUFDbEQsR0FBRyxDQUFDLENBQUMsR0FBdUIsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUM3QyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQ3JDLENBQ0YsQ0FBQztJQUNKLENBQUM7OEdBbmVVLDJCQUEyQjtrR0FBM0IsMkJBQTJCLGdLQXFEbEIsZ0JBQWdCLGlMQTZEaEIsZ0JBQWdCLCtKQW5JekI7WUFDVDtnQkFDRSxPQUFPLEVBQUUsYUFBYTtnQkFDdEIsV0FBVyxFQUFFLDJCQUEyQjtnQkFDeEMsS0FBSyxFQUFFLElBQUk7YUFDWjtZQUNEO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSwyQkFBMkI7Z0JBQ3hDLEtBQUssRUFBRSxJQUFJO2FBQ1o7WUFDRCxFQUFFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO1NBQ3JELDBEQW9Jb0Msc0JBQXNCLGdFQ3ZRN0QsdXZJQTZIQSwyK0tEaEJJLFlBQVksaUxBQ1osV0FBVywwcUNBQ1gsbUJBQW1CLCtVQUNuQixtQkFBbUIsdWRBQ25CLHdDQUF3Qyx3RUFDeEMsMENBQTBDLDhFQUMxQywwQkFBMEIsdUdBQzFCLGlCQUFpQiwraEJBQ2pCLG1CQUFtQjs7MkZBbUJWLDJCQUEyQjtrQkFqQ3ZDLFNBQVM7c0NBQ1MsdUJBQXVCLENBQUMsTUFBTSxRQUN6Qzt3QkFDSixZQUFZLEVBQUUsb0JBQW9CO3FCQUNuQyxXQUNRO3dCQUNQLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxtQkFBbUI7d0JBQ25CLG1CQUFtQjt3QkFDbkIsd0NBQXdDO3dCQUN4QywwQ0FBMEM7d0JBQzFDLDBCQUEwQjt3QkFDMUIsaUJBQWlCO3dCQUNqQixtQkFBbUI7cUJBQ3BCLGFBQ1U7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGFBQWE7NEJBQ3RCLFdBQVcsNkJBQTZCOzRCQUN4QyxLQUFLLEVBQUUsSUFBSTt5QkFDWjt3QkFDRDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLDZCQUE2Qjs0QkFDeEMsS0FBSyxFQUFFLElBQUk7eUJBQ1o7d0JBQ0QsRUFBRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtxQkFDckQsWUFDUyx1QkFBdUI7OEJBbUJ0QixhQUFhO3NCQUR2QixLQUFLO2dCQThCQyxVQUFVO3NCQURoQixLQUFLO2dCQVdLLFFBQVE7c0JBRGxCLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBZS9CLGtCQUFrQjtzQkFEeEIsS0FBSztnQkFRQyxnQkFBZ0I7c0JBRHRCLEtBQUs7Z0JBUUMsUUFBUTtzQkFEZCxLQUFLO2dCQVFLLEtBQUs7c0JBRGYsS0FBSztnQkFvQkMsU0FBUztzQkFEZixLQUFLO2dCQVNDLE9BQU87c0JBRmIsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTs7c0JBQ3JDLFdBQVc7dUJBQUMsOEJBQThCO2dCQVNwQyxPQUFPO3NCQURiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRGVzdHJveVJlZixcbiAgRWxlbWVudFJlZixcbiAgSG9zdEJpbmRpbmcsXG4gIEluamVjdG9yLFxuICBJbnB1dCxcbiAgU2lnbmFsLFxuICBUZW1wbGF0ZVJlZixcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgY29tcHV0ZWQsXG4gIGluamVjdCxcbiAgcnVuSW5JbmplY3Rpb25Db250ZXh0LFxuICBzaWduYWwsXG4gIHZpZXdDaGlsZHJlbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQsIHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHtcbiAgQWJzdHJhY3RDb250cm9sLFxuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgRm9ybUJ1aWxkZXIsXG4gIEZvcm1Db250cm9sLFxuICBGb3Jtc01vZHVsZSxcbiAgTkdfVkFMSURBVE9SUyxcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gIE5nQ29udHJvbCxcbiAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgU3RhdHVzQ2hhbmdlRXZlbnQsXG4gIFRvdWNoZWRDaGFuZ2VFdmVudCxcbiAgVmFsaWRhdGlvbkVycm9ycyxcbiAgVmFsaWRhdG9yLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTa3lMb2dTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L2NvcmUnO1xuaW1wb3J0IHtcbiAgU0tZX0ZPUk1fRVJST1JTX0VOQUJMRUQsXG4gIFNreUZvcm1FcnJvcnNNb2R1bGUsXG4gIFNreUlucHV0Qm94TW9kdWxlLFxufSBmcm9tICdAc2t5dXgvZm9ybXMnO1xuXG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBtYXAgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU2t5RGF0ZXBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4uL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5RGF0ZXBpY2tlck1vZHVsZSB9IGZyb20gJy4uL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci5tb2R1bGUnO1xuaW1wb3J0IHsgU2t5RGF0ZXRpbWVSZXNvdXJjZXNNb2R1bGUgfSBmcm9tICcuLi9zaGFyZWQvc2t5LWRhdGV0aW1lLXJlc291cmNlcy5tb2R1bGUnO1xuXG5pbXBvcnQgeyBTa3lEYXRlUmFuZ2VQaWNrZXJFbmREYXRlUmVzb3VyY2VLZXlQaXBlIH0gZnJvbSAnLi9kYXRlLXJhbmdlLXBpY2tlci1lbmQtZGF0ZS1yZXNvdXJjZS1rZXkucGlwZSc7XG5pbXBvcnQgeyBTa3lEYXRlUmFuZ2VQaWNrZXJTdGFydERhdGVSZXNvdXJjZUtleVBpcGUgfSBmcm9tICcuL2RhdGUtcmFuZ2UtcGlja2VyLXN0YXJ0LWRhdGUtcmVzb3VyY2Uta2V5LnBpcGUnO1xuaW1wb3J0IHsgU2t5RGF0ZVJhbmdlU2VydmljZSB9IGZyb20gJy4vZGF0ZS1yYW5nZS5zZXJ2aWNlJztcbmltcG9ydCB7IFNreURhdGVSYW5nZUNhbGN1bGF0aW9uIH0gZnJvbSAnLi90eXBlcy9kYXRlLXJhbmdlLWNhbGN1bGF0aW9uJztcbmltcG9ydCB7IFNreURhdGVSYW5nZUNhbGN1bGF0b3IgfSBmcm9tICcuL3R5cGVzL2RhdGUtcmFuZ2UtY2FsY3VsYXRvcic7XG5pbXBvcnQgeyBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9ySWQgfSBmcm9tICcuL3R5cGVzL2RhdGUtcmFuZ2UtY2FsY3VsYXRvci1pZCc7XG5pbXBvcnQgeyBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9yVHlwZSB9IGZyb20gJy4vdHlwZXMvZGF0ZS1yYW5nZS1jYWxjdWxhdG9yLXR5cGUnO1xuaW1wb3J0IHsgU0tZX0RFRkFVTFRfQ0FMQ1VMQVRPUl9JRFMgfSBmcm9tICcuL3R5cGVzL2RhdGUtcmFuZ2UtZGVmYXVsdC1jYWxjdWxhdG9yLWNvbmZpZ3MnO1xuXG50eXBlIERhdGVWYWx1ZSA9IERhdGUgfCBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuXG5mdW5jdGlvbiBhcmVEYXRlUmFuZ2VzRXF1YWwoXG4gIHJhbmdlQTogU2t5RGF0ZVJhbmdlQ2FsY3VsYXRpb24gfCB1bmRlZmluZWQsXG4gIHJhbmdlQjogU2t5RGF0ZVJhbmdlQ2FsY3VsYXRpb24gfCB1bmRlZmluZWQsXG4pOiBib29sZWFuIHtcbiAgcmV0dXJuIChcbiAgICAhIXJhbmdlQSAmJlxuICAgICEhcmFuZ2VCICYmXG4gICAgcmFuZ2VBLmNhbGN1bGF0b3JJZCA9PT0gcmFuZ2VCLmNhbGN1bGF0b3JJZCAmJlxuICAgIGFyZURhdGVzRXF1YWwocmFuZ2VBLnN0YXJ0RGF0ZSwgcmFuZ2VCLnN0YXJ0RGF0ZSkgJiZcbiAgICBhcmVEYXRlc0VxdWFsKHJhbmdlQS5lbmREYXRlLCByYW5nZUIuZW5kRGF0ZSlcbiAgKTtcbn1cblxuZnVuY3Rpb24gYXJlRGF0ZXNFcXVhbChhOiBEYXRlVmFsdWUsIGI6IERhdGVWYWx1ZSk6IGJvb2xlYW4ge1xuICBpZiAodHlwZW9mIGEgIT09IHR5cGVvZiBiKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKCFhICYmICFiKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpZiAodHlwZW9mIGEgPT09ICdzdHJpbmcnICYmIGEgPT09IGIpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBhIGluc3RhbmNlb2YgRGF0ZSAmJiBiIGluc3RhbmNlb2YgRGF0ZSAmJiBhLmdldFRpbWUoKSA9PT0gYi5nZXRUaW1lKCk7XG59XG5cbmZ1bmN0aW9uIGlzTnVsbE9yVW5kZWZpbmVkKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgdW5kZWZpbmVkIHwgbnVsbCB7XG4gIHJldHVybiB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsO1xufVxuXG5mdW5jdGlvbiBpc1BhcnRpYWxWYWx1ZShcbiAgdmFsdWU6IFBhcnRpYWw8U2t5RGF0ZVJhbmdlQ2FsY3VsYXRpb24+IHwgbnVsbCB8IHVuZGVmaW5lZCxcbik6IHZhbHVlIGlzIFBhcnRpYWw8U2t5RGF0ZVJhbmdlQ2FsY3VsYXRpb24+IHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiAoXG4gICAgaXNOdWxsT3JVbmRlZmluZWQodmFsdWUpIHx8XG4gICAgaXNOdWxsT3JVbmRlZmluZWQodmFsdWUuY2FsY3VsYXRvcklkKSB8fFxuICAgICEoJ2VuZERhdGUnIGluIHZhbHVlKSB8fFxuICAgICEoJ3N0YXJ0RGF0ZScgaW4gdmFsdWUpXG4gICk7XG59XG5cbkBDb21wb25lbnQoe1xuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaG9zdDoge1xuICAgICcoZm9jdXNvdXQpJzogJ29uRm9jdXNvdXQoJGV2ZW50KScsXG4gIH0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBTa3lEYXRlcGlja2VyTW9kdWxlLFxuICAgIFNreURhdGVSYW5nZVBpY2tlckVuZERhdGVSZXNvdXJjZUtleVBpcGUsXG4gICAgU2t5RGF0ZVJhbmdlUGlja2VyU3RhcnREYXRlUmVzb3VyY2VLZXlQaXBlLFxuICAgIFNreURhdGV0aW1lUmVzb3VyY2VzTW9kdWxlLFxuICAgIFNreUlucHV0Qm94TW9kdWxlLFxuICAgIFNreUZvcm1FcnJvcnNNb2R1bGUsXG4gIF0sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gICAgICB1c2VFeGlzdGluZzogU2t5RGF0ZVJhbmdlUGlja2VyQ29tcG9uZW50LFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBTa3lEYXRlUmFuZ2VQaWNrZXJDb21wb25lbnQsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICAgIHsgcHJvdmlkZTogU0tZX0ZPUk1fRVJST1JTX0VOQUJMRUQsIHVzZVZhbHVlOiB0cnVlIH0sXG4gIF0sXG4gIHNlbGVjdG9yOiAnc2t5LWRhdGUtcmFuZ2UtcGlja2VyJyxcbiAgc3R5bGVVcmw6ICcuL2RhdGUtcmFuZ2UtcGlja2VyLmNvbXBvbmVudC5zY3NzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGUtcmFuZ2UtcGlja2VyLmNvbXBvbmVudC5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgU2t5RGF0ZVJhbmdlUGlja2VyQ29tcG9uZW50XG4gIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFZhbGlkYXRvclxue1xuICByZWFkb25seSAjZGF0ZVJhbmdlU3ZjID0gaW5qZWN0KFNreURhdGVSYW5nZVNlcnZpY2UpO1xuICByZWFkb25seSAjZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcbiAgcmVhZG9ubHkgI2VsZW1lbnRSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XG4gIHJlYWRvbmx5ICNpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG4gIHJlYWRvbmx5ICNsb2dnZXIgPSBpbmplY3QoU2t5TG9nU2VydmljZSk7XG5cbiAgLyoqXG4gICAqIElEcyBmb3IgdGhlIGRhdGUgcmFuZ2Ugb3B0aW9ucyB0byBpbmNsdWRlIGluIHRoZSBwaWNrZXIncyBkcm9wZG93bi5cbiAgICogVGhlIG9wdGlvbnMgc3BlY2lmeSBjYWxjdWxhdG9yIG9iamVjdHMgdGhhdCByZXR1cm4gdHdvIGBEYXRlYCBvYmplY3RzIHRvIHJlcHJlc2VudCBkYXRlIHJhbmdlcy5cbiAgICogQnkgZGVmYXVsdCwgdGhpcyBwcm9wZXJ0eSBpbmNsdWRlcyBhbGwgYFNreURhdGVSYW5nZUNhbGN1bGF0b3JJZGAgdmFsdWVzLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBjYWxjdWxhdG9ySWRzKFxuICAgIGNhbGN1bGF0b3JJZHM6IFNreURhdGVSYW5nZUNhbGN1bGF0b3JJZFtdIHwgdW5kZWZpbmVkLFxuICApIHtcbiAgICBjb25zdCBjdXJyZW50Q2FsY3VsYXRvcklkID0gdGhpcy4jZ2V0VmFsdWUoKS5jYWxjdWxhdG9ySWQ7XG5cbiAgICB0aGlzLiNfY2FsY3VsYXRvcklkcyA9IGNhbGN1bGF0b3JJZHMgPz8gU0tZX0RFRkFVTFRfQ0FMQ1VMQVRPUl9JRFM7XG4gICAgdGhpcy5jYWxjdWxhdG9ycyA9IHRoaXMuI2RhdGVSYW5nZVN2Yy5maWx0ZXJDYWxjdWxhdG9ycyhcbiAgICAgIHRoaXMuI19jYWxjdWxhdG9ySWRzLFxuICAgICk7XG5cbiAgICAvLyBJZiB0aGUgY3VycmVudGx5IHNlbGVjdGVkIGNhbGN1bGF0b3IgaXNuJ3QgYXZhaWxhYmxlIGFueW1vcmUsXG4gICAgLy8gc2VsZWN0IHRoZSBmaXJzdCBjYWxjdWxhdG9yIGluIHRoZSBuZXcgYXJyYXkuXG4gICAgaWYgKCF0aGlzLiNfY2FsY3VsYXRvcklkcy5pbmNsdWRlcyhjdXJyZW50Q2FsY3VsYXRvcklkKSkge1xuICAgICAgdGhpcy4jc2V0VmFsdWUoeyBjYWxjdWxhdG9ySWQ6IHRoaXMuY2FsY3VsYXRvcklkc1swXSB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IGNhbGN1bGF0b3JJZHMoKTogU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvcklkW10ge1xuICAgIHJldHVybiB0aGlzLiNfY2FsY3VsYXRvcklkcztcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgZGF0ZSBmb3JtYXQgZm9yXG4gICAqIFt0aGUgYHNreS1kYXRlcGlja2VyYCBjb21wb25lbnRzXShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2NvbXBvbmVudHMvZGF0ZXBpY2tlcilcbiAgICogdGhhdCBtYWtlIHVwIHRoZSBkYXRlIHJhbmdlIHBpY2tlci4gVGhlIHRleHQgaW5wdXQgaXMgYSBjb21wb3NpdGUgY29tcG9uZW50IG9mXG4gICAqIHVwIHRvIHR3byBgc2t5LWRhdGVwaWNrZXJgIGNvbXBvbmVudHMuXG4gICAqIEBkZWZhdWx0IFwiTU0vREQvWVlZWVwiXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgZGF0ZUZvcm1hdDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGRpc2FibGUgdGhlIGRhdGUgcmFuZ2UgcGlja2VyIG9uIHRlbXBsYXRlLWRyaXZlbiBmb3Jtcy4gRG9uJ3QgdXNlXG4gICAqIHRoaXMgaW5wdXQgb24gcmVhY3RpdmUgZm9ybXMgYmVjYXVzZSB0aGV5IG1heSBvdmVyd3JpdGUgdGhlIGlucHV0IG9yIGxlYXZlXG4gICAqIHRoZSBjb250cm9sIG91dCBvZiBzeW5jLiBUbyBzZXQgdGhlIGRpc2FibGVkIHN0YXRlIG9uIHJlYWN0aXZlIGZvcm1zLFxuICAgKiB1c2UgdGhlIGBGb3JtQ29udHJvbGAgaW5zdGVhZC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICBwdWJsaWMgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLmZvcm1Hcm91cC5kaXNhYmxlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZm9ybUdyb3VwLmVuYWJsZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgY29udGVudCBvZiB0aGUgaGVscCBwb3BvdmVyLiBXaGVuIHNwZWNpZmllZCBhbG9uZyB3aXRoIGBsYWJlbFRleHRgLCBhIFtoZWxwIGlubGluZV0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9jb21wb25lbnRzL2hlbHAtaW5saW5lKVxuICAgKiBidXR0b24gaXMgYWRkZWQgdG8gZGF0ZSByYW5nZSBwaWNrZXIuIFRoZSBoZWxwIGlubGluZSBidXR0b24gZGlzcGxheXMgYSBbcG9wb3Zlcl0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9jb21wb25lbnRzL3BvcG92ZXIpXG4gICAqIHdoZW4gY2xpY2tlZCB1c2luZyB0aGUgc3BlY2lmaWVkIGNvbnRlbnQgYW5kIG9wdGlvbmFsIHRpdGxlLiBUaGlzIHByb3BlcnR5IG9ubHkgYXBwbGllcyB3aGVuIGBsYWJlbFRleHRgIGlzIGFsc28gc3BlY2lmaWVkLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGhlbHBQb3BvdmVyQ29udGVudDogc3RyaW5nIHwgVGVtcGxhdGVSZWY8dW5rbm93bj4gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSB0aXRsZSBvZiB0aGUgaGVscCBwb3BvdmVyLiBUaGlzIHByb3BlcnR5IG9ubHkgYXBwbGllcyB3aGVuIGBoZWxwUG9wb3ZlckNvbnRlbnRgIGlzXG4gICAqIGFsc28gc3BlY2lmaWVkLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGhlbHBQb3BvdmVyVGl0bGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogW1BlcnNpc3RlbnQgaW5saW5lIGhlbHAgdGV4dF0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9kZXNpZ24vZ3VpZGVsaW5lcy91c2VyLWFzc2lzdGFuY2UjaW5saW5lLWhlbHApIHRoYXQgcHJvdmlkZXNcbiAgICogYWRkaXRpb25hbCBjb250ZXh0IHRvIHRoZSB1c2VyLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGhpbnRUZXh0OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBsYWJlbCBmb3IgdGhlIGRhdGUgcmFuZ2UgcGlja2VyLlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgdGhlIGBsYWJlbFRleHRgIGlucHV0IGluc3RlYWQuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGxhYmVsKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfbGFiZWwgPSB2YWx1ZTtcblxuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy4jbG9nZ2VyLmRlcHJlY2F0ZWQoJ1NreURhdGVSYW5nZVBpY2tlckNvbXBvbmVudC5sYWJlbCcsIHtcbiAgICAgICAgZGVwcmVjYXRpb25NYWpvclZlcnNpb246IDEwLFxuICAgICAgICByZXBsYWNlbWVudFJlY29tbWVuZGF0aW9uOiAnVXNlIHRoZSBgbGFiZWxUZXh0YCBpbnB1dCBpbnN0ZWFkLicsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IGxhYmVsKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI19sYWJlbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgdGV4dCB0byBkaXNwbGF5IGFzIHRoZSBkYXRlIHJhbmdlIHBpY2tlcidzIGxhYmVsLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGxhYmVsVGV4dDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBkYXRlIHJhbmdlIHBpY2tlciBpcyBzdGFja2VkIG9uIGFub3RoZXIgZm9ybSBjb21wb25lbnQuIFdoZW4gc3BlY2lmaWVkLCB0aGUgYXBwcm9wcmlhdGVcbiAgICogdmVydGljYWwgc3BhY2luZyBpcyBhdXRvbWF0aWNhbGx5IGFkZGVkIHRvIHRoZSBkYXRlIHJhbmdlIHBpY2tlci5cbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnNreS1mb3JtLWZpZWxkLXN0YWNrZWQnKVxuICBwdWJsaWMgc3RhY2tlZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBBIGhlbHAga2V5IHRoYXQgaWRlbnRpZmllcyB0aGUgZ2xvYmFsIGhlbHAgY29udGVudCB0byBkaXNwbGF5LiBXaGVuIHNwZWNpZmllZCBhbG9uZyB3aXRoIGBsYWJlbFRleHRgLCBhIFtoZWxwIGlubGluZV0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9jb21wb25lbnRzL2hlbHAtaW5saW5lKVxuICAgKiBidXR0b24gaXMgcGxhY2VkIGJlc2lkZSB0aGUgZGF0ZSByYW5nZSBwaWNrZXIgbGFiZWwuIENsaWNraW5nIHRoZSBidXR0b24gaW52b2tlcyBbZ2xvYmFsIGhlbHBdKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvbGVhcm4vZGV2ZWxvcC9nbG9iYWwtaGVscClcbiAgICogYXMgY29uZmlndXJlZCBieSB0aGUgYXBwbGljYXRpb24uIFRoaXMgcHJvcGVydHkgb25seSBhcHBsaWVzIHdoZW4gYGxhYmVsVGV4dGAgaXMgYWxzbyBzcGVjaWZpZWQuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgaGVscEtleTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIHByb3RlY3RlZCBjYWxjdWxhdG9ycyA9IHRoaXMuI2RhdGVSYW5nZVN2Yy5jYWxjdWxhdG9ycztcbiAgcHJvdGVjdGVkIGRhdGVwaWNrZXJzID0gdmlld0NoaWxkcmVuKFNreURhdGVwaWNrZXJDb21wb25lbnQpO1xuICBwcm90ZWN0ZWQgaG9zdENvbnRyb2w6IEFic3RyYWN0Q29udHJvbCB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIHByb3RlY3RlZCBzZWxlY3RlZENhbGN1bGF0b3IgPSB0aGlzLmNhbGN1bGF0b3JzWzBdO1xuICBwcm90ZWN0ZWQgc2hvd0VuZERhdGVQaWNrZXIgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcm90ZWN0ZWQgc2hvd1N0YXJ0RGF0ZVBpY2tlciA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG5cbiAgI19jYWxjdWxhdG9ySWRzID0gU0tZX0RFRkFVTFRfQ0FMQ1VMQVRPUl9JRFM7XG4gICNfbGFiZWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgI192YWx1ZSA9IHRoaXMuc2VsZWN0ZWRDYWxjdWxhdG9yLmdldFZhbHVlKCk7XG5cbiAgI2hvc3RIYXNDdXN0b21FcnJvcjogU2lnbmFsPGJvb2xlYW4gfCB1bmRlZmluZWQ+IHwgdW5kZWZpbmVkO1xuICAjbm90aWZ5Q2hhbmdlOiAoKF86IFNreURhdGVSYW5nZUNhbGN1bGF0aW9uKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDtcbiAgI25vdGlmeVRvdWNoZWQ6ICgoKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDtcblxuICAjY2FsY3VsYXRvcklkQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbDxudW1iZXI+KFxuICAgIHRoaXMuI2dldFZhbHVlKCkuY2FsY3VsYXRvcklkLFxuICAgIHsgbm9uTnVsbGFibGU6IHRydWUgfSxcbiAgKTtcbiAgI2NhbGN1bGF0b3JJZEludmFsaWQgPSB0aGlzLiNjcmVhdGVTdGF0dXNDaGFuZ2VTaWduYWwoXG4gICAgdGhpcy4jY2FsY3VsYXRvcklkQ29udHJvbCxcbiAgKTtcbiAgI2NhbGN1bGF0b3JJZFRvdWNoZWQgPSB0aGlzLiNjcmVhdGVUb3VjaGVkQ2hhbmdlU2lnbmFsKFxuICAgIHRoaXMuI2NhbGN1bGF0b3JJZENvbnRyb2wsXG4gICk7XG5cbiAgI2VuZERhdGVDb250cm9sID0gbmV3IEZvcm1Db250cm9sPERhdGVWYWx1ZT4odGhpcy4jZ2V0VmFsdWUoKS5lbmREYXRlKTtcbiAgI2VuZERhdGVJbnZhbGlkID0gdGhpcy4jY3JlYXRlU3RhdHVzQ2hhbmdlU2lnbmFsKHRoaXMuI2VuZERhdGVDb250cm9sKTtcbiAgI2VuZERhdGVUb3VjaGVkID0gdGhpcy4jY3JlYXRlVG91Y2hlZENoYW5nZVNpZ25hbCh0aGlzLiNlbmREYXRlQ29udHJvbCk7XG5cbiAgI3N0YXJ0RGF0ZUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2w8RGF0ZVZhbHVlPih0aGlzLiNnZXRWYWx1ZSgpLnN0YXJ0RGF0ZSk7XG4gICNzdGFydERhdGVJbnZhbGlkID0gdGhpcy4jY3JlYXRlU3RhdHVzQ2hhbmdlU2lnbmFsKHRoaXMuI3N0YXJ0RGF0ZUNvbnRyb2wpO1xuICAjc3RhcnREYXRlVG91Y2hlZCA9IHRoaXMuI2NyZWF0ZVRvdWNoZWRDaGFuZ2VTaWduYWwodGhpcy4jc3RhcnREYXRlQ29udHJvbCk7XG5cbiAgcHJvdGVjdGVkIGZvcm1Hcm91cCA9IGluamVjdChGb3JtQnVpbGRlcikuZ3JvdXAoe1xuICAgIGNhbGN1bGF0b3JJZDogdGhpcy4jY2FsY3VsYXRvcklkQ29udHJvbCxcbiAgICBzdGFydERhdGU6IHRoaXMuI3N0YXJ0RGF0ZUNvbnRyb2wsXG4gICAgZW5kRGF0ZTogdGhpcy4jZW5kRGF0ZUNvbnRyb2wsXG4gIH0pO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBjYWxjdWxhdG9ySWRIYXNFcnJvcnMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgdG91Y2hlZCA9IHRoaXMuI2NhbGN1bGF0b3JJZFRvdWNoZWQoKTtcbiAgICBjb25zdCBpbnZhbGlkID0gdGhpcy4jY2FsY3VsYXRvcklkSW52YWxpZCgpIHx8IHRoaXMuI2hvc3RIYXNDdXN0b21FcnJvcj8uKCk7XG4gICAgcmV0dXJuIHRvdWNoZWQgJiYgaW52YWxpZDtcbiAgfSk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGVuZERhdGVIYXNFcnJvcnMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgY2FsY3VsYXRvcklkSGFzRXJyb3JzID0gdGhpcy5jYWxjdWxhdG9ySWRIYXNFcnJvcnMoKTtcbiAgICBjb25zdCB0b3VjaGVkID0gdGhpcy4jZW5kRGF0ZVRvdWNoZWQoKTtcbiAgICBjb25zdCBpbnZhbGlkID0gdGhpcy4jZW5kRGF0ZUludmFsaWQoKTtcblxuICAgIHJldHVybiBjYWxjdWxhdG9ySWRIYXNFcnJvcnMgfHwgKHRvdWNoZWQgJiYgaW52YWxpZCk7XG4gIH0pO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBzdGFydERhdGVIYXNFcnJvcnMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgY2FsY3VsYXRvcklkSGFzRXJyb3JzID0gdGhpcy5jYWxjdWxhdG9ySWRIYXNFcnJvcnMoKTtcbiAgICBjb25zdCB0b3VjaGVkID0gdGhpcy4jc3RhcnREYXRlVG91Y2hlZCgpO1xuICAgIGNvbnN0IGludmFsaWQgPSB0aGlzLiNzdGFydERhdGVJbnZhbGlkKCk7XG5cbiAgICByZXR1cm4gY2FsY3VsYXRvcklkSGFzRXJyb3JzIHx8ICh0b3VjaGVkICYmIGludmFsaWQpO1xuICB9KTtcblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaG9zdENvbnRyb2wgPSB0aGlzLiNpbmplY3Rvci5nZXQoTmdDb250cm9sLCBudWxsLCB7XG4gICAgICBvcHRpb25hbDogdHJ1ZSxcbiAgICAgIHNlbGY6IHRydWUsXG4gICAgfSk/LmNvbnRyb2w7XG5cbiAgICBydW5JbkluamVjdGlvbkNvbnRleHQodGhpcy4jaW5qZWN0b3IsICgpID0+IHtcbiAgICAgIGlmICh0aGlzLmhvc3RDb250cm9sKSB7XG4gICAgICAgIHRoaXMuI2hvc3RIYXNDdXN0b21FcnJvciA9IHRoaXMuI2NyZWF0ZUhvc3RDdXN0b21FcnJvckNoYW5nZVNpZ25hbChcbiAgICAgICAgICB0aGlzLmhvc3RDb250cm9sLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gU2V0IGEgZGVmYXVsdCB2YWx1ZSBvbiB0aGUgY29udHJvbCBpZiBpdCdzIHVuZGVmaW5lZCBvbiBpbml0LlxuICAgIC8vIFdlIG5lZWQgdG8gdXNlIHNldFRpbWVvdXQgdG8gYXZvaWQgaW50ZXJmZXJpbmcgd2l0aCB0aGUgZmlyc3RcbiAgICAvLyB2YWxpZGF0aW9uIGN5Y2xlLlxuICAgIGlmIChpc1BhcnRpYWxWYWx1ZSh0aGlzLmhvc3RDb250cm9sPy52YWx1ZSkpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmhvc3RDb250cm9sPy5zZXRWYWx1ZSh0aGlzLiNnZXRWYWx1ZSgpLCB7XG4gICAgICAgICAgZW1pdEV2ZW50OiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBJZiB0aGUgZGF0ZXBpY2tlcnMnIHN0YXR1c2VzIGNoYW5nZSwgd2Ugd2FudCB0byByZXRyaWdnZXIgdGhlIGhvc3RcbiAgICAvLyBjb250cm9sJ3MgdmFsaWRhdGlvbiBzbyB0aGF0IHRoZWlyIGVycm9ycyBhcmUgcmVmbGVjdGVkIGJhY2sgdG8gdGhlIGhvc3QuXG4gICAgdGhpcy5mb3JtR3JvdXAuZXZlbnRzXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKChldnQpID0+IGV2dCBpbnN0YW5jZW9mIFN0YXR1c0NoYW5nZUV2ZW50KSxcbiAgICAgICAgbWFwKChldnQ6IFN0YXR1c0NoYW5nZUV2ZW50KSA9PiBldnQuc3RhdHVzKSxcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuI2Rlc3Ryb3lSZWYpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuaG9zdENvbnRyb2w/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe1xuICAgICAgICAgIGVtaXRFdmVudDogZmFsc2UsXG4gICAgICAgICAgb25seVNlbGY6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAvLyBNYXJrIGFsbCBmaWVsZHMgYXMgdG91Y2hlZCBpZiB0aGUgaG9zdCBjb250cm9sIGlzIHRvdWNoZWQuXG4gICAgdGhpcy5ob3N0Q29udHJvbD8uZXZlbnRzXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKChldnQpID0+IGV2dCBpbnN0YW5jZW9mIFRvdWNoZWRDaGFuZ2VFdmVudCksXG4gICAgICAgIG1hcCgoZXZ0OiBUb3VjaGVkQ2hhbmdlRXZlbnQpID0+IGV2dC50b3VjaGVkKSxcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuI2Rlc3Ryb3lSZWYpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuZm9ybUdyb3VwLm1hcmtBbGxBc1RvdWNoZWQoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgLy8gSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci5cbiAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46IChfOiB1bmtub3duKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy4jbm90aWZ5Q2hhbmdlID0gZm47XG4gIH1cblxuICAvLyBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLiNub3RpZnlUb3VjaGVkID0gZm47XG4gIH1cblxuICAvLyBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICBwdWJsaWMgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gIH1cblxuICAvLyBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIFZhbGlkYXRvci5cbiAgcHVibGljIHZhbGlkYXRlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICBsZXQgZXJyb3JzOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9IG51bGw7XG5cbiAgICBjb25zdCBjYWxjdWxhdG9yRXJyb3JzID0gdGhpcy5zZWxlY3RlZENhbGN1bGF0b3IudmFsaWRhdGUoY29udHJvbC52YWx1ZSk7XG4gICAgY29uc3Qgc3RhcnREYXRlRXJyb3JzID0gdGhpcy4jc3RhcnREYXRlQ29udHJvbC5lcnJvcnM7XG4gICAgY29uc3QgZW5kRGF0ZUVycm9ycyA9IHRoaXMuI2VuZERhdGVDb250cm9sLmVycm9ycztcblxuICAgIGlmIChjYWxjdWxhdG9yRXJyb3JzKSB7XG4gICAgICBlcnJvcnMgPSB7XG4gICAgICAgIHNreURhdGVSYW5nZToge1xuICAgICAgICAgIGNhbGN1bGF0b3JJZDogdGhpcy4jZ2V0VmFsdWUoKS5jYWxjdWxhdG9ySWQsXG4gICAgICAgICAgZXJyb3JzOiBjYWxjdWxhdG9yRXJyb3JzLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBTZXQgY2FsY3VsYXRvciBlcnJvcnMgb24gdGhlIHNlbGVjdCBzbyB0aGF0IHRoZXkgYXBwZWFyIGJlbmVhdGggaXQuXG4gICAgdGhpcy4jY2FsY3VsYXRvcklkQ29udHJvbC5zZXRFcnJvcnMoZXJyb3JzKTtcblxuICAgIGlmICh0aGlzLnNob3dTdGFydERhdGVQaWNrZXIoKSAmJiBzdGFydERhdGVFcnJvcnMpIHtcbiAgICAgIGVycm9ycyB8fD0ge307XG4gICAgICBlcnJvcnMgPSB7IC4uLmVycm9ycywgLi4uc3RhcnREYXRlRXJyb3JzIH07XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc2hvd0VuZERhdGVQaWNrZXIoKSAmJiBlbmREYXRlRXJyb3JzKSB7XG4gICAgICBlcnJvcnMgfHw9IHt9O1xuICAgICAgZXJyb3JzID0geyAuLi5lcnJvcnMsIC4uLmVuZERhdGVFcnJvcnMgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gZXJyb3JzO1xuICB9XG5cbiAgLy8gSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci5cbiAgLy8gVGhlIGRhdGUgcmFuZ2UgcGlja2VyIGFsd2F5cyBoYXMgYSB2YWx1ZSwgc28gaWYgdGhlIGNvbnN1bWVyIHBhc3NlcyBpbiBhXG4gIC8vIHBhcnRpYWwgdmFsdWUgKHZpYSBgcGF0Y2hWYWx1ZWApIG9yIG51bGwsIHdlIG5lZWQgdG8gdXBkYXRlIHRoZSBob3N0IGNvbnRyb2wnc1xuICAvLyB2YWx1ZSB3aXRoIHRoZSBjb21wbGV0ZSB2YWx1ZSBhZnRlciBpdCdzIGJlZW4gbW9kaWZpZWQuXG4gIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiBQYXJ0aWFsPFNreURhdGVSYW5nZUNhbGN1bGF0aW9uPiB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIHRoaXMuI3BhdGNoVmFsdWUodmFsdWUpO1xuXG4gICAgLy8gVXBkYXRlIHRoZSBob3N0IGNvbnRyb2wgaWYgaXQgaXMgc2V0IHRvIGEgcGFydGlhbCBvciBudWxsIHZhbHVlLlxuICAgIGlmIChpc1BhcnRpYWxWYWx1ZSh2YWx1ZSkpIHtcbiAgICAgIHRoaXMuaG9zdENvbnRyb2w/LnNldFZhbHVlKHRoaXMuI2dldFZhbHVlKCksIHtcbiAgICAgICAgZW1pdEV2ZW50OiBmYWxzZSxcbiAgICAgICAgb25seVNlbGY6IHRydWUsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRmlyZXMgd2hlbiBhIHVzZXIgY2hhbmdlcyB0aGUgc2VsZWN0ZWQgY2FsY3VsYXRvciBJRC5cbiAgICovXG4gIHByb3RlY3RlZCBvbkNhbGN1bGF0b3JJZENoYW5nZSgpOiB2b2lkIHtcbiAgICAvLyBSZXNldCB0aGUgdmFsdWUgd2hlbiB0aGUgY2FsY3VsYXRvciBJRCBjaGFuZ2VzLlxuICAgIHRoaXMuI3NldFZhbHVlKHsgY2FsY3VsYXRvcklkOiArdGhpcy4jY2FsY3VsYXRvcklkQ29udHJvbC52YWx1ZSB9KTtcbiAgICB0aGlzLm9uRGF0ZUNoYW5nZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gYSB1c2VyIGludGVyYWN0cyB3aXRoIGEgZGF0ZSByYW5nZSBwaWNrZXIuXG4gICAqL1xuICBwcm90ZWN0ZWQgb25EYXRlQ2hhbmdlKCk6IHZvaWQge1xuICAgIC8vIFdhaXQgdW50aWwgdGhlIGZvcm0gY29udHJvbCBpcyB1cGRhdGVkIGJlZm9yZSByZXRyaWV2aW5nIGl0cyB2YWx1ZS5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuI25vdGlmeUNoYW5nZT8uKFxuICAgICAgICB0aGlzLmZvcm1Hcm91cC5nZXRSYXdWYWx1ZSgpIGFzIFNreURhdGVSYW5nZUNhbGN1bGF0aW9uLFxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHRoZSBkYXRlIHJhbmdlIHBpY2tlciBsb3NlcyBmb2N1cy5cbiAgICovXG4gIHByb3RlY3RlZCBvbkZvY3Vzb3V0KHsgcmVsYXRlZFRhcmdldCB9OiBGb2N1c0V2ZW50KTogdm9pZCB7XG4gICAgaWYgKFxuICAgICAgcmVsYXRlZFRhcmdldCAmJlxuICAgICAgIXRoaXMuI2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhyZWxhdGVkVGFyZ2V0KSAmJlxuICAgICAgIXRoaXMuZGF0ZXBpY2tlcnMoKS5zb21lKChwaWNrZXIpID0+IHBpY2tlci5jb250YWluc1RhcmdldChyZWxhdGVkVGFyZ2V0KSlcbiAgICApIHtcbiAgICAgIHRoaXMuI25vdGlmeVRvdWNoZWQ/LigpO1xuICAgIH1cbiAgfVxuXG4gICNnZXRDYWxjdWxhdG9yKGNhbGN1bGF0b3JJZDogbnVtYmVyKTogU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvciB7XG4gICAgY29uc3QgZm91bmQgPSB0aGlzLmNhbGN1bGF0b3JzLmZpbmQoKGMpID0+IGMuY2FsY3VsYXRvcklkID09PSBjYWxjdWxhdG9ySWQpO1xuXG4gICAgLyppc3RhbmJ1bCBpZ25vcmUgaWY6IHNhZmV0eSBjaGVjayovXG4gICAgaWYgKCFmb3VuZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgQSBkYXRlIHJhbmdlIGNhbGN1bGF0b3Igd2l0aCBJRCAoJHtjYWxjdWxhdG9ySWR9KSBjb3VsZCBub3QgYmUgZm91bmQuYCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZvdW5kO1xuICB9XG5cbiAgI2dldFZhbHVlKCk6IFNreURhdGVSYW5nZUNhbGN1bGF0aW9uIHtcbiAgICAvLyBJbXBvcnRhbnQhIFJldHVybiBhIGNsb25lIHRvIGF2b2lkIGNoYW5naW5nIHRoZSBwcm9wZXJ0aWVzIGJ5IHJlZmVyZW5jZS5cbiAgICByZXR1cm4geyAuLi50aGlzLiNfdmFsdWUgfTtcbiAgfVxuXG4gICNwYXRjaFZhbHVlKFxuICAgIHBhcnRpYWxWYWx1ZTogUGFydGlhbDxTa3lEYXRlUmFuZ2VDYWxjdWxhdGlvbj4gfCBudWxsIHwgdW5kZWZpbmVkLFxuICApOiB2b2lkIHtcbiAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQocGFydGlhbFZhbHVlKSkge1xuICAgICAgdGhpcy4jc2V0VmFsdWUobnVsbCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgb2xkVmFsdWUgPSB0aGlzLiNnZXRWYWx1ZSgpO1xuXG4gICAgLy8gSWYgdGhlIG5ldyBJRCBpcyBkaXN0aW5jdCwgZXJhc2UgdGhlIG9sZCBzdGFydCBhbmQgZW5kIGRhdGVzIGJlY2F1c2VcbiAgICAvLyB0aGV5J3JlIG5vIGxvbmdlciBhcHBsaWNhYmxlLlxuICAgIGlmIChcbiAgICAgICFpc051bGxPclVuZGVmaW5lZChwYXJ0aWFsVmFsdWUuY2FsY3VsYXRvcklkKSAmJlxuICAgICAgb2xkVmFsdWUuY2FsY3VsYXRvcklkICE9PSBwYXJ0aWFsVmFsdWUuY2FsY3VsYXRvcklkXG4gICAgKSB7XG4gICAgICBkZWxldGUgb2xkVmFsdWUuZW5kRGF0ZTtcbiAgICAgIGRlbGV0ZSBvbGRWYWx1ZS5zdGFydERhdGU7XG4gICAgfVxuXG4gICAgY29uc3QgdmFsdWUgPSB7XG4gICAgICAuLi5vbGRWYWx1ZSxcbiAgICAgIC4uLnBhcnRpYWxWYWx1ZSxcbiAgICB9O1xuXG4gICAgdGhpcy4jc2V0VmFsdWUodmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHZhbHVlIHRvIGJlIHVzZWQgYnkgdGhlIGRhdGUgcmFuZ2UgcGlja2VyIGZvcm0gY29udHJvbC5cbiAgICovXG4gICNzZXRWYWx1ZSh2YWx1ZTogU2t5RGF0ZVJhbmdlQ2FsY3VsYXRpb24gfCBudWxsIHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgY29uc3Qgb2xkVmFsdWUgPSB0aGlzLiNnZXRWYWx1ZSgpO1xuXG4gICAgY29uc3QgaXNWYWx1ZUVtcHR5ID0gIXZhbHVlIHx8IGlzTnVsbE9yVW5kZWZpbmVkKHZhbHVlLmNhbGN1bGF0b3JJZCk7XG4gICAgY29uc3QgdmFsdWVPckRlZmF1bHQgPSBpc1ZhbHVlRW1wdHlcbiAgICAgID8gdGhpcy5jYWxjdWxhdG9yc1swXS5nZXRWYWx1ZSgpXG4gICAgICA6IHtcbiAgICAgICAgICAuLi50aGlzLiNnZXRDYWxjdWxhdG9yKHZhbHVlLmNhbGN1bGF0b3JJZCkuZ2V0VmFsdWUoKSxcbiAgICAgICAgICAuLi52YWx1ZSxcbiAgICAgICAgfTtcblxuICAgIC8vIEVuc3VyZSBmYWxzeSB2YWx1ZXMgYXJlIHNldCB0byBudWxsLlxuICAgIHZhbHVlT3JEZWZhdWx0LmVuZERhdGUgPSB2YWx1ZU9yRGVmYXVsdC5lbmREYXRlIHx8IG51bGw7XG4gICAgdmFsdWVPckRlZmF1bHQuc3RhcnREYXRlID0gdmFsdWVPckRlZmF1bHQuc3RhcnREYXRlIHx8IG51bGw7XG5cbiAgICBpZiAoIWFyZURhdGVSYW5nZXNFcXVhbChvbGRWYWx1ZSwgdmFsdWVPckRlZmF1bHQpKSB7XG4gICAgICB0aGlzLiNfdmFsdWUgPSB2YWx1ZU9yRGVmYXVsdDtcblxuICAgICAgaWYgKG9sZFZhbHVlLmNhbGN1bGF0b3JJZCAhPT0gdmFsdWVPckRlZmF1bHQuY2FsY3VsYXRvcklkKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDYWxjdWxhdG9yID0gdGhpcy4jZ2V0Q2FsY3VsYXRvcihcbiAgICAgICAgICB2YWx1ZU9yRGVmYXVsdC5jYWxjdWxhdG9ySWQsXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy4jdXBkYXRlUGlja2VyVmlzaWJpbGl0eSh0aGlzLnNlbGVjdGVkQ2FsY3VsYXRvcik7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZm9ybUdyb3VwLnBhdGNoVmFsdWUodmFsdWVPckRlZmF1bHQpO1xuICAgIH1cbiAgfVxuXG4gICN1cGRhdGVQaWNrZXJWaXNpYmlsaXR5KGNhbGN1bGF0b3I6IFNreURhdGVSYW5nZUNhbGN1bGF0b3IpOiB2b2lkIHtcbiAgICBsZXQgc2hvd0VuZERhdGVQaWNrZXIgPSBmYWxzZTtcbiAgICBsZXQgc2hvd1N0YXJ0RGF0ZVBpY2tlciA9IGZhbHNlO1xuXG4gICAgc3dpdGNoIChjYWxjdWxhdG9yLnR5cGUpIHtcbiAgICAgIGNhc2UgU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvclR5cGUuQmVmb3JlOlxuICAgICAgICBzaG93RW5kRGF0ZVBpY2tlciA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFNreURhdGVSYW5nZUNhbGN1bGF0b3JUeXBlLkFmdGVyOlxuICAgICAgICBzaG93U3RhcnREYXRlUGlja2VyID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvclR5cGUuUmFuZ2U6XG4gICAgICAgIHNob3dFbmREYXRlUGlja2VyID0gdHJ1ZTtcbiAgICAgICAgc2hvd1N0YXJ0RGF0ZVBpY2tlciA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICB0aGlzLnNob3dFbmREYXRlUGlja2VyLnNldChzaG93RW5kRGF0ZVBpY2tlcik7XG4gICAgdGhpcy5zaG93U3RhcnREYXRlUGlja2VyLnNldChzaG93U3RhcnREYXRlUGlja2VyKTtcbiAgfVxuXG4gICNjcmVhdGVIb3N0Q3VzdG9tRXJyb3JDaGFuZ2VTaWduYWwoXG4gICAgY29udHJvbDogQWJzdHJhY3RDb250cm9sLFxuICApOiBTaWduYWw8Ym9vbGVhbiB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiB0b1NpZ25hbChcbiAgICAgIGNvbnRyb2wuZXZlbnRzLnBpcGUoXG4gICAgICAgIGZpbHRlcigoZXZ0KSA9PiBldnQgaW5zdGFuY2VvZiBTdGF0dXNDaGFuZ2VFdmVudCksXG4gICAgICAgIG1hcCgoZXZ0OiBTdGF0dXNDaGFuZ2VFdmVudCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGVycm9ycyA9IGV2dC5zb3VyY2UuZXJyb3JzID8/IFtdO1xuICAgICAgICAgIGNvbnN0IGtub3duRXJyb3JzID0gWydyZXF1aXJlZCcsICdza3lEYXRlJ107XG5cbiAgICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMoZXJyb3JzKS5zb21lKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgcmV0dXJuICFrbm93bkVycm9ycy5pbmNsdWRlcyhlcnJvcik7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pLFxuICAgICAgKSxcbiAgICApO1xuICB9XG5cbiAgI2NyZWF0ZVN0YXR1c0NoYW5nZVNpZ25hbChjb250cm9sOiBGb3JtQ29udHJvbCk6IFNpZ25hbDxib29sZWFuIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIHRvU2lnbmFsKFxuICAgICAgY29udHJvbC5ldmVudHMucGlwZShcbiAgICAgICAgZmlsdGVyKChldnQpID0+IGV2dCBpbnN0YW5jZW9mIFN0YXR1c0NoYW5nZUV2ZW50KSxcbiAgICAgICAgbWFwKChldnQ6IFN0YXR1c0NoYW5nZUV2ZW50KSA9PiBldnQuc3RhdHVzID09PSAnSU5WQUxJRCcpLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy4jZGVzdHJveVJlZiksXG4gICAgICApLFxuICAgICk7XG4gIH1cblxuICAjY3JlYXRlVG91Y2hlZENoYW5nZVNpZ25hbChcbiAgICBjb250cm9sOiBGb3JtQ29udHJvbCxcbiAgKTogU2lnbmFsPGJvb2xlYW4gfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gdG9TaWduYWwoXG4gICAgICBjb250cm9sLmV2ZW50cy5waXBlKFxuICAgICAgICBmaWx0ZXIoKGV2dCkgPT4gZXZ0IGluc3RhbmNlb2YgVG91Y2hlZENoYW5nZUV2ZW50KSxcbiAgICAgICAgbWFwKChldnQ6IFRvdWNoZWRDaGFuZ2VFdmVudCkgPT4gZXZ0LnRvdWNoZWQpLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy4jZGVzdHJveVJlZiksXG4gICAgICApLFxuICAgICk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJza3ktZGF0ZS1yYW5nZS1waWNrZXJcIiBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJza3ktZGF0ZS1yYW5nZS1waWNrZXItZm9ybS1ncm91cCBza3ktZGF0ZS1yYW5nZS1waWNrZXItc2VsZWN0LWNhbGN1bGF0b3JcIlxuICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICdza3ktZGF0ZS1yYW5nZS1waWNrZXItbGFzdC1pbnB1dCc6XG4gICAgICAgICFzaG93U3RhcnREYXRlUGlja2VyKCkgJiYgIXNob3dFbmREYXRlUGlja2VyKClcbiAgICB9XCJcbiAgPlxuICAgIDxza3ktaW5wdXQtYm94XG4gICAgICBbaGFzRXJyb3JzXT1cImNhbGN1bGF0b3JJZEhhc0Vycm9ycygpXCJcbiAgICAgIFtoZWxwS2V5XT1cImhlbHBLZXlcIlxuICAgICAgW2hlbHBQb3BvdmVyQ29udGVudF09XCJoZWxwUG9wb3ZlckNvbnRlbnRcIlxuICAgICAgW2hlbHBQb3BvdmVyVGl0bGVdPVwiaGVscFBvcG92ZXJUaXRsZVwiXG4gICAgICBbaGludFRleHRdPVwiaGludFRleHRcIlxuICAgICAgW2xhYmVsVGV4dF09XCJcbiAgICAgICAgbGFiZWxUZXh0IHx8XG4gICAgICAgIGxhYmVsIHx8XG4gICAgICAgICgnc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZGVmYXVsdF9sYWJlbCcgfCBza3lMaWJSZXNvdXJjZXMpXG4gICAgICBcIlxuICAgID5cbiAgICAgIDxzZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwiY2FsY3VsYXRvcklkXCIgKGNoYW5nZSk9XCJvbkNhbGN1bGF0b3JJZENoYW5nZSgpXCI+XG4gICAgICAgIEBmb3IgKGNhbGN1bGF0b3Igb2YgY2FsY3VsYXRvcnM7IHRyYWNrIGNhbGN1bGF0b3IuY2FsY3VsYXRvcklkKSB7XG4gICAgICAgICAgPG9wdGlvbiBbdmFsdWVdPVwiY2FsY3VsYXRvci5jYWxjdWxhdG9ySWRcIj5cbiAgICAgICAgICAgIHt7IGNhbGN1bGF0b3Iuc2hvcnREZXNjcmlwdGlvbiQgfCBhc3luYyB9fVxuICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICB9XG4gICAgICA8L3NlbGVjdD5cbiAgICAgIEBpZiAoXG4gICAgICAgIGhvc3RDb250cm9sPy5lcnJvcnM/Llsnc2t5RGF0ZVJhbmdlJ10/LmVycm9ycz8uW1xuICAgICAgICAgICdlbmREYXRlQmVmb3JlU3RhcnREYXRlJ1xuICAgICAgICBdICYmIGxhYmVsVGV4dFxuICAgICAgKSB7XG4gICAgICAgIDxza3ktZm9ybS1lcnJvclxuICAgICAgICAgIGVycm9yTmFtZT1cImVuZERhdGVCZWZvcmVTdGFydERhdGVcIlxuICAgICAgICAgIFtlcnJvclRleHRdPVwiXG4gICAgICAgICAgICAnc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZW5kX2RhdGVfYmVmb3JlX3N0YXJ0X2RhdGVfZXJyb3JfbGFiZWxfdGV4dCdcbiAgICAgICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXNcbiAgICAgICAgICBcIlxuICAgICAgICAvPlxuICAgICAgfVxuICAgICAgPHNwYW4gY2xhc3M9XCJza3ktaW5wdXQtYm94LWRlc2NlbmRlbnQtZm9ybS1lcnJvclwiPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJza3ktZm9ybS1lcnJvclwiIC8+XG4gICAgICA8L3NwYW4+XG4gICAgPC9za3ktaW5wdXQtYm94PlxuICA8L2Rpdj5cbiAgPGRpdlxuICAgIGNsYXNzPVwic2t5LWRhdGUtcmFuZ2UtcGlja2VyLWZvcm0tZ3JvdXAgc2t5LWRhdGUtcmFuZ2UtZGF0ZXBpY2tlci13cmFwcGVyIHNreS1kYXRlLXJhbmdlLXBpY2tlci1zdGFydC1kYXRlXCJcbiAgICBbaGlkZGVuXT1cIiFzaG93U3RhcnREYXRlUGlja2VyKClcIlxuICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICdza3ktZGF0ZS1yYW5nZS1waWNrZXItbGFzdC1pbnB1dCc6XG4gICAgICAgIHNob3dTdGFydERhdGVQaWNrZXIoKSAmJiAhc2hvd0VuZERhdGVQaWNrZXIoKVxuICAgIH1cIlxuICA+XG4gICAgPHNreS1pbnB1dC1ib3hcbiAgICAgIFtoYXNFcnJvcnNdPVwic3RhcnREYXRlSGFzRXJyb3JzKClcIlxuICAgICAgW2xhYmVsVGV4dF09XCJcbiAgICAgICAgc2VsZWN0ZWRDYWxjdWxhdG9yLnR5cGVcbiAgICAgICAgICB8IHNreURhdGVSYW5nZVBpY2tlclN0YXJ0RGF0ZVJlc291cmNlS2V5XG4gICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXNcbiAgICAgIFwiXG4gICAgPlxuICAgICAgPHNreS1kYXRlcGlja2VyIChjYWxlbmRhckRhdGVDaGFuZ2UpPVwib25EYXRlQ2hhbmdlKClcIj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwic3RhcnREYXRlXCJcbiAgICAgICAgICBuYW1lPVwic3RhcnREYXRlXCJcbiAgICAgICAgICBza3lEYXRlcGlja2VySW5wdXRcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgICAgIGxhYmVsVGV4dCB8fCBsYWJlbFxuICAgICAgICAgICAgICA/ICgnc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZGVmYXVsdF9hcmlhX2xhYmVsJ1xuICAgICAgICAgICAgICAgIHwgc2t5TGliUmVzb3VyY2VzXG4gICAgICAgICAgICAgICAgICA6IChzZWxlY3RlZENhbGN1bGF0b3IudHlwZVxuICAgICAgICAgICAgICAgICAgICAgIHwgc2t5RGF0ZVJhbmdlUGlja2VyU3RhcnREYXRlUmVzb3VyY2VLZXlcbiAgICAgICAgICAgICAgICAgICAgICB8IHNreUxpYlJlc291cmNlcylcbiAgICAgICAgICAgICAgICAgIDogKGxhYmVsVGV4dCA/IGxhYmVsVGV4dCA6IGxhYmVsKSlcbiAgICAgICAgICAgICAgOiAoc2VsZWN0ZWRDYWxjdWxhdG9yLnR5cGVcbiAgICAgICAgICAgICAgICB8IHNreURhdGVSYW5nZVBpY2tlclN0YXJ0RGF0ZVJlc291cmNlS2V5XG4gICAgICAgICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXMpXG4gICAgICAgICAgXCJcbiAgICAgICAgICBbZGF0ZUZvcm1hdF09XCJkYXRlRm9ybWF0XCJcbiAgICAgICAgICBbcmVxdWlyZWRdPVwic2hvd1N0YXJ0RGF0ZVBpY2tlcigpXCJcbiAgICAgICAgICAoY2hhbmdlKT1cIm9uRGF0ZUNoYW5nZSgpXCJcbiAgICAgICAgLz5cbiAgICAgIDwvc2t5LWRhdGVwaWNrZXI+XG4gICAgPC9za3ktaW5wdXQtYm94PlxuICA8L2Rpdj5cbiAgPGRpdlxuICAgIGNsYXNzPVwic2t5LWRhdGUtcmFuZ2UtcGlja2VyLWZvcm0tZ3JvdXAgc2t5LWRhdGUtcmFuZ2UtZGF0ZXBpY2tlci13cmFwcGVyIHNreS1kYXRlLXJhbmdlLXBpY2tlci1lbmQtZGF0ZVwiXG4gICAgW2hpZGRlbl09XCIhc2hvd0VuZERhdGVQaWNrZXIoKVwiXG4gICAgW25nQ2xhc3NdPVwieyAnc2t5LWRhdGUtcmFuZ2UtcGlja2VyLWxhc3QtaW5wdXQnOiBzaG93RW5kRGF0ZVBpY2tlcigpIH1cIlxuICA+XG4gICAgPHNreS1pbnB1dC1ib3hcbiAgICAgIFtoYXNFcnJvcnNdPVwiZW5kRGF0ZUhhc0Vycm9ycygpXCJcbiAgICAgIFtsYWJlbFRleHRdPVwiXG4gICAgICAgIHNlbGVjdGVkQ2FsY3VsYXRvci50eXBlXG4gICAgICAgICAgfCBza3lEYXRlUmFuZ2VQaWNrZXJFbmREYXRlUmVzb3VyY2VLZXlcbiAgICAgICAgICB8IHNreUxpYlJlc291cmNlc1xuICAgICAgXCJcbiAgICA+XG4gICAgICA8c2t5LWRhdGVwaWNrZXIgKGNhbGVuZGFyRGF0ZUNoYW5nZSk9XCJvbkRhdGVDaGFuZ2UoKVwiPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJlbmREYXRlXCJcbiAgICAgICAgICBuYW1lPVwiZW5kRGF0ZVwiXG4gICAgICAgICAgc2t5RGF0ZXBpY2tlcklucHV0XG4gICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICAgICBsYWJlbFRleHQgfHwgbGFiZWxcbiAgICAgICAgICAgICAgPyAoJ3NreXV4X2RhdGVfcmFuZ2VfcGlja2VyX2RlZmF1bHRfYXJpYV9sYWJlbCdcbiAgICAgICAgICAgICAgICB8IHNreUxpYlJlc291cmNlc1xuICAgICAgICAgICAgICAgICAgOiAoc2VsZWN0ZWRDYWxjdWxhdG9yLnR5cGVcbiAgICAgICAgICAgICAgICAgICAgICB8IHNreURhdGVSYW5nZVBpY2tlckVuZERhdGVSZXNvdXJjZUtleVxuICAgICAgICAgICAgICAgICAgICAgIHwgc2t5TGliUmVzb3VyY2VzKVxuICAgICAgICAgICAgICAgICAgOiAobGFiZWxUZXh0ID8gbGFiZWxUZXh0IDogbGFiZWwpKVxuICAgICAgICAgICAgICA6IChzZWxlY3RlZENhbGN1bGF0b3IudHlwZVxuICAgICAgICAgICAgICAgIHwgc2t5RGF0ZVJhbmdlUGlja2VyRW5kRGF0ZVJlc291cmNlS2V5XG4gICAgICAgICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXMpXG4gICAgICAgICAgXCJcbiAgICAgICAgICBbZGF0ZUZvcm1hdF09XCJkYXRlRm9ybWF0XCJcbiAgICAgICAgICBbcmVxdWlyZWRdPVwic2hvd0VuZERhdGVQaWNrZXIoKVwiXG4gICAgICAgICAgKGNoYW5nZSk9XCJvbkRhdGVDaGFuZ2UoKVwiXG4gICAgICAgIC8+XG4gICAgICA8L3NreS1kYXRlcGlja2VyPlxuICAgIDwvc2t5LWlucHV0LWJveD5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==","import { NgModule } from '@angular/core';\nimport { SkyFormErrorModule } from '@skyux/forms';\nimport { SkyDateRangePickerComponent } from './date-range-picker.component';\nimport * as i0 from \"@angular/core\";\nexport class SkyDateRangePickerModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDateRangePickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDateRangePickerModule, imports: [SkyDateRangePickerComponent], exports: [SkyDateRangePickerComponent, SkyFormErrorModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDateRangePickerModule, imports: [SkyDateRangePickerComponent, SkyFormErrorModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDateRangePickerModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [SkyDateRangePickerComponent, SkyFormErrorModule],\n imports: [SkyDateRangePickerComponent],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS1waWNrZXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2RhdGV0aW1lL3NyYy9saWIvbW9kdWxlcy9kYXRlLXJhbmdlLXBpY2tlci9kYXRlLXJhbmdlLXBpY2tlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFbEQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sK0JBQStCLENBQUM7O0FBTTVFLE1BQU0sT0FBTyx3QkFBd0I7OEdBQXhCLHdCQUF3QjsrR0FBeEIsd0JBQXdCLFlBRnpCLDJCQUEyQixhQUQzQiwyQkFBMkIsRUFBRSxrQkFBa0I7K0dBRzlDLHdCQUF3QixZQUZ6QiwyQkFBMkIsRUFERSxrQkFBa0I7OzJGQUc5Qyx3QkFBd0I7a0JBSnBDLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsMkJBQTJCLEVBQUUsa0JBQWtCLENBQUM7b0JBQzFELE9BQU8sRUFBRSxDQUFDLDJCQUEyQixDQUFDO2lCQUN2QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTa3lGb3JtRXJyb3JNb2R1bGUgfSBmcm9tICdAc2t5dXgvZm9ybXMnO1xuXG5pbXBvcnQgeyBTa3lEYXRlUmFuZ2VQaWNrZXJDb21wb25lbnQgfSBmcm9tICcuL2RhdGUtcmFuZ2UtcGlja2VyLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGV4cG9ydHM6IFtTa3lEYXRlUmFuZ2VQaWNrZXJDb21wb25lbnQsIFNreUZvcm1FcnJvck1vZHVsZV0sXG4gIGltcG9ydHM6IFtTa3lEYXRlUmFuZ2VQaWNrZXJDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lEYXRlUmFuZ2VQaWNrZXJNb2R1bGUge31cbiJdfQ==","import { ChangeDetectionStrategy, Component, ElementRef, EnvironmentInjector, EventEmitter, Inject, Optional, Output, TemplateRef, ViewChild, ViewEncapsulation, inject, } from '@angular/core';\nimport { SKY_STACKING_CONTEXT, SkyAffixAutoFitContext, } from '@skyux/core';\nimport moment from 'moment';\nimport { Subject, fromEvent } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@skyux/core\";\nimport * as i2 from \"@skyux/forms\";\nimport * as i3 from \"@skyux/theme\";\nimport * as i4 from \"@angular/common\";\nimport * as i5 from \"@skyux/icon\";\nimport * as i6 from \"@skyux/i18n\";\nlet nextId = 0;\n/**\n * Creates a SKY UX-themed replacement for the HTML `input` element with `type=\"time\"`.\n * The value that users select is driven through the `ngModel` attribute\n * specified on the `input` element. You must wrap this component around an `input`\n * with the `skyTimepickerInput` directive.\n */\nexport class SkyTimepickerComponent {\n set disabled(value) {\n this.#_disabled = value;\n this.#changeDetector.markForCheck();\n }\n get disabled() {\n return this.#_disabled;\n }\n set selectedHour(setHour) {\n let hourOffset = 0;\n if (this.selectedMeridies === 'AM' && setHour === 12) {\n hourOffset = -12;\n }\n if (this.selectedMeridies === 'PM' && setHour !== 12) {\n hourOffset = 12;\n }\n if (this.is8601) {\n hourOffset = 0;\n }\n const hour = moment({ hour: setHour }).add(hourOffset, 'hours').hour();\n this.activeTime = moment({\n hour: hour,\n minute: moment(this.activeTime).get('minute') + 0,\n }).toDate();\n this.selectedTimeChanged.emit(this.selectedTime);\n }\n get selectedHour() {\n if (!this.is8601) {\n /* istanbul ignore next */\n return parseInt(moment(this.activeTime).format('h'), 0) || 1;\n }\n else {\n return moment(this.activeTime).hour() + 0;\n }\n }\n set selectedMeridies(meridies) {\n meridies = meridies.trim();\n /* istanbul ignore else */\n if (meridies !== this.selectedMeridies) {\n switch (meridies) {\n case 'AM':\n this.activeTime = moment(this.activeTime)\n .subtract(12, 'hours')\n .toDate();\n break;\n case 'PM':\n this.activeTime = moment(this.activeTime).add(12, 'hours').toDate();\n break;\n }\n this.selectedTimeChanged.emit(this.selectedTime);\n }\n }\n get selectedMeridies() {\n if (this.activeTime) {\n return moment(this.activeTime).format('A');\n }\n return '';\n }\n set selectedMinute(minute) {\n this.activeTime = moment({\n hour: moment(this.activeTime).get('hour') + 0,\n minute: minute,\n }).toDate();\n this.selectedTimeChanged.emit(this.selectedTime);\n }\n get selectedMinute() {\n return moment(this.activeTime).minute() + 0;\n }\n set selectedTime(newTime) {\n if (typeof newTime !== 'undefined') {\n /* sanity check */\n /* istanbul ignore else */\n if (newTime.local !== 'Invalid date') {\n this.activeTime = newTime.iso8601;\n this.#changeDetector.markForCheck();\n }\n }\n }\n get selectedTime() {\n const time = {\n hour: moment(this.activeTime).hour(),\n minute: moment(this.activeTime).minute(),\n meridie: moment(this.activeTime).format('A'),\n timezone: parseInt(moment(this.activeTime).format('Z'), 10),\n iso8601: this.activeTime,\n local: moment(this.activeTime).format(this.localeFormat),\n customFormat: typeof this.returnFormat !== 'undefined'\n ? this.returnFormat\n : this.localeFormat,\n };\n return time;\n }\n set timepickerRef(value) {\n if (value) {\n this.#_timepickerRef = value;\n this.#addKeyupListener();\n // Wait for the timepicker component to render before gauging dimensions.\n setTimeout(() => {\n this.#destroyAffixer();\n this.#createAffixer();\n setTimeout(() => {\n if (this.timepickerRef) {\n this.#coreAdapter.getFocusableChildrenAndApplyFocus(this.timepickerRef, '.sky-timepicker-content', false);\n }\n this.isVisible = true;\n this.#changeDetector.markForCheck();\n });\n });\n }\n }\n get timepickerRef() {\n return this.#_timepickerRef;\n }\n #affixer;\n #timepickerUnsubscribe;\n #ngUnsubscribe;\n #overlay;\n #overlayKeyupListener;\n #_disabled;\n #_timepickerRef;\n #affixService;\n #changeDetector;\n #coreAdapter;\n #environmentInjector;\n #overlayService;\n #zIndex;\n constructor(affixService, changeDetector, coreAdapter, overlayService, inputBoxHostService, themeSvc, stackingContext) {\n this.inputBoxHostService = inputBoxHostService;\n /**\n * Fires when the value in the timepicker input changes.\n */\n this.selectedTimeChanged = new EventEmitter();\n this.activeTime = new Date();\n this.hours = [];\n this.is8601 = false;\n this.isOpen = false;\n this.isVisible = false;\n this.localeFormat = 'h:mm A';\n this.minutes = [];\n this.timeFormat = 'hh';\n this.#timepickerUnsubscribe = new Subject();\n this.#ngUnsubscribe = new Subject();\n this.#_disabled = false;\n this.#environmentInjector = inject(EnvironmentInjector);\n this.#affixService = affixService;\n this.#changeDetector = changeDetector;\n this.#coreAdapter = coreAdapter;\n this.#overlayService = overlayService;\n this.#zIndex = stackingContext?.zIndex;\n const uniqueId = nextId++;\n this.timepickerId = `sky-timepicker-${uniqueId}`;\n this.triggerButtonId = `sky-timepicker-button-${uniqueId}`;\n // Update icons when theme changes.\n themeSvc?.settingsChange\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe(() => {\n this.#changeDetector.markForCheck();\n });\n }\n ngOnInit() {\n this.setFormat(this.timeFormat);\n this.#addKeyupListener();\n if (this.inputBoxHostService && this.inputTemplateRef) {\n this.inputBoxHostService.populate({\n inputTemplate: this.inputTemplateRef,\n buttonsTemplate: this.triggerButtonTemplateRef,\n });\n }\n }\n ngOnDestroy() {\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n this.#removePickerEventListeners();\n this.#destroyAffixer();\n this.#destroyOverlay();\n }\n setFormat(format) {\n let h = 12;\n let m = 12;\n let minuteMultiplier = 5;\n let localeFormat = 'h:mm A';\n if (format === 'hh') {\n h = 12;\n m = 12;\n minuteMultiplier = 5;\n localeFormat = 'h:mm A';\n this.is8601 = false;\n }\n if (format === 'HH') {\n h = 24;\n m = 4;\n minuteMultiplier = 15;\n localeFormat = 'HH:mm';\n this.is8601 = true;\n }\n const data = {\n // Create a sparse array with a length equal to the hour.\n hours: Array(...Array(h)).map((_, i) => {\n if (format === 'hh') {\n return ++i;\n }\n /* istanbul ignore else */\n if (format === 'HH') {\n return i;\n }\n /* istanbul ignore next */\n /* sanity check */\n return 0;\n }),\n // Create a sparse array with a length equal to the minute.\n minutes: Array(...Array(m)).map(function (_, i) {\n return i * minuteMultiplier;\n }),\n localeFormat: localeFormat,\n minuteMultiplier: minuteMultiplier,\n };\n this.hours = data.hours;\n this.minutes = data.minutes;\n this.localeFormat = data.localeFormat;\n this.minuteMultiplier = data.minuteMultiplier;\n }\n onCloseButtonClick() {\n this.#closePicker();\n }\n setTime(event) {\n /* istanbul ignore else */\n if (typeof event !== 'undefined') {\n /* istanbul ignore else */\n if (event.type === 'click') {\n event.stopPropagation();\n if (event.target.name === 'hour') {\n this.selectedHour = parseInt(event.target.innerHTML, 0);\n }\n if (event.target.name === 'minute') {\n this.selectedMinute = parseInt(event.target.innerHTML, 0);\n }\n if (event.target.name === 'meridie') {\n this.selectedMeridies = event.target.innerHTML;\n }\n }\n }\n }\n onTriggerButtonClick() {\n this.#openPicker();\n }\n highlightMinute(selectedMinute, minute) {\n const radix = this.is8601 ? 15 : 5;\n return Math.floor(selectedMinute / radix) === minute / radix;\n }\n #closePicker() {\n this.#destroyAffixer();\n this.#destroyOverlay();\n this.#removePickerEventListeners();\n this.triggerButtonRef?.nativeElement.focus();\n this.isOpen = false;\n }\n #openPicker() {\n this.isVisible = false;\n this.#changeDetector.markForCheck();\n this.#removePickerEventListeners();\n this.#destroyOverlay();\n this.#createOverlay();\n this.isOpen = true;\n this.#changeDetector.markForCheck();\n }\n #createAffixer() {\n if (this.timepickerRef && this.triggerButtonRef) {\n const affixer = this.#affixService.createAffixer(this.timepickerRef);\n // Hide timepicker when trigger button is scrolled off screen.\n affixer.placementChange\n .pipe(takeUntil(this.#timepickerUnsubscribe))\n .subscribe((change) => {\n this.isVisible = change.placement !== null;\n this.#changeDetector.markForCheck();\n });\n affixer.affixTo(this.triggerButtonRef.nativeElement, {\n autoFitContext: SkyAffixAutoFitContext.Viewport,\n enableAutoFit: true,\n horizontalAlignment: 'right',\n isSticky: true,\n placement: 'below',\n });\n this.#affixer = affixer;\n }\n }\n #destroyAffixer() {\n /*istanbul ignore else*/\n if (this.#affixer) {\n this.#affixer.destroy();\n this.#affixer = undefined;\n }\n }\n #createOverlay() {\n if (this.timepickerTemplateRef) {\n const overlay = this.#overlayService.create({\n enableClose: false,\n enablePointerEvents: false,\n environmentInjector: this.#environmentInjector,\n });\n if (this.#zIndex) {\n this.#zIndex\n .pipe(takeUntil(this.#timepickerUnsubscribe))\n .subscribe((zIndex) => {\n overlay.componentRef.instance.zIndex = zIndex.toString(10);\n });\n }\n overlay.backdropClick\n .pipe(takeUntil(this.#timepickerUnsubscribe))\n .subscribe(() => {\n /* istanbul ignore else */\n if (this.isOpen) {\n this.#closePicker();\n }\n });\n overlay.attachTemplate(this.timepickerTemplateRef);\n this.#overlay = overlay;\n }\n }\n #destroyOverlay() {\n /*istanbul ignore else*/\n if (this.#overlay) {\n this.#overlayService.close(this.#overlay);\n this.#overlay = undefined;\n }\n }\n #addKeyupListener() {\n const timepickerMenuElement = this.timepickerRef?.nativeElement;\n if (timepickerMenuElement) {\n this.#overlayKeyupListener = fromEvent(timepickerMenuElement, 'keyup')\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((event) => {\n const key = event.key?.toLowerCase();\n /* istanbul ignore else */\n if (key === 'escape' && this.isOpen) {\n this.#closePicker();\n event.stopPropagation();\n event.preventDefault();\n }\n });\n }\n }\n #removePickerEventListeners() {\n /* istanbul ignore else */\n if (this.#timepickerUnsubscribe) {\n this.#timepickerUnsubscribe.next();\n this.#timepickerUnsubscribe.complete();\n this.#timepickerUnsubscribe = new Subject();\n }\n /* istanbul ignore next */\n this.#overlayKeyupListener?.unsubscribe();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyTimepickerComponent, deps: [{ token: i1.SkyAffixService }, { token: i0.ChangeDetectorRef }, { token: i1.SkyCoreAdapterService }, { token: i1.SkyOverlayService }, { token: i2.SkyInputBoxHostService, optional: true }, { token: i3.SkyThemeService, optional: true }, { token: SKY_STACKING_CONTEXT, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.5\", type: SkyTimepickerComponent, isStandalone: false, selector: \"sky-timepicker\", outputs: { selectedTimeChanged: \"selectedTimeChanged\" }, viewQueries: [{ propertyName: \"timepickerRef\", first: true, predicate: [\"timepickerRef\"], descendants: true, read: ElementRef }, { propertyName: \"timepickerTemplateRef\", first: true, predicate: [\"timepickerTemplateRef\"], descendants: true, read: TemplateRef }, { propertyName: \"triggerButtonRef\", first: true, predicate: [\"triggerButtonRef\"], descendants: true, read: ElementRef }, { propertyName: \"inputTemplateRef\", first: true, predicate: [\"inputTemplateRef\"], descendants: true, read: TemplateRef, static: true }, { propertyName: \"triggerButtonTemplateRef\", first: true, predicate: [\"triggerButtonTemplateRef\"], descendants: true, read: TemplateRef, static: true }], ngImport: i0, template: \"<div class=\\\"sky-timepicker\\\">\\n @if (!inputBoxHostService) {\\n <div class=\\\"sky-input-group\\\">\\n <ng-container *ngTemplateOutlet=\\\"inputTemplateRef\\\" />\\n <ng-container *ngTemplateOutlet=\\\"triggerButtonTemplateRef\\\" />\\n </div>\\n }\\n</div>\\n\\n<ng-template #inputTemplateRef>\\n <ng-content />\\n</ng-template>\\n\\n<ng-template #triggerButtonTemplateRef>\\n <div class=\\\"sky-input-group-btn\\\">\\n <button\\n #triggerButtonRef\\n aria-haspopup=\\\"dialog\\\"\\n class=\\\"sky-btn sky-btn-default sky-input-group-timepicker-btn\\\"\\n type=\\\"button\\\"\\n [attr.aria-controls]=\\\"isOpen ? timepickerId : null\\\"\\n [attr.aria-expanded]=\\\"isOpen\\\"\\n [attr.aria-label]=\\\"\\n inputBoxHostService?.labelText\\n ? ('skyux_timepicker_button_label_context'\\n | skyLibResources: inputBoxHostService?.labelText)\\n : ('skyux_timepicker_button_label' | skyLibResources)\\n \\\"\\n [attr.id]=\\\"triggerButtonId\\\"\\n [attr.title]=\\\"\\n inputBoxHostService?.labelText\\n ? ('skyux_timepicker_button_label_context'\\n | skyLibResources: inputBoxHostService?.labelText)\\n : ('skyux_timepicker_button_label' | skyLibResources)\\n \\\"\\n [disabled]=\\\"disabled\\\"\\n (click)=\\\"onTriggerButtonClick()\\\"\\n >\\n <sky-icon iconName=\\\"clock\\\" iconSize=\\\"l\\\" />\\n </button>\\n </div>\\n</ng-template>\\n\\n<ng-template #timepickerTemplateRef>\\n <div\\n #timepickerRef\\n class=\\\"sky-timepicker-container sky-shadow sky-box sky-elevation-4\\\"\\n role=\\\"dialog\\\"\\n [attr.aria-labelledby]=\\\"triggerButtonId\\\"\\n [attr.id]=\\\"timepickerId\\\"\\n [class.sky-timepicker-hidden]=\\\"!isVisible\\\"\\n >\\n <div class=\\\"sky-timepicker-content\\\">\\n <section\\n class=\\\"sky-timepicker-column sky-timepicker-column-hours\\\"\\n [ngClass]=\\\"{ 'sky-timepicker-24hour': is8601 }\\\"\\n >\\n <ol>\\n @for (hour of hours; track hour) {\\n <li>\\n <button\\n name=\\\"hour\\\"\\n type=\\\"button\\\"\\n [ngClass]=\\\"{ 'sky-btn-active': selectedHour === hour }\\\"\\n (click)=\\\"setTime($event)\\\"\\n >\\n {{ hour }}\\n </button>\\n </li>\\n }\\n </ol>\\n </section>\\n <section class=\\\"sky-timepicker-column sky-timepicker-column-minutes\\\">\\n <ol>\\n @for (minute of minutes; track minute) {\\n <li>\\n <button\\n name=\\\"minute\\\"\\n type=\\\"button\\\"\\n [ngClass]=\\\"{\\n 'sky-btn-active': highlightMinute(selectedMinute, minute)\\n }\\\"\\n (click)=\\\"setTime($event)\\\"\\n >\\n {{ '00'.substring(0, 2 - minute.toString().length) + minute }}\\n </button>\\n </li>\\n }\\n </ol>\\n </section>\\n @if (!is8601) {\\n <section class=\\\"sky-timepicker-column sky-timepicker-column-meridies\\\">\\n <ol>\\n <li>\\n <button\\n name=\\\"meridie\\\"\\n type=\\\"button\\\"\\n [ngClass]=\\\"{ 'sky-btn-active': selectedMeridies === 'AM' }\\\"\\n (click)=\\\"setTime($event)\\\"\\n >\\n AM\\n </button>\\n </li>\\n <li>\\n <button\\n name=\\\"meridie\\\"\\n type=\\\"button\\\"\\n [ngClass]=\\\"{ 'sky-btn-active': selectedMeridies === 'PM' }\\\"\\n (click)=\\\"setTime($event)\\\"\\n >\\n PM\\n </button>\\n </li>\\n </ol>\\n </section>\\n }\\n </div>\\n <div class=\\\"sky-timepicker-footer\\\">\\n <section class=\\\"sky-timepicker-column\\\">\\n <button\\n class=\\\"sky-btn sky-btn-primary\\\"\\n type=\\\"button\\\"\\n (click)=\\\"onCloseButtonClick()\\\"\\n >\\n {{ 'skyux_timepicker_close' | skyLibResources }}\\n </button>\\n </section>\\n </div>\\n </div>\\n</ng-template>\\n\", styles: [\".sky-timepicker-container:not(.sky-theme-modern *){--sky-override-timepicker-background-color: #eeeeef;--sky-override-timepicker-border-radius: 5px;--sky-override-timepicker-button-active-background-color: #e2e3e4;--sky-override-timepicker-button-background-color: #ffffff;--sky-override-timepicker-button-border-radius: 3px;--sky-override-timepicker-button-focus-box-shadow: none;--sky-override-timepicker-button-focus-outline-offset: -2px;--sky-override-timepicker-button-focus-outline: -webkit-focus-ring-color auto 5px;--sky-override-timepicker-button-hover-active-focus-border-radius: 0;--sky-override-timepicker-button-hover-active-box-shadow: none;--sky-override-timepicker-button-hover-background-color: #eeeeef;--sky-override-timepicker-button-padding-horizontal: 15px;--sky-override-timepicker-button-padding-vertical: 5px;--sky-override-timepicker-button-selected-background-color: #c1e8fb;--sky-override-timepicker-button-selected-box-shadow: inset 0 0 0 2px #00b4f1;--sky-override-timepicker-column-border: 1px solid #e2e3e4;--sky-override-timepicker-column-gap: 10px;--sky-override-timepicker-column-meride-divider: 1px solid #e2e3e4;--sky-override-timepicker-content-space: 10px 10px 0 10px;--sky-override-timepicker-font-size: 15px;--sky-override-timepicker-footer-padding-horizontal: 10px;--sky-override-timepicker-footer-padding-vertical: 10px;--sky-override-timepicker-text-color: #000}.sky-theme-modern:not(.sky-theme-brand-base) .sky-timepicker-container{--sky-override-timepicker-border: solid 1px #cdcfd2;--sky-override-timepicker-button-background-color: var(--modern-color-white);--sky-override-timepicker-button-focus-box-shadow: inset 0 0 0 var(--sky-border-width-action-focus) var(--sky-color-border-action-tertiary-focus), var(--sky-elevation-focus);--sky-override-timepicker-button-padding-vertical: var(--modern-size-5);--sky-override-timepicker-button-selected-hover-border-color: var( --modern-color-blue-50 );--sky-override-timepicker-column-border: 1px solid var(--modern-color-gray-10);--sky-override-timepicker-content-space: var(--modern-space-s) var(--modern-space-s) 0 var(--modern-space-s);--sky-override-timepicker-font-size: 16px;--sky-override-timepicker-footer-padding-horizontal: var(--modern-size-10);--sky-override-timepicker-text-color: var(--modern-color-black)}.sky-timepicker-container{position:fixed;font-size:var(--sky-override-timepicker-font-size);background-color:var(--sky-override-timepicker-background-color, var(--sky-color-background-container-menu));border-radius:var(--sky-override-timepicker-border-radius, var(--sky-border-radius-s));border:var(--sky-override-timepicker-border, none)}.sky-timepicker-container :last-child ol{display:flex;flex-direction:column;height:100%}.sky-timepicker-container :last-child ol li{border-bottom:var(--sky-override-timepicker-column-meride-divider);flex:1}.sky-timepicker-column ol{border:var(--sky-override-timepicker-column-border, var(--sky-border-width-container-base) solid var(--sky-color-border-container-base));column-gap:1px;columns:2;list-style-type:none;margin:0;padding:0}.sky-timepicker-column ol li{text-align:center;cursor:pointer;margin:0}.sky-timepicker-column ol li button{background-color:var(--sky-override-timepicker-button-background-color, var(--sky-color-background-action-tertiary-base));border-width:0;border-color:var(--sky-color-border-action-tertiary-base);color:var(--sky-override-timepicker-text-color, var(--sky-color-text-default));cursor:pointer;padding:var(--sky-override-timepicker-button-padding-vertical, var(--sky-comp-timepicker-footer-space-inset-top)) var(--sky-override-timepicker-button-padding-horizontal, var(--sky-comp-timepicker-footer-space-inset-right)) var(--sky-override-timepicker-button-padding-vertical, var(--sky-comp-timepicker-footer-space-inset-bottom)) var(--sky-override-timepicker-button-padding-horizontal, var(--sky-comp-timepicker-footer-space-inset-left));width:100%;height:100%}.sky-timepicker-column ol li button:focus-visible:not(:active){outline:var(--sky-override-timepicker-button-focus-outline);outline-offset:var(--sky-override-timepicker-button-focus-outline-offset);border-radius:var(--sky-override-timepicker-button-hover-active-focus-border-radius, var(--sky-border-radius-s));box-shadow:var(--sky-override-timepicker-button-focus-box-shadow, inset 0 0 0 var(--sky-border-width-action-focus) var(--sky-color-border-action-tertiary-focus))}.sky-timepicker-column ol li button:hover:not(.sky-btn-active){border-radius:var(--sky-override-timepicker-button-hover-active-focus-border-radius, var(--sky-border-radius-s));background-color:var(--sky-override-timepicker-button-hover-background-color, var(--sky-color-background-action-tertiary-hover));box-shadow:var(--sky-override-timepicker-button-hover-active-box-shadow, inset 0 0 0 var(--sky-border-width-action-hover) var(--sky-override-timepicker-button-selected-hover-border-color, var(--sky-color-border-action-tertiary-hover)))}.sky-timepicker-column ol li button:active{background-color:var(--sky-override-timepicker-button-active-background-color, var(--sky-color-background-action-tertiary-active));border-radius:var(--sky-override-timepicker-button-hover-active-focus-border-radius, var(--sky-border-radius-s));box-shadow:var(--sky-override-timepicker-button-hover-active-box-shadow, inset 0 0 0 var(--sky-border-width-action-active) var(--sky-color-border-action-tertiary-active))}.sky-timepicker-column ol li button.sky-btn-active{background-color:var(--sky-override-timepicker-button-selected-background-color, var(--sky-color-background-selected-soft));box-shadow:var(--sky-override-timepicker-button-selected-box-shadow, inset 0 0 0 var(--sky-border-width-selected-s) var(--sky-override-timepicker-button-selected-hover-border-color, var(--sky-color-border-selected)));border-radius:var(--sky-override-timepicker-button-border-radius, var(--sky-border-radius-s))}.sky-timepicker-column.sky-timepicker-24hour ol{columns:4}.sky-timepicker-column.sky-timepicker-24hour ol li{border-bottom-width:0}.sky-timepicker-content{display:flex;padding:var(--sky-override-timepicker-content-space, var(--sky-comp-timepicker-content-space-inset-top) var(--sky-comp-timepicker-content-space-inset-right) var(--sky-comp-timepicker-content-space-inset-bottom) var(--sky-comp-timepicker-content-space-inset-left));gap:var(--sky-override-timepicker-column-gap, var(--sky-space-gap-action_group-m))}.sky-timepicker-footer{margin:0;padding:var(--sky-override-timepicker-footer-padding-vertical, var(--sky-comp-timepicker-footer-space-inset-top)) var(--sky-override-timepicker-footer-padding-horizontal, var(--sky-comp-timepicker-footer-space-inset-right)) var(--sky-override-timepicker-footer-padding-vertical, var(--sky-comp-timepicker-footer-space-inset-bottom)) var(--sky-override-timepicker-footer-padding-horizontal, var(--sky-comp-timepicker-footer-space-inset-left))}.sky-timepicker-footer .sky-timepicker-column{width:100%}.sky-timepicker-hidden{visibility:hidden}.sky-timepicker-clock-icon-modern,.sky-theme-modern .sky-timepicker-clock-icon-default{display:none}.sky-theme-modern .sky-timepicker-clock-icon-modern{display:inline}\\n\"], dependencies: [{ kind: \"directive\", type: i4.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i4.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"component\", type: i5.λ1, selector: \"sky-icon\", inputs: [\"icon\", \"iconName\", \"iconType\", \"size\", \"fixedWidth\", \"variant\", \"iconSize\"] }, { kind: \"pipe\", type: i6.SkyLibResourcesPipe, name: \"skyLibResources\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyTimepickerComponent, decorators: [{\n type: Component,\n args: [{ selector: 'sky-timepicker', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: \"<div class=\\\"sky-timepicker\\\">\\n @if (!inputBoxHostService) {\\n <div class=\\\"sky-input-group\\\">\\n <ng-container *ngTemplateOutlet=\\\"inputTemplateRef\\\" />\\n <ng-container *ngTemplateOutlet=\\\"triggerButtonTemplateRef\\\" />\\n </div>\\n }\\n</div>\\n\\n<ng-template #inputTemplateRef>\\n <ng-content />\\n</ng-template>\\n\\n<ng-template #triggerButtonTemplateRef>\\n <div class=\\\"sky-input-group-btn\\\">\\n <button\\n #triggerButtonRef\\n aria-haspopup=\\\"dialog\\\"\\n class=\\\"sky-btn sky-btn-default sky-input-group-timepicker-btn\\\"\\n type=\\\"button\\\"\\n [attr.aria-controls]=\\\"isOpen ? timepickerId : null\\\"\\n [attr.aria-expanded]=\\\"isOpen\\\"\\n [attr.aria-label]=\\\"\\n inputBoxHostService?.labelText\\n ? ('skyux_timepicker_button_label_context'\\n | skyLibResources: inputBoxHostService?.labelText)\\n : ('skyux_timepicker_button_label' | skyLibResources)\\n \\\"\\n [attr.id]=\\\"triggerButtonId\\\"\\n [attr.title]=\\\"\\n inputBoxHostService?.labelText\\n ? ('skyux_timepicker_button_label_context'\\n | skyLibResources: inputBoxHostService?.labelText)\\n : ('skyux_timepicker_button_label' | skyLibResources)\\n \\\"\\n [disabled]=\\\"disabled\\\"\\n (click)=\\\"onTriggerButtonClick()\\\"\\n >\\n <sky-icon iconName=\\\"clock\\\" iconSize=\\\"l\\\" />\\n </button>\\n </div>\\n</ng-template>\\n\\n<ng-template #timepickerTemplateRef>\\n <div\\n #timepickerRef\\n class=\\\"sky-timepicker-container sky-shadow sky-box sky-elevation-4\\\"\\n role=\\\"dialog\\\"\\n [attr.aria-labelledby]=\\\"triggerButtonId\\\"\\n [attr.id]=\\\"timepickerId\\\"\\n [class.sky-timepicker-hidden]=\\\"!isVisible\\\"\\n >\\n <div class=\\\"sky-timepicker-content\\\">\\n <section\\n class=\\\"sky-timepicker-column sky-timepicker-column-hours\\\"\\n [ngClass]=\\\"{ 'sky-timepicker-24hour': is8601 }\\\"\\n >\\n <ol>\\n @for (hour of hours; track hour) {\\n <li>\\n <button\\n name=\\\"hour\\\"\\n type=\\\"button\\\"\\n [ngClass]=\\\"{ 'sky-btn-active': selectedHour === hour }\\\"\\n (click)=\\\"setTime($event)\\\"\\n >\\n {{ hour }}\\n </button>\\n </li>\\n }\\n </ol>\\n </section>\\n <section class=\\\"sky-timepicker-column sky-timepicker-column-minutes\\\">\\n <ol>\\n @for (minute of minutes; track minute) {\\n <li>\\n <button\\n name=\\\"minute\\\"\\n type=\\\"button\\\"\\n [ngClass]=\\\"{\\n 'sky-btn-active': highlightMinute(selectedMinute, minute)\\n }\\\"\\n (click)=\\\"setTime($event)\\\"\\n >\\n {{ '00'.substring(0, 2 - minute.toString().length) + minute }}\\n </button>\\n </li>\\n }\\n </ol>\\n </section>\\n @if (!is8601) {\\n <section class=\\\"sky-timepicker-column sky-timepicker-column-meridies\\\">\\n <ol>\\n <li>\\n <button\\n name=\\\"meridie\\\"\\n type=\\\"button\\\"\\n [ngClass]=\\\"{ 'sky-btn-active': selectedMeridies === 'AM' }\\\"\\n (click)=\\\"setTime($event)\\\"\\n >\\n AM\\n </button>\\n </li>\\n <li>\\n <button\\n name=\\\"meridie\\\"\\n type=\\\"button\\\"\\n [ngClass]=\\\"{ 'sky-btn-active': selectedMeridies === 'PM' }\\\"\\n (click)=\\\"setTime($event)\\\"\\n >\\n PM\\n </button>\\n </li>\\n </ol>\\n </section>\\n }\\n </div>\\n <div class=\\\"sky-timepicker-footer\\\">\\n <section class=\\\"sky-timepicker-column\\\">\\n <button\\n class=\\\"sky-btn sky-btn-primary\\\"\\n type=\\\"button\\\"\\n (click)=\\\"onCloseButtonClick()\\\"\\n >\\n {{ 'skyux_timepicker_close' | skyLibResources }}\\n </button>\\n </section>\\n </div>\\n </div>\\n</ng-template>\\n\", styles: [\".sky-timepicker-container:not(.sky-theme-modern *){--sky-override-timepicker-background-color: #eeeeef;--sky-override-timepicker-border-radius: 5px;--sky-override-timepicker-button-active-background-color: #e2e3e4;--sky-override-timepicker-button-background-color: #ffffff;--sky-override-timepicker-button-border-radius: 3px;--sky-override-timepicker-button-focus-box-shadow: none;--sky-override-timepicker-button-focus-outline-offset: -2px;--sky-override-timepicker-button-focus-outline: -webkit-focus-ring-color auto 5px;--sky-override-timepicker-button-hover-active-focus-border-radius: 0;--sky-override-timepicker-button-hover-active-box-shadow: none;--sky-override-timepicker-button-hover-background-color: #eeeeef;--sky-override-timepicker-button-padding-horizontal: 15px;--sky-override-timepicker-button-padding-vertical: 5px;--sky-override-timepicker-button-selected-background-color: #c1e8fb;--sky-override-timepicker-button-selected-box-shadow: inset 0 0 0 2px #00b4f1;--sky-override-timepicker-column-border: 1px solid #e2e3e4;--sky-override-timepicker-column-gap: 10px;--sky-override-timepicker-column-meride-divider: 1px solid #e2e3e4;--sky-override-timepicker-content-space: 10px 10px 0 10px;--sky-override-timepicker-font-size: 15px;--sky-override-timepicker-footer-padding-horizontal: 10px;--sky-override-timepicker-footer-padding-vertical: 10px;--sky-override-timepicker-text-color: #000}.sky-theme-modern:not(.sky-theme-brand-base) .sky-timepicker-container{--sky-override-timepicker-border: solid 1px #cdcfd2;--sky-override-timepicker-button-background-color: var(--modern-color-white);--sky-override-timepicker-button-focus-box-shadow: inset 0 0 0 var(--sky-border-width-action-focus) var(--sky-color-border-action-tertiary-focus), var(--sky-elevation-focus);--sky-override-timepicker-button-padding-vertical: var(--modern-size-5);--sky-override-timepicker-button-selected-hover-border-color: var( --modern-color-blue-50 );--sky-override-timepicker-column-border: 1px solid var(--modern-color-gray-10);--sky-override-timepicker-content-space: var(--modern-space-s) var(--modern-space-s) 0 var(--modern-space-s);--sky-override-timepicker-font-size: 16px;--sky-override-timepicker-footer-padding-horizontal: var(--modern-size-10);--sky-override-timepicker-text-color: var(--modern-color-black)}.sky-timepicker-container{position:fixed;font-size:var(--sky-override-timepicker-font-size);background-color:var(--sky-override-timepicker-background-color, var(--sky-color-background-container-menu));border-radius:var(--sky-override-timepicker-border-radius, var(--sky-border-radius-s));border:var(--sky-override-timepicker-border, none)}.sky-timepicker-container :last-child ol{display:flex;flex-direction:column;height:100%}.sky-timepicker-container :last-child ol li{border-bottom:var(--sky-override-timepicker-column-meride-divider);flex:1}.sky-timepicker-column ol{border:var(--sky-override-timepicker-column-border, var(--sky-border-width-container-base) solid var(--sky-color-border-container-base));column-gap:1px;columns:2;list-style-type:none;margin:0;padding:0}.sky-timepicker-column ol li{text-align:center;cursor:pointer;margin:0}.sky-timepicker-column ol li button{background-color:var(--sky-override-timepicker-button-background-color, var(--sky-color-background-action-tertiary-base));border-width:0;border-color:var(--sky-color-border-action-tertiary-base);color:var(--sky-override-timepicker-text-color, var(--sky-color-text-default));cursor:pointer;padding:var(--sky-override-timepicker-button-padding-vertical, var(--sky-comp-timepicker-footer-space-inset-top)) var(--sky-override-timepicker-button-padding-horizontal, var(--sky-comp-timepicker-footer-space-inset-right)) var(--sky-override-timepicker-button-padding-vertical, var(--sky-comp-timepicker-footer-space-inset-bottom)) var(--sky-override-timepicker-button-padding-horizontal, var(--sky-comp-timepicker-footer-space-inset-left));width:100%;height:100%}.sky-timepicker-column ol li button:focus-visible:not(:active){outline:var(--sky-override-timepicker-button-focus-outline);outline-offset:var(--sky-override-timepicker-button-focus-outline-offset);border-radius:var(--sky-override-timepicker-button-hover-active-focus-border-radius, var(--sky-border-radius-s));box-shadow:var(--sky-override-timepicker-button-focus-box-shadow, inset 0 0 0 var(--sky-border-width-action-focus) var(--sky-color-border-action-tertiary-focus))}.sky-timepicker-column ol li button:hover:not(.sky-btn-active){border-radius:var(--sky-override-timepicker-button-hover-active-focus-border-radius, var(--sky-border-radius-s));background-color:var(--sky-override-timepicker-button-hover-background-color, var(--sky-color-background-action-tertiary-hover));box-shadow:var(--sky-override-timepicker-button-hover-active-box-shadow, inset 0 0 0 var(--sky-border-width-action-hover) var(--sky-override-timepicker-button-selected-hover-border-color, var(--sky-color-border-action-tertiary-hover)))}.sky-timepicker-column ol li button:active{background-color:var(--sky-override-timepicker-button-active-background-color, var(--sky-color-background-action-tertiary-active));border-radius:var(--sky-override-timepicker-button-hover-active-focus-border-radius, var(--sky-border-radius-s));box-shadow:var(--sky-override-timepicker-button-hover-active-box-shadow, inset 0 0 0 var(--sky-border-width-action-active) var(--sky-color-border-action-tertiary-active))}.sky-timepicker-column ol li button.sky-btn-active{background-color:var(--sky-override-timepicker-button-selected-background-color, var(--sky-color-background-selected-soft));box-shadow:var(--sky-override-timepicker-button-selected-box-shadow, inset 0 0 0 var(--sky-border-width-selected-s) var(--sky-override-timepicker-button-selected-hover-border-color, var(--sky-color-border-selected)));border-radius:var(--sky-override-timepicker-button-border-radius, var(--sky-border-radius-s))}.sky-timepicker-column.sky-timepicker-24hour ol{columns:4}.sky-timepicker-column.sky-timepicker-24hour ol li{border-bottom-width:0}.sky-timepicker-content{display:flex;padding:var(--sky-override-timepicker-content-space, var(--sky-comp-timepicker-content-space-inset-top) var(--sky-comp-timepicker-content-space-inset-right) var(--sky-comp-timepicker-content-space-inset-bottom) var(--sky-comp-timepicker-content-space-inset-left));gap:var(--sky-override-timepicker-column-gap, var(--sky-space-gap-action_group-m))}.sky-timepicker-footer{margin:0;padding:var(--sky-override-timepicker-footer-padding-vertical, var(--sky-comp-timepicker-footer-space-inset-top)) var(--sky-override-timepicker-footer-padding-horizontal, var(--sky-comp-timepicker-footer-space-inset-right)) var(--sky-override-timepicker-footer-padding-vertical, var(--sky-comp-timepicker-footer-space-inset-bottom)) var(--sky-override-timepicker-footer-padding-horizontal, var(--sky-comp-timepicker-footer-space-inset-left))}.sky-timepicker-footer .sky-timepicker-column{width:100%}.sky-timepicker-hidden{visibility:hidden}.sky-timepicker-clock-icon-modern,.sky-theme-modern .sky-timepicker-clock-icon-default{display:none}.sky-theme-modern .sky-timepicker-clock-icon-modern{display:inline}\\n\"] }]\n }], ctorParameters: () => [{ type: i1.SkyAffixService }, { type: i0.ChangeDetectorRef }, { type: i1.SkyCoreAdapterService }, { type: i1.SkyOverlayService }, { type: i2.SkyInputBoxHostService, decorators: [{\n type: Optional\n }] }, { type: i3.SkyThemeService, decorators: [{\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [SKY_STACKING_CONTEXT]\n }] }], propDecorators: { selectedTimeChanged: [{\n type: Output\n }], timepickerRef: [{\n type: ViewChild,\n args: ['timepickerRef', { read: ElementRef }]\n }], timepickerTemplateRef: [{\n type: ViewChild,\n args: ['timepickerTemplateRef', { read: TemplateRef }]\n }], triggerButtonRef: [{\n type: ViewChild,\n args: ['triggerButtonRef', { read: ElementRef }]\n }], inputTemplateRef: [{\n type: ViewChild,\n args: ['inputTemplateRef', { read: TemplateRef, static: true }]\n }], triggerButtonTemplateRef: [{\n type: ViewChild,\n args: ['triggerButtonTemplateRef', { read: TemplateRef, static: true }]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL3RpbWVwaWNrZXIvdGltZXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL3RpbWVwaWNrZXIvdGltZXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsbUJBQW1CLEVBQ25CLFlBQVksRUFDWixNQUFNLEVBR04sUUFBUSxFQUNSLE1BQU0sRUFDTixXQUFXLEVBQ1gsU0FBUyxFQUNULGlCQUFpQixFQUNqQixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixzQkFBc0IsR0FPdkIsTUFBTSxhQUFhLENBQUM7QUFJckIsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBYyxPQUFPLEVBQWdCLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7O0FBSzNDLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztBQUVmOzs7OztHQUtHO0FBU0gsTUFBTSxPQUFPLHNCQUFzQjtJQVFqQyxJQUFXLFFBQVEsQ0FBQyxLQUFjO1FBQ2hDLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVELElBQVcsUUFBUTtRQUNqQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUVELElBQVcsWUFBWSxDQUFDLE9BQWU7UUFDckMsSUFBSSxVQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ25CLElBQUksSUFBSSxDQUFDLGdCQUFnQixLQUFLLElBQUksSUFBSSxPQUFPLEtBQUssRUFBRSxFQUFFLENBQUM7WUFDckQsVUFBVSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ25CLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsS0FBSyxJQUFJLElBQUksT0FBTyxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQ3JELFVBQVUsR0FBRyxFQUFFLENBQUM7UUFDbEIsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2hCLFVBQVUsR0FBRyxDQUFDLENBQUM7UUFDakIsQ0FBQztRQUNELE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFdkUsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUM7WUFDdkIsSUFBSSxFQUFFLElBQUk7WUFDVixNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQztTQUNsRCxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDWixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsSUFBVyxZQUFZO1FBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDakIsMEJBQTBCO1lBQzFCLE9BQU8sUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvRCxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDNUMsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFXLGdCQUFnQixDQUFDLFFBQWdCO1FBQzFDLFFBQVEsR0FBRyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDM0IsMEJBQTBCO1FBQzFCLElBQUksUUFBUSxLQUFLLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3ZDLFFBQVEsUUFBUSxFQUFFLENBQUM7Z0JBQ2pCLEtBQUssSUFBSTtvQkFDUCxJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO3lCQUN0QyxRQUFRLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQzt5QkFDckIsTUFBTSxFQUFFLENBQUM7b0JBQ1osTUFBTTtnQkFFUixLQUFLLElBQUk7b0JBQ1AsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQ3BFLE1BQU07WUFDVixDQUFDO1lBQ0QsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDbkQsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFXLGdCQUFnQjtRQUN6QixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNwQixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzdDLENBQUM7UUFDRCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRCxJQUFXLGNBQWMsQ0FBQyxNQUFjO1FBQ3RDLElBQUksQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDO1lBQ3ZCLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO1lBQzdDLE1BQU0sRUFBRSxNQUFNO1NBQ2YsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ1osSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELElBQVcsY0FBYztRQUN2QixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxJQUFXLFlBQVksQ0FBQyxPQUE0QztRQUNsRSxJQUFJLE9BQU8sT0FBTyxLQUFLLFdBQVcsRUFBRSxDQUFDO1lBQ25DLGtCQUFrQjtZQUNsQiwwQkFBMEI7WUFDMUIsSUFBSSxPQUFPLENBQUMsS0FBSyxLQUFLLGNBQWMsRUFBRSxDQUFDO2dCQUNyQyxJQUFJLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUM7Z0JBQ2xDLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdEMsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBVyxZQUFZO1FBQ3JCLE1BQU0sSUFBSSxHQUE0QjtZQUNwQyxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLEVBQUU7WUFDcEMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxFQUFFO1lBQ3hDLE9BQU8sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7WUFDNUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDM0QsT0FBTyxFQUFFLElBQUksQ0FBQyxVQUFVO1lBQ3hCLEtBQUssRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDO1lBQ3hELFlBQVksRUFDVixPQUFPLElBQUksQ0FBQyxZQUFZLEtBQUssV0FBVztnQkFDdEMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZO2dCQUNuQixDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVk7U0FDeEIsQ0FBQztRQUVGLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQTBCRCxJQUNXLGFBQWEsQ0FBQyxLQUE2QjtRQUNwRCxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1YsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7WUFFN0IsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFFekIseUVBQXlFO1lBQ3pFLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO2dCQUN2QixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBRXRCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7b0JBQ2QsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7d0JBQ3ZCLElBQUksQ0FBQyxZQUFZLENBQUMsaUNBQWlDLENBQ2pELElBQUksQ0FBQyxhQUFhLEVBQ2xCLHlCQUF5QixFQUN6QixLQUFLLENBQ04sQ0FBQztvQkFDSixDQUFDO29CQUVELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO29CQUN0QixJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUN0QyxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFXLGFBQWE7UUFDdEIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQzlCLENBQUM7SUFjRCxRQUFRLENBQXlCO0lBRWpDLHNCQUFzQixDQUF1QjtJQUU3QyxjQUFjLENBQXVCO0lBRXJDLFFBQVEsQ0FBaUM7SUFFekMscUJBQXFCLENBQTJCO0lBRWhELFVBQVUsQ0FBUztJQUVuQixlQUFlLENBQXlCO0lBRXhDLGFBQWEsQ0FBa0I7SUFDL0IsZUFBZSxDQUFvQjtJQUNuQyxZQUFZLENBQXdCO0lBQzNCLG9CQUFvQixDQUErQjtJQUM1RCxlQUFlLENBQW9CO0lBQ25DLE9BQU8sQ0FBaUM7SUFFeEMsWUFDRSxZQUE2QixFQUM3QixjQUFpQyxFQUNqQyxXQUFrQyxFQUNsQyxjQUFpQyxFQUNkLG1CQUE0QyxFQUNuRCxRQUEwQixFQUd0QyxlQUFvQztRQUpqQix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXlCO1FBN01qRTs7V0FFRztRQUVJLHdCQUFtQixHQUN4QixJQUFJLFlBQVksRUFBMkIsQ0FBQztRQTBHdkMsZUFBVSxHQUFTLElBQUksSUFBSSxFQUFFLENBQUM7UUFFOUIsVUFBSyxHQUFhLEVBQUUsQ0FBQztRQUVyQixXQUFNLEdBQUcsS0FBSyxDQUFDO1FBRWYsV0FBTSxHQUFHLEtBQUssQ0FBQztRQUVmLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFFbEIsaUJBQVksR0FBRyxRQUFRLENBQUM7UUFFeEIsWUFBTyxHQUFhLEVBQUUsQ0FBQztRQU12QixlQUFVLEdBQWdDLElBQUksQ0FBQztRQW9EdEQsMkJBQXNCLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUU3QyxtQkFBYyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFNckMsZUFBVSxHQUFHLEtBQUssQ0FBQztRQU9WLHlCQUFvQixHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBZTFELElBQUksQ0FBQyxhQUFhLEdBQUcsWUFBWSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxlQUFlLEdBQUcsY0FBYyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxlQUFlLEdBQUcsY0FBYyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxPQUFPLEdBQUcsZUFBZSxFQUFFLE1BQU0sQ0FBQztRQUV2QyxNQUFNLFFBQVEsR0FBRyxNQUFNLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsWUFBWSxHQUFHLGtCQUFrQixRQUFRLEVBQUUsQ0FBQztRQUNqRCxJQUFJLENBQUMsZUFBZSxHQUFHLHlCQUF5QixRQUFRLEVBQUUsQ0FBQztRQUUzRCxtQ0FBbUM7UUFDbkMsUUFBUSxFQUFFLGNBQWM7YUFDckIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7YUFDcEMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdEMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sUUFBUTtRQUNiLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBRXpCLElBQUksSUFBSSxDQUFDLG1CQUFtQixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3RELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUM7Z0JBQ2hDLGFBQWEsRUFBRSxJQUFJLENBQUMsZ0JBQWdCO2dCQUNwQyxlQUFlLEVBQUUsSUFBSSxDQUFDLHdCQUF3QjthQUMvQyxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQywyQkFBMkIsRUFBRSxDQUFDO1FBQ25DLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVNLFNBQVMsQ0FBQyxNQUFtQztRQUNsRCxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDWCxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDWCxJQUFJLGdCQUFnQixHQUFHLENBQUMsQ0FBQztRQUN6QixJQUFJLFlBQVksR0FBRyxRQUFRLENBQUM7UUFDNUIsSUFBSSxNQUFNLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDcEIsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNQLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDUCxnQkFBZ0IsR0FBRyxDQUFDLENBQUM7WUFDckIsWUFBWSxHQUFHLFFBQVEsQ0FBQztZQUN4QixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUN0QixDQUFDO1FBQ0QsSUFBSSxNQUFNLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDcEIsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNQLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDTixnQkFBZ0IsR0FBRyxFQUFFLENBQUM7WUFDdEIsWUFBWSxHQUFHLE9BQU8sQ0FBQztZQUN2QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNyQixDQUFDO1FBRUQsTUFBTSxJQUFJLEdBS047WUFDRix5REFBeUQ7WUFDekQsS0FBSyxFQUFFLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDckMsSUFBSSxNQUFNLEtBQUssSUFBSSxFQUFFLENBQUM7b0JBQ3BCLE9BQU8sRUFBRSxDQUFDLENBQUM7Z0JBQ2IsQ0FBQztnQkFDRCwwQkFBMEI7Z0JBQzFCLElBQUksTUFBTSxLQUFLLElBQUksRUFBRSxDQUFDO29CQUNwQixPQUFPLENBQUMsQ0FBQztnQkFDWCxDQUFDO2dCQUNELDBCQUEwQjtnQkFDMUIsa0JBQWtCO2dCQUNsQixPQUFPLENBQUMsQ0FBQztZQUNYLENBQUMsQ0FBQztZQUNGLDJEQUEyRDtZQUMzRCxPQUFPLEVBQUUsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7Z0JBQzVDLE9BQU8sQ0FBQyxHQUFHLGdCQUFnQixDQUFDO1lBQzlCLENBQUMsQ0FBQztZQUNGLFlBQVksRUFBRSxZQUFZO1lBQzFCLGdCQUFnQixFQUFFLGdCQUFnQjtTQUNuQyxDQUFDO1FBRUYsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUM1QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7UUFDdEMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUNoRCxDQUFDO0lBRU0sa0JBQWtCO1FBQ3ZCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRU0sT0FBTyxDQUFDLEtBQVU7UUFDdkIsMEJBQTBCO1FBQzFCLElBQUksT0FBTyxLQUFLLEtBQUssV0FBVyxFQUFFLENBQUM7WUFDakMsMEJBQTBCO1lBQzFCLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxPQUFPLEVBQUUsQ0FBQztnQkFDM0IsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO2dCQUN4QixJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLE1BQU0sRUFBRSxDQUFDO29CQUNqQyxJQUFJLENBQUMsWUFBWSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDMUQsQ0FBQztnQkFDRCxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO29CQUNuQyxJQUFJLENBQUMsY0FBYyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDNUQsQ0FBQztnQkFDRCxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLFNBQVMsRUFBRSxDQUFDO29CQUNwQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUM7Z0JBQ2pELENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFTSxvQkFBb0I7UUFDekIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFUyxlQUFlLENBQUMsY0FBc0IsRUFBRSxNQUFjO1FBQzlELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ25DLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDLEtBQUssTUFBTSxHQUFHLEtBQUssQ0FBQztJQUMvRCxDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLDJCQUEyQixFQUFFLENBQUM7UUFDbkMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM3QyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUN0QixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUM7UUFFcEMsSUFBSSxDQUFDLDJCQUEyQixFQUFFLENBQUM7UUFDbkMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUV0QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNuQixJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ2hELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUVyRSw4REFBOEQ7WUFDOUQsT0FBTyxDQUFDLGVBQWU7aUJBQ3BCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUM7aUJBQzVDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO2dCQUNwQixJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLEtBQUssSUFBSSxDQUFDO2dCQUMzQyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3RDLENBQUMsQ0FBQyxDQUFDO1lBRUwsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxFQUFFO2dCQUNuRCxjQUFjLEVBQUUsc0JBQXNCLENBQUMsUUFBUTtnQkFDL0MsYUFBYSxFQUFFLElBQUk7Z0JBQ25CLG1CQUFtQixFQUFFLE9BQU87Z0JBQzVCLFFBQVEsRUFBRSxJQUFJO2dCQUNkLFNBQVMsRUFBRSxPQUFPO2FBQ25CLENBQUMsQ0FBQztZQUVILElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO1FBQzFCLENBQUM7SUFDSCxDQUFDO0lBRUQsZUFBZTtRQUNiLHdCQUF3QjtRQUN4QixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDO1FBQzVCLENBQUM7SUFDSCxDQUFDO0lBRUQsY0FBYztRQUNaLElBQUksSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7WUFDL0IsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUM7Z0JBQzFDLFdBQVcsRUFBRSxLQUFLO2dCQUNsQixtQkFBbUIsRUFBRSxLQUFLO2dCQUMxQixtQkFBbUIsRUFBRSxJQUFJLENBQUMsb0JBQW9CO2FBQy9DLENBQUMsQ0FBQztZQUVILElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNqQixJQUFJLENBQUMsT0FBTztxQkFDVCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO3FCQUM1QyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtvQkFDcEIsT0FBTyxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQzdELENBQUMsQ0FBQyxDQUFDO1lBQ1AsQ0FBQztZQUVELE9BQU8sQ0FBQyxhQUFhO2lCQUNsQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO2lCQUM1QyxTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUNkLDBCQUEwQjtnQkFDMUIsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQ2hCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDdEIsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1lBRUwsT0FBTyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQztZQUVuRCxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztRQUMxQixDQUFDO0lBQ0gsQ0FBQztJQUVELGVBQWU7UUFDYix3QkFBd0I7UUFDeEIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzFDLElBQUksQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDO1FBQzVCLENBQUM7SUFDSCxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLGFBQWEsQ0FBQztRQUVoRSxJQUFJLHFCQUFxQixFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLHFCQUFxQixHQUFHLFNBQVMsQ0FDcEMscUJBQXFCLEVBQ3JCLE9BQU8sQ0FDUjtpQkFDRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztpQkFDcEMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ25CLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxHQUFHLEVBQUUsV0FBVyxFQUFFLENBQUM7Z0JBQ3JDLDBCQUEwQjtnQkFDMUIsSUFBSSxHQUFHLEtBQUssUUFBUSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDcEMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO29CQUNwQixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7b0JBQ3hCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDekIsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztJQUNILENBQUM7SUFFRCwyQkFBMkI7UUFDekIsMEJBQTBCO1FBQzFCLElBQUksSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7WUFDaEMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksRUFBRSxDQUFDO1lBQ25DLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUN2QyxJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUNwRCxDQUFDO1FBQ0QsMEJBQTBCO1FBQzFCLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxXQUFXLEVBQUUsQ0FBQztJQUM1QyxDQUFDOzhHQXhjVSxzQkFBc0IsNlBBaU52QixvQkFBb0I7a0dBak5uQixzQkFBc0IsK05Bd0lHLFVBQVUseUhBZ0NGLFdBQVcsK0dBR2hCLFVBQVUsK0dBR1YsV0FBVyw2SUFHSCxXQUFXLDJDQ3RPNUQsZ2hJQWtJQTs7MkZEN0VhLHNCQUFzQjtrQkFSbEMsU0FBUzsrQkFDRSxnQkFBZ0IsaUJBR1gsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxLQUFLOzswQkFnTmQsUUFBUTs7MEJBQ1IsUUFBUTs7MEJBQ1IsUUFBUTs7MEJBQ1IsTUFBTTsyQkFBQyxvQkFBb0I7eUNBNU12QixtQkFBbUI7c0JBRHpCLE1BQU07Z0JBcUlJLGFBQWE7c0JBRHZCLFNBQVM7dUJBQUMsZUFBZSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFpQ3pDLHFCQUFxQjtzQkFEM0IsU0FBUzt1QkFBQyx1QkFBdUIsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBSWxELGdCQUFnQjtzQkFEdEIsU0FBUzt1QkFBQyxrQkFBa0IsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBSTVDLGdCQUFnQjtzQkFEdEIsU0FBUzt1QkFBQyxrQkFBa0IsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFJM0Qsd0JBQXdCO3NCQUQ5QixTQUFTO3VCQUFDLDBCQUEwQixFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEVudmlyb25tZW50SW5qZWN0b3IsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5qZWN0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIGluamVjdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBTS1lfU1RBQ0tJTkdfQ09OVEVYVCxcbiAgU2t5QWZmaXhBdXRvRml0Q29udGV4dCxcbiAgU2t5QWZmaXhTZXJ2aWNlLFxuICBTa3lBZmZpeGVyLFxuICBTa3lDb3JlQWRhcHRlclNlcnZpY2UsXG4gIFNreU92ZXJsYXlJbnN0YW5jZSxcbiAgU2t5T3ZlcmxheVNlcnZpY2UsXG4gIFNreVN0YWNraW5nQ29udGV4dCxcbn0gZnJvbSAnQHNreXV4L2NvcmUnO1xuaW1wb3J0IHsgU2t5SW5wdXRCb3hIb3N0U2VydmljZSB9IGZyb20gJ0Bza3l1eC9mb3Jtcyc7XG5pbXBvcnQgeyBTa3lUaGVtZVNlcnZpY2UgfSBmcm9tICdAc2t5dXgvdGhlbWUnO1xuXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24sIGZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBTa3lUaW1lcGlja2VyVGltZUZvcm1hdFR5cGUgfSBmcm9tICcuL3RpbWVwaWNrZXItdGltZS1mb3JtYXQtdHlwZSc7XG5pbXBvcnQgeyBTa3lUaW1lcGlja2VyVGltZU91dHB1dCB9IGZyb20gJy4vdGltZXBpY2tlci10aW1lLW91dHB1dCc7XG5cbmxldCBuZXh0SWQgPSAwO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBTS1kgVVgtdGhlbWVkIHJlcGxhY2VtZW50IGZvciB0aGUgSFRNTCBgaW5wdXRgIGVsZW1lbnQgd2l0aCBgdHlwZT1cInRpbWVcImAuXG4gKiBUaGUgdmFsdWUgdGhhdCB1c2VycyBzZWxlY3QgaXMgZHJpdmVuIHRocm91Z2ggdGhlIGBuZ01vZGVsYCBhdHRyaWJ1dGVcbiAqIHNwZWNpZmllZCBvbiB0aGUgYGlucHV0YCBlbGVtZW50LiBZb3UgbXVzdCB3cmFwIHRoaXMgY29tcG9uZW50IGFyb3VuZCBhbiBgaW5wdXRgXG4gKiB3aXRoIHRoZSBgc2t5VGltZXBpY2tlcklucHV0YCBkaXJlY3RpdmUuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS10aW1lcGlja2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RpbWVwaWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90aW1lcGlja2VyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiBmYWxzZSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5VGltZXBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhlIHZhbHVlIGluIHRoZSB0aW1lcGlja2VyIGlucHV0IGNoYW5nZXMuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIHNlbGVjdGVkVGltZUNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxTa3lUaW1lcGlja2VyVGltZU91dHB1dD4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8U2t5VGltZXBpY2tlclRpbWVPdXRwdXQ+KCk7XG5cbiAgcHVibGljIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuI19kaXNhYmxlZCA9IHZhbHVlO1xuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy4jX2Rpc2FibGVkO1xuICB9XG5cbiAgcHVibGljIHNldCBzZWxlY3RlZEhvdXIoc2V0SG91cjogbnVtYmVyKSB7XG4gICAgbGV0IGhvdXJPZmZzZXQgPSAwO1xuICAgIGlmICh0aGlzLnNlbGVjdGVkTWVyaWRpZXMgPT09ICdBTScgJiYgc2V0SG91ciA9PT0gMTIpIHtcbiAgICAgIGhvdXJPZmZzZXQgPSAtMTI7XG4gICAgfVxuICAgIGlmICh0aGlzLnNlbGVjdGVkTWVyaWRpZXMgPT09ICdQTScgJiYgc2V0SG91ciAhPT0gMTIpIHtcbiAgICAgIGhvdXJPZmZzZXQgPSAxMjtcbiAgICB9XG4gICAgaWYgKHRoaXMuaXM4NjAxKSB7XG4gICAgICBob3VyT2Zmc2V0ID0gMDtcbiAgICB9XG4gICAgY29uc3QgaG91ciA9IG1vbWVudCh7IGhvdXI6IHNldEhvdXIgfSkuYWRkKGhvdXJPZmZzZXQsICdob3VycycpLmhvdXIoKTtcblxuICAgIHRoaXMuYWN0aXZlVGltZSA9IG1vbWVudCh7XG4gICAgICBob3VyOiBob3VyLFxuICAgICAgbWludXRlOiBtb21lbnQodGhpcy5hY3RpdmVUaW1lKS5nZXQoJ21pbnV0ZScpICsgMCxcbiAgICB9KS50b0RhdGUoKTtcbiAgICB0aGlzLnNlbGVjdGVkVGltZUNoYW5nZWQuZW1pdCh0aGlzLnNlbGVjdGVkVGltZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNlbGVjdGVkSG91cigpOiBudW1iZXIge1xuICAgIGlmICghdGhpcy5pczg2MDEpIHtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICByZXR1cm4gcGFyc2VJbnQobW9tZW50KHRoaXMuYWN0aXZlVGltZSkuZm9ybWF0KCdoJyksIDApIHx8IDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBtb21lbnQodGhpcy5hY3RpdmVUaW1lKS5ob3VyKCkgKyAwO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXQgc2VsZWN0ZWRNZXJpZGllcyhtZXJpZGllczogc3RyaW5nKSB7XG4gICAgbWVyaWRpZXMgPSBtZXJpZGllcy50cmltKCk7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAobWVyaWRpZXMgIT09IHRoaXMuc2VsZWN0ZWRNZXJpZGllcykge1xuICAgICAgc3dpdGNoIChtZXJpZGllcykge1xuICAgICAgICBjYXNlICdBTSc6XG4gICAgICAgICAgdGhpcy5hY3RpdmVUaW1lID0gbW9tZW50KHRoaXMuYWN0aXZlVGltZSlcbiAgICAgICAgICAgIC5zdWJ0cmFjdCgxMiwgJ2hvdXJzJylcbiAgICAgICAgICAgIC50b0RhdGUoKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdQTSc6XG4gICAgICAgICAgdGhpcy5hY3RpdmVUaW1lID0gbW9tZW50KHRoaXMuYWN0aXZlVGltZSkuYWRkKDEyLCAnaG91cnMnKS50b0RhdGUoKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIHRoaXMuc2VsZWN0ZWRUaW1lQ2hhbmdlZC5lbWl0KHRoaXMuc2VsZWN0ZWRUaW1lKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNlbGVjdGVkTWVyaWRpZXMoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5hY3RpdmVUaW1lKSB7XG4gICAgICByZXR1cm4gbW9tZW50KHRoaXMuYWN0aXZlVGltZSkuZm9ybWF0KCdBJyk7XG4gICAgfVxuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIHB1YmxpYyBzZXQgc2VsZWN0ZWRNaW51dGUobWludXRlOiBudW1iZXIpIHtcbiAgICB0aGlzLmFjdGl2ZVRpbWUgPSBtb21lbnQoe1xuICAgICAgaG91cjogbW9tZW50KHRoaXMuYWN0aXZlVGltZSkuZ2V0KCdob3VyJykgKyAwLFxuICAgICAgbWludXRlOiBtaW51dGUsXG4gICAgfSkudG9EYXRlKCk7XG4gICAgdGhpcy5zZWxlY3RlZFRpbWVDaGFuZ2VkLmVtaXQodGhpcy5zZWxlY3RlZFRpbWUpO1xuICB9XG5cbiAgcHVibGljIGdldCBzZWxlY3RlZE1pbnV0ZSgpOiBudW1iZXIge1xuICAgIHJldHVybiBtb21lbnQodGhpcy5hY3RpdmVUaW1lKS5taW51dGUoKSArIDA7XG4gIH1cblxuICBwdWJsaWMgc2V0IHNlbGVjdGVkVGltZShuZXdUaW1lOiBTa3lUaW1lcGlja2VyVGltZU91dHB1dCB8IHVuZGVmaW5lZCkge1xuICAgIGlmICh0eXBlb2YgbmV3VGltZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIC8qIHNhbml0eSBjaGVjayAqL1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgIGlmIChuZXdUaW1lLmxvY2FsICE9PSAnSW52YWxpZCBkYXRlJykge1xuICAgICAgICB0aGlzLmFjdGl2ZVRpbWUgPSBuZXdUaW1lLmlzbzg2MDE7XG4gICAgICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2VsZWN0ZWRUaW1lKCk6IFNreVRpbWVwaWNrZXJUaW1lT3V0cHV0IHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCB0aW1lOiBTa3lUaW1lcGlja2VyVGltZU91dHB1dCA9IHtcbiAgICAgIGhvdXI6IG1vbWVudCh0aGlzLmFjdGl2ZVRpbWUpLmhvdXIoKSxcbiAgICAgIG1pbnV0ZTogbW9tZW50KHRoaXMuYWN0aXZlVGltZSkubWludXRlKCksXG4gICAgICBtZXJpZGllOiBtb21lbnQodGhpcy5hY3RpdmVUaW1lKS5mb3JtYXQoJ0EnKSxcbiAgICAgIHRpbWV6b25lOiBwYXJzZUludChtb21lbnQodGhpcy5hY3RpdmVUaW1lKS5mb3JtYXQoJ1onKSwgMTApLFxuICAgICAgaXNvODYwMTogdGhpcy5hY3RpdmVUaW1lLFxuICAgICAgbG9jYWw6IG1vbWVudCh0aGlzLmFjdGl2ZVRpbWUpLmZvcm1hdCh0aGlzLmxvY2FsZUZvcm1hdCksXG4gICAgICBjdXN0b21Gb3JtYXQ6XG4gICAgICAgIHR5cGVvZiB0aGlzLnJldHVybkZvcm1hdCAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAgICA/IHRoaXMucmV0dXJuRm9ybWF0XG4gICAgICAgICAgOiB0aGlzLmxvY2FsZUZvcm1hdCxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHRpbWU7XG4gIH1cblxuICBwdWJsaWMgYWN0aXZlVGltZTogRGF0ZSA9IG5ldyBEYXRlKCk7XG5cbiAgcHVibGljIGhvdXJzOiBudW1iZXJbXSA9IFtdO1xuXG4gIHB1YmxpYyBpczg2MDEgPSBmYWxzZTtcblxuICBwdWJsaWMgaXNPcGVuID0gZmFsc2U7XG5cbiAgcHVibGljIGlzVmlzaWJsZSA9IGZhbHNlO1xuXG4gIHB1YmxpYyBsb2NhbGVGb3JtYXQgPSAnaDptbSBBJztcblxuICBwdWJsaWMgbWludXRlczogbnVtYmVyW10gPSBbXTtcblxuICBwdWJsaWMgbWludXRlTXVsdGlwbGllcjogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyByZXR1cm5Gb3JtYXQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICBwdWJsaWMgdGltZUZvcm1hdDogU2t5VGltZXBpY2tlclRpbWVGb3JtYXRUeXBlID0gJ2hoJztcblxuICBwdWJsaWMgdGltZXBpY2tlcklkOiBzdHJpbmc7XG5cbiAgcHVibGljIHRyaWdnZXJCdXR0b25JZDogc3RyaW5nO1xuXG4gIEBWaWV3Q2hpbGQoJ3RpbWVwaWNrZXJSZWYnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgcHVibGljIHNldCB0aW1lcGlja2VyUmVmKHZhbHVlOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLiNfdGltZXBpY2tlclJlZiA9IHZhbHVlO1xuXG4gICAgICB0aGlzLiNhZGRLZXl1cExpc3RlbmVyKCk7XG5cbiAgICAgIC8vIFdhaXQgZm9yIHRoZSB0aW1lcGlja2VyIGNvbXBvbmVudCB0byByZW5kZXIgYmVmb3JlIGdhdWdpbmcgZGltZW5zaW9ucy5cbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLiNkZXN0cm95QWZmaXhlcigpO1xuICAgICAgICB0aGlzLiNjcmVhdGVBZmZpeGVyKCk7XG5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMudGltZXBpY2tlclJlZikge1xuICAgICAgICAgICAgdGhpcy4jY29yZUFkYXB0ZXIuZ2V0Rm9jdXNhYmxlQ2hpbGRyZW5BbmRBcHBseUZvY3VzKFxuICAgICAgICAgICAgICB0aGlzLnRpbWVwaWNrZXJSZWYsXG4gICAgICAgICAgICAgICcuc2t5LXRpbWVwaWNrZXItY29udGVudCcsXG4gICAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLmlzVmlzaWJsZSA9IHRydWU7XG4gICAgICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCB0aW1lcGlja2VyUmVmKCk6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLiNfdGltZXBpY2tlclJlZjtcbiAgfVxuXG4gIEBWaWV3Q2hpbGQoJ3RpbWVwaWNrZXJUZW1wbGF0ZVJlZicsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgcHVibGljIHRpbWVwaWNrZXJUZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8dW5rbm93bj4gfCB1bmRlZmluZWQ7XG5cbiAgQFZpZXdDaGlsZCgndHJpZ2dlckJ1dHRvblJlZicsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICBwdWJsaWMgdHJpZ2dlckJ1dHRvblJlZjogRWxlbWVudFJlZiB8IHVuZGVmaW5lZDtcblxuICBAVmlld0NoaWxkKCdpbnB1dFRlbXBsYXRlUmVmJywgeyByZWFkOiBUZW1wbGF0ZVJlZiwgc3RhdGljOiB0cnVlIH0pXG4gIHB1YmxpYyBpbnB1dFRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjx1bmtub3duPiB8IHVuZGVmaW5lZDtcblxuICBAVmlld0NoaWxkKCd0cmlnZ2VyQnV0dG9uVGVtcGxhdGVSZWYnLCB7IHJlYWQ6IFRlbXBsYXRlUmVmLCBzdGF0aWM6IHRydWUgfSlcbiAgcHVibGljIHRyaWdnZXJCdXR0b25UZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8dW5rbm93bj4gfCB1bmRlZmluZWQ7XG5cbiAgI2FmZml4ZXI6IFNreUFmZml4ZXIgfCB1bmRlZmluZWQ7XG5cbiAgI3RpbWVwaWNrZXJVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgI25nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICNvdmVybGF5OiBTa3lPdmVybGF5SW5zdGFuY2UgfCB1bmRlZmluZWQ7XG5cbiAgI292ZXJsYXlLZXl1cExpc3RlbmVyOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQ7XG5cbiAgI19kaXNhYmxlZCA9IGZhbHNlO1xuXG4gICNfdGltZXBpY2tlclJlZjogRWxlbWVudFJlZiB8IHVuZGVmaW5lZDtcblxuICAjYWZmaXhTZXJ2aWNlOiBTa3lBZmZpeFNlcnZpY2U7XG4gICNjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWY7XG4gICNjb3JlQWRhcHRlcjogU2t5Q29yZUFkYXB0ZXJTZXJ2aWNlO1xuICByZWFkb25seSAjZW52aXJvbm1lbnRJbmplY3RvciA9IGluamVjdChFbnZpcm9ubWVudEluamVjdG9yKTtcbiAgI292ZXJsYXlTZXJ2aWNlOiBTa3lPdmVybGF5U2VydmljZTtcbiAgI3pJbmRleDogT2JzZXJ2YWJsZTxudW1iZXI+IHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGFmZml4U2VydmljZTogU2t5QWZmaXhTZXJ2aWNlLFxuICAgIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBjb3JlQWRhcHRlcjogU2t5Q29yZUFkYXB0ZXJTZXJ2aWNlLFxuICAgIG92ZXJsYXlTZXJ2aWNlOiBTa3lPdmVybGF5U2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBwdWJsaWMgaW5wdXRCb3hIb3N0U2VydmljZT86IFNreUlucHV0Qm94SG9zdFNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgdGhlbWVTdmM/OiBTa3lUaGVtZVNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKClcbiAgICBASW5qZWN0KFNLWV9TVEFDS0lOR19DT05URVhUKVxuICAgIHN0YWNraW5nQ29udGV4dD86IFNreVN0YWNraW5nQ29udGV4dCxcbiAgKSB7XG4gICAgdGhpcy4jYWZmaXhTZXJ2aWNlID0gYWZmaXhTZXJ2aWNlO1xuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yID0gY2hhbmdlRGV0ZWN0b3I7XG4gICAgdGhpcy4jY29yZUFkYXB0ZXIgPSBjb3JlQWRhcHRlcjtcbiAgICB0aGlzLiNvdmVybGF5U2VydmljZSA9IG92ZXJsYXlTZXJ2aWNlO1xuICAgIHRoaXMuI3pJbmRleCA9IHN0YWNraW5nQ29udGV4dD8uekluZGV4O1xuXG4gICAgY29uc3QgdW5pcXVlSWQgPSBuZXh0SWQrKztcbiAgICB0aGlzLnRpbWVwaWNrZXJJZCA9IGBza3ktdGltZXBpY2tlci0ke3VuaXF1ZUlkfWA7XG4gICAgdGhpcy50cmlnZ2VyQnV0dG9uSWQgPSBgc2t5LXRpbWVwaWNrZXItYnV0dG9uLSR7dW5pcXVlSWR9YDtcblxuICAgIC8vIFVwZGF0ZSBpY29ucyB3aGVuIHRoZW1lIGNoYW5nZXMuXG4gICAgdGhlbWVTdmM/LnNldHRpbmdzQ2hhbmdlXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNldEZvcm1hdCh0aGlzLnRpbWVGb3JtYXQpO1xuICAgIHRoaXMuI2FkZEtleXVwTGlzdGVuZXIoKTtcblxuICAgIGlmICh0aGlzLmlucHV0Qm94SG9zdFNlcnZpY2UgJiYgdGhpcy5pbnB1dFRlbXBsYXRlUmVmKSB7XG4gICAgICB0aGlzLmlucHV0Qm94SG9zdFNlcnZpY2UucG9wdWxhdGUoe1xuICAgICAgICBpbnB1dFRlbXBsYXRlOiB0aGlzLmlucHV0VGVtcGxhdGVSZWYsXG4gICAgICAgIGJ1dHRvbnNUZW1wbGF0ZTogdGhpcy50cmlnZ2VyQnV0dG9uVGVtcGxhdGVSZWYsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMuI3JlbW92ZVBpY2tlckV2ZW50TGlzdGVuZXJzKCk7XG4gICAgdGhpcy4jZGVzdHJveUFmZml4ZXIoKTtcbiAgICB0aGlzLiNkZXN0cm95T3ZlcmxheSgpO1xuICB9XG5cbiAgcHVibGljIHNldEZvcm1hdChmb3JtYXQ6IFNreVRpbWVwaWNrZXJUaW1lRm9ybWF0VHlwZSk6IHZvaWQge1xuICAgIGxldCBoID0gMTI7XG4gICAgbGV0IG0gPSAxMjtcbiAgICBsZXQgbWludXRlTXVsdGlwbGllciA9IDU7XG4gICAgbGV0IGxvY2FsZUZvcm1hdCA9ICdoOm1tIEEnO1xuICAgIGlmIChmb3JtYXQgPT09ICdoaCcpIHtcbiAgICAgIGggPSAxMjtcbiAgICAgIG0gPSAxMjtcbiAgICAgIG1pbnV0ZU11bHRpcGxpZXIgPSA1O1xuICAgICAgbG9jYWxlRm9ybWF0ID0gJ2g6bW0gQSc7XG4gICAgICB0aGlzLmlzODYwMSA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAoZm9ybWF0ID09PSAnSEgnKSB7XG4gICAgICBoID0gMjQ7XG4gICAgICBtID0gNDtcbiAgICAgIG1pbnV0ZU11bHRpcGxpZXIgPSAxNTtcbiAgICAgIGxvY2FsZUZvcm1hdCA9ICdISDptbSc7XG4gICAgICB0aGlzLmlzODYwMSA9IHRydWU7XG4gICAgfVxuXG4gICAgY29uc3QgZGF0YToge1xuICAgICAgaG91cnM6IG51bWJlcltdO1xuICAgICAgbWludXRlczogbnVtYmVyW107XG4gICAgICBsb2NhbGVGb3JtYXQ6IHN0cmluZztcbiAgICAgIG1pbnV0ZU11bHRpcGxpZXI6IG51bWJlcjtcbiAgICB9ID0ge1xuICAgICAgLy8gQ3JlYXRlIGEgc3BhcnNlIGFycmF5IHdpdGggYSBsZW5ndGggZXF1YWwgdG8gdGhlIGhvdXIuXG4gICAgICBob3VyczogQXJyYXkoLi4uQXJyYXkoaCkpLm1hcCgoXywgaSkgPT4ge1xuICAgICAgICBpZiAoZm9ybWF0ID09PSAnaGgnKSB7XG4gICAgICAgICAgcmV0dXJuICsraTtcbiAgICAgICAgfVxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICBpZiAoZm9ybWF0ID09PSAnSEgnKSB7XG4gICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgIH1cbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgLyogc2FuaXR5IGNoZWNrICovXG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfSksXG4gICAgICAvLyBDcmVhdGUgYSBzcGFyc2UgYXJyYXkgd2l0aCBhIGxlbmd0aCBlcXVhbCB0byB0aGUgbWludXRlLlxuICAgICAgbWludXRlczogQXJyYXkoLi4uQXJyYXkobSkpLm1hcChmdW5jdGlvbiAoXywgaSkge1xuICAgICAgICByZXR1cm4gaSAqIG1pbnV0ZU11bHRpcGxpZXI7XG4gICAgICB9KSxcbiAgICAgIGxvY2FsZUZvcm1hdDogbG9jYWxlRm9ybWF0LFxuICAgICAgbWludXRlTXVsdGlwbGllcjogbWludXRlTXVsdGlwbGllcixcbiAgICB9O1xuXG4gICAgdGhpcy5ob3VycyA9IGRhdGEuaG91cnM7XG4gICAgdGhpcy5taW51dGVzID0gZGF0YS5taW51dGVzO1xuICAgIHRoaXMubG9jYWxlRm9ybWF0ID0gZGF0YS5sb2NhbGVGb3JtYXQ7XG4gICAgdGhpcy5taW51dGVNdWx0aXBsaWVyID0gZGF0YS5taW51dGVNdWx0aXBsaWVyO1xuICB9XG5cbiAgcHVibGljIG9uQ2xvc2VCdXR0b25DbGljaygpOiB2b2lkIHtcbiAgICB0aGlzLiNjbG9zZVBpY2tlcigpO1xuICB9XG5cbiAgcHVibGljIHNldFRpbWUoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHR5cGVvZiBldmVudCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ2NsaWNrJykge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgaWYgKGV2ZW50LnRhcmdldC5uYW1lID09PSAnaG91cicpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkSG91ciA9IHBhcnNlSW50KGV2ZW50LnRhcmdldC5pbm5lckhUTUwsIDApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChldmVudC50YXJnZXQubmFtZSA9PT0gJ21pbnV0ZScpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkTWludXRlID0gcGFyc2VJbnQoZXZlbnQudGFyZ2V0LmlubmVySFRNTCwgMCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV2ZW50LnRhcmdldC5uYW1lID09PSAnbWVyaWRpZScpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkTWVyaWRpZXMgPSBldmVudC50YXJnZXQuaW5uZXJIVE1MO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uVHJpZ2dlckJ1dHRvbkNsaWNrKCk6IHZvaWQge1xuICAgIHRoaXMuI29wZW5QaWNrZXIoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoaWdobGlnaHRNaW51dGUoc2VsZWN0ZWRNaW51dGU6IG51bWJlciwgbWludXRlOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBjb25zdCByYWRpeCA9IHRoaXMuaXM4NjAxID8gMTUgOiA1O1xuICAgIHJldHVybiBNYXRoLmZsb29yKHNlbGVjdGVkTWludXRlIC8gcmFkaXgpID09PSBtaW51dGUgLyByYWRpeDtcbiAgfVxuXG4gICNjbG9zZVBpY2tlcigpOiB2b2lkIHtcbiAgICB0aGlzLiNkZXN0cm95QWZmaXhlcigpO1xuICAgIHRoaXMuI2Rlc3Ryb3lPdmVybGF5KCk7XG4gICAgdGhpcy4jcmVtb3ZlUGlja2VyRXZlbnRMaXN0ZW5lcnMoKTtcbiAgICB0aGlzLnRyaWdnZXJCdXR0b25SZWY/Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB0aGlzLmlzT3BlbiA9IGZhbHNlO1xuICB9XG5cbiAgI29wZW5QaWNrZXIoKTogdm9pZCB7XG4gICAgdGhpcy5pc1Zpc2libGUgPSBmYWxzZTtcbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcblxuICAgIHRoaXMuI3JlbW92ZVBpY2tlckV2ZW50TGlzdGVuZXJzKCk7XG4gICAgdGhpcy4jZGVzdHJveU92ZXJsYXkoKTtcbiAgICB0aGlzLiNjcmVhdGVPdmVybGF5KCk7XG5cbiAgICB0aGlzLmlzT3BlbiA9IHRydWU7XG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICAjY3JlYXRlQWZmaXhlcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50aW1lcGlja2VyUmVmICYmIHRoaXMudHJpZ2dlckJ1dHRvblJlZikge1xuICAgICAgY29uc3QgYWZmaXhlciA9IHRoaXMuI2FmZml4U2VydmljZS5jcmVhdGVBZmZpeGVyKHRoaXMudGltZXBpY2tlclJlZik7XG5cbiAgICAgIC8vIEhpZGUgdGltZXBpY2tlciB3aGVuIHRyaWdnZXIgYnV0dG9uIGlzIHNjcm9sbGVkIG9mZiBzY3JlZW4uXG4gICAgICBhZmZpeGVyLnBsYWNlbWVudENoYW5nZVxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jdGltZXBpY2tlclVuc3Vic2NyaWJlKSlcbiAgICAgICAgLnN1YnNjcmliZSgoY2hhbmdlKSA9PiB7XG4gICAgICAgICAgdGhpcy5pc1Zpc2libGUgPSBjaGFuZ2UucGxhY2VtZW50ICE9PSBudWxsO1xuICAgICAgICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KTtcblxuICAgICAgYWZmaXhlci5hZmZpeFRvKHRoaXMudHJpZ2dlckJ1dHRvblJlZi5uYXRpdmVFbGVtZW50LCB7XG4gICAgICAgIGF1dG9GaXRDb250ZXh0OiBTa3lBZmZpeEF1dG9GaXRDb250ZXh0LlZpZXdwb3J0LFxuICAgICAgICBlbmFibGVBdXRvRml0OiB0cnVlLFxuICAgICAgICBob3Jpem9udGFsQWxpZ25tZW50OiAncmlnaHQnLFxuICAgICAgICBpc1N0aWNreTogdHJ1ZSxcbiAgICAgICAgcGxhY2VtZW50OiAnYmVsb3cnLFxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuI2FmZml4ZXIgPSBhZmZpeGVyO1xuICAgIH1cbiAgfVxuXG4gICNkZXN0cm95QWZmaXhlcigpOiB2b2lkIHtcbiAgICAvKmlzdGFuYnVsIGlnbm9yZSBlbHNlKi9cbiAgICBpZiAodGhpcy4jYWZmaXhlcikge1xuICAgICAgdGhpcy4jYWZmaXhlci5kZXN0cm95KCk7XG4gICAgICB0aGlzLiNhZmZpeGVyID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gICNjcmVhdGVPdmVybGF5KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnRpbWVwaWNrZXJUZW1wbGF0ZVJlZikge1xuICAgICAgY29uc3Qgb3ZlcmxheSA9IHRoaXMuI292ZXJsYXlTZXJ2aWNlLmNyZWF0ZSh7XG4gICAgICAgIGVuYWJsZUNsb3NlOiBmYWxzZSxcbiAgICAgICAgZW5hYmxlUG9pbnRlckV2ZW50czogZmFsc2UsXG4gICAgICAgIGVudmlyb25tZW50SW5qZWN0b3I6IHRoaXMuI2Vudmlyb25tZW50SW5qZWN0b3IsXG4gICAgICB9KTtcblxuICAgICAgaWYgKHRoaXMuI3pJbmRleCkge1xuICAgICAgICB0aGlzLiN6SW5kZXhcbiAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jdGltZXBpY2tlclVuc3Vic2NyaWJlKSlcbiAgICAgICAgICAuc3Vic2NyaWJlKCh6SW5kZXgpID0+IHtcbiAgICAgICAgICAgIG92ZXJsYXkuY29tcG9uZW50UmVmLmluc3RhbmNlLnpJbmRleCA9IHpJbmRleC50b1N0cmluZygxMCk7XG4gICAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIG92ZXJsYXkuYmFja2Ryb3BDbGlja1xuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jdGltZXBpY2tlclVuc3Vic2NyaWJlKSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgICBpZiAodGhpcy5pc09wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuI2Nsb3NlUGlja2VyKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgb3ZlcmxheS5hdHRhY2hUZW1wbGF0ZSh0aGlzLnRpbWVwaWNrZXJUZW1wbGF0ZVJlZik7XG5cbiAgICAgIHRoaXMuI292ZXJsYXkgPSBvdmVybGF5O1xuICAgIH1cbiAgfVxuXG4gICNkZXN0cm95T3ZlcmxheSgpOiB2b2lkIHtcbiAgICAvKmlzdGFuYnVsIGlnbm9yZSBlbHNlKi9cbiAgICBpZiAodGhpcy4jb3ZlcmxheSkge1xuICAgICAgdGhpcy4jb3ZlcmxheVNlcnZpY2UuY2xvc2UodGhpcy4jb3ZlcmxheSk7XG4gICAgICB0aGlzLiNvdmVybGF5ID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gICNhZGRLZXl1cExpc3RlbmVyKCk6IHZvaWQge1xuICAgIGNvbnN0IHRpbWVwaWNrZXJNZW51RWxlbWVudCA9IHRoaXMudGltZXBpY2tlclJlZj8ubmF0aXZlRWxlbWVudDtcblxuICAgIGlmICh0aW1lcGlja2VyTWVudUVsZW1lbnQpIHtcbiAgICAgIHRoaXMuI292ZXJsYXlLZXl1cExpc3RlbmVyID0gZnJvbUV2ZW50PEtleWJvYXJkRXZlbnQ+KFxuICAgICAgICB0aW1lcGlja2VyTWVudUVsZW1lbnQsXG4gICAgICAgICdrZXl1cCcsXG4gICAgICApXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgICBjb25zdCBrZXkgPSBldmVudC5rZXk/LnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgICBpZiAoa2V5ID09PSAnZXNjYXBlJyAmJiB0aGlzLmlzT3Blbikge1xuICAgICAgICAgICAgdGhpcy4jY2xvc2VQaWNrZXIoKTtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gICNyZW1vdmVQaWNrZXJFdmVudExpc3RlbmVycygpOiB2b2lkIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICh0aGlzLiN0aW1lcGlja2VyVW5zdWJzY3JpYmUpIHtcbiAgICAgIHRoaXMuI3RpbWVwaWNrZXJVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgICB0aGlzLiN0aW1lcGlja2VyVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgICAgIHRoaXMuI3RpbWVwaWNrZXJVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgfVxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgdGhpcy4jb3ZlcmxheUtleXVwTGlzdGVuZXI/LnVuc3Vic2NyaWJlKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJza3ktdGltZXBpY2tlclwiPlxuICBAaWYgKCFpbnB1dEJveEhvc3RTZXJ2aWNlKSB7XG4gICAgPGRpdiBjbGFzcz1cInNreS1pbnB1dC1ncm91cFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImlucHV0VGVtcGxhdGVSZWZcIiAvPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRyaWdnZXJCdXR0b25UZW1wbGF0ZVJlZlwiIC8+XG4gICAgPC9kaXY+XG4gIH1cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2lucHV0VGVtcGxhdGVSZWY+XG4gIDxuZy1jb250ZW50IC8+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3RyaWdnZXJCdXR0b25UZW1wbGF0ZVJlZj5cbiAgPGRpdiBjbGFzcz1cInNreS1pbnB1dC1ncm91cC1idG5cIj5cbiAgICA8YnV0dG9uXG4gICAgICAjdHJpZ2dlckJ1dHRvblJlZlxuICAgICAgYXJpYS1oYXNwb3B1cD1cImRpYWxvZ1wiXG4gICAgICBjbGFzcz1cInNreS1idG4gc2t5LWJ0bi1kZWZhdWx0IHNreS1pbnB1dC1ncm91cC10aW1lcGlja2VyLWJ0blwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIFthdHRyLmFyaWEtY29udHJvbHNdPVwiaXNPcGVuID8gdGltZXBpY2tlcklkIDogbnVsbFwiXG4gICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cImlzT3BlblwiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICBpbnB1dEJveEhvc3RTZXJ2aWNlPy5sYWJlbFRleHRcbiAgICAgICAgICA/ICgnc2t5dXhfdGltZXBpY2tlcl9idXR0b25fbGFiZWxfY29udGV4dCdcbiAgICAgICAgICAgIHwgc2t5TGliUmVzb3VyY2VzOiBpbnB1dEJveEhvc3RTZXJ2aWNlPy5sYWJlbFRleHQpXG4gICAgICAgICAgOiAoJ3NreXV4X3RpbWVwaWNrZXJfYnV0dG9uX2xhYmVsJyB8IHNreUxpYlJlc291cmNlcylcbiAgICAgIFwiXG4gICAgICBbYXR0ci5pZF09XCJ0cmlnZ2VyQnV0dG9uSWRcIlxuICAgICAgW2F0dHIudGl0bGVdPVwiXG4gICAgICAgIGlucHV0Qm94SG9zdFNlcnZpY2U/LmxhYmVsVGV4dFxuICAgICAgICAgID8gKCdza3l1eF90aW1lcGlja2VyX2J1dHRvbl9sYWJlbF9jb250ZXh0J1xuICAgICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXM6IGlucHV0Qm94SG9zdFNlcnZpY2U/LmxhYmVsVGV4dClcbiAgICAgICAgICA6ICgnc2t5dXhfdGltZXBpY2tlcl9idXR0b25fbGFiZWwnIHwgc2t5TGliUmVzb3VyY2VzKVxuICAgICAgXCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAoY2xpY2spPVwib25UcmlnZ2VyQnV0dG9uQ2xpY2soKVwiXG4gICAgPlxuICAgICAgPHNreS1pY29uIGljb25OYW1lPVwiY2xvY2tcIiBpY29uU2l6ZT1cImxcIiAvPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjdGltZXBpY2tlclRlbXBsYXRlUmVmPlxuICA8ZGl2XG4gICAgI3RpbWVwaWNrZXJSZWZcbiAgICBjbGFzcz1cInNreS10aW1lcGlja2VyLWNvbnRhaW5lciBza3ktc2hhZG93IHNreS1ib3ggc2t5LWVsZXZhdGlvbi00XCJcbiAgICByb2xlPVwiZGlhbG9nXCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwidHJpZ2dlckJ1dHRvbklkXCJcbiAgICBbYXR0ci5pZF09XCJ0aW1lcGlja2VySWRcIlxuICAgIFtjbGFzcy5za3ktdGltZXBpY2tlci1oaWRkZW5dPVwiIWlzVmlzaWJsZVwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwic2t5LXRpbWVwaWNrZXItY29udGVudFwiPlxuICAgICAgPHNlY3Rpb25cbiAgICAgICAgY2xhc3M9XCJza3ktdGltZXBpY2tlci1jb2x1bW4gc2t5LXRpbWVwaWNrZXItY29sdW1uLWhvdXJzXCJcbiAgICAgICAgW25nQ2xhc3NdPVwieyAnc2t5LXRpbWVwaWNrZXItMjRob3VyJzogaXM4NjAxIH1cIlxuICAgICAgPlxuICAgICAgICA8b2w+XG4gICAgICAgICAgQGZvciAoaG91ciBvZiBob3VyczsgdHJhY2sgaG91cikge1xuICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgbmFtZT1cImhvdXJcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3NreS1idG4tYWN0aXZlJzogc2VsZWN0ZWRIb3VyID09PSBob3VyIH1cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzZXRUaW1lKCRldmVudClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgaG91ciB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgfVxuICAgICAgICA8L29sPlxuICAgICAgPC9zZWN0aW9uPlxuICAgICAgPHNlY3Rpb24gY2xhc3M9XCJza3ktdGltZXBpY2tlci1jb2x1bW4gc2t5LXRpbWVwaWNrZXItY29sdW1uLW1pbnV0ZXNcIj5cbiAgICAgICAgPG9sPlxuICAgICAgICAgIEBmb3IgKG1pbnV0ZSBvZiBtaW51dGVzOyB0cmFjayBtaW51dGUpIHtcbiAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIG5hbWU9XCJtaW51dGVcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICdza3ktYnRuLWFjdGl2ZSc6IGhpZ2hsaWdodE1pbnV0ZShzZWxlY3RlZE1pbnV0ZSwgbWludXRlKVxuICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzZXRUaW1lKCRldmVudClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgJzAwJy5zdWJzdHJpbmcoMCwgMiAtIG1pbnV0ZS50b1N0cmluZygpLmxlbmd0aCkgKyBtaW51dGUgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9vbD5cbiAgICAgIDwvc2VjdGlvbj5cbiAgICAgIEBpZiAoIWlzODYwMSkge1xuICAgICAgICA8c2VjdGlvbiBjbGFzcz1cInNreS10aW1lcGlja2VyLWNvbHVtbiBza3ktdGltZXBpY2tlci1jb2x1bW4tbWVyaWRpZXNcIj5cbiAgICAgICAgICA8b2w+XG4gICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBuYW1lPVwibWVyaWRpZVwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnc2t5LWJ0bi1hY3RpdmUnOiBzZWxlY3RlZE1lcmlkaWVzID09PSAnQU0nIH1cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzZXRUaW1lKCRldmVudClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgQU1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgbmFtZT1cIm1lcmlkaWVcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3NreS1idG4tYWN0aXZlJzogc2VsZWN0ZWRNZXJpZGllcyA9PT0gJ1BNJyB9XCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwic2V0VGltZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIFBNXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICA8L29sPlxuICAgICAgICA8L3NlY3Rpb24+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInNreS10aW1lcGlja2VyLWZvb3RlclwiPlxuICAgICAgPHNlY3Rpb24gY2xhc3M9XCJza3ktdGltZXBpY2tlci1jb2x1bW5cIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwic2t5LWJ0biBza3ktYnRuLXByaW1hcnlcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIChjbGljayk9XCJvbkNsb3NlQnV0dG9uQ2xpY2soKVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyAnc2t5dXhfdGltZXBpY2tlcl9jbG9zZScgfCBza3lMaWJSZXNvdXJjZXMgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L3NlY3Rpb24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==","import { Directive, HostBinding, HostListener, Input, forwardRef, } from '@angular/core';\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR, } from '@angular/forms';\nimport moment from 'moment';\nimport * as i0 from \"@angular/core\";\nconst SKY_TIMEPICKER_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SkyTimepickerInputDirective),\n multi: true,\n};\nconst SKY_TIMEPICKER_VALIDATOR = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => SkyTimepickerInputDirective),\n multi: true,\n};\nexport class SkyTimepickerInputDirective {\n #_timeFormat = 'hh';\n // TODO: In a future breaking change - grab the parent component through dependency injection and remove this setter.\n // Also remove the HostBinding that references it.\n /**\n * Creates the timepicker input field and picker. Place this attribute on an `input` element,\n * and wrap the input in a `sky-timepicker` component.\n * This attribute must be set to the instance of the `sky-timepicker`.\n * @required\n */\n get skyTimepickerInput() {\n return this.#_skyTimepickerInput;\n }\n set skyTimepickerInput(value) {\n this.#_skyTimepickerInput = value;\n this.#updateTimepickerInput();\n }\n get hostTimepickerInput() {\n return this.skyTimepickerInput;\n }\n // TODO: In a future breaking change - make this more specific than \"string\"\n /**\n * The 12-hour `hh` or 24-hour `HH` time format for the input.\n * @default \"hh\"\n */\n set timeFormat(value) {\n this.#_timeFormat = value || 'hh';\n }\n get timeFormat() {\n return this.#_timeFormat;\n }\n /**\n * Whether to disable the timepicker on template-driven forms. Don't use this input on reactive forms because they may overwrite the input or leave the control out of sync.\n * To set the disabled state on reactive forms, use the `FormControl` instead.\n * @default false\n */\n get disabled() {\n return this.#_disabled;\n }\n set disabled(value) {\n this.#_disabled = value || false;\n this.#updateTimepickerInput();\n this.#renderer.setProperty(this.#elRef.nativeElement, 'disabled', value);\n }\n get #modelValue() {\n return this.#_modelValue;\n }\n set #modelValue(value) {\n if (value !== this.#_modelValue) {\n this.#_modelValue = value;\n this.#updateTimepickerInput();\n this.#setInputValue(value);\n this.#_validatorChange();\n this.#_onChange(value);\n }\n }\n #control;\n #_disabled = false;\n #_modelValue;\n #_skyTimepickerInput;\n #renderer;\n #elRef;\n #changeDetector;\n constructor(renderer, elRef, changeDetector) {\n this.#renderer = renderer;\n this.#elRef = elRef;\n this.#changeDetector = changeDetector;\n }\n ngOnInit() {\n this.#renderer.addClass(this.#elRef.nativeElement, 'sky-form-control');\n this.pickerChangedSubscription =\n this.skyTimepickerInput?.selectedTimeChanged.subscribe((newTime) => {\n this.writeValue(newTime);\n this.#_onTouched();\n });\n }\n ngAfterContentInit() {\n // Watch for the control to be added and initialize the value immediately.\n /* istanbul ignore else */\n if (this.#control && this.#control.parent) {\n this.#control.setValue(this.#modelValue, { emitEvent: false });\n this.#changeDetector.markForCheck();\n }\n }\n ngOnDestroy() {\n /* istanbul ignore else */\n if (this.pickerChangedSubscription) {\n this.pickerChangedSubscription.unsubscribe();\n }\n }\n ngOnChanges() {\n if (this.skyTimepickerInput) {\n this.skyTimepickerInput.setFormat(this.timeFormat);\n this.skyTimepickerInput.returnFormat = this.returnFormat;\n }\n }\n onChange(event) {\n this.writeValue(event.target.value);\n }\n /* istanbul ignore next */\n onBlur() {\n this.#_onTouched();\n }\n registerOnChange(fn) {\n this.#_onChange = fn;\n }\n registerOnTouched(fn) {\n this.#_onTouched = fn;\n }\n registerOnValidatorChange(fn) {\n this.#_validatorChange = fn;\n }\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n }\n writeValue(value) {\n this.#modelValue = this.#formatter(value);\n }\n validate(control) {\n if (!this.#control) {\n this.#control = control;\n }\n const value = control.value;\n if (!value) {\n return null;\n }\n /* istanbul ignore next */\n if (value.local === 'Invalid date') {\n return { skyTime: { invalid: control.value } };\n }\n return null;\n }\n #setInputValue(value) {\n let formattedValue = '';\n if (value) {\n const output = moment(value).format(value.customFormat);\n /* istanbul ignore else */\n if (output !== 'Invalid date') {\n formattedValue = output;\n }\n }\n this.#renderer.setProperty(this.#elRef.nativeElement, 'value', formattedValue);\n }\n // TODO: This method technically returns `SkyTimepickerTimeOutput | string | undefined`. However, the value it is set to is set to `SkyTimepickerTimeOutput | undefined`. We need to clean this up.\n #formatter(time) {\n if (time && typeof time !== 'string' && 'local' in time) {\n return time;\n }\n if (typeof time === 'string') {\n if (time.length === 0) {\n return '';\n }\n const currentFormat = this.timeFormat === 'HH' ? 'H:mm' : 'h:mm A';\n if (typeof this.returnFormat === 'undefined') {\n this.returnFormat = currentFormat;\n }\n const formatTime = {\n hour: moment(time, currentFormat).hour(),\n minute: moment(time, currentFormat).minute(),\n meridie: moment(time, currentFormat).format('A'),\n timezone: parseInt(moment(time, currentFormat).format('Z'), 10),\n iso8601: moment(time, currentFormat).toDate(),\n local: moment(time, currentFormat).format(currentFormat),\n customFormat: this.returnFormat,\n };\n return formatTime;\n }\n }\n #updateTimepickerInput() {\n if (this.skyTimepickerInput) {\n this.skyTimepickerInput.disabled = this.disabled;\n /* istanbul ignore else */\n if (this.skyTimepickerInput.selectedTime !== this.#modelValue) {\n this.skyTimepickerInput.selectedTime = this.#modelValue;\n }\n }\n }\n /* istanbul ignore next */\n // eslint-disable-next-line @typescript-eslint/no-empty-function, @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any\n #_onChange = (_) => { };\n /* istanbul ignore next */\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n #_onTouched = () => { };\n /* istanbul ignore next */\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n #_validatorChange = () => { };\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyTimepickerInputDirective, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.0.5\", type: SkyTimepickerInputDirective, isStandalone: false, selector: \"[skyTimepickerInput]\", inputs: { skyTimepickerInput: \"skyTimepickerInput\", timeFormat: \"timeFormat\", returnFormat: \"returnFormat\", disabled: \"disabled\" }, host: { listeners: { \"change\": \"onChange($event)\", \"blur\": \"onBlur()\" }, properties: { \"attr.skyTimepickerInput\": \"this.hostTimepickerInput\" } }, providers: [SKY_TIMEPICKER_VALUE_ACCESSOR, SKY_TIMEPICKER_VALIDATOR], usesOnChanges: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyTimepickerInputDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[skyTimepickerInput]',\n providers: [SKY_TIMEPICKER_VALUE_ACCESSOR, SKY_TIMEPICKER_VALIDATOR],\n standalone: false,\n }]\n }], ctorParameters: () => [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }], propDecorators: { skyTimepickerInput: [{\n type: Input\n }], hostTimepickerInput: [{\n type: HostBinding,\n args: ['attr.skyTimepickerInput']\n }], timeFormat: [{\n type: Input\n }], returnFormat: [{\n type: Input\n }], disabled: [{\n type: Input\n }], onChange: [{\n type: HostListener,\n args: ['change', ['$event']]\n }], onBlur: [{\n type: HostListener,\n args: ['blur']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXBpY2tlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL3RpbWVwaWNrZXIvdGltZXBpY2tlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLFNBQVMsRUFFVCxXQUFXLEVBQ1gsWUFBWSxFQUNaLEtBQUssRUFLTCxVQUFVLEdBQ1gsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUdMLGFBQWEsRUFDYixpQkFBaUIsR0FHbEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7O0FBTzVCLE1BQU0sNkJBQTZCLEdBQUc7SUFDcEMsT0FBTyxFQUFFLGlCQUFpQjtJQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLDJCQUEyQixDQUFDO0lBQzFELEtBQUssRUFBRSxJQUFJO0NBQ1osQ0FBQztBQUVGLE1BQU0sd0JBQXdCLEdBQUc7SUFDL0IsT0FBTyxFQUFFLGFBQWE7SUFDdEIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQztJQUMxRCxLQUFLLEVBQUUsSUFBSTtDQUNaLENBQUM7QUFPRixNQUFNLE9BQU8sMkJBQTJCO0lBVXRDLFlBQVksR0FBZ0MsSUFBSSxDQUFDO0lBRWpELHFIQUFxSDtJQUNySCxrREFBa0Q7SUFDbEQ7Ozs7O09BS0c7SUFDSCxJQUNXLGtCQUFrQjtRQUMzQixPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztJQUNuQyxDQUFDO0lBRUQsSUFBVyxrQkFBa0IsQ0FBQyxLQUF5QztRQUNyRSxJQUFJLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxJQUNXLG1CQUFt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O0lBQzFCLHVJQUF1STtJQUN2SSxVQUFVLEdBQUcsQ0FBQyxDQUFNLEVBQVEsRUFBRSxHQUFFLENBQUMsQ0FBQztJQUNsQywwQkFBMEI7SUFDMUIsZ0VBQWdFO0lBQ2hFLFdBQVcsR0FBRyxHQUFTLEVBQUUsR0FBRSxDQUFDLENBQUM7SUFDN0IsMEJBQTBCO0lBQzFCLGdFQUFnRTtJQUNoRSxpQkFBaUIsR0FBRyxHQUFTLEVBQUUsR0FBRSxDQUFDLENBQUM7OEdBN1B4QiwyQkFBMkI7a0dBQTNCLDJCQUEyQiwwVkFIM0IsQ0FBQyw2QkFBNkIsRUFBRSx3QkFBd0IsQ0FBQzs7MkZBR3pELDJCQUEyQjtrQkFMdkMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsc0JBQXNCO29CQUNoQyxTQUFTLEVBQUUsQ0FBQyw2QkFBNkIsRUFBRSx3QkFBd0IsQ0FBQztvQkFDcEUsVUFBVSxFQUFFLEtBQUs7aUJBQ2xCO3VJQXNCWSxrQkFBa0I7c0JBRDVCLEtBQUs7Z0JBV0ssbUJBQW1CO3NCQUQ3QixXQUFXO3VCQUFDLHlCQUF5QjtnQkFXM0IsVUFBVTtzQkFEcEIsS0FBSztnQkFjQyxZQUFZO3NCQURsQixLQUFLO2dCQVNLLFFBQVE7c0JBRGxCLEtBQUs7Z0JBa0ZDLFFBQVE7c0JBRGQsWUFBWTt1QkFBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBTzNCLE1BQU07c0JBRFosWUFBWTt1QkFBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgSG9zdEJpbmRpbmcsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFJlbmRlcmVyMixcbiAgZm9yd2FyZFJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2wsXG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBOR19WQUxJREFUT1JTLFxuICBOR19WQUxVRV9BQ0NFU1NPUixcbiAgVmFsaWRhdGlvbkVycm9ycyxcbiAgVmFsaWRhdG9yLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBTa3lUaW1lcGlja2VyVGltZUZvcm1hdFR5cGUgfSBmcm9tICcuL3RpbWVwaWNrZXItdGltZS1mb3JtYXQtdHlwZSc7XG5pbXBvcnQgeyBTa3lUaW1lcGlja2VyVGltZU91dHB1dCB9IGZyb20gJy4vdGltZXBpY2tlci10aW1lLW91dHB1dCc7XG5pbXBvcnQgeyBTa3lUaW1lcGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi90aW1lcGlja2VyLmNvbXBvbmVudCc7XG5cbmNvbnN0IFNLWV9USU1FUElDS0VSX1ZBTFVFX0FDQ0VTU09SID0ge1xuICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gU2t5VGltZXBpY2tlcklucHV0RGlyZWN0aXZlKSxcbiAgbXVsdGk6IHRydWUsXG59O1xuXG5jb25zdCBTS1lfVElNRVBJQ0tFUl9WQUxJREFUT1IgPSB7XG4gIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFNreVRpbWVwaWNrZXJJbnB1dERpcmVjdGl2ZSksXG4gIG11bHRpOiB0cnVlLFxufTtcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW3NreVRpbWVwaWNrZXJJbnB1dF0nLFxuICBwcm92aWRlcnM6IFtTS1lfVElNRVBJQ0tFUl9WQUxVRV9BQ0NFU1NPUiwgU0tZX1RJTUVQSUNLRVJfVkFMSURBVE9SXSxcbiAgc3RhbmRhbG9uZTogZmFsc2UsXG59KVxuZXhwb3J0IGNsYXNzIFNreVRpbWVwaWNrZXJJbnB1dERpcmVjdGl2ZVxuICBpbXBsZW1lbnRzXG4gICAgT25Jbml0LFxuICAgIE9uRGVzdHJveSxcbiAgICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgICBWYWxpZGF0b3IsXG4gICAgT25DaGFuZ2VzLFxuICAgIEFmdGVyQ29udGVudEluaXRcbntcbiAgcHVibGljIHBpY2tlckNoYW5nZWRTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IHVuZGVmaW5lZDtcbiAgI190aW1lRm9ybWF0OiBTa3lUaW1lcGlja2VyVGltZUZvcm1hdFR5cGUgPSAnaGgnO1xuXG4gIC8vIFRPRE86IEluIGEgZnV0dXJlIGJyZWFraW5nIGNoYW5nZSAtIGdyYWIgdGhlIHBhcmVudCBjb21wb25lbnQgdGhyb3VnaCBkZXBlbmRlbmN5IGluamVjdGlvbiBhbmQgcmVtb3ZlIHRoaXMgc2V0dGVyLlxuICAvLyBBbHNvIHJlbW92ZSB0aGUgSG9zdEJpbmRpbmcgdGhhdCByZWZlcmVuY2VzIGl0LlxuICAvKipcbiAgICogQ3JlYXRlcyB0aGUgdGltZXBpY2tlciBpbnB1dCBmaWVsZCBhbmQgcGlja2VyLiBQbGFjZSB0aGlzIGF0dHJpYnV0ZSBvbiBhbiBgaW5wdXRgIGVsZW1lbnQsXG4gICAqIGFuZCB3cmFwIHRoZSBpbnB1dCBpbiBhIGBza3ktdGltZXBpY2tlcmAgY29tcG9uZW50LlxuICAgKiBUaGlzIGF0dHJpYnV0ZSBtdXN0IGJlIHNldCB0byB0aGUgaW5zdGFuY2Ugb2YgdGhlIGBza3ktdGltZXBpY2tlcmAuXG4gICAqIEByZXF1aXJlZFxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGdldCBza3lUaW1lcGlja2VySW5wdXQoKTogU2t5VGltZXBpY2tlckNvbXBvbmVudCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI19za3lUaW1lcGlja2VySW5wdXQ7XG4gIH1cblxuICBwdWJsaWMgc2V0IHNreVRpbWVwaWNrZXJJbnB1dCh2YWx1ZTogU2t5VGltZXBpY2tlckNvbXBvbmVudCB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19za3lUaW1lcGlja2VySW5wdXQgPSB2YWx1ZTtcbiAgICB0aGlzLiN1cGRhdGVUaW1lcGlja2VySW5wdXQoKTtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnYXR0ci5za3lUaW1lcGlja2VySW5wdXQnKVxuICBwdWJsaWMgZ2V0IGhvc3RUaW1lcGlja2VySW5wdXQoKTogU2t5VGltZXBpY2tlckNvbXBvbmVudCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuc2t5VGltZXBpY2tlcklucHV0O1xuICB9XG5cbiAgLy8gVE9ETzogSW4gYSBmdXR1cmUgYnJlYWtpbmcgY2hhbmdlIC0gbWFrZSB0aGlzIG1vcmUgc3BlY2lmaWMgdGhhbiBcInN0cmluZ1wiXG4gIC8qKlxuICAgKiBUaGUgMTItaG91ciBgaGhgIG9yIDI0LWhvdXIgYEhIYCB0aW1lIGZvcm1hdCBmb3IgdGhlIGlucHV0LlxuICAgKiBAZGVmYXVsdCBcImhoXCJcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgdGltZUZvcm1hdCh2YWx1ZTogU2t5VGltZXBpY2tlclRpbWVGb3JtYXRUeXBlIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX3RpbWVGb3JtYXQgPSB2YWx1ZSB8fCAnaGgnO1xuICB9XG5cbiAgcHVibGljIGdldCB0aW1lRm9ybWF0KCk6IFNreVRpbWVwaWNrZXJUaW1lRm9ybWF0VHlwZSB7XG4gICAgcmV0dXJuIHRoaXMuI190aW1lRm9ybWF0O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBjdXN0b20gdGltZSBmb3JtYXQuIEZvciBleGFtcGxlcyxcbiAgICogc2VlIHRoZSBbbW9tZW50LmpzXShodHRwczovL21vbWVudGpzLmNvbS9kb2NzLyMvZGlzcGxheWluZy9mb3JtYXQvKSBkb2NzLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHJldHVybkZvcm1hdDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGRpc2FibGUgdGhlIHRpbWVwaWNrZXIgb24gdGVtcGxhdGUtZHJpdmVuIGZvcm1zLiBEb24ndCB1c2UgdGhpcyBpbnB1dCBvbiByZWFjdGl2ZSBmb3JtcyBiZWNhdXNlIHRoZXkgbWF5IG92ZXJ3cml0ZSB0aGUgaW5wdXQgb3IgbGVhdmUgdGhlIGNvbnRyb2wgb3V0IG9mIHN5bmMuXG4gICAqIFRvIHNldCB0aGUgZGlzYWJsZWQgc3RhdGUgb24gcmVhY3RpdmUgZm9ybXMsIHVzZSB0aGUgYEZvcm1Db250cm9sYCBpbnN0ZWFkLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy4jX2Rpc2FibGVkO1xuICB9XG5cbiAgcHVibGljIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19kaXNhYmxlZCA9IHZhbHVlIHx8IGZhbHNlO1xuXG4gICAgdGhpcy4jdXBkYXRlVGltZXBpY2tlcklucHV0KCk7XG5cbiAgICB0aGlzLiNyZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLiNlbFJlZi5uYXRpdmVFbGVtZW50LCAnZGlzYWJsZWQnLCB2YWx1ZSk7XG4gIH1cblxuICBnZXQgI21vZGVsVmFsdWUoKTogU2t5VGltZXBpY2tlclRpbWVPdXRwdXQgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLiNfbW9kZWxWYWx1ZTtcbiAgfVxuXG4gIHNldCAjbW9kZWxWYWx1ZSh2YWx1ZTogU2t5VGltZXBpY2tlclRpbWVPdXRwdXQgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAodmFsdWUgIT09IHRoaXMuI19tb2RlbFZhbHVlKSB7XG4gICAgICB0aGlzLiNfbW9kZWxWYWx1ZSA9IHZhbHVlO1xuICAgICAgdGhpcy4jdXBkYXRlVGltZXBpY2tlcklucHV0KCk7XG4gICAgICB0aGlzLiNzZXRJbnB1dFZhbHVlKHZhbHVlKTtcbiAgICAgIHRoaXMuI192YWxpZGF0b3JDaGFuZ2UoKTtcbiAgICAgIHRoaXMuI19vbkNoYW5nZSh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgI2NvbnRyb2w6IEFic3RyYWN0Q29udHJvbCB8IHVuZGVmaW5lZDtcblxuICAjX2Rpc2FibGVkID0gZmFsc2U7XG4gICNfbW9kZWxWYWx1ZTogU2t5VGltZXBpY2tlclRpbWVPdXRwdXQgfCB1bmRlZmluZWQ7XG4gICNfc2t5VGltZXBpY2tlcklucHV0OiBTa3lUaW1lcGlja2VyQ29tcG9uZW50IHwgdW5kZWZpbmVkO1xuXG4gICNyZW5kZXJlcjogUmVuZGVyZXIyO1xuICAjZWxSZWY6IEVsZW1lbnRSZWY7XG4gICNjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWY7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBlbFJlZjogRWxlbWVudFJlZixcbiAgICBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICkge1xuICAgIHRoaXMuI3JlbmRlcmVyID0gcmVuZGVyZXI7XG4gICAgdGhpcy4jZWxSZWYgPSBlbFJlZjtcbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3RvciA9IGNoYW5nZURldGVjdG9yO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuI3JlbmRlcmVyLmFkZENsYXNzKHRoaXMuI2VsUmVmLm5hdGl2ZUVsZW1lbnQsICdza3ktZm9ybS1jb250cm9sJyk7XG4gICAgdGhpcy5waWNrZXJDaGFuZ2VkU3Vic2NyaXB0aW9uID1cbiAgICAgIHRoaXMuc2t5VGltZXBpY2tlcklucHV0Py5zZWxlY3RlZFRpbWVDaGFuZ2VkLnN1YnNjcmliZShcbiAgICAgICAgKG5ld1RpbWU6IHN0cmluZykgPT4ge1xuICAgICAgICAgIHRoaXMud3JpdGVWYWx1ZShuZXdUaW1lKTtcbiAgICAgICAgICB0aGlzLiNfb25Ub3VjaGVkKCk7XG4gICAgICAgIH0sXG4gICAgICApO1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAvLyBXYXRjaCBmb3IgdGhlIGNvbnRyb2wgdG8gYmUgYWRkZWQgYW5kIGluaXRpYWxpemUgdGhlIHZhbHVlIGltbWVkaWF0ZWx5LlxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHRoaXMuI2NvbnRyb2wgJiYgdGhpcy4jY29udHJvbC5wYXJlbnQpIHtcbiAgICAgIHRoaXMuI2NvbnRyb2wuc2V0VmFsdWUodGhpcy4jbW9kZWxWYWx1ZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHRoaXMucGlja2VyQ2hhbmdlZFN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5waWNrZXJDaGFuZ2VkU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNreVRpbWVwaWNrZXJJbnB1dCkge1xuICAgICAgdGhpcy5za3lUaW1lcGlja2VySW5wdXQuc2V0Rm9ybWF0KHRoaXMudGltZUZvcm1hdCk7XG4gICAgICB0aGlzLnNreVRpbWVwaWNrZXJJbnB1dC5yZXR1cm5Gb3JtYXQgPSB0aGlzLnJldHVybkZvcm1hdDtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdjaGFuZ2UnLCBbJyRldmVudCddKVxuICBwdWJsaWMgb25DaGFuZ2UoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIHRoaXMud3JpdGVWYWx1ZShldmVudC50YXJnZXQudmFsdWUpO1xuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgQEhvc3RMaXN0ZW5lcignYmx1cicpXG4gIHB1YmxpYyBvbkJsdXIoKTogdm9pZCB7XG4gICAgdGhpcy4jX29uVG91Y2hlZCgpO1xuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogYW55KSA9PiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLiNfb25DaGFuZ2UgPSBmbjtcbiAgfVxuICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IGFueSk6IHZvaWQge1xuICAgIHRoaXMuI19vblRvdWNoZWQgPSBmbjtcbiAgfVxuICBwdWJsaWMgcmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZShmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuI192YWxpZGF0b3JDaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHB1YmxpYyBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLiNtb2RlbFZhbHVlID0gdGhpcy4jZm9ybWF0dGVyKHZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyB2YWxpZGF0ZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgaWYgKCF0aGlzLiNjb250cm9sKSB7XG4gICAgICB0aGlzLiNjb250cm9sID0gY29udHJvbDtcbiAgICB9XG5cbiAgICBjb25zdCB2YWx1ZSA9IGNvbnRyb2wudmFsdWU7XG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICBpZiAodmFsdWUubG9jYWwgPT09ICdJbnZhbGlkIGRhdGUnKSB7XG4gICAgICByZXR1cm4geyBza3lUaW1lOiB7IGludmFsaWQ6IGNvbnRyb2wudmFsdWUgfSB9O1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgI3NldElucHV0VmFsdWUodmFsdWU6IFNreVRpbWVwaWNrZXJUaW1lT3V0cHV0IHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgbGV0IGZvcm1hdHRlZFZhbHVlID0gJyc7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICBjb25zdCBvdXRwdXQgPSBtb21lbnQodmFsdWUpLmZvcm1hdCh2YWx1ZS5jdXN0b21Gb3JtYXQpO1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgIGlmIChvdXRwdXQgIT09ICdJbnZhbGlkIGRhdGUnKSB7XG4gICAgICAgIGZvcm1hdHRlZFZhbHVlID0gb3V0cHV0O1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuI3JlbmRlcmVyLnNldFByb3BlcnR5KFxuICAgICAgdGhpcy4jZWxSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICd2YWx1ZScsXG4gICAgICBmb3JtYXR0ZWRWYWx1ZSxcbiAgICApO1xuICB9XG5cbiAgLy8gVE9ETzogVGhpcyBtZXRob2QgdGVjaG5pY2FsbHkgcmV0dXJucyBgU2t5VGltZXBpY2tlclRpbWVPdXRwdXQgfCBzdHJpbmcgfCB1bmRlZmluZWRgLiBIb3dldmVyLCB0aGUgdmFsdWUgaXQgaXMgc2V0IHRvIGlzIHNldCB0byBgU2t5VGltZXBpY2tlclRpbWVPdXRwdXQgfCB1bmRlZmluZWRgLiBXZSBuZWVkIHRvIGNsZWFuIHRoaXMgdXAuXG4gICNmb3JtYXR0ZXIodGltZTogYW55KTogYW55IHtcbiAgICBpZiAodGltZSAmJiB0eXBlb2YgdGltZSAhPT0gJ3N0cmluZycgJiYgJ2xvY2FsJyBpbiB0aW1lKSB7XG4gICAgICByZXR1cm4gdGltZTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiB0aW1lID09PSAnc3RyaW5nJykge1xuICAgICAgaWYgKHRpbWUubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiAnJztcbiAgICAgIH1cbiAgICAgIGNvbnN0IGN1cnJlbnRGb3JtYXQgPSB0aGlzLnRpbWVGb3JtYXQgPT09ICdISCcgPyAnSDptbScgOiAnaDptbSBBJztcblxuICAgICAgaWYgKHR5cGVvZiB0aGlzLnJldHVybkZvcm1hdCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgdGhpcy5yZXR1cm5Gb3JtYXQgPSBjdXJyZW50Rm9ybWF0O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBmb3JtYXRUaW1lOiBTa3lUaW1lcGlja2VyVGltZU91dHB1dCA9IHtcbiAgICAgICAgaG91cjogbW9tZW50KHRpbWUsIGN1cnJlbnRGb3JtYXQpLmhvdXIoKSxcbiAgICAgICAgbWludXRlOiBtb21lbnQodGltZSwgY3VycmVudEZvcm1hdCkubWludXRlKCksXG4gICAgICAgIG1lcmlkaWU6IG1vbWVudCh0aW1lLCBjdXJyZW50Rm9ybWF0KS5mb3JtYXQoJ0EnKSxcbiAgICAgICAgdGltZXpvbmU6IHBhcnNlSW50KG1vbWVudCh0aW1lLCBjdXJyZW50Rm9ybWF0KS5mb3JtYXQoJ1onKSwgMTApLFxuICAgICAgICBpc284NjAxOiBtb21lbnQodGltZSwgY3VycmVudEZvcm1hdCkudG9EYXRlKCksXG4gICAgICAgIGxvY2FsOiBtb21lbnQodGltZSwgY3VycmVudEZvcm1hdCkuZm9ybWF0KGN1cnJlbnRGb3JtYXQpLFxuICAgICAgICBjdXN0b21Gb3JtYXQ6IHRoaXMucmV0dXJuRm9ybWF0LFxuICAgICAgfTtcbiAgICAgIHJldHVybiBmb3JtYXRUaW1lO1xuICAgIH1cbiAgfVxuXG4gICN1cGRhdGVUaW1lcGlja2VySW5wdXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2t5VGltZXBpY2tlcklucHV0KSB7XG4gICAgICB0aGlzLnNreVRpbWVwaWNrZXJJbnB1dC5kaXNhYmxlZCA9IHRoaXMuZGlzYWJsZWQ7XG5cbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICBpZiAodGhpcy5za3lUaW1lcGlja2VySW5wdXQuc2VsZWN0ZWRUaW1lICE9PSB0aGlzLiNtb2RlbFZhbHVlKSB7XG4gICAgICAgIHRoaXMuc2t5VGltZXBpY2tlcklucHV0LnNlbGVjdGVkVGltZSA9IHRoaXMuI21vZGVsVmFsdWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvbiwgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzLCBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICNfb25DaGFuZ2UgPSAoXzogYW55KTogdm9pZCA9PiB7fTtcbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICAjX29uVG91Y2hlZCA9ICgpOiB2b2lkID0+IHt9O1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gICNfdmFsaWRhdG9yQ2hhbmdlID0gKCk6IHZvaWQgPT4ge307XG59XG4iXX0=","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SkyAffixModule } from '@skyux/core';\nimport { SkyIconModule } from '@skyux/icon';\nimport { SkyThemeModule } from '@skyux/theme';\nimport { SkyDatetimeResourcesModule } from '../shared/sky-datetime-resources.module';\nimport { SkyTimepickerComponent } from './timepicker.component';\nimport { SkyTimepickerInputDirective } from './timepicker.directive';\nimport * as i0 from \"@angular/core\";\nexport class SkyTimepickerModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyTimepickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyTimepickerModule, declarations: [SkyTimepickerInputDirective, SkyTimepickerComponent], imports: [CommonModule,\n SkyIconModule,\n SkyDatetimeResourcesModule,\n SkyAffixModule,\n SkyThemeModule], exports: [SkyTimepickerInputDirective, SkyTimepickerComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyTimepickerModule, imports: [CommonModule,\n SkyIconModule,\n SkyDatetimeResourcesModule,\n SkyAffixModule,\n SkyThemeModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyTimepickerModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [SkyTimepickerInputDirective, SkyTimepickerComponent],\n imports: [\n CommonModule,\n SkyIconModule,\n SkyDatetimeResourcesModule,\n SkyAffixModule,\n SkyThemeModule,\n ],\n exports: [SkyTimepickerInputDirective, SkyTimepickerComponent],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXBpY2tlci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL3RpbWVwaWNrZXIvdGltZXBpY2tlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM3QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFOUMsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFFckYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDaEUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7O0FBYXJFLE1BQU0sT0FBTyxtQkFBbUI7OEdBQW5CLG1CQUFtQjsrR0FBbkIsbUJBQW1CLGlCQVZmLDJCQUEyQixFQUFFLHNCQUFzQixhQUVoRSxZQUFZO1lBQ1osYUFBYTtZQUNiLDBCQUEwQjtZQUMxQixjQUFjO1lBQ2QsY0FBYyxhQUVOLDJCQUEyQixFQUFFLHNCQUFzQjsrR0FFbEQsbUJBQW1CLFlBUjVCLFlBQVk7WUFDWixhQUFhO1lBQ2IsMEJBQTBCO1lBQzFCLGNBQWM7WUFDZCxjQUFjOzsyRkFJTCxtQkFBbUI7a0JBWC9CLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsMkJBQTJCLEVBQUUsc0JBQXNCLENBQUM7b0JBQ25FLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLGFBQWE7d0JBQ2IsMEJBQTBCO3dCQUMxQixjQUFjO3dCQUNkLGNBQWM7cUJBQ2Y7b0JBQ0QsT0FBTyxFQUFFLENBQUMsMkJBQTJCLEVBQUUsc0JBQXNCLENBQUM7aUJBQy9EIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTa3lBZmZpeE1vZHVsZSB9IGZyb20gJ0Bza3l1eC9jb3JlJztcbmltcG9ydCB7IFNreUljb25Nb2R1bGUgfSBmcm9tICdAc2t5dXgvaWNvbic7XG5pbXBvcnQgeyBTa3lUaGVtZU1vZHVsZSB9IGZyb20gJ0Bza3l1eC90aGVtZSc7XG5cbmltcG9ydCB7IFNreURhdGV0aW1lUmVzb3VyY2VzTW9kdWxlIH0gZnJvbSAnLi4vc2hhcmVkL3NreS1kYXRldGltZS1yZXNvdXJjZXMubW9kdWxlJztcblxuaW1wb3J0IHsgU2t5VGltZXBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4vdGltZXBpY2tlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5VGltZXBpY2tlcklucHV0RGlyZWN0aXZlIH0gZnJvbSAnLi90aW1lcGlja2VyLmRpcmVjdGl2ZSc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1NreVRpbWVwaWNrZXJJbnB1dERpcmVjdGl2ZSwgU2t5VGltZXBpY2tlckNvbXBvbmVudF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgU2t5SWNvbk1vZHVsZSxcbiAgICBTa3lEYXRldGltZVJlc291cmNlc01vZHVsZSxcbiAgICBTa3lBZmZpeE1vZHVsZSxcbiAgICBTa3lUaGVtZU1vZHVsZSxcbiAgXSxcbiAgZXhwb3J0czogW1NreVRpbWVwaWNrZXJJbnB1dERpcmVjdGl2ZSwgU2t5VGltZXBpY2tlckNvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIFNreVRpbWVwaWNrZXJNb2R1bGUge31cbiJdfQ==","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2t5dXgtZGF0ZXRpbWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL3NreXV4LWRhdGV0aW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":["i1.SkyFuzzyDateService","takeUntil","i1","i1.SkyDatepickerCalendarInnerComponent","i2","i1.SkyDatepickerConfigService","nextId","i4","i5","i6","i3.SkyDatepickerComponent","i2.SkyFuzzyDateService","i3","i4.SkyDatepickerComponent","distinctUntilChanged","i4.SkyDatepickerInputDirective"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"skyux-datetime.mjs","sources":["../tmp-esm2022/lib/modules/shared/sky-datetime-resources.module.js","../tmp-esm2022/lib/modules/date-pipe/date.service.js","../tmp-esm2022/lib/modules/date-pipe/date.pipe.js","../tmp-esm2022/lib/modules/datepicker/fuzzy/fuzzy-date.service.js","../tmp-esm2022/lib/modules/date-pipe/fuzzy-date.pipe.js","../tmp-esm2022/lib/modules/date-pipe/date-pipe.module.js","../tmp-esm2022/lib/modules/datepicker/date-formatter.js","../tmp-esm2022/lib/modules/datepicker/calendar/datepicker-calendar-inner.component.js","../tmp-esm2022/lib/modules/datepicker/calendar/datepicker-calendar.service.js","../tmp-esm2022/lib/modules/datepicker/calendar/datepicker-calendar-label.pipe.js","../tmp-esm2022/lib/modules/datepicker/calendar/daypicker-button.component.js","../tmp-esm2022/lib/modules/datepicker/calendar/daypicker-cell.component.js","../tmp-esm2022/lib/modules/datepicker/calendar/daypicker.component.js","../tmp-esm2022/lib/modules/datepicker/calendar/monthpicker.component.js","../tmp-esm2022/lib/modules/datepicker/calendar/yearpicker.component.js","../tmp-esm2022/lib/modules/datepicker/datepicker-config.service.js","../tmp-esm2022/lib/modules/datepicker/calendar/datepicker-calendar.component.js","../tmp-esm2022/lib/modules/datepicker/datepicker-host.service.js","../tmp-esm2022/lib/modules/datepicker/datepicker.component.js","../tmp-esm2022/lib/modules/datepicker/datepicker-input.directive.js","../tmp-esm2022/lib/modules/datepicker/fuzzy/datepicker-input-fuzzy.directive.js","../tmp-esm2022/lib/modules/datepicker/datepicker.module.js","../tmp-esm2022/lib/modules/date-range-picker/types/date-range-calculator-type.js","../tmp-esm2022/lib/modules/date-range-picker/date-range-picker-end-date-resource-key.pipe.js","../tmp-esm2022/lib/modules/date-range-picker/date-range-picker-start-date-resource-key.pipe.js","../tmp-esm2022/lib/modules/date-range-picker/types/date-range-calculator.js","../tmp-esm2022/lib/modules/date-range-picker/types/date-range-calculator-id.js","../tmp-esm2022/lib/modules/date-range-picker/types/date-range-relative-value.js","../tmp-esm2022/lib/modules/date-range-picker/types/date-range-default-calculator-configs.js","../tmp-esm2022/lib/modules/date-range-picker/date-range.service.js","../tmp-esm2022/lib/modules/date-range-picker/date-range-picker.component.js","../tmp-esm2022/lib/modules/date-range-picker/date-range-picker.module.js","../tmp-esm2022/lib/modules/timepicker/timepicker.component.js","../tmp-esm2022/lib/modules/timepicker/timepicker.directive.js","../tmp-esm2022/lib/modules/timepicker/timepicker.module.js","../tmp-esm2022/skyux-datetime.js"],"sourcesContent":["/* istanbul ignore file */\n/**\n * NOTICE: DO NOT MODIFY THIS FILE!\n * The contents of this file were automatically generated by\n * the 'ng generate @skyux/i18n:lib-resources-module lib/modules/shared/sky-datetime' schematic.\n * To update this file, simply rerun the command.\n */\nimport { NgModule } from '@angular/core';\nimport { SkyI18nModule, SkyLibResourcesService, } from '@skyux/i18n';\nimport * as i0 from \"@angular/core\";\nconst RESOURCES = {\n 'EN-AU': {\n skyux_date_range_picker_format_label_last_fiscal_year: {\n message: 'Last financial year',\n },\n skyux_date_range_picker_format_label_this_fiscal_year: {\n message: 'This financial year',\n },\n skyux_date_range_picker_format_label_next_fiscal_year: {\n message: 'Next financial year',\n },\n },\n 'EN-GB': {\n skyux_date_range_picker_format_label_last_fiscal_year: {\n message: 'Last financial year',\n },\n skyux_date_range_picker_format_label_this_fiscal_year: {\n message: 'This financial year',\n },\n skyux_date_range_picker_format_label_next_fiscal_year: {\n message: 'Next financial year',\n },\n },\n 'EN-NZ': {\n skyux_date_range_picker_format_label_last_fiscal_year: {\n message: 'Last financial year',\n },\n skyux_date_range_picker_format_label_this_fiscal_year: {\n message: 'This financial year',\n },\n skyux_date_range_picker_format_label_next_fiscal_year: {\n message: 'Next financial year',\n },\n },\n 'EN-US': {\n skyux_datepicker_format_hint_text: { message: 'Use the format {0}.' },\n skyux_datepicker_trigger_button_label: { message: 'Select date' },\n skyux_datepicker_trigger_button_label_context: {\n message: 'Open calendar for {0}',\n },\n skyux_datepicker_move_calendar_previous_day: { message: 'Previous month' },\n skyux_datepicker_move_calendar_next_day: { message: 'Next month' },\n skyux_datepicker_move_calendar_previous_month: { message: 'Previous year' },\n skyux_datepicker_move_calendar_next_month: { message: 'Next year' },\n skyux_datepicker_move_calendar_previous_year: { message: 'Previous page' },\n skyux_datepicker_move_calendar_next_year: { message: 'Next page' },\n skyux_timepicker_button_label: { message: 'Choose time' },\n skyux_timepicker_button_label_context: {\n message: 'Open time picker for {0}',\n },\n skyux_timepicker_close: { message: 'Done' },\n skyux_date_range_picker_default_label: { message: 'Select a date range' },\n skyux_date_range_picker_end_date_before_start_date_error_label_text: {\n message: 'Change the date range so that the end date is before the start date.',\n },\n skyux_date_range_picker_format_label_specific_range: {\n message: 'Specific range',\n },\n skyux_date_range_picker_format_label_before: { message: 'Before' },\n skyux_date_range_picker_format_label_after: { message: 'After' },\n skyux_date_range_picker_format_label_any_time: { message: 'At any time' },\n skyux_date_range_picker_format_label_yesterday: { message: 'Yesterday' },\n skyux_date_range_picker_format_label_today: { message: 'Today' },\n skyux_date_range_picker_format_label_tomorrow: { message: 'Tomorrow' },\n skyux_date_range_picker_format_label_last_week: { message: 'Last week' },\n skyux_date_range_picker_format_label_this_week: { message: 'This week' },\n skyux_date_range_picker_format_label_next_week: { message: 'Next week' },\n skyux_date_range_picker_format_label_last_month: { message: 'Last month' },\n skyux_date_range_picker_format_label_this_month: { message: 'This month' },\n skyux_date_range_picker_format_label_next_month: { message: 'Next month' },\n skyux_date_range_picker_format_label_last_quarter: {\n message: 'Last quarter',\n },\n skyux_date_range_picker_format_label_this_quarter: {\n message: 'This quarter',\n },\n skyux_date_range_picker_format_label_next_quarter: {\n message: 'Next quarter',\n },\n skyux_date_range_picker_format_label_last_calendar_year: {\n message: 'Last calendar year',\n },\n skyux_date_range_picker_format_label_this_calendar_year: {\n message: 'This calendar year',\n },\n skyux_date_range_picker_format_label_next_calendar_year: {\n message: 'Next calendar year',\n },\n skyux_date_range_picker_format_label_last_fiscal_year: {\n message: 'Last fiscal year',\n },\n skyux_date_range_picker_format_label_this_fiscal_year: {\n message: 'This fiscal year',\n },\n skyux_date_range_picker_format_label_next_fiscal_year: {\n message: 'Next fiscal year',\n },\n skyux_date_range_picker_start_date_label: { message: 'From date' },\n skyux_date_range_picker_end_date_label: { message: 'To date' },\n skyux_date_range_picker_before_date_label: { message: 'Before date' },\n skyux_date_range_picker_after_date_label: { message: 'After date' },\n skyux_date_range_picker_default_aria_label: { message: '{0} for {1}' },\n },\n 'FR-CA': {\n skyux_datepicker_format_hint_text: { message: 'Utilisez le format {0}.' },\n skyux_datepicker_trigger_button_label: { message: 'Sélectionner la date' },\n skyux_datepicker_trigger_button_label_context: {\n message: 'Ouvrir le calendrier pour {0}',\n },\n skyux_datepicker_move_calendar_previous_day: { message: 'Mois précédent' },\n skyux_datepicker_move_calendar_next_day: { message: 'Le mois prochain' },\n skyux_datepicker_move_calendar_previous_month: {\n message: 'Année précédente',\n },\n skyux_datepicker_move_calendar_next_month: { message: 'Année suivante' },\n skyux_datepicker_move_calendar_previous_year: {\n message: 'Page précédente',\n },\n skyux_datepicker_move_calendar_next_year: { message: 'Page suivante' },\n skyux_timepicker_button_label: { message: 'Choisir l’heure' },\n skyux_timepicker_button_label_context: {\n message: 'Ouvrir le sélecteur d’heure pour {0}',\n },\n skyux_timepicker_close: { message: 'Terminé' },\n skyux_date_range_picker_default_label: {\n message: 'Sélectionner une plage de dates',\n },\n skyux_date_range_picker_end_date_before_start_date_error_label_text: {\n message: 'Modifiez la plage de date de façon à ce que la date de fin soit avant la date de début.',\n },\n skyux_date_range_picker_format_label_specific_range: {\n message: 'Plage spécifique',\n },\n skyux_date_range_picker_format_label_before: { message: 'Avant' },\n skyux_date_range_picker_format_label_after: { message: 'Après' },\n skyux_date_range_picker_format_label_any_time: {\n message: 'N’importe quand',\n },\n skyux_date_range_picker_format_label_yesterday: { message: 'Hier' },\n skyux_date_range_picker_format_label_today: { message: 'Aujourd’hui' },\n skyux_date_range_picker_format_label_tomorrow: { message: 'Demain' },\n skyux_date_range_picker_format_label_last_week: {\n message: 'La semaine dernière',\n },\n skyux_date_range_picker_format_label_this_week: {\n message: 'Cette semaine',\n },\n skyux_date_range_picker_format_label_next_week: {\n message: 'La semaine prochaine',\n },\n skyux_date_range_picker_format_label_last_month: {\n message: 'Le mois dernier',\n },\n skyux_date_range_picker_format_label_this_month: { message: 'Ce mois-ci' },\n skyux_date_range_picker_format_label_next_month: {\n message: 'Le mois prochain',\n },\n skyux_date_range_picker_format_label_last_quarter: {\n message: 'Le trimestre dernier',\n },\n skyux_date_range_picker_format_label_this_quarter: {\n message: 'Ce trimestre',\n },\n skyux_date_range_picker_format_label_next_quarter: {\n message: 'Le trimestre prochain',\n },\n skyux_date_range_picker_format_label_last_calendar_year: {\n message: 'Dernière année civile',\n },\n skyux_date_range_picker_format_label_this_calendar_year: {\n message: 'Cette année civile',\n },\n skyux_date_range_picker_format_label_next_calendar_year: {\n message: 'Prochaine année civile',\n },\n skyux_date_range_picker_format_label_last_fiscal_year: {\n message: 'Dernier exercice',\n },\n skyux_date_range_picker_format_label_this_fiscal_year: {\n message: 'L’exercice en cours',\n },\n skyux_date_range_picker_format_label_next_fiscal_year: {\n message: 'Le prochain exercice',\n },\n skyux_date_range_picker_start_date_label: {\n message: 'À partir de la date du',\n },\n skyux_date_range_picker_end_date_label: { message: 'À ce jour' },\n skyux_date_range_picker_before_date_label: { message: 'Date avant' },\n skyux_date_range_picker_after_date_label: { message: 'Date après' },\n skyux_date_range_picker_default_aria_label: { message: '{0} pour {1}' },\n },\n};\nSkyLibResourcesService.addResources(RESOURCES);\n/**\n * Import into any component library module that needs to use resource strings.\n */\nexport class SkyDatetimeResourcesModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDatetimeResourcesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDatetimeResourcesModule, exports: [SkyI18nModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDatetimeResourcesModule, imports: [SkyI18nModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDatetimeResourcesModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [SkyI18nModule],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2t5LWRhdGV0aW1lLXJlc291cmNlcy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL3NoYXJlZC9za3ktZGF0ZXRpbWUtcmVzb3VyY2VzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwQkFBMEI7QUFDMUI7Ozs7O0dBS0c7QUFDSCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFDTCxhQUFhLEVBRWIsc0JBQXNCLEdBQ3ZCLE1BQU0sYUFBYSxDQUFDOztBQUVyQixNQUFNLFNBQVMsR0FBb0M7SUFDakQsT0FBTyxFQUFFO1FBQ1AscURBQXFELEVBQUU7WUFDckQsT0FBTyxFQUFFLHFCQUFxQjtTQUMvQjtRQUNELHFEQUFxRCxFQUFFO1lBQ3JELE9BQU8sRUFBRSxxQkFBcUI7U0FDL0I7UUFDRCxxREFBcUQsRUFBRTtZQUNyRCxPQUFPLEVBQUUscUJBQXFCO1NBQy9CO0tBQ0Y7SUFDRCxPQUFPLEVBQUU7UUFDUCxxREFBcUQsRUFBRTtZQUNyRCxPQUFPLEVBQUUscUJBQXFCO1NBQy9CO1FBQ0QscURBQXFELEVBQUU7WUFDckQsT0FBTyxFQUFFLHFCQUFxQjtTQUMvQjtRQUNELHFEQUFxRCxFQUFFO1lBQ3JELE9BQU8sRUFBRSxxQkFBcUI7U0FDL0I7S0FDRjtJQUNELE9BQU8sRUFBRTtRQUNQLHFEQUFxRCxFQUFFO1lBQ3JELE9BQU8sRUFBRSxxQkFBcUI7U0FDL0I7UUFDRCxxREFBcUQsRUFBRTtZQUNyRCxPQUFPLEVBQUUscUJBQXFCO1NBQy9CO1FBQ0QscURBQXFELEVBQUU7WUFDckQsT0FBTyxFQUFFLHFCQUFxQjtTQUMvQjtLQUNGO0lBQ0QsT0FBTyxFQUFFO1FBQ1AsaUNBQWlDLEVBQUUsRUFBRSxPQUFPLEVBQUUscUJBQXFCLEVBQUU7UUFDckUscUNB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QWMsRUFBRTtLQUN4RTtDQUNGLENBQUM7QUFFRixzQkFBc0IsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7QUFFL0M7O0dBRUc7QUFJSCxNQUFNLE9BQU8sMEJBQTBCOzhHQUExQiwwQkFBMEI7K0dBQTFCLDBCQUEwQixZQUYzQixhQUFhOytHQUVaLDBCQUEwQixZQUYzQixhQUFhOzsyRkFFWiwwQkFBMEI7a0JBSHRDLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsYUFBYSxDQUFDO2lCQUN6QiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGlzdGFuYnVsIGlnbm9yZSBmaWxlICovXG4vKipcbiAqIE5PVElDRTogRE8gTk9UIE1PRElGWSBUSElTIEZJTEUhXG4gKiBUaGUgY29udGVudHMgb2YgdGhpcyBmaWxlIHdlcmUgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnlcbiAqIHRoZSAnbmcgZ2VuZXJhdGUgQHNreXV4L2kxOG46bGliLXJlc291cmNlcy1tb2R1bGUgbGliL21vZHVsZXMvc2hhcmVkL3NreS1kYXRldGltZScgc2NoZW1hdGljLlxuICogVG8gdXBkYXRlIHRoaXMgZmlsZSwgc2ltcGx5IHJlcnVuIHRoZSBjb21tYW5kLlxuICovXG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgU2t5STE4bk1vZHVsZSxcbiAgU2t5TGliUmVzb3VyY2VzLFxuICBTa3lMaWJSZXNvdXJjZXNTZXJ2aWNlLFxufSBmcm9tICdAc2t5dXgvaTE4bic7XG5cbmNvbnN0IFJFU09VUkNFUzogUmVjb3JkPHN0cmluZywgU2t5TGliUmVzb3VyY2VzPiA9IHtcbiAgJ0VOLUFVJzoge1xuICAgIHNreXV4X2RhdGVfcmFuZ2VfcGlja2VyX2Zvcm1hdF9sYWJlbF9sYXN0X2Zpc2NhbF95ZWFyOiB7XG4gICAgICBtZXNzYWdlOiAnTGFzdCBmaW5hbmNpYWwgeWVhcicsXG4gICAgfSxcbiAgICBza3l1eF9kYXRlX3JhbmdlX3BpY2tlcl9mb3JtYXRfbGFiZWxfdGhpc19maXNjYWxfeWVhcjoge1xuICAgICAgbWVzc2FnZTogJ1RoaXMgZmluYW5jaWFsIHllYXInLFxuICAgIH0sXG4gICAgc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZm9ybWF0X2xhYmVsX25leHRfZmlzY2FsX3llYXI6IHtcbiAgICAgIG1lc3NhZ2U6ICdOZXh0IGZpbmFuY2lhbCB5ZWFyJyxcbiAgICB9LFxuICB9LFxuICAnRU4tR0InOiB7XG4gICAgc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZm9ybWF0X2xhYmVsX2xhc3RfZmlzY2FsX3llYXI6IHtcbiAgICAgIG1lc3NhZ2U6ICdMYXN0IGZpbmFuY2lhbCB5ZWFyJyxcbiAgICB9LFxuICAgIHNreXV4X2RhdGVfcmFuZ2VfcGlja2VyX2Zvcm1hdF9sYWJlbF90aGlzX2Zpc2NhbF95ZWFyOiB7XG4gICAgICBtZXNzYWdlOiAnVGhpcyBmaW5hbmNpYWwgeWVhcicsXG4gICAgfSxcbiAgICBza3l1eF9kYXRlX3JhbmdlX3BpY2tlcl9mb3JtYXRfbGFiZWxfbmV4dF9maXNjYWxfeWVhcjoge1xuICAgICAgbWVzc2FnZTogJ05leHQgZmluYW5jaWFsIHllYXInLFxuICAgIH0sXG4gIH0sXG4gICdFTi1OWic6IHtcbiAgICBza3l1eF9kYXRlX3JhbmdlX3BpY2tlcl9mb3JtYXRfbGFiZWxfbGFzdF9maXNjYWxfeWVhcjoge1xuICAgICAgbWVzc2FnZTogJ0xhc3QgZmluYW5jaWFsIHllYXInLFxuICAgIH0sXG4gICAgc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZm9ybWF0X2xhYmVsX3RoaXNfZmlzY2FsX3llYXI6IHtcbiAgICAgIG1lc3NhZ2U6ICdUaGlzIGZpbmFuY2lhbCB5ZWFyJyxcbiAgICB9LFxuICAgIHNreXV4X2RhdGVfcmFuZ2VfcGlja2VyX2Zvcm1hdF9sYWJlbF9uZXh0X2Zpc2NhbF95ZWFyOiB7XG4gICAgICBtZXNzYWdlOiAnTmV4dCBmaW5hbmNpYWwgeWVhcicsXG4gICAgfSxcbiAgfSxcbiAgJ0VOLVVTJzoge1xuICAgIHNreXV4X2RhdGVwaWNrZXJfZm9ybWF0X2hpbnRfdGV4dDogeyBtZXNzYWdlOiAnVXNlIHRoZSBmb3JtYXQgezB9LicgfSxcbiAgICBza3l1eF9kYXRlcGlja2VyX3RyaWdnZXJfYnV0dG9uX2xhYmVsOiB7IG1lc3NhZ2U6ICdTZWxlY3QgZGF0ZScgfSxcbiAgICBza3l1eF9kYXRlcGlja2VyX3RyaWdnZXJfYnV0dG9uX2xhYmVsX2NvbnRleHQ6IHtcbiAgICAgIG1lc3NhZ2U6ICdPcGVuIGNhbGVuZGFyIGZvciB7MH0nLFxuICAgIH0sXG4gICAgc2t5dXhfZGF0ZXBpY2tlcl9tb3ZlX2NhbGVuZGFyX3ByZXZpb3VzX2RheTogeyBtZXNzYWdlOiAnUHJldmlvdXMgbW9udGgnIH0sXG4gICAgc2t5dXhfZGF0ZXBpY2tlcl9tb3ZlX2NhbGVuZGFyX25leHRfZGF5OiB7IG1lc3NhZ2U6ICdOZXh0IG1vbnRoJyB9LFxuICAgIHNreXV4X2RhdGVwaWNrZXJfbW92ZV9jYWxlbmRhcl9wcmV2aW91c19tb250aDogeyBtZXNzYWdlOiAnUHJldmlvdXMgeWVhcicgfSxcbiAgICBza3l1eF9kYXRlcGlja2VyX21vdmVfY2FsZW5kYXJfbmV4dF9tb250aDogeyBtZXNzYWdlOiAnTmV4dCB5ZWFyJyB9LFxuICAgIHNreXV4X2RhdGVwaWNrZXJfbW92ZV9jYWxlbmRhcl9wcmV2aW91c195ZWFyOiB7IG1lc3NhZ2U6ICdQcmV2aW91cyBwYWdlJyB9LFxuICAgIHNreXV4X2RhdGVwaWNrZXJfbW92ZV9jYWxlbmRhcl9uZXh0X3llYXI6IHsgbWVzc2FnZTogJ05leHQgcGFnZScgfSxcbiAgICBza3l1eF90aW1lcGlja2VyX2J1dHRvbl9sYWJlbDogeyBtZXNzYWdlOiAnQ2hvb3NlIHRpbWUnIH0sXG4gICAgc2t5dXhfdGltZXBpY2tlcl9idXR0b25fbGFiZWxfY29udGV4dDoge1xuICAgICAgbWVzc2FnZTogJ09wZW4gdGltZSBwaWNrZXIgZm9yIHswfScsXG4gICAgfSxcbiAgICBza3l1eF90aW1lcGlja2VyX2Nsb3NlOiB7IG1lc3NhZ2U6ICdEb25lJyB9LFxuICAgIHNreXV4X2RhdGVfcmFuZ2VfcGlja2VyX2RlZmF1bHRfbGFiZWw6IHsgbWVzc2FnZTogJ1NlbGVjdCBhIGRhdGUgcmFuZ2UnIH0sXG4gICAgc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZW5kX2RhdGVfYmVmb3JlX3N0YXJ0X2RhdGVfZXJyb3JfbGFiZWxfdGV4dDoge1xuICAgICAgbWVzc2FnZTpcbiAgICAgICAgJ0NoYW5nZSB0aGUgZGF0ZSByYW5nZSBzbyB0aGF0IHRoZSBlbmQgZGF0ZSBpcyBiZWZvcmUgdGhlIHN0YXJ0IGRhdGUuJyxcbiAgICB9LFxuICAgIHNreXV4X2RhdGVfcmFuZ2VfcGlja2VyX2Zvcm1hdF9sYWJlbF9zcGVjaWZpY19yYW5nZToge1xuICAgICAgbWVzc2FnZTogJ1NwZWNpZmljIHJhbmdlJyxcbiAgICB9LFxuICAgIHNreXV4X2RhdGVfcmFuZ2VfcGlja2VyX2Zvcm1hdF9sYWJlbF9iZWZvcmU6IHsgbWVzc2FnZTogJ0JlZm9yZScgfSxcbiAgICBza3l1eF9kYXRlX3JhbmdlX3BpY2tlcl9mb3JtYXRfbGFiZWxfYWZ0ZXI6IHsgbWVzc2FnZTogJ0FmdGVyJyB9LFxuICAgIHNreXV4X2RhdGVfcmFuZ2VfcGlja2VyX2Zvcm1hdF9sYWJlbF9hbnlfdGltZTogeyBtZXNzYWdlOiAnQXQgYW55IHRpbWUnIH0sXG4gICAgc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZm9ybWF0X2xhYmVsX3llc3RlcmRheTogeyBtZXNzYWdlOiAnWWVzdGVyZGF5JyB9LFxuICAgIHNreXV4X2RhdGVfcmFuZ2VfcGlja2VyX2Zvcm1hdF9sYWJlbF90b2RheTogeyBtZXNzYWdlOiAnVG9kYXknIH0sXG4gICAgc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZm9ybWF0X2xhYmVsX3RvbW9ycm93OiB7IG1lc3NhZ2U6ICdUb21vcnJvdycgfSxcbiAgICBza3l1eF9kYXRlX3JhbmdlX3BpY2tlcl9mb3JtYXRfbGFiZWxfbGFzdF93ZWVrOiB7IG1lc3NhZ2U6ICdMYXN0IHdlZWsnIH0sXG4gICAgc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZm9ybWF0X2xhYmVsX3RoaXNfd2VlazogeyBtZXNzYWdlOiAnVGhpcyB3ZWVrJyB9LFxuICAgIHNreXV4X2RhdGVfcmFuZ2VfcGlja2VyX2Zvcm1hdF9sYWJlbF9uZXh0X3dlZWs6IHsgbWVzc2FnZTogJ05leHQgd2VlaycgfSxcbiAgICBza3l1eF9kYXRlX3JhbmdlX3BpY2tlcl9mb3JtYXRfbGFiZWxfbGFzdF9tb250aDogeyBtZXNzYWdlOiAnTGFzdCBtb250aCcgfSxcbiAgICBza3l1eF9kYXRlX3JhbmdlX3BpY2tlcl9mb3JtYXRfbGFiZWxfdGhpc19tb250aDogeyBtZXNzYWdlOiAnVGhpcyBtb250aCcgfSxcbiAgICBza3l1eF9kYXRlX3JhbmdlX3BpY2tlcl9mb3JtYXRfbGFiZWxfbmV4dF9tb250aDogeyBtZXNzYWdlOiAnTmV4dCBtb250aCcgfSxcbiAgICBza3l1eF9kYXRlX3JhbmdlX3BpY2tlcl9mb3JtYXRfbGFiZWxfbGFzdF9xdWFydGVyOiB7XG4gICAgICBtZXNzYWdlOiAnTGFzdCBxdWFydGVyJyxcbiAgICB9LFxuICAgIHNreXV4X2RhdGVfcmFuZ2VfcGlja2VyX2Zvcm1hdF9sYWJlbF90aGlzX3F1YXJ0ZXI6IHtcbiAgICAgIG1lc3NhZ2U6ICdUaGlzIHF1YXJ0ZXInLFxuICAgIH0sXG4gICAgc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZm9ybWF0X2xhYmVsX25leHRfcXVhcnRlcjoge1xuICAgICAgbWVzc2FnZTogJ05leHQgcXVhcnRlcicsXG4gICAgfSxcbiAgICBza3l1eF9kYXRlX3JhbmdlX3BpY2tlcl9mb3JtYXRfbGFiZWxfbGFzdF9jYWxlbmRhcl95ZWFyOiB7XG4gICAgICBtZXNzYWdlOiAnTGFzdCBjYWxlbmRhciB5ZWFyJyxcbiAgICB9LFxuICAgIHNreXV4X2RhdGVfcmFuZ2VfcGlja2VyX2Zvcm1hdF9sYWJlbF90aGlzX2NhbGVuZGFyX3llYXI6IHtcbiAgICAgIG1lc3NhZ2U6ICdUaGlzIGNhbGVuZGFyIHllYXInLFxuICAgIH0sXG4gICAgc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZm9ybWF0X2xhYmVsX25leHRfY2FsZW5kYXJfeWVhcjoge1xuICAgICAgbWVzc2FnZTogJ05leHQgY2FsZW5kYXIgeWVhcicsXG4gICAgfSxcbiAgICBza3l1eF9kYXRlX3JhbmdlX3BpY2tlcl9mb3JtYXRfbGFiZWxfbGFzdF9maXNjYWxfeWVhcjoge1xuICAgICAgbWVzc2FnZTogJ0xhc3QgZmlzY2FsIHllYXInLFxuICAgIH0sXG4gICAgc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZm9ybWF0X2xhYmVsX3RoaXNfZmlzY2FsX3llYXI6IHtcbiAgICAgIG1lc3NhZ2U6ICdUaGlzIGZpc2NhbCB5ZWFyJyxcbiAgICB9LFxuICAgIHNreXV4X2RhdGVfcmFuZ2VfcGlja2VyX2Zvcm1hdF9sYWJlbF9uZXh0X2Zpc2NhbF95ZWFyOiB7XG4gICAgICBtZXNzYWdlOiAnTmV4dCBmaXNjYWwgeWVhcicsXG4gICAgfSxcbiAgICBza3l1eF9kYXRlX3JhbmdlX3BpY2tlcl9zdGFydF9kYXRlX2xhYmVsOiB7IG1lc3NhZ2U6ICdGcm9tIGRhdGUnIH0sXG4gICAgc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZW5kX2RhdGVfbGFiZWw6IHsgbWVzc2FnZTogJ1RvIGRhdGUnIH0sXG4gICAgc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfYmVmb3JlX2RhdGVfbGFiZWw6IHsgbWVzc2FnZTogJ0JlZm9yZSBkYXRlJyB9LFxuICAgIHNreXV4X2RhdGVfcmFuZ2VfcGlja2VyX2FmdGVyX2RhdGVfbGFiZWw6IHsgbWVzc2FnZTogJ0FmdGVyIGRhdGUnIH0sXG4gICAgc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZGVmYXVsdF9hcmlhX2xhYmVsOiB7IG1lc3NhZ2U6ICd7MH0gZm9yIHsxfScgfSxcbiAgfSxcbiAgJ0ZSLUNBJzoge1xuICAgIHNreXV4X2RhdGVwaWNrZXJfZm9ybWF0X2hpbnRfdGV4dDogeyBtZXNzYWdlOiAnVXRpbGlzZXogbGUgZm9ybWF0IHswfS4nIH0sXG4gICAgc2t5dXhfZGF0ZXBpY2tlcl90cmlnZ2VyX2J1dHRvbl9sYWJlbDogeyBtZXNzYWdlOiAnU8OpbGVjdGlvbm5lciBsYSBkYXRlJyB9LFxuICAgIHNreXV4X2RhdGVwaWNrZXJfdHJpZ2dlcl9idXR0b25fbGFiZWxfY29udGV4dDoge1xuICAgICAgbWVzc2FnZTogJ091dnJpciBsZSBjYWxlbmRyaWVyIHBvdXIgezB9JyxcbiAgICB9LFxuICAgIHNreXV4X2RhdGVwaWNrZXJfbW92ZV9jYWxlbmRhcl9wcmV2aW91c19kYXk6IHsgbWVzc2FnZTogJ01vaXMgcHLDqWPDqWRlbnQnIH0sXG4gICAgc2t5dXhfZGF0ZXBpY2tlcl9tb3ZlX2NhbGVuZGFyX25leHRfZGF5OiB7IG1lc3NhZ2U6ICdMZSBtb2lzIHByb2NoYWluJyB9LFxuICAgIHNreXV4X2RhdGVwaWNrZXJfbW92ZV9jYWxlbmRhcl9wcmV2aW91c19tb250aDoge1xuICAgICAgbWVzc2FnZTogJ0FubsOpZSBwcsOpY8OpZGVudGUnLFxuICAgIH0sXG4gICAgc2t5dXhfZGF0ZXBpY2tlcl9tb3ZlX2NhbGVuZGFyX25leHRfbW9udGg6IHsgbWVzc2FnZTogJ0FubsOpZSBzdWl2YW50ZScgfSxcbiAgICBza3l1eF9kYXRlcGlja2VyX21vdmVfY2FsZW5kYXJfcHJldmlvdXNfeWVhcjoge1xuICAgICAgbWVzc2FnZTogJ1BhZ2UgcHLDqWPDqWRlbnRlJyxcbiAgICB9LFxuICAgIHNreXV4X2RhdGVwaWNrZXJfbW92ZV9jYWxlbmRhcl9uZXh0X3llYXI6IHsgbWVzc2FnZTogJ1BhZ2Ugc3VpdmFudGUnIH0sXG4gICAgc2t5dXhfdGltZXBpY2tlcl9idXR0b25fbGFiZWw6IHsgbWVzc2FnZTogJ0Nob2lzaXIgbOKAmWhldXJlJyB9LFxuICAgIHNreXV4X3RpbWVwaWNrZXJfYnV0dG9uX2xhYmVsX2NvbnRleHQ6IHtcbiAgICAgIG1lc3NhZ2U6ICdPdXZyaXIgbGUgc8OpbGVjdGV1ciBk4oCZaGV1cmUgcG91ciB7MH0nLFxuICAgIH0sXG4gICAgc2t5dXhfdGltZXBpY2tlcl9jbG9zZTogeyBtZXNzYWdlOiAnVGVybWluw6knIH0sXG4gICAgc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZGVmYXVsdF9sYWJlbDoge1xuICAgICAgbWVzc2FnZTogJ1PDqWxlY3Rpb25uZXIgdW5lIHBsYWdlIGRlIGRhdGVzJyxcbiAgICB9LFxuICAgIHNreXV4X2RhdGVfcmFuZ2VfcGlja2VyX2VuZF9kYXRlX2JlZm9yZV9zdGFydF9kYXRlX2Vycm9yX2xhYmVsX3RleHQ6IHtcbiAgICAgIG1lc3NhZ2U6XG4gICAgICAgICdNb2RpZmlleiBsYSBwbGFnZSBkZSBkYXRlIGRlIGZhw6dvbiDDoCBjZSBxdWUgbGEgZGF0ZSBkZSBmaW4gc29pdCBhdmFudCBsYSBkYXRlIGRlIGTDqWJ1dC4nLFxuICAgIH0sXG4gICAgc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZm9ybWF0X2xhYmVsX3NwZWNpZmljX3JhbmdlOiB7XG4gICAgICBtZXNzYWdlOiAnUGxhZ2Ugc3DDqWNpZmlxdWUnLFxuICAgIH0sXG4gICAgc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZm9ybWF0X2xhYmVsX2JlZm9yZTogeyBtZXNzYWdlOiAnQXZhbnQnIH0sXG4gICAgc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZm9ybWF0X2xhYmVsX2FmdGVyOiB7IG1lc3NhZ2U6ICdBcHLDqHMnIH0sXG4gICAgc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZm9ybWF0X2xhYmVsX2FueV90aW1lOiB7XG4gICAgICBtZXNzYWdlOiAnTuKAmWltcG9ydGUgcXVhbmQnLFxuICAgIH0sXG4gICAgc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZm9ybWF0X2xhYmVsX3llc3RlcmRheTogeyBtZXNzYWdlOiAnSGllcicgfSxcbiAgICBza3l1eF9kYXRlX3JhbmdlX3BpY2tlcl9mb3JtYXRfbGFiZWxfdG9kYXk6IHsgbWVzc2FnZTogJ0F1am91cmTigJlodWknIH0sXG4gICAgc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZm9ybWF0X2xhYmVsX3RvbW9ycm93OiB7IG1lc3NhZ2U6ICdEZW1haW4nIH0sXG4gICAgc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZm9ybWF0X2xhYmVsX2xhc3Rfd2Vlazoge1xuICAgICAgbWVzc2FnZTogJ0xhIHNlbWFpbmUgZGVybmnDqHJlJyxcbiAgICB9LFxuICAgIHNreXV4X2RhdGVfcmFuZ2VfcGlja2VyX2Zvcm1hdF9sYWJlbF90aGlzX3dlZWs6IHtcbiAgICAgIG1lc3NhZ2U6ICdDZXR0ZSBzZW1haW5lJyxcbiAgICB9LFxuICAgIHNreXV4X2RhdGVfcmFuZ2VfcGlja2VyX2Zvcm1hdF9sYWJlbF9uZXh0X3dlZWs6IHtcbiAgICAgIG1lc3NhZ2U6ICdMYSBzZW1haW5lIHByb2NoYWluZScsXG4gICAgfSxcbiAgICBza3l1eF9kYXRlX3JhbmdlX3BpY2tlcl9mb3JtYXRfbGFiZWxfbGFzdF9tb250aDoge1xuICAgICAgbWVzc2FnZTogJ0xlIG1vaXMgZGVybmllcicsXG4gICAgfSxcbiAgICBza3l1eF9kYXRlX3JhbmdlX3BpY2tlcl9mb3JtYXRfbGFiZWxfdGhpc19tb250aDogeyBtZXNzYWdlOiAnQ2UgbW9pcy1jaScgfSxcbiAgICBza3l1eF9kYXRlX3JhbmdlX3BpY2tlcl9mb3JtYXRfbGFiZWxfbmV4dF9tb250aDoge1xuICAgICAgbWVzc2FnZTogJ0xlIG1vaXMgcHJvY2hhaW4nLFxuICAgIH0sXG4gICAgc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZm9ybWF0X2xhYmVsX2xhc3RfcXVhcnRlcjoge1xuICAgICAgbWVzc2FnZTogJ0xlIHRyaW1lc3RyZSBkZXJuaWVyJyxcbiAgICB9LFxuICAgIHNreXV4X2RhdGVfcmFuZ2VfcGlja2VyX2Zvcm1hdF9sYWJlbF90aGlzX3F1YXJ0ZXI6IHtcbiAgICAgIG1lc3NhZ2U6ICdDZSB0cmltZXN0cmUnLFxuICAgIH0sXG4gICAgc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZm9ybWF0X2xhYmVsX25leHRfcXVhcnRlcjoge1xuICAgICAgbWVzc2FnZTogJ0xlIHRyaW1lc3RyZSBwcm9jaGFpbicsXG4gICAgfSxcbiAgICBza3l1eF9kYXRlX3JhbmdlX3BpY2tlcl9mb3JtYXRfbGFiZWxfbGFzdF9jYWxlbmRhcl95ZWFyOiB7XG4gICAgICBtZXNzYWdlOiAnRGVybmnDqHJlIGFubsOpZSBjaXZpbGUnLFxuICAgIH0sXG4gICAgc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZm9ybWF0X2xhYmVsX3RoaXNfY2FsZW5kYXJfeWVhcjoge1xuICAgICAgbWVzc2FnZTogJ0NldHRlIGFubsOpZSBjaXZpbGUnLFxuICAgIH0sXG4gICAgc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZm9ybWF0X2xhYmVsX25leHRfY2FsZW5kYXJfeWVhcjoge1xuICAgICAgbWVzc2FnZTogJ1Byb2NoYWluZSBhbm7DqWUgY2l2aWxlJyxcbiAgICB9LFxuICAgIHNreXV4X2RhdGVfcmFuZ2VfcGlja2VyX2Zvcm1hdF9sYWJlbF9sYXN0X2Zpc2NhbF95ZWFyOiB7XG4gICAgICBtZXNzYWdlOiAnRGVybmllciBleGVyY2ljZScsXG4gICAgfSxcbiAgICBza3l1eF9kYXRlX3JhbmdlX3BpY2tlcl9mb3JtYXRfbGFiZWxfdGhpc19maXNjYWxfeWVhcjoge1xuICAgICAgbWVzc2FnZTogJ0zigJlleGVyY2ljZSBlbiBjb3VycycsXG4gICAgfSxcbiAgICBza3l1eF9kYXRlX3JhbmdlX3BpY2tlcl9mb3JtYXRfbGFiZWxfbmV4dF9maXNjYWxfeWVhcjoge1xuICAgICAgbWVzc2FnZTogJ0xlIHByb2NoYWluIGV4ZXJjaWNlJyxcbiAgICB9LFxuICAgIHNreXV4X2RhdGVfcmFuZ2VfcGlja2VyX3N0YXJ0X2RhdGVfbGFiZWw6IHtcbiAgICAgIG1lc3NhZ2U6ICfDgCBwYXJ0aXIgZGUgbGEgZGF0ZSBkdScsXG4gICAgfSxcbiAgICBza3l1eF9kYXRlX3JhbmdlX3BpY2tlcl9lbmRfZGF0ZV9sYWJlbDogeyBtZXNzYWdlOiAnw4AgY2Ugam91cicgfSxcbiAgICBza3l1eF9kYXRlX3JhbmdlX3BpY2tlcl9iZWZvcmVfZGF0ZV9sYWJlbDogeyBtZXNzYWdlOiAnRGF0ZSBhdmFudCcgfSxcbiAgICBza3l1eF9kYXRlX3JhbmdlX3BpY2tlcl9hZnRlcl9kYXRlX2xhYmVsOiB7IG1lc3NhZ2U6ICdEYXRlIGFwcsOocycgfSxcbiAgICBza3l1eF9kYXRlX3JhbmdlX3BpY2tlcl9kZWZhdWx0X2FyaWFfbGFiZWw6IHsgbWVzc2FnZTogJ3swfSBwb3VyIHsxfScgfSxcbiAgfSxcbn07XG5cblNreUxpYlJlc291cmNlc1NlcnZpY2UuYWRkUmVzb3VyY2VzKFJFU09VUkNFUyk7XG5cbi8qKlxuICogSW1wb3J0IGludG8gYW55IGNvbXBvbmVudCBsaWJyYXJ5IG1vZHVsZSB0aGF0IG5lZWRzIHRvIHVzZSByZXNvdXJjZSBzdHJpbmdzLlxuICovXG5ATmdNb2R1bGUoe1xuICBleHBvcnRzOiBbU2t5STE4bk1vZHVsZV0sXG59KVxuZXhwb3J0IGNsYXNzIFNreURhdGV0aW1lUmVzb3VyY2VzTW9kdWxlIHt9XG4iXX0=","// This class is mostly ported from the Angular 4.x DatePipe in order to maintain the old\n// behavior of using the `Intl` API for formatting dates rather than having to register every\n// supported locale.\n// https://github.com/angular/angular/blob/4.4.x/packages/common/src/pipes/date_pipe.ts\nimport { Injectable, inject } from '@angular/core';\nimport { SkyAppLocaleProvider, SkyIntlDateFormatter, } from '@skyux/i18n';\nimport moment from 'moment';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport * as i0 from \"@angular/core\";\n/**\n * @internal\n */\nexport class SkyDateService {\n /* spell-checker:disable */\n // See: https://github.com/angular/angular/blob/17.3.x/packages/common/src/pipes/date_pipe.ts\n // See: https://www.ibm.com/docs/en/app-connect/11.0.0?topic=function-formatting-parsing-datetimes-as-strings\n #ALIASES = {\n // TODO: replace with 'M/d/yy, h:mm a' in a breaking change.\n short: 'yMdjm',\n // TODO: replace with 'MMM d, y, h:mm:ss a' in a breaking change.\n medium: 'yMMMdjms',\n // TODO: This format was modified from 'MMMM d, y, h:mm:ss a z' due to the limitations of the Intl API.\n long: 'MMMM d, y, h:mm:ss a Z',\n // TODO: This format was modified from 'EEEE, MMMM d, y, h:mm:ss a zzzz' due to the limitations of the Intl API.\n full: 'EEEE, MMMM d, y, h:mm:ss a z',\n // TODO: Replace with 'M/d/yy' in a breaking change.\n shortDate: 'yMd',\n // TODO: Replace with 'MMM d, y' in a breaking change.\n mediumDate: 'yMMMd',\n // TODO: Replace with 'MMMM d, y' in a breaking change.\n longDate: 'yMMMMd',\n // TODO: Replace with 'EEEE, MMMM d, y' in a breaking change.\n fullDate: 'yMMMMEEEEd',\n // TODO: Replace with 'h:mm a' in a breaking change.\n shortTime: 'jm',\n // TODO: Replace with 'h:mm:ss a' in a breaking change.\n mediumTime: 'jms',\n // TODO: This format was modified from 'h:mm:ss a z' due to the limitations of the Intl API.\n longTime: 'h:mm:ss a Z',\n // TODO: This format was modified from 'h:mm:ss a zzzz' due to the limitations of the Intl API.\n fullTime: 'h:mm:ss a z',\n };\n /* spell-checker:enable */\n #defaultFormat = 'short';\n #defaultLocale = 'en-US';\n #ngUnsubscribe = new Subject();\n constructor() {\n inject(SkyAppLocaleProvider)\n .getLocaleInfo()\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((localeInfo) => {\n this.#defaultLocale = localeInfo.locale;\n });\n }\n ngOnDestroy() {\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n }\n format(value, locale, format) {\n let date;\n const pattern = format || this.#defaultFormat;\n if (isBlank(value) || value !== value) {\n return undefined;\n }\n // Moment will interpret any non-date object as today's date. That would\n // introduce a breaking change, so we check for it here. This could probably be removed\n // in a future major version.\n if (value instanceof Object && !(value instanceof Date)) {\n throw new Error('Invalid value: ' + value);\n }\n // Use moment to avoid inconsistencies between browsers interpreting the value differently.\n const momentDate = moment(value);\n if (momentDate.isValid()) {\n date = momentDate.toDate();\n }\n else {\n throw new Error('Invalid value: ' + value);\n }\n return SkyIntlDateFormatter.format(date, locale || this.#defaultLocale, this.#ALIASES[pattern] || pattern);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDateService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDateService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: () => [] });\nfunction isBlank(obj) {\n return !obj;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2RhdGV0aW1lL3NyYy9saWIvbW9kdWxlcy9kYXRlLXBpcGUvZGF0ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHlGQUF5RjtBQUN6Riw2RkFBNkY7QUFDN0Ysb0JBQW9CO0FBQ3BCLHVGQUF1RjtBQUN2RixPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBRUwsb0JBQW9CLEVBQ3BCLG9CQUFvQixHQUNyQixNQUFNLGFBQWEsQ0FBQztBQUVyQixPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBRTNDOztHQUVHO0FBSUgsTUFBTSxPQUFPLGNBQWM7SUFDekIsMkJBQTJCO0lBQzNCLDZGQUE2RjtJQUM3Riw2R0FBNkc7SUFDN0csUUFBUSxHQUEyQjtRQUNqQyw0REFBNEQ7UUFDNUQsS0FBSyxFQUFFLE9BQU87UUFDZCxpRUFBaUU7UUFDakUsTUFBTSxFQUFFLFVBQVU7UUFDbEIsdUdBQXVHO1FBQ3ZHLElBQUksRUFBRSx3QkFBd0I7UUFDOUIsZ0hBQWdIO1FBQ2hILElBQUksRUFBRSw4QkFBOEI7UUFDcEMsb0RBQW9EO1FBQ3BELFNBQVMsRUFBRSxLQUFLO1FBQ2hCLHNEQUFzRDtRQUN0RCxVQUFVLEVBQUUsT0FBTztRQUNuQix1REFBdUQ7UUFDdkQsUUFBUSxFQUFFLFFBQVE7UUFDbEIsNkRBQTZEO1FBQzdELFFBQVEsRUFBRSxZQUFZO1FBQ3RCLG9EQUFvRDtRQUNwRCxTQUFTLEVBQUUsSUFBSTtRQUNmLHVEQUF1RDtRQUN2RCxVQUFVLEVBQUUsS0FBSztRQUNqQiw0RkFBNEY7UUFDNUYsUUFBUSxFQUFFLGFBQWE7UUFDdkIsK0ZBQStGO1FBQy9GLFFBQVEsRUFBRSxhQUFhO0tBQ3hCLENBQUM7SUFDRiwwQkFBMEI7SUFFMUIsY0FBYyxHQUFHLE9BQU8sQ0FBQztJQUN6QixjQUFjLEdBQUcsT0FBTyxDQUFDO0lBQ3pCLGNBQWMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBRXJDO1FBQ0UsTUFBTSxDQUFDLG9CQUFvQixDQUFDO2FBQ3pCLGFBQWEsRUFBRTthQUNmLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2FBQ3BDLFNBQVMsQ0FBQyxDQUFDLFVBQTRCLEVBQUUsRUFBRTtZQUMxQyxJQUFJLENBQUMsY0FBYyxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUM7UUFDMUMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVNLE1BQU0sQ0FDWCxLQUFVLEVBQ1YsTUFBZSxFQUNmLE1BQWU7UUFFZixJQUFJLElBQVUsQ0FBQztRQUNmLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDO1FBRTlDLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUN0QyxPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO1FBRUQsd0VBQXdFO1FBQ3hFLHVGQUF1RjtRQUN2Riw2QkFBNkI7UUFDN0IsSUFBSSxLQUFLLFlBQVksTUFBTSxJQUFJLENBQUMsQ0FBQyxLQUFLLFlBQVksSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUN4RCxNQUFNLElBQUksS0FBSyxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxDQUFDO1FBQzdDLENBQUM7UUFFRCwyRkFBMkY7UUFDM0YsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLElBQUksVUFBVSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7WUFDekIsSUFBSSxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUM3QixDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sSUFBSSxLQUFLLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDLENBQUM7UUFDN0MsQ0FBQztRQUVELE9BQU8sb0JBQW9CLENBQUMsTUFBTSxDQUNoQyxJQUFJLEVBQ0osTUFBTSxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQzdCLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksT0FBTyxDQUNsQyxDQUFDO0lBQ0osQ0FBQzs4R0FsRlUsY0FBYztrSEFBZCxjQUFjLGNBRmIsTUFBTTs7MkZBRVAsY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7O0FBc0ZELFNBQVMsT0FBTyxDQUFDLEdBQVE7SUFDdkIsT0FBTyxDQUFDLEdBQUcsQ0FBQztBQUNkLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGlzIGNsYXNzIGlzIG1vc3RseSBwb3J0ZWQgZnJvbSB0aGUgQW5ndWxhciA0LnggRGF0ZVBpcGUgaW4gb3JkZXIgdG8gbWFpbnRhaW4gdGhlIG9sZFxuLy8gYmVoYXZpb3Igb2YgdXNpbmcgdGhlIGBJbnRsYCBBUEkgZm9yIGZvcm1hdHRpbmcgZGF0ZXMgcmF0aGVyIHRoYW4gaGF2aW5nIHRvIHJlZ2lzdGVyIGV2ZXJ5XG4vLyBzdXBwb3J0ZWQgbG9jYWxlLlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9ibG9iLzQuNC54L3BhY2thZ2VzL2NvbW1vbi9zcmMvcGlwZXMvZGF0ZV9waXBlLnRzXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBPbkRlc3Ryb3ksIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgU2t5QXBwTG9jYWxlSW5mbyxcbiAgU2t5QXBwTG9jYWxlUHJvdmlkZXIsXG4gIFNreUludGxEYXRlRm9ybWF0dGVyLFxufSBmcm9tICdAc2t5dXgvaTE4bic7XG5cbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFNreURhdGVTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgLyogc3BlbGwtY2hlY2tlcjpkaXNhYmxlICovXG4gIC8vIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9ibG9iLzE3LjMueC9wYWNrYWdlcy9jb21tb24vc3JjL3BpcGVzL2RhdGVfcGlwZS50c1xuICAvLyBTZWU6IGh0dHBzOi8vd3d3LmlibS5jb20vZG9jcy9lbi9hcHAtY29ubmVjdC8xMS4wLjA/dG9waWM9ZnVuY3Rpb24tZm9ybWF0dGluZy1wYXJzaW5nLWRhdGV0aW1lcy1hcy1zdHJpbmdzXG4gICNBTElBU0VTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgIC8vIFRPRE86IHJlcGxhY2Ugd2l0aCAnTS9kL3l5LCBoOm1tIGEnIGluIGEgYnJlYWtpbmcgY2hhbmdlLlxuICAgIHNob3J0OiAneU1kam0nLFxuICAgIC8vIFRPRE86IHJlcGxhY2Ugd2l0aCAnTU1NIGQsIHksIGg6bW06c3MgYScgaW4gYSBicmVha2luZyBjaGFuZ2UuXG4gICAgbWVkaXVtOiAneU1NTWRqbXMnLFxuICAgIC8vIFRPRE86IFRoaXMgZm9ybWF0IHdhcyBtb2RpZmllZCBmcm9tICdNTU1NIGQsIHksIGg6bW06c3MgYSB6JyBkdWUgdG8gdGhlIGxpbWl0YXRpb25zIG9mIHRoZSBJbnRsIEFQSS5cbiAgICBsb25nOiAnTU1NTSBkLCB5LCBoOm1tOnNzIGEgWicsXG4gICAgLy8gVE9ETzogVGhpcyBmb3JtYXQgd2FzIG1vZGlmaWVkIGZyb20gJ0VFRUUsIE1NTU0gZCwgeSwgaDptbTpzcyBhIHp6enonIGR1ZSB0byB0aGUgbGltaXRhdGlvbnMgb2YgdGhlIEludGwgQVBJLlxuICAgIGZ1bGw6ICdFRUVFLCBNTU1NIGQsIHksIGg6bW06c3MgYSB6JyxcbiAgICAvLyBUT0RPOiBSZXBsYWNlIHdpdGggJ00vZC95eScgaW4gYSBicmVha2luZyBjaGFuZ2UuXG4gICAgc2hvcnREYXRlOiAneU1kJyxcbiAgICAvLyBUT0RPOiBSZXBsYWNlIHdpdGggJ01NTSBkLCB5JyBpbiBhIGJyZWFraW5nIGNoYW5nZS5cbiAgICBtZWRpdW1EYXRlOiAneU1NTWQnLFxuICAgIC8vIFRPRE86IFJlcGxhY2Ugd2l0aCAnTU1NTSBkLCB5JyBpbiBhIGJyZWFraW5nIGNoYW5nZS5cbiAgICBsb25nRGF0ZTogJ3lNTU1NZCcsXG4gICAgLy8gVE9ETzogUmVwbGFjZSB3aXRoICdFRUVFLCBNTU1NIGQsIHknIGluIGEgYnJlYWtpbmcgY2hhbmdlLlxuICAgIGZ1bGxEYXRlOiAneU1NTU1FRUVFZCcsXG4gICAgLy8gVE9ETzogUmVwbGFjZSB3aXRoICdoOm1tIGEnIGluIGEgYnJlYWtpbmcgY2hhbmdlLlxuICAgIHNob3J0VGltZTogJ2ptJyxcbiAgICAvLyBUT0RPOiBSZXBsYWNlIHdpdGggJ2g6bW06c3MgYScgaW4gYSBicmVha2luZyBjaGFuZ2UuXG4gICAgbWVkaXVtVGltZTogJ2ptcycsXG4gICAgLy8gVE9ETzogVGhpcyBmb3JtYXQgd2FzIG1vZGlmaWVkIGZyb20gJ2g6bW06c3MgYSB6JyBkdWUgdG8gdGhlIGxpbWl0YXRpb25zIG9mIHRoZSBJbnRsIEFQSS5cbiAgICBsb25nVGltZTogJ2g6bW06c3MgYSBaJyxcbiAgICAvLyBUT0RPOiBUaGlzIGZvcm1hdCB3YXMgbW9kaWZpZWQgZnJvbSAnaDptbTpzcyBhIHp6enonIGR1ZSB0byB0aGUgbGltaXRhdGlvbnMgb2YgdGhlIEludGwgQVBJLlxuICAgIGZ1bGxUaW1lOiAnaDptbTpzcyBhIHonLFxuICB9O1xuICAvKiBzcGVsbC1jaGVja2VyOmVuYWJsZSAqL1xuXG4gICNkZWZhdWx0Rm9ybWF0ID0gJ3Nob3J0JztcbiAgI2RlZmF1bHRMb2NhbGUgPSAnZW4tVVMnO1xuICAjbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgaW5qZWN0KFNreUFwcExvY2FsZVByb3ZpZGVyKVxuICAgICAgLmdldExvY2FsZUluZm8oKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgobG9jYWxlSW5mbzogU2t5QXBwTG9jYWxlSW5mbykgPT4ge1xuICAgICAgICB0aGlzLiNkZWZhdWx0TG9jYWxlID0gbG9jYWxlSW5mby5sb2NhbGU7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgZm9ybWF0KFxuICAgIHZhbHVlOiBhbnksXG4gICAgbG9jYWxlPzogc3RyaW5nLFxuICAgIGZvcm1hdD86IHN0cmluZyxcbiAgKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBsZXQgZGF0ZTogRGF0ZTtcbiAgICBjb25zdCBwYXR0ZXJuID0gZm9ybWF0IHx8IHRoaXMuI2RlZmF1bHRGb3JtYXQ7XG5cbiAgICBpZiAoaXNCbGFuayh2YWx1ZSkgfHwgdmFsdWUgIT09IHZhbHVlKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8vIE1vbWVudCB3aWxsIGludGVycHJldCBhbnkgbm9uLWRhdGUgb2JqZWN0IGFzIHRvZGF5J3MgZGF0ZS4gVGhhdCB3b3VsZFxuICAgIC8vIGludHJvZHVjZSBhIGJyZWFraW5nIGNoYW5nZSwgc28gd2UgY2hlY2sgZm9yIGl0IGhlcmUuIFRoaXMgY291bGQgcHJvYmFibHkgYmUgcmVtb3ZlZFxuICAgIC8vIGluIGEgZnV0dXJlIG1ham9yIHZlcnNpb24uXG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0ICYmICEodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHZhbHVlOiAnICsgdmFsdWUpO1xuICAgIH1cblxuICAgIC8vIFVzZSBtb21lbnQgdG8gYXZvaWQgaW5jb25zaXN0ZW5jaWVzIGJldHdlZW4gYnJvd3NlcnMgaW50ZXJwcmV0aW5nIHRoZSB2YWx1ZSBkaWZmZXJlbnRseS5cbiAgICBjb25zdCBtb21lbnREYXRlID0gbW9tZW50KHZhbHVlKTtcbiAgICBpZiAobW9tZW50RGF0ZS5pc1ZhbGlkKCkpIHtcbiAgICAgIGRhdGUgPSBtb21lbnREYXRlLnRvRGF0ZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgdmFsdWU6ICcgKyB2YWx1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIFNreUludGxEYXRlRm9ybWF0dGVyLmZvcm1hdChcbiAgICAgIGRhdGUsXG4gICAgICBsb2NhbGUgfHwgdGhpcy4jZGVmYXVsdExvY2FsZSxcbiAgICAgIHRoaXMuI0FMSUFTRVNbcGF0dGVybl0gfHwgcGF0dGVybixcbiAgICApO1xuICB9XG59XG5cbmZ1bmN0aW9uIGlzQmxhbmsob2JqOiBhbnkpOiBib29sZWFuIHtcbiAgcmV0dXJuICFvYmo7XG59XG4iXX0=","import { Pipe, inject } from '@angular/core';\nimport { SkyAppLocaleProvider } from '@skyux/i18n';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { SkyDateService } from './date.service';\nimport * as i0 from \"@angular/core\";\n/**\n * Formats date values according to locale rules.\n * @example\n * ```markup\n * {{ myDate | skyDate }}\n * {{ myDate | skyDate:'medium' }}\n * {{ myDate | skyDate:'medium':'en-CA' }}\n * ```\n */\nexport class SkyDatePipe {\n #dateSvc = inject(SkyDateService);\n #defaultFormat = 'short';\n #defaultLocale = 'en-US';\n #format;\n #formattedValue;\n #locale;\n #ngUnsubscribe = new Subject();\n #value;\n constructor() {\n inject(SkyAppLocaleProvider)\n .getLocaleInfo()\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((localeInfo) => {\n this.#defaultLocale = localeInfo.locale;\n this.#updateFormattedValue();\n });\n }\n ngOnDestroy() {\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n }\n /**\n * Transforms a date value using locale and format rules.\n * @param value Specifies the date value to transform.\n * @param format Specifies the format to apply to the transform. The format string is\n * constructed by a series of symbols that represent date-time values. The symbols are\n * identical to [Angular's `DatePipe`](https://angular.io/api/common/DatePipe#pre-defined-format-options) format options.\n * @param locale Specifies the locale code to use in the transform.\n */\n transform(value, format, locale) {\n this.#value = value;\n this.#format = format;\n this.#locale = locale;\n this.#updateFormattedValue();\n return this.#formattedValue ?? '';\n }\n #updateFormattedValue() {\n const locale = this.#locale || this.#defaultLocale;\n const format = this.#format || this.#defaultFormat;\n this.#formattedValue = this.#dateSvc.format(this.#value, locale, format);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDatePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDatePipe, isStandalone: false, name: \"skyDate\", pure: false }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDatePipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'skyDate',\n pure: false,\n standalone: false,\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2RhdGV0aW1lL3NyYy9saWIvbW9kdWxlcy9kYXRlLXBpcGUvZGF0ZS5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYSxJQUFJLEVBQWlCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQW9CLG9CQUFvQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXJFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFFaEQ7Ozs7Ozs7O0dBUUc7QUFNSCxNQUFNLE9BQU8sV0FBVztJQUN0QixRQUFRLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ2xDLGNBQWMsR0FBRyxPQUFPLENBQUM7SUFDekIsY0FBYyxHQUFHLE9BQU8sQ0FBQztJQUN6QixPQUFPLENBQXFCO0lBQzVCLGVBQWUsQ0FBcUI7SUFDcEMsT0FBTyxDQUFxQjtJQUM1QixjQUFjLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUNyQyxNQUFNLENBQU07SUFFWjtRQUNFLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQzthQUN6QixhQUFhLEVBQUU7YUFDZixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQzthQUNwQyxTQUFTLENBQUMsQ0FBQyxVQUE0QixFQUFFLEVBQUU7WUFDMUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDO1lBQ3hDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQy9CLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0ksU0FBUyxDQUFDLEtBQVUsRUFBRSxNQUFlLEVBQUUsTUFBZTtRQUMzRCxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNwQixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUN0QixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUV0QixJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUU3QixPQUFPLElBQUksQ0FBQyxlQUFlLElBQUksRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFRCxxQkFBcUI7UUFDbkIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDO1FBQ25ELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQztRQUVuRCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzNFLENBQUM7OEdBaERVLFdBQVc7NEdBQVgsV0FBVzs7MkZBQVgsV0FBVztrQkFMdkIsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsU0FBUztvQkFDZixJQUFJLEVBQUUsS0FBSztvQkFDWCxVQUFVLEVBQUUsS0FBSztpQkFDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPbkRlc3Ryb3ksIFBpcGUsIFBpcGVUcmFuc2Zvcm0sIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2t5QXBwTG9jYWxlSW5mbywgU2t5QXBwTG9jYWxlUHJvdmlkZXIgfSBmcm9tICdAc2t5dXgvaTE4bic7XG5cbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgU2t5RGF0ZVNlcnZpY2UgfSBmcm9tICcuL2RhdGUuc2VydmljZSc7XG5cbi8qKlxuICogRm9ybWF0cyBkYXRlIHZhbHVlcyBhY2NvcmRpbmcgdG8gbG9jYWxlIHJ1bGVzLlxuICogQGV4YW1wbGVcbiAqIGBgYG1hcmt1cFxuICoge3sgbXlEYXRlIHwgc2t5RGF0ZSB9fVxuICoge3sgbXlEYXRlIHwgc2t5RGF0ZTonbWVkaXVtJyB9fVxuICoge3sgbXlEYXRlIHwgc2t5RGF0ZTonbWVkaXVtJzonZW4tQ0EnIH19XG4gKiBgYGBcbiAqL1xuQFBpcGUoe1xuICBuYW1lOiAnc2t5RGF0ZScsXG4gIHB1cmU6IGZhbHNlLFxuICBzdGFuZGFsb25lOiBmYWxzZSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5RGF0ZVBpcGUgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIFBpcGVUcmFuc2Zvcm0ge1xuICAjZGF0ZVN2YyA9IGluamVjdChTa3lEYXRlU2VydmljZSk7XG4gICNkZWZhdWx0Rm9ybWF0ID0gJ3Nob3J0JztcbiAgI2RlZmF1bHRMb2NhbGUgPSAnZW4tVVMnO1xuICAjZm9ybWF0OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICNmb3JtYXR0ZWRWYWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAjbG9jYWxlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICNuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgI3ZhbHVlOiBhbnk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgaW5qZWN0KFNreUFwcExvY2FsZVByb3ZpZGVyKVxuICAgICAgLmdldExvY2FsZUluZm8oKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgobG9jYWxlSW5mbzogU2t5QXBwTG9jYWxlSW5mbykgPT4ge1xuICAgICAgICB0aGlzLiNkZWZhdWx0TG9jYWxlID0gbG9jYWxlSW5mby5sb2NhbGU7XG4gICAgICAgIHRoaXMuI3VwZGF0ZUZvcm1hdHRlZFZhbHVlKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gIH1cblxuICAvKipcbiAgICogVHJhbnNmb3JtcyBhIGRhdGUgdmFsdWUgdXNpbmcgbG9jYWxlIGFuZCBmb3JtYXQgcnVsZXMuXG4gICAqIEBwYXJhbSB2YWx1ZSBTcGVjaWZpZXMgdGhlIGRhdGUgdmFsdWUgdG8gdHJhbnNmb3JtLlxuICAgKiBAcGFyYW0gZm9ybWF0IFNwZWNpZmllcyB0aGUgZm9ybWF0IHRvIGFwcGx5IHRvIHRoZSB0cmFuc2Zvcm0uIFRoZSBmb3JtYXQgc3RyaW5nIGlzXG4gICAqIGNvbnN0cnVjdGVkIGJ5IGEgc2VyaWVzIG9mIHN5bWJvbHMgdGhhdCByZXByZXNlbnQgZGF0ZS10aW1lIHZhbHVlcy4gVGhlIHN5bWJvbHMgYXJlXG4gICAqIGlkZW50aWNhbCB0byBbQW5ndWxhcidzIGBEYXRlUGlwZWBdKGh0dHBzOi8vYW5ndWxhci5pby9hcGkvY29tbW9uL0RhdGVQaXBlI3ByZS1kZWZpbmVkLWZvcm1hdC1vcHRpb25zKSBmb3JtYXQgb3B0aW9ucy5cbiAgICogQHBhcmFtIGxvY2FsZSBTcGVjaWZpZXMgdGhlIGxvY2FsZSBjb2RlIHRvIHVzZSBpbiB0aGUgdHJhbnNmb3JtLlxuICAgKi9cbiAgcHVibGljIHRyYW5zZm9ybSh2YWx1ZTogYW55LCBmb3JtYXQ/OiBzdHJpbmcsIGxvY2FsZT86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgdGhpcy4jdmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLiNmb3JtYXQgPSBmb3JtYXQ7XG4gICAgdGhpcy4jbG9jYWxlID0gbG9jYWxlO1xuXG4gICAgdGhpcy4jdXBkYXRlRm9ybWF0dGVkVmFsdWUoKTtcblxuICAgIHJldHVybiB0aGlzLiNmb3JtYXR0ZWRWYWx1ZSA/PyAnJztcbiAgfVxuXG4gICN1cGRhdGVGb3JtYXR0ZWRWYWx1ZSgpOiB2b2lkIHtcbiAgICBjb25zdCBsb2NhbGUgPSB0aGlzLiNsb2NhbGUgfHwgdGhpcy4jZGVmYXVsdExvY2FsZTtcbiAgICBjb25zdCBmb3JtYXQgPSB0aGlzLiNmb3JtYXQgfHwgdGhpcy4jZGVmYXVsdEZvcm1hdDtcblxuICAgIHRoaXMuI2Zvcm1hdHRlZFZhbHVlID0gdGhpcy4jZGF0ZVN2Yy5mb3JtYXQodGhpcy4jdmFsdWUsIGxvY2FsZSwgZm9ybWF0KTtcbiAgfVxufVxuIl19","import { Injectable } from '@angular/core';\nimport moment from 'moment';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@skyux/i18n\";\n/**\n * @internal\n */\nexport class SkyFuzzyDateService {\n #currentLocale;\n #ngUnsubscribe = new Subject();\n constructor(localeProvider) {\n this.#currentLocale = localeProvider.defaultLocale;\n localeProvider\n .getLocaleInfo()\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((localeInfo) => {\n this.#currentLocale = localeInfo.locale;\n });\n }\n /* istanbul ignore next */\n ngOnDestroy() {\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n }\n /**\n * Returns the browser's current locale string.\n */\n getCurrentLocale() {\n return this.#currentLocale;\n }\n /**\n * Returns the short format of the provided locale.\n * If not provided, the locale will be taken from the browser's default locale.\n */\n getLocaleShortFormat(locale) {\n return moment.localeData(locale || this.#currentLocale).longDateFormat('L');\n }\n /**\n * Formats a fuzzy date by using the provided format and locale strings.\n * If not provided, the locale will be taken from the browser's default locale.\n */\n format(fuzzyDate, format, locale) {\n if (!this.#isFuzzyDateValid(fuzzyDate)) {\n return '';\n }\n if (!format) {\n return '';\n }\n const separator = this.#getDateSeparator(format);\n const dateParts = [];\n const formatTokens = separator\n ? format.split(separator)\n : [format];\n locale = locale || this.#currentLocale;\n const fuzzyDateMoment = this.getMomentFromFuzzyDate(fuzzyDate).locale(locale);\n for (const token of formatTokens) {\n /* istanbul ignore else */\n if (token) {\n switch (token.substr(0, 1).toLowerCase()) {\n case 'y':\n if (fuzzyDate.year) {\n dateParts.push(fuzzyDateMoment.format(token));\n }\n break;\n case 'm':\n if (fuzzyDate.month) {\n dateParts.push(fuzzyDateMoment.format(token));\n }\n break;\n case 'd':\n if (fuzzyDate.day) {\n dateParts.push(fuzzyDateMoment.format(token));\n }\n break;\n }\n }\n }\n return dateParts.join(separator);\n }\n /**\n * If not provided, years will default to current year; months will default to January;\n * days will default to 1st of the month.\n */\n getMomentFromFuzzyDate(fuzzyDate) {\n if (!fuzzyDate) {\n return;\n }\n const year = fuzzyDate.year || this.#getDefaultYear(fuzzyDate);\n const month = fuzzyDate.month && fuzzyDate.month > 0 ? fuzzyDate.month - 1 : 0;\n const day = fuzzyDate.day || 1;\n return moment([year, month, day]);\n }\n /**\n * Gets a string instance of a fuzzy date.\n * @deprecated Deprecated in favor of the `format` function.\n */\n getStringFromFuzzyDate(fuzzyDate, dateFormat) {\n if (!fuzzyDate || !dateFormat) {\n return;\n }\n const separator = this.#getDateSeparator(dateFormat);\n const dateFormatIndexes = this.#getDateFormatIndexes(dateFormat);\n let dateString = '';\n // Get the components of the date in the order expected of the local format.\n const dateComponents = [\n { value: fuzzyDate.year || 0, index: dateFormatIndexes.yearIndex },\n { value: fuzzyDate.month || 0, index: dateFormatIndexes.monthIndex },\n { value: fuzzyDate.day || 0, index: dateFormatIndexes.dayIndex },\n ];\n dateComponents.sort((a, b) => a.index - b.index);\n dateComponents.forEach((component) => {\n if (component.value > 0 && component.index > -1) {\n if (dateString) {\n dateString += separator;\n }\n dateString += component.value.toString();\n }\n });\n return dateString.trim();\n }\n getFuzzyDateFromSelectedDate(selectedDate, dateFormat) {\n if (!selectedDate || !dateFormat) {\n return;\n }\n const fuzzyDate = {};\n const dateFormatIndexes = this.#getDateFormatIndexes(dateFormat);\n if (dateFormatIndexes.yearIndex > -1) {\n fuzzyDate.year = selectedDate.getFullYear();\n }\n if (dateFormatIndexes.dayIndex > -1) {\n fuzzyDate.day = selectedDate.getDate();\n }\n if (dateFormatIndexes.monthIndex > -1) {\n fuzzyDate.month = selectedDate.getMonth() + 1; // getMonth() is 0-indexed.\n }\n return fuzzyDate;\n }\n getFuzzyDateFromString(date, dateFormat) {\n if (!date || !dateFormat) {\n return;\n }\n let day;\n let month;\n let year;\n const dateComponents = this.#getDateComponents(date);\n const indexes = this.#getDateValueIndexes(date, dateFormat);\n // Look at the date string's component count:\n // 3 indicates a full date\n // 2 indicates a month-year or month-day date\n // 1 indicates a year\n // Other indicates a problem\n switch (dateComponents.length) {\n case 3:\n year = dateComponents[indexes.yearIndex];\n month = dateComponents[indexes.monthIndex];\n day = dateComponents[indexes.dayIndex];\n break;\n case 2:\n // First, check for a 4-digit year. If year exists, then we assume the other component\n // is the month. Otherwise, we can assume the input is mm/dd or mm/yy (2-digit year).\n year = this.#get4DigitYearFromDateString(date);\n if (year) {\n month =\n dateComponents[0] === year.toString()\n ? dateComponents[1]\n : dateComponents[0];\n }\n else {\n if (indexes.dayIndex > -1) {\n // mm/dd\n month =\n indexes.monthIndex < indexes.dayIndex\n ? dateComponents[0]\n : dateComponents[1];\n day =\n month === dateComponents[1]\n ? dateComponents[0]\n : dateComponents[1];\n }\n else {\n // mm/yy\n month =\n indexes.monthIndex < indexes.yearIndex\n ? dateComponents[0]\n : dateComponents[1];\n year =\n month === dateComponents[1]\n ? dateComponents[0]\n : dateComponents[1];\n }\n }\n break;\n case 1:\n year = date;\n break;\n default:\n return;\n }\n if (month) {\n // Check if month is valid.\n month = this.#getMonthNumber(month);\n if (month === undefined) {\n return;\n }\n // Check if day is valid.\n if (day) {\n day = parseInt(day, 10);\n const fuzzyMoment = this.getMomentFromFuzzyDate({\n month: month,\n day: day,\n year: year,\n });\n if (isNaN(day) || !fuzzyMoment.isValid()) {\n return;\n }\n }\n }\n if (year) {\n year =\n year.toString().length === 2\n ? moment.parseTwoDigitYear(year)\n : parseInt(year.toString(), 10);\n if (isNaN(year) || year.toString().length !== 4) {\n return;\n }\n }\n return {\n month: month,\n day: day,\n year: year,\n };\n }\n getFuzzyDateRange(startFuzzyDate, endFuzzyDate) {\n const start = this.getMomentFromFuzzyDate(startFuzzyDate);\n const end = this.getMomentFromFuzzyDate(endFuzzyDate);\n let days;\n let months;\n let years;\n let valid = false;\n if (startFuzzyDate &&\n startFuzzyDate.year &&\n endFuzzyDate &&\n endFuzzyDate.year) {\n years = end.diff(start, 'years');\n months = end.diff(start, 'months');\n days = end.diff(start, 'days');\n valid = end.diff(start) >= 0;\n }\n return {\n years: years,\n months: months,\n days: days,\n startDate: start.toDate(),\n endDate: end.toDate(),\n valid: valid,\n };\n }\n getCurrentFuzzyDate() {\n const currentDate = moment();\n return {\n day: currentDate.date(),\n month: currentDate.month() + 1, // month() is 0-indexed.\n year: currentDate.year(),\n };\n }\n #getMostRecentLeapYear() {\n let leapYear = new Date().getFullYear();\n while (!this.#isLeapYear(leapYear)) {\n leapYear -= 1;\n }\n return leapYear;\n }\n /**\n * Returns the first separator found in the provided date format string.\n * Accepted separators: ['/', '.', '-', ' '].\n * @param dateFormat\n */\n #getDateSeparator(dateFormat) {\n let returnValue;\n const separators = ['/', '.', '-', ' '];\n separators.forEach((separator) => {\n if (!returnValue && dateFormat.indexOf(separator) > 0) {\n returnValue = separator;\n }\n });\n return returnValue;\n }\n #get4DigitYearFromDateString(date) {\n let year;\n const separator = this.#getDateSeparator(date);\n if (separator) {\n // Find the number value in the string that is 4 digits long.\n date.split(separator).forEach((dateComponent) => {\n if (!year && parseInt(dateComponent, 10).toString().length === 4) {\n year = dateComponent;\n }\n });\n }\n if (year && !isNaN(Number(year))) {\n return parseInt(year, 10);\n }\n return undefined;\n }\n #isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n #getMonthNumber(month) {\n let returnValue;\n const monthAsNumber = parseInt(month, 10);\n // If the month component is a string (\"January\"), we check to see if it is a valid month\n if (isNaN(monthAsNumber)) {\n if (!moment(month, 'MMMM').isValid()) {\n return;\n }\n returnValue = parseInt(moment().month(month).format('M'), 10);\n }\n else {\n returnValue = monthAsNumber;\n }\n // Ensure that the month is between 1 and 12\n if (!(1 <= returnValue && returnValue <= 12)) {\n return;\n }\n return returnValue;\n }\n #getDefaultYear(fuzzyDate) {\n // Check if we need to return a leap year or the current year.\n if (fuzzyDate.month === 2 && fuzzyDate.day === 29) {\n return this.#getMostRecentLeapYear();\n }\n else {\n return new Date().getFullYear();\n }\n }\n #getDateComponents(date) {\n const separator = this.#getDateSeparator(date);\n if (separator) {\n return date.split(separator);\n }\n else {\n return [date];\n }\n }\n // Returns the order of year, month, and day from the provided date format.\n #getDateFormatIndexes(dateFormat) {\n dateFormat = dateFormat.toLowerCase();\n return {\n yearIndex: dateFormat.indexOf('y'),\n monthIndex: dateFormat.indexOf('m'),\n dayIndex: dateFormat.indexOf('d'),\n };\n }\n // Returns the index of each of the date components in the provided string (month, day, year).\n #getDateValueIndexes(date, dateFormat) {\n const dateFormatIndexes = this.#getDateFormatIndexes(dateFormat);\n const dateComponentIndexes = [];\n if (dateFormatIndexes.yearIndex > -1) {\n dateComponentIndexes.push(dateFormatIndexes.yearIndex);\n }\n if (dateFormatIndexes.monthIndex > -1) {\n dateComponentIndexes.push(dateFormatIndexes.monthIndex);\n }\n if (dateFormatIndexes.dayIndex > -1) {\n dateComponentIndexes.push(dateFormatIndexes.dayIndex);\n }\n dateComponentIndexes.sort(function (a, b) {\n return a - b;\n });\n return {\n yearIndex: dateComponentIndexes.indexOf(dateFormatIndexes.yearIndex),\n monthIndex: dateComponentIndexes.indexOf(dateFormatIndexes.monthIndex),\n dayIndex: dateComponentIndexes.indexOf(dateFormatIndexes.dayIndex),\n };\n }\n /**\n * Validates the provided SkyFuzzyDate object. Valid fuzzy dates are as follows:\n * month, day, year\n * month, year\n * month, day\n * year only\n */\n #isFuzzyDateValid(fuzzyDate) {\n if (!fuzzyDate) {\n return false;\n }\n // If none of the dates part are specified, return false.\n if (!fuzzyDate.day && !fuzzyDate.month && !fuzzyDate.year) {\n return false;\n }\n // If only month is specified, return false.\n if (!fuzzyDate.day && fuzzyDate.month && !fuzzyDate.year) {\n return false;\n }\n // If only day is specified, return false.\n if (fuzzyDate.day && !fuzzyDate.month && !fuzzyDate.year) {\n return false;\n }\n return true;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyFuzzyDateService, deps: [{ token: i1.SkyAppLocaleProvider }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyFuzzyDateService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyFuzzyDateService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: () => [{ type: i1.SkyAppLocaleProvider }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnV6enktZGF0ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2RhdGV0aW1lL3NyYy9saWIvbW9kdWxlcy9kYXRlcGlja2VyL2Z1enp5L2Z1enp5LWRhdGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBR3RELE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBeUIzQzs7R0FFRztBQUlILE1BQU0sT0FBTyxtQkFBbUI7SUFDOUIsY0FBYyxDQUFTO0lBRXZCLGNBQWMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBRXJDLFlBQVksY0FBb0M7UUFDOUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUMsYUFBYSxDQUFDO1FBQ25ELGNBQWM7YUFDWCxhQUFhLEVBQUU7YUFDZixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQzthQUNwQyxTQUFTLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRTtZQUN4QixJQUFJLENBQUMsY0FBYyxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUM7UUFDMUMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsMEJBQTBCO0lBQ25CLFdBQVc7UUFDaEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFRDs7T0FFRztJQUNJLGdCQUFnQjtRQUNyQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDN0IsQ0FBQztJQUVEOzs7T0FHRztJQUNJLG9C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QUMsVUFBVSxDQUFDO1lBQ3RFLFFBQVEsRUFBRSxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDO1NBQ25FLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsaUJBQWlCLENBQUMsU0FBdUI7UUFDdkMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2YsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBRUQseURBQXlEO1FBQ3pELElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUMxRCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFFRCw0Q0FBNEM7UUFDNUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksU0FBUyxDQUFDLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN6RCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFFRCwwQ0FBMEM7UUFDMUMsSUFBSSxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN6RCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7OEdBdGRVLG1CQUFtQjtrSEFBbkIsbUJBQW1CLGNBRmxCLE1BQU07OzJGQUVQLG1CQUFtQjtrQkFIL0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNreUFwcExvY2FsZVByb3ZpZGVyIH0gZnJvbSAnQHNreXV4L2kxOG4nO1xuXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNreUZ1enp5RGF0ZSB9IGZyb20gJy4vZnV6enktZGF0ZSc7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmludGVyZmFjZSBTa3lEYXRlSW5kZXhlcyB7XG4gIHllYXJJbmRleDogbnVtYmVyO1xuICBtb250aEluZGV4OiBudW1iZXI7XG4gIGRheUluZGV4OiBudW1iZXI7XG59XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmludGVyZmFjZSBTa3lGdXp6eURhdGVSYW5nZSB7XG4gIHllYXJzOiBzdHJpbmc7XG4gIG1vbnRoczogc3RyaW5nO1xuICBkYXlzOiBzdHJpbmc7XG4gIHN0YXJ0RGF0ZTogRGF0ZTtcbiAgZW5kRGF0ZTogRGF0ZTtcbiAgdmFsaWQ6IGJvb2xlYW47XG59XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lGdXp6eURhdGVTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgI2N1cnJlbnRMb2NhbGU6IHN0cmluZztcblxuICAjbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IobG9jYWxlUHJvdmlkZXI6IFNreUFwcExvY2FsZVByb3ZpZGVyKSB7XG4gICAgdGhpcy4jY3VycmVudExvY2FsZSA9IGxvY2FsZVByb3ZpZGVyLmRlZmF1bHRMb2NhbGU7XG4gICAgbG9jYWxlUHJvdmlkZXJcbiAgICAgIC5nZXRMb2NhbGVJbmZvKClcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKGxvY2FsZUluZm8pID0+IHtcbiAgICAgICAgdGhpcy4jY3VycmVudExvY2FsZSA9IGxvY2FsZUluZm8ubG9jYWxlO1xuICAgICAgfSk7XG4gIH1cblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGJyb3dzZXIncyBjdXJyZW50IGxvY2FsZSBzdHJpbmcuXG4gICAqL1xuICBwdWJsaWMgZ2V0Q3VycmVudExvY2FsZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLiNjdXJyZW50TG9jYWxlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHNob3J0IGZvcm1hdCBvZiB0aGUgcHJvdmlkZWQgbG9jYWxlLlxuICAgKiBJZiBub3QgcHJvdmlkZWQsIHRoZSBsb2NhbGUgd2lsbCBiZSB0YWtlbiBmcm9tIHRoZSBicm93c2VyJ3MgZGVmYXVsdCBsb2NhbGUuXG4gICAqL1xuICBwdWJsaWMgZ2V0TG9jYWxlU2hvcnRGb3JtYXQobG9jYWxlPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbW9tZW50LmxvY2FsZURhdGEobG9jYWxlIHx8IHRoaXMuI2N1cnJlbnRMb2NhbGUpLmxvbmdEYXRlRm9ybWF0KCdMJyk7XG4gIH1cblxuICAvKipcbiAgICogRm9ybWF0cyBhIGZ1enp5IGRhdGUgYnkgdXNpbmcgdGhlIHByb3ZpZGVkIGZvcm1hdCBhbmQgbG9jYWxlIHN0cmluZ3MuXG4gICAqIElmIG5vdCBwcm92aWRlZCwgdGhlIGxvY2FsZSB3aWxsIGJlIHRha2VuIGZyb20gdGhlIGJyb3dzZXIncyBkZWZhdWx0IGxvY2FsZS5cbiAgICovXG4gIHB1YmxpYyBmb3JtYXQoXG4gICAgZnV6enlEYXRlOiBTa3lGdXp6eURhdGUsXG4gICAgZm9ybWF0Pzogc3RyaW5nLFxuICAgIGxvY2FsZT86IHN0cmluZyxcbiAgKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuI2lzRnV6enlEYXRlVmFsaWQoZnV6enlEYXRlKSkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGlmICghZm9ybWF0KSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgY29uc3Qgc2VwYXJhdG9yID0gdGhpcy4jZ2V0RGF0ZVNlcGFyYXRvcihmb3JtYXQpO1xuICAgIGNvbnN0IGRhdGVQYXJ0czogc3RyaW5nW10gPSBbXTtcbiAgICBjb25zdCBmb3JtYXRUb2tlbnM6IHN0cmluZ1tdID0gc2VwYXJhdG9yXG4gICAgICA/IGZvcm1hdC5zcGxpdChzZXBhcmF0b3IpXG4gICAgICA6IFtmb3JtYXRdO1xuICAgIGxvY2FsZSA9IGxvY2FsZSB8fCB0aGlzLiNjdXJyZW50TG9jYWxlO1xuICAgIGNvbnN0IGZ1enp5RGF0ZU1vbWVudCA9XG4gICAgICB0aGlzLmdldE1vbWVudEZyb21GdXp6eURhdGUoZnV6enlEYXRlKS5sb2NhbGUobG9jYWxlKTtcblxuICAgIGZvciAoY29uc3QgdG9rZW4gb2YgZm9ybWF0VG9rZW5zKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKHRva2VuKSB7XG4gICAgICAgIHN3aXRjaCAodG9rZW4uc3Vic3RyKDAsIDEpLnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgICAgICBjYXNlICd5JzpcbiAgICAgICAgICAgIGlmIChmdXp6eURhdGUueWVhcikge1xuICAgICAgICAgICAgICBkYXRlUGFydHMucHVzaChmdXp6eURhdGVNb21lbnQuZm9ybWF0KHRva2VuKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdtJzpcbiAgICAgICAgICAgIGlmIChmdXp6eURhdGUubW9udGgpIHtcbiAgICAgICAgICAgICAgZGF0ZVBhcnRzLnB1c2goZnV6enlEYXRlTW9tZW50LmZvcm1hdCh0b2tlbikpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICBpZiAoZnV6enlEYXRlLmRheSkge1xuICAgICAgICAgICAgICBkYXRlUGFydHMucHVzaChmdXp6eURhdGVNb21lbnQuZm9ybWF0KHRva2VuKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBkYXRlUGFydHMuam9pbihzZXBhcmF0b3IpO1xuICB9XG5cbiAgLyoqXG4gICAqIElmIG5vdCBwcm92aWRlZCwgeWVhcnMgd2lsbCBkZWZhdWx0IHRvIGN1cnJlbnQgeWVhcjsgbW9udGhzIHdpbGwgZGVmYXVsdCB0byBKYW51YXJ5O1xuICAgKiBkYXlzIHdpbGwgZGVmYXVsdCB0byAxc3Qgb2YgdGhlIG1vbnRoLlxuICAgKi9cbiAgcHVibGljIGdldE1vbWVudEZyb21GdXp6eURhdGUoZnV6enlEYXRlPzogU2t5RnV6enlEYXRlKTogYW55IHtcbiAgICBpZiAoIWZ1enp5RGF0ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHllYXIgPSBmdXp6eURhdGUueWVhciB8fCB0aGlzLiNnZXREZWZhdWx0WWVhcihmdXp6eURhdGUpO1xuICAgIGNvbnN0IG1vbnRoID1cbiAgICAgIGZ1enp5RGF0ZS5tb250aCAmJiBmdXp6eURhdGUubW9udGggPiAwID8gZnV6enlEYXRlLm1vbnRoIC0gMSA6IDA7XG4gICAgY29uc3QgZGF5ID0gZnV6enlEYXRlLmRheSB8fCAxO1xuXG4gICAgcmV0dXJuIG1vbWVudChbeWVhciwgbW9udGgsIGRheV0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgYSBzdHJpbmcgaW5zdGFuY2Ugb2YgYSBmdXp6eSBkYXRlLlxuICAgKiBAZGVwcmVjYXRlZCBEZXByZWNhdGVkIGluIGZhdm9yIG9mIHRoZSBgZm9ybWF0YCBmdW5jdGlvbi5cbiAgICovXG4gIHB1YmxpYyBnZXRTdHJpbmdGcm9tRnV6enlEYXRlKFxuICAgIGZ1enp5RGF0ZT86IFNreUZ1enp5RGF0ZSxcbiAgICBkYXRlRm9ybWF0Pzogc3RyaW5nLFxuICApOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGlmICghZnV6enlEYXRlIHx8ICFkYXRlRm9ybWF0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgc2VwYXJhdG9yID0gdGhpcy4jZ2V0RGF0ZVNlcGFyYXRvcihkYXRlRm9ybWF0KTtcbiAgICBjb25zdCBkYXRlRm9ybWF0SW5kZXhlcyA9IHRoaXMuI2dldERhdGVGb3JtYXRJbmRleGVzKGRhdGVGb3JtYXQpO1xuICAgIGxldCBkYXRlU3RyaW5nID0gJyc7XG5cbiAgICAvLyBHZXQgdGhlIGNvbXBvbmVudHMgb2YgdGhlIGRhdGUgaW4gdGhlIG9yZGVyIGV4cGVjdGVkIG9mIHRoZSBsb2NhbCBmb3JtYXQuXG4gICAgY29uc3QgZGF0ZUNvbXBvbmVudHMgPSBbXG4gICAgICB7IHZhbHVlOiBmdXp6eURhdGUueWVhciB8fCAwLCBpbmRleDogZGF0ZUZvcm1hdEluZGV4ZXMueWVhckluZGV4IH0sXG4gICAgICB7IHZhbHVlOiBmdXp6eURhdGUubW9udGggfHwgMCwgaW5kZXg6IGRhdGVGb3JtYXRJbmRleGVzLm1vbnRoSW5kZXggfSxcbiAgICAgIHsgdmFsdWU6IGZ1enp5RGF0ZS5kYXkgfHwgMCwgaW5kZXg6IGRhdGVGb3JtYXRJbmRleGVzLmRheUluZGV4IH0sXG4gICAgXTtcbiAgICBkYXRlQ29tcG9uZW50cy5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4gYS5pbmRleCAtIGIuaW5kZXgpO1xuXG4gICAgZGF0ZUNvbXBvbmVudHMuZm9yRWFjaCgoY29tcG9uZW50KSA9PiB7XG4gICAgICBpZiAoY29tcG9uZW50LnZhbHVlID4gMCAmJiBjb21wb25lbnQuaW5kZXggPiAtMSkge1xuICAgICAgICBpZiAoZGF0ZVN0cmluZykge1xuICAgICAgICAgIGRhdGVTdHJpbmcgKz0gc2VwYXJhdG9yO1xuICAgICAgICB9XG4gICAgICAgIGRhdGVTdHJpbmcgKz0gY29tcG9uZW50LnZhbHVlLnRvU3RyaW5nKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZGF0ZVN0cmluZy50cmltKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0RnV6enlEYXRlRnJvbVNlbGVjdGVkRGF0ZShcbiAgICBzZWxlY3RlZERhdGU/OiBEYXRlLFxuICAgIGRhdGVGb3JtYXQ/OiBzdHJpbmcsXG4gICk6IFNreUZ1enp5RGF0ZSB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCFzZWxlY3RlZERhdGUgfHwgIWRhdGVGb3JtYXQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBmdXp6eURhdGU6IFNreUZ1enp5RGF0ZSA9IHt9O1xuICAgIGNvbnN0IGRhdGVGb3JtYXRJbmRleGVzID0gdGhpcy4jZ2V0RGF0ZUZvcm1hdEluZGV4ZXMoZGF0ZUZvcm1hdCk7XG5cbiAgICBpZiAoZGF0ZUZvcm1hdEluZGV4ZXMueWVhckluZGV4ID4gLTEpIHtcbiAgICAgIGZ1enp5RGF0ZS55ZWFyID0gc2VsZWN0ZWREYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgfVxuXG4gICAgaWYgKGRhdGVGb3JtYXRJbmRleGVzLmRheUluZGV4ID4gLTEpIHtcbiAgICAgIGZ1enp5RGF0ZS5kYXkgPSBzZWxlY3RlZERhdGUuZ2V0RGF0ZSgpO1xuICAgIH1cblxuICAgIGlmIChkYXRlRm9ybWF0SW5kZXhlcy5tb250aEluZGV4ID4gLTEpIHtcbiAgICAgIGZ1enp5RGF0ZS5tb250aCA9IHNlbGVjdGVkRGF0ZS5nZXRNb250aCgpICsgMTsgLy8gZ2V0TW9udGgoKSBpcyAwLWluZGV4ZWQuXG4gICAgfVxuXG4gICAgcmV0dXJuIGZ1enp5RGF0ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRGdXp6eURhdGVGcm9tU3RyaW5nKFxuICAgIGRhdGU6IHN0cmluZyxcbiAgICBkYXRlRm9ybWF0Pzogc3RyaW5nLFxuICApOiBTa3lGdXp6eURhdGUgfCB1bmRlZmluZWQge1xuICAgIGlmICghZGF0ZSB8fCAhZGF0ZUZvcm1hdCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBkYXk6IGFueTtcbiAgICBsZXQgbW9udGg6IGFueTtcbiAgICBsZXQgeWVhcjogYW55O1xuXG4gICAgY29uc3QgZGF0ZUNvbXBvbmVudHMgPSB0aGlzLiNnZXREYXRlQ29tcG9uZW50cyhkYXRlKTtcbiAgICBjb25zdCBpbmRleGVzID0gdGhpcy4jZ2V0RGF0ZVZhbHVlSW5kZXhlcyhkYXRlLCBkYXRlRm9ybWF0KTtcblxuICAgIC8vIExvb2sgYXQgdGhlIGRhdGUgc3RyaW5nJ3MgY29tcG9uZW50IGNvdW50OlxuICAgIC8vIDMgaW5kaWNhdGVzIGEgZnVsbCBkYXRlXG4gICAgLy8gMiBpbmRpY2F0ZXMgYSBtb250aC15ZWFyIG9yIG1vbnRoLWRheSBkYXRlXG4gICAgLy8gMSBpbmRpY2F0ZXMgYSB5ZWFyXG4gICAgLy8gT3RoZXIgaW5kaWNhdGVzIGEgcHJvYmxlbVxuICAgIHN3aXRjaCAoZGF0ZUNvbXBvbmVudHMubGVuZ3RoKSB7XG4gICAgICBjYXNlIDM6XG4gICAgICAgIHllYXIgPSBkYXRlQ29tcG9uZW50c1tpbmRleGVzLnllYXJJbmRleF07XG4gICAgICAgIG1vbnRoID0gZGF0ZUNvbXBvbmVudHNbaW5kZXhlcy5tb250aEluZGV4XTtcbiAgICAgICAgZGF5ID0gZGF0ZUNvbXBvbmVudHNbaW5kZXhlcy5kYXlJbmRleF07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyOlxuICAgICAgICAvLyBGaXJzdCwgY2hlY2sgZm9yIGEgNC1kaWdpdCB5ZWFyLiBJZiB5ZWFyIGV4aXN0cywgdGhlbiB3ZSBhc3N1bWUgdGhlIG90aGVyIGNvbXBvbmVudFxuICAgICAgICAvLyBpcyB0aGUgbW9udGguIE90aGVyd2lzZSwgd2UgY2FuIGFzc3VtZSB0aGUgaW5wdXQgaXMgbW0vZGQgb3IgbW0veXkgKDItZGlnaXQgeWVhcikuXG4gICAgICAgIHllYXIgPSB0aGlzLiNnZXQ0RGlnaXRZZWFyRnJvbURhdGVTdHJpbmcoZGF0ZSk7XG4gICAgICAgIGlmICh5ZWFyKSB7XG4gICAgICAgICAgbW9udGggPVxuICAgICAgICAgICAgZGF0ZUNvbXBvbmVudHNbMF0gPT09IHllYXIudG9TdHJpbmcoKVxuICAgICAgICAgICAgICA/IGRhdGVDb21wb25lbnRzWzFdXG4gICAgICAgICAgICAgIDogZGF0ZUNvbXBvbmVudHNbMF07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKGluZGV4ZXMuZGF5SW5kZXggPiAtMSkge1xuICAgICAgICAgICAgLy8gbW0vZGRcbiAgICAgICAgICAgIG1vbnRoID1cbiAgICAgICAgICAgICAgaW5kZXhlcy5tb250aEluZGV4IDwgaW5kZXhlcy5kYXlJbmRleFxuICAgICAgICAgICAgICAgID8gZGF0ZUNvbXBvbmVudHNbMF1cbiAgICAgICAgICAgICAgICA6IGRhdGVDb21wb25lbnRzWzFdO1xuICAgICAgICAgICAgZGF5ID1cbiAgICAgICAgICAgICAgbW9udGggPT09IGRhdGVDb21wb25lbnRzWzFdXG4gICAgICAgICAgICAgICAgPyBkYXRlQ29tcG9uZW50c1swXVxuICAgICAgICAgICAgICAgIDogZGF0ZUNvbXBvbmVudHNbMV07XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIG1tL3l5XG4gICAgICAgICAgICBtb250aCA9XG4gICAgICAgICAgICAgIGluZGV4ZXMubW9udGhJbmRleCA8IGluZGV4ZXMueWVhckluZGV4XG4gICAgICAgICAgICAgICAgPyBkYXRlQ29tcG9uZW50c1swXVxuICAgICAgICAgICAgICAgIDogZGF0ZUNvbXBvbmVudHNbMV07XG4gICAgICAgICAgICB5ZWFyID1cbiAgICAgICAgICAgICAgbW9udGggPT09IGRhdGVDb21wb25lbnRzWzFdXG4gICAgICAgICAgICAgICAgPyBkYXRlQ29tcG9uZW50c1swXVxuICAgICAgICAgICAgICAgIDogZGF0ZUNvbXBvbmVudHNbMV07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxOlxuICAgICAgICB5ZWFyID0gZGF0ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKG1vbnRoKSB7XG4gICAgICAvLyBDaGVjayBpZiBtb250aCBpcyB2YWxpZC5cbiAgICAgIG1vbnRoID0gdGhpcy4jZ2V0TW9udGhOdW1iZXIobW9udGgpO1xuICAgICAgaWYgKG1vbnRoID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBDaGVjayBpZiBkYXkgaXMgdmFsaWQuXG4gICAgICBpZiAoZGF5KSB7XG4gICAgICAgIGRheSA9IHBhcnNlSW50KGRheSwgMTApO1xuICAgICAgICBjb25zdCBmdXp6eU1vbWVudCA9IHRoaXMuZ2V0TW9tZW50RnJvbUZ1enp5RGF0ZSh7XG4gICAgICAgICAgbW9udGg6IG1vbnRoLFxuICAgICAgICAgIGRheTogZGF5LFxuICAgICAgICAgIHllYXI6IHllYXIsXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoaXNOYU4oZGF5KSB8fCAhZnV6enlNb21lbnQuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHllYXIpIHtcbiAgICAgIHllYXIgPVxuICAgICAgICB5ZWFyLnRvU3RyaW5nKCkubGVuZ3RoID09PSAyXG4gICAgICAgICAgPyBtb21lbnQucGFyc2VUd29EaWdpdFllYXIoeWVhcilcbiAgICAgICAgICA6IHBhcnNlSW50KHllYXIudG9TdHJpbmcoKSwgMTApO1xuICAgICAgaWYgKGlzTmFOKHllYXIpIHx8IHllYXIudG9TdHJpbmcoKS5sZW5ndGggIT09IDQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBtb250aDogbW9udGgsXG4gICAgICBkYXk6IGRheSxcbiAgICAgIHllYXI6IHllYXIsXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRGdXp6eURhdGVSYW5nZShcbiAgICBzdGFydEZ1enp5RGF0ZTogU2t5RnV6enlEYXRlLFxuICAgIGVuZEZ1enp5RGF0ZTogU2t5RnV6enlEYXRlLFxuICApOiBTa3lGdXp6eURhdGVSYW5nZSB7XG4gICAgY29uc3Qgc3RhcnQgPSB0aGlzLmdldE1vbWVudEZyb21GdXp6eURhdGUoc3RhcnRGdXp6eURhdGUpO1xuICAgIGNvbnN0IGVuZCA9IHRoaXMuZ2V0TW9tZW50RnJvbUZ1enp5RGF0ZShlbmRGdXp6eURhdGUpO1xuICAgIGxldCBkYXlzO1xuICAgIGxldCBtb250aHM7XG4gICAgbGV0IHllYXJzO1xuICAgIGxldCB2YWxpZCA9IGZhbHNlO1xuXG4gICAgaWYgKFxuICAgICAgc3RhcnRGdXp6eURhdGUgJiZcbiAgICAgIHN0YXJ0RnV6enlEYXRlLnllYXIgJiZcbiAgICAgIGVuZEZ1enp5RGF0ZSAmJlxuICAgICAgZW5kRnV6enlEYXRlLnllYXJcbiAgICApIHtcbiAgICAgIHllYXJzID0gZW5kLmRpZmYoc3RhcnQsICd5ZWFycycpO1xuICAgICAgbW9udGhzID0gZW5kLmRpZmYoc3RhcnQsICdtb250aHMnKTtcbiAgICAgIGRheXMgPSBlbmQuZGlmZihzdGFydCwgJ2RheXMnKTtcbiAgICAgIHZhbGlkID0gZW5kLmRpZmYoc3RhcnQpID49IDA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHllYXJzOiB5ZWFycyxcbiAgICAgIG1vbnRoczogbW9udGhzLFxuICAgICAgZGF5czogZGF5cyxcbiAgICAgIHN0YXJ0RGF0ZTogc3RhcnQudG9EYXRlKCksXG4gICAgICBlbmREYXRlOiBlbmQudG9EYXRlKCksXG4gICAgICB2YWxpZDogdmFsaWQsXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDdXJyZW50RnV6enlEYXRlKCk6IFNreUZ1enp5RGF0ZSB7XG4gICAgY29uc3QgY3VycmVudERhdGUgPSBtb21lbnQoKTtcblxuICAgIHJldHVybiB7XG4gICAgICBkYXk6IGN1cnJlbnREYXRlLmRhdGUoKSxcbiAgICAgIG1vbnRoOiBjdXJyZW50RGF0ZS5tb250aCgpICsgMSwgLy8gbW9udGgoKSBpcyAwLWluZGV4ZWQuXG4gICAgICB5ZWFyOiBjdXJyZW50RGF0ZS55ZWFyKCksXG4gICAgfTtcbiAgfVxuXG4gICNnZXRNb3N0UmVjZW50TGVhcFllYXIoKTogbnVtYmVyIHtcbiAgICBsZXQgbGVhcFllYXIgPSBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCk7XG5cbiAgICB3aGlsZSAoIXRoaXMuI2lzTGVhcFllYXIobGVhcFllYXIpKSB7XG4gICAgICBsZWFwWWVhciAtPSAxO1xuICAgIH1cblxuICAgIHJldHVybiBsZWFwWWVhcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBmaXJzdCBzZXBhcmF0b3IgZm91bmQgaW4gdGhlIHByb3ZpZGVkIGRhdGUgZm9ybWF0IHN0cmluZy5cbiAgICogQWNjZXB0ZWQgc2VwYXJhdG9yczogWycvJywgJy4nLCAnLScsICcgJ10uXG4gICAqIEBwYXJhbSBkYXRlRm9ybWF0XG4gICAqL1xuICAjZ2V0RGF0ZVNlcGFyYXRvcihkYXRlRm9ybWF0OiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGxldCByZXR1cm5WYWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIGNvbnN0IHNlcGFyYXRvcnMgPSBbJy8nLCAnLicsICctJywgJyAnXTtcblxuICAgIHNlcGFyYXRvcnMuZm9yRWFjaCgoc2VwYXJhdG9yKSA9PiB7XG4gICAgICBpZiAoIXJldHVyblZhbHVlICYmIGRhdGVGb3JtYXQuaW5kZXhPZihzZXBhcmF0b3IpID4gMCkge1xuICAgICAgICByZXR1cm5WYWx1ZSA9IHNlcGFyYXRvcjtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiByZXR1cm5WYWx1ZTtcbiAgfVxuXG4gICNnZXQ0RGlnaXRZZWFyRnJvbURhdGVTdHJpbmcoZGF0ZTogc3RyaW5nKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgICBsZXQgeWVhcjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIGNvbnN0IHNlcGFyYXRvciA9IHRoaXMuI2dldERhdGVTZXBhcmF0b3IoZGF0ZSk7XG5cbiAgICBpZiAoc2VwYXJhdG9yKSB7XG4gICAgICAvLyBGaW5kIHRoZSBudW1iZXIgdmFsdWUgaW4gdGhlIHN0cmluZyB0aGF0IGlzIDQgZGlnaXRzIGxvbmcuXG4gICAgICBkYXRlLnNwbGl0KHNlcGFyYXRvcikuZm9yRWFjaCgoZGF0ZUNvbXBvbmVudCkgPT4ge1xuICAgICAgICBpZiAoIXllYXIgJiYgcGFyc2VJbnQoZGF0ZUNvbXBvbmVudCwgMTApLnRvU3RyaW5nKCkubGVuZ3RoID09PSA0KSB7XG4gICAgICAgICAgeWVhciA9IGRhdGVDb21wb25lbnQ7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICh5ZWFyICYmICFpc05hTihOdW1iZXIoeWVhcikpKSB7XG4gICAgICByZXR1cm4gcGFyc2VJbnQoeWVhciwgMTApO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgI2lzTGVhcFllYXIoeWVhcjogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICh5ZWFyICUgNCA9PT0gMCAmJiB5ZWFyICUgMTAwICE9PSAwKSB8fCB5ZWFyICUgNDAwID09PSAwO1xuICB9XG5cbiAgI2dldE1vbnRoTnVtYmVyKG1vbnRoOiBzdHJpbmcpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICAgIGxldCByZXR1cm5WYWx1ZTogbnVtYmVyO1xuICAgIGNvbnN0IG1vbnRoQXNOdW1iZXIgPSBwYXJzZUludChtb250aCwgMTApO1xuXG4gICAgLy8gSWYgdGhlIG1vbnRoIGNvbXBvbmVudCBpcyBhIHN0cmluZyAoXCJKYW51YXJ5XCIpLCB3ZSBjaGVjayB0byBzZWUgaWYgaXQgaXMgYSB2YWxpZCBtb250aFxuICAgIGlmIChpc05hTihtb250aEFzTnVtYmVyKSkge1xuICAgICAgaWYgKCFtb21lbnQobW9udGgsICdNTU1NJykuaXNWYWxpZCgpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHJldHVyblZhbHVlID0gcGFyc2VJbnQobW9tZW50KCkubW9udGgobW9udGgpLmZvcm1hdCgnTScpLCAxMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVyblZhbHVlID0gbW9udGhBc051bWJlcjtcbiAgICB9XG5cbiAgICAvLyBFbnN1cmUgdGhhdCB0aGUgbW9udGggaXMgYmV0d2VlbiAxIGFuZCAxMlxuICAgIGlmICghKDEgPD0gcmV0dXJuVmFsdWUgJiYgcmV0dXJuVmFsdWUgPD0gMTIpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcmV0dXJuIHJldHVyblZhbHVlO1xuICB9XG5cbiAgI2dldERlZmF1bHRZZWFyKGZ1enp5RGF0ZTogU2t5RnV6enlEYXRlKTogbnVtYmVyIHtcbiAgICAvLyBDaGVjayBpZiB3ZSBuZWVkIHRvIHJldHVybiBhIGxlYXAgeWVhciBvciB0aGUgY3VycmVudCB5ZWFyLlxuICAgIGlmIChmdXp6eURhdGUubW9udGggPT09IDIgJiYgZnV6enlEYXRlLmRheSA9PT0gMjkpIHtcbiAgICAgIHJldHVybiB0aGlzLiNnZXRNb3N0UmVjZW50TGVhcFllYXIoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKTtcbiAgICB9XG4gIH1cblxuICAjZ2V0RGF0ZUNvbXBvbmVudHMoZGF0ZTogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IHNlcGFyYXRvciA9IHRoaXMuI2dldERhdGVTZXBhcmF0b3IoZGF0ZSk7XG4gICAgaWYgKHNlcGFyYXRvcikge1xuICAgICAgcmV0dXJuIGRhdGUuc3BsaXQoc2VwYXJhdG9yKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFtkYXRlXTtcbiAgICB9XG4gIH1cblxuICAvLyBSZXR1cm5zIHRoZSBvcmRlciBvZiB5ZWFyLCBtb250aCwgYW5kIGRheSBmcm9tIHRoZSBwcm92aWRlZCBkYXRlIGZvcm1hdC5cbiAgI2dldERhdGVGb3JtYXRJbmRleGVzKGRhdGVGb3JtYXQ6IHN0cmluZyk6IFNreURhdGVJbmRleGVzIHtcbiAgICBkYXRlRm9ybWF0ID0gZGF0ZUZvcm1hdC50b0xvd2VyQ2FzZSgpO1xuICAgIHJldHVybiB7XG4gICAgICB5ZWFySW5kZXg6IGRhdGVGb3JtYXQuaW5kZXhPZigneScpLFxuICAgICAgbW9udGhJbmRleDogZGF0ZUZvcm1hdC5pbmRleE9mKCdtJyksXG4gICAgICBkYXlJbmRleDogZGF0ZUZvcm1hdC5pbmRleE9mKCdkJyksXG4gICAgfTtcbiAgfVxuXG4gIC8vIFJldHVybnMgdGhlIGluZGV4IG9mIGVhY2ggb2YgdGhlIGRhdGUgY29tcG9uZW50cyBpbiB0aGUgcHJvdmlkZWQgc3RyaW5nIChtb250aCwgZGF5LCB5ZWFyKS5cbiAgI2dldERhdGVWYWx1ZUluZGV4ZXMoZGF0ZTogc3RyaW5nLCBkYXRlRm9ybWF0OiBzdHJpbmcpOiBTa3lEYXRlSW5kZXhlcyB7XG4gICAgY29uc3QgZGF0ZUZvcm1hdEluZGV4ZXMgPSB0aGlzLiNnZXREYXRlRm9ybWF0SW5kZXhlcyhkYXRlRm9ybWF0KTtcbiAgICBjb25zdCBkYXRlQ29tcG9uZW50SW5kZXhlcyA9IFtdO1xuICAgIGlmIChkYXRlRm9ybWF0SW5kZXhlcy55ZWFySW5kZXggPiAtMSkge1xuICAgICAgZGF0ZUNvbXBvbmVudEluZGV4ZXMucHVzaChkYXRlRm9ybWF0SW5kZXhlcy55ZWFySW5kZXgpO1xuICAgIH1cblxuICAgIGlmIChkYXRlRm9ybWF0SW5kZXhlcy5tb250aEluZGV4ID4gLTEpIHtcbiAgICAgIGRhdGVDb21wb25lbnRJbmRleGVzLnB1c2goZGF0ZUZvcm1hdEluZGV4ZXMubW9udGhJbmRleCk7XG4gICAgfVxuXG4gICAgaWYgKGRhdGVGb3JtYXRJbmRleGVzLmRheUluZGV4ID4gLTEpIHtcbiAgICAgIGRhdGVDb21wb25lbnRJbmRleGVzLnB1c2goZGF0ZUZvcm1hdEluZGV4ZXMuZGF5SW5kZXgpO1xuICAgIH1cblxuICAgIGRhdGVDb21wb25lbnRJbmRleGVzLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgIHJldHVybiBhIC0gYjtcbiAgICB9KTtcblxuICAgIHJldHVybiB7XG4gICAgICB5ZWFySW5kZXg6IGRhdGVDb21wb25lbnRJbmRleGVzLmluZGV4T2YoZGF0ZUZvcm1hdEluZGV4ZXMueWVhckluZGV4KSxcbiAgICAgIG1vbnRoSW5kZXg6IGRhdGVDb21wb25lbnRJbmRleGVzLmluZGV4T2YoZGF0ZUZvcm1hdEluZGV4ZXMubW9udGhJbmRleCksXG4gICAgICBkYXlJbmRleDogZGF0ZUNvbXBvbmVudEluZGV4ZXMuaW5kZXhPZihkYXRlRm9ybWF0SW5kZXhlcy5kYXlJbmRleCksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhlIHByb3ZpZGVkIFNreUZ1enp5RGF0ZSBvYmplY3QuIFZhbGlkIGZ1enp5IGRhdGVzIGFyZSBhcyBmb2xsb3dzOlxuICAgKiBtb250aCwgZGF5LCB5ZWFyXG4gICAqIG1vbnRoLCB5ZWFyXG4gICAqIG1vbnRoLCBkYXlcbiAgICogeWVhciBvbmx5XG4gICAqL1xuICAjaXNGdXp6eURhdGVWYWxpZChmdXp6eURhdGU6IFNreUZ1enp5RGF0ZSk6IGJvb2xlYW4ge1xuICAgIGlmICghZnV6enlEYXRlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gSWYgbm9uZSBvZiB0aGUgZGF0ZXMgcGFydCBhcmUgc3BlY2lmaWVkLCByZXR1cm4gZmFsc2UuXG4gICAgaWYgKCFmdXp6eURhdGUuZGF5ICYmICFmdXp6eURhdGUubW9udGggJiYgIWZ1enp5RGF0ZS55ZWFyKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gSWYgb25seSBtb250aCBpcyBzcGVjaWZpZWQsIHJldHVybiBmYWxzZS5cbiAgICBpZiAoIWZ1enp5RGF0ZS5kYXkgJiYgZnV6enlEYXRlLm1vbnRoICYmICFmdXp6eURhdGUueWVhcikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIElmIG9ubHkgZGF5IGlzIHNwZWNpZmllZCwgcmV0dXJuIGZhbHNlLlxuICAgIGlmIChmdXp6eURhdGUuZGF5ICYmICFmdXp6eURhdGUubW9udGggJiYgIWZ1enp5RGF0ZS55ZWFyKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cbiJdfQ==","import { Pipe } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"../datepicker/fuzzy/fuzzy-date.service\";\n/**\n * Formats date values using two or more date tokens that represent the day, month,\n * and year. The tokens are described in the [moment.js values](https://momentjs.com/docs/#/displaying/).\n * @example\n * ```markup\n * {{ myFuzzyDate | skyFuzzyDate:'MMM Y' }}\n * {{ myFuzzyDate | skyFuzzyDate:'MMM Y':'en-CA' }}\n * ```\n */\nexport class SkyFuzzyDatePipe {\n #fuzzyDateService;\n constructor(fuzzyDateService) {\n this.#fuzzyDateService = fuzzyDateService;\n }\n /**\n * Transforms fuzzy date values using two or more date tokens that represent the day, month,\n * and year.\n * @param value Specifies the date value to transform.\n * @param format Specifies the format to apply to the transform. You construct the format\n * string with a two or more tokens that specify the components of date-time value. The\n * tokens are described in the [moment.js values](https://momentjs.com/docs/#/displaying/).\n * If you don't provide a format, `SkyFuzzyDatePipe` attempts to format fuzzy dates based\n * on the browser's default locale.\n * @param locale Specifies the locale code to use in the transform.\n */\n transform(value, format, locale) {\n if (!value) {\n return '';\n }\n const fuzzyDateFormat = format || this.#fuzzyDateService.getLocaleShortFormat(locale);\n const fuzzyDateLocale = locale || this.#fuzzyDateService.getCurrentLocale();\n return this.#fuzzyDateService.format(value, fuzzyDateFormat, fuzzyDateLocale);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyFuzzyDatePipe, deps: [{ token: i1.SkyFuzzyDateService }], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyFuzzyDatePipe, isStandalone: false, name: \"skyFuzzyDate\", pure: false }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyFuzzyDatePipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'skyFuzzyDate',\n pure: false,\n standalone: false,\n }]\n }], ctorParameters: () => [{ type: i1.SkyFuzzyDateService }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnV6enktZGF0ZS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2RhdGV0aW1lL3NyYy9saWIvbW9kdWxlcy9kYXRlLXBpcGUvZnV6enktZGF0ZS5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDOzs7QUFLcEQ7Ozs7Ozs7O0dBUUc7QUFNSCxNQUFNLE9BQU8sZ0JBQWdCO0lBQzNCLGlCQUFpQixDQUFzQjtJQUV2QyxZQUFZLGdCQUFxQztRQUMvQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsZ0JBQWdCLENBQUM7SUFDNUMsQ0FBQztJQUVEOzs7Ozs7Ozs7O09BVUc7SUFDSSxTQUFTLENBQ2QsS0FBbUIsRUFDbkIsTUFBZSxFQUNmLE1BQWU7UUFFZixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDWCxPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFDRCxNQUFNLGVBQWUsR0FDbkIsTUFBTSxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNoRSxNQUFNLGVBQWUsR0FBRyxNQUFNLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDNUUsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUNsQyxLQUFLLEVBQ0wsZUFBZSxFQUNmLGVBQWUsQ0FDaEIsQ0FBQztJQUNKLENBQUM7OEdBbENVLGdCQUFnQjs0R0FBaEIsZ0JBQWdCOzsyRkFBaEIsZ0JBQWdCO2tCQUw1QixJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxjQUFjO29CQUNwQixJQUFJLEVBQUUsS0FBSztvQkFDWCxVQUFVLEVBQUUsS0FBSztpQkFDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFNreUZ1enp5RGF0ZSB9IGZyb20gJy4uL2RhdGVwaWNrZXIvZnV6enkvZnV6enktZGF0ZSc7XG5pbXBvcnQgeyBTa3lGdXp6eURhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vZGF0ZXBpY2tlci9mdXp6eS9mdXp6eS1kYXRlLnNlcnZpY2UnO1xuXG4vKipcbiAqIEZvcm1hdHMgZGF0ZSB2YWx1ZXMgdXNpbmcgdHdvIG9yIG1vcmUgZGF0ZSB0b2tlbnMgdGhhdCByZXByZXNlbnQgdGhlIGRheSwgbW9udGgsXG4gKiBhbmQgeWVhci4gVGhlIHRva2VucyBhcmUgZGVzY3JpYmVkIGluIHRoZSBbbW9tZW50LmpzIHZhbHVlc10oaHR0cHM6Ly9tb21lbnRqcy5jb20vZG9jcy8jL2Rpc3BsYXlpbmcvKS5cbiAqIEBleGFtcGxlXG4gKiBgYGBtYXJrdXBcbiAqIHt7IG15RnV6enlEYXRlIHwgc2t5RnV6enlEYXRlOidNTU0gWScgfX1cbiAqIHt7IG15RnV6enlEYXRlIHwgc2t5RnV6enlEYXRlOidNTU0gWSc6J2VuLUNBJyB9fVxuICogYGBgXG4gKi9cbkBQaXBlKHtcbiAgbmFtZTogJ3NreUZ1enp5RGF0ZScsXG4gIHB1cmU6IGZhbHNlLFxuICBzdGFuZGFsb25lOiBmYWxzZSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5RnV6enlEYXRlUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAjZnV6enlEYXRlU2VydmljZTogU2t5RnV6enlEYXRlU2VydmljZTtcblxuICBjb25zdHJ1Y3RvcihmdXp6eURhdGVTZXJ2aWNlOiBTa3lGdXp6eURhdGVTZXJ2aWNlKSB7XG4gICAgdGhpcy4jZnV6enlEYXRlU2VydmljZSA9IGZ1enp5RGF0ZVNlcnZpY2U7XG4gIH1cblxuICAvKipcbiAgICogVHJhbnNmb3JtcyBmdXp6eSBkYXRlIHZhbHVlcyB1c2luZyB0d28gb3IgbW9yZSBkYXRlIHRva2VucyB0aGF0IHJlcHJlc2VudCB0aGUgZGF5LCBtb250aCxcbiAgICogYW5kIHllYXIuXG4gICAqIEBwYXJhbSB2YWx1ZSBTcGVjaWZpZXMgdGhlIGRhdGUgdmFsdWUgdG8gdHJhbnNmb3JtLlxuICAgKiBAcGFyYW0gZm9ybWF0IFNwZWNpZmllcyB0aGUgZm9ybWF0IHRvIGFwcGx5IHRvIHRoZSB0cmFuc2Zvcm0uIFlvdSBjb25zdHJ1Y3QgdGhlIGZvcm1hdFxuICAgKiBzdHJpbmcgd2l0aCBhIHR3byBvciBtb3JlIHRva2VucyB0aGF0IHNwZWNpZnkgdGhlIGNvbXBvbmVudHMgb2YgZGF0ZS10aW1lIHZhbHVlLiBUaGVcbiAgICogdG9rZW5zIGFyZSBkZXNjcmliZWQgaW4gdGhlIFttb21lbnQuanMgdmFsdWVzXShodHRwczovL21vbWVudGpzLmNvbS9kb2NzLyMvZGlzcGxheWluZy8pLlxuICAgKiBJZiB5b3UgZG9uJ3QgcHJvdmlkZSBhIGZvcm1hdCwgYFNreUZ1enp5RGF0ZVBpcGVgIGF0dGVtcHRzIHRvIGZvcm1hdCBmdXp6eSBkYXRlcyBiYXNlZFxuICAgKiBvbiB0aGUgYnJvd3NlcidzIGRlZmF1bHQgbG9jYWxlLlxuICAgKiBAcGFyYW0gbG9jYWxlIFNwZWNpZmllcyB0aGUgbG9jYWxlIGNvZGUgdG8gdXNlIGluIHRoZSB0cmFuc2Zvcm0uXG4gICAqL1xuICBwdWJsaWMgdHJhbnNmb3JtKFxuICAgIHZhbHVlOiBTa3lGdXp6eURhdGUsXG4gICAgZm9ybWF0Pzogc3RyaW5nLFxuICAgIGxvY2FsZT86IHN0cmluZyxcbiAgKTogc3RyaW5nIHtcbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIGNvbnN0IGZ1enp5RGF0ZUZvcm1hdCA9XG4gICAgICBmb3JtYXQgfHwgdGhpcy4jZnV6enlEYXRlU2VydmljZS5nZXRMb2NhbGVTaG9ydEZvcm1hdChsb2NhbGUpO1xuICAgIGNvbnN0IGZ1enp5RGF0ZUxvY2FsZSA9IGxvY2FsZSB8fCB0aGlzLiNmdXp6eURhdGVTZXJ2aWNlLmdldEN1cnJlbnRMb2NhbGUoKTtcbiAgICByZXR1cm4gdGhpcy4jZnV6enlEYXRlU2VydmljZS5mb3JtYXQoXG4gICAgICB2YWx1ZSxcbiAgICAgIGZ1enp5RGF0ZUZvcm1hdCxcbiAgICAgIGZ1enp5RGF0ZUxvY2FsZSxcbiAgICApO1xuICB9XG59XG4iXX0=","import { NgModule } from '@angular/core';\nimport { SkyDatetimeResourcesModule } from '../shared/sky-datetime-resources.module';\nimport { SkyDatePipe } from './date.pipe';\nimport { SkyFuzzyDatePipe } from './fuzzy-date.pipe';\nimport * as i0 from \"@angular/core\";\nexport class SkyDatePipeModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDatePipeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDatePipeModule, declarations: [SkyDatePipe, SkyFuzzyDatePipe], imports: [SkyDatetimeResourcesModule], exports: [SkyDatePipe, SkyFuzzyDatePipe] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDatePipeModule, providers: [SkyDatePipe, SkyFuzzyDatePipe], imports: [SkyDatetimeResourcesModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDatePipeModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [SkyDatePipe, SkyFuzzyDatePipe],\n providers: [SkyDatePipe, SkyFuzzyDatePipe],\n imports: [SkyDatetimeResourcesModule],\n exports: [SkyDatePipe, SkyFuzzyDatePipe],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waXBlLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9kYXRldGltZS9zcmMvbGliL21vZHVsZXMvZGF0ZS1waXBlL2RhdGUtcGlwZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUVyRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDOztBQVFyRCxNQUFNLE9BQU8saUJBQWlCOzhHQUFqQixpQkFBaUI7K0dBQWpCLGlCQUFpQixpQkFMYixXQUFXLEVBQUUsZ0JBQWdCLGFBRWxDLDBCQUEwQixhQUMxQixXQUFXLEVBQUUsZ0JBQWdCOytHQUU1QixpQkFBaUIsYUFKakIsQ0FBQyxXQUFXLEVBQUUsZ0JBQWdCLENBQUMsWUFDaEMsMEJBQTBCOzsyRkFHekIsaUJBQWlCO2tCQU43QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLFdBQVcsRUFBRSxnQkFBZ0IsQ0FBQztvQkFDN0MsU0FBUyxFQUFFLENBQUMsV0FBVyxFQUFFLGdCQUFnQixDQUFDO29CQUMxQyxPQUFPLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQztvQkFDckMsT0FBTyxFQUFFLENBQUMsV0FBVyxFQUFFLGdCQUFnQixDQUFDO2lCQUN6QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFNreURhdGV0aW1lUmVzb3VyY2VzTW9kdWxlIH0gZnJvbSAnLi4vc2hhcmVkL3NreS1kYXRldGltZS1yZXNvdXJjZXMubW9kdWxlJztcblxuaW1wb3J0IHsgU2t5RGF0ZVBpcGUgfSBmcm9tICcuL2RhdGUucGlwZSc7XG5pbXBvcnQgeyBTa3lGdXp6eURhdGVQaXBlIH0gZnJvbSAnLi9mdXp6eS1kYXRlLnBpcGUnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtTa3lEYXRlUGlwZSwgU2t5RnV6enlEYXRlUGlwZV0sXG4gIHByb3ZpZGVyczogW1NreURhdGVQaXBlLCBTa3lGdXp6eURhdGVQaXBlXSxcbiAgaW1wb3J0czogW1NreURhdGV0aW1lUmVzb3VyY2VzTW9kdWxlXSxcbiAgZXhwb3J0czogW1NreURhdGVQaXBlLCBTa3lGdXp6eURhdGVQaXBlXSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5RGF0ZVBpcGVNb2R1bGUge31cbiJdfQ==","import moment from 'moment';\nexport class SkyDateFormatter {\n static { this.defaultLocale = 'en-US'; }\n static { this.defaultShortDateFormat = 'MM/DD/YYYY'; }\n /**\n * Sets moment's global locale.\n */\n static setLocale(locale) {\n moment.locale(locale || SkyDateFormatter.defaultLocale);\n }\n /**\n * Returns the preferred short date format for the current locale.\n */\n static getPreferredShortDateFormat() {\n /* istanbul ignore next */\n return (moment.localeData().longDateFormat('L') ||\n SkyDateFormatter.defaultShortDateFormat);\n }\n format(date, format) {\n return moment(date.getTime()).format(format);\n }\n getDateFromString(dateString, format, \n /* istanbul ignore next */\n strict = false) {\n let momentValue = moment(dateString, format, strict);\n if (!momentValue.isValid()) {\n momentValue = moment(dateString, 'YYYY-MM-DDThh:mm:ss.SZ', strict);\n }\n return momentValue.toDate();\n }\n dateIsValid(date) {\n return !!(date &&\n date instanceof Date &&\n !isNaN(date.valueOf()) &&\n !isNaN(new Date(date).getDate()));\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1mb3JtYXR0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL2RhdGVwaWNrZXIvZGF0ZS1mb3JtYXR0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBRTVCLE1BQU0sT0FBTyxnQkFBZ0I7YUFDWixrQkFBYSxHQUFHLE9BQU8sQ0FBQzthQUV4QiwyQkFBc0IsR0FBRyxZQUFZLENBQUM7SUFFckQ7O09BRUc7SUFDSSxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQWM7UUFDcEMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLElBQUksZ0JBQWdCLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLDJCQUEyQjtRQUN2QywwQkFBMEI7UUFDMUIsT0FBTyxDQUNMLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDO1lBQ3ZDLGdCQUFnQixDQUFDLHNCQUFzQixDQUN4QyxDQUFDO0lBQ0osQ0FBQztJQUVNLE1BQU0sQ0FBQyxJQUFVLEVBQUUsTUFBZTtRQUN2QyxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVNLGlCQUFpQixDQUN0QixVQUFrQixFQUNsQixNQUFlO0lBQ2YsMEJBQTBCO0lBQzFCLE1BQU0sR0FBRyxLQUFLO1FBRWQsSUFBSSxXQUFXLEdBQUcsTUFBTSxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFckQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1lBQzNCLFdBQVcsR0FBRyxNQUFNLENBQUMsVUFBVSxFQUFFLHdCQUF3QixFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3JFLENBQUM7UUFFRCxPQUFPLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRU0sV0FBVyxDQUFDLElBQXNCO1FBQ3ZDLE9BQU8sQ0FBQyxDQUFDLENBQ1AsSUFBSTtZQUNKLElBQUksWUFBWSxJQUFJO1lBQ3BCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUN0QixDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUNqQyxDQUFDO0lBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcblxuZXhwb3J0IGNsYXNzIFNreURhdGVGb3JtYXR0ZXIge1xuICBwcml2YXRlIHN0YXRpYyBkZWZhdWx0TG9jYWxlID0gJ2VuLVVTJztcblxuICBwcml2YXRlIHN0YXRpYyBkZWZhdWx0U2hvcnREYXRlRm9ybWF0ID0gJ01NL0REL1lZWVknO1xuXG4gIC8qKlxuICAgKiBTZXRzIG1vbWVudCdzIGdsb2JhbCBsb2NhbGUuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHNldExvY2FsZShsb2NhbGU6IHN0cmluZyk6IHZvaWQge1xuICAgIG1vbWVudC5sb2NhbGUobG9jYWxlIHx8IFNreURhdGVGb3JtYXR0ZXIuZGVmYXVsdExvY2FsZSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgcHJlZmVycmVkIHNob3J0IGRhdGUgZm9ybWF0IGZvciB0aGUgY3VycmVudCBsb2NhbGUuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGdldFByZWZlcnJlZFNob3J0RGF0ZUZvcm1hdCgpOiBzdHJpbmcge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgcmV0dXJuIChcbiAgICAgIG1vbWVudC5sb2NhbGVEYXRhKCkubG9uZ0RhdGVGb3JtYXQoJ0wnKSB8fFxuICAgICAgU2t5RGF0ZUZvcm1hdHRlci5kZWZhdWx0U2hvcnREYXRlRm9ybWF0XG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBmb3JtYXQoZGF0ZTogRGF0ZSwgZm9ybWF0Pzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbW9tZW50KGRhdGUuZ2V0VGltZSgpKS5mb3JtYXQoZm9ybWF0KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXREYXRlRnJvbVN0cmluZyhcbiAgICBkYXRlU3RyaW5nOiBzdHJpbmcsXG4gICAgZm9ybWF0Pzogc3RyaW5nLFxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgc3RyaWN0ID0gZmFsc2UsXG4gICk6IERhdGUge1xuICAgIGxldCBtb21lbnRWYWx1ZSA9IG1vbWVudChkYXRlU3RyaW5nLCBmb3JtYXQsIHN0cmljdCk7XG5cbiAgICBpZiAoIW1vbWVudFZhbHVlLmlzVmFsaWQoKSkge1xuICAgICAgbW9tZW50VmFsdWUgPSBtb21lbnQoZGF0ZVN0cmluZywgJ1lZWVktTU0tRERUaGg6bW06c3MuU1onLCBzdHJpY3QpO1xuICAgIH1cblxuICAgIHJldHVybiBtb21lbnRWYWx1ZS50b0RhdGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBkYXRlSXNWYWxpZChkYXRlOiBEYXRlIHwgdW5kZWZpbmVkKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhKFxuICAgICAgZGF0ZSAmJlxuICAgICAgZGF0ZSBpbnN0YW5jZW9mIERhdGUgJiZcbiAgICAgICFpc05hTihkYXRlLnZhbHVlT2YoKSkgJiZcbiAgICAgICFpc05hTihuZXcgRGF0ZShkYXRlKS5nZXREYXRlKCkpXG4gICAgKTtcbiAgfVxufVxuIl19","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output, ViewEncapsulation, inject, } from '@angular/core';\nimport { SkyLiveAnnouncerService } from '@skyux/core';\nimport { SkyLibResourcesService } from '@skyux/i18n';\nimport { SkyIconModule } from '@skyux/icon';\nimport { Subject, takeUntil } from 'rxjs';\nimport { SkyDateFormatter } from '../date-formatter';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nimport * as i2 from \"@skyux/icon\";\nlet nextDatepickerId = 0;\n/**\n * @internal\n */\nexport class SkyDatepickerCalendarInnerComponent {\n constructor() {\n this.selectedDateChange = new EventEmitter(undefined);\n this.calendarModeChange = new EventEmitter();\n // TODO: `activeDate` is very similar to `selectedDate` and at the very least should be able to be undefined. However, this would take considerable refactoring to do and thus has been deferred.\n this.activeDate = new Date();\n this.activeDateId = '';\n this.title = '';\n this.minMode = 'day';\n this.maxMode = 'year';\n this.monthColLimit = 3;\n this.yearColLimit = 5;\n this.datepickerMode = 'day';\n this.yearRange = 20;\n this.formatDay = 'DD';\n this.formatMonth = 'MMMM';\n this.formatYear = 'YYYY';\n this.formatDayHeader = 'dd';\n this.formatDayTitle = 'MMMM YYYY';\n this.formatMonthTitle = 'YYYY';\n this.formatDayLabel = 'dddd, MMMM Do YYYY';\n this.formatMonthLabel = 'MMMM YYYY';\n this.formatYearLabel = 'YYYY';\n this.datepickerId = `sky-datepicker-${++nextDatepickerId}`;\n this.stepDay = {};\n this.stepMonth = {};\n this.stepYear = {};\n this.modes = ['day', 'month', 'year'];\n this.dateFormatter = new SkyDateFormatter();\n this.keys = [\n 'enter',\n ' ',\n 'spacebar',\n 'pageup',\n 'pagedown',\n 'end',\n 'home',\n 'arrowleft',\n 'arrowup',\n 'arrowright',\n 'arrowdown',\n ];\n this.#ngUnsubscribe = new Subject();\n this.#_startingDay = 0;\n this.#resourcesSvc = inject(SkyLibResourcesService);\n this.#liveAnnouncerSvc = inject(SkyLiveAnnouncerService);\n }\n set startingDay(value) {\n this.#_startingDay = value || 0;\n }\n get startingDay() {\n return this.#_startingDay;\n }\n set selectedDate(value) {\n if (value && this.dateFormatter.dateIsValid(value)) {\n this.#_selectedDate = value;\n this.activeDate = value;\n }\n else {\n this.#_selectedDate = undefined;\n this.activeDate = new Date();\n }\n }\n get selectedDate() {\n return this.#_selectedDate;\n }\n #ngUnsubscribe;\n #prevDay;\n #nextDay;\n #prevMonth;\n #nextMonth;\n #prevYear;\n #nextYear;\n #_selectedDate;\n #_startingDay;\n #resourcesSvc;\n #liveAnnouncerSvc;\n ngOnInit() {\n if (this.selectedDate) {\n this.activeDate = new Date(this.selectedDate);\n }\n else {\n this.activeDate = this.startAtDate ?? new Date();\n }\n this.#resourcesSvc\n .getStrings({\n prevDay: 'skyux_datepicker_move_calendar_previous_day',\n nextDay: 'skyux_datepicker_move_calendar_next_day',\n prevMonth: 'skyux_datepicker_move_calendar_previous_month',\n nextMonth: 'skyux_datepicker_move_calendar_next_month',\n prevYear: 'skyux_datepicker_move_calendar_previous_year',\n nextYear: 'skyux_datepicker_move_calendar_next_year',\n })\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((resources) => {\n this.#prevDay = resources.prevDay;\n this.#nextDay = resources.nextDay;\n this.#prevMonth = resources.prevMonth;\n this.#nextMonth = resources.nextMonth;\n this.#prevYear = resources.prevYear;\n this.#nextYear = resources.nextYear;\n this.refreshView();\n });\n }\n ngOnChanges(changes) {\n this.refreshView();\n }\n ngOnDestroy() {\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n }\n setCompareHandler(handler, type) {\n if (type === 'day') {\n this.compareHandlerDay = handler;\n }\n if (type === 'month') {\n this.compareHandlerMonth = handler;\n }\n if (type === 'year') {\n this.compareHandlerYear = handler;\n }\n }\n compare(date1, date2) {\n if (date1 === undefined || date2 === undefined) {\n return undefined;\n }\n if (this.datepickerMode === 'day' && this.compareHandlerDay) {\n return this.compareHandlerDay(date1, date2);\n }\n if (this.datepickerMode === 'month' && this.compareHandlerMonth) {\n return this.compareHandlerMonth(date1, date2);\n }\n /* istanbul ignore else */\n /* sanity check */\n if (this.datepickerMode === 'year' && this.compareHandlerYear) {\n return this.compareHandlerYear(date1, date2);\n }\n /* istanbul ignore next */\n return undefined;\n }\n setRefreshViewHandler(handler, type) {\n if (type === 'day') {\n this.refreshViewHandlerDay = handler;\n }\n if (type === 'month') {\n this.refreshViewHandlerMonth = handler;\n }\n if (type === 'year') {\n this.refreshViewHandlerYear = handler;\n }\n }\n refreshView() {\n if (this.datepickerMode === 'day' && this.refreshViewHandlerDay) {\n this.title = this.refreshViewHandlerDay();\n this.previousLabel = this.#prevDay;\n this.nextLabel = this.#nextDay;\n }\n if (this.datepickerMode === 'month' && this.refreshViewHandlerMonth) {\n this.title = this.refreshViewHandlerMonth();\n this.previousLabel = this.#prevMonth;\n this.nextLabel = this.#nextMonth;\n }\n if (this.datepickerMode === 'year' && this.refreshViewHandlerYear) {\n this.title = this.refreshViewHandlerYear();\n this.previousLabel = this.#prevYear;\n this.nextLabel = this.#nextYear;\n }\n }\n setKeydownHandler(handler, type) {\n if (type === 'day') {\n this.handleKeydownDay = handler;\n }\n if (type === 'month') {\n this.handleKeydownMonth = handler;\n }\n if (type === 'year') {\n this.handleKeydownYear = handler;\n }\n }\n handleKeydown(key, event) {\n if (this.datepickerMode === 'day' && this.handleKeydownDay) {\n this.handleKeydownDay(key, event);\n }\n if (this.datepickerMode === 'month' && this.handleKeydownMonth) {\n this.handleKeydownMonth(key, event);\n }\n if (this.datepickerMode === 'year' && this.handleKeydownYear) {\n this.handleKeydownYear(key, event);\n }\n }\n dateFilter(date, format) {\n return this.dateFormatter.format(date, format);\n }\n isActive(dateObject) {\n if (this.compare(dateObject.date, this.activeDate) === 0) {\n this.activeDateId = dateObject.uid;\n return true;\n }\n return false;\n }\n onKeydown(event) {\n const key = event.key?.toLowerCase();\n if (!this.keys.includes(key) || event.shiftKey) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n if (key === 'enter' || key === 'spacebar' || key === ' ') {\n if (this.isDisabled(this.activeDate)) {\n return;\n }\n this.select(this.activeDate);\n }\n else if (event.ctrlKey && (key === 'arrowup' || key === 'arrowdown')) {\n this.toggleMode(key === 'arrowup' ? 1 : -1);\n }\n else {\n this.handleKeydown(key, event);\n this.refreshView();\n }\n }\n createDateObject(date, format, isSecondary, id) {\n const customDateMatch = this.#getCustomDate(date);\n const dateObject = {\n date: new Date(date.getFullYear(), date.getMonth(), date.getDate()),\n label: this.dateFilter(date, format),\n selected: !!this.selectedDate && this.compare(date, this.selectedDate) === 0,\n disabled: this.isDisabled(date),\n current: this.compare(date, new Date()) === 0,\n secondary: isSecondary,\n uid: id,\n keyDate: customDateMatch ? customDateMatch.keyDate : undefined,\n keyDateText: customDateMatch ? customDateMatch.keyDateText : [],\n };\n return dateObject;\n }\n createCalendarRows(dates, size) {\n const rows = [];\n while (dates.length > 0) {\n rows.push(dates.splice(0, size));\n }\n return rows;\n }\n /*\n This is ensures that no strangeness happens when converting a date to local time.\n */\n fixTimeZone(date) {\n const newDate = new Date(date);\n newDate.setFullYear(date.getFullYear(), date.getMonth(), date.getDate());\n return newDate;\n }\n selectCalendar(event, date, closePicker = false) {\n if (!closePicker) {\n event.preventDefault();\n event.stopPropagation();\n }\n this.select(date);\n }\n select(date, isManual = true) {\n this.activeDate = new Date(date.getFullYear(), date.getMonth(), date.getDate());\n /*\n Only actually select date if in minMode (day picker mode).\n Otherwise, just change the active view for the datepicker.\n */\n if (this.datepickerMode === this.minMode) {\n this.selectedDate = new Date(this.activeDate);\n if (isManual) {\n this.selectedDateChange.emit(this.selectedDate);\n }\n }\n else {\n this.datepickerMode =\n this.modes[this.modes.indexOf(this.datepickerMode) - 1];\n this.calendarModeChange.emit(this.datepickerMode);\n }\n this.refreshView();\n }\n moveCalendar(event, direction) {\n event.preventDefault();\n event.stopPropagation();\n this.move(direction);\n }\n move(direction) {\n let expectedStep;\n if (this.datepickerMode === 'day') {\n expectedStep = this.stepDay;\n }\n if (this.datepickerMode === 'month') {\n expectedStep = this.stepMonth;\n }\n if (this.datepickerMode === 'year') {\n expectedStep = this.stepYear;\n }\n /* istanbul ignore else */\n /* sanity check */\n if (expectedStep) {\n const year = this.activeDate.getFullYear() + direction * (expectedStep.years || 0);\n const month = this.activeDate.getMonth() + direction * (expectedStep.months || 0);\n this.activeDate = new Date(year, month, 1);\n this.refreshView();\n }\n }\n toggleModeCalendar(event) {\n event.preventDefault();\n event.stopPropagation();\n this.toggleMode(1);\n }\n toggleMode(direction) {\n /*istanbul ignore next */\n direction = direction || 1;\n /* istanbul ignore else */\n /* sanity check */\n if (!(direction === 1 && this.datepickerMode === this.maxMode) &&\n !(this.datepickerMode === this.minMode && direction === -1)) {\n this.datepickerMode =\n this.modes[this.modes.indexOf(this.datepickerMode) + direction];\n this.calendarModeChange.emit(this.datepickerMode);\n this.refreshView();\n }\n }\n announceDate(date, format) {\n const caption = this.dateFilter(date, format);\n this.#liveAnnouncerSvc.announce(caption);\n }\n /**\n * Date is disabled if it meets any of these criteria:\n * 1. Date falls outside the min or max dates set by the SkyDatepickerConfigService.\n * 2. Date is marked as disabled in the customDates array.\n */\n isDisabled(date) {\n const customDate = this.#getCustomDate(date);\n const minDateCompare = this.compare(date, this.minDate);\n const maxDateCompare = this.compare(date, this.maxDate);\n return ((minDateCompare !== undefined && minDateCompare < 0) ||\n (maxDateCompare !== undefined && maxDateCompare > 0) ||\n !!customDate?.disabled);\n }\n #getCustomDate(date) {\n if (this.customDates) {\n return this.customDates.find((customDate) => {\n return customDate.date.getTime() === date.getTime();\n });\n }\n return undefined;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDatepickerCalendarInnerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.5\", type: SkyDatepickerCalendarInnerComponent, isStandalone: true, selector: \"sky-datepicker-inner\", inputs: { customDates: \"customDates\", startingDay: \"startingDay\", minDate: \"minDate\", maxDate: \"maxDate\", startAtDate: \"startAtDate\", selectedDate: \"selectedDate\" }, outputs: { selectedDateChange: \"selectedDateChange\", calendarModeChange: \"calendarModeChange\" }, usesOnChanges: true, ngImport: i0, template: \"@if (datepickerMode) {\\n <div class=\\\"sky-datepicker-calendar-inner\\\">\\n <div class=\\\"sky-datepicker-calendar-header\\\">\\n <span class=\\\"sky-datepicker-header-left\\\">\\n <button\\n type=\\\"button\\\"\\n class=\\\"sky-btn sky-btn-default sky-btn-sm sky-datepicker-btn-previous\\\"\\n [attr.aria-label]=\\\"previousLabel\\\"\\n (click)=\\\"moveCalendar($event, -1)\\\"\\n >\\n <sky-icon class=\\\"sky-datepicker-chevron\\\" iconName=\\\"chevron-left\\\" />\\n </button>\\n </span>\\n <span class=\\\"sky-datepicker-header-center\\\">\\n <!-- display: inline -->\\n <button\\n type=\\\"button\\\"\\n class=\\\"sky-btn sky-btn-default sky-btn-sm sky-datepicker-calendar-title\\\"\\n [id]=\\\"datepickerId + '-title'\\\"\\n [disabled]=\\\"datepickerMode === maxMode\\\"\\n [ngClass]=\\\"{\\n 'sky-btn-disabled': datepickerMode === maxMode\\n }\\\"\\n (click)=\\\"toggleModeCalendar($event)\\\"\\n >{{ title }}</button\\n >\\n </span>\\n <span class=\\\"sky-datepicker-header-right\\\">\\n <button\\n type=\\\"button\\\"\\n class=\\\"sky-btn sky-btn-default sky-btn-sm sky-datepicker-btn-next\\\"\\n [attr.aria-label]=\\\"nextLabel\\\"\\n (click)=\\\"moveCalendar($event, 1)\\\"\\n >\\n <sky-icon class=\\\"sky-datepicker-chevron\\\" iconName=\\\"chevron-right\\\" />\\n </button>\\n </span>\\n </div>\\n <ng-content />\\n </div>\\n}\\n\", styles: [\".sky-datepicker-calendar-inner:not(.sky-theme-modern *){--sky-override-button-box-shadow: none;--sky-override-button-box-shadow-focus: none;--sky-override-chevron-color: #212327;--sky-override-datepicker-background-color: #ffffff;--sky-override-datepicker-border: 1px solid #e2e3e4;--sky-override-datepicker-border-color-hover: #eeeeef;--sky-override-datepicker-border-radius: 5px;--sky-override-datepicker-button-background-color: #ffffff;--sky-override-datepicker-button-background-color-active: #eeeeef;--sky-override-datepicker-button-background-color-disabled: #ffffff;--sky-override-datepicker-button-background-color-hover: #eeeeef;--sky-override-datepicker-button-border: 2px solid #ffffff;--sky-override-datepicker-button-selected-background: #c1e8fb;--sky-override-datepicker-button-selected-border: 2px solid #00b4f1;--sky-override-datepicker-calendar-top-padding: 0;--sky-override-datepicker-chevron-size: inherit;--sky-override-datepicker-day-btn-font-size: 12px;--sky-override-datepicker-day-btn-line-height: 1.5;--sky-override-datepicker-day-button-padding: 5px 10px;--sky-override-datepicker-day-button-size: 100%;--sky-override-datepicker-focus-outline: auto;--sky-override-datepicker-horizontal-padding: 0;--sky-override-datepicker-month-year-button-padding: 6px 12px;--sky-override-datepicker-nav-button-padding: 5px 10px;--sky-override-datepicker-nav-space: 0;--sky-override-datepicker-secondary-date-color: #686c73;--sky-override-datepicker-table-border-spacing: 2px;--sky-override-datepicker-td-padding: 1px;--sky-override-datepicker-title-font-style: 700;--sky-override-datepicker-vertical-padding: 0;--sky-override-datepicker-weekday-font-size: 12px;--sky-override-datepicker-weekday-font-weight: 900}.sky-theme-modern:not(.sky-theme-brand-base) .sky-datepicker-calendar-inner{--sky-override-chevron-color: var(--sky-color-text-default);--sky-override-datepicker-box-shadow: inset 0 0 0 1px var(--modern-color-gray-15);--sky-override-datepicker-button-active-border-width: var(--modern-size-1);--sky-override-datepicker-button-background-color: var(--modern-color-white);--sky-override-datepicker-button-background-color-active: var( --modern-color-white );--sky-override-datepicker-button-background-color-hover: var( --modern-color-white );--sky-override-datepicker-button-border-color-disabled: var( --sky-color-background-action-secondary-disabled );--sky-override-datepicker-button-border-color-transparent: var( --modern-color-transparent );--sky-override-button-box-shadow-focus: inset 0 0 0 var(--sky-border-width-action-focus) var(--sky-color-border-action-tertiary-focus), var(--sky-elevation-focus);--sky-override-datepicker-calendar-top-padding: 0;--sky-override-datepicker-day-btn-font-size: 12px;--sky-override-datepicker-horizontal-padding: 10px;--sky-override-datepicker-month-year-button-padding: 5px 7px;--sky-override-datepicker-nav-button-padding: 5px 7px;--sky-override-datepicker-nav-space: 0;--sky-override-datepicker-table-border-spacing: 2px;--sky-override-datepicker-td-padding: 1px;--sky-override-datepicker-title-font-style: 700;--sky-override-datepicker-vertical-padding: 5px;--sky-override-datepicker-weekday-font-size: 12.8px;--sky-override-datepicker-weekday-font-weight: 900}.sky-theme-modern.sky-theme-brand-base .sky-datepicker-calendar-inner .sky-datepicker-calendar-header .sky-btn-default{line-height:1}.sky-theme-modern.sky-theme-brand-base .sky-datepicker-calendar-inner sky-yearpicker td{width:20%}.sky-theme-modern.sky-theme-brand-base .sky-datepicker-calendar-inner sky-monthpicker td{width:33%}.sky-datepicker-calendar-inner{border-radius:var(--sky-override-datepicker-border-radius, var(--sky-border-radius-s));background-color:var(--sky-override-datepicker-background-color, var(--sky-color-background-container-menu));border:var(--sky-override-datepicker-border);box-shadow:var(--sky-override-datepicker-box-shadow)}.sky-datepicker-calendar-inner .sky-datepicker-calendar-header{width:100%;display:flex;padding:var(--sky-override-datepicker-vertical-padding, var(--sky-comp-datepicker-header-space-inset-top)) var(--sky-override-datepicker-horizontal-padding, var(--sky-comp-datepicker-header-space-inset-right)) 0 var(--sky-override-datepicker-horizontal-padding, var(--sky-comp-datepicker-header-space-inset-left))}.sky-datepicker-calendar-inner .sky-datepicker-calendar-table-container{padding:var(--sky-override-datepicker-calendar-top-padding, var(--sky-comp-datepicker-calendar-space-inset-top)) var(--sky-override-datepicker-horizontal-padding, var(--sky-comp-datepicker-calendar-space-inset-right)) var(--sky-override-datepicker-vertical-padding, var(--sky-comp-datepicker-calendar-space-inset-bottom)) var(--sky-override-datepicker-horizontal-padding, var(--sky-comp-datepicker-calendar-space-inset-left))}.sky-datepicker-calendar-inner .sky-datepicker-calendar-table-container:focus-visible{outline:var(--sky-override-datepicker-focus-outline, none)}.sky-datepicker-calendar-inner .sky-datepicker-calendar-table-container:focus-visible .sky-btn.sky-btn-active{border:var(--sky-override-datepicker-button-selected-border, none);box-shadow:var(--sky-override-button-box-shadow, inset 0 0 0 var(--sky-border-width-action-active) var(--sky-color-border-action-tertiary-active))}.sky-datepicker-calendar-inner .sky-btn-default{background-color:var(--sky-override-datepicker-button-background-color, var(--sky-color-background-action-tertiary-base));border:var(--sky-override-datepicker-button-border, none);box-shadow:var(--sky-override-button-box-shadow, inset 0 0 0 var(--sky-border-width-action-base) var(--sky-color-border-action-tertiary-base))}.sky-datepicker-calendar-inner .sky-btn-default:hover{background-color:var(--sky-override-datepicker-button-background-color-hover, var(--sky-color-background-action-tertiary-hover));border-color:var(--sky-override-datepicker-border-color-hover);box-shadow:var(--sky-override-button-box-shadow, inset 0 0 0 var(--sky-border-width-action-hover) var(--sky-color-border-action-tertiary-hover))}.sky-datepicker-calendar-inner .sky-btn-default:active{background-color:var(--sky-override-datepicker-button-background-color-active, var(--sky-color-background-action-tertiary-active));box-shadow:var(--sky-override-button-box-shadow, inset 0 0 0 var(--sky-border-width-action-active) var(--sky-override-datepicker-button-border-color-transparent, var(--sky-color-border-action-tertiary-active)))}.sky-datepicker-calendar-inner .sky-btn-default:focus-visible:not(:active){box-shadow:var(--sky-override-button-box-shadow-focus, inset 0 0 0 var(--sky-border-width-action-focus) var(--sky-color-border-action-tertiary-focus))}.sky-datepicker-calendar-inner .sky-btn-default.sky-btn.sky-datepicker-btn-date.sky-btn-disabled{background-color:var(--sky-override-datepicker-button-background-color-disabled, var(--sky-color-background-action-tertiary-disabled));box-shadow:var(--sky-override-button-box-shadow, inset 0 0 0 var(--sky-override-datepicker-button-border-color-transparent, var(--sky-border-width-action-disabled)) var(--sky-color-border-action-tertiary-disabled))}.sky-datepicker-calendar-inner .sky-btn-default.sky-datepicker-btn-next,.sky-datepicker-calendar-inner .sky-btn-default.sky-datepicker-btn-previous{padding:var(--sky-override-datepicker-nav-button-padding, var(--sky-comp-button-borderless-space-inset-top) var(--sky-comp-button-borderless-space-inset-right) var(--sky-comp-button-borderless-space-inset-bottom) var(--sky-comp-button-borderless-space-inset-left))}.sky-datepicker-calendar-inner .sky-btn-default.sky-datepicker-btn-previous{margin-right:var(--sky-override-datepicker-nav-space, var(--sky-space-gap-action_group-s))}.sky-datepicker-calendar-inner .sky-btn-default.sky-datepicker-btn-next{margin-left:var(--sky-override-datepicker-nav-space, var(--sky-space-gap-action_group-s))}.sky-datepicker-calendar-inner .sky-btn-default.sky-datepicker-calendar-title{font-weight:var(--sky-override-datepicker-title-font-style, var(--sky-font-style-emphasized));padding:var(--sky-override-datepicker-nav-button-padding, var(--sky-comp-button-borderless-space-inset-top) auto var(--sky-comp-button-borderless-space-inset-bottom))}.sky-datepicker-calendar-inner .sky-datepicker-btn-date{min-width:100%}.sky-datepicker-calendar-inner .sky-btn-sm.sky-datepicker-btn-date{font-size:var(--sky-override-datepicker-day-btn-font-size, var(--sky-font-size-body-m));height:var(--sky-override-datepicker-day-button-size, var(--sky-size-picker_btn));line-height:var(--sky-override-datepicker-day-btn-line-height, var(--sky-font-line_height-body-m));min-width:var(--sky-override-datepicker-day-button-size, 0);padding:var(--sky-override-datepicker-day-button-padding, 0);width:var(--sky-override-datepicker-day-button-size, var(--sky-size-picker_btn))}.sky-datepicker-calendar-inner .sky-datepicker-center{text-align:center}.sky-datepicker-calendar-inner .sky-btn.sky-btn-default.sky-datepicker-btn-selected,.sky-datepicker-calendar-inner .sky-btn.sky-btn-default.sky-datepicker-btn-selected:hover{background-color:var(--sky-override-datepicker-button-selected-background, var(--sky-color-background-selected-soft));border:var(--sky-override-datepicker-button-selected-border);box-shadow:var(--sky-override-button-box-shadow, inset 0 0 0 var(--sky-border-width-selected-s) var(--sky-color-border-selected))}.sky-datepicker-calendar-inner .sky-btn.sky-btn-active{box-shadow:var(--sky-override-button-box-shadow, inset 0 0 0 var(--sky-override-datepicker-button-active-border-width, var(--sky-border-width-action-active)) var(--sky-color-border-action-tertiary-active));background-color:var(--sky-override-datepicker-button-background-color-active, var(--sky-color-background-action-tertiary-active))}.sky-datepicker-calendar-inner .sky-datepicker-secondary{color:var(--sky-override-datepicker-secondary-date-color, var(--sky-color-text-deemphasized))}.sky-datepicker-calendar-inner .sky-datepicker-calendar-title{width:100%}.sky-datepicker-calendar-inner .sky-datepicker-header-left{text-align:left}.sky-datepicker-calendar-inner .sky-datepicker-header-center{display:flex;width:100%}.sky-datepicker-calendar-inner .sky-datepicker-header-right{text-align:right}.sky-datepicker-calendar-inner table{border-spacing:var(--sky-override-datepicker-table-border-spacing, var(--sky-space-gap-action_group-s))}.sky-datepicker-calendar-inner table td{padding:var(--sky-override-datepicker-td-padding, 0)}.sky-datepicker-calendar-inner table th{padding-bottom:var(--sky-override-datepicker-td-padding, calc(var(--sky-space-gap-text_action-xs) - var(--sky-space-gap-action_group-s)))}.sky-datepicker-chevron{color:var(--sky-override-chevron-color, var(--sky-color-icon-deemphasized))}sky-yearpicker .sky-btn.sky-btn-default,sky-monthpicker .sky-btn.sky-btn-default{padding:var(--sky-override-datepicker-month-year-button-padding, var(--sky-comp-datepicker-m_y_button-space-inset-top) var(--sky-comp-datepicker-m_y_button-space-inset-right) var(--sky-comp-datepicker-m_y_button-space-inset-bottom) var(--sky-comp-datepicker-m_y_button-space-inset-left))}.sky-datepicker-weekday-text{font-size:var(--sky-override-datepicker-weekday-font-size, var(--sky-font-size-body-m));font-weight:var(--sky-override-datepicker-weekday-font-weight, var(--sky-font-style-emphasized))}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"ngmodule\", type: SkyIconModule }, { kind: \"component\", type: i2.λ1, selector: \"sky-icon\", inputs: [\"icon\", \"iconName\", \"iconType\", \"size\", \"fixedWidth\", \"variant\", \"iconSize\"] }], encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDatepickerCalendarInnerComponent, decorators: [{\n type: Component,\n args: [{ encapsulation: ViewEncapsulation.None, imports: [CommonModule, SkyIconModule], selector: 'sky-datepicker-inner', template: \"@if (datepickerMode) {\\n <div class=\\\"sky-datepicker-calendar-inner\\\">\\n <div class=\\\"sky-datepicker-calendar-header\\\">\\n <span class=\\\"sky-datepicker-header-left\\\">\\n <button\\n type=\\\"button\\\"\\n class=\\\"sky-btn sky-btn-default sky-btn-sm sky-datepicker-btn-previous\\\"\\n [attr.aria-label]=\\\"previousLabel\\\"\\n (click)=\\\"moveCalendar($event, -1)\\\"\\n >\\n <sky-icon class=\\\"sky-datepicker-chevron\\\" iconName=\\\"chevron-left\\\" />\\n </button>\\n </span>\\n <span class=\\\"sky-datepicker-header-center\\\">\\n <!-- display: inline -->\\n <button\\n type=\\\"button\\\"\\n class=\\\"sky-btn sky-btn-default sky-btn-sm sky-datepicker-calendar-title\\\"\\n [id]=\\\"datepickerId + '-title'\\\"\\n [disabled]=\\\"datepickerMode === maxMode\\\"\\n [ngClass]=\\\"{\\n 'sky-btn-disabled': datepickerMode === maxMode\\n }\\\"\\n (click)=\\\"toggleModeCalendar($event)\\\"\\n >{{ title }}</button\\n >\\n </span>\\n <span class=\\\"sky-datepicker-header-right\\\">\\n <button\\n type=\\\"button\\\"\\n class=\\\"sky-btn sky-btn-default sky-btn-sm sky-datepicker-btn-next\\\"\\n [attr.aria-label]=\\\"nextLabel\\\"\\n (click)=\\\"moveCalendar($event, 1)\\\"\\n >\\n <sky-icon class=\\\"sky-datepicker-chevron\\\" iconName=\\\"chevron-right\\\" />\\n </button>\\n </span>\\n </div>\\n <ng-content />\\n </div>\\n}\\n\", styles: [\".sky-datepicker-calendar-inner:not(.sky-theme-modern *){--sky-override-button-box-shadow: none;--sky-override-button-box-shadow-focus: none;--sky-override-chevron-color: #212327;--sky-override-datepicker-background-color: #ffffff;--sky-override-datepicker-border: 1px solid #e2e3e4;--sky-override-datepicker-border-color-hover: #eeeeef;--sky-override-datepicker-border-radius: 5px;--sky-override-datepicker-button-background-color: #ffffff;--sky-override-datepicker-button-background-color-active: #eeeeef;--sky-override-datepicker-button-background-color-disabled: #ffffff;--sky-override-datepicker-button-background-color-hover: #eeeeef;--sky-override-datepicker-button-border: 2px solid #ffffff;--sky-override-datepicker-button-selected-background: #c1e8fb;--sky-override-datepicker-button-selected-border: 2px solid #00b4f1;--sky-override-datepicker-calendar-top-padding: 0;--sky-override-datepicker-chevron-size: inherit;--sky-override-datepicker-day-btn-font-size: 12px;--sky-override-datepicker-day-btn-line-height: 1.5;--sky-override-datepicker-day-button-padding: 5px 10px;--sky-override-datepicker-day-button-size: 100%;--sky-override-datepicker-focus-outline: auto;--sky-override-datepicker-horizontal-padding: 0;--sky-override-datepicker-month-year-button-padding: 6px 12px;--sky-override-datepicker-nav-button-padding: 5px 10px;--sky-override-datepicker-nav-space: 0;--sky-override-datepicker-secondary-date-color: #686c73;--sky-override-datepicker-table-border-spacing: 2px;--sky-override-datepicker-td-padding: 1px;--sky-override-datepicker-title-font-style: 700;--sky-override-datepicker-vertical-padding: 0;--sky-override-datepicker-weekday-font-size: 12px;--sky-override-datepicker-weekday-font-weight: 900}.sky-theme-modern:not(.sky-theme-brand-base) .sky-datepicker-calendar-inner{--sky-override-chevron-color: var(--sky-color-text-default);--sky-override-datepicker-box-shadow: inset 0 0 0 1px var(--modern-color-gray-15);--sky-override-datepicker-button-active-border-width: var(--modern-size-1);--sky-override-datepicker-button-background-color: var(--modern-color-white);--sky-override-datepicker-button-background-color-active: var( --modern-color-white );--sky-override-datepicker-button-background-color-hover: var( --modern-color-white );--sky-override-datepicker-button-border-color-disabled: var( --sky-color-background-action-secondary-disabled );--sky-override-datepicker-button-border-color-transparent: var( --modern-color-transparent );--sky-override-button-box-shadow-focus: inset 0 0 0 var(--sky-border-width-action-focus) var(--sky-color-border-action-tertiary-focus), var(--sky-elevation-focus);--sky-override-datepicker-calendar-top-padding: 0;--sky-override-datepicker-day-btn-font-size: 12px;--sky-override-datepicker-horizontal-padding: 10px;--sky-override-datepicker-month-year-button-padding: 5px 7px;--sky-override-datepicker-nav-button-padding: 5px 7px;--sky-override-datepicker-nav-space: 0;--sky-override-datepicker-table-border-spacing: 2px;--sky-override-datepicker-td-padding: 1px;--sky-override-datepicker-title-font-style: 700;--sky-override-datepicker-vertical-padding: 5px;--sky-override-datepicker-weekday-font-size: 12.8px;--sky-override-datepicker-weekday-font-weight: 900}.sky-theme-modern.sky-theme-brand-base .sky-datepicker-calendar-inner .sky-datepicker-calendar-header .sky-btn-default{line-height:1}.sky-theme-modern.sky-theme-brand-base .sky-datepicker-calendar-inner sky-yearpicker td{width:20%}.sky-theme-modern.sky-theme-brand-base .sky-datepicker-calendar-inner sky-monthpicker td{width:33%}.sky-datepicker-calendar-inner{border-radius:var(--sky-override-datepicker-border-radius, var(--sky-border-radius-s));background-color:var(--sky-override-datepicker-background-color, var(--sky-color-background-container-menu));border:var(--sky-override-datepicker-border);box-shadow:var(--sky-override-datepicker-box-shadow)}.sky-datepicker-calendar-inner .sky-datepicker-calendar-header{width:100%;display:flex;padding:var(--sky-override-datepicker-vertical-padding, var(--sky-comp-datepicker-header-space-inset-top)) var(--sky-override-datepicker-horizontal-padding, var(--sky-comp-datepicker-header-space-inset-right)) 0 var(--sky-override-datepicker-horizontal-padding, var(--sky-comp-datepicker-header-space-inset-left))}.sky-datepicker-calendar-inner .sky-datepicker-calendar-table-container{padding:var(--sky-override-datepicker-calendar-top-padding, var(--sky-comp-datepicker-calendar-space-inset-top)) var(--sky-override-datepicker-horizontal-padding, var(--sky-comp-datepicker-calendar-space-inset-right)) var(--sky-override-datepicker-vertical-padding, var(--sky-comp-datepicker-calendar-space-inset-bottom)) var(--sky-override-datepicker-horizontal-padding, var(--sky-comp-datepicker-calendar-space-inset-left))}.sky-datepicker-calendar-inner .sky-datepicker-calendar-table-container:focus-visible{outline:var(--sky-override-datepicker-focus-outline, none)}.sky-datepicker-calendar-inner .sky-datepicker-calendar-table-container:focus-visible .sky-btn.sky-btn-active{border:var(--sky-override-datepicker-button-selected-border, none);box-shadow:var(--sky-override-button-box-shadow, inset 0 0 0 var(--sky-border-width-action-active) var(--sky-color-border-action-tertiary-active))}.sky-datepicker-calendar-inner .sky-btn-default{background-color:var(--sky-override-datepicker-button-background-color, var(--sky-color-background-action-tertiary-base));border:var(--sky-override-datepicker-button-border, none);box-shadow:var(--sky-override-button-box-shadow, inset 0 0 0 var(--sky-border-width-action-base) var(--sky-color-border-action-tertiary-base))}.sky-datepicker-calendar-inner .sky-btn-default:hover{background-color:var(--sky-override-datepicker-button-background-color-hover, var(--sky-color-background-action-tertiary-hover));border-color:var(--sky-override-datepicker-border-color-hover);box-shadow:var(--sky-override-button-box-shadow, inset 0 0 0 var(--sky-border-width-action-hover) var(--sky-color-border-action-tertiary-hover))}.sky-datepicker-calendar-inner .sky-btn-default:active{background-color:var(--sky-override-datepicker-button-background-color-active, var(--sky-color-background-action-tertiary-active));box-shadow:var(--sky-override-button-box-shadow, inset 0 0 0 var(--sky-border-width-action-active) var(--sky-override-datepicker-button-border-color-transparent, var(--sky-color-border-action-tertiary-active)))}.sky-datepicker-calendar-inner .sky-btn-default:focus-visible:not(:active){box-shadow:var(--sky-override-button-box-shadow-focus, inset 0 0 0 var(--sky-border-width-action-focus) var(--sky-color-border-action-tertiary-focus))}.sky-datepicker-calendar-inner .sky-btn-default.sky-btn.sky-datepicker-btn-date.sky-btn-disabled{background-color:var(--sky-override-datepicker-button-background-color-disabled, var(--sky-color-background-action-tertiary-disabled));box-shadow:var(--sky-override-button-box-shadow, inset 0 0 0 var(--sky-override-datepicker-button-border-color-transparent, var(--sky-border-width-action-disabled)) var(--sky-color-border-action-tertiary-disabled))}.sky-datepicker-calendar-inner .sky-btn-default.sky-datepicker-btn-next,.sky-datepicker-calendar-inner .sky-btn-default.sky-datepicker-btn-previous{padding:var(--sky-override-datepicker-nav-button-padding, var(--sky-comp-button-borderless-space-inset-top) var(--sky-comp-button-borderless-space-inset-right) var(--sky-comp-button-borderless-space-inset-bottom) var(--sky-comp-button-borderless-space-inset-left))}.sky-datepicker-calendar-inner .sky-btn-default.sky-datepicker-btn-previous{margin-right:var(--sky-override-datepicker-nav-space, var(--sky-space-gap-action_group-s))}.sky-datepicker-calendar-inner .sky-btn-default.sky-datepicker-btn-next{margin-left:var(--sky-override-datepicker-nav-space, var(--sky-space-gap-action_group-s))}.sky-datepicker-calendar-inner .sky-btn-default.sky-datepicker-calendar-title{font-weight:var(--sky-override-datepicker-title-font-style, var(--sky-font-style-emphasized));padding:var(--sky-override-datepicker-nav-button-padding, var(--sky-comp-button-borderless-space-inset-top) auto var(--sky-comp-button-borderless-space-inset-bottom))}.sky-datepicker-calendar-inner .sky-datepicker-btn-date{min-width:100%}.sky-datepicker-calendar-inner .sky-btn-sm.sky-datepicker-btn-date{font-size:var(--sky-override-datepicker-day-btn-font-size, var(--sky-font-size-body-m));height:var(--sky-override-datepicker-day-button-size, var(--sky-size-picker_btn));line-height:var(--sky-override-datepicker-day-btn-line-height, var(--sky-font-line_height-body-m));min-width:var(--sky-override-datepicker-day-button-size, 0);padding:var(--sky-override-datepicker-day-button-padding, 0);width:var(--sky-override-datepicker-day-button-size, var(--sky-size-picker_btn))}.sky-datepicker-calendar-inner .sky-datepicker-center{text-align:center}.sky-datepicker-calendar-inner .sky-btn.sky-btn-default.sky-datepicker-btn-selected,.sky-datepicker-calendar-inner .sky-btn.sky-btn-default.sky-datepicker-btn-selected:hover{background-color:var(--sky-override-datepicker-button-selected-background, var(--sky-color-background-selected-soft));border:var(--sky-override-datepicker-button-selected-border);box-shadow:var(--sky-override-button-box-shadow, inset 0 0 0 var(--sky-border-width-selected-s) var(--sky-color-border-selected))}.sky-datepicker-calendar-inner .sky-btn.sky-btn-active{box-shadow:var(--sky-override-button-box-shadow, inset 0 0 0 var(--sky-override-datepicker-button-active-border-width, var(--sky-border-width-action-active)) var(--sky-color-border-action-tertiary-active));background-color:var(--sky-override-datepicker-button-background-color-active, var(--sky-color-background-action-tertiary-active))}.sky-datepicker-calendar-inner .sky-datepicker-secondary{color:var(--sky-override-datepicker-secondary-date-color, var(--sky-color-text-deemphasized))}.sky-datepicker-calendar-inner .sky-datepicker-calendar-title{width:100%}.sky-datepicker-calendar-inner .sky-datepicker-header-left{text-align:left}.sky-datepicker-calendar-inner .sky-datepicker-header-center{display:flex;width:100%}.sky-datepicker-calendar-inner .sky-datepicker-header-right{text-align:right}.sky-datepicker-calendar-inner table{border-spacing:var(--sky-override-datepicker-table-border-spacing, var(--sky-space-gap-action_group-s))}.sky-datepicker-calendar-inner table td{padding:var(--sky-override-datepicker-td-padding, 0)}.sky-datepicker-calendar-inner table th{padding-bottom:var(--sky-override-datepicker-td-padding, calc(var(--sky-space-gap-text_action-xs) - var(--sky-space-gap-action_group-s)))}.sky-datepicker-chevron{color:var(--sky-override-chevron-color, var(--sky-color-icon-deemphasized))}sky-yearpicker .sky-btn.sky-btn-default,sky-monthpicker .sky-btn.sky-btn-default{padding:var(--sky-override-datepicker-month-year-button-padding, var(--sky-comp-datepicker-m_y_button-space-inset-top) var(--sky-comp-datepicker-m_y_button-space-inset-right) var(--sky-comp-datepicker-m_y_button-space-inset-bottom) var(--sky-comp-datepicker-m_y_button-space-inset-left))}.sky-datepicker-weekday-text{font-size:var(--sky-override-datepicker-weekday-font-size, var(--sky-font-size-body-m));font-weight:var(--sky-override-datepicker-weekday-font-weight, var(--sky-font-style-emphasized))}\\n\"] }]\n }], propDecorators: { customDates: [{\n type: Input\n }], startingDay: [{\n type: Input\n }], minDate: [{\n type: Input\n }], maxDate: [{\n type: Input\n }], startAtDate: [{\n type: Input\n }], selectedDate: [{\n type: Input\n }], selectedDateChange: [{\n type: Output\n }], calendarModeChange: [{\n type: Output\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci1jYWxlbmRhci1pbm5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL2RhdGVwaWNrZXIvY2FsZW5kYXIvZGF0ZXBpY2tlci1jYWxlbmRhci1pbm5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL2RhdGVwaWNrZXIvY2FsZW5kYXIvZGF0ZXBpY2tlci1jYWxlbmRhci1pbm5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUlMLE1BQU0sRUFFTixpQkFBaUIsRUFDakIsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN0RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDckQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUU1QyxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUxQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7OztBQVFyRCxJQUFJLGdCQUFnQixHQUFHLENBQUMsQ0FBQztBQUV6Qjs7R0FFRztBQVFILE1BQU0sT0FBTyxtQ0FBbUM7SUFQaEQ7UUErQ1MsdUJBQWtCLEdBQXVCLElBQUksWUFBWSxDQUM5RCxTQUFTLENBQ1YsQ0FBQztRQUdLLHVCQUFrQixHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO1FBRTdF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YUFBYTs7MkZBSzFCLG1DQUFtQztrQkFQL0MsU0FBUztvQ0FDTyxpQkFBaUIsQ0FBQyxJQUFJLFdBQzVCLENBQUMsWUFBWSxFQUFFLGFBQWEsQ0FBQyxZQUM1QixzQkFBc0I7OEJBUXpCLFdBQVc7c0JBRGpCLEtBQUs7Z0JBSUssV0FBVztzQkFEckIsS0FBSztnQkFVQyxPQUFPO3NCQURiLEtBQUs7Z0JBSUMsT0FBTztzQkFEYixLQUFLO2dCQUlDLFdBQVc7c0JBRGpCLEtBQUs7Z0JBSUssWUFBWTtzQkFEdEIsS0FBSztnQkFnQkMsa0JBQWtCO3NCQUR4QixNQUFNO2dCQU1BLGtCQUFrQjtzQkFEeEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIGluamVjdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTa3lMaXZlQW5ub3VuY2VyU2VydmljZSB9IGZyb20gJ0Bza3l1eC9jb3JlJztcbmltcG9ydCB7IFNreUxpYlJlc291cmNlc1NlcnZpY2UgfSBmcm9tICdAc2t5dXgvaTE4bic7XG5pbXBvcnQgeyBTa3lJY29uTW9kdWxlIH0gZnJvbSAnQHNreXV4L2ljb24nO1xuXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU2t5RGF0ZUZvcm1hdHRlciB9IGZyb20gJy4uL2RhdGUtZm9ybWF0dGVyJztcbmltcG9ydCB7IFNreURhdGVwaWNrZXJDdXN0b21EYXRlIH0gZnJvbSAnLi4vZGF0ZXBpY2tlci1jdXN0b20tZGF0ZSc7XG5cbmltcG9ydCB7IFNreURheVBpY2tlckNvbnRleHQgfSBmcm9tICcuL2RheXBpY2tlci1jb250ZXh0JztcblxudHlwZSBEYXRlQ29tcGFyYXRvciA9IChkYXRlMTogRGF0ZSwgZGF0ZTI6IERhdGUpID0+IG51bWJlciB8IHVuZGVmaW5lZDtcbnR5cGUgS2V5Ym9hcmRFdmVudEhhbmRsZXIgPSAoa2V5OiBzdHJpbmcsIGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB2b2lkO1xuXG5sZXQgbmV4dERhdGVwaWNrZXJJZCA9IDA7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbkBDb21wb25lbnQoe1xuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBTa3lJY29uTW9kdWxlXSxcbiAgc2VsZWN0b3I6ICdza3ktZGF0ZXBpY2tlci1pbm5lcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRlcGlja2VyLWNhbGVuZGFyLWlubmVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2RhdGVwaWNrZXItY2FsZW5kYXItaW5uZXIuY29tcG9uZW50LnNjc3MnLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lEYXRlcGlja2VyQ2FsZW5kYXJJbm5lckNvbXBvbmVudFxuICBpbXBsZW1lbnRzIE9uRGVzdHJveSwgT25Jbml0LCBPbkNoYW5nZXNcbntcbiAgQElucHV0KClcbiAgcHVibGljIGN1c3RvbURhdGVzOiBTa3lEYXRlcGlja2VyQ3VzdG9tRGF0ZVtdIHwgdW5kZWZpbmVkO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgc3RhcnRpbmdEYXkodmFsdWU6IG51bWJlciB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19zdGFydGluZ0RheSA9IHZhbHVlIHx8IDA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHN0YXJ0aW5nRGF5KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuI19zdGFydGluZ0RheTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBtaW5EYXRlOiBEYXRlIHwgdW5kZWZpbmVkO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBtYXhEYXRlOiBEYXRlIHwgdW5kZWZpbmVkO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzdGFydEF0RGF0ZTogRGF0ZSB8IHVuZGVmaW5lZDtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHNlbGVjdGVkRGF0ZSh2YWx1ZTogRGF0ZSB8IHVuZGVmaW5lZCkge1xuICAgIGlmICh2YWx1ZSAmJiB0aGlzLmRhdGVGb3JtYXR0ZXIuZGF0ZUlzVmFsaWQodmFsdWUpKSB7XG4gICAgICB0aGlzLiNfc2VsZWN0ZWREYXRlID0gdmFsdWU7XG4gICAgICB0aGlzLmFjdGl2ZURhdGUgPSB2YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy4jX3NlbGVjdGVkRGF0ZSA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuYWN0aXZlRGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBzZWxlY3RlZERhdGUoKTogRGF0ZSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI19zZWxlY3RlZERhdGU7XG4gIH1cblxuICBAT3V0cHV0KClcbiAgcHVibGljIHNlbGVjdGVkRGF0ZUNoYW5nZTogRXZlbnRFbWl0dGVyPERhdGU+ID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPihcbiAgICB1bmRlZmluZWQsXG4gICk7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBjYWxlbmRhck1vZGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgLy8gVE9ETzogYGFjdGl2ZURhdGVgIGlzIHZlcnkgc2ltaWxhciB0byBgc2VsZWN0ZWREYXRlYCBhbmQgYXQgdGhlIHZlcnkgbGVhc3Qgc2hvdWxkIGJlIGFibGUgdG8gYmUgdW5kZWZpbmVkLiBIb3dldmVyLCB0aGlzIHdvdWxkIHRha2UgY29uc2lkZXJhYmxlIHJlZmFjdG9yaW5nIHRvIGRvIGFuZCB0aHVzIGhhcyBiZWVuIGRlZmVycmVkLlxuICBwdWJsaWMgYWN0aXZlRGF0ZSA9IG5ldyBEYXRlKCk7XG4gIHB1YmxpYyBhY3RpdmVEYXRlSWQgPSAnJztcblxuICBwdWJsaWMgdGl0bGUgPSAnJztcblxuICBwdWJsaWMgbWluTW9kZSA9ICdkYXknO1xuICBwdWJsaWMgbWF4TW9kZSA9ICd5ZWFyJztcbiAgcHVibGljIG1vbnRoQ29sTGltaXQgPSAzO1xuICBwdWJsaWMgeWVhckNvbExpbWl0ID0gNTtcbiAgcHVibGljIGRhdGVwaWNrZXJNb2RlID0gJ2RheSc7XG4gIHB1YmxpYyB5ZWFyUmFuZ2UgPSAyMDtcblxuICBwdWJsaWMgZm9ybWF0RGF5ID0gJ0REJztcbiAgcHVibGljIGZvcm1hdE1vbnRoID0gJ01NTU0nO1xuICBwdWJsaWMgZm9ybWF0WWVhciA9ICdZWVlZJztcbiAgcHVibGljIGZvcm1hdERheUhlYWRlciA9ICdkZCc7XG4gIHB1YmxpYyBmb3JtYXREYXlUaXRsZSA9ICdNTU1NIFlZWVknO1xuICBwdWJsaWMgZm9ybWF0TW9udGhUaXRsZSA9ICdZWVlZJztcbiAgcHVibGljIGZvcm1hdERheUxhYmVsID0gJ2RkZGQsIE1NTU0gRG8gWVlZWSc7XG4gIHB1YmxpYyBmb3JtYXRNb250aExhYmVsID0gJ01NTU0gWVlZWSc7XG4gIHB1YmxpYyBmb3JtYXRZZWFyTGFiZWwgPSAnWVlZWSc7XG5cbiAgcHVibGljIHByZXZpb3VzTGFiZWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHVibGljIG5leHRMYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyBkYXRlcGlja2VySWQgPSBgc2t5LWRhdGVwaWNrZXItJHsrK25leHREYXRlcGlja2VySWR9YDtcblxuICBwdWJsaWMgc3RlcERheTogYW55ID0ge307XG4gIHB1YmxpYyBzdGVwTW9udGg6IGFueSA9IHt9O1xuICBwdWJsaWMgc3RlcFllYXI6IGFueSA9IHt9O1xuXG4gIHByb3RlY3RlZCBtb2Rlczogc3RyaW5nW10gPSBbJ2RheScsICdtb250aCcsICd5ZWFyJ107XG4gIHByb3RlY3RlZCBkYXRlRm9ybWF0dGVyOiBTa3lEYXRlRm9ybWF0dGVyID0gbmV3IFNreURhdGVGb3JtYXR0ZXIoKTtcblxuICBwdWJsaWMgcmVmcmVzaFZpZXdIYW5kbGVyRGF5OiAoKCkgPT4gc3RyaW5nKSB8IHVuZGVmaW5lZDtcbiAgcHVibGljIGNvbXBhcmVIYW5kbGVyRGF5OiBEYXRlQ29tcGFyYXRvciB8IHVuZGVmaW5lZDtcbiAgcHVibGljIHJlZnJlc2hWaWV3SGFuZGxlck1vbnRoOiAoKCkgPT4gc3RyaW5nKSB8IHVuZGVmaW5lZDtcbiAgcHVibGljIGNvbXBhcmVIYW5kbGVyTW9udGg6IERhdGVDb21wYXJhdG9yIHwgdW5kZWZpbmVkO1xuICBwdWJsaWMgcmVmcmVzaFZpZXdIYW5kbGVyWWVhcjogKCgpID0+IHN0cmluZykgfCB1bmRlZmluZWQ7XG4gIHB1YmxpYyBjb21wYXJlSGFuZGxlclllYXI6IERhdGVDb21wYXJhdG9yIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyBoYW5kbGVLZXlkb3duRGF5OiBLZXlib2FyZEV2ZW50SGFuZGxlciB8IHVuZGVmaW5lZDtcbiAgcHVibGljIGhhbmRsZUtleWRvd25Nb250aDogS2V5Ym9hcmRFdmVudEhhbmRsZXIgfCB1bmRlZmluZWQ7XG4gIHB1YmxpYyBoYW5kbGVLZXlkb3duWWVhcjogS2V5Ym9hcmRFdmVudEhhbmRsZXIgfCB1bmRlZmluZWQ7XG5cbiAgcHVibGljIGtleXMgPSBbXG4gICAgJ2VudGVyJyxcbiAgICAnICcsXG4gICAgJ3NwYWNlYmFyJyxcbiAgICAncGFnZXVwJyxcbiAgICAncGFnZWRvd24nLFxuICAgICdlbmQnLFxuICAgICdob21lJyxcbiAgICAnYXJyb3dsZWZ0JyxcbiAgICAnYXJyb3d1cCcsXG4gICAgJ2Fycm93cmlnaHQnLFxuICAgICdhcnJvd2Rvd24nLFxuICBdO1xuXG4gICNuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgI3ByZXZEYXk6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgI25leHREYXk6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgI3ByZXZNb250aDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAjbmV4dE1vbnRoOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICNwcmV2WWVhcjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAjbmV4dFllYXI6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAjX3NlbGVjdGVkRGF0ZTogRGF0ZSB8IHVuZGVmaW5lZDtcbiAgI19zdGFydGluZ0RheSA9IDA7XG5cbiAgcmVhZG9ubHkgI3Jlc291cmNlc1N2YyA9IGluamVjdChTa3lMaWJSZXNvdXJjZXNTZXJ2aWNlKTtcbiAgcmVhZG9ubHkgI2xpdmVBbm5vdW5jZXJTdmMgPSBpbmplY3QoU2t5TGl2ZUFubm91bmNlclNlcnZpY2UpO1xuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZERhdGUpIHtcbiAgICAgIHRoaXMuYWN0aXZlRGF0ZSA9IG5ldyBEYXRlKHRoaXMuc2VsZWN0ZWREYXRlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hY3RpdmVEYXRlID0gdGhpcy5zdGFydEF0RGF0ZSA/PyBuZXcgRGF0ZSgpO1xuICAgIH1cblxuICAgIHRoaXMuI3Jlc291cmNlc1N2Y1xuICAgICAgLmdldFN0cmluZ3Moe1xuICAgICAgICBwcmV2RGF5OiAnc2t5dXhfZGF0ZXBpY2tlcl9tb3ZlX2NhbGVuZGFyX3ByZXZpb3VzX2RheScsXG4gICAgICAgIG5leHREYXk6ICdza3l1eF9kYXRlcGlja2VyX21vdmVfY2FsZW5kYXJfbmV4dF9kYXknLFxuICAgICAgICBwcmV2TW9udGg6ICdza3l1eF9kYXRlcGlja2VyX21vdmVfY2FsZW5kYXJfcHJldmlvdXNfbW9udGgnLFxuICAgICAgICBuZXh0TW9udGg6ICdza3l1eF9kYXRlcGlja2VyX21vdmVfY2FsZW5kYXJfbmV4dF9tb250aCcsXG4gICAgICAgIHByZXZZZWFyOiAnc2t5dXhfZGF0ZXBpY2tlcl9tb3ZlX2NhbGVuZGFyX3ByZXZpb3VzX3llYXInLFxuICAgICAgICBuZXh0WWVhcjogJ3NreXV4X2RhdGVwaWNrZXJfbW92ZV9jYWxlbmRhcl9uZXh0X3llYXInLFxuICAgICAgfSlcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKHJlc291cmNlcykgPT4ge1xuICAgICAgICB0aGlzLiNwcmV2RGF5ID0gcmVzb3VyY2VzLnByZXZEYXk7XG4gICAgICAgIHRoaXMuI25leHREYXkgPSByZXNvdXJjZXMubmV4dERheTtcbiAgICAgICAgdGhpcy4jcHJldk1vbnRoID0gcmVzb3VyY2VzLnByZXZNb250aDtcbiAgICAgICAgdGhpcy4jbmV4dE1vbnRoID0gcmVzb3VyY2VzLm5leHRNb250aDtcbiAgICAgICAgdGhpcy4jcHJldlllYXIgPSByZXNvdXJjZXMucHJldlllYXI7XG4gICAgICAgIHRoaXMuI25leHRZZWFyID0gcmVzb3VyY2VzLm5leHRZZWFyO1xuXG4gICAgICAgIHRoaXMucmVmcmVzaFZpZXcoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICB0aGlzLnJlZnJlc2hWaWV3KCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIHNldENvbXBhcmVIYW5kbGVyKGhhbmRsZXI6IERhdGVDb21wYXJhdG9yLCB0eXBlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodHlwZSA9PT0gJ2RheScpIHtcbiAgICAgIHRoaXMuY29tcGFyZUhhbmRsZXJEYXkgPSBoYW5kbGVyO1xuICAgIH1cblxuICAgIGlmICh0eXBlID09PSAnbW9udGgnKSB7XG4gICAgICB0aGlzLmNvbXBhcmVIYW5kbGVyTW9udGggPSBoYW5kbGVyO1xuICAgIH1cblxuICAgIGlmICh0eXBlID09PSAneWVhcicpIHtcbiAgICAgIHRoaXMuY29tcGFyZUhhbmRsZXJZZWFyID0gaGFuZGxlcjtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgY29tcGFyZShcbiAgICBkYXRlMTogRGF0ZSB8IHVuZGVmaW5lZCxcbiAgICBkYXRlMjogRGF0ZSB8IHVuZGVmaW5lZCxcbiAgKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoZGF0ZTEgPT09IHVuZGVmaW5lZCB8fCBkYXRlMiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmRhdGVwaWNrZXJNb2RlID09PSAnZGF5JyAmJiB0aGlzLmNvbXBhcmVIYW5kbGVyRGF5KSB7XG4gICAgICByZXR1cm4gdGhpcy5jb21wYXJlSGFuZGxlckRheShkYXRlMSwgZGF0ZTIpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmRhdGVwaWNrZXJNb2RlID09PSAnbW9udGgnICYmIHRoaXMuY29tcGFyZUhhbmRsZXJNb250aCkge1xuICAgICAgcmV0dXJuIHRoaXMuY29tcGFyZUhhbmRsZXJNb250aChkYXRlMSwgZGF0ZTIpO1xuICAgIH1cblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgLyogc2FuaXR5IGNoZWNrICovXG4gICAgaWYgKHRoaXMuZGF0ZXBpY2tlck1vZGUgPT09ICd5ZWFyJyAmJiB0aGlzLmNvbXBhcmVIYW5kbGVyWWVhcikge1xuICAgICAgcmV0dXJuIHRoaXMuY29tcGFyZUhhbmRsZXJZZWFyKGRhdGUxLCBkYXRlMik7XG4gICAgfVxuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHVibGljIHNldFJlZnJlc2hWaWV3SGFuZGxlcihoYW5kbGVyOiAoKSA9PiBzdHJpbmcsIHR5cGU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0eXBlID09PSAnZGF5Jykge1xuICAgICAgdGhpcy5yZWZyZXNoVmlld0hhbmRsZXJEYXkgPSBoYW5kbGVyO1xuICAgIH1cblxuICAgIGlmICh0eXBlID09PSAnbW9udGgnKSB7XG4gICAgICB0aGlzLnJlZnJlc2hWaWV3SGFuZGxlck1vbnRoID0gaGFuZGxlcjtcbiAgICB9XG5cbiAgICBpZiAodHlwZSA9PT0gJ3llYXInKSB7XG4gICAgICB0aGlzLnJlZnJlc2hWaWV3SGFuZGxlclllYXIgPSBoYW5kbGVyO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyByZWZyZXNoVmlldygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kYXRlcGlja2VyTW9kZSA9PT0gJ2RheScgJiYgdGhpcy5yZWZyZXNoVmlld0hhbmRsZXJEYXkpIHtcbiAgICAgIHRoaXMudGl0bGUgPSB0aGlzLnJlZnJlc2hWaWV3SGFuZGxlckRheSgpO1xuICAgICAgdGhpcy5wcmV2aW91c0xhYmVsID0gdGhpcy4jcHJldkRheTtcbiAgICAgIHRoaXMubmV4dExhYmVsID0gdGhpcy4jbmV4dERheTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5kYXRlcGlja2VyTW9kZSA9PT0gJ21vbnRoJyAmJiB0aGlzLnJlZnJlc2hWaWV3SGFuZGxlck1vbnRoKSB7XG4gICAgICB0aGlzLnRpdGxlID0gdGhpcy5yZWZyZXNoVmlld0hhbmRsZXJNb250aCgpO1xuICAgICAgdGhpcy5wcmV2aW91c0xhYmVsID0gdGhpcy4jcHJldk1vbnRoO1xuICAgICAgdGhpcy5uZXh0TGFiZWwgPSB0aGlzLiNuZXh0TW9udGg7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZGF0ZXBpY2tlck1vZGUgPT09ICd5ZWFyJyAmJiB0aGlzLnJlZnJlc2hWaWV3SGFuZGxlclllYXIpIHtcbiAgICAgIHRoaXMudGl0bGUgPSB0aGlzLnJlZnJlc2hWaWV3SGFuZGxlclllYXIoKTtcbiAgICAgIHRoaXMucHJldmlvdXNMYWJlbCA9IHRoaXMuI3ByZXZZZWFyO1xuICAgICAgdGhpcy5uZXh0TGFiZWwgPSB0aGlzLiNuZXh0WWVhcjtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2V0S2V5ZG93bkhhbmRsZXIoaGFuZGxlcjogS2V5Ym9hcmRFdmVudEhhbmRsZXIsIHR5cGU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0eXBlID09PSAnZGF5Jykge1xuICAgICAgdGhpcy5oYW5kbGVLZXlkb3duRGF5ID0gaGFuZGxlcjtcbiAgICB9XG5cbiAgICBpZiAodHlwZSA9PT0gJ21vbnRoJykge1xuICAgICAgdGhpcy5oYW5kbGVLZXlkb3duTW9udGggPSBoYW5kbGVyO1xuICAgIH1cblxuICAgIGlmICh0eXBlID09PSAneWVhcicpIHtcbiAgICAgIHRoaXMuaGFuZGxlS2V5ZG93blllYXIgPSBoYW5kbGVyO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVLZXlkb3duKGtleTogc3RyaW5nLCBldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRhdGVwaWNrZXJNb2RlID09PSAnZGF5JyAmJiB0aGlzLmhhbmRsZUtleWRvd25EYXkpIHtcbiAgICAgIHRoaXMuaGFuZGxlS2V5ZG93bkRheShrZXksIGV2ZW50KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5kYXRlcGlja2VyTW9kZSA9PT0gJ21vbnRoJyAmJiB0aGlzLmhhbmRsZUtleWRvd25Nb250aCkge1xuICAgICAgdGhpcy5oYW5kbGVLZXlkb3duTW9udGgoa2V5LCBldmVudCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZGF0ZXBpY2tlck1vZGUgPT09ICd5ZWFyJyAmJiB0aGlzLmhhbmRsZUtleWRvd25ZZWFyKSB7XG4gICAgICB0aGlzLmhhbmRsZUtleWRvd25ZZWFyKGtleSwgZXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBkYXRlRmlsdGVyKGRhdGU6IERhdGUsIGZvcm1hdDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5kYXRlRm9ybWF0dGVyLmZvcm1hdChkYXRlLCBmb3JtYXQpO1xuICB9XG5cbiAgcHVibGljIGlzQWN0aXZlKGRhdGVPYmplY3Q6IFNreURheVBpY2tlckNvbnRleHQpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5jb21wYXJlKGRhdGVPYmplY3QuZGF0ZSwgdGhpcy5hY3RpdmVEYXRlKSA9PT0gMCkge1xuICAgICAgdGhpcy5hY3RpdmVEYXRlSWQgPSBkYXRlT2JqZWN0LnVpZDtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBvbktleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBrZXkgPSBldmVudC5rZXk/LnRvTG93ZXJDYXNlKCk7XG5cbiAgICBpZiAoIXRoaXMua2V5cy5pbmNsdWRlcyhrZXkpIHx8IGV2ZW50LnNoaWZ0S2V5KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIGlmIChrZXkgPT09ICdlbnRlcicgfHwga2V5ID09PSAnc3BhY2ViYXInIHx8IGtleSA9PT0gJyAnKSB7XG4gICAgICBpZiAodGhpcy5pc0Rpc2FibGVkKHRoaXMuYWN0aXZlRGF0ZSkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5zZWxlY3QodGhpcy5hY3RpdmVEYXRlKTtcbiAgICB9IGVsc2UgaWYgKGV2ZW50LmN0cmxLZXkgJiYgKGtleSA9PT0gJ2Fycm93dXAnIHx8IGtleSA9PT0gJ2Fycm93ZG93bicpKSB7XG4gICAgICB0aGlzLnRvZ2dsZU1vZGUoa2V5ID09PSAnYXJyb3d1cCcgPyAxIDogLTEpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmhhbmRsZUtleWRvd24oa2V5LCBldmVudCk7XG4gICAgICB0aGlzLnJlZnJlc2hWaWV3KCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNyZWF0ZURhdGVPYmplY3QoXG4gICAgZGF0ZTogRGF0ZSxcbiAgICBmb3JtYXQ6IHN0cmluZyxcbiAgICBpc1NlY29uZGFyeTogYm9vbGVhbixcbiAgICBpZDogc3RyaW5nLFxuICApOiBTa3lEYXlQaWNrZXJDb250ZXh0IHtcbiAgICBjb25zdCBjdXN0b21EYXRlTWF0Y2ggPSB0aGlzLiNnZXRDdXN0b21EYXRlKGRhdGUpO1xuXG4gICAgY29uc3QgZGF0ZU9iamVjdDogU2t5RGF5UGlja2VyQ29udGV4dCA9IHtcbiAgICAgIGRhdGU6IG5ldyBEYXRlKGRhdGUuZ2V0RnVsbFllYXIoKSwgZGF0ZS5nZXRNb250aCgpLCBkYXRlLmdldERhdGUoKSksXG4gICAgICBsYWJlbDogdGhpcy5kYXRlRmlsdGVyKGRhdGUsIGZvcm1hdCksXG4gICAgICBzZWxlY3RlZDpcbiAgICAgICAgISF0aGlzLnNlbGVjdGVkRGF0ZSAmJiB0aGlzLmNvbXBhcmUoZGF0ZSwgdGhpcy5zZWxlY3RlZERhdGUpID09PSAwLFxuICAgICAgZGlzYWJsZWQ6IHRoaXMuaXNEaXNhYmxlZChkYXRlKSxcbiAgICAgIGN1cnJlbnQ6IHRoaXMuY29tcGFyZShkYXRlLCBuZXcgRGF0ZSgpKSA9PT0gMCxcbiAgICAgIHNlY29uZGFyeTogaXNTZWNvbmRhcnksXG4gICAgICB1aWQ6IGlkLFxuICAgICAga2V5RGF0ZTogY3VzdG9tRGF0ZU1hdGNoID8gY3VzdG9tRGF0ZU1hdGNoLmtleURhdGUgOiB1bmRlZmluZWQsXG4gICAgICBrZXlEYXRlVGV4dDogY3VzdG9tRGF0ZU1hdGNoID8gY3VzdG9tRGF0ZU1hdGNoLmtleURhdGVUZXh0IDogW10sXG4gICAgfTtcblxuICAgIHJldHVybiBkYXRlT2JqZWN0O1xuICB9XG5cbiAgcHVibGljIGNyZWF0ZUNhbGVuZGFyUm93cyhcbiAgICBkYXRlczogU2t5RGF5UGlja2VyQ29udGV4dFtdLFxuICAgIHNpemU6IG51bWJlcixcbiAgKTogU2t5RGF5UGlja2VyQ29udGV4dFtdW10ge1xuICAgIGNvbnN0IHJvd3M6IFNreURheVBpY2tlckNvbnRleHRbXVtdID0gW107XG4gICAgd2hpbGUgKGRhdGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIHJvd3MucHVzaChkYXRlcy5zcGxpY2UoMCwgc2l6ZSkpO1xuICAgIH1cbiAgICByZXR1cm4gcm93cztcbiAgfVxuXG4gIC8qXG4gICAgVGhpcyBpcyBlbnN1cmVzIHRoYXQgbm8gc3RyYW5nZW5lc3MgaGFwcGVucyB3aGVuIGNvbnZlcnRpbmcgYSBkYXRlIHRvIGxvY2FsIHRpbWUuXG4gICovXG4gIHB1YmxpYyBmaXhUaW1lWm9uZShkYXRlOiBEYXRlKTogRGF0ZSB7XG4gICAgY29uc3QgbmV3RGF0ZSA9IG5ldyBEYXRlKGRhdGUpO1xuICAgIG5ld0RhdGUuc2V0RnVsbFllYXIoZGF0ZS5nZXRGdWxsWWVhcigpLCBkYXRlLmdldE1vbnRoKCksIGRhdGUuZ2V0RGF0ZSgpKTtcblxuICAgIHJldHVybiBuZXdEYXRlO1xuICB9XG5cbiAgcHVibGljIHNlbGVjdENhbGVuZGFyKGV2ZW50OiBFdmVudCwgZGF0ZTogRGF0ZSwgY2xvc2VQaWNrZXIgPSBmYWxzZSk6IHZvaWQge1xuICAgIGlmICghY2xvc2VQaWNrZXIpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gICAgdGhpcy5zZWxlY3QoZGF0ZSk7XG4gIH1cblxuICBwdWJsaWMgc2VsZWN0KGRhdGU6IERhdGUsIGlzTWFudWFsID0gdHJ1ZSk6IHZvaWQge1xuICAgIHRoaXMuYWN0aXZlRGF0ZSA9IG5ldyBEYXRlKFxuICAgICAgZGF0ZS5nZXRGdWxsWWVhcigpLFxuICAgICAgZGF0ZS5nZXRNb250aCgpLFxuICAgICAgZGF0ZS5nZXREYXRlKCksXG4gICAgKTtcblxuICAgIC8qXG4gICAgICAgIE9ubHkgYWN0dWFsbHkgc2VsZWN0IGRhdGUgaWYgaW4gbWluTW9kZSAoZGF5IHBpY2tlciBtb2RlKS5cbiAgICAgICAgT3RoZXJ3aXNlLCBqdXN0IGNoYW5nZSB0aGUgYWN0aXZlIHZpZXcgZm9yIHRoZSBkYXRlcGlja2VyLlxuICAgICovXG4gICAgaWYgKHRoaXMuZGF0ZXBpY2tlck1vZGUgPT09IHRoaXMubWluTW9kZSkge1xuICAgICAgdGhpcy5zZWxlY3RlZERhdGUgPSBuZXcgRGF0ZSh0aGlzLmFjdGl2ZURhdGUpO1xuICAgICAgaWYgKGlzTWFudWFsKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZERhdGUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRhdGVwaWNrZXJNb2RlID1cbiAgICAgICAgdGhpcy5tb2Rlc1t0aGlzLm1vZGVzLmluZGV4T2YodGhpcy5kYXRlcGlja2VyTW9kZSkgLSAxXTtcbiAgICAgIHRoaXMuY2FsZW5kYXJNb2RlQ2hhbmdlLmVtaXQodGhpcy5kYXRlcGlja2VyTW9kZSk7XG4gICAgfVxuXG4gICAgdGhpcy5yZWZyZXNoVmlldygpO1xuICB9XG5cbiAgcHVibGljIG1vdmVDYWxlbmRhcihldmVudDogRXZlbnQsIGRpcmVjdGlvbjogbnVtYmVyKTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLm1vdmUoZGlyZWN0aW9uKTtcbiAgfVxuXG4gIHB1YmxpYyBtb3ZlKGRpcmVjdGlvbjogbnVtYmVyKTogdm9pZCB7XG4gICAgbGV0IGV4cGVjdGVkU3RlcDogYW55O1xuICAgIGlmICh0aGlzLmRhdGVwaWNrZXJNb2RlID09PSAnZGF5Jykge1xuICAgICAgZXhwZWN0ZWRTdGVwID0gdGhpcy5zdGVwRGF5O1xuICAgIH1cblxuICAgIGlmICh0aGlzLmRhdGVwaWNrZXJNb2RlID09PSAnbW9udGgnKSB7XG4gICAgICBleHBlY3RlZFN0ZXAgPSB0aGlzLnN0ZXBNb250aDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5kYXRlcGlja2VyTW9kZSA9PT0gJ3llYXInKSB7XG4gICAgICBleHBlY3RlZFN0ZXAgPSB0aGlzLnN0ZXBZZWFyO1xuICAgIH1cblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgLyogc2FuaXR5IGNoZWNrICovXG4gICAgaWYgKGV4cGVjdGVkU3RlcCkge1xuICAgICAgY29uc3QgeWVhciA9XG4gICAgICAgIHRoaXMuYWN0aXZlRGF0ZS5nZXRGdWxsWWVhcigpICsgZGlyZWN0aW9uICogKGV4cGVjdGVkU3RlcC55ZWFycyB8fCAwKTtcbiAgICAgIGNvbnN0IG1vbnRoID1cbiAgICAgICAgdGhpcy5hY3RpdmVEYXRlLmdldE1vbnRoKCkgKyBkaXJlY3Rpb24gKiAoZXhwZWN0ZWRTdGVwLm1vbnRocyB8fCAwKTtcblxuICAgICAgdGhpcy5hY3RpdmVEYXRlID0gbmV3IERhdGUoeWVhciwgbW9udGgsIDEpO1xuXG4gICAgICB0aGlzLnJlZnJlc2hWaWV3KCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHRvZ2dsZU1vZGVDYWxlbmRhcihldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMudG9nZ2xlTW9kZSgxKTtcbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGVNb2RlKGRpcmVjdGlvbjogbnVtYmVyKTogdm9pZCB7XG4gICAgLyppc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIGRpcmVjdGlvbiA9IGRpcmVjdGlvbiB8fCAxO1xuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAvKiBzYW5pdHkgY2hlY2sgKi9cbiAgICBpZiAoXG4gICAgICAhKGRpcmVjdGlvbiA9PT0gMSAmJiB0aGlzLmRhdGVwaWNrZXJNb2RlID09PSB0aGlzLm1heE1vZGUpICYmXG4gICAgICAhKHRoaXMuZGF0ZXBpY2tlck1vZGUgPT09IHRoaXMubWluTW9kZSAmJiBkaXJlY3Rpb24gPT09IC0xKVxuICAgICkge1xuICAgICAgdGhpcy5kYXRlcGlja2VyTW9kZSA9XG4gICAgICAgIHRoaXMubW9kZXNbdGhpcy5tb2Rlcy5pbmRleE9mKHRoaXMuZGF0ZXBpY2tlck1vZGUpICsgZGlyZWN0aW9uXTtcbiAgICAgIHRoaXMuY2FsZW5kYXJNb2RlQ2hhbmdlLmVtaXQodGhpcy5kYXRlcGlja2VyTW9kZSk7XG4gICAgICB0aGlzLnJlZnJlc2hWaWV3KCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFubm91bmNlRGF0ZShkYXRlOiBEYXRlLCBmb3JtYXQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGNhcHRpb24gPSB0aGlzLmRhdGVGaWx0ZXIoZGF0ZSwgZm9ybWF0KTtcbiAgICB0aGlzLiNsaXZlQW5ub3VuY2VyU3ZjLmFubm91bmNlKGNhcHRpb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIERhdGUgaXMgZGlzYWJsZWQgaWYgaXQgbWVldHMgYW55IG9mIHRoZXNlIGNyaXRlcmlhOlxuICAgKiAxLiBEYXRlIGZhbGxzIG91dHNpZGUgdGhlIG1pbiBvciBtYXggZGF0ZXMgc2V0IGJ5IHRoZSBTa3lEYXRlcGlja2VyQ29uZmlnU2VydmljZS5cbiAgICogMi4gRGF0ZSBpcyBtYXJrZWQgYXMgZGlzYWJsZWQgaW4gdGhlIGN1c3RvbURhdGVzIGFycmF5LlxuICAgKi9cbiAgcHJvdGVjdGVkIGlzRGlzYWJsZWQoZGF0ZTogRGF0ZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGN1c3RvbURhdGUgPSB0aGlzLiNnZXRDdXN0b21EYXRlKGRhdGUpO1xuICAgIGNvbnN0IG1pbkRhdGVDb21wYXJlID0gdGhpcy5jb21wYXJlKGRhdGUsIHRoaXMubWluRGF0ZSk7XG4gICAgY29uc3QgbWF4RGF0ZUNvbXBhcmUgPSB0aGlzLmNvbXBhcmUoZGF0ZSwgdGhpcy5tYXhEYXRlKTtcblxuICAgIHJldHVybiAoXG4gICAgICAobWluRGF0ZUNvbXBhcmUgIT09IHVuZGVmaW5lZCAmJiBtaW5EYXRlQ29tcGFyZSA8IDApIHx8XG4gICAgICAobWF4RGF0ZUNvbXBhcmUgIT09IHVuZGVmaW5lZCAmJiBtYXhEYXRlQ29tcGFyZSA+IDApIHx8XG4gICAgICAhIWN1c3RvbURhdGU/LmRpc2FibGVkXG4gICAgKTtcbiAgfVxuXG4gICNnZXRDdXN0b21EYXRlKGRhdGU6IERhdGUpOiBTa3lEYXRlcGlja2VyQ3VzdG9tRGF0ZSB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHRoaXMuY3VzdG9tRGF0ZXMpIHtcbiAgICAgIHJldHVybiB0aGlzLmN1c3RvbURhdGVzLmZpbmQoKGN1c3RvbURhdGU6IFNreURhdGVwaWNrZXJDdXN0b21EYXRlKSA9PiB7XG4gICAgICAgIHJldHVybiBjdXN0b21EYXRlLmRhdGUuZ2V0VGltZSgpID09PSBkYXRlLmdldFRpbWUoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG4iLCJAaWYgKGRhdGVwaWNrZXJNb2RlKSB7XG4gIDxkaXYgY2xhc3M9XCJza3ktZGF0ZXBpY2tlci1jYWxlbmRhci1pbm5lclwiPlxuICAgIDxkaXYgY2xhc3M9XCJza3ktZGF0ZXBpY2tlci1jYWxlbmRhci1oZWFkZXJcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwic2t5LWRhdGVwaWNrZXItaGVhZGVyLWxlZnRcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzPVwic2t5LWJ0biBza3ktYnRuLWRlZmF1bHQgc2t5LWJ0bi1zbSBza3ktZGF0ZXBpY2tlci1idG4tcHJldmlvdXNcIlxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwicHJldmlvdXNMYWJlbFwiXG4gICAgICAgICAgKGNsaWNrKT1cIm1vdmVDYWxlbmRhcigkZXZlbnQsIC0xKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c2t5LWljb24gY2xhc3M9XCJza3ktZGF0ZXBpY2tlci1jaGV2cm9uXCIgaWNvbk5hbWU9XCJjaGV2cm9uLWxlZnRcIiAvPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwic2t5LWRhdGVwaWNrZXItaGVhZGVyLWNlbnRlclwiPlxuICAgICAgICA8IS0tIGRpc3BsYXk6IGlubGluZSAtLT5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzPVwic2t5LWJ0biBza3ktYnRuLWRlZmF1bHQgc2t5LWJ0bi1zbSBza3ktZGF0ZXBpY2tlci1jYWxlbmRhci10aXRsZVwiXG4gICAgICAgICAgW2lkXT1cImRhdGVwaWNrZXJJZCArICctdGl0bGUnXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZGF0ZXBpY2tlck1vZGUgPT09IG1heE1vZGVcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICdza3ktYnRuLWRpc2FibGVkJzogZGF0ZXBpY2tlck1vZGUgPT09IG1heE1vZGVcbiAgICAgICAgICB9XCJcbiAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlTW9kZUNhbGVuZGFyKCRldmVudClcIlxuICAgICAgICAgID57eyB0aXRsZSB9fTwvYnV0dG9uXG4gICAgICAgID5cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwic2t5LWRhdGVwaWNrZXItaGVhZGVyLXJpZ2h0XCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzcz1cInNreS1idG4gc2t5LWJ0bi1kZWZhdWx0IHNreS1idG4tc20gc2t5LWRhdGVwaWNrZXItYnRuLW5leHRcIlxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwibmV4dExhYmVsXCJcbiAgICAgICAgICAoY2xpY2spPVwibW92ZUNhbGVuZGFyKCRldmVudCwgMSlcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNreS1pY29uIGNsYXNzPVwic2t5LWRhdGVwaWNrZXItY2hldnJvblwiIGljb25OYW1lPVwiY2hldnJvbi1yaWdodFwiIC8+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuICAgIDxuZy1jb250ZW50IC8+XG4gIDwvZGl2PlxufVxuIl19","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport * as i0 from \"@angular/core\";\n/**\n * Manages the state of the calendar picker.\n * @internal\n */\nexport class SkyDatepickerCalendarService {\n constructor() {\n /**\n * Whether a key date popover is currently displayed.\n * Useful for communicating across all daypicker siblings when a popover is displayed.\n */\n this.keyDatePopoverStream = new Subject();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDatepickerCalendarService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDatepickerCalendarService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDatepickerCalendarService, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci1jYWxlbmRhci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2RhdGV0aW1lL3NyYy9saWIvbW9kdWxlcy9kYXRlcGlja2VyL2NhbGVuZGFyL2RhdGVwaWNrZXItY2FsZW5kYXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBSS9COzs7R0FHRztBQUVILE1BQU0sT0FBTyw0QkFBNEI7SUFEekM7UUFFRTs7O1dBR0c7UUFDSSx5QkFBb0IsR0FDekIsSUFBSSxPQUFPLEVBQW1DLENBQUM7S0FDbEQ7OEdBUFksNEJBQTRCO2tIQUE1Qiw0QkFBNEI7OzJGQUE1Qiw0QkFBNEI7a0JBRHhDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU2t5RGF5UGlja2VyQ29udGV4dCB9IGZyb20gJy4vZGF5cGlja2VyLWNvbnRleHQnO1xuXG4vKipcbiAqIE1hbmFnZXMgdGhlIHN0YXRlIG9mIHRoZSBjYWxlbmRhciBwaWNrZXIuXG4gKiBAaW50ZXJuYWxcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNreURhdGVwaWNrZXJDYWxlbmRhclNlcnZpY2Uge1xuICAvKipcbiAgICogV2hldGhlciBhIGtleSBkYXRlIHBvcG92ZXIgaXMgY3VycmVudGx5IGRpc3BsYXllZC5cbiAgICogVXNlZnVsIGZvciBjb21tdW5pY2F0aW5nIGFjcm9zcyBhbGwgZGF5cGlja2VyIHNpYmxpbmdzIHdoZW4gYSBwb3BvdmVyIGlzIGRpc3BsYXllZC5cbiAgICovXG4gIHB1YmxpYyBrZXlEYXRlUG9wb3ZlclN0cmVhbTogU3ViamVjdDxTa3lEYXlQaWNrZXJDb250ZXh0IHwgdW5kZWZpbmVkPiA9XG4gICAgbmV3IFN1YmplY3Q8U2t5RGF5UGlja2VyQ29udGV4dCB8IHVuZGVmaW5lZD4oKTtcbn1cbiJdfQ==","import { Pipe, inject } from '@angular/core';\nimport { SkyDatepickerCalendarInnerComponent } from './datepicker-calendar-inner.component';\nimport * as i0 from \"@angular/core\";\n/**\n * Formats date values according to formatting rules.\n * @example\n * ```markup\n * {{ myDate | skyDatepickerCalendarLabel }}\n * {{ myDate | skyDatepickerCalendarLabel:'YYYY' }}\n * ```\n * @internal\n */\nexport class SkyDatepickerCalendarLabelPipe {\n #datepicker = inject(SkyDatepickerCalendarInnerComponent);\n #defaultFormat = this.#datepicker.formatDayLabel;\n /**\n * Transforms a date value using locale and format rules.\n * @param value Specifies the date value to transform.\n * @param format Specifies the format to apply to the transform. The format string is\n * constructed by a series of symbols that represent date-time values.\n */\n transform(value, format) {\n let formattedValue = '';\n if (value && value instanceof Date) {\n formattedValue = this.#datepicker.dateFilter(value, format || this.#defaultFormat);\n }\n return formattedValue;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDatepickerCalendarLabelPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDatepickerCalendarLabelPipe, isStandalone: true, name: \"skyDatepickerCalendarLabel\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDatepickerCalendarLabelPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'skyDatepickerCalendarLabel',\n standalone: true,\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci1jYWxlbmRhci1sYWJlbC5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2RhdGV0aW1lL3NyYy9saWIvbW9kdWxlcy9kYXRlcGlja2VyL2NhbGVuZGFyL2RhdGVwaWNrZXItY2FsZW5kYXItbGFiZWwucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFNUQsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sdUNBQXVDLENBQUM7O0FBRTVGOzs7Ozs7OztHQVFHO0FBS0gsTUFBTSxPQUFPLDhCQUE4QjtJQUN6QyxXQUFXLEdBQUcsTUFBTSxDQUFDLG1DQUFtQyxDQUFDLENBQUM7SUFDMUQsY0FBYyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDO0lBRWpEOzs7OztPQUtHO0lBQ0ksU0FBUyxDQUFDLEtBQWMsRUFBRSxNQUFlO1FBQzlDLElBQUksY0FBYyxHQUFHLEVBQUUsQ0FBQztRQUV4QixJQUFJLEtBQUssSUFBSSxLQUFLLFlBQVksSUFBSSxFQUFFLENBQUM7WUFDbkMsY0FBYyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUMxQyxLQUFLLEVBQ0wsTUFBTSxJQUFJLElBQUksQ0FBQyxjQUFjLENBQzlCLENBQUM7UUFDSixDQUFDO1FBRUQsT0FBTyxjQUFjLENBQUM7SUFDeEIsQ0FBQzs4R0FyQlUsOEJBQThCOzRHQUE5Qiw4QkFBOEI7OzJGQUE5Qiw4QkFBOEI7a0JBSjFDLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLDRCQUE0QjtvQkFDbEMsVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFNreURhdGVwaWNrZXJDYWxlbmRhcklubmVyQ29tcG9uZW50IH0gZnJvbSAnLi9kYXRlcGlja2VyLWNhbGVuZGFyLWlubmVyLmNvbXBvbmVudCc7XG5cbi8qKlxuICogRm9ybWF0cyBkYXRlIHZhbHVlcyBhY2NvcmRpbmcgdG8gZm9ybWF0dGluZyBydWxlcy5cbiAqIEBleGFtcGxlXG4gKiBgYGBtYXJrdXBcbiAqIHt7IG15RGF0ZSB8IHNreURhdGVwaWNrZXJDYWxlbmRhckxhYmVsIH19XG4gKiB7eyBteURhdGUgfCBza3lEYXRlcGlja2VyQ2FsZW5kYXJMYWJlbDonWVlZWScgfX1cbiAqIGBgYFxuICogQGludGVybmFsXG4gKi9cbkBQaXBlKHtcbiAgbmFtZTogJ3NreURhdGVwaWNrZXJDYWxlbmRhckxhYmVsJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5RGF0ZXBpY2tlckNhbGVuZGFyTGFiZWxQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICNkYXRlcGlja2VyID0gaW5qZWN0KFNreURhdGVwaWNrZXJDYWxlbmRhcklubmVyQ29tcG9uZW50KTtcbiAgI2RlZmF1bHRGb3JtYXQgPSB0aGlzLiNkYXRlcGlja2VyLmZvcm1hdERheUxhYmVsO1xuXG4gIC8qKlxuICAgKiBUcmFuc2Zvcm1zIGEgZGF0ZSB2YWx1ZSB1c2luZyBsb2NhbGUgYW5kIGZvcm1hdCBydWxlcy5cbiAgICogQHBhcmFtIHZhbHVlIFNwZWNpZmllcyB0aGUgZGF0ZSB2YWx1ZSB0byB0cmFuc2Zvcm0uXG4gICAqIEBwYXJhbSBmb3JtYXQgU3BlY2lmaWVzIHRoZSBmb3JtYXQgdG8gYXBwbHkgdG8gdGhlIHRyYW5zZm9ybS4gVGhlIGZvcm1hdCBzdHJpbmcgaXNcbiAgICogY29uc3RydWN0ZWQgYnkgYSBzZXJpZXMgb2Ygc3ltYm9scyB0aGF0IHJlcHJlc2VudCBkYXRlLXRpbWUgdmFsdWVzLlxuICAgKi9cbiAgcHVibGljIHRyYW5zZm9ybSh2YWx1ZTogdW5rbm93biwgZm9ybWF0Pzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBsZXQgZm9ybWF0dGVkVmFsdWUgPSAnJztcblxuICAgIGlmICh2YWx1ZSAmJiB2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgIGZvcm1hdHRlZFZhbHVlID0gdGhpcy4jZGF0ZXBpY2tlci5kYXRlRmlsdGVyKFxuICAgICAgICB2YWx1ZSxcbiAgICAgICAgZm9ybWF0IHx8IHRoaXMuI2RlZmF1bHRGb3JtYXQsXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBmb3JtYXR0ZWRWYWx1ZTtcbiAgfVxufVxuIl19","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { SkyDatepickerCalendarLabelPipe } from './datepicker-calendar-label.pipe';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"./datepicker-calendar-inner.component\";\nimport * as i2 from \"@angular/common\";\n/**\n * @internal\n */\nexport class SkyDayPickerButtonComponent {\n constructor(datepicker) {\n this.datepicker = datepicker;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDayPickerButtonComponent, deps: [{ token: i1.SkyDatepickerCalendarInnerComponent }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.5\", type: SkyDayPickerButtonComponent, isStandalone: true, selector: \"sky-daypicker-button\", inputs: { date: \"date\" }, ngImport: i0, template: \"@if (date) {\\n <button\\n class=\\\"sky-btn sky-btn-sm sky-btn-default sky-datepicker-btn-date\\\"\\n tabindex=\\\"-1\\\"\\n type=\\\"button\\\"\\n [disabled]=\\\"date.disabled\\\"\\n [ngClass]=\\\"{\\n 'sky-datepicker-btn-selected': date.selected,\\n 'sky-btn-disabled': date.disabled,\\n 'sky-btn-active': datepicker.isActive(date),\\n 'sky-datepicker-btn-disabled': date.disabled,\\n 'sky-datepicker-btn-key-date': date.keyDate\\n }\\\"\\n [attr.aria-label]=\\\"date.date | skyDatepickerCalendarLabel\\\"\\n (click)=\\\"datepicker.selectCalendar($event, date.date, true)\\\"\\n >\\n <span [ngClass]=\\\"{ 'sky-datepicker-secondary': date.secondary }\\\">\\n {{ date.label }}\\n </span>\\n </button>\\n}\\n\", styles: [\".sky-datepicker-btn-date:not(.sky-theme-modern *){--sky-override-daypicker-disabled-style: italic;--sky-override-daypicker-key-date-color: #d93a3d;--sky-override-daypicker-key-date-left: 15px;--sky-override-daypicker-key-date-size: 5px;--sky-override-daypicker-key-date-top: 22px}:host-context(.sky-theme-modern:not(.sky-theme-brand-base)) .sky-datepicker-btn-date{--sky-override-daypicker-disabled-style: italic;--sky-override-daypicker-key-date-left: 12px;--sky-override-daypicker-key-date-top: 22px}.sky-datepicker-btn-disabled{font-style:var(--sky-override-daypicker-disabled-style)}.sky-datepicker-btn-key-date{position:relative}.sky-datepicker-btn-key-date:before{position:absolute;content:\\\"\\\";height:var(--sky-override-daypicker-key-date-size, var(--sky-size-icon-xxxs));width:var(--sky-override-daypicker-key-date-size, var(--sky-size-icon-xxxs));background-color:var(--sky-override-daypicker-key-date-color, var(--sky-color-icon-danger));border-radius:50%;left:var(--sky-override-daypicker-key-date-left, calc(50% - var(--sky-size-icon-xxxs) / 2));top:var(--sky-override-daypicker-key-date-top, calc(50% + var(--sky-font-size-body-m) * var(--sky-font-line_height-body-m) / 2 - var(--sky-size-icon-xxxs) / 2))}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"pipe\", type: SkyDatepickerCalendarLabelPipe, name: \"skyDatepickerCalendarLabel\" }] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDayPickerButtonComponent, decorators: [{\n type: Component,\n args: [{ imports: [CommonModule, SkyDatepickerCalendarLabelPipe], selector: 'sky-daypicker-button', template: \"@if (date) {\\n <button\\n class=\\\"sky-btn sky-btn-sm sky-btn-default sky-datepicker-btn-date\\\"\\n tabindex=\\\"-1\\\"\\n type=\\\"button\\\"\\n [disabled]=\\\"date.disabled\\\"\\n [ngClass]=\\\"{\\n 'sky-datepicker-btn-selected': date.selected,\\n 'sky-btn-disabled': date.disabled,\\n 'sky-btn-active': datepicker.isActive(date),\\n 'sky-datepicker-btn-disabled': date.disabled,\\n 'sky-datepicker-btn-key-date': date.keyDate\\n }\\\"\\n [attr.aria-label]=\\\"date.date | skyDatepickerCalendarLabel\\\"\\n (click)=\\\"datepicker.selectCalendar($event, date.date, true)\\\"\\n >\\n <span [ngClass]=\\\"{ 'sky-datepicker-secondary': date.secondary }\\\">\\n {{ date.label }}\\n </span>\\n </button>\\n}\\n\", styles: [\".sky-datepicker-btn-date:not(.sky-theme-modern *){--sky-override-daypicker-disabled-style: italic;--sky-override-daypicker-key-date-color: #d93a3d;--sky-override-daypicker-key-date-left: 15px;--sky-override-daypicker-key-date-size: 5px;--sky-override-daypicker-key-date-top: 22px}:host-context(.sky-theme-modern:not(.sky-theme-brand-base)) .sky-datepicker-btn-date{--sky-override-daypicker-disabled-style: italic;--sky-override-daypicker-key-date-left: 12px;--sky-override-daypicker-key-date-top: 22px}.sky-datepicker-btn-disabled{font-style:var(--sky-override-daypicker-disabled-style)}.sky-datepicker-btn-key-date{position:relative}.sky-datepicker-btn-key-date:before{position:absolute;content:\\\"\\\";height:var(--sky-override-daypicker-key-date-size, var(--sky-size-icon-xxxs));width:var(--sky-override-daypicker-key-date-size, var(--sky-size-icon-xxxs));background-color:var(--sky-override-daypicker-key-date-color, var(--sky-color-icon-danger));border-radius:50%;left:var(--sky-override-daypicker-key-date-left, calc(50% - var(--sky-size-icon-xxxs) / 2));top:var(--sky-override-daypicker-key-date-top, calc(50% + var(--sky-font-size-body-m) * var(--sky-font-line_height-body-m) / 2 - var(--sky-size-icon-xxxs) / 2))}\\n\"] }]\n }], ctorParameters: () => [{ type: i1.SkyDatepickerCalendarInnerComponent }], propDecorators: { date: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF5cGlja2VyLWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL2RhdGVwaWNrZXIvY2FsZW5kYXIvZGF5cGlja2VyLWJ1dHRvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL2RhdGVwaWNrZXIvY2FsZW5kYXIvZGF5cGlja2VyLWJ1dHRvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHakQsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7QUFHbEY7O0dBRUc7QUFPSCxNQUFNLE9BQU8sMkJBQTJCO0lBT3RDLFlBQW1CLFVBQStDO1FBQS9DLGVBQVUsR0FBVixVQUFVLENBQXFDO0lBQUcsQ0FBQzs4R0FQM0QsMkJBQTJCO2tHQUEzQiwyQkFBMkIsMEdDaEJ4QyxpdEJBcUJBLDh2Q0RWWSxZQUFZLHdIQUFFLDhCQUE4Qjs7MkZBSzNDLDJCQUEyQjtrQkFOdkMsU0FBUzs4QkFDQyxDQUFDLFlBQVksRUFBRSw4QkFBOEIsQ0FBQyxZQUM3QyxzQkFBc0I7d0dBU3pCLElBQUk7c0JBRFYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFNreURhdGVwaWNrZXJDYWxlbmRhcklubmVyQ29tcG9uZW50IH0gZnJvbSAnLi9kYXRlcGlja2VyLWNhbGVuZGFyLWlubmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lEYXRlcGlja2VyQ2FsZW5kYXJMYWJlbFBpcGUgfSBmcm9tICcuL2RhdGVwaWNrZXItY2FsZW5kYXItbGFiZWwucGlwZSc7XG5pbXBvcnQgeyBTa3lEYXlQaWNrZXJDb250ZXh0IH0gZnJvbSAnLi9kYXlwaWNrZXItY29udGV4dCc7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbkBDb21wb25lbnQoe1xuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBTa3lEYXRlcGlja2VyQ2FsZW5kYXJMYWJlbFBpcGVdLFxuICBzZWxlY3RvcjogJ3NreS1kYXlwaWNrZXItYnV0dG9uJyxcbiAgc3R5bGVVcmw6ICcuL2RheXBpY2tlci1idXR0b24uY29tcG9uZW50LnNjc3MnLFxuICB0ZW1wbGF0ZVVybDogJ2RheXBpY2tlci1idXR0b24uY29tcG9uZW50Lmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lEYXlQaWNrZXJCdXR0b25Db21wb25lbnQge1xuICAvKipcbiAgICogVGhlIGRhdGUgdGhpcyBwaWNrZXIgYnV0dG9uIHdpbGwgcmVwcmVzZW50IG9uIHRoZSBjYWxlbmRhci5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBkYXRlOiBTa3lEYXlQaWNrZXJDb250ZXh0IHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBkYXRlcGlja2VyOiBTa3lEYXRlcGlja2VyQ2FsZW5kYXJJbm5lckNvbXBvbmVudCkge31cbn1cbiIsIkBpZiAoZGF0ZSkge1xuICA8YnV0dG9uXG4gICAgY2xhc3M9XCJza3ktYnRuIHNreS1idG4tc20gc2t5LWJ0bi1kZWZhdWx0IHNreS1kYXRlcGlja2VyLWJ0bi1kYXRlXCJcbiAgICB0YWJpbmRleD1cIi0xXCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICBbZGlzYWJsZWRdPVwiZGF0ZS5kaXNhYmxlZFwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgJ3NreS1kYXRlcGlja2VyLWJ0bi1zZWxlY3RlZCc6IGRhdGUuc2VsZWN0ZWQsXG4gICAgICAnc2t5LWJ0bi1kaXNhYmxlZCc6IGRhdGUuZGlzYWJsZWQsXG4gICAgICAnc2t5LWJ0bi1hY3RpdmUnOiBkYXRlcGlja2VyLmlzQWN0aXZlKGRhdGUpLFxuICAgICAgJ3NreS1kYXRlcGlja2VyLWJ0bi1kaXNhYmxlZCc6IGRhdGUuZGlzYWJsZWQsXG4gICAgICAnc2t5LWRhdGVwaWNrZXItYnRuLWtleS1kYXRlJzogZGF0ZS5rZXlEYXRlXG4gICAgfVwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09XCJkYXRlLmRhdGUgfCBza3lEYXRlcGlja2VyQ2FsZW5kYXJMYWJlbFwiXG4gICAgKGNsaWNrKT1cImRhdGVwaWNrZXIuc2VsZWN0Q2FsZW5kYXIoJGV2ZW50LCBkYXRlLmRhdGUsIHRydWUpXCJcbiAgPlxuICAgIDxzcGFuIFtuZ0NsYXNzXT1cInsgJ3NreS1kYXRlcGlja2VyLXNlY29uZGFyeSc6IGRhdGUuc2Vjb25kYXJ5IH1cIj5cbiAgICAgIHt7IGRhdGUubGFiZWwgfX1cbiAgICA8L3NwYW4+XG4gIDwvYnV0dG9uPlxufVxuIl19","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, input, } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { SkyPopoverMessageType, SkyPopoverModule, } from '@skyux/popovers';\nimport { BehaviorSubject } from 'rxjs';\nimport { SkyDatepickerCalendarInnerComponent } from './datepicker-calendar-inner.component';\nimport { SkyDatepickerCalendarService } from './datepicker-calendar.service';\nimport { SkyDayPickerButtonComponent } from './daypicker-button.component';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nimport * as i2 from \"@skyux/popovers\";\n/**\n * @internal\n */\nexport class SkyDayPickerCellComponent {\n #calendarSvc;\n #datepicker;\n constructor() {\n this.#calendarSvc = inject(SkyDatepickerCalendarService);\n this.#datepicker = inject(SkyDatepickerCalendarInnerComponent);\n /**\n * Whether the active date has been changed.\n */\n this.activeDateHasChanged = input(false);\n /**\n * The date this picker cell will represent on the calendar.\n */\n this.date = input();\n this.ariaLabel = computed(() => {\n const date = this.date();\n if (date?.keyDateText) {\n return date.keyDateText.join(', ');\n }\n /* istanbul ignore next: safety check */\n return '';\n });\n this.hasTooltip = computed(() => {\n const date = this.date();\n return (date &&\n date.keyDate &&\n date.keyDateText &&\n date.keyDateText.length > 0 &&\n date.keyDateText[0].length > 0);\n });\n this.popoverController = new BehaviorSubject({});\n // show the tooltip if this is the active date and is not the\n // initial active date (activeDateHasChanged)\n effect(() => {\n const activeDateHasChanged = this.activeDateHasChanged();\n const hasTooltip = this.hasTooltip();\n const date = this.date();\n if (date &&\n activeDateHasChanged &&\n hasTooltip &&\n this.#datepicker.isActive(date)) {\n this.#showTooltip();\n }\n });\n // Hide this cell's tooltip if another cell opens a tooltip.\n this.#calendarSvc.keyDatePopoverStream\n .pipe(takeUntilDestroyed())\n .subscribe((popoverDate) => {\n if (!popoverDate || popoverDate?.uid !== this.date()?.uid) {\n this.#hideTooltip();\n }\n });\n }\n onDayMouseenter() {\n if (this.hasTooltip()) {\n this.#showTooltip();\n this.#calendarSvc.keyDatePopoverStream.next(this.date());\n }\n }\n onDayMouseleave() {\n if (this.hasTooltip()) {\n this.#hideTooltip();\n this.#calendarSvc.keyDatePopoverStream.next(undefined);\n }\n }\n #hideTooltip() {\n this.popoverController.next({ type: SkyPopoverMessageType.Close });\n }\n #showTooltip() {\n this.popoverController.next({ type: SkyPopoverMessageType.Open });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDayPickerCellComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.5\", type: SkyDayPickerCellComponent, isStandalone: true, selector: \"sky-daypicker-cell\", inputs: { activeDateHasChanged: { classPropertyName: \"activeDateHasChanged\", publicName: \"activeDateHasChanged\", isSignal: true, isRequired: false, transformFunction: null }, date: { classPropertyName: \"date\", publicName: \"date\", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: \"@if (hasTooltip()) {\\n <div\\n class=\\\"sky-daypicker-cell\\\"\\n skyPopoverPlacement=\\\"left\\\"\\n [attr.aria-label]=\\\"ariaLabel()\\\"\\n [skyPopover]=\\\"dayInfoPopover\\\"\\n [skyPopoverMessageStream]=\\\"popoverController\\\"\\n (mouseenter)=\\\"onDayMouseenter()\\\"\\n (mouseleave)=\\\"onDayMouseleave()\\\"\\n >\\n <ng-container *ngTemplateOutlet=\\\"daypickerButtonTemplateRef\\\" />\\n <sky-popover #dayInfoPopover>\\n @for (text of date()?.keyDateText; track text) {\\n <div>\\n {{ text }}\\n </div>\\n }\\n </sky-popover>\\n </div>\\n} @else {\\n <div\\n class=\\\"sky-daypicker-cell\\\"\\n (mouseenter)=\\\"onDayMouseenter()\\\"\\n (mouseleave)=\\\"onDayMouseleave()\\\"\\n >\\n <ng-container *ngTemplateOutlet=\\\"daypickerButtonTemplateRef\\\" />\\n </div>\\n}\\n\\n<ng-template #daypickerButtonTemplateRef>\\n <sky-daypicker-button [date]=\\\"date()\\\" />\\n</ng-template>\\n\", dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"component\", type: SkyDayPickerButtonComponent, selector: \"sky-daypicker-button\", inputs: [\"date\"] }, { kind: \"ngmodule\", type: SkyPopoverModule }, { kind: \"component\", type: i2.λ6, selector: \"sky-popover\", inputs: [\"alignment\", \"placement\", \"popoverTitle\", \"popoverType\"], outputs: [\"popoverClosed\", \"popoverOpened\"] }, { kind: \"directive\", type: i2.λ7, selector: \"[skyPopover]\", inputs: [\"skyPopover\", \"skyPopoverAlignment\", \"skyPopoverMessageStream\", \"skyPopoverPlacement\", \"skyPopoverTrigger\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDayPickerCellComponent, decorators: [{\n type: Component,\n args: [{ changeDetection: ChangeDetectionStrategy.OnPush, imports: [CommonModule, SkyDayPickerButtonComponent, SkyPopoverModule], selector: 'sky-daypicker-cell', template: \"@if (hasTooltip()) {\\n <div\\n class=\\\"sky-daypicker-cell\\\"\\n skyPopoverPlacement=\\\"left\\\"\\n [attr.aria-label]=\\\"ariaLabel()\\\"\\n [skyPopover]=\\\"dayInfoPopover\\\"\\n [skyPopoverMessageStream]=\\\"popoverController\\\"\\n (mouseenter)=\\\"onDayMouseenter()\\\"\\n (mouseleave)=\\\"onDayMouseleave()\\\"\\n >\\n <ng-container *ngTemplateOutlet=\\\"daypickerButtonTemplateRef\\\" />\\n <sky-popover #dayInfoPopover>\\n @for (text of date()?.keyDateText; track text) {\\n <div>\\n {{ text }}\\n </div>\\n }\\n </sky-popover>\\n </div>\\n} @else {\\n <div\\n class=\\\"sky-daypicker-cell\\\"\\n (mouseenter)=\\\"onDayMouseenter()\\\"\\n (mouseleave)=\\\"onDayMouseleave()\\\"\\n >\\n <ng-container *ngTemplateOutlet=\\\"daypickerButtonTemplateRef\\\" />\\n </div>\\n}\\n\\n<ng-template #daypickerButtonTemplateRef>\\n <sky-daypicker-button [date]=\\\"date()\\\" />\\n</ng-template>\\n\" }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF5cGlja2VyLWNlbGwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2RhdGV0aW1lL3NyYy9saWIvbW9kdWxlcy9kYXRlcGlja2VyL2NhbGVuZGFyL2RheXBpY2tlci1jZWxsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9kYXRldGltZS9zcmMvbGliL21vZHVsZXMvZGF0ZXBpY2tlci9jYWxlbmRhci9kYXlwaWNrZXItY2VsbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUNSLE1BQU0sRUFDTixNQUFNLEVBQ04sS0FBSyxHQUNOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFFTCxxQkFBcUIsRUFDckIsZ0JBQWdCLEdBQ2pCLE1BQU0saUJBQWlCLENBQUM7QUFFekIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV2QyxPQUFPLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUM1RixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM3RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7OztBQUczRTs7R0FFRztBQU9ILE1BQU0sT0FBTyx5QkFBeUI7SUFDM0IsWUFBWSxDQUF3QztJQUNwRCxXQUFXLENBQStDO0lBcUNuRTtRQXRDUyxpQkFBWSxHQUFHLE1BQU0sQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO1FBQ3BELGdCQUFXLEdBQUcsTUFBTSxD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QUFDLEVBQUUsSUFBSSxFQUFFLHFCQUFxQixDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDcEUsQ0FBQzs4R0F2RlUseUJBQXlCO2tHQUF6Qix5QkFBeUIsb1hDaEN0QyxpNEJBZ0NBLDJDREpZLFlBQVksc01BQUUsMkJBQTJCLGtGQUFFLGdCQUFnQjs7MkZBSTFELHlCQUF5QjtrQkFOckMsU0FBUztzQ0FDUyx1QkFBdUIsQ0FBQyxNQUFNLFdBQ3RDLENBQUMsWUFBWSxFQUFFLDJCQUEyQixFQUFFLGdCQUFnQixDQUFDLFlBQzVELG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBjb21wdXRlZCxcbiAgZWZmZWN0LFxuICBpbmplY3QsXG4gIGlucHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7XG4gIFNreVBvcG92ZXJNZXNzYWdlLFxuICBTa3lQb3BvdmVyTWVzc2FnZVR5cGUsXG4gIFNreVBvcG92ZXJNb2R1bGUsXG59IGZyb20gJ0Bza3l1eC9wb3BvdmVycyc7XG5cbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBTa3lEYXRlcGlja2VyQ2FsZW5kYXJJbm5lckNvbXBvbmVudCB9IGZyb20gJy4vZGF0ZXBpY2tlci1jYWxlbmRhci1pbm5lci5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5RGF0ZXBpY2tlckNhbGVuZGFyU2VydmljZSB9IGZyb20gJy4vZGF0ZXBpY2tlci1jYWxlbmRhci5zZXJ2aWNlJztcbmltcG9ydCB7IFNreURheVBpY2tlckJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4vZGF5cGlja2VyLWJ1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5RGF5UGlja2VyQ29udGV4dCB9IGZyb20gJy4vZGF5cGlja2VyLWNvbnRleHQnO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5AQ29tcG9uZW50KHtcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFNreURheVBpY2tlckJ1dHRvbkNvbXBvbmVudCwgU2t5UG9wb3Zlck1vZHVsZV0sXG4gIHNlbGVjdG9yOiAnc2t5LWRheXBpY2tlci1jZWxsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RheXBpY2tlci1jZWxsLmNvbXBvbmVudC5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgU2t5RGF5UGlja2VyQ2VsbENvbXBvbmVudCB7XG4gIHJlYWRvbmx5ICNjYWxlbmRhclN2YyA9IGluamVjdChTa3lEYXRlcGlja2VyQ2FsZW5kYXJTZXJ2aWNlKTtcbiAgcmVhZG9ubHkgI2RhdGVwaWNrZXIgPSBpbmplY3QoU2t5RGF0ZXBpY2tlckNhbGVuZGFySW5uZXJDb21wb25lbnQpO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBhY3RpdmUgZGF0ZSBoYXMgYmVlbiBjaGFuZ2VkLlxuICAgKi9cbiAgcHVibGljIGFjdGl2ZURhdGVIYXNDaGFuZ2VkID0gaW5wdXQoZmFsc2UpO1xuXG4gIC8qKlxuICAgKiBUaGUgZGF0ZSB0aGlzIHBpY2tlciBjZWxsIHdpbGwgcmVwcmVzZW50IG9uIHRoZSBjYWxlbmRhci5cbiAgICovXG4gIHB1YmxpYyBkYXRlID0gaW5wdXQ8U2t5RGF5UGlja2VyQ29udGV4dCB8IHVuZGVmaW5lZD4oKTtcblxuICBwcm90ZWN0ZWQgYXJpYUxhYmVsID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGRhdGUgPSB0aGlzLmRhdGUoKTtcblxuICAgIGlmIChkYXRlPy5rZXlEYXRlVGV4dCkge1xuICAgICAgcmV0dXJuIGRhdGUua2V5RGF0ZVRleHQuam9pbignLCAnKTtcbiAgICB9XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogc2FmZXR5IGNoZWNrICovXG4gICAgcmV0dXJuICcnO1xuICB9KTtcblxuICBwcm90ZWN0ZWQgaGFzVG9vbHRpcCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBkYXRlID0gdGhpcy5kYXRlKCk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgZGF0ZSAmJlxuICAgICAgZGF0ZS5rZXlEYXRlICYmXG4gICAgICBkYXRlLmtleURhdGVUZXh0ICYmXG4gICAgICBkYXRlLmtleURhdGVUZXh0Lmxlbmd0aCA+IDAgJiZcbiAgICAgIGRhdGUua2V5RGF0ZVRleHRbMF0ubGVuZ3RoID4gMFxuICAgICk7XG4gIH0pO1xuXG4gIHByb3RlY3RlZCBwb3BvdmVyQ29udHJvbGxlciA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U2t5UG9wb3Zlck1lc3NhZ2U+KHt9KTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICAvLyBzaG93IHRoZSB0b29sdGlwIGlmIHRoaXMgaXMgdGhlIGFjdGl2ZSBkYXRlIGFuZCBpcyBub3QgdGhlXG4gICAgLy8gaW5pdGlhbCBhY3RpdmUgZGF0ZSAoYWN0aXZlRGF0ZUhhc0NoYW5nZWQpXG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IGFjdGl2ZURhdGVIYXNDaGFuZ2VkID0gdGhpcy5hY3RpdmVEYXRlSGFzQ2hhbmdlZCgpO1xuICAgICAgY29uc3QgaGFzVG9vbHRpcCA9IHRoaXMuaGFzVG9vbHRpcCgpO1xuICAgICAgY29uc3QgZGF0ZSA9IHRoaXMuZGF0ZSgpO1xuXG4gICAgICBpZiAoXG4gICAgICAgIGRhdGUgJiZcbiAgICAgICAgYWN0aXZlRGF0ZUhhc0NoYW5nZWQgJiZcbiAgICAgICAgaGFzVG9vbHRpcCAmJlxuICAgICAgICB0aGlzLiNkYXRlcGlja2VyLmlzQWN0aXZlKGRhdGUpXG4gICAgICApIHtcbiAgICAgICAgdGhpcy4jc2hvd1Rvb2x0aXAoKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIEhpZGUgdGhpcyBjZWxsJ3MgdG9vbHRpcCBpZiBhbm90aGVyIGNlbGwgb3BlbnMgYSB0b29sdGlwLlxuICAgIHRoaXMuI2NhbGVuZGFyU3ZjLmtleURhdGVQb3BvdmVyU3RyZWFtXG4gICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSlcbiAgICAgIC5zdWJzY3JpYmUoKHBvcG92ZXJEYXRlKSA9PiB7XG4gICAgICAgIGlmICghcG9wb3ZlckRhdGUgfHwgcG9wb3ZlckRhdGU/LnVpZCAhPT0gdGhpcy5kYXRlKCk/LnVpZCkge1xuICAgICAgICAgIHRoaXMuI2hpZGVUb29sdGlwKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uRGF5TW91c2VlbnRlcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oYXNUb29sdGlwKCkpIHtcbiAgICAgIHRoaXMuI3Nob3dUb29sdGlwKCk7XG4gICAgICB0aGlzLiNjYWxlbmRhclN2Yy5rZXlEYXRlUG9wb3ZlclN0cmVhbS5uZXh0KHRoaXMuZGF0ZSgpKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb25EYXlNb3VzZWxlYXZlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmhhc1Rvb2x0aXAoKSkge1xuICAgICAgdGhpcy4jaGlkZVRvb2x0aXAoKTtcbiAgICAgIHRoaXMuI2NhbGVuZGFyU3ZjLmtleURhdGVQb3BvdmVyU3RyZWFtLm5leHQodW5kZWZpbmVkKTtcbiAgICB9XG4gIH1cblxuICAjaGlkZVRvb2x0aXAoKTogdm9pZCB7XG4gICAgdGhpcy5wb3BvdmVyQ29udHJvbGxlci5uZXh0KHsgdHlwZTogU2t5UG9wb3Zlck1lc3NhZ2VUeXBlLkNsb3NlIH0pO1xuICB9XG5cbiAgI3Nob3dUb29sdGlwKCk6IHZvaWQge1xuICAgIHRoaXMucG9wb3ZlckNvbnRyb2xsZXIubmV4dCh7IHR5cGU6IFNreVBvcG92ZXJNZXNzYWdlVHlwZS5PcGVuIH0pO1xuICB9XG59XG4iLCJAaWYgKGhhc1Rvb2x0aXAoKSkge1xuICA8ZGl2XG4gICAgY2xhc3M9XCJza3ktZGF5cGlja2VyLWNlbGxcIlxuICAgIHNreVBvcG92ZXJQbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbCgpXCJcbiAgICBbc2t5UG9wb3Zlcl09XCJkYXlJbmZvUG9wb3ZlclwiXG4gICAgW3NreVBvcG92ZXJNZXNzYWdlU3RyZWFtXT1cInBvcG92ZXJDb250cm9sbGVyXCJcbiAgICAobW91c2VlbnRlcik9XCJvbkRheU1vdXNlZW50ZXIoKVwiXG4gICAgKG1vdXNlbGVhdmUpPVwib25EYXlNb3VzZWxlYXZlKClcIlxuICA+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRheXBpY2tlckJ1dHRvblRlbXBsYXRlUmVmXCIgLz5cbiAgICA8c2t5LXBvcG92ZXIgI2RheUluZm9Qb3BvdmVyPlxuICAgICAgQGZvciAodGV4dCBvZiBkYXRlKCk/LmtleURhdGVUZXh0OyB0cmFjayB0ZXh0KSB7XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAge3sgdGV4dCB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICA8L3NreS1wb3BvdmVyPlxuICA8L2Rpdj5cbn0gQGVsc2Uge1xuICA8ZGl2XG4gICAgY2xhc3M9XCJza3ktZGF5cGlja2VyLWNlbGxcIlxuICAgIChtb3VzZWVudGVyKT1cIm9uRGF5TW91c2VlbnRlcigpXCJcbiAgICAobW91c2VsZWF2ZSk9XCJvbkRheU1vdXNlbGVhdmUoKVwiXG4gID5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGF5cGlja2VyQnV0dG9uVGVtcGxhdGVSZWZcIiAvPlxuICA8L2Rpdj5cbn1cblxuPG5nLXRlbXBsYXRlICNkYXlwaWNrZXJCdXR0b25UZW1wbGF0ZVJlZj5cbiAgPHNreS1kYXlwaWNrZXItYnV0dG9uIFtkYXRlXT1cImRhdGUoKVwiIC8+XG48L25nLXRlbXBsYXRlPlxuIl19","import { Component, EventEmitter, Input, Output, } from '@angular/core';\nimport { SkyWaitModule } from '@skyux/indicators';\nimport { Subject } from 'rxjs';\nimport { SkyDayPickerCellComponent } from './daypicker-cell.component';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"./datepicker-calendar-inner.component\";\nimport * as i2 from \"@skyux/indicators\";\n/**\n * @internal\n */\nexport class SkyDayPickerComponent {\n set customDates(value) {\n /* istanbul ignore else */\n if (value) {\n this.#applyCustomDates(value, this.rows);\n }\n }\n #daysInMonth;\n #initialDate;\n #ngUnsubscribe;\n constructor(datepicker) {\n this.calendarDateRangeChange = new EventEmitter();\n this.isWaiting = false;\n this.activeDateHasChanged = false;\n this.labels = [];\n this.title = '';\n this.rows = [];\n this.weekNumbers = [];\n this.#daysInMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n this.#ngUnsubscribe = new Subject();\n this.datepicker = datepicker;\n }\n ngOnInit() {\n this.datepicker.stepDay = { months: 1 };\n this.#initialDate = this.datepicker.activeDate.getDate();\n this.datepicker.setRefreshViewHandler(() => this.#refreshDayView(), 'day');\n this.datepicker.setCompareHandler(this.#compareDays, 'day');\n this.datepicker.setKeydownHandler((key, event) => {\n this.#keydownDays(key, event);\n }, 'day');\n this.datepicker.refreshView();\n }\n ngOnDestroy() {\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n }\n getDates(startDate, n) {\n const dates = new Array(n);\n let current = new Date(startDate.getTime());\n let i = 0;\n let date;\n while (i < n) {\n date = new Date(current.getTime());\n date = this.datepicker.fixTimeZone(date);\n dates[i++] = date;\n current = new Date(current.getFullYear(), current.getMonth(), current.getDate() + 1);\n }\n return dates;\n }\n #compareDays(date1, date2) {\n const d1 = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate());\n const d2 = new Date(date2.getFullYear(), date2.getMonth(), date2.getDate());\n return d1.getTime() - d2.getTime();\n }\n #refreshDayView() {\n const year = this.datepicker.activeDate.getFullYear();\n const month = this.datepicker.activeDate.getMonth();\n const firstDayOfMonth = new Date(year, month, 1);\n const difference = this.datepicker.startingDay - firstDayOfMonth.getDay();\n const numDisplayedFromPreviousMonth = difference > 0 ? 7 - difference : -difference;\n const firstDate = new Date(firstDayOfMonth.getTime());\n if (this.datepicker.activeDate.getDate() !== this.#initialDate) {\n this.activeDateHasChanged = true;\n }\n /* istanbul ignore else */\n /* sanity check */\n if (numDisplayedFromPreviousMonth > 0) {\n firstDate.setDate(-numDisplayedFromPreviousMonth + 1);\n }\n // 42 is the number of days on a six-week calendar\n const days = this.getDates(firstDate, 42);\n const pickerDates = [];\n for (let i = 0; i < 42; i++) {\n const _dateObject = this.datepicker.createDateObject(days[i], this.datepicker.formatDay, days[i].getMonth() !== month, this.datepicker.datepickerId + '-' + i);\n pickerDates[i] = _dateObject;\n }\n this.labels = [];\n for (let j = 0; j < 7; j++) {\n this.labels[j] = {};\n this.labels[j].abbr = this.datepicker.dateFilter(pickerDates[j].date, this.datepicker.formatDayHeader);\n this.labels[j].full = this.datepicker.dateFilter(pickerDates[j].date, 'EEEE');\n }\n const oldDateRange = this.#getDateRange(this.rows);\n this.rows = this.datepicker.createCalendarRows(pickerDates, 7);\n const newDateRange = this.#getDateRange(this.rows);\n if (!this.#dateRangeRowsAreEqual(oldDateRange, newDateRange)) {\n // Safety check\n /* istanbul ignore else */\n if (newDateRange) {\n this.calendarDateRangeChange.next({\n startDate: newDateRange.startDate,\n endDate: newDateRange.endDate,\n });\n }\n else {\n this.calendarDateRangeChange.next(undefined);\n }\n }\n return this.datepicker.dateFilter(this.datepicker.activeDate, this.datepicker.formatDayTitle);\n }\n #keydownDays(key, event) {\n let date = this.datepicker.activeDate.getDate();\n /* istanbul ignore else */\n /* sanity check */\n if (key === 'arrowleft') {\n date = date - 1;\n }\n else if (key === 'arrowup') {\n date = date - 7;\n }\n else if (key === 'arrowright') {\n date = date + 1;\n }\n else if (key === 'arrowdown') {\n date = date + 7;\n }\n else if (key === 'pageup' || key === 'pagedown') {\n const month = this.datepicker.activeDate.getMonth() + (key === 'pageup' ? -1 : 1);\n this.datepicker.activeDate.setMonth(month, 1);\n date = Math.min(this.#getDaysInMonth(this.datepicker.activeDate.getFullYear(), this.datepicker.activeDate.getMonth()), date);\n }\n else if (key === 'home') {\n date = 1;\n }\n else if (key === 'end') {\n date = this.#getDaysInMonth(this.datepicker.activeDate.getFullYear(), this.datepicker.activeDate.getMonth());\n }\n this.datepicker.activeDate.setDate(date);\n this.datepicker.announceDate(this.datepicker.activeDate, this.datepicker.formatDayLabel);\n }\n #getDaysInMonth(year, month) {\n return month === 1 &&\n year % 4 === 0 &&\n (year % 400 === 0 || year % 100 !== 0)\n ? 29\n : this.#daysInMonth[month];\n }\n /**\n * Applies custom date properties to the existing dates displayed in the calendar.\n */\n #applyCustomDates(customDates, dateRows) {\n let date;\n let newDate;\n let dateIndex;\n /* istanbul ignore else */\n if (customDates && dateRows) {\n customDates.forEach((customDate) => {\n dateIndex = -1;\n dateRows.forEach((row) => {\n if (dateIndex === -1) {\n dateIndex = row.findIndex((d) => {\n return d.date.getTime() === customDate.date.getTime();\n });\n if (dateIndex > -1) {\n date = row[dateIndex];\n // Replace the date with a new instance so the display gets updated.\n newDate = {\n current: date.current,\n date: date.date,\n disabled: !!date.disabled || !!customDate.disabled,\n keyDate: !!customDate.keyDate || !!date.keyDate,\n keyDateText: customDate.keyDateText || date.keyDateText,\n label: date.label,\n secondary: date.secondary,\n selected: date.selected,\n uid: date.uid,\n };\n row[dateIndex] = newDate;\n }\n }\n });\n });\n }\n }\n #dateRangeRowsAreEqual(rangeA, rangeB) {\n /* istanbul ignore if */\n if (!rangeA && !rangeB) {\n return true;\n }\n else if (rangeA && rangeB) {\n return (this.#compareDays(rangeA.startDate, rangeB.startDate) === 0 &&\n this.#compareDays(rangeA.endDate, rangeB.endDate) === 0);\n }\n else {\n return false;\n }\n }\n #getDateRange(rows) {\n /* istanbul ignore else */\n if (rows && rows.length > 0) {\n return {\n startDate: rows[0][0].date,\n endDate: rows[rows.length - 1][rows[rows.length - 1].length - 1].date,\n };\n }\n return undefined;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDayPickerComponent, deps: [{ token: i1.SkyDatepickerCalendarInnerComponent }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.5\", type: SkyDayPickerComponent, isStandalone: true, selector: \"sky-daypicker\", inputs: { customDates: \"customDates\", isWaiting: \"isWaiting\" }, outputs: { calendarDateRangeChange: \"calendarDateRangeChange\" }, ngImport: i0, template: \"<table\\n class=\\\"sky-daypicker-table\\\"\\n role=\\\"grid\\\"\\n [attr.aria-labelledby]=\\\"datepicker.datepickerId + '-title'\\\"\\n>\\n <thead>\\n <tr>\\n @for (label of labels; track label.full) {\\n <th scope=\\\"col\\\" class=\\\"sky-datepicker-center sky-datepicker-weekdays\\\">\\n <!-- display: inline -->\\n <span\\n class=\\\"sky-datepicker-weekday-text\\\"\\n [attr.aria-label]=\\\"label.full\\\"\\n >{{ label.abbr }}</span\\n >\\n </th>\\n }\\n </tr>\\n </thead>\\n <tbody>\\n <!-- Wait indicator for async custom date stream -->\\n <sky-wait [isWaiting]=\\\"isWaiting\\\" />\\n @for (row of rows; track $index) {\\n <tr role=\\\"row\\\">\\n @for (date of row; track date.uid) {\\n <td class=\\\"sky-datepicker-center\\\" role=\\\"gridcell\\\" [id]=\\\"date.uid\\\">\\n <sky-daypicker-cell\\n [activeDateHasChanged]=\\\"activeDateHasChanged\\\"\\n [date]=\\\"date\\\"\\n />\\n </td>\\n }\\n </tr>\\n }\\n </tbody>\\n</table>\\n\", dependencies: [{ kind: \"component\", type: SkyDayPickerCellComponent, selector: \"sky-daypicker-cell\", inputs: [\"activeDateHasChanged\", \"date\"] }, { kind: \"ngmodule\", type: SkyWaitModule }, { kind: \"component\", type: i2.λ14, selector: \"sky-wait\", inputs: [\"ariaLabel\", \"isWaiting\", \"isFullPage\", \"isNonBlocking\", \"screenReaderCompletedText\"] }] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDayPickerComponent, decorators: [{\n type: Component,\n args: [{ imports: [SkyDayPickerCellComponent, SkyWaitModule], selector: 'sky-daypicker', template: \"<table\\n class=\\\"sky-daypicker-table\\\"\\n role=\\\"grid\\\"\\n [attr.aria-labelledby]=\\\"datepicker.datepickerId + '-title'\\\"\\n>\\n <thead>\\n <tr>\\n @for (label of labels; track label.full) {\\n <th scope=\\\"col\\\" class=\\\"sky-datepicker-center sky-datepicker-weekdays\\\">\\n <!-- display: inline -->\\n <span\\n class=\\\"sky-datepicker-weekday-text\\\"\\n [attr.aria-label]=\\\"label.full\\\"\\n >{{ label.abbr }}</span\\n >\\n </th>\\n }\\n </tr>\\n </thead>\\n <tbody>\\n <!-- Wait indicator for async custom date stream -->\\n <sky-wait [isWaiting]=\\\"isWaiting\\\" />\\n @for (row of rows; track $index) {\\n <tr role=\\\"row\\\">\\n @for (date of row; track date.uid) {\\n <td class=\\\"sky-datepicker-center\\\" role=\\\"gridcell\\\" [id]=\\\"date.uid\\\">\\n <sky-daypicker-cell\\n [activeDateHasChanged]=\\\"activeDateHasChanged\\\"\\n [date]=\\\"date\\\"\\n />\\n </td>\\n }\\n </tr>\\n }\\n </tbody>\\n</table>\\n\" }]\n }], ctorParameters: () => [{ type: i1.SkyDatepickerCalendarInnerComponent }], propDecorators: { customDates: [{\n type: Input\n }], calendarDateRangeChange: [{\n type: Output\n }], isWaiting: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF5cGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9kYXRldGltZS9zcmMvbGliL21vZHVsZXMvZGF0ZXBpY2tlci9jYWxlbmRhci9kYXlwaWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2RhdGV0aW1lL3NyYy9saWIvbW9kdWxlcy9kYXRlcGlja2VyL2NhbGVuZGFyL2RheXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVsRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBTS9CLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7O0FBWXZFOztHQUVHO0FBTUgsTUFBTSxPQUFPLHFCQUFxQjtJQUNoQyxJQUNXLFdBQVcsQ0FBQyxLQUE0QztRQUNqRSwwQkFBMEI7UUFDMUIsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNDLENBQUM7SUFDSCxDQUFDO0lBa0JELFlBQVksQ0FBOEQ7SUFDMUUsWUFBWSxDQUFxQjtJQUNqQyxjQUFjLENBQXVCO0lBRXJDLFlBQVksVUFBK0M7UUFuQnBELDRCQUF1QixHQUFHLElBQUksWUFBWSxFQUU5QyxDQUFDO1FBR0csY0FBUyxHQUF3QixLQUFLLENBQUM7UUFFdkMseUJBQW9CLEdBQUcsS0FBSyxDQUFDO1FBQzdCLFdBQU0sR0FBVSxFQUFFLENBQUM7UUFD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QUFhLENBQUMsSUFBNkI7UUFDekMsMEJBQTBCO1FBQzFCLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDNUIsT0FBTztnQkFDTCxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUk7Z0JBQzFCLE9BQU8sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSTthQUN0RSxDQUFDO1FBQ0osQ0FBQztRQUNELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7OEdBblFVLHFCQUFxQjtrR0FBckIscUJBQXFCLDBNQ3BDbEMsMmhDQW9DQSw0Q0RKWSx5QkFBeUIsd0dBQUUsYUFBYTs7MkZBSXZDLHFCQUFxQjtrQkFMakMsU0FBUzs4QkFDQyxDQUFDLHlCQUF5QixFQUFFLGFBQWEsQ0FBQyxZQUN6QyxlQUFlO3dHQUtkLFdBQVc7c0JBRHJCLEtBQUs7Z0JBU0MsdUJBQXVCO3NCQUQ3QixNQUFNO2dCQU1BLFNBQVM7c0JBRGYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTa3lXYWl0TW9kdWxlIH0gZnJvbSAnQHNreXV4L2luZGljYXRvcnMnO1xuXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFNreURhdGVwaWNrZXJDdXN0b21EYXRlIH0gZnJvbSAnLi4vZGF0ZXBpY2tlci1jdXN0b20tZGF0ZSc7XG5cbmltcG9ydCB7IFNreURhdGVwaWNrZXJDYWxlbmRhckNoYW5nZSB9IGZyb20gJy4vZGF0ZXBpY2tlci1jYWxlbmRhci1jaGFuZ2UnO1xuaW1wb3J0IHsgU2t5RGF0ZXBpY2tlckNhbGVuZGFySW5uZXJDb21wb25lbnQgfSBmcm9tICcuL2RhdGVwaWNrZXItY2FsZW5kYXItaW5uZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFNreURheVBpY2tlckNlbGxDb21wb25lbnQgfSBmcm9tICcuL2RheXBpY2tlci1jZWxsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lEYXlQaWNrZXJDb250ZXh0IH0gZnJvbSAnLi9kYXlwaWNrZXItY29udGV4dCc7XG5cbi8qKlxuICogSGVscGVyIGludGVyZmFjZSB0byBjb21wYXJlIGRhdGUgcmFuZ2VzLlxuICogQGludGVybmFsXG4gKi9cbmludGVyZmFjZSBTa3lEYXRlUmFuZ2Uge1xuICBlbmREYXRlOiBEYXRlO1xuICBzdGFydERhdGU6IERhdGU7XG59XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbkBDb21wb25lbnQoe1xuICBpbXBvcnRzOiBbU2t5RGF5UGlja2VyQ2VsbENvbXBvbmVudCwgU2t5V2FpdE1vZHVsZV0sXG4gIHNlbGVjdG9yOiAnc2t5LWRheXBpY2tlcicsXG4gIHRlbXBsYXRlVXJsOiAnZGF5cGlja2VyLmNvbXBvbmVudC5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgU2t5RGF5UGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95LCBPbkluaXQge1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGN1c3RvbURhdGVzKHZhbHVlOiBTa3lEYXRlcGlja2VyQ3VzdG9tRGF0ZVtdIHwgdW5kZWZpbmVkKSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuI2FwcGx5Q3VzdG9tRGF0ZXModmFsdWUsIHRoaXMucm93cyk7XG4gICAgfVxuICB9XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBjYWxlbmRhckRhdGVSYW5nZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8XG4gICAgU2t5RGF0ZXBpY2tlckNhbGVuZGFyQ2hhbmdlIHwgdW5kZWZpbmVkXG4gID4oKTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgaXNXYWl0aW5nOiBib29sZWFuIHwgdW5kZWZpbmVkID0gZmFsc2U7XG5cbiAgcHVibGljIGFjdGl2ZURhdGVIYXNDaGFuZ2VkID0gZmFsc2U7XG4gIHB1YmxpYyBsYWJlbHM6IGFueVtdID0gW107XG4gIHB1YmxpYyB0aXRsZSA9ICcnO1xuICBwdWJsaWMgcm93czogU2t5RGF5UGlja2VyQ29udGV4dFtdW10gPSBbXTtcbiAgcHVibGljIHdlZWtOdW1iZXJzOiBudW1iZXJbXSA9IFtdO1xuICBwdWJsaWMgZGF0ZXBpY2tlcjogU2t5RGF0ZXBpY2tlckNhbGVuZGFySW5uZXJDb21wb25lbnQ7XG4gIHB1YmxpYyBDVVJSRU5UX1RIRU1FX1RFTVBMQVRFOiBhbnk7XG5cbiAgI2RheXNJbk1vbnRoOiBudW1iZXJbXSA9IFszMSwgMjgsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzEsIDMwLCAzMSwgMzAsIDMxXTtcbiAgI2luaXRpYWxEYXRlOiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICNuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihkYXRlcGlja2VyOiBTa3lEYXRlcGlja2VyQ2FsZW5kYXJJbm5lckNvbXBvbmVudCkge1xuICAgIHRoaXMuZGF0ZXBpY2tlciA9IGRhdGVwaWNrZXI7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5kYXRlcGlja2VyLnN0ZXBEYXkgPSB7IG1vbnRoczogMSB9O1xuICAgIHRoaXMuI2luaXRpYWxEYXRlID0gdGhpcy5kYXRlcGlja2VyLmFjdGl2ZURhdGUuZ2V0RGF0ZSgpO1xuXG4gICAgdGhpcy5kYXRlcGlja2VyLnNldFJlZnJlc2hWaWV3SGFuZGxlcigoKSA9PiB0aGlzLiNyZWZyZXNoRGF5VmlldygpLCAnZGF5Jyk7XG5cbiAgICB0aGlzLmRhdGVwaWNrZXIuc2V0Q29tcGFyZUhhbmRsZXIodGhpcy4jY29tcGFyZURheXMsICdkYXknKTtcblxuICAgIHRoaXMuZGF0ZXBpY2tlci5zZXRLZXlkb3duSGFuZGxlcigoa2V5OiBzdHJpbmcsIGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICB0aGlzLiNrZXlkb3duRGF5cyhrZXksIGV2ZW50KTtcbiAgICB9LCAnZGF5Jyk7XG5cbiAgICB0aGlzLmRhdGVwaWNrZXIucmVmcmVzaFZpZXcoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0RGF0ZXMoc3RhcnREYXRlOiBEYXRlLCBuOiBudW1iZXIpOiBEYXRlW10ge1xuICAgIGNvbnN0IGRhdGVzOiBEYXRlW10gPSBuZXcgQXJyYXkobik7XG4gICAgbGV0IGN1cnJlbnQgPSBuZXcgRGF0ZShzdGFydERhdGUuZ2V0VGltZSgpKTtcbiAgICBsZXQgaSA9IDA7XG4gICAgbGV0IGRhdGU6IERhdGU7XG4gICAgd2hpbGUgKGkgPCBuKSB7XG4gICAgICBkYXRlID0gbmV3IERhdGUoY3VycmVudC5nZXRUaW1lKCkpO1xuICAgICAgZGF0ZSA9IHRoaXMuZGF0ZXBpY2tlci5maXhUaW1lWm9uZShkYXRlKTtcbiAgICAgIGRhdGVzW2krK10gPSBkYXRlO1xuICAgICAgY3VycmVudCA9IG5ldyBEYXRlKFxuICAgICAgICBjdXJyZW50LmdldEZ1bGxZZWFyKCksXG4gICAgICAgIGN1cnJlbnQuZ2V0TW9udGgoKSxcbiAgICAgICAgY3VycmVudC5nZXREYXRlKCkgKyAxLFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIGRhdGVzO1xuICB9XG5cbiAgI2NvbXBhcmVEYXlzKGRhdGUxOiBEYXRlLCBkYXRlMjogRGF0ZSk6IG51bWJlciB7XG4gICAgY29uc3QgZDEgPSBuZXcgRGF0ZShkYXRlMS5nZXRGdWxsWWVhcigpLCBkYXRlMS5nZXRNb250aCgpLCBkYXRlMS5nZXREYXRlKCkpO1xuICAgIGNvbnN0IGQyID0gbmV3IERhdGUoZGF0ZTIuZ2V0RnVsbFllYXIoKSwgZGF0ZTIuZ2V0TW9udGgoKSwgZGF0ZTIuZ2V0RGF0ZSgpKTtcbiAgICByZXR1cm4gZDEuZ2V0VGltZSgpIC0gZDIuZ2V0VGltZSgpO1xuICB9XG5cbiAgI3JlZnJlc2hEYXlWaWV3KCk6IHN0cmluZyB7XG4gICAgY29uc3QgeWVhciA9IHRoaXMuZGF0ZXBpY2tlci5hY3RpdmVEYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgY29uc3QgbW9udGggPSB0aGlzLmRhdGVwaWNrZXIuYWN0aXZlRGF0ZS5nZXRNb250aCgpO1xuICAgIGNvbnN0IGZpcnN0RGF5T2ZNb250aCA9IG5ldyBEYXRlKHllYXIsIG1vbnRoLCAxKTtcbiAgICBjb25zdCBkaWZmZXJlbmNlID0gdGhpcy5kYXRlcGlja2VyLnN0YXJ0aW5nRGF5IC0gZmlyc3REYXlPZk1vbnRoLmdldERheSgpO1xuICAgIGNvbnN0IG51bURpc3BsYXllZEZyb21QcmV2aW91c01vbnRoID1cbiAgICAgIGRpZmZlcmVuY2UgPiAwID8gNyAtIGRpZmZlcmVuY2UgOiAtZGlmZmVyZW5jZTtcbiAgICBjb25zdCBmaXJzdERhdGUgPSBuZXcgRGF0ZShmaXJzdERheU9mTW9udGguZ2V0VGltZSgpKTtcblxuICAgIGlmICh0aGlzLmRhdGVwaWNrZXIuYWN0aXZlRGF0ZS5nZXREYXRlKCkgIT09IHRoaXMuI2luaXRpYWxEYXRlKSB7XG4gICAgICB0aGlzLmFjdGl2ZURhdGVIYXNDaGFuZ2VkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIC8qIHNhbml0eSBjaGVjayAqL1xuICAgIGlmIChudW1EaXNwbGF5ZWRGcm9tUHJldmlvdXNNb250aCA+IDApIHtcbiAgICAgIGZpcnN0RGF0ZS5zZXREYXRlKC1udW1EaXNwbGF5ZWRGcm9tUHJldmlvdXNNb250aCArIDEpO1xuICAgIH1cblxuICAgIC8vIDQyIGlzIHRoZSBudW1iZXIgb2YgZGF5cyBvbiBhIHNpeC13ZWVrIGNhbGVuZGFyXG4gICAgY29uc3QgZGF5czogRGF0ZVtdID0gdGhpcy5nZXREYXRlcyhmaXJzdERhdGUsIDQyKTtcbiAgICBjb25zdCBwaWNrZXJEYXRlczogU2t5RGF5UGlja2VyQ29udGV4dFtdID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCA0MjsgaSsrKSB7XG4gICAgICBjb25zdCBfZGF0ZU9iamVjdCA9IHRoaXMuZGF0ZXBpY2tlci5jcmVhdGVEYXRlT2JqZWN0KFxuICAgICAgICBkYXlzW2ldLFxuICAgICAgICB0aGlzLmRhdGVwaWNrZXIuZm9ybWF0RGF5LFxuICAgICAgICBkYXlzW2ldLmdldE1vbnRoKCkgIT09IG1vbnRoLFxuICAgICAgICB0aGlzLmRhdGVwaWNrZXIuZGF0ZXBpY2tlcklkICsgJy0nICsgaSxcbiAgICAgICk7XG4gICAgICBwaWNrZXJEYXRlc1tpXSA9IF9kYXRlT2JqZWN0O1xuICAgIH1cblxuICAgIHRoaXMubGFiZWxzID0gW107XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCA3OyBqKyspIHtcbiAgICAgIHRoaXMubGFiZWxzW2pdID0ge307XG4gICAgICB0aGlzLmxhYmVsc1tqXS5hYmJyID0gdGhpcy5kYXRlcGlja2VyLmRhdGVGaWx0ZXIoXG4gICAgICAgIHBpY2tlckRhdGVzW2pdLmRhdGUsXG4gICAgICAgIHRoaXMuZGF0ZXBpY2tlci5mb3JtYXREYXlIZWFkZXIsXG4gICAgICApO1xuICAgICAgdGhpcy5sYWJlbHNbal0uZnVsbCA9IHRoaXMuZGF0ZXBpY2tlci5kYXRlRmlsdGVyKFxuICAgICAgICBwaWNrZXJEYXRlc1tqXS5kYXRlLFxuICAgICAgICAnRUVFRScsXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IG9sZERhdGVSYW5nZSA9IHRoaXMuI2dldERhdGVSYW5nZSh0aGlzLnJvd3MpO1xuICAgIHRoaXMucm93cyA9IHRoaXMuZGF0ZXBpY2tlci5jcmVhdGVDYWxlbmRhclJvd3MocGlja2VyRGF0ZXMsIDcpO1xuICAgIGNvbnN0IG5ld0RhdGVSYW5nZSA9IHRoaXMuI2dldERhdGVSYW5nZSh0aGlzLnJvd3MpO1xuXG4gICAgaWYgKCF0aGlzLiNkYXRlUmFuZ2VSb3dzQXJlRXF1YWwob2xkRGF0ZVJhbmdlLCBuZXdEYXRlUmFuZ2UpKSB7XG4gICAgICAvLyBTYWZldHkgY2hlY2tcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICBpZiAobmV3RGF0ZVJhbmdlKSB7XG4gICAgICAgIHRoaXMuY2FsZW5kYXJEYXRlUmFuZ2VDaGFuZ2UubmV4dCh7XG4gICAgICAgICAgc3RhcnREYXRlOiBuZXdEYXRlUmFuZ2Uuc3RhcnREYXRlLFxuICAgICAgICAgIGVuZERhdGU6IG5ld0RhdGVSYW5nZS5lbmREYXRlLFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY2FsZW5kYXJEYXRlUmFuZ2VDaGFuZ2UubmV4dCh1bmRlZmluZWQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmRhdGVwaWNrZXIuZGF0ZUZpbHRlcihcbiAgICAgIHRoaXMuZGF0ZXBpY2tlci5hY3RpdmVEYXRlLFxuICAgICAgdGhpcy5kYXRlcGlja2VyLmZvcm1hdERheVRpdGxlLFxuICAgICk7XG4gIH1cblxuICAja2V5ZG93bkRheXMoa2V5OiBzdHJpbmcsIGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgbGV0IGRhdGUgPSB0aGlzLmRhdGVwaWNrZXIuYWN0aXZlRGF0ZS5nZXREYXRlKCk7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAvKiBzYW5pdHkgY2hlY2sgKi9cbiAgICBpZiAoa2V5ID09PSAnYXJyb3dsZWZ0Jykge1xuICAgICAgZGF0ZSA9IGRhdGUgLSAxO1xuICAgIH0gZWxzZSBpZiAoa2V5ID09PSAnYXJyb3d1cCcpIHtcbiAgICAgIGRhdGUgPSBkYXRlIC0gNztcbiAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ2Fycm93cmlnaHQnKSB7XG4gICAgICBkYXRlID0gZGF0ZSArIDE7XG4gICAgfSBlbHNlIGlmIChrZXkgPT09ICdhcnJvd2Rvd24nKSB7XG4gICAgICBkYXRlID0gZGF0ZSArIDc7XG4gICAgfSBlbHNlIGlmIChrZXkgPT09ICdwYWdldXAnIHx8IGtleSA9PT0gJ3BhZ2Vkb3duJykge1xuICAgICAgY29uc3QgbW9udGggPVxuICAgICAgICB0aGlzLmRhdGVwaWNrZXIuYWN0aXZlRGF0ZS5nZXRNb250aCgpICsgKGtleSA9PT0gJ3BhZ2V1cCcgPyAtMSA6IDEpO1xuICAgICAgdGhpcy5kYXRlcGlja2VyLmFjdGl2ZURhdGUuc2V0TW9udGgobW9udGgsIDEpO1xuICAgICAgZGF0ZSA9IE1hdGgubWluKFxuICAgICAgICB0aGlzLiNnZXREYXlzSW5Nb250aChcbiAgICAgICAgICB0aGlzLmRhdGVwaWNrZXIuYWN0aXZlRGF0ZS5nZXRGdWxsWWVhcigpLFxuICAgICAgICAgIHRoaXMuZGF0ZXBpY2tlci5hY3RpdmVEYXRlLmdldE1vbnRoKCksXG4gICAgICAgICksXG4gICAgICAgIGRhdGUsXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAoa2V5ID09PSAnaG9tZScpIHtcbiAgICAgIGRhdGUgPSAxO1xuICAgIH0gZWxzZSBpZiAoa2V5ID09PSAnZW5kJykge1xuICAgICAgZGF0ZSA9IHRoaXMuI2dldERheXNJbk1vbnRoKFxuICAgICAgICB0aGlzLmRhdGVwaWNrZXIuYWN0aXZlRGF0ZS5nZXRGdWxsWWVhcigpLFxuICAgICAgICB0aGlzLmRhdGVwaWNrZXIuYWN0aXZlRGF0ZS5nZXRNb250aCgpLFxuICAgICAgKTtcbiAgICB9XG4gICAgdGhpcy5kYXRlcGlja2VyLmFjdGl2ZURhdGUuc2V0RGF0ZShkYXRlKTtcbiAgICB0aGlzLmRhdGVwaWNrZXIuYW5ub3VuY2VEYXRlKFxuICAgICAgdGhpcy5kYXRlcGlja2VyLmFjdGl2ZURhdGUsXG4gICAgICB0aGlzLmRhdGVwaWNrZXIuZm9ybWF0RGF5TGFiZWwsXG4gICAgKTtcbiAgfVxuXG4gICNnZXREYXlzSW5Nb250aCh5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiBtb250aCA9PT0gMSAmJlxuICAgICAgeWVhciAlIDQgPT09IDAgJiZcbiAgICAgICh5ZWFyICUgNDAwID09PSAwIHx8IHllYXIgJSAxMDAgIT09IDApXG4gICAgICA/IDI5XG4gICAgICA6IHRoaXMuI2RheXNJbk1vbnRoW21vbnRoXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBsaWVzIGN1c3RvbSBkYXRlIHByb3BlcnRpZXMgdG8gdGhlIGV4aXN0aW5nIGRhdGVzIGRpc3BsYXllZCBpbiB0aGUgY2FsZW5kYXIuXG4gICAqL1xuICAjYXBwbHlDdXN0b21EYXRlcyhcbiAgICBjdXN0b21EYXRlczogU2t5RGF0ZXBpY2tlckN1c3RvbURhdGVbXSxcbiAgICBkYXRlUm93czogU2t5RGF5UGlja2VyQ29udGV4dFtdW10sXG4gICk6IHZvaWQge1xuICAgIGxldCBkYXRlOiBTa3lEYXlQaWNrZXJDb250ZXh0O1xuICAgIGxldCBuZXdEYXRlOiBTa3lEYXlQaWNrZXJDb250ZXh0O1xuICAgIGxldCBkYXRlSW5kZXg6IG51bWJlcjtcblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKGN1c3RvbURhdGVzICYmIGRhdGVSb3dzKSB7XG4gICAgICBjdXN0b21EYXRlcy5mb3JFYWNoKChjdXN0b21EYXRlKSA9PiB7XG4gICAgICAgIGRhdGVJbmRleCA9IC0xO1xuICAgICAgICBkYXRlUm93cy5mb3JFYWNoKChyb3cpID0+IHtcbiAgICAgICAgICBpZiAoZGF0ZUluZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgZGF0ZUluZGV4ID0gcm93LmZpbmRJbmRleCgoZCkgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4gZC5kYXRlLmdldFRpbWUoKSA9PT0gY3VzdG9tRGF0ZS5kYXRlLmdldFRpbWUoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKGRhdGVJbmRleCA+IC0xKSB7XG4gICAgICAgICAgICAgIGRhdGUgPSByb3dbZGF0ZUluZGV4XTtcbiAgICAgICAgICAgICAgLy8gUmVwbGFjZSB0aGUgZGF0ZSB3aXRoIGEgbmV3IGluc3RhbmNlIHNvIHRoZSBkaXNwbGF5IGdldHMgdXBkYXRlZC5cbiAgICAgICAgICAgICAgbmV3RGF0ZSA9IHtcbiAgICAgICAgICAgICAgICBjdXJyZW50OiBkYXRlLmN1cnJlbnQsXG4gICAgICAgICAgICAgICAgZGF0ZTogZGF0ZS5kYXRlLFxuICAgICAgICAgICAgICAgIGRpc2FibGVkOiAhIWRhdGUuZGlzYWJsZWQgfHwgISFjdXN0b21EYXRlLmRpc2FibGVkLFxuICAgICAgICAgICAgICAgIGtleURhdGU6ICEhY3VzdG9tRGF0ZS5rZXlEYXRlIHx8ICEhZGF0ZS5rZXlEYXRlLFxuICAgICAgICAgICAgICAgIGtleURhdGVUZXh0OiBjdXN0b21EYXRlLmtleURhdGVUZXh0IHx8IGRhdGUua2V5RGF0ZVRleHQsXG4gICAgICAgICAgICAgICAgbGFiZWw6IGRhdGUubGFiZWwsXG4gICAgICAgICAgICAgICAgc2Vjb25kYXJ5OiBkYXRlLnNlY29uZGFyeSxcbiAgICAgICAgICAgICAgICBzZWxlY3RlZDogZGF0ZS5zZWxlY3RlZCxcbiAgICAgICAgICAgICAgICB1aWQ6IGRhdGUudWlkLFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICByb3dbZGF0ZUluZGV4XSA9IG5ld0RhdGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gICNkYXRlUmFuZ2VSb3dzQXJlRXF1YWwoXG4gICAgcmFuZ2VBPzogU2t5RGF0ZVJhbmdlLFxuICAgIHJhbmdlQj86IFNreURhdGVSYW5nZSxcbiAgKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKCFyYW5nZUEgJiYgIXJhbmdlQikge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIGlmIChyYW5nZUEgJiYgcmFuZ2VCKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICB0aGlzLiNjb21wYXJlRGF5cyhyYW5nZUEuc3RhcnREYXRlLCByYW5nZUIuc3RhcnREYXRlKSA9PT0gMCAmJlxuICAgICAgICB0aGlzLiNjb21wYXJlRGF5cyhyYW5nZUEuZW5kRGF0ZSwgcmFuZ2VCLmVuZERhdGUpID09PSAwXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgI2dldERhdGVSYW5nZShyb3dzOiBTa3lEYXlQaWNrZXJDb250ZXh0W11bXSk6IFNreURhdGVSYW5nZSB8IHVuZGVmaW5lZCB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAocm93cyAmJiByb3dzLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN0YXJ0RGF0ZTogcm93c1swXVswXS5kYXRlLFxuICAgICAgICBlbmREYXRlOiByb3dzW3Jvd3MubGVuZ3RoIC0gMV1bcm93c1tyb3dzLmxlbmd0aCAtIDFdLmxlbmd0aCAtIDFdLmRhdGUsXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG4iLCI8dGFibGVcbiAgY2xhc3M9XCJza3ktZGF5cGlja2VyLXRhYmxlXCJcbiAgcm9sZT1cImdyaWRcIlxuICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiZGF0ZXBpY2tlci5kYXRlcGlja2VySWQgKyAnLXRpdGxlJ1wiXG4+XG4gIDx0aGVhZD5cbiAgICA8dHI+XG4gICAgICBAZm9yIChsYWJlbCBvZiBsYWJlbHM7IHRyYWNrIGxhYmVsLmZ1bGwpIHtcbiAgICAgICAgPHRoIHNjb3BlPVwiY29sXCIgY2xhc3M9XCJza3ktZGF0ZXBpY2tlci1jZW50ZXIgc2t5LWRhdGVwaWNrZXItd2Vla2RheXNcIj5cbiAgICAgICAgICA8IS0tIGRpc3BsYXk6IGlubGluZSAtLT5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3M9XCJza3ktZGF0ZXBpY2tlci13ZWVrZGF5LXRleHRcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJsYWJlbC5mdWxsXCJcbiAgICAgICAgICAgID57eyBsYWJlbC5hYmJyIH19PC9zcGFuXG4gICAgICAgICAgPlxuICAgICAgICA8L3RoPlxuICAgICAgfVxuICAgIDwvdHI+XG4gIDwvdGhlYWQ+XG4gIDx0Ym9keT5cbiAgICA8IS0tIFdhaXQgaW5kaWNhdG9yIGZvciBhc3luYyBjdXN0b20gZGF0ZSBzdHJlYW0gLS0+XG4gICAgPHNreS13YWl0IFtpc1dhaXRpbmddPVwiaXNXYWl0aW5nXCIgLz5cbiAgICBAZm9yIChyb3cgb2Ygcm93czsgdHJhY2sgJGluZGV4KSB7XG4gICAgICA8dHIgcm9sZT1cInJvd1wiPlxuICAgICAgICBAZm9yIChkYXRlIG9mIHJvdzsgdHJhY2sgZGF0ZS51aWQpIHtcbiAgICAgICAgICA8dGQgY2xhc3M9XCJza3ktZGF0ZXBpY2tlci1jZW50ZXJcIiByb2xlPVwiZ3JpZGNlbGxcIiBbaWRdPVwiZGF0ZS51aWRcIj5cbiAgICAgICAgICAgIDxza3ktZGF5cGlja2VyLWNlbGxcbiAgICAgICAgICAgICAgW2FjdGl2ZURhdGVIYXNDaGFuZ2VkXT1cImFjdGl2ZURhdGVIYXNDaGFuZ2VkXCJcbiAgICAgICAgICAgICAgW2RhdGVdPVwiZGF0ZVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvdGQ+XG4gICAgICAgIH1cbiAgICAgIDwvdHI+XG4gICAgfVxuICA8L3Rib2R5PlxuPC90YWJsZT5cbiJdfQ==","import { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { SkyDatepickerCalendarLabelPipe } from './datepicker-calendar-label.pipe';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"./datepicker-calendar-inner.component\";\nimport * as i2 from \"@angular/common\";\n/**\n * @internal\n */\nexport class SkyMonthPickerComponent {\n constructor(datepicker) {\n this.rows = [];\n this.title = '';\n this.datepicker = datepicker;\n }\n ngOnInit() {\n this.datepicker.stepMonth = {\n years: 1,\n };\n this.datepicker.setRefreshViewHandler(() => this.#refreshMonthView(), 'month');\n this.datepicker.setCompareHandler(this.#compareMonth, 'month');\n this.datepicker.refreshView();\n this.datepicker.setKeydownHandler((key, event) => {\n this.#keydownMonths(key, event);\n }, 'month');\n }\n #compareMonth(date1, date2) {\n const d1 = new Date(date1.getFullYear(), date1.getMonth());\n const d2 = new Date(date2.getFullYear(), date2.getMonth());\n return d1.getTime() - d2.getTime();\n }\n #refreshMonthView() {\n const months = new Array(12);\n const year = this.datepicker.activeDate.getFullYear();\n let date;\n for (let i = 0; i < 12; i++) {\n date = new Date(year, i, 1);\n date = this.datepicker.fixTimeZone(date);\n months[i] = this.datepicker.createDateObject(date, this.datepicker.formatMonth, false, this.datepicker.datepickerId + '-' + i);\n }\n this.rows = this.datepicker.createCalendarRows(months, this.datepicker.monthColLimit);\n return this.datepicker.dateFilter(this.datepicker.activeDate, this.datepicker.formatMonthTitle);\n }\n #keydownMonths(key, event) {\n let date = this.datepicker.activeDate.getMonth();\n /* istanbul ignore else */\n /* sanity check */\n if (key === 'arrowleft') {\n date = date - 1;\n }\n else if (key === 'arrowup') {\n date = date - this.datepicker.monthColLimit;\n }\n else if (key === 'arrowright') {\n date = date + 1;\n }\n else if (key === 'arrowdown') {\n date = date + this.datepicker.monthColLimit;\n }\n else if (key === 'pageup' || key === 'pagedown') {\n const year = this.datepicker.activeDate.getFullYear() + (key === 'pageup' ? -1 : 1);\n this.datepicker.activeDate.setFullYear(year);\n }\n else if (key === 'home') {\n date = 0;\n }\n else if (key === 'end') {\n date = 11;\n }\n this.datepicker.activeDate.setMonth(date);\n this.datepicker.announceDate(this.datepicker.activeDate, this.datepicker.formatMonthLabel);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyMonthPickerComponent, deps: [{ token: i1.SkyDatepickerCalendarInnerComponent }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.5\", type: SkyMonthPickerComponent, isStandalone: true, selector: \"sky-monthpicker\", ngImport: i0, template: \"<table role=\\\"grid\\\">\\n <tbody>\\n @for (row of rows; track $index) {\\n <tr>\\n @for (date of row; track date.uid) {\\n <td class=\\\"text-center\\\" role=\\\"gridcell\\\" [id]=\\\"date.uid\\\">\\n <button\\n type=\\\"button\\\"\\n class=\\\"sky-btn sky-btn-default sky-datepicker-btn-date\\\"\\n tabindex=\\\"-1\\\"\\n [ngClass]=\\\"{\\n 'sky-datepicker-btn-selected': date.selected,\\n 'sky-btn-disabled': date.disabled,\\n 'sky-btn-active': datepicker.isActive(date)\\n }\\\"\\n [attr.aria-label]=\\\"\\n date.date\\n | skyDatepickerCalendarLabel: datepicker.formatMonthLabel\\n \\\"\\n [disabled]=\\\"date.disabled\\\"\\n (click)=\\\"datepicker.selectCalendar($event, date.date)\\\"\\n >\\n <span [ngClass]=\\\"{ 'sky-datepicker-current': date.current }\\\">{{\\n date.label\\n }}</span>\\n </button>\\n </td>\\n }\\n </tr>\\n }\\n </tbody>\\n</table>\\n\", dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"pipe\", type: SkyDatepickerCalendarLabelPipe, name: \"skyDatepickerCalendarLabel\" }] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyMonthPickerComponent, decorators: [{\n type: Component,\n args: [{ imports: [CommonModule, SkyDatepickerCalendarLabelPipe], selector: 'sky-monthpicker', template: \"<table role=\\\"grid\\\">\\n <tbody>\\n @for (row of rows; track $index) {\\n <tr>\\n @for (date of row; track date.uid) {\\n <td class=\\\"text-center\\\" role=\\\"gridcell\\\" [id]=\\\"date.uid\\\">\\n <button\\n type=\\\"button\\\"\\n class=\\\"sky-btn sky-btn-default sky-datepicker-btn-date\\\"\\n tabindex=\\\"-1\\\"\\n [ngClass]=\\\"{\\n 'sky-datepicker-btn-selected': date.selected,\\n 'sky-btn-disabled': date.disabled,\\n 'sky-btn-active': datepicker.isActive(date)\\n }\\\"\\n [attr.aria-label]=\\\"\\n date.date\\n | skyDatepickerCalendarLabel: datepicker.formatMonthLabel\\n \\\"\\n [disabled]=\\\"date.disabled\\\"\\n (click)=\\\"datepicker.selectCalendar($event, date.date)\\\"\\n >\\n <span [ngClass]=\\\"{ 'sky-datepicker-current': date.current }\\\">{{\\n date.label\\n }}</span>\\n </button>\\n </td>\\n }\\n </tr>\\n }\\n </tbody>\\n</table>\\n\" }]\n }], ctorParameters: () => [{ type: i1.SkyDatepickerCalendarInnerComponent }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9udGhwaWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2RhdGV0aW1lL3NyYy9saWIvbW9kdWxlcy9kYXRlcGlja2VyL2NhbGVuZGFyL21vbnRocGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9kYXRldGltZS9zcmMvbGliL21vZHVsZXMvZGF0ZXBpY2tlci9jYWxlbmRhci9tb250aHBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUdsRCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7OztBQUdsRjs7R0FFRztBQU1ILE1BQU0sT0FBTyx1QkFBdUI7SUFPbEMsWUFBWSxVQUErQztRQUpwRCxTQUFJLEdBQTRCLEVBQUUsQ0FBQztRQUVuQyxVQUFLLEdBQUcsRUFBRSxDQUFDO1FBR2hCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO0lBQy9CLENBQUM7SUFFTSxRQUFRO1FBQ2IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLEdBQUc7WUFDMUIsS0FBSyxFQUFFLENBQUM7U0FDVCxDQUFDO1FBRUYsSUFBSSxDQUFDLFVBQVUsQ0FBQyxxQkFBcUIsQ0FDbkMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEVBQzlCLE9BQU8sQ0FDUixDQUFDO1FBRUYsSUFBSSxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRS9ELElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUM7UUFF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VyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDekUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9DLENBQUM7YUFBTSxJQUFJLEdBQUcsS0FBSyxNQUFNLEVBQUUsQ0FBQztZQUMxQixJQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQ1gsQ0FBQzthQUFNLElBQUksR0FBRyxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQ3pCLElBQUksR0FBRyxFQUFFLENBQUM7UUFDWixDQUFDO1FBQ0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUMxQixJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFDMUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FDakMsQ0FBQztJQUNKLENBQUM7OEdBMUZVLHVCQUF1QjtrR0FBdkIsdUJBQXVCLDJFQ2ZwQyxnbENBZ0NBLDJDRHJCWSxZQUFZLHdIQUFFLDhCQUE4Qjs7MkZBSTNDLHVCQUF1QjtrQkFMbkMsU0FBUzs4QkFDQyxDQUFDLFlBQVksRUFBRSw4QkFBOEIsQ0FBQyxZQUM3QyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgU2t5RGF0ZXBpY2tlckNhbGVuZGFySW5uZXJDb21wb25lbnQgfSBmcm9tICcuL2RhdGVwaWNrZXItY2FsZW5kYXItaW5uZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFNreURhdGVwaWNrZXJDYWxlbmRhckxhYmVsUGlwZSB9IGZyb20gJy4vZGF0ZXBpY2tlci1jYWxlbmRhci1sYWJlbC5waXBlJztcbmltcG9ydCB7IFNreURheVBpY2tlckNvbnRleHQgfSBmcm9tICcuL2RheXBpY2tlci1jb250ZXh0JztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuQENvbXBvbmVudCh7XG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFNreURhdGVwaWNrZXJDYWxlbmRhckxhYmVsUGlwZV0sXG4gIHNlbGVjdG9yOiAnc2t5LW1vbnRocGlja2VyJyxcbiAgdGVtcGxhdGVVcmw6ICdtb250aHBpY2tlci5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIFNreU1vbnRoUGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHVibGljIGRhdGVwaWNrZXI6IFNreURhdGVwaWNrZXJDYWxlbmRhcklubmVyQ29tcG9uZW50O1xuXG4gIHB1YmxpYyByb3dzOiBTa3lEYXlQaWNrZXJDb250ZXh0W11bXSA9IFtdO1xuXG4gIHB1YmxpYyB0aXRsZSA9ICcnO1xuXG4gIGNvbnN0cnVjdG9yKGRhdGVwaWNrZXI6IFNreURhdGVwaWNrZXJDYWxlbmRhcklubmVyQ29tcG9uZW50KSB7XG4gICAgdGhpcy5kYXRlcGlja2VyID0gZGF0ZXBpY2tlcjtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmRhdGVwaWNrZXIuc3RlcE1vbnRoID0ge1xuICAgICAgeWVhcnM6IDEsXG4gICAgfTtcblxuICAgIHRoaXMuZGF0ZXBpY2tlci5zZXRSZWZyZXNoVmlld0hhbmRsZXIoXG4gICAgICAoKSA9PiB0aGlzLiNyZWZyZXNoTW9udGhWaWV3KCksXG4gICAgICAnbW9udGgnLFxuICAgICk7XG5cbiAgICB0aGlzLmRhdGVwaWNrZXIuc2V0Q29tcGFyZUhhbmRsZXIodGhpcy4jY29tcGFyZU1vbnRoLCAnbW9udGgnKTtcblxuICAgIHRoaXMuZGF0ZXBpY2tlci5yZWZyZXNoVmlldygpO1xuXG4gICAgdGhpcy5kYXRlcGlja2VyLnNldEtleWRvd25IYW5kbGVyKChrZXk6IHN0cmluZywgZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgIHRoaXMuI2tleWRvd25Nb250aHMoa2V5LCBldmVudCk7XG4gICAgfSwgJ21vbnRoJyk7XG4gIH1cblxuICAjY29tcGFyZU1vbnRoKGRhdGUxOiBEYXRlLCBkYXRlMjogRGF0ZSk6IG51bWJlciB7XG4gICAgY29uc3QgZDEgPSBuZXcgRGF0ZShkYXRlMS5nZXRGdWxsWWVhcigpLCBkYXRlMS5nZXRNb250aCgpKTtcbiAgICBjb25zdCBkMiA9IG5ldyBEYXRlKGRhdGUyLmdldEZ1bGxZZWFyKCksIGRhdGUyLmdldE1vbnRoKCkpO1xuICAgIHJldHVybiBkMS5nZXRUaW1lKCkgLSBkMi5nZXRUaW1lKCk7XG4gIH1cblxuICAjcmVmcmVzaE1vbnRoVmlldygpOiBzdHJpbmcge1xuICAgIGNvbnN0IG1vbnRocyA9IG5ldyBBcnJheTxTa3lEYXlQaWNrZXJDb250ZXh0PigxMik7XG4gICAgY29uc3QgeWVhcjogbnVtYmVyID0gdGhpcy5kYXRlcGlja2VyLmFjdGl2ZURhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICBsZXQgZGF0ZTogRGF0ZTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTI7IGkrKykge1xuICAgICAgZGF0ZSA9IG5ldyBEYXRlKHllYXIsIGksIDEpO1xuICAgICAgZGF0ZSA9IHRoaXMuZGF0ZXBpY2tlci5maXhUaW1lWm9uZShkYXRlKTtcbiAgICAgIG1vbnRoc1tpXSA9IHRoaXMuZGF0ZXBpY2tlci5jcmVhdGVEYXRlT2JqZWN0KFxuICAgICAgICBkYXRlLFxuICAgICAgICB0aGlzLmRhdGVwaWNrZXIuZm9ybWF0TW9udGgsXG4gICAgICAgIGZhbHNlLFxuICAgICAgICB0aGlzLmRhdGVwaWNrZXIuZGF0ZXBpY2tlcklkICsgJy0nICsgaSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5yb3dzID0gdGhpcy5kYXRlcGlja2VyLmNyZWF0ZUNhbGVuZGFyUm93cyhcbiAgICAgIG1vbnRocyxcbiAgICAgIHRoaXMuZGF0ZXBpY2tlci5tb250aENvbExpbWl0LFxuICAgICk7XG5cbiAgICByZXR1cm4gdGhpcy5kYXRlcGlja2VyLmRhdGVGaWx0ZXIoXG4gICAgICB0aGlzLmRhdGVwaWNrZXIuYWN0aXZlRGF0ZSxcbiAgICAgIHRoaXMuZGF0ZXBpY2tlci5mb3JtYXRNb250aFRpdGxlLFxuICAgICk7XG4gIH1cblxuICAja2V5ZG93bk1vbnRocyhrZXk6IHN0cmluZywgZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBsZXQgZGF0ZSA9IHRoaXMuZGF0ZXBpY2tlci5hY3RpdmVEYXRlLmdldE1vbnRoKCk7XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIC8qIHNhbml0eSBjaGVjayAqL1xuICAgIGlmIChrZXkgPT09ICdhcnJvd2xlZnQnKSB7XG4gICAgICBkYXRlID0gZGF0ZSAtIDE7XG4gICAgfSBlbHNlIGlmIChrZXkgPT09ICdhcnJvd3VwJykge1xuICAgICAgZGF0ZSA9IGRhdGUgLSB0aGlzLmRhdGVwaWNrZXIubW9udGhDb2xMaW1pdDtcbiAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ2Fycm93cmlnaHQnKSB7XG4gICAgICBkYXRlID0gZGF0ZSArIDE7XG4gICAgfSBlbHNlIGlmIChrZXkgPT09ICdhcnJvd2Rvd24nKSB7XG4gICAgICBkYXRlID0gZGF0ZSArIHRoaXMuZGF0ZXBpY2tlci5tb250aENvbExpbWl0O1xuICAgIH0gZWxzZSBpZiAoa2V5ID09PSAncGFnZXVwJyB8fCBrZXkgPT09ICdwYWdlZG93bicpIHtcbiAgICAgIGNvbnN0IHllYXIgPVxuICAgICAgICB0aGlzLmRhdGVwaWNrZXIuYWN0aXZlRGF0ZS5nZXRGdWxsWWVhcigpICsgKGtleSA9PT0gJ3BhZ2V1cCcgPyAtMSA6IDEpO1xuICAgICAgdGhpcy5kYXRlcGlja2VyLmFjdGl2ZURhdGUuc2V0RnVsbFllYXIoeWVhcik7XG4gICAgfSBlbHNlIGlmIChrZXkgPT09ICdob21lJykge1xuICAgICAgZGF0ZSA9IDA7XG4gICAgfSBlbHNlIGlmIChrZXkgPT09ICdlbmQnKSB7XG4gICAgICBkYXRlID0gMTE7XG4gICAgfVxuICAgIHRoaXMuZGF0ZXBpY2tlci5hY3RpdmVEYXRlLnNldE1vbnRoKGRhdGUpO1xuICAgIHRoaXMuZGF0ZXBpY2tlci5hbm5vdW5jZURhdGUoXG4gICAgICB0aGlzLmRhdGVwaWNrZXIuYWN0aXZlRGF0ZSxcbiAgICAgIHRoaXMuZGF0ZXBpY2tlci5mb3JtYXRNb250aExhYmVsLFxuICAgICk7XG4gIH1cbn1cbiIsIjx0YWJsZSByb2xlPVwiZ3JpZFwiPlxuICA8dGJvZHk+XG4gICAgQGZvciAocm93IG9mIHJvd3M7IHRyYWNrICRpbmRleCkge1xuICAgICAgPHRyPlxuICAgICAgICBAZm9yIChkYXRlIG9mIHJvdzsgdHJhY2sgZGF0ZS51aWQpIHtcbiAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiIHJvbGU9XCJncmlkY2VsbFwiIFtpZF09XCJkYXRlLnVpZFwiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJza3ktYnRuIHNreS1idG4tZGVmYXVsdCBza3ktZGF0ZXBpY2tlci1idG4tZGF0ZVwiXG4gICAgICAgICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgJ3NreS1kYXRlcGlja2VyLWJ0bi1zZWxlY3RlZCc6IGRhdGUuc2VsZWN0ZWQsXG4gICAgICAgICAgICAgICAgJ3NreS1idG4tZGlzYWJsZWQnOiBkYXRlLmRpc2FibGVkLFxuICAgICAgICAgICAgICAgICdza3ktYnRuLWFjdGl2ZSc6IGRhdGVwaWNrZXIuaXNBY3RpdmUoZGF0ZSlcbiAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICAgICAgICAgZGF0ZS5kYXRlXG4gICAgICAgICAgICAgICAgICB8IHNreURhdGVwaWNrZXJDYWxlbmRhckxhYmVsOiBkYXRlcGlja2VyLmZvcm1hdE1vbnRoTGFiZWxcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRhdGUuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiZGF0ZXBpY2tlci5zZWxlY3RDYWxlbmRhcigkZXZlbnQsIGRhdGUuZGF0ZSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhbiBbbmdDbGFzc109XCJ7ICdza3ktZGF0ZXBpY2tlci1jdXJyZW50JzogZGF0ZS5jdXJyZW50IH1cIj57e1xuICAgICAgICAgICAgICAgIGRhdGUubGFiZWxcbiAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICB9XG4gICAgICA8L3RyPlxuICAgIH1cbiAgPC90Ym9keT5cbjwvdGFibGU+XG4iXX0=","import { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { SkyDatepickerCalendarLabelPipe } from './datepicker-calendar-label.pipe';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"./datepicker-calendar-inner.component\";\nimport * as i2 from \"@angular/common\";\n/**\n * @internal\n */\nexport class SkyYearPickerComponent {\n constructor(datepicker) {\n this.rows = [];\n this.title = '';\n this.datepicker = datepicker;\n }\n ngOnInit() {\n this.datepicker.stepYear = { years: this.datepicker.yearRange };\n this.datepicker.setRefreshViewHandler(() => this.#refreshYearView(), 'year');\n this.datepicker.setCompareHandler(this.#compareYears, 'year');\n this.datepicker.setKeydownHandler((key, event) => {\n this.#keydownYears(key, event);\n }, 'year');\n this.datepicker.refreshView();\n }\n getStartingYear(year) {\n return (Math.floor((year - 1) / this.datepicker.yearRange) *\n this.datepicker.yearRange +\n 1);\n }\n #compareYears(date1, date2) {\n return date1.getFullYear() - date2.getFullYear();\n }\n #refreshYearView() {\n const years = new Array(this.datepicker.yearRange);\n let date;\n const start = this.getStartingYear(this.datepicker.activeDate.getFullYear());\n for (let i = 0; i < this.datepicker.yearRange; i++) {\n date = new Date(this.datepicker.activeDate);\n date.setFullYear(start + i, 0, 1);\n years[i] = this.datepicker.createDateObject(date, this.datepicker.formatYear, false, this.datepicker.datepickerId + '-' + i);\n }\n const newTitle = [\n years[0].label,\n years[this.datepicker.yearRange - 1].label,\n ].join(' - ');\n this.rows = this.datepicker.createCalendarRows(years, this.datepicker.yearColLimit);\n return newTitle;\n }\n #keydownYears(key, event) {\n let date = this.datepicker.activeDate.getFullYear();\n /* istanbul ignore else */\n /* sanity check */\n if (key === 'arrowleft') {\n date = date - 1;\n }\n else if (key === 'arrowup') {\n date = date - this.datepicker.yearColLimit;\n }\n else if (key === 'arrowright') {\n date = date + 1;\n }\n else if (key === 'arrowdown') {\n date = date + this.datepicker.yearColLimit;\n }\n else if (key === 'pageup' || key === 'pagedown') {\n date += (key === 'pageup' ? -1 : 1) * this.datepicker.yearRange;\n }\n else if (key === 'home') {\n date = this.getStartingYear(this.datepicker.activeDate.getFullYear());\n }\n else if (key === 'end') {\n date =\n this.getStartingYear(this.datepicker.activeDate.getFullYear()) +\n this.datepicker.yearRange -\n 1;\n }\n this.datepicker.activeDate.setFullYear(date);\n this.datepicker.announceDate(this.datepicker.activeDate, this.datepicker.formatYearLabel);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyYearPickerComponent, deps: [{ token: i1.SkyDatepickerCalendarInnerComponent }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.5\", type: SkyYearPickerComponent, isStandalone: true, selector: \"sky-yearpicker\", ngImport: i0, template: \"<table role=\\\"grid\\\">\\n <tbody>\\n @for (row of rows; track $index) {\\n <tr>\\n @for (date of row; track date.uid) {\\n <td class=\\\"sky-datepicker-row\\\" role=\\\"gridcell\\\">\\n <button\\n type=\\\"button\\\"\\n class=\\\"sky-btn sky-btn-default sky-datepicker-btn-date\\\"\\n tabindex=\\\"-1\\\"\\n [ngClass]=\\\"{\\n 'sky-datepicker-btn-selected': date.selected,\\n 'sky-btn-disabled': date.disabled,\\n 'sky-btn-active': datepicker.isActive(date)\\n }\\\"\\n [attr.aria-label]=\\\"\\n date.date\\n | skyDatepickerCalendarLabel: datepicker.formatYearLabel\\n \\\"\\n [disabled]=\\\"date.disabled\\\"\\n (click)=\\\"datepicker.selectCalendar($event, date.date)\\\"\\n >\\n <span [ngClass]=\\\"{ 'sky-datepicker-current': date.current }\\\">{{\\n date.label\\n }}</span>\\n </button>\\n </td>\\n }\\n </tr>\\n }\\n </tbody>\\n</table>\\n\", dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"pipe\", type: SkyDatepickerCalendarLabelPipe, name: \"skyDatepickerCalendarLabel\" }] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyYearPickerComponent, decorators: [{\n type: Component,\n args: [{ imports: [CommonModule, SkyDatepickerCalendarLabelPipe], selector: 'sky-yearpicker', template: \"<table role=\\\"grid\\\">\\n <tbody>\\n @for (row of rows; track $index) {\\n <tr>\\n @for (date of row; track date.uid) {\\n <td class=\\\"sky-datepicker-row\\\" role=\\\"gridcell\\\">\\n <button\\n type=\\\"button\\\"\\n class=\\\"sky-btn sky-btn-default sky-datepicker-btn-date\\\"\\n tabindex=\\\"-1\\\"\\n [ngClass]=\\\"{\\n 'sky-datepicker-btn-selected': date.selected,\\n 'sky-btn-disabled': date.disabled,\\n 'sky-btn-active': datepicker.isActive(date)\\n }\\\"\\n [attr.aria-label]=\\\"\\n date.date\\n | skyDatepickerCalendarLabel: datepicker.formatYearLabel\\n \\\"\\n [disabled]=\\\"date.disabled\\\"\\n (click)=\\\"datepicker.selectCalendar($event, date.date)\\\"\\n >\\n <span [ngClass]=\\\"{ 'sky-datepicker-current': date.current }\\\">{{\\n date.label\\n }}</span>\\n </button>\\n </td>\\n }\\n </tr>\\n }\\n </tbody>\\n</table>\\n\" }]\n }], ctorParameters: () => [{ type: i1.SkyDatepickerCalendarInnerComponent }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieWVhcnBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL2RhdGVwaWNrZXIvY2FsZW5kYXIveWVhcnBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL2RhdGVwaWNrZXIvY2FsZW5kYXIveWVhcnBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUdsRCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7OztBQUdsRjs7R0FFRztBQU1ILE1BQU0sT0FBTyxzQkFBc0I7SUFPakMsWUFBWSxVQUErQztRQUpwRCxTQUFJLEdBQTRCLEVBQUUsQ0FBQztRQUVuQyxVQUFLLEdBQUcsRUFBRSxDQUFDO1FBR2hCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO0lBQy9CLENBQUM7SUFFTSxRQUFRO1FBQ2IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUVoRSxJQUFJLENBQUMsVUFBVSxDQUFDLHFCQUFxQixDQUNuQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsRUFDN0IsTUFBTSxDQUNQLENBQUM7UUFFRixJQUFJLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFOUQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxp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IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTa3lEYXRlcGlja2VyQ2FsZW5kYXJJbm5lckNvbXBvbmVudCB9IGZyb20gJy4vZGF0ZXBpY2tlci1jYWxlbmRhci1pbm5lci5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5RGF0ZXBpY2tlckNhbGVuZGFyTGFiZWxQaXBlIH0gZnJvbSAnLi9kYXRlcGlja2VyLWNhbGVuZGFyLWxhYmVsLnBpcGUnO1xuaW1wb3J0IHsgU2t5RGF5UGlja2VyQ29udGV4dCB9IGZyb20gJy4vZGF5cGlja2VyLWNvbnRleHQnO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5AQ29tcG9uZW50KHtcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgU2t5RGF0ZXBpY2tlckNhbGVuZGFyTGFiZWxQaXBlXSxcbiAgc2VsZWN0b3I6ICdza3kteWVhcnBpY2tlcicsXG4gIHRlbXBsYXRlVXJsOiAneWVhcnBpY2tlci5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIFNreVllYXJQaWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwdWJsaWMgZGF0ZXBpY2tlcjogU2t5RGF0ZXBpY2tlckNhbGVuZGFySW5uZXJDb21wb25lbnQ7XG5cbiAgcHVibGljIHJvd3M6IFNreURheVBpY2tlckNvbnRleHRbXVtdID0gW107XG5cbiAgcHVibGljIHRpdGxlID0gJyc7XG5cbiAgY29uc3RydWN0b3IoZGF0ZXBpY2tlcjogU2t5RGF0ZXBpY2tlckNhbGVuZGFySW5uZXJDb21wb25lbnQpIHtcbiAgICB0aGlzLmRhdGVwaWNrZXIgPSBkYXRlcGlja2VyO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZGF0ZXBpY2tlci5zdGVwWWVhciA9IHsgeWVhcnM6IHRoaXMuZGF0ZXBpY2tlci55ZWFyUmFuZ2UgfTtcblxuICAgIHRoaXMuZGF0ZXBpY2tlci5zZXRSZWZyZXNoVmlld0hhbmRsZXIoXG4gICAgICAoKSA9PiB0aGlzLiNyZWZyZXNoWWVhclZpZXcoKSxcbiAgICAgICd5ZWFyJyxcbiAgICApO1xuXG4gICAgdGhpcy5kYXRlcGlja2VyLnNldENvbXBhcmVIYW5kbGVyKHRoaXMuI2NvbXBhcmVZZWFycywgJ3llYXInKTtcblxuICAgIHRoaXMuZGF0ZXBpY2tlci5zZXRLZXlkb3duSGFuZGxlcigoa2V5OiBzdHJpbmcsIGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICB0aGlzLiNrZXlkb3duWWVhcnMoa2V5LCBldmVudCk7XG4gICAgfSwgJ3llYXInKTtcblxuICAgIHRoaXMuZGF0ZXBpY2tlci5yZWZyZXNoVmlldygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldFN0YXJ0aW5nWWVhcih5ZWFyOiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiAoXG4gICAgICBNYXRoLmZsb29yKCh5ZWFyIC0gMSkgLyB0aGlzLmRhdGVwaWNrZXIueWVhclJhbmdlKSAqXG4gICAgICAgIHRoaXMuZGF0ZXBpY2tlci55ZWFyUmFuZ2UgK1xuICAgICAgMVxuICAgICk7XG4gIH1cblxuICAjY29tcGFyZVllYXJzKGRhdGUxOiBEYXRlLCBkYXRlMjogRGF0ZSk6IG51bWJlciB7XG4gICAgcmV0dXJuIGRhdGUxLmdldEZ1bGxZZWFyKCkgLSBkYXRlMi5nZXRGdWxsWWVhcigpO1xuICB9XG5cbiAgI3JlZnJlc2hZZWFyVmlldygpOiBzdHJpbmcge1xuICAgIGNvbnN0IHllYXJzID0gbmV3IEFycmF5PFNreURheVBpY2tlckNvbnRleHQ+KHRoaXMuZGF0ZXBpY2tlci55ZWFyUmFuZ2UpO1xuICAgIGxldCBkYXRlOiBEYXRlO1xuICAgIGNvbnN0IHN0YXJ0ID0gdGhpcy5nZXRTdGFydGluZ1llYXIoXG4gICAgICB0aGlzLmRhdGVwaWNrZXIuYWN0aXZlRGF0ZS5nZXRGdWxsWWVhcigpLFxuICAgICk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZGF0ZXBpY2tlci55ZWFyUmFuZ2U7IGkrKykge1xuICAgICAgZGF0ZSA9IG5ldyBEYXRlKHRoaXMuZGF0ZXBpY2tlci5hY3RpdmVEYXRlKTtcbiAgICAgIGRhdGUuc2V0RnVsbFllYXIoc3RhcnQgKyBpLCAwLCAxKTtcblxuICAgICAgeWVhcnNbaV0gPSB0aGlzLmRhdGVwaWNrZXIuY3JlYXRlRGF0ZU9iamVjdChcbiAgICAgICAgZGF0ZSxcbiAgICAgICAgdGhpcy5kYXRlcGlja2VyLmZvcm1hdFllYXIsXG4gICAgICAgIGZhbHNlLFxuICAgICAgICB0aGlzLmRhdGVwaWNrZXIuZGF0ZXBpY2tlcklkICsgJy0nICsgaSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgbmV3VGl0bGUgPSBbXG4gICAgICB5ZWFyc1swXS5sYWJlbCxcbiAgICAgIHllYXJzW3RoaXMuZGF0ZXBpY2tlci55ZWFyUmFuZ2UgLSAxXS5sYWJlbCxcbiAgICBdLmpvaW4oJyAtICcpO1xuICAgIHRoaXMucm93cyA9IHRoaXMuZGF0ZXBpY2tlci5jcmVhdGVDYWxlbmRhclJvd3MoXG4gICAgICB5ZWFycyxcbiAgICAgIHRoaXMuZGF0ZXBpY2tlci55ZWFyQ29sTGltaXQsXG4gICAgKTtcblxuICAgIHJldHVybiBuZXdUaXRsZTtcbiAgfVxuXG4gICNrZXlkb3duWWVhcnMoa2V5OiBzdHJpbmcsIGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgbGV0IGRhdGUgPSB0aGlzLmRhdGVwaWNrZXIuYWN0aXZlRGF0ZS5nZXRGdWxsWWVhcigpO1xuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAvKiBzYW5pdHkgY2hlY2sgKi9cbiAgICBpZiAoa2V5ID09PSAnYXJyb3dsZWZ0Jykge1xuICAgICAgZGF0ZSA9IGRhdGUgLSAxO1xuICAgIH0gZWxzZSBpZiAoa2V5ID09PSAnYXJyb3d1cCcpIHtcbiAgICAgIGRhdGUgPSBkYXRlIC0gdGhpcy5kYXRlcGlja2VyLnllYXJDb2xMaW1pdDtcbiAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ2Fycm93cmlnaHQnKSB7XG4gICAgICBkYXRlID0gZGF0ZSArIDE7XG4gICAgfSBlbHNlIGlmIChrZXkgPT09ICdhcnJvd2Rvd24nKSB7XG4gICAgICBkYXRlID0gZGF0ZSArIHRoaXMuZGF0ZXBpY2tlci55ZWFyQ29sTGltaXQ7XG4gICAgfSBlbHNlIGlmIChrZXkgPT09ICdwYWdldXAnIHx8IGtleSA9PT0gJ3BhZ2Vkb3duJykge1xuICAgICAgZGF0ZSArPSAoa2V5ID09PSAncGFnZXVwJyA/IC0xIDogMSkgKiB0aGlzLmRhdGVwaWNrZXIueWVhclJhbmdlO1xuICAgIH0gZWxzZSBpZiAoa2V5ID09PSAnaG9tZScpIHtcbiAgICAgIGRhdGUgPSB0aGlzLmdldFN0YXJ0aW5nWWVhcih0aGlzLmRhdGVwaWNrZXIuYWN0aXZlRGF0ZS5nZXRGdWxsWWVhcigpKTtcbiAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ2VuZCcpIHtcbiAgICAgIGRhdGUgPVxuICAgICAgICB0aGlzLmdldFN0YXJ0aW5nWWVhcih0aGlzLmRhdGVwaWNrZXIuYWN0aXZlRGF0ZS5nZXRGdWxsWWVhcigpKSArXG4gICAgICAgIHRoaXMuZGF0ZXBpY2tlci55ZWFyUmFuZ2UgLVxuICAgICAgICAxO1xuICAgIH1cbiAgICB0aGlzLmRhdGVwaWNrZXIuYWN0aXZlRGF0ZS5zZXRGdWxsWWVhcihkYXRlKTtcbiAgICB0aGlzLmRhdGVwaWNrZXIuYW5ub3VuY2VEYXRlKFxuICAgICAgdGhpcy5kYXRlcGlja2VyLmFjdGl2ZURhdGUsXG4gICAgICB0aGlzLmRhdGVwaWNrZXIuZm9ybWF0WWVhckxhYmVsLFxuICAgICk7XG4gIH1cbn1cbiIsIjx0YWJsZSByb2xlPVwiZ3JpZFwiPlxuICA8dGJvZHk+XG4gICAgQGZvciAocm93IG9mIHJvd3M7IHRyYWNrICRpbmRleCkge1xuICAgICAgPHRyPlxuICAgICAgICBAZm9yIChkYXRlIG9mIHJvdzsgdHJhY2sgZGF0ZS51aWQpIHtcbiAgICAgICAgICA8dGQgY2xhc3M9XCJza3ktZGF0ZXBpY2tlci1yb3dcIiByb2xlPVwiZ3JpZGNlbGxcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGNsYXNzPVwic2t5LWJ0biBza3ktYnRuLWRlZmF1bHQgc2t5LWRhdGVwaWNrZXItYnRuLWRhdGVcIlxuICAgICAgICAgICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICdza3ktZGF0ZXBpY2tlci1idG4tc2VsZWN0ZWQnOiBkYXRlLnNlbGVjdGVkLFxuICAgICAgICAgICAgICAgICdza3ktYnRuLWRpc2FibGVkJzogZGF0ZS5kaXNhYmxlZCxcbiAgICAgICAgICAgICAgICAnc2t5LWJ0bi1hY3RpdmUnOiBkYXRlcGlja2VyLmlzQWN0aXZlKGRhdGUpXG4gICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICAgICAgICAgIGRhdGUuZGF0ZVxuICAgICAgICAgICAgICAgICAgfCBza3lEYXRlcGlja2VyQ2FsZW5kYXJMYWJlbDogZGF0ZXBpY2tlci5mb3JtYXRZZWFyTGFiZWxcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRhdGUuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiZGF0ZXBpY2tlci5zZWxlY3RDYWxlbmRhcigkZXZlbnQsIGRhdGUuZGF0ZSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhbiBbbmdDbGFzc109XCJ7ICdza3ktZGF0ZXBpY2tlci1jdXJyZW50JzogZGF0ZS5jdXJyZW50IH1cIj57e1xuICAgICAgICAgICAgICAgIGRhdGUubGFiZWxcbiAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICB9XG4gICAgICA8L3RyPlxuICAgIH1cbiAgPC90Ym9keT5cbjwvdGFibGU+XG4iXX0=","import { Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class SkyDatepickerConfigService {\n constructor() {\n /**\n * The starting day of the week in the calendar,\n * where `0` sets the starting day to Sunday.\n * @default 0\n */\n this.startingDay = 0;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDatepickerConfigService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDatepickerConfigService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDatepickerConfigService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci1jb25maWcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9kYXRldGltZS9zcmMvbGliL21vZHVsZXMvZGF0ZXBpY2tlci9kYXRlcGlja2VyLWNvbmZpZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBSzNDLE1BQU0sT0FBTywwQkFBMEI7SUFIdkM7UUEwQkU7Ozs7V0FJRztRQUNJLGdCQUFXLEdBQUcsQ0FBQyxDQUFDO0tBQ3hCOzhHQTdCWSwwQkFBMEI7a0hBQTFCLDBCQUEwQixjQUZ6QixNQUFNOzsyRkFFUCwwQkFBMEI7a0JBSHRDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgU2t5RGF0ZXBpY2tlckNvbmZpZ1NlcnZpY2Uge1xuICAvKipcbiAgICogVGhlIGRhdGUgZm9ybWF0IGZvciB0aGUgaW5wdXQuXG4gICAqIEBkZWZhdWx0IFwiTU0vREQvWVlZWVwiXG4gICAqL1xuICBwdWJsaWMgZGF0ZUZvcm1hdDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgbGF0ZXN0IHNlbGVjdGFibGUgZGF0ZSB0aGF0IGlzIGF2YWlsYWJsZSBpbiB0aGUgY2FsZW5kYXIuXG4gICAqL1xuICBwdWJsaWMgbWF4RGF0ZTogRGF0ZSB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIGVhcmxpZXN0IHNlbGVjdGFibGUgZGF0ZSB0aGF0IGlzIGF2YWlsYWJsZSBpbiB0aGUgY2FsZW5kYXIuXG4gICAqL1xuICBwdWJsaWMgbWluRGF0ZTogRGF0ZSB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIGRhdGUgdG8gb3BlbiB0aGUgY2FsZW5kYXIgdG8gaW5pdGlhbGx5LlxuICAgKiBAZGVmYXVsdCB0aGUgY3VycmVudCBkYXRlXG4gICAqL1xuICBwdWJsaWMgc3RhcnRBdERhdGU6IERhdGUgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBzdGFydGluZyBkYXkgb2YgdGhlIHdlZWsgaW4gdGhlIGNhbGVuZGFyLFxuICAgKiB3aGVyZSBgMGAgc2V0cyB0aGUgc3RhcnRpbmcgZGF5IHRvIFN1bmRheS5cbiAgICogQGRlZmF1bHQgMFxuICAgKi9cbiAgcHVibGljIHN0YXJ0aW5nRGF5ID0gMDtcbn1cbiJdfQ==","import { Component, EventEmitter, Input, Output, ViewChild, } from '@angular/core';\nimport { SkyDateFormatter } from '../date-formatter';\nimport { SkyDatepickerCalendarInnerComponent } from './datepicker-calendar-inner.component';\nimport { SkyDayPickerComponent } from './daypicker.component';\nimport { SkyMonthPickerComponent } from './monthpicker.component';\nimport { SkyYearPickerComponent } from './yearpicker.component';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"../datepicker-config.service\";\n/**\n * @internal\n */\nexport class SkyDatepickerCalendarComponent {\n /** starting day of the week from 0-6 (0=Sunday, ..., 6=Saturday) */\n set startingDay(start) {\n this.#_startingDay = start ?? 0;\n }\n get startingDay() {\n return this.#_startingDay;\n }\n #formatter;\n #_startingDay;\n #config;\n constructor(config) {\n this.calendarDateRangeChange = new EventEmitter();\n this.calendarModeChange = new EventEmitter();\n this.selectedDateChange = new EventEmitter(undefined);\n this._now = new Date();\n this.#formatter = new SkyDateFormatter();\n this.#_startingDay = 0;\n this.#config = config;\n this.configureOptions();\n }\n configureOptions() {\n Object.assign(this, this.#config);\n }\n onCalendarDateRangeChange(event) {\n this.calendarDateRangeChange.next(event);\n }\n onCalendarModeChange(event) {\n this.calendarModeChange.emit(event);\n }\n onSelectedDateChange(event) {\n this.selectedDateChange.emit(event);\n }\n writeValue(value) {\n if (value !== undefined &&\n this.#formatter.dateIsValid(value) &&\n this.selectedDate !== undefined &&\n this.datepicker?.compareHandlerDay &&\n this.datepicker.compareHandlerDay(value, this.selectedDate) === 0) {\n return;\n }\n if (value && this.#formatter.dateIsValid(value)) {\n this.selectedDate = value;\n this.datepicker?.select(value, false);\n }\n else {\n this.selectedDate = this.startAtDate ?? new Date();\n this.datepicker?.select(this.startAtDate ?? new Date(), false);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDatepickerCalendarComponent, deps: [{ token: i1.SkyDatepickerConfigService }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.5\", type: SkyDatepickerCalendarComponent, isStandalone: true, selector: \"sky-datepicker-calendar\", inputs: { customDates: \"customDates\", isDaypickerWaiting: \"isDaypickerWaiting\", minDate: \"minDate\", maxDate: \"maxDate\", startAtDate: \"startAtDate\", selectedDate: \"selectedDate\", startingDay: \"startingDay\" }, outputs: { calendarDateRangeChange: \"calendarDateRangeChange\", calendarModeChange: \"calendarModeChange\", selectedDateChange: \"selectedDateChange\" }, viewQueries: [{ propertyName: \"datepicker\", first: true, predicate: SkyDatepickerCalendarInnerComponent, descendants: true, read: SkyDatepickerCalendarInnerComponent, static: true }], ngImport: i0, template: \"<div class=\\\"sky-datepicker-calendar\\\">\\n <sky-datepicker-inner\\n [customDates]=\\\"customDates\\\"\\n [maxDate]=\\\"maxDate\\\"\\n [minDate]=\\\"minDate\\\"\\n [startAtDate]=\\\"startAtDate\\\"\\n [selectedDate]=\\\"selectedDate\\\"\\n [startingDay]=\\\"startingDay\\\"\\n (calendarModeChange)=\\\"onCalendarModeChange($event)\\\"\\n (selectedDateChange)=\\\"onSelectedDateChange($event)\\\"\\n >\\n <div\\n class=\\\"sky-datepicker-calendar-table-container\\\"\\n autofocus\\n tabindex=\\\"0\\\"\\n (keydown)=\\\"datepicker?.onKeydown($event)\\\"\\n >\\n @if (datepicker?.datepickerMode === 'day') {\\n <sky-daypicker\\n [customDates]=\\\"customDates\\\"\\n [isWaiting]=\\\"isDaypickerWaiting\\\"\\n (calendarDateRangeChange)=\\\"onCalendarDateRangeChange($event)\\\"\\n />\\n } @else if (datepicker?.datepickerMode === 'month') {\\n <sky-monthpicker />\\n } @else if (datepicker?.datepickerMode === 'year') {\\n <sky-yearpicker />\\n }\\n </div>\\n </sky-datepicker-inner>\\n</div>\\n\", styles: [\".sky-datepicker-calendar{display:block}\\n\"], dependencies: [{ kind: \"component\", type: SkyDatepickerCalendarInnerComponent, selector: \"sky-datepicker-inner\", inputs: [\"customDates\", \"startingDay\", \"minDate\", \"maxDate\", \"startAtDate\", \"selectedDate\"], outputs: [\"selectedDateChange\", \"calendarModeChange\"] }, { kind: \"component\", type: SkyDayPickerComponent, selector: \"sky-daypicker\", inputs: [\"customDates\", \"isWaiting\"], outputs: [\"calendarDateRangeChange\"] }, { kind: \"component\", type: SkyMonthPickerComponent, selector: \"sky-monthpicker\" }, { kind: \"component\", type: SkyYearPickerComponent, selector: \"sky-yearpicker\" }] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDatepickerCalendarComponent, decorators: [{\n type: Component,\n args: [{ imports: [\n SkyDatepickerCalendarInnerComponent,\n SkyDayPickerComponent,\n SkyMonthPickerComponent,\n SkyYearPickerComponent,\n ], selector: 'sky-datepicker-calendar', template: \"<div class=\\\"sky-datepicker-calendar\\\">\\n <sky-datepicker-inner\\n [customDates]=\\\"customDates\\\"\\n [maxDate]=\\\"maxDate\\\"\\n [minDate]=\\\"minDate\\\"\\n [startAtDate]=\\\"startAtDate\\\"\\n [selectedDate]=\\\"selectedDate\\\"\\n [startingDay]=\\\"startingDay\\\"\\n (calendarModeChange)=\\\"onCalendarModeChange($event)\\\"\\n (selectedDateChange)=\\\"onSelectedDateChange($event)\\\"\\n >\\n <div\\n class=\\\"sky-datepicker-calendar-table-container\\\"\\n autofocus\\n tabindex=\\\"0\\\"\\n (keydown)=\\\"datepicker?.onKeydown($event)\\\"\\n >\\n @if (datepicker?.datepickerMode === 'day') {\\n <sky-daypicker\\n [customDates]=\\\"customDates\\\"\\n [isWaiting]=\\\"isDaypickerWaiting\\\"\\n (calendarDateRangeChange)=\\\"onCalendarDateRangeChange($event)\\\"\\n />\\n } @else if (datepicker?.datepickerMode === 'month') {\\n <sky-monthpicker />\\n } @else if (datepicker?.datepickerMode === 'year') {\\n <sky-yearpicker />\\n }\\n </div>\\n </sky-datepicker-inner>\\n</div>\\n\", styles: [\".sky-datepicker-calendar{display:block}\\n\"] }]\n }], ctorParameters: () => [{ type: i1.SkyDatepickerConfigService }], propDecorators: { customDates: [{\n type: Input\n }], isDaypickerWaiting: [{\n type: Input\n }], minDate: [{\n type: Input\n }], maxDate: [{\n type: Input\n }], startAtDate: [{\n type: Input\n }], selectedDate: [{\n type: Input\n }], startingDay: [{\n type: Input\n }], calendarDateRangeChange: [{\n type: Output\n }], calendarModeChange: [{\n type: Output\n }], selectedDateChange: [{\n type: Output\n }], datepicker: [{\n type: ViewChild,\n args: [SkyDatepickerCalendarInnerComponent, {\n read: SkyDatepickerCalendarInnerComponent,\n static: true,\n }]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci1jYWxlbmRhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL2RhdGVwaWNrZXIvY2FsZW5kYXIvZGF0ZXBpY2tlci1jYWxlbmRhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL2RhdGVwaWNrZXIvY2FsZW5kYXIvZGF0ZXBpY2tlci1jYWxlbmRhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUtyRCxPQUFPLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUM1RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7O0FBRWhFOztHQUVHO0FBWUgsTUFBTSxPQUFPLDhCQUE4QjtJQW9CekMsb0VBQW9FO0lBQ3BFLElBQ1csV0FBVyxDQUFDLEtBQXlCO1FBQzlDLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxJQUFJLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsSUFBVyxXQUFXO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM1QixDQUFDO0lBcUJELFVBQVUsQ0FBMEI7SUFFcEMsYUFBYSxDQUFLO0lBRWxCLE9BQU8sQ0FBNkI7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QUFtQyxFQUFFO3dCQUM5QyxJQUFJLEVBQUUsbUNBQW1DO3dCQUN6QyxNQUFNLEVBQUUsSUFBSTtxQkFDYiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTa3lEYXRlRm9ybWF0dGVyIH0gZnJvbSAnLi4vZGF0ZS1mb3JtYXR0ZXInO1xuaW1wb3J0IHsgU2t5RGF0ZXBpY2tlckNvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi9kYXRlcGlja2VyLWNvbmZpZy5zZXJ2aWNlJztcbmltcG9ydCB7IFNreURhdGVwaWNrZXJDdXN0b21EYXRlIH0gZnJvbSAnLi4vZGF0ZXBpY2tlci1jdXN0b20tZGF0ZSc7XG5cbmltcG9ydCB7IFNreURhdGVwaWNrZXJDYWxlbmRhckNoYW5nZSB9IGZyb20gJy4vZGF0ZXBpY2tlci1jYWxlbmRhci1jaGFuZ2UnO1xuaW1wb3J0IHsgU2t5RGF0ZXBpY2tlckNhbGVuZGFySW5uZXJDb21wb25lbnQgfSBmcm9tICcuL2RhdGVwaWNrZXItY2FsZW5kYXItaW5uZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFNreURheVBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4vZGF5cGlja2VyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lNb250aFBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4vbW9udGhwaWNrZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFNreVllYXJQaWNrZXJDb21wb25lbnQgfSBmcm9tICcuL3llYXJwaWNrZXIuY29tcG9uZW50JztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuQENvbXBvbmVudCh7XG4gIGltcG9ydHM6IFtcbiAgICBTa3lEYXRlcGlja2VyQ2FsZW5kYXJJbm5lckNvbXBvbmVudCxcbiAgICBTa3lEYXlQaWNrZXJDb21wb25lbnQsXG4gICAgU2t5TW9udGhQaWNrZXJDb21wb25lbnQsXG4gICAgU2t5WWVhclBpY2tlckNvbXBvbmVudCxcbiAgXSxcbiAgc2VsZWN0b3I6ICdza3ktZGF0ZXBpY2tlci1jYWxlbmRhcicsXG4gIHN0eWxlVXJsOiAnLi9kYXRlcGlja2VyLWNhbGVuZGFyLmNvbXBvbmVudC5zY3NzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGVwaWNrZXItY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lEYXRlcGlja2VyQ2FsZW5kYXJDb21wb25lbnQge1xuICBASW5wdXQoKVxuICBwdWJsaWMgY3VzdG9tRGF0ZXM6IFNreURhdGVwaWNrZXJDdXN0b21EYXRlW10gfCB1bmRlZmluZWQ7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGlzRGF5cGlja2VyV2FpdGluZzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgbWluRGF0ZTogRGF0ZSB8IHVuZGVmaW5lZDtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgbWF4RGF0ZTogRGF0ZSB8IHVuZGVmaW5lZDtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgc3RhcnRBdERhdGU6IERhdGUgfCB1bmRlZmluZWQ7XG5cbiAgLyoqIGN1cnJlbnRseSBzZWxlY3RlZCBkYXRlICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZWxlY3RlZERhdGU6IERhdGUgfCB1bmRlZmluZWQ7XG5cbiAgLyoqIHN0YXJ0aW5nIGRheSBvZiB0aGUgd2VlayBmcm9tIDAtNiAoMD1TdW5kYXksIC4uLiwgNj1TYXR1cmRheSkgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBzdGFydGluZ0RheShzdGFydDogbnVtYmVyIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX3N0YXJ0aW5nRGF5ID0gc3RhcnQgPz8gMDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc3RhcnRpbmdEYXkoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy4jX3N0YXJ0aW5nRGF5O1xuICB9XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBjYWxlbmRhckRhdGVSYW5nZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8XG4gICAgU2t5RGF0ZXBpY2tlckNhbGVuZGFyQ2hhbmdlIHwgdW5kZWZpbmVkXG4gID4oKTtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIGNhbGVuZGFyTW9kZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgc2VsZWN0ZWREYXRlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPih1bmRlZmluZWQpO1xuXG4gIEBWaWV3Q2hpbGQoU2t5RGF0ZXBpY2tlckNhbGVuZGFySW5uZXJDb21wb25lbnQsIHtcbiAgICByZWFkOiBTa3lEYXRlcGlja2VyQ2FsZW5kYXJJbm5lckNvbXBvbmVudCxcbiAgICBzdGF0aWM6IHRydWUsXG4gIH0pXG4gIHB1YmxpYyBkYXRlcGlja2VyOiBTa3lEYXRlcGlja2VyQ2FsZW5kYXJJbm5lckNvbXBvbmVudCB8IHVuZGVmaW5lZDtcblxuICBwcm90ZWN0ZWQgX25vdzogRGF0ZSA9IG5ldyBEYXRlKCk7XG5cbiAgI2Zvcm1hdHRlciA9IG5ldyBTa3lEYXRlRm9ybWF0dGVyKCk7XG5cbiAgI19zdGFydGluZ0RheSA9IDA7XG5cbiAgI2NvbmZpZzogU2t5RGF0ZXBpY2tlckNvbmZpZ1NlcnZpY2U7XG5cbiAgY29uc3RydWN0b3IoY29uZmlnOiBTa3lEYXRlcGlja2VyQ29uZmlnU2VydmljZSkge1xuICAgIHRoaXMuI2NvbmZpZyA9IGNvbmZpZztcbiAgICB0aGlzLmNvbmZpZ3VyZU9wdGlvbnMoKTtcbiAgfVxuXG4gIHB1YmxpYyBjb25maWd1cmVPcHRpb25zKCk6IHZvaWQge1xuICAgIE9iamVjdC5hc3NpZ24odGhpcywgdGhpcy4jY29uZmlnKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkNhbGVuZGFyRGF0ZVJhbmdlQ2hhbmdlKFxuICAgIGV2ZW50OiBTa3lEYXRlcGlja2VyQ2FsZW5kYXJDaGFuZ2UgfCB1bmRlZmluZWQsXG4gICk6IHZvaWQge1xuICAgIHRoaXMuY2FsZW5kYXJEYXRlUmFuZ2VDaGFuZ2UubmV4dChldmVudCk7XG4gIH1cblxuICBwdWJsaWMgb25DYWxlbmRhck1vZGVDaGFuZ2UoZXZlbnQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuY2FsZW5kYXJNb2RlQ2hhbmdlLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgcHVibGljIG9uU2VsZWN0ZWREYXRlQ2hhbmdlKGV2ZW50OiBEYXRlKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZERhdGVDaGFuZ2UuZW1pdChldmVudCk7XG4gIH1cblxuICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogRGF0ZSB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgIHZhbHVlICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIHRoaXMuI2Zvcm1hdHRlci5kYXRlSXNWYWxpZCh2YWx1ZSkgJiZcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIHRoaXMuZGF0ZXBpY2tlcj8uY29tcGFyZUhhbmRsZXJEYXkgJiZcbiAgICAgIHRoaXMuZGF0ZXBpY2tlci5jb21wYXJlSGFuZGxlckRheSh2YWx1ZSwgdGhpcy5zZWxlY3RlZERhdGUpID09PSAwXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlICYmIHRoaXMuI2Zvcm1hdHRlci5kYXRlSXNWYWxpZCh2YWx1ZSkpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gdmFsdWU7XG4gICAgICB0aGlzLmRhdGVwaWNrZXI/LnNlbGVjdCh2YWx1ZSwgZmFsc2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZSA9IHRoaXMuc3RhcnRBdERhdGUgPz8gbmV3IERhdGUoKTtcbiAgICAgIHRoaXMuZGF0ZXBpY2tlcj8uc2VsZWN0KHRoaXMuc3RhcnRBdERhdGUgPz8gbmV3IERhdGUoKSwgZmFsc2UpO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInNreS1kYXRlcGlja2VyLWNhbGVuZGFyXCI+XG4gIDxza3ktZGF0ZXBpY2tlci1pbm5lclxuICAgIFtjdXN0b21EYXRlc109XCJjdXN0b21EYXRlc1wiXG4gICAgW21heERhdGVdPVwibWF4RGF0ZVwiXG4gICAgW21pbkRhdGVdPVwibWluRGF0ZVwiXG4gICAgW3N0YXJ0QXREYXRlXT1cInN0YXJ0QXREYXRlXCJcbiAgICBbc2VsZWN0ZWREYXRlXT1cInNlbGVjdGVkRGF0ZVwiXG4gICAgW3N0YXJ0aW5nRGF5XT1cInN0YXJ0aW5nRGF5XCJcbiAgICAoY2FsZW5kYXJNb2RlQ2hhbmdlKT1cIm9uQ2FsZW5kYXJNb2RlQ2hhbmdlKCRldmVudClcIlxuICAgIChzZWxlY3RlZERhdGVDaGFuZ2UpPVwib25TZWxlY3RlZERhdGVDaGFuZ2UoJGV2ZW50KVwiXG4gID5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInNreS1kYXRlcGlja2VyLWNhbGVuZGFyLXRhYmxlLWNvbnRhaW5lclwiXG4gICAgICBhdXRvZm9jdXNcbiAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAoa2V5ZG93bik9XCJkYXRlcGlja2VyPy5vbktleWRvd24oJGV2ZW50KVwiXG4gICAgPlxuICAgICAgQGlmIChkYXRlcGlja2VyPy5kYXRlcGlja2VyTW9kZSA9PT0gJ2RheScpIHtcbiAgICAgICAgPHNreS1kYXlwaWNrZXJcbiAgICAgICAgICBbY3VzdG9tRGF0ZXNdPVwiY3VzdG9tRGF0ZXNcIlxuICAgICAgICAgIFtpc1dhaXRpbmddPVwiaXNEYXlwaWNrZXJXYWl0aW5nXCJcbiAgICAgICAgICAoY2FsZW5kYXJEYXRlUmFuZ2VDaGFuZ2UpPVwib25DYWxlbmRhckRhdGVSYW5nZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgLz5cbiAgICAgIH0gQGVsc2UgaWYgKGRhdGVwaWNrZXI/LmRhdGVwaWNrZXJNb2RlID09PSAnbW9udGgnKSB7XG4gICAgICAgIDxza3ktbW9udGhwaWNrZXIgLz5cbiAgICAgIH0gQGVsc2UgaWYgKGRhdGVwaWNrZXI/LmRhdGVwaWNrZXJNb2RlID09PSAneWVhcicpIHtcbiAgICAgICAgPHNreS15ZWFycGlja2VyIC8+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIDwvc2t5LWRhdGVwaWNrZXItaW5uZXI+XG48L2Rpdj5cbiJdfQ==","import { DestroyRef, Injectable, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Subject, fromEvent } from 'rxjs';\nimport * as i0 from \"@angular/core\";\n/**\n * Handles interactions between the datepicker host component and the input\n * directive.\n * @internal\n */\nexport class SkyDatepickerHostService {\n #destroyRef = inject(DestroyRef);\n /**\n * Fires when the picker or trigger button loses focus.\n */\n get focusout() {\n return this.#focusoutObs;\n }\n #focusout = new Subject();\n #focusoutObs = this.#focusout.asObservable();\n #host;\n #isInitialized = false;\n ngOnDestroy() {\n this.#focusout.complete();\n }\n init(host) {\n if (this.#isInitialized) {\n throw new Error('The datepicker host service is already initialized.');\n }\n this.#host = host;\n this.#isInitialized = true;\n const triggerButtonEl = this.#host.triggerButtonRef?.nativeElement;\n if (triggerButtonEl instanceof Element) {\n fromEvent(triggerButtonEl, 'focusout')\n .pipe(takeUntilDestroyed(this.#destroyRef))\n .subscribe((evt) => {\n this.#handleFocusoutEvent(evt);\n });\n }\n }\n isFocusingDatepicker(evt) {\n const buttonEl = this.#host?.triggerButtonRef?.nativeElement;\n return buttonEl instanceof Element && buttonEl === evt.relatedTarget;\n }\n #handleFocusoutEvent(evt) {\n if (this.#host) {\n const relatedTarget = evt.relatedTarget;\n const overlayEl = this.#host.getPickerRef()?.nativeElement;\n const isFocusingOverlay = relatedTarget instanceof Element &&\n !!overlayEl?.contains(relatedTarget);\n if (relatedTarget === null || !isFocusingOverlay) {\n this.#focusout.next(evt);\n }\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDatepickerHostService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDatepickerHostService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDatepickerHostService, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci1ob3N0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci1ob3N0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQWEsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRWhFLE9BQU8sRUFBYyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUl0RDs7OztHQUlHO0FBRUgsTUFBTSxPQUFPLHdCQUF3QjtJQUMxQixXQUFXLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRTFDOztPQUVHO0lBQ0gsSUFBVyxRQUFRO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBRUQsU0FBUyxHQUFHLElBQUksT0FBTyxFQUFjLENBQUM7SUFDdEMsWUFBWSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDN0MsS0FBSyxDQUFxQztJQUMxQyxjQUFjLEdBQUcsS0FBSyxDQUFDO0lBRWhCLFdBQVc7UUFDaEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRU0sSUFBSSxDQUFDLElBQTRCO1FBQ3RDLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3hCLE1BQU0sSUFBSSxLQUFLLENBQUMscURBQXFELENBQUMsQ0FBQztRQUN6RSxDQUFDO1FBRUQsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7UUFFM0IsTUFBTSxlQUFlLEdBQ25CLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEVBQUUsYUFBYSxDQUFDO1FBRTdDLElBQUksZUFBZSxZQUFZLE9BQU8sRUFBRSxDQUFDO1lBQ3ZDLFNBQVMsQ0FBYSxlQUFlLEVBQUUsVUFBVSxDQUFDO2lCQUMvQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2lCQUMxQyxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDakIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2pDLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztJQUNILENBQUM7SUFFTSxvQkFBb0IsQ0FBQyxHQUFlO1FBQ3pDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxDQUFDO1FBRTdELE9BQU8sUUFBUSxZQUFZLE9BQU8sSUFBSSxRQUFRLEtBQUssR0FBRyxDQUFDLGFBQWEsQ0FBQztJQUN2RSxDQUFDO0lBRUQsb0JBQW9CLENBQUMsR0FBZTtRQUNsQyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNmLE1BQU0sYUFBYSxHQUFHLEdBQUcsQ0FBQyxhQUFhLENBQUM7WUFDeEMsTUFBTSxTQUFTLEdBQ2IsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsRUFBRSxhQUFhLENBQUM7WUFFM0MsTUFBTSxpQkFBaUIsR0FDckIsYUFBYSxZQUFZLE9BQU87Z0JBQ2hDLENBQUMsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBRXZDLElBQUksYUFBYSxLQUFLLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7Z0JBQ2pELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzNCLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQzs4R0EzRFUsd0JBQXdCO2tIQUF4Qix3QkFBd0I7OzJGQUF4Qix3QkFBd0I7a0JBRHBDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEZXN0cm95UmVmLCBJbmplY3RhYmxlLCBPbkRlc3Ryb3ksIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU2t5RGF0ZXBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4vZGF0ZXBpY2tlci5jb21wb25lbnQnO1xuXG4vKipcbiAqIEhhbmRsZXMgaW50ZXJhY3Rpb25zIGJldHdlZW4gdGhlIGRhdGVwaWNrZXIgaG9zdCBjb21wb25lbnQgYW5kIHRoZSBpbnB1dFxuICogZGlyZWN0aXZlLlxuICogQGludGVybmFsXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTa3lEYXRlcGlja2VySG9zdFNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICByZWFkb25seSAjZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGUgcGlja2VyIG9yIHRyaWdnZXIgYnV0dG9uIGxvc2VzIGZvY3VzLlxuICAgKi9cbiAgcHVibGljIGdldCBmb2N1c291dCgpOiBPYnNlcnZhYmxlPEZvY3VzRXZlbnQ+IHtcbiAgICByZXR1cm4gdGhpcy4jZm9jdXNvdXRPYnM7XG4gIH1cblxuICAjZm9jdXNvdXQgPSBuZXcgU3ViamVjdDxGb2N1c0V2ZW50PigpO1xuICAjZm9jdXNvdXRPYnMgPSB0aGlzLiNmb2N1c291dC5hc09ic2VydmFibGUoKTtcbiAgI2hvc3Q6IFNreURhdGVwaWNrZXJDb21wb25lbnQgfCB1bmRlZmluZWQ7XG4gICNpc0luaXRpYWxpemVkID0gZmFsc2U7XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuI2ZvY3Vzb3V0LmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgaW5pdChob3N0OiBTa3lEYXRlcGlja2VyQ29tcG9uZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuI2lzSW5pdGlhbGl6ZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIGRhdGVwaWNrZXIgaG9zdCBzZXJ2aWNlIGlzIGFscmVhZHkgaW5pdGlhbGl6ZWQuJyk7XG4gICAgfVxuXG4gICAgdGhpcy4jaG9zdCA9IGhvc3Q7XG4gICAgdGhpcy4jaXNJbml0aWFsaXplZCA9IHRydWU7XG5cbiAgICBjb25zdCB0cmlnZ2VyQnV0dG9uRWw6IEVsZW1lbnQgfCB1bmRlZmluZWQgPVxuICAgICAgdGhpcy4jaG9zdC50cmlnZ2VyQnV0dG9uUmVmPy5uYXRpdmVFbGVtZW50O1xuXG4gICAgaWYgKHRyaWdnZXJCdXR0b25FbCBpbnN0YW5jZW9mIEVsZW1lbnQpIHtcbiAgICAgIGZyb21FdmVudDxGb2N1c0V2ZW50Pih0cmlnZ2VyQnV0dG9uRWwsICdmb2N1c291dCcpXG4gICAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLiNkZXN0cm95UmVmKSlcbiAgICAgICAgLnN1YnNjcmliZSgoZXZ0KSA9PiB7XG4gICAgICAgICAgdGhpcy4jaGFuZGxlRm9jdXNvdXRFdmVudChldnQpO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaXNGb2N1c2luZ0RhdGVwaWNrZXIoZXZ0OiBGb2N1c0V2ZW50KTogYm9vbGVhbiB7XG4gICAgY29uc3QgYnV0dG9uRWwgPSB0aGlzLiNob3N0Py50cmlnZ2VyQnV0dG9uUmVmPy5uYXRpdmVFbGVtZW50O1xuXG4gICAgcmV0dXJuIGJ1dHRvbkVsIGluc3RhbmNlb2YgRWxlbWVudCAmJiBidXR0b25FbCA9PT0gZXZ0LnJlbGF0ZWRUYXJnZXQ7XG4gIH1cblxuICAjaGFuZGxlRm9jdXNvdXRFdmVudChldnQ6IEZvY3VzRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy4jaG9zdCkge1xuICAgICAgY29uc3QgcmVsYXRlZFRhcmdldCA9IGV2dC5yZWxhdGVkVGFyZ2V0O1xuICAgICAgY29uc3Qgb3ZlcmxheUVsOiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZCA9XG4gICAgICAgIHRoaXMuI2hvc3QuZ2V0UGlja2VyUmVmKCk/Lm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICAgIGNvbnN0IGlzRm9jdXNpbmdPdmVybGF5ID1cbiAgICAgICAgcmVsYXRlZFRhcmdldCBpbnN0YW5jZW9mIEVsZW1lbnQgJiZcbiAgICAgICAgISFvdmVybGF5RWw/LmNvbnRhaW5zKHJlbGF0ZWRUYXJnZXQpO1xuXG4gICAgICBpZiAocmVsYXRlZFRhcmdldCA9PT0gbnVsbCB8fCAhaXNGb2N1c2luZ092ZXJsYXkpIHtcbiAgICAgICAgdGhpcy4jZm9jdXNvdXQubmV4dChldnQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, ElementRef, EnvironmentInjector, EventEmitter, Inject, Input, Optional, Output, TemplateRef, ViewChild, inject, output, } from '@angular/core';\nimport { SKY_STACKING_CONTEXT, SkyAffixAutoFitContext, SkyAppFormat, } from '@skyux/core';\nimport { SkyLibResourcesService } from '@skyux/i18n';\nimport { SkyIconModule } from '@skyux/icon';\nimport { Subject, fromEvent } from 'rxjs';\nimport { debounceTime, takeUntil } from 'rxjs/operators';\nimport { SkyDatetimeResourcesModule } from '../shared/sky-datetime-resources.module';\nimport { SkyDatepickerCalendarComponent } from './calendar/datepicker-calendar.component';\nimport { SkyDatepickerHostService } from './datepicker-host.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@skyux/core\";\nimport * as i2 from \"@skyux/forms\";\nimport * as i3 from \"@skyux/theme\";\nimport * as i4 from \"@angular/common\";\nimport * as i5 from \"@skyux/i18n\";\nimport * as i6 from \"@skyux/icon\";\nlet nextId = 0;\n/**\n * Creates the datepicker button and calendar.\n * You must wrap this component around an input with the `skyDatepickerInput` directive.\n */\nexport class SkyDatepickerComponent {\n set dateFormat(value) {\n this.#_dateFormat = value;\n this.dateFormatChange.emit(value);\n this.#populateInputBoxHelpText();\n }\n get dateFormat() {\n return this.#_dateFormat;\n }\n get disabled() {\n return this.#_disabled;\n }\n set disabled(value) {\n this.#_disabled = value;\n this.#changeDetector.markForCheck();\n }\n set selectedDate(value) {\n this.#_selectedDate = value;\n if (this.calendar) {\n this.calendar.writeValue(value);\n }\n }\n get selectedDate() {\n return this.#_selectedDate;\n }\n set calendarRef(value) {\n if (value) {\n this.#_calendarRef = value;\n this.#addKeyupListener();\n // Wait for the calendar component to render before gauging dimensions.\n setTimeout(() => {\n if (this.calendarRef) {\n this.calendar?.writeValue(this.selectedDate);\n this.#destroyAffixer();\n this.#createAffixer();\n setTimeout(() => {\n if (this.calendarRef) {\n this.#coreAdapter.applyAutoFocus(this.calendarRef);\n this.isVisible = true;\n this.#changeDetector.markForCheck();\n }\n });\n }\n });\n }\n }\n get calendarRef() {\n return this.#_calendarRef;\n }\n #affixer;\n #calendarUnsubscribe;\n #customDatesSubscription;\n #ngUnsubscribe;\n #overlay;\n #overlayKeyupListener;\n #_calendarRef;\n #_dateFormat;\n #_disabled;\n #_selectedDate;\n #affixService;\n #appFormatter;\n #changeDetector;\n #coreAdapter;\n #dateFormatHintTextTemplateString;\n #environmentInjector;\n #resourceSvc;\n #overlayService;\n #zIndex;\n #datepickerHostSvc;\n #elementRef;\n constructor(affixService, changeDetector, coreAdapter, overlayService, inputBoxHostService, themeSvc, stackingContext) {\n this.inputBoxHostService = inputBoxHostService;\n /**\n * Adds a class to the datepicker.\n * @default \"\"\n */\n this.pickerClass = '';\n /**\n * Fires when the range of displayed dates in the calendar changes. Provides the\n * current range of displayed dates and a mutable `customDate` property consumers can use\n * to modify individual dates on the calendar.\n */\n this.calendarDateRangeChange = new EventEmitter();\n /**\n * @internal\n */\n this.dateFormatChange = new EventEmitter();\n /**\n * @internal\n */\n this.openChange = new EventEmitter();\n /**\n * Fires when a user selects a date from the calendar.\n * @internal\n */\n this.calendarDateChange = output();\n this.dateChange = new EventEmitter();\n this.isDaypickerWaiting = false;\n this.isOpen = false;\n this.isVisible = false;\n this.#calendarUnsubscribe = new Subject();\n this.#ngUnsubscribe = new Subject();\n this.#_disabled = false;\n this.#appFormatter = inject(SkyAppFormat);\n this.#dateFormatHintTextTemplateString = '';\n this.#environmentInjector = inject(EnvironmentInjector);\n this.#resourceSvc = inject(SkyLibResourcesService);\n this.#datepickerHostSvc = inject(SkyDatepickerHostService);\n this.#elementRef = inject(ElementRef);\n this.#affixService = affixService;\n this.#changeDetector = changeDetector;\n this.#coreAdapter = coreAdapter;\n this.#overlayService = overlayService;\n const uniqueId = nextId++;\n this.calendarId = `sky-datepicker-calendar-${uniqueId}`;\n this.triggerButtonId = `sky-datepicker-button-${uniqueId}`;\n this.#zIndex = stackingContext?.zIndex;\n // Update icons when theme changes.\n themeSvc?.settingsChange\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe(() => {\n this.#changeDetector.markForCheck();\n });\n }\n ngOnInit() {\n if (this.inputBoxHostService && this.inputTemplateRef) {\n this.inputBoxHostService.populate({\n inputTemplate: this.inputTemplateRef,\n buttonsTemplate: this.triggerButtonTemplateRef,\n });\n this.#resourceSvc\n .getString('skyux_datepicker_format_hint_text')\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((templateString) => {\n this.#dateFormatHintTextTemplateString = templateString;\n this.#populateInputBoxHelpText();\n });\n }\n }\n ngAfterViewInit() {\n this.#datepickerHostSvc.init(this);\n }\n ngOnDestroy() {\n this.dateChange.complete();\n this.openChange.complete();\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n this.#removePickerEventListeners();\n this.#destroyAffixer();\n this.#destroyOverlay();\n }\n onCalendarModeChange() {\n // Let the calendar populate in the DOM before recalculating placement.\n setTimeout(() => {\n this.#affixer?.reaffix();\n });\n }\n onSelectedDateChange(value) {\n this.calendarDateChange.emit(value);\n this.dateChange.emit(value);\n this.#closePicker();\n }\n onTriggerButtonClick() {\n if (this.isOpen) {\n this.#closePicker();\n }\n else {\n this.#openPicker();\n }\n }\n onCalendarDateRangeChange(event) {\n /* istanbul ignore else */\n if (event) {\n this.#cancelCustomDatesSubscription();\n const args = {\n startDate: event.startDate,\n endDate: event.endDate,\n customDates: undefined,\n };\n this.calendarDateRangeChange.emit(args);\n // If consumer has added an observable to the args, watch for incoming custom dates.\n /* istanbul ignore else */\n if (args.customDates) {\n this.isDaypickerWaiting = true;\n // Avoid an ExpressionChangedAfterItHasBeenCheckedError.\n this.#changeDetector.detectChanges();\n this.#customDatesSubscription = args.customDates\n .pipe(debounceTime(250))\n .subscribe((result) => {\n this.customDates = result;\n this.isDaypickerWaiting = false;\n // Trigger change detection in child components to show changes in the calendar.\n this.#changeDetector.markForCheck();\n });\n }\n else {\n // If consumer returns an undefined value after custom dates have\n // already been established, remove custom dates.\n if (this.customDates) {\n this.customDates = undefined;\n // Avoid an ExpressionChangedAfterItHasBeenCheckedError.\n this.#changeDetector.detectChanges();\n }\n }\n }\n }\n /**\n * Whether the datepicker component contains the provided focus event target.\n * @internal\n */\n containsTarget(target) {\n return (this.#elementRef.nativeElement.contains(target) ||\n this.getPickerRef()?.nativeElement.contains(target));\n }\n /**\n * Gets the element reference of the picker overlay.\n * @internal\n */\n getPickerRef() {\n return this.#overlay?.componentRef.location;\n }\n #closePicker() {\n this.#destroyAffixer();\n this.#destroyOverlay();\n this.#removePickerEventListeners();\n this.triggerButtonRef?.nativeElement.focus();\n this.isOpen = false;\n this.openChange.emit(false);\n }\n #openPicker() {\n this.isVisible = false;\n this.#changeDetector.markForCheck();\n this.#removePickerEventListeners();\n this.#destroyOverlay();\n this.#createOverlay();\n this.isOpen = true;\n this.#changeDetector.markForCheck();\n this.openChange.emit(true);\n }\n #createAffixer() {\n if (this.calendarRef && this.triggerButtonRef) {\n const affixer = this.#affixService.createAffixer(this.calendarRef);\n // Hide calendar when trigger button is scrolled off-screen.\n affixer.placementChange\n .pipe(takeUntil(this.#calendarUnsubscribe))\n .subscribe((change) => {\n this.isVisible = change.placement !== null;\n this.#changeDetector.markForCheck();\n });\n affixer.affixTo(this.triggerButtonRef.nativeElement, {\n autoFitContext: SkyAffixAutoFitContext.Viewport,\n enableAutoFit: true,\n horizontalAlignment: 'right',\n isSticky: true,\n placement: 'below',\n });\n this.#affixer = affixer;\n }\n }\n #destroyAffixer() {\n /*istanbul ignore else*/\n if (this.#affixer) {\n this.#affixer.destroy();\n this.#affixer = undefined;\n }\n }\n #createOverlay() {\n if (this.calendarTemplateRef) {\n const overlay = this.#overlayService.create({\n wrapperClass: this.pickerClass,\n enableClose: false,\n enablePointerEvents: false,\n environmentInjector: this.#environmentInjector,\n });\n if (this.#zIndex) {\n this.#zIndex\n .pipe(takeUntil(this.#calendarUnsubscribe))\n .subscribe((zIndex) => {\n overlay.componentRef.instance.zIndex = zIndex.toString(10);\n });\n }\n overlay.backdropClick\n .pipe(takeUntil(this.#calendarUnsubscribe))\n .subscribe(() => {\n /* istanbul ignore else */\n if (this.isOpen) {\n this.#closePicker();\n }\n });\n overlay.attachTemplate(this.calendarTemplateRef);\n this.#overlay = overlay;\n }\n }\n #destroyOverlay() {\n /*istanbul ignore else*/\n if (this.#overlay) {\n this.#overlayService.close(this.#overlay);\n this.#overlay = undefined;\n }\n }\n #addKeyupListener() {\n const datepickerCalendarElement = this.calendarRef?.nativeElement;\n if (datepickerCalendarElement) {\n this.#overlayKeyupListener = fromEvent(datepickerCalendarElement, 'keyup')\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((event) => {\n const key = event.key?.toLowerCase();\n if (key === 'escape' && this.isOpen) {\n this.#closePicker();\n }\n });\n }\n }\n #removePickerEventListeners() {\n this.#calendarUnsubscribe.next();\n this.#calendarUnsubscribe.complete();\n this.#calendarUnsubscribe = new Subject();\n this.#overlayKeyupListener?.unsubscribe();\n }\n #cancelCustomDatesSubscription() {\n if (this.#customDatesSubscription) {\n this.#customDatesSubscription.unsubscribe();\n this.#customDatesSubscription = undefined;\n }\n }\n #populateInputBoxHelpText() {\n if (this.inputBoxHostService && this.inputTemplateRef) {\n /* safety check */\n /* istanbul ignore else */\n if (this.dateFormat) {\n this.inputBoxHostService?.setHintText(this.#appFormatter.formatText(this.#dateFormatHintTextTemplateString, this.dateFormat));\n }\n else {\n this.inputBoxHostService?.setHintText('');\n }\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDatepickerComponent, deps: [{ token: i1.SkyAffixService }, { token: i0.ChangeDetectorRef }, { token: i1.SkyCoreAdapterService }, { token: i1.SkyOverlayService }, { token: i2.SkyInputBoxHostService, optional: true }, { token: i3.SkyThemeService, optional: true }, { token: SKY_STACKING_CONTEXT, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.5\", type: SkyDatepickerComponent, isStandalone: true, selector: \"sky-datepicker\", inputs: { pickerClass: \"pickerClass\" }, outputs: { calendarDateRangeChange: \"calendarDateRangeChange\", dateFormatChange: \"dateFormatChange\", openChange: \"openChange\", calendarDateChange: \"calendarDateChange\" }, providers: [SkyDatepickerHostService], viewQueries: [{ propertyName: \"calendar\", first: true, predicate: SkyDatepickerCalendarComponent, descendants: true }, { propertyName: \"calendarRef\", first: true, predicate: [\"calendarRef\"], descendants: true, read: ElementRef }, { propertyName: \"calendarTemplateRef\", first: true, predicate: [\"calendarTemplateRef\"], descendants: true, read: TemplateRef }, { propertyName: \"triggerButtonRef\", first: true, predicate: [\"triggerButtonRef\"], descendants: true, read: ElementRef }, { propertyName: \"inputTemplateRef\", first: true, predicate: [\"inputTemplateRef\"], descendants: true, read: TemplateRef, static: true }, { propertyName: \"triggerButtonTemplateRef\", first: true, predicate: [\"triggerButtonTemplateRef\"], descendants: true, read: TemplateRef, static: true }], ngImport: i0, template: \"<div class=\\\"sky-datepicker\\\">\\n @if (!inputBoxHostService) {\\n <div class=\\\"sky-input-group\\\">\\n <ng-container *ngTemplateOutlet=\\\"inputTemplateRef\\\" />\\n <ng-container *ngTemplateOutlet=\\\"triggerButtonTemplateRef\\\" />\\n </div>\\n }\\n</div>\\n\\n<ng-template #inputTemplateRef>\\n <ng-content />\\n</ng-template>\\n\\n<ng-template #triggerButtonTemplateRef>\\n <div class=\\\"sky-input-group-btn\\\">\\n <button\\n #triggerButtonRef\\n aria-haspopup=\\\"dialog\\\"\\n class=\\\"sky-btn sky-btn-default sky-input-group-datepicker-btn\\\"\\n type=\\\"button\\\"\\n [attr.aria-controls]=\\\"isOpen ? calendarId : null\\\"\\n [attr.aria-expanded]=\\\"isOpen\\\"\\n [attr.aria-label]=\\\"\\n inputBoxHostService?.labelText\\n ? ('skyux_datepicker_trigger_button_label_context'\\n | skyLibResources: inputBoxHostService?.labelText)\\n : ('skyux_datepicker_trigger_button_label' | skyLibResources)\\n \\\"\\n [attr.id]=\\\"triggerButtonId\\\"\\n [attr.title]=\\\"\\n inputBoxHostService?.labelText\\n ? ('skyux_datepicker_trigger_button_label_context'\\n | skyLibResources: inputBoxHostService?.labelText)\\n : ('skyux_datepicker_trigger_button_label' | skyLibResources)\\n \\\"\\n [disabled]=\\\"disabled\\\"\\n (click)=\\\"onTriggerButtonClick()\\\"\\n >\\n <sky-icon iconName=\\\"calendar-ltr\\\" iconSize=\\\"l\\\" />\\n </button>\\n </div>\\n</ng-template>\\n\\n<ng-template #calendarTemplateRef>\\n <div\\n #calendarRef\\n class=\\\"sky-datepicker-calendar-container sky-shadow sky-elevation-4\\\"\\n role=\\\"dialog\\\"\\n [attr.aria-labelledby]=\\\"triggerButtonId\\\"\\n [attr.id]=\\\"calendarId\\\"\\n [class.sky-datepicker-hidden]=\\\"!isVisible\\\"\\n >\\n <sky-datepicker-calendar\\n cdkTrapFocus\\n [customDates]=\\\"customDates\\\"\\n [isDaypickerWaiting]=\\\"isDaypickerWaiting\\\"\\n [maxDate]=\\\"maxDate\\\"\\n [minDate]=\\\"minDate\\\"\\n [startAtDate]=\\\"startAtDate\\\"\\n [startingDay]=\\\"startingDay\\\"\\n (calendarDateRangeChange)=\\\"onCalendarDateRangeChange($event)\\\"\\n (calendarModeChange)=\\\"onCalendarModeChange()\\\"\\n (selectedDateChange)=\\\"onSelectedDateChange($event)\\\"\\n />\\n </div>\\n</ng-template>\\n\", styles: [\".sky-datepicker-calendar-container:not(.sky-theme-modern *){--sky-override-datepicker-border-radius: 5px}.sky-datepicker-calendar-container{position:fixed;border-radius:var(--sky-override-datepicker-border-radius, var(--sky-border-radius-s))}.sky-datepicker-hidden{visibility:hidden}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i4.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"component\", type: SkyDatepickerCalendarComponent, selector: \"sky-datepicker-calendar\", inputs: [\"customDates\", \"isDaypickerWaiting\", \"minDate\", \"maxDate\", \"startAtDate\", \"selectedDate\", \"startingDay\"], outputs: [\"calendarDateRangeChange\", \"calendarModeChange\", \"selectedDateChange\"] }, { kind: \"ngmodule\", type: SkyDatetimeResourcesModule }, { kind: \"pipe\", type: i5.SkyLibResourcesPipe, name: \"skyLibResources\" }, { kind: \"ngmodule\", type: SkyIconModule }, { kind: \"component\", type: i6.λ1, selector: \"sky-icon\", inputs: [\"icon\", \"iconName\", \"iconType\", \"size\", \"fixedWidth\", \"variant\", \"iconSize\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDatepickerComponent, decorators: [{\n type: Component,\n args: [{ changeDetection: ChangeDetectionStrategy.OnPush, imports: [\n CommonModule,\n SkyDatepickerCalendarComponent,\n SkyDatetimeResourcesModule,\n SkyIconModule,\n ], providers: [SkyDatepickerHostService], selector: 'sky-datepicker', template: \"<div class=\\\"sky-datepicker\\\">\\n @if (!inputBoxHostService) {\\n <div class=\\\"sky-input-group\\\">\\n <ng-container *ngTemplateOutlet=\\\"inputTemplateRef\\\" />\\n <ng-container *ngTemplateOutlet=\\\"triggerButtonTemplateRef\\\" />\\n </div>\\n }\\n</div>\\n\\n<ng-template #inputTemplateRef>\\n <ng-content />\\n</ng-template>\\n\\n<ng-template #triggerButtonTemplateRef>\\n <div class=\\\"sky-input-group-btn\\\">\\n <button\\n #triggerButtonRef\\n aria-haspopup=\\\"dialog\\\"\\n class=\\\"sky-btn sky-btn-default sky-input-group-datepicker-btn\\\"\\n type=\\\"button\\\"\\n [attr.aria-controls]=\\\"isOpen ? calendarId : null\\\"\\n [attr.aria-expanded]=\\\"isOpen\\\"\\n [attr.aria-label]=\\\"\\n inputBoxHostService?.labelText\\n ? ('skyux_datepicker_trigger_button_label_context'\\n | skyLibResources: inputBoxHostService?.labelText)\\n : ('skyux_datepicker_trigger_button_label' | skyLibResources)\\n \\\"\\n [attr.id]=\\\"triggerButtonId\\\"\\n [attr.title]=\\\"\\n inputBoxHostService?.labelText\\n ? ('skyux_datepicker_trigger_button_label_context'\\n | skyLibResources: inputBoxHostService?.labelText)\\n : ('skyux_datepicker_trigger_button_label' | skyLibResources)\\n \\\"\\n [disabled]=\\\"disabled\\\"\\n (click)=\\\"onTriggerButtonClick()\\\"\\n >\\n <sky-icon iconName=\\\"calendar-ltr\\\" iconSize=\\\"l\\\" />\\n </button>\\n </div>\\n</ng-template>\\n\\n<ng-template #calendarTemplateRef>\\n <div\\n #calendarRef\\n class=\\\"sky-datepicker-calendar-container sky-shadow sky-elevation-4\\\"\\n role=\\\"dialog\\\"\\n [attr.aria-labelledby]=\\\"triggerButtonId\\\"\\n [attr.id]=\\\"calendarId\\\"\\n [class.sky-datepicker-hidden]=\\\"!isVisible\\\"\\n >\\n <sky-datepicker-calendar\\n cdkTrapFocus\\n [customDates]=\\\"customDates\\\"\\n [isDaypickerWaiting]=\\\"isDaypickerWaiting\\\"\\n [maxDate]=\\\"maxDate\\\"\\n [minDate]=\\\"minDate\\\"\\n [startAtDate]=\\\"startAtDate\\\"\\n [startingDay]=\\\"startingDay\\\"\\n (calendarDateRangeChange)=\\\"onCalendarDateRangeChange($event)\\\"\\n (calendarModeChange)=\\\"onCalendarModeChange()\\\"\\n (selectedDateChange)=\\\"onSelectedDateChange($event)\\\"\\n />\\n </div>\\n</ng-template>\\n\", styles: [\".sky-datepicker-calendar-container:not(.sky-theme-modern *){--sky-override-datepicker-border-radius: 5px}.sky-datepicker-calendar-container{position:fixed;border-radius:var(--sky-override-datepicker-border-radius, var(--sky-border-radius-s))}.sky-datepicker-hidden{visibility:hidden}\\n\"] }]\n }], ctorParameters: () => [{ type: i1.SkyAffixService }, { type: i0.ChangeDetectorRef }, { type: i1.SkyCoreAdapterService }, { type: i1.SkyOverlayService }, { type: i2.SkyInputBoxHostService, decorators: [{\n type: Optional\n }] }, { type: i3.SkyThemeService, decorators: [{\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [SKY_STACKING_CONTEXT]\n }] }], propDecorators: { pickerClass: [{\n type: Input\n }], calendarDateRangeChange: [{\n type: Output\n }], dateFormatChange: [{\n type: Output\n }], openChange: [{\n type: Output\n }], calendar: [{\n type: ViewChild,\n args: [SkyDatepickerCalendarComponent]\n }], calendarRef: [{\n type: ViewChild,\n args: ['calendarRef', {\n read: ElementRef,\n }]\n }], calendarTemplateRef: [{\n type: ViewChild,\n args: ['calendarTemplateRef', {\n read: TemplateRef,\n }]\n }], triggerButtonRef: [{\n type: ViewChild,\n args: ['triggerButtonRef', {\n read: ElementRef,\n }]\n }], inputTemplateRef: [{\n type: ViewChild,\n args: ['inputTemplateRef', {\n read: TemplateRef,\n static: true,\n }]\n }], triggerButtonTemplateRef: [{\n type: ViewChild,\n args: ['triggerButtonTemplateRef', {\n read: TemplateRef,\n static: true,\n }]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUVMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsVUFBVSxFQUNWLG1CQUFtQixFQUNuQixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFHTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFdBQVcsRUFDWCxTQUFTLEVBQ1QsTUFBTSxFQUNOLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLHNCQUFzQixFQUd0QixZQUFZLEdBS2IsTUFBTSxhQUFhLENBQUM7QUFFckIsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFHNUMsT0FBTyxFQUFjLE9BQU8sRUFBZ0IsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFekQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFHckYsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFFMUYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sMkJBQTJCLENB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RUFBRSxXQUFXO3dCQUNqQixNQUFNLEVBQUUsSUFBSTtxQkFDYiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRW52aXJvbm1lbnRJbmplY3RvcixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgaW5qZWN0LFxuICBvdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgU0tZX1NUQUNLSU5HX0NPTlRFWFQsXG4gIFNreUFmZml4QXV0b0ZpdENvbnRleHQsXG4gIFNreUFmZml4U2VydmljZSxcbiAgU2t5QWZmaXhlcixcbiAgU2t5QXBwRm9ybWF0LFxuICBTa3lDb3JlQWRhcHRlclNlcnZpY2UsXG4gIFNreU92ZXJsYXlJbnN0YW5jZSxcbiAgU2t5T3ZlcmxheVNlcnZpY2UsXG4gIFNreVN0YWNraW5nQ29udGV4dCxcbn0gZnJvbSAnQHNreXV4L2NvcmUnO1xuaW1wb3J0IHsgU2t5SW5wdXRCb3hIb3N0U2VydmljZSB9IGZyb20gJ0Bza3l1eC9mb3Jtcyc7XG5pbXBvcnQgeyBTa3lMaWJSZXNvdXJjZXNTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L2kxOG4nO1xuaW1wb3J0IHsgU2t5SWNvbk1vZHVsZSB9IGZyb20gJ0Bza3l1eC9pY29uJztcbmltcG9ydCB7IFNreVRoZW1lU2VydmljZSB9IGZyb20gJ0Bza3l1eC90aGVtZSc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiwgZnJvbUV2ZW50IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgU2t5RGF0ZXRpbWVSZXNvdXJjZXNNb2R1bGUgfSBmcm9tICcuLi9zaGFyZWQvc2t5LWRhdGV0aW1lLXJlc291cmNlcy5tb2R1bGUnO1xuXG5pbXBvcnQgeyBTa3lEYXRlcGlja2VyQ2FsZW5kYXJDaGFuZ2UgfSBmcm9tICcuL2NhbGVuZGFyL2RhdGVwaWNrZXItY2FsZW5kYXItY2hhbmdlJztcbmltcG9ydCB7IFNreURhdGVwaWNrZXJDYWxlbmRhckNvbXBvbmVudCB9IGZyb20gJy4vY2FsZW5kYXIvZGF0ZXBpY2tlci1jYWxlbmRhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5RGF0ZXBpY2tlckN1c3RvbURhdGUgfSBmcm9tICcuL2RhdGVwaWNrZXItY3VzdG9tLWRhdGUnO1xuaW1wb3J0IHsgU2t5RGF0ZXBpY2tlckhvc3RTZXJ2aWNlIH0gZnJvbSAnLi9kYXRlcGlja2VyLWhvc3Quc2VydmljZSc7XG5cbmxldCBuZXh0SWQgPSAwO1xuXG4vKipcbiAqIENyZWF0ZXMgdGhlIGRhdGVwaWNrZXIgYnV0dG9uIGFuZCBjYWxlbmRhci5cbiAqIFlvdSBtdXN0IHdyYXAgdGhpcyBjb21wb25lbnQgYXJvdW5kIGFuIGlucHV0IHdpdGggdGhlIGBza3lEYXRlcGlja2VySW5wdXRgIGRpcmVjdGl2ZS5cbiAqL1xuQENvbXBvbmVudCh7XG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFNreURhdGVwaWNrZXJDYWxlbmRhckNvbXBvbmVudCxcbiAgICBTa3lEYXRldGltZVJlc291cmNlc01vZHVsZSxcbiAgICBTa3lJY29uTW9kdWxlLFxuICBdLFxuICBwcm92aWRlcnM6IFtTa3lEYXRlcGlja2VySG9zdFNlcnZpY2VdLFxuICBzZWxlY3RvcjogJ3NreS1kYXRlcGlja2VyJyxcbiAgc3R5bGVVcmw6ICcuL2RhdGVwaWNrZXIuY29tcG9uZW50LnNjc3MnLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0ZXBpY2tlci5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIFNreURhdGVwaWNrZXJDb21wb25lbnRcbiAgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIE9uSW5pdFxue1xuICAvKipcbiAgICogQWRkcyBhIGNsYXNzIHRvIHRoZSBkYXRlcGlja2VyLlxuICAgKiBAZGVmYXVsdCBcIlwiXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgcGlja2VyQ2xhc3M6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICcnO1xuXG4gIHB1YmxpYyBzZXQgZGF0ZUZvcm1hdCh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX2RhdGVGb3JtYXQgPSB2YWx1ZTtcbiAgICB0aGlzLmRhdGVGb3JtYXRDaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gICAgdGhpcy4jcG9wdWxhdGVJbnB1dEJveEhlbHBUZXh0KCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRhdGVGb3JtYXQoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy4jX2RhdGVGb3JtYXQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLiNfZGlzYWJsZWQ7XG4gIH1cblxuICBwdWJsaWMgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX2Rpc2FibGVkID0gdmFsdWU7XG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwdWJsaWMgc2V0IHNlbGVjdGVkRGF0ZSh2YWx1ZTogRGF0ZSB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19zZWxlY3RlZERhdGUgPSB2YWx1ZTtcbiAgICBpZiAodGhpcy5jYWxlbmRhcikge1xuICAgICAgdGhpcy5jYWxlbmRhci53cml0ZVZhbHVlKHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNlbGVjdGVkRGF0ZSgpOiBEYXRlIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy4jX3NlbGVjdGVkRGF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHRoZSByYW5nZSBvZiBkaXNwbGF5ZWQgZGF0ZXMgaW4gdGhlIGNhbGVuZGFyIGNoYW5nZXMuIFByb3ZpZGVzIHRoZVxuICAgKiBjdXJyZW50IHJhbmdlIG9mIGRpc3BsYXllZCBkYXRlcyBhbmQgYSBtdXRhYmxlIGBjdXN0b21EYXRlYCBwcm9wZXJ0eSBjb25zdW1lcnMgY2FuIHVzZVxuICAgKiB0byBtb2RpZnkgaW5kaXZpZHVhbCBkYXRlcyBvbiB0aGUgY2FsZW5kYXIuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIGNhbGVuZGFyRGF0ZVJhbmdlQ2hhbmdlID1cbiAgICBuZXcgRXZlbnRFbWl0dGVyPFNreURhdGVwaWNrZXJDYWxlbmRhckNoYW5nZT4oKTtcblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIGRhdGVGb3JtYXRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIG9wZW5DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gYSB1c2VyIHNlbGVjdHMgYSBkYXRlIGZyb20gdGhlIGNhbGVuZGFyLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBjYWxlbmRhckRhdGVDaGFuZ2UgPSBvdXRwdXQ8RGF0ZT4oKTtcblxuICBwdWJsaWMgY2FsZW5kYXJJZDogc3RyaW5nO1xuXG4gIHB1YmxpYyBjdXN0b21EYXRlczogU2t5RGF0ZXBpY2tlckN1c3RvbURhdGVbXSB8IHVuZGVmaW5lZDtcblxuICBwdWJsaWMgZGF0ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZT4oKTtcblxuICBwdWJsaWMgaXNEYXlwaWNrZXJXYWl0aW5nID0gZmFsc2U7XG5cbiAgcHVibGljIGlzT3BlbiA9IGZhbHNlO1xuXG4gIHB1YmxpYyBpc1Zpc2libGUgPSBmYWxzZTtcblxuICBwdWJsaWMgbWF4RGF0ZTogRGF0ZSB8IHVuZGVmaW5lZDtcblxuICBwdWJsaWMgbWluRGF0ZTogRGF0ZSB8IHVuZGVmaW5lZDtcblxuICBwdWJsaWMgc3RhcnRBdERhdGU6IERhdGUgfCB1bmRlZmluZWQ7XG5cbiAgcHVibGljIHN0YXJ0aW5nRGF5OiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgcHVibGljIHRyaWdnZXJCdXR0b25JZDogc3RyaW5nO1xuXG4gIEBWaWV3Q2hpbGQoU2t5RGF0ZXBpY2tlckNhbGVuZGFyQ29tcG9uZW50KVxuICBwdWJsaWMgY2FsZW5kYXI6IFNreURhdGVwaWNrZXJDYWxlbmRhckNvbXBvbmVudCB8IHVuZGVmaW5lZDtcblxuICBAVmlld0NoaWxkKCdjYWxlbmRhclJlZicsIHtcbiAgICByZWFkOiBFbGVtZW50UmVmLFxuICB9KVxuICBwdWJsaWMgc2V0IGNhbGVuZGFyUmVmKHZhbHVlOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLiNfY2FsZW5kYXJSZWYgPSB2YWx1ZTtcblxuICAgICAgdGhpcy4jYWRkS2V5dXBMaXN0ZW5lcigpO1xuXG4gICAgICAvLyBXYWl0IGZvciB0aGUgY2FsZW5kYXIgY29tcG9uZW50IHRvIHJlbmRlciBiZWZvcmUgZ2F1Z2luZyBkaW1lbnNpb25zLlxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmNhbGVuZGFyUmVmKSB7XG4gICAgICAgICAgdGhpcy5jYWxlbmRhcj8ud3JpdGVWYWx1ZSh0aGlzLnNlbGVjdGVkRGF0ZSk7XG5cbiAgICAgICAgICB0aGlzLiNkZXN0cm95QWZmaXhlcigpO1xuICAgICAgICAgIHRoaXMuI2NyZWF0ZUFmZml4ZXIoKTtcblxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuY2FsZW5kYXJSZWYpIHtcbiAgICAgICAgICAgICAgdGhpcy4jY29yZUFkYXB0ZXIuYXBwbHlBdXRvRm9jdXModGhpcy5jYWxlbmRhclJlZik7XG5cbiAgICAgICAgICAgICAgdGhpcy5pc1Zpc2libGUgPSB0cnVlO1xuICAgICAgICAgICAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBjYWxlbmRhclJlZigpOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy4jX2NhbGVuZGFyUmVmO1xuICB9XG5cbiAgQFZpZXdDaGlsZCgnY2FsZW5kYXJUZW1wbGF0ZVJlZicsIHtcbiAgICByZWFkOiBUZW1wbGF0ZVJlZixcbiAgfSlcbiAgcHVibGljIGNhbGVuZGFyVGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPHVua25vd24+IHwgdW5kZWZpbmVkO1xuXG4gIEBWaWV3Q2hpbGQoJ3RyaWdnZXJCdXR0b25SZWYnLCB7XG4gICAgcmVhZDogRWxlbWVudFJlZixcbiAgfSlcbiAgcHVibGljIHRyaWdnZXJCdXR0b25SZWY6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWQ7XG5cbiAgQFZpZXdDaGlsZCgnaW5wdXRUZW1wbGF0ZVJlZicsIHtcbiAgICByZWFkOiBUZW1wbGF0ZVJlZixcbiAgICBzdGF0aWM6IHRydWUsXG4gIH0pXG4gIHB1YmxpYyBpbnB1dFRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjx1bmtub3duPiB8IHVuZGVmaW5lZDtcblxuICBAVmlld0NoaWxkKCd0cmlnZ2VyQnV0dG9uVGVtcGxhdGVSZWYnLCB7XG4gICAgcmVhZDogVGVtcGxhdGVSZWYsXG4gICAgc3RhdGljOiB0cnVlLFxuICB9KVxuICBwdWJsaWMgdHJpZ2dlckJ1dHRvblRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjx1bmtub3duPiB8IHVuZGVmaW5lZDtcblxuICAjYWZmaXhlcjogU2t5QWZmaXhlciB8IHVuZGVmaW5lZDtcblxuICAjY2FsZW5kYXJVbnN1YnNjcmliZTogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgI2N1c3RvbURhdGVzU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQ7XG5cbiAgI25nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICNvdmVybGF5OiBTa3lPdmVybGF5SW5zdGFuY2UgfCB1bmRlZmluZWQ7XG5cbiAgI292ZXJsYXlLZXl1cExpc3RlbmVyOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQ7XG5cbiAgI19jYWxlbmRhclJlZjogRWxlbWVudFJlZiB8IHVuZGVmaW5lZDtcblxuICAjX2RhdGVGb3JtYXQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAjX2Rpc2FibGVkOiBib29sZWFuIHwgdW5kZWZpbmVkID0gZmFsc2U7XG5cbiAgI19zZWxlY3RlZERhdGU6IERhdGUgfCB1bmRlZmluZWQ7XG5cbiAgI2FmZml4U2VydmljZTogU2t5QWZmaXhTZXJ2aWNlO1xuICByZWFkb25seSAjYXBwRm9ybWF0dGVyID0gaW5qZWN0KFNreUFwcEZvcm1hdCk7XG4gICNjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWY7XG4gICNjb3JlQWRhcHRlcjogU2t5Q29yZUFkYXB0ZXJTZXJ2aWNlO1xuICAjZGF0ZUZvcm1hdEhpbnRUZXh0VGVtcGxhdGVTdHJpbmcgPSAnJztcbiAgcmVhZG9ubHkgI2Vudmlyb25tZW50SW5qZWN0b3IgPSBpbmplY3QoRW52aXJvbm1lbnRJbmplY3Rvcik7XG4gIHJlYWRvbmx5ICNyZXNvdXJjZVN2YyA9IGluamVjdChTa3lMaWJSZXNvdXJjZXNTZXJ2aWNlKTtcbiAgI292ZXJsYXlTZXJ2aWNlOiBTa3lPdmVybGF5U2VydmljZTtcbiAgcmVhZG9ubHkgI3pJbmRleDogT2JzZXJ2YWJsZTxudW1iZXI+IHwgdW5kZWZpbmVkO1xuXG4gIHJlYWRvbmx5ICNkYXRlcGlja2VySG9zdFN2YyA9IGluamVjdChTa3lEYXRlcGlja2VySG9zdFNlcnZpY2UpO1xuICByZWFkb25seSAjZWxlbWVudFJlZiA9IGluamVjdChFbGVtZW50UmVmKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBhZmZpeFNlcnZpY2U6IFNreUFmZml4U2VydmljZSxcbiAgICBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgY29yZUFkYXB0ZXI6IFNreUNvcmVBZGFwdGVyU2VydmljZSxcbiAgICBvdmVybGF5U2VydmljZTogU2t5T3ZlcmxheVNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgcHVibGljIGlucHV0Qm94SG9zdFNlcnZpY2U/OiBTa3lJbnB1dEJveEhvc3RTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIHRoZW1lU3ZjPzogU2t5VGhlbWVTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpXG4gICAgQEluamVjdChTS1lfU1RBQ0tJTkdfQ09OVEVYVClcbiAgICBzdGFja2luZ0NvbnRleHQ/OiBTa3lTdGFja2luZ0NvbnRleHQsXG4gICkge1xuICAgIHRoaXMuI2FmZml4U2VydmljZSA9IGFmZml4U2VydmljZTtcbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3RvciA9IGNoYW5nZURldGVjdG9yO1xuICAgIHRoaXMuI2NvcmVBZGFwdGVyID0gY29yZUFkYXB0ZXI7XG4gICAgdGhpcy4jb3ZlcmxheVNlcnZpY2UgPSBvdmVybGF5U2VydmljZTtcbiAgICBjb25zdCB1bmlxdWVJZCA9IG5leHRJZCsrO1xuICAgIHRoaXMuY2FsZW5kYXJJZCA9IGBza3ktZGF0ZXBpY2tlci1jYWxlbmRhci0ke3VuaXF1ZUlkfWA7XG4gICAgdGhpcy50cmlnZ2VyQnV0dG9uSWQgPSBgc2t5LWRhdGVwaWNrZXItYnV0dG9uLSR7dW5pcXVlSWR9YDtcbiAgICB0aGlzLiN6SW5kZXggPSBzdGFja2luZ0NvbnRleHQ/LnpJbmRleDtcblxuICAgIC8vIFVwZGF0ZSBpY29ucyB3aGVuIHRoZW1lIGNoYW5nZXMuXG4gICAgdGhlbWVTdmM/LnNldHRpbmdzQ2hhbmdlXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pbnB1dEJveEhvc3RTZXJ2aWNlICYmIHRoaXMuaW5wdXRUZW1wbGF0ZVJlZikge1xuICAgICAgdGhpcy5pbnB1dEJveEhvc3RTZXJ2aWNlLnBvcHVsYXRlKHtcbiAgICAgICAgaW5wdXRUZW1wbGF0ZTogdGhpcy5pbnB1dFRlbXBsYXRlUmVmLFxuICAgICAgICBidXR0b25zVGVtcGxhdGU6IHRoaXMudHJpZ2dlckJ1dHRvblRlbXBsYXRlUmVmLFxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuI3Jlc291cmNlU3ZjXG4gICAgICAgIC5nZXRTdHJpbmcoJ3NreXV4X2RhdGVwaWNrZXJfZm9ybWF0X2hpbnRfdGV4dCcpXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgICAgLnN1YnNjcmliZSgodGVtcGxhdGVTdHJpbmcpID0+IHtcbiAgICAgICAgICB0aGlzLiNkYXRlRm9ybWF0SGludFRleHRUZW1wbGF0ZVN0cmluZyA9IHRlbXBsYXRlU3RyaW5nO1xuICAgICAgICAgIHRoaXMuI3BvcHVsYXRlSW5wdXRCb3hIZWxwVGV4dCgpO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuI2RhdGVwaWNrZXJIb3N0U3ZjLmluaXQodGhpcyk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kYXRlQ2hhbmdlLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5vcGVuQ2hhbmdlLmNvbXBsZXRlKCk7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMuI3JlbW92ZVBpY2tlckV2ZW50TGlzdGVuZXJzKCk7XG4gICAgdGhpcy4jZGVzdHJveUFmZml4ZXIoKTtcbiAgICB0aGlzLiNkZXN0cm95T3ZlcmxheSgpO1xuICB9XG5cbiAgcHVibGljIG9uQ2FsZW5kYXJNb2RlQ2hhbmdlKCk6IHZvaWQge1xuICAgIC8vIExldCB0aGUgY2FsZW5kYXIgcG9wdWxhdGUgaW4gdGhlIERPTSBiZWZvcmUgcmVjYWxjdWxhdGluZyBwbGFjZW1lbnQuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLiNhZmZpeGVyPy5yZWFmZml4KCk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgb25TZWxlY3RlZERhdGVDaGFuZ2UodmFsdWU6IERhdGUpOiB2b2lkIHtcbiAgICB0aGlzLmNhbGVuZGFyRGF0ZUNoYW5nZS5lbWl0KHZhbHVlKTtcbiAgICB0aGlzLmRhdGVDaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gICAgdGhpcy4jY2xvc2VQaWNrZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBvblRyaWdnZXJCdXR0b25DbGljaygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc09wZW4pIHtcbiAgICAgIHRoaXMuI2Nsb3NlUGlja2VyKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuI29wZW5QaWNrZXIoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25DYWxlbmRhckRhdGVSYW5nZUNoYW5nZShldmVudD86IFNreURhdGVwaWNrZXJDYWxlbmRhckNoYW5nZSk6IHZvaWQge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKGV2ZW50KSB7XG4gICAgICB0aGlzLiNjYW5jZWxDdXN0b21EYXRlc1N1YnNjcmlwdGlvbigpO1xuXG4gICAgICBjb25zdCBhcmdzOiBTa3lEYXRlcGlja2VyQ2FsZW5kYXJDaGFuZ2UgPSB7XG4gICAgICAgIHN0YXJ0RGF0ZTogZXZlbnQuc3RhcnREYXRlLFxuICAgICAgICBlbmREYXRlOiBldmVudC5lbmREYXRlLFxuICAgICAgICBjdXN0b21EYXRlczogdW5kZWZpbmVkLFxuICAgICAgfTtcbiAgICAgIHRoaXMuY2FsZW5kYXJEYXRlUmFuZ2VDaGFuZ2UuZW1pdChhcmdzKTtcbiAgICAgIC8vIElmIGNvbnN1bWVyIGhhcyBhZGRlZCBhbiBvYnNlcnZhYmxlIHRvIHRoZSBhcmdzLCB3YXRjaCBmb3IgaW5jb21pbmcgY3VzdG9tIGRhdGVzLlxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgIGlmIChhcmdzLmN1c3RvbURhdGVzKSB7XG4gICAgICAgIHRoaXMuaXNEYXlwaWNrZXJXYWl0aW5nID0gdHJ1ZTtcbiAgICAgICAgLy8gQXZvaWQgYW4gRXhwcmVzc2lvbkNoYW5nZWRBZnRlckl0SGFzQmVlbkNoZWNrZWRFcnJvci5cbiAgICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgICAgIHRoaXMuI2N1c3RvbURhdGVzU3Vic2NyaXB0aW9uID0gYXJncy5jdXN0b21EYXRlc1xuICAgICAgICAgIC5waXBlKGRlYm91bmNlVGltZSgyNTApKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jdXN0b21EYXRlcyA9IHJlc3VsdDtcbiAgICAgICAgICAgIHRoaXMuaXNEYXlwaWNrZXJXYWl0aW5nID0gZmFsc2U7XG5cbiAgICAgICAgICAgIC8vIFRyaWdnZXIgY2hhbmdlIGRldGVjdGlvbiBpbiBjaGlsZCBjb21wb25lbnRzIHRvIHNob3cgY2hhbmdlcyBpbiB0aGUgY2FsZW5kYXIuXG4gICAgICAgICAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIElmIGNvbnN1bWVyIHJldHVybnMgYW4gdW5kZWZpbmVkIHZhbHVlIGFmdGVyIGN1c3RvbSBkYXRlcyBoYXZlXG4gICAgICAgIC8vIGFscmVhZHkgYmVlbiBlc3RhYmxpc2hlZCwgcmVtb3ZlIGN1c3RvbSBkYXRlcy5cbiAgICAgICAgaWYgKHRoaXMuY3VzdG9tRGF0ZXMpIHtcbiAgICAgICAgICB0aGlzLmN1c3RvbURhdGVzID0gdW5kZWZpbmVkO1xuICAgICAgICAgIC8vIEF2b2lkIGFuIEV4cHJlc3Npb25DaGFuZ2VkQWZ0ZXJJdEhhc0JlZW5DaGVja2VkRXJyb3IuXG4gICAgICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGRhdGVwaWNrZXIgY29tcG9uZW50IGNvbnRhaW5zIHRoZSBwcm92aWRlZCBmb2N1cyBldmVudCB0YXJnZXQuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIGNvbnRhaW5zVGFyZ2V0KHRhcmdldDogRXZlbnRUYXJnZXQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy4jZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKHRhcmdldCkgfHxcbiAgICAgIHRoaXMuZ2V0UGlja2VyUmVmKCk/Lm5hdGl2ZUVsZW1lbnQuY29udGFpbnModGFyZ2V0KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgZWxlbWVudCByZWZlcmVuY2Ugb2YgdGhlIHBpY2tlciBvdmVybGF5LlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBnZXRQaWNrZXJSZWYoKTogRWxlbWVudFJlZiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI292ZXJsYXk/LmNvbXBvbmVudFJlZi5sb2NhdGlvbjtcbiAgfVxuXG4gICNjbG9zZVBpY2tlcigpOiB2b2lkIHtcbiAgICB0aGlzLiNkZXN0cm95QWZmaXhlcigpO1xuICAgIHRoaXMuI2Rlc3Ryb3lPdmVybGF5KCk7XG4gICAgdGhpcy4jcmVtb3ZlUGlja2VyRXZlbnRMaXN0ZW5lcnMoKTtcbiAgICB0aGlzLnRyaWdnZXJCdXR0b25SZWY/Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB0aGlzLmlzT3BlbiA9IGZhbHNlO1xuICAgIHRoaXMub3BlbkNoYW5nZS5lbWl0KGZhbHNlKTtcbiAgfVxuXG4gICNvcGVuUGlja2VyKCk6IHZvaWQge1xuICAgIHRoaXMuaXNWaXNpYmxlID0gZmFsc2U7XG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG5cbiAgICB0aGlzLiNyZW1vdmVQaWNrZXJFdmVudExpc3RlbmVycygpO1xuICAgIHRoaXMuI2Rlc3Ryb3lPdmVybGF5KCk7XG4gICAgdGhpcy4jY3JlYXRlT3ZlcmxheSgpO1xuXG4gICAgdGhpcy5pc09wZW4gPSB0cnVlO1xuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgIHRoaXMub3BlbkNoYW5nZS5lbWl0KHRydWUpO1xuICB9XG5cbiAgI2NyZWF0ZUFmZml4ZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY2FsZW5kYXJSZWYgJiYgdGhpcy50cmlnZ2VyQnV0dG9uUmVmKSB7XG4gICAgICBjb25zdCBhZmZpeGVyID0gdGhpcy4jYWZmaXhTZXJ2aWNlLmNyZWF0ZUFmZml4ZXIodGhpcy5jYWxlbmRhclJlZik7XG5cbiAgICAgIC8vIEhpZGUgY2FsZW5kYXIgd2hlbiB0cmlnZ2VyIGJ1dHRvbiBpcyBzY3JvbGxlZCBvZmYtc2NyZWVuLlxuICAgICAgYWZmaXhlci5wbGFjZW1lbnRDaGFuZ2VcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI2NhbGVuZGFyVW5zdWJzY3JpYmUpKVxuICAgICAgICAuc3Vic2NyaWJlKChjaGFuZ2UpID0+IHtcbiAgICAgICAgICB0aGlzLmlzVmlzaWJsZSA9IGNoYW5nZS5wbGFjZW1lbnQgIT09IG51bGw7XG4gICAgICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICBhZmZpeGVyLmFmZml4VG8odGhpcy50cmlnZ2VyQnV0dG9uUmVmLm5hdGl2ZUVsZW1lbnQsIHtcbiAgICAgICAgYXV0b0ZpdENvbnRleHQ6IFNreUFmZml4QXV0b0ZpdENvbnRleHQuVmlld3BvcnQsXG4gICAgICAgIGVuYWJsZUF1dG9GaXQ6IHRydWUsXG4gICAgICAgIGhvcml6b250YWxBbGlnbm1lbnQ6ICdyaWdodCcsXG4gICAgICAgIGlzU3RpY2t5OiB0cnVlLFxuICAgICAgICBwbGFjZW1lbnQ6ICdiZWxvdycsXG4gICAgICB9KTtcblxuICAgICAgdGhpcy4jYWZmaXhlciA9IGFmZml4ZXI7XG4gICAgfVxuICB9XG5cbiAgI2Rlc3Ryb3lBZmZpeGVyKCk6IHZvaWQge1xuICAgIC8qaXN0YW5idWwgaWdub3JlIGVsc2UqL1xuICAgIGlmICh0aGlzLiNhZmZpeGVyKSB7XG4gICAgICB0aGlzLiNhZmZpeGVyLmRlc3Ryb3koKTtcbiAgICAgIHRoaXMuI2FmZml4ZXIgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgI2NyZWF0ZU92ZXJsYXkoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY2FsZW5kYXJUZW1wbGF0ZVJlZikge1xuICAgICAgY29uc3Qgb3ZlcmxheSA9IHRoaXMuI292ZXJsYXlTZXJ2aWNlLmNyZWF0ZSh7XG4gICAgICAgIHdyYXBwZXJDbGFzczogdGhpcy5waWNrZXJDbGFzcyxcbiAgICAgICAgZW5hYmxlQ2xvc2U6IGZhbHNlLFxuICAgICAgICBlbmFibGVQb2ludGVyRXZlbnRzOiBmYWxzZSxcbiAgICAgICAgZW52aXJvbm1lbnRJbmplY3RvcjogdGhpcy4jZW52aXJvbm1lbnRJbmplY3RvcixcbiAgICAgIH0pO1xuXG4gICAgICBpZiAodGhpcy4jekluZGV4KSB7XG4gICAgICAgIHRoaXMuI3pJbmRleFxuICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNjYWxlbmRhclVuc3Vic2NyaWJlKSlcbiAgICAgICAgICAuc3Vic2NyaWJlKCh6SW5kZXgpID0+IHtcbiAgICAgICAgICAgIG92ZXJsYXkuY29tcG9uZW50UmVmLmluc3RhbmNlLnpJbmRleCA9IHpJbmRleC50b1N0cmluZygxMCk7XG4gICAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIG92ZXJsYXkuYmFja2Ryb3BDbGlja1xuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jY2FsZW5kYXJVbnN1YnNjcmliZSkpXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICAgICAgICB0aGlzLiNjbG9zZVBpY2tlcigpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgIG92ZXJsYXkuYXR0YWNoVGVtcGxhdGUodGhpcy5jYWxlbmRhclRlbXBsYXRlUmVmKTtcblxuICAgICAgdGhpcy4jb3ZlcmxheSA9IG92ZXJsYXk7XG4gICAgfVxuICB9XG5cbiAgI2Rlc3Ryb3lPdmVybGF5KCk6IHZvaWQge1xuICAgIC8qaXN0YW5idWwgaWdub3JlIGVsc2UqL1xuICAgIGlmICh0aGlzLiNvdmVybGF5KSB7XG4gICAgICB0aGlzLiNvdmVybGF5U2VydmljZS5jbG9zZSh0aGlzLiNvdmVybGF5KTtcbiAgICAgIHRoaXMuI292ZXJsYXkgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgI2FkZEtleXVwTGlzdGVuZXIoKTogdm9pZCB7XG4gICAgY29uc3QgZGF0ZXBpY2tlckNhbGVuZGFyRWxlbWVudCA9IHRoaXMuY2FsZW5kYXJSZWY/Lm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICBpZiAoZGF0ZXBpY2tlckNhbGVuZGFyRWxlbWVudCkge1xuICAgICAgdGhpcy4jb3ZlcmxheUtleXVwTGlzdGVuZXIgPSBmcm9tRXZlbnQ8S2V5Ym9hcmRFdmVudD4oXG4gICAgICAgIGRhdGVwaWNrZXJDYWxlbmRhckVsZW1lbnQsXG4gICAgICAgICdrZXl1cCcsXG4gICAgICApXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgICBjb25zdCBrZXkgPSBldmVudC5rZXk/LnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgaWYgKGtleSA9PT0gJ2VzY2FwZScgJiYgdGhpcy5pc09wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuI2Nsb3NlUGlja2VyKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAjcmVtb3ZlUGlja2VyRXZlbnRMaXN0ZW5lcnMoKTogdm9pZCB7XG4gICAgdGhpcy4jY2FsZW5kYXJVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy4jY2FsZW5kYXJVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMuI2NhbGVuZGFyVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgIHRoaXMuI292ZXJsYXlLZXl1cExpc3RlbmVyPy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgI2NhbmNlbEN1c3RvbURhdGVzU3Vic2NyaXB0aW9uKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLiNjdXN0b21EYXRlc1N1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy4jY3VzdG9tRGF0ZXNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgIHRoaXMuI2N1c3RvbURhdGVzU3Vic2NyaXB0aW9uID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gICNwb3B1bGF0ZUlucHV0Qm94SGVscFRleHQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaW5wdXRCb3hIb3N0U2VydmljZSAmJiB0aGlzLmlucHV0VGVtcGxhdGVSZWYpIHtcbiAgICAgIC8qIHNhZmV0eSBjaGVjayAqL1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgIGlmICh0aGlzLmRhdGVGb3JtYXQpIHtcbiAgICAgICAgdGhpcy5pbnB1dEJveEhvc3RTZXJ2aWNlPy5zZXRIaW50VGV4dChcbiAgICAgICAgICB0aGlzLiNhcHBGb3JtYXR0ZXIuZm9ybWF0VGV4dChcbiAgICAgICAgICAgIHRoaXMuI2RhdGVGb3JtYXRIaW50VGV4dFRlbXBsYXRlU3RyaW5nLFxuICAgICAgICAgICAgdGhpcy5kYXRlRm9ybWF0LFxuICAgICAgICAgICksXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmlucHV0Qm94SG9zdFNlcnZpY2U/LnNldEhpbnRUZXh0KCcnKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJza3ktZGF0ZXBpY2tlclwiPlxuICBAaWYgKCFpbnB1dEJveEhvc3RTZXJ2aWNlKSB7XG4gICAgPGRpdiBjbGFzcz1cInNreS1pbnB1dC1ncm91cFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImlucHV0VGVtcGxhdGVSZWZcIiAvPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRyaWdnZXJCdXR0b25UZW1wbGF0ZVJlZlwiIC8+XG4gICAgPC9kaXY+XG4gIH1cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2lucHV0VGVtcGxhdGVSZWY+XG4gIDxuZy1jb250ZW50IC8+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3RyaWdnZXJCdXR0b25UZW1wbGF0ZVJlZj5cbiAgPGRpdiBjbGFzcz1cInNreS1pbnB1dC1ncm91cC1idG5cIj5cbiAgICA8YnV0dG9uXG4gICAgICAjdHJpZ2dlckJ1dHRvblJlZlxuICAgICAgYXJpYS1oYXNwb3B1cD1cImRpYWxvZ1wiXG4gICAgICBjbGFzcz1cInNreS1idG4gc2t5LWJ0bi1kZWZhdWx0IHNreS1pbnB1dC1ncm91cC1kYXRlcGlja2VyLWJ0blwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIFthdHRyLmFyaWEtY29udHJvbHNdPVwiaXNPcGVuID8gY2FsZW5kYXJJZCA6IG51bGxcIlxuICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJpc09wZW5cIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgaW5wdXRCb3hIb3N0U2VydmljZT8ubGFiZWxUZXh0XG4gICAgICAgICAgPyAoJ3NreXV4X2RhdGVwaWNrZXJfdHJpZ2dlcl9idXR0b25fbGFiZWxfY29udGV4dCdcbiAgICAgICAgICAgIHwgc2t5TGliUmVzb3VyY2VzOiBpbnB1dEJveEhvc3RTZXJ2aWNlPy5sYWJlbFRleHQpXG4gICAgICAgICAgOiAoJ3NreXV4X2RhdGVwaWNrZXJfdHJpZ2dlcl9idXR0b25fbGFiZWwnIHwgc2t5TGliUmVzb3VyY2VzKVxuICAgICAgXCJcbiAgICAgIFthdHRyLmlkXT1cInRyaWdnZXJCdXR0b25JZFwiXG4gICAgICBbYXR0ci50aXRsZV09XCJcbiAgICAgICAgaW5wdXRCb3hIb3N0U2VydmljZT8ubGFiZWxUZXh0XG4gICAgICAgICAgPyAoJ3NreXV4X2RhdGVwaWNrZXJfdHJpZ2dlcl9idXR0b25fbGFiZWxfY29udGV4dCdcbiAgICAgICAgICAgIHwgc2t5TGliUmVzb3VyY2VzOiBpbnB1dEJveEhvc3RTZXJ2aWNlPy5sYWJlbFRleHQpXG4gICAgICAgICAgOiAoJ3NreXV4X2RhdGVwaWNrZXJfdHJpZ2dlcl9idXR0b25fbGFiZWwnIHwgc2t5TGliUmVzb3VyY2VzKVxuICAgICAgXCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAoY2xpY2spPVwib25UcmlnZ2VyQnV0dG9uQ2xpY2soKVwiXG4gICAgPlxuICAgICAgPHNreS1pY29uIGljb25OYW1lPVwiY2FsZW5kYXItbHRyXCIgaWNvblNpemU9XCJsXCIgLz5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2NhbGVuZGFyVGVtcGxhdGVSZWY+XG4gIDxkaXZcbiAgICAjY2FsZW5kYXJSZWZcbiAgICBjbGFzcz1cInNreS1kYXRlcGlja2VyLWNhbGVuZGFyLWNvbnRhaW5lciBza3ktc2hhZG93IHNreS1lbGV2YXRpb24tNFwiXG4gICAgcm9sZT1cImRpYWxvZ1wiXG4gICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cInRyaWdnZXJCdXR0b25JZFwiXG4gICAgW2F0dHIuaWRdPVwiY2FsZW5kYXJJZFwiXG4gICAgW2NsYXNzLnNreS1kYXRlcGlja2VyLWhpZGRlbl09XCIhaXNWaXNpYmxlXCJcbiAgPlxuICAgIDxza3ktZGF0ZXBpY2tlci1jYWxlbmRhclxuICAgICAgY2RrVHJhcEZvY3VzXG4gICAgICBbY3VzdG9tRGF0ZXNdPVwiY3VzdG9tRGF0ZXNcIlxuICAgICAgW2lzRGF5cGlja2VyV2FpdGluZ109XCJpc0RheXBpY2tlcldhaXRpbmdcIlxuICAgICAgW21heERhdGVdPVwibWF4RGF0ZVwiXG4gICAgICBbbWluRGF0ZV09XCJtaW5EYXRlXCJcbiAgICAgIFtzdGFydEF0RGF0ZV09XCJzdGFydEF0RGF0ZVwiXG4gICAgICBbc3RhcnRpbmdEYXldPVwic3RhcnRpbmdEYXlcIlxuICAgICAgKGNhbGVuZGFyRGF0ZVJhbmdlQ2hhbmdlKT1cIm9uQ2FsZW5kYXJEYXRlUmFuZ2VDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAoY2FsZW5kYXJNb2RlQ2hhbmdlKT1cIm9uQ2FsZW5kYXJNb2RlQ2hhbmdlKClcIlxuICAgICAgKHNlbGVjdGVkRGF0ZUNoYW5nZSk9XCJvblNlbGVjdGVkRGF0ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAvPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=","import { Directive, HostListener, Input, Optional, forwardRef, inject, } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR, } from '@angular/forms';\nimport moment from 'moment';\nimport { Subject } from 'rxjs';\nimport { distinctUntilChanged, takeUntil } from 'rxjs/operators';\nimport { SkyDateFormatter } from './date-formatter';\nimport { SkyDatepickerHostService } from './datepicker-host.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"./datepicker-config.service\";\nimport * as i2 from \"@skyux/i18n\";\nimport * as i3 from \"./datepicker.component\";\nconst SKY_DATEPICKER_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SkyDatepickerInputDirective),\n multi: true,\n};\nconst SKY_DATEPICKER_VALIDATOR = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => SkyDatepickerInputDirective),\n multi: true,\n};\nexport class SkyDatepickerInputDirective {\n /**\n * The date format for the input. Place this attribute on the `input` element\n * to override the default in the `SkyDatepickerConfigService`.\n * @default \"MM/DD/YYYY\"\n */\n set dateFormat(value) {\n /* istanbul ignore else */\n if (value !== this.#_dateFormat) {\n this.#_dateFormat = value;\n this.#applyDateFormat();\n }\n }\n // TODO: Refactor to not have getter logic\n get dateFormat() {\n return (this.#_dateFormat ||\n this.#configService.dateFormat ||\n this.#preferredShortDateFormat);\n }\n /**\n * Whether to disable the datepicker on template-driven forms. Don't use this input on reactive forms because they may overwrite the input or leave the control out of sync.\n * To set the disabled state on reactive forms, use the `FormControl` instead.\n * @default false\n */\n set disabled(value) {\n this.#_disabled = value || false;\n this.#datepickerComponent.disabled = value;\n this.#renderer.setProperty(this.#elementRef.nativeElement, 'disabled', value);\n }\n get disabled() {\n return this.#_disabled;\n }\n /**\n * The latest date that is available in the calendar. Place this attribute on\n * the `input` element to override the default in `SkyDatepickerConfigService`.\n */\n set maxDate(value) {\n this.#_maxDate = value;\n this.#datepickerComponent.maxDate = this.maxDate;\n this.#onValidatorChange();\n }\n // TODO: Refactor to not have getter logic\n get maxDate() {\n return this.#_maxDate || this.#configService.maxDate;\n }\n /**\n * The earliest date that is available in the calendar. Place this attribute on\n * the `input` element to override the default in `SkyDatepickerConfigService`. To avoid validation errors, the time associated with the minimum date must be midnight. This is necessary because the datepicker automatically sets the time on the `Date` object for selected dates to midnight in the current user's time zone.\n */\n set minDate(value) {\n this.#_minDate = value;\n this.#datepickerComponent.minDate = this.minDate;\n this.#onValidatorChange();\n }\n // TODO: Refactor to not have getter logic\n get minDate() {\n return this.#_minDate || this.#configService.minDate;\n }\n /**\n * The date to open the calendar to initially. Place this attribute on the `input` element to override the default in `SkyDatepickerConfigService`.\n * @default The current date\n */\n set startAtDate(value) {\n this.#_startAtDate = value;\n this.#datepickerComponent.startAtDate = this.startAtDate;\n }\n // TODO: Refactor to not have getter logic\n get startAtDate() {\n return this.#_startAtDate || this.#configService.startAtDate;\n }\n /**\n * Creates the datepicker input and calendar. Place this directive on an `input` element,\n * and wrap the input in a `sky-datepicker` component. The value that users select is driven\n * through the `ngModel` attribute specified on the `input` element.\n * @required\n */\n set skyDatepickerInput(value) {\n if (value) {\n console.warn('[Deprecation warning] You no longer need to provide a template reference variable ' +\n 'to the `skyDatepickerInput` attribute (this will be a breaking change in the next ' +\n 'major version release).\\n' +\n 'Do this instead:\\n' +\n '<sky-datepicker>\\n <input skyDatepickerInput />\\n</sky-datepicker>');\n }\n }\n /**\n * The starting day of the week in the calendar, where `0` sets the starting day\n * to Sunday. Place this attribute on the `input` element to override the default\n * in `SkyDatepickerConfigService`.\n * @default 0\n */\n set startingDay(value) {\n this.#_startingDay = value;\n this.#datepickerComponent.startingDay = this.startingDay;\n this.#onValidatorChange();\n }\n // TODO: Refactor to not have getter logic\n get startingDay() {\n return this.#_startingDay || this.#configService.startingDay;\n }\n /**\n * Whether the format of the date value must match the format from the `dateFormat` value.\n * If this property is `true` and the datepicker input directive cannot find an exact match, then\n * the input is marked as invalid.\n * If this property is `false` and the datepicker input directive cannot find an exact match, then\n * it attempts to format the string based on the [ISO 8601 standard format](https://www.iso.org/iso-8601-date-and-time-format.html).\n * @default false\n */\n set strict(value) {\n this.#_strict = value || false;\n }\n get strict() {\n return this.#_strict;\n }\n get #value() {\n return this.#_value;\n }\n set #value(value) {\n this.#updateValue(value);\n }\n #control;\n #dateFormatter;\n #preferredShortDateFormat;\n #ngUnsubscribe;\n #notifyTouched;\n #_dateFormat;\n #_disabled;\n #_maxDate;\n #_minDate;\n #_startAtDate;\n #_startingDay;\n #_strict;\n #_value;\n #changeDetector;\n #configService;\n #elementRef;\n #localeProvider;\n #renderer;\n #datepickerComponent;\n #datepickerHostSvc;\n constructor(changeDetector, configService, elementRef, localeProvider, renderer, datepickerComponent) {\n /**\n * Whether to disable date validation on the datepicker input.\n * @default false\n */\n this.skyDatepickerNoValidate = false;\n this.#dateFormatter = new SkyDateFormatter();\n this.#ngUnsubscribe = new Subject();\n this.#_disabled = false;\n this.#_strict = false;\n this.#datepickerHostSvc = inject(SkyDatepickerHostService, {\n optional: true,\n });\n // istanbul ignore next\n this.#onChange = (_) => { };\n // istanbul ignore next\n this.#onValidatorChange = () => { };\n if (!datepickerComponent) {\n throw new Error('You must wrap the `skyDatepickerInput` directive within a ' +\n '`<sky-datepicker>` component!');\n }\n this.#changeDetector = changeDetector;\n this.#configService = configService;\n this.#elementRef = elementRef;\n this.#localeProvider = localeProvider;\n this.#renderer = renderer;\n this.#datepickerComponent = datepickerComponent;\n this.#localeProvider\n .getLocaleInfo()\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((localeInfo) => {\n SkyDateFormatter.setLocale(localeInfo.locale);\n this.#preferredShortDateFormat =\n SkyDateFormatter.getPreferredShortDateFormat();\n this.#applyDateFormat();\n });\n this.#datepickerHostSvc?.focusout\n .pipe(takeUntilDestroyed())\n .subscribe((evt) => {\n const isFocusingInput = evt.relatedTarget === this.#elementRef.nativeElement;\n if (!isFocusingInput) {\n this.#notifyTouched?.();\n }\n });\n }\n ngOnInit() {\n const element = this.#elementRef.nativeElement;\n this.#renderer.addClass(element, 'sky-form-control');\n }\n ngAfterContentInit() {\n this.#datepickerComponent.dateFormat = this.dateFormat;\n this.#datepickerComponent.dateChange\n .pipe(distinctUntilChanged())\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((value) => {\n this.#value = value;\n });\n }\n ngAfterViewInit() {\n // This is needed to address a bug in Angular 4.\n // When a control value is set initially, its value is not represented on the view.\n // See: https://github.com/angular/angular/issues/13792\n // Of note is the parent check which allows us to determine if the form is reactive.\n // Without this check there is a changed before checked error\n /* istanbul ignore else */\n if (this.#control && this.#control.parent) {\n setTimeout(() => {\n this.#control?.setValue(this.#value, {\n emitEvent: false,\n });\n this.#changeDetector.markForCheck();\n });\n }\n }\n ngOnDestroy() {\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n }\n onInputChange(event) {\n const value = event.target.value;\n if (this.skyDatepickerNoValidate) {\n this.#onValueChange(value);\n return;\n }\n // Don't try to parse the string value into a Date value if it is malformed.\n if (this.#isDateStringValid(value)) {\n this.#onValueChange(value);\n return;\n }\n this.#_value = value;\n this.#onChange(value);\n this.#control?.setErrors({\n skyDate: {\n invalid: value,\n },\n });\n }\n onInput() {\n this.#control?.markAsDirty();\n }\n writeValue(value) {\n this.#updateValue(value, false);\n }\n validate(control) {\n if (!this.#control) {\n this.#control = control;\n // Account for any date conversion that may have occurred prior to validation.\n if (this.#control.value !== this.#value) {\n this.#control.patchValue(this.#value, { emitEvent: false });\n }\n }\n if (this.skyDatepickerNoValidate) {\n return null;\n }\n const value = control.value;\n if (!value) {\n return null;\n }\n if (value instanceof Date) {\n const isDateValid = this.#dateFormatter.dateIsValid(value);\n if (!isDateValid) {\n // Mark the invalid control as touched so that the input's invalid CSS styles appear.\n // (This is only required when the invalid value is set by the FormControl constructor.)\n this.#control.markAsTouched();\n return {\n skyDate: {\n invalid: value,\n },\n };\n }\n const minDate = this.minDate;\n if (minDate &&\n this.#dateFormatter.dateIsValid(minDate) &&\n value < minDate) {\n return {\n skyDate: {\n minDate,\n minDateFormatted: this.#dateFormatter.format(minDate, this.dateFormat),\n },\n };\n }\n const maxDate = this.maxDate;\n if (maxDate &&\n this.#dateFormatter.dateIsValid(maxDate) &&\n value > maxDate) {\n return {\n skyDate: {\n maxDate,\n maxDateFormatted: this.#dateFormatter.format(maxDate, this.dateFormat),\n },\n };\n }\n }\n else {\n // Mark the invalid control as touched so that the input's invalid CSS styles appear.\n // (This is only required when the invalid value is set by the FormControl constructor.)\n this.#control.markAsTouched();\n return {\n skyDate: {\n invalid: value,\n },\n };\n }\n return null;\n }\n registerOnChange(fn) {\n this.#onChange = fn;\n }\n registerOnTouched(fn) {\n this.#notifyTouched = fn;\n }\n registerOnValidatorChange(fn) {\n this.#onValidatorChange = fn;\n }\n setDisabledState(disabled) {\n this.disabled = disabled;\n this.#datepickerComponent.disabled = disabled;\n }\n /**\n * Detects changes to the underlying input element's value and updates the ngModel accordingly.\n * This is useful if you need to update the ngModel value before the input element loses focus.\n */\n detectInputValueChange() {\n this.#onValueChange(this.#elementRef.nativeElement.value);\n }\n onFocusout(evt) {\n if (!this.#datepickerHostSvc?.isFocusingDatepicker(evt)) {\n this.#notifyTouched?.();\n }\n }\n #applyDateFormat() {\n this.#datepickerComponent.dateFormat = this.dateFormat;\n if (this.#value) {\n const formattedDate = this.#dateFormatter.format(this.#value, this.dateFormat);\n this.#setInputElementValue(formattedDate);\n this.#changeDetector.markForCheck();\n }\n }\n #onValueChange(newValue) {\n this.#value = newValue;\n }\n #setInputElementValue(value) {\n this.#renderer.setProperty(this.#elementRef.nativeElement, 'value', value);\n }\n /**\n * Gets the date value from a value - if possible.\n * Will not convert unconvertible dates or numbers outside of the current month's number of days.\n * Returns `undefined` if the value can not be converted.\n */\n #getDateValue(value) {\n if (value instanceof Date) {\n return value;\n }\n else if (typeof value === 'string') {\n return this.#getShortcutOrDateValue(value);\n }\n return undefined;\n }\n /**\n * Converts a string to a date object if the string is a valid date string.\n * It will also convert numeric input to a date if that number is within the current month's number of days.\n * If the string can not be converted, `undefined` be returned.\n */\n #getShortcutOrDateValue(value) {\n const num = Number(value);\n if (Number.isInteger(num)) {\n // We require 8 digits in order to know that we have all information needed to determine what part of the number is the month (2), day (2), and year (4).\n if (value.length === 8) {\n const regex = new RegExp(/\\b(MM)\\b|\\b(DD)\\b|\\b(YY)\\b|\\b(YYYY)\\b/, 'g');\n const formatTokensOnly = this.dateFormat\n ?.match(regex)\n ?.join('')\n .replace(new RegExp(/Y+/), 'YYYY');\n if (formatTokensOnly && formatTokensOnly.length === 8) {\n const date = this.#dateFormatter.getDateFromString(value, formatTokensOnly, true);\n if (this.#dateFormatter.dateIsValid(date)) {\n return date;\n }\n }\n }\n const now = new Date();\n const shortcutDate = new Date(now.getFullYear(), now.getMonth(), num);\n const daysInMonth = shortcutDate.getDate();\n if (num > 0 && num <= daysInMonth) {\n return shortcutDate;\n }\n }\n else {\n const date = this.#dateFormatter.getDateFromString(value, this.dateFormat, this.strict);\n if (this.#dateFormatter.dateIsValid(date)) {\n return date;\n }\n }\n return undefined;\n }\n /**\n * Validates the input value to ensure it is formatted correctly.\n */\n #isDateStringValid(value) {\n if (!value || typeof value !== 'string') {\n return true;\n }\n // Does the value only include digits, dashes, or slashes?\n const regexp = /^[\\d/-]+$/;\n const isValid = regexp.test(value);\n if (isValid) {\n return true;\n }\n return moment(value).isValid();\n }\n // istanbul ignore next\n #onChange;\n // istanbul ignore next\n #onValidatorChange;\n /**\n * Update the value of the form control and input element\n * @param emitEvent Denotes if we emit an event to the consumer's form control. We do not want to do this if the value is being updated via a `setValue` call or a `patchValue` call as this is already handled by Angular.\n * In these cases we do not want to fire `onChange` as it will cause extra `valueChange` and `statusChange` events and the status of the form should not be affected by these changes.\n */\n #updateValue(value, emitEvent = true) {\n if (this.#_value === value) {\n return;\n }\n const isValidDateString = this.#isDateStringValid(value);\n // If the string value supplied is malformed, do not set the value to its Date equivalent.\n // (JavaScript's Date parser will convert poorly formatted dates to Date objects, such as \"abc 123\", which isn't ideal.)\n if (!isValidDateString) {\n this.#_value = value;\n if (emitEvent) {\n this.#onChange(this.#_value);\n }\n else {\n this.#control?.setValue(this.#_value, { emitEvent: false });\n }\n this.#datepickerComponent.selectedDate = this.#_value;\n this.#setInputElementValue(value);\n }\n else {\n // This value represents the date value for the input if possible.\n // This value will take into account all shortcut functionality.\n const dateValue = this.#getDateValue(value);\n const areDatesEqual = this.#_value instanceof Date &&\n dateValue &&\n dateValue.getTime() === this.#_value.getTime();\n if (dateValue !== this.#_value || !areDatesEqual) {\n this.#_value = dateValue || value;\n if (emitEvent) {\n this.#onChange(this.#_value);\n }\n else {\n this.#control?.setValue(this.#_value, { emitEvent: false });\n }\n this.#datepickerComponent.selectedDate = this.#_value;\n }\n if (dateValue) {\n const formattedDateString = this.#dateFormatter.format(dateValue, this.dateFormat);\n this.#setInputElementValue(formattedDateString);\n }\n else {\n this.#setInputElementValue(value || '');\n }\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDatepickerInputDirective, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.SkyDatepickerConfigService }, { token: i0.ElementRef }, { token: i2.SkyAppLocaleProvider }, { token: i0.Renderer2 }, { token: i3.SkyDatepickerComponent, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.0.5\", type: SkyDatepickerInputDirective, isStandalone: true, selector: \"[skyDatepickerInput]\", inputs: { dateFormat: \"dateFormat\", disabled: \"disabled\", maxDate: \"maxDate\", minDate: \"minDate\", startAtDate: \"startAtDate\", skyDatepickerInput: \"skyDatepickerInput\", skyDatepickerNoValidate: \"skyDatepickerNoValidate\", startingDay: \"startingDay\", strict: \"strict\" }, host: { listeners: { \"focusout\": \"onFocusout($event)\", \"change\": \"onInputChange($event)\", \"input\": \"onInput()\" } }, providers: [SKY_DATEPICKER_VALUE_ACCESSOR, SKY_DATEPICKER_VALIDATOR], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDatepickerInputDirective, decorators: [{\n type: Directive,\n args: [{\n host: {\n '(focusout)': 'onFocusout($event)',\n },\n providers: [SKY_DATEPICKER_VALUE_ACCESSOR, SKY_DATEPICKER_VALIDATOR],\n selector: '[skyDatepickerInput]',\n standalone: true,\n }]\n }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.SkyDatepickerConfigService }, { type: i0.ElementRef }, { type: i2.SkyAppLocaleProvider }, { type: i0.Renderer2 }, { type: i3.SkyDatepickerComponent, decorators: [{\n type: Optional\n }] }], propDecorators: { dateFormat: [{\n type: Input\n }], disabled: [{\n type: Input\n }], maxDate: [{\n type: Input\n }], minDate: [{\n type: Input\n }], startAtDate: [{\n type: Input\n }], skyDatepickerInput: [{\n type: Input\n }], skyDatepickerNoValidate: [{\n type: Input\n }], startingDay: [{\n type: Input\n }], strict: [{\n type: Input\n }], onInputChange: [{\n type: HostListener,\n args: ['change', ['$event']]\n }], onInput: [{\n type: HostListener,\n args: ['input']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci1pbnB1dC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci1pbnB1dC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUlMLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUdMLFFBQVEsRUFFUixVQUFVLEVBQ1YsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFHTCxhQUFhLEVBQ2IsaUJBQWlCLEdBR2xCLE1BQU0sZ0JBQWdCLENBQUM7QUFHeEIsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWpFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXBELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7OztBQUdyRSxNQUFNLDZCQUE2QixHQUFHO0lBQ3BDLE9BQU8sRUFBRSxpQkFBaUI7SUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQztJQUMxRCxLQUFLLEVBQUUsSUFBSTtDQUNaLENBQUM7QUFFRixNQUFNLHdCQUF3QixHQUFHO0lBQy9CLE9BQU8sRUFBRSxhQUFhO0lBQ3RCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsMkJBQTJCLENBQUM7SUFDMUQsS0FBSyxFQUFFLElBQUk7Q0FDWixDQUFDO0FBVUYsTUFBTSxPQUFPLDJCQUEy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RG5CLFlBQVk7dUJBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQTBCM0IsT0FBTztzQkFEYixZQUFZO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIFJlbmRlcmVyMixcbiAgZm9yd2FyZFJlZixcbiAgaW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7XG4gIEFic3RyYWN0Q29udHJvbCxcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gIE5HX1ZBTElEQVRPUlMsXG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxuICBWYWxpZGF0aW9uRXJyb3JzLFxuICBWYWxpZGF0b3IsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFNreUFwcExvY2FsZVByb3ZpZGVyIH0gZnJvbSAnQHNreXV4L2kxOG4nO1xuXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBTa3lEYXRlRm9ybWF0dGVyIH0gZnJvbSAnLi9kYXRlLWZvcm1hdHRlcic7XG5pbXBvcnQgeyBTa3lEYXRlcGlja2VyQ29uZmlnU2VydmljZSB9IGZyb20gJy4vZGF0ZXBpY2tlci1jb25maWcuc2VydmljZSc7XG5pbXBvcnQgeyBTa3lEYXRlcGlja2VySG9zdFNlcnZpY2UgfSBmcm9tICcuL2RhdGVwaWNrZXItaG9zdC5zZXJ2aWNlJztcbmltcG9ydCB7IFNreURhdGVwaWNrZXJDb21wb25lbnQgfSBmcm9tICcuL2RhdGVwaWNrZXIuY29tcG9uZW50JztcblxuY29uc3QgU0tZX0RBVEVQSUNLRVJfVkFMVUVfQUNDRVNTT1IgPSB7XG4gIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBTa3lEYXRlcGlja2VySW5wdXREaXJlY3RpdmUpLFxuICBtdWx0aTogdHJ1ZSxcbn07XG5cbmNvbnN0IFNLWV9EQVRFUElDS0VSX1ZBTElEQVRPUiA9IHtcbiAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gU2t5RGF0ZXBpY2tlcklucHV0RGlyZWN0aXZlKSxcbiAgbXVsdGk6IHRydWUsXG59O1xuXG5ARGlyZWN0aXZlKHtcbiAgaG9zdDoge1xuICAgICcoZm9jdXNvdXQpJzogJ29uRm9jdXNvdXQoJGV2ZW50KScsXG4gIH0sXG4gIHByb3ZpZGVyczogW1NLWV9EQVRFUElDS0VSX1ZBTFVFX0FDQ0VTU09SLCBTS1lfREFURVBJQ0tFUl9WQUxJREFUT1JdLFxuICBzZWxlY3RvcjogJ1tza3lEYXRlcGlja2VySW5wdXRdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5RGF0ZXBpY2tlcklucHV0RGlyZWN0aXZlXG4gIGltcGxlbWVudHNcbiAgICBPbkluaXQsXG4gICAgT25EZXN0cm95LFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgICBWYWxpZGF0b3JcbntcbiAgLyoqXG4gICAqIFRoZSBkYXRlIGZvcm1hdCBmb3IgdGhlIGlucHV0LiBQbGFjZSB0aGlzIGF0dHJpYnV0ZSBvbiB0aGUgYGlucHV0YCBlbGVtZW50XG4gICAqIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGluIHRoZSBgU2t5RGF0ZXBpY2tlckNvbmZpZ1NlcnZpY2VgLlxuICAgKiBAZGVmYXVsdCBcIk1NL0REL1lZWVlcIlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBkYXRlRm9ybWF0KHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICh2YWx1ZSAhPT0gdGhpcy4jX2RhdGVGb3JtYXQpIHtcbiAgICAgIHRoaXMuI19kYXRlRm9ybWF0ID0gdmFsdWU7XG4gICAgICB0aGlzLiNhcHBseURhdGVGb3JtYXQoKTtcbiAgICB9XG4gIH1cblxuICAvLyBUT0RPOiBSZWZhY3RvciB0byBub3QgaGF2ZSBnZXR0ZXIgbG9naWNcbiAgcHVibGljIGdldCBkYXRlRm9ybWF0KCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuI19kYXRlRm9ybWF0IHx8XG4gICAgICB0aGlzLiNjb25maWdTZXJ2aWNlLmRhdGVGb3JtYXQgfHxcbiAgICAgIHRoaXMuI3ByZWZlcnJlZFNob3J0RGF0ZUZvcm1hdFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0byBkaXNhYmxlIHRoZSBkYXRlcGlja2VyIG9uIHRlbXBsYXRlLWRyaXZlbiBmb3Jtcy4gRG9uJ3QgdXNlIHRoaXMgaW5wdXQgb24gcmVhY3RpdmUgZm9ybXMgYmVjYXVzZSB0aGV5IG1heSBvdmVyd3JpdGUgdGhlIGlucHV0IG9yIGxlYXZlIHRoZSBjb250cm9sIG91dCBvZiBzeW5jLlxuICAgKiBUbyBzZXQgdGhlIGRpc2FibGVkIHN0YXRlIG9uIHJlYWN0aXZlIGZvcm1zLCB1c2UgdGhlIGBGb3JtQ29udHJvbGAgaW5zdGVhZC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfZGlzYWJsZWQgPSB2YWx1ZSB8fCBmYWxzZTtcbiAgICB0aGlzLiNkYXRlcGlja2VyQ29tcG9uZW50LmRpc2FibGVkID0gdmFsdWU7XG4gICAgdGhpcy4jcmVuZGVyZXIuc2V0UHJvcGVydHkoXG4gICAgICB0aGlzLiNlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAnZGlzYWJsZWQnLFxuICAgICAgdmFsdWUsXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuI19kaXNhYmxlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgbGF0ZXN0IGRhdGUgdGhhdCBpcyBhdmFpbGFibGUgaW4gdGhlIGNhbGVuZGFyLiBQbGFjZSB0aGlzIGF0dHJpYnV0ZSBvblxuICAgKiB0aGUgYGlucHV0YCBlbGVtZW50IHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGluIGBTa3lEYXRlcGlja2VyQ29uZmlnU2VydmljZWAuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IG1heERhdGUodmFsdWU6IERhdGUgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfbWF4RGF0ZSA9IHZhbHVlO1xuICAgIHRoaXMuI2RhdGVwaWNrZXJDb21wb25lbnQubWF4RGF0ZSA9IHRoaXMubWF4RGF0ZTtcblxuICAgIHRoaXMuI29uVmFsaWRhdG9yQ2hhbmdlKCk7XG4gIH1cblxuICAvLyBUT0RPOiBSZWZhY3RvciB0byBub3QgaGF2ZSBnZXR0ZXIgbG9naWNcbiAgcHVibGljIGdldCBtYXhEYXRlKCk6IERhdGUgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLiNfbWF4RGF0ZSB8fCB0aGlzLiNjb25maWdTZXJ2aWNlLm1heERhdGU7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGVhcmxpZXN0IGRhdGUgdGhhdCBpcyBhdmFpbGFibGUgaW4gdGhlIGNhbGVuZGFyLiBQbGFjZSB0aGlzIGF0dHJpYnV0ZSBvblxuICAgKiB0aGUgYGlucHV0YCBlbGVtZW50IHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGluIGBTa3lEYXRlcGlja2VyQ29uZmlnU2VydmljZWAuIFRvIGF2b2lkIHZhbGlkYXRpb24gZXJyb3JzLCB0aGUgdGltZSBhc3NvY2lhdGVkIHdpdGggdGhlIG1pbmltdW0gZGF0ZSBtdXN0IGJlIG1pZG5pZ2h0LiBUaGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIHRoZSBkYXRlcGlja2VyIGF1dG9tYXRpY2FsbHkgc2V0cyB0aGUgdGltZSBvbiB0aGUgYERhdGVgIG9iamVjdCBmb3Igc2VsZWN0ZWQgZGF0ZXMgdG8gbWlkbmlnaHQgaW4gdGhlIGN1cnJlbnQgdXNlcidzIHRpbWUgem9uZS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgbWluRGF0ZSh2YWx1ZTogRGF0ZSB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19taW5EYXRlID0gdmFsdWU7XG4gICAgdGhpcy4jZGF0ZXBpY2tlckNvbXBvbmVudC5taW5EYXRlID0gdGhpcy5taW5EYXRlO1xuXG4gICAgdGhpcy4jb25WYWxpZGF0b3JDaGFuZ2UoKTtcbiAgfVxuXG4gIC8vIFRPRE86IFJlZmFjdG9yIHRvIG5vdCBoYXZlIGdldHRlciBsb2dpY1xuICBwdWJsaWMgZ2V0IG1pbkRhdGUoKTogRGF0ZSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI19taW5EYXRlIHx8IHRoaXMuI2NvbmZpZ1NlcnZpY2UubWluRGF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgZGF0ZSB0byBvcGVuIHRoZSBjYWxlbmRhciB0byBpbml0aWFsbHkuIFBsYWNlIHRoaXMgYXR0cmlidXRlIG9uIHRoZSBgaW5wdXRgIGVsZW1lbnQgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgaW4gYFNreURhdGVwaWNrZXJDb25maWdTZXJ2aWNlYC5cbiAgICogQGRlZmF1bHQgVGhlIGN1cnJlbnQgZGF0ZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBzdGFydEF0RGF0ZSh2YWx1ZTogRGF0ZSB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19zdGFydEF0RGF0ZSA9IHZhbHVlO1xuICAgIHRoaXMuI2RhdGVwaWNrZXJDb21wb25lbnQuc3RhcnRBdERhdGUgPSB0aGlzLnN0YXJ0QXREYXRlO1xuICB9XG5cbiAgLy8gVE9ETzogUmVmYWN0b3IgdG8gbm90IGhhdmUgZ2V0dGVyIGxvZ2ljXG4gIHB1YmxpYyBnZXQgc3RhcnRBdERhdGUoKTogRGF0ZSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI19zdGFydEF0RGF0ZSB8fCB0aGlzLiNjb25maWdTZXJ2aWNlLnN0YXJ0QXREYXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgdGhlIGRhdGVwaWNrZXIgaW5wdXQgYW5kIGNhbGVuZGFyLiBQbGFjZSB0aGlzIGRpcmVjdGl2ZSBvbiBhbiBgaW5wdXRgIGVsZW1lbnQsXG4gICAqIGFuZCB3cmFwIHRoZSBpbnB1dCBpbiBhIGBza3ktZGF0ZXBpY2tlcmAgY29tcG9uZW50LiBUaGUgdmFsdWUgdGhhdCB1c2VycyBzZWxlY3QgaXMgZHJpdmVuXG4gICAqIHRocm91Z2ggdGhlIGBuZ01vZGVsYCBhdHRyaWJ1dGUgc3BlY2lmaWVkIG9uIHRoZSBgaW5wdXRgIGVsZW1lbnQuXG4gICAqIEByZXF1aXJlZFxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBza3lEYXRlcGlja2VySW5wdXQoXG4gICAgdmFsdWU6IFNreURhdGVwaWNrZXJDb21wb25lbnQgfCB1bmRlZmluZWQgfCAnJyxcbiAgKSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICdbRGVwcmVjYXRpb24gd2FybmluZ10gWW91IG5vIGxvbmdlciBuZWVkIHRvIHByb3ZpZGUgYSB0ZW1wbGF0ZSByZWZlcmVuY2UgdmFyaWFibGUgJyArXG4gICAgICAgICAgJ3RvIHRoZSBgc2t5RGF0ZXBpY2tlcklucHV0YCBhdHRyaWJ1dGUgKHRoaXMgd2lsbCBiZSBhIGJyZWFraW5nIGNoYW5nZSBpbiB0aGUgbmV4dCAnICtcbiAgICAgICAgICAnbWFqb3IgdmVyc2lvbiByZWxlYXNlKS5cXG4nICtcbiAgICAgICAgICAnRG8gdGhpcyBpbnN0ZWFkOlxcbicgK1xuICAgICAgICAgICc8c2t5LWRhdGVwaWNrZXI+XFxuICA8aW5wdXQgc2t5RGF0ZXBpY2tlcklucHV0IC8+XFxuPC9za3ktZGF0ZXBpY2tlcj4nLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0byBkaXNhYmxlIGRhdGUgdmFsaWRhdGlvbiBvbiB0aGUgZGF0ZXBpY2tlciBpbnB1dC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBza3lEYXRlcGlja2VyTm9WYWxpZGF0ZTogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBUaGUgc3RhcnRpbmcgZGF5IG9mIHRoZSB3ZWVrIGluIHRoZSBjYWxlbmRhciwgd2hlcmUgYDBgIHNldHMgdGhlIHN0YXJ0aW5nIGRheVxuICAgKiB0byBTdW5kYXkuIFBsYWNlIHRoaXMgYXR0cmlidXRlIG9uIHRoZSBgaW5wdXRgIGVsZW1lbnQgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHRcbiAgICogaW4gYFNreURhdGVwaWNrZXJDb25maWdTZXJ2aWNlYC5cbiAgICogQGRlZmF1bHQgMFxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBzdGFydGluZ0RheSh2YWx1ZTogbnVtYmVyIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX3N0YXJ0aW5nRGF5ID0gdmFsdWU7XG4gICAgdGhpcy4jZGF0ZXBpY2tlckNvbXBvbmVudC5zdGFydGluZ0RheSA9IHRoaXMuc3RhcnRpbmdEYXk7XG5cbiAgICB0aGlzLiNvblZhbGlkYXRvckNoYW5nZSgpO1xuICB9XG5cbiAgLy8gVE9ETzogUmVmYWN0b3IgdG8gbm90IGhhdmUgZ2V0dGVyIGxvZ2ljXG4gIHB1YmxpYyBnZXQgc3RhcnRpbmdEYXkoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy4jX3N0YXJ0aW5nRGF5IHx8IHRoaXMuI2NvbmZpZ1NlcnZpY2Uuc3RhcnRpbmdEYXk7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgZm9ybWF0IG9mIHRoZSBkYXRlIHZhbHVlIG11c3QgbWF0Y2ggdGhlIGZvcm1hdCBmcm9tIHRoZSBgZGF0ZUZvcm1hdGAgdmFsdWUuXG4gICAqIElmIHRoaXMgcHJvcGVydHkgaXMgYHRydWVgIGFuZCB0aGUgZGF0ZXBpY2tlciBpbnB1dCBkaXJlY3RpdmUgY2Fubm90IGZpbmQgYW4gZXhhY3QgbWF0Y2gsIHRoZW5cbiAgICogdGhlIGlucHV0IGlzIG1hcmtlZCBhcyBpbnZhbGlkLlxuICAgKiBJZiB0aGlzIHByb3BlcnR5IGlzIGBmYWxzZWAgYW5kIHRoZSBkYXRlcGlja2VyIGlucHV0IGRpcmVjdGl2ZSBjYW5ub3QgZmluZCBhbiBleGFjdCBtYXRjaCwgdGhlblxuICAgKiBpdCBhdHRlbXB0cyB0byBmb3JtYXQgdGhlIHN0cmluZyBiYXNlZCBvbiB0aGUgW0lTTyA4NjAxIHN0YW5kYXJkIGZvcm1hdF0oaHR0cHM6Ly93d3cuaXNvLm9yZy9pc28tODYwMS1kYXRlLWFuZC10aW1lLWZvcm1hdC5odG1sKS5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgc3RyaWN0KHZhbHVlOiBib29sZWFuIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX3N0cmljdCA9IHZhbHVlIHx8IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIGdldCBzdHJpY3QoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuI19zdHJpY3Q7XG4gIH1cblxuICBnZXQgI3ZhbHVlKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuI192YWx1ZTtcbiAgfVxuXG4gIHNldCAjdmFsdWUodmFsdWU6IGFueSkge1xuICAgIHRoaXMuI3VwZGF0ZVZhbHVlKHZhbHVlKTtcbiAgfVxuXG4gICNjb250cm9sOiBBYnN0cmFjdENvbnRyb2wgfCB1bmRlZmluZWQ7XG4gICNkYXRlRm9ybWF0dGVyID0gbmV3IFNreURhdGVGb3JtYXR0ZXIoKTtcbiAgI3ByZWZlcnJlZFNob3J0RGF0ZUZvcm1hdDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAjbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICNub3RpZnlUb3VjaGVkOiAoKCkgPT4gdm9pZCkgfCB1bmRlZmluZWQ7XG5cbiAgI19kYXRlRm9ybWF0OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICNfZGlzYWJsZWQgPSBmYWxzZTtcbiAgI19tYXhEYXRlOiBEYXRlIHwgdW5kZWZpbmVkO1xuICAjX21pbkRhdGU6IERhdGUgfCB1bmRlZmluZWQ7XG4gICNfc3RhcnRBdERhdGU6IERhdGUgfCB1bmRlZmluZWQ7XG4gICNfc3RhcnRpbmdEYXk6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgI19zdHJpY3QgPSBmYWxzZTtcbiAgI192YWx1ZTogYW55O1xuXG4gICNjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWY7XG4gICNjb25maWdTZXJ2aWNlOiBTa3lEYXRlcGlja2VyQ29uZmlnU2VydmljZTtcbiAgI2VsZW1lbnRSZWY6IEVsZW1lbnRSZWY7XG4gICNsb2NhbGVQcm92aWRlcjogU2t5QXBwTG9jYWxlUHJvdmlkZXI7XG4gICNyZW5kZXJlcjogUmVuZGVyZXIyO1xuICAjZGF0ZXBpY2tlckNvbXBvbmVudDogU2t5RGF0ZXBpY2tlckNvbXBvbmVudDtcblxuICByZWFkb25seSAjZGF0ZXBpY2tlckhvc3RTdmMgPSBpbmplY3QoU2t5RGF0ZXBpY2tlckhvc3RTZXJ2aWNlLCB7XG4gICAgb3B0aW9uYWw6IHRydWUsXG4gIH0pO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBjb25maWdTZXJ2aWNlOiBTa3lEYXRlcGlja2VyQ29uZmlnU2VydmljZSxcbiAgICBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIGxvY2FsZVByb3ZpZGVyOiBTa3lBcHBMb2NhbGVQcm92aWRlcixcbiAgICByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIEBPcHRpb25hbCgpIGRhdGVwaWNrZXJDb21wb25lbnQ/OiBTa3lEYXRlcGlja2VyQ29tcG9uZW50LFxuICApIHtcbiAgICBpZiAoIWRhdGVwaWNrZXJDb21wb25lbnQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ1lvdSBtdXN0IHdyYXAgdGhlIGBza3lEYXRlcGlja2VySW5wdXRgIGRpcmVjdGl2ZSB3aXRoaW4gYSAnICtcbiAgICAgICAgICAnYDxza3ktZGF0ZXBpY2tlcj5gIGNvbXBvbmVudCEnLFxuICAgICAgKTtcbiAgICB9XG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IgPSBjaGFuZ2VEZXRlY3RvcjtcbiAgICB0aGlzLiNjb25maWdTZXJ2aWNlID0gY29uZmlnU2VydmljZTtcbiAgICB0aGlzLiNlbGVtZW50UmVmID0gZWxlbWVudFJlZjtcbiAgICB0aGlzLiNsb2NhbGVQcm92aWRlciA9IGxvY2FsZVByb3ZpZGVyO1xuICAgIHRoaXMuI3JlbmRlcmVyID0gcmVuZGVyZXI7XG4gICAgdGhpcy4jZGF0ZXBpY2tlckNvbXBvbmVudCA9IGRhdGVwaWNrZXJDb21wb25lbnQ7XG5cbiAgICB0aGlzLiNsb2NhbGVQcm92aWRlclxuICAgICAgLmdldExvY2FsZUluZm8oKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgobG9jYWxlSW5mbykgPT4ge1xuICAgICAgICBTa3lEYXRlRm9ybWF0dGVyLnNldExvY2FsZShsb2NhbGVJbmZvLmxvY2FsZSk7XG4gICAgICAgIHRoaXMuI3ByZWZlcnJlZFNob3J0RGF0ZUZvcm1hdCA9XG4gICAgICAgICAgU2t5RGF0ZUZvcm1hdHRlci5nZXRQcmVmZXJyZWRTaG9ydERhdGVGb3JtYXQoKTtcbiAgICAgICAgdGhpcy4jYXBwbHlEYXRlRm9ybWF0KCk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuI2RhdGVwaWNrZXJIb3N0U3ZjPy5mb2N1c291dFxuICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpXG4gICAgICAuc3Vic2NyaWJlKChldnQpID0+IHtcbiAgICAgICAgY29uc3QgaXNGb2N1c2luZ0lucHV0ID1cbiAgICAgICAgICBldnQucmVsYXRlZFRhcmdldCA9PT0gdGhpcy4jZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuXG4gICAgICAgIGlmICghaXNGb2N1c2luZ0lucHV0KSB7XG4gICAgICAgICAgdGhpcy4jbm90aWZ5VG91Y2hlZD8uKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLiNlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICB0aGlzLiNyZW5kZXJlci5hZGRDbGFzcyhlbGVtZW50LCAnc2t5LWZvcm0tY29udHJvbCcpO1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLiNkYXRlcGlja2VyQ29tcG9uZW50LmRhdGVGb3JtYXQgPSB0aGlzLmRhdGVGb3JtYXQ7XG4gICAgdGhpcy4jZGF0ZXBpY2tlckNvbXBvbmVudC5kYXRlQ2hhbmdlXG4gICAgICAucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgdGhpcy4jdmFsdWUgPSB2YWx1ZTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAvLyBUaGlzIGlzIG5lZWRlZCB0byBhZGRyZXNzIGEgYnVnIGluIEFuZ3VsYXIgNC5cbiAgICAvLyBXaGVuIGEgY29udHJvbCB2YWx1ZSBpcyBzZXQgaW5pdGlhbGx5LCBpdHMgdmFsdWUgaXMgbm90IHJlcHJlc2VudGVkIG9uIHRoZSB2aWV3LlxuICAgIC8vIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvMTM3OTJcbiAgICAvLyBPZiBub3RlIGlzIHRoZSBwYXJlbnQgY2hlY2sgd2hpY2ggYWxsb3dzIHVzIHRvIGRldGVybWluZSBpZiB0aGUgZm9ybSBpcyByZWFjdGl2ZS5cbiAgICAvLyBXaXRob3V0IHRoaXMgY2hlY2sgdGhlcmUgaXMgYSBjaGFuZ2VkIGJlZm9yZSBjaGVja2VkIGVycm9yXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAodGhpcy4jY29udHJvbCAmJiB0aGlzLiNjb250cm9sLnBhcmVudCkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuI2NvbnRyb2w/LnNldFZhbHVlKHRoaXMuI3ZhbHVlLCB7XG4gICAgICAgICAgZW1pdEV2ZW50OiBmYWxzZSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignY2hhbmdlJywgWyckZXZlbnQnXSlcbiAgcHVibGljIG9uSW5wdXRDaGFuZ2UoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IHZhbHVlID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuXG4gICAgaWYgKHRoaXMuc2t5RGF0ZXBpY2tlck5vVmFsaWRhdGUpIHtcbiAgICAgIHRoaXMuI29uVmFsdWVDaGFuZ2UodmFsdWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIERvbid0IHRyeSB0byBwYXJzZSB0aGUgc3RyaW5nIHZhbHVlIGludG8gYSBEYXRlIHZhbHVlIGlmIGl0IGlzIG1hbGZvcm1lZC5cbiAgICBpZiAodGhpcy4jaXNEYXRlU3RyaW5nVmFsaWQodmFsdWUpKSB7XG4gICAgICB0aGlzLiNvblZhbHVlQ2hhbmdlKHZhbHVlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLiNfdmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLiNvbkNoYW5nZSh2YWx1ZSk7XG5cbiAgICB0aGlzLiNjb250cm9sPy5zZXRFcnJvcnMoe1xuICAgICAgc2t5RGF0ZToge1xuICAgICAgICBpbnZhbGlkOiB2YWx1ZSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdpbnB1dCcpXG4gIHB1YmxpYyBvbklucHV0KCk6IHZvaWQge1xuICAgIHRoaXMuI2NvbnRyb2w/Lm1hcmtBc0RpcnR5KCk7XG4gIH1cblxuICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy4jdXBkYXRlVmFsdWUodmFsdWUsIGZhbHNlKTtcbiAgfVxuXG4gIHB1YmxpYyB2YWxpZGF0ZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgaWYgKCF0aGlzLiNjb250cm9sKSB7XG4gICAgICB0aGlzLiNjb250cm9sID0gY29udHJvbDtcbiAgICAgIC8vIEFjY291bnQgZm9yIGFueSBkYXRlIGNvbnZlcnNpb24gdGhhdCBtYXkgaGF2ZSBvY2N1cnJlZCBwcmlvciB0byB2YWxpZGF0aW9uLlxuICAgICAgaWYgKHRoaXMuI2NvbnRyb2wudmFsdWUgIT09IHRoaXMuI3ZhbHVlKSB7XG4gICAgICAgIHRoaXMuI2NvbnRyb2wucGF0Y2hWYWx1ZSh0aGlzLiN2YWx1ZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLnNreURhdGVwaWNrZXJOb1ZhbGlkYXRlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCB2YWx1ZTogdW5rbm93biA9IGNvbnRyb2wudmFsdWU7XG5cbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICBjb25zdCBpc0RhdGVWYWxpZCA9IHRoaXMuI2RhdGVGb3JtYXR0ZXIuZGF0ZUlzVmFsaWQodmFsdWUpO1xuXG4gICAgICBpZiAoIWlzRGF0ZVZhbGlkKSB7XG4gICAgICAgIC8vIE1hcmsgdGhlIGludmFsaWQgY29udHJvbCBhcyB0b3VjaGVkIHNvIHRoYXQgdGhlIGlucHV0J3MgaW52YWxpZCBDU1Mgc3R5bGVzIGFwcGVhci5cbiAgICAgICAgLy8gKFRoaXMgaXMgb25seSByZXF1aXJlZCB3aGVuIHRoZSBpbnZhbGlkIHZhbHVlIGlzIHNldCBieSB0aGUgRm9ybUNvbnRyb2wgY29uc3RydWN0b3IuKVxuICAgICAgICB0aGlzLiNjb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHNreURhdGU6IHtcbiAgICAgICAgICAgIGludmFsaWQ6IHZhbHVlLFxuICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1pbkRhdGUgPSB0aGlzLm1pbkRhdGU7XG5cbiAgICAgIGlmIChcbiAgICAgICAgbWluRGF0ZSAmJlxuICAgICAgICB0aGlzLiNkYXRlRm9ybWF0dGVyLmRhdGVJc1ZhbGlkKG1pbkRhdGUpICYmXG4gICAgICAgIHZhbHVlIDwgbWluRGF0ZVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgc2t5RGF0ZToge1xuICAgICAgICAgICAgbWluRGF0ZSxcbiAgICAgICAgICAgIG1pbkRhdGVGb3JtYXR0ZWQ6IHRoaXMuI2RhdGVGb3JtYXR0ZXIuZm9ybWF0KFxuICAgICAgICAgICAgICBtaW5EYXRlLFxuICAgICAgICAgICAgICB0aGlzLmRhdGVGb3JtYXQsXG4gICAgICAgICAgICApLFxuICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1heERhdGUgPSB0aGlzLm1heERhdGU7XG5cbiAgICAgIGlmIChcbiAgICAgICAgbWF4RGF0ZSAmJlxuICAgICAgICB0aGlzLiNkYXRlRm9ybWF0dGVyLmRhdGVJc1ZhbGlkKG1heERhdGUpICYmXG4gICAgICAgIHZhbHVlID4gbWF4RGF0ZVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgc2t5RGF0ZToge1xuICAgICAgICAgICAgbWF4RGF0ZSxcbiAgICAgICAgICAgIG1heERhdGVGb3JtYXR0ZWQ6IHRoaXMuI2RhdGVGb3JtYXR0ZXIuZm9ybWF0KFxuICAgICAgICAgICAgICBtYXhEYXRlLFxuICAgICAgICAgICAgICB0aGlzLmRhdGVGb3JtYXQsXG4gICAgICAgICAgICApLFxuICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIE1hcmsgdGhlIGludmFsaWQgY29udHJvbCBhcyB0b3VjaGVkIHNvIHRoYXQgdGhlIGlucHV0J3MgaW52YWxpZCBDU1Mgc3R5bGVzIGFwcGVhci5cbiAgICAgIC8vIChUaGlzIGlzIG9ubHkgcmVxdWlyZWQgd2hlbiB0aGUgaW52YWxpZCB2YWx1ZSBpcyBzZXQgYnkgdGhlIEZvcm1Db250cm9sIGNvbnN0cnVjdG9yLilcbiAgICAgIHRoaXMuI2NvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBza3lEYXRlOiB7XG4gICAgICAgICAgaW52YWxpZDogdmFsdWUsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IGFueSkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuI29uQ2hhbmdlID0gZm47XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLiNub3RpZnlUb3VjaGVkID0gZm47XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZShmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuI29uVmFsaWRhdG9yQ2hhbmdlID0gZm47XG4gIH1cblxuICBwdWJsaWMgc2V0RGlzYWJsZWRTdGF0ZShkaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBkaXNhYmxlZDtcbiAgICB0aGlzLiNkYXRlcGlja2VyQ29tcG9uZW50LmRpc2FibGVkID0gZGlzYWJsZWQ7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZWN0cyBjaGFuZ2VzIHRvIHRoZSB1bmRlcmx5aW5nIGlucHV0IGVsZW1lbnQncyB2YWx1ZSBhbmQgdXBkYXRlcyB0aGUgbmdNb2RlbCBhY2NvcmRpbmdseS5cbiAgICogVGhpcyBpcyB1c2VmdWwgaWYgeW91IG5lZWQgdG8gdXBkYXRlIHRoZSBuZ01vZGVsIHZhbHVlIGJlZm9yZSB0aGUgaW5wdXQgZWxlbWVudCBsb3NlcyBmb2N1cy5cbiAgICovXG4gIHB1YmxpYyBkZXRlY3RJbnB1dFZhbHVlQ2hhbmdlKCk6IHZvaWQge1xuICAgIHRoaXMuI29uVmFsdWVDaGFuZ2UodGhpcy4jZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvbkZvY3Vzb3V0KGV2dDogRm9jdXNFdmVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy4jZGF0ZXBpY2tlckhvc3RTdmM/LmlzRm9jdXNpbmdEYXRlcGlja2VyKGV2dCkpIHtcbiAgICAgIHRoaXMuI25vdGlmeVRvdWNoZWQ/LigpO1xuICAgIH1cbiAgfVxuXG4gICNhcHBseURhdGVGb3JtYXQoKTogdm9pZCB7XG4gICAgdGhpcy4jZGF0ZXBpY2tlckNvbXBvbmVudC5kYXRlRm9ybWF0ID0gdGhpcy5kYXRlRm9ybWF0O1xuICAgIGlmICh0aGlzLiN2YWx1ZSkge1xuICAgICAgY29uc3QgZm9ybWF0dGVkRGF0ZSA9IHRoaXMuI2RhdGVGb3JtYXR0ZXIuZm9ybWF0KFxuICAgICAgICB0aGlzLiN2YWx1ZSxcbiAgICAgICAgdGhpcy5kYXRlRm9ybWF0LFxuICAgICAgKTtcbiAgICAgIHRoaXMuI3NldElucHV0RWxlbWVudFZhbHVlKGZvcm1hdHRlZERhdGUpO1xuICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgI29uVmFsdWVDaGFuZ2UobmV3VmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuI3ZhbHVlID0gbmV3VmFsdWU7XG4gIH1cblxuICAjc2V0SW5wdXRFbGVtZW50VmFsdWUodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuI3JlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMuI2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ3ZhbHVlJywgdmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGRhdGUgdmFsdWUgZnJvbSBhIHZhbHVlIC0gaWYgcG9zc2libGUuXG4gICAqIFdpbGwgbm90IGNvbnZlcnQgdW5jb252ZXJ0aWJsZSBkYXRlcyBvciBudW1iZXJzIG91dHNpZGUgb2YgdGhlIGN1cnJlbnQgbW9udGgncyBudW1iZXIgb2YgZGF5cy5cbiAgICogUmV0dXJucyBgdW5kZWZpbmVkYCBpZiB0aGUgdmFsdWUgY2FuIG5vdCBiZSBjb252ZXJ0ZWQuXG4gICAqL1xuICAjZ2V0RGF0ZVZhbHVlKHZhbHVlOiB1bmtub3duKTogRGF0ZSB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIHRoaXMuI2dldFNob3J0Y3V0T3JEYXRlVmFsdWUodmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGEgc3RyaW5nIHRvIGEgZGF0ZSBvYmplY3QgaWYgdGhlIHN0cmluZyBpcyBhIHZhbGlkIGRhdGUgc3RyaW5nLlxuICAgKiBJdCB3aWxsIGFsc28gY29udmVydCBudW1lcmljIGlucHV0IHRvIGEgZGF0ZSBpZiB0aGF0IG51bWJlciBpcyB3aXRoaW4gdGhlIGN1cnJlbnQgbW9udGgncyBudW1iZXIgb2YgZGF5cy5cbiAgICogSWYgdGhlIHN0cmluZyBjYW4gbm90IGJlIGNvbnZlcnRlZCwgYHVuZGVmaW5lZGAgYmUgcmV0dXJuZWQuXG4gICAqL1xuICAjZ2V0U2hvcnRjdXRPckRhdGVWYWx1ZSh2YWx1ZTogc3RyaW5nKTogRGF0ZSB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgbnVtID0gTnVtYmVyKHZhbHVlKTtcbiAgICBpZiAoTnVtYmVyLmlzSW50ZWdlcihudW0pKSB7XG4gICAgICAvLyBXZSByZXF1aXJlIDggZGlnaXRzIGluIG9yZGVyIHRvIGtub3cgdGhhdCB3ZSBoYXZlIGFsbCBpbmZvcm1hdGlvbiBuZWVkZWQgdG8gZGV0ZXJtaW5lIHdoYXQgcGFydCBvZiB0aGUgbnVtYmVyIGlzIHRoZSBtb250aCAoMiksIGRheSAoMiksIGFuZCB5ZWFyICg0KS5cbiAgICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDgpIHtcbiAgICAgICAgY29uc3QgcmVnZXggPSBuZXcgUmVnRXhwKC9cXGIoTU0pXFxifFxcYihERClcXGJ8XFxiKFlZKVxcYnxcXGIoWVlZWSlcXGIvLCAnZycpO1xuICAgICAgICBjb25zdCBmb3JtYXRUb2tlbnNPbmx5ID0gdGhpcy5kYXRlRm9ybWF0XG4gICAgICAgICAgPy5tYXRjaChyZWdleClcbiAgICAgICAgICA/LmpvaW4oJycpXG4gICAgICAgICAgLnJlcGxhY2UobmV3IFJlZ0V4cCgvWSsvKSwgJ1lZWVknKTtcblxuICAgICAgICBpZiAoZm9ybWF0VG9rZW5zT25seSAmJiBmb3JtYXRUb2tlbnNPbmx5Lmxlbmd0aCA9PT0gOCkge1xuICAgICAgICAgIGNvbnN0IGRhdGUgPSB0aGlzLiNkYXRlRm9ybWF0dGVyLmdldERhdGVGcm9tU3RyaW5nKFxuICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICBmb3JtYXRUb2tlbnNPbmx5LFxuICAgICAgICAgICAgdHJ1ZSxcbiAgICAgICAgICApO1xuICAgICAgICAgIGlmICh0aGlzLiNkYXRlRm9ybWF0dGVyLmRhdGVJc1ZhbGlkKGRhdGUpKSB7XG4gICAgICAgICAgICByZXR1cm4gZGF0ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gICAgICBjb25zdCBzaG9ydGN1dERhdGUgPSBuZXcgRGF0ZShub3cuZ2V0RnVsbFllYXIoKSwgbm93LmdldE1vbnRoKCksIG51bSk7XG4gICAgICBjb25zdCBkYXlzSW5Nb250aCA9IHNob3J0Y3V0RGF0ZS5nZXREYXRlKCk7XG4gICAgICBpZiAobnVtID4gMCAmJiBudW0gPD0gZGF5c0luTW9udGgpIHtcbiAgICAgICAgcmV0dXJuIHNob3J0Y3V0RGF0ZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZGF0ZSA9IHRoaXMuI2RhdGVGb3JtYXR0ZXIuZ2V0RGF0ZUZyb21TdHJpbmcoXG4gICAgICAgIHZhbHVlLFxuICAgICAgICB0aGlzLmRhdGVGb3JtYXQsXG4gICAgICAgIHRoaXMuc3RyaWN0LFxuICAgICAgKTtcbiAgICAgIGlmICh0aGlzLiNkYXRlRm9ybWF0dGVyLmRhdGVJc1ZhbGlkKGRhdGUpKSB7XG4gICAgICAgIHJldHVybiBkYXRlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGUgaW5wdXQgdmFsdWUgdG8gZW5zdXJlIGl0IGlzIGZvcm1hdHRlZCBjb3JyZWN0bHkuXG4gICAqL1xuICAjaXNEYXRlU3RyaW5nVmFsaWQodmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICghdmFsdWUgfHwgdHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLy8gRG9lcyB0aGUgdmFsdWUgb25seSBpbmNsdWRlIGRpZ2l0cywgZGFzaGVzLCBvciBzbGFzaGVzP1xuICAgIGNvbnN0IHJlZ2V4cCA9IC9eW1xcZC8tXSskLztcbiAgICBjb25zdCBpc1ZhbGlkID0gcmVnZXhwLnRlc3QodmFsdWUpO1xuXG4gICAgaWYgKGlzVmFsaWQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBtb21lbnQodmFsdWUpLmlzVmFsaWQoKTtcbiAgfVxuXG4gIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG4gICNvbkNoYW5nZSA9IChfOiBhbnkpOiB2b2lkID0+IHt9O1xuICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dFxuICAjb25WYWxpZGF0b3JDaGFuZ2UgPSAoKTogdm9pZCA9PiB7fTtcblxuICAvKipcbiAgICogVXBkYXRlIHRoZSB2YWx1ZSBvZiB0aGUgZm9ybSBjb250cm9sIGFuZCBpbnB1dCBlbGVtZW50XG4gICAqIEBwYXJhbSBlbWl0RXZlbnQgRGVub3RlcyBpZiB3ZSBlbWl0IGFuIGV2ZW50IHRvIHRoZSBjb25zdW1lcidzIGZvcm0gY29udHJvbC4gV2UgZG8gbm90IHdhbnQgdG8gZG8gdGhpcyBpZiB0aGUgdmFsdWUgaXMgYmVpbmcgdXBkYXRlZCB2aWEgYSBgc2V0VmFsdWVgIGNhbGwgb3IgYSBgcGF0Y2hWYWx1ZWAgY2FsbCBhcyB0aGlzIGlzIGFscmVhZHkgaGFuZGxlZCBieSBBbmd1bGFyLlxuICAgKiBJbiB0aGVzZSBjYXNlcyB3ZSBkbyBub3Qgd2FudCB0byBmaXJlIGBvbkNoYW5nZWAgYXMgaXQgd2lsbCBjYXVzZSBleHRyYSBgdmFsdWVDaGFuZ2VgIGFuZCBgc3RhdHVzQ2hhbmdlYCBldmVudHMgYW5kIHRoZSBzdGF0dXMgb2YgdGhlIGZvcm0gc2hvdWxkIG5vdCBiZSBhZmZlY3RlZCBieSB0aGVzZSBjaGFuZ2VzLlxuICAgKi9cbiAgI3VwZGF0ZVZhbHVlKHZhbHVlOiBhbnksIGVtaXRFdmVudCA9IHRydWUpOiB2b2lkIHtcbiAgICBpZiAodGhpcy4jX3ZhbHVlID09PSB2YWx1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGlzVmFsaWREYXRlU3RyaW5nID0gdGhpcy4jaXNEYXRlU3RyaW5nVmFsaWQodmFsdWUpO1xuXG4gICAgLy8gSWYgdGhlIHN0cmluZyB2YWx1ZSBzdXBwbGllZCBpcyBtYWxmb3JtZWQsIGRvIG5vdCBzZXQgdGhlIHZhbHVlIHRvIGl0cyBEYXRlIGVxdWl2YWxlbnQuXG4gICAgLy8gKEphdmFTY3JpcHQncyBEYXRlIHBhcnNlciB3aWxsIGNvbnZlcnQgcG9vcmx5IGZvcm1hdHRlZCBkYXRlcyB0byBEYXRlIG9iamVjdHMsIHN1Y2ggYXMgXCJhYmMgMTIzXCIsIHdoaWNoIGlzbid0IGlkZWFsLilcbiAgICBpZiAoIWlzVmFsaWREYXRlU3RyaW5nKSB7XG4gICAgICB0aGlzLiNfdmFsdWUgPSB2YWx1ZTtcbiAgICAgIGlmIChlbWl0RXZlbnQpIHtcbiAgICAgICAgdGhpcy4jb25DaGFuZ2UodGhpcy4jX3ZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuI2NvbnRyb2w/LnNldFZhbHVlKHRoaXMuI192YWx1ZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgfVxuXG4gICAgICB0aGlzLiNkYXRlcGlja2VyQ29tcG9uZW50LnNlbGVjdGVkRGF0ZSA9IHRoaXMuI192YWx1ZTtcblxuICAgICAgdGhpcy4jc2V0SW5wdXRFbGVtZW50VmFsdWUodmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBUaGlzIHZhbHVlIHJlcHJlc2VudHMgdGhlIGRhdGUgdmFsdWUgZm9yIHRoZSBpbnB1dCBpZiBwb3NzaWJsZS5cbiAgICAgIC8vIFRoaXMgdmFsdWUgd2lsbCB0YWtlIGludG8gYWNjb3VudCBhbGwgc2hvcnRjdXQgZnVuY3Rpb25hbGl0eS5cbiAgICAgIGNvbnN0IGRhdGVWYWx1ZTogRGF0ZSB8IHVuZGVmaW5lZCA9IHRoaXMuI2dldERhdGVWYWx1ZSh2YWx1ZSk7XG5cbiAgICAgIGNvbnN0IGFyZURhdGVzRXF1YWwgPVxuICAgICAgICB0aGlzLiNfdmFsdWUgaW5zdGFuY2VvZiBEYXRlICYmXG4gICAgICAgIGRhdGVWYWx1ZSAmJlxuICAgICAgICBkYXRlVmFsdWUuZ2V0VGltZSgpID09PSB0aGlzLiNfdmFsdWUuZ2V0VGltZSgpO1xuXG4gICAgICBpZiAoZGF0ZVZhbHVlICE9PSB0aGlzLiNfdmFsdWUgfHwgIWFyZURhdGVzRXF1YWwpIHtcbiAgICAgICAgdGhpcy4jX3ZhbHVlID0gZGF0ZVZhbHVlIHx8IHZhbHVlO1xuICAgICAgICBpZiAoZW1pdEV2ZW50KSB7XG4gICAgICAgICAgdGhpcy4jb25DaGFuZ2UodGhpcy4jX3ZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLiNjb250cm9sPy5zZXRWYWx1ZSh0aGlzLiNfdmFsdWUsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuI2RhdGVwaWNrZXJDb21wb25lbnQuc2VsZWN0ZWREYXRlID0gdGhpcy4jX3ZhbHVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoZGF0ZVZhbHVlKSB7XG4gICAgICAgIGNvbnN0IGZvcm1hdHRlZERhdGVTdHJpbmcgPSB0aGlzLiNkYXRlRm9ybWF0dGVyLmZvcm1hdChcbiAgICAgICAgICBkYXRlVmFsdWUsXG4gICAgICAgICAgdGhpcy5kYXRlRm9ybWF0LFxuICAgICAgICApO1xuICAgICAgICB0aGlzLiNzZXRJbnB1dEVsZW1lbnRWYWx1ZShmb3JtYXR0ZWREYXRlU3RyaW5nKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuI3NldElucHV0RWxlbWVudFZhbHVlKHZhbHVlIHx8ICcnKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==","import { Directive, HostListener, Input, Optional, forwardRef, inject, } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR, } from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport { distinctUntilChanged, takeUntil } from 'rxjs/operators';\nimport { SkyDateFormatter } from '../date-formatter';\nimport { SkyDatepickerHostService } from '../datepicker-host.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"../datepicker-config.service\";\nimport * as i2 from \"./fuzzy-date.service\";\nimport * as i3 from \"@skyux/i18n\";\nimport * as i4 from \"../datepicker.component\";\nconst SKY_FUZZY_DATEPICKER_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SkyFuzzyDatepickerInputDirective),\n multi: true,\n};\nconst SKY_FUZZY_DATEPICKER_VALIDATOR = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => SkyFuzzyDatepickerInputDirective),\n multi: true,\n};\nexport class SkyFuzzyDatepickerInputDirective {\n /**\n * The date format for the input. Place this attribute on the `input` element\n * to override the default in `SkyDatepickerConfigService`.\n * @default \"MM/DD/YYYY\"\n */\n set dateFormat(value) {\n this.#_dateFormat = value;\n if (this.#value) {\n const formattedDate = this.#fuzzyDateService.format(this.#value, this.dateFormat, this.#locale);\n this.#setInputElementValue(formattedDate);\n this.#changeDetector.markForCheck();\n }\n }\n // TODO: Refactor to not have getter logic\n get dateFormat() {\n return (this.#_dateFormat ||\n this.#configService.dateFormat ||\n this.#preferredShortDateFormat);\n }\n /**\n * Whether to disable the datepicker on template-driven forms. Don't use this input on reactive forms because they may overwrite the input or leave the control out of sync.\n * To set the disabled state on reactive forms, use the `FormControl` instead.\n * @default false\n */\n set disabled(value) {\n this.#_disabled = value;\n this.#datepickerComponent.disabled = value;\n this.#renderer.setProperty(this.#elementRef.nativeElement, 'disabled', value);\n }\n get disabled() {\n return this.#_disabled;\n }\n /**\n * Whether to prevent users from specifying dates that are in the future.\n * Place this attribute on the `input` element.\n * @default false\n */\n set futureDisabled(value) {\n this.#_futureDisabled = value;\n this.#datepickerComponent.maxDate = this.#getMaxDate();\n this.#onValidatorChange();\n }\n get futureDisabled() {\n return this.#_futureDisabled;\n }\n /**\n * The latest fuzzy date allowed. Place this attribute on the `input` element\n * to prevent fuzzy dates after a specified date. This property accepts\n * a `SkyFuzzyDate` value that includes numeric month, day, and year values.\n * For example: `{ month: 1, day: 1, year: 2027 }`.\n */\n set maxDate(value) {\n this.#_maxDate = value;\n this.#datepickerComponent.maxDate = this.#getMaxDate();\n this.#onValidatorChange();\n }\n get maxDate() {\n return this.#_maxDate;\n }\n /**\n * The earliest fuzzy date allowed. Place this attribute on the `input` element\n * to prevent fuzzy dates before a specified date. This property accepts a `SkyFuzzyDate` value\n * that includes numeric month, day, and year values.\n * For example: `{ month: 1, day: 1, year: 2007 }`.\n */\n set minDate(value) {\n this.#_minDate = value;\n this.#datepickerComponent.minDate = this.#getMinDate();\n this.#onValidatorChange();\n }\n get minDate() {\n return this.#_minDate;\n }\n /**\n * The fuzzy date to open the calendar to initially.\n * This property accepts a `SkyFuzzyDate` value that includes numeric month, day, and year values.\n * For example: `{ month: 1, day: 1, year: 2007 }`.\n * @default The current date\n */\n set startAtDate(value) {\n this.#_startAtDate = value;\n this.#datepickerComponent.startAtDate = this.#getStartAtDate();\n }\n // TODO: Refactor to not have getter logic\n get startAtDate() {\n return this.#_startAtDate;\n }\n /**\n * The starting day of the week in the calendar, where `0` sets the starting day\n * to Sunday. Place this attribute on the `input` element to override the default\n * in `SkyDatepickerConfigService`.\n * @default 0\n */\n set startingDay(value) {\n this.#_startingDay = value;\n this.#datepickerComponent.startingDay = this.startingDay;\n this.#onValidatorChange();\n }\n // TODO: Refactor to not have getter logic\n get startingDay() {\n return this.#_startingDay || this.#configService.startingDay;\n }\n /**\n * Whether to require the year in fuzzy dates.\n * @default false\n */\n set yearRequired(value) {\n this.#_yearRequired = value;\n this.#onValidatorChange();\n }\n get yearRequired() {\n return this.#_yearRequired;\n }\n get #value() {\n return this.#_value;\n }\n set #value(value) {\n this.#updateValue(value);\n }\n #control;\n #dateFormatter;\n #locale;\n #preferredShortDateFormat;\n #ngUnsubscribe;\n #notifyTouched;\n #_futureDisabled;\n #_dateFormat;\n #_disabled;\n #_maxDate;\n #_minDate;\n #_startAtDate;\n #_startingDay;\n #_value;\n #_yearRequired;\n #changeDetector;\n #configService;\n #elementRef;\n #fuzzyDateService;\n #renderer;\n #datepickerComponent;\n #datepickerHostSvc;\n constructor(changeDetector, configService, elementRef, fuzzyDateService, localeProvider, renderer, datepickerComponent) {\n /**\n * Whether to disable date validation on the fuzzy datepicker input.\n * @default false\n */\n this.skyDatepickerNoValidate = false;\n this.#dateFormatter = new SkyDateFormatter();\n this.#ngUnsubscribe = new Subject();\n this.#_futureDisabled = false;\n this.#_disabled = false;\n this.#_yearRequired = false;\n this.#datepickerHostSvc = inject(SkyDatepickerHostService, {\n optional: true,\n });\n // istanbul ignore next\n this.#onChange = (_) => { };\n // istanbul ignore next\n this.#onValidatorChange = () => { };\n if (!datepickerComponent) {\n throw new Error('You must wrap the `skyFuzzyDatepickerInput` directive within a ' +\n '`<sky-datepicker>` component!');\n }\n this.#changeDetector = changeDetector;\n this.#configService = configService;\n this.#elementRef = elementRef;\n this.#fuzzyDateService = fuzzyDateService;\n this.#renderer = renderer;\n this.#datepickerComponent = datepickerComponent;\n this.#locale = localeProvider.defaultLocale;\n localeProvider\n .getLocaleInfo()\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((localeInfo) => {\n this.#locale = localeInfo.locale;\n SkyDateFormatter.setLocale(this.#locale);\n this.#preferredShortDateFormat =\n SkyDateFormatter.getPreferredShortDateFormat();\n });\n this.#datepickerHostSvc?.focusout\n .pipe(takeUntilDestroyed())\n .subscribe((evt) => {\n const isFocusingInput = evt.relatedTarget === this.#elementRef.nativeElement;\n if (!isFocusingInput) {\n this.#notifyTouched?.();\n }\n });\n }\n ngOnInit() {\n if (this.yearRequired) {\n if (this.dateFormat?.toLowerCase().indexOf('y') === -1) {\n throw new Error('You have configured conflicting settings. Year is required and dateFormat does not include year.');\n }\n }\n const element = this.#elementRef.nativeElement;\n this.#renderer.addClass(element, 'sky-form-control');\n }\n ngAfterContentInit() {\n this.#datepickerComponent.dateChange\n .pipe(distinctUntilChanged(), takeUntil(this.#ngUnsubscribe))\n .subscribe((value) => {\n this.#value = value;\n });\n }\n ngAfterViewInit() {\n // This is needed to address a bug in Angular 4.\n // When a control value is set initially, its value is not represented on the view.\n // See: https://github.com/angular/angular/issues/13792\n // Of note is the parent check which allows us to determine if the form is reactive.\n // Without this check there is a changed before checked error\n /* istanbul ignore else */\n if (this.#control && this.#control.parent) {\n setTimeout(() => {\n this.#control?.setValue(this.#value, {\n emitEvent: false,\n });\n this.#changeDetector.markForCheck();\n });\n }\n }\n ngOnDestroy() {\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n }\n onInputChange(event) {\n this.#onValueChange(event.target.value);\n }\n onInputBlur() {\n const formattedDate = this.#fuzzyDateService.format(this.#value, this.dateFormat, this.#locale);\n if (this.#control?.valid) {\n this.#setInputElementValue(formattedDate);\n }\n }\n onInput() {\n this.#control?.markAsDirty();\n }\n writeValue(value) {\n this.#updateValue(value, false);\n }\n validate(control) {\n if (!this.#control) {\n this.#control = control;\n }\n if (this.skyDatepickerNoValidate) {\n return null;\n }\n if (!this.#control.value) {\n return null;\n }\n const value = control.value;\n let fuzzyDate;\n let validationError = null;\n if (typeof value === 'string') {\n fuzzyDate = this.#fuzzyDateService.getFuzzyDateFromString(value, this.dateFormat);\n }\n else {\n fuzzyDate = value;\n }\n if (!fuzzyDate) {\n validationError = {\n skyFuzzyDate: {\n invalid: value,\n },\n };\n }\n else {\n if (!fuzzyDate.year && this.yearRequired) {\n validationError = {\n skyFuzzyDate: {\n yearRequired: value,\n },\n };\n }\n if (!validationError && fuzzyDate.year) {\n let fuzzyDateRange;\n if (this.maxDate) {\n fuzzyDateRange = this.#fuzzyDateService.getFuzzyDateRange(fuzzyDate, this.maxDate);\n if (!fuzzyDateRange.valid) {\n validationError = {\n skyFuzzyDate: {\n maxDate: value,\n maxDateFormatted: this.#dateFormatter.format(fuzzyDateRange.endDate, this.dateFormat),\n },\n };\n }\n }\n if (!validationError && this.minDate) {\n fuzzyDateRange = this.#fuzzyDateService.getFuzzyDateRange(this.minDate, fuzzyDate);\n if (!fuzzyDateRange.valid) {\n validationError = {\n skyFuzzyDate: {\n minDate: value,\n minDateFormatted: this.#dateFormatter.format(fuzzyDateRange.startDate, this.dateFormat),\n },\n };\n }\n }\n if (!validationError && this.futureDisabled) {\n fuzzyDateRange = this.#fuzzyDateService.getFuzzyDateRange(fuzzyDate, this.#fuzzyDateService.getCurrentFuzzyDate());\n if (!fuzzyDateRange.valid) {\n validationError = {\n skyFuzzyDate: {\n futureDisabled: value,\n },\n };\n }\n }\n }\n }\n if (validationError) {\n // Mark the invalid control as touched so that the input's invalid CSS styles appear.\n // (This is only required when the invalid value is set by the FormControl constructor.)\n this.#control.markAsTouched();\n }\n return validationError;\n }\n registerOnChange(fn) {\n this.#onChange = fn;\n }\n registerOnTouched(fn) {\n this.#notifyTouched = fn;\n }\n registerOnValidatorChange(fn) {\n this.#onValidatorChange = fn;\n }\n setDisabledState(disabled) {\n this.disabled = disabled;\n this.#datepickerComponent.disabled = disabled;\n }\n /**\n * Detects changes to the underlying input element's value and updates the ngModel accordingly.\n * This is useful if you need to update the ngModel value before the input element loses focus.\n */\n detectInputValueChange() {\n this.#onValueChange(this.#elementRef.nativeElement.value);\n }\n onFocusout(evt) {\n if (!this.#datepickerHostSvc?.isFocusingDatepicker(evt)) {\n this.#notifyTouched?.();\n }\n }\n #onValueChange(newValue) {\n this.#value = newValue;\n }\n #setInputElementValue(value) {\n this.#renderer.setProperty(this.#elementRef.nativeElement, 'value', value);\n }\n #getMaxDate() {\n if (this.maxDate) {\n const maxDate = this.#fuzzyDateService.getMomentFromFuzzyDate(this.maxDate);\n if (maxDate.isValid()) {\n return maxDate.toDate();\n }\n }\n else if (this.futureDisabled) {\n return new Date();\n }\n return this.#configService.maxDate;\n }\n #getMinDate() {\n if (this.minDate) {\n const minDate = this.#fuzzyDateService.getMomentFromFuzzyDate(this.minDate);\n if (minDate.isValid()) {\n return minDate.toDate();\n }\n }\n return this.#configService.minDate;\n }\n #getStartAtDate() {\n if (this.startAtDate) {\n const startAtDate = this.#fuzzyDateService.getMomentFromFuzzyDate(this.startAtDate);\n if (startAtDate.isValid()) {\n return startAtDate.toDate();\n }\n }\n return this.#configService.startAtDate;\n }\n /* istanbul ignore next */\n #fuzzyDatesEqual(dateA, dateB) {\n return !!(dateA &&\n dateB &&\n ((!dateA.day && !dateB.day) || dateA.day === dateB.day) &&\n ((!dateA.month && !dateB.month) || dateA.month === dateB.month) &&\n ((!dateA.year && !dateB.year) || dateA.year === dateB.year));\n }\n // istanbul ignore next\n #onChange;\n // istanbul ignore next\n #onValidatorChange;\n /**\n * Update the value of the form control and input element\n * @param emitEvent Denotes if we emit an event to the consumer's form control. We do not want to do this if the value is being updated via a `setValue` call or a `patchValue` call as this is already handled by Angular.\n * In these cases we do not want to fire `onChange` as it will cause extra `valueChange` and `statusChange` events and the status of the form should not be affected by these changes.\n */\n #updateValue(value, emitEvent = true) {\n if (this.#_value === value ||\n (this.#_value === undefined && value === null)) {\n return;\n }\n let fuzzyDate;\n let fuzzyMoment;\n let dateValue;\n let formattedDate;\n if (value instanceof Date) {\n dateValue = value;\n formattedDate = this.#dateFormatter.format(value, this.dateFormat);\n fuzzyDate = this.#fuzzyDateService.getFuzzyDateFromSelectedDate(value, this.dateFormat);\n }\n else if (typeof value === 'string') {\n fuzzyDate = this.#fuzzyDateService.getFuzzyDateFromString(value, this.dateFormat);\n if (fuzzyDate) {\n formattedDate = this.#fuzzyDateService.format(fuzzyDate, this.dateFormat, this.#locale);\n }\n if (!formattedDate) {\n formattedDate = value;\n }\n fuzzyMoment = this.#fuzzyDateService.getMomentFromFuzzyDate(fuzzyDate);\n if (fuzzyMoment) {\n dateValue = fuzzyMoment.toDate();\n }\n }\n else {\n fuzzyDate = value;\n formattedDate = this.#fuzzyDateService.format(fuzzyDate, this.dateFormat, this.#locale);\n fuzzyMoment = this.#fuzzyDateService.getMomentFromFuzzyDate(fuzzyDate);\n if (fuzzyMoment) {\n dateValue = fuzzyMoment.toDate();\n }\n }\n const areFuzzyDatesEqual = this.#fuzzyDatesEqual(this.#_value, fuzzyDate);\n const isNewValue = fuzzyDate !== this.#_value || !areFuzzyDatesEqual;\n this.#_value = fuzzyDate || value;\n if (isNewValue) {\n if (emitEvent) {\n this.#onChange(this.#_value);\n }\n else {\n this.#control?.setValue(this.#_value, { emitEvent: false });\n }\n this.#datepickerComponent.selectedDate = dateValue;\n }\n this.#setInputElementValue(formattedDate || '');\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyFuzzyDatepickerInputDirective, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.SkyDatepickerConfigService }, { token: i0.ElementRef }, { token: i2.SkyFuzzyDateService }, { token: i3.SkyAppLocaleProvider }, { token: i0.Renderer2 }, { token: i4.SkyDatepickerComponent, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.0.5\", type: SkyFuzzyDatepickerInputDirective, isStandalone: true, selector: \"[skyFuzzyDatepickerInput]\", inputs: { dateFormat: \"dateFormat\", disabled: \"disabled\", futureDisabled: \"futureDisabled\", maxDate: \"maxDate\", minDate: \"minDate\", startAtDate: \"startAtDate\", skyDatepickerNoValidate: \"skyDatepickerNoValidate\", startingDay: \"startingDay\", yearRequired: \"yearRequired\" }, host: { listeners: { \"focusout\": \"onFocusout($event)\", \"change\": \"onInputChange($event)\", \"blur\": \"onInputBlur()\", \"input\": \"onInput()\" } }, providers: [\n SKY_FUZZY_DATEPICKER_VALUE_ACCESSOR,\n SKY_FUZZY_DATEPICKER_VALIDATOR,\n ], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyFuzzyDatepickerInputDirective, decorators: [{\n type: Directive,\n args: [{\n host: {\n '(focusout)': 'onFocusout($event)',\n },\n providers: [\n SKY_FUZZY_DATEPICKER_VALUE_ACCESSOR,\n SKY_FUZZY_DATEPICKER_VALIDATOR,\n ],\n selector: '[skyFuzzyDatepickerInput]',\n standalone: true,\n }]\n }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.SkyDatepickerConfigService }, { type: i0.ElementRef }, { type: i2.SkyFuzzyDateService }, { type: i3.SkyAppLocaleProvider }, { type: i0.Renderer2 }, { type: i4.SkyDatepickerComponent, decorators: [{\n type: Optional\n }] }], propDecorators: { dateFormat: [{\n type: Input\n }], disabled: [{\n type: Input\n }], futureDisabled: [{\n type: Input\n }], maxDate: [{\n type: Input\n }], minDate: [{\n type: Input\n }], startAtDate: [{\n type: Input\n }], skyDatepickerNoValidate: [{\n type: Input\n }], startingDay: [{\n type: Input\n }], yearRequired: [{\n type: Input\n }], onInputChange: [{\n type: HostListener,\n args: ['change', ['$event']]\n }], onInputBlur: [{\n type: HostListener,\n args: ['blur']\n }], onInput: [{\n type: HostListener,\n args: ['input']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci1pbnB1dC1mdXp6eS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL2RhdGVwaWNrZXIvZnV6enkvZGF0ZXBpY2tlci1pbnB1dC1mdXp6eS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUlMLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUdMLFFBQVEsRUFFUixVQUFVLEVBQ1YsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFHTCxhQUFhLEVBQ2IsaUJBQWlCLEdBR2xCLE1BQU0sZ0JBQWdCLENBQUM7QUFHeEIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFakUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFckQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7OztBQU10RSxNQUFNLG1DQUFtQyxHQUFHO0lBQzFDLE9BQU8sRUFBRSxpQkFBaUI7SUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxnQ0FBZ0MsQ0FBQztJQUMvRCxLQUFLLEVBQUUsSUFBSTtDQUNaLENBQUM7QUFFRixNQUFNLDhCQUE4QixHQUFHO0lBQ3JDLE9BQU8sRUFBRSxhQUFhO0lBQ3RCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsZ0NBQWdDLENBQUM7SUFDL0QsS0FBSyxFQUFFLElBQUk7Q0FDWixDQUFDO0FBYUYsTUFBTSxPQUFPLGdDQUFnQztJQVMzQzs7OztPQUlHO0lBQ0gsSUFDVyxVQUFVLENBQUMsS0FBeUI7UUFDN0MsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFFMUIsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDaEIsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FDakQsSUFBSSxDQUFDLE1BQU0sRUFDWCxJQUFJLENBQUMsVUFBVSxFQUNmLElBQUksQ0FBQyxPQUFPLENBQ2IsQ0FBQztZQUNGLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUMxQyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3RDLENBQUM7SUFDSCxDQUFDO0lBRUQsMENBQTBDO0lBQzFDLElBQVcsVUFBVTtRQUNuQixPQUFPLENBQ0wsSUFBSSxDQUFDLFlBQVk7WUFDakIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVO1lBQzlCLElBQUksQ0FBQyx5QkFBeUIsQ0FDL0IsQ0FBQztJQUNKLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsSUFDVyxRQUFRLENBQUMsS0FBMEI7UUFDNUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFFM0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQ3hCLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUM5QixVQUFVLEVBQ1YsS0FBSyxDQUNOLENBQUM7SUFDSixDQUFDO0lBRUQsSUFBVyxRQUFRO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILElBQ1csY0FBYyxDQUFDLEtBQTBCO1FBQ2xELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFDOUIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDdkQsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQVcsY0FBYztRQUN2QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUMvQixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxJQUNXLE9BQU8sQ0FBQyxLQUErQjtRQUNoRCxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN2QixJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN2RCxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBVyxPQUFPO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxJQUNXLE9BQU8sQ0FBQyxLQUErQjtRQUNoRCxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN2QixJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN2RCxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBVyxPQUFPO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxJQUNXLFdBQVcsQ0FBQyxLQUErQjtRQUNwRCxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztRQUMzQixJQUFJLENBQUMsb0JBQW9CLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUNqRSxDQUFDO0lBRUQsMENBQTBDO0lBQzFDLElBQVcsV0FBVztRQUNwQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDNUIsQ0FBQztJQVNEOzs7OztPQUtHO0lBQ0gsSUFDVyxXQUFXLENBQUMsS0FBeUI7UUFDOUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7UUFDM0IsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBRXpELElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCwwQ0FBMEM7SUFDMUMsSUFBVyxXQUFXO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQztJQUMvRCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFDVyxZQUFZLENBQUMsS0FBMEI7UUFDaEQsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7UUFDNUIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQVcsWUFBWTtRQUNyQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBRUQsSUFBSSxNQUFNLENBQUMsS0FBVTtRQUNuQixJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRCxRQUFRLENBQThCO0lBRXRDLGNBQWMsQ0FBMEI7SUFFeEMsT0FBTyxDQUFTO0lBRWhCLHlCQUF5QixDQUFxQjtJQUU5QyxjQUFjLENBQXVCO0lBRXJDLGNBQWMsQ0FBMkI7SUFFekMsZ0JBQWdCLENBQThCO0lBRTlDLFlBQVksQ0FBcUI7SUFFakMsVUFBVSxDQUE4QjtJQUV4QyxTQUFTLENBQTJCO0lBRXBDLFNBQVMsQ0FBMkI7SUFFcEMsYUFBYSxDQUEyQjtJQUV4QyxhQUFhLENBQXFCO0lBRWxDLE9BQU8sQ0FBTTtJQUViLGNBQWMsQ0FBOEI7SUFFNUMsZUFBZSxDQUFvQjtJQUNuQyxjQUFjLENBQTZCO0lBQzNDLFdBQVcsQ0FBYTtJQUN4QixpQkFBaUIsQ0FBc0I7SUFDdkMsU0FBUyxDQUFZO0lBQ3JCLG9CQUFvQixDQUF5QjtJQUVwQyxrQkFBa0IsQ0FFeEI7SUFFSCxZQUNFLGNBQWlDLEVBQ2pDLGFBQXlDLEVBQ3pDLFVBQXNCLEVBQ3RCLGdCQUFxQyxFQUNyQyxjQUFvQyxFQUNwQyxRQUFtQixFQUNQLG1CQUE0QztRQWhHMUQ7OztXQUdHO1FBRUksNEJBQXVCLEdBQXdCLEtBQUssQ0FBQztRQTZDNUQsbUJBQWMsR0FBRyxJQUFJLGdCQUFnQixFQUFFLENBQUM7UUFNeEMsbUJBQWMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBSXJDLHFCQUFnQixHQUF3QixLQUFLLENBQUM7UUFJOUMsZUFBVSxHQUF3QixLQUFLLENBQUM7UUFZeEMsbUJBQWMsR0FBd0IsS0FBSyxDQUFDO1FBU25DLHVCQUFrQixHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsRUFBRTtZQUM3RCxRQUFRLEVBQUUsSUFBSTtTQUNmLENBQUMsQ0FBQztRQTRUSCx1QkFBdUI7UUFDdkIsY0FBUyxHQUFHLENBQUMsQ0FBTSxFQUFRLEVBQUUsR0FBRSxDQUFDLENBQUM7UUFDakMsdUJBQXVCO1FBQ3ZCLHVCQUFrQixHQUFHLEdBQVMsRUFBRSxHQUFFLENBQUMsQ0FBQztRQXBUbEMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFDekIsTUFBTSxJQUFJLEtBQUssQ0FDYixpRUFBaUU7Z0JBQy9ELCtCQUErQixDQUNsQyxDQUFDO1FBQ0osQ0FBQztRQUVELElBQUksQ0FBQyxlQUFlLEdBQUcsY0FBYyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxjQUFjLEdBQUcsYUFBYSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDO1FBQzlCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxnQkFBZ0IsQ0FBQztRQUMxQyxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQztRQUMxQixJQUFJLENBQUMsb0JBQW9CLEdBQUcsbUJBQW1CLENBQUM7UUFFaEQsSUFBSSxDQUFDLE9BQU8sR0FBRyxjQUFjLENBQUMsYUFBYSxDQUFDO1FBQzVDLGNBQWM7YUFDWCxhQUFhLEVBQUU7YUFDZixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQzthQUNwQyxTQUFTLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRTtZQUN4QixJQUFJLENBQUMsT0FBTyxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUM7WUFDakMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN6QyxJQUFJLENBQUMseUJBQXlCO2dCQUM1QixnQkFBZ0IsQ0FBQywyQkFBMkIsRUFBRSxDQUFDO1FBQ25ELENBQUMsQ0FBQyxDQUFDO1FBRUwsSUFBSSxDQUFDLGtCQUFrQixFQUFFLFFBQVE7YUFDOUIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7YUFDMUIsU0FBUyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDakIsTUFBTSxlQUFlLEdBQ25CLEdBQUcsQ0FBQyxhQUFhLEtBQUssSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUM7WUFFdkQsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO2dCQUNyQixJQUFJLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQztZQUMxQixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sUUFBUTtRQUNiLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3RCLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxXQUFXLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDdkQsTUFBTSxJQUFJLEtBQUssQ0FDYixrR0FBa0csQ0FDbkcsQ0FBQztZQUNKLENBQUM7UUFDSCxDQUFDO1FBRUQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUM7UUFFL0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLGtCQUFrQixDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVNLGtCQUFrQjtRQUN2QixJQUFJLENBQUMsb0JBQW9CLENBQUMsVUFBVTthQUNqQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2FBQzVELFNBQVMsQ0FBQyxDQUFDLEtBQVcsRUFBRSxFQUFFO1lBQ3pCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVNLGVBQWU7UUFDcEIsZ0RBQWdEO1FBQ2hELG1GQUFtRjtRQUNuRix1REFBdUQ7UUFDdkQsb0ZBQW9GO1FBQ3BGLDZEQUE2RDtRQUM3RCwwQkFBMEI7UUFFMUIsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDMUMsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDZCxJQUFJLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO29CQUNuQyxTQUFTLEVBQUUsS0FBSztpQkFDakIsQ0FBQyxDQUFDO2dCQUVILElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdEMsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFHTSxhQUFhLENBQUMsS0FBVTtRQUM3QixJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUdNLFdBQVc7UUFDaEIsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FDakQsSUFBSSxDQUFDLE1BQU0sRUFDWCxJQUFJLENBQUMsVUFBVSxFQUNmLElBQUksQ0FBQyxPQUFPLENBQ2IsQ0FBQztRQUVGLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMscUJBQXFCLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDNUMsQ0FBQztJQUNILENBQUM7SUFHTSxPQUFPO1FBQ1osSUFBSSxDQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRU0sVUFBVSxDQUFDLEtBQVU7UUFDMUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVNLFFBQVEsQ0FBQyxPQUF3QjtRQUN0QyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO1FBQzFCLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1lBQ2pDLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3pCLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELE1BQU0sS0FBSyxHQUFRLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFFakMsSUFBSSxTQUFtQyxDQUFDO1FBQ3hDLElBQUksZUFBZSxHQUE0QixJQUFJLENBQUM7UUFFcEQsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUM5QixTQUFTLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLHNCQUFzQixDQUN2RCxLQUFLLEVBQ0wsSUFBSSxDQUFDLFVBQVUsQ0FDaEIsQ0FBQztRQUNKLENBQUM7YUFBTSxDQUFDO1lBQ04sU0FBUyxHQUFHLEtBQUssQ0FBQztRQUNwQixDQUFDO1FBRUQsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2YsZUFBZSxHQUFHO2dCQUNoQixZQUFZLEVBQUU7b0JBQ1osT0FBTyxFQUFFLEtBQUs7aUJBQ2Y7YUFDRixDQUFDO1FBQ0osQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQ3pDLGVBQWUsR0FBRztvQkFDaEIsWUFBWSxFQUFFO3dCQUNaLFlBQVksRUFBRSxLQUFLO3FCQUNwQjtpQkFDRixDQUFDO1lBQ0osQ0FBQztZQUVELElBQUksQ0FBQyxlQUFlLElBQUksU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUN2QyxJQUFJLGNBQWMsQ0FBQztnQkFFbkIsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7b0JBQ2pCLGNBQWMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsaUJBQWlCLENBQ3ZELFNBQVMsRUFDVCxJQUFJLENBQUMsT0FBTyxDQUNiLENBQUM7b0JBRUYsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQzt3QkFDMUIsZUFBZSxHQUFHOzRCQUNoQixZQUFZLEVBQUU7Z0NBQ1osT0FBTyxFQUFFLEtBQUs7Z0NBQ2QsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQzFDLGNBQWMsQ0FBQyxPQUFPLEVBQ3RCLElBQUksQ0FBQyxVQUFVLENBQ2hCOzZCQUNGO3lCQUNGLENBQUM7b0JBQ0osQ0FBQztnQkFDSCxDQUFDO2dCQUVELElBQUksQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO29CQUNyQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGlCQUFpQixDQUN2RCxJQUFJLENBQUMsT0FBTyxFQUNaLFNBQVMsQ0FDVixDQUFDO29CQUNGLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUM7d0JBQzFCLGVBQWUsR0FBRzs0QkFDaEIsWUFBWSxFQUFFO2dDQUNaLE9BQU8sRUFBRSxLQUFLO2dDQUNkLGdCQUFnQixFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUMxQyxjQUFjLENBQUMsU0FBUyxFQUN4QixJQUFJLENBQUMsVUFBVSxDQUNoQjs2QkFDRjt5QkFDRixDQUFDO29CQUNKLENBQUM7Z0JBQ0gsQ0FBQztnQkFFRCxJQUFJLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztvQkFDNUMsY0FBYyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxpQkFBaUIsQ0FDdkQsU0FBUyxFQUNULElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxtQkFBbUIsRUFBRSxDQUM3QyxDQUFDO29CQUNGLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUM7d0JBQzFCLGVBQWUsR0FBRzs0QkFDaEIsWUFBWSxFQUFFO2dDQUNaLGNBQWMsRUFBRSxLQUFLOzZCQUN0Qjt5QkFDRixDQUFDO29CQUNKLENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxlQUFlLEVBQUUsQ0FBQztZQUNwQixxRkFBcUY7WUFDckYsd0ZBQXdGO1lBQ3hGLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDaEMsQ0FBQztRQUVELE9BQU8sZUFBZSxDQUFDO0lBQ3pCLENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxFQUF3QjtRQUM5QyxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRU0saUJBQWlCLENBQUMsRUFBYztRQUNyQyxJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRU0seUJBQXlCLENBQUMsRUFBYztRQUM3QyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxRQUFpQjtRQUN2QyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsb0JBQW9CLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUNoRCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksc0JBQXNCO1FBQzNCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVTLFVBQVUsQ0FBQyxHQUFlO1FBQ2xDLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsb0JBQW9CLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN4RCxJQUFJLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQztRQUMxQixDQUFDO0lBQ0gsQ0FBQztJQUVELGNBQWMsQ0FBQyxRQUFnQjtRQUM3QixJQUFJLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQztJQUN6QixDQUFDO0lBRUQscUJBQXFCLENBQUMsS0FBYTtRQUNqQyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNqQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsc0JBQXNCLENBQzNELElBQUksQ0FBQyxPQUFPLENBQ2IsQ0FBQztZQUNGLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7Z0JBQ3RCLE9BQU8sT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzFCLENBQUM7UUFDSCxDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDL0IsT0FBTyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3BCLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDakIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLHNCQUFzQixDQUMzRCxJQUFJLENBQUMsT0FBTyxDQUNiLENBQUM7WUFDRixJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO2dCQUN0QixPQUFPLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUMxQixDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUM7SUFDckMsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyQixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsc0JBQXNCLENBQy9ELElBQUksQ0FBQyxXQUFXLENBQ2pCLENBQUM7WUFDRixJQUFJLFdBQVcsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO2dCQUMxQixPQUFPLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUM5QixDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUM7SUFDekMsQ0FBQztJQUVELDBCQUEwQjtJQUMxQixnQkFBZ0IsQ0FBQyxLQUFvQixFQUFFLEtBQW9CO1FBQ3pELE9BQU8sQ0FBQyxDQUFDLENBQ1AsS0FBSztZQUNMLEtBQUs7WUFDTCxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssS0FBSyxDQUFDLEdBQUcsQ0FBQztZQUN2RCxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxLQUFLLEtBQUssS0FBSyxDQUFDLEtBQUssQ0FBQztZQUMvRCxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssS0FBSyxDQUFDLElBQUksQ0FBQyxDQUM1RCxDQUFDO0lBQ0osQ0FBQztJQUVELHVCQUF1QjtJQUN2QixTQUFTLENBQXdCO0lBQ2pDLHVCQUF1QjtJQUN2QixrQkFBa0IsQ0FBa0I7SUFFcEM7Ozs7T0FJRztJQUNILFlBQVksQ0FBQyxLQUFVLEVBQUUsU0FBUyxHQUFHLElBQUk7UUFDdkMsSUFDRSxJQUFJLENBQUMsT0FBTyxLQUFLLEtBQUs7WUFDdEIsQ0FBQyxJQUFJLENBQUMsT0FBTyxLQUFLLFNBQVMsSUFBSSxLQUFLLEtBQUssSUFBSSxDQUFDLEVBQzlDLENBQUM7WUFDRCxPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksU0FBbUMsQ0FBQztRQUN4QyxJQUFJLFdBQWdCLENBQUM7UUFDckIsSUFBSSxTQUEyQixDQUFDO1FBQ2hDLElBQUksYUFBaUMsQ0FBQztRQUV0QyxJQUFJLEtBQUssWUFBWSxJQUFJLEVBQUUsQ0FBQztZQUMxQixTQUFTLEdBQUcsS0FBSyxDQUFDO1lBQ2xCLGFBQWEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ25FLFNBQVMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsNEJBQTRCLENBQzdELEtBQUssRUFDTCxJQUFJLENBQUMsVUFBVSxDQUNoQixDQUFDO1FBQ0osQ0FBQzthQUFNLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDckMsU0FBUyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxzQkFBc0IsQ0FDdkQsS0FBSyxFQUNMLElBQUksQ0FBQyxVQUFVLENBQ2hCLENBQUM7WUFDRixJQUFJLFNBQVMsRUFBRSxDQUFDO2dCQUNkLGFBQWEsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUMzQyxTQUFTLEVBQ1QsSUFBSSxDQUFDLFVBQVUsRUFDZixJQUFJLENBQUMsT0FBTyxDQUNiLENBQUM7WUFDSixDQUFDO1lBRUQsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUNuQixhQUFhLEdBQUcsS0FBSyxDQUFDO1lBQ3hCLENBQUM7WUFFRCxXQUFXLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLHNCQUFzQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBRXZFLElBQUksV0FBVyxFQUFFLENBQUM7Z0JBQ2hCLFNBQVMsR0FBRyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDbkMsQ0FBQztRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sU0FBUyxHQUFHLEtBQXFCLENBQUM7WUFDbEMsYUFBYSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQzNDLFNBQVMsRUFDVCxJQUFJLENBQUMsVUFBVSxFQUNmLElBQUksQ0FBQyxPQUFPLENBQ2IsQ0FBQztZQUNGLFdBQVcsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsc0JBQXNCLENBQUMsU0FBUyxDQUFDLENBQUM7WUFFdkUsSUFBSSxXQUFXLEVBQUUsQ0FBQztnQkFDaEIsU0FBUyxHQUFHLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNuQyxDQUFDO1FBQ0gsQ0FBQztRQUVELE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDMUUsTUFBTSxVQUFVLEdBQUcsU0FBUyxLQUFLLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztRQUVyRSxJQUFJLENBQUMsT0FBTyxHQUFHLFNBQVMsSUFBSSxLQUFLLENBQUM7UUFFbEMsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNmLElBQUksU0FBUyxFQUFFLENBQUM7Z0JBQ2QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDL0IsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUM5RCxDQUFDO1lBRUQsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFlBQVksR0FBRyxTQUFTLENBQUM7UUFDckQsQ0FBQztRQUVELElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxhQUFhLElBQUksRUFBRSxDQUFDLENBQUM7SUFDbEQsQ0FBQzs4R0FubUJVLGdDQUFnQztrR0FBaEMsZ0NBQWdDLHFlQVBoQztZQUNULG1DQUFtQztZQUNuQyw4QkFBOEI7U0FDL0I7OzJGQUlVLGdDQUFnQztrQkFYNUMsU0FBUzttQkFBQztvQkFDVCxJQUFJLEVBQUU7d0JBQ0osWUFBWSxFQUFFLG9CQUFvQjtxQkFDbkM7b0JBQ0QsU0FBUyxFQUFFO3dCQUNULG1DQUFtQzt3QkFDbkMsOEJBQThCO3FCQUMvQjtvQkFDRCxRQUFRLEVBQUUsMkJBQTJCO29CQUNyQyxVQUFVLEVBQUUsSUFBSTtpQkFDakI7OzBCQStOSSxRQUFRO3lDQS9NQSxVQUFVO3NCQURwQixLQUFLO2dCQThCSyxRQUFRO3NCQURsQixLQUFLO2dCQXNCSyxjQUFjO3NCQUR4QixLQUFLO2dCQWtCSyxPQUFPO3NCQURqQixLQUFLO2dCQWtCSyxPQUFPO3NCQURqQixLQUFLO2dCQWtCSyxXQUFXO3NCQURyQixLQUFLO2dCQWdCQyx1QkFBdUI7c0JBRDdCLEtBQUs7Z0JBVUssV0FBVztzQkFEckIsS0FBSztnQkFrQkssWUFBWTtzQkFEdEIsS0FBSztnQkF3SkMsYUFBYTtzQkFEbkIsWUFBWTt1QkFBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBTTNCLFdBQVc7c0JBRGpCLFlBQVk7dUJBQUMsTUFBTTtnQkFjYixPQUFPO3NCQURiLFlBQVk7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgUmVuZGVyZXIyLFxuICBmb3J3YXJkUmVmLFxuICBpbmplY3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHtcbiAgQWJzdHJhY3RDb250cm9sLFxuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgTkdfVkFMSURBVE9SUyxcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gIFZhbGlkYXRpb25FcnJvcnMsXG4gIFZhbGlkYXRvcixcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU2t5QXBwTG9jYWxlUHJvdmlkZXIgfSBmcm9tICdAc2t5dXgvaTE4bic7XG5cbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNreURhdGVGb3JtYXR0ZXIgfSBmcm9tICcuLi9kYXRlLWZvcm1hdHRlcic7XG5pbXBvcnQgeyBTa3lEYXRlcGlja2VyQ29uZmlnU2VydmljZSB9IGZyb20gJy4uL2RhdGVwaWNrZXItY29uZmlnLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2t5RGF0ZXBpY2tlckhvc3RTZXJ2aWNlIH0gZnJvbSAnLi4vZGF0ZXBpY2tlci1ob3N0LnNlcnZpY2UnO1xuaW1wb3J0IHsgU2t5RGF0ZXBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4uL2RhdGVwaWNrZXIuY29tcG9uZW50JztcblxuaW1wb3J0IHsgU2t5RnV6enlEYXRlIH0gZnJvbSAnLi9mdXp6eS1kYXRlJztcbmltcG9ydCB7IFNreUZ1enp5RGF0ZVNlcnZpY2UgfSBmcm9tICcuL2Z1enp5LWRhdGUuc2VydmljZSc7XG5cbmNvbnN0IFNLWV9GVVpaWV9EQVRFUElDS0VSX1ZBTFVFX0FDQ0VTU09SID0ge1xuICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gU2t5RnV6enlEYXRlcGlja2VySW5wdXREaXJlY3RpdmUpLFxuICBtdWx0aTogdHJ1ZSxcbn07XG5cbmNvbnN0IFNLWV9GVVpaWV9EQVRFUElDS0VSX1ZBTElEQVRPUiA9IHtcbiAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gU2t5RnV6enlEYXRlcGlja2VySW5wdXREaXJlY3RpdmUpLFxuICBtdWx0aTogdHJ1ZSxcbn07XG5cbkBEaXJlY3RpdmUoe1xuICBob3N0OiB7XG4gICAgJyhmb2N1c291dCknOiAnb25Gb2N1c291dCgkZXZlbnQpJyxcbiAgfSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgU0tZX0ZVWlpZX0RBVEVQSUNLRVJfVkFMVUVfQUNDRVNTT1IsXG4gICAgU0tZX0ZVWlpZX0RBVEVQSUNLRVJfVkFMSURBVE9SLFxuICBdLFxuICBzZWxlY3RvcjogJ1tza3lGdXp6eURhdGVwaWNrZXJJbnB1dF0nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lGdXp6eURhdGVwaWNrZXJJbnB1dERpcmVjdGl2ZVxuICBpbXBsZW1lbnRzXG4gICAgT25Jbml0LFxuICAgIE9uRGVzdHJveSxcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gICAgVmFsaWRhdG9yXG57XG4gIC8qKlxuICAgKiBUaGUgZGF0ZSBmb3JtYXQgZm9yIHRoZSBpbnB1dC4gUGxhY2UgdGhpcyBhdHRyaWJ1dGUgb24gdGhlIGBpbnB1dGAgZWxlbWVudFxuICAgKiB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBpbiBgU2t5RGF0ZXBpY2tlckNvbmZpZ1NlcnZpY2VgLlxuICAgKiBAZGVmYXVsdCBcIk1NL0REL1lZWVlcIlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBkYXRlRm9ybWF0KHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfZGF0ZUZvcm1hdCA9IHZhbHVlO1xuXG4gICAgaWYgKHRoaXMuI3ZhbHVlKSB7XG4gICAgICBjb25zdCBmb3JtYXR0ZWREYXRlID0gdGhpcy4jZnV6enlEYXRlU2VydmljZS5mb3JtYXQoXG4gICAgICAgIHRoaXMuI3ZhbHVlLFxuICAgICAgICB0aGlzLmRhdGVGb3JtYXQsXG4gICAgICAgIHRoaXMuI2xvY2FsZSxcbiAgICAgICk7XG4gICAgICB0aGlzLiNzZXRJbnB1dEVsZW1lbnRWYWx1ZShmb3JtYXR0ZWREYXRlKTtcbiAgICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIC8vIFRPRE86IFJlZmFjdG9yIHRvIG5vdCBoYXZlIGdldHRlciBsb2dpY1xuICBwdWJsaWMgZ2V0IGRhdGVGb3JtYXQoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy4jX2RhdGVGb3JtYXQgfHxcbiAgICAgIHRoaXMuI2NvbmZpZ1NlcnZpY2UuZGF0ZUZvcm1hdCB8fFxuICAgICAgdGhpcy4jcHJlZmVycmVkU2hvcnREYXRlRm9ybWF0XG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGRpc2FibGUgdGhlIGRhdGVwaWNrZXIgb24gdGVtcGxhdGUtZHJpdmVuIGZvcm1zLiBEb24ndCB1c2UgdGhpcyBpbnB1dCBvbiByZWFjdGl2ZSBmb3JtcyBiZWNhdXNlIHRoZXkgbWF5IG92ZXJ3cml0ZSB0aGUgaW5wdXQgb3IgbGVhdmUgdGhlIGNvbnRyb2wgb3V0IG9mIHN5bmMuXG4gICAqIFRvIHNldCB0aGUgZGlzYWJsZWQgc3RhdGUgb24gcmVhY3RpdmUgZm9ybXMsIHVzZSB0aGUgYEZvcm1Db250cm9sYCBpbnN0ZWFkLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19kaXNhYmxlZCA9IHZhbHVlO1xuICAgIHRoaXMuI2RhdGVwaWNrZXJDb21wb25lbnQuZGlzYWJsZWQgPSB2YWx1ZTtcblxuICAgIHRoaXMuI3JlbmRlcmVyLnNldFByb3BlcnR5KFxuICAgICAgdGhpcy4jZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgJ2Rpc2FibGVkJyxcbiAgICAgIHZhbHVlLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLiNfZGlzYWJsZWQ7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0byBwcmV2ZW50IHVzZXJzIGZyb20gc3BlY2lmeWluZyBkYXRlcyB0aGF0IGFyZSBpbiB0aGUgZnV0dXJlLlxuICAgKiBQbGFjZSB0aGlzIGF0dHJpYnV0ZSBvbiB0aGUgYGlucHV0YCBlbGVtZW50LlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBmdXR1cmVEaXNhYmxlZCh2YWx1ZTogYm9vbGVhbiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19mdXR1cmVEaXNhYmxlZCA9IHZhbHVlO1xuICAgIHRoaXMuI2RhdGVwaWNrZXJDb21wb25lbnQubWF4RGF0ZSA9IHRoaXMuI2dldE1heERhdGUoKTtcbiAgICB0aGlzLiNvblZhbGlkYXRvckNoYW5nZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBmdXR1cmVEaXNhYmxlZCgpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy4jX2Z1dHVyZURpc2FibGVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBsYXRlc3QgZnV6enkgZGF0ZSBhbGxvd2VkLiBQbGFjZSB0aGlzIGF0dHJpYnV0ZSBvbiB0aGUgYGlucHV0YCBlbGVtZW50XG4gICAqIHRvIHByZXZlbnQgZnV6enkgZGF0ZXMgYWZ0ZXIgYSBzcGVjaWZpZWQgZGF0ZS4gVGhpcyBwcm9wZXJ0eSBhY2NlcHRzXG4gICAqIGEgYFNreUZ1enp5RGF0ZWAgdmFsdWUgdGhhdCBpbmNsdWRlcyBudW1lcmljIG1vbnRoLCBkYXksIGFuZCB5ZWFyIHZhbHVlcy5cbiAgICogRm9yIGV4YW1wbGU6IGB7IG1vbnRoOiAxLCBkYXk6IDEsIHllYXI6IDIwMjcgfWAuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IG1heERhdGUodmFsdWU6IFNreUZ1enp5RGF0ZSB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19tYXhEYXRlID0gdmFsdWU7XG4gICAgdGhpcy4jZGF0ZXBpY2tlckNvbXBvbmVudC5tYXhEYXRlID0gdGhpcy4jZ2V0TWF4RGF0ZSgpO1xuICAgIHRoaXMuI29uVmFsaWRhdG9yQ2hhbmdlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG1heERhdGUoKTogU2t5RnV6enlEYXRlIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy4jX21heERhdGU7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGVhcmxpZXN0IGZ1enp5IGRhdGUgYWxsb3dlZC4gUGxhY2UgdGhpcyBhdHRyaWJ1dGUgb24gdGhlIGBpbnB1dGAgZWxlbWVudFxuICAgKiB0byBwcmV2ZW50IGZ1enp5IGRhdGVzIGJlZm9yZSBhIHNwZWNpZmllZCBkYXRlLiBUaGlzIHByb3BlcnR5IGFjY2VwdHMgYSBgU2t5RnV6enlEYXRlYCB2YWx1ZVxuICAgKiB0aGF0IGluY2x1ZGVzIG51bWVyaWMgbW9udGgsIGRheSwgYW5kIHllYXIgdmFsdWVzLlxuICAgKiBGb3IgZXhhbXBsZTogYHsgbW9udGg6IDEsIGRheTogMSwgeWVhcjogMjAwNyB9YC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgbWluRGF0ZSh2YWx1ZTogU2t5RnV6enlEYXRlIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX21pbkRhdGUgPSB2YWx1ZTtcbiAgICB0aGlzLiNkYXRlcGlja2VyQ29tcG9uZW50Lm1pbkRhdGUgPSB0aGlzLiNnZXRNaW5EYXRlKCk7XG4gICAgdGhpcy4jb25WYWxpZGF0b3JDaGFuZ2UoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbWluRGF0ZSgpOiBTa3lGdXp6eURhdGUgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLiNfbWluRGF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgZnV6enkgZGF0ZSB0byBvcGVuIHRoZSBjYWxlbmRhciB0byBpbml0aWFsbHkuXG4gICAqIFRoaXMgcHJvcGVydHkgYWNjZXB0cyBhIGBTa3lGdXp6eURhdGVgIHZhbHVlIHRoYXQgaW5jbHVkZXMgbnVtZXJpYyBtb250aCwgZGF5LCBhbmQgeWVhciB2YWx1ZXMuXG4gICAqIEZvciBleGFtcGxlOiBgeyBtb250aDogMSwgZGF5OiAxLCB5ZWFyOiAyMDA3IH1gLlxuICAgKiBAZGVmYXVsdCBUaGUgY3VycmVudCBkYXRlXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHN0YXJ0QXREYXRlKHZhbHVlOiBTa3lGdXp6eURhdGUgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfc3RhcnRBdERhdGUgPSB2YWx1ZTtcbiAgICB0aGlzLiNkYXRlcGlja2VyQ29tcG9uZW50LnN0YXJ0QXREYXRlID0gdGhpcy4jZ2V0U3RhcnRBdERhdGUoKTtcbiAgfVxuXG4gIC8vIFRPRE86IFJlZmFjdG9yIHRvIG5vdCBoYXZlIGdldHRlciBsb2dpY1xuICBwdWJsaWMgZ2V0IHN0YXJ0QXREYXRlKCk6IFNreUZ1enp5RGF0ZSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI19zdGFydEF0RGF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGRpc2FibGUgZGF0ZSB2YWxpZGF0aW9uIG9uIHRoZSBmdXp6eSBkYXRlcGlja2VyIGlucHV0LlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNreURhdGVwaWNrZXJOb1ZhbGlkYXRlOiBib29sZWFuIHwgdW5kZWZpbmVkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFRoZSBzdGFydGluZyBkYXkgb2YgdGhlIHdlZWsgaW4gdGhlIGNhbGVuZGFyLCB3aGVyZSBgMGAgc2V0cyB0aGUgc3RhcnRpbmcgZGF5XG4gICAqIHRvIFN1bmRheS4gUGxhY2UgdGhpcyBhdHRyaWJ1dGUgb24gdGhlIGBpbnB1dGAgZWxlbWVudCB0byBvdmVycmlkZSB0aGUgZGVmYXVsdFxuICAgKiBpbiBgU2t5RGF0ZXBpY2tlckNvbmZpZ1NlcnZpY2VgLlxuICAgKiBAZGVmYXVsdCAwXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHN0YXJ0aW5nRGF5KHZhbHVlOiBudW1iZXIgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfc3RhcnRpbmdEYXkgPSB2YWx1ZTtcbiAgICB0aGlzLiNkYXRlcGlja2VyQ29tcG9uZW50LnN0YXJ0aW5nRGF5ID0gdGhpcy5zdGFydGluZ0RheTtcblxuICAgIHRoaXMuI29uVmFsaWRhdG9yQ2hhbmdlKCk7XG4gIH1cblxuICAvLyBUT0RPOiBSZWZhY3RvciB0byBub3QgaGF2ZSBnZXR0ZXIgbG9naWNcbiAgcHVibGljIGdldCBzdGFydGluZ0RheSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLiNfc3RhcnRpbmdEYXkgfHwgdGhpcy4jY29uZmlnU2VydmljZS5zdGFydGluZ0RheTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHJlcXVpcmUgdGhlIHllYXIgaW4gZnV6enkgZGF0ZXMuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHllYXJSZXF1aXJlZCh2YWx1ZTogYm9vbGVhbiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI195ZWFyUmVxdWlyZWQgPSB2YWx1ZTtcbiAgICB0aGlzLiNvblZhbGlkYXRvckNoYW5nZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCB5ZWFyUmVxdWlyZWQoKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI195ZWFyUmVxdWlyZWQ7XG4gIH1cblxuICBnZXQgI3ZhbHVlKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuI192YWx1ZTtcbiAgfVxuXG4gIHNldCAjdmFsdWUodmFsdWU6IGFueSkge1xuICAgIHRoaXMuI3VwZGF0ZVZhbHVlKHZhbHVlKTtcbiAgfVxuXG4gICNjb250cm9sOiBBYnN0cmFjdENvbnRyb2wgfCB1bmRlZmluZWQ7XG5cbiAgI2RhdGVGb3JtYXR0ZXIgPSBuZXcgU2t5RGF0ZUZvcm1hdHRlcigpO1xuXG4gICNsb2NhbGU6IHN0cmluZztcblxuICAjcHJlZmVycmVkU2hvcnREYXRlRm9ybWF0OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgI25nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICNub3RpZnlUb3VjaGVkOiAoKCkgPT4gdm9pZCkgfCB1bmRlZmluZWQ7XG5cbiAgI19mdXR1cmVEaXNhYmxlZDogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IGZhbHNlO1xuXG4gICNfZGF0ZUZvcm1hdDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gICNfZGlzYWJsZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQgPSBmYWxzZTtcblxuICAjX21heERhdGU6IFNreUZ1enp5RGF0ZSB8IHVuZGVmaW5lZDtcblxuICAjX21pbkRhdGU6IFNreUZ1enp5RGF0ZSB8IHVuZGVmaW5lZDtcblxuICAjX3N0YXJ0QXREYXRlOiBTa3lGdXp6eURhdGUgfCB1bmRlZmluZWQ7XG5cbiAgI19zdGFydGluZ0RheTogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gICNfdmFsdWU6IGFueTtcblxuICAjX3llYXJSZXF1aXJlZDogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IGZhbHNlO1xuXG4gICNjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWY7XG4gICNjb25maWdTZXJ2aWNlOiBTa3lEYXRlcGlja2VyQ29uZmlnU2VydmljZTtcbiAgI2VsZW1lbnRSZWY6IEVsZW1lbnRSZWY7XG4gICNmdXp6eURhdGVTZXJ2aWNlOiBTa3lGdXp6eURhdGVTZXJ2aWNlO1xuICAjcmVuZGVyZXI6IFJlbmRlcmVyMjtcbiAgI2RhdGVwaWNrZXJDb21wb25lbnQ6IFNreURhdGVwaWNrZXJDb21wb25lbnQ7XG5cbiAgcmVhZG9ubHkgI2RhdGVwaWNrZXJIb3N0U3ZjID0gaW5qZWN0KFNreURhdGVwaWNrZXJIb3N0U2VydmljZSwge1xuICAgIG9wdGlvbmFsOiB0cnVlLFxuICB9KTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgY29uZmlnU2VydmljZTogU2t5RGF0ZXBpY2tlckNvbmZpZ1NlcnZpY2UsXG4gICAgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBmdXp6eURhdGVTZXJ2aWNlOiBTa3lGdXp6eURhdGVTZXJ2aWNlLFxuICAgIGxvY2FsZVByb3ZpZGVyOiBTa3lBcHBMb2NhbGVQcm92aWRlcixcbiAgICByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIEBPcHRpb25hbCgpIGRhdGVwaWNrZXJDb21wb25lbnQ/OiBTa3lEYXRlcGlja2VyQ29tcG9uZW50LFxuICApIHtcbiAgICBpZiAoIWRhdGVwaWNrZXJDb21wb25lbnQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ1lvdSBtdXN0IHdyYXAgdGhlIGBza3lGdXp6eURhdGVwaWNrZXJJbnB1dGAgZGlyZWN0aXZlIHdpdGhpbiBhICcgK1xuICAgICAgICAgICdgPHNreS1kYXRlcGlja2VyPmAgY29tcG9uZW50IScsXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yID0gY2hhbmdlRGV0ZWN0b3I7XG4gICAgdGhpcy4jY29uZmlnU2VydmljZSA9IGNvbmZpZ1NlcnZpY2U7XG4gICAgdGhpcy4jZWxlbWVudFJlZiA9IGVsZW1lbnRSZWY7XG4gICAgdGhpcy4jZnV6enlEYXRlU2VydmljZSA9IGZ1enp5RGF0ZVNlcnZpY2U7XG4gICAgdGhpcy4jcmVuZGVyZXIgPSByZW5kZXJlcjtcbiAgICB0aGlzLiNkYXRlcGlja2VyQ29tcG9uZW50ID0gZGF0ZXBpY2tlckNvbXBvbmVudDtcblxuICAgIHRoaXMuI2xvY2FsZSA9IGxvY2FsZVByb3ZpZGVyLmRlZmF1bHRMb2NhbGU7XG4gICAgbG9jYWxlUHJvdmlkZXJcbiAgICAgIC5nZXRMb2NhbGVJbmZvKClcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKGxvY2FsZUluZm8pID0+IHtcbiAgICAgICAgdGhpcy4jbG9jYWxlID0gbG9jYWxlSW5mby5sb2NhbGU7XG4gICAgICAgIFNreURhdGVGb3JtYXR0ZXIuc2V0TG9jYWxlKHRoaXMuI2xvY2FsZSk7XG4gICAgICAgIHRoaXMuI3ByZWZlcnJlZFNob3J0RGF0ZUZvcm1hdCA9XG4gICAgICAgICAgU2t5RGF0ZUZvcm1hdHRlci5nZXRQcmVmZXJyZWRTaG9ydERhdGVGb3JtYXQoKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy4jZGF0ZXBpY2tlckhvc3RTdmM/LmZvY3Vzb3V0XG4gICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSlcbiAgICAgIC5zdWJzY3JpYmUoKGV2dCkgPT4ge1xuICAgICAgICBjb25zdCBpc0ZvY3VzaW5nSW5wdXQgPVxuICAgICAgICAgIGV2dC5yZWxhdGVkVGFyZ2V0ID09PSB0aGlzLiNlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICAgICAgaWYgKCFpc0ZvY3VzaW5nSW5wdXQpIHtcbiAgICAgICAgICB0aGlzLiNub3RpZnlUb3VjaGVkPy4oKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMueWVhclJlcXVpcmVkKSB7XG4gICAgICBpZiAodGhpcy5kYXRlRm9ybWF0Py50b0xvd2VyQ2FzZSgpLmluZGV4T2YoJ3knKSA9PT0gLTEpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICdZb3UgaGF2ZSBjb25maWd1cmVkIGNvbmZsaWN0aW5nIHNldHRpbmdzLiBZZWFyIGlzIHJlcXVpcmVkIGFuZCBkYXRlRm9ybWF0IGRvZXMgbm90IGluY2x1ZGUgeWVhci4nLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLiNlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICB0aGlzLiNyZW5kZXJlci5hZGRDbGFzcyhlbGVtZW50LCAnc2t5LWZvcm0tY29udHJvbCcpO1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLiNkYXRlcGlja2VyQ29tcG9uZW50LmRhdGVDaGFuZ2VcbiAgICAgIC5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksIHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKHZhbHVlOiBEYXRlKSA9PiB7XG4gICAgICAgIHRoaXMuI3ZhbHVlID0gdmFsdWU7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgLy8gVGhpcyBpcyBuZWVkZWQgdG8gYWRkcmVzcyBhIGJ1ZyBpbiBBbmd1bGFyIDQuXG4gICAgLy8gV2hlbiBhIGNvbnRyb2wgdmFsdWUgaXMgc2V0IGluaXRpYWxseSwgaXRzIHZhbHVlIGlzIG5vdCByZXByZXNlbnRlZCBvbiB0aGUgdmlldy5cbiAgICAvLyBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzEzNzkyXG4gICAgLy8gT2Ygbm90ZSBpcyB0aGUgcGFyZW50IGNoZWNrIHdoaWNoIGFsbG93cyB1cyB0byBkZXRlcm1pbmUgaWYgdGhlIGZvcm0gaXMgcmVhY3RpdmUuXG4gICAgLy8gV2l0aG91dCB0aGlzIGNoZWNrIHRoZXJlIGlzIGEgY2hhbmdlZCBiZWZvcmUgY2hlY2tlZCBlcnJvclxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG5cbiAgICBpZiAodGhpcy4jY29udHJvbCAmJiB0aGlzLiNjb250cm9sLnBhcmVudCkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuI2NvbnRyb2w/LnNldFZhbHVlKHRoaXMuI3ZhbHVlLCB7XG4gICAgICAgICAgZW1pdEV2ZW50OiBmYWxzZSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignY2hhbmdlJywgWyckZXZlbnQnXSlcbiAgcHVibGljIG9uSW5wdXRDaGFuZ2UoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuI29uVmFsdWVDaGFuZ2UoZXZlbnQudGFyZ2V0LnZhbHVlKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2JsdXInKVxuICBwdWJsaWMgb25JbnB1dEJsdXIoKTogdm9pZCB7XG4gICAgY29uc3QgZm9ybWF0dGVkRGF0ZSA9IHRoaXMuI2Z1enp5RGF0ZVNlcnZpY2UuZm9ybWF0KFxuICAgICAgdGhpcy4jdmFsdWUsXG4gICAgICB0aGlzLmRhdGVGb3JtYXQsXG4gICAgICB0aGlzLiNsb2NhbGUsXG4gICAgKTtcblxuICAgIGlmICh0aGlzLiNjb250cm9sPy52YWxpZCkge1xuICAgICAgdGhpcy4jc2V0SW5wdXRFbGVtZW50VmFsdWUoZm9ybWF0dGVkRGF0ZSk7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignaW5wdXQnKVxuICBwdWJsaWMgb25JbnB1dCgpOiB2b2lkIHtcbiAgICB0aGlzLiNjb250cm9sPy5tYXJrQXNEaXJ0eSgpO1xuICB9XG5cbiAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuI3VwZGF0ZVZhbHVlKHZhbHVlLCBmYWxzZSk7XG4gIH1cblxuICBwdWJsaWMgdmFsaWRhdGUoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIGlmICghdGhpcy4jY29udHJvbCkge1xuICAgICAgdGhpcy4jY29udHJvbCA9IGNvbnRyb2w7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc2t5RGF0ZXBpY2tlck5vVmFsaWRhdGUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmICghdGhpcy4jY29udHJvbC52YWx1ZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgdmFsdWU6IGFueSA9IGNvbnRyb2wudmFsdWU7XG5cbiAgICBsZXQgZnV6enlEYXRlOiBTa3lGdXp6eURhdGUgfCB1bmRlZmluZWQ7XG4gICAgbGV0IHZhbGlkYXRpb25FcnJvcjogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPSBudWxsO1xuXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGZ1enp5RGF0ZSA9IHRoaXMuI2Z1enp5RGF0ZVNlcnZpY2UuZ2V0RnV6enlEYXRlRnJvbVN0cmluZyhcbiAgICAgICAgdmFsdWUsXG4gICAgICAgIHRoaXMuZGF0ZUZvcm1hdCxcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZ1enp5RGF0ZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIGlmICghZnV6enlEYXRlKSB7XG4gICAgICB2YWxpZGF0aW9uRXJyb3IgPSB7XG4gICAgICAgIHNreUZ1enp5RGF0ZToge1xuICAgICAgICAgIGludmFsaWQ6IHZhbHVlLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFmdXp6eURhdGUueWVhciAmJiB0aGlzLnllYXJSZXF1aXJlZCkge1xuICAgICAgICB2YWxpZGF0aW9uRXJyb3IgPSB7XG4gICAgICAgICAgc2t5RnV6enlEYXRlOiB7XG4gICAgICAgICAgICB5ZWFyUmVxdWlyZWQ6IHZhbHVlLFxuICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGlmICghdmFsaWRhdGlvbkVycm9yICYmIGZ1enp5RGF0ZS55ZWFyKSB7XG4gICAgICAgIGxldCBmdXp6eURhdGVSYW5nZTtcblxuICAgICAgICBpZiAodGhpcy5tYXhEYXRlKSB7XG4gICAgICAgICAgZnV6enlEYXRlUmFuZ2UgPSB0aGlzLiNmdXp6eURhdGVTZXJ2aWNlLmdldEZ1enp5RGF0ZVJhbmdlKFxuICAgICAgICAgICAgZnV6enlEYXRlLFxuICAgICAgICAgICAgdGhpcy5tYXhEYXRlLFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBpZiAoIWZ1enp5RGF0ZVJhbmdlLnZhbGlkKSB7XG4gICAgICAgICAgICB2YWxpZGF0aW9uRXJyb3IgPSB7XG4gICAgICAgICAgICAgIHNreUZ1enp5RGF0ZToge1xuICAgICAgICAgICAgICAgIG1heERhdGU6IHZhbHVlLFxuICAgICAgICAgICAgICAgIG1heERhdGVGb3JtYXR0ZWQ6IHRoaXMuI2RhdGVGb3JtYXR0ZXIuZm9ybWF0KFxuICAgICAgICAgICAgICAgICAgZnV6enlEYXRlUmFuZ2UuZW5kRGF0ZSxcbiAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZUZvcm1hdCxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXZhbGlkYXRpb25FcnJvciAmJiB0aGlzLm1pbkRhdGUpIHtcbiAgICAgICAgICBmdXp6eURhdGVSYW5nZSA9IHRoaXMuI2Z1enp5RGF0ZVNlcnZpY2UuZ2V0RnV6enlEYXRlUmFuZ2UoXG4gICAgICAgICAgICB0aGlzLm1pbkRhdGUsXG4gICAgICAgICAgICBmdXp6eURhdGUsXG4gICAgICAgICAgKTtcbiAgICAgICAgICBpZiAoIWZ1enp5RGF0ZVJhbmdlLnZhbGlkKSB7XG4gICAgICAgICAgICB2YWxpZGF0aW9uRXJyb3IgPSB7XG4gICAgICAgICAgICAgIHNreUZ1enp5RGF0ZToge1xuICAgICAgICAgICAgICAgIG1pbkRhdGU6IHZhbHVlLFxuICAgICAgICAgICAgICAgIG1pbkRhdGVGb3JtYXR0ZWQ6IHRoaXMuI2RhdGVGb3JtYXR0ZXIuZm9ybWF0KFxuICAgICAgICAgICAgICAgICAgZnV6enlEYXRlUmFuZ2Uuc3RhcnREYXRlLFxuICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlRm9ybWF0LFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdmFsaWRhdGlvbkVycm9yICYmIHRoaXMuZnV0dXJlRGlzYWJsZWQpIHtcbiAgICAgICAgICBmdXp6eURhdGVSYW5nZSA9IHRoaXMuI2Z1enp5RGF0ZVNlcnZpY2UuZ2V0RnV6enlEYXRlUmFuZ2UoXG4gICAgICAgICAgICBmdXp6eURhdGUsXG4gICAgICAgICAgICB0aGlzLiNmdXp6eURhdGVTZXJ2aWNlLmdldEN1cnJlbnRGdXp6eURhdGUoKSxcbiAgICAgICAgICApO1xuICAgICAgICAgIGlmICghZnV6enlEYXRlUmFuZ2UudmFsaWQpIHtcbiAgICAgICAgICAgIHZhbGlkYXRpb25FcnJvciA9IHtcbiAgICAgICAgICAgICAgc2t5RnV6enlEYXRlOiB7XG4gICAgICAgICAgICAgICAgZnV0dXJlRGlzYWJsZWQ6IHZhbHVlLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodmFsaWRhdGlvbkVycm9yKSB7XG4gICAgICAvLyBNYXJrIHRoZSBpbnZhbGlkIGNvbnRyb2wgYXMgdG91Y2hlZCBzbyB0aGF0IHRoZSBpbnB1dCdzIGludmFsaWQgQ1NTIHN0eWxlcyBhcHBlYXIuXG4gICAgICAvLyAoVGhpcyBpcyBvbmx5IHJlcXVpcmVkIHdoZW4gdGhlIGludmFsaWQgdmFsdWUgaXMgc2V0IGJ5IHRoZSBGb3JtQ29udHJvbCBjb25zdHJ1Y3Rvci4pXG4gICAgICB0aGlzLiNjb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWRhdGlvbkVycm9yO1xuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogYW55KSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy4jb25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuI25vdGlmeVRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy4jb25WYWxpZGF0b3JDaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHB1YmxpYyBzZXREaXNhYmxlZFN0YXRlKGRpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGRpc2FibGVkO1xuICAgIHRoaXMuI2RhdGVwaWNrZXJDb21wb25lbnQuZGlzYWJsZWQgPSBkaXNhYmxlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlY3RzIGNoYW5nZXMgdG8gdGhlIHVuZGVybHlpbmcgaW5wdXQgZWxlbWVudCdzIHZhbHVlIGFuZCB1cGRhdGVzIHRoZSBuZ01vZGVsIGFjY29yZGluZ2x5LlxuICAgKiBUaGlzIGlzIHVzZWZ1bCBpZiB5b3UgbmVlZCB0byB1cGRhdGUgdGhlIG5nTW9kZWwgdmFsdWUgYmVmb3JlIHRoZSBpbnB1dCBlbGVtZW50IGxvc2VzIGZvY3VzLlxuICAgKi9cbiAgcHVibGljIGRldGVjdElucHV0VmFsdWVDaGFuZ2UoKTogdm9pZCB7XG4gICAgdGhpcy4jb25WYWx1ZUNoYW5nZSh0aGlzLiNlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQudmFsdWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uRm9jdXNvdXQoZXZ0OiBGb2N1c0V2ZW50KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLiNkYXRlcGlja2VySG9zdFN2Yz8uaXNGb2N1c2luZ0RhdGVwaWNrZXIoZXZ0KSkge1xuICAgICAgdGhpcy4jbm90aWZ5VG91Y2hlZD8uKCk7XG4gICAgfVxuICB9XG5cbiAgI29uVmFsdWVDaGFuZ2UobmV3VmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuI3ZhbHVlID0gbmV3VmFsdWU7XG4gIH1cblxuICAjc2V0SW5wdXRFbGVtZW50VmFsdWUodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuI3JlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMuI2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ3ZhbHVlJywgdmFsdWUpO1xuICB9XG5cbiAgI2dldE1heERhdGUoKTogRGF0ZSB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHRoaXMubWF4RGF0ZSkge1xuICAgICAgY29uc3QgbWF4RGF0ZSA9IHRoaXMuI2Z1enp5RGF0ZVNlcnZpY2UuZ2V0TW9tZW50RnJvbUZ1enp5RGF0ZShcbiAgICAgICAgdGhpcy5tYXhEYXRlLFxuICAgICAgKTtcbiAgICAgIGlmIChtYXhEYXRlLmlzVmFsaWQoKSkge1xuICAgICAgICByZXR1cm4gbWF4RGF0ZS50b0RhdGUoKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMuZnV0dXJlRGlzYWJsZWQpIHtcbiAgICAgIHJldHVybiBuZXcgRGF0ZSgpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy4jY29uZmlnU2VydmljZS5tYXhEYXRlO1xuICB9XG5cbiAgI2dldE1pbkRhdGUoKTogRGF0ZSB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHRoaXMubWluRGF0ZSkge1xuICAgICAgY29uc3QgbWluRGF0ZSA9IHRoaXMuI2Z1enp5RGF0ZVNlcnZpY2UuZ2V0TW9tZW50RnJvbUZ1enp5RGF0ZShcbiAgICAgICAgdGhpcy5taW5EYXRlLFxuICAgICAgKTtcbiAgICAgIGlmIChtaW5EYXRlLmlzVmFsaWQoKSkge1xuICAgICAgICByZXR1cm4gbWluRGF0ZS50b0RhdGUoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuI2NvbmZpZ1NlcnZpY2UubWluRGF0ZTtcbiAgfVxuXG4gICNnZXRTdGFydEF0RGF0ZSgpOiBEYXRlIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAodGhpcy5zdGFydEF0RGF0ZSkge1xuICAgICAgY29uc3Qgc3RhcnRBdERhdGUgPSB0aGlzLiNmdXp6eURhdGVTZXJ2aWNlLmdldE1vbWVudEZyb21GdXp6eURhdGUoXG4gICAgICAgIHRoaXMuc3RhcnRBdERhdGUsXG4gICAgICApO1xuICAgICAgaWYgKHN0YXJ0QXREYXRlLmlzVmFsaWQoKSkge1xuICAgICAgICByZXR1cm4gc3RhcnRBdERhdGUudG9EYXRlKCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzLiNjb25maWdTZXJ2aWNlLnN0YXJ0QXREYXRlO1xuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgI2Z1enp5RGF0ZXNFcXVhbChkYXRlQT86IFNreUZ1enp5RGF0ZSwgZGF0ZUI/OiBTa3lGdXp6eURhdGUpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISEoXG4gICAgICBkYXRlQSAmJlxuICAgICAgZGF0ZUIgJiZcbiAgICAgICgoIWRhdGVBLmRheSAmJiAhZGF0ZUIuZGF5KSB8fCBkYXRlQS5kYXkgPT09IGRhdGVCLmRheSkgJiZcbiAgICAgICgoIWRhdGVBLm1vbnRoICYmICFkYXRlQi5tb250aCkgfHwgZGF0ZUEubW9udGggPT09IGRhdGVCLm1vbnRoKSAmJlxuICAgICAgKCghZGF0ZUEueWVhciAmJiAhZGF0ZUIueWVhcikgfHwgZGF0ZUEueWVhciA9PT0gZGF0ZUIueWVhcilcbiAgICApO1xuICB9XG5cbiAgLy8gaXN0YW5idWwgaWdub3JlIG5leHRcbiAgI29uQ2hhbmdlID0gKF86IGFueSk6IHZvaWQgPT4ge307XG4gIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG4gICNvblZhbGlkYXRvckNoYW5nZSA9ICgpOiB2b2lkID0+IHt9O1xuXG4gIC8qKlxuICAgKiBVcGRhdGUgdGhlIHZhbHVlIG9mIHRoZSBmb3JtIGNvbnRyb2wgYW5kIGlucHV0IGVsZW1lbnRcbiAgICogQHBhcmFtIGVtaXRFdmVudCBEZW5vdGVzIGlmIHdlIGVtaXQgYW4gZXZlbnQgdG8gdGhlIGNvbnN1bWVyJ3MgZm9ybSBjb250cm9sLiBXZSBkbyBub3Qgd2FudCB0byBkbyB0aGlzIGlmIHRoZSB2YWx1ZSBpcyBiZWluZyB1cGRhdGVkIHZpYSBhIGBzZXRWYWx1ZWAgY2FsbCBvciBhIGBwYXRjaFZhbHVlYCBjYWxsIGFzIHRoaXMgaXMgYWxyZWFkeSBoYW5kbGVkIGJ5IEFuZ3VsYXIuXG4gICAqIEluIHRoZXNlIGNhc2VzIHdlIGRvIG5vdCB3YW50IHRvIGZpcmUgYG9uQ2hhbmdlYCBhcyBpdCB3aWxsIGNhdXNlIGV4dHJhIGB2YWx1ZUNoYW5nZWAgYW5kIGBzdGF0dXNDaGFuZ2VgIGV2ZW50cyBhbmQgdGhlIHN0YXR1cyBvZiB0aGUgZm9ybSBzaG91bGQgbm90IGJlIGFmZmVjdGVkIGJ5IHRoZXNlIGNoYW5nZXMuXG4gICAqL1xuICAjdXBkYXRlVmFsdWUodmFsdWU6IGFueSwgZW1pdEV2ZW50ID0gdHJ1ZSk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgIHRoaXMuI192YWx1ZSA9PT0gdmFsdWUgfHxcbiAgICAgICh0aGlzLiNfdmFsdWUgPT09IHVuZGVmaW5lZCAmJiB2YWx1ZSA9PT0gbnVsbClcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgZnV6enlEYXRlOiBTa3lGdXp6eURhdGUgfCB1bmRlZmluZWQ7XG4gICAgbGV0IGZ1enp5TW9tZW50OiBhbnk7XG4gICAgbGV0IGRhdGVWYWx1ZTogRGF0ZSB8IHVuZGVmaW5lZDtcbiAgICBsZXQgZm9ybWF0dGVkRGF0ZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgZGF0ZVZhbHVlID0gdmFsdWU7XG4gICAgICBmb3JtYXR0ZWREYXRlID0gdGhpcy4jZGF0ZUZvcm1hdHRlci5mb3JtYXQodmFsdWUsIHRoaXMuZGF0ZUZvcm1hdCk7XG4gICAgICBmdXp6eURhdGUgPSB0aGlzLiNmdXp6eURhdGVTZXJ2aWNlLmdldEZ1enp5RGF0ZUZyb21TZWxlY3RlZERhdGUoXG4gICAgICAgIHZhbHVlLFxuICAgICAgICB0aGlzLmRhdGVGb3JtYXQsXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgZnV6enlEYXRlID0gdGhpcy4jZnV6enlEYXRlU2VydmljZS5nZXRGdXp6eURhdGVGcm9tU3RyaW5nKFxuICAgICAgICB2YWx1ZSxcbiAgICAgICAgdGhpcy5kYXRlRm9ybWF0LFxuICAgICAgKTtcbiAgICAgIGlmIChmdXp6eURhdGUpIHtcbiAgICAgICAgZm9ybWF0dGVkRGF0ZSA9IHRoaXMuI2Z1enp5RGF0ZVNlcnZpY2UuZm9ybWF0KFxuICAgICAgICAgIGZ1enp5RGF0ZSxcbiAgICAgICAgICB0aGlzLmRhdGVGb3JtYXQsXG4gICAgICAgICAgdGhpcy4jbG9jYWxlLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWZvcm1hdHRlZERhdGUpIHtcbiAgICAgICAgZm9ybWF0dGVkRGF0ZSA9IHZhbHVlO1xuICAgICAgfVxuXG4gICAgICBmdXp6eU1vbWVudCA9IHRoaXMuI2Z1enp5RGF0ZVNlcnZpY2UuZ2V0TW9tZW50RnJvbUZ1enp5RGF0ZShmdXp6eURhdGUpO1xuXG4gICAgICBpZiAoZnV6enlNb21lbnQpIHtcbiAgICAgICAgZGF0ZVZhbHVlID0gZnV6enlNb21lbnQudG9EYXRlKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGZ1enp5RGF0ZSA9IHZhbHVlIGFzIFNreUZ1enp5RGF0ZTtcbiAgICAgIGZvcm1hdHRlZERhdGUgPSB0aGlzLiNmdXp6eURhdGVTZXJ2aWNlLmZvcm1hdChcbiAgICAgICAgZnV6enlEYXRlLFxuICAgICAgICB0aGlzLmRhdGVGb3JtYXQsXG4gICAgICAgIHRoaXMuI2xvY2FsZSxcbiAgICAgICk7XG4gICAgICBmdXp6eU1vbWVudCA9IHRoaXMuI2Z1enp5RGF0ZVNlcnZpY2UuZ2V0TW9tZW50RnJvbUZ1enp5RGF0ZShmdXp6eURhdGUpO1xuXG4gICAgICBpZiAoZnV6enlNb21lbnQpIHtcbiAgICAgICAgZGF0ZVZhbHVlID0gZnV6enlNb21lbnQudG9EYXRlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgYXJlRnV6enlEYXRlc0VxdWFsID0gdGhpcy4jZnV6enlEYXRlc0VxdWFsKHRoaXMuI192YWx1ZSwgZnV6enlEYXRlKTtcbiAgICBjb25zdCBpc05ld1ZhbHVlID0gZnV6enlEYXRlICE9PSB0aGlzLiNfdmFsdWUgfHwgIWFyZUZ1enp5RGF0ZXNFcXVhbDtcblxuICAgIHRoaXMuI192YWx1ZSA9IGZ1enp5RGF0ZSB8fCB2YWx1ZTtcblxuICAgIGlmIChpc05ld1ZhbHVlKSB7XG4gICAgICBpZiAoZW1pdEV2ZW50KSB7XG4gICAgICAgIHRoaXMuI29uQ2hhbmdlKHRoaXMuI192YWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLiNjb250cm9sPy5zZXRWYWx1ZSh0aGlzLiNfdmFsdWUsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgIH1cblxuICAgICAgdGhpcy4jZGF0ZXBpY2tlckNvbXBvbmVudC5zZWxlY3RlZERhdGUgPSBkYXRlVmFsdWU7XG4gICAgfVxuXG4gICAgdGhpcy4jc2V0SW5wdXRFbGVtZW50VmFsdWUoZm9ybWF0dGVkRGF0ZSB8fCAnJyk7XG4gIH1cbn1cbiJdfQ==","import { NgModule } from '@angular/core';\nimport { SkyDatepickerCalendarInnerComponent } from './calendar/datepicker-calendar-inner.component';\nimport { SkyDatepickerCalendarComponent } from './calendar/datepicker-calendar.component';\nimport { SkyDatepickerCalendarService } from './calendar/datepicker-calendar.service';\nimport { SkyDayPickerButtonComponent } from './calendar/daypicker-button.component';\nimport { SkyDayPickerCellComponent } from './calendar/daypicker-cell.component';\nimport { SkyDayPickerComponent } from './calendar/daypicker.component';\nimport { SkyMonthPickerComponent } from './calendar/monthpicker.component';\nimport { SkyYearPickerComponent } from './calendar/yearpicker.component';\nimport { SkyDatepickerInputDirective } from './datepicker-input.directive';\nimport { SkyDatepickerComponent } from './datepicker.component';\nimport { SkyFuzzyDatepickerInputDirective } from './fuzzy/datepicker-input-fuzzy.directive';\nimport * as i0 from \"@angular/core\";\nexport class SkyDatepickerModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDatepickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDatepickerModule, imports: [SkyDatepickerCalendarComponent,\n SkyDatepickerCalendarInnerComponent,\n SkyDatepickerComponent,\n SkyDatepickerInputDirective,\n SkyDayPickerButtonComponent,\n SkyDayPickerCellComponent,\n SkyDayPickerComponent,\n SkyFuzzyDatepickerInputDirective,\n SkyMonthPickerComponent,\n SkyYearPickerComponent], exports: [SkyDatepickerCalendarComponent,\n SkyDatepickerComponent,\n SkyDatepickerInputDirective,\n SkyFuzzyDatepickerInputDirective] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDatepickerModule, providers: [SkyDatepickerCalendarService], imports: [SkyDatepickerCalendarComponent,\n SkyDatepickerCalendarInnerComponent,\n SkyDatepickerComponent,\n SkyDayPickerButtonComponent,\n SkyDayPickerCellComponent,\n SkyDayPickerComponent,\n SkyMonthPickerComponent,\n SkyYearPickerComponent] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDatepickerModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [\n SkyDatepickerCalendarComponent,\n SkyDatepickerCalendarInnerComponent,\n SkyDatepickerComponent,\n SkyDatepickerInputDirective,\n SkyDayPickerButtonComponent,\n SkyDayPickerCellComponent,\n SkyDayPickerComponent,\n SkyFuzzyDatepickerInputDirective,\n SkyMonthPickerComponent,\n SkyYearPickerComponent,\n ],\n exports: [\n SkyDatepickerCalendarComponent,\n SkyDatepickerComponent,\n SkyDatepickerInputDirective,\n SkyFuzzyDatepickerInputDirective,\n ],\n providers: [SkyDatepickerCalendarService],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUNyRyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUMxRixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUN0RixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNwRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNoRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMzRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7QUF1QjVGLE1BQU0sT0FBTyxtQkFBbUI7OEdBQW5CLG1CQUFtQjsrR0FBbkIsbUJBQW1CLFlBbkI1Qiw4QkFBOEI7WUFDOUIsbUNBQW1DO1lBQ25DLHNCQUFzQjtZQUN0QiwyQkFBMkI7WUFDM0IsMkJBQTJCO1lBQzNCLHlCQUF5QjtZQUN6QixxQkFBcUI7WUFDckIsZ0NBQWdDO1lBQ2hDLHVCQUF1QjtZQUN2QixzQkFBc0IsYUFHdEIsOEJBQThCO1lBQzlCLHNCQUFzQjtZQUN0QiwyQkFBMkI7WUFDM0IsZ0NBQWdDOytHQUl2QixtQkFBbUIsYUFGbkIsQ0FBQyw0QkFBNEIsQ0FBQyxZQWpCdkMsOEJBQThCO1lBQzlCLG1DQUFtQztZQUNuQyxzQkFBc0I7WUFFdEIsMkJBQTJCO1lBQzNCLHlCQUF5QjtZQUN6QixxQkFBcUI7WUFFckIsdUJBQXVCO1lBQ3ZCLHNCQUFzQjs7MkZBVWIsbUJBQW1CO2tCQXJCL0IsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1AsOEJBQThCO3dCQUM5QixtQ0FBbUM7d0JBQ25DLHNCQUFzQjt3QkFDdEIsMkJBQTJCO3dCQUMzQiwyQkFBMkI7d0JBQzNCLHlCQUF5Qjt3QkFDekIscUJBQXFCO3dCQUNyQixnQ0FBZ0M7d0JBQ2hDLHVCQUF1Qjt3QkFDdkIsc0JBQXNCO3FCQUN2QjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsOEJBQThCO3dCQUM5QixzQkFBc0I7d0JBQ3RCLDJCQUEyQjt3QkFDM0IsZ0NBQWdDO3FCQUNqQztvQkFDRCxTQUFTLEVBQUUsQ0FBQyw0QkFBNEIsQ0FBQztpQkFDMUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTa3lEYXRlcGlja2VyQ2FsZW5kYXJJbm5lckNvbXBvbmVudCB9IGZyb20gJy4vY2FsZW5kYXIvZGF0ZXBpY2tlci1jYWxlbmRhci1pbm5lci5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5RGF0ZXBpY2tlckNhbGVuZGFyQ29tcG9uZW50IH0gZnJvbSAnLi9jYWxlbmRhci9kYXRlcGlja2VyLWNhbGVuZGFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lEYXRlcGlja2VyQ2FsZW5kYXJTZXJ2aWNlIH0gZnJvbSAnLi9jYWxlbmRhci9kYXRlcGlja2VyLWNhbGVuZGFyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2t5RGF5UGlja2VyQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi9jYWxlbmRhci9kYXlwaWNrZXItYnV0dG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lEYXlQaWNrZXJDZWxsQ29tcG9uZW50IH0gZnJvbSAnLi9jYWxlbmRhci9kYXlwaWNrZXItY2VsbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5RGF5UGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi9jYWxlbmRhci9kYXlwaWNrZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFNreU1vbnRoUGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi9jYWxlbmRhci9tb250aHBpY2tlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5WWVhclBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4vY2FsZW5kYXIveWVhcnBpY2tlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5RGF0ZXBpY2tlcklucHV0RGlyZWN0aXZlIH0gZnJvbSAnLi9kYXRlcGlja2VyLWlucHV0LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBTa3lEYXRlcGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi9kYXRlcGlja2VyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lGdXp6eURhdGVwaWNrZXJJbnB1dERpcmVjdGl2ZSB9IGZyb20gJy4vZnV6enkvZGF0ZXBpY2tlci1pbnB1dC1mdXp6eS5kaXJlY3RpdmUnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgU2t5RGF0ZXBpY2tlckNhbGVuZGFyQ29tcG9uZW50LFxuICAgIFNreURhdGVwaWNrZXJDYWxlbmRhcklubmVyQ29tcG9uZW50LFxuICAgIFNreURhdGVwaWNrZXJDb21wb25lbnQsXG4gICAgU2t5RGF0ZXBpY2tlcklucHV0RGlyZWN0aXZlLFxuICAgIFNreURheVBpY2tlckJ1dHRvbkNvbXBvbmVudCxcbiAgICBTa3lEYXlQaWNrZXJDZWxsQ29tcG9uZW50LFxuICAgIFNreURheVBpY2tlckNvbXBvbmVudCxcbiAgICBTa3lGdXp6eURhdGVwaWNrZXJJbnB1dERpcmVjdGl2ZSxcbiAgICBTa3lNb250aFBpY2tlckNvbXBvbmVudCxcbiAgICBTa3lZZWFyUGlja2VyQ29tcG9uZW50LFxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgU2t5RGF0ZXBpY2tlckNhbGVuZGFyQ29tcG9uZW50LFxuICAgIFNreURhdGVwaWNrZXJDb21wb25lbnQsXG4gICAgU2t5RGF0ZXBpY2tlcklucHV0RGlyZWN0aXZlLFxuICAgIFNreUZ1enp5RGF0ZXBpY2tlcklucHV0RGlyZWN0aXZlLFxuICBdLFxuICBwcm92aWRlcnM6IFtTa3lEYXRlcGlja2VyQ2FsZW5kYXJTZXJ2aWNlXSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5RGF0ZXBpY2tlck1vZHVsZSB7fVxuIl19","/**\n * The types of calculations available for a date range calculator.\n */\nexport var SkyDateRangeCalculatorType;\n(function (SkyDateRangeCalculatorType) {\n /**\n * Includes an input for a date after the current date.\n */\n SkyDateRangeCalculatorType[SkyDateRangeCalculatorType[\"After\"] = 0] = \"After\";\n /**\n * Includes an input for a date before the current date.\n */\n SkyDateRangeCalculatorType[SkyDateRangeCalculatorType[\"Before\"] = 1] = \"Before\";\n /**\n * Includes two inputs for a range of dates.\n */\n SkyDateRangeCalculatorType[SkyDateRangeCalculatorType[\"Range\"] = 2] = \"Range\";\n /**\n * Does not accept any input but calculates a specific range based on the current date.\n */\n SkyDateRangeCalculatorType[SkyDateRangeCalculatorType[\"Relative\"] = 3] = \"Relative\";\n})(SkyDateRangeCalculatorType || (SkyDateRangeCalculatorType = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS1jYWxjdWxhdG9yLXR5cGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL2RhdGUtcmFuZ2UtcGlja2VyL3R5cGVzL2RhdGUtcmFuZ2UtY2FsY3VsYXRvci10eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFOLElBQVksMEJBb0JYO0FBcEJELFdBQVksMEJBQTBCO0lBQ3BDOztPQUVHO0lBQ0gsNkVBQUssQ0FBQTtJQUVMOztPQUVHO0lBQ0gsK0VBQU0sQ0FBQTtJQUVOOztPQUVHO0lBQ0gsNkVBQUssQ0FBQTtJQUVMOztPQUVHO0lBQ0gsbUZBQVEsQ0FBQTtBQUNWLENBQUMsRUFwQlcsMEJBQTBCLEtBQTFCLDBCQUEwQixRQW9CckMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoZSB0eXBlcyBvZiBjYWxjdWxhdGlvbnMgYXZhaWxhYmxlIGZvciBhIGRhdGUgcmFuZ2UgY2FsY3VsYXRvci5cbiAqL1xuZXhwb3J0IGVudW0gU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvclR5cGUge1xuICAvKipcbiAgICogSW5jbHVkZXMgYW4gaW5wdXQgZm9yIGEgZGF0ZSBhZnRlciB0aGUgY3VycmVudCBkYXRlLlxuICAgKi9cbiAgQWZ0ZXIsXG5cbiAgLyoqXG4gICAqIEluY2x1ZGVzIGFuIGlucHV0IGZvciBhIGRhdGUgYmVmb3JlIHRoZSBjdXJyZW50IGRhdGUuXG4gICAqL1xuICBCZWZvcmUsXG5cbiAgLyoqXG4gICAqIEluY2x1ZGVzIHR3byBpbnB1dHMgZm9yIGEgcmFuZ2Ugb2YgZGF0ZXMuXG4gICAqL1xuICBSYW5nZSxcblxuICAvKipcbiAgICogRG9lcyBub3QgYWNjZXB0IGFueSBpbnB1dCBidXQgY2FsY3VsYXRlcyBhIHNwZWNpZmljIHJhbmdlIGJhc2VkIG9uIHRoZSBjdXJyZW50IGRhdGUuXG4gICAqL1xuICBSZWxhdGl2ZSxcbn1cbiJdfQ==","import { Pipe } from '@angular/core';\nimport { SkyDateRangeCalculatorType } from './types/date-range-calculator-type';\nimport * as i0 from \"@angular/core\";\nexport class SkyDateRangePickerEndDateResourceKeyPipe {\n transform(calculatorType) {\n if (calculatorType === SkyDateRangeCalculatorType.Range) {\n return 'skyux_date_range_picker_end_date_label';\n }\n return 'skyux_date_range_picker_before_date_label';\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDateRangePickerEndDateResourceKeyPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDateRangePickerEndDateResourceKeyPipe, isStandalone: true, name: \"skyDateRangePickerEndDateResourceKey\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDateRangePickerEndDateResourceKeyPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'skyDateRangePickerEndDateResourceKey',\n standalone: true,\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS1waWNrZXItZW5kLWRhdGUtcmVzb3VyY2Uta2V5LnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL2RhdGUtcmFuZ2UtcGlja2VyL2RhdGUtcmFuZ2UtcGlja2VyLWVuZC1kYXRlLXJlc291cmNlLWtleS5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBRXBELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOztBQU1oRixNQUFNLE9BQU8sd0NBQXdDO0lBQzVDLFNBQVMsQ0FDZCxjQUFzRDtRQUV0RCxJQUFJLGNBQWMsS0FBSywwQkFBMEIsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN4RCxPQUFPLHdDQUF3QyxDQUFDO1FBQ2xELENBQUM7UUFFRCxPQUFPLDJDQUEyQyxDQUFDO0lBQ3JELENBQUM7OEdBVFUsd0NBQXdDOzRHQUF4Qyx3Q0FBd0M7OzJGQUF4Qyx3Q0FBd0M7a0JBSnBELElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLHNDQUFzQztvQkFDNUMsVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9yVHlwZSB9IGZyb20gJy4vdHlwZXMvZGF0ZS1yYW5nZS1jYWxjdWxhdG9yLXR5cGUnO1xuXG5AUGlwZSh7XG4gIG5hbWU6ICdza3lEYXRlUmFuZ2VQaWNrZXJFbmREYXRlUmVzb3VyY2VLZXknLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lEYXRlUmFuZ2VQaWNrZXJFbmREYXRlUmVzb3VyY2VLZXlQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHB1YmxpYyB0cmFuc2Zvcm0oXG4gICAgY2FsY3VsYXRvclR5cGU6IFNreURhdGVSYW5nZUNhbGN1bGF0b3JUeXBlIHwgdW5kZWZpbmVkLFxuICApOiBzdHJpbmcge1xuICAgIGlmIChjYWxjdWxhdG9yVHlwZSA9PT0gU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvclR5cGUuUmFuZ2UpIHtcbiAgICAgIHJldHVybiAnc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZW5kX2RhdGVfbGFiZWwnO1xuICAgIH1cblxuICAgIHJldHVybiAnc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfYmVmb3JlX2RhdGVfbGFiZWwnO1xuICB9XG59XG4iXX0=","import { Pipe } from '@angular/core';\nimport { SkyDateRangeCalculatorType } from './types/date-range-calculator-type';\nimport * as i0 from \"@angular/core\";\nexport class SkyDateRangePickerStartDateResourceKeyPipe {\n transform(calculatorType) {\n if (calculatorType === SkyDateRangeCalculatorType.Range) {\n return 'skyux_date_range_picker_start_date_label';\n }\n return 'skyux_date_range_picker_after_date_label';\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDateRangePickerStartDateResourceKeyPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDateRangePickerStartDateResourceKeyPipe, isStandalone: true, name: \"skyDateRangePickerStartDateResourceKey\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDateRangePickerStartDateResourceKeyPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'skyDateRangePickerStartDateResourceKey',\n standalone: true,\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS1waWNrZXItc3RhcnQtZGF0ZS1yZXNvdXJjZS1rZXkucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9kYXRldGltZS9zcmMvbGliL21vZHVsZXMvZGF0ZS1yYW5nZS1waWNrZXIvZGF0ZS1yYW5nZS1waWNrZXItc3RhcnQtZGF0ZS1yZXNvdXJjZS1rZXkucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUVwRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7QUFNaEYsTUFBTSxPQUFPLDBDQUEwQztJQUc5QyxTQUFTLENBQ2QsY0FBc0Q7UUFFdEQsSUFBSSxjQUFjLEtBQUssMEJBQTBCLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDeEQsT0FBTywwQ0FBMEMsQ0FBQztRQUNwRCxDQUFDO1FBRUQsT0FBTywwQ0FBMEMsQ0FBQztJQUNwRCxDQUFDOzhHQVhVLDBDQUEwQzs0R0FBMUMsMENBQTBDOzsyRkFBMUMsMENBQTBDO2tCQUp0RCxJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSx3Q0FBd0M7b0JBQzlDLFVBQVUsRUFBRSxJQUFJO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvclR5cGUgfSBmcm9tICcuL3R5cGVzL2RhdGUtcmFuZ2UtY2FsY3VsYXRvci10eXBlJztcblxuQFBpcGUoe1xuICBuYW1lOiAnc2t5RGF0ZVJhbmdlUGlja2VyU3RhcnREYXRlUmVzb3VyY2VLZXknLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lEYXRlUmFuZ2VQaWNrZXJTdGFydERhdGVSZXNvdXJjZUtleVBpcGVcbiAgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtXG57XG4gIHB1YmxpYyB0cmFuc2Zvcm0oXG4gICAgY2FsY3VsYXRvclR5cGU6IFNreURhdGVSYW5nZUNhbGN1bGF0b3JUeXBlIHwgdW5kZWZpbmVkLFxuICApOiBzdHJpbmcge1xuICAgIGlmIChjYWxjdWxhdG9yVHlwZSA9PT0gU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvclR5cGUuUmFuZ2UpIHtcbiAgICAgIHJldHVybiAnc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfc3RhcnRfZGF0ZV9sYWJlbCc7XG4gICAgfVxuXG4gICAgcmV0dXJuICdza3l1eF9kYXRlX3JhbmdlX3BpY2tlcl9hZnRlcl9kYXRlX2xhYmVsJztcbiAgfVxufVxuIl19","import { of } from 'rxjs';\n/**\n * Represents the calculator.\n */\nexport class SkyDateRangeCalculator {\n #config;\n #resourcesSvc;\n /**\n * The text to display in the calculator select menu.\n */\n get shortDescription$() {\n if (this.shortDescription) {\n return of(this.shortDescription);\n }\n if (!this.#shortDescriptionResourceKey) {\n throw new Error('Calculator created without short description or resource key.');\n }\n return this.#resourcesSvc.getString(this.#shortDescriptionResourceKey);\n }\n #shortDescriptionResourceKey;\n constructor(\n /**\n * The calculator ID that specifies calculator objects that represent date ranges.\n */\n calculatorId, config, resourcesSvc, _shortDescriptionResourceKey) {\n this.calculatorId = calculatorId;\n this.#config = config;\n this.type = config.type;\n this.shortDescription = config.shortDescription;\n this.#shortDescriptionResourceKey = _shortDescriptionResourceKey;\n this.#resourcesSvc = resourcesSvc;\n }\n /**\n * Gets the current value of the calculator.\n * @param startDateInput The start date.\n * @param endDateInput The end date.\n */\n getValue(startDateInput, endDateInput) {\n const result = this.#config.getValue(startDateInput, endDateInput);\n let startDate = null;\n if (result.startDate instanceof Date) {\n startDate = this.#parseDateWithoutTime(result.startDate);\n }\n let endDate = null;\n if (result.endDate instanceof Date) {\n endDate = this.#parseDateWithoutTime(result.endDate);\n }\n return {\n calculatorId: this.calculatorId,\n startDate,\n endDate,\n };\n }\n /**\n * Performs synchronous validation against the control.\n */\n validate(value) {\n if (!this.#config.validate) {\n return null;\n }\n return this.#config.validate(value);\n }\n /**\n * Get a date object without time information.\n * See: https://stackoverflow.com/a/38050824/6178885\n */\n #parseDateWithoutTime(date) {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate());\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS1jYWxjdWxhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2RhdGV0aW1lL3NyYy9saWIvbW9kdWxlcy9kYXRlLXJhbmdlLXBpY2tlci90eXBlcy9kYXRlLXJhbmdlLWNhbGN1bGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQVF0Qzs7R0FFRztBQUNILE1BQU0sT0FBTyxzQkFBc0I7SUFDakMsT0FBTyxDQUErQjtJQUN0QyxhQUFhLENBQXlCO0lBRXRDOztPQUVHO0lBQ0gsSUFBVyxpQkFBaUI7UUFDMUIsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUMxQixPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNuQyxDQUFDO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyw0QkFBNEIsRUFBRSxDQUFDO1lBQ3ZDLE1BQU0sSUFBSSxLQUFLLENBQ2IsK0RBQStELENBQ2hFLENBQUM7UUFDSixDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsNEJBQTRCLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBUUQsNEJBQTRCLENBQXFCO0lBT2pEO0lBQ0U7O09BRUc7SUFDYSxZQUFzQyxFQUN0RCxNQUFvQyxFQUNwQyxZQUFvQyxFQUNwQyw0QkFBcUM7UUFIckIsaUJBQVksR0FBWixZQUFZLENBQTBCO1FBS3RELElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQztRQUN4QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDO1FBQ2hELElBQUksQ0FBQyw0QkFBNEIsR0FBRyw0QkFBNEIsQ0FBQztRQUNqRSxJQUFJLENBQUMsYUFBYSxHQUFHLFlBQVksQ0FBQztJQUNwQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFFBQVEsQ0FDYixjQUE0QixFQUM1QixZQUEwQjtRQUUxQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFFbkUsSUFBSSxTQUFTLEdBQWdCLElBQUksQ0FBQztRQUNsQyxJQUFJLE1BQU0sQ0FBQyxTQUFTLFlBQVksSUFBSSxFQUFFLENBQUM7WUFDckMsU0FBUyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDM0QsQ0FBQztRQUVELElBQUksT0FBTyxHQUFnQixJQUFJLENBQUM7UUFDaEMsSUFBSSxNQUFNLENBQUMsT0FBTyxZQUFZLElBQUksRUFBRSxDQUFDO1lBQ25DLE9BQU8sR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZELENBQUM7UUFFRCxPQUFPO1lBQ0wsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZO1lBQy9CLFNBQVM7WUFDVCxPQUFPO1NBQ1IsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNJLFFBQVEsQ0FBQyxLQUFvQjtRQUNsQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUMzQixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxxQkFBcUIsQ0FBQyxJQUFVO1FBQzlCLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUN2RSxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBWYWxpZGF0aW9uRXJyb3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU2t5TGliUmVzb3VyY2VzU2VydmljZSB9IGZyb20gJ0Bza3l1eC9pMThuJztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU2t5RGF0ZVJhbmdlIH0gZnJvbSAnLi9kYXRlLXJhbmdlJztcbmltcG9ydCB7IFNreURhdGVSYW5nZUNhbGN1bGF0aW9uIH0gZnJvbSAnLi9kYXRlLXJhbmdlLWNhbGN1bGF0aW9uJztcbmltcG9ydCB7IFNreURhdGVSYW5nZUNhbGN1bGF0b3JDb25maWcgfSBmcm9tICcuL2RhdGUtcmFuZ2UtY2FsY3VsYXRvci1jb25maWcnO1xuaW1wb3J0IHsgU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvcklkIH0gZnJvbSAnLi9kYXRlLXJhbmdlLWNhbGN1bGF0b3ItaWQnO1xuaW1wb3J0IHsgU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvclR5cGUgfSBmcm9tICcuL2RhdGUtcmFuZ2UtY2FsY3VsYXRvci10eXBlJztcblxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSBjYWxjdWxhdG9yLlxuICovXG5leHBvcnQgY2xhc3MgU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvciB7XG4gICNjb25maWc6IFNreURhdGVSYW5nZUNhbGN1bGF0b3JDb25maWc7XG4gICNyZXNvdXJjZXNTdmM6IFNreUxpYlJlc291cmNlc1NlcnZpY2U7XG5cbiAgLyoqXG4gICAqIFRoZSB0ZXh0IHRvIGRpc3BsYXkgaW4gdGhlIGNhbGN1bGF0b3Igc2VsZWN0IG1lbnUuXG4gICAqL1xuICBwdWJsaWMgZ2V0IHNob3J0RGVzY3JpcHRpb24kKCk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgaWYgKHRoaXMuc2hvcnREZXNjcmlwdGlvbikge1xuICAgICAgcmV0dXJuIG9mKHRoaXMuc2hvcnREZXNjcmlwdGlvbik7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLiNzaG9ydERlc2NyaXB0aW9uUmVzb3VyY2VLZXkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ0NhbGN1bGF0b3IgY3JlYXRlZCB3aXRob3V0IHNob3J0IGRlc2NyaXB0aW9uIG9yIHJlc291cmNlIGtleS4nLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy4jcmVzb3VyY2VzU3ZjLmdldFN0cmluZyh0aGlzLiNzaG9ydERlc2NyaXB0aW9uUmVzb3VyY2VLZXkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB0ZXh0IHRvIGRpc3BsYXkgaW4gdGhlIGNhbGN1bGF0b3Igc2VsZWN0IG1lbnUuXG4gICAqIEBkZXByZWNhdGVkIFN1YnNjcmliZSB0byB0aGUgYHNob3J0RGVzY3JpcHRpb24kYCBvYnNlcnZhYmxlIGluc3RlYWQuXG4gICAqL1xuICBwdWJsaWMgc2hvcnREZXNjcmlwdGlvbjogc3RyaW5nO1xuXG4gICNzaG9ydERlc2NyaXB0aW9uUmVzb3VyY2VLZXk6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIHR5cGUgb2YgY2FsY3VsYXRpb25zIGF2YWlsYWJsZSBmb3IgdGhlIGRhdGUgcmFuZ2UuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdHlwZTogU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvclR5cGU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgLyoqXG4gICAgICogVGhlIGNhbGN1bGF0b3IgSUQgdGhhdCBzcGVjaWZpZXMgY2FsY3VsYXRvciBvYmplY3RzIHRoYXQgcmVwcmVzZW50IGRhdGUgcmFuZ2VzLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBjYWxjdWxhdG9ySWQ6IFNreURhdGVSYW5nZUNhbGN1bGF0b3JJZCxcbiAgICBjb25maWc6IFNreURhdGVSYW5nZUNhbGN1bGF0b3JDb25maWcsXG4gICAgcmVzb3VyY2VzU3ZjOiBTa3lMaWJSZXNvdXJjZXNTZXJ2aWNlLFxuICAgIF9zaG9ydERlc2NyaXB0aW9uUmVzb3VyY2VLZXk/OiBzdHJpbmcsXG4gICkge1xuICAgIHRoaXMuI2NvbmZpZyA9IGNvbmZpZztcbiAgICB0aGlzLnR5cGUgPSBjb25maWcudHlwZTtcbiAgICB0aGlzLnNob3J0RGVzY3JpcHRpb24gPSBjb25maWcuc2hvcnREZXNjcmlwdGlvbjtcbiAgICB0aGlzLiNzaG9ydERlc2NyaXB0aW9uUmVzb3VyY2VLZXkgPSBfc2hvcnREZXNjcmlwdGlvblJlc291cmNlS2V5O1xuICAgIHRoaXMuI3Jlc291cmNlc1N2YyA9IHJlc291cmNlc1N2YztcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBjYWxjdWxhdG9yLlxuICAgKiBAcGFyYW0gc3RhcnREYXRlSW5wdXQgVGhlIHN0YXJ0IGRhdGUuXG4gICAqIEBwYXJhbSBlbmREYXRlSW5wdXQgVGhlIGVuZCBkYXRlLlxuICAgKi9cbiAgcHVibGljIGdldFZhbHVlKFxuICAgIHN0YXJ0RGF0ZUlucHV0PzogRGF0ZSB8IG51bGwsXG4gICAgZW5kRGF0ZUlucHV0PzogRGF0ZSB8IG51bGwsXG4gICk6IFNreURhdGVSYW5nZUNhbGN1bGF0aW9uIHtcbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLiNjb25maWcuZ2V0VmFsdWUoc3RhcnREYXRlSW5wdXQsIGVuZERhdGVJbnB1dCk7XG5cbiAgICBsZXQgc3RhcnREYXRlOiBEYXRlIHwgbnVsbCA9IG51bGw7XG4gICAgaWYgKHJlc3VsdC5zdGFydERhdGUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICBzdGFydERhdGUgPSB0aGlzLiNwYXJzZURhdGVXaXRob3V0VGltZShyZXN1bHQuc3RhcnREYXRlKTtcbiAgICB9XG5cbiAgICBsZXQgZW5kRGF0ZTogRGF0ZSB8IG51bGwgPSBudWxsO1xuICAgIGlmIChyZXN1bHQuZW5kRGF0ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgIGVuZERhdGUgPSB0aGlzLiNwYXJzZURhdGVXaXRob3V0VGltZShyZXN1bHQuZW5kRGF0ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGNhbGN1bGF0b3JJZDogdGhpcy5jYWxjdWxhdG9ySWQsXG4gICAgICBzdGFydERhdGUsXG4gICAgICBlbmREYXRlLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogUGVyZm9ybXMgc3luY2hyb25vdXMgdmFsaWRhdGlvbiBhZ2FpbnN0IHRoZSBjb250cm9sLlxuICAgKi9cbiAgcHVibGljIHZhbGlkYXRlKHZhbHVlPzogU2t5RGF0ZVJhbmdlKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIGlmICghdGhpcy4jY29uZmlnLnZhbGlkYXRlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy4jY29uZmlnLnZhbGlkYXRlKHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSBkYXRlIG9iamVjdCB3aXRob3V0IHRpbWUgaW5mb3JtYXRpb24uXG4gICAqIFNlZTogaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzM4MDUwODI0LzYxNzg4ODVcbiAgICovXG4gICNwYXJzZURhdGVXaXRob3V0VGltZShkYXRlOiBEYXRlKTogRGF0ZSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKGRhdGUuZ2V0RnVsbFllYXIoKSwgZGF0ZS5nZXRNb250aCgpLCBkYXRlLmdldERhdGUoKSk7XG4gIH1cbn1cbiJdfQ==","/**\n * `SkyDateRangeCalculatorId` values specify calculator objects that return\n * two `Date` objects to represent date ranges. The values populate the options\n * in the date range picker's dropdown. SKY UX uses `SkyDateRangeService` to create\n * calculators and configures each one with a `validate` function to confirm that dates\n * are compatible. For example, `validate` functions ensure that start dates are before\n * end dates. SKY UX also configures calculators to call a `getValue` function after\n * the `validate` function and return a range of two `Date` objects.\n */\nexport var SkyDateRangeCalculatorId;\n(function (SkyDateRangeCalculatorId) {\n /**\n * Selects no dates and considers all dates within the date range. This is the default selection.\n */\n SkyDateRangeCalculatorId[SkyDateRangeCalculatorId[\"AnyTime\"] = 0] = \"AnyTime\";\n /**\n * Enables users to select an end date with no starting date.\n */\n SkyDateRangeCalculatorId[SkyDateRangeCalculatorId[\"Before\"] = 1] = \"Before\";\n /**\n * Enables users to select a start date with no end date.\n */\n SkyDateRangeCalculatorId[SkyDateRangeCalculatorId[\"After\"] = 2] = \"After\";\n /**\n * Enables users to select specific start and end dates.\n */\n SkyDateRangeCalculatorId[SkyDateRangeCalculatorId[\"SpecificRange\"] = 3] = \"SpecificRange\";\n /**\n * Sets the start and end dates to the day before the current day.\n */\n SkyDateRangeCalculatorId[SkyDateRangeCalculatorId[\"Yesterday\"] = 4] = \"Yesterday\";\n /**\n * Sets the start and end dates to the current day.\n */\n SkyDateRangeCalculatorId[SkyDateRangeCalculatorId[\"Today\"] = 5] = \"Today\";\n /**\n * Sets the start and end dates to the day after the current day.\n */\n SkyDateRangeCalculatorId[SkyDateRangeCalculatorId[\"Tomorrow\"] = 6] = \"Tomorrow\";\n /**\n * Sets the start date to Sunday of the week before the current week and\n * the end date to Saturday of that week.\n */\n SkyDateRangeCalculatorId[SkyDateRangeCalculatorId[\"LastWeek\"] = 7] = \"LastWeek\";\n /**\n * Sets the start date to Sunday of the current week and the end date to Saturday.\n */\n SkyDateRangeCalculatorId[SkyDateRangeCalculatorId[\"ThisWeek\"] = 8] = \"ThisWeek\";\n /**\n * Sets the start date to Sunday of the week after the current week and\n * the end date to Saturday of that week.\n */\n SkyDateRangeCalculatorId[SkyDateRangeCalculatorId[\"NextWeek\"] = 9] = \"NextWeek\";\n /**\n * Sets the start date to the first day of the month before the current month and\n * the end date to the last day of that month.\n */\n SkyDateRangeCalculatorId[SkyDateRangeCalculatorId[\"LastMonth\"] = 10] = \"LastMonth\";\n /**\n * Sets the start date to the first day of the current month and\n * the end date to the last day of the month.\n */\n SkyDateRangeCalculatorId[SkyDateRangeCalculatorId[\"ThisMonth\"] = 11] = \"ThisMonth\";\n /**\n * Sets the start date to the first day of the month after the current month\n * and the end date to the last day of that month.\n */\n SkyDateRangeCalculatorId[SkyDateRangeCalculatorId[\"NextMonth\"] = 12] = \"NextMonth\";\n /**\n * Sets the start date to the first day of the quarter before the current quarter and\n * the end date to the last day of that quarter. Quarters are\n * January to March, April to June, July to September, and October to December.\n */\n SkyDateRangeCalculatorId[SkyDateRangeCalculatorId[\"LastQuarter\"] = 13] = \"LastQuarter\";\n /**\n * Sets the start date to the first day of the current quarter and\n * the end date to the last day of the quarter. Quarters are\n * January to March, April to June, July to September, and October to December.\n */\n SkyDateRangeCalculatorId[SkyDateRangeCalculatorId[\"ThisQuarter\"] = 14] = \"ThisQuarter\";\n /**\n * Sets the start date to the first day of the quarter after the current quarter and\n * the end date to the last day of that quarter. Quarters are\n * January to March, April to June, July to September, and October to December.\n */\n SkyDateRangeCalculatorId[SkyDateRangeCalculatorId[\"NextQuarter\"] = 15] = \"NextQuarter\";\n /**\n * Sets the start date to the first day of the year before the current year\n * and the end date to the last day of that year.\n */\n SkyDateRangeCalculatorId[SkyDateRangeCalculatorId[\"LastCalendarYear\"] = 16] = \"LastCalendarYear\";\n /**\n * Sets the start date to the first day of the current year and\n * the end date to the last day of the year.\n */\n SkyDateRangeCalculatorId[SkyDateRangeCalculatorId[\"ThisCalendarYear\"] = 17] = \"ThisCalendarYear\";\n /**\n * Sets the start date to the first day of the year after the current year and\n * the end date to the last day of that year.\n */\n SkyDateRangeCalculatorId[SkyDateRangeCalculatorId[\"NextCalendarYear\"] = 18] = \"NextCalendarYear\";\n /**\n * Sets the start date to the first day of the fiscal year before the current fiscal year and\n * the end date to the last day of that fiscal year. The fiscal year is Oct. 1 to Sept. 30.\n */\n SkyDateRangeCalculatorId[SkyDateRangeCalculatorId[\"LastFiscalYear\"] = 19] = \"LastFiscalYear\";\n /**\n * Sets the start date to the first day of the current fiscal year and\n * the end date to the last day of the fiscal year. The fiscal year is Oct. 1 to Sept. 30.\n */\n SkyDateRangeCalculatorId[SkyDateRangeCalculatorId[\"ThisFiscalYear\"] = 20] = \"ThisFiscalYear\";\n /**\n * Sets the start date to the first day of the fiscal year after the current fiscal year\n * and the end date to the last day of that fiscal year. The fiscal year is Oct. 1 to Sept. 30.\n */\n SkyDateRangeCalculatorId[SkyDateRangeCalculatorId[\"NextFiscalYear\"] = 21] = \"NextFiscalYear\";\n})(SkyDateRangeCalculatorId || (SkyDateRangeCalculatorId = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS1jYWxjdWxhdG9yLWlkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2RhdGV0aW1lL3NyYy9saWIvbW9kdWxlcy9kYXRlLXJhbmdlLXBpY2tlci90eXBlcy9kYXRlLXJhbmdlLWNhbGN1bGF0b3ItaWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLENBQU4sSUFBWSx3QkErSFg7QUEvSEQsV0FBWSx3QkFBd0I7SUFDbEM7O09BRUc7SUFDSCw2RUFBTyxDQUFBO0lBRVA7O09BRUc7SUFDSCwyRUFBTSxDQUFBO0lBRU47O09BRUc7SUFDSCx5RUFBSyxDQUFBO0lBRUw7O09BRUc7SUFDSCx5RkFBYSxDQUFBO0lBRWI7O09BRUc7SUFDSCxpRkFBUyxDQUFBO0lBRVQ7O09BRUc7SUFDSCx5RUFBSyxDQUFBO0lBRUw7O09BRUc7SUFDSCwrRUFBUSxDQUFBO0lBRVI7OztPQUdHO0lBQ0gsK0VBQVEsQ0FBQTtJQUVSOztPQUVHO0lBQ0gsK0VBQVEsQ0FBQTtJQUVSOzs7T0FHRztJQUNILCtFQUFRLENBQUE7SUFFUjs7O09BR0c7SUFDSCxrRkFBUyxDQUFBO0lBRVQ7OztPQUdHO0lBQ0gsa0ZBQVMsQ0FBQTtJQUVUOzs7T0FHRztJQUNILGtGQUFTLENBQUE7SUFFVDs7OztPQUlHO0lBQ0gsc0ZBQVcsQ0FBQTtJQUVYOzs7O09BSUc7SUFDSCxzRkFBVyxDQUFBO0lBRVg7Ozs7T0FJRztJQUNILHNGQUFXLENBQUE7SUFFWDs7O09BR0c7SUFDSCxnR0FBZ0IsQ0FBQTtJQUVoQjs7O09BR0c7SUFDSCxnR0FBZ0IsQ0FBQTtJQUVoQjs7O09BR0c7SUFDSCxnR0FBZ0IsQ0FBQTtJQUVoQjs7O09BR0c7SUFDSCw0RkFBYyxDQUFBO0lBRWQ7OztPQUdHO0lBQ0gsNEZBQWMsQ0FBQTtJQUVkOzs7T0FHRztJQUNILDRGQUFjLENBQUE7QUFDaEIsQ0FBQyxFQS9IVyx3QkFBd0IsS0FBeEIsd0JBQXdCLFFBK0huQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogYFNreURhdGVSYW5nZUNhbGN1bGF0b3JJZGAgdmFsdWVzIHNwZWNpZnkgY2FsY3VsYXRvciBvYmplY3RzIHRoYXQgcmV0dXJuXG4gKiB0d28gYERhdGVgIG9iamVjdHMgdG8gcmVwcmVzZW50IGRhdGUgcmFuZ2VzLiBUaGUgdmFsdWVzIHBvcHVsYXRlIHRoZSBvcHRpb25zXG4gKiBpbiB0aGUgZGF0ZSByYW5nZSBwaWNrZXIncyBkcm9wZG93bi4gU0tZIFVYIHVzZXMgYFNreURhdGVSYW5nZVNlcnZpY2VgIHRvIGNyZWF0ZVxuICogY2FsY3VsYXRvcnMgYW5kIGNvbmZpZ3VyZXMgZWFjaCBvbmUgd2l0aCBhIGB2YWxpZGF0ZWAgZnVuY3Rpb24gdG8gY29uZmlybSB0aGF0IGRhdGVzXG4gKiBhcmUgY29tcGF0aWJsZS4gRm9yIGV4YW1wbGUsIGB2YWxpZGF0ZWAgZnVuY3Rpb25zIGVuc3VyZSB0aGF0IHN0YXJ0IGRhdGVzIGFyZSBiZWZvcmVcbiAqIGVuZCBkYXRlcy4gU0tZIFVYIGFsc28gY29uZmlndXJlcyBjYWxjdWxhdG9ycyB0byBjYWxsIGEgYGdldFZhbHVlYCBmdW5jdGlvbiBhZnRlclxuICogdGhlIGB2YWxpZGF0ZWAgZnVuY3Rpb24gYW5kIHJldHVybiBhIHJhbmdlIG9mIHR3byBgRGF0ZWAgb2JqZWN0cy5cbiAqL1xuZXhwb3J0IGVudW0gU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvcklkIHtcbiAgLyoqXG4gICAqIFNlbGVjdHMgbm8gZGF0ZXMgYW5kIGNvbnNpZGVycyBhbGwgZGF0ZXMgd2l0aGluIHRoZSBkYXRlIHJhbmdlLiBUaGlzIGlzIHRoZSBkZWZhdWx0IHNlbGVjdGlvbi5cbiAgICovXG4gIEFueVRpbWUsXG5cbiAgLyoqXG4gICAqIEVuYWJsZXMgdXNlcnMgdG8gc2VsZWN0IGFuIGVuZCBkYXRlIHdpdGggbm8gc3RhcnRpbmcgZGF0ZS5cbiAgICovXG4gIEJlZm9yZSxcblxuICAvKipcbiAgICogRW5hYmxlcyB1c2VycyB0byBzZWxlY3QgYSBzdGFydCBkYXRlIHdpdGggbm8gZW5kIGRhdGUuXG4gICAqL1xuICBBZnRlcixcblxuICAvKipcbiAgICogRW5hYmxlcyB1c2VycyB0byBzZWxlY3Qgc3BlY2lmaWMgc3RhcnQgYW5kIGVuZCBkYXRlcy5cbiAgICovXG4gIFNwZWNpZmljUmFuZ2UsXG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHN0YXJ0IGFuZCBlbmQgZGF0ZXMgdG8gdGhlIGRheSBiZWZvcmUgdGhlIGN1cnJlbnQgZGF5LlxuICAgKi9cbiAgWWVzdGVyZGF5LFxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBzdGFydCBhbmQgZW5kIGRhdGVzIHRvIHRoZSBjdXJyZW50IGRheS5cbiAgICovXG4gIFRvZGF5LFxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBzdGFydCBhbmQgZW5kIGRhdGVzIHRvIHRoZSBkYXkgYWZ0ZXIgdGhlIGN1cnJlbnQgZGF5LlxuICAgKi9cbiAgVG9tb3Jyb3csXG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHN0YXJ0IGRhdGUgdG8gU3VuZGF5IG9mIHRoZSB3ZWVrIGJlZm9yZSB0aGUgY3VycmVudCB3ZWVrIGFuZFxuICAgKiB0aGUgZW5kIGRhdGUgdG8gU2F0dXJkYXkgb2YgdGhhdCB3ZWVrLlxuICAgKi9cbiAgTGFzdFdlZWssXG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHN0YXJ0IGRhdGUgdG8gU3VuZGF5IG9mIHRoZSBjdXJyZW50IHdlZWsgYW5kIHRoZSBlbmQgZGF0ZSB0byBTYXR1cmRheS5cbiAgICovXG4gIFRoaXNXZWVrLFxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBzdGFydCBkYXRlIHRvIFN1bmRheSBvZiB0aGUgd2VlayBhZnRlciB0aGUgY3VycmVudCB3ZWVrIGFuZFxuICAgKiB0aGUgZW5kIGRhdGUgdG8gU2F0dXJkYXkgb2YgdGhhdCB3ZWVrLlxuICAgKi9cbiAgTmV4dFdlZWssXG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHN0YXJ0IGRhdGUgdG8gdGhlIGZpcnN0IGRheSBvZiB0aGUgbW9udGggYmVmb3JlIHRoZSBjdXJyZW50IG1vbnRoIGFuZFxuICAgKiB0aGUgZW5kIGRhdGUgdG8gdGhlIGxhc3QgZGF5IG9mIHRoYXQgbW9udGguXG4gICAqL1xuICBMYXN0TW9udGgsXG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHN0YXJ0IGRhdGUgdG8gdGhlIGZpcnN0IGRheSBvZiB0aGUgY3VycmVudCBtb250aCBhbmRcbiAgICogdGhlIGVuZCBkYXRlIHRvIHRoZSBsYXN0IGRheSBvZiB0aGUgbW9udGguXG4gICAqL1xuICBUaGlzTW9udGgsXG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHN0YXJ0IGRhdGUgdG8gdGhlIGZpcnN0IGRheSBvZiB0aGUgbW9udGggYWZ0ZXIgdGhlIGN1cnJlbnQgbW9udGhcbiAgICogYW5kIHRoZSBlbmQgZGF0ZSB0byB0aGUgbGFzdCBkYXkgb2YgdGhhdCBtb250aC5cbiAgICovXG4gIE5leHRNb250aCxcblxuICAvKipcbiAgICogU2V0cyB0aGUgc3RhcnQgZGF0ZSB0byB0aGUgZmlyc3QgZGF5IG9mIHRoZSBxdWFydGVyIGJlZm9yZSB0aGUgY3VycmVudCBxdWFydGVyIGFuZFxuICAgKiB0aGUgZW5kIGRhdGUgdG8gdGhlIGxhc3QgZGF5IG9mIHRoYXQgcXVhcnRlci4gUXVhcnRlcnMgYXJlXG4gICAqIEphbnVhcnkgdG8gTWFyY2gsIEFwcmlsIHRvIEp1bmUsIEp1bHkgdG8gU2VwdGVtYmVyLCBhbmQgT2N0b2JlciB0byBEZWNlbWJlci5cbiAgICovXG4gIExhc3RRdWFydGVyLFxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBzdGFydCBkYXRlIHRvIHRoZSBmaXJzdCBkYXkgb2YgdGhlIGN1cnJlbnQgcXVhcnRlciBhbmRcbiAgICogdGhlIGVuZCBkYXRlIHRvIHRoZSBsYXN0IGRheSBvZiB0aGUgcXVhcnRlci4gUXVhcnRlcnMgYXJlXG4gICAqIEphbnVhcnkgdG8gTWFyY2gsIEFwcmlsIHRvIEp1bmUsIEp1bHkgdG8gU2VwdGVtYmVyLCBhbmQgT2N0b2JlciB0byBEZWNlbWJlci5cbiAgICovXG4gIFRoaXNRdWFydGVyLFxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBzdGFydCBkYXRlIHRvIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHF1YXJ0ZXIgYWZ0ZXIgdGhlIGN1cnJlbnQgcXVhcnRlciBhbmRcbiAgICogdGhlIGVuZCBkYXRlIHRvIHRoZSBsYXN0IGRheSBvZiB0aGF0IHF1YXJ0ZXIuIFF1YXJ0ZXJzIGFyZVxuICAgKiBKYW51YXJ5IHRvIE1hcmNoLCBBcHJpbCB0byBKdW5lLCBKdWx5IHRvIFNlcHRlbWJlciwgYW5kIE9jdG9iZXIgdG8gRGVjZW1iZXIuXG4gICAqL1xuICBOZXh0UXVhcnRlcixcblxuICAvKipcbiAgICogU2V0cyB0aGUgc3RhcnQgZGF0ZSB0byB0aGUgZmlyc3QgZGF5IG9mIHRoZSB5ZWFyIGJlZm9yZSB0aGUgY3VycmVudCB5ZWFyXG4gICAqIGFuZCB0aGUgZW5kIGRhdGUgdG8gdGhlIGxhc3QgZGF5IG9mIHRoYXQgeWVhci5cbiAgICovXG4gIExhc3RDYWxlbmRhclllYXIsXG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHN0YXJ0IGRhdGUgdG8gdGhlIGZpcnN0IGRheSBvZiB0aGUgY3VycmVudCB5ZWFyIGFuZFxuICAgKiB0aGUgZW5kIGRhdGUgdG8gdGhlIGxhc3QgZGF5IG9mIHRoZSB5ZWFyLlxuICAgKi9cbiAgVGhpc0NhbGVuZGFyWWVhcixcblxuICAvKipcbiAgICogU2V0cyB0aGUgc3RhcnQgZGF0ZSB0byB0aGUgZmlyc3QgZGF5IG9mIHRoZSB5ZWFyIGFmdGVyIHRoZSBjdXJyZW50IHllYXIgYW5kXG4gICAqIHRoZSBlbmQgZGF0ZSB0byB0aGUgbGFzdCBkYXkgb2YgdGhhdCB5ZWFyLlxuICAgKi9cbiAgTmV4dENhbGVuZGFyWWVhcixcblxuICAvKipcbiAgICogU2V0cyB0aGUgc3RhcnQgZGF0ZSB0byB0aGUgZmlyc3QgZGF5IG9mIHRoZSBmaXNjYWwgeWVhciBiZWZvcmUgdGhlIGN1cnJlbnQgZmlzY2FsIHllYXIgYW5kXG4gICAqIHRoZSBlbmQgZGF0ZSB0byB0aGUgbGFzdCBkYXkgb2YgdGhhdCBmaXNjYWwgeWVhci4gVGhlIGZpc2NhbCB5ZWFyIGlzIE9jdC4gMSB0byBTZXB0LiAzMC5cbiAgICovXG4gIExhc3RGaXNjYWxZZWFyLFxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBzdGFydCBkYXRlIHRvIHRoZSBmaXJzdCBkYXkgb2YgdGhlIGN1cnJlbnQgZmlzY2FsIHllYXIgYW5kXG4gICAqIHRoZSBlbmQgZGF0ZSB0byB0aGUgbGFzdCBkYXkgb2YgdGhlIGZpc2NhbCB5ZWFyLiBUaGUgZmlzY2FsIHllYXIgaXMgT2N0LiAxIHRvIFNlcHQuIDMwLlxuICAgKi9cbiAgVGhpc0Zpc2NhbFllYXIsXG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHN0YXJ0IGRhdGUgdG8gdGhlIGZpcnN0IGRheSBvZiB0aGUgZmlzY2FsIHllYXIgYWZ0ZXIgdGhlIGN1cnJlbnQgZmlzY2FsIHllYXJcbiAgICogYW5kIHRoZSBlbmQgZGF0ZSB0byB0aGUgbGFzdCBkYXkgb2YgdGhhdCBmaXNjYWwgeWVhci4gVGhlIGZpc2NhbCB5ZWFyIGlzIE9jdC4gMSB0byBTZXB0LiAzMC5cbiAgICovXG4gIE5leHRGaXNjYWxZZWFyLFxufVxuIl19","/**\n * Need to add the following to classes which contain static methods.\n * See: https://github.com/ng-packagr/ng-packagr/issues/641\n * @internal\n */\nexport class SkyDateRangeRelativeValue {\n static get today() {\n const today = new Date();\n return {\n startDate: today,\n endDate: today,\n };\n }\n static get tomorrow() {\n const tomorrow = new Date();\n tomorrow.setDate(tomorrow.getDate() + 1);\n return {\n startDate: tomorrow,\n endDate: tomorrow,\n };\n }\n static get yesterday() {\n const yesterday = new Date();\n yesterday.setDate(yesterday.getDate() - 1);\n return {\n startDate: yesterday,\n endDate: yesterday,\n };\n }\n /**\n * A date range starting with the nearest past Sunday and ending with the following Saturday.\n */\n static get thisWeek() {\n const startDate = new Date();\n startDate.setDate(startDate.getDate() - startDate.getDay());\n const endDate = new Date();\n endDate.setDate(endDate.getDate() - endDate.getDay() + 6);\n return {\n startDate,\n endDate,\n };\n }\n /**\n * A date range starting with the nearest upcoming Sunday and ending with the following Saturday.\n */\n static get nextWeek() {\n const startDate = new Date();\n startDate.setDate(startDate.getDate() - startDate.getDay() + 7);\n const endDate = new Date();\n endDate.setDate(endDate.getDate() - endDate.getDay() + 13);\n return {\n startDate,\n endDate,\n };\n }\n static get lastWeek() {\n const startDate = new Date();\n startDate.setDate(startDate.getDate() - startDate.getDay() - 7);\n const endDate = new Date();\n endDate.setDate(endDate.getDate() - endDate.getDay() - 1);\n return {\n startDate,\n endDate,\n };\n }\n static get thisMonth() {\n const startDate = new Date();\n startDate.setDate(1);\n const endDate = new Date();\n endDate.setMonth(endDate.getMonth() + 1);\n endDate.setDate(0);\n return {\n startDate,\n endDate,\n };\n }\n static get nextMonth() {\n const startDate = new Date();\n startDate.setDate(1);\n startDate.setMonth(startDate.getMonth() + 1);\n const endDate = new Date();\n endDate.setDate(1);\n endDate.setMonth(endDate.getMonth() + 2);\n endDate.setDate(0);\n return {\n startDate,\n endDate,\n };\n }\n static get lastMonth() {\n const startDate = new Date();\n // First, set the day of the month to zero,\n // which points to the last day of the previous month.\n startDate.setDate(0);\n // Finally, set the day of the month to 1.\n startDate.setDate(1);\n const endDate = new Date();\n endDate.setDate(0);\n return {\n startDate,\n endDate,\n };\n }\n static get thisQuarter() {\n const startDate = new Date();\n const endDate = new Date();\n const currentMonth = startDate.getMonth();\n const quarterStartMonth = SkyDateRangeRelativeValue.getQuarterStartMonth(currentMonth);\n startDate.setMonth(quarterStartMonth);\n startDate.setDate(1);\n endDate.setMonth(quarterStartMonth + 3);\n endDate.setDate(0);\n return {\n startDate,\n endDate,\n };\n }\n static get nextQuarter() {\n const startDate = new Date();\n const endDate = new Date();\n const currentMonth = startDate.getMonth();\n const quarterStartMonth = SkyDateRangeRelativeValue.getQuarterStartMonth(currentMonth);\n startDate.setMonth(quarterStartMonth + 3);\n startDate.setDate(1);\n endDate.setMonth(quarterStartMonth + 6);\n endDate.setDate(0);\n return {\n startDate,\n endDate,\n };\n }\n static get lastQuarter() {\n const startDate = new Date();\n startDate.setDate(1);\n const endDate = new Date();\n endDate.setDate(1);\n const currentMonth = startDate.getMonth();\n const quarterStartMonth = SkyDateRangeRelativeValue.getQuarterStartMonth(currentMonth);\n startDate.setMonth(quarterStartMonth - 3);\n startDate.setDate(1);\n endDate.setMonth(quarterStartMonth);\n endDate.setDate(0);\n return {\n startDate,\n endDate,\n };\n }\n static get thisCalendarYear() {\n const startDate = new Date();\n startDate.setDate(1);\n startDate.setMonth(0);\n const endDate = new Date();\n endDate.setDate(1);\n endDate.setMonth(0);\n endDate.setFullYear(endDate.getFullYear() + 1);\n endDate.setDate(0);\n return {\n startDate,\n endDate,\n };\n }\n static get nextCalendarYear() {\n const startDate = new Date();\n startDate.setDate(1);\n startDate.setMonth(0);\n startDate.setFullYear(startDate.getFullYear() + 1);\n const endDate = new Date();\n endDate.setDate(1);\n endDate.setMonth(0);\n endDate.setFullYear(startDate.getFullYear() + 1);\n endDate.setDate(0);\n return {\n startDate,\n endDate,\n };\n }\n static get lastCalendarYear() {\n const startDate = new Date();\n startDate.setDate(1);\n startDate.setMonth(0);\n startDate.setFullYear(startDate.getFullYear() - 1);\n const endDate = new Date();\n endDate.setDate(1);\n endDate.setMonth(0);\n endDate.setDate(0);\n return {\n startDate,\n endDate,\n };\n }\n static get thisFiscalYear() {\n const start = new Date();\n start.setDate(1);\n return SkyDateRangeRelativeValue.getClosestFiscalYearRange(start);\n }\n static get nextFiscalYear() {\n const start = new Date();\n start.setDate(1);\n start.setFullYear(start.getFullYear() + 1);\n return SkyDateRangeRelativeValue.getClosestFiscalYearRange(start);\n }\n static get lastFiscalYear() {\n const start = new Date();\n start.setDate(1);\n start.setFullYear(start.getFullYear() - 1);\n return SkyDateRangeRelativeValue.getClosestFiscalYearRange(start);\n }\n static getQuarterStartMonth(currentMonth) {\n let month;\n if (currentMonth < 3) {\n month = 0;\n }\n else if (currentMonth < 6) {\n month = 3;\n }\n else if (currentMonth < 9) {\n month = 6;\n }\n else {\n month = 9;\n }\n return month;\n }\n /**\n * Return a fiscal year based on a start date.\n * (The fiscal year starts in October and continues through to next September.)\n */\n static getClosestFiscalYearRange(startDate) {\n const endDate = new Date(startDate);\n if (startDate.getMonth() >= 9) {\n startDate.setMonth(9);\n endDate.setFullYear(startDate.getFullYear() + 1);\n endDate.setMonth(9);\n endDate.setDate(0);\n }\n else {\n startDate.setFullYear(startDate.getFullYear() - 1);\n startDate.setMonth(9);\n endDate.setMonth(9);\n endDate.setDate(0);\n }\n return {\n startDate,\n endDate,\n };\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS1yZWxhdGl2ZS12YWx1ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9kYXRldGltZS9zcmMvbGliL21vZHVsZXMvZGF0ZS1yYW5nZS1waWNrZXIvdHlwZXMvZGF0ZS1yYW5nZS1yZWxhdGl2ZS12YWx1ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7OztHQUlHO0FBQ0gsTUFBTSxPQUFnQix5QkFBeUI7SUFDdEMsTUFBTSxLQUFLLEtBQUs7UUFDckIsTUFBTSxLQUFLLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUV6QixPQUFPO1lBQ0wsU0FBUyxFQUFFLEtBQUs7WUFDaEIsT0FBTyxFQUFFLEtBQUs7U0FDZixDQUFDO0lBQ0osQ0FBQztJQUVNLE1BQU0sS0FBSyxRQUFRO1FBQ3hCLE1BQU0sUUFBUSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFFNUIsUUFBUSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFFekMsT0FBTztZQUNMLFNBQVMsRUFBRSxRQUFRO1lBQ25CLE9BQU8sRUFBRSxRQUFRO1NBQ2xCLENBQUM7SUFDSixDQUFDO0lBRU0sTUFBTSxLQUFLLFNBQVM7UUFDekIsTUFBTSxTQUFTLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUU3QixTQUFTLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUUzQyxPQUFPO1lBQ0wsU0FBUyxFQUFFLFNBQVM7WUFDcEIsT0FBTyxFQUFFLFNBQVM7U0FDbkIsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNJLE1BQU0sS0FBSyxRQUFRO1FBQ3hCLE1BQU0sU0FBUyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDN0IsU0FBUyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENB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dGVSYW5nZSB9IGZyb20gJy4vZGF0ZS1yYW5nZSc7XG5cbi8qKlxuICogTmVlZCB0byBhZGQgdGhlIGZvbGxvd2luZyB0byBjbGFzc2VzIHdoaWNoIGNvbnRhaW4gc3RhdGljIG1ldGhvZHMuXG4gKiBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9uZy1wYWNrYWdyL25nLXBhY2thZ3IvaXNzdWVzLzY0MVxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTa3lEYXRlUmFuZ2VSZWxhdGl2ZVZhbHVlIHtcbiAgcHVibGljIHN0YXRpYyBnZXQgdG9kYXkoKTogU2t5RGF0ZVJhbmdlIHtcbiAgICBjb25zdCB0b2RheSA9IG5ldyBEYXRlKCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgc3RhcnREYXRlOiB0b2RheSxcbiAgICAgIGVuZERhdGU6IHRvZGF5LFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGdldCB0b21vcnJvdygpOiBTa3lEYXRlUmFuZ2Uge1xuICAgIGNvbnN0IHRvbW9ycm93ID0gbmV3IERhdGUoKTtcblxuICAgIHRvbW9ycm93LnNldERhdGUodG9tb3Jyb3cuZ2V0RGF0ZSgpICsgMSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgc3RhcnREYXRlOiB0b21vcnJvdyxcbiAgICAgIGVuZERhdGU6IHRvbW9ycm93LFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGdldCB5ZXN0ZXJkYXkoKTogU2t5RGF0ZVJhbmdlIHtcbiAgICBjb25zdCB5ZXN0ZXJkYXkgPSBuZXcgRGF0ZSgpO1xuXG4gICAgeWVzdGVyZGF5LnNldERhdGUoeWVzdGVyZGF5LmdldERhdGUoKSAtIDEpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXJ0RGF0ZTogeWVzdGVyZGF5LFxuICAgICAgZW5kRGF0ZTogeWVzdGVyZGF5LFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQSBkYXRlIHJhbmdlIHN0YXJ0aW5nIHdpdGggdGhlIG5lYXJlc3QgcGFzdCBTdW5kYXkgYW5kIGVuZGluZyB3aXRoIHRoZSBmb2xsb3dpbmcgU2F0dXJkYXkuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGdldCB0aGlzV2VlaygpOiBTa3lEYXRlUmFuZ2Uge1xuICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgc3RhcnREYXRlLnNldERhdGUoc3RhcnREYXRlLmdldERhdGUoKSAtIHN0YXJ0RGF0ZS5nZXREYXkoKSk7XG5cbiAgICBjb25zdCBlbmREYXRlID0gbmV3IERhdGUoKTtcbiAgICBlbmREYXRlLnNldERhdGUoZW5kRGF0ZS5nZXREYXRlKCkgLSBlbmREYXRlLmdldERheSgpICsgNik7XG5cbiAgICByZXR1cm4ge1xuICAgICAgc3RhcnREYXRlLFxuICAgICAgZW5kRGF0ZSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEEgZGF0ZSByYW5nZSBzdGFydGluZyB3aXRoIHRoZSBuZWFyZXN0IHVwY29taW5nIFN1bmRheSBhbmQgZW5kaW5nIHdpdGggdGhlIGZvbGxvd2luZyBTYXR1cmRheS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZ2V0IG5leHRXZWVrKCk6IFNreURhdGVSYW5nZSB7XG4gICAgY29uc3Qgc3RhcnREYXRlID0gbmV3IERhdGUoKTtcbiAgICBzdGFydERhdGUuc2V0RGF0ZShzdGFydERhdGUuZ2V0RGF0ZSgpIC0gc3RhcnREYXRlLmdldERheSgpICsgNyk7XG5cbiAgICBjb25zdCBlbmREYXRlID0gbmV3IERhdGUoKTtcbiAgICBlbmREYXRlLnNldERhdGUoZW5kRGF0ZS5nZXREYXRlKCkgLSBlbmREYXRlLmdldERheSgpICsgMTMpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXJ0RGF0ZSxcbiAgICAgIGVuZERhdGUsXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0IGxhc3RXZWVrKCk6IFNreURhdGVSYW5nZSB7XG4gICAgY29uc3Qgc3RhcnREYXRlID0gbmV3IERhdGUoKTtcbiAgICBzdGFydERhdGUuc2V0RGF0ZShzdGFydERhdGUuZ2V0RGF0ZSgpIC0gc3RhcnREYXRlLmdldERheSgpIC0gNyk7XG5cbiAgICBjb25zdCBlbmREYXRlID0gbmV3IERhdGUoKTtcbiAgICBlbmREYXRlLnNldERhdGUoZW5kRGF0ZS5nZXREYXRlKCkgLSBlbmREYXRlLmdldERheSgpIC0gMSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgc3RhcnREYXRlLFxuICAgICAgZW5kRGF0ZSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBnZXQgdGhpc01vbnRoKCk6IFNreURhdGVSYW5nZSB7XG4gICAgY29uc3Qgc3RhcnREYXRlID0gbmV3IERhdGUoKTtcbiAgICBzdGFydERhdGUuc2V0RGF0ZSgxKTtcblxuICAgIGNvbnN0IGVuZERhdGUgPSBuZXcgRGF0ZSgpO1xuICAgIGVuZERhdGUuc2V0TW9udGgoZW5kRGF0ZS5nZXRNb250aCgpICsgMSk7XG4gICAgZW5kRGF0ZS5zZXREYXRlKDApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXJ0RGF0ZSxcbiAgICAgIGVuZERhdGUsXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0IG5leHRNb250aCgpOiBTa3lEYXRlUmFuZ2Uge1xuICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgc3RhcnREYXRlLnNldERhdGUoMSk7XG4gICAgc3RhcnREYXRlLnNldE1vbnRoKHN0YXJ0RGF0ZS5nZXRNb250aCgpICsgMSk7XG5cbiAgICBjb25zdCBlbmREYXRlID0gbmV3IERhdGUoKTtcbiAgICBlbmREYXRlLnNldERhdGUoMSk7XG4gICAgZW5kRGF0ZS5zZXRNb250aChlbmREYXRlLmdldE1vbnRoKCkgKyAyKTtcbiAgICBlbmREYXRlLnNldERhdGUoMCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgc3RhcnREYXRlLFxuICAgICAgZW5kRGF0ZSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBnZXQgbGFzdE1vbnRoKCk6IFNreURhdGVSYW5nZSB7XG4gICAgY29uc3Qgc3RhcnREYXRlID0gbmV3IERhdGUoKTtcblxuICAgIC8vIEZpcnN0LCBzZXQgdGhlIGRheSBvZiB0aGUgbW9udGggdG8gemVybyxcbiAgICAvLyB3aGljaCBwb2ludHMgdG8gdGhlIGxhc3QgZGF5IG9mIHRoZSBwcmV2aW91cyBtb250aC5cbiAgICBzdGFydERhdGUuc2V0RGF0ZSgwKTtcblxuICAgIC8vIEZpbmFsbHksIHNldCB0aGUgZGF5IG9mIHRoZSBtb250aCB0byAxLlxuICAgIHN0YXJ0RGF0ZS5zZXREYXRlKDEpO1xuXG4gICAgY29uc3QgZW5kRGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgZW5kRGF0ZS5zZXREYXRlKDApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXJ0RGF0ZSxcbiAgICAgIGVuZERhdGUsXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0IHRoaXNRdWFydGVyKCk6IFNreURhdGVSYW5nZSB7XG4gICAgY29uc3Qgc3RhcnREYXRlID0gbmV3IERhdGUoKTtcbiAgICBjb25zdCBlbmREYXRlID0gbmV3IERhdGUoKTtcblxuICAgIGNvbnN0IGN1cnJlbnRNb250aCA9IHN0YXJ0RGF0ZS5nZXRNb250aCgpO1xuICAgIGNvbnN0IHF1YXJ0ZXJTdGFydE1vbnRoID1cbiAgICAgIFNreURhdGVSYW5nZVJlbGF0aXZlVmFsdWUuZ2V0UXVhcnRlclN0YXJ0TW9udGgoY3VycmVudE1vbnRoKTtcblxuICAgIHN0YXJ0RGF0ZS5zZXRNb250aChxdWFydGVyU3RhcnRNb250aCk7XG4gICAgc3RhcnREYXRlLnNldERhdGUoMSk7XG5cbiAgICBlbmREYXRlLnNldE1vbnRoKHF1YXJ0ZXJTdGFydE1vbnRoICsgMyk7XG4gICAgZW5kRGF0ZS5zZXREYXRlKDApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXJ0RGF0ZSxcbiAgICAgIGVuZERhdGUsXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0IG5leHRRdWFydGVyKCk6IFNreURhdGVSYW5nZSB7XG4gICAgY29uc3Qgc3RhcnREYXRlID0gbmV3IERhdGUoKTtcbiAgICBjb25zdCBlbmREYXRlID0gbmV3IERhdGUoKTtcblxuICAgIGNvbnN0IGN1cnJlbnRNb250aCA9IHN0YXJ0RGF0ZS5nZXRNb250aCgpO1xuICAgIGNvbnN0IHF1YXJ0ZXJTdGFydE1vbnRoID1cbiAgICAgIFNreURhdGVSYW5nZVJlbGF0aXZlVmFsdWUuZ2V0UXVhcnRlclN0YXJ0TW9udGgoY3VycmVudE1vbnRoKTtcblxuICAgIHN0YXJ0RGF0ZS5zZXRNb250aChxdWFydGVyU3RhcnRNb250aCArIDMpO1xuICAgIHN0YXJ0RGF0ZS5zZXREYXRlKDEpO1xuXG4gICAgZW5kRGF0ZS5zZXRNb250aChxdWFydGVyU3RhcnRNb250aCArIDYpO1xuICAgIGVuZERhdGUuc2V0RGF0ZSgwKTtcblxuICAgIHJldHVybiB7XG4gICAgICBzdGFydERhdGUsXG4gICAgICBlbmREYXRlLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGdldCBsYXN0UXVhcnRlcigpOiBTa3lEYXRlUmFuZ2Uge1xuICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgc3RhcnREYXRlLnNldERhdGUoMSk7XG5cbiAgICBjb25zdCBlbmREYXRlID0gbmV3IERhdGUoKTtcbiAgICBlbmREYXRlLnNldERhdGUoMSk7XG5cbiAgICBjb25zdCBjdXJyZW50TW9udGggPSBzdGFydERhdGUuZ2V0TW9udGgoKTtcbiAgICBjb25zdCBxdWFydGVyU3RhcnRNb250aCA9XG4gICAgICBTa3lEYXRlUmFuZ2VSZWxhdGl2ZVZhbHVlLmdldFF1YXJ0ZXJTdGFydE1vbnRoKGN1cnJlbnRNb250aCk7XG5cbiAgICBzdGFydERhdGUuc2V0TW9udGgocXVhcnRlclN0YXJ0TW9udGggLSAzKTtcbiAgICBzdGFydERhdGUuc2V0RGF0ZSgxKTtcblxuICAgIGVuZERhdGUuc2V0TW9udGgocXVhcnRlclN0YXJ0TW9udGgpO1xuICAgIGVuZERhdGUuc2V0RGF0ZSgwKTtcblxuICAgIHJldHVybiB7XG4gICAgICBzdGFydERhdGUsXG4gICAgICBlbmREYXRlLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGdldCB0aGlzQ2FsZW5kYXJZZWFyKCk6IFNreURhdGVSYW5nZSB7XG4gICAgY29uc3Qgc3RhcnREYXRlID0gbmV3IERhdGUoKTtcbiAgICBzdGFydERhdGUuc2V0RGF0ZSgxKTtcbiAgICBzdGFydERhdGUuc2V0TW9udGgoMCk7XG5cbiAgICBjb25zdCBlbmREYXRlID0gbmV3IERhdGUoKTtcbiAgICBlbmREYXRlLnNldERhdGUoMSk7XG4gICAgZW5kRGF0ZS5zZXRNb250aCgwKTtcbiAgICBlbmREYXRlLnNldEZ1bGxZZWFyKGVuZERhdGUuZ2V0RnVsbFllYXIoKSArIDEpO1xuICAgIGVuZERhdGUuc2V0RGF0ZSgwKTtcblxuICAgIHJldHVybiB7XG4gICAgICBzdGFydERhdGUsXG4gICAgICBlbmREYXRlLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGdldCBuZXh0Q2FsZW5kYXJZZWFyKCk6IFNreURhdGVSYW5nZSB7XG4gICAgY29uc3Qgc3RhcnREYXRlID0gbmV3IERhdGUoKTtcbiAgICBzdGFydERhdGUuc2V0RGF0ZSgxKTtcbiAgICBzdGFydERhdGUuc2V0TW9udGgoMCk7XG4gICAgc3RhcnREYXRlLnNldEZ1bGxZZWFyKHN0YXJ0RGF0ZS5nZXRGdWxsWWVhcigpICsgMSk7XG5cbiAgICBjb25zdCBlbmREYXRlID0gbmV3IERhdGUoKTtcbiAgICBlbmREYXRlLnNldERhdGUoMSk7XG4gICAgZW5kRGF0ZS5zZXRNb250aCgwKTtcbiAgICBlbmREYXRlLnNldEZ1bGxZZWFyKHN0YXJ0RGF0ZS5nZXRGdWxsWWVhcigpICsgMSk7XG4gICAgZW5kRGF0ZS5zZXREYXRlKDApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXJ0RGF0ZSxcbiAgICAgIGVuZERhdGUsXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0IGxhc3RDYWxlbmRhclllYXIoKTogU2t5RGF0ZVJhbmdlIHtcbiAgICBjb25zdCBzdGFydERhdGUgPSBuZXcgRGF0ZSgpO1xuICAgIHN0YXJ0RGF0ZS5zZXREYXRlKDEpO1xuICAgIHN0YXJ0RGF0ZS5zZXRNb250aCgwKTtcbiAgICBzdGFydERhdGUuc2V0RnVsbFllYXIoc3RhcnREYXRlLmdldEZ1bGxZZWFyKCkgLSAxKTtcblxuICAgIGNvbnN0IGVuZERhdGUgPSBuZXcgRGF0ZSgpO1xuICAgIGVuZERhdGUuc2V0RGF0ZSgxKTtcbiAgICBlbmREYXRlLnNldE1vbnRoKDApO1xuICAgIGVuZERhdGUuc2V0RGF0ZSgwKTtcblxuICAgIHJldHVybiB7XG4gICAgICBzdGFydERhdGUsXG4gICAgICBlbmREYXRlLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGdldCB0aGlzRmlzY2FsWWVhcigpOiBTa3lEYXRlUmFuZ2Uge1xuICAgIGNvbnN0IHN0YXJ0ID0gbmV3IERhdGUoKTtcbiAgICBzdGFydC5zZXREYXRlKDEpO1xuXG4gICAgcmV0dXJuIFNreURhdGVSYW5nZVJlbGF0aXZlVmFsdWUuZ2V0Q2xvc2VzdEZpc2NhbFllYXJSYW5nZShzdGFydCk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGdldCBuZXh0RmlzY2FsWWVhcigpOiBTa3lEYXRlUmFuZ2Uge1xuICAgIGNvbnN0IHN0YXJ0ID0gbmV3IERhdGUoKTtcbiAgICBzdGFydC5zZXREYXRlKDEpO1xuICAgIHN0YXJ0LnNldEZ1bGxZZWFyKHN0YXJ0LmdldEZ1bGxZZWFyKCkgKyAxKTtcblxuICAgIHJldHVybiBTa3lEYXRlUmFuZ2VSZWxhdGl2ZVZhbHVlLmdldENsb3Nlc3RGaXNjYWxZZWFyUmFuZ2Uoc3RhcnQpO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBnZXQgbGFzdEZpc2NhbFllYXIoKTogU2t5RGF0ZVJhbmdlIHtcbiAgICBjb25zdCBzdGFydCA9IG5ldyBEYXRlKCk7XG4gICAgc3RhcnQuc2V0RGF0ZSgxKTtcbiAgICBzdGFydC5zZXRGdWxsWWVhcihzdGFydC5nZXRGdWxsWWVhcigpIC0gMSk7XG5cbiAgICByZXR1cm4gU2t5RGF0ZVJhbmdlUmVsYXRpdmVWYWx1ZS5nZXRDbG9zZXN0RmlzY2FsWWVhclJhbmdlKHN0YXJ0KTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGdldFF1YXJ0ZXJTdGFydE1vbnRoKGN1cnJlbnRNb250aDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBsZXQgbW9udGg6IG51bWJlcjtcbiAgICBpZiAoY3VycmVudE1vbnRoIDwgMykge1xuICAgICAgbW9udGggPSAwO1xuICAgIH0gZWxzZSBpZiAoY3VycmVudE1vbnRoIDwgNikge1xuICAgICAgbW9udGggPSAzO1xuICAgIH0gZWxzZSBpZiAoY3VycmVudE1vbnRoIDwgOSkge1xuICAgICAgbW9udGggPSA2O1xuICAgIH0gZWxzZSB7XG4gICAgICBtb250aCA9IDk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1vbnRoO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIGZpc2NhbCB5ZWFyIGJhc2VkIG9uIGEgc3RhcnQgZGF0ZS5cbiAgICogKFRoZSBmaXNjYWwgeWVhciBzdGFydHMgaW4gT2N0b2JlciBhbmQgY29udGludWVzIHRocm91Z2ggdG8gbmV4dCBTZXB0ZW1iZXIuKVxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgZ2V0Q2xvc2VzdEZpc2NhbFllYXJSYW5nZShzdGFydERhdGU6IERhdGUpOiBTa3lEYXRlUmFuZ2Uge1xuICAgIGNvbnN0IGVuZERhdGUgPSBuZXcgRGF0ZShzdGFydERhdGUpO1xuXG4gICAgaWYgKHN0YXJ0RGF0ZS5nZXRNb250aCgpID49IDkpIHtcbiAgICAgIHN0YXJ0RGF0ZS5zZXRNb250aCg5KTtcbiAgICAgIGVuZERhdGUuc2V0RnVsbFllYXIoc3RhcnREYXRlLmdldEZ1bGxZZWFyKCkgKyAxKTtcbiAgICAgIGVuZERhdGUuc2V0TW9udGgoOSk7XG4gICAgICBlbmREYXRlLnNldERhdGUoMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXJ0RGF0ZS5zZXRGdWxsWWVhcihzdGFydERhdGUuZ2V0RnVsbFllYXIoKSAtIDEpO1xuICAgICAgc3RhcnREYXRlLnNldE1vbnRoKDkpO1xuICAgICAgZW5kRGF0ZS5zZXRNb250aCg5KTtcbiAgICAgIGVuZERhdGUuc2V0RGF0ZSgwKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgc3RhcnREYXRlLFxuICAgICAgZW5kRGF0ZSxcbiAgICB9O1xuICB9XG59XG4iXX0=","import { SkyDateRangeCalculatorId } from './date-range-calculator-id';\nimport { SkyDateRangeCalculatorType } from './date-range-calculator-type';\nimport { SkyDateRangeRelativeValue } from './date-range-relative-value';\nexport const SKY_DEFAULT_CALCULATOR_IDS = [\n SkyDateRangeCalculatorId.AnyTime,\n SkyDateRangeCalculatorId.Before,\n SkyDateRangeCalculatorId.After,\n SkyDateRangeCalculatorId.SpecificRange,\n SkyDateRangeCalculatorId.Yesterday,\n SkyDateRangeCalculatorId.Today,\n SkyDateRangeCalculatorId.Tomorrow,\n SkyDateRangeCalculatorId.LastWeek,\n SkyDateRangeCalculatorId.ThisWeek,\n SkyDateRangeCalculatorId.NextWeek,\n SkyDateRangeCalculatorId.LastMonth,\n SkyDateRangeCalculatorId.ThisMonth,\n SkyDateRangeCalculatorId.NextMonth,\n SkyDateRangeCalculatorId.LastQuarter,\n SkyDateRangeCalculatorId.ThisQuarter,\n SkyDateRangeCalculatorId.NextQuarter,\n SkyDateRangeCalculatorId.LastCalendarYear,\n SkyDateRangeCalculatorId.ThisCalendarYear,\n SkyDateRangeCalculatorId.NextCalendarYear,\n SkyDateRangeCalculatorId.LastFiscalYear,\n SkyDateRangeCalculatorId.ThisFiscalYear,\n SkyDateRangeCalculatorId.NextFiscalYear,\n];\nexport const SKY_DEFAULT_CALCULATOR_CONFIGS = [\n {\n calculatorId: SkyDateRangeCalculatorId.AnyTime,\n type: SkyDateRangeCalculatorType.Relative,\n shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_any_time',\n getValue: (startDate, endDate) => ({ startDate, endDate }),\n },\n {\n calculatorId: SkyDateRangeCalculatorId.Before,\n type: SkyDateRangeCalculatorType.Before,\n shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_before',\n getValue: (startDate, endDate) => ({ startDate, endDate }),\n },\n {\n calculatorId: SkyDateRangeCalculatorId.After,\n type: SkyDateRangeCalculatorType.After,\n shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_after',\n getValue: (startDate, endDate) => ({ startDate, endDate }),\n },\n {\n calculatorId: SkyDateRangeCalculatorId.SpecificRange,\n type: SkyDateRangeCalculatorType.Range,\n shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_specific_range',\n getValue: (startDate, endDate) => ({ startDate, endDate }),\n validate: (value) => {\n if (value &&\n value.startDate &&\n value.endDate &&\n value.startDate > value.endDate) {\n return {\n endDateBeforeStartDate: true,\n };\n }\n return null;\n },\n },\n {\n calculatorId: SkyDateRangeCalculatorId.LastFiscalYear,\n type: SkyDateRangeCalculatorType.Relative,\n shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_last_fiscal_year',\n getValue: () => SkyDateRangeRelativeValue.lastFiscalYear,\n },\n {\n calculatorId: SkyDateRangeCalculatorId.LastMonth,\n type: SkyDateRangeCalculatorType.Relative,\n shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_last_month',\n getValue: () => SkyDateRangeRelativeValue.lastMonth,\n },\n {\n calculatorId: SkyDateRangeCalculatorId.LastQuarter,\n type: SkyDateRangeCalculatorType.Relative,\n shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_last_quarter',\n getValue: () => SkyDateRangeRelativeValue.lastQuarter,\n },\n {\n calculatorId: SkyDateRangeCalculatorId.LastWeek,\n type: SkyDateRangeCalculatorType.Relative,\n shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_last_week',\n getValue: () => SkyDateRangeRelativeValue.lastWeek,\n },\n {\n calculatorId: SkyDateRangeCalculatorId.LastCalendarYear,\n type: SkyDateRangeCalculatorType.Relative,\n shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_last_calendar_year',\n getValue: () => SkyDateRangeRelativeValue.lastCalendarYear,\n },\n {\n calculatorId: SkyDateRangeCalculatorId.NextFiscalYear,\n type: SkyDateRangeCalculatorType.Relative,\n shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_next_fiscal_year',\n getValue: () => SkyDateRangeRelativeValue.nextFiscalYear,\n },\n {\n calculatorId: SkyDateRangeCalculatorId.NextMonth,\n type: SkyDateRangeCalculatorType.Relative,\n shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_next_month',\n getValue: () => SkyDateRangeRelativeValue.nextMonth,\n },\n {\n calculatorId: SkyDateRangeCalculatorId.NextQuarter,\n type: SkyDateRangeCalculatorType.Relative,\n shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_next_quarter',\n getValue: () => SkyDateRangeRelativeValue.nextQuarter,\n },\n {\n calculatorId: SkyDateRangeCalculatorId.NextWeek,\n type: SkyDateRangeCalculatorType.Relative,\n shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_next_week',\n getValue: () => SkyDateRangeRelativeValue.nextWeek,\n },\n {\n calculatorId: SkyDateRangeCalculatorId.NextCalendarYear,\n type: SkyDateRangeCalculatorType.Relative,\n shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_next_calendar_year',\n getValue: () => SkyDateRangeRelativeValue.nextCalendarYear,\n },\n {\n calculatorId: SkyDateRangeCalculatorId.ThisFiscalYear,\n type: SkyDateRangeCalculatorType.Relative,\n shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_this_fiscal_year',\n getValue: () => SkyDateRangeRelativeValue.thisFiscalYear,\n },\n {\n calculatorId: SkyDateRangeCalculatorId.ThisMonth,\n type: SkyDateRangeCalculatorType.Relative,\n shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_this_month',\n getValue: () => SkyDateRangeRelativeValue.thisMonth,\n },\n {\n calculatorId: SkyDateRangeCalculatorId.ThisQuarter,\n type: SkyDateRangeCalculatorType.Relative,\n shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_this_quarter',\n getValue: () => SkyDateRangeRelativeValue.thisQuarter,\n },\n {\n calculatorId: SkyDateRangeCalculatorId.ThisWeek,\n type: SkyDateRangeCalculatorType.Relative,\n shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_this_week',\n getValue: () => SkyDateRangeRelativeValue.thisWeek,\n },\n {\n calculatorId: SkyDateRangeCalculatorId.ThisCalendarYear,\n type: SkyDateRangeCalculatorType.Relative,\n shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_this_calendar_year',\n getValue: () => SkyDateRangeRelativeValue.thisCalendarYear,\n },\n {\n calculatorId: SkyDateRangeCalculatorId.Today,\n type: SkyDateRangeCalculatorType.Relative,\n shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_today',\n getValue: () => SkyDateRangeRelativeValue.today,\n },\n {\n calculatorId: SkyDateRangeCalculatorId.Tomorrow,\n type: SkyDateRangeCalculatorType.Relative,\n shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_tomorrow',\n getValue: () => SkyDateRangeRelativeValue.tomorrow,\n },\n {\n calculatorId: SkyDateRangeCalculatorId.Yesterday,\n type: SkyDateRangeCalculatorType.Relative,\n shortDescriptionResourceKey: 'skyux_date_range_picker_format_label_yesterday',\n getValue: () => SkyDateRangeRelativeValue.yesterday,\n },\n];\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS1kZWZhdWx0LWNhbGN1bGF0b3ItY29uZmlncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9kYXRldGltZS9zcmMvbGliL21vZHVsZXMvZGF0ZS1yYW5nZS1waWNrZXIvdHlwZXMvZGF0ZS1yYW5nZS1kZWZhdWx0LWNhbGN1bGF0b3ItY29uZmlncy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUUxRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUV4RSxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBK0I7SUFDcEUsd0JBQXdCLENBQUMsT0FBTztJQUNoQyx3QkFBd0IsQ0FBQyxNQUFNO0lBQy9CLHdCQUF3QixDQUFDLEtBQUs7SUFDOUIsd0JBQXdCLENBQUMsYUFBYTtJQUN0Qyx3QkFBd0IsQ0FBQyxTQUFTO0lBQ2xDLHdCQUF3QixDQUFDLEtBQUs7SUFDOUIsd0JBQXdCLENBQUMsUUFBUTtJQUNqQyx3QkFBd0IsQ0FBQyxRQUFRO0lBQ2pDLHdCQUF3QixDQUFDLFFBQVE7SUFDakMsd0JBQXdCLENBQUMsUUFBUTtJQUNqQyx3QkFBd0IsQ0FBQyxTQUFTO0lBQ2xDLHdCQUF3QixDQUFDLFNBQVM7SUFDbEMsd0JBQXdCLENBQUMsU0FBUztJQUNsQyx3QkFBd0IsQ0FBQyxXQUFXO0lBQ3BDLHdCQUF3QixDQUFDLFdBQVc7SUFDcEMsd0JBQXdCLENBQUMsV0FBVztJQUNwQyx3QkFBd0IsQ0FBQyxnQkFBZ0I7SUFDekMsd0JBQXdCLENBQUMsZ0JBQWdCO0lBQ3pDLHdCQUF3QixDQUFDLGdCQUFnQjtJQUN6Qyx3QkFBd0IsQ0FBQyxjQUFjO0lBQ3ZDLHdCQUF3QixDQUFD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LENBQUMsUUFBUTtLQUNuRDtJQUVEO1FBQ0UsWUFBWSxFQUFFLHdCQUF3QixDQUFDLFNBQVM7UUFDaEQsSUFBSSxFQUFFLDBCQUEwQixDQUFDLFFBQVE7UUFDekMsMkJBQTJCLEVBQ3pCLGdEQUFnRDtRQUNsRCxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMseUJBQXlCLENBQUMsU0FBUztLQUNwRDtDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBWYWxpZGF0aW9uRXJyb3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9ySWQgfSBmcm9tICcuL2RhdGUtcmFuZ2UtY2FsY3VsYXRvci1pZCc7XG5pbXBvcnQgeyBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9yVHlwZSB9IGZyb20gJy4vZGF0ZS1yYW5nZS1jYWxjdWxhdG9yLXR5cGUnO1xuaW1wb3J0IHsgU2t5RGF0ZVJhbmdlRGVmYXVsdENhbGN1bGF0b3JDb25maWcgfSBmcm9tICcuL2RhdGUtcmFuZ2UtZGVmYXVsdC1jYWxjdWxhdG9yLWNvbmZpZyc7XG5pbXBvcnQgeyBTa3lEYXRlUmFuZ2VSZWxhdGl2ZVZhbHVlIH0gZnJvbSAnLi9kYXRlLXJhbmdlLXJlbGF0aXZlLXZhbHVlJztcblxuZXhwb3J0IGNvbnN0IFNLWV9ERUZBVUxUX0NBTENVTEFUT1JfSURTOiBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9ySWRbXSA9IFtcbiAgU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvcklkLkFueVRpbWUsXG4gIFNreURhdGVSYW5nZUNhbGN1bGF0b3JJZC5CZWZvcmUsXG4gIFNreURhdGVSYW5nZUNhbGN1bGF0b3JJZC5BZnRlcixcbiAgU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvcklkLlNwZWNpZmljUmFuZ2UsXG4gIFNreURhdGVSYW5nZUNhbGN1bGF0b3JJZC5ZZXN0ZXJkYXksXG4gIFNreURhdGVSYW5nZUNhbGN1bGF0b3JJZC5Ub2RheSxcbiAgU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvcklkLlRvbW9ycm93LFxuICBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9ySWQuTGFzdFdlZWssXG4gIFNreURhdGVSYW5nZUNhbGN1bGF0b3JJZC5UaGlzV2VlayxcbiAgU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvcklkLk5leHRXZWVrLFxuICBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9ySWQuTGFzdE1vbnRoLFxuICBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9ySWQuVGhpc01vbnRoLFxuICBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9ySWQuTmV4dE1vbnRoLFxuICBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9ySWQuTGFzdFF1YXJ0ZXIsXG4gIFNreURhdGVSYW5nZUNhbGN1bGF0b3JJZC5UaGlzUXVhcnRlcixcbiAgU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvcklkLk5leHRRdWFydGVyLFxuICBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9ySWQuTGFzdENhbGVuZGFyWWVhcixcbiAgU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvcklkLlRoaXNDYWxlbmRhclllYXIsXG4gIFNreURhdGVSYW5nZUNhbGN1bGF0b3JJZC5OZXh0Q2FsZW5kYXJZZWFyLFxuICBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9ySWQuTGFzdEZpc2NhbFllYXIsXG4gIFNreURhdGVSYW5nZUNhbGN1bGF0b3JJZC5UaGlzRmlzY2FsWWVhcixcbiAgU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvcklkLk5leHRGaXNjYWxZZWFyLFxuXTtcblxuZXhwb3J0IGNvbnN0IFNLWV9ERUZBVUxUX0NBTENVTEFUT1JfQ09ORklHUzogU2t5RGF0ZVJhbmdlRGVmYXVsdENhbGN1bGF0b3JDb25maWdbXSA9XG4gIFtcbiAgICB7XG4gICAgICBjYWxjdWxhdG9ySWQ6IFNreURhdGVSYW5nZUNhbGN1bGF0b3JJZC5BbnlUaW1lLFxuICAgICAgdHlwZTogU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvclR5cGUuUmVsYXRpdmUsXG4gICAgICBzaG9ydERlc2NyaXB0aW9uUmVzb3VyY2VLZXk6XG4gICAgICAgICdza3l1eF9kYXRlX3JhbmdlX3BpY2tlcl9mb3JtYXRfbGFiZWxfYW55X3RpbWUnLFxuICAgICAgZ2V0VmFsdWU6IChzdGFydERhdGUsIGVuZERhdGUpID0+ICh7IHN0YXJ0RGF0ZSwgZW5kRGF0ZSB9KSxcbiAgICB9LFxuXG4gICAge1xuICAgICAgY2FsY3VsYXRvcklkOiBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9ySWQuQmVmb3JlLFxuICAgICAgdHlwZTogU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvclR5cGUuQmVmb3JlLFxuICAgICAgc2hvcnREZXNjcmlwdGlvblJlc291cmNlS2V5OlxuICAgICAgICAnc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZm9ybWF0X2xhYmVsX2JlZm9yZScsXG4gICAgICBnZXRWYWx1ZTogKHN0YXJ0RGF0ZSwgZW5kRGF0ZSkgPT4gKHsgc3RhcnREYXRlLCBlbmREYXRlIH0pLFxuICAgIH0sXG5cbiAgICB7XG4gICAgICBjYWxjdWxhdG9ySWQ6IFNreURhdGVSYW5nZUNhbGN1bGF0b3JJZC5BZnRlcixcbiAgICAgIHR5cGU6IFNreURhdGVSYW5nZUNhbGN1bGF0b3JUeXBlLkFmdGVyLFxuICAgICAgc2hvcnREZXNjcmlwdGlvblJlc291cmNlS2V5OiAnc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZm9ybWF0X2xhYmVsX2FmdGVyJyxcbiAgICAgIGdldFZhbHVlOiAoc3RhcnREYXRlLCBlbmREYXRlKSA9PiAoeyBzdGFydERhdGUsIGVuZERhdGUgfSksXG4gICAgfSxcblxuICAgIHtcbiAgICAgIGNhbGN1bGF0b3JJZDogU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvcklkLlNwZWNpZmljUmFuZ2UsXG4gICAgICB0eXBlOiBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9yVHlwZS5SYW5nZSxcbiAgICAgIHNob3J0RGVzY3JpcHRpb25SZXNvdXJjZUtleTpcbiAgICAgICAgJ3NreXV4X2RhdGVfcmFuZ2VfcGlja2VyX2Zvcm1hdF9sYWJlbF9zcGVjaWZpY19yYW5nZScsXG4gICAgICBnZXRWYWx1ZTogKHN0YXJ0RGF0ZSwgZW5kRGF0ZSkgPT4gKHsgc3RhcnREYXRlLCBlbmREYXRlIH0pLFxuICAgICAgdmFsaWRhdGU6ICh2YWx1ZSk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHZhbHVlICYmXG4gICAgICAgICAgdmFsdWUuc3RhcnREYXRlICYmXG4gICAgICAgICAgdmFsdWUuZW5kRGF0ZSAmJlxuICAgICAgICAgIHZhbHVlLnN0YXJ0RGF0ZSA+IHZhbHVlLmVuZERhdGVcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGVuZERhdGVCZWZvcmVTdGFydERhdGU6IHRydWUsXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH0sXG4gICAgfSxcblxuICAgIHtcbiAgICAgIGNhbGN1bGF0b3JJZDogU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvcklkLkxhc3RGaXNjYWxZZWFyLFxuICAgICAgdHlwZTogU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvclR5cGUuUmVsYXRpdmUsXG4gICAgICBzaG9ydERlc2NyaXB0aW9uUmVzb3VyY2VLZXk6XG4gICAgICAgICdza3l1eF9kYXRlX3JhbmdlX3BpY2tlcl9mb3JtYXRfbGFiZWxfbGFzdF9maXNjYWxfeWVhcicsXG4gICAgICBnZXRWYWx1ZTogKCkgPT4gU2t5RGF0ZVJhbmdlUmVsYXRpdmVWYWx1ZS5sYXN0RmlzY2FsWWVhcixcbiAgICB9LFxuXG4gICAge1xuICAgICAgY2FsY3VsYXRvcklkOiBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9ySWQuTGFzdE1vbnRoLFxuICAgICAgdHlwZTogU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvclR5cGUuUmVsYXRpdmUsXG4gICAgICBzaG9ydERlc2NyaXB0aW9uUmVzb3VyY2VLZXk6XG4gICAgICAgICdza3l1eF9kYXRlX3JhbmdlX3BpY2tlcl9mb3JtYXRfbGFiZWxfbGFzdF9tb250aCcsXG4gICAgICBnZXRWYWx1ZTogKCkgPT4gU2t5RGF0ZVJhbmdlUmVsYXRpdmVWYWx1ZS5sYXN0TW9udGgsXG4gICAgfSxcblxuICAgIHtcbiAgICAgIGNhbGN1bGF0b3JJZDogU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvcklkLkxhc3RRdWFydGVyLFxuICAgICAgdHlwZTogU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvclR5cGUuUmVsYXRpdmUsXG4gICAgICBzaG9ydERlc2NyaXB0aW9uUmVzb3VyY2VLZXk6XG4gICAgICAgICdza3l1eF9kYXRlX3JhbmdlX3BpY2tlcl9mb3JtYXRfbGFiZWxfbGFzdF9xdWFydGVyJyxcbiAgICAgIGdldFZhbHVlOiAoKSA9PiBTa3lEYXRlUmFuZ2VSZWxhdGl2ZVZhbHVlLmxhc3RRdWFydGVyLFxuICAgIH0sXG5cbiAgICB7XG4gICAgICBjYWxjdWxhdG9ySWQ6IFNreURhdGVSYW5nZUNhbGN1bGF0b3JJZC5MYXN0V2VlayxcbiAgICAgIHR5cGU6IFNreURhdGVSYW5nZUNhbGN1bGF0b3JUeXBlLlJlbGF0aXZlLFxuICAgICAgc2hvcnREZXNjcmlwdGlvblJlc291cmNlS2V5OlxuICAgICAgICAnc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZm9ybWF0X2xhYmVsX2xhc3Rfd2VlaycsXG4gICAgICBnZXRWYWx1ZTogKCkgPT4gU2t5RGF0ZVJhbmdlUmVsYXRpdmVWYWx1ZS5sYXN0V2VlayxcbiAgICB9LFxuXG4gICAge1xuICAgICAgY2FsY3VsYXRvcklkOiBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9ySWQuTGFzdENhbGVuZGFyWWVhcixcbiAgICAgIHR5cGU6IFNreURhdGVSYW5nZUNhbGN1bGF0b3JUeXBlLlJlbGF0aXZlLFxuICAgICAgc2hvcnREZXNjcmlwdGlvblJlc291cmNlS2V5OlxuICAgICAgICAnc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZm9ybWF0X2xhYmVsX2xhc3RfY2FsZW5kYXJfeWVhcicsXG4gICAgICBnZXRWYWx1ZTogKCkgPT4gU2t5RGF0ZVJhbmdlUmVsYXRpdmVWYWx1ZS5sYXN0Q2FsZW5kYXJZZWFyLFxuICAgIH0sXG5cbiAgICB7XG4gICAgICBjYWxjdWxhdG9ySWQ6IFNreURhdGVSYW5nZUNhbGN1bGF0b3JJZC5OZXh0RmlzY2FsWWVhcixcbiAgICAgIHR5cGU6IFNreURhdGVSYW5nZUNhbGN1bGF0b3JUeXBlLlJlbGF0aXZlLFxuICAgICAgc2hvcnREZXNjcmlwdGlvblJlc291cmNlS2V5OlxuICAgICAgICAnc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZm9ybWF0X2xhYmVsX25leHRfZmlzY2FsX3llYXInLFxuICAgICAgZ2V0VmFsdWU6ICgpID0+IFNreURhdGVSYW5nZVJlbGF0aXZlVmFsdWUubmV4dEZpc2NhbFllYXIsXG4gICAgfSxcblxuICAgIHtcbiAgICAgIGNhbGN1bGF0b3JJZDogU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvcklkLk5leHRNb250aCxcbiAgICAgIHR5cGU6IFNreURhdGVSYW5nZUNhbGN1bGF0b3JUeXBlLlJlbGF0aXZlLFxuICAgICAgc2hvcnREZXNjcmlwdGlvblJlc291cmNlS2V5OlxuICAgICAgICAnc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZm9ybWF0X2xhYmVsX25leHRfbW9udGgnLFxuICAgICAgZ2V0VmFsdWU6ICgpID0+IFNreURhdGVSYW5nZVJlbGF0aXZlVmFsdWUubmV4dE1vbnRoLFxuICAgIH0sXG5cbiAgICB7XG4gICAgICBjYWxjdWxhdG9ySWQ6IFNreURhdGVSYW5nZUNhbGN1bGF0b3JJZC5OZXh0UXVhcnRlcixcbiAgICAgIHR5cGU6IFNreURhdGVSYW5nZUNhbGN1bGF0b3JUeXBlLlJlbGF0aXZlLFxuICAgICAgc2hvcnREZXNjcmlwdGlvblJlc291cmNlS2V5OlxuICAgICAgICAnc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZm9ybWF0X2xhYmVsX25leHRfcXVhcnRlcicsXG4gICAgICBnZXRWYWx1ZTogKCkgPT4gU2t5RGF0ZVJhbmdlUmVsYXRpdmVWYWx1ZS5uZXh0UXVhcnRlcixcbiAgICB9LFxuXG4gICAge1xuICAgICAgY2FsY3VsYXRvcklkOiBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9ySWQuTmV4dFdlZWssXG4gICAgICB0eXBlOiBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9yVHlwZS5SZWxhdGl2ZSxcbiAgICAgIHNob3J0RGVzY3JpcHRpb25SZXNvdXJjZUtleTpcbiAgICAgICAgJ3NreXV4X2RhdGVfcmFuZ2VfcGlja2VyX2Zvcm1hdF9sYWJlbF9uZXh0X3dlZWsnLFxuICAgICAgZ2V0VmFsdWU6ICgpID0+IFNreURhdGVSYW5nZVJlbGF0aXZlVmFsdWUubmV4dFdlZWssXG4gICAgfSxcblxuICAgIHtcbiAgICAgIGNhbGN1bGF0b3JJZDogU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvcklkLk5leHRDYWxlbmRhclllYXIsXG4gICAgICB0eXBlOiBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9yVHlwZS5SZWxhdGl2ZSxcbiAgICAgIHNob3J0RGVzY3JpcHRpb25SZXNvdXJjZUtleTpcbiAgICAgICAgJ3NreXV4X2RhdGVfcmFuZ2VfcGlja2VyX2Zvcm1hdF9sYWJlbF9uZXh0X2NhbGVuZGFyX3llYXInLFxuICAgICAgZ2V0VmFsdWU6ICgpID0+IFNreURhdGVSYW5nZVJlbGF0aXZlVmFsdWUubmV4dENhbGVuZGFyWWVhcixcbiAgICB9LFxuXG4gICAge1xuICAgICAgY2FsY3VsYXRvcklkOiBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9ySWQuVGhpc0Zpc2NhbFllYXIsXG4gICAgICB0eXBlOiBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9yVHlwZS5SZWxhdGl2ZSxcbiAgICAgIHNob3J0RGVzY3JpcHRpb25SZXNvdXJjZUtleTpcbiAgICAgICAgJ3NreXV4X2RhdGVfcmFuZ2VfcGlja2VyX2Zvcm1hdF9sYWJlbF90aGlzX2Zpc2NhbF95ZWFyJyxcbiAgICAgIGdldFZhbHVlOiAoKSA9PiBTa3lEYXRlUmFuZ2VSZWxhdGl2ZVZhbHVlLnRoaXNGaXNjYWxZZWFyLFxuICAgIH0sXG5cbiAgICB7XG4gICAgICBjYWxjdWxhdG9ySWQ6IFNreURhdGVSYW5nZUNhbGN1bGF0b3JJZC5UaGlzTW9udGgsXG4gICAgICB0eXBlOiBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9yVHlwZS5SZWxhdGl2ZSxcbiAgICAgIHNob3J0RGVzY3JpcHRpb25SZXNvdXJjZUtleTpcbiAgICAgICAgJ3NreXV4X2RhdGVfcmFuZ2VfcGlja2VyX2Zvcm1hdF9sYWJlbF90aGlzX21vbnRoJyxcbiAgICAgIGdldFZhbHVlOiAoKSA9PiBTa3lEYXRlUmFuZ2VSZWxhdGl2ZVZhbHVlLnRoaXNNb250aCxcbiAgICB9LFxuXG4gICAge1xuICAgICAgY2FsY3VsYXRvcklkOiBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9ySWQuVGhpc1F1YXJ0ZXIsXG4gICAgICB0eXBlOiBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9yVHlwZS5SZWxhdGl2ZSxcbiAgICAgIHNob3J0RGVzY3JpcHRpb25SZXNvdXJjZUtleTpcbiAgICAgICAgJ3NreXV4X2RhdGVfcmFuZ2VfcGlja2VyX2Zvcm1hdF9sYWJlbF90aGlzX3F1YXJ0ZXInLFxuICAgICAgZ2V0VmFsdWU6ICgpID0+IFNreURhdGVSYW5nZVJlbGF0aXZlVmFsdWUudGhpc1F1YXJ0ZXIsXG4gICAgfSxcblxuICAgIHtcbiAgICAgIGNhbGN1bGF0b3JJZDogU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvcklkLlRoaXNXZWVrLFxuICAgICAgdHlwZTogU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvclR5cGUuUmVsYXRpdmUsXG4gICAgICBzaG9ydERlc2NyaXB0aW9uUmVzb3VyY2VLZXk6XG4gICAgICAgICdza3l1eF9kYXRlX3JhbmdlX3BpY2tlcl9mb3JtYXRfbGFiZWxfdGhpc193ZWVrJyxcbiAgICAgIGdldFZhbHVlOiAoKSA9PiBTa3lEYXRlUmFuZ2VSZWxhdGl2ZVZhbHVlLnRoaXNXZWVrLFxuICAgIH0sXG5cbiAgICB7XG4gICAgICBjYWxjdWxhdG9ySWQ6IFNreURhdGVSYW5nZUNhbGN1bGF0b3JJZC5UaGlzQ2FsZW5kYXJZZWFyLFxuICAgICAgdHlwZTogU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvclR5cGUuUmVsYXRpdmUsXG4gICAgICBzaG9ydERlc2NyaXB0aW9uUmVzb3VyY2VLZXk6XG4gICAgICAgICdza3l1eF9kYXRlX3JhbmdlX3BpY2tlcl9mb3JtYXRfbGFiZWxfdGhpc19jYWxlbmRhcl95ZWFyJyxcbiAgICAgIGdldFZhbHVlOiAoKSA9PiBTa3lEYXRlUmFuZ2VSZWxhdGl2ZVZhbHVlLnRoaXNDYWxlbmRhclllYXIsXG4gICAgfSxcblxuICAgIHtcbiAgICAgIGNhbGN1bGF0b3JJZDogU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvcklkLlRvZGF5LFxuICAgICAgdHlwZTogU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvclR5cGUuUmVsYXRpdmUsXG4gICAgICBzaG9ydERlc2NyaXB0aW9uUmVzb3VyY2VLZXk6ICdza3l1eF9kYXRlX3JhbmdlX3BpY2tlcl9mb3JtYXRfbGFiZWxfdG9kYXknLFxuICAgICAgZ2V0VmFsdWU6ICgpID0+IFNreURhdGVSYW5nZVJlbGF0aXZlVmFsdWUudG9kYXksXG4gICAgfSxcblxuICAgIHtcbiAgICAgIGNhbGN1bGF0b3JJZDogU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvcklkLlRvbW9ycm93LFxuICAgICAgdHlwZTogU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvclR5cGUuUmVsYXRpdmUsXG4gICAgICBzaG9ydERlc2NyaXB0aW9uUmVzb3VyY2VLZXk6XG4gICAgICAgICdza3l1eF9kYXRlX3JhbmdlX3BpY2tlcl9mb3JtYXRfbGFiZWxfdG9tb3Jyb3cnLFxuICAgICAgZ2V0VmFsdWU6ICgpID0+IFNreURhdGVSYW5nZVJlbGF0aXZlVmFsdWUudG9tb3Jyb3csXG4gICAgfSxcblxuICAgIHtcbiAgICAgIGNhbGN1bGF0b3JJZDogU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvcklkLlllc3RlcmRheSxcbiAgICAgIHR5cGU6IFNreURhdGVSYW5nZUNhbGN1bGF0b3JUeXBlLlJlbGF0aXZlLFxuICAgICAgc2hvcnREZXNjcmlwdGlvblJlc291cmNlS2V5OlxuICAgICAgICAnc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZm9ybWF0X2xhYmVsX3llc3RlcmRheScsXG4gICAgICBnZXRWYWx1ZTogKCkgPT4gU2t5RGF0ZVJhbmdlUmVsYXRpdmVWYWx1ZS55ZXN0ZXJkYXksXG4gICAgfSxcbiAgXTtcbiJdfQ==","import { Injectable, inject } from '@angular/core';\nimport { SkyLibResourcesService } from '@skyux/i18n';\nimport { SkyDateRangeCalculator } from './types/date-range-calculator';\nimport { SKY_DEFAULT_CALCULATOR_CONFIGS } from './types/date-range-default-calculator-configs';\nimport * as i0 from \"@angular/core\";\n// Start the count higher than the number of available values\n// provided in the SkyDateRangeCalculatorId enum.\nlet lastId = 1000;\n/**\n * Creates and manages `SkyDateRangeCalculator` instances.\n */\nexport class SkyDateRangeService {\n #libResourcesSvc = inject(SkyLibResourcesService);\n get calculators() {\n return this.#calculators;\n }\n #calculators = this.#createDefaultCalculators();\n /**\n * Creates a custom date range calculator.\n * @param config The calculator config.\n */\n createCalculator(config) {\n const newId = lastId++;\n const calculator = new SkyDateRangeCalculator(newId, config, this.#libResourcesSvc);\n this.#calculators.push(calculator);\n return calculator;\n }\n /**\n * Returns calculators from an array of calculator IDs.\n * @param calculatorIds The array of calculator IDs.\n */\n filterCalculators(calculatorIds) {\n const filtered = [];\n for (const calculatorId of calculatorIds) {\n const found = this.#calculators.find((c) => c.calculatorId === calculatorId);\n if (found) {\n filtered.push(found);\n }\n }\n return filtered;\n }\n /**\n * Returns calculators from an array of calculator IDs.\n * @param ids The array of calculator IDs.\n * @deprecated Call `filterCalculators()` instead.\n */\n getCalculators(ids) {\n const promises = ids.map((id) => {\n return this.getCalculatorById(id);\n });\n return Promise.all(promises);\n }\n /**\n * Returns a calculator from a calculator ID.\n * @param id The calculator ID.\n * @deprecated Call `filterCalculators()` instead.\n */\n getCalculatorById(id) {\n const calculatorId = +id;\n const found = this.#calculators.find((calculator) => {\n return calculator.calculatorId === calculatorId;\n });\n return new Promise((resolve, reject) => {\n if (!found) {\n reject(new Error(`A calculator with the ID ${id} was not found.`));\n return;\n }\n resolve(found);\n });\n }\n /**\n * Returns default date range calculators with unresolved resources strings.\n */\n #createDefaultCalculators() {\n const calculators = [];\n for (const defaultConfig of SKY_DEFAULT_CALCULATOR_CONFIGS) {\n calculators.push(new SkyDateRangeCalculator(defaultConfig.calculatorId, {\n getValue: defaultConfig.getValue,\n validate: defaultConfig.validate,\n shortDescription: '',\n type: defaultConfig.type,\n }, this.#libResourcesSvc, defaultConfig.shortDescriptionResourceKey));\n }\n return calculators;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDateRangeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDateRangeService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDateRangeService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2RhdGV0aW1lL3NyYy9saWIvbW9kdWxlcy9kYXRlLXJhbmdlLXBpY2tlci9kYXRlLXJhbmdlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXJELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBR3ZFLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLCtDQUErQyxDQUFDOztBQUUvRiw2REFBNkQ7QUFDN0QsaURBQWlEO0FBQ2pELElBQUksTUFBTSxHQUFHLElBQUksQ0FBQztBQUVsQjs7R0FFRztBQUlILE1BQU0sT0FBTyxtQkFBbUI7SUFDckIsZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQUM7SUFFM0QsSUFBVyxXQUFXO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBRUQsWUFBWSxHQUFHLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO0lBRWhEOzs7T0FHRztJQUNJLGdCQUFnQixDQUNyQixNQUFvQztRQUVwQyxNQUFNLEtBQUssR0FBRyxNQUFNLEVBQUUsQ0FBQztRQUN2QixNQUFNLFVBQVUsR0FBRyxJQUFJLHNCQUFzQixDQUMzQyxLQUFLLEVBQ0wsTUFBTSxFQUNOLElBQUksQ0FBQyxnQkFBZ0IsQ0FDdEIsQ0FBQztRQUVGLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRW5DLE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7SUFFRDs7O09BR0c7SUFDSSxpQkFBaUIsQ0FDdEIsYUFBeUM7UUFFekMsTUFBTSxRQUFRLEdBQTZCLEVBQUUsQ0FBQztRQUU5QyxLQUFLLE1BQU0sWUFBWSxJQUFJLGFBQWEsRUFBRSxDQUFDO1lBQ3pDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUNsQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFlBQVksS0FBSyxZQUFZLENBQ3ZDLENBQUM7WUFFRixJQUFJLEtBQUssRUFBRSxDQUFDO2dCQUNWLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdkIsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLGNBQWMsQ0FDbkIsR0FBK0I7UUFFL0IsTUFBTSxRQUFRLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFO1lBQzlCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksaUJBQWlCLENBQ3RCLEVBQTRCO1FBRTVCLE1BQU0sWUFBWSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBRXpCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUU7WUFDbEQsT0FBTyxVQUFVLENBQUMsWUFBWSxLQUFLLFlBQVksQ0FBQztRQUNsRCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDckMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNYLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyw0QkFBNEIsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7Z0JBQ25FLE9BQU87WUFDVCxDQUFDO1lBRUQsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0gseUJBQXlCO1FBQ3ZCLE1BQU0sV0FBVyxHQUE2QixFQUFFLENBQUM7UUFFakQsS0FBSyxNQUFNLGFBQWEsSUFBSSw4QkFBOEIsRUFBRSxDQUFDO1lBQzNELFdBQVcsQ0FBQyxJQUFJLENBQ2QsSUFBSSxzQkFBc0IsQ0FDeEIsYUFBYSxDQUFDLFlBQVksRUFDMUI7Z0JBQ0UsUUFBUSxFQUFFLGFBQWEsQ0FBQyxRQUFRO2dCQUNoQyxRQUFRLEVBQUUsYUFBYSxDQUFDLFFBQVE7Z0JBQ2hDLGdCQUFnQixFQUFFLEVBQUU7Z0JBQ3BCLElBQUksRUFBRSxhQUFhLENBQUMsSUFBSTthQUN6QixFQUNELElBQUksQ0FBQyxnQkFBZ0IsRUFDckIsYUFBYSxDQUFDLDJCQUEyQixDQUMxQyxDQUNGLENBQUM7UUFDSixDQUFDO1FBRUQsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQzs4R0FoSFUsbUJBQW1CO2tIQUFuQixtQkFBbUIsY0FGbEIsTUFBTTs7MkZBRVAsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2t5TGliUmVzb3VyY2VzU2VydmljZSB9IGZyb20gJ0Bza3l1eC9pMThuJztcblxuaW1wb3J0IHsgU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvciB9IGZyb20gJy4vdHlwZXMvZGF0ZS1yYW5nZS1jYWxjdWxhdG9yJztcbmltcG9ydCB7IFNreURhdGVSYW5nZUNhbGN1bGF0b3JDb25maWcgfSBmcm9tICcuL3R5cGVzL2RhdGUtcmFuZ2UtY2FsY3VsYXRvci1jb25maWcnO1xuaW1wb3J0IHsgU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvcklkIH0gZnJvbSAnLi90eXBlcy9kYXRlLXJhbmdlLWNhbGN1bGF0b3ItaWQnO1xuaW1wb3J0IHsgU0tZX0RFRkFVTFRfQ0FMQ1VMQVRPUl9DT05GSUdTIH0gZnJvbSAnLi90eXBlcy9kYXRlLXJhbmdlLWRlZmF1bHQtY2FsY3VsYXRvci1jb25maWdzJztcblxuLy8gU3RhcnQgdGhlIGNvdW50IGhpZ2hlciB0aGFuIHRoZSBudW1iZXIgb2YgYXZhaWxhYmxlIHZhbHVlc1xuLy8gcHJvdmlkZWQgaW4gdGhlIFNreURhdGVSYW5nZUNhbGN1bGF0b3JJZCBlbnVtLlxubGV0IGxhc3RJZCA9IDEwMDA7XG5cbi8qKlxuICogQ3JlYXRlcyBhbmQgbWFuYWdlcyBgU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvcmAgaW5zdGFuY2VzLlxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgU2t5RGF0ZVJhbmdlU2VydmljZSB7XG4gIHJlYWRvbmx5ICNsaWJSZXNvdXJjZXNTdmMgPSBpbmplY3QoU2t5TGliUmVzb3VyY2VzU2VydmljZSk7XG5cbiAgcHVibGljIGdldCBjYWxjdWxhdG9ycygpOiBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9yW10ge1xuICAgIHJldHVybiB0aGlzLiNjYWxjdWxhdG9ycztcbiAgfVxuXG4gICNjYWxjdWxhdG9ycyA9IHRoaXMuI2NyZWF0ZURlZmF1bHRDYWxjdWxhdG9ycygpO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgY3VzdG9tIGRhdGUgcmFuZ2UgY2FsY3VsYXRvci5cbiAgICogQHBhcmFtIGNvbmZpZyBUaGUgY2FsY3VsYXRvciBjb25maWcuXG4gICAqL1xuICBwdWJsaWMgY3JlYXRlQ2FsY3VsYXRvcihcbiAgICBjb25maWc6IFNreURhdGVSYW5nZUNhbGN1bGF0b3JDb25maWcsXG4gICk6IFNreURhdGVSYW5nZUNhbGN1bGF0b3Ige1xuICAgIGNvbnN0IG5ld0lkID0gbGFzdElkKys7XG4gICAgY29uc3QgY2FsY3VsYXRvciA9IG5ldyBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9yKFxuICAgICAgbmV3SWQsXG4gICAgICBjb25maWcsXG4gICAgICB0aGlzLiNsaWJSZXNvdXJjZXNTdmMsXG4gICAgKTtcblxuICAgIHRoaXMuI2NhbGN1bGF0b3JzLnB1c2goY2FsY3VsYXRvcik7XG5cbiAgICByZXR1cm4gY2FsY3VsYXRvcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGNhbGN1bGF0b3JzIGZyb20gYW4gYXJyYXkgb2YgY2FsY3VsYXRvciBJRHMuXG4gICAqIEBwYXJhbSBjYWxjdWxhdG9ySWRzIFRoZSBhcnJheSBvZiBjYWxjdWxhdG9yIElEcy5cbiAgICovXG4gIHB1YmxpYyBmaWx0ZXJDYWxjdWxhdG9ycyhcbiAgICBjYWxjdWxhdG9ySWRzOiBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9ySWRbXSxcbiAgKTogU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvcltdIHtcbiAgICBjb25zdCBmaWx0ZXJlZDogU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvcltdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IGNhbGN1bGF0b3JJZCBvZiBjYWxjdWxhdG9ySWRzKSB7XG4gICAgICBjb25zdCBmb3VuZCA9IHRoaXMuI2NhbGN1bGF0b3JzLmZpbmQoXG4gICAgICAgIChjKSA9PiBjLmNhbGN1bGF0b3JJZCA9PT0gY2FsY3VsYXRvcklkLFxuICAgICAgKTtcblxuICAgICAgaWYgKGZvdW5kKSB7XG4gICAgICAgIGZpbHRlcmVkLnB1c2goZm91bmQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmaWx0ZXJlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGNhbGN1bGF0b3JzIGZyb20gYW4gYXJyYXkgb2YgY2FsY3VsYXRvciBJRHMuXG4gICAqIEBwYXJhbSBpZHMgVGhlIGFycmF5IG9mIGNhbGN1bGF0b3IgSURzLlxuICAgKiBAZGVwcmVjYXRlZCBDYWxsIGBmaWx0ZXJDYWxjdWxhdG9ycygpYCBpbnN0ZWFkLlxuICAgKi9cbiAgcHVibGljIGdldENhbGN1bGF0b3JzKFxuICAgIGlkczogU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvcklkW10sXG4gICk6IFByb21pc2U8U2t5RGF0ZVJhbmdlQ2FsY3VsYXRvcltdPiB7XG4gICAgY29uc3QgcHJvbWlzZXMgPSBpZHMubWFwKChpZCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0Q2FsY3VsYXRvckJ5SWQoaWQpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIFByb21pc2UuYWxsKHByb21pc2VzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgY2FsY3VsYXRvciBmcm9tIGEgY2FsY3VsYXRvciBJRC5cbiAgICogQHBhcmFtIGlkIFRoZSBjYWxjdWxhdG9yIElELlxuICAgKiBAZGVwcmVjYXRlZCBDYWxsIGBmaWx0ZXJDYWxjdWxhdG9ycygpYCBpbnN0ZWFkLlxuICAgKi9cbiAgcHVibGljIGdldENhbGN1bGF0b3JCeUlkKFxuICAgIGlkOiBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9ySWQsXG4gICk6IFByb21pc2U8U2t5RGF0ZVJhbmdlQ2FsY3VsYXRvcj4ge1xuICAgIGNvbnN0IGNhbGN1bGF0b3JJZCA9ICtpZDtcblxuICAgIGNvbnN0IGZvdW5kID0gdGhpcy4jY2FsY3VsYXRvcnMuZmluZCgoY2FsY3VsYXRvcikgPT4ge1xuICAgICAgcmV0dXJuIGNhbGN1bGF0b3IuY2FsY3VsYXRvcklkID09PSBjYWxjdWxhdG9ySWQ7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgaWYgKCFmb3VuZCkge1xuICAgICAgICByZWplY3QobmV3IEVycm9yKGBBIGNhbGN1bGF0b3Igd2l0aCB0aGUgSUQgJHtpZH0gd2FzIG5vdCBmb3VuZC5gKSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgcmVzb2x2ZShmb3VuZCk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBkZWZhdWx0IGRhdGUgcmFuZ2UgY2FsY3VsYXRvcnMgd2l0aCB1bnJlc29sdmVkIHJlc291cmNlcyBzdHJpbmdzLlxuICAgKi9cbiAgI2NyZWF0ZURlZmF1bHRDYWxjdWxhdG9ycygpOiBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9yW10ge1xuICAgIGNvbnN0IGNhbGN1bGF0b3JzOiBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9yW10gPSBbXTtcblxuICAgIGZvciAoY29uc3QgZGVmYXVsdENvbmZpZyBvZiBTS1lfREVGQVVMVF9DQUxDVUxBVE9SX0NPTkZJR1MpIHtcbiAgICAgIGNhbGN1bGF0b3JzLnB1c2goXG4gICAgICAgIG5ldyBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9yKFxuICAgICAgICAgIGRlZmF1bHRDb25maWcuY2FsY3VsYXRvcklkLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGdldFZhbHVlOiBkZWZhdWx0Q29uZmlnLmdldFZhbHVlLFxuICAgICAgICAgICAgdmFsaWRhdGU6IGRlZmF1bHRDb25maWcudmFsaWRhdGUsXG4gICAgICAgICAgICBzaG9ydERlc2NyaXB0aW9uOiAnJyxcbiAgICAgICAgICAgIHR5cGU6IGRlZmF1bHRDb25maWcudHlwZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHRoaXMuI2xpYlJlc291cmNlc1N2YyxcbiAgICAgICAgICBkZWZhdWx0Q29uZmlnLnNob3J0RGVzY3JpcHRpb25SZXNvdXJjZUtleSxcbiAgICAgICAgKSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNhbGN1bGF0b3JzO1xuICB9XG59XG4iXX0=","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, DestroyRef, ElementRef, HostBinding, Injector, Input, booleanAttribute, computed, inject, runInInjectionContext, signal, viewChildren, } from '@angular/core';\nimport { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';\nimport { FormBuilder, FormControl, FormsModule, NG_VALIDATORS, NG_VALUE_ACCESSOR, NgControl, ReactiveFormsModule, StatusChangeEvent, TouchedChangeEvent, } from '@angular/forms';\nimport { SkyLogService } from '@skyux/core';\nimport { SKY_FORM_ERRORS_ENABLED, SkyFormErrorsModule, SkyInputBoxModule, } from '@skyux/forms';\nimport { distinctUntilChanged, filter, map } from 'rxjs';\nimport { SkyDatepickerComponent } from '../datepicker/datepicker.component';\nimport { SkyDatepickerModule } from '../datepicker/datepicker.module';\nimport { SkyDatetimeResourcesModule } from '../shared/sky-datetime-resources.module';\nimport { SkyDateRangePickerEndDateResourceKeyPipe } from './date-range-picker-end-date-resource-key.pipe';\nimport { SkyDateRangePickerStartDateResourceKeyPipe } from './date-range-picker-start-date-resource-key.pipe';\nimport { SkyDateRangeService } from './date-range.service';\nimport { SkyDateRangeCalculatorType } from './types/date-range-calculator-type';\nimport { SKY_DEFAULT_CALCULATOR_IDS } from './types/date-range-default-calculator-configs';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nimport * as i2 from \"@angular/forms\";\nimport * as i3 from \"../datepicker/datepicker.component\";\nimport * as i4 from \"../datepicker/datepicker-input.directive\";\nimport * as i5 from \"@skyux/i18n\";\nimport * as i6 from \"@skyux/forms\";\nfunction areDateRangesEqual(rangeA, rangeB) {\n return (!!rangeA &&\n !!rangeB &&\n rangeA.calculatorId === rangeB.calculatorId &&\n areDatesEqual(rangeA.startDate, rangeB.startDate) &&\n areDatesEqual(rangeA.endDate, rangeB.endDate));\n}\nfunction areDatesEqual(a, b) {\n if (typeof a !== typeof b) {\n return false;\n }\n if (!a && !b) {\n return true;\n }\n if (typeof a === 'string' && a === b) {\n return true;\n }\n return a instanceof Date && b instanceof Date && a.getTime() === b.getTime();\n}\nfunction isNullOrUndefined(value) {\n return value === undefined || value === null;\n}\nfunction isPartialValue(value) {\n return (isNullOrUndefined(value) ||\n isNullOrUndefined(value.calculatorId) ||\n !('endDate' in value) ||\n !('startDate' in value));\n}\nexport class SkyDateRangePickerComponent {\n constructor() {\n this.#dateRangeSvc = inject(SkyDateRangeService);\n this.#destroyRef = inject(DestroyRef);\n this.#elementRef = inject(ElementRef);\n this.#injector = inject(Injector);\n this.#logger = inject(SkyLogService);\n /**\n * Whether the date range picker is stacked on another form component. When specified, the appropriate\n * vertical spacing is automatically added to the date range picker.\n */\n this.stacked = false;\n this.calculators = this.#dateRangeSvc.calculators;\n this.datepickers = viewChildren(SkyDatepickerComponent);\n this.selectedCalculator = this.calculators[0];\n this.showEndDatePicker = signal(false);\n this.showStartDatePicker = signal(false);\n this.#_calculatorIds = SKY_DEFAULT_CALCULATOR_IDS;\n this.#_value = this.selectedCalculator.getValue();\n this.#calculatorIdControl = new FormControl(this.#getValue().calculatorId, { nonNullable: true });\n this.#calculatorIdInvalid = this.#createStatusChangeSignal(this.#calculatorIdControl);\n this.#calculatorIdTouched = this.#createTouchedChangeSignal(this.#calculatorIdControl);\n this.#endDateControl = new FormControl(this.#getValue().endDate);\n this.#endDateInvalid = this.#createStatusChangeSignal(this.#endDateControl);\n this.#endDateTouched = this.#createTouchedChangeSignal(this.#endDateControl);\n this.#startDateControl = new FormControl(this.#getValue().startDate);\n this.#startDateInvalid = this.#createStatusChangeSignal(this.#startDateControl);\n this.#startDateTouched = this.#createTouchedChangeSignal(this.#startDateControl);\n this.formGroup = inject(FormBuilder).group({\n calculatorId: this.#calculatorIdControl,\n startDate: this.#startDateControl,\n endDate: this.#endDateControl,\n });\n this.calculatorIdHasErrors = computed(() => {\n const touched = this.#calculatorIdTouched();\n const invalid = this.#calculatorIdInvalid() || this.#hostHasCustomError?.();\n return touched && invalid;\n });\n this.endDateHasErrors = computed(() => {\n const calculatorIdHasErrors = this.calculatorIdHasErrors();\n const touched = this.#endDateTouched();\n const invalid = this.#endDateInvalid();\n return calculatorIdHasErrors || (touched && invalid);\n });\n this.startDateHasErrors = computed(() => {\n const calculatorIdHasErrors = this.calculatorIdHasErrors();\n const touched = this.#startDateTouched();\n const invalid = this.#startDateInvalid();\n return calculatorIdHasErrors || (touched && invalid);\n });\n }\n #dateRangeSvc;\n #destroyRef;\n #elementRef;\n #injector;\n #logger;\n /**\n * IDs for the date range options to include in the picker's dropdown.\n * The options specify calculator objects that return two `Date` objects to represent date ranges.\n * By default, this property includes all `SkyDateRangeCalculatorId` values.\n */\n set calculatorIds(calculatorIds) {\n const currentCalculatorId = this.#getValue().calculatorId;\n this.#_calculatorIds = calculatorIds ?? SKY_DEFAULT_CALCULATOR_IDS;\n this.calculators = this.#dateRangeSvc.filterCalculators(this.#_calculatorIds);\n // If the currently selected calculator isn't available anymore,\n // select the first calculator in the new array.\n if (!this.#_calculatorIds.includes(currentCalculatorId)) {\n this.#setValue({ calculatorId: this.calculatorIds[0] });\n }\n }\n get calculatorIds() {\n return this.#_calculatorIds;\n }\n /**\n * Whether to disable the date range picker on template-driven forms. Don't use\n * this input on reactive forms because they may overwrite the input or leave\n * the control out of sync. To set the disabled state on reactive forms,\n * use the `FormControl` instead.\n * @default false\n */\n set disabled(value) {\n if (value) {\n this.formGroup.disable();\n }\n else {\n this.formGroup.enable();\n }\n }\n /**\n * The label for the date range picker.\n * @deprecated Use the `labelText` input instead.\n */\n set label(value) {\n this.#_label = value;\n if (value) {\n this.#logger.deprecated('SkyDateRangePickerComponent.label', {\n deprecationMajorVersion: 10,\n replacementRecommendation: 'Use the `labelText` input instead.',\n });\n }\n }\n get label() {\n return this.#_label;\n }\n #_calculatorIds;\n #_label;\n #_value;\n #hostHasCustomError;\n #notifyChange;\n #notifyTouched;\n #calculatorIdControl;\n #calculatorIdInvalid;\n #calculatorIdTouched;\n #endDateControl;\n #endDateInvalid;\n #endDateTouched;\n #startDateControl;\n #startDateInvalid;\n #startDateTouched;\n ngAfterViewInit() {\n this.hostControl = this.#injector.get(NgControl, null, {\n optional: true,\n self: true,\n })?.control;\n runInInjectionContext(this.#injector, () => {\n if (this.hostControl) {\n this.#hostHasCustomError = this.#createHostCustomErrorChangeSignal(this.hostControl);\n }\n });\n // Set a default value on the control if it's undefined on init.\n // We need to use setTimeout to avoid interfering with the first\n // validation cycle.\n if (isPartialValue(this.hostControl?.value)) {\n setTimeout(() => {\n this.hostControl?.setValue(this.#getValue(), {\n emitEvent: false,\n });\n });\n }\n // If the datepickers' statuses change, we want to retrigger the host\n // control's validation so that their errors are reflected back to the host.\n this.formGroup.events\n .pipe(filter((evt) => evt instanceof StatusChangeEvent), map((evt) => evt.status), distinctUntilChanged(), takeUntilDestroyed(this.#destroyRef))\n .subscribe(() => {\n this.hostControl?.updateValueAndValidity({\n emitEvent: false,\n onlySelf: true,\n });\n });\n // Mark all fields as touched if the host control is touched.\n this.hostControl?.events\n .pipe(filter((evt) => evt instanceof TouchedChangeEvent), map((evt) => evt.touched), distinctUntilChanged(), takeUntilDestroyed(this.#destroyRef))\n .subscribe(() => {\n this.formGroup.markAllAsTouched();\n });\n }\n // Implemented as part of ControlValueAccessor.\n registerOnChange(fn) {\n this.#notifyChange = fn;\n }\n // Implemented as part of ControlValueAccessor.\n registerOnTouched(fn) {\n this.#notifyTouched = fn;\n }\n // Implemented as part of ControlValueAccessor.\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n }\n // Implemented as part of Validator.\n validate(control) {\n let errors = null;\n const calculatorErrors = this.selectedCalculator.validate(control.value);\n const startDateErrors = this.#startDateControl.errors;\n const endDateErrors = this.#endDateControl.errors;\n if (calculatorErrors) {\n errors = {\n skyDateRange: {\n calculatorId: this.#getValue().calculatorId,\n errors: calculatorErrors,\n },\n };\n }\n // Set calculator errors on the select so that they appear beneath it.\n this.#calculatorIdControl.setErrors(errors);\n if (this.showStartDatePicker() && startDateErrors) {\n errors ||= {};\n errors = { ...errors, ...startDateErrors };\n }\n if (this.showEndDatePicker() && endDateErrors) {\n errors ||= {};\n errors = { ...errors, ...endDateErrors };\n }\n return errors;\n }\n // Implemented as part of ControlValueAccessor.\n // The date range picker always has a value, so if the consumer passes in a\n // partial value (via `patchValue`) or null, we need to update the host control's\n // value with the complete value after it's been modified.\n writeValue(value) {\n this.#patchValue(value);\n // Update the host control if it is set to a partial or null value.\n if (isPartialValue(value)) {\n this.hostControl?.setValue(this.#getValue(), {\n emitEvent: false,\n onlySelf: true,\n });\n }\n }\n /**\n * Fires when a user changes the selected calculator ID.\n */\n onCalculatorIdChange() {\n // Reset the value when the calculator ID changes.\n this.#setValue({ calculatorId: +this.#calculatorIdControl.value });\n this.onDateChange();\n }\n /**\n * Fires when a user interacts with a date range picker.\n */\n onDateChange() {\n // Wait until the form control is updated before retrieving its value.\n setTimeout(() => {\n this.#notifyChange?.(this.formGroup.getRawValue());\n });\n }\n /**\n * Fires when the date range picker loses focus.\n */\n onFocusout({ relatedTarget }) {\n if (relatedTarget &&\n !this.#elementRef.nativeElement.contains(relatedTarget) &&\n !this.datepickers().some((picker) => picker.containsTarget(relatedTarget))) {\n this.#notifyTouched?.();\n }\n }\n #getCalculator(calculatorId) {\n const found = this.calculators.find((c) => c.calculatorId === calculatorId);\n /*istanbul ignore if: safety check*/\n if (!found) {\n throw new Error(`A date range calculator with ID (${calculatorId}) could not be found.`);\n }\n return found;\n }\n #getValue() {\n // Important! Return a clone to avoid changing the properties by reference.\n return { ...this.#_value };\n }\n #patchValue(partialValue) {\n if (isNullOrUndefined(partialValue)) {\n this.#setValue(null);\n return;\n }\n const oldValue = this.#getValue();\n // If the new ID is distinct, erase the old start and end dates because\n // they're no longer applicable.\n if (!isNullOrUndefined(partialValue.calculatorId) &&\n oldValue.calculatorId !== partialValue.calculatorId) {\n delete oldValue.endDate;\n delete oldValue.startDate;\n }\n const value = {\n ...oldValue,\n ...partialValue,\n };\n this.#setValue(value);\n }\n /**\n * Sets the value to be used by the date range picker form control.\n */\n #setValue(value) {\n const oldValue = this.#getValue();\n const isValueEmpty = !value || isNullOrUndefined(value.calculatorId);\n const valueOrDefault = isValueEmpty\n ? this.calculators[0].getValue()\n : {\n ...this.#getCalculator(value.calculatorId).getValue(),\n ...value,\n };\n // Ensure falsy values are set to null.\n valueOrDefault.endDate = valueOrDefault.endDate || null;\n valueOrDefault.startDate = valueOrDefault.startDate || null;\n if (!areDateRangesEqual(oldValue, valueOrDefault)) {\n this.#_value = valueOrDefault;\n if (oldValue.calculatorId !== valueOrDefault.calculatorId) {\n this.selectedCalculator = this.#getCalculator(valueOrDefault.calculatorId);\n this.#updatePickerVisibility(this.selectedCalculator);\n }\n this.formGroup.patchValue(valueOrDefault);\n }\n }\n #updatePickerVisibility(calculator) {\n let showEndDatePicker = false;\n let showStartDatePicker = false;\n switch (calculator.type) {\n case SkyDateRangeCalculatorType.Before:\n showEndDatePicker = true;\n break;\n case SkyDateRangeCalculatorType.After:\n showStartDatePicker = true;\n break;\n case SkyDateRangeCalculatorType.Range:\n showEndDatePicker = true;\n showStartDatePicker = true;\n break;\n default:\n break;\n }\n this.showEndDatePicker.set(showEndDatePicker);\n this.showStartDatePicker.set(showStartDatePicker);\n }\n #createHostCustomErrorChangeSignal(control) {\n return toSignal(control.events.pipe(filter((evt) => evt instanceof StatusChangeEvent), map((evt) => {\n const errors = evt.source.errors ?? [];\n const knownErrors = ['required', 'skyDate'];\n return Object.keys(errors).some((error) => {\n return !knownErrors.includes(error);\n });\n })));\n }\n #createStatusChangeSignal(control) {\n return toSignal(control.events.pipe(filter((evt) => evt instanceof StatusChangeEvent), map((evt) => evt.status === 'INVALID'), takeUntilDestroyed(this.#destroyRef)));\n }\n #createTouchedChangeSignal(control) {\n return toSignal(control.events.pipe(filter((evt) => evt instanceof TouchedChangeEvent), map((evt) => evt.touched), takeUntilDestroyed(this.#destroyRef)));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDateRangePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.5\", type: SkyDateRangePickerComponent, isStandalone: true, selector: \"sky-date-range-picker\", inputs: { calculatorIds: \"calculatorIds\", dateFormat: \"dateFormat\", disabled: [\"disabled\", \"disabled\", booleanAttribute], helpPopoverContent: \"helpPopoverContent\", helpPopoverTitle: \"helpPopoverTitle\", hintText: \"hintText\", label: \"label\", labelText: \"labelText\", stacked: [\"stacked\", \"stacked\", booleanAttribute], helpKey: \"helpKey\" }, host: { listeners: { \"focusout\": \"onFocusout($event)\" }, properties: { \"class.sky-form-field-stacked\": \"this.stacked\" } }, providers: [\n {\n provide: NG_VALIDATORS,\n useExisting: SkyDateRangePickerComponent,\n multi: true,\n },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: SkyDateRangePickerComponent,\n multi: true,\n },\n { provide: SKY_FORM_ERRORS_ENABLED, useValue: true },\n ], viewQueries: [{ propertyName: \"datepickers\", predicate: SkyDatepickerComponent, descendants: true, isSignal: true }], ngImport: i0, template: \"<div class=\\\"sky-date-range-picker\\\" [formGroup]=\\\"formGroup\\\">\\n <div\\n class=\\\"sky-date-range-picker-form-group sky-date-range-picker-select-calculator\\\"\\n [ngClass]=\\\"{\\n 'sky-date-range-picker-last-input':\\n !showStartDatePicker() && !showEndDatePicker()\\n }\\\"\\n >\\n <sky-input-box\\n [hasErrors]=\\\"calculatorIdHasErrors()\\\"\\n [helpKey]=\\\"helpKey\\\"\\n [helpPopoverContent]=\\\"helpPopoverContent\\\"\\n [helpPopoverTitle]=\\\"helpPopoverTitle\\\"\\n [hintText]=\\\"hintText\\\"\\n [labelText]=\\\"\\n labelText ||\\n label ||\\n ('skyux_date_range_picker_default_label' | skyLibResources)\\n \\\"\\n >\\n <select formControlName=\\\"calculatorId\\\" (change)=\\\"onCalculatorIdChange()\\\">\\n @for (calculator of calculators; track calculator.calculatorId) {\\n <option [value]=\\\"calculator.calculatorId\\\">\\n {{ calculator.shortDescription$ | async }}\\n </option>\\n }\\n </select>\\n @if (\\n hostControl?.errors?.['skyDateRange']?.errors?.[\\n 'endDateBeforeStartDate'\\n ] && labelText\\n ) {\\n <sky-form-error\\n errorName=\\\"endDateBeforeStartDate\\\"\\n [errorText]=\\\"\\n 'skyux_date_range_picker_end_date_before_start_date_error_label_text'\\n | skyLibResources\\n \\\"\\n />\\n }\\n <span class=\\\"sky-input-box-descendent-form-error\\\">\\n <ng-content select=\\\"sky-form-error\\\" />\\n </span>\\n </sky-input-box>\\n </div>\\n <div\\n class=\\\"sky-date-range-picker-form-group sky-date-range-datepicker-wrapper sky-date-range-picker-start-date\\\"\\n [hidden]=\\\"!showStartDatePicker()\\\"\\n [ngClass]=\\\"{\\n 'sky-date-range-picker-last-input':\\n showStartDatePicker() && !showEndDatePicker()\\n }\\\"\\n >\\n <sky-input-box\\n [hasErrors]=\\\"startDateHasErrors()\\\"\\n [labelText]=\\\"\\n selectedCalculator.type\\n | skyDateRangePickerStartDateResourceKey\\n | skyLibResources\\n \\\"\\n >\\n <sky-datepicker (calendarDateChange)=\\\"onDateChange()\\\">\\n <input\\n formControlName=\\\"startDate\\\"\\n name=\\\"startDate\\\"\\n skyDatepickerInput\\n type=\\\"text\\\"\\n [attr.aria-label]=\\\"\\n labelText || label\\n ? ('skyux_date_range_picker_default_aria_label'\\n | skyLibResources\\n : (selectedCalculator.type\\n | skyDateRangePickerStartDateResourceKey\\n | skyLibResources)\\n : (labelText ? labelText : label))\\n : (selectedCalculator.type\\n | skyDateRangePickerStartDateResourceKey\\n | skyLibResources)\\n \\\"\\n [dateFormat]=\\\"dateFormat\\\"\\n [required]=\\\"showStartDatePicker()\\\"\\n (change)=\\\"onDateChange()\\\"\\n />\\n </sky-datepicker>\\n </sky-input-box>\\n </div>\\n <div\\n class=\\\"sky-date-range-picker-form-group sky-date-range-datepicker-wrapper sky-date-range-picker-end-date\\\"\\n [hidden]=\\\"!showEndDatePicker()\\\"\\n [ngClass]=\\\"{ 'sky-date-range-picker-last-input': showEndDatePicker() }\\\"\\n >\\n <sky-input-box\\n [hasErrors]=\\\"endDateHasErrors()\\\"\\n [labelText]=\\\"\\n selectedCalculator.type\\n | skyDateRangePickerEndDateResourceKey\\n | skyLibResources\\n \\\"\\n >\\n <sky-datepicker (calendarDateChange)=\\\"onDateChange()\\\">\\n <input\\n formControlName=\\\"endDate\\\"\\n name=\\\"endDate\\\"\\n skyDatepickerInput\\n type=\\\"text\\\"\\n [attr.aria-label]=\\\"\\n labelText || label\\n ? ('skyux_date_range_picker_default_aria_label'\\n | skyLibResources\\n : (selectedCalculator.type\\n | skyDateRangePickerEndDateResourceKey\\n | skyLibResources)\\n : (labelText ? labelText : label))\\n : (selectedCalculator.type\\n | skyDateRangePickerEndDateResourceKey\\n | skyLibResources)\\n \\\"\\n [dateFormat]=\\\"dateFormat\\\"\\n [required]=\\\"showEndDatePicker()\\\"\\n (change)=\\\"onDateChange()\\\"\\n />\\n </sky-datepicker>\\n </sky-input-box>\\n </div>\\n</div>\\n\", styles: [\".sky-date-range-picker:not(.sky-theme-modern *){--sky-override-date-range-picker-margin-right: 0;--sky-override-date-range-picker-padding-left: 5px;--sky-override-date-range-picker-padding-right: 5px;--sky-override-date-range-picker-responsive-bottom-margin: var( --sky-margin-stacked-lg )}:host{display:block}.sky-date-range-picker{display:flex}:host .sky-date-range-picker{flex-direction:column}:host .sky-date-range-picker-form-group{flex-basis:100%}:host .sky-date-range-picker-form-group:not(:first-of-type){padding-left:initial}:host .sky-date-range-picker-form-group:not(:last-of-type){padding-right:initial}:host .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input){margin-bottom:var(--sky-override-date-range-picker-responsive-bottom-margin, var(--sky-space-gap-form-l));margin-right:0}:host-context(.sky-responsive-container-xs) .sky-date-range-picker,:host-context(.sky-responsive-container-sm) .sky-date-range-picker,:host-context(.sky-responsive-container-md) .sky-date-range-picker,:host-context(.sky-responsive-container-lg) .sky-date-range-picker{flex-direction:column}:host-context(.sky-responsive-container-xs) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group{flex-basis:100%}:host-context(.sky-responsive-container-xs) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(:first-of-type){padding-left:initial}:host-context(.sky-responsive-container-xs) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(:last-of-type){padding-right:initial}:host-context(.sky-responsive-container-xs) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input),:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input){margin-bottom:var(--sky-override-date-range-picker-responsive-bottom-margin, var(--sky-space-gap-form-l));margin-right:0}@media (min-width: 768px){:host .sky-date-range-picker{flex-direction:initial}:host .sky-date-range-picker-form-group{flex-basis:33.3333333333%;padding:0}:host .sky-date-range-picker-form-group:not(:first-of-type){padding-left:var(--sky-override-date-range-picker-padding-left, 0)}:host .sky-date-range-picker-form-group:not(:last-of-type){padding-right:var(--sky-override-date-range-picker-padding-right, 0)}:host .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input){margin-bottom:0;margin-right:var(--sky-override-date-range-picker-margin-right, var(--sky-space-gap-form-l))}}:host-context(.sky-responsive-container-sm) .sky-date-range-picker,:host-context(.sky-responsive-container-md) .sky-date-range-picker,:host-context(.sky-responsive-container-lg) .sky-date-range-picker{flex-direction:initial}:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group{flex-basis:33.3333333333%;padding:0}:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(:first-of-type){padding-left:var(--sky-override-date-range-picker-padding-left, 0)}:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(:last-of-type){padding-right:var(--sky-override-date-range-picker-padding-right, 0)}:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input){margin-bottom:0;margin-right:var(--sky-override-date-range-picker-margin-right, var(--sky-space-gap-form-l))}@media (min-width: 768px){:host-context(sky-filter-inline-item) .sky-date-range-picker-form-group{flex-basis:100%}}.sky-responsive-container-sm :host-context(sky-filter-inline-item) .sky-date-range-picker-form-group,.sky-responsive-container-md :host-context(sky-filter-inline-item) .sky-date-range-picker-form-group,.sky-responsive-container-lg :host-context(sky-filter-inline-item) .sky-date-range-picker-form-group{flex-basis:100%}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"pipe\", type: i1.AsyncPipe, name: \"async\" }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i2.NgSelectOption, selector: \"option\", inputs: [\"ngValue\", \"value\"] }, { kind: \"directive\", type: i2.ɵNgSelectMultipleOption, selector: \"option\", inputs: [\"ngValue\", \"value\"] }, { kind: \"directive\", type: i2.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { kind: \"directive\", type: i2.SelectControlValueAccessor, selector: \"select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]\", inputs: [\"compareWith\"] }, { kind: \"directive\", type: i2.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i2.NgControlStatusGroup, selector: \"[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]\" }, { kind: \"directive\", type: i2.RequiredValidator, selector: \":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]\", inputs: [\"required\"] }, { kind: \"ngmodule\", type: ReactiveFormsModule }, { kind: \"directive\", type: i2.FormGroupDirective, selector: \"[formGroup]\", inputs: [\"formGroup\"], outputs: [\"ngSubmit\"], exportAs: [\"ngForm\"] }, { kind: \"directive\", type: i2.FormControlName, selector: \"[formControlName]\", inputs: [\"formControlName\", \"disabled\", \"ngModel\"], outputs: [\"ngModelChange\"] }, { kind: \"ngmodule\", type: SkyDatepickerModule }, { kind: \"component\", type: i3.SkyDatepickerComponent, selector: \"sky-datepicker\", inputs: [\"pickerClass\"], outputs: [\"calendarDateRangeChange\", \"dateFormatChange\", \"openChange\", \"calendarDateChange\"] }, { kind: \"directive\", type: i4.SkyDatepickerInputDirective, selector: \"[skyDatepickerInput]\", inputs: [\"dateFormat\", \"disabled\", \"maxDate\", \"minDate\", \"startAtDate\", \"skyDatepickerInput\", \"skyDatepickerNoValidate\", \"startingDay\", \"strict\"] }, { kind: \"pipe\", type: SkyDateRangePickerEndDateResourceKeyPipe, name: \"skyDateRangePickerEndDateResourceKey\" }, { kind: \"pipe\", type: SkyDateRangePickerStartDateResourceKeyPipe, name: \"skyDateRangePickerStartDateResourceKey\" }, { kind: \"ngmodule\", type: SkyDatetimeResourcesModule }, { kind: \"pipe\", type: i5.SkyLibResourcesPipe, name: \"skyLibResources\" }, { kind: \"ngmodule\", type: SkyInputBoxModule }, { kind: \"component\", type: i6.λ10, selector: \"sky-input-box\", inputs: [\"hasErrors\", \"disabled\", \"labelText\", \"characterLimit\", \"stacked\", \"helpPopoverTitle\", \"helpPopoverContent\", \"helpKey\", \"hintText\"] }, { kind: \"directive\", type: i6.λ20, selector: \"input:not([skyId]):not(.sky-form-control),select:not([skyId]):not(.sky-form-control),textarea:not([skyId]):not(.sky-form-control)\", inputs: [\"autocomplete\"] }, { kind: \"component\", type: i6.λ22, selector: \"sky-form-error\", inputs: [\"errorName\", \"errorText\"] }, { kind: \"ngmodule\", type: SkyFormErrorsModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDateRangePickerComponent, decorators: [{\n type: Component,\n args: [{ changeDetection: ChangeDetectionStrategy.OnPush, host: {\n '(focusout)': 'onFocusout($event)',\n }, imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n SkyDatepickerModule,\n SkyDateRangePickerEndDateResourceKeyPipe,\n SkyDateRangePickerStartDateResourceKeyPipe,\n SkyDatetimeResourcesModule,\n SkyInputBoxModule,\n SkyFormErrorsModule,\n ], providers: [\n {\n provide: NG_VALIDATORS,\n useExisting: SkyDateRangePickerComponent,\n multi: true,\n },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: SkyDateRangePickerComponent,\n multi: true,\n },\n { provide: SKY_FORM_ERRORS_ENABLED, useValue: true },\n ], selector: 'sky-date-range-picker', template: \"<div class=\\\"sky-date-range-picker\\\" [formGroup]=\\\"formGroup\\\">\\n <div\\n class=\\\"sky-date-range-picker-form-group sky-date-range-picker-select-calculator\\\"\\n [ngClass]=\\\"{\\n 'sky-date-range-picker-last-input':\\n !showStartDatePicker() && !showEndDatePicker()\\n }\\\"\\n >\\n <sky-input-box\\n [hasErrors]=\\\"calculatorIdHasErrors()\\\"\\n [helpKey]=\\\"helpKey\\\"\\n [helpPopoverContent]=\\\"helpPopoverContent\\\"\\n [helpPopoverTitle]=\\\"helpPopoverTitle\\\"\\n [hintText]=\\\"hintText\\\"\\n [labelText]=\\\"\\n labelText ||\\n label ||\\n ('skyux_date_range_picker_default_label' | skyLibResources)\\n \\\"\\n >\\n <select formControlName=\\\"calculatorId\\\" (change)=\\\"onCalculatorIdChange()\\\">\\n @for (calculator of calculators; track calculator.calculatorId) {\\n <option [value]=\\\"calculator.calculatorId\\\">\\n {{ calculator.shortDescription$ | async }}\\n </option>\\n }\\n </select>\\n @if (\\n hostControl?.errors?.['skyDateRange']?.errors?.[\\n 'endDateBeforeStartDate'\\n ] && labelText\\n ) {\\n <sky-form-error\\n errorName=\\\"endDateBeforeStartDate\\\"\\n [errorText]=\\\"\\n 'skyux_date_range_picker_end_date_before_start_date_error_label_text'\\n | skyLibResources\\n \\\"\\n />\\n }\\n <span class=\\\"sky-input-box-descendent-form-error\\\">\\n <ng-content select=\\\"sky-form-error\\\" />\\n </span>\\n </sky-input-box>\\n </div>\\n <div\\n class=\\\"sky-date-range-picker-form-group sky-date-range-datepicker-wrapper sky-date-range-picker-start-date\\\"\\n [hidden]=\\\"!showStartDatePicker()\\\"\\n [ngClass]=\\\"{\\n 'sky-date-range-picker-last-input':\\n showStartDatePicker() && !showEndDatePicker()\\n }\\\"\\n >\\n <sky-input-box\\n [hasErrors]=\\\"startDateHasErrors()\\\"\\n [labelText]=\\\"\\n selectedCalculator.type\\n | skyDateRangePickerStartDateResourceKey\\n | skyLibResources\\n \\\"\\n >\\n <sky-datepicker (calendarDateChange)=\\\"onDateChange()\\\">\\n <input\\n formControlName=\\\"startDate\\\"\\n name=\\\"startDate\\\"\\n skyDatepickerInput\\n type=\\\"text\\\"\\n [attr.aria-label]=\\\"\\n labelText || label\\n ? ('skyux_date_range_picker_default_aria_label'\\n | skyLibResources\\n : (selectedCalculator.type\\n | skyDateRangePickerStartDateResourceKey\\n | skyLibResources)\\n : (labelText ? labelText : label))\\n : (selectedCalculator.type\\n | skyDateRangePickerStartDateResourceKey\\n | skyLibResources)\\n \\\"\\n [dateFormat]=\\\"dateFormat\\\"\\n [required]=\\\"showStartDatePicker()\\\"\\n (change)=\\\"onDateChange()\\\"\\n />\\n </sky-datepicker>\\n </sky-input-box>\\n </div>\\n <div\\n class=\\\"sky-date-range-picker-form-group sky-date-range-datepicker-wrapper sky-date-range-picker-end-date\\\"\\n [hidden]=\\\"!showEndDatePicker()\\\"\\n [ngClass]=\\\"{ 'sky-date-range-picker-last-input': showEndDatePicker() }\\\"\\n >\\n <sky-input-box\\n [hasErrors]=\\\"endDateHasErrors()\\\"\\n [labelText]=\\\"\\n selectedCalculator.type\\n | skyDateRangePickerEndDateResourceKey\\n | skyLibResources\\n \\\"\\n >\\n <sky-datepicker (calendarDateChange)=\\\"onDateChange()\\\">\\n <input\\n formControlName=\\\"endDate\\\"\\n name=\\\"endDate\\\"\\n skyDatepickerInput\\n type=\\\"text\\\"\\n [attr.aria-label]=\\\"\\n labelText || label\\n ? ('skyux_date_range_picker_default_aria_label'\\n | skyLibResources\\n : (selectedCalculator.type\\n | skyDateRangePickerEndDateResourceKey\\n | skyLibResources)\\n : (labelText ? labelText : label))\\n : (selectedCalculator.type\\n | skyDateRangePickerEndDateResourceKey\\n | skyLibResources)\\n \\\"\\n [dateFormat]=\\\"dateFormat\\\"\\n [required]=\\\"showEndDatePicker()\\\"\\n (change)=\\\"onDateChange()\\\"\\n />\\n </sky-datepicker>\\n </sky-input-box>\\n </div>\\n</div>\\n\", styles: [\".sky-date-range-picker:not(.sky-theme-modern *){--sky-override-date-range-picker-margin-right: 0;--sky-override-date-range-picker-padding-left: 5px;--sky-override-date-range-picker-padding-right: 5px;--sky-override-date-range-picker-responsive-bottom-margin: var( --sky-margin-stacked-lg )}:host{display:block}.sky-date-range-picker{display:flex}:host .sky-date-range-picker{flex-direction:column}:host .sky-date-range-picker-form-group{flex-basis:100%}:host .sky-date-range-picker-form-group:not(:first-of-type){padding-left:initial}:host .sky-date-range-picker-form-group:not(:last-of-type){padding-right:initial}:host .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input){margin-bottom:var(--sky-override-date-range-picker-responsive-bottom-margin, var(--sky-space-gap-form-l));margin-right:0}:host-context(.sky-responsive-container-xs) .sky-date-range-picker,:host-context(.sky-responsive-container-sm) .sky-date-range-picker,:host-context(.sky-responsive-container-md) .sky-date-range-picker,:host-context(.sky-responsive-container-lg) .sky-date-range-picker{flex-direction:column}:host-context(.sky-responsive-container-xs) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group{flex-basis:100%}:host-context(.sky-responsive-container-xs) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(:first-of-type){padding-left:initial}:host-context(.sky-responsive-container-xs) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(:last-of-type){padding-right:initial}:host-context(.sky-responsive-container-xs) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input),:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input){margin-bottom:var(--sky-override-date-range-picker-responsive-bottom-margin, var(--sky-space-gap-form-l));margin-right:0}@media (min-width: 768px){:host .sky-date-range-picker{flex-direction:initial}:host .sky-date-range-picker-form-group{flex-basis:33.3333333333%;padding:0}:host .sky-date-range-picker-form-group:not(:first-of-type){padding-left:var(--sky-override-date-range-picker-padding-left, 0)}:host .sky-date-range-picker-form-group:not(:last-of-type){padding-right:var(--sky-override-date-range-picker-padding-right, 0)}:host .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input){margin-bottom:0;margin-right:var(--sky-override-date-range-picker-margin-right, var(--sky-space-gap-form-l))}}:host-context(.sky-responsive-container-sm) .sky-date-range-picker,:host-context(.sky-responsive-container-md) .sky-date-range-picker,:host-context(.sky-responsive-container-lg) .sky-date-range-picker{flex-direction:initial}:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group,:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group{flex-basis:33.3333333333%;padding:0}:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(:first-of-type),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(:first-of-type){padding-left:var(--sky-override-date-range-picker-padding-left, 0)}:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(:last-of-type),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(:last-of-type){padding-right:var(--sky-override-date-range-picker-padding-right, 0)}:host-context(.sky-responsive-container-sm) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input),:host-context(.sky-responsive-container-md) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input),:host-context(.sky-responsive-container-lg) .sky-date-range-picker-form-group:not(.sky-date-range-picker-last-input){margin-bottom:0;margin-right:var(--sky-override-date-range-picker-margin-right, var(--sky-space-gap-form-l))}@media (min-width: 768px){:host-context(sky-filter-inline-item) .sky-date-range-picker-form-group{flex-basis:100%}}.sky-responsive-container-sm :host-context(sky-filter-inline-item) .sky-date-range-picker-form-group,.sky-responsive-container-md :host-context(sky-filter-inline-item) .sky-date-range-picker-form-group,.sky-responsive-container-lg :host-context(sky-filter-inline-item) .sky-date-range-picker-form-group{flex-basis:100%}\\n\"] }]\n }], propDecorators: { calculatorIds: [{\n type: Input\n }], dateFormat: [{\n type: Input\n }], disabled: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], helpPopoverContent: [{\n type: Input\n }], helpPopoverTitle: [{\n type: Input\n }], hintText: [{\n type: Input\n }], label: [{\n type: Input\n }], labelText: [{\n type: Input\n }], stacked: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }, {\n type: HostBinding,\n args: ['class.sky-form-field-stacked']\n }], helpKey: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2RhdGV0aW1lL3NyYy9saWIvbW9kdWxlcy9kYXRlLXJhbmdlLXBpY2tlci9kYXRlLXJhbmdlLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL2RhdGUtcmFuZ2UtcGlja2VyL2RhdGUtcmFuZ2UtcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsVUFBVSxFQUNWLFdBQVcsRUFDWCxRQUFRLEVBQ1IsS0FBSyxFQUdMLGdCQUFnQixFQUNoQixRQUFRLEVBQ1IsTUFBTSxFQUNOLHFCQUFxQixFQUNyQixNQUFNLEVBQ04sWUFBWSxHQUNiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRSxPQUFPLEVBR0wsV0FBVyxFQUNYLFdBQVcsRUFDWCxXQUFXLEVBQ1gsYUFBYSxFQUNiLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsbUJBQW1CLEVBQ25CLGlCQUFpQixFQUNqQixrQkFBa0IsR0FHbkIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsbUJBQW1CLEVBQ25CLGlCQUFpQixHQUNsQixNQUFNLGNBQWMsQ0FBQztBQUV0QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV6RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUVyRixPQUFPLEVBQUUsd0NBQXdDLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUMxRyxPQUFPLEVBQUUsMENBQTBDLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUM5RyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUkzRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNoRixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQzs7Ozs7Ozs7QUFJM0YsU0FBUyxrQkFBa0IsQ0FDekIsTUFBMkMsRUFDM0MsTUFBMkM7SUFFM0MsT0FBTyxDQUNMLENBQUMsQ0FBQyxNQUFNO1FBQ1IsQ0FBQyxDQUFDLE1BQU07UUFDUixNQUFNLENBQUMsWUFBWSxLQUFLLE1BQU0sQ0FBQyxZQUFZO1FBQzNDLGFBQWEsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxTQUFTLENBQUM7UUFDakQsYUFBYSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUM5QyxDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsYUFBYSxDQUFDLENBQVksRUFBRSxDQUFZO0lBQy9DLElBQUksT0FBTyxDQUFDLEtBQUssT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUMxQixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDYixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDckMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsT0FBTyxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQUMvRSxDQUFDO0FBRUQsU0FBUyxpQkFBaUIsQ0FBQyxLQUFjO0lBQ3ZDLE9BQU8sS0FBSyxLQUFLLFNBQVMsSUFBSSxLQUFLLEtBQUssSUFBSSxDQUFDO0FBQy9DLENBQUM7QUFFRCxTQUFTLGNBQWMsQ0FDckIsS0FBMEQ7SUFFMUQsT0FBTyxDQUNMLGlCQUFpQixDQUFDLEtBQUssQ0FBQztRQUN4QixpQkFBaUIsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDO1FBQ3JDLENBQUMsQ0FBQyxTQUFTLElBQUksS0FBSyxDQUFDO1FBQ3JCLENBQUMsQ0FBQyxXQUFXLElBQUksS0FBSyxDQUFDLENBQ3hCLENBQUM7QUFDSixDQUFDO0FBbUNELE1BQU0sT0FBTywyQkFBMkI7SUFqQ3hDO1FBb0NXLGtCQUFhLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDNUMsZ0JBQVcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDakMsZ0JBQVcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDakMsY0FBUyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM3QixZQUFPLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBdUd6Qzs7O1dBR0c7UUFHSSxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBVWIsZ0JBQVcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQztRQUM3QyxnQkFBVyxHQUFHLFlBQVksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBRW5ELHVCQUFrQixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekMsc0JBQWlCLEdBQUcsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQzNDLHdCQUFtQixHQUFHLE1BQU0sQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUV2RCxvQkFBZSxHQUFHLDBCQUEwQixDQUFDO1FBRTdDLFlBQU8sR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxFQUFFLENBQUM7UUFNN0MseUJBQW9CLEdBQUcsSUFBSSxXQUFXLENBQ3BDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxZQUFZLEVBQzdCLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxDQUN0QixDQUFDO1FBQ0YseUJBQW9CLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixDQUNuRCxJQUFJLENBQUMsb0JBQW9CLENBQzFCLENBQUM7UUFDRix5QkFBb0IsR0FBRyxJQUFJLENBQUMsMEJBQTBCLENBQ3BELElBQUksQ0FBQyxvQkFBb0IsQ0FDMUIsQ0FBQztRQUVGLG9CQUFlLEdBQUcsSUFBSSxXQUFXLENBQVksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZFLG9CQUFlLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUN2RSxvQkFBZSxHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFFeEUsc0JBQWlCLEdBQUcsSUFBSSxXQUFXLENBQVksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzNFLHNCQUFpQixHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUMzRSxzQkFBaUIsR0FBRyxJQUFJLENBQUMsMEJBQTBCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFFbEUsY0FBUyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxLQUFLLENBQUM7WUFDOUMsWUFBWSxFQUFFLElBQUksQ0FBQyxvQkFBb0I7WUFDdkMsU0FBUyxFQUFFLElBQUksQ0FBQyxpQkFBaUI7WUFDakMsT0FBTyxFQUFFLElBQUksQ0FBQyxlQUFlO1NBQzlCLENBQUMsQ0FBQztRQUVnQiwwQkFBcUIsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ3ZELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQzVDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxJQUFJLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLENBQUM7WUFDNUUsT0FBTyxPQUFPLElBQUksT0FBTyxDQUFDO1FBQzVCLENBQUMsQ0FBQyxDQUFDO1FBRWdCLHFCQUFnQixHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDbEQsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztZQUMzRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDdkMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBRXZDLE9BQU8scUJBQXFCLElBQUksQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLENBQUM7UUFDdkQsQ0FBQyxDQUFDLENBQUM7UUFFZ0IsdUJBQWtCLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNwRCxNQUFNLHFCQUFxQixHQUFHLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1lBQzNELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ3pDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBRXpDLE9BQU8scUJBQXFCLElBQUksQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLENBQUM7UUFDdkQsQ0FBQyxDQUFDLENBQUM7S0EwU0o7SUFqZVUsYUFBYSxDQUErQjtJQUM1QyxXQUFXLENBQXNCO0lBQ2pDLFdBQVcsQ0FBc0I7SUFDakMsU0FBUyxDQUFvQjtJQUM3QixPQUFPLENBQXlCO0lBRXpDOzs7O09BSUc7SUFDSCxJQUNXLGFBQWEsQ0FDdEIsYUFBcUQ7UUFFckQsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsWUFBWSxDQUFDO1FBRTFELElBQUksQ0FBQyxlQUFlLEdBQUcsYUFBYSxJQUFJLDBCQUEwQixDQUFDO1FBQ25FLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FDckQsSUFBSSxDQUFDLGVBQWUsQ0FDckIsQ0FBQztRQUVGLGdFQUFnRTtRQUNoRSxnREFBZ0Q7UUFDaEQsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQztZQUN4RCxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsWUFBWSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzFELENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBVyxhQUFhO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUM5QixDQUFDO0lBWUQ7Ozs7OztPQU1HO0lBQ0gsSUFDVyxRQUFRLENBQUMsS0FBYztRQUNoQyxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUMzQixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDMUIsQ0FBQztJQUNILENBQUM7SUF3QkQ7OztPQUdHO0lBQ0gsSUFDVyxLQUFLLENBQUMsS0FBeUI7UUFDeEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFFckIsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLG1DQUFtQyxFQUFFO2dCQUMzRCx1QkFBdUIsRUFBRSxFQUFFO2dCQUMzQix5QkFBeUIsRUFBRSxvQ0FBb0M7YUFDaEUsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFXLEtBQUs7UUFDZCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQStCRCxlQUFlLENBQThCO0lBQzdDLE9BQU8sQ0FBcUI7SUFDNUIsT0FBTyxDQUFzQztJQUU3QyxtQkFBbUIsQ0FBMEM7SUFDN0QsYUFBYSxDQUFxRDtJQUNsRSxjQUFjLENBQTJCO0lBRXpDLG9CQUFvQixDQUdsQjtJQUNGLG9CQUFvQixDQUVsQjtJQUNGLG9CQUFvQixDQUVsQjtJQUVGLGVBQWUsQ0FBd0Q7SUFDdkUsZUFBZSxDQUF3RDtJQUN2RSxlQUFlLENBQXlEO0lBRXhFLGlCQUFpQixDQUEwRDtJQUMzRSxpQkFBaUIsQ0FBMEQ7SUFDM0UsaUJBQWlCLENBQTJEO0lBOEJyRSxlQUFlO1FBQ3BCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRTtZQUNyRCxRQUFRLEVBQUUsSUFBSTtZQUNkLElBQUksRUFBRSxJQUFJO1NBQ1gsQ0FBQyxFQUFFLE9BQU8sQ0FBQztRQUVaLHFCQUFxQixDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsR0FBRyxFQUFFO1lBQ3pDLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNyQixJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLGtDQUFrQyxDQUNoRSxJQUFJLENBQUMsV0FBVyxDQUNqQixDQUFDO1lBQ0osQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsZ0VBQWdFO1FBQ2hFLGdFQUFnRTtRQUNoRSxvQkFBb0I7UUFDcEIsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzVDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFO29CQUMzQyxTQUFTLEVBQUUsS0FBSztpQkFDakIsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQscUVBQXFFO1FBQ3JFLDRFQUE0RTtRQUM1RSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU07YUFDbEIsSUFBSSxDQUNILE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxZQUFZLGlCQUFpQixDQUFDLEVBQ2pELEdBQUcsQ0FBQyxDQUFDLEdBQXNCLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFDM0Msb0JBQW9CLEVBQUUsRUFDdEIsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUNyQzthQUNBLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsV0FBVyxFQUFFLHNCQUFzQixDQUFDO2dCQUN2QyxTQUFTLEVBQUUsS0FBSztnQkFDaEIsUUFBUSxFQUFFLElBQUk7YUFDZixDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVMLDZEQUE2RDtRQUM3RCxJQUFJLENBQUMsV0FBVyxFQUFFLE1BQU07YUFDckIsSUFBSSxDQUNILE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxZQUFZLGtCQUFrQixDQUFDLEVBQ2xELEdBQUcsQ0FBQyxDQUFDLEdBQXVCLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFDN0Msb0JBQW9CLEVBQUUsRUFDdEIsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUNyQzthQUNBLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsU0FBUyxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDcEMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsK0NBQStDO0lBQ3hDLGdCQUFnQixDQUFDLEVBQXdCO1FBQzlDLElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCwrQ0FBK0M7SUFDeEMsaUJBQWlCLENBQUMsRUFBYztRQUNyQyxJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsK0NBQStDO0lBQ3hDLGdCQUFnQixDQUFDLFVBQW1CO1FBQ3pDLElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO0lBQzdCLENBQUM7SUFFRCxvQ0FBb0M7SUFDN0IsUUFBUSxDQUFDLE9BQXdCO1FBQ3RDLElBQUksTUFBTSxHQUE0QixJQUFJLENBQUM7UUFFM0MsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6RSxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDO1FBQ3RELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDO1FBRWxELElBQUksZ0JBQWdCLEVBQUUsQ0FBQztZQUNyQixNQUFNLEdBQUc7Z0JBQ1AsWUFBWSxFQUFFO29CQUNaLFlBQVksRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsWUFBWTtvQkFDM0MsTUFBTSxFQUFFLGdCQUFnQjtpQkFDekI7YUFDRixDQUFDO1FBQ0osQ0FBQztRQUVELHNFQUFzRTtRQUN0RSxJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTVDLElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFLElBQUksZUFBZSxFQUFFLENBQUM7WUFDbEQsTUFBTSxLQUFLLEVBQUUsQ0FBQztZQUNkLE1BQU0sR0FBRyxFQUFFLEdBQUcsTUFBTSxFQUFFLEdBQUcsZUFBZSxFQUFFLENBQUM7UUFDN0MsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFLElBQUksYUFBYSxFQUFFLENBQUM7WUFDOUMsTUFBTSxLQUFLLEVBQUUsQ0FBQztZQUNkLE1BQU0sR0FBRyxFQUFFLEdBQUcsTUFBTSxFQUFFLEdBQUcsYUFBYSxFQUFFLENBQUM7UUFDM0MsQ0FBQztRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCwrQ0FBK0M7SUFDL0MsMkVBQTJFO0lBQzNFLGlGQUFpRjtJQUNqRiwwREFBMEQ7SUFDbkQsVUFBVSxDQUFDLEtBQW1EO1FBQ25FLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFeEIsbUVBQW1FO1FBQ25FLElBQUksY0FBYyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFO2dCQUMzQyxTQUFTLEVBQUUsS0FBSztnQkFDaEIsUUFBUSxFQUFFLElBQUk7YUFDZixDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ08sb0JBQW9CO1FBQzVCLGtEQUFrRDtRQUNsRCxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDbkUsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRDs7T0FFRztJQUNPLFlBQVk7UUFDcEIsc0VBQXNFO1FBQ3RFLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQ2xCLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUE2QixDQUN4RCxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDTyxVQUFVLENBQUMsRUFBRSxhQUFhLEVBQWM7UUFDaEQsSUFDRSxhQUFhO1lBQ2IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDO1lBQ3ZELENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxFQUMxRSxDQUFDO1lBQ0QsSUFBSSxDQUFDLGNBQWMsRUFBRSxFQUFFLENBQUM7UUFDMUIsQ0FBQztJQUNILENBQUM7SUFFRCxjQUFjLENBQUMsWUFBb0I7UUFDakMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxZQUFZLEtBQUssWUFBWSxDQUFDLENBQUM7UUFFNUUsb0NBQW9DO1FBQ3BDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNYLE1BQU0sSUFBSSxLQUFLLENBQ2Isb0NBQW9DLFlBQVksdUJBQXVCLENBQ3hFLENBQUM7UUFDSixDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsU0FBUztRQUNQLDJFQUEyRTtRQUMzRSxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELFdBQVcsQ0FDVCxZQUFpRTtRQUVqRSxJQUFJLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNyQixPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUVsQyx1RUFBdUU7UUFDdkUsZ0NBQWdDO1FBQ2hDLElBQ0UsQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDO1lBQzdDLFFBQVEsQ0FBQyxZQUFZLEtBQUssWUFBWSxDQUFDLFlBQVksRUFDbkQsQ0FBQztZQUNELE9BQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQztZQUN4QixPQUFPLFFBQVEsQ0FBQyxTQUFTLENBQUM7UUFDNUIsQ0FBQztRQUVELE1BQU0sS0FBSyxHQUFHO1lBQ1osR0FBRyxRQUFRO1lBQ1gsR0FBRyxZQUFZO1NBQ2hCLENBQUM7UUFFRixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFFRDs7T0FFRztJQUNILFNBQVMsQ0FBQyxLQUFpRDtRQUN6RCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFFbEMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxLQUFLLElBQUksaUJBQWlCLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3JFLE1BQU0sY0FBYyxHQUFHLFlBQVk7WUFDakMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFO1lBQ2hDLENBQUMsQ0FBQztnQkFDRSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLFFBQVEsRUFBRTtnQkFDckQsR0FBRyxLQUFLO2FBQ1QsQ0FBQztRQUVOLHVDQUF1QztRQUN2QyxjQUFjLENBQUMsT0FBTyxHQUFHLGNBQWMsQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDO1FBQ3hELGNBQWMsQ0FBQyxTQUFTLEdBQUcsY0FBYyxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUM7UUFFNUQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsRUFBRSxjQUFjLENBQUMsRUFBRSxDQUFDO1lBQ2xELElBQUksQ0FBQyxPQUFPLEdBQUcsY0FBYyxDQUFDO1lBRTlCLElBQUksUUFBUSxDQUFDLFlBQVksS0FBSyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQzFELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUMzQyxjQUFjLENBQUMsWUFBWSxDQUM1QixDQUFDO2dCQUVGLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztZQUN4RCxDQUFDO1lBRUQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDNUMsQ0FBQztJQUNILENBQUM7SUFFRCx1QkFBdUIsQ0FBQyxVQUFrQztRQUN4RCxJQUFJLGlCQUFpQixHQUFHLEtBQUssQ0FBQztRQUM5QixJQUFJLG1CQUFtQixHQUFHLEtBQUssQ0FBQztRQUVoQyxRQUFRLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN4QixLQUFLLDBCQUEwQixDQUFDLE1BQU07Z0JBQ3BDLGlCQUFpQixHQUFHLElBQUksQ0FBQztnQkFDekIsTUFBTTtZQUVSLEtBQUssMEJBQTBCLENBQUMsS0FBSztnQkFDbkMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO2dCQUMzQixNQUFNO1lBRVIsS0FBSywwQkFBMEIsQ0FBQyxLQUFLO2dCQUNuQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7Z0JBQ3pCLG1CQUFtQixHQUFHLElBQUksQ0FBQztnQkFDM0IsTUFBTTtZQUVSO2dCQUNFLE1BQU07UUFDVixDQUFDO1FBRUQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQsa0NBQWtDLENBQ2hDLE9BQXdCO1FBRXhCLE9BQU8sUUFBUSxDQUNiLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUNqQixNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsWUFBWSxpQkFBaUIsQ0FBQyxFQUNqRCxHQUFHLENBQUMsQ0FBQyxHQUFzQixFQUFFLEVBQUU7WUFDN0IsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDO1lBQ3ZDLE1BQU0sV0FBVyxHQUFHLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBRTVDLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDeEMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdEMsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FDSCxDQUNGLENBQUM7SUFDSixDQUFDO0lBRUQseUJBQXlCLENBQUMsT0FBb0I7UUFDNUMsT0FBTyxRQUFRLENBQ2IsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ2pCLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxZQUFZLGlCQUFpQixDQUFDLEVBQ2pELEdBQUcsQ0FBQyxDQUFDLEdBQXNCLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEtBQUssU0FBUyxDQUFDLEVBQ3pELGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FDckMsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELDBCQUEwQixDQUN4QixPQUFvQjtRQUVwQixPQUFPLFFBQVEsQ0FDYixPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDakIsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLFlBQVksa0JBQWtCLENBQUMsRUFDbEQsR0FBRyxDQUFDLENBQUMsR0FBdUIsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUM3QyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQ3JDLENBQ0YsQ0FBQztJQUNKLENBQUM7OEdBbmVVLDJCQUEyQjtrR0FBM0IsMkJBQTJCLGdLQXFEbEIsZ0JBQWdCLGlMQTZEaEIsZ0JBQWdCLCtKQW5JekI7WUFDVDtnQkFDRSxPQUFPLEVBQUUsYUFBYTtnQkFDdEIsV0FBVyxFQUFFLDJCQUEyQjtnQkFDeEMsS0FBSyxFQUFFLElBQUk7YUFDWjtZQUNEO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSwyQkFBMkI7Z0JBQ3hDLEtBQUssRUFBRSxJQUFJO2FBQ1o7WUFDRCxFQUFFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO1NBQ3JELDBEQW9Jb0Msc0JBQXNCLGdFQ3ZRN0QsdXZJQTZIQSwyK0tEaEJJLFlBQVksaUxBQ1osV0FBVywwcUNBQ1gsbUJBQW1CLCtVQUNuQixtQkFBbUIsdWRBQ25CLHdDQUF3Qyx3RUFDeEMsMENBQTBDLDhFQUMxQywwQkFBMEIsdUdBQzFCLGlCQUFpQiwraEJBQ2pCLG1CQUFtQjs7MkZBbUJWLDJCQUEyQjtrQkFqQ3ZDLFNBQVM7c0NBQ1MsdUJBQXVCLENBQUMsTUFBTSxRQUN6Qzt3QkFDSixZQUFZLEVBQUUsb0JBQW9CO3FCQUNuQyxXQUNRO3dCQUNQLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxtQkFBbUI7d0JBQ25CLG1CQUFtQjt3QkFDbkIsd0NBQXdDO3dCQUN4QywwQ0FBMEM7d0JBQzFDLDBCQUEwQjt3QkFDMUIsaUJBQWlCO3dCQUNqQixtQkFBbUI7cUJBQ3BCLGFBQ1U7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGFBQWE7NEJBQ3RCLFdBQVcsNkJBQTZCOzRCQUN4QyxLQUFLLEVBQUUsSUFBSTt5QkFDWjt3QkFDRDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLDZCQUE2Qjs0QkFDeEMsS0FBSyxFQUFFLElBQUk7eUJBQ1o7d0JBQ0QsRUFBRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtxQkFDckQsWUFDUyx1QkFBdUI7OEJBbUJ0QixhQUFhO3NCQUR2QixLQUFLO2dCQThCQyxVQUFVO3NCQURoQixLQUFLO2dCQVdLLFFBQVE7c0JBRGxCLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBZS9CLGtCQUFrQjtzQkFEeEIsS0FBSztnQkFRQyxnQkFBZ0I7c0JBRHRCLEtBQUs7Z0JBUUMsUUFBUTtzQkFEZCxLQUFLO2dCQVFLLEtBQUs7c0JBRGYsS0FBSztnQkFvQkMsU0FBUztzQkFEZixLQUFLO2dCQVNDLE9BQU87c0JBRmIsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTs7c0JBQ3JDLFdBQVc7dUJBQUMsOEJBQThCO2dCQVNwQyxPQUFPO3NCQURiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRGVzdHJveVJlZixcbiAgRWxlbWVudFJlZixcbiAgSG9zdEJpbmRpbmcsXG4gIEluamVjdG9yLFxuICBJbnB1dCxcbiAgU2lnbmFsLFxuICBUZW1wbGF0ZVJlZixcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgY29tcHV0ZWQsXG4gIGluamVjdCxcbiAgcnVuSW5JbmplY3Rpb25Db250ZXh0LFxuICBzaWduYWwsXG4gIHZpZXdDaGlsZHJlbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQsIHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHtcbiAgQWJzdHJhY3RDb250cm9sLFxuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgRm9ybUJ1aWxkZXIsXG4gIEZvcm1Db250cm9sLFxuICBGb3Jtc01vZHVsZSxcbiAgTkdfVkFMSURBVE9SUyxcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gIE5nQ29udHJvbCxcbiAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgU3RhdHVzQ2hhbmdlRXZlbnQsXG4gIFRvdWNoZWRDaGFuZ2VFdmVudCxcbiAgVmFsaWRhdGlvbkVycm9ycyxcbiAgVmFsaWRhdG9yLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTa3lMb2dTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L2NvcmUnO1xuaW1wb3J0IHtcbiAgU0tZX0ZPUk1fRVJST1JTX0VOQUJMRUQsXG4gIFNreUZvcm1FcnJvcnNNb2R1bGUsXG4gIFNreUlucHV0Qm94TW9kdWxlLFxufSBmcm9tICdAc2t5dXgvZm9ybXMnO1xuXG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBtYXAgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU2t5RGF0ZXBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4uL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5RGF0ZXBpY2tlck1vZHVsZSB9IGZyb20gJy4uL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci5tb2R1bGUnO1xuaW1wb3J0IHsgU2t5RGF0ZXRpbWVSZXNvdXJjZXNNb2R1bGUgfSBmcm9tICcuLi9zaGFyZWQvc2t5LWRhdGV0aW1lLXJlc291cmNlcy5tb2R1bGUnO1xuXG5pbXBvcnQgeyBTa3lEYXRlUmFuZ2VQaWNrZXJFbmREYXRlUmVzb3VyY2VLZXlQaXBlIH0gZnJvbSAnLi9kYXRlLXJhbmdlLXBpY2tlci1lbmQtZGF0ZS1yZXNvdXJjZS1rZXkucGlwZSc7XG5pbXBvcnQgeyBTa3lEYXRlUmFuZ2VQaWNrZXJTdGFydERhdGVSZXNvdXJjZUtleVBpcGUgfSBmcm9tICcuL2RhdGUtcmFuZ2UtcGlja2VyLXN0YXJ0LWRhdGUtcmVzb3VyY2Uta2V5LnBpcGUnO1xuaW1wb3J0IHsgU2t5RGF0ZVJhbmdlU2VydmljZSB9IGZyb20gJy4vZGF0ZS1yYW5nZS5zZXJ2aWNlJztcbmltcG9ydCB7IFNreURhdGVSYW5nZUNhbGN1bGF0aW9uIH0gZnJvbSAnLi90eXBlcy9kYXRlLXJhbmdlLWNhbGN1bGF0aW9uJztcbmltcG9ydCB7IFNreURhdGVSYW5nZUNhbGN1bGF0b3IgfSBmcm9tICcuL3R5cGVzL2RhdGUtcmFuZ2UtY2FsY3VsYXRvcic7XG5pbXBvcnQgeyBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9ySWQgfSBmcm9tICcuL3R5cGVzL2RhdGUtcmFuZ2UtY2FsY3VsYXRvci1pZCc7XG5pbXBvcnQgeyBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9yVHlwZSB9IGZyb20gJy4vdHlwZXMvZGF0ZS1yYW5nZS1jYWxjdWxhdG9yLXR5cGUnO1xuaW1wb3J0IHsgU0tZX0RFRkFVTFRfQ0FMQ1VMQVRPUl9JRFMgfSBmcm9tICcuL3R5cGVzL2RhdGUtcmFuZ2UtZGVmYXVsdC1jYWxjdWxhdG9yLWNvbmZpZ3MnO1xuXG50eXBlIERhdGVWYWx1ZSA9IERhdGUgfCBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuXG5mdW5jdGlvbiBhcmVEYXRlUmFuZ2VzRXF1YWwoXG4gIHJhbmdlQTogU2t5RGF0ZVJhbmdlQ2FsY3VsYXRpb24gfCB1bmRlZmluZWQsXG4gIHJhbmdlQjogU2t5RGF0ZVJhbmdlQ2FsY3VsYXRpb24gfCB1bmRlZmluZWQsXG4pOiBib29sZWFuIHtcbiAgcmV0dXJuIChcbiAgICAhIXJhbmdlQSAmJlxuICAgICEhcmFuZ2VCICYmXG4gICAgcmFuZ2VBLmNhbGN1bGF0b3JJZCA9PT0gcmFuZ2VCLmNhbGN1bGF0b3JJZCAmJlxuICAgIGFyZURhdGVzRXF1YWwocmFuZ2VBLnN0YXJ0RGF0ZSwgcmFuZ2VCLnN0YXJ0RGF0ZSkgJiZcbiAgICBhcmVEYXRlc0VxdWFsKHJhbmdlQS5lbmREYXRlLCByYW5nZUIuZW5kRGF0ZSlcbiAgKTtcbn1cblxuZnVuY3Rpb24gYXJlRGF0ZXNFcXVhbChhOiBEYXRlVmFsdWUsIGI6IERhdGVWYWx1ZSk6IGJvb2xlYW4ge1xuICBpZiAodHlwZW9mIGEgIT09IHR5cGVvZiBiKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKCFhICYmICFiKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpZiAodHlwZW9mIGEgPT09ICdzdHJpbmcnICYmIGEgPT09IGIpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBhIGluc3RhbmNlb2YgRGF0ZSAmJiBiIGluc3RhbmNlb2YgRGF0ZSAmJiBhLmdldFRpbWUoKSA9PT0gYi5nZXRUaW1lKCk7XG59XG5cbmZ1bmN0aW9uIGlzTnVsbE9yVW5kZWZpbmVkKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgdW5kZWZpbmVkIHwgbnVsbCB7XG4gIHJldHVybiB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsO1xufVxuXG5mdW5jdGlvbiBpc1BhcnRpYWxWYWx1ZShcbiAgdmFsdWU6IFBhcnRpYWw8U2t5RGF0ZVJhbmdlQ2FsY3VsYXRpb24+IHwgbnVsbCB8IHVuZGVmaW5lZCxcbik6IHZhbHVlIGlzIFBhcnRpYWw8U2t5RGF0ZVJhbmdlQ2FsY3VsYXRpb24+IHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiAoXG4gICAgaXNOdWxsT3JVbmRlZmluZWQodmFsdWUpIHx8XG4gICAgaXNOdWxsT3JVbmRlZmluZWQodmFsdWUuY2FsY3VsYXRvcklkKSB8fFxuICAgICEoJ2VuZERhdGUnIGluIHZhbHVlKSB8fFxuICAgICEoJ3N0YXJ0RGF0ZScgaW4gdmFsdWUpXG4gICk7XG59XG5cbkBDb21wb25lbnQoe1xuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaG9zdDoge1xuICAgICcoZm9jdXNvdXQpJzogJ29uRm9jdXNvdXQoJGV2ZW50KScsXG4gIH0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBTa3lEYXRlcGlja2VyTW9kdWxlLFxuICAgIFNreURhdGVSYW5nZVBpY2tlckVuZERhdGVSZXNvdXJjZUtleVBpcGUsXG4gICAgU2t5RGF0ZVJhbmdlUGlja2VyU3RhcnREYXRlUmVzb3VyY2VLZXlQaXBlLFxuICAgIFNreURhdGV0aW1lUmVzb3VyY2VzTW9kdWxlLFxuICAgIFNreUlucHV0Qm94TW9kdWxlLFxuICAgIFNreUZvcm1FcnJvcnNNb2R1bGUsXG4gIF0sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gICAgICB1c2VFeGlzdGluZzogU2t5RGF0ZVJhbmdlUGlja2VyQ29tcG9uZW50LFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBTa3lEYXRlUmFuZ2VQaWNrZXJDb21wb25lbnQsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICAgIHsgcHJvdmlkZTogU0tZX0ZPUk1fRVJST1JTX0VOQUJMRUQsIHVzZVZhbHVlOiB0cnVlIH0sXG4gIF0sXG4gIHNlbGVjdG9yOiAnc2t5LWRhdGUtcmFuZ2UtcGlja2VyJyxcbiAgc3R5bGVVcmw6ICcuL2RhdGUtcmFuZ2UtcGlja2VyLmNvbXBvbmVudC5zY3NzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGUtcmFuZ2UtcGlja2VyLmNvbXBvbmVudC5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgU2t5RGF0ZVJhbmdlUGlja2VyQ29tcG9uZW50XG4gIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFZhbGlkYXRvclxue1xuICByZWFkb25seSAjZGF0ZVJhbmdlU3ZjID0gaW5qZWN0KFNreURhdGVSYW5nZVNlcnZpY2UpO1xuICByZWFkb25seSAjZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcbiAgcmVhZG9ubHkgI2VsZW1lbnRSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XG4gIHJlYWRvbmx5ICNpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG4gIHJlYWRvbmx5ICNsb2dnZXIgPSBpbmplY3QoU2t5TG9nU2VydmljZSk7XG5cbiAgLyoqXG4gICAqIElEcyBmb3IgdGhlIGRhdGUgcmFuZ2Ugb3B0aW9ucyB0byBpbmNsdWRlIGluIHRoZSBwaWNrZXIncyBkcm9wZG93bi5cbiAgICogVGhlIG9wdGlvbnMgc3BlY2lmeSBjYWxjdWxhdG9yIG9iamVjdHMgdGhhdCByZXR1cm4gdHdvIGBEYXRlYCBvYmplY3RzIHRvIHJlcHJlc2VudCBkYXRlIHJhbmdlcy5cbiAgICogQnkgZGVmYXVsdCwgdGhpcyBwcm9wZXJ0eSBpbmNsdWRlcyBhbGwgYFNreURhdGVSYW5nZUNhbGN1bGF0b3JJZGAgdmFsdWVzLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBjYWxjdWxhdG9ySWRzKFxuICAgIGNhbGN1bGF0b3JJZHM6IFNreURhdGVSYW5nZUNhbGN1bGF0b3JJZFtdIHwgdW5kZWZpbmVkLFxuICApIHtcbiAgICBjb25zdCBjdXJyZW50Q2FsY3VsYXRvcklkID0gdGhpcy4jZ2V0VmFsdWUoKS5jYWxjdWxhdG9ySWQ7XG5cbiAgICB0aGlzLiNfY2FsY3VsYXRvcklkcyA9IGNhbGN1bGF0b3JJZHMgPz8gU0tZX0RFRkFVTFRfQ0FMQ1VMQVRPUl9JRFM7XG4gICAgdGhpcy5jYWxjdWxhdG9ycyA9IHRoaXMuI2RhdGVSYW5nZVN2Yy5maWx0ZXJDYWxjdWxhdG9ycyhcbiAgICAgIHRoaXMuI19jYWxjdWxhdG9ySWRzLFxuICAgICk7XG5cbiAgICAvLyBJZiB0aGUgY3VycmVudGx5IHNlbGVjdGVkIGNhbGN1bGF0b3IgaXNuJ3QgYXZhaWxhYmxlIGFueW1vcmUsXG4gICAgLy8gc2VsZWN0IHRoZSBmaXJzdCBjYWxjdWxhdG9yIGluIHRoZSBuZXcgYXJyYXkuXG4gICAgaWYgKCF0aGlzLiNfY2FsY3VsYXRvcklkcy5pbmNsdWRlcyhjdXJyZW50Q2FsY3VsYXRvcklkKSkge1xuICAgICAgdGhpcy4jc2V0VmFsdWUoeyBjYWxjdWxhdG9ySWQ6IHRoaXMuY2FsY3VsYXRvcklkc1swXSB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IGNhbGN1bGF0b3JJZHMoKTogU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvcklkW10ge1xuICAgIHJldHVybiB0aGlzLiNfY2FsY3VsYXRvcklkcztcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgZGF0ZSBmb3JtYXQgZm9yXG4gICAqIFt0aGUgYHNreS1kYXRlcGlja2VyYCBjb21wb25lbnRzXShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2NvbXBvbmVudHMvZGF0ZXBpY2tlcilcbiAgICogdGhhdCBtYWtlIHVwIHRoZSBkYXRlIHJhbmdlIHBpY2tlci4gVGhlIHRleHQgaW5wdXQgaXMgYSBjb21wb3NpdGUgY29tcG9uZW50IG9mXG4gICAqIHVwIHRvIHR3byBgc2t5LWRhdGVwaWNrZXJgIGNvbXBvbmVudHMuXG4gICAqIEBkZWZhdWx0IFwiTU0vREQvWVlZWVwiXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgZGF0ZUZvcm1hdDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGRpc2FibGUgdGhlIGRhdGUgcmFuZ2UgcGlja2VyIG9uIHRlbXBsYXRlLWRyaXZlbiBmb3Jtcy4gRG9uJ3QgdXNlXG4gICAqIHRoaXMgaW5wdXQgb24gcmVhY3RpdmUgZm9ybXMgYmVjYXVzZSB0aGV5IG1heSBvdmVyd3JpdGUgdGhlIGlucHV0IG9yIGxlYXZlXG4gICAqIHRoZSBjb250cm9sIG91dCBvZiBzeW5jLiBUbyBzZXQgdGhlIGRpc2FibGVkIHN0YXRlIG9uIHJlYWN0aXZlIGZvcm1zLFxuICAgKiB1c2UgdGhlIGBGb3JtQ29udHJvbGAgaW5zdGVhZC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICBwdWJsaWMgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLmZvcm1Hcm91cC5kaXNhYmxlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZm9ybUdyb3VwLmVuYWJsZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgY29udGVudCBvZiB0aGUgaGVscCBwb3BvdmVyLiBXaGVuIHNwZWNpZmllZCBhbG9uZyB3aXRoIGBsYWJlbFRleHRgLCBhIFtoZWxwIGlubGluZV0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9jb21wb25lbnRzL2hlbHAtaW5saW5lKVxuICAgKiBidXR0b24gaXMgYWRkZWQgdG8gZGF0ZSByYW5nZSBwaWNrZXIuIFRoZSBoZWxwIGlubGluZSBidXR0b24gZGlzcGxheXMgYSBbcG9wb3Zlcl0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9jb21wb25lbnRzL3BvcG92ZXIpXG4gICAqIHdoZW4gY2xpY2tlZCB1c2luZyB0aGUgc3BlY2lmaWVkIGNvbnRlbnQgYW5kIG9wdGlvbmFsIHRpdGxlLiBUaGlzIHByb3BlcnR5IG9ubHkgYXBwbGllcyB3aGVuIGBsYWJlbFRleHRgIGlzIGFsc28gc3BlY2lmaWVkLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGhlbHBQb3BvdmVyQ29udGVudDogc3RyaW5nIHwgVGVtcGxhdGVSZWY8dW5rbm93bj4gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSB0aXRsZSBvZiB0aGUgaGVscCBwb3BvdmVyLiBUaGlzIHByb3BlcnR5IG9ubHkgYXBwbGllcyB3aGVuIGBoZWxwUG9wb3ZlckNvbnRlbnRgIGlzXG4gICAqIGFsc28gc3BlY2lmaWVkLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGhlbHBQb3BvdmVyVGl0bGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogW1BlcnNpc3RlbnQgaW5saW5lIGhlbHAgdGV4dF0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9kZXNpZ24vZ3VpZGVsaW5lcy91c2VyLWFzc2lzdGFuY2UjaW5saW5lLWhlbHApIHRoYXQgcHJvdmlkZXNcbiAgICogYWRkaXRpb25hbCBjb250ZXh0IHRvIHRoZSB1c2VyLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGhpbnRUZXh0OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBsYWJlbCBmb3IgdGhlIGRhdGUgcmFuZ2UgcGlja2VyLlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgdGhlIGBsYWJlbFRleHRgIGlucHV0IGluc3RlYWQuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGxhYmVsKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfbGFiZWwgPSB2YWx1ZTtcblxuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy4jbG9nZ2VyLmRlcHJlY2F0ZWQoJ1NreURhdGVSYW5nZVBpY2tlckNvbXBvbmVudC5sYWJlbCcsIHtcbiAgICAgICAgZGVwcmVjYXRpb25NYWpvclZlcnNpb246IDEwLFxuICAgICAgICByZXBsYWNlbWVudFJlY29tbWVuZGF0aW9uOiAnVXNlIHRoZSBgbGFiZWxUZXh0YCBpbnB1dCBpbnN0ZWFkLicsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IGxhYmVsKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI19sYWJlbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgdGV4dCB0byBkaXNwbGF5IGFzIHRoZSBkYXRlIHJhbmdlIHBpY2tlcidzIGxhYmVsLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGxhYmVsVGV4dDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBkYXRlIHJhbmdlIHBpY2tlciBpcyBzdGFja2VkIG9uIGFub3RoZXIgZm9ybSBjb21wb25lbnQuIFdoZW4gc3BlY2lmaWVkLCB0aGUgYXBwcm9wcmlhdGVcbiAgICogdmVydGljYWwgc3BhY2luZyBpcyBhdXRvbWF0aWNhbGx5IGFkZGVkIHRvIHRoZSBkYXRlIHJhbmdlIHBpY2tlci5cbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnNreS1mb3JtLWZpZWxkLXN0YWNrZWQnKVxuICBwdWJsaWMgc3RhY2tlZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBBIGhlbHAga2V5IHRoYXQgaWRlbnRpZmllcyB0aGUgZ2xvYmFsIGhlbHAgY29udGVudCB0byBkaXNwbGF5LiBXaGVuIHNwZWNpZmllZCBhbG9uZyB3aXRoIGBsYWJlbFRleHRgLCBhIFtoZWxwIGlubGluZV0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9jb21wb25lbnRzL2hlbHAtaW5saW5lKVxuICAgKiBidXR0b24gaXMgcGxhY2VkIGJlc2lkZSB0aGUgZGF0ZSByYW5nZSBwaWNrZXIgbGFiZWwuIENsaWNraW5nIHRoZSBidXR0b24gaW52b2tlcyBbZ2xvYmFsIGhlbHBdKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvbGVhcm4vZGV2ZWxvcC9nbG9iYWwtaGVscClcbiAgICogYXMgY29uZmlndXJlZCBieSB0aGUgYXBwbGljYXRpb24uIFRoaXMgcHJvcGVydHkgb25seSBhcHBsaWVzIHdoZW4gYGxhYmVsVGV4dGAgaXMgYWxzbyBzcGVjaWZpZWQuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgaGVscEtleTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIHByb3RlY3RlZCBjYWxjdWxhdG9ycyA9IHRoaXMuI2RhdGVSYW5nZVN2Yy5jYWxjdWxhdG9ycztcbiAgcHJvdGVjdGVkIGRhdGVwaWNrZXJzID0gdmlld0NoaWxkcmVuKFNreURhdGVwaWNrZXJDb21wb25lbnQpO1xuICBwcm90ZWN0ZWQgaG9zdENvbnRyb2w6IEFic3RyYWN0Q29udHJvbCB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIHByb3RlY3RlZCBzZWxlY3RlZENhbGN1bGF0b3IgPSB0aGlzLmNhbGN1bGF0b3JzWzBdO1xuICBwcm90ZWN0ZWQgc2hvd0VuZERhdGVQaWNrZXIgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcm90ZWN0ZWQgc2hvd1N0YXJ0RGF0ZVBpY2tlciA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG5cbiAgI19jYWxjdWxhdG9ySWRzID0gU0tZX0RFRkFVTFRfQ0FMQ1VMQVRPUl9JRFM7XG4gICNfbGFiZWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgI192YWx1ZSA9IHRoaXMuc2VsZWN0ZWRDYWxjdWxhdG9yLmdldFZhbHVlKCk7XG5cbiAgI2hvc3RIYXNDdXN0b21FcnJvcjogU2lnbmFsPGJvb2xlYW4gfCB1bmRlZmluZWQ+IHwgdW5kZWZpbmVkO1xuICAjbm90aWZ5Q2hhbmdlOiAoKF86IFNreURhdGVSYW5nZUNhbGN1bGF0aW9uKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDtcbiAgI25vdGlmeVRvdWNoZWQ6ICgoKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDtcblxuICAjY2FsY3VsYXRvcklkQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbDxudW1iZXI+KFxuICAgIHRoaXMuI2dldFZhbHVlKCkuY2FsY3VsYXRvcklkLFxuICAgIHsgbm9uTnVsbGFibGU6IHRydWUgfSxcbiAgKTtcbiAgI2NhbGN1bGF0b3JJZEludmFsaWQgPSB0aGlzLiNjcmVhdGVTdGF0dXNDaGFuZ2VTaWduYWwoXG4gICAgdGhpcy4jY2FsY3VsYXRvcklkQ29udHJvbCxcbiAgKTtcbiAgI2NhbGN1bGF0b3JJZFRvdWNoZWQgPSB0aGlzLiNjcmVhdGVUb3VjaGVkQ2hhbmdlU2lnbmFsKFxuICAgIHRoaXMuI2NhbGN1bGF0b3JJZENvbnRyb2wsXG4gICk7XG5cbiAgI2VuZERhdGVDb250cm9sID0gbmV3IEZvcm1Db250cm9sPERhdGVWYWx1ZT4odGhpcy4jZ2V0VmFsdWUoKS5lbmREYXRlKTtcbiAgI2VuZERhdGVJbnZhbGlkID0gdGhpcy4jY3JlYXRlU3RhdHVzQ2hhbmdlU2lnbmFsKHRoaXMuI2VuZERhdGVDb250cm9sKTtcbiAgI2VuZERhdGVUb3VjaGVkID0gdGhpcy4jY3JlYXRlVG91Y2hlZENoYW5nZVNpZ25hbCh0aGlzLiNlbmREYXRlQ29udHJvbCk7XG5cbiAgI3N0YXJ0RGF0ZUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2w8RGF0ZVZhbHVlPih0aGlzLiNnZXRWYWx1ZSgpLnN0YXJ0RGF0ZSk7XG4gICNzdGFydERhdGVJbnZhbGlkID0gdGhpcy4jY3JlYXRlU3RhdHVzQ2hhbmdlU2lnbmFsKHRoaXMuI3N0YXJ0RGF0ZUNvbnRyb2wpO1xuICAjc3RhcnREYXRlVG91Y2hlZCA9IHRoaXMuI2NyZWF0ZVRvdWNoZWRDaGFuZ2VTaWduYWwodGhpcy4jc3RhcnREYXRlQ29udHJvbCk7XG5cbiAgcHJvdGVjdGVkIGZvcm1Hcm91cCA9IGluamVjdChGb3JtQnVpbGRlcikuZ3JvdXAoe1xuICAgIGNhbGN1bGF0b3JJZDogdGhpcy4jY2FsY3VsYXRvcklkQ29udHJvbCxcbiAgICBzdGFydERhdGU6IHRoaXMuI3N0YXJ0RGF0ZUNvbnRyb2wsXG4gICAgZW5kRGF0ZTogdGhpcy4jZW5kRGF0ZUNvbnRyb2wsXG4gIH0pO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBjYWxjdWxhdG9ySWRIYXNFcnJvcnMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgdG91Y2hlZCA9IHRoaXMuI2NhbGN1bGF0b3JJZFRvdWNoZWQoKTtcbiAgICBjb25zdCBpbnZhbGlkID0gdGhpcy4jY2FsY3VsYXRvcklkSW52YWxpZCgpIHx8IHRoaXMuI2hvc3RIYXNDdXN0b21FcnJvcj8uKCk7XG4gICAgcmV0dXJuIHRvdWNoZWQgJiYgaW52YWxpZDtcbiAgfSk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGVuZERhdGVIYXNFcnJvcnMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgY2FsY3VsYXRvcklkSGFzRXJyb3JzID0gdGhpcy5jYWxjdWxhdG9ySWRIYXNFcnJvcnMoKTtcbiAgICBjb25zdCB0b3VjaGVkID0gdGhpcy4jZW5kRGF0ZVRvdWNoZWQoKTtcbiAgICBjb25zdCBpbnZhbGlkID0gdGhpcy4jZW5kRGF0ZUludmFsaWQoKTtcblxuICAgIHJldHVybiBjYWxjdWxhdG9ySWRIYXNFcnJvcnMgfHwgKHRvdWNoZWQgJiYgaW52YWxpZCk7XG4gIH0pO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBzdGFydERhdGVIYXNFcnJvcnMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgY2FsY3VsYXRvcklkSGFzRXJyb3JzID0gdGhpcy5jYWxjdWxhdG9ySWRIYXNFcnJvcnMoKTtcbiAgICBjb25zdCB0b3VjaGVkID0gdGhpcy4jc3RhcnREYXRlVG91Y2hlZCgpO1xuICAgIGNvbnN0IGludmFsaWQgPSB0aGlzLiNzdGFydERhdGVJbnZhbGlkKCk7XG5cbiAgICByZXR1cm4gY2FsY3VsYXRvcklkSGFzRXJyb3JzIHx8ICh0b3VjaGVkICYmIGludmFsaWQpO1xuICB9KTtcblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaG9zdENvbnRyb2wgPSB0aGlzLiNpbmplY3Rvci5nZXQoTmdDb250cm9sLCBudWxsLCB7XG4gICAgICBvcHRpb25hbDogdHJ1ZSxcbiAgICAgIHNlbGY6IHRydWUsXG4gICAgfSk/LmNvbnRyb2w7XG5cbiAgICBydW5JbkluamVjdGlvbkNvbnRleHQodGhpcy4jaW5qZWN0b3IsICgpID0+IHtcbiAgICAgIGlmICh0aGlzLmhvc3RDb250cm9sKSB7XG4gICAgICAgIHRoaXMuI2hvc3RIYXNDdXN0b21FcnJvciA9IHRoaXMuI2NyZWF0ZUhvc3RDdXN0b21FcnJvckNoYW5nZVNpZ25hbChcbiAgICAgICAgICB0aGlzLmhvc3RDb250cm9sLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gU2V0IGEgZGVmYXVsdCB2YWx1ZSBvbiB0aGUgY29udHJvbCBpZiBpdCdzIHVuZGVmaW5lZCBvbiBpbml0LlxuICAgIC8vIFdlIG5lZWQgdG8gdXNlIHNldFRpbWVvdXQgdG8gYXZvaWQgaW50ZXJmZXJpbmcgd2l0aCB0aGUgZmlyc3RcbiAgICAvLyB2YWxpZGF0aW9uIGN5Y2xlLlxuICAgIGlmIChpc1BhcnRpYWxWYWx1ZSh0aGlzLmhvc3RDb250cm9sPy52YWx1ZSkpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmhvc3RDb250cm9sPy5zZXRWYWx1ZSh0aGlzLiNnZXRWYWx1ZSgpLCB7XG4gICAgICAgICAgZW1pdEV2ZW50OiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBJZiB0aGUgZGF0ZXBpY2tlcnMnIHN0YXR1c2VzIGNoYW5nZSwgd2Ugd2FudCB0byByZXRyaWdnZXIgdGhlIGhvc3RcbiAgICAvLyBjb250cm9sJ3MgdmFsaWRhdGlvbiBzbyB0aGF0IHRoZWlyIGVycm9ycyBhcmUgcmVmbGVjdGVkIGJhY2sgdG8gdGhlIGhvc3QuXG4gICAgdGhpcy5mb3JtR3JvdXAuZXZlbnRzXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKChldnQpID0+IGV2dCBpbnN0YW5jZW9mIFN0YXR1c0NoYW5nZUV2ZW50KSxcbiAgICAgICAgbWFwKChldnQ6IFN0YXR1c0NoYW5nZUV2ZW50KSA9PiBldnQuc3RhdHVzKSxcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuI2Rlc3Ryb3lSZWYpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuaG9zdENvbnRyb2w/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe1xuICAgICAgICAgIGVtaXRFdmVudDogZmFsc2UsXG4gICAgICAgICAgb25seVNlbGY6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAvLyBNYXJrIGFsbCBmaWVsZHMgYXMgdG91Y2hlZCBpZiB0aGUgaG9zdCBjb250cm9sIGlzIHRvdWNoZWQuXG4gICAgdGhpcy5ob3N0Q29udHJvbD8uZXZlbnRzXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKChldnQpID0+IGV2dCBpbnN0YW5jZW9mIFRvdWNoZWRDaGFuZ2VFdmVudCksXG4gICAgICAgIG1hcCgoZXZ0OiBUb3VjaGVkQ2hhbmdlRXZlbnQpID0+IGV2dC50b3VjaGVkKSxcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuI2Rlc3Ryb3lSZWYpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuZm9ybUdyb3VwLm1hcmtBbGxBc1RvdWNoZWQoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgLy8gSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci5cbiAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46IChfOiB1bmtub3duKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy4jbm90aWZ5Q2hhbmdlID0gZm47XG4gIH1cblxuICAvLyBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLiNub3RpZnlUb3VjaGVkID0gZm47XG4gIH1cblxuICAvLyBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICBwdWJsaWMgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gIH1cblxuICAvLyBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIFZhbGlkYXRvci5cbiAgcHVibGljIHZhbGlkYXRlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICBsZXQgZXJyb3JzOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9IG51bGw7XG5cbiAgICBjb25zdCBjYWxjdWxhdG9yRXJyb3JzID0gdGhpcy5zZWxlY3RlZENhbGN1bGF0b3IudmFsaWRhdGUoY29udHJvbC52YWx1ZSk7XG4gICAgY29uc3Qgc3RhcnREYXRlRXJyb3JzID0gdGhpcy4jc3RhcnREYXRlQ29udHJvbC5lcnJvcnM7XG4gICAgY29uc3QgZW5kRGF0ZUVycm9ycyA9IHRoaXMuI2VuZERhdGVDb250cm9sLmVycm9ycztcblxuICAgIGlmIChjYWxjdWxhdG9yRXJyb3JzKSB7XG4gICAgICBlcnJvcnMgPSB7XG4gICAgICAgIHNreURhdGVSYW5nZToge1xuICAgICAgICAgIGNhbGN1bGF0b3JJZDogdGhpcy4jZ2V0VmFsdWUoKS5jYWxjdWxhdG9ySWQsXG4gICAgICAgICAgZXJyb3JzOiBjYWxjdWxhdG9yRXJyb3JzLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBTZXQgY2FsY3VsYXRvciBlcnJvcnMgb24gdGhlIHNlbGVjdCBzbyB0aGF0IHRoZXkgYXBwZWFyIGJlbmVhdGggaXQuXG4gICAgdGhpcy4jY2FsY3VsYXRvcklkQ29udHJvbC5zZXRFcnJvcnMoZXJyb3JzKTtcblxuICAgIGlmICh0aGlzLnNob3dTdGFydERhdGVQaWNrZXIoKSAmJiBzdGFydERhdGVFcnJvcnMpIHtcbiAgICAgIGVycm9ycyB8fD0ge307XG4gICAgICBlcnJvcnMgPSB7IC4uLmVycm9ycywgLi4uc3RhcnREYXRlRXJyb3JzIH07XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc2hvd0VuZERhdGVQaWNrZXIoKSAmJiBlbmREYXRlRXJyb3JzKSB7XG4gICAgICBlcnJvcnMgfHw9IHt9O1xuICAgICAgZXJyb3JzID0geyAuLi5lcnJvcnMsIC4uLmVuZERhdGVFcnJvcnMgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gZXJyb3JzO1xuICB9XG5cbiAgLy8gSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci5cbiAgLy8gVGhlIGRhdGUgcmFuZ2UgcGlja2VyIGFsd2F5cyBoYXMgYSB2YWx1ZSwgc28gaWYgdGhlIGNvbnN1bWVyIHBhc3NlcyBpbiBhXG4gIC8vIHBhcnRpYWwgdmFsdWUgKHZpYSBgcGF0Y2hWYWx1ZWApIG9yIG51bGwsIHdlIG5lZWQgdG8gdXBkYXRlIHRoZSBob3N0IGNvbnRyb2wnc1xuICAvLyB2YWx1ZSB3aXRoIHRoZSBjb21wbGV0ZSB2YWx1ZSBhZnRlciBpdCdzIGJlZW4gbW9kaWZpZWQuXG4gIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiBQYXJ0aWFsPFNreURhdGVSYW5nZUNhbGN1bGF0aW9uPiB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIHRoaXMuI3BhdGNoVmFsdWUodmFsdWUpO1xuXG4gICAgLy8gVXBkYXRlIHRoZSBob3N0IGNvbnRyb2wgaWYgaXQgaXMgc2V0IHRvIGEgcGFydGlhbCBvciBudWxsIHZhbHVlLlxuICAgIGlmIChpc1BhcnRpYWxWYWx1ZSh2YWx1ZSkpIHtcbiAgICAgIHRoaXMuaG9zdENvbnRyb2w/LnNldFZhbHVlKHRoaXMuI2dldFZhbHVlKCksIHtcbiAgICAgICAgZW1pdEV2ZW50OiBmYWxzZSxcbiAgICAgICAgb25seVNlbGY6IHRydWUsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRmlyZXMgd2hlbiBhIHVzZXIgY2hhbmdlcyB0aGUgc2VsZWN0ZWQgY2FsY3VsYXRvciBJRC5cbiAgICovXG4gIHByb3RlY3RlZCBvbkNhbGN1bGF0b3JJZENoYW5nZSgpOiB2b2lkIHtcbiAgICAvLyBSZXNldCB0aGUgdmFsdWUgd2hlbiB0aGUgY2FsY3VsYXRvciBJRCBjaGFuZ2VzLlxuICAgIHRoaXMuI3NldFZhbHVlKHsgY2FsY3VsYXRvcklkOiArdGhpcy4jY2FsY3VsYXRvcklkQ29udHJvbC52YWx1ZSB9KTtcbiAgICB0aGlzLm9uRGF0ZUNoYW5nZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gYSB1c2VyIGludGVyYWN0cyB3aXRoIGEgZGF0ZSByYW5nZSBwaWNrZXIuXG4gICAqL1xuICBwcm90ZWN0ZWQgb25EYXRlQ2hhbmdlKCk6IHZvaWQge1xuICAgIC8vIFdhaXQgdW50aWwgdGhlIGZvcm0gY29udHJvbCBpcyB1cGRhdGVkIGJlZm9yZSByZXRyaWV2aW5nIGl0cyB2YWx1ZS5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuI25vdGlmeUNoYW5nZT8uKFxuICAgICAgICB0aGlzLmZvcm1Hcm91cC5nZXRSYXdWYWx1ZSgpIGFzIFNreURhdGVSYW5nZUNhbGN1bGF0aW9uLFxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHRoZSBkYXRlIHJhbmdlIHBpY2tlciBsb3NlcyBmb2N1cy5cbiAgICovXG4gIHByb3RlY3RlZCBvbkZvY3Vzb3V0KHsgcmVsYXRlZFRhcmdldCB9OiBGb2N1c0V2ZW50KTogdm9pZCB7XG4gICAgaWYgKFxuICAgICAgcmVsYXRlZFRhcmdldCAmJlxuICAgICAgIXRoaXMuI2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhyZWxhdGVkVGFyZ2V0KSAmJlxuICAgICAgIXRoaXMuZGF0ZXBpY2tlcnMoKS5zb21lKChwaWNrZXIpID0+IHBpY2tlci5jb250YWluc1RhcmdldChyZWxhdGVkVGFyZ2V0KSlcbiAgICApIHtcbiAgICAgIHRoaXMuI25vdGlmeVRvdWNoZWQ/LigpO1xuICAgIH1cbiAgfVxuXG4gICNnZXRDYWxjdWxhdG9yKGNhbGN1bGF0b3JJZDogbnVtYmVyKTogU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvciB7XG4gICAgY29uc3QgZm91bmQgPSB0aGlzLmNhbGN1bGF0b3JzLmZpbmQoKGMpID0+IGMuY2FsY3VsYXRvcklkID09PSBjYWxjdWxhdG9ySWQpO1xuXG4gICAgLyppc3RhbmJ1bCBpZ25vcmUgaWY6IHNhZmV0eSBjaGVjayovXG4gICAgaWYgKCFmb3VuZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgQSBkYXRlIHJhbmdlIGNhbGN1bGF0b3Igd2l0aCBJRCAoJHtjYWxjdWxhdG9ySWR9KSBjb3VsZCBub3QgYmUgZm91bmQuYCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZvdW5kO1xuICB9XG5cbiAgI2dldFZhbHVlKCk6IFNreURhdGVSYW5nZUNhbGN1bGF0aW9uIHtcbiAgICAvLyBJbXBvcnRhbnQhIFJldHVybiBhIGNsb25lIHRvIGF2b2lkIGNoYW5naW5nIHRoZSBwcm9wZXJ0aWVzIGJ5IHJlZmVyZW5jZS5cbiAgICByZXR1cm4geyAuLi50aGlzLiNfdmFsdWUgfTtcbiAgfVxuXG4gICNwYXRjaFZhbHVlKFxuICAgIHBhcnRpYWxWYWx1ZTogUGFydGlhbDxTa3lEYXRlUmFuZ2VDYWxjdWxhdGlvbj4gfCBudWxsIHwgdW5kZWZpbmVkLFxuICApOiB2b2lkIHtcbiAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQocGFydGlhbFZhbHVlKSkge1xuICAgICAgdGhpcy4jc2V0VmFsdWUobnVsbCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgb2xkVmFsdWUgPSB0aGlzLiNnZXRWYWx1ZSgpO1xuXG4gICAgLy8gSWYgdGhlIG5ldyBJRCBpcyBkaXN0aW5jdCwgZXJhc2UgdGhlIG9sZCBzdGFydCBhbmQgZW5kIGRhdGVzIGJlY2F1c2VcbiAgICAvLyB0aGV5J3JlIG5vIGxvbmdlciBhcHBsaWNhYmxlLlxuICAgIGlmIChcbiAgICAgICFpc051bGxPclVuZGVmaW5lZChwYXJ0aWFsVmFsdWUuY2FsY3VsYXRvcklkKSAmJlxuICAgICAgb2xkVmFsdWUuY2FsY3VsYXRvcklkICE9PSBwYXJ0aWFsVmFsdWUuY2FsY3VsYXRvcklkXG4gICAgKSB7XG4gICAgICBkZWxldGUgb2xkVmFsdWUuZW5kRGF0ZTtcbiAgICAgIGRlbGV0ZSBvbGRWYWx1ZS5zdGFydERhdGU7XG4gICAgfVxuXG4gICAgY29uc3QgdmFsdWUgPSB7XG4gICAgICAuLi5vbGRWYWx1ZSxcbiAgICAgIC4uLnBhcnRpYWxWYWx1ZSxcbiAgICB9O1xuXG4gICAgdGhpcy4jc2V0VmFsdWUodmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHZhbHVlIHRvIGJlIHVzZWQgYnkgdGhlIGRhdGUgcmFuZ2UgcGlja2VyIGZvcm0gY29udHJvbC5cbiAgICovXG4gICNzZXRWYWx1ZSh2YWx1ZTogU2t5RGF0ZVJhbmdlQ2FsY3VsYXRpb24gfCBudWxsIHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgY29uc3Qgb2xkVmFsdWUgPSB0aGlzLiNnZXRWYWx1ZSgpO1xuXG4gICAgY29uc3QgaXNWYWx1ZUVtcHR5ID0gIXZhbHVlIHx8IGlzTnVsbE9yVW5kZWZpbmVkKHZhbHVlLmNhbGN1bGF0b3JJZCk7XG4gICAgY29uc3QgdmFsdWVPckRlZmF1bHQgPSBpc1ZhbHVlRW1wdHlcbiAgICAgID8gdGhpcy5jYWxjdWxhdG9yc1swXS5nZXRWYWx1ZSgpXG4gICAgICA6IHtcbiAgICAgICAgICAuLi50aGlzLiNnZXRDYWxjdWxhdG9yKHZhbHVlLmNhbGN1bGF0b3JJZCkuZ2V0VmFsdWUoKSxcbiAgICAgICAgICAuLi52YWx1ZSxcbiAgICAgICAgfTtcblxuICAgIC8vIEVuc3VyZSBmYWxzeSB2YWx1ZXMgYXJlIHNldCB0byBudWxsLlxuICAgIHZhbHVlT3JEZWZhdWx0LmVuZERhdGUgPSB2YWx1ZU9yRGVmYXVsdC5lbmREYXRlIHx8IG51bGw7XG4gICAgdmFsdWVPckRlZmF1bHQuc3RhcnREYXRlID0gdmFsdWVPckRlZmF1bHQuc3RhcnREYXRlIHx8IG51bGw7XG5cbiAgICBpZiAoIWFyZURhdGVSYW5nZXNFcXVhbChvbGRWYWx1ZSwgdmFsdWVPckRlZmF1bHQpKSB7XG4gICAgICB0aGlzLiNfdmFsdWUgPSB2YWx1ZU9yRGVmYXVsdDtcblxuICAgICAgaWYgKG9sZFZhbHVlLmNhbGN1bGF0b3JJZCAhPT0gdmFsdWVPckRlZmF1bHQuY2FsY3VsYXRvcklkKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDYWxjdWxhdG9yID0gdGhpcy4jZ2V0Q2FsY3VsYXRvcihcbiAgICAgICAgICB2YWx1ZU9yRGVmYXVsdC5jYWxjdWxhdG9ySWQsXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy4jdXBkYXRlUGlja2VyVmlzaWJpbGl0eSh0aGlzLnNlbGVjdGVkQ2FsY3VsYXRvcik7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZm9ybUdyb3VwLnBhdGNoVmFsdWUodmFsdWVPckRlZmF1bHQpO1xuICAgIH1cbiAgfVxuXG4gICN1cGRhdGVQaWNrZXJWaXNpYmlsaXR5KGNhbGN1bGF0b3I6IFNreURhdGVSYW5nZUNhbGN1bGF0b3IpOiB2b2lkIHtcbiAgICBsZXQgc2hvd0VuZERhdGVQaWNrZXIgPSBmYWxzZTtcbiAgICBsZXQgc2hvd1N0YXJ0RGF0ZVBpY2tlciA9IGZhbHNlO1xuXG4gICAgc3dpdGNoIChjYWxjdWxhdG9yLnR5cGUpIHtcbiAgICAgIGNhc2UgU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvclR5cGUuQmVmb3JlOlxuICAgICAgICBzaG93RW5kRGF0ZVBpY2tlciA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFNreURhdGVSYW5nZUNhbGN1bGF0b3JUeXBlLkFmdGVyOlxuICAgICAgICBzaG93U3RhcnREYXRlUGlja2VyID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvclR5cGUuUmFuZ2U6XG4gICAgICAgIHNob3dFbmREYXRlUGlja2VyID0gdHJ1ZTtcbiAgICAgICAgc2hvd1N0YXJ0RGF0ZVBpY2tlciA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICB0aGlzLnNob3dFbmREYXRlUGlja2VyLnNldChzaG93RW5kRGF0ZVBpY2tlcik7XG4gICAgdGhpcy5zaG93U3RhcnREYXRlUGlja2VyLnNldChzaG93U3RhcnREYXRlUGlja2VyKTtcbiAgfVxuXG4gICNjcmVhdGVIb3N0Q3VzdG9tRXJyb3JDaGFuZ2VTaWduYWwoXG4gICAgY29udHJvbDogQWJzdHJhY3RDb250cm9sLFxuICApOiBTaWduYWw8Ym9vbGVhbiB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiB0b1NpZ25hbChcbiAgICAgIGNvbnRyb2wuZXZlbnRzLnBpcGUoXG4gICAgICAgIGZpbHRlcigoZXZ0KSA9PiBldnQgaW5zdGFuY2VvZiBTdGF0dXNDaGFuZ2VFdmVudCksXG4gICAgICAgIG1hcCgoZXZ0OiBTdGF0dXNDaGFuZ2VFdmVudCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGVycm9ycyA9IGV2dC5zb3VyY2UuZXJyb3JzID8/IFtdO1xuICAgICAgICAgIGNvbnN0IGtub3duRXJyb3JzID0gWydyZXF1aXJlZCcsICdza3lEYXRlJ107XG5cbiAgICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMoZXJyb3JzKS5zb21lKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgcmV0dXJuICFrbm93bkVycm9ycy5pbmNsdWRlcyhlcnJvcik7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pLFxuICAgICAgKSxcbiAgICApO1xuICB9XG5cbiAgI2NyZWF0ZVN0YXR1c0NoYW5nZVNpZ25hbChjb250cm9sOiBGb3JtQ29udHJvbCk6IFNpZ25hbDxib29sZWFuIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIHRvU2lnbmFsKFxuICAgICAgY29udHJvbC5ldmVudHMucGlwZShcbiAgICAgICAgZmlsdGVyKChldnQpID0+IGV2dCBpbnN0YW5jZW9mIFN0YXR1c0NoYW5nZUV2ZW50KSxcbiAgICAgICAgbWFwKChldnQ6IFN0YXR1c0NoYW5nZUV2ZW50KSA9PiBldnQuc3RhdHVzID09PSAnSU5WQUxJRCcpLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy4jZGVzdHJveVJlZiksXG4gICAgICApLFxuICAgICk7XG4gIH1cblxuICAjY3JlYXRlVG91Y2hlZENoYW5nZVNpZ25hbChcbiAgICBjb250cm9sOiBGb3JtQ29udHJvbCxcbiAgKTogU2lnbmFsPGJvb2xlYW4gfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gdG9TaWduYWwoXG4gICAgICBjb250cm9sLmV2ZW50cy5waXBlKFxuICAgICAgICBmaWx0ZXIoKGV2dCkgPT4gZXZ0IGluc3RhbmNlb2YgVG91Y2hlZENoYW5nZUV2ZW50KSxcbiAgICAgICAgbWFwKChldnQ6IFRvdWNoZWRDaGFuZ2VFdmVudCkgPT4gZXZ0LnRvdWNoZWQpLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy4jZGVzdHJveVJlZiksXG4gICAgICApLFxuICAgICk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJza3ktZGF0ZS1yYW5nZS1waWNrZXJcIiBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJza3ktZGF0ZS1yYW5nZS1waWNrZXItZm9ybS1ncm91cCBza3ktZGF0ZS1yYW5nZS1waWNrZXItc2VsZWN0LWNhbGN1bGF0b3JcIlxuICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICdza3ktZGF0ZS1yYW5nZS1waWNrZXItbGFzdC1pbnB1dCc6XG4gICAgICAgICFzaG93U3RhcnREYXRlUGlja2VyKCkgJiYgIXNob3dFbmREYXRlUGlja2VyKClcbiAgICB9XCJcbiAgPlxuICAgIDxza3ktaW5wdXQtYm94XG4gICAgICBbaGFzRXJyb3JzXT1cImNhbGN1bGF0b3JJZEhhc0Vycm9ycygpXCJcbiAgICAgIFtoZWxwS2V5XT1cImhlbHBLZXlcIlxuICAgICAgW2hlbHBQb3BvdmVyQ29udGVudF09XCJoZWxwUG9wb3ZlckNvbnRlbnRcIlxuICAgICAgW2hlbHBQb3BvdmVyVGl0bGVdPVwiaGVscFBvcG92ZXJUaXRsZVwiXG4gICAgICBbaGludFRleHRdPVwiaGludFRleHRcIlxuICAgICAgW2xhYmVsVGV4dF09XCJcbiAgICAgICAgbGFiZWxUZXh0IHx8XG4gICAgICAgIGxhYmVsIHx8XG4gICAgICAgICgnc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZGVmYXVsdF9sYWJlbCcgfCBza3lMaWJSZXNvdXJjZXMpXG4gICAgICBcIlxuICAgID5cbiAgICAgIDxzZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwiY2FsY3VsYXRvcklkXCIgKGNoYW5nZSk9XCJvbkNhbGN1bGF0b3JJZENoYW5nZSgpXCI+XG4gICAgICAgIEBmb3IgKGNhbGN1bGF0b3Igb2YgY2FsY3VsYXRvcnM7IHRyYWNrIGNhbGN1bGF0b3IuY2FsY3VsYXRvcklkKSB7XG4gICAgICAgICAgPG9wdGlvbiBbdmFsdWVdPVwiY2FsY3VsYXRvci5jYWxjdWxhdG9ySWRcIj5cbiAgICAgICAgICAgIHt7IGNhbGN1bGF0b3Iuc2hvcnREZXNjcmlwdGlvbiQgfCBhc3luYyB9fVxuICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICB9XG4gICAgICA8L3NlbGVjdD5cbiAgICAgIEBpZiAoXG4gICAgICAgIGhvc3RDb250cm9sPy5lcnJvcnM/Llsnc2t5RGF0ZVJhbmdlJ10/LmVycm9ycz8uW1xuICAgICAgICAgICdlbmREYXRlQmVmb3JlU3RhcnREYXRlJ1xuICAgICAgICBdICYmIGxhYmVsVGV4dFxuICAgICAgKSB7XG4gICAgICAgIDxza3ktZm9ybS1lcnJvclxuICAgICAgICAgIGVycm9yTmFtZT1cImVuZERhdGVCZWZvcmVTdGFydERhdGVcIlxuICAgICAgICAgIFtlcnJvclRleHRdPVwiXG4gICAgICAgICAgICAnc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZW5kX2RhdGVfYmVmb3JlX3N0YXJ0X2RhdGVfZXJyb3JfbGFiZWxfdGV4dCdcbiAgICAgICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXNcbiAgICAgICAgICBcIlxuICAgICAgICAvPlxuICAgICAgfVxuICAgICAgPHNwYW4gY2xhc3M9XCJza3ktaW5wdXQtYm94LWRlc2NlbmRlbnQtZm9ybS1lcnJvclwiPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJza3ktZm9ybS1lcnJvclwiIC8+XG4gICAgICA8L3NwYW4+XG4gICAgPC9za3ktaW5wdXQtYm94PlxuICA8L2Rpdj5cbiAgPGRpdlxuICAgIGNsYXNzPVwic2t5LWRhdGUtcmFuZ2UtcGlja2VyLWZvcm0tZ3JvdXAgc2t5LWRhdGUtcmFuZ2UtZGF0ZXBpY2tlci13cmFwcGVyIHNreS1kYXRlLXJhbmdlLXBpY2tlci1zdGFydC1kYXRlXCJcbiAgICBbaGlkZGVuXT1cIiFzaG93U3RhcnREYXRlUGlja2VyKClcIlxuICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICdza3ktZGF0ZS1yYW5nZS1waWNrZXItbGFzdC1pbnB1dCc6XG4gICAgICAgIHNob3dTdGFydERhdGVQaWNrZXIoKSAmJiAhc2hvd0VuZERhdGVQaWNrZXIoKVxuICAgIH1cIlxuICA+XG4gICAgPHNreS1pbnB1dC1ib3hcbiAgICAgIFtoYXNFcnJvcnNdPVwic3RhcnREYXRlSGFzRXJyb3JzKClcIlxuICAgICAgW2xhYmVsVGV4dF09XCJcbiAgICAgICAgc2VsZWN0ZWRDYWxjdWxhdG9yLnR5cGVcbiAgICAgICAgICB8IHNreURhdGVSYW5nZVBpY2tlclN0YXJ0RGF0ZVJlc291cmNlS2V5XG4gICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXNcbiAgICAgIFwiXG4gICAgPlxuICAgICAgPHNreS1kYXRlcGlja2VyIChjYWxlbmRhckRhdGVDaGFuZ2UpPVwib25EYXRlQ2hhbmdlKClcIj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwic3RhcnREYXRlXCJcbiAgICAgICAgICBuYW1lPVwic3RhcnREYXRlXCJcbiAgICAgICAgICBza3lEYXRlcGlja2VySW5wdXRcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgICAgIGxhYmVsVGV4dCB8fCBsYWJlbFxuICAgICAgICAgICAgICA/ICgnc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZGVmYXVsdF9hcmlhX2xhYmVsJ1xuICAgICAgICAgICAgICAgIHwgc2t5TGliUmVzb3VyY2VzXG4gICAgICAgICAgICAgICAgICA6IChzZWxlY3RlZENhbGN1bGF0b3IudHlwZVxuICAgICAgICAgICAgICAgICAgICAgIHwgc2t5RGF0ZVJhbmdlUGlja2VyU3RhcnREYXRlUmVzb3VyY2VLZXlcbiAgICAgICAgICAgICAgICAgICAgICB8IHNreUxpYlJlc291cmNlcylcbiAgICAgICAgICAgICAgICAgIDogKGxhYmVsVGV4dCA/IGxhYmVsVGV4dCA6IGxhYmVsKSlcbiAgICAgICAgICAgICAgOiAoc2VsZWN0ZWRDYWxjdWxhdG9yLnR5cGVcbiAgICAgICAgICAgICAgICB8IHNreURhdGVSYW5nZVBpY2tlclN0YXJ0RGF0ZVJlc291cmNlS2V5XG4gICAgICAgICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXMpXG4gICAgICAgICAgXCJcbiAgICAgICAgICBbZGF0ZUZvcm1hdF09XCJkYXRlRm9ybWF0XCJcbiAgICAgICAgICBbcmVxdWlyZWRdPVwic2hvd1N0YXJ0RGF0ZVBpY2tlcigpXCJcbiAgICAgICAgICAoY2hhbmdlKT1cIm9uRGF0ZUNoYW5nZSgpXCJcbiAgICAgICAgLz5cbiAgICAgIDwvc2t5LWRhdGVwaWNrZXI+XG4gICAgPC9za3ktaW5wdXQtYm94PlxuICA8L2Rpdj5cbiAgPGRpdlxuICAgIGNsYXNzPVwic2t5LWRhdGUtcmFuZ2UtcGlja2VyLWZvcm0tZ3JvdXAgc2t5LWRhdGUtcmFuZ2UtZGF0ZXBpY2tlci13cmFwcGVyIHNreS1kYXRlLXJhbmdlLXBpY2tlci1lbmQtZGF0ZVwiXG4gICAgW2hpZGRlbl09XCIhc2hvd0VuZERhdGVQaWNrZXIoKVwiXG4gICAgW25nQ2xhc3NdPVwieyAnc2t5LWRhdGUtcmFuZ2UtcGlja2VyLWxhc3QtaW5wdXQnOiBzaG93RW5kRGF0ZVBpY2tlcigpIH1cIlxuICA+XG4gICAgPHNreS1pbnB1dC1ib3hcbiAgICAgIFtoYXNFcnJvcnNdPVwiZW5kRGF0ZUhhc0Vycm9ycygpXCJcbiAgICAgIFtsYWJlbFRleHRdPVwiXG4gICAgICAgIHNlbGVjdGVkQ2FsY3VsYXRvci50eXBlXG4gICAgICAgICAgfCBza3lEYXRlUmFuZ2VQaWNrZXJFbmREYXRlUmVzb3VyY2VLZXlcbiAgICAgICAgICB8IHNreUxpYlJlc291cmNlc1xuICAgICAgXCJcbiAgICA+XG4gICAgICA8c2t5LWRhdGVwaWNrZXIgKGNhbGVuZGFyRGF0ZUNoYW5nZSk9XCJvbkRhdGVDaGFuZ2UoKVwiPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJlbmREYXRlXCJcbiAgICAgICAgICBuYW1lPVwiZW5kRGF0ZVwiXG4gICAgICAgICAgc2t5RGF0ZXBpY2tlcklucHV0XG4gICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICAgICBsYWJlbFRleHQgfHwgbGFiZWxcbiAgICAgICAgICAgICAgPyAoJ3NreXV4X2RhdGVfcmFuZ2VfcGlja2VyX2RlZmF1bHRfYXJpYV9sYWJlbCdcbiAgICAgICAgICAgICAgICB8IHNreUxpYlJlc291cmNlc1xuICAgICAgICAgICAgICAgICAgOiAoc2VsZWN0ZWRDYWxjdWxhdG9yLnR5cGVcbiAgICAgICAgICAgICAgICAgICAgICB8IHNreURhdGVSYW5nZVBpY2tlckVuZERhdGVSZXNvdXJjZUtleVxuICAgICAgICAgICAgICAgICAgICAgIHwgc2t5TGliUmVzb3VyY2VzKVxuICAgICAgICAgICAgICAgICAgOiAobGFiZWxUZXh0ID8gbGFiZWxUZXh0IDogbGFiZWwpKVxuICAgICAgICAgICAgICA6IChzZWxlY3RlZENhbGN1bGF0b3IudHlwZVxuICAgICAgICAgICAgICAgIHwgc2t5RGF0ZVJhbmdlUGlja2VyRW5kRGF0ZVJlc291cmNlS2V5XG4gICAgICAgICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXMpXG4gICAgICAgICAgXCJcbiAgICAgICAgICBbZGF0ZUZvcm1hdF09XCJkYXRlRm9ybWF0XCJcbiAgICAgICAgICBbcmVxdWlyZWRdPVwic2hvd0VuZERhdGVQaWNrZXIoKVwiXG4gICAgICAgICAgKGNoYW5nZSk9XCJvbkRhdGVDaGFuZ2UoKVwiXG4gICAgICAgIC8+XG4gICAgICA8L3NreS1kYXRlcGlja2VyPlxuICAgIDwvc2t5LWlucHV0LWJveD5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==","import { NgModule } from '@angular/core';\nimport { SkyFormErrorModule } from '@skyux/forms';\nimport { SkyDateRangePickerComponent } from './date-range-picker.component';\nimport * as i0 from \"@angular/core\";\nexport class SkyDateRangePickerModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDateRangePickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDateRangePickerModule, imports: [SkyDateRangePickerComponent], exports: [SkyDateRangePickerComponent, SkyFormErrorModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDateRangePickerModule, imports: [SkyDateRangePickerComponent, SkyFormErrorModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyDateRangePickerModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [SkyDateRangePickerComponent, SkyFormErrorModule],\n imports: [SkyDateRangePickerComponent],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS1waWNrZXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2RhdGV0aW1lL3NyYy9saWIvbW9kdWxlcy9kYXRlLXJhbmdlLXBpY2tlci9kYXRlLXJhbmdlLXBpY2tlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFbEQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sK0JBQStCLENBQUM7O0FBTTVFLE1BQU0sT0FBTyx3QkFBd0I7OEdBQXhCLHdCQUF3QjsrR0FBeEIsd0JBQXdCLFlBRnpCLDJCQUEyQixhQUQzQiwyQkFBMkIsRUFBRSxrQkFBa0I7K0dBRzlDLHdCQUF3QixZQUZ6QiwyQkFBMkIsRUFERSxrQkFBa0I7OzJGQUc5Qyx3QkFBd0I7a0JBSnBDLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsMkJBQTJCLEVBQUUsa0JBQWtCLENBQUM7b0JBQzFELE9BQU8sRUFBRSxDQUFDLDJCQUEyQixDQUFDO2lCQUN2QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTa3lGb3JtRXJyb3JNb2R1bGUgfSBmcm9tICdAc2t5dXgvZm9ybXMnO1xuXG5pbXBvcnQgeyBTa3lEYXRlUmFuZ2VQaWNrZXJDb21wb25lbnQgfSBmcm9tICcuL2RhdGUtcmFuZ2UtcGlja2VyLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGV4cG9ydHM6IFtTa3lEYXRlUmFuZ2VQaWNrZXJDb21wb25lbnQsIFNreUZvcm1FcnJvck1vZHVsZV0sXG4gIGltcG9ydHM6IFtTa3lEYXRlUmFuZ2VQaWNrZXJDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lEYXRlUmFuZ2VQaWNrZXJNb2R1bGUge31cbiJdfQ==","import { ChangeDetectionStrategy, Component, ElementRef, EnvironmentInjector, EventEmitter, Inject, Optional, Output, TemplateRef, ViewChild, ViewEncapsulation, inject, } from '@angular/core';\nimport { SKY_STACKING_CONTEXT, SkyAffixAutoFitContext, } from '@skyux/core';\nimport moment from 'moment';\nimport { Subject, fromEvent } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@skyux/core\";\nimport * as i2 from \"@skyux/forms\";\nimport * as i3 from \"@skyux/theme\";\nimport * as i4 from \"@angular/common\";\nimport * as i5 from \"@skyux/icon\";\nimport * as i6 from \"@skyux/i18n\";\nlet nextId = 0;\n/**\n * Creates a SKY UX-themed replacement for the HTML `input` element with `type=\"time\"`.\n * The value that users select is driven through the `ngModel` attribute\n * specified on the `input` element. You must wrap this component around an `input`\n * with the `skyTimepickerInput` directive.\n */\nexport class SkyTimepickerComponent {\n set disabled(value) {\n this.#_disabled = value;\n this.#changeDetector.markForCheck();\n }\n get disabled() {\n return this.#_disabled;\n }\n set selectedHour(setHour) {\n let hourOffset = 0;\n if (this.selectedMeridies === 'AM' && setHour === 12) {\n hourOffset = -12;\n }\n if (this.selectedMeridies === 'PM' && setHour !== 12) {\n hourOffset = 12;\n }\n if (this.is8601) {\n hourOffset = 0;\n }\n const hour = moment({ hour: setHour }).add(hourOffset, 'hours').hour();\n this.activeTime = moment({\n hour: hour,\n minute: moment(this.activeTime).get('minute') + 0,\n }).toDate();\n this.selectedTimeChanged.emit(this.selectedTime);\n }\n get selectedHour() {\n if (!this.is8601) {\n /* istanbul ignore next */\n return parseInt(moment(this.activeTime).format('h'), 0) || 1;\n }\n else {\n return moment(this.activeTime).hour() + 0;\n }\n }\n set selectedMeridies(meridies) {\n meridies = meridies.trim();\n /* istanbul ignore else */\n if (meridies !== this.selectedMeridies) {\n switch (meridies) {\n case 'AM':\n this.activeTime = moment(this.activeTime)\n .subtract(12, 'hours')\n .toDate();\n break;\n case 'PM':\n this.activeTime = moment(this.activeTime).add(12, 'hours').toDate();\n break;\n }\n this.selectedTimeChanged.emit(this.selectedTime);\n }\n }\n get selectedMeridies() {\n if (this.activeTime) {\n return moment(this.activeTime).format('A');\n }\n return '';\n }\n set selectedMinute(minute) {\n this.activeTime = moment({\n hour: moment(this.activeTime).get('hour') + 0,\n minute: minute,\n }).toDate();\n this.selectedTimeChanged.emit(this.selectedTime);\n }\n get selectedMinute() {\n return moment(this.activeTime).minute() + 0;\n }\n set selectedTime(newTime) {\n if (typeof newTime !== 'undefined') {\n /* sanity check */\n /* istanbul ignore else */\n if (newTime.local !== 'Invalid date') {\n this.activeTime = newTime.iso8601;\n this.#changeDetector.markForCheck();\n }\n }\n }\n get selectedTime() {\n const time = {\n hour: moment(this.activeTime).hour(),\n minute: moment(this.activeTime).minute(),\n meridie: moment(this.activeTime).format('A'),\n timezone: parseInt(moment(this.activeTime).format('Z'), 10),\n iso8601: this.activeTime,\n local: moment(this.activeTime).format(this.localeFormat),\n customFormat: typeof this.returnFormat !== 'undefined'\n ? this.returnFormat\n : this.localeFormat,\n };\n return time;\n }\n set timepickerRef(value) {\n if (value) {\n this.#_timepickerRef = value;\n this.#addKeyupListener();\n // Wait for the timepicker component to render before gauging dimensions.\n setTimeout(() => {\n this.#destroyAffixer();\n this.#createAffixer();\n setTimeout(() => {\n if (this.timepickerRef) {\n this.#coreAdapter.getFocusableChildrenAndApplyFocus(this.timepickerRef, '.sky-timepicker-content', false);\n }\n this.isVisible = true;\n this.#changeDetector.markForCheck();\n });\n });\n }\n }\n get timepickerRef() {\n return this.#_timepickerRef;\n }\n #affixer;\n #timepickerUnsubscribe;\n #ngUnsubscribe;\n #overlay;\n #overlayKeyupListener;\n #_disabled;\n #_timepickerRef;\n #affixService;\n #changeDetector;\n #coreAdapter;\n #environmentInjector;\n #overlayService;\n #zIndex;\n constructor(affixService, changeDetector, coreAdapter, overlayService, inputBoxHostService, themeSvc, stackingContext) {\n this.inputBoxHostService = inputBoxHostService;\n /**\n * Fires when the value in the timepicker input changes.\n */\n this.selectedTimeChanged = new EventEmitter();\n this.activeTime = new Date();\n this.hours = [];\n this.is8601 = false;\n this.isOpen = false;\n this.isVisible = false;\n this.localeFormat = 'h:mm A';\n this.minutes = [];\n this.timeFormat = 'hh';\n this.#timepickerUnsubscribe = new Subject();\n this.#ngUnsubscribe = new Subject();\n this.#_disabled = false;\n this.#environmentInjector = inject(EnvironmentInjector);\n this.#affixService = affixService;\n this.#changeDetector = changeDetector;\n this.#coreAdapter = coreAdapter;\n this.#overlayService = overlayService;\n this.#zIndex = stackingContext?.zIndex;\n const uniqueId = nextId++;\n this.timepickerId = `sky-timepicker-${uniqueId}`;\n this.triggerButtonId = `sky-timepicker-button-${uniqueId}`;\n // Update icons when theme changes.\n themeSvc?.settingsChange\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe(() => {\n this.#changeDetector.markForCheck();\n });\n }\n ngOnInit() {\n this.setFormat(this.timeFormat);\n this.#addKeyupListener();\n if (this.inputBoxHostService && this.inputTemplateRef) {\n this.inputBoxHostService.populate({\n inputTemplate: this.inputTemplateRef,\n buttonsTemplate: this.triggerButtonTemplateRef,\n });\n }\n }\n ngOnDestroy() {\n this.#ngUnsubscribe.next();\n this.#ngUnsubscribe.complete();\n this.#removePickerEventListeners();\n this.#destroyAffixer();\n this.#destroyOverlay();\n }\n setFormat(format) {\n let h = 12;\n let m = 12;\n let minuteMultiplier = 5;\n let localeFormat = 'h:mm A';\n if (format === 'hh') {\n h = 12;\n m = 12;\n minuteMultiplier = 5;\n localeFormat = 'h:mm A';\n this.is8601 = false;\n }\n if (format === 'HH') {\n h = 24;\n m = 4;\n minuteMultiplier = 15;\n localeFormat = 'HH:mm';\n this.is8601 = true;\n }\n const data = {\n // Create a sparse array with a length equal to the hour.\n hours: Array(...Array(h)).map((_, i) => {\n if (format === 'hh') {\n return ++i;\n }\n /* istanbul ignore else */\n if (format === 'HH') {\n return i;\n }\n /* istanbul ignore next */\n /* sanity check */\n return 0;\n }),\n // Create a sparse array with a length equal to the minute.\n minutes: Array(...Array(m)).map(function (_, i) {\n return i * minuteMultiplier;\n }),\n localeFormat: localeFormat,\n minuteMultiplier: minuteMultiplier,\n };\n this.hours = data.hours;\n this.minutes = data.minutes;\n this.localeFormat = data.localeFormat;\n this.minuteMultiplier = data.minuteMultiplier;\n }\n onCloseButtonClick() {\n this.#closePicker();\n }\n setTime(event) {\n /* istanbul ignore else */\n if (typeof event !== 'undefined') {\n /* istanbul ignore else */\n if (event.type === 'click') {\n event.stopPropagation();\n if (event.target.name === 'hour') {\n this.selectedHour = parseInt(event.target.innerHTML, 0);\n }\n if (event.target.name === 'minute') {\n this.selectedMinute = parseInt(event.target.innerHTML, 0);\n }\n if (event.target.name === 'meridie') {\n this.selectedMeridies = event.target.innerHTML;\n }\n }\n }\n }\n onTriggerButtonClick() {\n this.#openPicker();\n }\n highlightMinute(selectedMinute, minute) {\n const radix = this.is8601 ? 15 : 5;\n return Math.floor(selectedMinute / radix) === minute / radix;\n }\n #closePicker() {\n this.#destroyAffixer();\n this.#destroyOverlay();\n this.#removePickerEventListeners();\n this.triggerButtonRef?.nativeElement.focus();\n this.isOpen = false;\n }\n #openPicker() {\n this.isVisible = false;\n this.#changeDetector.markForCheck();\n this.#removePickerEventListeners();\n this.#destroyOverlay();\n this.#createOverlay();\n this.isOpen = true;\n this.#changeDetector.markForCheck();\n }\n #createAffixer() {\n if (this.timepickerRef && this.triggerButtonRef) {\n const affixer = this.#affixService.createAffixer(this.timepickerRef);\n // Hide timepicker when trigger button is scrolled off screen.\n affixer.placementChange\n .pipe(takeUntil(this.#timepickerUnsubscribe))\n .subscribe((change) => {\n this.isVisible = change.placement !== null;\n this.#changeDetector.markForCheck();\n });\n affixer.affixTo(this.triggerButtonRef.nativeElement, {\n autoFitContext: SkyAffixAutoFitContext.Viewport,\n enableAutoFit: true,\n horizontalAlignment: 'right',\n isSticky: true,\n placement: 'below',\n });\n this.#affixer = affixer;\n }\n }\n #destroyAffixer() {\n /*istanbul ignore else*/\n if (this.#affixer) {\n this.#affixer.destroy();\n this.#affixer = undefined;\n }\n }\n #createOverlay() {\n if (this.timepickerTemplateRef) {\n const overlay = this.#overlayService.create({\n enableClose: false,\n enablePointerEvents: false,\n environmentInjector: this.#environmentInjector,\n });\n if (this.#zIndex) {\n this.#zIndex\n .pipe(takeUntil(this.#timepickerUnsubscribe))\n .subscribe((zIndex) => {\n overlay.componentRef.instance.zIndex = zIndex.toString(10);\n });\n }\n overlay.backdropClick\n .pipe(takeUntil(this.#timepickerUnsubscribe))\n .subscribe(() => {\n /* istanbul ignore else */\n if (this.isOpen) {\n this.#closePicker();\n }\n });\n overlay.attachTemplate(this.timepickerTemplateRef);\n this.#overlay = overlay;\n }\n }\n #destroyOverlay() {\n /*istanbul ignore else*/\n if (this.#overlay) {\n this.#overlayService.close(this.#overlay);\n this.#overlay = undefined;\n }\n }\n #addKeyupListener() {\n const timepickerMenuElement = this.timepickerRef?.nativeElement;\n if (timepickerMenuElement) {\n this.#overlayKeyupListener = fromEvent(timepickerMenuElement, 'keyup')\n .pipe(takeUntil(this.#ngUnsubscribe))\n .subscribe((event) => {\n const key = event.key?.toLowerCase();\n /* istanbul ignore else */\n if (key === 'escape' && this.isOpen) {\n this.#closePicker();\n event.stopPropagation();\n event.preventDefault();\n }\n });\n }\n }\n #removePickerEventListeners() {\n /* istanbul ignore else */\n if (this.#timepickerUnsubscribe) {\n this.#timepickerUnsubscribe.next();\n this.#timepickerUnsubscribe.complete();\n this.#timepickerUnsubscribe = new Subject();\n }\n /* istanbul ignore next */\n this.#overlayKeyupListener?.unsubscribe();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyTimepickerComponent, deps: [{ token: i1.SkyAffixService }, { token: i0.ChangeDetectorRef }, { token: i1.SkyCoreAdapterService }, { token: i1.SkyOverlayService }, { token: i2.SkyInputBoxHostService, optional: true }, { token: i3.SkyThemeService, optional: true }, { token: SKY_STACKING_CONTEXT, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.5\", type: SkyTimepickerComponent, isStandalone: false, selector: \"sky-timepicker\", outputs: { selectedTimeChanged: \"selectedTimeChanged\" }, viewQueries: [{ propertyName: \"timepickerRef\", first: true, predicate: [\"timepickerRef\"], descendants: true, read: ElementRef }, { propertyName: \"timepickerTemplateRef\", first: true, predicate: [\"timepickerTemplateRef\"], descendants: true, read: TemplateRef }, { propertyName: \"triggerButtonRef\", first: true, predicate: [\"triggerButtonRef\"], descendants: true, read: ElementRef }, { propertyName: \"inputTemplateRef\", first: true, predicate: [\"inputTemplateRef\"], descendants: true, read: TemplateRef, static: true }, { propertyName: \"triggerButtonTemplateRef\", first: true, predicate: [\"triggerButtonTemplateRef\"], descendants: true, read: TemplateRef, static: true }], ngImport: i0, template: \"<div class=\\\"sky-timepicker\\\">\\n @if (!inputBoxHostService) {\\n <div class=\\\"sky-input-group\\\">\\n <ng-container *ngTemplateOutlet=\\\"inputTemplateRef\\\" />\\n <ng-container *ngTemplateOutlet=\\\"triggerButtonTemplateRef\\\" />\\n </div>\\n }\\n</div>\\n\\n<ng-template #inputTemplateRef>\\n <ng-content />\\n</ng-template>\\n\\n<ng-template #triggerButtonTemplateRef>\\n <div class=\\\"sky-input-group-btn\\\">\\n <button\\n #triggerButtonRef\\n aria-haspopup=\\\"dialog\\\"\\n class=\\\"sky-btn sky-btn-default sky-input-group-timepicker-btn\\\"\\n type=\\\"button\\\"\\n [attr.aria-controls]=\\\"isOpen ? timepickerId : null\\\"\\n [attr.aria-expanded]=\\\"isOpen\\\"\\n [attr.aria-label]=\\\"\\n inputBoxHostService?.labelText\\n ? ('skyux_timepicker_button_label_context'\\n | skyLibResources: inputBoxHostService?.labelText)\\n : ('skyux_timepicker_button_label' | skyLibResources)\\n \\\"\\n [attr.id]=\\\"triggerButtonId\\\"\\n [attr.title]=\\\"\\n inputBoxHostService?.labelText\\n ? ('skyux_timepicker_button_label_context'\\n | skyLibResources: inputBoxHostService?.labelText)\\n : ('skyux_timepicker_button_label' | skyLibResources)\\n \\\"\\n [disabled]=\\\"disabled\\\"\\n (click)=\\\"onTriggerButtonClick()\\\"\\n >\\n <sky-icon iconName=\\\"clock\\\" iconSize=\\\"l\\\" />\\n </button>\\n </div>\\n</ng-template>\\n\\n<ng-template #timepickerTemplateRef>\\n <div\\n #timepickerRef\\n class=\\\"sky-timepicker-container sky-shadow sky-box sky-elevation-4\\\"\\n role=\\\"dialog\\\"\\n [attr.aria-labelledby]=\\\"triggerButtonId\\\"\\n [attr.id]=\\\"timepickerId\\\"\\n [class.sky-timepicker-hidden]=\\\"!isVisible\\\"\\n >\\n <div class=\\\"sky-timepicker-content\\\">\\n <section\\n class=\\\"sky-timepicker-column sky-timepicker-column-hours\\\"\\n [ngClass]=\\\"{ 'sky-timepicker-24hour': is8601 }\\\"\\n >\\n <ol>\\n @for (hour of hours; track hour) {\\n <li>\\n <button\\n name=\\\"hour\\\"\\n type=\\\"button\\\"\\n [ngClass]=\\\"{ 'sky-btn-active': selectedHour === hour }\\\"\\n (click)=\\\"setTime($event)\\\"\\n >\\n {{ hour }}\\n </button>\\n </li>\\n }\\n </ol>\\n </section>\\n <section class=\\\"sky-timepicker-column sky-timepicker-column-minutes\\\">\\n <ol>\\n @for (minute of minutes; track minute) {\\n <li>\\n <button\\n name=\\\"minute\\\"\\n type=\\\"button\\\"\\n [ngClass]=\\\"{\\n 'sky-btn-active': highlightMinute(selectedMinute, minute)\\n }\\\"\\n (click)=\\\"setTime($event)\\\"\\n >\\n {{ '00'.substring(0, 2 - minute.toString().length) + minute }}\\n </button>\\n </li>\\n }\\n </ol>\\n </section>\\n @if (!is8601) {\\n <section class=\\\"sky-timepicker-column sky-timepicker-column-meridies\\\">\\n <ol>\\n <li>\\n <button\\n name=\\\"meridie\\\"\\n type=\\\"button\\\"\\n [ngClass]=\\\"{ 'sky-btn-active': selectedMeridies === 'AM' }\\\"\\n (click)=\\\"setTime($event)\\\"\\n >\\n AM\\n </button>\\n </li>\\n <li>\\n <button\\n name=\\\"meridie\\\"\\n type=\\\"button\\\"\\n [ngClass]=\\\"{ 'sky-btn-active': selectedMeridies === 'PM' }\\\"\\n (click)=\\\"setTime($event)\\\"\\n >\\n PM\\n </button>\\n </li>\\n </ol>\\n </section>\\n }\\n </div>\\n <div class=\\\"sky-timepicker-footer\\\">\\n <section class=\\\"sky-timepicker-column\\\">\\n <button\\n class=\\\"sky-btn sky-btn-primary\\\"\\n type=\\\"button\\\"\\n (click)=\\\"onCloseButtonClick()\\\"\\n >\\n {{ 'skyux_timepicker_close' | skyLibResources }}\\n </button>\\n </section>\\n </div>\\n </div>\\n</ng-template>\\n\", styles: [\".sky-timepicker-container:not(.sky-theme-modern *){--sky-override-timepicker-background-color: #eeeeef;--sky-override-timepicker-border-radius: 5px;--sky-override-timepicker-button-active-background-color: #e2e3e4;--sky-override-timepicker-button-background-color: #ffffff;--sky-override-timepicker-button-border-radius: 3px;--sky-override-timepicker-button-focus-box-shadow: none;--sky-override-timepicker-button-focus-outline-offset: -2px;--sky-override-timepicker-button-focus-outline: -webkit-focus-ring-color auto 5px;--sky-override-timepicker-button-hover-active-focus-border-radius: 0;--sky-override-timepicker-button-hover-active-box-shadow: none;--sky-override-timepicker-button-hover-background-color: #eeeeef;--sky-override-timepicker-button-padding-horizontal: 15px;--sky-override-timepicker-button-padding-vertical: 5px;--sky-override-timepicker-button-selected-background-color: #c1e8fb;--sky-override-timepicker-button-selected-box-shadow: inset 0 0 0 2px #00b4f1;--sky-override-timepicker-column-border: 1px solid #e2e3e4;--sky-override-timepicker-column-gap: 10px;--sky-override-timepicker-column-meride-divider: 1px solid #e2e3e4;--sky-override-timepicker-content-space: 10px 10px 0 10px;--sky-override-timepicker-font-size: 15px;--sky-override-timepicker-footer-padding-horizontal: 10px;--sky-override-timepicker-footer-padding-vertical: 10px;--sky-override-timepicker-text-color: #000}.sky-theme-modern:not(.sky-theme-brand-base) .sky-timepicker-container{--sky-override-timepicker-border: solid 1px #cdcfd2;--sky-override-timepicker-button-background-color: var(--modern-color-white);--sky-override-timepicker-button-focus-box-shadow: inset 0 0 0 var(--sky-border-width-action-focus) var(--sky-color-border-action-tertiary-focus), var(--sky-elevation-focus);--sky-override-timepicker-button-padding-vertical: var(--modern-size-5);--sky-override-timepicker-button-selected-hover-border-color: var( --modern-color-blue-50 );--sky-override-timepicker-column-border: 1px solid var(--modern-color-gray-10);--sky-override-timepicker-content-space: var(--modern-space-s) var(--modern-space-s) 0 var(--modern-space-s);--sky-override-timepicker-font-size: 16px;--sky-override-timepicker-footer-padding-horizontal: var(--modern-size-10);--sky-override-timepicker-text-color: var(--modern-color-black)}.sky-timepicker-container{position:fixed;font-size:var(--sky-override-timepicker-font-size);background-color:var(--sky-override-timepicker-background-color, var(--sky-color-background-container-menu));border-radius:var(--sky-override-timepicker-border-radius, var(--sky-border-radius-s));border:var(--sky-override-timepicker-border, none)}.sky-timepicker-container :last-child ol{display:flex;flex-direction:column;height:100%}.sky-timepicker-container :last-child ol li{border-bottom:var(--sky-override-timepicker-column-meride-divider);flex:1}.sky-timepicker-column ol{border:var(--sky-override-timepicker-column-border, var(--sky-border-width-container-base) solid var(--sky-color-border-container-base));column-gap:1px;columns:2;list-style-type:none;margin:0;padding:0}.sky-timepicker-column ol li{text-align:center;cursor:pointer;margin:0}.sky-timepicker-column ol li button{background-color:var(--sky-override-timepicker-button-background-color, var(--sky-color-background-action-tertiary-base));border-width:0;border-color:var(--sky-color-border-action-tertiary-base);color:var(--sky-override-timepicker-text-color, var(--sky-color-text-default));cursor:pointer;padding:var(--sky-override-timepicker-button-padding-vertical, var(--sky-comp-timepicker-footer-space-inset-top)) var(--sky-override-timepicker-button-padding-horizontal, var(--sky-comp-timepicker-footer-space-inset-right)) var(--sky-override-timepicker-button-padding-vertical, var(--sky-comp-timepicker-footer-space-inset-bottom)) var(--sky-override-timepicker-button-padding-horizontal, var(--sky-comp-timepicker-footer-space-inset-left));width:100%;height:100%}.sky-timepicker-column ol li button:focus-visible:not(:active){outline:var(--sky-override-timepicker-button-focus-outline);outline-offset:var(--sky-override-timepicker-button-focus-outline-offset);border-radius:var(--sky-override-timepicker-button-hover-active-focus-border-radius, var(--sky-border-radius-s));box-shadow:var(--sky-override-timepicker-button-focus-box-shadow, inset 0 0 0 var(--sky-border-width-action-focus) var(--sky-color-border-action-tertiary-focus))}.sky-timepicker-column ol li button:hover:not(.sky-btn-active){border-radius:var(--sky-override-timepicker-button-hover-active-focus-border-radius, var(--sky-border-radius-s));background-color:var(--sky-override-timepicker-button-hover-background-color, var(--sky-color-background-action-tertiary-hover));box-shadow:var(--sky-override-timepicker-button-hover-active-box-shadow, inset 0 0 0 var(--sky-border-width-action-hover) var(--sky-override-timepicker-button-selected-hover-border-color, var(--sky-color-border-action-tertiary-hover)))}.sky-timepicker-column ol li button:active{background-color:var(--sky-override-timepicker-button-active-background-color, var(--sky-color-background-action-tertiary-active));border-radius:var(--sky-override-timepicker-button-hover-active-focus-border-radius, var(--sky-border-radius-s));box-shadow:var(--sky-override-timepicker-button-hover-active-box-shadow, inset 0 0 0 var(--sky-border-width-action-active) var(--sky-color-border-action-tertiary-active))}.sky-timepicker-column ol li button.sky-btn-active{background-color:var(--sky-override-timepicker-button-selected-background-color, var(--sky-color-background-selected-soft));box-shadow:var(--sky-override-timepicker-button-selected-box-shadow, inset 0 0 0 var(--sky-border-width-selected-s) var(--sky-override-timepicker-button-selected-hover-border-color, var(--sky-color-border-selected)));border-radius:var(--sky-override-timepicker-button-border-radius, var(--sky-border-radius-s))}.sky-timepicker-column.sky-timepicker-24hour ol{columns:4}.sky-timepicker-column.sky-timepicker-24hour ol li{border-bottom-width:0}.sky-timepicker-content{display:flex;padding:var(--sky-override-timepicker-content-space, var(--sky-comp-timepicker-content-space-inset-top) var(--sky-comp-timepicker-content-space-inset-right) var(--sky-comp-timepicker-content-space-inset-bottom) var(--sky-comp-timepicker-content-space-inset-left));gap:var(--sky-override-timepicker-column-gap, var(--sky-space-gap-action_group-m))}.sky-timepicker-footer{margin:0;padding:var(--sky-override-timepicker-footer-padding-vertical, var(--sky-comp-timepicker-footer-space-inset-top)) var(--sky-override-timepicker-footer-padding-horizontal, var(--sky-comp-timepicker-footer-space-inset-right)) var(--sky-override-timepicker-footer-padding-vertical, var(--sky-comp-timepicker-footer-space-inset-bottom)) var(--sky-override-timepicker-footer-padding-horizontal, var(--sky-comp-timepicker-footer-space-inset-left))}.sky-timepicker-footer .sky-timepicker-column{width:100%}.sky-timepicker-hidden{visibility:hidden}.sky-timepicker-clock-icon-modern,.sky-theme-modern .sky-timepicker-clock-icon-default{display:none}.sky-theme-modern .sky-timepicker-clock-icon-modern{display:inline}\\n\"], dependencies: [{ kind: \"directive\", type: i4.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i4.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"component\", type: i5.λ1, selector: \"sky-icon\", inputs: [\"icon\", \"iconName\", \"iconType\", \"size\", \"fixedWidth\", \"variant\", \"iconSize\"] }, { kind: \"pipe\", type: i6.SkyLibResourcesPipe, name: \"skyLibResources\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyTimepickerComponent, decorators: [{\n type: Component,\n args: [{ selector: 'sky-timepicker', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: \"<div class=\\\"sky-timepicker\\\">\\n @if (!inputBoxHostService) {\\n <div class=\\\"sky-input-group\\\">\\n <ng-container *ngTemplateOutlet=\\\"inputTemplateRef\\\" />\\n <ng-container *ngTemplateOutlet=\\\"triggerButtonTemplateRef\\\" />\\n </div>\\n }\\n</div>\\n\\n<ng-template #inputTemplateRef>\\n <ng-content />\\n</ng-template>\\n\\n<ng-template #triggerButtonTemplateRef>\\n <div class=\\\"sky-input-group-btn\\\">\\n <button\\n #triggerButtonRef\\n aria-haspopup=\\\"dialog\\\"\\n class=\\\"sky-btn sky-btn-default sky-input-group-timepicker-btn\\\"\\n type=\\\"button\\\"\\n [attr.aria-controls]=\\\"isOpen ? timepickerId : null\\\"\\n [attr.aria-expanded]=\\\"isOpen\\\"\\n [attr.aria-label]=\\\"\\n inputBoxHostService?.labelText\\n ? ('skyux_timepicker_button_label_context'\\n | skyLibResources: inputBoxHostService?.labelText)\\n : ('skyux_timepicker_button_label' | skyLibResources)\\n \\\"\\n [attr.id]=\\\"triggerButtonId\\\"\\n [attr.title]=\\\"\\n inputBoxHostService?.labelText\\n ? ('skyux_timepicker_button_label_context'\\n | skyLibResources: inputBoxHostService?.labelText)\\n : ('skyux_timepicker_button_label' | skyLibResources)\\n \\\"\\n [disabled]=\\\"disabled\\\"\\n (click)=\\\"onTriggerButtonClick()\\\"\\n >\\n <sky-icon iconName=\\\"clock\\\" iconSize=\\\"l\\\" />\\n </button>\\n </div>\\n</ng-template>\\n\\n<ng-template #timepickerTemplateRef>\\n <div\\n #timepickerRef\\n class=\\\"sky-timepicker-container sky-shadow sky-box sky-elevation-4\\\"\\n role=\\\"dialog\\\"\\n [attr.aria-labelledby]=\\\"triggerButtonId\\\"\\n [attr.id]=\\\"timepickerId\\\"\\n [class.sky-timepicker-hidden]=\\\"!isVisible\\\"\\n >\\n <div class=\\\"sky-timepicker-content\\\">\\n <section\\n class=\\\"sky-timepicker-column sky-timepicker-column-hours\\\"\\n [ngClass]=\\\"{ 'sky-timepicker-24hour': is8601 }\\\"\\n >\\n <ol>\\n @for (hour of hours; track hour) {\\n <li>\\n <button\\n name=\\\"hour\\\"\\n type=\\\"button\\\"\\n [ngClass]=\\\"{ 'sky-btn-active': selectedHour === hour }\\\"\\n (click)=\\\"setTime($event)\\\"\\n >\\n {{ hour }}\\n </button>\\n </li>\\n }\\n </ol>\\n </section>\\n <section class=\\\"sky-timepicker-column sky-timepicker-column-minutes\\\">\\n <ol>\\n @for (minute of minutes; track minute) {\\n <li>\\n <button\\n name=\\\"minute\\\"\\n type=\\\"button\\\"\\n [ngClass]=\\\"{\\n 'sky-btn-active': highlightMinute(selectedMinute, minute)\\n }\\\"\\n (click)=\\\"setTime($event)\\\"\\n >\\n {{ '00'.substring(0, 2 - minute.toString().length) + minute }}\\n </button>\\n </li>\\n }\\n </ol>\\n </section>\\n @if (!is8601) {\\n <section class=\\\"sky-timepicker-column sky-timepicker-column-meridies\\\">\\n <ol>\\n <li>\\n <button\\n name=\\\"meridie\\\"\\n type=\\\"button\\\"\\n [ngClass]=\\\"{ 'sky-btn-active': selectedMeridies === 'AM' }\\\"\\n (click)=\\\"setTime($event)\\\"\\n >\\n AM\\n </button>\\n </li>\\n <li>\\n <button\\n name=\\\"meridie\\\"\\n type=\\\"button\\\"\\n [ngClass]=\\\"{ 'sky-btn-active': selectedMeridies === 'PM' }\\\"\\n (click)=\\\"setTime($event)\\\"\\n >\\n PM\\n </button>\\n </li>\\n </ol>\\n </section>\\n }\\n </div>\\n <div class=\\\"sky-timepicker-footer\\\">\\n <section class=\\\"sky-timepicker-column\\\">\\n <button\\n class=\\\"sky-btn sky-btn-primary\\\"\\n type=\\\"button\\\"\\n (click)=\\\"onCloseButtonClick()\\\"\\n >\\n {{ 'skyux_timepicker_close' | skyLibResources }}\\n </button>\\n </section>\\n </div>\\n </div>\\n</ng-template>\\n\", styles: [\".sky-timepicker-container:not(.sky-theme-modern *){--sky-override-timepicker-background-color: #eeeeef;--sky-override-timepicker-border-radius: 5px;--sky-override-timepicker-button-active-background-color: #e2e3e4;--sky-override-timepicker-button-background-color: #ffffff;--sky-override-timepicker-button-border-radius: 3px;--sky-override-timepicker-button-focus-box-shadow: none;--sky-override-timepicker-button-focus-outline-offset: -2px;--sky-override-timepicker-button-focus-outline: -webkit-focus-ring-color auto 5px;--sky-override-timepicker-button-hover-active-focus-border-radius: 0;--sky-override-timepicker-button-hover-active-box-shadow: none;--sky-override-timepicker-button-hover-background-color: #eeeeef;--sky-override-timepicker-button-padding-horizontal: 15px;--sky-override-timepicker-button-padding-vertical: 5px;--sky-override-timepicker-button-selected-background-color: #c1e8fb;--sky-override-timepicker-button-selected-box-shadow: inset 0 0 0 2px #00b4f1;--sky-override-timepicker-column-border: 1px solid #e2e3e4;--sky-override-timepicker-column-gap: 10px;--sky-override-timepicker-column-meride-divider: 1px solid #e2e3e4;--sky-override-timepicker-content-space: 10px 10px 0 10px;--sky-override-timepicker-font-size: 15px;--sky-override-timepicker-footer-padding-horizontal: 10px;--sky-override-timepicker-footer-padding-vertical: 10px;--sky-override-timepicker-text-color: #000}.sky-theme-modern:not(.sky-theme-brand-base) .sky-timepicker-container{--sky-override-timepicker-border: solid 1px #cdcfd2;--sky-override-timepicker-button-background-color: var(--modern-color-white);--sky-override-timepicker-button-focus-box-shadow: inset 0 0 0 var(--sky-border-width-action-focus) var(--sky-color-border-action-tertiary-focus), var(--sky-elevation-focus);--sky-override-timepicker-button-padding-vertical: var(--modern-size-5);--sky-override-timepicker-button-selected-hover-border-color: var( --modern-color-blue-50 );--sky-override-timepicker-column-border: 1px solid var(--modern-color-gray-10);--sky-override-timepicker-content-space: var(--modern-space-s) var(--modern-space-s) 0 var(--modern-space-s);--sky-override-timepicker-font-size: 16px;--sky-override-timepicker-footer-padding-horizontal: var(--modern-size-10);--sky-override-timepicker-text-color: var(--modern-color-black)}.sky-timepicker-container{position:fixed;font-size:var(--sky-override-timepicker-font-size);background-color:var(--sky-override-timepicker-background-color, var(--sky-color-background-container-menu));border-radius:var(--sky-override-timepicker-border-radius, var(--sky-border-radius-s));border:var(--sky-override-timepicker-border, none)}.sky-timepicker-container :last-child ol{display:flex;flex-direction:column;height:100%}.sky-timepicker-container :last-child ol li{border-bottom:var(--sky-override-timepicker-column-meride-divider);flex:1}.sky-timepicker-column ol{border:var(--sky-override-timepicker-column-border, var(--sky-border-width-container-base) solid var(--sky-color-border-container-base));column-gap:1px;columns:2;list-style-type:none;margin:0;padding:0}.sky-timepicker-column ol li{text-align:center;cursor:pointer;margin:0}.sky-timepicker-column ol li button{background-color:var(--sky-override-timepicker-button-background-color, var(--sky-color-background-action-tertiary-base));border-width:0;border-color:var(--sky-color-border-action-tertiary-base);color:var(--sky-override-timepicker-text-color, var(--sky-color-text-default));cursor:pointer;padding:var(--sky-override-timepicker-button-padding-vertical, var(--sky-comp-timepicker-footer-space-inset-top)) var(--sky-override-timepicker-button-padding-horizontal, var(--sky-comp-timepicker-footer-space-inset-right)) var(--sky-override-timepicker-button-padding-vertical, var(--sky-comp-timepicker-footer-space-inset-bottom)) var(--sky-override-timepicker-button-padding-horizontal, var(--sky-comp-timepicker-footer-space-inset-left));width:100%;height:100%}.sky-timepicker-column ol li button:focus-visible:not(:active){outline:var(--sky-override-timepicker-button-focus-outline);outline-offset:var(--sky-override-timepicker-button-focus-outline-offset);border-radius:var(--sky-override-timepicker-button-hover-active-focus-border-radius, var(--sky-border-radius-s));box-shadow:var(--sky-override-timepicker-button-focus-box-shadow, inset 0 0 0 var(--sky-border-width-action-focus) var(--sky-color-border-action-tertiary-focus))}.sky-timepicker-column ol li button:hover:not(.sky-btn-active){border-radius:var(--sky-override-timepicker-button-hover-active-focus-border-radius, var(--sky-border-radius-s));background-color:var(--sky-override-timepicker-button-hover-background-color, var(--sky-color-background-action-tertiary-hover));box-shadow:var(--sky-override-timepicker-button-hover-active-box-shadow, inset 0 0 0 var(--sky-border-width-action-hover) var(--sky-override-timepicker-button-selected-hover-border-color, var(--sky-color-border-action-tertiary-hover)))}.sky-timepicker-column ol li button:active{background-color:var(--sky-override-timepicker-button-active-background-color, var(--sky-color-background-action-tertiary-active));border-radius:var(--sky-override-timepicker-button-hover-active-focus-border-radius, var(--sky-border-radius-s));box-shadow:var(--sky-override-timepicker-button-hover-active-box-shadow, inset 0 0 0 var(--sky-border-width-action-active) var(--sky-color-border-action-tertiary-active))}.sky-timepicker-column ol li button.sky-btn-active{background-color:var(--sky-override-timepicker-button-selected-background-color, var(--sky-color-background-selected-soft));box-shadow:var(--sky-override-timepicker-button-selected-box-shadow, inset 0 0 0 var(--sky-border-width-selected-s) var(--sky-override-timepicker-button-selected-hover-border-color, var(--sky-color-border-selected)));border-radius:var(--sky-override-timepicker-button-border-radius, var(--sky-border-radius-s))}.sky-timepicker-column.sky-timepicker-24hour ol{columns:4}.sky-timepicker-column.sky-timepicker-24hour ol li{border-bottom-width:0}.sky-timepicker-content{display:flex;padding:var(--sky-override-timepicker-content-space, var(--sky-comp-timepicker-content-space-inset-top) var(--sky-comp-timepicker-content-space-inset-right) var(--sky-comp-timepicker-content-space-inset-bottom) var(--sky-comp-timepicker-content-space-inset-left));gap:var(--sky-override-timepicker-column-gap, var(--sky-space-gap-action_group-m))}.sky-timepicker-footer{margin:0;padding:var(--sky-override-timepicker-footer-padding-vertical, var(--sky-comp-timepicker-footer-space-inset-top)) var(--sky-override-timepicker-footer-padding-horizontal, var(--sky-comp-timepicker-footer-space-inset-right)) var(--sky-override-timepicker-footer-padding-vertical, var(--sky-comp-timepicker-footer-space-inset-bottom)) var(--sky-override-timepicker-footer-padding-horizontal, var(--sky-comp-timepicker-footer-space-inset-left))}.sky-timepicker-footer .sky-timepicker-column{width:100%}.sky-timepicker-hidden{visibility:hidden}.sky-timepicker-clock-icon-modern,.sky-theme-modern .sky-timepicker-clock-icon-default{display:none}.sky-theme-modern .sky-timepicker-clock-icon-modern{display:inline}\\n\"] }]\n }], ctorParameters: () => [{ type: i1.SkyAffixService }, { type: i0.ChangeDetectorRef }, { type: i1.SkyCoreAdapterService }, { type: i1.SkyOverlayService }, { type: i2.SkyInputBoxHostService, decorators: [{\n type: Optional\n }] }, { type: i3.SkyThemeService, decorators: [{\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [SKY_STACKING_CONTEXT]\n }] }], propDecorators: { selectedTimeChanged: [{\n type: Output\n }], timepickerRef: [{\n type: ViewChild,\n args: ['timepickerRef', { read: ElementRef }]\n }], timepickerTemplateRef: [{\n type: ViewChild,\n args: ['timepickerTemplateRef', { read: TemplateRef }]\n }], triggerButtonRef: [{\n type: ViewChild,\n args: ['triggerButtonRef', { read: ElementRef }]\n }], inputTemplateRef: [{\n type: ViewChild,\n args: ['inputTemplateRef', { read: TemplateRef, static: true }]\n }], triggerButtonTemplateRef: [{\n type: ViewChild,\n args: ['triggerButtonTemplateRef', { read: TemplateRef, static: true }]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL3RpbWVwaWNrZXIvdGltZXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL3RpbWVwaWNrZXIvdGltZXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsbUJBQW1CLEVBQ25CLFlBQVksRUFDWixNQUFNLEVBR04sUUFBUSxFQUNSLE1BQU0sRUFDTixXQUFXLEVBQ1gsU0FBUyxFQUNULGlCQUFpQixFQUNqQixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixzQkFBc0IsR0FPdkIsTUFBTSxhQUFhLENBQUM7QUFJckIsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBYyxPQUFPLEVBQWdCLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7O0FBSzNDLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztBQUVmOzs7OztHQUtHO0FBU0gsTUFBTSxPQUFPLHNCQUFzQjtJQVFqQyxJQUFXLFFBQVEsQ0FBQyxLQUFjO1FBQ2hDLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVELElBQVcsUUFBUTtRQUNqQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUVELElBQVcsWUFBWSxDQUFDLE9BQWU7UUFDckMsSUFBSSxVQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ25CLElBQUksSUFBSSxDQUFDLGdCQUFnQixLQUFLLElBQUksSUFBSSxPQUFPLEtBQUssRUFBRSxFQUFFLENBQUM7WUFDckQsVUFBVSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ25CLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsS0FBSyxJQUFJLElBQUksT0FBTyxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQ3JELFVBQVUsR0FBRyxFQUFFLENBQUM7UUFDbEIsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2hCLFVBQVUsR0FBRyxDQUFDLENBQUM7UUFDakIsQ0FBQztRQUNELE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFdkUsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUM7WUFDdkIsSUFBSSxFQUFFLElBQUk7WUFDVixNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQztTQUNsRCxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDWixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsSUFBVyxZQUFZO1FBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDakIsMEJBQTBCO1lBQzFCLE9BQU8sUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvRCxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDNUMsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFXLGdCQUFnQixDQUFDLFFBQWdCO1FBQzFDLFFBQVEsR0FBRyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDM0IsMEJBQTBCO1FBQzFCLElBQUksUUFBUSxLQUFLLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3ZDLFFBQVEsUUFBUSxFQUFFLENBQUM7Z0JBQ2pCLEtBQUssSUFBSTtvQkFDUCxJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO3lCQUN0QyxRQUFRLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQzt5QkFDckIsTUFBTSxFQUFFLENBQUM7b0JBQ1osTUFBTTtnQkFFUixLQUFLLElBQUk7b0JBQ1AsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQ3BFLE1BQU07WUFDVixDQUFDO1lBQ0QsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDbkQsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFXLGdCQUFnQjtRQUN6QixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNwQixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzdDLENBQUM7UUFDRCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRCxJQUFXLGNBQWMsQ0FBQyxNQUFjO1FBQ3RDLElBQUksQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDO1lBQ3ZCLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO1lBQzdDLE1BQU0sRUFBRSxNQUFNO1NBQ2YsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ1osSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELElBQVcsY0FBYztRQUN2QixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxJQUFXLFlBQVksQ0FBQyxPQUE0QztRQUNsRSxJQUFJLE9BQU8sT0FBTyxLQUFLLFdBQVcsRUFBRSxDQUFDO1lBQ25DLGtCQUFrQjtZQUNsQiwwQkFBMEI7WUFDMUIsSUFBSSxPQUFPLENBQUMsS0FBSyxLQUFLLGNBQWMsRUFBRSxDQUFDO2dCQUNyQyxJQUFJLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUM7Z0JBQ2xDLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdEMsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBVyxZQUFZO1FBQ3JCLE1BQU0sSUFBSSxHQUE0QjtZQUNwQyxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLEVBQUU7WUFDcEMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxFQUFFO1lBQ3hDLE9BQU8sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7WUFDNUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDM0QsT0FBTyxFQUFFLElBQUksQ0FBQyxVQUFVO1lBQ3hCLEtBQUssRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDO1lBQ3hELFlBQVksRUFDVixPQUFPLElBQUksQ0FBQyxZQUFZLEtBQUssV0FBVztnQkFDdEMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZO2dCQUNuQixDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVk7U0FDeEIsQ0FBQztRQUVGLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQTBCRCxJQUNXLGFBQWEsQ0FBQyxLQUE2QjtRQUNwRCxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1YsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7WUFFN0IsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFFekIseUVBQXlFO1lBQ3pFLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO2dCQUN2QixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBRXRCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7b0JBQ2QsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7d0JBQ3ZCLElBQUksQ0FBQyxZQUFZLENBQUMsaUNBQWlDLENBQ2pELElBQUksQ0FBQyxhQUFhLEVBQ2xCLHlCQUF5QixFQUN6QixLQUFLLENBQ04sQ0FBQztvQkFDSixDQUFDO29CQUVELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO29CQUN0QixJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUN0QyxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFXLGFBQWE7UUFDdEIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQzlCLENBQUM7SUFjRCxRQUFRLENBQXlCO0lBRWpDLHNCQUFzQixDQUF1QjtJQUU3QyxjQUFjLENBQXVCO0lBRXJDLFFBQVEsQ0FBaUM7SUFFekMscUJBQXFCLENBQTJCO0lBRWhELFVBQVUsQ0FBUztJQUVuQixlQUFlLENBQXlCO0lBRXhDLGFBQWEsQ0FBa0I7SUFDL0IsZUFBZSxDQUFvQjtJQUNuQyxZQUFZLENBQXdCO0lBQzNCLG9CQUFvQixDQUErQjtJQUM1RCxlQUFlLENBQW9CO0lBQ25DLE9BQU8sQ0FBaUM7SUFFeEMsWUFDRSxZQUE2QixFQUM3QixjQUFpQyxFQUNqQyxXQUFrQyxFQUNsQyxjQUFpQyxFQUNkLG1CQUE0QyxFQUNuRCxRQUEwQixFQUd0QyxlQUFvQztRQUpqQix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXlCO1FBN01qRTs7V0FFRztRQUVJLHdCQUFtQixHQUN4QixJQUFJLFlBQVksRUFBMkIsQ0FBQztRQTBHdkMsZUFBVSxHQUFTLElBQUksSUFBSSxFQUFFLENBQUM7UUFFOUIsVUFBSyxHQUFhLEVBQUUsQ0FBQztRQUVyQixXQUFNLEdBQUcsS0FBSyxDQUFDO1FBRWYsV0FBTSxHQUFHLEtBQUssQ0FBQztRQUVmLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFFbEIsaUJBQVksR0FBRyxRQUFRLENBQUM7UUFFeEIsWUFBTyxHQUFhLEVBQUUsQ0FBQztRQU12QixlQUFVLEdBQWdDLElBQUksQ0FBQztRQW9EdEQsMkJBQXNCLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUU3QyxtQkFBYyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFNckMsZUFBVSxHQUFHLEtBQUssQ0FBQztRQU9WLHlCQUFvQixHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBZTFELElBQUksQ0FBQyxhQUFhLEdBQUcsWUFBWSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxlQUFlLEdBQUcsY0FBYyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxlQUFlLEdBQUcsY0FBYyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxPQUFPLEdBQUcsZUFBZSxFQUFFLE1BQU0sQ0FBQztRQUV2QyxNQUFNLFFBQVEsR0FBRyxNQUFNLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsWUFBWSxHQUFHLGtCQUFrQixRQUFRLEVBQUUsQ0FBQztRQUNqRCxJQUFJLENBQUMsZUFBZSxHQUFHLHlCQUF5QixRQUFRLEVBQUUsQ0FBQztRQUUzRCxtQ0FBbUM7UUFDbkMsUUFBUSxFQUFFLGNBQWM7YUFDckIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7YUFDcEMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdEMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sUUFBUTtRQUNiLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBRXpCLElBQUksSUFBSSxDQUFDLG1CQUFtQixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3RELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUM7Z0JBQ2hDLGFBQWEsRUFBRSxJQUFJLENBQUMsZ0JBQWdCO2dCQUNwQyxlQUFlLEVBQUUsSUFBSSxDQUFDLHdCQUF3QjthQUMvQyxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQywyQkFBMkIsRUFBRSxDQUFDO1FBQ25DLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVNLFNBQVMsQ0FBQyxNQUFtQztRQUNsRCxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDWCxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDWCxJQUFJLGdCQUFnQixHQUFHLENBQUMsQ0FBQztRQUN6QixJQUFJLFlBQVksR0FBRyxRQUFRLENBQUM7UUFDNUIsSUFBSSxNQUFNLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDcEIsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNQLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDUCxnQkFBZ0IsR0FBRyxDQUFDLENBQUM7WUFDckIsWUFBWSxHQUFHLFFBQVEsQ0FBQztZQUN4QixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUN0QixDQUFDO1FBQ0QsSUFBSSxNQUFNLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDcEIsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNQLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDTixnQkFBZ0IsR0FBRyxFQUFFLENBQUM7WUFDdEIsWUFBWSxHQUFHLE9BQU8sQ0FBQztZQUN2QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNyQixDQUFDO1FBRUQsTUFBTSxJQUFJLEdBS047WUFDRix5REFBeUQ7WUFDekQsS0FBSyxFQUFFLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDckMsSUFBSSxNQUFNLEtBQUssSUFBSSxFQUFFLENBQUM7b0JBQ3BCLE9BQU8sRUFBRSxDQUFDLENBQUM7Z0JBQ2IsQ0FBQztnQkFDRCwwQkFBMEI7Z0JBQzFCLElBQUksTUFBTSxLQUFLLElBQUksRUFBRSxDQUFDO29CQUNwQixPQUFPLENBQUMsQ0FBQztnQkFDWCxDQUFDO2dCQUNELDBCQUEwQjtnQkFDMUIsa0JBQWtCO2dCQUNsQixPQUFPLENBQUMsQ0FBQztZQUNYLENBQUMsQ0FBQztZQUNGLDJEQUEyRDtZQUMzRCxPQUFPLEVBQUUsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7Z0JBQzVDLE9BQU8sQ0FBQyxHQUFHLGdCQUFnQixDQUFDO1lBQzlCLENBQUMsQ0FBQztZQUNGLFlBQVksRUFBRSxZQUFZO1lBQzFCLGdCQUFnQixFQUFFLGdCQUFnQjtTQUNuQyxDQUFDO1FBRUYsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUM1QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7UUFDdEMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUNoRCxDQUFDO0lBRU0sa0JBQWtCO1FBQ3ZCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRU0sT0FBTyxDQUFDLEtBQVU7UUFDdkIsMEJBQTBCO1FBQzFCLElBQUksT0FBTyxLQUFLLEtBQUssV0FBVyxFQUFFLENBQUM7WUFDakMsMEJBQTBCO1lBQzFCLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxPQUFPLEVBQUUsQ0FBQztnQkFDM0IsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO2dCQUN4QixJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLE1BQU0sRUFBRSxDQUFDO29CQUNqQyxJQUFJLENBQUMsWUFBWSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDMUQsQ0FBQztnQkFDRCxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO29CQUNuQyxJQUFJLENBQUMsY0FBYyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDNUQsQ0FBQztnQkFDRCxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLFNBQVMsRUFBRSxDQUFDO29CQUNwQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUM7Z0JBQ2pELENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFTSxvQkFBb0I7UUFDekIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFUyxlQUFlLENBQUMsY0FBc0IsRUFBRSxNQUFjO1FBQzlELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ25DLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDLEtBQUssTUFBTSxHQUFHLEtBQUssQ0FBQztJQUMvRCxDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLDJCQUEyQixFQUFFLENBQUM7UUFDbkMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM3QyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUN0QixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUM7UUFFcEMsSUFBSSxDQUFDLDJCQUEyQixFQUFFLENBQUM7UUFDbkMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUV0QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNuQixJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ2hELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUVyRSw4REFBOEQ7WUFDOUQsT0FBTyxDQUFDLGVBQWU7aUJBQ3BCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUM7aUJBQzVDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO2dCQUNwQixJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLEtBQUssSUFBSSxDQUFDO2dCQUMzQyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3RDLENBQUMsQ0FBQyxDQUFDO1lBRUwsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxFQUFFO2dCQUNuRCxjQUFjLEVBQUUsc0JBQXNCLENBQUMsUUFBUTtnQkFDL0MsYUFBYSxFQUFFLElBQUk7Z0JBQ25CLG1CQUFtQixFQUFFLE9BQU87Z0JBQzVCLFFBQVEsRUFBRSxJQUFJO2dCQUNkLFNBQVMsRUFBRSxPQUFPO2FBQ25CLENBQUMsQ0FBQztZQUVILElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO1FBQzFCLENBQUM7SUFDSCxDQUFDO0lBRUQsZUFBZTtRQUNiLHdCQUF3QjtRQUN4QixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDO1FBQzVCLENBQUM7SUFDSCxDQUFDO0lBRUQsY0FBYztRQUNaLElBQUksSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7WUFDL0IsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUM7Z0JBQzFDLFdBQVcsRUFBRSxLQUFLO2dCQUNsQixtQkFBbUIsRUFBRSxLQUFLO2dCQUMxQixtQkFBbUIsRUFBRSxJQUFJLENBQUMsb0JBQW9CO2FBQy9DLENBQUMsQ0FBQztZQUVILElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNqQixJQUFJLENBQUMsT0FBTztxQkFDVCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO3FCQUM1QyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtvQkFDcEIsT0FBTyxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQzdELENBQUMsQ0FBQyxDQUFDO1lBQ1AsQ0FBQztZQUVELE9BQU8sQ0FBQyxhQUFhO2lCQUNsQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO2lCQUM1QyxTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUNkLDBCQUEwQjtnQkFDMUIsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQ2hCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDdEIsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1lBRUwsT0FBTyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQztZQUVuRCxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztRQUMxQixDQUFDO0lBQ0gsQ0FBQztJQUVELGVBQWU7UUFDYix3QkFBd0I7UUFDeEIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzFDLElBQUksQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDO1FBQzVCLENBQUM7SUFDSCxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLGFBQWEsQ0FBQztRQUVoRSxJQUFJLHFCQUFxQixFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLHFCQUFxQixHQUFHLFNBQVMsQ0FDcEMscUJBQXFCLEVBQ3JCLE9BQU8sQ0FDUjtpQkFDRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztpQkFDcEMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ25CLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxHQUFHLEVBQUUsV0FBVyxFQUFFLENBQUM7Z0JBQ3JDLDBCQUEwQjtnQkFDMUIsSUFBSSxHQUFHLEtBQUssUUFBUSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDcEMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO29CQUNwQixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7b0JBQ3hCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDekIsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztJQUNILENBQUM7SUFFRCwyQkFBMkI7UUFDekIsMEJBQTBCO1FBQzFCLElBQUksSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7WUFDaEMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksRUFBRSxDQUFDO1lBQ25DLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUN2QyxJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUNwRCxDQUFDO1FBQ0QsMEJBQTBCO1FBQzFCLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxXQUFXLEVBQUUsQ0FBQztJQUM1QyxDQUFDOzhHQXhjVSxzQkFBc0IsNlBBaU52QixvQkFBb0I7a0dBak5uQixzQkFBc0IsK05Bd0lHLFVBQVUseUhBZ0NGLFdBQVcsK0dBR2hCLFVBQVUsK0dBR1YsV0FBVyw2SUFHSCxXQUFXLDJDQ3RPNUQsZ2hJQWtJQTs7MkZEN0VhLHNCQUFzQjtrQkFSbEMsU0FBUzsrQkFDRSxnQkFBZ0IsaUJBR1gsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxLQUFLOzswQkFnTmQsUUFBUTs7MEJBQ1IsUUFBUTs7MEJBQ1IsUUFBUTs7MEJBQ1IsTUFBTTsyQkFBQyxvQkFBb0I7eUNBNU12QixtQkFBbUI7c0JBRHpCLE1BQU07Z0JBcUlJLGFBQWE7c0JBRHZCLFNBQVM7dUJBQUMsZUFBZSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFpQ3pDLHFCQUFxQjtzQkFEM0IsU0FBUzt1QkFBQyx1QkFBdUIsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBSWxELGdCQUFnQjtzQkFEdEIsU0FBUzt1QkFBQyxrQkFBa0IsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBSTVDLGdCQUFnQjtzQkFEdEIsU0FBUzt1QkFBQyxrQkFBa0IsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFJM0Qsd0JBQXdCO3NCQUQ5QixTQUFTO3VCQUFDLDBCQUEwQixFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEVudmlyb25tZW50SW5qZWN0b3IsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5qZWN0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIGluamVjdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBTS1lfU1RBQ0tJTkdfQ09OVEVYVCxcbiAgU2t5QWZmaXhBdXRvRml0Q29udGV4dCxcbiAgU2t5QWZmaXhTZXJ2aWNlLFxuICBTa3lBZmZpeGVyLFxuICBTa3lDb3JlQWRhcHRlclNlcnZpY2UsXG4gIFNreU92ZXJsYXlJbnN0YW5jZSxcbiAgU2t5T3ZlcmxheVNlcnZpY2UsXG4gIFNreVN0YWNraW5nQ29udGV4dCxcbn0gZnJvbSAnQHNreXV4L2NvcmUnO1xuaW1wb3J0IHsgU2t5SW5wdXRCb3hIb3N0U2VydmljZSB9IGZyb20gJ0Bza3l1eC9mb3Jtcyc7XG5pbXBvcnQgeyBTa3lUaGVtZVNlcnZpY2UgfSBmcm9tICdAc2t5dXgvdGhlbWUnO1xuXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24sIGZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBTa3lUaW1lcGlja2VyVGltZUZvcm1hdFR5cGUgfSBmcm9tICcuL3RpbWVwaWNrZXItdGltZS1mb3JtYXQtdHlwZSc7XG5pbXBvcnQgeyBTa3lUaW1lcGlja2VyVGltZU91dHB1dCB9IGZyb20gJy4vdGltZXBpY2tlci10aW1lLW91dHB1dCc7XG5cbmxldCBuZXh0SWQgPSAwO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBTS1kgVVgtdGhlbWVkIHJlcGxhY2VtZW50IGZvciB0aGUgSFRNTCBgaW5wdXRgIGVsZW1lbnQgd2l0aCBgdHlwZT1cInRpbWVcImAuXG4gKiBUaGUgdmFsdWUgdGhhdCB1c2VycyBzZWxlY3QgaXMgZHJpdmVuIHRocm91Z2ggdGhlIGBuZ01vZGVsYCBhdHRyaWJ1dGVcbiAqIHNwZWNpZmllZCBvbiB0aGUgYGlucHV0YCBlbGVtZW50LiBZb3UgbXVzdCB3cmFwIHRoaXMgY29tcG9uZW50IGFyb3VuZCBhbiBgaW5wdXRgXG4gKiB3aXRoIHRoZSBgc2t5VGltZXBpY2tlcklucHV0YCBkaXJlY3RpdmUuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS10aW1lcGlja2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RpbWVwaWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90aW1lcGlja2VyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiBmYWxzZSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5VGltZXBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhlIHZhbHVlIGluIHRoZSB0aW1lcGlja2VyIGlucHV0IGNoYW5nZXMuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIHNlbGVjdGVkVGltZUNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxTa3lUaW1lcGlja2VyVGltZU91dHB1dD4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8U2t5VGltZXBpY2tlclRpbWVPdXRwdXQ+KCk7XG5cbiAgcHVibGljIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuI19kaXNhYmxlZCA9IHZhbHVlO1xuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy4jX2Rpc2FibGVkO1xuICB9XG5cbiAgcHVibGljIHNldCBzZWxlY3RlZEhvdXIoc2V0SG91cjogbnVtYmVyKSB7XG4gICAgbGV0IGhvdXJPZmZzZXQgPSAwO1xuICAgIGlmICh0aGlzLnNlbGVjdGVkTWVyaWRpZXMgPT09ICdBTScgJiYgc2V0SG91ciA9PT0gMTIpIHtcbiAgICAgIGhvdXJPZmZzZXQgPSAtMTI7XG4gICAgfVxuICAgIGlmICh0aGlzLnNlbGVjdGVkTWVyaWRpZXMgPT09ICdQTScgJiYgc2V0SG91ciAhPT0gMTIpIHtcbiAgICAgIGhvdXJPZmZzZXQgPSAxMjtcbiAgICB9XG4gICAgaWYgKHRoaXMuaXM4NjAxKSB7XG4gICAgICBob3VyT2Zmc2V0ID0gMDtcbiAgICB9XG4gICAgY29uc3QgaG91ciA9IG1vbWVudCh7IGhvdXI6IHNldEhvdXIgfSkuYWRkKGhvdXJPZmZzZXQsICdob3VycycpLmhvdXIoKTtcblxuICAgIHRoaXMuYWN0aXZlVGltZSA9IG1vbWVudCh7XG4gICAgICBob3VyOiBob3VyLFxuICAgICAgbWludXRlOiBtb21lbnQodGhpcy5hY3RpdmVUaW1lKS5nZXQoJ21pbnV0ZScpICsgMCxcbiAgICB9KS50b0RhdGUoKTtcbiAgICB0aGlzLnNlbGVjdGVkVGltZUNoYW5nZWQuZW1pdCh0aGlzLnNlbGVjdGVkVGltZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNlbGVjdGVkSG91cigpOiBudW1iZXIge1xuICAgIGlmICghdGhpcy5pczg2MDEpIHtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICByZXR1cm4gcGFyc2VJbnQobW9tZW50KHRoaXMuYWN0aXZlVGltZSkuZm9ybWF0KCdoJyksIDApIHx8IDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBtb21lbnQodGhpcy5hY3RpdmVUaW1lKS5ob3VyKCkgKyAwO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXQgc2VsZWN0ZWRNZXJpZGllcyhtZXJpZGllczogc3RyaW5nKSB7XG4gICAgbWVyaWRpZXMgPSBtZXJpZGllcy50cmltKCk7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAobWVyaWRpZXMgIT09IHRoaXMuc2VsZWN0ZWRNZXJpZGllcykge1xuICAgICAgc3dpdGNoIChtZXJpZGllcykge1xuICAgICAgICBjYXNlICdBTSc6XG4gICAgICAgICAgdGhpcy5hY3RpdmVUaW1lID0gbW9tZW50KHRoaXMuYWN0aXZlVGltZSlcbiAgICAgICAgICAgIC5zdWJ0cmFjdCgxMiwgJ2hvdXJzJylcbiAgICAgICAgICAgIC50b0RhdGUoKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdQTSc6XG4gICAgICAgICAgdGhpcy5hY3RpdmVUaW1lID0gbW9tZW50KHRoaXMuYWN0aXZlVGltZSkuYWRkKDEyLCAnaG91cnMnKS50b0RhdGUoKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIHRoaXMuc2VsZWN0ZWRUaW1lQ2hhbmdlZC5lbWl0KHRoaXMuc2VsZWN0ZWRUaW1lKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNlbGVjdGVkTWVyaWRpZXMoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5hY3RpdmVUaW1lKSB7XG4gICAgICByZXR1cm4gbW9tZW50KHRoaXMuYWN0aXZlVGltZSkuZm9ybWF0KCdBJyk7XG4gICAgfVxuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIHB1YmxpYyBzZXQgc2VsZWN0ZWRNaW51dGUobWludXRlOiBudW1iZXIpIHtcbiAgICB0aGlzLmFjdGl2ZVRpbWUgPSBtb21lbnQoe1xuICAgICAgaG91cjogbW9tZW50KHRoaXMuYWN0aXZlVGltZSkuZ2V0KCdob3VyJykgKyAwLFxuICAgICAgbWludXRlOiBtaW51dGUsXG4gICAgfSkudG9EYXRlKCk7XG4gICAgdGhpcy5zZWxlY3RlZFRpbWVDaGFuZ2VkLmVtaXQodGhpcy5zZWxlY3RlZFRpbWUpO1xuICB9XG5cbiAgcHVibGljIGdldCBzZWxlY3RlZE1pbnV0ZSgpOiBudW1iZXIge1xuICAgIHJldHVybiBtb21lbnQodGhpcy5hY3RpdmVUaW1lKS5taW51dGUoKSArIDA7XG4gIH1cblxuICBwdWJsaWMgc2V0IHNlbGVjdGVkVGltZShuZXdUaW1lOiBTa3lUaW1lcGlja2VyVGltZU91dHB1dCB8IHVuZGVmaW5lZCkge1xuICAgIGlmICh0eXBlb2YgbmV3VGltZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIC8qIHNhbml0eSBjaGVjayAqL1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgIGlmIChuZXdUaW1lLmxvY2FsICE9PSAnSW52YWxpZCBkYXRlJykge1xuICAgICAgICB0aGlzLmFjdGl2ZVRpbWUgPSBuZXdUaW1lLmlzbzg2MDE7XG4gICAgICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2VsZWN0ZWRUaW1lKCk6IFNreVRpbWVwaWNrZXJUaW1lT3V0cHV0IHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCB0aW1lOiBTa3lUaW1lcGlja2VyVGltZU91dHB1dCA9IHtcbiAgICAgIGhvdXI6IG1vbWVudCh0aGlzLmFjdGl2ZVRpbWUpLmhvdXIoKSxcbiAgICAgIG1pbnV0ZTogbW9tZW50KHRoaXMuYWN0aXZlVGltZSkubWludXRlKCksXG4gICAgICBtZXJpZGllOiBtb21lbnQodGhpcy5hY3RpdmVUaW1lKS5mb3JtYXQoJ0EnKSxcbiAgICAgIHRpbWV6b25lOiBwYXJzZUludChtb21lbnQodGhpcy5hY3RpdmVUaW1lKS5mb3JtYXQoJ1onKSwgMTApLFxuICAgICAgaXNvODYwMTogdGhpcy5hY3RpdmVUaW1lLFxuICAgICAgbG9jYWw6IG1vbWVudCh0aGlzLmFjdGl2ZVRpbWUpLmZvcm1hdCh0aGlzLmxvY2FsZUZvcm1hdCksXG4gICAgICBjdXN0b21Gb3JtYXQ6XG4gICAgICAgIHR5cGVvZiB0aGlzLnJldHVybkZvcm1hdCAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAgICA/IHRoaXMucmV0dXJuRm9ybWF0XG4gICAgICAgICAgOiB0aGlzLmxvY2FsZUZvcm1hdCxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHRpbWU7XG4gIH1cblxuICBwdWJsaWMgYWN0aXZlVGltZTogRGF0ZSA9IG5ldyBEYXRlKCk7XG5cbiAgcHVibGljIGhvdXJzOiBudW1iZXJbXSA9IFtdO1xuXG4gIHB1YmxpYyBpczg2MDEgPSBmYWxzZTtcblxuICBwdWJsaWMgaXNPcGVuID0gZmFsc2U7XG5cbiAgcHVibGljIGlzVmlzaWJsZSA9IGZhbHNlO1xuXG4gIHB1YmxpYyBsb2NhbGVGb3JtYXQgPSAnaDptbSBBJztcblxuICBwdWJsaWMgbWludXRlczogbnVtYmVyW10gPSBbXTtcblxuICBwdWJsaWMgbWludXRlTXVsdGlwbGllcjogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyByZXR1cm5Gb3JtYXQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICBwdWJsaWMgdGltZUZvcm1hdDogU2t5VGltZXBpY2tlclRpbWVGb3JtYXRUeXBlID0gJ2hoJztcblxuICBwdWJsaWMgdGltZXBpY2tlcklkOiBzdHJpbmc7XG5cbiAgcHVibGljIHRyaWdnZXJCdXR0b25JZDogc3RyaW5nO1xuXG4gIEBWaWV3Q2hpbGQoJ3RpbWVwaWNrZXJSZWYnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgcHVibGljIHNldCB0aW1lcGlja2VyUmVmKHZhbHVlOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLiNfdGltZXBpY2tlclJlZiA9IHZhbHVlO1xuXG4gICAgICB0aGlzLiNhZGRLZXl1cExpc3RlbmVyKCk7XG5cbiAgICAgIC8vIFdhaXQgZm9yIHRoZSB0aW1lcGlja2VyIGNvbXBvbmVudCB0byByZW5kZXIgYmVmb3JlIGdhdWdpbmcgZGltZW5zaW9ucy5cbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLiNkZXN0cm95QWZmaXhlcigpO1xuICAgICAgICB0aGlzLiNjcmVhdGVBZmZpeGVyKCk7XG5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMudGltZXBpY2tlclJlZikge1xuICAgICAgICAgICAgdGhpcy4jY29yZUFkYXB0ZXIuZ2V0Rm9jdXNhYmxlQ2hpbGRyZW5BbmRBcHBseUZvY3VzKFxuICAgICAgICAgICAgICB0aGlzLnRpbWVwaWNrZXJSZWYsXG4gICAgICAgICAgICAgICcuc2t5LXRpbWVwaWNrZXItY29udGVudCcsXG4gICAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLmlzVmlzaWJsZSA9IHRydWU7XG4gICAgICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCB0aW1lcGlja2VyUmVmKCk6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLiNfdGltZXBpY2tlclJlZjtcbiAgfVxuXG4gIEBWaWV3Q2hpbGQoJ3RpbWVwaWNrZXJUZW1wbGF0ZVJlZicsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgcHVibGljIHRpbWVwaWNrZXJUZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8dW5rbm93bj4gfCB1bmRlZmluZWQ7XG5cbiAgQFZpZXdDaGlsZCgndHJpZ2dlckJ1dHRvblJlZicsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICBwdWJsaWMgdHJpZ2dlckJ1dHRvblJlZjogRWxlbWVudFJlZiB8IHVuZGVmaW5lZDtcblxuICBAVmlld0NoaWxkKCdpbnB1dFRlbXBsYXRlUmVmJywgeyByZWFkOiBUZW1wbGF0ZVJlZiwgc3RhdGljOiB0cnVlIH0pXG4gIHB1YmxpYyBpbnB1dFRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjx1bmtub3duPiB8IHVuZGVmaW5lZDtcblxuICBAVmlld0NoaWxkKCd0cmlnZ2VyQnV0dG9uVGVtcGxhdGVSZWYnLCB7IHJlYWQ6IFRlbXBsYXRlUmVmLCBzdGF0aWM6IHRydWUgfSlcbiAgcHVibGljIHRyaWdnZXJCdXR0b25UZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8dW5rbm93bj4gfCB1bmRlZmluZWQ7XG5cbiAgI2FmZml4ZXI6IFNreUFmZml4ZXIgfCB1bmRlZmluZWQ7XG5cbiAgI3RpbWVwaWNrZXJVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgI25nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICNvdmVybGF5OiBTa3lPdmVybGF5SW5zdGFuY2UgfCB1bmRlZmluZWQ7XG5cbiAgI292ZXJsYXlLZXl1cExpc3RlbmVyOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQ7XG5cbiAgI19kaXNhYmxlZCA9IGZhbHNlO1xuXG4gICNfdGltZXBpY2tlclJlZjogRWxlbWVudFJlZiB8IHVuZGVmaW5lZDtcblxuICAjYWZmaXhTZXJ2aWNlOiBTa3lBZmZpeFNlcnZpY2U7XG4gICNjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWY7XG4gICNjb3JlQWRhcHRlcjogU2t5Q29yZUFkYXB0ZXJTZXJ2aWNlO1xuICByZWFkb25seSAjZW52aXJvbm1lbnRJbmplY3RvciA9IGluamVjdChFbnZpcm9ubWVudEluamVjdG9yKTtcbiAgI292ZXJsYXlTZXJ2aWNlOiBTa3lPdmVybGF5U2VydmljZTtcbiAgI3pJbmRleDogT2JzZXJ2YWJsZTxudW1iZXI+IHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGFmZml4U2VydmljZTogU2t5QWZmaXhTZXJ2aWNlLFxuICAgIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBjb3JlQWRhcHRlcjogU2t5Q29yZUFkYXB0ZXJTZXJ2aWNlLFxuICAgIG92ZXJsYXlTZXJ2aWNlOiBTa3lPdmVybGF5U2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBwdWJsaWMgaW5wdXRCb3hIb3N0U2VydmljZT86IFNreUlucHV0Qm94SG9zdFNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgdGhlbWVTdmM/OiBTa3lUaGVtZVNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKClcbiAgICBASW5qZWN0KFNLWV9TVEFDS0lOR19DT05URVhUKVxuICAgIHN0YWNraW5nQ29udGV4dD86IFNreVN0YWNraW5nQ29udGV4dCxcbiAgKSB7XG4gICAgdGhpcy4jYWZmaXhTZXJ2aWNlID0gYWZmaXhTZXJ2aWNlO1xuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yID0gY2hhbmdlRGV0ZWN0b3I7XG4gICAgdGhpcy4jY29yZUFkYXB0ZXIgPSBjb3JlQWRhcHRlcjtcbiAgICB0aGlzLiNvdmVybGF5U2VydmljZSA9IG92ZXJsYXlTZXJ2aWNlO1xuICAgIHRoaXMuI3pJbmRleCA9IHN0YWNraW5nQ29udGV4dD8uekluZGV4O1xuXG4gICAgY29uc3QgdW5pcXVlSWQgPSBuZXh0SWQrKztcbiAgICB0aGlzLnRpbWVwaWNrZXJJZCA9IGBza3ktdGltZXBpY2tlci0ke3VuaXF1ZUlkfWA7XG4gICAgdGhpcy50cmlnZ2VyQnV0dG9uSWQgPSBgc2t5LXRpbWVwaWNrZXItYnV0dG9uLSR7dW5pcXVlSWR9YDtcblxuICAgIC8vIFVwZGF0ZSBpY29ucyB3aGVuIHRoZW1lIGNoYW5nZXMuXG4gICAgdGhlbWVTdmM/LnNldHRpbmdzQ2hhbmdlXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNldEZvcm1hdCh0aGlzLnRpbWVGb3JtYXQpO1xuICAgIHRoaXMuI2FkZEtleXVwTGlzdGVuZXIoKTtcblxuICAgIGlmICh0aGlzLmlucHV0Qm94SG9zdFNlcnZpY2UgJiYgdGhpcy5pbnB1dFRlbXBsYXRlUmVmKSB7XG4gICAgICB0aGlzLmlucHV0Qm94SG9zdFNlcnZpY2UucG9wdWxhdGUoe1xuICAgICAgICBpbnB1dFRlbXBsYXRlOiB0aGlzLmlucHV0VGVtcGxhdGVSZWYsXG4gICAgICAgIGJ1dHRvbnNUZW1wbGF0ZTogdGhpcy50cmlnZ2VyQnV0dG9uVGVtcGxhdGVSZWYsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMuI3JlbW92ZVBpY2tlckV2ZW50TGlzdGVuZXJzKCk7XG4gICAgdGhpcy4jZGVzdHJveUFmZml4ZXIoKTtcbiAgICB0aGlzLiNkZXN0cm95T3ZlcmxheSgpO1xuICB9XG5cbiAgcHVibGljIHNldEZvcm1hdChmb3JtYXQ6IFNreVRpbWVwaWNrZXJUaW1lRm9ybWF0VHlwZSk6IHZvaWQge1xuICAgIGxldCBoID0gMTI7XG4gICAgbGV0IG0gPSAxMjtcbiAgICBsZXQgbWludXRlTXVsdGlwbGllciA9IDU7XG4gICAgbGV0IGxvY2FsZUZvcm1hdCA9ICdoOm1tIEEnO1xuICAgIGlmIChmb3JtYXQgPT09ICdoaCcpIHtcbiAgICAgIGggPSAxMjtcbiAgICAgIG0gPSAxMjtcbiAgICAgIG1pbnV0ZU11bHRpcGxpZXIgPSA1O1xuICAgICAgbG9jYWxlRm9ybWF0ID0gJ2g6bW0gQSc7XG4gICAgICB0aGlzLmlzODYwMSA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAoZm9ybWF0ID09PSAnSEgnKSB7XG4gICAgICBoID0gMjQ7XG4gICAgICBtID0gNDtcbiAgICAgIG1pbnV0ZU11bHRpcGxpZXIgPSAxNTtcbiAgICAgIGxvY2FsZUZvcm1hdCA9ICdISDptbSc7XG4gICAgICB0aGlzLmlzODYwMSA9IHRydWU7XG4gICAgfVxuXG4gICAgY29uc3QgZGF0YToge1xuICAgICAgaG91cnM6IG51bWJlcltdO1xuICAgICAgbWludXRlczogbnVtYmVyW107XG4gICAgICBsb2NhbGVGb3JtYXQ6IHN0cmluZztcbiAgICAgIG1pbnV0ZU11bHRpcGxpZXI6IG51bWJlcjtcbiAgICB9ID0ge1xuICAgICAgLy8gQ3JlYXRlIGEgc3BhcnNlIGFycmF5IHdpdGggYSBsZW5ndGggZXF1YWwgdG8gdGhlIGhvdXIuXG4gICAgICBob3VyczogQXJyYXkoLi4uQXJyYXkoaCkpLm1hcCgoXywgaSkgPT4ge1xuICAgICAgICBpZiAoZm9ybWF0ID09PSAnaGgnKSB7XG4gICAgICAgICAgcmV0dXJuICsraTtcbiAgICAgICAgfVxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICBpZiAoZm9ybWF0ID09PSAnSEgnKSB7XG4gICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgIH1cbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgLyogc2FuaXR5IGNoZWNrICovXG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfSksXG4gICAgICAvLyBDcmVhdGUgYSBzcGFyc2UgYXJyYXkgd2l0aCBhIGxlbmd0aCBlcXVhbCB0byB0aGUgbWludXRlLlxuICAgICAgbWludXRlczogQXJyYXkoLi4uQXJyYXkobSkpLm1hcChmdW5jdGlvbiAoXywgaSkge1xuICAgICAgICByZXR1cm4gaSAqIG1pbnV0ZU11bHRpcGxpZXI7XG4gICAgICB9KSxcbiAgICAgIGxvY2FsZUZvcm1hdDogbG9jYWxlRm9ybWF0LFxuICAgICAgbWludXRlTXVsdGlwbGllcjogbWludXRlTXVsdGlwbGllcixcbiAgICB9O1xuXG4gICAgdGhpcy5ob3VycyA9IGRhdGEuaG91cnM7XG4gICAgdGhpcy5taW51dGVzID0gZGF0YS5taW51dGVzO1xuICAgIHRoaXMubG9jYWxlRm9ybWF0ID0gZGF0YS5sb2NhbGVGb3JtYXQ7XG4gICAgdGhpcy5taW51dGVNdWx0aXBsaWVyID0gZGF0YS5taW51dGVNdWx0aXBsaWVyO1xuICB9XG5cbiAgcHVibGljIG9uQ2xvc2VCdXR0b25DbGljaygpOiB2b2lkIHtcbiAgICB0aGlzLiNjbG9zZVBpY2tlcigpO1xuICB9XG5cbiAgcHVibGljIHNldFRpbWUoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHR5cGVvZiBldmVudCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ2NsaWNrJykge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgaWYgKGV2ZW50LnRhcmdldC5uYW1lID09PSAnaG91cicpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkSG91ciA9IHBhcnNlSW50KGV2ZW50LnRhcmdldC5pbm5lckhUTUwsIDApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChldmVudC50YXJnZXQubmFtZSA9PT0gJ21pbnV0ZScpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkTWludXRlID0gcGFyc2VJbnQoZXZlbnQudGFyZ2V0LmlubmVySFRNTCwgMCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV2ZW50LnRhcmdldC5uYW1lID09PSAnbWVyaWRpZScpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkTWVyaWRpZXMgPSBldmVudC50YXJnZXQuaW5uZXJIVE1MO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uVHJpZ2dlckJ1dHRvbkNsaWNrKCk6IHZvaWQge1xuICAgIHRoaXMuI29wZW5QaWNrZXIoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoaWdobGlnaHRNaW51dGUoc2VsZWN0ZWRNaW51dGU6IG51bWJlciwgbWludXRlOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBjb25zdCByYWRpeCA9IHRoaXMuaXM4NjAxID8gMTUgOiA1O1xuICAgIHJldHVybiBNYXRoLmZsb29yKHNlbGVjdGVkTWludXRlIC8gcmFkaXgpID09PSBtaW51dGUgLyByYWRpeDtcbiAgfVxuXG4gICNjbG9zZVBpY2tlcigpOiB2b2lkIHtcbiAgICB0aGlzLiNkZXN0cm95QWZmaXhlcigpO1xuICAgIHRoaXMuI2Rlc3Ryb3lPdmVybGF5KCk7XG4gICAgdGhpcy4jcmVtb3ZlUGlja2VyRXZlbnRMaXN0ZW5lcnMoKTtcbiAgICB0aGlzLnRyaWdnZXJCdXR0b25SZWY/Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB0aGlzLmlzT3BlbiA9IGZhbHNlO1xuICB9XG5cbiAgI29wZW5QaWNrZXIoKTogdm9pZCB7XG4gICAgdGhpcy5pc1Zpc2libGUgPSBmYWxzZTtcbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcblxuICAgIHRoaXMuI3JlbW92ZVBpY2tlckV2ZW50TGlzdGVuZXJzKCk7XG4gICAgdGhpcy4jZGVzdHJveU92ZXJsYXkoKTtcbiAgICB0aGlzLiNjcmVhdGVPdmVybGF5KCk7XG5cbiAgICB0aGlzLmlzT3BlbiA9IHRydWU7XG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICAjY3JlYXRlQWZmaXhlcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50aW1lcGlja2VyUmVmICYmIHRoaXMudHJpZ2dlckJ1dHRvblJlZikge1xuICAgICAgY29uc3QgYWZmaXhlciA9IHRoaXMuI2FmZml4U2VydmljZS5jcmVhdGVBZmZpeGVyKHRoaXMudGltZXBpY2tlclJlZik7XG5cbiAgICAgIC8vIEhpZGUgdGltZXBpY2tlciB3aGVuIHRyaWdnZXIgYnV0dG9uIGlzIHNjcm9sbGVkIG9mZiBzY3JlZW4uXG4gICAgICBhZmZpeGVyLnBsYWNlbWVudENoYW5nZVxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jdGltZXBpY2tlclVuc3Vic2NyaWJlKSlcbiAgICAgICAgLnN1YnNjcmliZSgoY2hhbmdlKSA9PiB7XG4gICAgICAgICAgdGhpcy5pc1Zpc2libGUgPSBjaGFuZ2UucGxhY2VtZW50ICE9PSBudWxsO1xuICAgICAgICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KTtcblxuICAgICAgYWZmaXhlci5hZmZpeFRvKHRoaXMudHJpZ2dlckJ1dHRvblJlZi5uYXRpdmVFbGVtZW50LCB7XG4gICAgICAgIGF1dG9GaXRDb250ZXh0OiBTa3lBZmZpeEF1dG9GaXRDb250ZXh0LlZpZXdwb3J0LFxuICAgICAgICBlbmFibGVBdXRvRml0OiB0cnVlLFxuICAgICAgICBob3Jpem9udGFsQWxpZ25tZW50OiAncmlnaHQnLFxuICAgICAgICBpc1N0aWNreTogdHJ1ZSxcbiAgICAgICAgcGxhY2VtZW50OiAnYmVsb3cnLFxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuI2FmZml4ZXIgPSBhZmZpeGVyO1xuICAgIH1cbiAgfVxuXG4gICNkZXN0cm95QWZmaXhlcigpOiB2b2lkIHtcbiAgICAvKmlzdGFuYnVsIGlnbm9yZSBlbHNlKi9cbiAgICBpZiAodGhpcy4jYWZmaXhlcikge1xuICAgICAgdGhpcy4jYWZmaXhlci5kZXN0cm95KCk7XG4gICAgICB0aGlzLiNhZmZpeGVyID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gICNjcmVhdGVPdmVybGF5KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnRpbWVwaWNrZXJUZW1wbGF0ZVJlZikge1xuICAgICAgY29uc3Qgb3ZlcmxheSA9IHRoaXMuI292ZXJsYXlTZXJ2aWNlLmNyZWF0ZSh7XG4gICAgICAgIGVuYWJsZUNsb3NlOiBmYWxzZSxcbiAgICAgICAgZW5hYmxlUG9pbnRlckV2ZW50czogZmFsc2UsXG4gICAgICAgIGVudmlyb25tZW50SW5qZWN0b3I6IHRoaXMuI2Vudmlyb25tZW50SW5qZWN0b3IsXG4gICAgICB9KTtcblxuICAgICAgaWYgKHRoaXMuI3pJbmRleCkge1xuICAgICAgICB0aGlzLiN6SW5kZXhcbiAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jdGltZXBpY2tlclVuc3Vic2NyaWJlKSlcbiAgICAgICAgICAuc3Vic2NyaWJlKCh6SW5kZXgpID0+IHtcbiAgICAgICAgICAgIG92ZXJsYXkuY29tcG9uZW50UmVmLmluc3RhbmNlLnpJbmRleCA9IHpJbmRleC50b1N0cmluZygxMCk7XG4gICAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIG92ZXJsYXkuYmFja2Ryb3BDbGlja1xuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jdGltZXBpY2tlclVuc3Vic2NyaWJlKSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgICBpZiAodGhpcy5pc09wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuI2Nsb3NlUGlja2VyKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgb3ZlcmxheS5hdHRhY2hUZW1wbGF0ZSh0aGlzLnRpbWVwaWNrZXJUZW1wbGF0ZVJlZik7XG5cbiAgICAgIHRoaXMuI292ZXJsYXkgPSBvdmVybGF5O1xuICAgIH1cbiAgfVxuXG4gICNkZXN0cm95T3ZlcmxheSgpOiB2b2lkIHtcbiAgICAvKmlzdGFuYnVsIGlnbm9yZSBlbHNlKi9cbiAgICBpZiAodGhpcy4jb3ZlcmxheSkge1xuICAgICAgdGhpcy4jb3ZlcmxheVNlcnZpY2UuY2xvc2UodGhpcy4jb3ZlcmxheSk7XG4gICAgICB0aGlzLiNvdmVybGF5ID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gICNhZGRLZXl1cExpc3RlbmVyKCk6IHZvaWQge1xuICAgIGNvbnN0IHRpbWVwaWNrZXJNZW51RWxlbWVudCA9IHRoaXMudGltZXBpY2tlclJlZj8ubmF0aXZlRWxlbWVudDtcblxuICAgIGlmICh0aW1lcGlja2VyTWVudUVsZW1lbnQpIHtcbiAgICAgIHRoaXMuI292ZXJsYXlLZXl1cExpc3RlbmVyID0gZnJvbUV2ZW50PEtleWJvYXJkRXZlbnQ+KFxuICAgICAgICB0aW1lcGlja2VyTWVudUVsZW1lbnQsXG4gICAgICAgICdrZXl1cCcsXG4gICAgICApXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgICBjb25zdCBrZXkgPSBldmVudC5rZXk/LnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgICBpZiAoa2V5ID09PSAnZXNjYXBlJyAmJiB0aGlzLmlzT3Blbikge1xuICAgICAgICAgICAgdGhpcy4jY2xvc2VQaWNrZXIoKTtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gICNyZW1vdmVQaWNrZXJFdmVudExpc3RlbmVycygpOiB2b2lkIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICh0aGlzLiN0aW1lcGlja2VyVW5zdWJzY3JpYmUpIHtcbiAgICAgIHRoaXMuI3RpbWVwaWNrZXJVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgICB0aGlzLiN0aW1lcGlja2VyVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgICAgIHRoaXMuI3RpbWVwaWNrZXJVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgfVxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgdGhpcy4jb3ZlcmxheUtleXVwTGlzdGVuZXI/LnVuc3Vic2NyaWJlKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJza3ktdGltZXBpY2tlclwiPlxuICBAaWYgKCFpbnB1dEJveEhvc3RTZXJ2aWNlKSB7XG4gICAgPGRpdiBjbGFzcz1cInNreS1pbnB1dC1ncm91cFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImlucHV0VGVtcGxhdGVSZWZcIiAvPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRyaWdnZXJCdXR0b25UZW1wbGF0ZVJlZlwiIC8+XG4gICAgPC9kaXY+XG4gIH1cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2lucHV0VGVtcGxhdGVSZWY+XG4gIDxuZy1jb250ZW50IC8+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3RyaWdnZXJCdXR0b25UZW1wbGF0ZVJlZj5cbiAgPGRpdiBjbGFzcz1cInNreS1pbnB1dC1ncm91cC1idG5cIj5cbiAgICA8YnV0dG9uXG4gICAgICAjdHJpZ2dlckJ1dHRvblJlZlxuICAgICAgYXJpYS1oYXNwb3B1cD1cImRpYWxvZ1wiXG4gICAgICBjbGFzcz1cInNreS1idG4gc2t5LWJ0bi1kZWZhdWx0IHNreS1pbnB1dC1ncm91cC10aW1lcGlja2VyLWJ0blwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIFthdHRyLmFyaWEtY29udHJvbHNdPVwiaXNPcGVuID8gdGltZXBpY2tlcklkIDogbnVsbFwiXG4gICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cImlzT3BlblwiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICBpbnB1dEJveEhvc3RTZXJ2aWNlPy5sYWJlbFRleHRcbiAgICAgICAgICA/ICgnc2t5dXhfdGltZXBpY2tlcl9idXR0b25fbGFiZWxfY29udGV4dCdcbiAgICAgICAgICAgIHwgc2t5TGliUmVzb3VyY2VzOiBpbnB1dEJveEhvc3RTZXJ2aWNlPy5sYWJlbFRleHQpXG4gICAgICAgICAgOiAoJ3NreXV4X3RpbWVwaWNrZXJfYnV0dG9uX2xhYmVsJyB8IHNreUxpYlJlc291cmNlcylcbiAgICAgIFwiXG4gICAgICBbYXR0ci5pZF09XCJ0cmlnZ2VyQnV0dG9uSWRcIlxuICAgICAgW2F0dHIudGl0bGVdPVwiXG4gICAgICAgIGlucHV0Qm94SG9zdFNlcnZpY2U/LmxhYmVsVGV4dFxuICAgICAgICAgID8gKCdza3l1eF90aW1lcGlja2VyX2J1dHRvbl9sYWJlbF9jb250ZXh0J1xuICAgICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXM6IGlucHV0Qm94SG9zdFNlcnZpY2U/LmxhYmVsVGV4dClcbiAgICAgICAgICA6ICgnc2t5dXhfdGltZXBpY2tlcl9idXR0b25fbGFiZWwnIHwgc2t5TGliUmVzb3VyY2VzKVxuICAgICAgXCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAoY2xpY2spPVwib25UcmlnZ2VyQnV0dG9uQ2xpY2soKVwiXG4gICAgPlxuICAgICAgPHNreS1pY29uIGljb25OYW1lPVwiY2xvY2tcIiBpY29uU2l6ZT1cImxcIiAvPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjdGltZXBpY2tlclRlbXBsYXRlUmVmPlxuICA8ZGl2XG4gICAgI3RpbWVwaWNrZXJSZWZcbiAgICBjbGFzcz1cInNreS10aW1lcGlja2VyLWNvbnRhaW5lciBza3ktc2hhZG93IHNreS1ib3ggc2t5LWVsZXZhdGlvbi00XCJcbiAgICByb2xlPVwiZGlhbG9nXCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwidHJpZ2dlckJ1dHRvbklkXCJcbiAgICBbYXR0ci5pZF09XCJ0aW1lcGlja2VySWRcIlxuICAgIFtjbGFzcy5za3ktdGltZXBpY2tlci1oaWRkZW5dPVwiIWlzVmlzaWJsZVwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwic2t5LXRpbWVwaWNrZXItY29udGVudFwiPlxuICAgICAgPHNlY3Rpb25cbiAgICAgICAgY2xhc3M9XCJza3ktdGltZXBpY2tlci1jb2x1bW4gc2t5LXRpbWVwaWNrZXItY29sdW1uLWhvdXJzXCJcbiAgICAgICAgW25nQ2xhc3NdPVwieyAnc2t5LXRpbWVwaWNrZXItMjRob3VyJzogaXM4NjAxIH1cIlxuICAgICAgPlxuICAgICAgICA8b2w+XG4gICAgICAgICAgQGZvciAoaG91ciBvZiBob3VyczsgdHJhY2sgaG91cikge1xuICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgbmFtZT1cImhvdXJcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3NreS1idG4tYWN0aXZlJzogc2VsZWN0ZWRIb3VyID09PSBob3VyIH1cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzZXRUaW1lKCRldmVudClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgaG91ciB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgfVxuICAgICAgICA8L29sPlxuICAgICAgPC9zZWN0aW9uPlxuICAgICAgPHNlY3Rpb24gY2xhc3M9XCJza3ktdGltZXBpY2tlci1jb2x1bW4gc2t5LXRpbWVwaWNrZXItY29sdW1uLW1pbnV0ZXNcIj5cbiAgICAgICAgPG9sPlxuICAgICAgICAgIEBmb3IgKG1pbnV0ZSBvZiBtaW51dGVzOyB0cmFjayBtaW51dGUpIHtcbiAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIG5hbWU9XCJtaW51dGVcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICdza3ktYnRuLWFjdGl2ZSc6IGhpZ2hsaWdodE1pbnV0ZShzZWxlY3RlZE1pbnV0ZSwgbWludXRlKVxuICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzZXRUaW1lKCRldmVudClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgJzAwJy5zdWJzdHJpbmcoMCwgMiAtIG1pbnV0ZS50b1N0cmluZygpLmxlbmd0aCkgKyBtaW51dGUgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9vbD5cbiAgICAgIDwvc2VjdGlvbj5cbiAgICAgIEBpZiAoIWlzODYwMSkge1xuICAgICAgICA8c2VjdGlvbiBjbGFzcz1cInNreS10aW1lcGlja2VyLWNvbHVtbiBza3ktdGltZXBpY2tlci1jb2x1bW4tbWVyaWRpZXNcIj5cbiAgICAgICAgICA8b2w+XG4gICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBuYW1lPVwibWVyaWRpZVwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnc2t5LWJ0bi1hY3RpdmUnOiBzZWxlY3RlZE1lcmlkaWVzID09PSAnQU0nIH1cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzZXRUaW1lKCRldmVudClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgQU1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgbmFtZT1cIm1lcmlkaWVcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3NreS1idG4tYWN0aXZlJzogc2VsZWN0ZWRNZXJpZGllcyA9PT0gJ1BNJyB9XCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwic2V0VGltZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIFBNXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICA8L29sPlxuICAgICAgICA8L3NlY3Rpb24+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInNreS10aW1lcGlja2VyLWZvb3RlclwiPlxuICAgICAgPHNlY3Rpb24gY2xhc3M9XCJza3ktdGltZXBpY2tlci1jb2x1bW5cIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwic2t5LWJ0biBza3ktYnRuLXByaW1hcnlcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIChjbGljayk9XCJvbkNsb3NlQnV0dG9uQ2xpY2soKVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyAnc2t5dXhfdGltZXBpY2tlcl9jbG9zZScgfCBza3lMaWJSZXNvdXJjZXMgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L3NlY3Rpb24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==","import { Directive, HostBinding, HostListener, Input, forwardRef, } from '@angular/core';\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR, } from '@angular/forms';\nimport moment from 'moment';\nimport * as i0 from \"@angular/core\";\nconst SKY_TIMEPICKER_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SkyTimepickerInputDirective),\n multi: true,\n};\nconst SKY_TIMEPICKER_VALIDATOR = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => SkyTimepickerInputDirective),\n multi: true,\n};\nexport class SkyTimepickerInputDirective {\n #_timeFormat = 'hh';\n // TODO: In a future breaking change - grab the parent component through dependency injection and remove this setter.\n // Also remove the HostBinding that references it.\n /**\n * Creates the timepicker input field and picker. Place this attribute on an `input` element,\n * and wrap the input in a `sky-timepicker` component.\n * This attribute must be set to the instance of the `sky-timepicker`.\n * @required\n */\n get skyTimepickerInput() {\n return this.#_skyTimepickerInput;\n }\n set skyTimepickerInput(value) {\n this.#_skyTimepickerInput = value;\n this.#updateTimepickerInput();\n }\n get hostTimepickerInput() {\n return this.skyTimepickerInput;\n }\n // TODO: In a future breaking change - make this more specific than \"string\"\n /**\n * The 12-hour `hh` or 24-hour `HH` time format for the input.\n * @default \"hh\"\n */\n set timeFormat(value) {\n this.#_timeFormat = value || 'hh';\n }\n get timeFormat() {\n return this.#_timeFormat;\n }\n /**\n * Whether to disable the timepicker on template-driven forms. Don't use this input on reactive forms because they may overwrite the input or leave the control out of sync.\n * To set the disabled state on reactive forms, use the `FormControl` instead.\n * @default false\n */\n get disabled() {\n return this.#_disabled;\n }\n set disabled(value) {\n this.#_disabled = value || false;\n this.#updateTimepickerInput();\n this.#renderer.setProperty(this.#elRef.nativeElement, 'disabled', value);\n }\n get #modelValue() {\n return this.#_modelValue;\n }\n set #modelValue(value) {\n if (value !== this.#_modelValue) {\n this.#_modelValue = value;\n this.#updateTimepickerInput();\n this.#setInputValue(value);\n this.#_validatorChange();\n this.#_onChange(value);\n }\n }\n #control;\n #_disabled = false;\n #_modelValue;\n #_skyTimepickerInput;\n #renderer;\n #elRef;\n #changeDetector;\n constructor(renderer, elRef, changeDetector) {\n this.#renderer = renderer;\n this.#elRef = elRef;\n this.#changeDetector = changeDetector;\n }\n ngOnInit() {\n this.#renderer.addClass(this.#elRef.nativeElement, 'sky-form-control');\n this.pickerChangedSubscription =\n this.skyTimepickerInput?.selectedTimeChanged.subscribe((newTime) => {\n this.writeValue(newTime);\n this.#_onTouched();\n });\n }\n ngAfterContentInit() {\n // Watch for the control to be added and initialize the value immediately.\n /* istanbul ignore else */\n if (this.#control && this.#control.parent) {\n this.#control.setValue(this.#modelValue, { emitEvent: false });\n this.#changeDetector.markForCheck();\n }\n }\n ngOnDestroy() {\n /* istanbul ignore else */\n if (this.pickerChangedSubscription) {\n this.pickerChangedSubscription.unsubscribe();\n }\n }\n ngOnChanges() {\n if (this.skyTimepickerInput) {\n this.skyTimepickerInput.setFormat(this.timeFormat);\n this.skyTimepickerInput.returnFormat = this.returnFormat;\n }\n }\n onChange(event) {\n this.writeValue(event.target.value);\n }\n /* istanbul ignore next */\n onBlur() {\n this.#_onTouched();\n }\n registerOnChange(fn) {\n this.#_onChange = fn;\n }\n registerOnTouched(fn) {\n this.#_onTouched = fn;\n }\n registerOnValidatorChange(fn) {\n this.#_validatorChange = fn;\n }\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n }\n writeValue(value) {\n this.#modelValue = this.#formatter(value);\n }\n validate(control) {\n if (!this.#control) {\n this.#control = control;\n }\n const value = control.value;\n if (!value) {\n return null;\n }\n /* istanbul ignore next */\n if (value.local === 'Invalid date') {\n return { skyTime: { invalid: control.value } };\n }\n return null;\n }\n #setInputValue(value) {\n let formattedValue = '';\n if (value) {\n const output = moment(value).format(value.customFormat);\n /* istanbul ignore else */\n if (output !== 'Invalid date') {\n formattedValue = output;\n }\n }\n this.#renderer.setProperty(this.#elRef.nativeElement, 'value', formattedValue);\n }\n // TODO: This method technically returns `SkyTimepickerTimeOutput | string | undefined`. However, the value it is set to is set to `SkyTimepickerTimeOutput | undefined`. We need to clean this up.\n #formatter(time) {\n if (time && typeof time !== 'string' && 'local' in time) {\n return time;\n }\n if (typeof time === 'string') {\n if (time.length === 0) {\n return '';\n }\n const currentFormat = this.timeFormat === 'HH' ? 'H:mm' : 'h:mm A';\n if (typeof this.returnFormat === 'undefined') {\n this.returnFormat = currentFormat;\n }\n const formatTime = {\n hour: moment(time, currentFormat).hour(),\n minute: moment(time, currentFormat).minute(),\n meridie: moment(time, currentFormat).format('A'),\n timezone: parseInt(moment(time, currentFormat).format('Z'), 10),\n iso8601: moment(time, currentFormat).toDate(),\n local: moment(time, currentFormat).format(currentFormat),\n customFormat: this.returnFormat,\n };\n return formatTime;\n }\n }\n #updateTimepickerInput() {\n if (this.skyTimepickerInput) {\n this.skyTimepickerInput.disabled = this.disabled;\n /* istanbul ignore else */\n if (this.skyTimepickerInput.selectedTime !== this.#modelValue) {\n this.skyTimepickerInput.selectedTime = this.#modelValue;\n }\n }\n }\n /* istanbul ignore next */\n // eslint-disable-next-line @typescript-eslint/no-empty-function, @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any\n #_onChange = (_) => { };\n /* istanbul ignore next */\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n #_onTouched = () => { };\n /* istanbul ignore next */\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n #_validatorChange = () => { };\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyTimepickerInputDirective, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.0.5\", type: SkyTimepickerInputDirective, isStandalone: false, selector: \"[skyTimepickerInput]\", inputs: { skyTimepickerInput: \"skyTimepickerInput\", timeFormat: \"timeFormat\", returnFormat: \"returnFormat\", disabled: \"disabled\" }, host: { listeners: { \"change\": \"onChange($event)\", \"blur\": \"onBlur()\" }, properties: { \"attr.skyTimepickerInput\": \"this.hostTimepickerInput\" } }, providers: [SKY_TIMEPICKER_VALUE_ACCESSOR, SKY_TIMEPICKER_VALIDATOR], usesOnChanges: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyTimepickerInputDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[skyTimepickerInput]',\n providers: [SKY_TIMEPICKER_VALUE_ACCESSOR, SKY_TIMEPICKER_VALIDATOR],\n standalone: false,\n }]\n }], ctorParameters: () => [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }], propDecorators: { skyTimepickerInput: [{\n type: Input\n }], hostTimepickerInput: [{\n type: HostBinding,\n args: ['attr.skyTimepickerInput']\n }], timeFormat: [{\n type: Input\n }], returnFormat: [{\n type: Input\n }], disabled: [{\n type: Input\n }], onChange: [{\n type: HostListener,\n args: ['change', ['$event']]\n }], onBlur: [{\n type: HostListener,\n args: ['blur']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXBpY2tlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL3RpbWVwaWNrZXIvdGltZXBpY2tlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLFNBQVMsRUFFVCxXQUFXLEVBQ1gsWUFBWSxFQUNaLEtBQUssRUFLTCxVQUFVLEdBQ1gsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUdMLGFBQWEsRUFDYixpQkFBaUIsR0FHbEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7O0FBTzVCLE1BQU0sNkJBQTZCLEdBQUc7SUFDcEMsT0FBTyxFQUFFLGlCQUFpQjtJQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLDJCQUEyQixDQUFDO0lBQzFELEtBQUssRUFBRSxJQUFJO0NBQ1osQ0FBQztBQUVGLE1BQU0sd0JBQXdCLEdBQUc7SUFDL0IsT0FBTyxFQUFFLGFBQWE7SUFDdEIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQztJQUMxRCxLQUFLLEVBQUUsSUFBSTtDQUNaLENBQUM7QUFPRixNQUFNLE9BQU8sMkJBQTJCO0lBVXRDLFlBQVksR0FBZ0MsSUFBSSxDQUFDO0lBRWpELHFIQUFxSDtJQUNySCxrREFBa0Q7SUFDbEQ7Ozs7O09BS0c7SUFDSCxJQUNXLGtCQUFrQjtRQUMzQixPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztJQUNuQyxDQUFDO0lBRUQsSUFBVyxrQkFBa0IsQ0FBQyxLQUF5QztRQUNyRSxJQUFJLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxJQUNXLG1CQUFt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O0lBQzFCLHVJQUF1STtJQUN2SSxVQUFVLEdBQUcsQ0FBQyxDQUFNLEVBQVEsRUFBRSxHQUFFLENBQUMsQ0FBQztJQUNsQywwQkFBMEI7SUFDMUIsZ0VBQWdFO0lBQ2hFLFdBQVcsR0FBRyxHQUFTLEVBQUUsR0FBRSxDQUFDLENBQUM7SUFDN0IsMEJBQTBCO0lBQzFCLGdFQUFnRTtJQUNoRSxpQkFBaUIsR0FBRyxHQUFTLEVBQUUsR0FBRSxDQUFDLENBQUM7OEdBN1B4QiwyQkFBMkI7a0dBQTNCLDJCQUEyQiwwVkFIM0IsQ0FBQyw2QkFBNkIsRUFBRSx3QkFBd0IsQ0FBQzs7MkZBR3pELDJCQUEyQjtrQkFMdkMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsc0JBQXNCO29CQUNoQyxTQUFTLEVBQUUsQ0FBQyw2QkFBNkIsRUFBRSx3QkFBd0IsQ0FBQztvQkFDcEUsVUFBVSxFQUFFLEtBQUs7aUJBQ2xCO3VJQXNCWSxrQkFBa0I7c0JBRDVCLEtBQUs7Z0JBV0ssbUJBQW1CO3NCQUQ3QixXQUFXO3VCQUFDLHlCQUF5QjtnQkFXM0IsVUFBVTtzQkFEcEIsS0FBSztnQkFjQyxZQUFZO3NCQURsQixLQUFLO2dCQVNLLFFBQVE7c0JBRGxCLEtBQUs7Z0JBa0ZDLFFBQVE7c0JBRGQsWUFBWTt1QkFBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBTzNCLE1BQU07c0JBRFosWUFBWTt1QkFBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgSG9zdEJpbmRpbmcsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFJlbmRlcmVyMixcbiAgZm9yd2FyZFJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2wsXG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBOR19WQUxJREFUT1JTLFxuICBOR19WQUxVRV9BQ0NFU1NPUixcbiAgVmFsaWRhdGlvbkVycm9ycyxcbiAgVmFsaWRhdG9yLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBTa3lUaW1lcGlja2VyVGltZUZvcm1hdFR5cGUgfSBmcm9tICcuL3RpbWVwaWNrZXItdGltZS1mb3JtYXQtdHlwZSc7XG5pbXBvcnQgeyBTa3lUaW1lcGlja2VyVGltZU91dHB1dCB9IGZyb20gJy4vdGltZXBpY2tlci10aW1lLW91dHB1dCc7XG5pbXBvcnQgeyBTa3lUaW1lcGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi90aW1lcGlja2VyLmNvbXBvbmVudCc7XG5cbmNvbnN0IFNLWV9USU1FUElDS0VSX1ZBTFVFX0FDQ0VTU09SID0ge1xuICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gU2t5VGltZXBpY2tlcklucHV0RGlyZWN0aXZlKSxcbiAgbXVsdGk6IHRydWUsXG59O1xuXG5jb25zdCBTS1lfVElNRVBJQ0tFUl9WQUxJREFUT1IgPSB7XG4gIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFNreVRpbWVwaWNrZXJJbnB1dERpcmVjdGl2ZSksXG4gIG11bHRpOiB0cnVlLFxufTtcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW3NreVRpbWVwaWNrZXJJbnB1dF0nLFxuICBwcm92aWRlcnM6IFtTS1lfVElNRVBJQ0tFUl9WQUxVRV9BQ0NFU1NPUiwgU0tZX1RJTUVQSUNLRVJfVkFMSURBVE9SXSxcbiAgc3RhbmRhbG9uZTogZmFsc2UsXG59KVxuZXhwb3J0IGNsYXNzIFNreVRpbWVwaWNrZXJJbnB1dERpcmVjdGl2ZVxuICBpbXBsZW1lbnRzXG4gICAgT25Jbml0LFxuICAgIE9uRGVzdHJveSxcbiAgICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgICBWYWxpZGF0b3IsXG4gICAgT25DaGFuZ2VzLFxuICAgIEFmdGVyQ29udGVudEluaXRcbntcbiAgcHVibGljIHBpY2tlckNoYW5nZWRTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IHVuZGVmaW5lZDtcbiAgI190aW1lRm9ybWF0OiBTa3lUaW1lcGlja2VyVGltZUZvcm1hdFR5cGUgPSAnaGgnO1xuXG4gIC8vIFRPRE86IEluIGEgZnV0dXJlIGJyZWFraW5nIGNoYW5nZSAtIGdyYWIgdGhlIHBhcmVudCBjb21wb25lbnQgdGhyb3VnaCBkZXBlbmRlbmN5IGluamVjdGlvbiBhbmQgcmVtb3ZlIHRoaXMgc2V0dGVyLlxuICAvLyBBbHNvIHJlbW92ZSB0aGUgSG9zdEJpbmRpbmcgdGhhdCByZWZlcmVuY2VzIGl0LlxuICAvKipcbiAgICogQ3JlYXRlcyB0aGUgdGltZXBpY2tlciBpbnB1dCBmaWVsZCBhbmQgcGlja2VyLiBQbGFjZSB0aGlzIGF0dHJpYnV0ZSBvbiBhbiBgaW5wdXRgIGVsZW1lbnQsXG4gICAqIGFuZCB3cmFwIHRoZSBpbnB1dCBpbiBhIGBza3ktdGltZXBpY2tlcmAgY29tcG9uZW50LlxuICAgKiBUaGlzIGF0dHJpYnV0ZSBtdXN0IGJlIHNldCB0byB0aGUgaW5zdGFuY2Ugb2YgdGhlIGBza3ktdGltZXBpY2tlcmAuXG4gICAqIEByZXF1aXJlZFxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGdldCBza3lUaW1lcGlja2VySW5wdXQoKTogU2t5VGltZXBpY2tlckNvbXBvbmVudCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI19za3lUaW1lcGlja2VySW5wdXQ7XG4gIH1cblxuICBwdWJsaWMgc2V0IHNreVRpbWVwaWNrZXJJbnB1dCh2YWx1ZTogU2t5VGltZXBpY2tlckNvbXBvbmVudCB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19za3lUaW1lcGlja2VySW5wdXQgPSB2YWx1ZTtcbiAgICB0aGlzLiN1cGRhdGVUaW1lcGlja2VySW5wdXQoKTtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnYXR0ci5za3lUaW1lcGlja2VySW5wdXQnKVxuICBwdWJsaWMgZ2V0IGhvc3RUaW1lcGlja2VySW5wdXQoKTogU2t5VGltZXBpY2tlckNvbXBvbmVudCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuc2t5VGltZXBpY2tlcklucHV0O1xuICB9XG5cbiAgLy8gVE9ETzogSW4gYSBmdXR1cmUgYnJlYWtpbmcgY2hhbmdlIC0gbWFrZSB0aGlzIG1vcmUgc3BlY2lmaWMgdGhhbiBcInN0cmluZ1wiXG4gIC8qKlxuICAgKiBUaGUgMTItaG91ciBgaGhgIG9yIDI0LWhvdXIgYEhIYCB0aW1lIGZvcm1hdCBmb3IgdGhlIGlucHV0LlxuICAgKiBAZGVmYXVsdCBcImhoXCJcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgdGltZUZvcm1hdCh2YWx1ZTogU2t5VGltZXBpY2tlclRpbWVGb3JtYXRUeXBlIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX3RpbWVGb3JtYXQgPSB2YWx1ZSB8fCAnaGgnO1xuICB9XG5cbiAgcHVibGljIGdldCB0aW1lRm9ybWF0KCk6IFNreVRpbWVwaWNrZXJUaW1lRm9ybWF0VHlwZSB7XG4gICAgcmV0dXJuIHRoaXMuI190aW1lRm9ybWF0O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBjdXN0b20gdGltZSBmb3JtYXQuIEZvciBleGFtcGxlcyxcbiAgICogc2VlIHRoZSBbbW9tZW50LmpzXShodHRwczovL21vbWVudGpzLmNvbS9kb2NzLyMvZGlzcGxheWluZy9mb3JtYXQvKSBkb2NzLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHJldHVybkZvcm1hdDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGRpc2FibGUgdGhlIHRpbWVwaWNrZXIgb24gdGVtcGxhdGUtZHJpdmVuIGZvcm1zLiBEb24ndCB1c2UgdGhpcyBpbnB1dCBvbiByZWFjdGl2ZSBmb3JtcyBiZWNhdXNlIHRoZXkgbWF5IG92ZXJ3cml0ZSB0aGUgaW5wdXQgb3IgbGVhdmUgdGhlIGNvbnRyb2wgb3V0IG9mIHN5bmMuXG4gICAqIFRvIHNldCB0aGUgZGlzYWJsZWQgc3RhdGUgb24gcmVhY3RpdmUgZm9ybXMsIHVzZSB0aGUgYEZvcm1Db250cm9sYCBpbnN0ZWFkLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy4jX2Rpc2FibGVkO1xuICB9XG5cbiAgcHVibGljIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19kaXNhYmxlZCA9IHZhbHVlIHx8IGZhbHNlO1xuXG4gICAgdGhpcy4jdXBkYXRlVGltZXBpY2tlcklucHV0KCk7XG5cbiAgICB0aGlzLiNyZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLiNlbFJlZi5uYXRpdmVFbGVtZW50LCAnZGlzYWJsZWQnLCB2YWx1ZSk7XG4gIH1cblxuICBnZXQgI21vZGVsVmFsdWUoKTogU2t5VGltZXBpY2tlclRpbWVPdXRwdXQgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLiNfbW9kZWxWYWx1ZTtcbiAgfVxuXG4gIHNldCAjbW9kZWxWYWx1ZSh2YWx1ZTogU2t5VGltZXBpY2tlclRpbWVPdXRwdXQgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAodmFsdWUgIT09IHRoaXMuI19tb2RlbFZhbHVlKSB7XG4gICAgICB0aGlzLiNfbW9kZWxWYWx1ZSA9IHZhbHVlO1xuICAgICAgdGhpcy4jdXBkYXRlVGltZXBpY2tlcklucHV0KCk7XG4gICAgICB0aGlzLiNzZXRJbnB1dFZhbHVlKHZhbHVlKTtcbiAgICAgIHRoaXMuI192YWxpZGF0b3JDaGFuZ2UoKTtcbiAgICAgIHRoaXMuI19vbkNoYW5nZSh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgI2NvbnRyb2w6IEFic3RyYWN0Q29udHJvbCB8IHVuZGVmaW5lZDtcblxuICAjX2Rpc2FibGVkID0gZmFsc2U7XG4gICNfbW9kZWxWYWx1ZTogU2t5VGltZXBpY2tlclRpbWVPdXRwdXQgfCB1bmRlZmluZWQ7XG4gICNfc2t5VGltZXBpY2tlcklucHV0OiBTa3lUaW1lcGlja2VyQ29tcG9uZW50IHwgdW5kZWZpbmVkO1xuXG4gICNyZW5kZXJlcjogUmVuZGVyZXIyO1xuICAjZWxSZWY6IEVsZW1lbnRSZWY7XG4gICNjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWY7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBlbFJlZjogRWxlbWVudFJlZixcbiAgICBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICkge1xuICAgIHRoaXMuI3JlbmRlcmVyID0gcmVuZGVyZXI7XG4gICAgdGhpcy4jZWxSZWYgPSBlbFJlZjtcbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3RvciA9IGNoYW5nZURldGVjdG9yO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuI3JlbmRlcmVyLmFkZENsYXNzKHRoaXMuI2VsUmVmLm5hdGl2ZUVsZW1lbnQsICdza3ktZm9ybS1jb250cm9sJyk7XG4gICAgdGhpcy5waWNrZXJDaGFuZ2VkU3Vic2NyaXB0aW9uID1cbiAgICAgIHRoaXMuc2t5VGltZXBpY2tlcklucHV0Py5zZWxlY3RlZFRpbWVDaGFuZ2VkLnN1YnNjcmliZShcbiAgICAgICAgKG5ld1RpbWU6IHN0cmluZykgPT4ge1xuICAgICAgICAgIHRoaXMud3JpdGVWYWx1ZShuZXdUaW1lKTtcbiAgICAgICAgICB0aGlzLiNfb25Ub3VjaGVkKCk7XG4gICAgICAgIH0sXG4gICAgICApO1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAvLyBXYXRjaCBmb3IgdGhlIGNvbnRyb2wgdG8gYmUgYWRkZWQgYW5kIGluaXRpYWxpemUgdGhlIHZhbHVlIGltbWVkaWF0ZWx5LlxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHRoaXMuI2NvbnRyb2wgJiYgdGhpcy4jY29udHJvbC5wYXJlbnQpIHtcbiAgICAgIHRoaXMuI2NvbnRyb2wuc2V0VmFsdWUodGhpcy4jbW9kZWxWYWx1ZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHRoaXMucGlja2VyQ2hhbmdlZFN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5waWNrZXJDaGFuZ2VkU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNreVRpbWVwaWNrZXJJbnB1dCkge1xuICAgICAgdGhpcy5za3lUaW1lcGlja2VySW5wdXQuc2V0Rm9ybWF0KHRoaXMudGltZUZvcm1hdCk7XG4gICAgICB0aGlzLnNreVRpbWVwaWNrZXJJbnB1dC5yZXR1cm5Gb3JtYXQgPSB0aGlzLnJldHVybkZvcm1hdDtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdjaGFuZ2UnLCBbJyRldmVudCddKVxuICBwdWJsaWMgb25DaGFuZ2UoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIHRoaXMud3JpdGVWYWx1ZShldmVudC50YXJnZXQudmFsdWUpO1xuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgQEhvc3RMaXN0ZW5lcignYmx1cicpXG4gIHB1YmxpYyBvbkJsdXIoKTogdm9pZCB7XG4gICAgdGhpcy4jX29uVG91Y2hlZCgpO1xuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogYW55KSA9PiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLiNfb25DaGFuZ2UgPSBmbjtcbiAgfVxuICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IGFueSk6IHZvaWQge1xuICAgIHRoaXMuI19vblRvdWNoZWQgPSBmbjtcbiAgfVxuICBwdWJsaWMgcmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZShmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuI192YWxpZGF0b3JDaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHB1YmxpYyBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLiNtb2RlbFZhbHVlID0gdGhpcy4jZm9ybWF0dGVyKHZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyB2YWxpZGF0ZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgaWYgKCF0aGlzLiNjb250cm9sKSB7XG4gICAgICB0aGlzLiNjb250cm9sID0gY29udHJvbDtcbiAgICB9XG5cbiAgICBjb25zdCB2YWx1ZSA9IGNvbnRyb2wudmFsdWU7XG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICBpZiAodmFsdWUubG9jYWwgPT09ICdJbnZhbGlkIGRhdGUnKSB7XG4gICAgICByZXR1cm4geyBza3lUaW1lOiB7IGludmFsaWQ6IGNvbnRyb2wudmFsdWUgfSB9O1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgI3NldElucHV0VmFsdWUodmFsdWU6IFNreVRpbWVwaWNrZXJUaW1lT3V0cHV0IHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgbGV0IGZvcm1hdHRlZFZhbHVlID0gJyc7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICBjb25zdCBvdXRwdXQgPSBtb21lbnQodmFsdWUpLmZvcm1hdCh2YWx1ZS5jdXN0b21Gb3JtYXQpO1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgIGlmIChvdXRwdXQgIT09ICdJbnZhbGlkIGRhdGUnKSB7XG4gICAgICAgIGZvcm1hdHRlZFZhbHVlID0gb3V0cHV0O1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuI3JlbmRlcmVyLnNldFByb3BlcnR5KFxuICAgICAgdGhpcy4jZWxSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICd2YWx1ZScsXG4gICAgICBmb3JtYXR0ZWRWYWx1ZSxcbiAgICApO1xuICB9XG5cbiAgLy8gVE9ETzogVGhpcyBtZXRob2QgdGVjaG5pY2FsbHkgcmV0dXJucyBgU2t5VGltZXBpY2tlclRpbWVPdXRwdXQgfCBzdHJpbmcgfCB1bmRlZmluZWRgLiBIb3dldmVyLCB0aGUgdmFsdWUgaXQgaXMgc2V0IHRvIGlzIHNldCB0byBgU2t5VGltZXBpY2tlclRpbWVPdXRwdXQgfCB1bmRlZmluZWRgLiBXZSBuZWVkIHRvIGNsZWFuIHRoaXMgdXAuXG4gICNmb3JtYXR0ZXIodGltZTogYW55KTogYW55IHtcbiAgICBpZiAodGltZSAmJiB0eXBlb2YgdGltZSAhPT0gJ3N0cmluZycgJiYgJ2xvY2FsJyBpbiB0aW1lKSB7XG4gICAgICByZXR1cm4gdGltZTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiB0aW1lID09PSAnc3RyaW5nJykge1xuICAgICAgaWYgKHRpbWUubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiAnJztcbiAgICAgIH1cbiAgICAgIGNvbnN0IGN1cnJlbnRGb3JtYXQgPSB0aGlzLnRpbWVGb3JtYXQgPT09ICdISCcgPyAnSDptbScgOiAnaDptbSBBJztcblxuICAgICAgaWYgKHR5cGVvZiB0aGlzLnJldHVybkZvcm1hdCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgdGhpcy5yZXR1cm5Gb3JtYXQgPSBjdXJyZW50Rm9ybWF0O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBmb3JtYXRUaW1lOiBTa3lUaW1lcGlja2VyVGltZU91dHB1dCA9IHtcbiAgICAgICAgaG91cjogbW9tZW50KHRpbWUsIGN1cnJlbnRGb3JtYXQpLmhvdXIoKSxcbiAgICAgICAgbWludXRlOiBtb21lbnQodGltZSwgY3VycmVudEZvcm1hdCkubWludXRlKCksXG4gICAgICAgIG1lcmlkaWU6IG1vbWVudCh0aW1lLCBjdXJyZW50Rm9ybWF0KS5mb3JtYXQoJ0EnKSxcbiAgICAgICAgdGltZXpvbmU6IHBhcnNlSW50KG1vbWVudCh0aW1lLCBjdXJyZW50Rm9ybWF0KS5mb3JtYXQoJ1onKSwgMTApLFxuICAgICAgICBpc284NjAxOiBtb21lbnQodGltZSwgY3VycmVudEZvcm1hdCkudG9EYXRlKCksXG4gICAgICAgIGxvY2FsOiBtb21lbnQodGltZSwgY3VycmVudEZvcm1hdCkuZm9ybWF0KGN1cnJlbnRGb3JtYXQpLFxuICAgICAgICBjdXN0b21Gb3JtYXQ6IHRoaXMucmV0dXJuRm9ybWF0LFxuICAgICAgfTtcbiAgICAgIHJldHVybiBmb3JtYXRUaW1lO1xuICAgIH1cbiAgfVxuXG4gICN1cGRhdGVUaW1lcGlja2VySW5wdXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2t5VGltZXBpY2tlcklucHV0KSB7XG4gICAgICB0aGlzLnNreVRpbWVwaWNrZXJJbnB1dC5kaXNhYmxlZCA9IHRoaXMuZGlzYWJsZWQ7XG5cbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICBpZiAodGhpcy5za3lUaW1lcGlja2VySW5wdXQuc2VsZWN0ZWRUaW1lICE9PSB0aGlzLiNtb2RlbFZhbHVlKSB7XG4gICAgICAgIHRoaXMuc2t5VGltZXBpY2tlcklucHV0LnNlbGVjdGVkVGltZSA9IHRoaXMuI21vZGVsVmFsdWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvbiwgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzLCBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICNfb25DaGFuZ2UgPSAoXzogYW55KTogdm9pZCA9PiB7fTtcbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICAjX29uVG91Y2hlZCA9ICgpOiB2b2lkID0+IHt9O1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gICNfdmFsaWRhdG9yQ2hhbmdlID0gKCk6IHZvaWQgPT4ge307XG59XG4iXX0=","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SkyAffixModule } from '@skyux/core';\nimport { SkyIconModule } from '@skyux/icon';\nimport { SkyThemeModule } from '@skyux/theme';\nimport { SkyDatetimeResourcesModule } from '../shared/sky-datetime-resources.module';\nimport { SkyTimepickerComponent } from './timepicker.component';\nimport { SkyTimepickerInputDirective } from './timepicker.directive';\nimport * as i0 from \"@angular/core\";\nexport class SkyTimepickerModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyTimepickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyTimepickerModule, declarations: [SkyTimepickerInputDirective, SkyTimepickerComponent], imports: [CommonModule,\n SkyIconModule,\n SkyDatetimeResourcesModule,\n SkyAffixModule,\n SkyThemeModule], exports: [SkyTimepickerInputDirective, SkyTimepickerComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyTimepickerModule, imports: [CommonModule,\n SkyIconModule,\n SkyDatetimeResourcesModule,\n SkyAffixModule,\n SkyThemeModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: SkyTimepickerModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [SkyTimepickerInputDirective, SkyTimepickerComponent],\n imports: [\n CommonModule,\n SkyIconModule,\n SkyDatetimeResourcesModule,\n SkyAffixModule,\n SkyThemeModule,\n ],\n exports: [SkyTimepickerInputDirective, SkyTimepickerComponent],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXBpY2tlci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL3RpbWVwaWNrZXIvdGltZXBpY2tlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM3QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFOUMsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFFckYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDaEUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7O0FBYXJFLE1BQU0sT0FBTyxtQkFBbUI7OEdBQW5CLG1CQUFtQjsrR0FBbkIsbUJBQW1CLGlCQVZmLDJCQUEyQixFQUFFLHNCQUFzQixhQUVoRSxZQUFZO1lBQ1osYUFBYTtZQUNiLDBCQUEwQjtZQUMxQixjQUFjO1lBQ2QsY0FBYyxhQUVOLDJCQUEyQixFQUFFLHNCQUFzQjsrR0FFbEQsbUJBQW1CLFlBUjVCLFlBQVk7WUFDWixhQUFhO1lBQ2IsMEJBQTBCO1lBQzFCLGNBQWM7WUFDZCxjQUFjOzsyRkFJTCxtQkFBbUI7a0JBWC9CLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsMkJBQTJCLEVBQUUsc0JBQXNCLENBQUM7b0JBQ25FLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLGFBQWE7d0JBQ2IsMEJBQTBCO3dCQUMxQixjQUFjO3dCQUNkLGNBQWM7cUJBQ2Y7b0JBQ0QsT0FBTyxFQUFFLENBQUMsMkJBQTJCLEVBQUUsc0JBQXNCLENBQUM7aUJBQy9EIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTa3lBZmZpeE1vZHVsZSB9IGZyb20gJ0Bza3l1eC9jb3JlJztcbmltcG9ydCB7IFNreUljb25Nb2R1bGUgfSBmcm9tICdAc2t5dXgvaWNvbic7XG5pbXBvcnQgeyBTa3lUaGVtZU1vZHVsZSB9IGZyb20gJ0Bza3l1eC90aGVtZSc7XG5cbmltcG9ydCB7IFNreURhdGV0aW1lUmVzb3VyY2VzTW9kdWxlIH0gZnJvbSAnLi4vc2hhcmVkL3NreS1kYXRldGltZS1yZXNvdXJjZXMubW9kdWxlJztcblxuaW1wb3J0IHsgU2t5VGltZXBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4vdGltZXBpY2tlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5VGltZXBpY2tlcklucHV0RGlyZWN0aXZlIH0gZnJvbSAnLi90aW1lcGlja2VyLmRpcmVjdGl2ZSc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1NreVRpbWVwaWNrZXJJbnB1dERpcmVjdGl2ZSwgU2t5VGltZXBpY2tlckNvbXBvbmVudF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgU2t5SWNvbk1vZHVsZSxcbiAgICBTa3lEYXRldGltZVJlc291cmNlc01vZHVsZSxcbiAgICBTa3lBZmZpeE1vZHVsZSxcbiAgICBTa3lUaGVtZU1vZHVsZSxcbiAgXSxcbiAgZXhwb3J0czogW1NreVRpbWVwaWNrZXJJbnB1dERpcmVjdGl2ZSwgU2t5VGltZXBpY2tlckNvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIFNreVRpbWVwaWNrZXJNb2R1bGUge31cbiJdfQ==","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2t5dXgtZGF0ZXRpbWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL3NreXV4LWRhdGV0aW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":["i1.SkyFuzzyDateService","takeUntil","i1","i1.SkyDatepickerCalendarInnerComponent","i2","i1.SkyDatepickerConfigService","nextId","i4","i5","i6","i3.SkyDatepickerComponent","i2.SkyFuzzyDateService","i3","i4.SkyDatepickerComponent","distinctUntilChanged","i4.SkyDatepickerInputDirective"],"mappings":"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"}
|