@coreui/angular-pro 5.0.0-alpha.9 → 5.0.0-next.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/esm2022/lib/accordion/accordion/accordion.component.mjs +23 -17
- package/esm2022/lib/accordion/accordion-button/accordion-button.directive.mjs +3 -3
- package/esm2022/lib/accordion/accordion-item/accordion-item.component.mjs +3 -3
- package/esm2022/lib/accordion/accordion.module.mjs +4 -4
- package/esm2022/lib/accordion/accordion.service.mjs +4 -4
- package/esm2022/lib/alert/alert-heading.directive.mjs +3 -3
- package/esm2022/lib/alert/alert-link.directive.mjs +3 -3
- package/esm2022/lib/alert/alert.component.mjs +32 -40
- package/esm2022/lib/alert/alert.module.mjs +4 -4
- package/esm2022/lib/avatar/avatar.component.mjs +3 -3
- package/esm2022/lib/avatar/avatar.module.mjs +4 -4
- package/esm2022/lib/backdrop/backdrop.service.mjs +4 -4
- package/esm2022/lib/badge/badge.component.mjs +3 -3
- package/esm2022/lib/badge/badge.module.mjs +4 -4
- package/esm2022/lib/breadcrumb/breadcrumb/breadcrumb.component.mjs +3 -3
- package/esm2022/lib/breadcrumb/breadcrumb-item/breadcrumb-item.component.mjs +9 -8
- package/esm2022/lib/breadcrumb/breadcrumb-router/breadcrumb-router.component.mjs +6 -6
- package/esm2022/lib/breadcrumb/breadcrumb-router/breadcrumb-router.service.mjs +4 -4
- package/esm2022/lib/breadcrumb/breadcrumb.module.mjs +4 -4
- package/esm2022/lib/button/button-close.directive.mjs +3 -3
- package/esm2022/lib/button/button.directive.mjs +3 -3
- package/esm2022/lib/button/button.module.mjs +4 -4
- package/esm2022/lib/button-group/button-group/button-group.component.mjs +3 -3
- package/esm2022/lib/button-group/button-group.module.mjs +4 -4
- package/esm2022/lib/button-group/button-toolbar/button-toolbar.component.mjs +3 -3
- package/esm2022/lib/calendar/calendar/calendar-class-view.pipe.mjs +3 -3
- package/esm2022/lib/calendar/calendar/calendar.component.mjs +6 -6
- package/esm2022/lib/calendar/calendar-month/calendar-class-day.pipe.mjs +3 -3
- package/esm2022/lib/calendar/calendar-month/calendar-class-month.pipe.mjs +3 -3
- package/esm2022/lib/calendar/calendar-month/calendar-class-row.pipe.mjs +3 -3
- package/esm2022/lib/calendar/calendar-month/calendar-class-year.pipe.mjs +3 -3
- package/esm2022/lib/calendar/calendar-month/calendar-day-title.pipe.mjs +3 -3
- package/esm2022/lib/calendar/calendar-month/calendar-day.directive.mjs +4 -4
- package/esm2022/lib/calendar/calendar-month/calendar-day.pipe.mjs +3 -3
- package/esm2022/lib/calendar/calendar-month/calendar-month.component.mjs +7 -12
- package/esm2022/lib/calendar/calendar-month/calendar-row.directive.mjs +4 -4
- package/esm2022/lib/calendar/calendar-month/calendar-weekday.pipe.mjs +3 -3
- package/esm2022/lib/calendar/calendar-navigation/calendar-navigation.component.mjs +6 -6
- package/esm2022/lib/calendar/calendar.module.mjs +4 -4
- package/esm2022/lib/calendar/calendar.service.mjs +4 -4
- package/esm2022/lib/calendar/calendar.utils.mjs +1 -1
- package/esm2022/lib/callout/callout.component.mjs +3 -3
- package/esm2022/lib/callout/callout.module.mjs +4 -4
- package/esm2022/lib/card/card-body.component.mjs +3 -3
- package/esm2022/lib/card/card-footer.component.mjs +3 -3
- package/esm2022/lib/card/card-group.component.mjs +3 -3
- package/esm2022/lib/card/card-header-actions.component.mjs +3 -3
- package/esm2022/lib/card/card-header.component.mjs +3 -3
- package/esm2022/lib/card/card-img-overlay/card-img-overlay.component.mjs +3 -3
- package/esm2022/lib/card/card-img.directive.mjs +3 -3
- package/esm2022/lib/card/card-link.directive.mjs +3 -3
- package/esm2022/lib/card/card-subtitle.directive.mjs +3 -3
- package/esm2022/lib/card/card-text.directive.mjs +3 -3
- package/esm2022/lib/card/card-title.directive.mjs +3 -3
- package/esm2022/lib/card/card.component.mjs +3 -3
- package/esm2022/lib/card/card.module.mjs +4 -4
- package/esm2022/lib/carousel/carousel/carousel.component.mjs +4 -4
- package/esm2022/lib/carousel/carousel-caption/carousel-caption.component.mjs +3 -3
- package/esm2022/lib/carousel/carousel-control/carousel-control.component.mjs +5 -6
- package/esm2022/lib/carousel/carousel-indicators/carousel-indicators.component.mjs +5 -6
- package/esm2022/lib/carousel/carousel-inner/carousel-inner.component.mjs +4 -4
- package/esm2022/lib/carousel/carousel-item/carousel-item.component.mjs +9 -10
- package/esm2022/lib/carousel/carousel-state.mjs +4 -4
- package/esm2022/lib/carousel/carousel.config.mjs +3 -3
- package/esm2022/lib/carousel/carousel.module.mjs +4 -4
- package/esm2022/lib/carousel/carousel.service.mjs +3 -3
- package/esm2022/lib/collapse/collapse.directive.mjs +32 -42
- package/esm2022/lib/collapse/collapse.module.mjs +4 -4
- package/esm2022/lib/date-picker/date-picker.component.mjs +8 -10
- package/esm2022/lib/date-picker/date-picker.module.mjs +4 -4
- package/esm2022/lib/date-range-picker/date-range-picker/custom-range-key.pipe.mjs +3 -3
- package/esm2022/lib/date-range-picker/date-range-picker/date-range-picker.component.mjs +8 -10
- package/esm2022/lib/date-range-picker/date-range-picker.module.mjs +4 -4
- package/esm2022/lib/dropdown/dropdown/dropdown.component.mjs +30 -38
- package/esm2022/lib/dropdown/dropdown-close/dropdown-close.directive.mjs +4 -4
- package/esm2022/lib/dropdown/dropdown-divider/dropdown-divider.directive.mjs +3 -3
- package/esm2022/lib/dropdown/dropdown-header/dropdown-header.directive.mjs +3 -3
- package/esm2022/lib/dropdown/dropdown-item/dropdown-item-plain.directive.mjs +3 -3
- package/esm2022/lib/dropdown/dropdown-item/dropdown-item.directive.mjs +4 -4
- package/esm2022/lib/dropdown/dropdown-menu/dropdown-menu.directive.mjs +4 -4
- package/esm2022/lib/dropdown/dropdown.module.mjs +4 -4
- package/esm2022/lib/dropdown/dropdown.service.mjs +3 -3
- package/esm2022/lib/element-cover/element-cover.component.mjs +6 -6
- package/esm2022/lib/element-cover/element-cover.module.mjs +4 -4
- package/esm2022/lib/footer/footer.component.mjs +3 -3
- package/esm2022/lib/footer/footer.module.mjs +4 -4
- package/esm2022/lib/form/form/form.directive.mjs +3 -3
- package/esm2022/lib/form/form-check/form-check-input.directive.mjs +12 -10
- package/esm2022/lib/form/form-check/form-check-label.directive.mjs +3 -3
- package/esm2022/lib/form/form-check/form-check.component.mjs +3 -3
- package/esm2022/lib/form/form-control/form-control.directive.mjs +4 -4
- package/esm2022/lib/form/form-feedback/form-feedback.component.mjs +3 -3
- package/esm2022/lib/form/form-floating/form-floating.directive.mjs +3 -3
- package/esm2022/lib/form/form-label/form-label.directive.mjs +3 -3
- package/esm2022/lib/form/form-select/form-select.directive.mjs +3 -3
- package/esm2022/lib/form/form-text/form-text.directive.mjs +3 -3
- package/esm2022/lib/form/form.module.mjs +4 -4
- package/esm2022/lib/form/input-group/input-group.component.mjs +3 -3
- package/esm2022/lib/form/input-group-text/input-group-text.directive.mjs +3 -3
- package/esm2022/lib/grid/col.component.mjs +3 -3
- package/esm2022/lib/grid/col.directive.mjs +4 -4
- package/esm2022/lib/grid/container.component.mjs +3 -3
- package/esm2022/lib/grid/grid.module.mjs +4 -4
- package/esm2022/lib/grid/gutter.directive.mjs +4 -4
- package/esm2022/lib/grid/row.component.mjs +3 -3
- package/esm2022/lib/grid/row.directive.mjs +4 -4
- package/esm2022/lib/header/header/header.component.mjs +3 -3
- package/esm2022/lib/header/header-brand/header-brand.component.mjs +3 -3
- package/esm2022/lib/header/header-divider/header-divider.component.mjs +3 -3
- package/esm2022/lib/header/header-nav/header-nav.component.mjs +3 -3
- package/esm2022/lib/header/header-text/header-text.component.mjs +3 -3
- package/esm2022/lib/header/header-toggler/header-toggler.directive.mjs +4 -4
- package/esm2022/lib/header/header.module.mjs +4 -4
- package/esm2022/lib/image/img.directive.mjs +3 -3
- package/esm2022/lib/image/img.module.mjs +4 -4
- package/esm2022/lib/list-group/list-group-item.directive.mjs +3 -3
- package/esm2022/lib/list-group/list-group.directive.mjs +3 -3
- package/esm2022/lib/list-group/list-group.module.mjs +4 -4
- package/esm2022/lib/loading-button/loading-button.component.mjs +17 -23
- package/esm2022/lib/loading-button/loading-button.module.mjs +4 -4
- package/esm2022/lib/modal/modal/modal.component.mjs +4 -4
- package/esm2022/lib/modal/modal-body/modal-body.component.mjs +3 -3
- package/esm2022/lib/modal/modal-content/modal-content.component.mjs +3 -3
- package/esm2022/lib/modal/modal-dialog/modal-dialog.component.mjs +3 -3
- package/esm2022/lib/modal/modal-dismiss/modal-toggle.directive.mjs +3 -3
- package/esm2022/lib/modal/modal-footer/modal-footer.component.mjs +3 -3
- package/esm2022/lib/modal/modal-header/modal-header.component.mjs +3 -3
- package/esm2022/lib/modal/modal-title/modal-title.directive.mjs +3 -3
- package/esm2022/lib/modal/modal.module.mjs +4 -4
- package/esm2022/lib/modal/modal.service.mjs +3 -3
- package/esm2022/lib/multi-select/multi-select/multi-select-search.directive.mjs +4 -4
- package/esm2022/lib/multi-select/multi-select/multi-select.component.mjs +65 -33
- package/esm2022/lib/multi-select/multi-select-native-select/multi-select-native-select.component.mjs +10 -9
- package/esm2022/lib/multi-select/multi-select-optgroup/multi-select-optgroup-label.component.mjs +3 -3
- package/esm2022/lib/multi-select/multi-select-optgroup/multi-select-optgroup.component.mjs +8 -14
- package/esm2022/lib/multi-select/multi-select-option/multi-select-option.component.mjs +4 -4
- package/esm2022/lib/multi-select/multi-select-tag/multi-select-tag.component.mjs +4 -4
- package/esm2022/lib/multi-select/multi-select.module.mjs +4 -4
- package/esm2022/lib/multi-select/multi-select.service.mjs +3 -3
- package/esm2022/lib/nav/nav-item.component.mjs +3 -3
- package/esm2022/lib/nav/nav-link.directive.mjs +3 -3
- package/esm2022/lib/nav/nav.component.mjs +3 -3
- package/esm2022/lib/nav/nav.module.mjs +4 -4
- package/esm2022/lib/navbar/navbar-brand/navbar-brand.directive.mjs +3 -3
- package/esm2022/lib/navbar/navbar-nav/navbar-nav.component.mjs +3 -3
- package/esm2022/lib/navbar/navbar-text/navbar-text.component.mjs +3 -3
- package/esm2022/lib/navbar/navbar-toggler/navbar-toggler.directive.mjs +4 -4
- package/esm2022/lib/navbar/navbar.component.mjs +4 -4
- package/esm2022/lib/navbar/navbar.module.mjs +4 -4
- package/esm2022/lib/offcanvas/offcanvas/offcanvas.component.mjs +4 -4
- package/esm2022/lib/offcanvas/offcanvas-body/offcanvas-body.component.mjs +3 -3
- package/esm2022/lib/offcanvas/offcanvas-header/offcanvas-header.component.mjs +3 -3
- package/esm2022/lib/offcanvas/offcanvas-title/offcanvas-title.directive.mjs +3 -3
- package/esm2022/lib/offcanvas/offcanvas-toggle/offcanvas-toggle.directive.mjs +3 -3
- package/esm2022/lib/offcanvas/offcanvas.module.mjs +4 -4
- package/esm2022/lib/offcanvas/offcanvas.service.mjs +3 -3
- package/esm2022/lib/pagination/page-item/page-item.component.mjs +3 -3
- package/esm2022/lib/pagination/page-item/page-item.directive.mjs +4 -4
- package/esm2022/lib/pagination/page-link/page-link.directive.mjs +3 -3
- package/esm2022/lib/pagination/pagination/pagination.component.mjs +3 -3
- package/esm2022/lib/pagination/pagination.module.mjs +4 -4
- package/esm2022/lib/placeholder/placeholder-animation.directive.mjs +3 -3
- package/esm2022/lib/placeholder/placeholder.directive.mjs +13 -20
- package/esm2022/lib/placeholder/placeholder.module.mjs +4 -4
- package/esm2022/lib/popover/popover/popover.component.mjs +4 -4
- package/esm2022/lib/popover/popover.directive.mjs +4 -4
- package/esm2022/lib/popover/popover.module.mjs +4 -4
- package/esm2022/lib/progress/progress-bar.component.mjs +21 -94
- package/esm2022/lib/progress/progress-bar.directive.mjs +112 -0
- package/esm2022/lib/progress/progress-stacked.component.mjs +19 -0
- package/esm2022/lib/progress/progress.component.mjs +24 -27
- package/esm2022/lib/progress/progress.module.mjs +19 -9
- package/esm2022/lib/progress/progress.type.mjs +1 -1
- package/esm2022/lib/progress/public_api.mjs +3 -1
- package/esm2022/lib/services/class-toggle.service.mjs +4 -4
- package/esm2022/lib/services/color-mode.service.mjs +17 -26
- package/esm2022/lib/services/in-memory-storage.service.mjs +3 -3
- package/esm2022/lib/services/intersection.service.mjs +4 -4
- package/esm2022/lib/services/listeners.service.mjs +4 -4
- package/esm2022/lib/services/local-storage.service.mjs +3 -3
- package/esm2022/lib/services/public_api.mjs +1 -1
- package/esm2022/lib/shared/html-attr.directive.mjs +4 -4
- package/esm2022/lib/shared/shared.module.mjs +4 -4
- package/esm2022/lib/shared/template-id.directive.mjs +3 -3
- package/esm2022/lib/shared/theme.directive.mjs +6 -5
- package/esm2022/lib/sidebar/sidebar/sidebar.component.mjs +36 -48
- package/esm2022/lib/sidebar/sidebar-backdrop/sidebar-backdrop.service.mjs +4 -4
- package/esm2022/lib/sidebar/sidebar-brand/sidebar-brand.component.mjs +6 -6
- package/esm2022/lib/sidebar/sidebar-footer/sidebar-footer.component.mjs +3 -3
- package/esm2022/lib/sidebar/sidebar-header/sidebar-header.component.mjs +3 -3
- package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav-badge.pipe.mjs +3 -3
- package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav-divider.component.mjs +3 -3
- package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav-group.service.mjs +3 -3
- package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav-icon.pipe.mjs +3 -3
- package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav-item-class.pipe.mjs +4 -4
- package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav-label.component.mjs +6 -6
- package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav-link.component.mjs +21 -22
- package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav-link.pipe.mjs +3 -3
- package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav-title.component.mjs +4 -4
- package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav.component.mjs +10 -15
- package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav.service.mjs +7 -7
- package/esm2022/lib/sidebar/sidebar-toggle/sidebar-toggle.directive.mjs +3 -3
- package/esm2022/lib/sidebar/sidebar-toggler/sidebar-toggler.directive.mjs +3 -3
- package/esm2022/lib/sidebar/sidebar.module.mjs +4 -4
- package/esm2022/lib/sidebar/sidebar.service.mjs +3 -3
- package/esm2022/lib/smart-pagination/smart-pagination.component.mjs +22 -26
- package/esm2022/lib/smart-pagination/smart-pagination.module.mjs +4 -4
- package/esm2022/lib/smart-table/smart-table/smart-table.component.mjs +8 -11
- package/esm2022/lib/smart-table/smart-table-column-filter/smart-table-column-filter.component.mjs +3 -3
- package/esm2022/lib/smart-table/smart-table-filter/filter-input.directive.mjs +4 -4
- package/esm2022/lib/smart-table/smart-table-filter/smart-table-filter.component.mjs +6 -6
- package/esm2022/lib/smart-table/smart-table-head/smart-table-column-label.pipe.mjs +3 -3
- package/esm2022/lib/smart-table/smart-table-head/smart-table-head.component.mjs +9 -14
- package/esm2022/lib/smart-table/smart-table-items-per-page-selector/smart-table-items-per-page-selector.component.mjs +5 -7
- package/esm2022/lib/smart-table/smart-table.module.mjs +4 -4
- package/esm2022/lib/smart-table/smart-table.type.mjs +1 -1
- package/esm2022/lib/smart-table/smart-table.utils.mjs +1 -1
- package/esm2022/lib/spinner/spinner.component.mjs +3 -3
- package/esm2022/lib/spinner/spinner.module.mjs +4 -4
- package/esm2022/lib/table/table-active.directive.mjs +3 -3
- package/esm2022/lib/table/table-color.directive.mjs +3 -3
- package/esm2022/lib/table/table.directive.mjs +4 -4
- package/esm2022/lib/table/table.module.mjs +4 -4
- package/esm2022/lib/tabs/tab-content/tab-content.component.mjs +9 -9
- package/esm2022/lib/tabs/tab-content-ref.directive.mjs +14 -11
- package/esm2022/lib/tabs/tab-pane/tab-pane.component.mjs +7 -8
- package/esm2022/lib/tabs/tab.service.mjs +3 -3
- package/esm2022/lib/tabs/tabs.module.mjs +4 -4
- package/esm2022/lib/time-picker/time-picker-roll-col/time-picker-roll-am-pm.component.mjs +14 -13
- package/esm2022/lib/time-picker/time-picker-roll-col/time-picker-roll-col.component.mjs +14 -13
- package/esm2022/lib/time-picker/time-picker.component.mjs +7 -9
- package/esm2022/lib/time-picker/time-picker.module.mjs +6 -8
- package/esm2022/lib/time-picker/time.utils.mjs +1 -1
- package/esm2022/lib/toast/toast/toast.component.mjs +13 -11
- package/esm2022/lib/toast/toast-body/toast-body.component.mjs +3 -3
- package/esm2022/lib/toast/toast-close.directive.mjs +3 -3
- package/esm2022/lib/toast/toast-header/toast-header.component.mjs +5 -6
- package/esm2022/lib/toast/toast.module.mjs +4 -4
- package/esm2022/lib/toast/toaster/toaster-host.directive.mjs +3 -3
- package/esm2022/lib/toast/toaster/toaster.component.mjs +4 -4
- package/esm2022/lib/toast/toaster/toaster.service.mjs +3 -3
- package/esm2022/lib/tooltip/tooltip/tooltip.component.mjs +4 -4
- package/esm2022/lib/tooltip/tooltip.directive.mjs +4 -4
- package/esm2022/lib/tooltip/tooltip.module.mjs +4 -4
- package/esm2022/lib/utilities/align.directive.mjs +3 -3
- package/esm2022/lib/utilities/bg-color.directive.mjs +3 -3
- package/esm2022/lib/utilities/border.directive.mjs +4 -4
- package/esm2022/lib/utilities/rounded.directive.mjs +4 -4
- package/esm2022/lib/utilities/shadow-on-scroll.directive.mjs +4 -4
- package/esm2022/lib/utilities/text-color.directive.mjs +3 -3
- package/esm2022/lib/utilities/utilities.module.mjs +4 -4
- package/esm2022/lib/widget/widget-stat-a/widget-stat-a.component.mjs +6 -6
- package/esm2022/lib/widget/widget-stat-b/widget-stat-b.component.mjs +6 -6
- package/esm2022/lib/widget/widget-stat-c/widget-stat-c.component.mjs +7 -7
- package/esm2022/lib/widget/widget-stat-d/widget-stat-d.component.mjs +6 -6
- package/esm2022/lib/widget/widget-stat-e/widget-stat-e.component.mjs +6 -6
- package/esm2022/lib/widget/widget-stat-f/widget-stat-f.component.mjs +6 -6
- package/esm2022/lib/widget/widget.module.mjs +4 -4
- package/fesm2022/coreui-angular-pro.mjs +1281 -1254
- package/fesm2022/coreui-angular-pro.mjs.map +1 -1
- package/lib/accordion/accordion/accordion.component.d.ts +4 -6
- package/lib/alert/alert.component.d.ts +8 -12
- package/lib/breadcrumb/breadcrumb-item/breadcrumb-item.component.d.ts +1 -0
- package/lib/carousel/carousel-item/carousel-item.component.d.ts +1 -2
- package/lib/collapse/collapse.directive.d.ts +13 -13
- package/lib/dropdown/dropdown/dropdown.component.d.ts +8 -12
- package/lib/form/form-check/form-check-input.directive.d.ts +4 -3
- package/lib/loading-button/loading-button.component.d.ts +4 -5
- package/lib/multi-select/multi-select/multi-select.component.d.ts +6 -3
- package/lib/multi-select/multi-select-native-select/multi-select-native-select.component.d.ts +3 -1
- package/lib/multi-select/multi-select-optgroup/multi-select-optgroup.component.d.ts +2 -5
- package/lib/placeholder/placeholder.directive.d.ts +3 -7
- package/lib/progress/progress-bar.component.d.ts +4 -50
- package/lib/progress/progress-bar.directive.d.ts +58 -0
- package/lib/progress/progress-stacked.component.d.ts +7 -0
- package/lib/progress/progress.component.d.ts +9 -16
- package/lib/progress/progress.module.d.ts +3 -1
- package/lib/progress/progress.type.d.ts +12 -13
- package/lib/progress/public_api.d.ts +3 -1
- package/lib/services/color-mode.service.d.ts +4 -2
- package/lib/services/public_api.d.ts +1 -1
- package/lib/sidebar/sidebar/sidebar.component.d.ts +13 -11
- package/lib/smart-pagination/smart-pagination.component.d.ts +4 -8
- package/lib/smart-table/smart-table-head/smart-table-head.component.d.ts +1 -0
- package/lib/smart-table/smart-table.type.d.ts +3 -2
- package/lib/smart-table/smart-table.utils.d.ts +1 -1
- package/lib/tabs/tab-content/tab-content.component.d.ts +1 -0
- package/lib/tabs/tab-content-ref.directive.d.ts +4 -2
- package/lib/time-picker/time-picker-roll-col/time-picker-roll-am-pm.component.d.ts +2 -0
- package/lib/time-picker/time-picker-roll-col/time-picker-roll-col.component.d.ts +2 -0
- package/lib/toast/toast/toast.component.d.ts +3 -2
- package/lib/widget/widget-stat-c/widget-stat-c.component.d.ts +9 -10
- package/package.json +2 -2
|
@@ -9,10 +9,10 @@ export class CalendarClassYearPipe {
|
|
|
9
9
|
today: isThisYear(year)
|
|
10
10
|
};
|
|
11
11
|
}
|
|
12
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
13
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.
|
|
12
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: CalendarClassYearPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
13
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.1.1", ngImport: i0, type: CalendarClassYearPipe, isStandalone: true, name: "calendarClassYear" }); }
|
|
14
14
|
}
|
|
15
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
15
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: CalendarClassYearPipe, decorators: [{
|
|
16
16
|
type: Pipe,
|
|
17
17
|
args: [{
|
|
18
18
|
name: 'calendarClassYear',
|
|
@@ -4,10 +4,10 @@ export class CalendarDayTitlePipe {
|
|
|
4
4
|
transform(date, locale = 'default') {
|
|
5
5
|
return date.toLocaleDateString(locale);
|
|
6
6
|
}
|
|
7
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
8
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.
|
|
7
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: CalendarDayTitlePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
8
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.1.1", ngImport: i0, type: CalendarDayTitlePipe, isStandalone: true, name: "calendarDayTitle" }); }
|
|
9
9
|
}
|
|
10
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
10
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: CalendarDayTitlePipe, decorators: [{
|
|
11
11
|
type: Pipe,
|
|
12
12
|
args: [{
|
|
13
13
|
name: 'calendarDayTitle',
|
|
@@ -103,10 +103,10 @@ export class CalendarDayDirective {
|
|
|
103
103
|
getLabel() {
|
|
104
104
|
return this.date?.toLocaleDateString(this.#calendarState().locale) ?? '';
|
|
105
105
|
}
|
|
106
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
107
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "17.
|
|
106
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: CalendarDayDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
107
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "17.1.1", type: CalendarDayDirective, isStandalone: true, selector: "[cCalendarDay]", inputs: { date: "date", disabled: ["disabled", "disabled", booleanAttribute], month: "month", calendarDate: "calendarDate" }, host: { properties: { "class": "this.hostClasses" } }, exportAs: ["cCalendarDay"], ngImport: i0 }); }
|
|
108
108
|
}
|
|
109
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
109
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: CalendarDayDirective, decorators: [{
|
|
110
110
|
type: Directive,
|
|
111
111
|
args: [{
|
|
112
112
|
selector: '[cCalendarDay]',
|
|
@@ -126,4 +126,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
|
|
|
126
126
|
type: HostBinding,
|
|
127
127
|
args: ['class']
|
|
128
128
|
}] } });
|
|
129
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItZGF5LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmV1aS1hbmd1bGFyL3NyYy9saWIvY2FsZW5kYXIvY2FsZW5kYXItbW9udGgvY2FsZW5kYXItZGF5LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLFFBQVEsRUFDUixVQUFVLEVBQ1YsU0FBUyxFQUNULFVBQVUsRUFDVixXQUFXLEVBQ1gsTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFtQixZQUFZLEVBQWUsTUFBTSxtQkFBbUIsQ0FBQztBQUMvRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUNMLGNBQWMsRUFDZCxhQUFhLEVBQ2IscUJBQXFCLEVBQ3JCLGNBQWMsRUFDZCxTQUFTLEVBQ1QsZUFBZSxFQUNmLFdBQVcsRUFDWCxhQUFhLEVBQ2IsY0FBYyxFQUNmLE1BQU0sbUJBQW1CLENBQUM7QUFDM0IsT0FBTyxFQUFFLGVBQWUsRUFBa0IsTUFBTSxxQkFBcUIsQ0FBQzs7QUFPdEUsTUFBTSxPQUFPLG9CQUFvQjtJQUUvQixXQUFXLENBQXNCO0lBQ2pDLGdCQUFnQixDQUEyQjtJQUkzQyxjQUFjLENBQTRFO0lBRTFGO1FBUEEsZ0JBQVcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDakMscUJBQWdCLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzNDLGVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDaEMsaUJBQVksR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFcEMsbUJBQWMsR0FBRyxNQUFNLENB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RSxJQUFJLENBQUMsUUFBUTtZQUN2QixTQUFTLEVBQUUsU0FBUztTQUNyQixDQUFDO0lBQ0osQ0FBQztJQUVELEtBQUssQ0FBQyxNQUFvQjtRQUN4QixJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxNQUFNLElBQUksVUFBVSxDQUFDLENBQUM7SUFDbEYsQ0FBQztJQUVELFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxJQUFJLEVBQUUsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMzRSxDQUFDOzhHQXRIVSxvQkFBb0I7a0dBQXBCLG9CQUFvQiw2R0FvQlgsZ0JBQWdCOzsyRkFwQnpCLG9CQUFvQjtrQkFMaEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLGNBQWM7aUJBQ3pCO3dEQW1CVSxJQUFJO3NCQUFaLEtBQUs7Z0JBRWtDLFFBQVE7c0JBQS9DLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBRTdCLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQThCRixXQUFXO3NCQURkLFdBQVc7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGJvb2xlYW5BdHRyaWJ1dGUsXG4gIGNvbXB1dGVkLFxuICBEZXN0cm95UmVmLFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RCaW5kaW5nLFxuICBpbmplY3QsXG4gIElucHV0LFxuICBzaWduYWxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBGb2N1c2FibGVPcHRpb24sIEZvY3VzTW9uaXRvciwgRm9jdXNPcmlnaW4gfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICBpc0RhdGVEaXNhYmxlZCxcbiAgaXNEYXRlSW5SYW5nZSxcbiAgaXNEYXRlSW5SYW5nZURpc2FibGVkLFxuICBpc0RhdGVTZWxlY3RlZCxcbiAgaXNFbmREYXRlLFxuICBpc01vbnRoU2VsZWN0ZWQsXG4gIGlzU3RhcnREYXRlLFxuICBpc1llYXJJblJhbmdlLFxuICBpc1llYXJTZWxlY3RlZFxufSBmcm9tICcuLi9jYWxlbmRhci51dGlscyc7XG5pbXBvcnQgeyBDYWxlbmRhclNlcnZpY2UsIElDYWxlbmRhclN0YXRlIH0gZnJvbSAnLi4vY2FsZW5kYXIuc2VydmljZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tjQ2FsZW5kYXJEYXldJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgZXhwb3J0QXM6ICdjQ2FsZW5kYXJEYXknXG59KVxuZXhwb3J0IGNsYXNzIENhbGVuZGFyRGF5RGlyZWN0aXZlIGltcGxlbWVudHMgRm9jdXNhYmxlT3B0aW9uIHtcblxuICAjZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcbiAgI2NhbGVuZGFyU2VydmljZSA9IGluamVjdChDYWxlbmRhclNlcnZpY2UpO1xuICBlbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuICBmb2N1c01vbml0b3IgPSBpbmplY3QoRm9jdXNNb25pdG9yKTtcblxuICAjY2FsZW5kYXJTdGF0ZSA9IHNpZ25hbDxJQ2FsZW5kYXJTdGF0ZT4oeyAuLi50aGlzLiNjYWxlbmRhclNlcnZpY2UuY2FsZW5kYXJTdGF0ZU9iamVjdCB9KTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLiNjYWxlbmRhclNlcnZpY2UuY2FsZW5kYXJTdGF0ZSQucGlwZShcbiAgICAgIHRhcChzdGF0ZSA9PiB7XG4gICAgICAgIHRoaXMuI2NhbGVuZGFyU3RhdGUuc2V0KHN0YXRlKTtcbiAgICAgIH0pLFxuICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuI2Rlc3Ryb3lSZWYpXG4gICAgKS5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIEBJbnB1dCgpIGRhdGUhOiBEYXRlO1xuXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIG1vbnRoID0gJ2N1cnJlbnQnO1xuICBASW5wdXQoKSBjYWxlbmRhckRhdGUgPSBuZXcgRGF0ZSgpO1xuXG4gICNzZWxlY3RFbmREYXRlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gdGhpcy4jY2FsZW5kYXJTdGF0ZSgpO1xuICAgIHJldHVybiA8Ym9vbGVhbj4oc3RhdGUucmFuZ2UgJiYgISFzdGF0ZS5zdGFydERhdGUgJiYgIXN0YXRlLmVuZERhdGUpO1xuICB9KTtcblxuICBkaXNhYmxlZCQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSB7IC4uLnRoaXMuI2NhbGVuZGFyU3RhdGUoKSB9O1xuXG4gICAgY29uc3QgZGF0ZVllYXIgPSB0aGlzLmRhdGUuZ2V0RnVsbFllYXIoKTtcblxuICAgIHN3aXRjaCAoc3RhdGUudmlldykge1xuICAgICAgY2FzZSAnbW9udGhzJzpcbiAgICAgICAgY29uc3QgZGF0ZU1vbnRoID0gZGF0ZVllYXIgKiAxMDAgKyB0aGlzLmRhdGUuZ2V0TW9udGgoKTtcbiAgICAgICAgY29uc3QgbWluRGF0ZSA9IHN0YXRlLm1pbkRhdGUgPyBzdGF0ZS5taW5EYXRlLmdldEZ1bGxZZWFyKCkgKiAxMDAgKyBzdGF0ZS5taW5EYXRlPy5nZXRNb250aCgpIDogdW5kZWZpbmVkO1xuICAgICAgICBjb25zdCBtYXhEYXRlID0gc3RhdGUubWF4RGF0ZSA/IHN0YXRlLm1heERhdGUuZ2V0RnVsbFllYXIoKSAqIDEwMCArIHN0YXRlLm1heERhdGU/LmdldE1vbnRoKCkgOiB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSAobWluRGF0ZSA/IChkYXRlTW9udGggPCBtaW5EYXRlKSA6IGZhbHNlKSB8fCAobWF4RGF0ZSA/IChkYXRlTW9udGggPiBtYXhEYXRlKSA6IGZhbHNlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd5ZWFycyc6XG4gICAgICAgIGNvbnN0IG1pblllYXIgPSBzdGF0ZS5taW5EYXRlPy5nZXRGdWxsWWVhcigpO1xuICAgICAgICBjb25zdCBtYXhZZWFyID0gc3RhdGUubWF4RGF0ZT8uZ2V0RnVsbFllYXIoKTtcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IChtaW5ZZWFyID8gZGF0ZVllYXIgPCBtaW5ZZWFyIDogZmFsc2UpIHx8IChtYXhZZWFyID8gZGF0ZVllYXIgPiBtYXhZZWFyIDogZmFsc2UpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZGlzYWJsZWQ7XG5cbiAgfSk7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gIGdldCBob3N0Q2xhc3NlcygpOiBhbnkge1xuXG4gICAgaWYgKCF0aGlzLmRhdGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzdGF0ZSA9IHRoaXMuI2NhbGVuZGFyU3RhdGUoKTtcbiAgICBzdGF0ZS5zdGFydERhdGUgPSBzdGF0ZS5zdGFydERhdGUgPz8gbnVsbDtcbiAgICBzdGF0ZS5ob3ZlckRhdGUgPSBzdGF0ZS5ob3ZlckRhdGUgPz8gbnVsbDtcbiAgICBzdGF0ZS5lbmREYXRlID0gc3RhdGUuZW5kRGF0ZSA/PyBudWxsO1xuXG4gICAgY29uc3Qgc3RhcnQgPSBpc1N0YXJ0RGF0ZSh0aGlzLmRhdGUsIHN0YXRlLnN0YXJ0RGF0ZSwgc3RhdGUuZW5kRGF0ZSk7XG4gICAgY29uc3QgZW5kID0gaXNFbmREYXRlKHRoaXMuZGF0ZSwgc3RhdGUuc3RhcnREYXRlLCBzdGF0ZS5lbmREYXRlKTtcblxuICAgIGxldCBzZWxlY3RlZDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIGxldCBjbGlja2FibGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBsZXQgcmFuZ2VIb3ZlcjogYm9vbGVhbiA9IGZhbHNlO1xuICAgIGxldCBpblJhbmdlOiBib29sZWFuID0gZmFsc2U7XG4gICAgbGV0IGRpc2FibGVkUmFuZ2U6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBsZXQgZGlzYWJsZWREYXRlOiBib29sZWFuID0gZmFsc2U7XG4gICAgbGV0IGRpc2FibGVkQnlGaWx0ZXI6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIHN3aXRjaCAoc3RhdGUudmlldykge1xuICAgICAgY2FzZSAnbW9udGhzJzpcbiAgICAgICAgaWYgKHN0YXRlLnNlbGVjdGlvblR5cGUgPT09ICdtb250aCcpIHtcbiAgICAgICAgICBzZWxlY3RlZCA9ICEhaXNNb250aFNlbGVjdGVkKHRoaXMuZGF0ZSwgc3RhdGUuc3RhcnREYXRlLCBzdGF0ZS5lbmREYXRlKTtcbiAgICAgICAgICBpblJhbmdlID0gISFpc0RhdGVJblJhbmdlKHRoaXMuZGF0ZSwgc3RhdGUuc3RhcnREYXRlLCBzdGF0ZS5lbmREYXRlKTtcbiAgICAgICAgICByYW5nZUhvdmVyID0gdGhpcy4jc2VsZWN0RW5kRGF0ZSgpICYmICEhaXNEYXRlSW5SYW5nZSh0aGlzLmRhdGUsIHN0YXRlLnN0YXJ0RGF0ZSwgc3RhdGUuaG92ZXJEYXRlKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3llYXJzJzpcbiAgICAgICAgaWYgKHN0YXRlLnNlbGVjdGlvblR5cGUgPT09ICd5ZWFyJykge1xuICAgICAgICAgIHNlbGVjdGVkID0gISFpc1llYXJTZWxlY3RlZCh0aGlzLmRhdGUsIHN0YXRlLnN0YXJ0RGF0ZSwgc3RhdGUuZW5kRGF0ZSk7XG4gICAgICAgICAgaW5SYW5nZSA9ICEhaXNEYXRlSW5SYW5nZSh0aGlzLmRhdGUsIHN0YXRlLnN0YXJ0RGF0ZSwgc3RhdGUuZW5kRGF0ZSk7XG4gICAgICAgICAgcmFuZ2VIb3ZlciA9IHRoaXMuI3NlbGVjdEVuZERhdGUoKSAmJiAhIWlzWWVhckluUmFuZ2UodGhpcy5kYXRlLCBzdGF0ZS5zdGFydERhdGUsIHN0YXRlLmhvdmVyRGF0ZSk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBzZWxlY3RlZCA9IHN0YXRlLnNlbGVjdGlvblR5cGUgPT09ICdkYXknICYmICEhaXNEYXRlU2VsZWN0ZWQodGhpcy5kYXRlLCBzdGF0ZS5zdGFydERhdGUsIHN0YXRlLmVuZERhdGUpO1xuICAgICAgICBjbGlja2FibGUgPSB0aGlzLm1vbnRoICE9PSAnY3VycmVudCcgJiYgISFzdGF0ZS5zZWxlY3RBZGphY2VudERheXM7XG4gICAgICAgIHJhbmdlSG92ZXIgPSBzdGF0ZS5zZWxlY3Rpb25UeXBlID09PSAnZGF5JyAmJiB0aGlzLm1vbnRoID09PSAnY3VycmVudCcgJiYgdGhpcy4jc2VsZWN0RW5kRGF0ZSgpICYmICEhaXNEYXRlSW5SYW5nZSh0aGlzLmRhdGUsIHN0YXRlLnN0YXJ0RGF0ZSwgc3RhdGUuaG92ZXJEYXRlKTtcbiAgICAgICAgaW5SYW5nZSA9IHRoaXMubW9udGggPT09ICdjdXJyZW50JyAmJiAoaXNEYXRlSW5SYW5nZSh0aGlzLmRhdGUsIHN0YXRlLnN0YXJ0RGF0ZSwgc3RhdGUuZW5kRGF0ZSkgfHwgISFzdGFydCB8fCAhIWVuZCk7XG4gICAgICAgIGRpc2FibGVkUmFuZ2UgPSBpc0RhdGVJblJhbmdlRGlzYWJsZWQoc3RhdGUuc3RhcnREYXRlLCB0aGlzLmRhdGUsIHN0YXRlLmRpc2FibGVkRGF0ZXMpO1xuICAgICAgICBkaXNhYmxlZERhdGUgPSBpc0RhdGVEaXNhYmxlZCh0aGlzLmRhdGUsIHN0YXRlLm1pbkRhdGUsIHN0YXRlLm1heERhdGUsIHN0YXRlLmRpc2FibGVkRGF0ZXMpO1xuICAgICAgICBkaXNhYmxlZEJ5RmlsdGVyID0gKHN0YXRlLmRhdGVGaWx0ZXIgJiYgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHN0YXRlLmRhdGVGaWx0ZXIpID09PSAnW29iamVjdCBGdW5jdGlvbl0nICYmIHRoaXMuZGF0ZSkgPyAhc3RhdGUuZGF0ZUZpbHRlcih0aGlzLmRhdGUpIDogZmFsc2U7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSBkaXNhYmxlZERhdGUgfHwgZGlzYWJsZWRCeUZpbHRlcjtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgJ3JhbmdlLWhvdmVyJzogcmFuZ2VIb3ZlciAmJiAoIWRpc2FibGVkUmFuZ2UgfHwgIWRpc2FibGVkQnlGaWx0ZXIpLFxuICAgICAgc2VsZWN0ZWQ6IHNlbGVjdGVkLFxuICAgICAgcmFuZ2U6IGluUmFuZ2UsXG4gICAgICBzdGFydDogISFzdGFydCxcbiAgICAgIGVuZDogISFlbmQsXG4gICAgICBkaXNhYmxlZDogdGhpcy5kaXNhYmxlZCxcbiAgICAgIGNsaWNrYWJsZTogY2xpY2thYmxlXG4gICAgfTtcbiAgfVxuXG4gIGZvY3VzKG9yaWdpbj86IEZvY3VzT3JpZ2luKTogdm9pZCB7XG4gICAgdGhpcy5mb2N1c01vbml0b3IuZm9jdXNWaWEodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIG9yaWdpbiA/PyAna2V5Ym9hcmQnKTtcbiAgfVxuXG4gIGdldExhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZGF0ZT8udG9Mb2NhbGVEYXRlU3RyaW5nKHRoaXMuI2NhbGVuZGFyU3RhdGUoKS5sb2NhbGUpID8/ICcnO1xuICB9XG5cbn1cbiJdfQ==
|
|
129
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItZGF5LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmV1aS1hbmd1bGFyL3NyYy9saWIvY2FsZW5kYXIvY2FsZW5kYXItbW9udGgvY2FsZW5kYXItZGF5LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLFFBQVEsRUFDUixVQUFVLEVBQ1YsU0FBUyxFQUNULFVBQVUsRUFDVixXQUFXLEVBQ1gsTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFtQixZQUFZLEVBQWUsTUFBTSxtQkFBbUIsQ0FBQztBQUMvRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUNMLGNBQWMsRUFDZCxhQUFhLEVBQ2IscUJBQXFCLEVBQ3JCLGNBQWMsRUFDZCxTQUFTLEVBQ1QsZUFBZSxFQUNmLFdBQVcsRUFDWCxhQUFhLEVBQ2IsY0FBYyxFQUNmLE1BQU0sbUJBQW1CLENBQUM7QUFDM0IsT0FBTyxFQUFFLGVBQWUsRUFBa0IsTUFBTSxxQkFBcUIsQ0FBQzs7QUFPdEUsTUFBTSxPQUFPLG9CQUFvQjtJQUUvQixXQUFXLENBQXNCO0lBQ2pDLGdCQUFnQixDQUEyQjtJQUkzQyxjQUFjLENBQTRFO0lBRTFGO1FBUEEsZ0JBQVcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDakMscUJBQWdCLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzNDLGVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDaEMsaUJBQVksR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFcEMsbUJBQWMsR0FBRyxNQUFNLENB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QyxLQUFLO1lBQ2QsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHO1lBQ1YsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3ZCLFNBQVMsRUFBRSxTQUFTO1NBQ3JCLENBQUM7SUFDSixDQUFDO0lBRUQsS0FBSyxDQUFDLE1BQW9CO1FBQ3hCLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLE1BQU0sSUFBSSxVQUFVLENBQUMsQ0FBQztJQUNsRixDQUFDO0lBRUQsUUFBUTtRQUNOLE9BQU8sSUFBSSxDQUFDLElBQUksRUFBRSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzNFLENBQUM7OEdBcEhVLG9CQUFvQjtrR0FBcEIsb0JBQW9CLDZHQW1CWCxnQkFBZ0I7OzJGQW5CekIsb0JBQW9CO2tCQUxoQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxnQkFBZ0I7b0JBQzFCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsY0FBYztpQkFDekI7d0RBbUJVLElBQUk7c0JBQVosS0FBSztnQkFDa0MsUUFBUTtzQkFBL0MsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFDN0IsS0FBSztzQkFBYixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBOEJGLFdBQVc7c0JBRGQsV0FBVzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgY29tcHV0ZWQsXG4gIERlc3Ryb3lSZWYsXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgSG9zdEJpbmRpbmcsXG4gIGluamVjdCxcbiAgSW5wdXQsXG4gIHNpZ25hbFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IEZvY3VzYWJsZU9wdGlvbiwgRm9jdXNNb25pdG9yLCBGb2N1c09yaWdpbiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIGlzRGF0ZURpc2FibGVkLFxuICBpc0RhdGVJblJhbmdlLFxuICBpc0RhdGVJblJhbmdlRGlzYWJsZWQsXG4gIGlzRGF0ZVNlbGVjdGVkLFxuICBpc0VuZERhdGUsXG4gIGlzTW9udGhTZWxlY3RlZCxcbiAgaXNTdGFydERhdGUsXG4gIGlzWWVhckluUmFuZ2UsXG4gIGlzWWVhclNlbGVjdGVkXG59IGZyb20gJy4uL2NhbGVuZGFyLnV0aWxzJztcbmltcG9ydCB7IENhbGVuZGFyU2VydmljZSwgSUNhbGVuZGFyU3RhdGUgfSBmcm9tICcuLi9jYWxlbmRhci5zZXJ2aWNlJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2NDYWxlbmRhckRheV0nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBleHBvcnRBczogJ2NDYWxlbmRhckRheSdcbn0pXG5leHBvcnQgY2xhc3MgQ2FsZW5kYXJEYXlEaXJlY3RpdmUgaW1wbGVtZW50cyBGb2N1c2FibGVPcHRpb24ge1xuXG4gICNkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICAjY2FsZW5kYXJTZXJ2aWNlID0gaW5qZWN0KENhbGVuZGFyU2VydmljZSk7XG4gIGVsZW1lbnRSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XG4gIGZvY3VzTW9uaXRvciA9IGluamVjdChGb2N1c01vbml0b3IpO1xuXG4gICNjYWxlbmRhclN0YXRlID0gc2lnbmFsPElDYWxlbmRhclN0YXRlPih7IC4uLnRoaXMuI2NhbGVuZGFyU2VydmljZS5jYWxlbmRhclN0YXRlT2JqZWN0IH0pO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuI2NhbGVuZGFyU2VydmljZS5jYWxlbmRhclN0YXRlJC5waXBlKFxuICAgICAgdGFwKHN0YXRlID0+IHtcbiAgICAgICAgdGhpcy4jY2FsZW5kYXJTdGF0ZS5zZXQoc3RhdGUpO1xuICAgICAgfSksXG4gICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy4jZGVzdHJveVJlZilcbiAgICApLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgQElucHV0KCkgZGF0ZSE6IERhdGU7XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBkaXNhYmxlZCA9IGZhbHNlO1xuICBASW5wdXQoKSBtb250aCA9ICdjdXJyZW50JztcbiAgQElucHV0KCkgY2FsZW5kYXJEYXRlID0gbmV3IERhdGUoKTtcblxuICAjc2VsZWN0RW5kRGF0ZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IHRoaXMuI2NhbGVuZGFyU3RhdGUoKTtcbiAgICByZXR1cm4gPGJvb2xlYW4+KHN0YXRlLnJhbmdlICYmICEhc3RhdGUuc3RhcnREYXRlICYmICFzdGF0ZS5lbmREYXRlKTtcbiAgfSk7XG5cbiAgZGlzYWJsZWQkID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0geyAuLi50aGlzLiNjYWxlbmRhclN0YXRlKCkgfTtcblxuICAgIGNvbnN0IGRhdGVZZWFyID0gdGhpcy5kYXRlLmdldEZ1bGxZZWFyKCk7XG5cbiAgICBzd2l0Y2ggKHN0YXRlLnZpZXcpIHtcbiAgICAgIGNhc2UgJ21vbnRocyc6XG4gICAgICAgIGNvbnN0IGRhdGVNb250aCA9IGRhdGVZZWFyICogMTAwICsgdGhpcy5kYXRlLmdldE1vbnRoKCk7XG4gICAgICAgIGNvbnN0IG1pbkRhdGUgPSBzdGF0ZS5taW5EYXRlID8gc3RhdGUubWluRGF0ZS5nZXRGdWxsWWVhcigpICogMTAwICsgc3RhdGUubWluRGF0ZT8uZ2V0TW9udGgoKSA6IHVuZGVmaW5lZDtcbiAgICAgICAgY29uc3QgbWF4RGF0ZSA9IHN0YXRlLm1heERhdGUgPyBzdGF0ZS5tYXhEYXRlLmdldEZ1bGxZZWFyKCkgKiAxMDAgKyBzdGF0ZS5tYXhEYXRlPy5nZXRNb250aCgpIDogdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLmRpc2FibGVkID0gKG1pbkRhdGUgPyAoZGF0ZU1vbnRoIDwgbWluRGF0ZSkgOiBmYWxzZSkgfHwgKG1heERhdGUgPyAoZGF0ZU1vbnRoID4gbWF4RGF0ZSkgOiBmYWxzZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAneWVhcnMnOlxuICAgICAgICBjb25zdCBtaW5ZZWFyID0gc3RhdGUubWluRGF0ZT8uZ2V0RnVsbFllYXIoKTtcbiAgICAgICAgY29uc3QgbWF4WWVhciA9IHN0YXRlLm1heERhdGU/LmdldEZ1bGxZZWFyKCk7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSAobWluWWVhciA/IGRhdGVZZWFyIDwgbWluWWVhciA6IGZhbHNlKSB8fCAobWF4WWVhciA/IGRhdGVZZWFyID4gbWF4WWVhciA6IGZhbHNlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmRpc2FibGVkO1xuXG4gIH0pO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICBnZXQgaG9zdENsYXNzZXMoKTogYW55IHtcblxuICAgIGlmICghdGhpcy5kYXRlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhdGUgPSB0aGlzLiNjYWxlbmRhclN0YXRlKCk7XG4gICAgc3RhdGUuc3RhcnREYXRlID0gc3RhdGUuc3RhcnREYXRlID8/IG51bGw7XG4gICAgc3RhdGUuaG92ZXJEYXRlID0gc3RhdGUuaG92ZXJEYXRlID8/IG51bGw7XG4gICAgc3RhdGUuZW5kRGF0ZSA9IHN0YXRlLmVuZERhdGUgPz8gbnVsbDtcblxuICAgIGNvbnN0IHN0YXJ0ID0gaXNTdGFydERhdGUodGhpcy5kYXRlLCBzdGF0ZS5zdGFydERhdGUsIHN0YXRlLmVuZERhdGUpO1xuICAgIGNvbnN0IGVuZCA9IGlzRW5kRGF0ZSh0aGlzLmRhdGUsIHN0YXRlLnN0YXJ0RGF0ZSwgc3RhdGUuZW5kRGF0ZSk7XG5cbiAgICBsZXQgc2VsZWN0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBsZXQgY2xpY2thYmxlOiBib29sZWFuID0gZmFsc2U7XG4gICAgbGV0IHJhbmdlSG92ZXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBsZXQgaW5SYW5nZTogYm9vbGVhbiA9IGZhbHNlO1xuICAgIGxldCBkaXNhYmxlZFJhbmdlOiBib29sZWFuID0gZmFsc2U7XG4gICAgbGV0IGRpc2FibGVkRGF0ZTogYm9vbGVhbiA9IGZhbHNlO1xuICAgIGxldCBkaXNhYmxlZEJ5RmlsdGVyOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBzd2l0Y2ggKHN0YXRlLnZpZXcpIHtcbiAgICAgIGNhc2UgJ21vbnRocyc6XG4gICAgICAgIGlmIChzdGF0ZS5zZWxlY3Rpb25UeXBlID09PSAnbW9udGgnKSB7XG4gICAgICAgICAgc2VsZWN0ZWQgPSAhIWlzTW9udGhTZWxlY3RlZCh0aGlzLmRhdGUsIHN0YXRlLnN0YXJ0RGF0ZSwgc3RhdGUuZW5kRGF0ZSk7XG4gICAgICAgICAgaW5SYW5nZSA9ICEhaXNEYXRlSW5SYW5nZSh0aGlzLmRhdGUsIHN0YXRlLnN0YXJ0RGF0ZSwgc3RhdGUuZW5kRGF0ZSk7XG4gICAgICAgICAgcmFuZ2VIb3ZlciA9IHRoaXMuI3NlbGVjdEVuZERhdGUoKSAmJiAhIWlzRGF0ZUluUmFuZ2UodGhpcy5kYXRlLCBzdGF0ZS5zdGFydERhdGUsIHN0YXRlLmhvdmVyRGF0ZSk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd5ZWFycyc6XG4gICAgICAgIGlmIChzdGF0ZS5zZWxlY3Rpb25UeXBlID09PSAneWVhcicpIHtcbiAgICAgICAgICBzZWxlY3RlZCA9ICEhaXNZZWFyU2VsZWN0ZWQodGhpcy5kYXRlLCBzdGF0ZS5zdGFydERhdGUsIHN0YXRlLmVuZERhdGUpO1xuICAgICAgICAgIGluUmFuZ2UgPSAhIWlzRGF0ZUluUmFuZ2UodGhpcy5kYXRlLCBzdGF0ZS5zdGFydERhdGUsIHN0YXRlLmVuZERhdGUpO1xuICAgICAgICAgIHJhbmdlSG92ZXIgPSB0aGlzLiNzZWxlY3RFbmREYXRlKCkgJiYgISFpc1llYXJJblJhbmdlKHRoaXMuZGF0ZSwgc3RhdGUuc3RhcnREYXRlLCBzdGF0ZS5ob3ZlckRhdGUpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgc2VsZWN0ZWQgPSBzdGF0ZS5zZWxlY3Rpb25UeXBlID09PSAnZGF5JyAmJiAhIWlzRGF0ZVNlbGVjdGVkKHRoaXMuZGF0ZSwgc3RhdGUuc3RhcnREYXRlLCBzdGF0ZS5lbmREYXRlKTtcbiAgICAgICAgY2xpY2thYmxlID0gdGhpcy5tb250aCAhPT0gJ2N1cnJlbnQnICYmICEhc3RhdGUuc2VsZWN0QWRqYWNlbnREYXlzO1xuICAgICAgICByYW5nZUhvdmVyID0gc3RhdGUuc2VsZWN0aW9uVHlwZSA9PT0gJ2RheScgJiYgdGhpcy5tb250aCA9PT0gJ2N1cnJlbnQnICYmIHRoaXMuI3NlbGVjdEVuZERhdGUoKSAmJiAhIWlzRGF0ZUluUmFuZ2UodGhpcy5kYXRlLCBzdGF0ZS5zdGFydERhdGUsIHN0YXRlLmhvdmVyRGF0ZSk7XG4gICAgICAgIGluUmFuZ2UgPSB0aGlzLm1vbnRoID09PSAnY3VycmVudCcgJiYgKGlzRGF0ZUluUmFuZ2UodGhpcy5kYXRlLCBzdGF0ZS5zdGFydERhdGUsIHN0YXRlLmVuZERhdGUpIHx8ICEhc3RhcnQgfHwgISFlbmQpO1xuICAgICAgICBkaXNhYmxlZFJhbmdlID0gaXNEYXRlSW5SYW5nZURpc2FibGVkKHN0YXRlLnN0YXJ0RGF0ZSwgdGhpcy5kYXRlLCBzdGF0ZS5kaXNhYmxlZERhdGVzKTtcbiAgICAgICAgZGlzYWJsZWREYXRlID0gaXNEYXRlRGlzYWJsZWQodGhpcy5kYXRlLCBzdGF0ZS5taW5EYXRlLCBzdGF0ZS5tYXhEYXRlLCBzdGF0ZS5kaXNhYmxlZERhdGVzKTtcbiAgICAgICAgZGlzYWJsZWRCeUZpbHRlciA9IChzdGF0ZS5kYXRlRmlsdGVyICYmIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChzdGF0ZS5kYXRlRmlsdGVyKSA9PT0gJ1tvYmplY3QgRnVuY3Rpb25dJyAmJiB0aGlzLmRhdGUpID8gIXN0YXRlLmRhdGVGaWx0ZXIodGhpcy5kYXRlKSA6IGZhbHNlO1xuICAgICAgICB0aGlzLmRpc2FibGVkID0gZGlzYWJsZWREYXRlIHx8IGRpc2FibGVkQnlGaWx0ZXI7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICdyYW5nZS1ob3Zlcic6IHJhbmdlSG92ZXIgJiYgKCFkaXNhYmxlZFJhbmdlIHx8ICFkaXNhYmxlZEJ5RmlsdGVyKSxcbiAgICAgIHNlbGVjdGVkOiBzZWxlY3RlZCxcbiAgICAgIHJhbmdlOiBpblJhbmdlLFxuICAgICAgc3RhcnQ6ICEhc3RhcnQsXG4gICAgICBlbmQ6ICEhZW5kLFxuICAgICAgZGlzYWJsZWQ6IHRoaXMuZGlzYWJsZWQsXG4gICAgICBjbGlja2FibGU6IGNsaWNrYWJsZVxuICAgIH07XG4gIH1cblxuICBmb2N1cyhvcmlnaW4/OiBGb2N1c09yaWdpbik6IHZvaWQge1xuICAgIHRoaXMuZm9jdXNNb25pdG9yLmZvY3VzVmlhKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCBvcmlnaW4gPz8gJ2tleWJvYXJkJyk7XG4gIH1cblxuICBnZXRMYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmRhdGU/LnRvTG9jYWxlRGF0ZVN0cmluZyh0aGlzLiNjYWxlbmRhclN0YXRlKCkubG9jYWxlKSA/PyAnJztcbiAgfVxuXG59XG4iXX0=
|
|
@@ -6,10 +6,10 @@ export class CalendarDayPipe {
|
|
|
6
6
|
dayFormat(date) :
|
|
7
7
|
date.toLocaleDateString(locale, { day: dayFormat });
|
|
8
8
|
}
|
|
9
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
10
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.
|
|
9
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: CalendarDayPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
10
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.1.1", ngImport: i0, type: CalendarDayPipe, isStandalone: true, name: "calendarDay" }); }
|
|
11
11
|
}
|
|
12
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
12
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: CalendarDayPipe, decorators: [{
|
|
13
13
|
type: Pipe,
|
|
14
14
|
args: [{
|
|
15
15
|
name: 'calendarDay',
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { booleanAttribute, Component, computed, DestroyRef, inject, Input, numberAttribute, signal, ViewChildren } from '@angular/core';
|
|
2
|
-
import { AsyncPipe, NgClass
|
|
2
|
+
import { AsyncPipe, NgClass } from '@angular/common';
|
|
3
3
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
4
4
|
import { take } from 'rxjs/operators';
|
|
5
5
|
import { convertToDateObject, createGroupsInArray, getMonthDetails, getMonthsNames, getYears, isDateBetweenMinMax, isDateDisabled, isDateInRangeDisabled, tryDate } from '../calendar.utils';
|
|
@@ -327,7 +327,7 @@ export class CalendarMonthComponent {
|
|
|
327
327
|
}
|
|
328
328
|
}
|
|
329
329
|
if (!dayToFocus?.disabled) {
|
|
330
|
-
console.log('dayToFocus', dayToFocus?.date);
|
|
330
|
+
// console.log('dayToFocus', dayToFocus?.date);
|
|
331
331
|
dayToFocus?.focus('keyboard');
|
|
332
332
|
}
|
|
333
333
|
}
|
|
@@ -447,10 +447,10 @@ export class CalendarMonthComponent {
|
|
|
447
447
|
getYearEnd(year) {
|
|
448
448
|
return new Date(year, 11, 1, 0, 0, -1, 0);
|
|
449
449
|
}
|
|
450
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.
|
|
451
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
450
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: CalendarMonthComponent, deps: [{ token: i1.CalendarService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
451
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.1", type: CalendarMonthComponent, isStandalone: true, selector: "c-calendar-month", inputs: { addMonths: "addMonths", startDate: "startDate", endDate: "endDate", disabledDates: "disabledDates", firstDayOfWeek: ["firstDayOfWeek", "firstDayOfWeek", numberAttribute], locale: "locale", range: ["range", "range", booleanAttribute], weekdayFormat: "weekdayFormat", view: "view", maxDate: "maxDate", minDate: "minDate", calendarDate: "calendarDate" }, viewQueries: [{ propertyName: "calendarDays", predicate: CalendarDayDirective, descendants: true }, { propertyName: "calendarRows", predicate: CalendarRowDirective, descendants: true }], exportAs: ["cCalendarMonth"], ngImport: i0, template: "<table>\n @if (view === 'days') {\n <thead>\n <tr>\n @if (showWeekNumber) {\n <th class=\"calendar-cell\">\n <div class=\"calendar-header-cell-inner\">{{ weekNumbersLabel }}</div>\n </th>\n }\n @for (weekDay of weekDays; track weekDay.date; let i = $index) {\n <th class=\"calendar-cell\">\n <div class=\"calendar-header-cell-inner\">\n {{ weekDay.date | calendarWeekday:weekdayFormat:locale }}\n </div>\n </th>\n }\n </tr>\n </thead>\n }\n <tbody (mouseleave)=\"handleCellMouseLeave()\">\n @switch (view) {\n @case ('years') {\n @for (yearsRow of listOfYears(); track yearsRow; let rowIdx = $index) {\n <tr>\n @for (year of yearsRow; track year; let idx = $index) {\n <td\n #calendarYear=\"cCalendarDay\"\n (click)=\"!calendarYear.disabled$() && handleYearCellClick(year)\"\n (keydown)=\"calendarYear.date && handleDayCellKeyDown($event, calendarYear.date)\"\n (keyup)=\"handleYearCellKeyUp($event, calendarYear.date)\"\n (mouseenter)=\"calendarYear.date && handleCellMouseEnter(calendarYear.date)\"\n [attr.aria-label]=\"calendarYear.date.getFullYear()\"\n [date]=\"getYearStart(year)\"\n [ngClass]=\"year | calendarClassYear\"\n [tabindex]=\"calendarYear.disabled$() ? -1 : 0\"\n cCalendarDay\n >\n <div class=\"calendar-cell-inner\">\n {{ yearNumber(year) }}\n </div>\n </td>\n }\n </tr>\n }\n }\n @case ('months') {\n @for (monthsRow of listOfMonths(); track monthsRow; let rowIdx = $index) {\n <tr>\n @for (month of monthsRow; track month; let idx = $index) {\n <td\n #calendarMonth=\"cCalendarDay\"\n (click)=\"!calendarMonth.disabled$() && handleMonthCellClick(calendarMonth.date)\"\n (keydown)=\"calendarMonth.date && handleDayCellKeyDown($event, calendarMonth.date)\"\n (keyup)=\"handleMonthCellKeyUp($event, calendarMonth.date)\"\n (mouseenter)=\"calendarMonth.date && handleCellMouseEnter(calendarMonth.date)\"\n [attr.aria-label]=\"calendarMonth.date.getFullYear()+' '+month.month\"\n [date]=\"getMonthStart(rowIdx*3+idx)\"\n [ngClass]=\"calendarDate | calendarClassMonth:(rowIdx*3+idx)\"\n [tabindex]=\"calendarMonth.disabled$() ? -1 : 0\"\n cCalendarDay\n >\n <div class=\"calendar-cell-inner\">\n {{ month.month }}\n </div>\n </td>\n }\n </tr>\n }\n\n }\n @default {\n @for (week of monthDetails; track week; let i = $index) {\n <tr #calendarRow=\"cCalendarRow\"\n (click)=\"selectionType === 'week' && (calendarRow.current) && calendarRow.date && handleDayCellClick(calendarRow.date)\"\n (keydown)=\"selectionType === 'week' && (calendarRow.current) && calendarRow.date && handleDayCellKeyDown($event, calendarRow.date)\"\n (keyup)=\"selectionType === 'week' && (calendarRow.current) && calendarRow.date && handleDayCellKeyUp($event, calendarRow.date)\"\n (mouseenter)=\"selectionType === 'week' && calendarRow.date && handleCellMouseEnter(calendarRow.date)\"\n [cCalendarRow]=\"week\"\n >\n @if (showWeekNumber) {\n <th class=\"calendar-cell-week-number\">\n {{ week.weekNumber === 0 ? 53 : week.weekNumber }}\n </th>\n }\n @for (dateObj of week.days; track dateObj.date; let idx = $index) {\n @if (dateObj.month === 'current' || showAdjacentDays) {\n <td #calendarCell=\"cCalendarDay\"\n (click)=\"selectionType === 'day' && (dateObj.month === 'current' || selectAdjacentDays) && handleDayCellClick(dateObj.date)\"\n (keydown)=\"selectionType === 'day' && (dateObj.month === 'current' || selectAdjacentDays) && handleDayCellKeyDown($event, dateObj.date)\"\n (keyup)=\"selectionType === 'day' && (dateObj.month === 'current' || selectAdjacentDays) && handleDayCellKeyUp($event, dateObj.date)\"\n (mouseenter)=\"selectionType === 'day' && (dateObj.month === 'current' || selectAdjacentDays) && handleCellMouseEnter(dateObj.date)\"\n [attr.aria-label]=\"dateObj.date | calendarDayTitle:locale\"\n [date]=\"dateObj.date\"\n [month]=\"dateObj.month\"\n [ngClass]=\"dateObj | calendarClassDay:{minDate, maxDate, disabledDates, dateFilter}\"\n [tabindex]=\"selectionType === 'day' && (dateObj.month === 'current' || selectAdjacentDays) && !isDateDisabled(dateObj.date) ? 0 : -1\"\n cCalendarDay\n >\n <div class=\"calendar-cell-inner\">\n {{ dateObj.date | calendarDay:dayFormat:locale }}\n </div>\n </td>\n } @else {\n <td class=\"calendar-cell\"></td>\n }\n }\n </tr>\n }\n\n }\n }\n\n </tbody>\n</table>\n\n", styles: [".btn-transparent:focus-visible{outline:-webkit-focus-ring-color auto 1px}.calendar-row:focus-visible{box-shadow:var(--cui-calendar-cell-focus-box-shadow);border-radius:.375rem}.calendar-row:focus-within:not([tabindex=\"-1\"]){outline:0;box-shadow:var(--cui-calendar-cell-focus-box-shadow);border-radius:.375rem;outline-style:auto!important}.calendar-row:focus:not([tabindex=\"-1\"]){outline:0;box-shadow:var(--cui-calendar-cell-focus-box-shadow);border-radius:.375rem;outline-style:auto!important}.calendar-cell:focus:not(:focus-visible):not([tabindex=\"-1\"]){box-shadow:var(--cui-calendar-cell-focus-box-shadow);border-radius:.375rem}\n"], dependencies: [{ kind: "directive", type: CalendarDayDirective, selector: "[cCalendarDay]", inputs: ["date", "disabled", "month", "calendarDate"], exportAs: ["cCalendarDay"] }, { kind: "pipe", type: CalendarDayPipe, name: "calendarDay" }, { kind: "pipe", type: CalendarDayTitlePipe, name: "calendarDayTitle" }, { kind: "directive", type: CalendarRowDirective, selector: "[cCalendarRow]", inputs: ["cCalendarRow"], exportAs: ["cCalendarRow"] }, { kind: "pipe", type: CalendarClassDayPipe, name: "calendarClassDay" }, { kind: "pipe", type: CalendarClassMonthPipe, name: "calendarClassMonth" }, { kind: "pipe", type: CalendarClassYearPipe, name: "calendarClassYear" }, { kind: "pipe", type: CalendarWeekdayPipe, name: "calendarWeekday" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
|
|
452
452
|
}
|
|
453
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.
|
|
453
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: CalendarMonthComponent, decorators: [{
|
|
454
454
|
type: Component,
|
|
455
455
|
args: [{ selector: 'c-calendar-month', exportAs: 'cCalendarMonth', standalone: true, imports: [
|
|
456
456
|
CalendarDayDirective,
|
|
@@ -463,13 +463,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
|
|
|
463
463
|
CalendarClassYearPipe,
|
|
464
464
|
CalendarWeekdayPipe,
|
|
465
465
|
NgClass,
|
|
466
|
-
NgForOf,
|
|
467
|
-
NgIf,
|
|
468
|
-
NgSwitch,
|
|
469
|
-
NgSwitchCase,
|
|
470
|
-
NgSwitchDefault,
|
|
471
466
|
AsyncPipe
|
|
472
|
-
], template: "<table>\n
|
|
467
|
+
], template: "<table>\n @if (view === 'days') {\n <thead>\n <tr>\n @if (showWeekNumber) {\n <th class=\"calendar-cell\">\n <div class=\"calendar-header-cell-inner\">{{ weekNumbersLabel }}</div>\n </th>\n }\n @for (weekDay of weekDays; track weekDay.date; let i = $index) {\n <th class=\"calendar-cell\">\n <div class=\"calendar-header-cell-inner\">\n {{ weekDay.date | calendarWeekday:weekdayFormat:locale }}\n </div>\n </th>\n }\n </tr>\n </thead>\n }\n <tbody (mouseleave)=\"handleCellMouseLeave()\">\n @switch (view) {\n @case ('years') {\n @for (yearsRow of listOfYears(); track yearsRow; let rowIdx = $index) {\n <tr>\n @for (year of yearsRow; track year; let idx = $index) {\n <td\n #calendarYear=\"cCalendarDay\"\n (click)=\"!calendarYear.disabled$() && handleYearCellClick(year)\"\n (keydown)=\"calendarYear.date && handleDayCellKeyDown($event, calendarYear.date)\"\n (keyup)=\"handleYearCellKeyUp($event, calendarYear.date)\"\n (mouseenter)=\"calendarYear.date && handleCellMouseEnter(calendarYear.date)\"\n [attr.aria-label]=\"calendarYear.date.getFullYear()\"\n [date]=\"getYearStart(year)\"\n [ngClass]=\"year | calendarClassYear\"\n [tabindex]=\"calendarYear.disabled$() ? -1 : 0\"\n cCalendarDay\n >\n <div class=\"calendar-cell-inner\">\n {{ yearNumber(year) }}\n </div>\n </td>\n }\n </tr>\n }\n }\n @case ('months') {\n @for (monthsRow of listOfMonths(); track monthsRow; let rowIdx = $index) {\n <tr>\n @for (month of monthsRow; track month; let idx = $index) {\n <td\n #calendarMonth=\"cCalendarDay\"\n (click)=\"!calendarMonth.disabled$() && handleMonthCellClick(calendarMonth.date)\"\n (keydown)=\"calendarMonth.date && handleDayCellKeyDown($event, calendarMonth.date)\"\n (keyup)=\"handleMonthCellKeyUp($event, calendarMonth.date)\"\n (mouseenter)=\"calendarMonth.date && handleCellMouseEnter(calendarMonth.date)\"\n [attr.aria-label]=\"calendarMonth.date.getFullYear()+' '+month.month\"\n [date]=\"getMonthStart(rowIdx*3+idx)\"\n [ngClass]=\"calendarDate | calendarClassMonth:(rowIdx*3+idx)\"\n [tabindex]=\"calendarMonth.disabled$() ? -1 : 0\"\n cCalendarDay\n >\n <div class=\"calendar-cell-inner\">\n {{ month.month }}\n </div>\n </td>\n }\n </tr>\n }\n\n }\n @default {\n @for (week of monthDetails; track week; let i = $index) {\n <tr #calendarRow=\"cCalendarRow\"\n (click)=\"selectionType === 'week' && (calendarRow.current) && calendarRow.date && handleDayCellClick(calendarRow.date)\"\n (keydown)=\"selectionType === 'week' && (calendarRow.current) && calendarRow.date && handleDayCellKeyDown($event, calendarRow.date)\"\n (keyup)=\"selectionType === 'week' && (calendarRow.current) && calendarRow.date && handleDayCellKeyUp($event, calendarRow.date)\"\n (mouseenter)=\"selectionType === 'week' && calendarRow.date && handleCellMouseEnter(calendarRow.date)\"\n [cCalendarRow]=\"week\"\n >\n @if (showWeekNumber) {\n <th class=\"calendar-cell-week-number\">\n {{ week.weekNumber === 0 ? 53 : week.weekNumber }}\n </th>\n }\n @for (dateObj of week.days; track dateObj.date; let idx = $index) {\n @if (dateObj.month === 'current' || showAdjacentDays) {\n <td #calendarCell=\"cCalendarDay\"\n (click)=\"selectionType === 'day' && (dateObj.month === 'current' || selectAdjacentDays) && handleDayCellClick(dateObj.date)\"\n (keydown)=\"selectionType === 'day' && (dateObj.month === 'current' || selectAdjacentDays) && handleDayCellKeyDown($event, dateObj.date)\"\n (keyup)=\"selectionType === 'day' && (dateObj.month === 'current' || selectAdjacentDays) && handleDayCellKeyUp($event, dateObj.date)\"\n (mouseenter)=\"selectionType === 'day' && (dateObj.month === 'current' || selectAdjacentDays) && handleCellMouseEnter(dateObj.date)\"\n [attr.aria-label]=\"dateObj.date | calendarDayTitle:locale\"\n [date]=\"dateObj.date\"\n [month]=\"dateObj.month\"\n [ngClass]=\"dateObj | calendarClassDay:{minDate, maxDate, disabledDates, dateFilter}\"\n [tabindex]=\"selectionType === 'day' && (dateObj.month === 'current' || selectAdjacentDays) && !isDateDisabled(dateObj.date) ? 0 : -1\"\n cCalendarDay\n >\n <div class=\"calendar-cell-inner\">\n {{ dateObj.date | calendarDay:dayFormat:locale }}\n </div>\n </td>\n } @else {\n <td class=\"calendar-cell\"></td>\n }\n }\n </tr>\n }\n\n }\n }\n\n </tbody>\n</table>\n\n", styles: [".btn-transparent:focus-visible{outline:-webkit-focus-ring-color auto 1px}.calendar-row:focus-visible{box-shadow:var(--cui-calendar-cell-focus-box-shadow);border-radius:.375rem}.calendar-row:focus-within:not([tabindex=\"-1\"]){outline:0;box-shadow:var(--cui-calendar-cell-focus-box-shadow);border-radius:.375rem;outline-style:auto!important}.calendar-row:focus:not([tabindex=\"-1\"]){outline:0;box-shadow:var(--cui-calendar-cell-focus-box-shadow);border-radius:.375rem;outline-style:auto!important}.calendar-cell:focus:not(:focus-visible):not([tabindex=\"-1\"]){box-shadow:var(--cui-calendar-cell-focus-box-shadow);border-radius:.375rem}\n"] }]
|
|
473
468
|
}], ctorParameters: () => [{ type: i1.CalendarService }], propDecorators: { addMonths: [{
|
|
474
469
|
type: Input
|
|
475
470
|
}], startDate: [{
|
|
@@ -503,4 +498,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
|
|
|
503
498
|
type: ViewChildren,
|
|
504
499
|
args: [CalendarRowDirective]
|
|
505
500
|
}] } });
|
|
506
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItbW9udGguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZXVpLWFuZ3VsYXIvc3JjL2xpYi9jYWxlbmRhci9jYWxlbmRhci1tb250aC9jYWxlbmRhci1tb250aC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JldWktYW5ndWxhci9zcmMvbGliL2NhbGVuZGFyL2NhbGVuZGFyLW1vbnRoL2NhbGVuZGFyLW1vbnRoLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsU0FBUyxFQUNULFFBQVEsRUFDUixVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFDTCxlQUFlLEVBR2YsTUFBTSxFQUNOLFlBQVksRUFFYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0csT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXRDLE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsbUJBQW1CLEVBQ25CLGVBQWUsRUFDZixjQUFjLEVBQ2QsUUFBUSxFQUNSLG1CQUFtQixFQUNuQixjQUFjLEVBQ2QscUJBQXFCLEVBQ3JCLE9BQU8sRUFDUixNQUFNLG1CQUFtQixDQUFDO0FBRzNCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3JF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LEVBQUUsZUFBZSxFQUFFO2dCQU9qQyxNQUFNO3NCQURULEtBQUs7Z0JBaUJrQyxLQUFLO3NCQUE1QyxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQU83QixhQUFhO3NCQUFyQixLQUFLO2dCQVFGLElBQUk7c0JBRFAsS0FBSztnQkFlRixPQUFPO3NCQURWLEtBQUs7Z0JBZUYsT0FBTztzQkFEVixLQUFLO2dCQXFCRixZQUFZO3NCQURmLEtBQUs7Z0JBZ0I4QixZQUFZO3NCQUEvQyxZQUFZO3VCQUFDLG9CQUFvQjtnQkFDRSxZQUFZO3NCQUEvQyxZQUFZO3VCQUFDLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGJvb2xlYW5BdHRyaWJ1dGUsXG4gIENvbXBvbmVudCxcbiAgY29tcHV0ZWQsXG4gIERlc3Ryb3lSZWYsXG4gIGluamVjdCxcbiAgSW5wdXQsXG4gIG51bWJlckF0dHJpYnV0ZSxcbiAgT25Jbml0LFxuICBRdWVyeUxpc3QsXG4gIHNpZ25hbCxcbiAgVmlld0NoaWxkcmVuLFxuICBXcml0YWJsZVNpZ25hbFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFzeW5jUGlwZSwgTmdDbGFzcywgTmdGb3JPZiwgTmdJZiwgTmdTd2l0Y2gsIE5nU3dpdGNoQ2FzZSwgTmdTd2l0Y2hEZWZhdWx0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7XG4gIGNvbnZlcnRUb0RhdGVPYmplY3QsXG4gIGNyZWF0ZUdyb3Vwc0luQXJyYXksXG4gIGdldE1vbnRoRGV0YWlscyxcbiAgZ2V0TW9udGhzTmFtZXMsXG4gIGdldFllYXJzLFxuICBpc0RhdGVCZXR3ZWVuTWluTWF4LFxuICBpc0RhdGVEaXNhYmxlZCxcbiAgaXNEYXRlSW5SYW5nZURpc2FibGVkLFxuICB0cnlEYXRlXG59IGZyb20gJy4uL2NhbGVuZGFyLnV0aWxzJztcblxuaW1wb3J0IHsgQ2FsZW5kYXJTZXJ2aWNlLCBEYXRlRmlsdGVyVHlwZSwgRGF5Rm9ybWF0VHlwZSwgU2VsZWN0aW9uVHlwZSwgV2Vla2RheUZvcm1hdFR5cGUgfSBmcm9tICcuLi9jYWxlbmRhci5zZXJ2aWNlJztcbmltcG9ydCB7IENhbGVuZGFyV2Vla2RheVBpcGUgfSBmcm9tICcuL2NhbGVuZGFyLXdlZWtkYXkucGlwZSc7XG5pbXBvcnQgeyBDYWxlbmRhckNsYXNzWWVhclBpcGUgfSBmcm9tICcuL2NhbGVuZGFyLWNsYXNzLXllYXIucGlwZSc7XG5pbXBvcnQgeyBDYWxlbmRhckNsYXNzTW9udGhQaXBlIH0gZnJvbSAnLi9jYWxlbmRhci1jbGFzcy1tb250aC5waXBlJztcbmltcG9ydCB7IENhbGVuZGFyRGF5UGlwZSB9IGZyb20gJy4vY2FsZW5kYXItZGF5LnBpcGUnO1xuaW1wb3J0IHsgQ2FsZW5kYXJEYXlEaXJlY3RpdmUgfSBmcm9tICcuL2NhbGVuZGFyLWRheS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQ2FsZW5kYXJEYXlUaXRsZVBpcGUgfSBmcm9tICcuL2NhbGVuZGFyLWRheS10aXRsZS5waXBlJztcbmltcG9ydCB7IENhbGVuZGFyQ2xhc3NEYXlQaXBlIH0gZnJvbSAnLi9jYWxlbmRhci1jbGFzcy1kYXkucGlwZSc7XG5pbXBvcnQgeyBDYWxlbmRhckNsYXNzUm93UGlwZSB9IGZyb20gJy4vY2FsZW5kYXItY2xhc3Mtcm93LnBpcGUnO1xuaW1wb3J0IHsgQ2FsZW5kYXJSb3dEaXJlY3RpdmUgfSBmcm9tICcuL2NhbGVuZGFyLXJvdy5kaXJlY3RpdmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjLWNhbGVuZGFyLW1vbnRoJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NhbGVuZGFyLW1vbnRoLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2FsZW5kYXItbW9udGguY29tcG9uZW50LnNjc3MnXSxcbiAgZXhwb3J0QXM6ICdjQ2FsZW5kYXJNb250aCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDYWxlbmRhckRheURpcmVjdGl2ZSxcbiAgICBDYWxlbmRhckRheVBpcGUsXG4gICAgQ2FsZW5kYXJEYXlUaXRsZVBpcGUsXG4gICAgQ2FsZW5kYXJSb3dEaXJlY3RpdmUsXG4gICAgQ2FsZW5kYXJDbGFzc0RheVBpcGUsXG4gICAgQ2FsZW5kYXJDbGFzc01vbnRoUGlwZSxcbiAgICBDYWxlbmRhckNsYXNzUm93UGlwZSxcbiAgICBDYWxlbmRhckNsYXNzWWVhclBpcGUsXG4gICAgQ2FsZW5kYXJXZWVrZGF5UGlwZSxcbiAgICBOZ0NsYXNzLFxuICAgIE5nRm9yT2YsXG4gICAgTmdJZixcbiAgICBOZ1N3aXRjaCxcbiAgICBOZ1N3aXRjaENhc2UsXG4gICAgTmdTd2l0Y2hEZWZhdWx0LFxuICAgIEFzeW5jUGlwZVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIENhbGVuZGFyTW9udGhDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gICNkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2FsZW5kYXJTZXJ2aWNlOiBDYWxlbmRhclNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5jYWxlbmRhclN0YXRlU3Vic2NyaWJlKCk7XG4gIH1cblxuICBASW5wdXQoKSBhZGRNb250aHM6IG51bWJlciA9IDA7XG5cbiAgLyoqXG4gICAqIEluaXRpYWwgc2VsZWN0ZWQgZGF0ZS5cbiAgICogQHR5cGUgIChEYXRlIHwgbnVsbClcbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBzdGFydERhdGUodmFsdWU6IERhdGUgfCBudW1iZXIgfCBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKSB7XG4gICAgY29uc3QgZGF0ZSA9ICEhdmFsdWUgPyB0cnlEYXRlKHZhbHVlLCAnc3RhcnREYXRlJykgOiBudWxsO1xuICAgIGlmICh0aGlzLl9zdGFydERhdGU/LmdldFRpbWUoKSAhPT0gZGF0ZT8uZ2V0VGltZSgpKSB7XG4gICAgICB0aGlzLl9zdGFydERhdGUgPSBkYXRlO1xuICAgICAgdGhpcy5jYWxlbmRhclNlcnZpY2UudXBkYXRlKHsgc3RhcnREYXRlOiB0aGlzLl9zdGFydERhdGUgfSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHN0YXJ0RGF0ZSgpOiBEYXRlIHwgbnVsbCB7XG4gICAgcmV0dXJuIDxEYXRlIHwgbnVsbD50aGlzLl9zdGFydERhdGU7XG4gIH1cblxuICBfc3RhcnREYXRlOiBEYXRlIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIEluaXRpYWwgc2VsZWN0ZWQgdG8gZGF0ZSAocmFuZ2UpLlxuICAgKiBAdHlwZSAgRGF0ZSB8IG51bGxcbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBlbmREYXRlKHZhbHVlOiBEYXRlIHwgbnVtYmVyIHwgc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuICAgIGNvbnN0IGRhdGUgPSAhIXZhbHVlID8gdHJ5RGF0ZSh2YWx1ZSwgJ2VuZERhdGUnKSA6IG51bGw7XG4gICAgaWYgKHRoaXMuX2VuZERhdGU/LmdldFRpbWUoKSAhPT0gZGF0ZT8uZ2V0VGltZSgpKSB7XG4gICAgICB0aGlzLl9lbmREYXRlID0gZGF0ZTtcbiAgICAgIHRoaXMuY2FsZW5kYXJTZXJ2aWNlLnVwZGF0ZSh7IGVuZERhdGU6IHRoaXMuX2VuZERhdGUgfSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGVuZERhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2VuZERhdGU7XG4gIH1cblxuICBfZW5kRGF0ZTogKERhdGUgfCBudWxsKSA9IG51bGw7XG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgdGhlIGxpc3Qgb2YgZGF0ZXMgdGhhdCBjYW5ub3QgYmUgc2VsZWN0ZWQuXG4gICAqIEB0eXBlICBEYXRlW10gfCBEYXRlW11bXVxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IGRpc2FibGVkRGF0ZXModmFsdWU6IERhdGVbXSB8IERhdGVbXVtdKSB7XG4gICAgdGhpcy5fZGlzYWJsZWREYXRlcyA9IHZhbHVlO1xuICB9XG5cbiAgZ2V0IGRpc2FibGVkRGF0ZXMoKTogRGF0ZVtdIHwgRGF0ZVtdW10ge1xuICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZERhdGVzO1xuICB9XG5cbiAgcHJpdmF0ZSBfZGlzYWJsZWREYXRlczogKERhdGVbXSB8IERhdGVbXVtdKSA9IFtdO1xuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBkYXkgb2Ygc3RhcnQgd2Vlay5cbiAgICogLSAwIC0gU3VuZGF5LFxuICAgKiAtIDEgLSBNb25kYXksXG4gICAqIC0gMiAtIFR1ZXNkYXksXG4gICAqIC0gMyAtIFdlZG5lc2RheSxcbiAgICogLSA0IC0gVGh1cnNkYXksXG4gICAqIC0gNSAtIEZyaWRheSxcbiAgICogLSA2IC0gU2F0dXJkYXksXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KSBmaXJzdERheU9mV2VlazogbnVtYmVyID0gMTtcblxuICAvKipcbiAgICogU2V0cyB0aGUgZGVmYXVsdCBsb2NhbGUgZm9yIGNvbXBvbmVudHMuIElmIG5vdCBzZXQsIGl0IGlzIGluaGVyaXRlZCBmcm9tIHRoZSBicm93c2VyLlxuICAgKiBAZGVmYXVsdCAnZGVmYXVsdCdcbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBsb2NhbGUodmFsdWUpIHtcbiAgICB0aGlzLiNsb2NhbGUuc2V0KHZhbHVlKTtcbiAgICAvLyB0aGlzLmxpc3RPZk1vbnRocyA9IGNyZWF0ZUdyb3Vwc0luQXJyYXkoZ2V0TW9udGhzTmFtZXModmFsdWUpLCA0KTtcbiAgfVxuXG4gIGdldCBsb2NhbGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuI2xvY2FsZSgpO1xuICB9XG5cbiAgI2xvY2FsZSA9IHNpZ25hbCgnZGVmYXVsdCcpO1xuXG4gIC8qKlxuICAgKiBBbGxvdyByYW5nZSBzZWxlY3Rpb24uXG4gICAqIEB0eXBlIGJvb2xlYW5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSByYW5nZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBTZXQgbGVuZ3RoIG9yIGZvcm1hdCBvZiBkYXkgbmFtZS5cbiAgICogQHR5cGUgbnVtYmVyIHwgJ2xvbmcnIHwgJ25hcnJvdycgfCAnc2hvcnQnXG4gICAqIEBkZWZhdWx0ICdzaG9ydCdcbiAgICovXG4gIEBJbnB1dCgpIHdlZWtkYXlGb3JtYXQ6IFdlZWtkYXlGb3JtYXRUeXBlID0gJ3Nob3J0JztcblxuICAvKipcbiAgICogU2V0IGNhbGVuZGFyIHZpZXcuXG4gICAqIEB0eXBlICdkYXlzJyB8ICdtb250aHMnIHwgJ3llYXJzJ1xuICAgKiBAZGVmYXVsdCAnZGF5cydcbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCB2aWV3KHZhbHVlKSB7XG4gICAgdGhpcy4jdmlldy5zZXQodmFsdWUpO1xuICB9XG5cbiAgZ2V0IHZpZXcoKSB7XG4gICAgcmV0dXJuIHRoaXMuI3ZpZXcoKTtcbiAgfVxuXG4gICN2aWV3ID0gc2lnbmFsPCdkYXlzJyB8ICdtb250aHMnIHwgJ3llYXJzJz4oJ2RheXMnKTtcblxuICAvKipcbiAgICogTWF4IHNlbGVjdGFibGUgZGF0ZS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBtYXhEYXRlKHZhbHVlOiBEYXRlIHwgbnVsbCkge1xuICAgIHRoaXMuX21heERhdGUgPSB2YWx1ZSA/IHRyeURhdGUodmFsdWUsICdtYXhEYXRlJykgOiBudWxsO1xuICB9XG5cbiAgZ2V0IG1heERhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX21heERhdGU7XG4gIH1cblxuICBwcml2YXRlIF9tYXhEYXRlOiBEYXRlIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIE1pbiBzZWxlY3RhYmxlIGRhdGUuXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgbWluRGF0ZSh2YWx1ZTogRGF0ZSB8IG51bGwpIHtcbiAgICB0aGlzLl9taW5EYXRlID0gdmFsdWUgPyB0cnlEYXRlKHZhbHVlLCAnbWluRGF0ZScpIDogbnVsbDtcbiAgfVxuXG4gIGdldCBtaW5EYXRlKCkge1xuICAgIHJldHVybiB0aGlzLl9taW5EYXRlO1xuICB9XG5cbiAgcHJpdmF0ZSBfbWluRGF0ZTogRGF0ZSB8IG51bGwgPSBudWxsO1xuXG4gIGxpc3RPZk1vbnRocyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gY3JlYXRlR3JvdXBzSW5BcnJheShnZXRNb250aHNOYW1lcyh0aGlzLiNsb2NhbGUoKSwgdGhpcy5jYWxlbmRhckRhdGUkJCgpLmdldEZ1bGxZZWFyKCkpLCA0KTtcbiAgfSk7XG4gIGxpc3RPZlllYXJzID0gY29tcHV0ZWQoKCkgPT4gY3JlYXRlR3JvdXBzSW5BcnJheShnZXRZZWFycyh0aGlzLmNhbGVuZGFyRGF0ZSQkKCkuZ2V0RnVsbFllYXIoKSksIDQpKTtcblxuICAvKipcbiAgICogRGVmYXVsdCBkYXRlIG9mIHRoZSBjb21wb25lbnRcbiAgICogQHR5cGUgRGF0ZVxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IGNhbGVuZGFyRGF0ZSh2YWx1ZTogKERhdGUgfCBzdHJpbmcgfCBudW1iZXIpKSB7XG4gICAgY29uc3QgX3ZhbHVlID0gbmV3IERhdGUodHJ5RGF0ZSgodmFsdWUgPz8gdGhpcy5zdGFydERhdGUpLCAnY2FsZW5kYXJEYXRlJykpO1xuICAgIGlmICghIV92YWx1ZSAmJiB0aGlzLmNhbGVuZGFyRGF0ZSQkKCkuZ2V0VGltZSgpICE9PSBfdmFsdWUuZ2V0VGltZSgpKSB7XG4gICAgICB0aGlzLmNhbGVuZGFyRGF0ZSQkLnNldChuZXcgRGF0ZShuZXcgRGF0ZShfdmFsdWUuc2V0RGF0ZSgxKSkuc2V0SG91cnMoMCwgMCwgMCwgMCkpKTtcbiAgICAgIHRoaXMuc2V0TW9udGhEZXRhaWxzKHRoaXMuZGF0ZSk7XG4gICAgICB0aGlzLmNhbGVuZGFyU2VydmljZS51cGRhdGUoeyBjYWxlbmRhckRhdGU6IHRoaXMuY2FsZW5kYXJEYXRlJCQoKSB9KTtcbiAgICB9XG4gIH1cblxuICBnZXQgY2FsZW5kYXJEYXRlKCk6IERhdGUge1xuICAgIHJldHVybiA8RGF0ZT50aGlzLmNhbGVuZGFyRGF0ZSQkKCkgYXMgRGF0ZTtcbiAgfVxuXG4gIGNhbGVuZGFyRGF0ZSQkID0gc2lnbmFsPERhdGU+KG5ldyBEYXRlKCkpO1xuXG4gIEBWaWV3Q2hpbGRyZW4oQ2FsZW5kYXJEYXlEaXJlY3RpdmUpIGNhbGVuZGFyRGF5cyE6IFF1ZXJ5TGlzdDxDYWxlbmRhckRheURpcmVjdGl2ZT47XG4gIEBWaWV3Q2hpbGRyZW4oQ2FsZW5kYXJSb3dEaXJlY3RpdmUpIGNhbGVuZGFyUm93cyE6IFF1ZXJ5TGlzdDxDYWxlbmRhclJvd0RpcmVjdGl2ZT47XG5cbiAgZGF0ZUZpbHRlciE6IERhdGVGaWx0ZXJUeXBlO1xuXG4gIGdldCBkYXRlKCkge1xuICAgIHJldHVybiBuZXcgRGF0ZSh0aGlzLmNhbGVuZGFyRGF0ZT8uZ2V0RnVsbFllYXIoKSwgdGhpcy5jYWxlbmRhckRhdGU/LmdldE1vbnRoKCkgKyB0aGlzLmFkZE1vbnRocyk7XG4gIH1cblxuICBkYXlGb3JtYXQhOiBEYXlGb3JtYXRUeXBlO1xuICBzZWxlY3RBZGphY2VudERheXMhOiBib29sZWFuO1xuICBzaG93QWRqYWNlbnREYXlzITogYm9vbGVhbjtcblxuICBzZXQgc2VsZWN0aW9uVHlwZSh2YWx1ZTogU2VsZWN0aW9uVHlwZSkge1xuICAgIHRoaXMuI3NlbGVjdGlvblR5cGUuc2V0KHZhbHVlKTtcbiAgfVxuXG4gIGdldCBzZWxlY3Rpb25UeXBlKCkge1xuICAgIHJldHVybiB0aGlzLiNzZWxlY3Rpb25UeXBlKCk7XG4gIH1cblxuICAjc2VsZWN0aW9uVHlwZTogV3JpdGFibGVTaWduYWw8U2VsZWN0aW9uVHlwZT4gPSBzaWduYWwoJ21vbnRoJyk7XG5cbiAgc2hvd1dlZWtOdW1iZXI6IGJvb2xlYW4gPSB0cnVlO1xuICAvLyBzZXQgc2hvd1dlZWtOdW1iZXIodmFsdWU6IGJvb2xlYW4pIHtcbiAgLy8gICB0aGlzLiNzaG93V2Vla051bWJlciQkLnNldCh2YWx1ZSk7XG4gIC8vIH1cbiAgLy9cbiAgLy8gZ2V0IHNob3dXZWVrTnVtYmVyKCkge1xuICAvLyAgIHJldHVybiB0aGlzLiNzaG93V2Vla051bWJlciQkKCk7XG4gIC8vIH1cbiAgLy9cbiAgLy8gI3Nob3dXZWVrTnVtYmVyJCQ6IFdyaXRhYmxlU2lnbmFsPGJvb2xlYW4+ID0gc2lnbmFsKGZhbHNlKTtcbiAgLy8gc2hvd1dlZWtOdW1iZXIkJCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuI3NlbGVjdGlvblR5cGUoKSA9PT0gJ3dlZWsnIHx8IHRoaXMuI3Nob3dXZWVrTnVtYmVyJCQoKSk7XG5cbiAgd2Vla051bWJlcnNMYWJlbCE6IHN0cmluZztcblxuICBwcml2YXRlIF9tb250aERldGFpbHMhOiB7IHdlZWtOdW1iZXI6IG51bWJlcjsgZGF5czogeyBkYXRlOiBEYXRlOyBtb250aDogc3RyaW5nOyB9W107IH1bXTtcblxuICBnZXQgbW9udGhEZXRhaWxzKCkge1xuICAgIHJldHVybiB0aGlzLl9tb250aERldGFpbHM7XG4gIH1cblxuICBnZXQgd2Vla0RheXMoKSB7XG4gICAgcmV0dXJuIHRoaXMubW9udGhEZXRhaWxzWzBdLmRheXM7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNldE1vbnRoRGV0YWlscyh0aGlzLmRhdGUpO1xuICB9XG5cbiAgc2V0TW9udGhEZXRhaWxzKGRhdGU6IERhdGUgPSB0aGlzLmRhdGUpIHtcbiAgICB0aGlzLl9tb250aERldGFpbHMgPSBnZXRNb250aERldGFpbHMoXG4gICAgICBkYXRlLmdldEZ1bGxZZWFyKCksXG4gICAgICBkYXRlLmdldE1vbnRoKCksXG4gICAgICB0aGlzLmZpcnN0RGF5T2ZXZWVrXG4gICAgKTtcbiAgfVxuXG4gIHllYXJOdW1iZXIoeWVhcjogYW55KSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKHllYXIsIDApLnRvTG9jYWxlRGF0ZVN0cmluZyh0aGlzLmxvY2FsZSwgeyB5ZWFyOiAnbnVtZXJpYycgfSk7XG4gIH1cblxuICBpc0RhdGVEaXNhYmxlZChkYXRlOiBEYXRlKSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uVHlwZSA9PT0gJ3llYXInKSB7XG4gICAgICBjb25zdCBtaW5EYXRlID0gdGhpcy5taW5EYXRlID8gbmV3IERhdGUodGhpcy5taW5EYXRlLmdldEZ1bGxZZWFyKCksIDAsIDEsIDAsIDAsIDAsIDApIDogbnVsbDtcbiAgICAgIGNvbnN0IG1heERhdGUgPSB0aGlzLm1heERhdGUgPyBuZXcgRGF0ZSh0aGlzLm1heERhdGUuZ2V0RnVsbFllYXIoKSwgMTEsIDMxLCAwLCAwLCAwLCAwKSA6IG51bGw7XG4gICAgICByZXR1cm4gaXNEYXRlRGlzYWJsZWQoZGF0ZSwgbWluRGF0ZSwgbWF4RGF0ZSwgdGhpcy5kaXNhYmxlZERhdGVzKSB8fCAodGhpcy5kYXRlRmlsdGVyID8gIXRoaXMuZGF0ZUZpbHRlcihkYXRlKSA6IGZhbHNlKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uVHlwZSA9PT0gJ21vbnRoJykge1xuICAgICAgY29uc3QgbWluRGF0ZSA9IHRoaXMubWluRGF0ZSA/IG5ldyBEYXRlKHRoaXMubWluRGF0ZS5nZXRGdWxsWWVhcigpLCB0aGlzLm1pbkRhdGUuZ2V0TW9udGgoKSwgMSwgMCwgMCwgMCwgMCkgOiBudWxsO1xuICAgICAgY29uc3QgbWF4RGF0ZSA9IHRoaXMubWF4RGF0ZSA/IG5ldyBEYXRlKHRoaXMubWF4RGF0ZS5nZXRGdWxsWWVhcigpLCB0aGlzLm1heERhdGUuZ2V0TW9udGgoKSArIDEsIDEsIDAsIDAsIC0xLCAwKSA6IG51bGw7XG4gICAgICByZXR1cm4gaXNEYXRlRGlzYWJsZWQoZGF0ZSwgbWluRGF0ZSwgbWF4RGF0ZSwgdGhpcy5kaXNhYmxlZERhdGVzKSB8fCAodGhpcy5kYXRlRmlsdGVyID8gIXRoaXMuZGF0ZUZpbHRlcihkYXRlKSA6IGZhbHNlKTtcbiAgICB9XG4gICAgcmV0dXJuIGlzRGF0ZURpc2FibGVkKGRhdGUsIHRoaXMubWluRGF0ZSwgdGhpcy5tYXhEYXRlLCB0aGlzLmRpc2FibGVkRGF0ZXMpIHx8ICh0aGlzLmRhdGVGaWx0ZXIgPyAhdGhpcy5kYXRlRmlsdGVyKGRhdGUpIDogZmFsc2UpO1xuICB9XG5cbiAgY2FsZW5kYXJDZWxsVGl0bGUoZGF0ZTogRGF0ZSkge1xuICAgIHJldHVybiBkYXRlLnRvTG9jYWxlRGF0ZVN0cmluZyh0aGlzLmxvY2FsZSk7XG4gIH1cblxuICBoYW5kbGVDZWxsTW91c2VFbnRlcihob3ZlckRhdGU6IERhdGUpIHtcbiAgICBjb25zdCB1cGRhdGVIb3ZlclZhbHVlID0gKFsnZGF5JywgJ3dlZWsnXS5pbmNsdWRlcyh0aGlzLnNlbGVjdGlvblR5cGUpICYmIHRoaXMudmlldyA9PT0gJ2RheXMnKSB8fFxuICAgICAgWydtb250aCddLmluY2x1ZGVzKHRoaXMuc2VsZWN0aW9uVHlwZSkgJiYgdGhpcy52aWV3ID09PSAnbW9udGhzJyB8fFxuICAgICAgWyd5ZWFyJ10uaW5jbHVkZXModGhpcy5zZWxlY3Rpb25UeXBlKSAmJiB0aGlzLnZpZXcgPT09ICd5ZWFycyc7XG5cbiAgICAvLyBpZiAodXBkYXRlSG92ZXJWYWx1ZSkge1xuICAgIGNvbnN0IGhvdmVyVmFsdWUgPSB0aGlzLmlzRGF0ZURpc2FibGVkKGhvdmVyRGF0ZSkgfHwgIXVwZGF0ZUhvdmVyVmFsdWUgPyBudWxsIDogaG92ZXJEYXRlO1xuICAgIHRoaXMuY2FsZW5kYXJTZXJ2aWNlLnVwZGF0ZSh7IGhvdmVyRGF0ZTogaG92ZXJWYWx1ZSB9KTtcbiAgICAvLyB9XG4gIH1cblxuICBoYW5kbGVZZWFyQ2VsbENsaWNrKHllYXI6IG51bWJlcikge1xuICAgIGlmICh0aGlzLnNlbGVjdGlvblR5cGUgPT09ICd5ZWFyJykge1xuICAgICAgbGV0IGRhdGUgPSBuZXcgRGF0ZSh5ZWFyLCAwLCAxLCAwLCAwLCAwLCAwKTtcbiAgICAgIGlmICh0aGlzLnJhbmdlICYmIHRoaXMuc3RhcnREYXRlICYmICF0aGlzLmVuZERhdGUpIHtcbiAgICAgICAgZGF0ZSA9IG5ldyBEYXRlKGRhdGUuZ2V0RnVsbFllYXIoKSwgMTIsIDEsIDAsIDAsIC0xLCAwKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuaGFuZGxlRGF5Q2VsbENsaWNrKGRhdGUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBjYWxlbmRhckRhdGUgPSBuZXcgRGF0ZSh5ZWFyLCAwLCAxLCAwLCAwLCAwLCAwKTtcbiAgICB0aGlzLnZpZXcgPSAnbW9udGhzJztcbiAgICB0aGlzLmNhbGVuZGFyU2VydmljZS51cGRhdGUoeyB2aWV3OiB0aGlzLnZpZXcsIGNhbGVuZGFyRGF0ZTogY2FsZW5kYXJEYXRlIH0pO1xuXG4gIH1cblxuICBoYW5kbGVZZWFyQ2VsbEtleVVwKCRldmVudDogS2V5Ym9hcmRFdmVudCwgZGF0ZTogRGF0ZSkge1xuICAgIGlmIChbJ1NwYWNlJywgJ0VudGVyJ10uaW5jbHVkZXMoJGV2ZW50LmNvZGUpKSB7XG4gICAgICB0aGlzLmhhbmRsZVllYXJDZWxsQ2xpY2soZGF0ZS5nZXRGdWxsWWVhcigpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKFsnVGFiJywgJ0Fycm93UmlnaHQnLCAnQXJyb3dMZWZ0JywgJ0Fycm93VXAnLCAnQXJyb3dEb3duJ10uaW5jbHVkZXMoJGV2ZW50LmNvZGUpKSB7XG4gICAgICB0aGlzLmhhbmRsZUNlbGxNb3VzZUVudGVyKG5ldyBEYXRlKGRhdGUpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVNb250aENlbGxLZXlVcCgkZXZlbnQ6IEtleWJvYXJkRXZlbnQsIGRhdGU6IERhdGUpIHtcbiAgICBpZiAoWydTcGFjZScsICdFbnRlciddLmluY2x1ZGVzKCRldmVudC5jb2RlKSkge1xuICAgICAgdGhpcy5oYW5kbGVNb250aENlbGxDbGljayhkYXRlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKFsnVGFiJywgJ0Fycm93UmlnaHQnLCAnQXJyb3dMZWZ0JywgJ0Fycm93VXAnLCAnQXJyb3dEb3duJ10uaW5jbHVkZXMoJGV2ZW50LmNvZGUpKSB7XG4gICAgICB0aGlzLmhhbmRsZUNlbGxNb3VzZUVudGVyKGRhdGUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZU1vbnRoQ2VsbENsaWNrKHZhbHVlOiBEYXRlKSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uVHlwZSA9PT0gJ21vbnRoJykge1xuICAgICAgbGV0IGRhdGUgPSBuZXcgRGF0ZSh2YWx1ZS5nZXRGdWxsWWVhcigpLCB2YWx1ZS5nZXRNb250aCgpLCAxLCAwLCAwLCAwLCAwKTtcbiAgICAgIGlmICh0aGlzLnJhbmdlICYmIHRoaXMuc3RhcnREYXRlICYmICF0aGlzLmVuZERhdGUpIHtcbiAgICAgICAgZGF0ZSA9IG5ldyBEYXRlKGRhdGUuZ2V0RnVsbFllYXIoKSwgZGF0ZS5nZXRNb250aCgpICsgMSwgMSwgMCwgMCwgLTEsIDApO1xuICAgICAgfVxuICAgICAgdGhpcy5oYW5kbGVEYXlDZWxsQ2xpY2soZGF0ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zZXRDYWxlbmRhclBhZ2UoMCwgMCwgdmFsdWUuZ2V0TW9udGgoKSAtIHRoaXMuYWRkTW9udGhzKTtcbiAgICB0aGlzLnZpZXcgPSAnZGF5cyc7XG4gICAgdGhpcy5jYWxlbmRhclNlcnZpY2UudXBkYXRlKHsgdmlldzogdGhpcy52aWV3IH0pO1xuICB9XG5cbiAgc2V0Q2FsZW5kYXJQYWdlKHllYXJzOiBudW1iZXIsIG1vbnRocyA9IDAsIHNldE1vbnRoPzogbnVtYmVyKSB7XG4gICAgY29uc3QgeWVhciA9IHRoaXMuZGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgIGNvbnN0IG1vbnRoID0gdGhpcy5kYXRlLmdldE1vbnRoKCk7XG4gICAgY29uc3QgZCA9IG5ldyBEYXRlKHllYXIsIG1vbnRoLCAxLCAwLCAwLCAwLCAwKTtcblxuICAgIHllYXJzICYmIGQuc2V0RnVsbFllYXIoZC5nZXRGdWxsWWVhcigpICsgeWVhcnMpO1xuICAgIG1vbnRocyAmJiBkLnNldE1vbnRoKGQuZ2V0TW9udGgoKSArIG1vbnRocyk7XG4gICAgdHlwZW9mIHNldE1vbnRoID09PSAnbnVtYmVyJyAmJiBkLnNldE1vbnRoKHNldE1vbnRoKTtcblxuICAgIHRoaXMuY2FsZW5kYXJTZXJ2aWNlLnVwZGF0ZSh7IGNhbGVuZGFyRGF0ZTogZCB9KTtcbiAgfVxuXG4gIGhhbmRsZURheUNlbGxLZXlEb3duKCRldmVudDogS2V5Ym9hcmRFdmVudCwgZGF0ZTogRGF0ZSkge1xuXG4gICAgaWYgKCFbJ1RhYicsICdBcnJvd1JpZ2h0JywgJ0Fycm93TGVmdCcsICdBcnJvd1VwJywgJ0Fycm93RG93biddLmluY2x1ZGVzKCRldmVudC5jb2RlKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLmhhbmRsZUNlbGxNb3VzZUVudGVyKGRhdGUpO1xuXG4gICAgY29uc3QgZXZlbnRLZXkgPSAkZXZlbnQua2V5ID09PSAnVGFiJyA/ICgkZXZlbnQuc2hpZnRLZXkgPyAnQXJyb3dMZWZ0JyA6ICdBcnJvd1JpZ2h0JykgOiAkZXZlbnQua2V5O1xuXG4gICAgaWYgKHRoaXMubWF4RGF0ZSAmJiBkYXRlID49IGNvbnZlcnRUb0RhdGVPYmplY3QodGhpcy5tYXhEYXRlLCB0aGlzLnNlbGVjdGlvblR5cGUpICYmIChbJ0Fycm93UmlnaHQnLCAnQXJyb3dEb3duJ10uaW5jbHVkZXMoZXZlbnRLZXkpKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5taW5EYXRlICYmIGRhdGUgPD0gY29udmVydFRvRGF0ZU9iamVjdCh0aGlzLm1pbkRhdGUsIHRoaXMuc2VsZWN0aW9uVHlwZSkgJiYgKFsnQXJyb3dMZWZ0JywgJ0Fycm93VXAnXS5pbmNsdWRlcyhldmVudEtleSkpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IGVsZW1lbnQgPSAkZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuXG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uVHlwZSA9PT0gJ3dlZWsnICYmIHRoaXMudmlldyA9PT0gJ2RheXMnICYmIGVsZW1lbnQudGFiSW5kZXggPT09IC0xKSB7XG4gICAgICBlbGVtZW50ID0gZWxlbWVudC5jbG9zZXN0KCd0clt0YWJpbmRleD1cIjBcIl0nKSBhcyBIVE1MRWxlbWVudDtcbiAgICB9XG5cbiAgICBjb25zdCBlbGVtZW50cyA9IFsnd2VlayddLmluY2x1ZGVzKHRoaXMuc2VsZWN0aW9uVHlwZSkgJiYgdGhpcy52aWV3ID09PSAnZGF5cycgPyB0aGlzLmNhbGVuZGFyUm93cyA6IHRoaXMuY2FsZW5kYXJEYXlzO1xuXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IGxpc3QgPSBlbGVtZW50cy50b0FycmF5KClcbiAgICAgIC5tYXAoY2FsZW5kYXJDZWxsID0+IGNhbGVuZGFyQ2VsbC5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpXG4gICAgICAvLyAuZmlsdGVyKChlbGVtZW50KSA9PiB0aGlzLnNlbGVjdGlvblR5cGUgPT09ICd3ZWVrJyA/IGVsZW1lbnQ/LnRhYkluZGV4ID09PSAwIDogZWxlbWVudD8uY2xhc3NMaXN0LmNvbnRhaW5zKCdjdXJyZW50JykpXG4gICAgICAuZmlsdGVyKChlbGVtZW50KSA9PiBlbGVtZW50Py50YWJJbmRleCA9PT0gMCk7XG5cbiAgICBjb25zdCBpbmRleCA9IGxpc3QuaW5kZXhPZihlbGVtZW50KTtcbiAgICBjb25zdCBmaXJzdCA9IGluZGV4ID09PSAwO1xuICAgIGNvbnN0IGxhc3QgPSBpbmRleCA9PT0gbGlzdC5sZW5ndGggLSAxO1xuXG4gICAgY29uc3QgdG9Cb3VuZGFyeSA9IHtcbiAgICAgIHN0YXJ0OiBpbmRleCxcbiAgICAgIGVuZDogbGlzdC5sZW5ndGggLSAoaW5kZXggKyAxKVxuICAgIH07XG5cbiAgICBjb25zdCBnYXAgPSB7XG4gICAgICBBcnJvd1JpZ2h0OiAxLFxuICAgICAgQXJyb3dMZWZ0OiAtMSxcbiAgICAgIEFycm93VXA6IHRoaXMuc2VsZWN0aW9uVHlwZSA9PT0gJ3dlZWsnICYmIHRoaXMudmlldyA9PT0gJ2RheXMnID8gLTEgOiB0aGlzLnZpZXcgPT09ICdkYXlzJyA/IC03IDogLTMsXG4gICAgICBBcnJvd0Rvd246IHRoaXMuc2VsZWN0aW9uVHlwZSA9PT0gJ3dlZWsnICYmIHRoaXMudmlldyA9PT0gJ2RheXMnID8gMSA6IHRoaXMudmlldyA9PT0gJ2RheXMnID8gNyA6IDNcbiAgICB9O1xuXG4gICAgaWYgKFxuICAgICAgKGV2ZW50S2V5ID09PSAnQXJyb3dSaWdodCcgJiYgbGFzdCkgfHxcbiAgICAgIChldmVudEtleSA9PT0gJ0Fycm93RG93bicgJiYgdG9Cb3VuZGFyeS5lbmQgPCBnYXAuQXJyb3dEb3duKSB8fFxuICAgICAgKGV2ZW50S2V5ID09PSAnQXJyb3dMZWZ0JyAmJiBmaXJzdCkgfHxcbiAgICAgIChldmVudEtleSA9PT0gJ0Fycm93VXAnICYmIHRvQm91bmRhcnkuc3RhcnQgPCBNYXRoLmFicyhnYXAuQXJyb3dVcCkpXG4gICAgKSB7XG5cbiAgICAgIGVsZW1lbnRzLmNoYW5nZXMucGlwZShcbiAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuI2Rlc3Ryb3lSZWYpXG4gICAgICApLnN1YnNjcmliZSgoY2hhbmdlOiBRdWVyeUxpc3Q8Q2FsZW5kYXJSb3dEaXJlY3RpdmUgfCBDYWxlbmRhckRheURpcmVjdGl2ZT4pID0+IHtcblxuICAgICAgICBjb25zdCBfbGlzdCA9IGNoYW5nZVxuICAgICAgICAgIC50b0FycmF5KClcbiAgICAgICAgICAvLyAuZmlsdGVyKGVsZW1lbnQgPT4gdGhpcy5zZWxlY3Rpb25UeXBlID09PSAnd2VlaycgPyBlbGVtZW50Py5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQudGFiSW5kZXggPT09IDAgOiBlbGVtZW50Py5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCdjdXJyZW50JykpO1xuICAgICAgICAgIC5maWx0ZXIoZWxlbWVudCA9PiBlbGVtZW50Py5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQudGFiSW5kZXggPT09IDApO1xuXG4gICAgICAgIGlmIChfbGlzdC5sZW5ndGgpIHtcbiAgICAgICAgICBsZXQgZGF5VG9Gb2N1czogQ2FsZW5kYXJEYXlEaXJlY3RpdmUgfCBDYWxlbmRhclJvd0RpcmVjdGl2ZSB8IHVuZGVmaW5lZDtcbiAgICAgICAgICBzd2l0Y2ggKGV2ZW50S2V5KSB7XG4gICAgICAgICAgICBjYXNlICdBcnJvd1JpZ2h0Jzoge1xuICAgICAgICAgICAgICBkYXlUb0ZvY3VzID0gX2xpc3RbMF07XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAnQXJyb3dMZWZ0Jzoge1xuICAgICAgICAgICAgICBkYXlUb0ZvY3VzID0gX2xpc3RbX2xpc3QubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAnQXJyb3dEb3duJzoge1xuICAgICAgICAgICAgICBkYXlUb0ZvY3VzID0gX2xpc3RbZ2FwLkFycm93RG93biAtIChsaXN0Lmxlbmd0aCAtIGluZGV4KV07XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAnQXJyb3dVcCc6IHtcbiAgICAgICAgICAgICAgZGF5VG9Gb2N1cyA9IF9saXN0W19saXN0Lmxlbmd0aCAtIChNYXRoLmFicyhnYXAuQXJyb3dVcCkgKyAxIC0gKGluZGV4ICsgMSkpXTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghZGF5VG9Gb2N1cz8uZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdkYXlUb0ZvY3VzJywgZGF5VG9Gb2N1cz8uZGF0ZSk7XG4gICAgICAgICAgICBkYXlUb0ZvY3VzPy5mb2N1cygna2V5Ym9hcmQnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBpZiAodGhpcy52aWV3ID09PSAnZGF5cycpIHtcbiAgICAgICAgdGhpcy5zZXRDYWxlbmRhclBhZ2UoMCwgWydBcnJvd1JpZ2h0JywgJ0Fycm93RG93biddLmluY2x1ZGVzKGV2ZW50S2V5KSA/IDEgOiAtMSk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy52aWV3ID09PSAnbW9udGhzJykge1xuICAgICAgICB0aGlzLnNldENhbGVuZGFyUGFnZShbJ0Fycm93UmlnaHQnLCAnQXJyb3dEb3duJ10uaW5jbHVkZXMoZXZlbnRLZXkpID8gMSA6IC0xKTtcbiAgICAgICAgLy8gdGhpcy5jYWxlbmRhckRheXM/LnJlc2V0KHRoaXMuY2FsZW5kYXJEYXlzLnRvQXJyYXkoKSk7XG4gICAgICAgIC8vIHRoaXMuY2FsZW5kYXJEYXlzPy5ub3RpZnlPbkNoYW5nZXMoKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLnZpZXcgPT09ICd5ZWFycycpIHtcbiAgICAgICAgdGhpcy5zZXRDYWxlbmRhclBhZ2UoWydBcnJvd1JpZ2h0JywgJ0Fycm93RG93biddLmluY2x1ZGVzKGV2ZW50S2V5KSA/IDEyIDogLTEyKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCBuZXh0RWxlbWVudCA9IGxpc3RbaW5kZXggKyBnYXBbZXZlbnRLZXldXTtcbiAgICBpZiAobmV4dEVsZW1lbnQ/LnRhYkluZGV4ID09PSAwKSB7XG4gICAgICBuZXh0RWxlbWVudC5mb2N1cygpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSBpbmRleDsgaSA8IGxpc3QubGVuZ3RoOyBsaXN0Lmxlbmd0aCAmJiBbJ0Fycm93UmlnaHQnLCAnQXJyb3dEb3duJ10uaW5jbHVkZXMoZXZlbnRLZXkpID8gaSsrIDogaS0tKSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBjb25zdCBuZXh0RWxlbWVudCA9IGxpc3RbaSArIGdhcFtldmVudEtleV1dO1xuICAgICAgaWYgKG5leHRFbGVtZW50Py50YWJJbmRleCA9PT0gMCkge1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIG5leHRFbGVtZW50Py5mb2N1cygpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGlmICghbmV4dEVsZW1lbnQpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlQ2VsbE1vdXNlTGVhdmUoKSB7XG4gICAgdGhpcy5jYWxlbmRhclNlcnZpY2UudXBkYXRlKHsgaG92ZXJEYXRlOiBudWxsIH0pO1xuICB9XG5cbiAgaGFuZGxlRGF5Q2VsbEtleVVwKCRldmVudDogS2V5Ym9hcmRFdmVudCwgZGF0ZTogRGF0ZSkge1xuICAgIGlmIChbJ1NwYWNlJywgJ0VudGVyJ10uaW5jbHVkZXMoJGV2ZW50LmNvZGUpKSB7XG4gICAgICB0aGlzLmhhbmRsZURheUNlbGxDbGljayhkYXRlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKFsnVGFiJywgJ0Fycm93UmlnaHQnLCAnQXJyb3dMZWZ0JywgJ0Fycm93VXAnLCAnQXJyb3dEb3duJ10uaW5jbHVkZXMoJGV2ZW50LmNvZGUpKSB7XG4gICAgICB0aGlzLmhhbmRsZUNlbGxNb3VzZUVudGVyKGRhdGUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZURheUNlbGxDbGljayhkYXRlOiBEYXRlKSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uVHlwZSA9PT0gJ2RheScgJiYgdGhpcy5pc0RhdGVEaXNhYmxlZChkYXRlKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5yYW5nZSkge1xuICAgICAgdGhpcy5lbmREYXRlID0gbnVsbDtcbiAgICAgIHRoaXMuc3RhcnREYXRlID0gZGF0ZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zdGFydERhdGUgJiYgdGhpcy5lbmREYXRlKSB7XG4gICAgICB0aGlzLmNhbGVuZGFyRGF0ZSA9IG5ldyBEYXRlKGRhdGUuZ2V0RnVsbFllYXIoKSwgZGF0ZS5nZXRNb250aCgpLCAxLCAwLCAwLCAwLCAwKTtcbiAgICAgIHRoaXMuZW5kRGF0ZSA9IG51bGw7XG4gICAgICB0aGlzLnN0YXJ0RGF0ZSA9IG51bGw7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCEhdGhpcy5zdGFydERhdGUgJiYgIXRoaXMuZW5kRGF0ZSkge1xuICAgICAgaWYgKHRoaXMuc3RhcnREYXRlICYmIGRhdGUgPCB0aGlzLnN0YXJ0RGF0ZSkge1xuICAgICAgICB0aGlzLmVuZERhdGUgPSBudWxsO1xuICAgICAgICB0aGlzLnN0YXJ0RGF0ZSA9IGRhdGU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmVuZERhdGUgPSBkYXRlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmVuZERhdGUgPSBudWxsO1xuICAgICAgdGhpcy5zdGFydERhdGUgPSBkYXRlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnN0YXJ0RGF0ZSAmJiB0aGlzLmVuZERhdGUpIHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGlmIChpc0RhdGVJblJhbmdlRGlzYWJsZWQodGhpcy5zdGFydERhdGUsIHRoaXMuZW5kRGF0ZSwgdGhpcy5kaXNhYmxlZERhdGVzKSkge1xuICAgICAgICB0aGlzLnN0YXJ0RGF0ZSA9IG51bGw7XG4gICAgICAgIHRoaXMuZW5kRGF0ZSA9IG51bGw7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gbGV0IGRhdGUgPSBuZXcgRGF0ZSh0aGlzLnN0YXJ0RGF0ZSk7XG4gICAgICAvLyB3aGlsZSAoZGF0ZSA8IHRoaXMuZW5kRGF0ZSkge1xuICAgICAgLy8gICBkYXRlLnNldERhdGUoZGF0ZS5nZXREYXRlKCkgKyAxKTtcbiAgICAgIC8vICAgaWYgKHRoaXMuaXNEYXRlRGlzYWJsZWQoZGF0ZSkpIHtcbiAgICAgIC8vICAgICB0aGlzLnN0YXJ0RGF0ZSA9IG51bGw7XG4gICAgICAvLyAgICAgdGhpcy5lbmREYXRlID0gbnVsbDtcbiAgICAgIC8vICAgICBicmVhaztcbiAgICAgIC8vICAgfVxuICAgICAgLy8gfVxuICAgIH1cbiAgfVxuXG4gIGNhbGVuZGFyU3RhdGVTdWJzY3JpYmUoKTogdm9pZCB7XG4gICAgdGhpcy5jYWxlbmRhclNlcnZpY2UuY2FsZW5kYXJTdGF0ZSQucGlwZShcbiAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLiNkZXN0cm95UmVmKVxuICAgICkuc3Vic2NyaWJlKHN0YXRlID0+IHtcbiAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhzdGF0ZSk7XG5cbiAgICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICAgICAgLy8gaWYgKGtleSBpbiB0aGlzKSB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgdGhpc1trZXldID0gc3RhdGVba2V5XTtcbiAgICAgICAgLy8gfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZ2V0TW9udGhTdGFydChpbmRleDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKHRoaXMuY2FsZW5kYXJEYXRlLmdldEZ1bGxZZWFyKCksIGluZGV4LCAxLCAwLCAwLCAwLCAwKTtcbiAgfVxuXG4gIGdldE1vbnRoRW5kKGluZGV4OiBudW1iZXIpIHtcbiAgICByZXR1cm4gbmV3IERhdGUodGhpcy5jYWxlbmRhckRhdGUuZ2V0RnVsbFllYXIoKSwgaW5kZXggKyAxLCAxLCAwLCAwLCAtMSwgMCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaXNEYXRlSW5SYW5nZURpc2FibGVkID0gaXNEYXRlSW5SYW5nZURpc2FibGVkO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaXNEYXRlQmV0d2Vlbk1pbk1heCA9IGlzRGF0ZUJldHdlZW5NaW5NYXg7XG5cbiAgZ2V0WWVhclN0YXJ0KHllYXI6IG51bWJlcikge1xuICAgIHJldHVybiBuZXcgRGF0ZSh5ZWFyLCAwLCAxKTtcbiAgfVxuXG4gIGdldFllYXJFbmQoeWVhcjogbnVtYmVyKSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKHllYXIsIDExLCAxLCAwLCAwLCAtMSwgMCk7XG4gIH1cbn1cbiIsIjx0YWJsZT5cbiAgPHRoZWFkICpuZ0lmPVwidmlldyA9PT0gJ2RheXMnXCI+XG4gIDx0cj5cbiAgICA8dGggKm5nSWY9XCJzaG93V2Vla051bWJlclwiIGNsYXNzPVwiY2FsZW5kYXItY2VsbFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLWhlYWRlci1jZWxsLWlubmVyXCI+e3sgd2Vla051bWJlcnNMYWJlbCB9fTwvZGl2PlxuICAgIDwvdGg+XG4gICAgPHRoICpuZ0Zvcj1cImxldCB3ZWVrRGF5IG9mIHdlZWtEYXlzOyBpbmRleCBhcyBpOyBjb3VudCBhcyBjbnRcIiBjbGFzcz1cImNhbGVuZGFyLWNlbGxcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1oZWFkZXItY2VsbC1pbm5lclwiPlxuICAgICAgICB7eyB3ZWVrRGF5LmRhdGUgfCBjYWxlbmRhcldlZWtkYXk6d2Vla2RheUZvcm1hdDpsb2NhbGUgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvdGg+XG4gIDwvdHI+XG4gIDwvdGhlYWQ+XG4gIDx0Ym9keSAobW91c2VsZWF2ZSk9XCJoYW5kbGVDZWxsTW91c2VMZWF2ZSgpXCIgW25nU3dpdGNoXT1cInZpZXdcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3llYXJzJ1wiPlxuICAgIDx0ciAqbmdGb3I9XCJsZXQgeWVhcnNSb3cgb2YgbGlzdE9mWWVhcnMoKTsgaW5kZXggYXMgcm93SWR4XCI+XG4gICAgICA8dGRcbiAgICAgICAgI2NhbGVuZGFyWWVhcj1cImNDYWxlbmRhckRheVwiXG4gICAgICAgIChjbGljayk9XCIhY2FsZW5kYXJZZWFyLmRpc2FibGVkJCgpICYmIGhhbmRsZVllYXJDZWxsQ2xpY2soeWVhcilcIlxuICAgICAgICAoa2V5ZG93bik9XCJjYWxlbmRhclllYXIuZGF0ZSAmJiBoYW5kbGVEYXlDZWxsS2V5RG93bigkZXZlbnQsIGNhbGVuZGFyWWVhci5kYXRlKVwiXG4gICAgICAgIChrZXl1cCk9XCJoYW5kbGVZZWFyQ2VsbEtleVVwKCRldmVudCwgY2FsZW5kYXJZZWFyLmRhdGUpXCJcbiAgICAgICAgKG1vdXNlZW50ZXIpPVwiY2FsZW5kYXJZZWFyLmRhdGUgJiYgaGFuZGxlQ2VsbE1vdXNlRW50ZXIoY2FsZW5kYXJZZWFyLmRhdGUpXCJcbiAgICAgICAgKm5nRm9yPVwibGV0IHllYXIgb2YgeWVhcnNSb3c7IGluZGV4IGFzIGlkeFwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiY2FsZW5kYXJZZWFyLmRhdGUuZ2V0RnVsbFllYXIoKVwiXG4gICAgICAgIFtkYXRlXT1cImdldFllYXJTdGFydCh5ZWFyKVwiXG4gICAgICAgIFtuZ0NsYXNzXT1cInllYXIgfCBjYWxlbmRhckNsYXNzWWVhclwiXG4gICAgICAgIFt0YWJpbmRleF09XCJjYWxlbmRhclllYXIuZGlzYWJsZWQkKCkgPyAtMSA6IDBcIlxuICAgICAgICBjQ2FsZW5kYXJEYXlcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLWNlbGwtaW5uZXJcIj5cbiAgICAgICAgICB7eyB5ZWFyTnVtYmVyKHllYXIpIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC90ZD5cbiAgICA8L3RyPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ21vbnRocydcIj5cbiAgICA8dHIgKm5nRm9yPVwibGV0IG1vbnRoc1JvdyBvZiBsaXN0T2ZNb250aHMoKTsgaW5kZXggYXMgcm93SWR4XCI+XG4gICAgICA8dGRcbiAgICAgICAgI2NhbGVuZGFyTW9udGg9XCJjQ2FsZW5kYXJEYXlcIlxuICAgICAgICAoY2xpY2spPVwiIWNhbGVuZGFyTW9udGguZGlzYWJsZWQkKCkgJiYgaGFuZGxlTW9udGhDZWxsQ2xpY2soY2FsZW5kYXJNb250aC5kYXRlKVwiXG4gICAgICAgIChrZXlkb3duKT1cImNhbGVuZGFyTW9udGguZGF0ZSAmJiBoYW5kbGVEYXlDZWxsS2V5RG93bigkZXZlbnQsIGNhbGVuZGFyTW9udGguZGF0ZSlcIlxuICAgICAgICAoa2V5dXApPVwiaGFuZGxlTW9udGhDZWxsS2V5VXAoJGV2ZW50LCBjYWxlbmRhck1vbnRoLmRhdGUpXCJcbiAgICAgICAgKG1vdXNlZW50ZXIpPVwiY2FsZW5kYXJNb250aC5kYXRlICYmIGhhbmRsZUNlbGxNb3VzZUVudGVyKGNhbGVuZGFyTW9udGguZGF0ZSlcIlxuICAgICAgICAqbmdGb3I9XCJsZXQgbW9udGggb2YgbW9udGhzUm93OyBpbmRleCBhcyBpZHhcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImNhbGVuZGFyTW9udGguZGF0ZS5nZXRGdWxsWWVhcigpKycgJyttb250aC5tb250aFwiXG4gICAgICAgIFtkYXRlXT1cImdldE1vbnRoU3RhcnQocm93SWR4KjMraWR4KVwiXG4gICAgICAgIFtuZ0NsYXNzXT1cImNhbGVuZGFyRGF0ZSB8IGNhbGVuZGFyQ2xhc3NNb250aDoocm93SWR4KjMraWR4KVwiXG4gICAgICAgIFt0YWJpbmRleF09XCJjYWxlbmRhck1vbnRoLmRpc2FibGVkJCgpID8gLTEgOiAwXCJcbiAgICAgICAgY0NhbGVuZGFyRGF5XG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1jZWxsLWlubmVyXCI+XG4gICAgICAgICAge3sgbW9udGgubW9udGggfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3RkPlxuICAgIDwvdHI+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyICpuZ1N3aXRjaERlZmF1bHQ+XG4gICAgPHRyICNjYWxlbmRhclJvdz1cImNDYWxlbmRhclJvd1wiXG4gICAgICAgIChjbGljayk9XCJzZWxlY3Rpb25UeXBlID09PSAnd2VlaycgJiYgKGNhbGVuZGFyUm93LmN1cnJlbnQpICYmIGNhbGVuZGFyUm93LmRhdGUgJiYgaGFuZGxlRGF5Q2VsbENsaWNrKGNhbGVuZGFyUm93LmRhdGUpXCJcbiAgICAgICAgKGtleWRvd24pPVwic2VsZWN0aW9uVHlwZSA9PT0gJ3dlZWsnICYmIChjYWxlbmRhclJvdy5jdXJyZW50KSAmJiBjYWxlbmRhclJvdy5kYXRlICYmIGhhbmRsZURheUNlbGxLZXlEb3duKCRldmVudCwgY2FsZW5kYXJSb3cuZGF0ZSlcIlxuICAgICAgICAoa2V5dXApPVwic2VsZWN0aW9uVHlwZSA9PT0gJ3dlZWsnICYmIChjYWxlbmRhclJvdy5jdXJyZW50KSAmJiBjYWxlbmRhclJvdy5kYXRlICYmIGhhbmRsZURheUNlbGxLZXlVcCgkZXZlbnQsIGNhbGVuZGFyUm93LmRhdGUpXCJcbiAgICAgICAgKG1vdXNlZW50ZXIpPVwic2VsZWN0aW9uVHlwZSA9PT0gJ3dlZWsnICYmIGNhbGVuZGFyUm93LmRhdGUgJiYgaGFuZGxlQ2VsbE1vdXNlRW50ZXIoY2FsZW5kYXJSb3cuZGF0ZSlcIlxuICAgICAgICAqbmdGb3I9XCJsZXQgd2VlayBvZiBtb250aERldGFpbHM7IGluZGV4IGFzIGlcIlxuICAgICAgICBbY0NhbGVuZGFyUm93XT1cIndlZWtcIlxuICAgID5cbiAgICAgIDx0aCAqbmdJZj1cInNob3dXZWVrTnVtYmVyXCIgY2xhc3M9XCJjYWxlbmRhci1jZWxsLXdlZWstbnVtYmVyXCI+XG4gICAgICAgIHt7d2Vlay53ZWVrTnVtYmVyID09PSAwID8gNTMgOiB3ZWVrLndlZWtOdW1iZXJ9fVxuICAgICAgPC90aD5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGRhdGVPYmogb2Ygd2Vlay5kYXlzOyBpbmRleCBhcyBpZHhcIj5cbiAgICAgICAgPHRkICNjYWxlbmRhckNlbGw9XCJjQ2FsZW5kYXJEYXlcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdGlvblR5cGUgPT09ICdkYXknICYmIChkYXRlT2JqLm1vbnRoID09PSAnY3VycmVudCcgfHwgc2VsZWN0QWRqYWNlbnREYXlzKSAmJiBoYW5kbGVEYXlDZWxsQ2xpY2soZGF0ZU9iai5kYXRlKVwiXG4gICAgICAgICAgICAoa2V5ZG93bik9XCJzZWxlY3Rpb25UeXBlID09PSAnZGF5JyAmJiAoZGF0ZU9iai5tb250aCA9PT0gJ2N1cnJlbnQnIHx8IHNlbGVjdEFkamFjZW50RGF5cykgJiYgaGFuZGxlRGF5Q2VsbEtleURvd24oJGV2ZW50LCBkYXRlT2JqLmRhdGUpXCJcbiAgICAgICAgICAgIChrZXl1cCk9XCJzZWxlY3Rpb25UeXBlID09PSAnZGF5JyAmJiAoZGF0ZU9iai5tb250aCA9PT0gJ2N1cnJlbnQnIHx8IHNlbGVjdEFkamFjZW50RGF5cykgJiYgaGFuZGxlRGF5Q2VsbEtleVVwKCRldmVudCwgZGF0ZU9iai5kYXRlKVwiXG4gICAgICAgICAgICAobW91c2VlbnRlcik9XCJzZWxlY3Rpb25UeXBlID09PSAnZGF5JyAmJiAoZGF0ZU9iai5tb250aCA9PT0gJ2N1cnJlbnQnIHx8IHNlbGVjdEFkamFjZW50RGF5cykgJiYgaGFuZGxlQ2VsbE1vdXNlRW50ZXIoZGF0ZU9iai5kYXRlKVwiXG4gICAgICAgICAgICAqbmdJZj1cIihkYXRlT2JqLm1vbnRoID09PSAnY3VycmVudCcgfHwgc2hvd0FkamFjZW50RGF5cyk7IGVsc2UgZW1wdHlDZWxsXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZGF0ZU9iai5kYXRlIHwgY2FsZW5kYXJEYXlUaXRsZTpsb2NhbGVcIlxuICAgICAgICAgICAgW2RhdGVdPVwiZGF0ZU9iai5kYXRlXCJcbiAgICAgICAgICAgIFttb250aF09XCJkYXRlT2JqLm1vbnRoXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cImRhdGVPYmogfCBjYWxlbmRhckNsYXNzRGF5OnttaW5EYXRlLCBtYXhEYXRlLCBkaXNhYmxlZERhdGVzLCBkYXRlRmlsdGVyfVwiXG4gICAgICAgICAgICBbdGFiaW5kZXhdPVwic2VsZWN0aW9uVHlwZSA9PT0gJ2RheScgJiYgKGRhdGVPYmoubW9udGggPT09ICdjdXJyZW50JyB8fCBzZWxlY3RBZGphY2VudERheXMpICYmICFpc0RhdGVEaXNhYmxlZChkYXRlT2JqLmRhdGUpID8gMCA6IC0xXCJcbiAgICAgICAgICAgIGNDYWxlbmRhckRheVxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLWNlbGwtaW5uZXJcIj5cbiAgICAgICAgICAgIHt7IGRhdGVPYmouZGF0ZSB8IGNhbGVuZGFyRGF5OmRheUZvcm1hdDpsb2NhbGUgfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC90ZD5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNlbXB0eUNlbGw+XG4gICAgICAgICAgPHRkIGNsYXNzPVwiY2FsZW5kYXItY2VsbFwiPjwvdGQ+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L3RyPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPC90Ym9keT5cbjwvdGFibGU+XG5cbiJdfQ==
|
|
501
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItbW9udGguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZXVpLWFuZ3VsYXIvc3JjL2xpYi9jYWxlbmRhci9jYWxlbmRhci1tb250aC9jYWxlbmRhci1tb250aC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JldWktYW5ndWxhci9zcmMvbGliL2NhbGVuZGFyL2NhbGVuZGFyLW1vbnRoL2NhbGVuZGFyLW1vbnRoLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsU0FBUyxFQUNULFFBQVEsRUFDUixVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFDTCxlQUFlLEVBR2YsTUFBTSxFQUNOLFlBQVksRUFFYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV0QyxPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLG1CQUFtQixFQUNuQixlQUFlLEVBQ2YsY0FBYyxFQUNkLFFBQVEsRUFDUixtQkFBbUIsRUFDbkIsY0FBYyxFQUNkLHFCQUFxQixFQUNyQixPQUFPLEVBQ1IsTUFBTSxtQkFBbUIsQ0FBQztBQUczQixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxF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Qjt3QkFDcEIsb0JBQW9CO3dCQUNwQixzQkFBc0I7d0JBQ3RCLG9CQUFvQjt3QkFDcEIscUJBQXFCO3dCQUNyQixtQkFBbUI7d0JBQ25CLE9BQU87d0JBQ1AsU0FBUztxQkFDVjtvRkFZUSxTQUFTO3NCQUFqQixLQUFLO2dCQU9GLFNBQVM7c0JBRFosS0FBSztnQkFvQkYsT0FBTztzQkFEVixLQUFLO2dCQW9CRixhQUFhO3NCQURoQixLQUFLO2dCQXFCaUMsY0FBYztzQkFBcEQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUU7Z0JBT2pDLE1BQU07c0JBRFQsS0FBSztnQkFpQmtDLEtBQUs7c0JBQTVDLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBTzdCLGFBQWE7c0JBQXJCLEtBQUs7Z0JBUUYsSUFBSTtzQkFEUCxLQUFLO2dCQWVGLE9BQU87c0JBRFYsS0FBSztnQkFlRixPQUFPO3NCQURWLEtBQUs7Z0JBcUJGLFlBQVk7c0JBRGYsS0FBSztnQkFnQjhCLFlBQVk7c0JBQS9DLFlBQVk7dUJBQUMsb0JBQW9CO2dCQUNFLFlBQVk7c0JBQS9DLFlBQVk7dUJBQUMsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgQ29tcG9uZW50LFxuICBjb21wdXRlZCxcbiAgRGVzdHJveVJlZixcbiAgaW5qZWN0LFxuICBJbnB1dCxcbiAgbnVtYmVyQXR0cmlidXRlLFxuICBPbkluaXQsXG4gIFF1ZXJ5TGlzdCxcbiAgc2lnbmFsLFxuICBWaWV3Q2hpbGRyZW4sXG4gIFdyaXRhYmxlU2lnbmFsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXN5bmNQaXBlLCBOZ0NsYXNzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7XG4gIGNvbnZlcnRUb0RhdGVPYmplY3QsXG4gIGNyZWF0ZUdyb3Vwc0luQXJyYXksXG4gIGdldE1vbnRoRGV0YWlscyxcbiAgZ2V0TW9udGhzTmFtZXMsXG4gIGdldFllYXJzLFxuICBpc0RhdGVCZXR3ZWVuTWluTWF4LFxuICBpc0RhdGVEaXNhYmxlZCxcbiAgaXNEYXRlSW5SYW5nZURpc2FibGVkLFxuICB0cnlEYXRlXG59IGZyb20gJy4uL2NhbGVuZGFyLnV0aWxzJztcblxuaW1wb3J0IHsgQ2FsZW5kYXJTZXJ2aWNlLCBEYXRlRmlsdGVyVHlwZSwgRGF5Rm9ybWF0VHlwZSwgU2VsZWN0aW9uVHlwZSwgV2Vla2RheUZvcm1hdFR5cGUgfSBmcm9tICcuLi9jYWxlbmRhci5zZXJ2aWNlJztcbmltcG9ydCB7IENhbGVuZGFyV2Vla2RheVBpcGUgfSBmcm9tICcuL2NhbGVuZGFyLXdlZWtkYXkucGlwZSc7XG5pbXBvcnQgeyBDYWxlbmRhckNsYXNzWWVhclBpcGUgfSBmcm9tICcuL2NhbGVuZGFyLWNsYXNzLXllYXIucGlwZSc7XG5pbXBvcnQgeyBDYWxlbmRhckNsYXNzTW9udGhQaXBlIH0gZnJvbSAnLi9jYWxlbmRhci1jbGFzcy1tb250aC5waXBlJztcbmltcG9ydCB7IENhbGVuZGFyRGF5UGlwZSB9IGZyb20gJy4vY2FsZW5kYXItZGF5LnBpcGUnO1xuaW1wb3J0IHsgQ2FsZW5kYXJEYXlEaXJlY3RpdmUgfSBmcm9tICcuL2NhbGVuZGFyLWRheS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQ2FsZW5kYXJEYXlUaXRsZVBpcGUgfSBmcm9tICcuL2NhbGVuZGFyLWRheS10aXRsZS5waXBlJztcbmltcG9ydCB7IENhbGVuZGFyQ2xhc3NEYXlQaXBlIH0gZnJvbSAnLi9jYWxlbmRhci1jbGFzcy1kYXkucGlwZSc7XG5pbXBvcnQgeyBDYWxlbmRhckNsYXNzUm93UGlwZSB9IGZyb20gJy4vY2FsZW5kYXItY2xhc3Mtcm93LnBpcGUnO1xuaW1wb3J0IHsgQ2FsZW5kYXJSb3dEaXJlY3RpdmUgfSBmcm9tICcuL2NhbGVuZGFyLXJvdy5kaXJlY3RpdmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjLWNhbGVuZGFyLW1vbnRoJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NhbGVuZGFyLW1vbnRoLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2FsZW5kYXItbW9udGguY29tcG9uZW50LnNjc3MnXSxcbiAgZXhwb3J0QXM6ICdjQ2FsZW5kYXJNb250aCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDYWxlbmRhckRheURpcmVjdGl2ZSxcbiAgICBDYWxlbmRhckRheVBpcGUsXG4gICAgQ2FsZW5kYXJEYXlUaXRsZVBpcGUsXG4gICAgQ2FsZW5kYXJSb3dEaXJlY3RpdmUsXG4gICAgQ2FsZW5kYXJDbGFzc0RheVBpcGUsXG4gICAgQ2FsZW5kYXJDbGFzc01vbnRoUGlwZSxcbiAgICBDYWxlbmRhckNsYXNzUm93UGlwZSxcbiAgICBDYWxlbmRhckNsYXNzWWVhclBpcGUsXG4gICAgQ2FsZW5kYXJXZWVrZGF5UGlwZSxcbiAgICBOZ0NsYXNzLFxuICAgIEFzeW5jUGlwZVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIENhbGVuZGFyTW9udGhDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gICNkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2FsZW5kYXJTZXJ2aWNlOiBDYWxlbmRhclNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5jYWxlbmRhclN0YXRlU3Vic2NyaWJlKCk7XG4gIH1cblxuICBASW5wdXQoKSBhZGRNb250aHM6IG51bWJlciA9IDA7XG5cbiAgLyoqXG4gICAqIEluaXRpYWwgc2VsZWN0ZWQgZGF0ZS5cbiAgICogQHR5cGUgIChEYXRlIHwgbnVsbClcbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBzdGFydERhdGUodmFsdWU6IERhdGUgfCBudW1iZXIgfCBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKSB7XG4gICAgY29uc3QgZGF0ZSA9ICEhdmFsdWUgPyB0cnlEYXRlKHZhbHVlLCAnc3RhcnREYXRlJykgOiBudWxsO1xuICAgIGlmICh0aGlzLl9zdGFydERhdGU/LmdldFRpbWUoKSAhPT0gZGF0ZT8uZ2V0VGltZSgpKSB7XG4gICAgICB0aGlzLl9zdGFydERhdGUgPSBkYXRlO1xuICAgICAgdGhpcy5jYWxlbmRhclNlcnZpY2UudXBkYXRlKHsgc3RhcnREYXRlOiB0aGlzLl9zdGFydERhdGUgfSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHN0YXJ0RGF0ZSgpOiBEYXRlIHwgbnVsbCB7XG4gICAgcmV0dXJuIDxEYXRlIHwgbnVsbD50aGlzLl9zdGFydERhdGU7XG4gIH1cblxuICBfc3RhcnREYXRlOiBEYXRlIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIEluaXRpYWwgc2VsZWN0ZWQgdG8gZGF0ZSAocmFuZ2UpLlxuICAgKiBAdHlwZSAgRGF0ZSB8IG51bGxcbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBlbmREYXRlKHZhbHVlOiBEYXRlIHwgbnVtYmVyIHwgc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuICAgIGNvbnN0IGRhdGUgPSAhIXZhbHVlID8gdHJ5RGF0ZSh2YWx1ZSwgJ2VuZERhdGUnKSA6IG51bGw7XG4gICAgaWYgKHRoaXMuX2VuZERhdGU/LmdldFRpbWUoKSAhPT0gZGF0ZT8uZ2V0VGltZSgpKSB7XG4gICAgICB0aGlzLl9lbmREYXRlID0gZGF0ZTtcbiAgICAgIHRoaXMuY2FsZW5kYXJTZXJ2aWNlLnVwZGF0ZSh7IGVuZERhdGU6IHRoaXMuX2VuZERhdGUgfSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGVuZERhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2VuZERhdGU7XG4gIH1cblxuICBfZW5kRGF0ZTogKERhdGUgfCBudWxsKSA9IG51bGw7XG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgdGhlIGxpc3Qgb2YgZGF0ZXMgdGhhdCBjYW5ub3QgYmUgc2VsZWN0ZWQuXG4gICAqIEB0eXBlICBEYXRlW10gfCBEYXRlW11bXVxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IGRpc2FibGVkRGF0ZXModmFsdWU6IERhdGVbXSB8IERhdGVbXVtdKSB7XG4gICAgdGhpcy5fZGlzYWJsZWREYXRlcyA9IHZhbHVlO1xuICB9XG5cbiAgZ2V0IGRpc2FibGVkRGF0ZXMoKTogRGF0ZVtdIHwgRGF0ZVtdW10ge1xuICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZERhdGVzO1xuICB9XG5cbiAgcHJpdmF0ZSBfZGlzYWJsZWREYXRlczogKERhdGVbXSB8IERhdGVbXVtdKSA9IFtdO1xuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBkYXkgb2Ygc3RhcnQgd2Vlay5cbiAgICogLSAwIC0gU3VuZGF5LFxuICAgKiAtIDEgLSBNb25kYXksXG4gICAqIC0gMiAtIFR1ZXNkYXksXG4gICAqIC0gMyAtIFdlZG5lc2RheSxcbiAgICogLSA0IC0gVGh1cnNkYXksXG4gICAqIC0gNSAtIEZyaWRheSxcbiAgICogLSA2IC0gU2F0dXJkYXksXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KSBmaXJzdERheU9mV2VlazogbnVtYmVyID0gMTtcblxuICAvKipcbiAgICogU2V0cyB0aGUgZGVmYXVsdCBsb2NhbGUgZm9yIGNvbXBvbmVudHMuIElmIG5vdCBzZXQsIGl0IGlzIGluaGVyaXRlZCBmcm9tIHRoZSBicm93c2VyLlxuICAgKiBAZGVmYXVsdCAnZGVmYXVsdCdcbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBsb2NhbGUodmFsdWUpIHtcbiAgICB0aGlzLiNsb2NhbGUuc2V0KHZhbHVlKTtcbiAgICAvLyB0aGlzLmxpc3RPZk1vbnRocyA9IGNyZWF0ZUdyb3Vwc0luQXJyYXkoZ2V0TW9udGhzTmFtZXModmFsdWUpLCA0KTtcbiAgfVxuXG4gIGdldCBsb2NhbGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuI2xvY2FsZSgpO1xuICB9XG5cbiAgI2xvY2FsZSA9IHNpZ25hbCgnZGVmYXVsdCcpO1xuXG4gIC8qKlxuICAgKiBBbGxvdyByYW5nZSBzZWxlY3Rpb24uXG4gICAqIEB0eXBlIGJvb2xlYW5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSByYW5nZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBTZXQgbGVuZ3RoIG9yIGZvcm1hdCBvZiBkYXkgbmFtZS5cbiAgICogQHR5cGUgbnVtYmVyIHwgJ2xvbmcnIHwgJ25hcnJvdycgfCAnc2hvcnQnXG4gICAqIEBkZWZhdWx0ICdzaG9ydCdcbiAgICovXG4gIEBJbnB1dCgpIHdlZWtkYXlGb3JtYXQ6IFdlZWtkYXlGb3JtYXRUeXBlID0gJ3Nob3J0JztcblxuICAvKipcbiAgICogU2V0IGNhbGVuZGFyIHZpZXcuXG4gICAqIEB0eXBlICdkYXlzJyB8ICdtb250aHMnIHwgJ3llYXJzJ1xuICAgKiBAZGVmYXVsdCAnZGF5cydcbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCB2aWV3KHZhbHVlKSB7XG4gICAgdGhpcy4jdmlldy5zZXQodmFsdWUpO1xuICB9XG5cbiAgZ2V0IHZpZXcoKSB7XG4gICAgcmV0dXJuIHRoaXMuI3ZpZXcoKTtcbiAgfVxuXG4gICN2aWV3ID0gc2lnbmFsPCdkYXlzJyB8ICdtb250aHMnIHwgJ3llYXJzJz4oJ2RheXMnKTtcblxuICAvKipcbiAgICogTWF4IHNlbGVjdGFibGUgZGF0ZS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBtYXhEYXRlKHZhbHVlOiBEYXRlIHwgbnVsbCkge1xuICAgIHRoaXMuX21heERhdGUgPSB2YWx1ZSA/IHRyeURhdGUodmFsdWUsICdtYXhEYXRlJykgOiBudWxsO1xuICB9XG5cbiAgZ2V0IG1heERhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX21heERhdGU7XG4gIH1cblxuICBwcml2YXRlIF9tYXhEYXRlOiBEYXRlIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIE1pbiBzZWxlY3RhYmxlIGRhdGUuXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgbWluRGF0ZSh2YWx1ZTogRGF0ZSB8IG51bGwpIHtcbiAgICB0aGlzLl9taW5EYXRlID0gdmFsdWUgPyB0cnlEYXRlKHZhbHVlLCAnbWluRGF0ZScpIDogbnVsbDtcbiAgfVxuXG4gIGdldCBtaW5EYXRlKCkge1xuICAgIHJldHVybiB0aGlzLl9taW5EYXRlO1xuICB9XG5cbiAgcHJpdmF0ZSBfbWluRGF0ZTogRGF0ZSB8IG51bGwgPSBudWxsO1xuXG4gIGxpc3RPZk1vbnRocyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gY3JlYXRlR3JvdXBzSW5BcnJheShnZXRNb250aHNOYW1lcyh0aGlzLiNsb2NhbGUoKSwgdGhpcy5jYWxlbmRhckRhdGUkJCgpLmdldEZ1bGxZZWFyKCkpLCA0KTtcbiAgfSk7XG4gIGxpc3RPZlllYXJzID0gY29tcHV0ZWQoKCkgPT4gY3JlYXRlR3JvdXBzSW5BcnJheShnZXRZZWFycyh0aGlzLmNhbGVuZGFyRGF0ZSQkKCkuZ2V0RnVsbFllYXIoKSksIDQpKTtcblxuICAvKipcbiAgICogRGVmYXVsdCBkYXRlIG9mIHRoZSBjb21wb25lbnRcbiAgICogQHR5cGUgRGF0ZVxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IGNhbGVuZGFyRGF0ZSh2YWx1ZTogKERhdGUgfCBzdHJpbmcgfCBudW1iZXIpKSB7XG4gICAgY29uc3QgX3ZhbHVlID0gbmV3IERhdGUodHJ5RGF0ZSgodmFsdWUgPz8gdGhpcy5zdGFydERhdGUpLCAnY2FsZW5kYXJEYXRlJykpO1xuICAgIGlmICghIV92YWx1ZSAmJiB0aGlzLmNhbGVuZGFyRGF0ZSQkKCkuZ2V0VGltZSgpICE9PSBfdmFsdWUuZ2V0VGltZSgpKSB7XG4gICAgICB0aGlzLmNhbGVuZGFyRGF0ZSQkLnNldChuZXcgRGF0ZShuZXcgRGF0ZShfdmFsdWUuc2V0RGF0ZSgxKSkuc2V0SG91cnMoMCwgMCwgMCwgMCkpKTtcbiAgICAgIHRoaXMuc2V0TW9udGhEZXRhaWxzKHRoaXMuZGF0ZSk7XG4gICAgICB0aGlzLmNhbGVuZGFyU2VydmljZS51cGRhdGUoeyBjYWxlbmRhckRhdGU6IHRoaXMuY2FsZW5kYXJEYXRlJCQoKSB9KTtcbiAgICB9XG4gIH1cblxuICBnZXQgY2FsZW5kYXJEYXRlKCk6IERhdGUge1xuICAgIHJldHVybiA8RGF0ZT50aGlzLmNhbGVuZGFyRGF0ZSQkKCkgYXMgRGF0ZTtcbiAgfVxuXG4gIGNhbGVuZGFyRGF0ZSQkID0gc2lnbmFsPERhdGU+KG5ldyBEYXRlKCkpO1xuXG4gIEBWaWV3Q2hpbGRyZW4oQ2FsZW5kYXJEYXlEaXJlY3RpdmUpIGNhbGVuZGFyRGF5cyE6IFF1ZXJ5TGlzdDxDYWxlbmRhckRheURpcmVjdGl2ZT47XG4gIEBWaWV3Q2hpbGRyZW4oQ2FsZW5kYXJSb3dEaXJlY3RpdmUpIGNhbGVuZGFyUm93cyE6IFF1ZXJ5TGlzdDxDYWxlbmRhclJvd0RpcmVjdGl2ZT47XG5cbiAgZGF0ZUZpbHRlciE6IERhdGVGaWx0ZXJUeXBlO1xuXG4gIGdldCBkYXRlKCkge1xuICAgIHJldHVybiBuZXcgRGF0ZSh0aGlzLmNhbGVuZGFyRGF0ZT8uZ2V0RnVsbFllYXIoKSwgdGhpcy5jYWxlbmRhckRhdGU/LmdldE1vbnRoKCkgKyB0aGlzLmFkZE1vbnRocyk7XG4gIH1cblxuICBkYXlGb3JtYXQhOiBEYXlGb3JtYXRUeXBlO1xuICBzZWxlY3RBZGphY2VudERheXMhOiBib29sZWFuO1xuICBzaG93QWRqYWNlbnREYXlzITogYm9vbGVhbjtcblxuICBzZXQgc2VsZWN0aW9uVHlwZSh2YWx1ZTogU2VsZWN0aW9uVHlwZSkge1xuICAgIHRoaXMuI3NlbGVjdGlvblR5cGUuc2V0KHZhbHVlKTtcbiAgfVxuXG4gIGdldCBzZWxlY3Rpb25UeXBlKCkge1xuICAgIHJldHVybiB0aGlzLiNzZWxlY3Rpb25UeXBlKCk7XG4gIH1cblxuICAjc2VsZWN0aW9uVHlwZTogV3JpdGFibGVTaWduYWw8U2VsZWN0aW9uVHlwZT4gPSBzaWduYWwoJ21vbnRoJyk7XG5cbiAgc2hvd1dlZWtOdW1iZXI6IGJvb2xlYW4gPSB0cnVlO1xuICAvLyBzZXQgc2hvd1dlZWtOdW1iZXIodmFsdWU6IGJvb2xlYW4pIHtcbiAgLy8gICB0aGlzLiNzaG93V2Vla051bWJlciQkLnNldCh2YWx1ZSk7XG4gIC8vIH1cbiAgLy9cbiAgLy8gZ2V0IHNob3dXZWVrTnVtYmVyKCkge1xuICAvLyAgIHJldHVybiB0aGlzLiNzaG93V2Vla051bWJlciQkKCk7XG4gIC8vIH1cbiAgLy9cbiAgLy8gI3Nob3dXZWVrTnVtYmVyJCQ6IFdyaXRhYmxlU2lnbmFsPGJvb2xlYW4+ID0gc2lnbmFsKGZhbHNlKTtcbiAgLy8gc2hvd1dlZWtOdW1iZXIkJCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuI3NlbGVjdGlvblR5cGUoKSA9PT0gJ3dlZWsnIHx8IHRoaXMuI3Nob3dXZWVrTnVtYmVyJCQoKSk7XG5cbiAgd2Vla051bWJlcnNMYWJlbCE6IHN0cmluZztcblxuICBwcml2YXRlIF9tb250aERldGFpbHMhOiB7IHdlZWtOdW1iZXI6IG51bWJlcjsgZGF5czogeyBkYXRlOiBEYXRlOyBtb250aDogc3RyaW5nOyB9W107IH1bXTtcblxuICBnZXQgbW9udGhEZXRhaWxzKCkge1xuICAgIHJldHVybiB0aGlzLl9tb250aERldGFpbHM7XG4gIH1cblxuICBnZXQgd2Vla0RheXMoKSB7XG4gICAgcmV0dXJuIHRoaXMubW9udGhEZXRhaWxzWzBdLmRheXM7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNldE1vbnRoRGV0YWlscyh0aGlzLmRhdGUpO1xuICB9XG5cbiAgc2V0TW9udGhEZXRhaWxzKGRhdGU6IERhdGUgPSB0aGlzLmRhdGUpIHtcbiAgICB0aGlzLl9tb250aERldGFpbHMgPSBnZXRNb250aERldGFpbHMoXG4gICAgICBkYXRlLmdldEZ1bGxZZWFyKCksXG4gICAgICBkYXRlLmdldE1vbnRoKCksXG4gICAgICB0aGlzLmZpcnN0RGF5T2ZXZWVrXG4gICAgKTtcbiAgfVxuXG4gIHllYXJOdW1iZXIoeWVhcjogYW55KSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKHllYXIsIDApLnRvTG9jYWxlRGF0ZVN0cmluZyh0aGlzLmxvY2FsZSwgeyB5ZWFyOiAnbnVtZXJpYycgfSk7XG4gIH1cblxuICBpc0RhdGVEaXNhYmxlZChkYXRlOiBEYXRlKSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uVHlwZSA9PT0gJ3llYXInKSB7XG4gICAgICBjb25zdCBtaW5EYXRlID0gdGhpcy5taW5EYXRlID8gbmV3IERhdGUodGhpcy5taW5EYXRlLmdldEZ1bGxZZWFyKCksIDAsIDEsIDAsIDAsIDAsIDApIDogbnVsbDtcbiAgICAgIGNvbnN0IG1heERhdGUgPSB0aGlzLm1heERhdGUgPyBuZXcgRGF0ZSh0aGlzLm1heERhdGUuZ2V0RnVsbFllYXIoKSwgMTEsIDMxLCAwLCAwLCAwLCAwKSA6IG51bGw7XG4gICAgICByZXR1cm4gaXNEYXRlRGlzYWJsZWQoZGF0ZSwgbWluRGF0ZSwgbWF4RGF0ZSwgdGhpcy5kaXNhYmxlZERhdGVzKSB8fCAodGhpcy5kYXRlRmlsdGVyID8gIXRoaXMuZGF0ZUZpbHRlcihkYXRlKSA6IGZhbHNlKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uVHlwZSA9PT0gJ21vbnRoJykge1xuICAgICAgY29uc3QgbWluRGF0ZSA9IHRoaXMubWluRGF0ZSA/IG5ldyBEYXRlKHRoaXMubWluRGF0ZS5nZXRGdWxsWWVhcigpLCB0aGlzLm1pbkRhdGUuZ2V0TW9udGgoKSwgMSwgMCwgMCwgMCwgMCkgOiBudWxsO1xuICAgICAgY29uc3QgbWF4RGF0ZSA9IHRoaXMubWF4RGF0ZSA/IG5ldyBEYXRlKHRoaXMubWF4RGF0ZS5nZXRGdWxsWWVhcigpLCB0aGlzLm1heERhdGUuZ2V0TW9udGgoKSArIDEsIDEsIDAsIDAsIC0xLCAwKSA6IG51bGw7XG4gICAgICByZXR1cm4gaXNEYXRlRGlzYWJsZWQoZGF0ZSwgbWluRGF0ZSwgbWF4RGF0ZSwgdGhpcy5kaXNhYmxlZERhdGVzKSB8fCAodGhpcy5kYXRlRmlsdGVyID8gIXRoaXMuZGF0ZUZpbHRlcihkYXRlKSA6IGZhbHNlKTtcbiAgICB9XG4gICAgcmV0dXJuIGlzRGF0ZURpc2FibGVkKGRhdGUsIHRoaXMubWluRGF0ZSwgdGhpcy5tYXhEYXRlLCB0aGlzLmRpc2FibGVkRGF0ZXMpIHx8ICh0aGlzLmRhdGVGaWx0ZXIgPyAhdGhpcy5kYXRlRmlsdGVyKGRhdGUpIDogZmFsc2UpO1xuICB9XG5cbiAgY2FsZW5kYXJDZWxsVGl0bGUoZGF0ZTogRGF0ZSkge1xuICAgIHJldHVybiBkYXRlLnRvTG9jYWxlRGF0ZVN0cmluZyh0aGlzLmxvY2FsZSk7XG4gIH1cblxuICBoYW5kbGVDZWxsTW91c2VFbnRlcihob3ZlckRhdGU6IERhdGUpIHtcbiAgICBjb25zdCB1cGRhdGVIb3ZlclZhbHVlID0gKFsnZGF5JywgJ3dlZWsnXS5pbmNsdWRlcyh0aGlzLnNlbGVjdGlvblR5cGUpICYmIHRoaXMudmlldyA9PT0gJ2RheXMnKSB8fFxuICAgICAgWydtb250aCddLmluY2x1ZGVzKHRoaXMuc2VsZWN0aW9uVHlwZSkgJiYgdGhpcy52aWV3ID09PSAnbW9udGhzJyB8fFxuICAgICAgWyd5ZWFyJ10uaW5jbHVkZXModGhpcy5zZWxlY3Rpb25UeXBlKSAmJiB0aGlzLnZpZXcgPT09ICd5ZWFycyc7XG5cbiAgICAvLyBpZiAodXBkYXRlSG92ZXJWYWx1ZSkge1xuICAgIGNvbnN0IGhvdmVyVmFsdWUgPSB0aGlzLmlzRGF0ZURpc2FibGVkKGhvdmVyRGF0ZSkgfHwgIXVwZGF0ZUhvdmVyVmFsdWUgPyBudWxsIDogaG92ZXJEYXRlO1xuICAgIHRoaXMuY2FsZW5kYXJTZXJ2aWNlLnVwZGF0ZSh7IGhvdmVyRGF0ZTogaG92ZXJWYWx1ZSB9KTtcbiAgICAvLyB9XG4gIH1cblxuICBoYW5kbGVZZWFyQ2VsbENsaWNrKHllYXI6IG51bWJlcikge1xuICAgIGlmICh0aGlzLnNlbGVjdGlvblR5cGUgPT09ICd5ZWFyJykge1xuICAgICAgbGV0IGRhdGUgPSBuZXcgRGF0ZSh5ZWFyLCAwLCAxLCAwLCAwLCAwLCAwKTtcbiAgICAgIGlmICh0aGlzLnJhbmdlICYmIHRoaXMuc3RhcnREYXRlICYmICF0aGlzLmVuZERhdGUpIHtcbiAgICAgICAgZGF0ZSA9IG5ldyBEYXRlKGRhdGUuZ2V0RnVsbFllYXIoKSwgMTIsIDEsIDAsIDAsIC0xLCAwKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuaGFuZGxlRGF5Q2VsbENsaWNrKGRhdGUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBjYWxlbmRhckRhdGUgPSBuZXcgRGF0ZSh5ZWFyLCAwLCAxLCAwLCAwLCAwLCAwKTtcbiAgICB0aGlzLnZpZXcgPSAnbW9udGhzJztcbiAgICB0aGlzLmNhbGVuZGFyU2VydmljZS51cGRhdGUoeyB2aWV3OiB0aGlzLnZpZXcsIGNhbGVuZGFyRGF0ZTogY2FsZW5kYXJEYXRlIH0pO1xuXG4gIH1cblxuICBoYW5kbGVZZWFyQ2VsbEtleVVwKCRldmVudDogS2V5Ym9hcmRFdmVudCwgZGF0ZTogRGF0ZSkge1xuICAgIGlmIChbJ1NwYWNlJywgJ0VudGVyJ10uaW5jbHVkZXMoJGV2ZW50LmNvZGUpKSB7XG4gICAgICB0aGlzLmhhbmRsZVllYXJDZWxsQ2xpY2soZGF0ZS5nZXRGdWxsWWVhcigpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKFsnVGFiJywgJ0Fycm93UmlnaHQnLCAnQXJyb3dMZWZ0JywgJ0Fycm93VXAnLCAnQXJyb3dEb3duJ10uaW5jbHVkZXMoJGV2ZW50LmNvZGUpKSB7XG4gICAgICB0aGlzLmhhbmRsZUNlbGxNb3VzZUVudGVyKG5ldyBEYXRlKGRhdGUpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVNb250aENlbGxLZXlVcCgkZXZlbnQ6IEtleWJvYXJkRXZlbnQsIGRhdGU6IERhdGUpIHtcbiAgICBpZiAoWydTcGFjZScsICdFbnRlciddLmluY2x1ZGVzKCRldmVudC5jb2RlKSkge1xuICAgICAgdGhpcy5oYW5kbGVNb250aENlbGxDbGljayhkYXRlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKFsnVGFiJywgJ0Fycm93UmlnaHQnLCAnQXJyb3dMZWZ0JywgJ0Fycm93VXAnLCAnQXJyb3dEb3duJ10uaW5jbHVkZXMoJGV2ZW50LmNvZGUpKSB7XG4gICAgICB0aGlzLmhhbmRsZUNlbGxNb3VzZUVudGVyKGRhdGUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZU1vbnRoQ2VsbENsaWNrKHZhbHVlOiBEYXRlKSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uVHlwZSA9PT0gJ21vbnRoJykge1xuICAgICAgbGV0IGRhdGUgPSBuZXcgRGF0ZSh2YWx1ZS5nZXRGdWxsWWVhcigpLCB2YWx1ZS5nZXRNb250aCgpLCAxLCAwLCAwLCAwLCAwKTtcbiAgICAgIGlmICh0aGlzLnJhbmdlICYmIHRoaXMuc3RhcnREYXRlICYmICF0aGlzLmVuZERhdGUpIHtcbiAgICAgICAgZGF0ZSA9IG5ldyBEYXRlKGRhdGUuZ2V0RnVsbFllYXIoKSwgZGF0ZS5nZXRNb250aCgpICsgMSwgMSwgMCwgMCwgLTEsIDApO1xuICAgICAgfVxuICAgICAgdGhpcy5oYW5kbGVEYXlDZWxsQ2xpY2soZGF0ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zZXRDYWxlbmRhclBhZ2UoMCwgMCwgdmFsdWUuZ2V0TW9udGgoKSAtIHRoaXMuYWRkTW9udGhzKTtcbiAgICB0aGlzLnZpZXcgPSAnZGF5cyc7XG4gICAgdGhpcy5jYWxlbmRhclNlcnZpY2UudXBkYXRlKHsgdmlldzogdGhpcy52aWV3IH0pO1xuICB9XG5cbiAgc2V0Q2FsZW5kYXJQYWdlKHllYXJzOiBudW1iZXIsIG1vbnRocyA9IDAsIHNldE1vbnRoPzogbnVtYmVyKSB7XG4gICAgY29uc3QgeWVhciA9IHRoaXMuZGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgIGNvbnN0IG1vbnRoID0gdGhpcy5kYXRlLmdldE1vbnRoKCk7XG4gICAgY29uc3QgZCA9IG5ldyBEYXRlKHllYXIsIG1vbnRoLCAxLCAwLCAwLCAwLCAwKTtcblxuICAgIHllYXJzICYmIGQuc2V0RnVsbFllYXIoZC5nZXRGdWxsWWVhcigpICsgeWVhcnMpO1xuICAgIG1vbnRocyAmJiBkLnNldE1vbnRoKGQuZ2V0TW9udGgoKSArIG1vbnRocyk7XG4gICAgdHlwZW9mIHNldE1vbnRoID09PSAnbnVtYmVyJyAmJiBkLnNldE1vbnRoKHNldE1vbnRoKTtcblxuICAgIHRoaXMuY2FsZW5kYXJTZXJ2aWNlLnVwZGF0ZSh7IGNhbGVuZGFyRGF0ZTogZCB9KTtcbiAgfVxuXG4gIGhhbmRsZURheUNlbGxLZXlEb3duKCRldmVudDogS2V5Ym9hcmRFdmVudCwgZGF0ZTogRGF0ZSkge1xuXG4gICAgaWYgKCFbJ1RhYicsICdBcnJvd1JpZ2h0JywgJ0Fycm93TGVmdCcsICdBcnJvd1VwJywgJ0Fycm93RG93biddLmluY2x1ZGVzKCRldmVudC5jb2RlKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLmhhbmRsZUNlbGxNb3VzZUVudGVyKGRhdGUpO1xuXG4gICAgY29uc3QgZXZlbnRLZXkgPSAkZXZlbnQua2V5ID09PSAnVGFiJyA/ICgkZXZlbnQuc2hpZnRLZXkgPyAnQXJyb3dMZWZ0JyA6ICdBcnJvd1JpZ2h0JykgOiAkZXZlbnQua2V5O1xuXG4gICAgaWYgKHRoaXMubWF4RGF0ZSAmJiBkYXRlID49IGNvbnZlcnRUb0RhdGVPYmplY3QodGhpcy5tYXhEYXRlLCB0aGlzLnNlbGVjdGlvblR5cGUpICYmIChbJ0Fycm93UmlnaHQnLCAnQXJyb3dEb3duJ10uaW5jbHVkZXMoZXZlbnRLZXkpKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5taW5EYXRlICYmIGRhdGUgPD0gY29udmVydFRvRGF0ZU9iamVjdCh0aGlzLm1pbkRhdGUsIHRoaXMuc2VsZWN0aW9uVHlwZSkgJiYgKFsnQXJyb3dMZWZ0JywgJ0Fycm93VXAnXS5pbmNsdWRlcyhldmVudEtleSkpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IGVsZW1lbnQgPSAkZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuXG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uVHlwZSA9PT0gJ3dlZWsnICYmIHRoaXMudmlldyA9PT0gJ2RheXMnICYmIGVsZW1lbnQudGFiSW5kZXggPT09IC0xKSB7XG4gICAgICBlbGVtZW50ID0gZWxlbWVudC5jbG9zZXN0KCd0clt0YWJpbmRleD1cIjBcIl0nKSBhcyBIVE1MRWxlbWVudDtcbiAgICB9XG5cbiAgICBjb25zdCBlbGVtZW50cyA9IFsnd2VlayddLmluY2x1ZGVzKHRoaXMuc2VsZWN0aW9uVHlwZSkgJiYgdGhpcy52aWV3ID09PSAnZGF5cycgPyB0aGlzLmNhbGVuZGFyUm93cyA6IHRoaXMuY2FsZW5kYXJEYXlzO1xuXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IGxpc3QgPSBlbGVtZW50cy50b0FycmF5KClcbiAgICAgIC5tYXAoY2FsZW5kYXJDZWxsID0+IGNhbGVuZGFyQ2VsbC5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpXG4gICAgICAvLyAuZmlsdGVyKChlbGVtZW50KSA9PiB0aGlzLnNlbGVjdGlvblR5cGUgPT09ICd3ZWVrJyA/IGVsZW1lbnQ/LnRhYkluZGV4ID09PSAwIDogZWxlbWVudD8uY2xhc3NMaXN0LmNvbnRhaW5zKCdjdXJyZW50JykpXG4gICAgICAuZmlsdGVyKChlbGVtZW50KSA9PiBlbGVtZW50Py50YWJJbmRleCA9PT0gMCk7XG5cbiAgICBjb25zdCBpbmRleCA9IGxpc3QuaW5kZXhPZihlbGVtZW50KTtcbiAgICBjb25zdCBmaXJzdCA9IGluZGV4ID09PSAwO1xuICAgIGNvbnN0IGxhc3QgPSBpbmRleCA9PT0gbGlzdC5sZW5ndGggLSAxO1xuXG4gICAgY29uc3QgdG9Cb3VuZGFyeSA9IHtcbiAgICAgIHN0YXJ0OiBpbmRleCxcbiAgICAgIGVuZDogbGlzdC5sZW5ndGggLSAoaW5kZXggKyAxKVxuICAgIH07XG5cbiAgICBjb25zdCBnYXAgPSB7XG4gICAgICBBcnJvd1JpZ2h0OiAxLFxuICAgICAgQXJyb3dMZWZ0OiAtMSxcbiAgICAgIEFycm93VXA6IHRoaXMuc2VsZWN0aW9uVHlwZSA9PT0gJ3dlZWsnICYmIHRoaXMudmlldyA9PT0gJ2RheXMnID8gLTEgOiB0aGlzLnZpZXcgPT09ICdkYXlzJyA/IC03IDogLTMsXG4gICAgICBBcnJvd0Rvd246IHRoaXMuc2VsZWN0aW9uVHlwZSA9PT0gJ3dlZWsnICYmIHRoaXMudmlldyA9PT0gJ2RheXMnID8gMSA6IHRoaXMudmlldyA9PT0gJ2RheXMnID8gNyA6IDNcbiAgICB9O1xuXG4gICAgaWYgKFxuICAgICAgKGV2ZW50S2V5ID09PSAnQXJyb3dSaWdodCcgJiYgbGFzdCkgfHxcbiAgICAgIChldmVudEtleSA9PT0gJ0Fycm93RG93bicgJiYgdG9Cb3VuZGFyeS5lbmQgPCBnYXAuQXJyb3dEb3duKSB8fFxuICAgICAgKGV2ZW50S2V5ID09PSAnQXJyb3dMZWZ0JyAmJiBmaXJzdCkgfHxcbiAgICAgIChldmVudEtleSA9PT0gJ0Fycm93VXAnICYmIHRvQm91bmRhcnkuc3RhcnQgPCBNYXRoLmFicyhnYXAuQXJyb3dVcCkpXG4gICAgKSB7XG5cbiAgICAgIGVsZW1lbnRzLmNoYW5nZXMucGlwZShcbiAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuI2Rlc3Ryb3lSZWYpXG4gICAgICApLnN1YnNjcmliZSgoY2hhbmdlOiBRdWVyeUxpc3Q8Q2FsZW5kYXJSb3dEaXJlY3RpdmUgfCBDYWxlbmRhckRheURpcmVjdGl2ZT4pID0+IHtcblxuICAgICAgICBjb25zdCBfbGlzdCA9IGNoYW5nZVxuICAgICAgICAgIC50b0FycmF5KClcbiAgICAgICAgICAvLyAuZmlsdGVyKGVsZW1lbnQgPT4gdGhpcy5zZWxlY3Rpb25UeXBlID09PSAnd2VlaycgPyBlbGVtZW50Py5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQudGFiSW5kZXggPT09IDAgOiBlbGVtZW50Py5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCdjdXJyZW50JykpO1xuICAgICAgICAgIC5maWx0ZXIoZWxlbWVudCA9PiBlbGVtZW50Py5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQudGFiSW5kZXggPT09IDApO1xuXG4gICAgICAgIGlmIChfbGlzdC5sZW5ndGgpIHtcbiAgICAgICAgICBsZXQgZGF5VG9Gb2N1czogQ2FsZW5kYXJEYXlEaXJlY3RpdmUgfCBDYWxlbmRhclJvd0RpcmVjdGl2ZSB8IHVuZGVmaW5lZDtcbiAgICAgICAgICBzd2l0Y2ggKGV2ZW50S2V5KSB7XG4gICAgICAgICAgICBjYXNlICdBcnJvd1JpZ2h0Jzoge1xuICAgICAgICAgICAgICBkYXlUb0ZvY3VzID0gX2xpc3RbMF07XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAnQXJyb3dMZWZ0Jzoge1xuICAgICAgICAgICAgICBkYXlUb0ZvY3VzID0gX2xpc3RbX2xpc3QubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAnQXJyb3dEb3duJzoge1xuICAgICAgICAgICAgICBkYXlUb0ZvY3VzID0gX2xpc3RbZ2FwLkFycm93RG93biAtIChsaXN0Lmxlbmd0aCAtIGluZGV4KV07XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAnQXJyb3dVcCc6IHtcbiAgICAgICAgICAgICAgZGF5VG9Gb2N1cyA9IF9saXN0W19saXN0Lmxlbmd0aCAtIChNYXRoLmFicyhnYXAuQXJyb3dVcCkgKyAxIC0gKGluZGV4ICsgMSkpXTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghZGF5VG9Gb2N1cz8uZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdkYXlUb0ZvY3VzJywgZGF5VG9Gb2N1cz8uZGF0ZSk7XG4gICAgICAgICAgICBkYXlUb0ZvY3VzPy5mb2N1cygna2V5Ym9hcmQnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBpZiAodGhpcy52aWV3ID09PSAnZGF5cycpIHtcbiAgICAgICAgdGhpcy5zZXRDYWxlbmRhclBhZ2UoMCwgWydBcnJvd1JpZ2h0JywgJ0Fycm93RG93biddLmluY2x1ZGVzKGV2ZW50S2V5KSA/IDEgOiAtMSk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy52aWV3ID09PSAnbW9udGhzJykge1xuICAgICAgICB0aGlzLnNldENhbGVuZGFyUGFnZShbJ0Fycm93UmlnaHQnLCAnQXJyb3dEb3duJ10uaW5jbHVkZXMoZXZlbnRLZXkpID8gMSA6IC0xKTtcbiAgICAgICAgLy8gdGhpcy5jYWxlbmRhckRheXM/LnJlc2V0KHRoaXMuY2FsZW5kYXJEYXlzLnRvQXJyYXkoKSk7XG4gICAgICAgIC8vIHRoaXMuY2FsZW5kYXJEYXlzPy5ub3RpZnlPbkNoYW5nZXMoKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLnZpZXcgPT09ICd5ZWFycycpIHtcbiAgICAgICAgdGhpcy5zZXRDYWxlbmRhclBhZ2UoWydBcnJvd1JpZ2h0JywgJ0Fycm93RG93biddLmluY2x1ZGVzKGV2ZW50S2V5KSA/IDEyIDogLTEyKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCBuZXh0RWxlbWVudCA9IGxpc3RbaW5kZXggKyBnYXBbZXZlbnRLZXldXTtcbiAgICBpZiAobmV4dEVsZW1lbnQ/LnRhYkluZGV4ID09PSAwKSB7XG4gICAgICBuZXh0RWxlbWVudC5mb2N1cygpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSBpbmRleDsgaSA8IGxpc3QubGVuZ3RoOyBsaXN0Lmxlbmd0aCAmJiBbJ0Fycm93UmlnaHQnLCAnQXJyb3dEb3duJ10uaW5jbHVkZXMoZXZlbnRLZXkpID8gaSsrIDogaS0tKSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBjb25zdCBuZXh0RWxlbWVudCA9IGxpc3RbaSArIGdhcFtldmVudEtleV1dO1xuICAgICAgaWYgKG5leHRFbGVtZW50Py50YWJJbmRleCA9PT0gMCkge1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIG5leHRFbGVtZW50Py5mb2N1cygpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGlmICghbmV4dEVsZW1lbnQpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlQ2VsbE1vdXNlTGVhdmUoKSB7XG4gICAgdGhpcy5jYWxlbmRhclNlcnZpY2UudXBkYXRlKHsgaG92ZXJEYXRlOiBudWxsIH0pO1xuICB9XG5cbiAgaGFuZGxlRGF5Q2VsbEtleVVwKCRldmVudDogS2V5Ym9hcmRFdmVudCwgZGF0ZTogRGF0ZSkge1xuICAgIGlmIChbJ1NwYWNlJywgJ0VudGVyJ10uaW5jbHVkZXMoJGV2ZW50LmNvZGUpKSB7XG4gICAgICB0aGlzLmhhbmRsZURheUNlbGxDbGljayhkYXRlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKFsnVGFiJywgJ0Fycm93UmlnaHQnLCAnQXJyb3dMZWZ0JywgJ0Fycm93VXAnLCAnQXJyb3dEb3duJ10uaW5jbHVkZXMoJGV2ZW50LmNvZGUpKSB7XG4gICAgICB0aGlzLmhhbmRsZUNlbGxNb3VzZUVudGVyKGRhdGUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZURheUNlbGxDbGljayhkYXRlOiBEYXRlKSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uVHlwZSA9PT0gJ2RheScgJiYgdGhpcy5pc0RhdGVEaXNhYmxlZChkYXRlKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5yYW5nZSkge1xuICAgICAgdGhpcy5lbmREYXRlID0gbnVsbDtcbiAgICAgIHRoaXMuc3RhcnREYXRlID0gZGF0ZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zdGFydERhdGUgJiYgdGhpcy5lbmREYXRlKSB7XG4gICAgICB0aGlzLmNhbGVuZGFyRGF0ZSA9IG5ldyBEYXRlKGRhdGUuZ2V0RnVsbFllYXIoKSwgZGF0ZS5nZXRNb250aCgpLCAxLCAwLCAwLCAwLCAwKTtcbiAgICAgIHRoaXMuZW5kRGF0ZSA9IG51bGw7XG4gICAgICB0aGlzLnN0YXJ0RGF0ZSA9IG51bGw7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCEhdGhpcy5zdGFydERhdGUgJiYgIXRoaXMuZW5kRGF0ZSkge1xuICAgICAgaWYgKHRoaXMuc3RhcnREYXRlICYmIGRhdGUgPCB0aGlzLnN0YXJ0RGF0ZSkge1xuICAgICAgICB0aGlzLmVuZERhdGUgPSBudWxsO1xuICAgICAgICB0aGlzLnN0YXJ0RGF0ZSA9IGRhdGU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmVuZERhdGUgPSBkYXRlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmVuZERhdGUgPSBudWxsO1xuICAgICAgdGhpcy5zdGFydERhdGUgPSBkYXRlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnN0YXJ0RGF0ZSAmJiB0aGlzLmVuZERhdGUpIHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGlmIChpc0RhdGVJblJhbmdlRGlzYWJsZWQodGhpcy5zdGFydERhdGUsIHRoaXMuZW5kRGF0ZSwgdGhpcy5kaXNhYmxlZERhdGVzKSkge1xuICAgICAgICB0aGlzLnN0YXJ0RGF0ZSA9IG51bGw7XG4gICAgICAgIHRoaXMuZW5kRGF0ZSA9IG51bGw7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gbGV0IGRhdGUgPSBuZXcgRGF0ZSh0aGlzLnN0YXJ0RGF0ZSk7XG4gICAgICAvLyB3aGlsZSAoZGF0ZSA8IHRoaXMuZW5kRGF0ZSkge1xuICAgICAgLy8gICBkYXRlLnNldERhdGUoZGF0ZS5nZXREYXRlKCkgKyAxKTtcbiAgICAgIC8vICAgaWYgKHRoaXMuaXNEYXRlRGlzYWJsZWQoZGF0ZSkpIHtcbiAgICAgIC8vICAgICB0aGlzLnN0YXJ0RGF0ZSA9IG51bGw7XG4gICAgICAvLyAgICAgdGhpcy5lbmREYXRlID0gbnVsbDtcbiAgICAgIC8vICAgICBicmVhaztcbiAgICAgIC8vICAgfVxuICAgICAgLy8gfVxuICAgIH1cbiAgfVxuXG4gIGNhbGVuZGFyU3RhdGVTdWJzY3JpYmUoKTogdm9pZCB7XG4gICAgdGhpcy5jYWxlbmRhclNlcnZpY2UuY2FsZW5kYXJTdGF0ZSQucGlwZShcbiAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLiNkZXN0cm95UmVmKVxuICAgICkuc3Vic2NyaWJlKHN0YXRlID0+IHtcbiAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhzdGF0ZSk7XG5cbiAgICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICAgICAgLy8gaWYgKGtleSBpbiB0aGlzKSB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgdGhpc1trZXldID0gc3RhdGVba2V5XTtcbiAgICAgICAgLy8gfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZ2V0TW9udGhTdGFydChpbmRleDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKHRoaXMuY2FsZW5kYXJEYXRlLmdldEZ1bGxZZWFyKCksIGluZGV4LCAxLCAwLCAwLCAwLCAwKTtcbiAgfVxuXG4gIGdldE1vbnRoRW5kKGluZGV4OiBudW1iZXIpIHtcbiAgICByZXR1cm4gbmV3IERhdGUodGhpcy5jYWxlbmRhckRhdGUuZ2V0RnVsbFllYXIoKSwgaW5kZXggKyAxLCAxLCAwLCAwLCAtMSwgMCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaXNEYXRlSW5SYW5nZURpc2FibGVkID0gaXNEYXRlSW5SYW5nZURpc2FibGVkO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaXNEYXRlQmV0d2Vlbk1pbk1heCA9IGlzRGF0ZUJldHdlZW5NaW5NYXg7XG5cbiAgZ2V0WWVhclN0YXJ0KHllYXI6IG51bWJlcikge1xuICAgIHJldHVybiBuZXcgRGF0ZSh5ZWFyLCAwLCAxKTtcbiAgfVxuXG4gIGdldFllYXJFbmQoeWVhcjogbnVtYmVyKSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKHllYXIsIDExLCAxLCAwLCAwLCAtMSwgMCk7XG4gIH1cbn1cbiIsIjx0YWJsZT5cbiAgQGlmICh2aWV3ID09PSAnZGF5cycpIHtcbiAgICA8dGhlYWQ+XG4gICAgPHRyPlxuICAgICAgQGlmIChzaG93V2Vla051bWJlcikge1xuICAgICAgICA8dGggY2xhc3M9XCJjYWxlbmRhci1jZWxsXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLWhlYWRlci1jZWxsLWlubmVyXCI+e3sgd2Vla051bWJlcnNMYWJlbCB9fTwvZGl2PlxuICAgICAgICA8L3RoPlxuICAgICAgfVxuICAgICAgQGZvciAod2Vla0RheSBvZiB3ZWVrRGF5czsgdHJhY2sgd2Vla0RheS5kYXRlOyBsZXQgaSA9ICRpbmRleCkge1xuICAgICAgICA8dGggY2xhc3M9XCJjYWxlbmRhci1jZWxsXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLWhlYWRlci1jZWxsLWlubmVyXCI+XG4gICAgICAgICAgICB7eyB3ZWVrRGF5LmRhdGUgfCBjYWxlbmRhcldlZWtkYXk6d2Vla2RheUZvcm1hdDpsb2NhbGUgfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC90aD5cbiAgICAgIH1cbiAgICA8L3RyPlxuICAgIDwvdGhlYWQ+XG4gIH1cbiAgPHRib2R5IChtb3VzZWxlYXZlKT1cImhhbmRsZUNlbGxNb3VzZUxlYXZlKClcIj5cbiAgICBAc3dpdGNoICh2aWV3KSB7XG4gICAgICBAY2FzZSAoJ3llYXJzJykge1xuICAgICAgICBAZm9yICh5ZWFyc1JvdyBvZiBsaXN0T2ZZZWFycygpOyB0cmFjayB5ZWFyc1JvdzsgbGV0IHJvd0lkeCA9ICRpbmRleCkge1xuICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgIEBmb3IgKHllYXIgb2YgeWVhcnNSb3c7IHRyYWNrIHllYXI7IGxldCBpZHggPSAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgICAgI2NhbGVuZGFyWWVhcj1cImNDYWxlbmRhckRheVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIiFjYWxlbmRhclllYXIuZGlzYWJsZWQkKCkgJiYgaGFuZGxlWWVhckNlbGxDbGljayh5ZWFyKVwiXG4gICAgICAgICAgICAgICAgKGtleWRvd24pPVwiY2FsZW5kYXJZZWFyLmRhdGUgJiYgaGFuZGxlRGF5Q2VsbEtleURvd24oJGV2ZW50LCBjYWxlbmRhclllYXIuZGF0ZSlcIlxuICAgICAgICAgICAgICAgIChrZXl1cCk9XCJoYW5kbGVZZWFyQ2VsbEtleVVwKCRldmVudCwgY2FsZW5kYXJZZWFyLmRhdGUpXCJcbiAgICAgICAgICAgICAgICAobW91c2VlbnRlcik9XCJjYWxlbmRhclllYXIuZGF0ZSAmJiBoYW5kbGVDZWxsTW91c2VFbnRlcihjYWxlbmRhclllYXIuZGF0ZSlcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiY2FsZW5kYXJZZWFyLmRhdGUuZ2V0RnVsbFllYXIoKVwiXG4gICAgICAgICAgICAgICAgW2RhdGVdPVwiZ2V0WWVhclN0YXJ0KHllYXIpXCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ5ZWFyIHwgY2FsZW5kYXJDbGFzc1llYXJcIlxuICAgICAgICAgICAgICAgIFt0YWJpbmRleF09XCJjYWxlbmRhclllYXIuZGlzYWJsZWQkKCkgPyAtMSA6IDBcIlxuICAgICAgICAgICAgICAgIGNDYWxlbmRhckRheVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLWNlbGwtaW5uZXJcIj5cbiAgICAgICAgICAgICAgICAgIHt7IHllYXJOdW1iZXIoeWVhcikgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L3RyPlxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAY2FzZSAoJ21vbnRocycpIHtcbiAgICAgICAgQGZvciAobW9udGhzUm93IG9mIGxpc3RPZk1vbnRocygpOyB0cmFjayBtb250aHNSb3c7IGxldCByb3dJZHggPSAkaW5kZXgpIHtcbiAgICAgICAgICA8dHI+XG4gICAgICAgICAgICBAZm9yIChtb250aCBvZiBtb250aHNSb3c7IHRyYWNrIG1vbnRoOyBsZXQgaWR4ID0gJGluZGV4KSB7XG4gICAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICAgICNjYWxlbmRhck1vbnRoPVwiY0NhbGVuZGFyRGF5XCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiIWNhbGVuZGFyTW9udGguZGlzYWJsZWQkKCkgJiYgaGFuZGxlTW9udGhDZWxsQ2xpY2soY2FsZW5kYXJNb250aC5kYXRlKVwiXG4gICAgICAgICAgICAgICAgKGtleWRvd24pPVwiY2FsZW5kYXJNb250aC5kYXRlICYmIGhhbmRsZURheUNlbGxLZXlEb3duKCRldmVudCwgY2FsZW5kYXJNb250aC5kYXRlKVwiXG4gICAgICAgICAgICAgICAgKGtleXVwKT1cImhhbmRsZU1vbnRoQ2VsbEtleVVwKCRldmVudCwgY2FsZW5kYXJNb250aC5kYXRlKVwiXG4gICAgICAgICAgICAgICAgKG1vdXNlZW50ZXIpPVwiY2FsZW5kYXJNb250aC5kYXRlICYmIGhhbmRsZUNlbGxNb3VzZUVudGVyKGNhbGVuZGFyTW9udGguZGF0ZSlcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiY2FsZW5kYXJNb250aC5kYXRlLmdldEZ1bGxZZWFyKCkrJyAnK21vbnRoLm1vbnRoXCJcbiAgICAgICAgICAgICAgICBbZGF0ZV09XCJnZXRNb250aFN0YXJ0KHJvd0lkeCozK2lkeClcIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImNhbGVuZGFyRGF0ZSB8IGNhbGVuZGFyQ2xhc3NNb250aDoocm93SWR4KjMraWR4KVwiXG4gICAgICAgICAgICAgICAgW3RhYmluZGV4XT1cImNhbGVuZGFyTW9udGguZGlzYWJsZWQkKCkgPyAtMSA6IDBcIlxuICAgICAgICAgICAgICAgIGNDYWxlbmRhckRheVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLWNlbGwtaW5uZXJcIj5cbiAgICAgICAgICAgICAgICAgIHt7IG1vbnRoLm1vbnRoIH19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgfVxuXG4gICAgICB9XG4gICAgICBAZGVmYXVsdCB7XG4gICAgICAgIEBmb3IgKHdlZWsgb2YgbW9udGhEZXRhaWxzOyB0cmFjayB3ZWVrOyBsZXQgaSA9ICRpbmRleCkge1xuICAgICAgICAgIDx0ciAjY2FsZW5kYXJSb3c9XCJjQ2FsZW5kYXJSb3dcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0aW9uVHlwZSA9PT0gJ3dlZWsnICYmIChjYWxlbmRhclJvdy5jdXJyZW50KSAmJiBjYWxlbmRhclJvdy5kYXRlICYmIGhhbmRsZURheUNlbGxDbGljayhjYWxlbmRhclJvdy5kYXRlKVwiXG4gICAgICAgICAgICAgIChrZXlkb3duKT1cInNlbGVjdGlvblR5cGUgPT09ICd3ZWVrJyAmJiAoY2FsZW5kYXJSb3cuY3VycmVudCkgJiYgY2FsZW5kYXJSb3cuZGF0ZSAmJiBoYW5kbGVEYXlDZWxsS2V5RG93bigkZXZlbnQsIGNhbGVuZGFyUm93LmRhdGUpXCJcbiAgICAgICAgICAgICAgKGtleXVwKT1cInNlbGVjdGlvblR5cGUgPT09ICd3ZWVrJyAmJiAoY2FsZW5kYXJSb3cuY3VycmVudCkgJiYgY2FsZW5kYXJSb3cuZGF0ZSAmJiBoYW5kbGVEYXlDZWxsS2V5VXAoJGV2ZW50LCBjYWxlbmRhclJvdy5kYXRlKVwiXG4gICAgICAgICAgICAgIChtb3VzZWVudGVyKT1cInNlbGVjdGlvblR5cGUgPT09ICd3ZWVrJyAmJiBjYWxlbmRhclJvdy5kYXRlICYmIGhhbmRsZUNlbGxNb3VzZUVudGVyKGNhbGVuZGFyUm93LmRhdGUpXCJcbiAgICAgICAgICAgICAgW2NDYWxlbmRhclJvd109XCJ3ZWVrXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBAaWYgKHNob3dXZWVrTnVtYmVyKSB7XG4gICAgICAgICAgICAgIDx0aCBjbGFzcz1cImNhbGVuZGFyLWNlbGwtd2Vlay1udW1iZXJcIj5cbiAgICAgICAgICAgICAgICB7eyB3ZWVrLndlZWtOdW1iZXIgPT09IDAgPyA1MyA6IHdlZWsud2Vla051bWJlciB9fVxuICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGZvciAoZGF0ZU9iaiBvZiB3ZWVrLmRheXM7IHRyYWNrIGRhdGVPYmouZGF0ZTsgbGV0IGlkeCA9ICRpbmRleCkge1xuICAgICAgICAgICAgICBAaWYgKGRhdGVPYmoubW9udGggPT09ICdjdXJyZW50JyB8fCBzaG93QWRqYWNlbnREYXlzKSB7XG4gICAgICAgICAgICAgICAgPHRkICNjYWxlbmRhckNlbGw9XCJjQ2FsZW5kYXJEYXlcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0aW9uVHlwZSA9PT0gJ2RheScgJiYgKGRhdGVPYmoubW9udGggPT09ICdjdXJyZW50JyB8fCBzZWxlY3RBZGphY2VudERheXMpICYmIGhhbmRsZURheUNlbGxDbGljayhkYXRlT2JqLmRhdGUpXCJcbiAgICAgICAgICAgICAgICAgICAgKGtleWRvd24pPVwic2VsZWN0aW9uVHlwZSA9PT0gJ2RheScgJiYgKGRhdGVPYmoubW9udGggPT09ICdjdXJyZW50JyB8fCBzZWxlY3RBZGphY2VudERheXMpICYmIGhhbmRsZURheUNlbGxLZXlEb3duKCRldmVudCwgZGF0ZU9iai5kYXRlKVwiXG4gICAgICAgICAgICAgICAgICAgIChrZXl1cCk9XCJzZWxlY3Rpb25UeXBlID09PSAnZGF5JyAmJiAoZGF0ZU9iai5tb250aCA9PT0gJ2N1cnJlbnQnIHx8IHNlbGVjdEFkamFjZW50RGF5cykgJiYgaGFuZGxlRGF5Q2VsbEtleVVwKCRldmVudCwgZGF0ZU9iai5kYXRlKVwiXG4gICAgICAgICAgICAgICAgICAgIChtb3VzZWVudGVyKT1cInNlbGVjdGlvblR5cGUgPT09ICdkYXknICYmIChkYXRlT2JqLm1vbnRoID09PSAnY3VycmVudCcgfHwgc2VsZWN0QWRqYWNlbnREYXlzKSAmJiBoYW5kbGVDZWxsTW91c2VFbnRlcihkYXRlT2JqLmRhdGUpXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJkYXRlT2JqLmRhdGUgfCBjYWxlbmRhckRheVRpdGxlOmxvY2FsZVwiXG4gICAgICAgICAgICAgICAgICAgIFtkYXRlXT1cImRhdGVPYmouZGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIFttb250aF09XCJkYXRlT2JqLm1vbnRoXCJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiZGF0ZU9iaiB8IGNhbGVuZGFyQ2xhc3NEYXk6e21pbkRhdGUsIG1heERhdGUsIGRpc2FibGVkRGF0ZXMsIGRhdGVGaWx0ZXJ9XCJcbiAgICAgICAgICAgICAgICAgICAgW3RhYmluZGV4XT1cInNlbGVjdGlvblR5cGUgPT09ICdkYXknICYmIChkYXRlT2JqLm1vbnRoID09PSAnY3VycmVudCcgfHwgc2VsZWN0QWRqYWNlbnREYXlzKSAmJiAhaXNEYXRlRGlzYWJsZWQoZGF0ZU9iai5kYXRlKSA/IDAgOiAtMVwiXG4gICAgICAgICAgICAgICAgICAgIGNDYWxlbmRhckRheVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1jZWxsLWlubmVyXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IGRhdGVPYmouZGF0ZSB8IGNhbGVuZGFyRGF5OmRheUZvcm1hdDpsb2NhbGUgfX1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImNhbGVuZGFyLWNlbGxcIj48L3RkPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgfVxuXG4gICAgICB9XG4gICAgfVxuXG4gIDwvdGJvZHk+XG48L3RhYmxlPlxuXG4iXX0=
|