@fundamental-ngx/core 0.45.1 → 0.46.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/busy-indicator/busy-indicator-extended/busy-indicator-extended.directive.d.ts +1 -1
- package/busy-indicator/busy-indicator.component.d.ts +2 -2
- package/busy-indicator/busy-indicator.module.d.ts +4 -4
- package/calendar/calendar-directives.d.ts +1 -1
- package/calendar/calendar-header/calendar-header.component.d.ts +2 -6
- package/calendar/calendar-views/calendar-aggregated-year-view/calendar-aggregated-year-view.component.d.ts +1 -1
- package/calendar/calendar-views/calendar-day-view/calendar-day-view.component.d.ts +27 -32
- package/calendar/calendar-views/calendar-month-view/calendar-month-view.component.d.ts +1 -1
- package/calendar/calendar-views/calendar-year-view/calendar-year-view.component.d.ts +1 -1
- package/calendar/calendar.component.d.ts +7 -8
- package/calendar/calendar.module.d.ts +2 -5
- package/carousel/carousel-item/carousel-item.component.d.ts +1 -1
- package/carousel/carousel-item.directive.d.ts +1 -1
- package/carousel/carousel.component.d.ts +8 -1
- package/carousel/carousel.directive.d.ts +1 -1
- package/carousel/carousel.module.d.ts +1 -5
- package/checkbox/checkbox/checkbox.component.d.ts +19 -6
- package/checkbox/checkbox.module.d.ts +3 -5
- package/combobox/combobox-mobile/combobox-mobile.component.d.ts +2 -1
- package/date-picker/date-picker-mobile/date-picker-mobile.component.d.ts +31 -0
- package/date-picker/date-picker.component.d.ts +46 -16
- package/date-picker/date-picker.model.d.ts +11 -0
- package/date-picker/date-picker.module.d.ts +2 -12
- package/date-picker/index.d.ts +2 -0
- package/date-picker/tokens.d.ts +5 -0
- package/datetime-picker/datetime-picker-mobile/datetime-picker-mobile.component.d.ts +29 -0
- package/datetime-picker/datetime-picker.component.d.ts +34 -12
- package/datetime-picker/datetime-picker.model.d.ts +9 -0
- package/datetime-picker/datetime-picker.module.d.ts +2 -14
- package/datetime-picker/index.d.ts +2 -0
- package/datetime-picker/tokens.d.ts +5 -0
- package/dialog/dialog.module.d.ts +1 -1
- package/dialog/utils/dialog-ref.class.d.ts +15 -5
- package/esm2022/action-bar/action-bar.component.mjs +2 -2
- package/esm2022/action-sheet/action-sheet.component.mjs +2 -2
- package/esm2022/avatar/avatar.component.mjs +2 -2
- package/esm2022/avatar-group/avatar-group.component.mjs +2 -2
- package/esm2022/bar/bar.component.mjs +2 -2
- package/esm2022/breadcrumb/breadcrumb.component.mjs +2 -2
- package/esm2022/busy-indicator/busy-indicator-extended/busy-indicator-extended.directive.mjs +4 -3
- package/esm2022/busy-indicator/busy-indicator.component.mjs +5 -5
- package/esm2022/busy-indicator/busy-indicator.module.mjs +3 -4
- package/esm2022/button/button.component.mjs +2 -2
- package/esm2022/calendar/calendar-directives.mjs +4 -3
- package/esm2022/calendar/calendar-header/calendar-header.component.mjs +7 -15
- package/esm2022/calendar/calendar-views/calendar-aggregated-year-view/calendar-aggregated-year-view.component.mjs +6 -5
- package/esm2022/calendar/calendar-views/calendar-day-view/calendar-day-view.component.mjs +21 -30
- package/esm2022/calendar/calendar-views/calendar-month-view/calendar-month-view.component.mjs +6 -5
- package/esm2022/calendar/calendar-views/calendar-year-view/calendar-year-view.component.mjs +6 -5
- package/esm2022/calendar/calendar.component.mjs +17 -13
- package/esm2022/calendar/calendar.module.mjs +9 -9
- package/esm2022/card/card-footer.component.mjs +3 -3
- package/esm2022/card/card.component.mjs +2 -2
- package/esm2022/carousel/carousel-item/carousel-item.component.mjs +4 -4
- package/esm2022/carousel/carousel-item.directive.mjs +4 -3
- package/esm2022/carousel/carousel.component.mjs +19 -6
- package/esm2022/carousel/carousel.directive.mjs +4 -3
- package/esm2022/carousel/carousel.module.mjs +4 -9
- package/esm2022/checkbox/checkbox/checkbox.component.mjs +42 -17
- package/esm2022/checkbox/checkbox.module.mjs +4 -7
- package/esm2022/combobox/combobox-mobile/combobox-mobile.component.mjs +3 -2
- package/esm2022/date-picker/date-picker-mobile/date-picker-mobile.component.mjs +96 -0
- package/esm2022/date-picker/date-picker.component.mjs +142 -40
- package/esm2022/date-picker/date-picker.model.mjs +2 -0
- package/esm2022/date-picker/date-picker.module.mjs +6 -49
- package/esm2022/date-picker/index.mjs +3 -1
- package/esm2022/date-picker/tokens.mjs +4 -0
- package/esm2022/datetime-picker/datetime-picker-mobile/datetime-picker-mobile.component.mjs +96 -0
- package/esm2022/datetime-picker/datetime-picker.component.mjs +120 -36
- package/esm2022/datetime-picker/datetime-picker.model.mjs +2 -0
- package/esm2022/datetime-picker/datetime-picker.module.mjs +6 -57
- package/esm2022/datetime-picker/index.mjs +3 -1
- package/esm2022/datetime-picker/tokens.mjs +4 -0
- package/esm2022/dialog/dialog-body/dialog-body.component.mjs +4 -3
- package/esm2022/dialog/dialog.component.mjs +2 -2
- package/esm2022/dialog/dialog.module.mjs +8 -5
- package/esm2022/dialog/utils/dialog-ref.class.mjs +13 -8
- package/esm2022/dynamic-page/dynamic-page-header/actions/dynamic-page-title-content.component.mjs +1 -1
- package/esm2022/dynamic-page/dynamic-page.component.mjs +2 -2
- package/esm2022/dynamic-side-content/dynamic-side-content.component.mjs +2 -2
- package/esm2022/facets/facet/facet.component.mjs +2 -2
- package/esm2022/feed-input/feed-input.component.mjs +2 -2
- package/esm2022/feed-list-item/components/list/feed-list.component.mjs +2 -2
- package/esm2022/file-uploader/file-uploader.component.mjs +2 -2
- package/esm2022/fixed-card-layout/fixed-card-layout.component.mjs +2 -2
- package/esm2022/flexible-column-layout/flexible-column-layout.component.mjs +2 -2
- package/esm2022/form/fieldset/fieldset.component.mjs +2 -2
- package/esm2022/form/form-control/form-control.component.mjs +2 -2
- package/esm2022/form/form-group/form-group.component.mjs +2 -2
- package/esm2022/form/form-header/form-header.component.mjs +2 -2
- package/esm2022/form/form-item/form-item.component.mjs +2 -2
- package/esm2022/form/form-label/form-label.component.mjs +2 -2
- package/esm2022/form/form-message/form-message.component.mjs +2 -2
- package/esm2022/grid-list/components/grid-list/grid-list.component.mjs +2 -2
- package/esm2022/grid-list/components/grid-list-filter-bar/grid-list-filter-bar.component.mjs +1 -1
- package/esm2022/grid-list/components/grid-list-title-bar/grid-list-title-bar.component.mjs +1 -1
- package/esm2022/icon/icon.component.mjs +2 -2
- package/esm2022/illustrated-message/illustrated-message.component.mjs +2 -2
- package/esm2022/info-label/info-label.component.mjs +2 -2
- package/esm2022/input-group/input-group.component.mjs +2 -2
- package/esm2022/layout-grid/layout-grid.component.mjs +2 -2
- package/esm2022/layout-panel/layout-panel.component.mjs +2 -2
- package/esm2022/link/link.component.mjs +9 -9
- package/esm2022/link/link.module.mjs +4 -7
- package/esm2022/list/directives/list-secondary.directive.mjs +21 -8
- package/esm2022/list/list-navigation-item/list-navigation-item.component.mjs +2 -2
- package/esm2022/list/list.component.mjs +2 -2
- package/esm2022/list/list.module.mjs +3 -5
- package/esm2022/menu/menu.component.mjs +2 -2
- package/esm2022/message-box/message-box.component.mjs +2 -2
- package/esm2022/message-page/message-page.component.mjs +2 -2
- package/esm2022/message-strip/alert/message-strip-alert/message-strip-alert.component.mjs +2 -2
- package/esm2022/message-strip/alert/message-strip-configuration-type.mjs +1 -1
- package/esm2022/message-strip/index.mjs +3 -1
- package/esm2022/message-strip/message-strip-icon.directive.mjs +18 -0
- package/esm2022/message-strip/message-strip-indication-color.mjs +7 -0
- package/esm2022/message-strip/message-strip.component.mjs +36 -5
- package/esm2022/message-strip/message-strip.module.mjs +5 -4
- package/esm2022/message-toast/message-toast.component.mjs +3 -3
- package/esm2022/micro-process-flow/components/micro-process-flow/micro-process-flow.component.mjs +2 -2
- package/esm2022/mobile-mode/mobile-mode.class.mjs +3 -1
- package/esm2022/multi-combobox/multi-combobox.component.mjs +2 -2
- package/esm2022/multi-combobox/select-all-toggler/select-all-toggler.component.mjs +1 -1
- package/esm2022/multi-input/multi-input.component.mjs +1 -1
- package/esm2022/notification/notification/notification.component.mjs +2 -2
- package/esm2022/object-identifier/object-identifier.component.mjs +2 -2
- package/esm2022/object-marker/object-marker.component.mjs +2 -2
- package/esm2022/object-number/object-number.component.mjs +2 -2
- package/esm2022/object-status/object-status.component.mjs +2 -2
- package/esm2022/pagination/pagination.component.mjs +2 -2
- package/esm2022/panel/panel.component.mjs +2 -2
- package/esm2022/popover/popover-body/popover-body-directives/popover-body-footer.directive.mjs +4 -3
- package/esm2022/popover/popover-body/popover-body-directives/popover-body-header.directive.mjs +4 -3
- package/esm2022/popover/popover-body/popover-body.component.mjs +8 -11
- package/esm2022/popover/popover-container/popover-container.directive.mjs +4 -3
- package/esm2022/popover/popover-control/popover-control.component.mjs +3 -3
- package/esm2022/popover/popover-mobile/popover-mobile.component.mjs +10 -7
- package/esm2022/popover/popover-mobile/popover-mobile.module.mjs +4 -5
- package/esm2022/popover/popover-trigger.directive.mjs +4 -3
- package/esm2022/popover/popover.component.mjs +5 -6
- package/esm2022/popover/popover.module.mjs +5 -10
- package/esm2022/product-switch/product-switch-body/product-switch-body.component.mjs +2 -2
- package/esm2022/progress-indicator/progress-indicator.component.mjs +2 -2
- package/esm2022/quick-view/quick-view/quick-view.component.mjs +2 -2
- package/esm2022/radio/radio-button/radio-button.component.mjs +3 -3
- package/esm2022/rating-indicator/components/rating-indicator.component.mjs +2 -2
- package/esm2022/resizable-card-layout/resizable-card-layout/resizable-card-item/resizable-card-item.component.mjs +2 -2
- package/esm2022/resizable-card-layout/resizable-card-layout/resizable-card-layout.component.mjs +2 -2
- package/esm2022/segmented-button/segmented-button.component.mjs +2 -2
- package/esm2022/select/select.component.mjs +2 -2
- package/esm2022/shared/interfaces/search-component.interface.mjs +1 -1
- package/esm2022/shared/interfaces/special-day-rule.mjs +1 -1
- package/esm2022/shellbar/product-menu/product-menu.component.mjs +12 -8
- package/esm2022/shellbar/shellbar-action/shellbar-action.component.mjs +8 -6
- package/esm2022/shellbar/shellbar-actions/shellbar-actions.component.mjs +8 -9
- package/esm2022/shellbar/shellbar-actions-mobile/shellbar-actions-mobile.component.mjs +9 -7
- package/esm2022/shellbar/shellbar-logo/shellbar-logo.component.mjs +3 -3
- package/esm2022/shellbar/shellbar-sidenav.directive.mjs +4 -3
- package/esm2022/shellbar/shellbar-subtitle/shellbar-subtitle.component.mjs +3 -3
- package/esm2022/shellbar/shellbar-title/shellbar-title.component.mjs +3 -3
- package/esm2022/shellbar/shellbar.component.mjs +10 -9
- package/esm2022/shellbar/shellbar.module.mjs +10 -59
- package/esm2022/shellbar/user-menu/shellbar-user-menu.component.mjs +9 -6
- package/esm2022/side-navigation/side-navigation.component.mjs +2 -2
- package/esm2022/skeleton/components/skeleton.component.mjs +2 -2
- package/esm2022/slider/slider-position.directive.mjs +19 -11
- package/esm2022/slider/slider.component.mjs +136 -79
- package/esm2022/slider/slider.model.mjs +2 -1
- package/esm2022/slider/slider.module.mjs +6 -6
- package/esm2022/split-button/split-button.component.mjs +2 -2
- package/esm2022/splitter/splitter.component.mjs +2 -2
- package/esm2022/status-indicator/status-indicator.component.mjs +2 -2
- package/esm2022/step-input/step-input.component.mjs +2 -2
- package/esm2022/switch/switch.component.mjs +2 -2
- package/esm2022/table/table-wrapper.component.mjs +2 -2
- package/esm2022/table/table.component.mjs +2 -2
- package/esm2022/tabs/tab-list.component.mjs +2 -2
- package/esm2022/tabs/tab-nav/tab-nav.component.mjs +2 -2
- package/esm2022/text/text.component.mjs +7 -7
- package/esm2022/text/text.module.mjs +4 -9
- package/esm2022/tile/tile.component.mjs +2 -2
- package/esm2022/time/time.component.mjs +2 -2
- package/esm2022/title/title.component.mjs +3 -3
- package/esm2022/title/title.module.mjs +4 -6
- package/esm2022/token/token.component.mjs +2 -2
- package/esm2022/token/tokenizer.component.mjs +2 -2
- package/esm2022/toolbar/deprecated-toolbar-size.directive.mjs +4 -3
- package/esm2022/toolbar/toolbar-form-label.directive.mjs +4 -3
- package/esm2022/toolbar/toolbar-item.directive.mjs +4 -3
- package/esm2022/toolbar/toolbar-label.directive.mjs +4 -3
- package/esm2022/toolbar/toolbar-overflow-button-menu.directive.mjs +4 -3
- package/esm2022/toolbar/toolbar-overflow-button.directive.mjs +4 -3
- package/esm2022/toolbar/toolbar-separator.component.mjs +4 -3
- package/esm2022/toolbar/toolbar-spacer.directive.mjs +4 -3
- package/esm2022/toolbar/toolbar.component.mjs +39 -18
- package/esm2022/toolbar/toolbar.module.mjs +5 -10
- package/esm2022/tree/components/tree-item/tree-item.component.mjs +1 -1
- package/esm2022/tree/tree.component.mjs +2 -2
- package/esm2022/upload-collection/upload-collection.component.mjs +3 -3
- package/esm2022/vertical-navigation/vertical-navigation-main-navigation.component.mjs +2 -2
- package/esm2022/vertical-navigation/vertical-navigation.component.mjs +2 -2
- package/esm2022/wizard/wizard.component.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-action-bar.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-action-bar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-action-sheet.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-action-sheet.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-avatar-group.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-avatar-group.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-avatar.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-avatar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-bar.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-bar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-breadcrumb.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-breadcrumb.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-busy-indicator.mjs +9 -10
- package/fesm2022/fundamental-ngx-core-busy-indicator.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-button.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-button.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-calendar.mjs +91 -95
- package/fesm2022/fundamental-ngx-core-calendar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-card.mjs +4 -4
- package/fesm2022/fundamental-ngx-core-card.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-carousel.mjs +29 -19
- package/fesm2022/fundamental-ngx-core-carousel.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-checkbox.mjs +43 -20
- package/fesm2022/fundamental-ngx-core-checkbox.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-combobox.mjs +2 -1
- package/fesm2022/fundamental-ngx-core-combobox.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-date-picker.mjs +235 -86
- package/fesm2022/fundamental-ngx-core-date-picker.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-datetime-picker.mjs +211 -88
- package/fesm2022/fundamental-ngx-core-datetime-picker.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-dialog.mjs +23 -15
- package/fesm2022/fundamental-ngx-core-dialog.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-dynamic-page.mjs +3 -3
- package/fesm2022/fundamental-ngx-core-dynamic-page.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-dynamic-side-content.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-dynamic-side-content.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-facets.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-facets.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-feed-input.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-feed-input.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-feed-list-item.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-feed-list-item.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-file-uploader.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-file-uploader.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-fixed-card-layout.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-fixed-card-layout.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-flexible-column-layout.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-flexible-column-layout.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-form.mjs +14 -14
- package/fesm2022/fundamental-ngx-core-form.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-grid-list.mjs +4 -4
- package/fesm2022/fundamental-ngx-core-grid-list.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-icon.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-icon.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-illustrated-message.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-illustrated-message.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-info-label.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-info-label.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-input-group.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-input-group.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-layout-grid.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-layout-grid.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-layout-panel.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-layout-panel.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-link.mjs +10 -12
- package/fesm2022/fundamental-ngx-core-link.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-list.mjs +26 -17
- package/fesm2022/fundamental-ngx-core-list.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-menu.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-menu.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-message-box.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-message-box.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-message-page.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-message-page.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-message-strip.mjs +62 -9
- package/fesm2022/fundamental-ngx-core-message-strip.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-message-toast.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-message-toast.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-micro-process-flow.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-micro-process-flow.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-mobile-mode.mjs +2 -0
- package/fesm2022/fundamental-ngx-core-mobile-mode.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-multi-combobox.mjs +3 -3
- package/fesm2022/fundamental-ngx-core-multi-combobox.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-multi-input.mjs +1 -1
- package/fesm2022/fundamental-ngx-core-multi-input.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-notification.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-notification.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-object-identifier.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-object-identifier.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-object-marker.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-object-marker.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-object-number.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-object-number.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-object-status.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-object-status.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-pagination.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-pagination.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-panel.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-panel.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-popover.mjs +36 -38
- package/fesm2022/fundamental-ngx-core-popover.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-product-switch.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-product-switch.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-progress-indicator.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-progress-indicator.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-quick-view.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-quick-view.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-radio.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-radio.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-rating-indicator.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-rating-indicator.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-resizable-card-layout.mjs +4 -4
- package/fesm2022/fundamental-ngx-core-resizable-card-layout.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-segmented-button.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-segmented-button.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-select.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-select.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-shellbar.mjs +93 -132
- package/fesm2022/fundamental-ngx-core-shellbar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-side-navigation.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-side-navigation.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-skeleton.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-skeleton.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-slider.mjs +158 -96
- package/fesm2022/fundamental-ngx-core-slider.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-split-button.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-split-button.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-splitter.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-splitter.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-status-indicator.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-status-indicator.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-step-input.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-step-input.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-switch.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-switch.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-table.mjs +4 -4
- package/fesm2022/fundamental-ngx-core-table.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-tabs.mjs +4 -4
- package/fesm2022/fundamental-ngx-core-tabs.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-text.mjs +9 -14
- package/fesm2022/fundamental-ngx-core-text.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-tile.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-tile.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-time.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-time.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-title.mjs +5 -7
- package/fesm2022/fundamental-ngx-core-title.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-token.mjs +4 -4
- package/fesm2022/fundamental-ngx-core-token.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-toolbar.mjs +80 -56
- package/fesm2022/fundamental-ngx-core-toolbar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-tree.mjs +3 -3
- package/fesm2022/fundamental-ngx-core-tree.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-upload-collection.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-upload-collection.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-vertical-navigation.mjs +4 -4
- package/fesm2022/fundamental-ngx-core-vertical-navigation.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-wizard.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-wizard.mjs.map +1 -1
- package/fundamental-ngx-core-v0.46.0-rc.1.tgz +0 -0
- package/link/link.component.d.ts +1 -1
- package/link/link.module.d.ts +1 -3
- package/list/directives/list-secondary.directive.d.ts +16 -3
- package/list/list.module.d.ts +20 -20
- package/message-strip/alert/message-strip-configuration-type.d.ts +2 -0
- package/message-strip/index.d.ts +2 -0
- package/message-strip/message-strip-icon.directive.d.ts +9 -0
- package/message-strip/message-strip-indication-color.d.ts +4 -0
- package/message-strip/message-strip.component.d.ts +11 -1
- package/message-strip/message-strip.module.d.ts +2 -1
- package/mobile-mode/mobile-mode.class.d.ts +3 -1
- package/package.json +4 -4
- package/popover/popover-body/popover-body-directives/popover-body-footer.directive.d.ts +1 -1
- package/popover/popover-body/popover-body-directives/popover-body-header.directive.d.ts +1 -1
- package/popover/popover-body/popover-body.component.d.ts +1 -1
- package/popover/popover-container/popover-container.directive.d.ts +1 -1
- package/popover/popover-control/popover-control.component.d.ts +1 -1
- package/popover/popover-mobile/popover-mobile.component.d.ts +3 -3
- package/popover/popover-mobile/popover-mobile.module.d.ts +5 -5
- package/popover/popover-trigger.directive.d.ts +1 -1
- package/popover/popover.component.d.ts +1 -1
- package/popover/popover.module.d.ts +1 -5
- package/schematics/add-dependencies/index.js +6 -6
- package/shared/interfaces/search-component.interface.d.ts +1 -0
- package/shared/interfaces/special-day-rule.d.ts +1 -1
- package/shellbar/product-menu/product-menu.component.d.ts +1 -1
- package/shellbar/shellbar-action/shellbar-action.component.d.ts +1 -1
- package/shellbar/shellbar-actions/shellbar-actions.component.d.ts +1 -1
- package/shellbar/shellbar-actions-mobile/shellbar-actions-mobile.component.d.ts +1 -1
- package/shellbar/shellbar-logo/shellbar-logo.component.d.ts +1 -1
- package/shellbar/shellbar-sidenav.directive.d.ts +1 -1
- package/shellbar/shellbar-subtitle/shellbar-subtitle.component.d.ts +1 -1
- package/shellbar/shellbar-title/shellbar-title.component.d.ts +1 -1
- package/shellbar/shellbar.component.d.ts +1 -1
- package/shellbar/shellbar.module.d.ts +2 -14
- package/shellbar/user-menu/shellbar-user-menu.component.d.ts +1 -1
- package/slider/slider-position.directive.d.ts +6 -4
- package/slider/slider.component.d.ts +21 -13
- package/slider/slider.model.d.ts +2 -1
- package/slider/slider.module.d.ts +9 -9
- package/text/text.component.d.ts +1 -1
- package/text/text.module.d.ts +1 -5
- package/title/title.component.d.ts +1 -1
- package/title/title.module.d.ts +1 -2
- package/toolbar/deprecated-toolbar-size.directive.d.ts +1 -1
- package/toolbar/toolbar-form-label.directive.d.ts +1 -1
- package/toolbar/toolbar-item.directive.d.ts +1 -1
- package/toolbar/toolbar-label.directive.d.ts +1 -1
- package/toolbar/toolbar-overflow-button-menu.directive.d.ts +1 -1
- package/toolbar/toolbar-overflow-button.directive.d.ts +1 -1
- package/toolbar/toolbar-separator.component.d.ts +1 -1
- package/toolbar/toolbar-spacer.directive.d.ts +1 -1
- package/toolbar/toolbar.component.d.ts +9 -5
- package/toolbar/toolbar.module.d.ts +11 -15
- package/fundamental-ngx-core-v0.45.1.tgz +0 -0
package/esm2022/calendar/calendar-views/calendar-month-view/calendar-month-view.component.mjs
CHANGED
|
@@ -5,12 +5,13 @@ import { DATE_TIME_FORMATS, DatetimeAdapter } from '@fundamental-ngx/core/dateti
|
|
|
5
5
|
import { CalendarService } from '../../calendar.service';
|
|
6
6
|
import { DefaultCalendarActiveCellStrategy } from '../../models/common';
|
|
7
7
|
import { CalendarI18nLabels } from '../../i18n/calendar-i18n-labels';
|
|
8
|
+
import { ButtonModule } from '@fundamental-ngx/core/button';
|
|
9
|
+
import { NgFor } from '@angular/common';
|
|
8
10
|
import * as i0 from "@angular/core";
|
|
9
11
|
import * as i1 from "../../calendar.service";
|
|
10
12
|
import * as i2 from "@fundamental-ngx/core/datetime";
|
|
11
13
|
import * as i3 from "../../i18n/calendar-i18n-labels";
|
|
12
|
-
import * as i4 from "@
|
|
13
|
-
import * as i5 from "@fundamental-ngx/core/button";
|
|
14
|
+
import * as i4 from "@fundamental-ngx/core/button";
|
|
14
15
|
/** Component representing the month view of the calendar. */
|
|
15
16
|
export class CalendarMonthViewComponent {
|
|
16
17
|
/** @hidden */
|
|
@@ -231,13 +232,13 @@ export class CalendarMonthViewComponent {
|
|
|
231
232
|
this._focusElementBySelector(`#${this._getId(index)}`);
|
|
232
233
|
}
|
|
233
234
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: CalendarMonthViewComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.CalendarService }, { token: DATE_TIME_FORMATS }, { token: i2.DatetimeAdapter }, { token: i3.CalendarI18nLabels }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
234
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.0", type: CalendarMonthViewComponent, selector: "fd-calendar-month-view", inputs: { id: "id", monthSelected: "monthSelected", focusEscapeFunction: "focusEscapeFunction", year: "year" }, outputs: { monthClicked: "monthClicked" }, host: { properties: { "attr.id": "viewId" } }, usesOnChanges: true, ngImport: i0, template: "<
|
|
235
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.0", type: CalendarMonthViewComponent, isStandalone: true, selector: "fd-calendar-month-view", inputs: { id: "id", monthSelected: "monthSelected", focusEscapeFunction: "focusEscapeFunction", year: "year" }, outputs: { monthClicked: "monthClicked" }, host: { properties: { "attr.id": "viewId" } }, usesOnChanges: true, ngImport: i0, template: "<table\n class=\"fd-calendar__content fd-calendar__content--months\"\n role=\"grid\"\n [attr.aria-roledescription]=\"_viewRoleDescription\"\n>\n <tbody class=\"fd-calendar__group\" role=\"rowgroup\">\n <tr class=\"fd-calendar__row\" role=\"row\" *ngFor=\"let colMonths of _calendarMonthListGrid; let rowIndex = index\">\n <td\n class=\"fd-calendar__my-item\"\n role=\"gridcell\"\n *ngFor=\"let monthCell of colMonths; let colIndex = index\"\n [class.fd-calendar__my-item--current]=\"monthCell.current\"\n [class.is-active]=\"monthCell.selected\"\n [attr.tabIndex]=\"monthCell.tabIndex\"\n [attr.id]=\"monthCell.id\"\n [attr.aria-selected]=\"monthCell.selected\"\n [attr.aria-disabled]=\"monthCell.disabled\"\n [attr.data-fd-calendar-month]=\"monthCell.month\"\n (keydown)=\"_onKeydownMonthHandler($event, monthCell.index)\"\n (click)=\"selectMonth(monthCell, $event)\"\n >\n <button\n fd-button\n fdType=\"transparent\"\n class=\"fd-calendar__my-item-button\"\n [class.is-active]=\"monthCell.current\"\n tabindex=\"-1\"\n >\n <span\n class=\"fd-calendar__text\"\n [attr.aria-labelledby]=\"\n monthCell.id +\n '-aria-label ' +\n (monthCell.current ? _todayLabelId + ' ' : '') +\n (monthCell.selected ? _selectedDateLabelId : '')\n \"\n >\n {{ monthCell.label }}\n </span>\n </button>\n\n <span hidden aria-hidden=\"true\" [attr.id]=\"monthCell.id + '-aria-label'\">\n {{ monthCell.ariaLabel }}\n </span>\n </td>\n </tr>\n </tbody>\n</table>\n\n<!-- Hidden elements for aria purposes -->\n<div hidden aria-hidden=\"true\">\n <div [attr.id]=\"_todayLabelId\">{{ _todayAriaLabel }}</div>\n <div [attr.id]=\"_selectedDateLabelId\">{{ _selectedDateAriaLabel }}</div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i4.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
235
236
|
}
|
|
236
237
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: CalendarMonthViewComponent, decorators: [{
|
|
237
238
|
type: Component,
|
|
238
239
|
args: [{ selector: 'fd-calendar-month-view', encapsulation: ViewEncapsulation.None, host: {
|
|
239
240
|
'[attr.id]': 'viewId'
|
|
240
|
-
}, changeDetection: ChangeDetectionStrategy.OnPush, template: "<
|
|
241
|
+
}, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [NgFor, ButtonModule], template: "<table\n class=\"fd-calendar__content fd-calendar__content--months\"\n role=\"grid\"\n [attr.aria-roledescription]=\"_viewRoleDescription\"\n>\n <tbody class=\"fd-calendar__group\" role=\"rowgroup\">\n <tr class=\"fd-calendar__row\" role=\"row\" *ngFor=\"let colMonths of _calendarMonthListGrid; let rowIndex = index\">\n <td\n class=\"fd-calendar__my-item\"\n role=\"gridcell\"\n *ngFor=\"let monthCell of colMonths; let colIndex = index\"\n [class.fd-calendar__my-item--current]=\"monthCell.current\"\n [class.is-active]=\"monthCell.selected\"\n [attr.tabIndex]=\"monthCell.tabIndex\"\n [attr.id]=\"monthCell.id\"\n [attr.aria-selected]=\"monthCell.selected\"\n [attr.aria-disabled]=\"monthCell.disabled\"\n [attr.data-fd-calendar-month]=\"monthCell.month\"\n (keydown)=\"_onKeydownMonthHandler($event, monthCell.index)\"\n (click)=\"selectMonth(monthCell, $event)\"\n >\n <button\n fd-button\n fdType=\"transparent\"\n class=\"fd-calendar__my-item-button\"\n [class.is-active]=\"monthCell.current\"\n tabindex=\"-1\"\n >\n <span\n class=\"fd-calendar__text\"\n [attr.aria-labelledby]=\"\n monthCell.id +\n '-aria-label ' +\n (monthCell.current ? _todayLabelId + ' ' : '') +\n (monthCell.selected ? _selectedDateLabelId : '')\n \"\n >\n {{ monthCell.label }}\n </span>\n </button>\n\n <span hidden aria-hidden=\"true\" [attr.id]=\"monthCell.id + '-aria-label'\">\n {{ monthCell.ariaLabel }}\n </span>\n </td>\n </tr>\n </tbody>\n</table>\n\n<!-- Hidden elements for aria purposes -->\n<div hidden aria-hidden=\"true\">\n <div [attr.id]=\"_todayLabelId\">{{ _todayAriaLabel }}</div>\n <div [attr.id]=\"_selectedDateLabelId\">{{ _selectedDateAriaLabel }}</div>\n</div>\n" }]
|
|
241
242
|
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.CalendarService }, { type: undefined, decorators: [{
|
|
242
243
|
type: Inject,
|
|
243
244
|
args: [DATE_TIME_FORMATS]
|
|
@@ -252,4 +253,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
|
|
|
252
253
|
}], monthClicked: [{
|
|
253
254
|
type: Output
|
|
254
255
|
}] } });
|
|
255
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItbW9udGgtdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9jYWxlbmRhci9jYWxlbmRhci12aWV3cy9jYWxlbmRhci1tb250aC12aWV3L2NhbGVuZGFyLW1vbnRoLXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvY2FsZW5kYXIvY2FsZW5kYXItdmlld3MvY2FsZW5kYXItbW9udGgtdmlldy9jYWxlbmRhci1tb250aC12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixpQkFBaUIsRUFDakIsWUFBWSxFQUNaLFVBQVUsRUFHVixpQkFBaUIsRUFDakIsdUJBQXVCLEVBQ3ZCLE1BQU0sRUFHVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQW1CLGlCQUFpQixFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXJHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV6RCxPQUFPLEVBQUUsaUNBQWlDLEVBQThDLE1BQU0scUJBQXFCLENBQUM7QUFDcEgsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUNBQWlDLENBQUM7Ozs7Ozs7QUFFckUsNkRBQTZEO0FBVzdELE1BQU0sT0FBTywwQkFBMEI7SUE4Q25DLGNBQWM7SUFDZCxZQUNZLEtBQWlCLEVBQ2pCLGtCQUFxQyxFQUNyQyxnQkFBaUMsRUFDTixnQkFBaUMsRUFDNUQsZ0JBQW9DLEVBQ3BDLG1CQUF1QztRQUx2QyxVQUFLLEdBQUwsS0FB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LENBQUMsV0FBVyxDQUFDLENBQUM7YUFDakMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUVEOzs7T0FHRztJQUNLLGFBQWE7UUFDakIsT0FBeUIsRUFBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFFRCxjQUFjO0lBQ04sbUJBQW1CLENBQUMsS0FBYTtRQUNyQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMzRCxDQUFDOzhHQXJSUSwwQkFBMEIsNEdBbUR2QixpQkFBaUI7a0dBbkRwQiwwQkFBMEIsNlJDcEN2QyxtakZBd0RBOzsyRkRwQmEsMEJBQTBCO2tCQVZ0QyxTQUFTOytCQUNJLHdCQUF3QixpQkFHbkIsaUJBQWlCLENBQUMsSUFBSSxRQUMvQjt3QkFDRixXQUFXLEVBQUUsUUFBUTtxQkFDeEIsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU07OzBCQXFEMUMsTUFBTTsyQkFBQyxpQkFBaUI7MkdBaEQ3QixFQUFFO3NCQURELEtBQUs7Z0JBS04sYUFBYTtzQkFEWixLQUFLO2dCQUtOLG1CQUFtQjtzQkFEbEIsS0FBSztnQkFLTixJQUFJO3NCQURILEtBQUs7Z0JBS0csWUFBWTtzQkFEcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgRWxlbWVudFJlZixcbiAgICBPbkluaXQsXG4gICAgT25EZXN0cm95LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIEluamVjdCxcbiAgICBPbkNoYW5nZXMsXG4gICAgU2ltcGxlQ2hhbmdlc1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgRGF0ZVRpbWVGb3JtYXRzLCBEQVRFX1RJTUVfRk9STUFUUywgRGF0ZXRpbWVBZGFwdGVyIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2RhdGV0aW1lJztcblxuaW1wb3J0IHsgQ2FsZW5kYXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY2FsZW5kYXIuc2VydmljZSc7XG5pbXBvcnQgeyBDYWxlbmRhck1vbnRoIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2NhbGVuZGFyLW1vbnRoJztcbmltcG9ydCB7IERlZmF1bHRDYWxlbmRhckFjdGl2ZUNlbGxTdHJhdGVneSwgRXNjYXBlRm9jdXNGdW5jdGlvbiwgRm9jdXNhYmxlQ2FsZW5kYXJWaWV3IH0gZnJvbSAnLi4vLi4vbW9kZWxzL2NvbW1vbic7XG5pbXBvcnQgeyBDYWxlbmRhckkxOG5MYWJlbHMgfSBmcm9tICcuLi8uLi9pMThuL2NhbGVuZGFyLWkxOG4tbGFiZWxzJztcblxuLyoqIENvbXBvbmVudCByZXByZXNlbnRpbmcgdGhlIG1vbnRoIHZpZXcgb2YgdGhlIGNhbGVuZGFyLiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZC1jYWxlbmRhci1tb250aC12aWV3JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY2FsZW5kYXItbW9udGgtdmlldy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vY2FsZW5kYXItbW9udGgtdmlldy5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgaG9zdDoge1xuICAgICAgICAnW2F0dHIuaWRdJzogJ3ZpZXdJZCdcbiAgICB9LFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIENhbGVuZGFyTW9udGhWaWV3Q29tcG9uZW50PEQ+IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcywgRm9jdXNhYmxlQ2FsZW5kYXJWaWV3IHtcbiAgICAvKiogVGhlIGlkIG9mIHRoZSBjYWxlbmRhciBwYXNzZWQgZnJvbSB0aGUgcGFyZW50IGNvbXBvbmVudCAqL1xuICAgIEBJbnB1dCgpXG4gICAgaWQ6IHN0cmluZztcblxuICAgIC8qKiBBIG51bWJlciAoMS0xMikgcmVwcmVzZW50aW5nIHRoZSBzZWxlY3RlZCBtb250aCAqL1xuICAgIEBJbnB1dCgpXG4gICAgbW9udGhTZWxlY3RlZDogbnVtYmVyO1xuXG4gICAgLyoqIEEgZnVuY3Rpb24gdGhhdCBoYW5kbGVzIGVzY2FwZSBmb2N1cyAqL1xuICAgIEBJbnB1dCgpXG4gICAgZm9jdXNFc2NhcGVGdW5jdGlvbjogRXNjYXBlRm9jdXNGdW5jdGlvbjtcblxuICAgIC8qKiBBIHllYXIgdGhlIG1vbnRoIHZpZXcgaXMgcmVmZXJyaW5nIHRvICovXG4gICAgQElucHV0KClcbiAgICB5ZWFyOiBudW1iZXI7XG5cbiAgICAvKiogQW4gZXZlbnQgZmlyZWQgd2hlbiBhIG5ldyBtb250aCBpcyBzZWxlY3RlZCAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHJlYWRvbmx5IG1vbnRoQ2xpY2tlZDogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBNb250aCBncmlkIHRhYmxlXG4gICAgICovXG4gICAgX2NhbGVuZGFyTW9udGhMaXN0R3JpZDogQ2FsZW5kYXJNb250aFtdW107XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQSBudW1iZXIgb2Zmc2V0IHVzZWQgdG8gYWNoaWV2ZSB0aGUgMS0xMiByZXByZXNlbnRhdGlvbiBvZiB0aGUgY2FsZW5kYXJcbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9tb250aE9mZnNldDogbnVtYmVyID0gMTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2Ftb3VudE9mQ29sUGVyUm93OiBudW1iZXIgPSAzO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfYW1vdW50T2ZSb3dzOiBudW1iZXIgPSA0O1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEFuIFJ4SlMgU3ViamVjdCB0aGF0IHdpbGwga2lsbCB0aGUgZGF0YSBzdHJlYW0gdXBvbiBjb21wb25lbnTigJlzIGRlc3RydWN0aW9uIChmb3IgdW5zdWJzY3JpYmluZylcbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9vbkRlc3Ryb3kkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaW5pdGlhdGVkID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIF9lUmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIF9jaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgX2NhbGVuZGFyU2VydmljZTogQ2FsZW5kYXJTZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KERBVEVfVElNRV9GT1JNQVRTKSBwcml2YXRlIF9kYXRlVGltZUZvcm1hdHM6IERhdGVUaW1lRm9ybWF0cyxcbiAgICAgICAgcHJpdmF0ZSBfZGF0ZVRpbWVBZGFwdGVyOiBEYXRldGltZUFkYXB0ZXI8RD4sXG4gICAgICAgIHByaXZhdGUgX2NhbGVuZGFySTE4bkxhYmVsczogQ2FsZW5kYXJJMThuTGFiZWxzXG4gICAgKSB7fVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faW5pdGlhdGVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5fc2V0dXBLZXlib2FyZFNlcnZpY2UoKTtcbiAgICAgICAgdGhpcy5fY29uc3RydWN0TW9udGhHcmlkKCk7XG5cbiAgICAgICAgdGhpcy5fZGF0ZVRpbWVBZGFwdGVyLmxvY2FsZUNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9jb25zdHJ1Y3RNb250aEdyaWQoKTtcbiAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX2luaXRpYXRlZCAmJiAoJ21vbnRoU2VsZWN0ZWQnIGluIGNoYW5nZXMgfHwgJ3llYXInIGluIGNoYW5nZXMgfHwgJ2lkJyBpbiBjaGFuZ2VzKSkge1xuICAgICAgICAgICAgdGhpcy5fY29uc3RydWN0TW9udGhHcmlkKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9vbkRlc3Ryb3kkLm5leHQoKTtcbiAgICAgICAgdGhpcy5fb25EZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIC8qKiBHZXQgYSBudW1iZXIgKDEtMTIpIHJlcHJlc2VudGluZyB0aGUgY3VycmVudCBtb250aCAgKi9cbiAgICBnZXQgY3VycmVudE1vbnRoKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRlVGltZUFkYXB0ZXIuZ2V0TW9udGgodGhpcy5fZGF0ZVRpbWVBZGFwdGVyLnRvZGF5KCkpO1xuICAgIH1cblxuICAgIC8qKiAgR2V0dGVyIGZvciB0aGUgcHJpdmF0ZSBjbGFzcyBtZW1iZXIgX21vbnRoT2Zmc2V0ICovXG4gICAgZ2V0IG1vbnRoT2Zmc2V0KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tb250aE9mZnNldDtcbiAgICB9XG5cbiAgICAvKiogVmlldyBJRCAqL1xuICAgIGdldCB2aWV3SWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaWQgKyAnLW1vbnRoLXZpZXcnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBUb2RheSBjZWxsIGxhYmVsLlxuICAgICAqIElzIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCBjZWxsIGRhdGUgaXRzZWxmXG4gICAgICovXG4gICAgZ2V0IF90b2RheUFyaWFMYWJlbCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2FsZW5kYXJJMThuTGFiZWxzLnRvZGF5TGFiZWw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIFNlbGVjdGVkIGRhdGUgY2VsbCBsYWJlbC5cbiAgICAgKiBJcyB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggY2VsbCBkYXRlIGl0c2VsZlxuICAgICAqL1xuICAgIGdldCBfc2VsZWN0ZWREYXRlQXJpYUxhYmVsKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jYWxlbmRhckkxOG5MYWJlbHMuZGF0ZVNlbGVjdGVkTGFiZWw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIFZpZXcgZGVzY3JpcHRpb25cbiAgICAgKi9cbiAgICBnZXQgX3ZpZXdSb2xlRGVzY3JpcHRpb24oKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NhbGVuZGFySTE4bkxhYmVscy5jYWxlbmRhck1vbnRoVmlld0Rlc2NyaXB0aW9uO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBUb2RheSBjZWxsIGxhYmVsIElEXG4gICAgICovXG4gICAgZ2V0IF90b2RheUxhYmVsSWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmlld0lkICsgJy10b2RheS1sYWJlbCc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIFNlbGVjdGVkIGRhdGUgbGFiZWwgSURcbiAgICAgKi9cbiAgICBnZXQgX3NlbGVjdGVkRGF0ZUxhYmVsSWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmlld0lkICsgJy1zZWxlY3RlZC1kYXRlLWxhYmVsJztcbiAgICB9XG5cbiAgICAvKiogTWV0aG9kIGZvciBoYW5kbGluZyB0aGUgbW91c2UgY2xpY2sgZXZlbnQgd2hlbiBhIG1vbnRoIGlzIHNlbGVjdGVkICAqL1xuICAgIHNlbGVjdE1vbnRoKG1vbnRoQ2VsbDogQ2FsZW5kYXJNb250aCwgZXZlbnQ/OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmIChldmVudCkge1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5tb250aFNlbGVjdGVkID0gbW9udGhDZWxsLm1vbnRoO1xuICAgICAgICB0aGlzLm1vbnRoQ2xpY2tlZC5lbWl0KHRoaXMubW9udGhTZWxlY3RlZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0IGZvY3VzIG9uIG1vbnRoIGNlbGwuXG4gICAgICogSXQgY2FuIGJlIGEgc2VsZWN0ZWQgY2VsbCwgY3VycmVudCBtb250aCBjZWxsIG9yIGZpcnN0IGNlbGwgaW4gdGhlIGxpc3RcbiAgICAgKi9cbiAgICBzZXRGb2N1c09uQ2VsbCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY2VsbFRvRm9jdXMgPSBuZXcgRGVmYXVsdENhbGVuZGFyQWN0aXZlQ2VsbFN0cmF0ZWd5KCkuZ2V0QWN0aXZlQ2VsbCh0aGlzLl9nZXRNb250aExpc3QoKSk7XG4gICAgICAgIGlmICghY2VsbFRvRm9jdXM/LmlkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fZm9jdXNFbGVtZW50QnlTZWxlY3RvcihgIyR7Y2VsbFRvRm9jdXMuaWR9YCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIE1ldGhvZCBmb3IgaGFuZGxpbmcgdGhlIGtleWJvYXJkIGV2ZW50cyAoYTExeSlcbiAgICAgKi9cbiAgICBfb25LZXlkb3duTW9udGhIYW5kbGVyKGV2ZW50OiBLZXlib2FyZEV2ZW50LCBpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NhbGVuZGFyU2VydmljZS5vbktleWRvd25IYW5kbGVyKGV2ZW50LCBpbmRleCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIE1ldGhvZCB0aGF0IGFsbG93cyB0byBmb2N1cyBlbGVtZW50cyBpbnNpZGUgdGhpcyBjb21wb25lbnRcbiAgICAgKi9cbiAgICBfZm9jdXNFbGVtZW50QnlTZWxlY3RvcihlbGVtZW50U2VsZWN0b3I6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCBlbGVtZW50VG9Gb2N1czogSFRNTEVsZW1lbnQgPSB0aGlzLl9lUmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihlbGVtZW50U2VsZWN0b3IpO1xuICAgICAgICBpZiAoZWxlbWVudFRvRm9jdXM/LmZvY3VzKSB7XG4gICAgICAgICAgICBlbGVtZW50VG9Gb2N1cy5mb2N1cygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIE1ldGhvZCByZXR1cm5pbmcgaWQgb2YgbW9udGggY2VsbFxuICAgICAqL1xuICAgIF9nZXRJbmRleChyb3dJbmRleDogbnVtYmVyLCBjb2xJbmRleDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NhbGVuZGFyU2VydmljZS5nZXRJZChyb3dJbmRleCwgY29sSW5kZXgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAcGFyYW0gaW5kZXggbW9udGggZ3JpZCBjZWxsIGluZGV4XG4gICAgICovXG4gICAgX2dldElkKGluZGV4OiBudW1iZXIpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy52aWV3SWQgKyAnLW1vbnRoLScgKyBpbmRleDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogTWV0aG9kIHRoYXQgY2hlY2tzIGlmIHRoaXMgaXMgY3VycmVudCBtb250aFxuICAgICAqL1xuICAgIF9pc0N1cnJlbnQoaWQ6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gaWQgKyB0aGlzLl9tb250aE9mZnNldCA9PT0gdGhpcy5jdXJyZW50TW9udGg7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIE1ldGhvZCB0aGF0IGNoZWNrIGlmIHRoaXMgaXMgc2VsZWN0ZWQgbW9udGhcbiAgICAgKi9cbiAgICBfaXNTZWxlY3RlZChpZDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBpZCArIHRoaXMuX21vbnRoT2Zmc2V0ID09PSB0aGlzLm1vbnRoU2VsZWN0ZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIE1ldGhvZCB0aGF0IGNyZWF0ZSBtb250aCBncmlkIHdpdGggcmVxdWlyZWQgbWV0YSBkYXRhXG4gICAgICovXG4gICAgcHJpdmF0ZSBfY29uc3RydWN0TW9udGhHcmlkKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBtb250aE5hbWVzOiBzdHJpbmdbXSA9IHRoaXMuX2RhdGVUaW1lQWRhcHRlci5nZXRNb250aE5hbWVzKCdzaG9ydCcpO1xuXG4gICAgICAgIGNvbnN0IG1vbnRoTGlzdDogQ2FsZW5kYXJNb250aFtdID0gbW9udGhOYW1lcy5tYXAoKG1vbnRoTmFtZSwgaW5kZXgpOiBDYWxlbmRhck1vbnRoID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1vbnRoID0gaW5kZXggKyB0aGlzLm1vbnRoT2Zmc2V0O1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBtb250aCxcbiAgICAgICAgICAgICAgICBsYWJlbDogbW9udGhOYW1lLFxuICAgICAgICAgICAgICAgIGFyaWFMYWJlbDogdGhpcy5fZGF0ZVRpbWVBZGFwdGVyLmZvcm1hdChcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZGF0ZVRpbWVBZGFwdGVyLmNyZWF0ZURhdGUodGhpcy55ZWFyLCBtb250aCwgMSksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2RhdGVUaW1lRm9ybWF0cy5kaXNwbGF5Lm1vbnRoQTExeUxhYmVsXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBpbmRleCxcbiAgICAgICAgICAgICAgICBzZWxlY3RlZDogbW9udGggPT09IHRoaXMubW9udGhTZWxlY3RlZCxcbiAgICAgICAgICAgICAgICBjdXJyZW50OiBtb250aCA9PT0gdGhpcy5jdXJyZW50TW9udGgsXG4gICAgICAgICAgICAgICAgdGFiSW5kZXg6IG1vbnRoID09PSB0aGlzLm1vbnRoU2VsZWN0ZWQgPyAwIDogLTFcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX2NhbGVuZGFyTW9udGhMaXN0R3JpZCA9IFtdO1xuICAgICAgICAvKiogQ3JlYXRpbmcgMmQgZ3JpZCAqL1xuICAgICAgICB3aGlsZSAobW9udGhMaXN0Lmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5fY2FsZW5kYXJNb250aExpc3RHcmlkLnB1c2gobW9udGhMaXN0LnNwbGljZSgwLCB0aGlzLl9hbW91bnRPZkNvbFBlclJvdykpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fY2FsZW5kYXJNb250aExpc3RHcmlkLmZvckVhY2goKHJvdywgcm93SW5kZXgpID0+IHtcbiAgICAgICAgICAgIHJvdy5mb3JFYWNoKChtb250aENlbGwsIGNvbEluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgbW9udGhDZWxsLmlkID0gdGhpcy5fZ2V0SWQodGhpcy5fZ2V0SW5kZXgocm93SW5kZXgsIGNvbEluZGV4KSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIE1ldGhvZCB0byBwdXQgY29uZmlndXJhdGlvbiBhbmQgbGlzdGVuZXJzIG9uIGNhbGVuZGFyIGtleWJvYXJkIHNlcnZpY2VcbiAgICAgKi9cbiAgICBwcml2YXRlIF9zZXR1cEtleWJvYXJkU2VydmljZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY2FsZW5kYXJTZXJ2aWNlLnJvd0Ftb3VudCA9IHRoaXMuX2Ftb3VudE9mUm93cztcbiAgICAgICAgdGhpcy5fY2FsZW5kYXJTZXJ2aWNlLmNvbEFtb3VudCA9IHRoaXMuX2Ftb3VudE9mQ29sUGVyUm93O1xuICAgICAgICB0aGlzLl9jYWxlbmRhclNlcnZpY2UuZm9jdXNFc2NhcGVGdW5jdGlvbiA9IHRoaXMuZm9jdXNFc2NhcGVGdW5jdGlvbjtcblxuICAgICAgICB0aGlzLl9jYWxlbmRhclNlcnZpY2Uub25Gb2N1c0lkQ2hhbmdlXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChpbmRleCkgPT4gdGhpcy5fZm9jdXNPbkNlbGxCeUluZGV4KGluZGV4KSk7XG5cbiAgICAgICAgdGhpcy5fY2FsZW5kYXJTZXJ2aWNlLm9uS2V5U2VsZWN0XG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChpbmRleCkgPT4gdGhpcy5zZWxlY3RNb250aCh0aGlzLl9nZXRNb250aExpc3QoKVtpbmRleF0pKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogUmV0dXJucyB0cmFuc2Zvcm1lZCAxZCBhcnJheSBmcm9tIDJkIG1vbnRoIGdyaWQuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfZ2V0TW9udGhMaXN0KCk6IENhbGVuZGFyTW9udGhbXSB7XG4gICAgICAgIHJldHVybiAoPENhbGVuZGFyTW9udGhbXT5bXSkuY29uY2F0KC4uLnRoaXMuX2NhbGVuZGFyTW9udGhMaXN0R3JpZCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9mb2N1c09uQ2VsbEJ5SW5kZXgoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLl9mb2N1c0VsZW1lbnRCeVNlbGVjdG9yKGAjJHt0aGlzLl9nZXRJZChpbmRleCl9YCk7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZkLWNhbGVuZGFyX19tb250aHNcIj5cbiAgICA8dGFibGUgY2xhc3M9XCJmZC1jYWxlbmRhcl9fdGFibGVcIiByb2xlPVwiZ3JpZFwiIFthdHRyLmFyaWEtcm9sZWRlc2NyaXB0aW9uXT1cIl92aWV3Um9sZURlc2NyaXB0aW9uXCI+XG4gICAgICAgIDx0Ym9keSBjbGFzcz1cImZkLWNhbGVuZGFyX19ncm91cFwiIHJvbGU9XCJyb3dncm91cFwiPlxuICAgICAgICAgICAgPHRyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmZC1jYWxlbmRhcl9fcm93XCJcbiAgICAgICAgICAgICAgICByb2xlPVwicm93XCJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgY29sTW9udGhzIG9mIF9jYWxlbmRhck1vbnRoTGlzdEdyaWQ7IGxldCByb3dJbmRleCA9IGluZGV4XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmZC1jYWxlbmRhcl9faXRlbVwiXG4gICAgICAgICAgICAgICAgICAgIHJvbGU9XCJncmlkY2VsbFwiXG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBtb250aENlbGwgb2YgY29sTW9udGhzOyBsZXQgY29sSW5kZXggPSBpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5mZC1jYWxlbmRhcl9faXRlbS0tY3VycmVudF09XCJtb250aENlbGwuY3VycmVudFwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1hY3RpdmVdPVwibW9udGhDZWxsLnNlbGVjdGVkXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIudGFiSW5kZXhdPVwibW9udGhDZWxsLnRhYkluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuaWRdPVwibW9udGhDZWxsLmlkXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJtb250aENlbGwuc2VsZWN0ZWRcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cIm1vbnRoQ2VsbC5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtZmQtY2FsZW5kYXItbW9udGhdPVwibW9udGhDZWxsLm1vbnRoXCJcbiAgICAgICAgICAgICAgICAgICAgKGtleWRvd24pPVwiX29uS2V5ZG93bk1vbnRoSGFuZGxlcigkZXZlbnQsIG1vbnRoQ2VsbC5pbmRleClcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0TW9udGgobW9udGhDZWxsLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmZC1jYWxlbmRhcl9faXRlbS1idXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLWFjdGl2ZV09XCJtb250aENlbGwuY3VycmVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZkLWNhbGVuZGFyX190ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRoQ2VsbC5pZCArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctYXJpYS1sYWJlbCAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vbnRoQ2VsbC5jdXJyZW50ID8gX3RvZGF5TGFiZWxJZCArICcgJyA6ICcnKSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb250aENlbGwuc2VsZWN0ZWQgPyBfc2VsZWN0ZWREYXRlTGFiZWxJZCA6ICcnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgbW9udGhDZWxsLmxhYmVsIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGhpZGRlbiBhcmlhLWhpZGRlbj1cInRydWVcIiBbYXR0ci5pZF09XCJtb250aENlbGwuaWQgKyAnLWFyaWEtbGFiZWwnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBtb250aENlbGwuYXJpYUxhYmVsIH19XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPC90cj5cbiAgICAgICAgPC90Ym9keT5cbiAgICA8L3RhYmxlPlxuXG4gICAgPCEtLSBIaWRkZW4gZWxlbWVudHMgZm9yIGFyaWEgcHVycG9zZXMgLS0+XG4gICAgPGRpdiBoaWRkZW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgIDxkaXYgW2F0dHIuaWRdPVwiX3RvZGF5TGFiZWxJZFwiPnt7IF90b2RheUFyaWFMYWJlbCB9fTwvZGl2PlxuICAgICAgICA8ZGl2IFthdHRyLmlkXT1cIl9zZWxlY3RlZERhdGVMYWJlbElkXCI+e3sgX3NlbGVjdGVkRGF0ZUFyaWFMYWJlbCB9fTwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
256
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItbW9udGgtdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9jYWxlbmRhci9jYWxlbmRhci12aWV3cy9jYWxlbmRhci1tb250aC12aWV3L2NhbGVuZGFyLW1vbnRoLXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvY2FsZW5kYXIvY2FsZW5kYXItdmlld3MvY2FsZW5kYXItbW9udGgtdmlldy9jYWxlbmRhci1tb250aC12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixpQkFBaUIsRUFDakIsWUFBWSxFQUNaLFVBQVUsRUFHVixpQkFBaUIsRUFDakIsdUJBQXVCLEVBQ3ZCLE1BQU0sRUFHVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQW1CLGlCQUFpQixFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXJHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV6RCxPQUFPLEVBQUUsaUNBQWlDLEVBQThDLE1BQU0scUJBQXFCLENBQUM7QUFDcEgsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDckUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzVELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7O0FBRXhDLDZEQUE2RDtBQWE3RCxNQUFNLE9BQU8sMEJBQTBCO0lBOENuQyxjQUFjO0lBQ2QsWUFDWSxLQUFp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cHV0LFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBFbGVtZW50UmVmLFxuICAgIE9uSW5pdCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgSW5qZWN0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBTaW1wbGVDaGFuZ2VzXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBEYXRlVGltZUZvcm1hdHMsIERBVEVfVElNRV9GT1JNQVRTLCBEYXRldGltZUFkYXB0ZXIgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvZGF0ZXRpbWUnO1xuXG5pbXBvcnQgeyBDYWxlbmRhclNlcnZpY2UgfSBmcm9tICcuLi8uLi9jYWxlbmRhci5zZXJ2aWNlJztcbmltcG9ydCB7IENhbGVuZGFyTW9udGggfSBmcm9tICcuLi8uLi9tb2RlbHMvY2FsZW5kYXItbW9udGgnO1xuaW1wb3J0IHsgRGVmYXVsdENhbGVuZGFyQWN0aXZlQ2VsbFN0cmF0ZWd5LCBFc2NhcGVGb2N1c0Z1bmN0aW9uLCBGb2N1c2FibGVDYWxlbmRhclZpZXcgfSBmcm9tICcuLi8uLi9tb2RlbHMvY29tbW9uJztcbmltcG9ydCB7IENhbGVuZGFySTE4bkxhYmVscyB9IGZyb20gJy4uLy4uL2kxOG4vY2FsZW5kYXItaTE4bi1sYWJlbHMnO1xuaW1wb3J0IHsgQnV0dG9uTW9kdWxlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2J1dHRvbic7XG5pbXBvcnQgeyBOZ0ZvciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbi8qKiBDb21wb25lbnQgcmVwcmVzZW50aW5nIHRoZSBtb250aCB2aWV3IG9mIHRoZSBjYWxlbmRhci4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmQtY2FsZW5kYXItbW9udGgtdmlldycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NhbGVuZGFyLW1vbnRoLXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2NhbGVuZGFyLW1vbnRoLXZpZXcuY29tcG9uZW50LnNjc3MnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ1thdHRyLmlkXSc6ICd2aWV3SWQnXG4gICAgfSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtOZ0ZvciwgQnV0dG9uTW9kdWxlXVxufSlcbmV4cG9ydCBjbGFzcyBDYWxlbmRhck1vbnRoVmlld0NvbXBvbmVudDxEPiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMsIEZvY3VzYWJsZUNhbGVuZGFyVmlldyB7XG4gICAgLyoqIFRoZSBpZCBvZiB0aGUgY2FsZW5kYXIgcGFzc2VkIGZyb20gdGhlIHBhcmVudCBjb21wb25lbnQgKi9cbiAgICBASW5wdXQoKVxuICAgIGlkOiBzdHJpbmc7XG5cbiAgICAvKiogQSBudW1iZXIgKDEtMTIpIHJlcHJlc2VudGluZyB0aGUgc2VsZWN0ZWQgbW9udGggKi9cbiAgICBASW5wdXQoKVxuICAgIG1vbnRoU2VsZWN0ZWQ6IG51bWJlcjtcblxuICAgIC8qKiBBIGZ1bmN0aW9uIHRoYXQgaGFuZGxlcyBlc2NhcGUgZm9jdXMgKi9cbiAgICBASW5wdXQoKVxuICAgIGZvY3VzRXNjYXBlRnVuY3Rpb246IEVzY2FwZUZvY3VzRnVuY3Rpb247XG5cbiAgICAvKiogQSB5ZWFyIHRoZSBtb250aCB2aWV3IGlzIHJlZmVycmluZyB0byAqL1xuICAgIEBJbnB1dCgpXG4gICAgeWVhcjogbnVtYmVyO1xuXG4gICAgLyoqIEFuIGV2ZW50IGZpcmVkIHdoZW4gYSBuZXcgbW9udGggaXMgc2VsZWN0ZWQgKi9cbiAgICBAT3V0cHV0KClcbiAgICByZWFkb25seSBtb250aENsaWNrZWQ6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogTW9udGggZ3JpZCB0YWJsZVxuICAgICAqL1xuICAgIF9jYWxlbmRhck1vbnRoTGlzdEdyaWQ6IENhbGVuZGFyTW9udGhbXVtdO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEEgbnVtYmVyIG9mZnNldCB1c2VkIHRvIGFjaGlldmUgdGhlIDEtMTIgcmVwcmVzZW50YXRpb24gb2YgdGhlIGNhbGVuZGFyXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfbW9udGhPZmZzZXQ6IG51bWJlciA9IDE7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9hbW91bnRPZkNvbFBlclJvdzogbnVtYmVyID0gMztcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2Ftb3VudE9mUm93czogbnVtYmVyID0gNDtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBBbiBSeEpTIFN1YmplY3QgdGhhdCB3aWxsIGtpbGwgdGhlIGRhdGEgc3RyZWFtIHVwb24gY29tcG9uZW504oCZcyBkZXN0cnVjdGlvbiAoZm9yIHVuc3Vic2NyaWJpbmcpXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfb25EZXN0cm95JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2luaXRpYXRlZCA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBfZVJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIF9jYWxlbmRhclNlcnZpY2U6IENhbGVuZGFyU2VydmljZSxcbiAgICAgICAgQEluamVjdChEQVRFX1RJTUVfRk9STUFUUykgcHJpdmF0ZSBfZGF0ZVRpbWVGb3JtYXRzOiBEYXRlVGltZUZvcm1hdHMsXG4gICAgICAgIHByaXZhdGUgX2RhdGVUaW1lQWRhcHRlcjogRGF0ZXRpbWVBZGFwdGVyPEQ+LFxuICAgICAgICBwcml2YXRlIF9jYWxlbmRhckkxOG5MYWJlbHM6IENhbGVuZGFySTE4bkxhYmVsc1xuICAgICkge31cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2luaXRpYXRlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuX3NldHVwS2V5Ym9hcmRTZXJ2aWNlKCk7XG4gICAgICAgIHRoaXMuX2NvbnN0cnVjdE1vbnRoR3JpZCgpO1xuXG4gICAgICAgIHRoaXMuX2RhdGVUaW1lQWRhcHRlci5sb2NhbGVDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fY29uc3RydWN0TW9udGhHcmlkKCk7XG4gICAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9pbml0aWF0ZWQgJiYgKCdtb250aFNlbGVjdGVkJyBpbiBjaGFuZ2VzIHx8ICd5ZWFyJyBpbiBjaGFuZ2VzIHx8ICdpZCcgaW4gY2hhbmdlcykpIHtcbiAgICAgICAgICAgIHRoaXMuX2NvbnN0cnVjdE1vbnRoR3JpZCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fb25EZXN0cm95JC5uZXh0KCk7XG4gICAgICAgIHRoaXMuX29uRGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICAvKiogR2V0IGEgbnVtYmVyICgxLTEyKSByZXByZXNlbnRpbmcgdGhlIGN1cnJlbnQgbW9udGggICovXG4gICAgZ2V0IGN1cnJlbnRNb250aCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0ZVRpbWVBZGFwdGVyLmdldE1vbnRoKHRoaXMuX2RhdGVUaW1lQWRhcHRlci50b2RheSgpKTtcbiAgICB9XG5cbiAgICAvKiogIEdldHRlciBmb3IgdGhlIHByaXZhdGUgY2xhc3MgbWVtYmVyIF9tb250aE9mZnNldCAqL1xuICAgIGdldCBtb250aE9mZnNldCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fbW9udGhPZmZzZXQ7XG4gICAgfVxuXG4gICAgLyoqIFZpZXcgSUQgKi9cbiAgICBnZXQgdmlld0lkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmlkICsgJy1tb250aC12aWV3JztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogVG9kYXkgY2VsbCBsYWJlbC5cbiAgICAgKiBJcyB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggY2VsbCBkYXRlIGl0c2VsZlxuICAgICAqL1xuICAgIGdldCBfdG9kYXlBcmlhTGFiZWwoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NhbGVuZGFySTE4bkxhYmVscy50b2RheUxhYmVsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBTZWxlY3RlZCBkYXRlIGNlbGwgbGFiZWwuXG4gICAgICogSXMgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIGNlbGwgZGF0ZSBpdHNlbGZcbiAgICAgKi9cbiAgICBnZXQgX3NlbGVjdGVkRGF0ZUFyaWFMYWJlbCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2FsZW5kYXJJMThuTGFiZWxzLmRhdGVTZWxlY3RlZExhYmVsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBWaWV3IGRlc2NyaXB0aW9uXG4gICAgICovXG4gICAgZ2V0IF92aWV3Um9sZURlc2NyaXB0aW9uKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jYWxlbmRhckkxOG5MYWJlbHMuY2FsZW5kYXJNb250aFZpZXdEZXNjcmlwdGlvbjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogVG9kYXkgY2VsbCBsYWJlbCBJRFxuICAgICAqL1xuICAgIGdldCBfdG9kYXlMYWJlbElkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnZpZXdJZCArICctdG9kYXktbGFiZWwnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBTZWxlY3RlZCBkYXRlIGxhYmVsIElEXG4gICAgICovXG4gICAgZ2V0IF9zZWxlY3RlZERhdGVMYWJlbElkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnZpZXdJZCArICctc2VsZWN0ZWQtZGF0ZS1sYWJlbCc7XG4gICAgfVxuXG4gICAgLyoqIE1ldGhvZCBmb3IgaGFuZGxpbmcgdGhlIG1vdXNlIGNsaWNrIGV2ZW50IHdoZW4gYSBtb250aCBpcyBzZWxlY3RlZCAgKi9cbiAgICBzZWxlY3RNb250aChtb250aENlbGw6IENhbGVuZGFyTW9udGgsIGV2ZW50PzogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoZXZlbnQpIHtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubW9udGhTZWxlY3RlZCA9IG1vbnRoQ2VsbC5tb250aDtcbiAgICAgICAgdGhpcy5tb250aENsaWNrZWQuZW1pdCh0aGlzLm1vbnRoU2VsZWN0ZWQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldCBmb2N1cyBvbiBtb250aCBjZWxsLlxuICAgICAqIEl0IGNhbiBiZSBhIHNlbGVjdGVkIGNlbGwsIGN1cnJlbnQgbW9udGggY2VsbCBvciBmaXJzdCBjZWxsIGluIHRoZSBsaXN0XG4gICAgICovXG4gICAgc2V0Rm9jdXNPbkNlbGwoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNlbGxUb0ZvY3VzID0gbmV3IERlZmF1bHRDYWxlbmRhckFjdGl2ZUNlbGxTdHJhdGVneSgpLmdldEFjdGl2ZUNlbGwodGhpcy5fZ2V0TW9udGhMaXN0KCkpO1xuICAgICAgICBpZiAoIWNlbGxUb0ZvY3VzPy5pZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2ZvY3VzRWxlbWVudEJ5U2VsZWN0b3IoYCMke2NlbGxUb0ZvY3VzLmlkfWApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBNZXRob2QgZm9yIGhhbmRsaW5nIHRoZSBrZXlib2FyZCBldmVudHMgKGExMXkpXG4gICAgICovXG4gICAgX29uS2V5ZG93bk1vbnRoSGFuZGxlcihldmVudDogS2V5Ym9hcmRFdmVudCwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLl9jYWxlbmRhclNlcnZpY2Uub25LZXlkb3duSGFuZGxlcihldmVudCwgaW5kZXgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBNZXRob2QgdGhhdCBhbGxvd3MgdG8gZm9jdXMgZWxlbWVudHMgaW5zaWRlIHRoaXMgY29tcG9uZW50XG4gICAgICovXG4gICAgX2ZvY3VzRWxlbWVudEJ5U2VsZWN0b3IoZWxlbWVudFNlbGVjdG9yOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZWxlbWVudFRvRm9jdXM6IEhUTUxFbGVtZW50ID0gdGhpcy5fZVJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoZWxlbWVudFNlbGVjdG9yKTtcbiAgICAgICAgaWYgKGVsZW1lbnRUb0ZvY3VzPy5mb2N1cykge1xuICAgICAgICAgICAgZWxlbWVudFRvRm9jdXMuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBNZXRob2QgcmV0dXJuaW5nIGlkIG9mIG1vbnRoIGNlbGxcbiAgICAgKi9cbiAgICBfZ2V0SW5kZXgocm93SW5kZXg6IG51bWJlciwgY29sSW5kZXg6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jYWxlbmRhclNlcnZpY2UuZ2V0SWQocm93SW5kZXgsIGNvbEluZGV4KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQHBhcmFtIGluZGV4IG1vbnRoIGdyaWQgY2VsbCBpbmRleFxuICAgICAqL1xuICAgIF9nZXRJZChpbmRleDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmlld0lkICsgJy1tb250aC0nICsgaW5kZXg7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIE1ldGhvZCB0aGF0IGNoZWNrcyBpZiB0aGlzIGlzIGN1cnJlbnQgbW9udGhcbiAgICAgKi9cbiAgICBfaXNDdXJyZW50KGlkOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGlkICsgdGhpcy5fbW9udGhPZmZzZXQgPT09IHRoaXMuY3VycmVudE1vbnRoO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBNZXRob2QgdGhhdCBjaGVjayBpZiB0aGlzIGlzIHNlbGVjdGVkIG1vbnRoXG4gICAgICovXG4gICAgX2lzU2VsZWN0ZWQoaWQ6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gaWQgKyB0aGlzLl9tb250aE9mZnNldCA9PT0gdGhpcy5tb250aFNlbGVjdGVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBNZXRob2QgdGhhdCBjcmVhdGUgbW9udGggZ3JpZCB3aXRoIHJlcXVpcmVkIG1ldGEgZGF0YVxuICAgICAqL1xuICAgIHByaXZhdGUgX2NvbnN0cnVjdE1vbnRoR3JpZCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbW9udGhOYW1lczogc3RyaW5nW10gPSB0aGlzLl9kYXRlVGltZUFkYXB0ZXIuZ2V0TW9udGhOYW1lcygnc2hvcnQnKTtcblxuICAgICAgICBjb25zdCBtb250aExpc3Q6IENhbGVuZGFyTW9udGhbXSA9IG1vbnRoTmFtZXMubWFwKChtb250aE5hbWUsIGluZGV4KTogQ2FsZW5kYXJNb250aCA9PiB7XG4gICAgICAgICAgICBjb25zdCBtb250aCA9IGluZGV4ICsgdGhpcy5tb250aE9mZnNldDtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgbW9udGgsXG4gICAgICAgICAgICAgICAgbGFiZWw6IG1vbnRoTmFtZSxcbiAgICAgICAgICAgICAgICBhcmlhTGFiZWw6IHRoaXMuX2RhdGVUaW1lQWRhcHRlci5mb3JtYXQoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2RhdGVUaW1lQWRhcHRlci5jcmVhdGVEYXRlKHRoaXMueWVhciwgbW9udGgsIDEpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9kYXRlVGltZUZvcm1hdHMuZGlzcGxheS5tb250aEExMXlMYWJlbFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgaW5kZXgsXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IG1vbnRoID09PSB0aGlzLm1vbnRoU2VsZWN0ZWQsXG4gICAgICAgICAgICAgICAgY3VycmVudDogbW9udGggPT09IHRoaXMuY3VycmVudE1vbnRoLFxuICAgICAgICAgICAgICAgIHRhYkluZGV4OiBtb250aCA9PT0gdGhpcy5tb250aFNlbGVjdGVkID8gMCA6IC0xXG4gICAgICAgICAgICB9O1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl9jYWxlbmRhck1vbnRoTGlzdEdyaWQgPSBbXTtcbiAgICAgICAgLyoqIENyZWF0aW5nIDJkIGdyaWQgKi9cbiAgICAgICAgd2hpbGUgKG1vbnRoTGlzdC5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuX2NhbGVuZGFyTW9udGhMaXN0R3JpZC5wdXNoKG1vbnRoTGlzdC5zcGxpY2UoMCwgdGhpcy5fYW1vdW50T2ZDb2xQZXJSb3cpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2NhbGVuZGFyTW9udGhMaXN0R3JpZC5mb3JFYWNoKChyb3csIHJvd0luZGV4KSA9PiB7XG4gICAgICAgICAgICByb3cuZm9yRWFjaCgobW9udGhDZWxsLCBjb2xJbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgIG1vbnRoQ2VsbC5pZCA9IHRoaXMuX2dldElkKHRoaXMuX2dldEluZGV4KHJvd0luZGV4LCBjb2xJbmRleCkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBNZXRob2QgdG8gcHV0IGNvbmZpZ3VyYXRpb24gYW5kIGxpc3RlbmVycyBvbiBjYWxlbmRhciBrZXlib2FyZCBzZXJ2aWNlXG4gICAgICovXG4gICAgcHJpdmF0ZSBfc2V0dXBLZXlib2FyZFNlcnZpY2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NhbGVuZGFyU2VydmljZS5yb3dBbW91bnQgPSB0aGlzLl9hbW91bnRPZlJvd3M7XG4gICAgICAgIHRoaXMuX2NhbGVuZGFyU2VydmljZS5jb2xBbW91bnQgPSB0aGlzLl9hbW91bnRPZkNvbFBlclJvdztcbiAgICAgICAgdGhpcy5fY2FsZW5kYXJTZXJ2aWNlLmZvY3VzRXNjYXBlRnVuY3Rpb24gPSB0aGlzLmZvY3VzRXNjYXBlRnVuY3Rpb247XG5cbiAgICAgICAgdGhpcy5fY2FsZW5kYXJTZXJ2aWNlLm9uRm9jdXNJZENoYW5nZVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoaW5kZXgpID0+IHRoaXMuX2ZvY3VzT25DZWxsQnlJbmRleChpbmRleCkpO1xuXG4gICAgICAgIHRoaXMuX2NhbGVuZGFyU2VydmljZS5vbktleVNlbGVjdFxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoaW5kZXgpID0+IHRoaXMuc2VsZWN0TW9udGgodGhpcy5fZ2V0TW9udGhMaXN0KClbaW5kZXhdKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIFJldHVybnMgdHJhbnNmb3JtZWQgMWQgYXJyYXkgZnJvbSAyZCBtb250aCBncmlkLlxuICAgICAqL1xuICAgIHByaXZhdGUgX2dldE1vbnRoTGlzdCgpOiBDYWxlbmRhck1vbnRoW10ge1xuICAgICAgICByZXR1cm4gKDxDYWxlbmRhck1vbnRoW10+W10pLmNvbmNhdCguLi50aGlzLl9jYWxlbmRhck1vbnRoTGlzdEdyaWQpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZm9jdXNPbkNlbGxCeUluZGV4KGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZm9jdXNFbGVtZW50QnlTZWxlY3RvcihgIyR7dGhpcy5fZ2V0SWQoaW5kZXgpfWApO1xuICAgIH1cbn1cbiIsIjx0YWJsZVxuICAgIGNsYXNzPVwiZmQtY2FsZW5kYXJfX2NvbnRlbnQgZmQtY2FsZW5kYXJfX2NvbnRlbnQtLW1vbnRoc1wiXG4gICAgcm9sZT1cImdyaWRcIlxuICAgIFthdHRyLmFyaWEtcm9sZWRlc2NyaXB0aW9uXT1cIl92aWV3Um9sZURlc2NyaXB0aW9uXCJcbj5cbiAgICA8dGJvZHkgY2xhc3M9XCJmZC1jYWxlbmRhcl9fZ3JvdXBcIiByb2xlPVwicm93Z3JvdXBcIj5cbiAgICAgICAgPHRyIGNsYXNzPVwiZmQtY2FsZW5kYXJfX3Jvd1wiIHJvbGU9XCJyb3dcIiAqbmdGb3I9XCJsZXQgY29sTW9udGhzIG9mIF9jYWxlbmRhck1vbnRoTGlzdEdyaWQ7IGxldCByb3dJbmRleCA9IGluZGV4XCI+XG4gICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZkLWNhbGVuZGFyX19teS1pdGVtXCJcbiAgICAgICAgICAgICAgICByb2xlPVwiZ3JpZGNlbGxcIlxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBtb250aENlbGwgb2YgY29sTW9udGhzOyBsZXQgY29sSW5kZXggPSBpbmRleFwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmZkLWNhbGVuZGFyX19teS1pdGVtLS1jdXJyZW50XT1cIm1vbnRoQ2VsbC5jdXJyZW50XCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuaXMtYWN0aXZlXT1cIm1vbnRoQ2VsbC5zZWxlY3RlZFwiXG4gICAgICAgICAgICAgICAgW2F0dHIudGFiSW5kZXhdPVwibW9udGhDZWxsLnRhYkluZGV4XCJcbiAgICAgICAgICAgICAgICBbYXR0ci5pZF09XCJtb250aENlbGwuaWRcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwibW9udGhDZWxsLnNlbGVjdGVkXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cIm1vbnRoQ2VsbC5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1mZC1jYWxlbmRhci1tb250aF09XCJtb250aENlbGwubW9udGhcIlxuICAgICAgICAgICAgICAgIChrZXlkb3duKT1cIl9vbktleWRvd25Nb250aEhhbmRsZXIoJGV2ZW50LCBtb250aENlbGwuaW5kZXgpXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0TW9udGgobW9udGhDZWxsLCAkZXZlbnQpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmQtY2FsZW5kYXJfX215LWl0ZW0tYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLWFjdGl2ZV09XCJtb250aENlbGwuY3VycmVudFwiXG4gICAgICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmQtY2FsZW5kYXJfX3RleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRoQ2VsbC5pZCArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJy1hcmlhLWxhYmVsICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb250aENlbGwuY3VycmVudCA/IF90b2RheUxhYmVsSWQgKyAnICcgOiAnJykgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb250aENlbGwuc2VsZWN0ZWQgPyBfc2VsZWN0ZWREYXRlTGFiZWxJZCA6ICcnKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgbW9udGhDZWxsLmxhYmVsIH19XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgICAgIDxzcGFuIGhpZGRlbiBhcmlhLWhpZGRlbj1cInRydWVcIiBbYXR0ci5pZF09XCJtb250aENlbGwuaWQgKyAnLWFyaWEtbGFiZWwnXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IG1vbnRoQ2VsbC5hcmlhTGFiZWwgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICA8L3RyPlxuICAgIDwvdGJvZHk+XG48L3RhYmxlPlxuXG48IS0tIEhpZGRlbiBlbGVtZW50cyBmb3IgYXJpYSBwdXJwb3NlcyAtLT5cbjxkaXYgaGlkZGVuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgIDxkaXYgW2F0dHIuaWRdPVwiX3RvZGF5TGFiZWxJZFwiPnt7IF90b2RheUFyaWFMYWJlbCB9fTwvZGl2PlxuICAgIDxkaXYgW2F0dHIuaWRdPVwiX3NlbGVjdGVkRGF0ZUxhYmVsSWRcIj57eyBfc2VsZWN0ZWREYXRlQXJpYUxhYmVsIH19PC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -5,12 +5,13 @@ import { DATE_TIME_FORMATS, DatetimeAdapter } from '@fundamental-ngx/core/dateti
|
|
|
5
5
|
import { CalendarService } from '../../calendar.service';
|
|
6
6
|
import { DefaultCalendarActiveCellStrategy } from '../../models/common';
|
|
7
7
|
import { CalendarI18nLabels } from '../../i18n/calendar-i18n-labels';
|
|
8
|
+
import { ButtonModule } from '@fundamental-ngx/core/button';
|
|
9
|
+
import { NgFor } from '@angular/common';
|
|
8
10
|
import * as i0 from "@angular/core";
|
|
9
11
|
import * as i1 from "../../calendar.service";
|
|
10
12
|
import * as i2 from "@fundamental-ngx/core/datetime";
|
|
11
13
|
import * as i3 from "../../i18n/calendar-i18n-labels";
|
|
12
|
-
import * as i4 from "@
|
|
13
|
-
import * as i5 from "@fundamental-ngx/core/button";
|
|
14
|
+
import * as i4 from "@fundamental-ngx/core/button";
|
|
14
15
|
/** Component representing the YearView of the Calendar Component. */
|
|
15
16
|
export class CalendarYearViewComponent {
|
|
16
17
|
/**
|
|
@@ -275,13 +276,13 @@ export class CalendarYearViewComponent {
|
|
|
275
276
|
this._focusElementBySelector(`#${this._getId(index)}`);
|
|
276
277
|
}
|
|
277
278
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: CalendarYearViewComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.CalendarService }, { token: i2.DatetimeAdapter }, { token: DATE_TIME_FORMATS }, { token: i3.CalendarI18nLabels }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
278
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.0", type: CalendarYearViewComponent, selector: "fd-calendar-year-view", inputs: { id: "id", focusEscapeFunction: "focusEscapeFunction", yearSelected: "yearSelected", yearViewGrid: "yearViewGrid" }, outputs: { yearClicked: "yearClicked" }, host: { properties: { "attr.id": "viewId" } }, usesOnChanges: true, ngImport: i0, template: "<
|
|
279
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.0", type: CalendarYearViewComponent, isStandalone: true, selector: "fd-calendar-year-view", inputs: { id: "id", focusEscapeFunction: "focusEscapeFunction", yearSelected: "yearSelected", yearViewGrid: "yearViewGrid" }, outputs: { yearClicked: "yearClicked" }, host: { properties: { "attr.id": "viewId" } }, usesOnChanges: true, ngImport: i0, template: "<table\n class=\"fd-calendar__content fd-calendar__content--years\"\n role=\"grid\"\n [attr.aria-roledescription]=\"_viewRoleDescription\"\n>\n <tbody class=\"fd-calendar__group\" role=\"rowgroup\">\n <tr class=\"fd-calendar__row\" role=\"row\" *ngFor=\"let colYears of _calendarYearListGrid; let rowIndex = index\">\n <td\n class=\"fd-calendar__my-item\"\n role=\"gridcell\"\n *ngFor=\"let yearCell of colYears; let colIndex = index\"\n [class.fd-calendar__my-item--current]=\"yearCell.current\"\n [class.is-active]=\"yearCell.selected\"\n [attr.id]=\"yearCell.id\"\n [attr.tabindex]=\"yearCell.tabIndex\"\n [attr.aria-selected]=\"yearCell.selected\"\n [attr.aria-disabled]=\"yearCell.disabled\"\n [attr.data-fd-calendar-year]=\"yearCell.year\"\n (keydown)=\"_onKeydownYearHandler($event, yearCell.index)\"\n (click)=\"selectYear(yearCell, $event)\"\n >\n <button\n fd-button\n fdType=\"transparent\"\n class=\"fd-calendar__item-button\"\n [class.is-active]=\"yearCell.current\"\n tabindex=\"-1\"\n >\n <span\n class=\"fd-calendar__text\"\n [attr.aria-labelledby]=\"\n yearCell.id +\n '-aria-label ' +\n (yearCell.current ? _todayLabelId + ' ' : '') +\n (yearCell.selected ? _selectedDateLabelId : '')\n \"\n >\n {{ yearCell.label }}\n </span>\n </button>\n\n <span hidden aria-hidden=\"true\" [attr.id]=\"yearCell.id + '-aria-label'\">\n {{ yearCell.ariaLabel }}\n </span>\n </td>\n </tr>\n </tbody>\n</table>\n\n<!-- Hidden elements for aria purposes -->\n<div hidden aria-hidden=\"true\">\n <div [attr.id]=\"_todayLabelId\">{{ _todayAriaLabel }}</div>\n <div [attr.id]=\"_selectedDateLabelId\">{{ _selectedDateAriaLabel }}</div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i4.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
279
280
|
}
|
|
280
281
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: CalendarYearViewComponent, decorators: [{
|
|
281
282
|
type: Component,
|
|
282
283
|
args: [{ selector: 'fd-calendar-year-view', encapsulation: ViewEncapsulation.None, host: {
|
|
283
284
|
'[attr.id]': 'viewId'
|
|
284
|
-
}, changeDetection: ChangeDetectionStrategy.OnPush, template: "<
|
|
285
|
+
}, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [NgFor, ButtonModule], template: "<table\n class=\"fd-calendar__content fd-calendar__content--years\"\n role=\"grid\"\n [attr.aria-roledescription]=\"_viewRoleDescription\"\n>\n <tbody class=\"fd-calendar__group\" role=\"rowgroup\">\n <tr class=\"fd-calendar__row\" role=\"row\" *ngFor=\"let colYears of _calendarYearListGrid; let rowIndex = index\">\n <td\n class=\"fd-calendar__my-item\"\n role=\"gridcell\"\n *ngFor=\"let yearCell of colYears; let colIndex = index\"\n [class.fd-calendar__my-item--current]=\"yearCell.current\"\n [class.is-active]=\"yearCell.selected\"\n [attr.id]=\"yearCell.id\"\n [attr.tabindex]=\"yearCell.tabIndex\"\n [attr.aria-selected]=\"yearCell.selected\"\n [attr.aria-disabled]=\"yearCell.disabled\"\n [attr.data-fd-calendar-year]=\"yearCell.year\"\n (keydown)=\"_onKeydownYearHandler($event, yearCell.index)\"\n (click)=\"selectYear(yearCell, $event)\"\n >\n <button\n fd-button\n fdType=\"transparent\"\n class=\"fd-calendar__item-button\"\n [class.is-active]=\"yearCell.current\"\n tabindex=\"-1\"\n >\n <span\n class=\"fd-calendar__text\"\n [attr.aria-labelledby]=\"\n yearCell.id +\n '-aria-label ' +\n (yearCell.current ? _todayLabelId + ' ' : '') +\n (yearCell.selected ? _selectedDateLabelId : '')\n \"\n >\n {{ yearCell.label }}\n </span>\n </button>\n\n <span hidden aria-hidden=\"true\" [attr.id]=\"yearCell.id + '-aria-label'\">\n {{ yearCell.ariaLabel }}\n </span>\n </td>\n </tr>\n </tbody>\n</table>\n\n<!-- Hidden elements for aria purposes -->\n<div hidden aria-hidden=\"true\">\n <div [attr.id]=\"_todayLabelId\">{{ _todayAriaLabel }}</div>\n <div [attr.id]=\"_selectedDateLabelId\">{{ _selectedDateAriaLabel }}</div>\n</div>\n" }]
|
|
285
286
|
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.CalendarService }, { type: i2.DatetimeAdapter }, { type: undefined, decorators: [{
|
|
286
287
|
type: Inject,
|
|
287
288
|
args: [DATE_TIME_FORMATS]
|
|
@@ -296,4 +297,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
|
|
|
296
297
|
}], yearClicked: [{
|
|
297
298
|
type: Output
|
|
298
299
|
}] } });
|
|
299
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIteWVhci12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL2NhbGVuZGFyL2NhbGVuZGFyLXZpZXdzL2NhbGVuZGFyLXllYXItdmlldy9jYWxlbmRhci15ZWFyLXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvY2FsZW5kYXIvY2FsZW5kYXItdmlld3MvY2FsZW5kYXIteWVhci12aWV3L2NhbGVuZGFyLXllYXItdmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUVULGlCQUFpQixFQUNqQixNQUFNLEVBQ04sS0FBSyxFQUNMLFlBQVksRUFDWixVQUFVLEVBRVYsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUdqQixNQUFNLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFL0IsT0FBTyxFQUFtQixpQkFBaUIsRUFBRSxlQUFlLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUVyRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFekQsT0FBTyxFQUFFLGlDQUFpQyxFQUE4QyxNQUFNLHFCQUFxQixDQUFDO0FBQ3BILE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7Ozs7O0FBRXJFLHFFQUFxRTtBQVdyRSxNQUFNLE9BQU8seUJBQXlCO0lBK0NsQzs7OztPQUlHO0lBQ0gsSUFBSSxlQUFlO1FBQ2YsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDO0lBQy9DLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsSUFBSSxzQkFBc0I7UUFD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SSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUMxRixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsa0JBQWtCLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDeEMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGNBQWM7SUFDTixtQkFBbUIsQ0FBQyxLQUFhO1FBQ3JDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzNELENBQUM7OEdBN1ZRLHlCQUF5QiwySUE2R3RCLGlCQUFpQjtrR0E3R3BCLHlCQUF5Qix3U0NwQ3RDLDJqRkF3REE7OzJGRHBCYSx5QkFBeUI7a0JBVnJDLFNBQVM7K0JBQ0ksdUJBQXVCLGlCQUdsQixpQkFBaUIsQ0FBQyxJQUFJLFFBQy9CO3dCQUNGLFdBQVcsRUFBRSxRQUFRO3FCQUN4QixtQkFDZ0IsdUJBQXVCLENBQUMsTUFBTTs7MEJBK0cxQyxNQUFNOzJCQUFDLGlCQUFpQjs2RUExRzdCLEVBQUU7c0JBREQsS0FBSztnQkFLTixtQkFBbUI7c0JBRGxCLEtBQUs7Z0JBS04sWUFBWTtzQkFEWCxLQUFLO2dCQU9OLFlBQVk7c0JBRFgsS0FBSztnQkFLRyxXQUFXO3NCQURuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgT25Jbml0LFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxuICAgIE91dHB1dCxcbiAgICBJbnB1dCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgRWxlbWVudFJlZixcbiAgICBPbkRlc3Ryb3ksXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgT25DaGFuZ2VzLFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgSW5qZWN0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBEYXRlVGltZUZvcm1hdHMsIERBVEVfVElNRV9GT1JNQVRTLCBEYXRldGltZUFkYXB0ZXIgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvZGF0ZXRpbWUnO1xuXG5pbXBvcnQgeyBDYWxlbmRhclNlcnZpY2UgfSBmcm9tICcuLi8uLi9jYWxlbmRhci5zZXJ2aWNlJztcbmltcG9ydCB7IENhbGVuZGFyWWVhckdyaWQsIENhbGVuZGFyWWVhciB9IGZyb20gJy4uLy4uL21vZGVscy9jYWxlbmRhci15ZWFyLWdyaWQnO1xuaW1wb3J0IHsgRGVmYXVsdENhbGVuZGFyQWN0aXZlQ2VsbFN0cmF0ZWd5LCBFc2NhcGVGb2N1c0Z1bmN0aW9uLCBGb2N1c2FibGVDYWxlbmRhclZpZXcgfSBmcm9tICcuLi8uLi9tb2RlbHMvY29tbW9uJztcbmltcG9ydCB7IENhbGVuZGFySTE4bkxhYmVscyB9IGZyb20gJy4uLy4uL2kxOG4vY2FsZW5kYXItaTE4bi1sYWJlbHMnO1xuXG4vKiogQ29tcG9uZW50IHJlcHJlc2VudGluZyB0aGUgWWVhclZpZXcgb2YgdGhlIENhbGVuZGFyIENvbXBvbmVudC4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmQtY2FsZW5kYXIteWVhci12aWV3JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY2FsZW5kYXIteWVhci12aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9jYWxlbmRhci15ZWFyLXZpZXcuY29tcG9uZW50LnNjc3MnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ1thdHRyLmlkXSc6ICd2aWV3SWQnXG4gICAgfSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBDYWxlbmRhclllYXJWaWV3Q29tcG9uZW50PEQ+IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgRm9jdXNhYmxlQ2FsZW5kYXJWaWV3IHtcbiAgICAvKiogVGhlIGlkIG9mIHRoZSBjYWxlbmRhciBwYXNzZWQgZnJvbSB0aGUgcGFyZW50IGNvbXBvbmVudCAqL1xuICAgIEBJbnB1dCgpXG4gICAgaWQ6IHN0cmluZztcblxuICAgIC8qKiBGdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCB3aGVuIHRoZSBmb2N1cyB3b3VsZCBlc2NhcGUgdGhlIGVsZW1lbnQuICovXG4gICAgQElucHV0KClcbiAgICBmb2N1c0VzY2FwZUZ1bmN0aW9uOiBFc2NhcGVGb2N1c0Z1bmN0aW9uO1xuXG4gICAgLyoqIFBhcmFtZXRlciBob2xkaW5nIHRoZSB5ZWFyIHRoYXQgaXMgY3VycmVudGx5IHNlbGVjdGVkLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgeWVhclNlbGVjdGVkOiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBPYmplY3QgdG8gY3VzdG9taXplIHllYXIgZ3JpZFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgeWVhclZpZXdHcmlkOiBDYWxlbmRhclllYXJHcmlkO1xuXG4gICAgLyoqIEV2ZW50IGZpcmVkIHdoZW4gYSB5ZWFyIGlzIHNlbGVjdGVkLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHJlYWRvbmx5IHllYXJDbGlja2VkOiBFdmVudEVtaXR0ZXI8bnVtYmVyPiA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIFRoaXMgdmFyaWFibGUgaXMgdXNlZCB0byBkZWZpbmUgd2hpY2ggeWVhciBmcm9tIGNhbGVuZGFyWWVhckxpc3Qgc2hvdWxkIGJlIGZvY3VzYWJsZSBieSB0YWIga2V5XG4gICAgICovXG4gICAgX2FjdGl2ZVllYXI6IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBQYXJhbWV0ZXIgdGhhdCBzdG9yZXMgdGhlIGRvemVuIG9mIHllYXJzIHRoYXQgYXJlIGN1cnJlbnRseSBiZWluZyBkaXNwbGF5ZWQuXG4gICAgICovXG4gICAgX2NhbGVuZGFyWWVhckxpc3RHcmlkOiBDYWxlbmRhclllYXJbXVtdO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIFBhcmFtZXRlciBzdG9yaW5nIHRoZSB5ZWFyIG9mIHRoZSBwcmVzZW50IGRheS5cbiAgICAgKi9cbiAgICBfY3VycmVudFllYXI6IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBQYXJhbWV0ZXIgc3RvcmluZyBmaXJzdCBzaG93biB5ZWFyIG9uIGxpc3RcbiAgICAgKi9cbiAgICBfZmlyc3RZZWFySW5MaXN0OiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogVG9kYXkgY2VsbCBsYWJlbC5cbiAgICAgKiBJcyB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggY2VsbCBkYXRlIGl0c2VsZlxuICAgICAqL1xuICAgIGdldCBfdG9kYXlBcmlhTGFiZWwoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NhbGVuZGFySTE4bkxhYmVscy50b2RheUxhYmVsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBTZWxlY3RlZCBkYXRlIGNlbGwgbGFiZWwuXG4gICAgICogSXMgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIGNlbGwgZGF0ZSBpdHNlbGZcbiAgICAgKi9cbiAgICBnZXQgX3NlbGVjdGVkRGF0ZUFyaWFMYWJlbCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2FsZW5kYXJJMThuTGFiZWxzLmRhdGVTZWxlY3RlZExhYmVsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBWaWV3IGRlc2NyaXB0aW9uXG4gICAgICovXG4gICAgZ2V0IF92aWV3Um9sZURlc2NyaXB0aW9uKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jYWxlbmRhckkxOG5MYWJlbHMuY2FsZW5kYXJZZWFyc1ZpZXdEZXNjcmlwdGlvbjtcbiAgICB9XG5cbiAgICAvKiogVmlldyBJRCAqL1xuICAgIGdldCB2aWV3SWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaWQgKyAnLXllYXItdmlldyc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIFRvZGF5IGNlbGwgbGFiZWwgSURcbiAgICAgKi9cbiAgICBnZXQgX3RvZGF5TGFiZWxJZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy52aWV3SWQgKyAnLXRvZGF5LWxhYmVsJztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogU2VsZWN0ZWQgZGF0ZSBsYWJlbCBJRFxuICAgICAqL1xuICAgIGdldCBfc2VsZWN0ZWREYXRlTGFiZWxJZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy52aWV3SWQgKyAnLXNlbGVjdGVkLWRhdGUtbGFiZWwnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBBbiBSeEpTIFN1YmplY3QgdGhhdCB3aWxsIGtpbGwgdGhlIGRhdGEgc3RyZWFtIHVwb24gY29tcG9uZW504oCZcyBkZXN0cnVjdGlvbiAoZm9yIHVuc3Vic2NyaWJpbmcpXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfb25EZXN0cm95JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2luaXRpYXRlZCA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBfZVJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIF9jYWxlbmRhclNlcnZpY2U6IENhbGVuZGFyU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBfZGF0ZVRpbWVBZGFwdGVyOiBEYXRldGltZUFkYXB0ZXI8RD4sXG4gICAgICAgIEBJbmplY3QoREFURV9USU1FX0ZPUk1BVFMpIHByaXZhdGUgX2RhdGVUaW1lRm9ybWF0czogRGF0ZVRpbWVGb3JtYXRzLFxuICAgICAgICBwcml2YXRlIF9jYWxlbmRhckkxOG5MYWJlbHM6IENhbGVuZGFySTE4bkxhYmVsc1xuICAgICkge1xuICAgICAgICAvLyBkZWZhdWx0IHZhbHVlc1xuICAgICAgICB0aGlzLl9jdXJyZW50WWVhciA9IF9kYXRlVGltZUFkYXB0ZXIuZ2V0WWVhcihfZGF0ZVRpbWVBZGFwdGVyLnRvZGF5KCkpO1xuICAgICAgICB0aGlzLl9maXJzdFllYXJJbkxpc3QgPSB0aGlzLl9jdXJyZW50WWVhcjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9pbml0aWF0ZWQgPSB0cnVlO1xuXG4gICAgICAgIHRoaXMuX3NldHVwS2V5Ym9hcmRTZXJ2aWNlKCk7XG4gICAgICAgIHRoaXMuX2ZpcnN0WWVhckluTGlzdCA9IHRoaXMueWVhclNlbGVjdGVkO1xuICAgICAgICB0aGlzLl9jb25zdHJ1Y3RZZWFyR3JpZCgpO1xuXG4gICAgICAgIHRoaXMuX2RhdGVUaW1lQWRhcHRlci5sb2NhbGVDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fY29uc3RydWN0WWVhckdyaWQoKTtcbiAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX2luaXRpYXRlZCAmJiAoJ3llYXJWaWV3R3JpZCcgaW4gY2hhbmdlcyB8fCAneWVhclNlbGVjdGVkJyBpbiBjaGFuZ2VzIHx8ICdpZCcgaW4gY2hhbmdlcykpIHtcbiAgICAgICAgICAgIHRoaXMuX2NvbnN0cnVjdFllYXJHcmlkKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9vbkRlc3Ryb3kkLm5leHQoKTtcbiAgICAgICAgdGhpcy5fb25EZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIC8qKiBNZXRob2QgdXNlZCB0byBsb2FkIHRoZSBwcmV2aW91cyB7e2NvbCAqIHJvd319IHllYXJzIHRvIGJlIGRpc3BsYXllZC4gKi9cbiAgICBsb2FkTmV4dFllYXJMaXN0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9maXJzdFllYXJJbkxpc3QgKz0gdGhpcy5fZ2V0QW1vdW50T2ZZZWFyc1Nob3duQXRPbmNlKCk7XG4gICAgICAgIHRoaXMuX2NvbnN0cnVjdFllYXJHcmlkKCk7XG4gICAgfVxuXG4gICAgLyoqIE1ldGhvZCB1c2VkIHRvIGxvYWQgdGhlIG5leHQge3tjb2wgKiByb3d9fSB5ZWFycyB0byBiZSBkaXNwbGF5ZWQuICovXG4gICAgbG9hZFByZXZpb3VzWWVhckxpc3QoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2ZpcnN0WWVhckluTGlzdCAtPSB0aGlzLl9nZXRBbW91bnRPZlllYXJzU2hvd25BdE9uY2UoKTtcbiAgICAgICAgdGhpcy5fY29uc3RydWN0WWVhckdyaWQoKTtcbiAgICB9XG5cbiAgICAvKiogTWV0aG9kIHRoYXQgc2VuZHMgdGhlIHllYXIgdG8gdGhlIHBhcmVudCBjb21wb25lbnQgd2hlbiBpdCBpcyBjbGlja2VkLiAqL1xuICAgIHNlbGVjdFllYXIoc2VsZWN0ZWRZZWFyOiBDYWxlbmRhclllYXIsIGV2ZW50PzogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoZXZlbnQpIHtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMueWVhclNlbGVjdGVkID0gc2VsZWN0ZWRZZWFyLnllYXI7XG4gICAgICAgIHRoaXMueWVhckNsaWNrZWQuZW1pdCh0aGlzLnllYXJTZWxlY3RlZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0IGZvY3VzIG9uIG1vbnRoIGNlbGwuXG4gICAgICogSXQgY2FuIGJlIGEgc2VsZWN0ZWQgY2VsbCwgY3VycmVudCBtb250aCBjZWxsIG9yIGZpcnN0IGNlbGwgaW4gdGhlIGxpc3RcbiAgICAgKi9cbiAgICBzZXRGb2N1c09uQ2VsbCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY2VsbFRvRm9jdXMgPSBuZXcgRGVmYXVsdENhbGVuZGFyQWN0aXZlQ2VsbFN0cmF0ZWd5KCkuZ2V0QWN0aXZlQ2VsbCh0aGlzLl9nZXRZZWFyTGlzdCgpKTtcbiAgICAgICAgaWYgKCFjZWxsVG9Gb2N1cz8uaWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9mb2N1c0VsZW1lbnRCeVNlbGVjdG9yKGAjJHtjZWxsVG9Gb2N1cy5pZH1gKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogTWV0aG9kIGZvciBoYW5kbGluZyB0aGUga2V5Ym9hcmQgbmF2aWdhdGlvbi5cbiAgICAgKi9cbiAgICBfb25LZXlkb3duWWVhckhhbmRsZXIoZXZlbnQ6IEtleWJvYXJkRXZlbnQsIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY2FsZW5kYXJTZXJ2aWNlLm9uS2V5ZG93bkhhbmRsZXIoZXZlbnQsIGluZGV4KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogTWV0aG9kIHRoYXQgYWxsb3dzIHRvIGZvY3VzIGVsZW1lbnRzIGluc2lkZSB0aGlzIGNvbXBvbmVudFxuICAgICAqL1xuICAgIF9mb2N1c0VsZW1lbnRCeVNlbGVjdG9yKGVsZW1lbnRTZWxlY3Rvcjogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnRUb0ZvY3VzOiBIVE1MRWxlbWVudCA9IHRoaXMuX2VSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKGVsZW1lbnRTZWxlY3Rvcik7XG4gICAgICAgIGlmIChlbGVtZW50VG9Gb2N1cz8uZm9jdXMpIHtcbiAgICAgICAgICAgIGVsZW1lbnRUb0ZvY3VzLmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogU3RhbmRhcmRpemVkIG1ldGhvZCB0byBjYWxjdWxhdGUgZ3JpZCBbeF1beV0gdG8gaW5kZXggbnVtYmVyIG9mIGZsYXR0ZW4gbGlzdFxuICAgICAqL1xuICAgIF9nZXRJbmRleChyb3dJbmRleDogbnVtYmVyLCBjb2xJbmRleDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NhbGVuZGFyU2VydmljZS5nZXRJZChyb3dJbmRleCwgY29sSW5kZXgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBHZXQgZ3JpZCBjZWxsIGlkIGJlIGluZGV4XG4gICAgICogQHBhcmFtIGluZGV4XG4gICAgICovXG4gICAgX2dldElkKGluZGV4OiBudW1iZXIpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy52aWV3SWQgKyAnLXllYXItJyArIGluZGV4O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBNZXRob2QgdGhhdCByZXR1cm5zIGFjdGl2ZSBjZWxsLCB3aGljaCBtZWFuczpcbiAgICAgKiBpZiB0aGVyZSBpcyBhbnkgc2VsZWN0ZWQgeWVhciwgcmV0dXJuIHNlbGVjdGVkIHllYXJcbiAgICAgKiBpZiB0aGVyZSBpcyBubyBzZWxlY3RlZCB5ZWFyLCBidXQgdGhlcmUgaXMgY3VycmVudCB5ZWFyLCByZXR1cm4gY3VycmVudCB5ZWFyXG4gICAgICogaWYgdGhlcmUgaXMgbm8gY3VycmVudCB5ZWFyLCBvciBzZWxlY3RlZCwgcmV0dXJuIGZpcnN0IG9uZVxuICAgICAqL1xuICAgIHByaXZhdGUgX2dldEFjdGl2ZVllYXIoKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRZZWFyQ2VsbCA9IHRoaXMuX2dldFllYXJMaXN0KCkuZmluZCgoeyB5ZWFyIH0pID0+IHllYXIgPT09IHRoaXMueWVhclNlbGVjdGVkKTtcbiAgICAgICAgaWYgKHNlbGVjdGVkWWVhckNlbGwpIHtcbiAgICAgICAgICAgIHJldHVybiBzZWxlY3RlZFllYXJDZWxsLnllYXI7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjdXJyZW50WWVhckNlbGwgPSB0aGlzLl9nZXRZZWFyTGlzdCgpLmZpbmQoKHsgeWVhciB9KSA9PiB5ZWFyID09PSB0aGlzLl9jdXJyZW50WWVhcik7XG4gICAgICAgIGlmIChjdXJyZW50WWVhckNlbGwpIHtcbiAgICAgICAgICAgIHJldHVybiBjdXJyZW50WWVhckNlbGwueWVhcjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLl9jYWxlbmRhclllYXJMaXN0R3JpZFswXVswXS55ZWFyO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY29uc3RydWN0WWVhckdyaWQoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGRpc3BsYXllZFllYXJzQW1vdW50OiBudW1iZXIgPSB0aGlzLnllYXJWaWV3R3JpZC5jb2xzICogdGhpcy55ZWFyVmlld0dyaWQucm93cztcbiAgICAgICAgY29uc3QgY2FsZW5kYXJZZWFyTGlzdDogQ2FsZW5kYXJZZWFyW10gPSBbXTtcbiAgICAgICAgdGhpcy5fY2FsZW5kYXJZZWFyTGlzdEdyaWQgPSBbXTtcblxuICAgICAgICBmb3IgKGxldCB4ID0gMDsgeCA8IGRpc3BsYXllZFllYXJzQW1vdW50OyArK3gpIHtcbiAgICAgICAgICAgIGNvbnN0IHllYXIgPSB0aGlzLl9maXJzdFllYXJJbkxpc3QgKyB4O1xuICAgICAgICAgICAgY2FsZW5kYXJZZWFyTGlzdC5wdXNoKHtcbiAgICAgICAgICAgICAgICB5ZWFyLFxuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLl9nZXRZZWFyTmFtZSh5ZWFyKSxcbiAgICAgICAgICAgICAgICBhcmlhTGFiZWw6IHRoaXMuX2dldEFyaWFZZWFyTmFtZSh5ZWFyKSxcbiAgICAgICAgICAgICAgICBzZWxlY3RlZDogeWVhciA9PT0gdGhpcy55ZWFyU2VsZWN0ZWQsXG4gICAgICAgICAgICAgICAgY3VycmVudDogeWVhciA9PT0gdGhpcy5fY3VycmVudFllYXIsXG4gICAgICAgICAgICAgICAgaW5kZXg6IHhcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIC8qKiBDcmVhdGluZyAyZCBncmlkICovXG4gICAgICAgIHdoaWxlIChjYWxlbmRhclllYXJMaXN0Lmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5fY2FsZW5kYXJZZWFyTGlzdEdyaWQucHVzaChjYWxlbmRhclllYXJMaXN0LnNwbGljZSgwLCB0aGlzLnllYXJWaWV3R3JpZC5jb2xzKSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9hY3RpdmVZZWFyID0gdGhpcy5fZ2V0QWN0aXZlWWVhcigpO1xuXG4gICAgICAgIHRoaXMuX2NhbGVuZGFyWWVhckxpc3RHcmlkLmZvckVhY2goKHJvdywgcm93SW5kZXgpID0+IHtcbiAgICAgICAgICAgIHJvdy5mb3JFYWNoKChjZWxsLCBjb2xJbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgIGNlbGwuaWQgPSB0aGlzLl9nZXRJZCh0aGlzLl9nZXRJbmRleChyb3dJbmRleCwgY29sSW5kZXgpKTtcbiAgICAgICAgICAgICAgICBjZWxsLnRhYkluZGV4ID0gY2VsbC55ZWFyID09PSB0aGlzLl9hY3RpdmVZZWFyID8gMCA6IC0xO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBSZXR1cm5zIHllYXIgbmFtZSBhcyBhIHN0cmluZy5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9nZXRZZWFyTmFtZSh5ZWFyOiBudW1iZXIpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBmb3JtYXR0ZWQgPSB0aGlzLl9kYXRlVGltZUFkYXB0ZXIuZ2V0WWVhck5hbWUodGhpcy5fZGF0ZVRpbWVBZGFwdGVyLmNyZWF0ZURhdGUoeWVhciwgMSwgMSkpO1xuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0WWVhclN0cmluZyh5ZWFyLCBmb3JtYXR0ZWQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBSZXR1cm5zIGFyaWEgeWVhciBuYW1lIGFzIGEgc3RyaW5nLlxuICAgICAqL1xuICAgIHByaXZhdGUgX2dldEFyaWFZZWFyTmFtZSh5ZWFyOiBudW1iZXIpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBmb3JtYXR0ZWQgPSB0aGlzLl9kYXRlVGltZUFkYXB0ZXIuZm9ybWF0KFxuICAgICAgICAgICAgdGhpcy5fZGF0ZVRpbWVBZGFwdGVyLmNyZWF0ZURhdGUoeWVhciwgMSwgMSksXG4gICAgICAgICAgICB0aGlzLl9kYXRlVGltZUZvcm1hdHMuZGlzcGxheS55ZWFyQTExeUxhYmVsXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRZZWFyU3RyaW5nKHllYXIsIGZvcm1hdHRlZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIFJldHVybnMgeWVhciBuYW1lIHRha2luZyBpbnRvIGFjY291bnQgeWVhck1hcHBpbmcuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfZ2V0WWVhclN0cmluZyh5ZWFyOiBudW1iZXIsIGRlZmF1bHRTdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy55ZWFyVmlld0dyaWQueWVhck1hcHBpbmcgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnllYXJWaWV3R3JpZC55ZWFyTWFwcGluZyh5ZWFyKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGVmYXVsdFN0cjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogUmV0dXJucyB0cmFuc2Zvcm1lZCAxZCBhcnJheSBmcm9tIDJkIHllYXIgZ3JpZC5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9nZXRZZWFyTGlzdCgpOiBDYWxlbmRhclllYXJbXSB7XG4gICAgICAgIHJldHVybiAoPENhbGVuZGFyWWVhcltdPltdKS5jb25jYXQoLi4udGhpcy5fY2FsZW5kYXJZZWFyTGlzdEdyaWQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBBbW91bnQgb2YgeWVhcnMgZGlzcGxheWVkIGluIHllYXIgdmlld1xuICAgICAqL1xuICAgIHByaXZhdGUgX2dldEFtb3VudE9mWWVhcnNTaG93bkF0T25jZSgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy55ZWFyVmlld0dyaWQucm93cyAqIHRoaXMueWVhclZpZXdHcmlkLmNvbHM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIE1ldGhvZCB0byBwdXQgY29uZmlndXJhdGlvbiBhbmQgbGlzdGVuZXJzIG9uIGNhbGVuZGFyIGtleWJvYXJkIHNlcnZpY2VcbiAgICAgKi9cbiAgICBwcml2YXRlIF9zZXR1cEtleWJvYXJkU2VydmljZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY2FsZW5kYXJTZXJ2aWNlLmNvbEFtb3VudCA9IHRoaXMueWVhclZpZXdHcmlkLmNvbHM7XG4gICAgICAgIHRoaXMuX2NhbGVuZGFyU2VydmljZS5yb3dBbW91bnQgPSB0aGlzLnllYXJWaWV3R3JpZC5yb3dzO1xuICAgICAgICB0aGlzLl9jYWxlbmRhclNlcnZpY2UuZm9jdXNFc2NhcGVGdW5jdGlvbiA9IHRoaXMuZm9jdXNFc2NhcGVGdW5jdGlvbjtcblxuICAgICAgICB0aGlzLl9jYWxlbmRhclNlcnZpY2Uub25Gb2N1c0lkQ2hhbmdlXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChpbmRleCkgPT4gdGhpcy5fZm9jdXNPbkNlbGxCeUluZGV4KGluZGV4KSk7XG5cbiAgICAgICAgdGhpcy5fY2FsZW5kYXJTZXJ2aWNlLm9uS2V5U2VsZWN0XG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChpbmRleCkgPT4gdGhpcy5zZWxlY3RZZWFyKHRoaXMuX2dldFllYXJMaXN0KClbaW5kZXhdKSk7XG5cbiAgICAgICAgdGhpcy5fY2FsZW5kYXJTZXJ2aWNlLm9uTGlzdFN0YXJ0QXBwcm9hY2gucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpLnN1YnNjcmliZSgoaW5kZXgpID0+IHtcbiAgICAgICAgICAgIHRoaXMubG9hZFByZXZpb3VzWWVhckxpc3QoKTtcbiAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIHRoaXMuX2ZvY3VzT25DZWxsQnlJbmRleChpbmRleCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX2NhbGVuZGFyU2VydmljZS5vbkxpc3RFbmRBcHByb2FjaC5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKChpbmRleCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5sb2FkTmV4dFllYXJMaXN0KCk7XG4gICAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICB0aGlzLl9mb2N1c09uQ2VsbEJ5SW5kZXgoaW5kZXgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2ZvY3VzT25DZWxsQnlJbmRleChpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2ZvY3VzRWxlbWVudEJ5U2VsZWN0b3IoYCMke3RoaXMuX2dldElkKGluZGV4KX1gKTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZmQtY2FsZW5kYXJfX3llYXJzXCI+XG4gICAgPHRhYmxlIGNsYXNzPVwiZmQtY2FsZW5kYXJfX3RhYmxlXCIgcm9sZT1cImdyaWRcIiBbYXR0ci5hcmlhLXJvbGVkZXNjcmlwdGlvbl09XCJfdmlld1JvbGVEZXNjcmlwdGlvblwiPlxuICAgICAgICA8dGJvZHkgY2xhc3M9XCJmZC1jYWxlbmRhcl9fZ3JvdXBcIiByb2xlPVwicm93Z3JvdXBcIj5cbiAgICAgICAgICAgIDx0clxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZmQtY2FsZW5kYXJfX3Jvd1wiXG4gICAgICAgICAgICAgICAgcm9sZT1cInJvd1wiXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvbFllYXJzIG9mIF9jYWxlbmRhclllYXJMaXN0R3JpZDsgbGV0IHJvd0luZGV4ID0gaW5kZXhcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZkLWJ1dHRvbiBmZC1idXR0b24tLXRyYW5zcGFyZW50IGZkLWNhbGVuZGFyX19pdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgcm9sZT1cImdyaWRjZWxsXCJcbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHllYXJDZWxsIG9mIGNvbFllYXJzOyBsZXQgY29sSW5kZXggPSBpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5mZC1jYWxlbmRhcl9faXRlbS0tY3VycmVudF09XCJ5ZWFyQ2VsbC5jdXJyZW50XCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLWFjdGl2ZV09XCJ5ZWFyQ2VsbC5zZWxlY3RlZFwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmlkXT1cInllYXJDZWxsLmlkXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwieWVhckNlbGwudGFiSW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cInllYXJDZWxsLnNlbGVjdGVkXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJ5ZWFyQ2VsbC5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtZmQtY2FsZW5kYXIteWVhcl09XCJ5ZWFyQ2VsbC55ZWFyXCJcbiAgICAgICAgICAgICAgICAgICAgKGtleWRvd24pPVwiX29uS2V5ZG93blllYXJIYW5kbGVyKCRldmVudCwgeWVhckNlbGwuaW5kZXgpXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdFllYXIoeWVhckNlbGwsICRldmVudClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZkLWNhbGVuZGFyX19pdGVtLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtYWN0aXZlXT1cInllYXJDZWxsLmN1cnJlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmZC1jYWxlbmRhcl9fdGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ZWFyQ2VsbC5pZCArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctYXJpYS1sYWJlbCAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHllYXJDZWxsLmN1cnJlbnQgPyBfdG9kYXlMYWJlbElkICsgJyAnIDogJycpICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHllYXJDZWxsLnNlbGVjdGVkID8gX3NlbGVjdGVkRGF0ZUxhYmVsSWQgOiAnJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHllYXJDZWxsLmxhYmVsIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGhpZGRlbiBhcmlhLWhpZGRlbj1cInRydWVcIiBbYXR0ci5pZF09XCJ5ZWFyQ2VsbC5pZCArICctYXJpYS1sYWJlbCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IHllYXJDZWxsLmFyaWFMYWJlbCB9fVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgIDwvdGJvZHk+XG4gICAgPC90YWJsZT5cblxuICAgIDwhLS0gSGlkZGVuIGVsZW1lbnRzIGZvciBhcmlhIHB1cnBvc2VzIC0tPlxuICAgIDxkaXYgaGlkZGVuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICA8ZGl2IFthdHRyLmlkXT1cIl90b2RheUxhYmVsSWRcIj57eyBfdG9kYXlBcmlhTGFiZWwgfX08L2Rpdj5cbiAgICAgICAgPGRpdiBbYXR0ci5pZF09XCJfc2VsZWN0ZWREYXRlTGFiZWxJZFwiPnt7IF9zZWxlY3RlZERhdGVBcmlhTGFiZWwgfX08L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
300
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIteWVhci12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL2NhbGVuZGFyL2NhbGVuZGFyLXZpZXdzL2NhbGVuZGFyLXllYXItdmlldy9jYWxlbmRhci15ZWFyLXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvY2FsZW5kYXIvY2FsZW5kYXItdmlld3MvY2FsZW5kYXIteWVhci12aWV3L2NhbGVuZGFyLXllYXItdmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUVULGlCQUFpQixFQUNqQixNQUFNLEVBQ04sS0FBSyxFQUNMLFlBQVksRUFDWixVQUFVLEVBRVYsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUdqQixNQUFNLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFL0IsT0FBTyxFQUFtQixpQkFBaUIsRUFBRSxlQUFlLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUVyRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFekQsT0FBTyxFQUFFLGlDQUFpQyxFQUE4QyxNQUFNLHFCQUFxQixDQUFDO0FBQ3BILE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7OztBQUV4QyxxRUFBcUU7QUFhckUsTUFBTSxPQUFPLHlCQUF5QjtJQStDbEM7Ozs7T0FJRztJQUNILElBQUksZUFBZTtR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QixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDMUYsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3hDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwQyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxjQUFjO0lBQ04sbUJBQW1CLENBQUMsS0FBYTtRQUNyQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMzRCxDQUFDOzhHQTdWUSx5QkFBeUIsMklBNkd0QixpQkFBaUI7a0dBN0dwQix5QkFBeUIsNFRDeEN0QyxreUVBc0RBLDBERGhCYyxLQUFLLGtIQUFFLFlBQVk7OzJGQUVwQix5QkFBeUI7a0JBWnJDLFNBQVM7K0JBQ0ksdUJBQXVCLGlCQUdsQixpQkFBaUIsQ0FBQyxJQUFJLFFBQy9CO3dCQUNGLFdBQVcsRUFBRSxRQUFRO3FCQUN4QixtQkFDZ0IsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1AsQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUFDOzswQkErR3pCLE1BQU07MkJBQUMsaUJBQWlCOzZFQTFHN0IsRUFBRTtzQkFERCxLQUFLO2dCQUtOLG1CQUFtQjtzQkFEbEIsS0FBSztnQkFLTixZQUFZO3NCQURYLEtBQUs7Z0JBT04sWUFBWTtzQkFEWCxLQUFLO2dCQUtHLFdBQVc7c0JBRG5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBPbkluaXQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG4gICAgT3V0cHV0LFxuICAgIElucHV0LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBFbGVtZW50UmVmLFxuICAgIE9uRGVzdHJveSxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBPbkNoYW5nZXMsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBJbmplY3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IERhdGVUaW1lRm9ybWF0cywgREFURV9USU1FX0ZPUk1BVFMsIERhdGV0aW1lQWRhcHRlciB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9kYXRldGltZSc7XG5cbmltcG9ydCB7IENhbGVuZGFyU2VydmljZSB9IGZyb20gJy4uLy4uL2NhbGVuZGFyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2FsZW5kYXJZZWFyR3JpZCwgQ2FsZW5kYXJZZWFyIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2NhbGVuZGFyLXllYXItZ3JpZCc7XG5pbXBvcnQgeyBEZWZhdWx0Q2FsZW5kYXJBY3RpdmVDZWxsU3RyYXRlZ3ksIEVzY2FwZUZvY3VzRnVuY3Rpb24sIEZvY3VzYWJsZUNhbGVuZGFyVmlldyB9IGZyb20gJy4uLy4uL21vZGVscy9jb21tb24nO1xuaW1wb3J0IHsgQ2FsZW5kYXJJMThuTGFiZWxzIH0gZnJvbSAnLi4vLi4vaTE4bi9jYWxlbmRhci1pMThuLWxhYmVscyc7XG5pbXBvcnQgeyBCdXR0b25Nb2R1bGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvYnV0dG9uJztcbmltcG9ydCB7IE5nRm9yIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuLyoqIENvbXBvbmVudCByZXByZXNlbnRpbmcgdGhlIFllYXJWaWV3IG9mIHRoZSBDYWxlbmRhciBDb21wb25lbnQuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkLWNhbGVuZGFyLXllYXItdmlldycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NhbGVuZGFyLXllYXItdmlldy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vY2FsZW5kYXIteWVhci12aWV3LmNvbXBvbmVudC5zY3NzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBob3N0OiB7XG4gICAgICAgICdbYXR0ci5pZF0nOiAndmlld0lkJ1xuICAgIH0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbTmdGb3IsIEJ1dHRvbk1vZHVsZV1cbn0pXG5leHBvcnQgY2xhc3MgQ2FsZW5kYXJZZWFyVmlld0NvbXBvbmVudDxEPiBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIEZvY3VzYWJsZUNhbGVuZGFyVmlldyB7XG4gICAgLyoqIFRoZSBpZCBvZiB0aGUgY2FsZW5kYXIgcGFzc2VkIGZyb20gdGhlIHBhcmVudCBjb21wb25lbnQgKi9cbiAgICBASW5wdXQoKVxuICAgIGlkOiBzdHJpbmc7XG5cbiAgICAvKiogRnVuY3Rpb24gdGhhdCBpcyBjYWxsZWQgd2hlbiB0aGUgZm9jdXMgd291bGQgZXNjYXBlIHRoZSBlbGVtZW50LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZm9jdXNFc2NhcGVGdW5jdGlvbjogRXNjYXBlRm9jdXNGdW5jdGlvbjtcblxuICAgIC8qKiBQYXJhbWV0ZXIgaG9sZGluZyB0aGUgeWVhciB0aGF0IGlzIGN1cnJlbnRseSBzZWxlY3RlZC4gKi9cbiAgICBASW5wdXQoKVxuICAgIHllYXJTZWxlY3RlZDogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogT2JqZWN0IHRvIGN1c3RvbWl6ZSB5ZWFyIGdyaWRcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHllYXJWaWV3R3JpZDogQ2FsZW5kYXJZZWFyR3JpZDtcblxuICAgIC8qKiBFdmVudCBmaXJlZCB3aGVuIGEgeWVhciBpcyBzZWxlY3RlZC4gKi9cbiAgICBAT3V0cHV0KClcbiAgICByZWFkb25seSB5ZWFyQ2xpY2tlZDogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBUaGlzIHZhcmlhYmxlIGlzIHVzZWQgdG8gZGVmaW5lIHdoaWNoIHllYXIgZnJvbSBjYWxlbmRhclllYXJMaXN0IHNob3VsZCBiZSBmb2N1c2FibGUgYnkgdGFiIGtleVxuICAgICAqL1xuICAgIF9hY3RpdmVZZWFyOiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogUGFyYW1ldGVyIHRoYXQgc3RvcmVzIHRoZSBkb3plbiBvZiB5ZWFycyB0aGF0IGFyZSBjdXJyZW50bHkgYmVpbmcgZGlzcGxheWVkLlxuICAgICAqL1xuICAgIF9jYWxlbmRhclllYXJMaXN0R3JpZDogQ2FsZW5kYXJZZWFyW11bXTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBQYXJhbWV0ZXIgc3RvcmluZyB0aGUgeWVhciBvZiB0aGUgcHJlc2VudCBkYXkuXG4gICAgICovXG4gICAgX2N1cnJlbnRZZWFyOiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogUGFyYW1ldGVyIHN0b3JpbmcgZmlyc3Qgc2hvd24geWVhciBvbiBsaXN0XG4gICAgICovXG4gICAgX2ZpcnN0WWVhckluTGlzdDogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIFRvZGF5IGNlbGwgbGFiZWwuXG4gICAgICogSXMgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIGNlbGwgZGF0ZSBpdHNlbGZcbiAgICAgKi9cbiAgICBnZXQgX3RvZGF5QXJpYUxhYmVsKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jYWxlbmRhckkxOG5MYWJlbHMudG9kYXlMYWJlbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogU2VsZWN0ZWQgZGF0ZSBjZWxsIGxhYmVsLlxuICAgICAqIElzIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCBjZWxsIGRhdGUgaXRzZWxmXG4gICAgICovXG4gICAgZ2V0IF9zZWxlY3RlZERhdGVBcmlhTGFiZWwoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NhbGVuZGFySTE4bkxhYmVscy5kYXRlU2VsZWN0ZWRMYWJlbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogVmlldyBkZXNjcmlwdGlvblxuICAgICAqL1xuICAgIGdldCBfdmlld1JvbGVEZXNjcmlwdGlvbigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2FsZW5kYXJJMThuTGFiZWxzLmNhbGVuZGFyWWVhcnNWaWV3RGVzY3JpcHRpb247XG4gICAgfVxuXG4gICAgLyoqIFZpZXcgSUQgKi9cbiAgICBnZXQgdmlld0lkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmlkICsgJy15ZWFyLXZpZXcnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBUb2RheSBjZWxsIGxhYmVsIElEXG4gICAgICovXG4gICAgZ2V0IF90b2RheUxhYmVsSWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmlld0lkICsgJy10b2RheS1sYWJlbCc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIFNlbGVjdGVkIGRhdGUgbGFiZWwgSURcbiAgICAgKi9cbiAgICBnZXQgX3NlbGVjdGVkRGF0ZUxhYmVsSWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmlld0lkICsgJy1zZWxlY3RlZC1kYXRlLWxhYmVsJztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQW4gUnhKUyBTdWJqZWN0IHRoYXQgd2lsbCBraWxsIHRoZSBkYXRhIHN0cmVhbSB1cG9uIGNvbXBvbmVudOKAmXMgZGVzdHJ1Y3Rpb24gKGZvciB1bnN1YnNjcmliaW5nKVxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX29uRGVzdHJveSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pbml0aWF0ZWQgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgX2VSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgX2NoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSBfY2FsZW5kYXJTZXJ2aWNlOiBDYWxlbmRhclNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgX2RhdGVUaW1lQWRhcHRlcjogRGF0ZXRpbWVBZGFwdGVyPEQ+LFxuICAgICAgICBASW5qZWN0KERBVEVfVElNRV9GT1JNQVRTKSBwcml2YXRlIF9kYXRlVGltZUZvcm1hdHM6IERhdGVUaW1lRm9ybWF0cyxcbiAgICAgICAgcHJpdmF0ZSBfY2FsZW5kYXJJMThuTGFiZWxzOiBDYWxlbmRhckkxOG5MYWJlbHNcbiAgICApIHtcbiAgICAgICAgLy8gZGVmYXVsdCB2YWx1ZXNcbiAgICAgICAgdGhpcy5fY3VycmVudFllYXIgPSBfZGF0ZVRpbWVBZGFwdGVyLmdldFllYXIoX2RhdGVUaW1lQWRhcHRlci50b2RheSgpKTtcbiAgICAgICAgdGhpcy5fZmlyc3RZZWFySW5MaXN0ID0gdGhpcy5fY3VycmVudFllYXI7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faW5pdGlhdGVkID0gdHJ1ZTtcblxuICAgICAgICB0aGlzLl9zZXR1cEtleWJvYXJkU2VydmljZSgpO1xuICAgICAgICB0aGlzLl9maXJzdFllYXJJbkxpc3QgPSB0aGlzLnllYXJTZWxlY3RlZDtcbiAgICAgICAgdGhpcy5fY29uc3RydWN0WWVhckdyaWQoKTtcblxuICAgICAgICB0aGlzLl9kYXRlVGltZUFkYXB0ZXIubG9jYWxlQ2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2NvbnN0cnVjdFllYXJHcmlkKCk7XG4gICAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9pbml0aWF0ZWQgJiYgKCd5ZWFyVmlld0dyaWQnIGluIGNoYW5nZXMgfHwgJ3llYXJTZWxlY3RlZCcgaW4gY2hhbmdlcyB8fCAnaWQnIGluIGNoYW5nZXMpKSB7XG4gICAgICAgICAgICB0aGlzLl9jb25zdHJ1Y3RZZWFyR3JpZCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fb25EZXN0cm95JC5uZXh0KCk7XG4gICAgICAgIHRoaXMuX29uRGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICAvKiogTWV0aG9kIHVzZWQgdG8gbG9hZCB0aGUgcHJldmlvdXMge3tjb2wgKiByb3d9fSB5ZWFycyB0byBiZSBkaXNwbGF5ZWQuICovXG4gICAgbG9hZE5leHRZZWFyTGlzdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZmlyc3RZZWFySW5MaXN0ICs9IHRoaXMuX2dldEFtb3VudE9mWWVhcnNTaG93bkF0T25jZSgpO1xuICAgICAgICB0aGlzLl9jb25zdHJ1Y3RZZWFyR3JpZCgpO1xuICAgIH1cblxuICAgIC8qKiBNZXRob2QgdXNlZCB0byBsb2FkIHRoZSBuZXh0IHt7Y29sICogcm93fX0geWVhcnMgdG8gYmUgZGlzcGxheWVkLiAqL1xuICAgIGxvYWRQcmV2aW91c1llYXJMaXN0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9maXJzdFllYXJJbkxpc3QgLT0gdGhpcy5fZ2V0QW1vdW50T2ZZZWFyc1Nob3duQXRPbmNlKCk7XG4gICAgICAgIHRoaXMuX2NvbnN0cnVjdFllYXJHcmlkKCk7XG4gICAgfVxuXG4gICAgLyoqIE1ldGhvZCB0aGF0IHNlbmRzIHRoZSB5ZWFyIHRvIHRoZSBwYXJlbnQgY29tcG9uZW50IHdoZW4gaXQgaXMgY2xpY2tlZC4gKi9cbiAgICBzZWxlY3RZZWFyKHNlbGVjdGVkWWVhcjogQ2FsZW5kYXJZZWFyLCBldmVudD86IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKGV2ZW50KSB7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnllYXJTZWxlY3RlZCA9IHNlbGVjdGVkWWVhci55ZWFyO1xuICAgICAgICB0aGlzLnllYXJDbGlja2VkLmVtaXQodGhpcy55ZWFyU2VsZWN0ZWQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldCBmb2N1cyBvbiBtb250aCBjZWxsLlxuICAgICAqIEl0IGNhbiBiZSBhIHNlbGVjdGVkIGNlbGwsIGN1cnJlbnQgbW9udGggY2VsbCBvciBmaXJzdCBjZWxsIGluIHRoZSBsaXN0XG4gICAgICovXG4gICAgc2V0Rm9jdXNPbkNlbGwoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNlbGxUb0ZvY3VzID0gbmV3IERlZmF1bHRDYWxlbmRhckFjdGl2ZUNlbGxTdHJhdGVneSgpLmdldEFjdGl2ZUNlbGwodGhpcy5fZ2V0WWVhckxpc3QoKSk7XG4gICAgICAgIGlmICghY2VsbFRvRm9jdXM/LmlkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fZm9jdXNFbGVtZW50QnlTZWxlY3RvcihgIyR7Y2VsbFRvRm9jdXMuaWR9YCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIE1ldGhvZCBmb3IgaGFuZGxpbmcgdGhlIGtleWJvYXJkIG5hdmlnYXRpb24uXG4gICAgICovXG4gICAgX29uS2V5ZG93blllYXJIYW5kbGVyKGV2ZW50OiBLZXlib2FyZEV2ZW50LCBpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NhbGVuZGFyU2VydmljZS5vbktleWRvd25IYW5kbGVyKGV2ZW50LCBpbmRleCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIE1ldGhvZCB0aGF0IGFsbG93cyB0byBmb2N1cyBlbGVtZW50cyBpbnNpZGUgdGhpcyBjb21wb25lbnRcbiAgICAgKi9cbiAgICBfZm9jdXNFbGVtZW50QnlTZWxlY3RvcihlbGVtZW50U2VsZWN0b3I6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCBlbGVtZW50VG9Gb2N1czogSFRNTEVsZW1lbnQgPSB0aGlzLl9lUmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihlbGVtZW50U2VsZWN0b3IpO1xuICAgICAgICBpZiAoZWxlbWVudFRvRm9jdXM/LmZvY3VzKSB7XG4gICAgICAgICAgICBlbGVtZW50VG9Gb2N1cy5mb2N1cygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIFN0YW5kYXJkaXplZCBtZXRob2QgdG8gY2FsY3VsYXRlIGdyaWQgW3hdW3ldIHRvIGluZGV4IG51bWJlciBvZiBmbGF0dGVuIGxpc3RcbiAgICAgKi9cbiAgICBfZ2V0SW5kZXgocm93SW5kZXg6IG51bWJlciwgY29sSW5kZXg6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jYWxlbmRhclNlcnZpY2UuZ2V0SWQocm93SW5kZXgsIGNvbEluZGV4KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogR2V0IGdyaWQgY2VsbCBpZCBiZSBpbmRleFxuICAgICAqIEBwYXJhbSBpbmRleFxuICAgICAqL1xuICAgIF9nZXRJZChpbmRleDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmlld0lkICsgJy15ZWFyLScgKyBpbmRleDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogTWV0aG9kIHRoYXQgcmV0dXJucyBhY3RpdmUgY2VsbCwgd2hpY2ggbWVhbnM6XG4gICAgICogaWYgdGhlcmUgaXMgYW55IHNlbGVjdGVkIHllYXIsIHJldHVybiBzZWxlY3RlZCB5ZWFyXG4gICAgICogaWYgdGhlcmUgaXMgbm8gc2VsZWN0ZWQgeWVhciwgYnV0IHRoZXJlIGlzIGN1cnJlbnQgeWVhciwgcmV0dXJuIGN1cnJlbnQgeWVhclxuICAgICAqIGlmIHRoZXJlIGlzIG5vIGN1cnJlbnQgeWVhciwgb3Igc2VsZWN0ZWQsIHJldHVybiBmaXJzdCBvbmVcbiAgICAgKi9cbiAgICBwcml2YXRlIF9nZXRBY3RpdmVZZWFyKCk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkWWVhckNlbGwgPSB0aGlzLl9nZXRZZWFyTGlzdCgpLmZpbmQoKHsgeWVhciB9KSA9PiB5ZWFyID09PSB0aGlzLnllYXJTZWxlY3RlZCk7XG4gICAgICAgIGlmIChzZWxlY3RlZFllYXJDZWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gc2VsZWN0ZWRZZWFyQ2VsbC55ZWFyO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY3VycmVudFllYXJDZWxsID0gdGhpcy5fZ2V0WWVhckxpc3QoKS5maW5kKCh7IHllYXIgfSkgPT4geWVhciA9PT0gdGhpcy5fY3VycmVudFllYXIpO1xuICAgICAgICBpZiAoY3VycmVudFllYXJDZWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gY3VycmVudFllYXJDZWxsLnllYXI7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5fY2FsZW5kYXJZZWFyTGlzdEdyaWRbMF1bMF0ueWVhcjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NvbnN0cnVjdFllYXJHcmlkKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBkaXNwbGF5ZWRZZWFyc0Ftb3VudDogbnVtYmVyID0gdGhpcy55ZWFyVmlld0dyaWQuY29scyAqIHRoaXMueWVhclZpZXdHcmlkLnJvd3M7XG4gICAgICAgIGNvbnN0IGNhbGVuZGFyWWVhckxpc3Q6IENhbGVuZGFyWWVhcltdID0gW107XG4gICAgICAgIHRoaXMuX2NhbGVuZGFyWWVhckxpc3RHcmlkID0gW107XG5cbiAgICAgICAgZm9yIChsZXQgeCA9IDA7IHggPCBkaXNwbGF5ZWRZZWFyc0Ftb3VudDsgKyt4KSB7XG4gICAgICAgICAgICBjb25zdCB5ZWFyID0gdGhpcy5fZmlyc3RZZWFySW5MaXN0ICsgeDtcbiAgICAgICAgICAgIGNhbGVuZGFyWWVhckxpc3QucHVzaCh7XG4gICAgICAgICAgICAgICAgeWVhcixcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5fZ2V0WWVhck5hbWUoeWVhciksXG4gICAgICAgICAgICAgICAgYXJpYUxhYmVsOiB0aGlzLl9nZXRBcmlhWWVhck5hbWUoeWVhciksXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IHllYXIgPT09IHRoaXMueWVhclNlbGVjdGVkLFxuICAgICAgICAgICAgICAgIGN1cnJlbnQ6IHllYXIgPT09IHRoaXMuX2N1cnJlbnRZZWFyLFxuICAgICAgICAgICAgICAgIGluZGV4OiB4XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICAvKiogQ3JlYXRpbmcgMmQgZ3JpZCAqL1xuICAgICAgICB3aGlsZSAoY2FsZW5kYXJZZWFyTGlzdC5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuX2NhbGVuZGFyWWVhckxpc3RHcmlkLnB1c2goY2FsZW5kYXJZZWFyTGlzdC5zcGxpY2UoMCwgdGhpcy55ZWFyVmlld0dyaWQuY29scykpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fYWN0aXZlWWVhciA9IHRoaXMuX2dldEFjdGl2ZVllYXIoKTtcblxuICAgICAgICB0aGlzLl9jYWxlbmRhclllYXJMaXN0R3JpZC5mb3JFYWNoKChyb3csIHJvd0luZGV4KSA9PiB7XG4gICAgICAgICAgICByb3cuZm9yRWFjaCgoY2VsbCwgY29sSW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICBjZWxsLmlkID0gdGhpcy5fZ2V0SWQodGhpcy5fZ2V0SW5kZXgocm93SW5kZXgsIGNvbEluZGV4KSk7XG4gICAgICAgICAgICAgICAgY2VsbC50YWJJbmRleCA9IGNlbGwueWVhciA9PT0gdGhpcy5fYWN0aXZlWWVhciA/IDAgOiAtMTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogUmV0dXJucyB5ZWFyIG5hbWUgYXMgYSBzdHJpbmcuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfZ2V0WWVhck5hbWUoeWVhcjogbnVtYmVyKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZm9ybWF0dGVkID0gdGhpcy5fZGF0ZVRpbWVBZGFwdGVyLmdldFllYXJOYW1lKHRoaXMuX2RhdGVUaW1lQWRhcHRlci5jcmVhdGVEYXRlKHllYXIsIDEsIDEpKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldFllYXJTdHJpbmcoeWVhciwgZm9ybWF0dGVkKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogUmV0dXJucyBhcmlhIHllYXIgbmFtZSBhcyBhIHN0cmluZy5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9nZXRBcmlhWWVhck5hbWUoeWVhcjogbnVtYmVyKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZm9ybWF0dGVkID0gdGhpcy5fZGF0ZVRpbWVBZGFwdGVyLmZvcm1hdChcbiAgICAgICAgICAgIHRoaXMuX2RhdGVUaW1lQWRhcHRlci5jcmVhdGVEYXRlKHllYXIsIDEsIDEpLFxuICAgICAgICAgICAgdGhpcy5fZGF0ZVRpbWVGb3JtYXRzLmRpc3BsYXkueWVhckExMXlMYWJlbFxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0WWVhclN0cmluZyh5ZWFyLCBmb3JtYXR0ZWQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBSZXR1cm5zIHllYXIgbmFtZSB0YWtpbmcgaW50byBhY2NvdW50IHllYXJNYXBwaW5nLlxuICAgICAqL1xuICAgIHByaXZhdGUgX2dldFllYXJTdHJpbmcoeWVhcjogbnVtYmVyLCBkZWZhdWx0U3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBpZiAodHlwZW9mIHRoaXMueWVhclZpZXdHcmlkLnllYXJNYXBwaW5nID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy55ZWFyVmlld0dyaWQueWVhck1hcHBpbmcoeWVhcik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRlZmF1bHRTdHI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIFJldHVybnMgdHJhbnNmb3JtZWQgMWQgYXJyYXkgZnJvbSAyZCB5ZWFyIGdyaWQuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfZ2V0WWVhckxpc3QoKTogQ2FsZW5kYXJZZWFyW10ge1xuICAgICAgICByZXR1cm4gKDxDYWxlbmRhclllYXJbXT5bXSkuY29uY2F0KC4uLnRoaXMuX2NhbGVuZGFyWWVhckxpc3RHcmlkKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQW1vdW50IG9mIHllYXJzIGRpc3BsYXllZCBpbiB5ZWFyIHZpZXdcbiAgICAgKi9cbiAgICBwcml2YXRlIF9nZXRBbW91bnRPZlllYXJzU2hvd25BdE9uY2UoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMueWVhclZpZXdHcmlkLnJvd3MgKiB0aGlzLnllYXJWaWV3R3JpZC5jb2xzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBNZXRob2QgdG8gcHV0IGNvbmZpZ3VyYXRpb24gYW5kIGxpc3RlbmVycyBvbiBjYWxlbmRhciBrZXlib2FyZCBzZXJ2aWNlXG4gICAgICovXG4gICAgcHJpdmF0ZSBfc2V0dXBLZXlib2FyZFNlcnZpY2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NhbGVuZGFyU2VydmljZS5jb2xBbW91bnQgPSB0aGlzLnllYXJWaWV3R3JpZC5jb2xzO1xuICAgICAgICB0aGlzLl9jYWxlbmRhclNlcnZpY2Uucm93QW1vdW50ID0gdGhpcy55ZWFyVmlld0dyaWQucm93cztcbiAgICAgICAgdGhpcy5fY2FsZW5kYXJTZXJ2aWNlLmZvY3VzRXNjYXBlRnVuY3Rpb24gPSB0aGlzLmZvY3VzRXNjYXBlRnVuY3Rpb247XG5cbiAgICAgICAgdGhpcy5fY2FsZW5kYXJTZXJ2aWNlLm9uRm9jdXNJZENoYW5nZVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoaW5kZXgpID0+IHRoaXMuX2ZvY3VzT25DZWxsQnlJbmRleChpbmRleCkpO1xuXG4gICAgICAgIHRoaXMuX2NhbGVuZGFyU2VydmljZS5vbktleVNlbGVjdFxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoaW5kZXgpID0+IHRoaXMuc2VsZWN0WWVhcih0aGlzLl9nZXRZZWFyTGlzdCgpW2luZGV4XSkpO1xuXG4gICAgICAgIHRoaXMuX2NhbGVuZGFyU2VydmljZS5vbkxpc3RTdGFydEFwcHJvYWNoLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKGluZGV4KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmxvYWRQcmV2aW91c1llYXJMaXN0KCk7XG4gICAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICB0aGlzLl9mb2N1c09uQ2VsbEJ5SW5kZXgoaW5kZXgpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl9jYWxlbmRhclNlcnZpY2Uub25MaXN0RW5kQXBwcm9hY2gucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpLnN1YnNjcmliZSgoaW5kZXgpID0+IHtcbiAgICAgICAgICAgIHRoaXMubG9hZE5leHRZZWFyTGlzdCgpO1xuICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgdGhpcy5fZm9jdXNPbkNlbGxCeUluZGV4KGluZGV4KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9mb2N1c09uQ2VsbEJ5SW5kZXgoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLl9mb2N1c0VsZW1lbnRCeVNlbGVjdG9yKGAjJHt0aGlzLl9nZXRJZChpbmRleCl9YCk7XG4gICAgfVxufVxuIiwiPHRhYmxlXG4gICAgY2xhc3M9XCJmZC1jYWxlbmRhcl9fY29udGVudCBmZC1jYWxlbmRhcl9fY29udGVudC0teWVhcnNcIlxuICAgIHJvbGU9XCJncmlkXCJcbiAgICBbYXR0ci5hcmlhLXJvbGVkZXNjcmlwdGlvbl09XCJfdmlld1JvbGVEZXNjcmlwdGlvblwiXG4+XG4gICAgPHRib2R5IGNsYXNzPVwiZmQtY2FsZW5kYXJfX2dyb3VwXCIgcm9sZT1cInJvd2dyb3VwXCI+XG4gICAgICAgIDx0ciBjbGFzcz1cImZkLWNhbGVuZGFyX19yb3dcIiByb2xlPVwicm93XCIgKm5nRm9yPVwibGV0IGNvbFllYXJzIG9mIF9jYWxlbmRhclllYXJMaXN0R3JpZDsgbGV0IHJvd0luZGV4ID0gaW5kZXhcIj5cbiAgICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZmQtY2FsZW5kYXJfX215LWl0ZW1cIlxuICAgICAgICAgICAgICAgIHJvbGU9XCJncmlkY2VsbFwiXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHllYXJDZWxsIG9mIGNvbFllYXJzOyBsZXQgY29sSW5kZXggPSBpbmRleFwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmZkLWNhbGVuZGFyX19teS1pdGVtLS1jdXJyZW50XT1cInllYXJDZWxsLmN1cnJlbnRcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1hY3RpdmVdPVwieWVhckNlbGwuc2VsZWN0ZWRcIlxuICAgICAgICAgICAgICAgIFthdHRyLmlkXT1cInllYXJDZWxsLmlkXCJcbiAgICAgICAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCJ5ZWFyQ2VsbC50YWJJbmRleFwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJ5ZWFyQ2VsbC5zZWxlY3RlZFwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJ5ZWFyQ2VsbC5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1mZC1jYWxlbmRhci15ZWFyXT1cInllYXJDZWxsLnllYXJcIlxuICAgICAgICAgICAgICAgIChrZXlkb3duKT1cIl9vbktleWRvd25ZZWFySGFuZGxlcigkZXZlbnQsIHllYXJDZWxsLmluZGV4KVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdFllYXIoeWVhckNlbGwsICRldmVudClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmZC1jYWxlbmRhcl9faXRlbS1idXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtYWN0aXZlXT1cInllYXJDZWxsLmN1cnJlbnRcIlxuICAgICAgICAgICAgICAgICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZkLWNhbGVuZGFyX190ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ZWFyQ2VsbC5pZCArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJy1hcmlhLWxhYmVsICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh5ZWFyQ2VsbC5jdXJyZW50ID8gX3RvZGF5TGFiZWxJZCArICcgJyA6ICcnKSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHllYXJDZWxsLnNlbGVjdGVkID8gX3NlbGVjdGVkRGF0ZUxhYmVsSWQgOiAnJylcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IHllYXJDZWxsLmxhYmVsIH19XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgICAgIDxzcGFuIGhpZGRlbiBhcmlhLWhpZGRlbj1cInRydWVcIiBbYXR0ci5pZF09XCJ5ZWFyQ2VsbC5pZCArICctYXJpYS1sYWJlbCdcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgeWVhckNlbGwuYXJpYUxhYmVsIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICA8L3Rib2R5PlxuPC90YWJsZT5cblxuPCEtLSBIaWRkZW4gZWxlbWVudHMgZm9yIGFyaWEgcHVycG9zZXMgLS0+XG48ZGl2IGhpZGRlbiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICA8ZGl2IFthdHRyLmlkXT1cIl90b2RheUxhYmVsSWRcIj57eyBfdG9kYXlBcmlhTGFiZWwgfX08L2Rpdj5cbiAgICA8ZGl2IFthdHRyLmlkXT1cIl9zZWxlY3RlZERhdGVMYWJlbElkXCI+e3sgX3NlbGVjdGVkRGF0ZUFyaWFMYWJlbCB9fTwvZGl2PlxuPC9kaXY+XG4iXX0=
|