@ethlete/cdk 4.46.1 → 4.48.0
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/CHANGELOG.md +12 -0
- package/esm2022/lib/components/accordion/components/accordion/accordion.component.mjs +3 -3
- package/esm2022/lib/components/accordion/components/accordion-group/accordion-group.component.mjs +3 -3
- package/esm2022/lib/components/accordion/partials/accordion-hint/accordion-hint.directive.mjs +3 -3
- package/esm2022/lib/components/accordion/partials/accordion-hint-wrapper/accordion-hint-wrapper.directive.mjs +3 -3
- package/esm2022/lib/components/accordion/partials/accordion-label/accordion-label.directive.mjs +3 -3
- package/esm2022/lib/components/accordion/partials/accordion-label-wrapper/accordion-label-wrapper.directive.mjs +3 -3
- package/esm2022/lib/components/bracket/components/bracket/bracket.component.mjs +3 -3
- package/esm2022/lib/components/bracket/components/new-bracket/bracket-new.mjs +284 -124
- package/esm2022/lib/components/bracket/components/new-bracket/draw-man.mjs +172 -41
- package/esm2022/lib/components/bracket/components/new-bracket/grid-placements.mjs +11 -3
- package/esm2022/lib/components/bracket/components/new-bracket/journey-highlight.mjs +18 -0
- package/esm2022/lib/components/bracket/components/new-bracket/new-bracket-default-match.component.mjs +3 -3
- package/esm2022/lib/components/bracket/components/new-bracket/new-bracket-default-round-header.component.mjs +3 -3
- package/esm2022/lib/components/bracket/components/new-bracket/new-bracket.component.mjs +65 -12
- package/esm2022/lib/components/bracket/directives/bracket-match/bracket-match.directive.mjs +3 -3
- package/esm2022/lib/components/bracket/directives/bracket-round/bracket-round.directive.mjs +3 -3
- package/esm2022/lib/components/bracket/partials/bracket-match/bracket-match.component.mjs +3 -3
- package/esm2022/lib/components/bracket/partials/bracket-round-header/bracket-round-header.component.mjs +3 -3
- package/esm2022/lib/components/button/components/button/button.component.mjs +3 -3
- package/esm2022/lib/components/button/components/query-button/query-button.component.mjs +3 -3
- package/esm2022/lib/components/button/directives/button/button.directive.mjs +3 -3
- package/esm2022/lib/components/button/directives/query-button/query-button.directive.mjs +3 -3
- package/esm2022/lib/components/carousel/carousel.component.mjs +3 -3
- package/esm2022/lib/components/carousel/carousel.directive.mjs +3 -3
- package/esm2022/lib/components/carousel/controls/carousel-item-nav.component.mjs +3 -3
- package/esm2022/lib/components/carousel/controls/carousel-item-nav.directive.mjs +3 -3
- package/esm2022/lib/components/carousel/controls/carousel-next-button.directive.mjs +3 -3
- package/esm2022/lib/components/carousel/controls/carousel-previous-button.directive.mjs +3 -3
- package/esm2022/lib/components/carousel/controls/carousel-toggle-auto-play-button.directive.mjs +3 -3
- package/esm2022/lib/components/carousel/et-carousel-item.component.mjs +3 -3
- package/esm2022/lib/components/carousel/et-carousel-item.directive.mjs +3 -3
- package/esm2022/lib/components/filter/rich-filter/components/rich-filter-host/rich-filter-host.component.mjs +3 -3
- package/esm2022/lib/components/filter/rich-filter/directives/rich-filter-button/rich-filter-button.directive.mjs +3 -3
- package/esm2022/lib/components/filter/rich-filter/directives/rich-filter-button-slot/rich-filter-button-slot.directive.mjs +3 -3
- package/esm2022/lib/components/filter/rich-filter/directives/rich-filter-content/rich-filter-content.directive.mjs +3 -3
- package/esm2022/lib/components/filter/rich-filter/directives/rich-filter-top/rich-filter-top.directive.mjs +3 -3
- package/esm2022/lib/components/forms/components/checkbox/components/checkbox/checkbox.component.mjs +3 -3
- package/esm2022/lib/components/forms/components/checkbox/components/checkbox-field/checkbox-field.component.mjs +3 -3
- package/esm2022/lib/components/forms/components/checkbox/components/checkbox-group/checkbox-group.component.mjs +3 -3
- package/esm2022/lib/components/forms/components/checkbox/directives/checkbox/checkbox.directive.mjs +3 -3
- package/esm2022/lib/components/forms/components/checkbox/directives/checkbox-field/checkbox-field.directive.mjs +3 -3
- package/esm2022/lib/components/forms/components/checkbox/directives/checkbox-group/checkbox-group.directive.mjs +3 -3
- package/esm2022/lib/components/forms/components/checkbox/directives/checkbox-group-control/checkbox-group-control.directive.mjs +3 -3
- package/esm2022/lib/components/forms/components/error/components/error/error.component.mjs +3 -3
- package/esm2022/lib/components/forms/components/input/components/color-input/color-input.component.mjs +3 -3
- package/esm2022/lib/components/forms/components/input/components/date-input/date-input.component.mjs +3 -3
- package/esm2022/lib/components/forms/components/input/components/date-time-input/date-time-input.component.mjs +3 -3
- package/esm2022/lib/components/forms/components/input/components/email-input/email-input.component.mjs +3 -3
- package/esm2022/lib/components/forms/components/input/components/input-field/input-field.component.mjs +3 -3
- package/esm2022/lib/components/forms/components/input/components/number-input/number-input.component.mjs +3 -3
- package/esm2022/lib/components/forms/components/input/components/password-input/password-input.component.mjs +3 -3
- package/esm2022/lib/components/forms/components/input/components/search-input/search-input.component.mjs +3 -3
- package/esm2022/lib/components/forms/components/input/components/tel-input/tel-input.component.mjs +3 -3
- package/esm2022/lib/components/forms/components/input/components/text-input/text-input.component.mjs +3 -3
- package/esm2022/lib/components/forms/components/input/components/textarea-input/textarea-input.component.mjs +3 -3
- package/esm2022/lib/components/forms/components/input/components/time-input/time-input.component.mjs +3 -3
- package/esm2022/lib/components/forms/components/input/directives/autosize-textarea/autosize-textarea.directive.mjs +3 -3
- package/esm2022/lib/components/forms/components/input/directives/color-input/color-input.directive.mjs +3 -3
- package/esm2022/lib/components/forms/components/input/directives/date-input/date-input.directive.mjs +3 -3
- package/esm2022/lib/components/forms/components/input/directives/date-time-input/date-time-input.directive.mjs +3 -3
- package/esm2022/lib/components/forms/components/input/directives/email-input/email-input.directive.mjs +3 -3
- package/esm2022/lib/components/forms/components/input/directives/if-supports-show-picker/if-supports-show-picker.directive.mjs +3 -3
- package/esm2022/lib/components/forms/components/input/directives/number-input/number-input.directive.mjs +3 -3
- package/esm2022/lib/components/forms/components/input/directives/password-input/password-input.directive.mjs +3 -3
- package/esm2022/lib/components/forms/components/input/directives/search-input/search-input.directive.mjs +3 -3
- package/esm2022/lib/components/forms/components/input/directives/show-picker-trigger/show-picker-trigger.directive.mjs +3 -3
- package/esm2022/lib/components/forms/components/input/directives/tel-input/tel-input.directive.mjs +3 -3
- package/esm2022/lib/components/forms/components/input/directives/text-input/text-input.directive.mjs +3 -3
- package/esm2022/lib/components/forms/components/input/directives/textarea-input/textarea-input.directive.mjs +3 -3
- package/esm2022/lib/components/forms/components/input/directives/time-input/time-input.directive.mjs +3 -3
- package/esm2022/lib/components/forms/components/input/partials/password-input-toggle/password-input-toggle.component.mjs +3 -3
- package/esm2022/lib/components/forms/components/input/partials/search-input-clear/search-input-clear.component.mjs +3 -3
- package/esm2022/lib/components/forms/components/label/components/label/label.component.mjs +3 -3
- package/esm2022/lib/components/forms/components/label/directives/label-suffix/label-suffix.directive.mjs +3 -3
- package/esm2022/lib/components/forms/components/radio/components/radio/radio.component.mjs +3 -3
- package/esm2022/lib/components/forms/components/radio/components/radio-field/radio-field.component.mjs +3 -3
- package/esm2022/lib/components/forms/components/radio/components/radio-group/radio-group.component.mjs +3 -3
- package/esm2022/lib/components/forms/components/radio/directives/radio/radio.directive.mjs +3 -3
- package/esm2022/lib/components/forms/components/radio/directives/radio-field/radio-field.directive.mjs +3 -3
- package/esm2022/lib/components/forms/components/radio/directives/radio-group/radio-group.directive.mjs +3 -3
- package/esm2022/lib/components/forms/components/segmented-button/components/segmented-button/segmented-button.component.mjs +3 -3
- package/esm2022/lib/components/forms/components/segmented-button/components/segmented-button-field/segmented-button-field.component.mjs +3 -3
- package/esm2022/lib/components/forms/components/segmented-button/components/segmented-button-group/segmented-button-group.component.mjs +3 -3
- package/esm2022/lib/components/forms/components/segmented-button/directives/segmented-button/segmented-button.directive.mjs +3 -3
- package/esm2022/lib/components/forms/components/segmented-button/directives/segmented-button-field/segmented-button-field.directive.mjs +3 -3
- package/esm2022/lib/components/forms/components/segmented-button/directives/segmented-button-group/segmented-button-group.directive.mjs +3 -3
- package/esm2022/lib/components/forms/components/select/components/combobox/components/combobox/combobox.component.mjs +3 -3
- package/esm2022/lib/components/forms/components/select/components/combobox/directives/combobox/combobox.directive.mjs +3 -3
- package/esm2022/lib/components/forms/components/select/components/combobox/directives/combobox-body-empty-template/combobox-body-empty-template.directive.mjs +3 -3
- package/esm2022/lib/components/forms/components/select/components/combobox/directives/combobox-body-error-template/combobox-body-error-template.directive.mjs +3 -3
- package/esm2022/lib/components/forms/components/select/components/combobox/directives/combobox-body-loading-template/combobox-body-loading-template.directive.mjs +3 -3
- package/esm2022/lib/components/forms/components/select/components/combobox/directives/combobox-body-more-items-hint-template/combobox-body-more-items-hint-template.directive.mjs +3 -3
- package/esm2022/lib/components/forms/components/select/components/combobox/directives/combobox-option-template/combobox-option-template.directive.mjs +3 -3
- package/esm2022/lib/components/forms/components/select/components/combobox/directives/combobox-selected-option-template/combobox-selected-option-template.directive.mjs +3 -3
- package/esm2022/lib/components/forms/components/select/components/combobox/partials/combobox-body/combobox-body.component.mjs +3 -3
- package/esm2022/lib/components/forms/components/select/components/combobox/partials/combobox-option/combobox-option.component.mjs +3 -3
- package/esm2022/lib/components/forms/components/select/components/native-select/components/native-select/native-select.component.mjs +3 -3
- package/esm2022/lib/components/forms/components/select/components/native-select/directives/native-select-input/native-select-input.directive.mjs +3 -3
- package/esm2022/lib/components/forms/components/select/components/native-select/directives/native-select-option/native-select-option.directive.mjs +3 -3
- package/esm2022/lib/components/forms/components/select/components/native-select/partials/native-select-option/native-select-option.component.mjs +3 -3
- package/esm2022/lib/components/forms/components/select/components/select/components/select/select.component.mjs +3 -3
- package/esm2022/lib/components/forms/components/select/components/select/directives/select/select.directive.mjs +3 -3
- package/esm2022/lib/components/forms/components/select/components/select/directives/select-body/select-body.directive.mjs +3 -3
- package/esm2022/lib/components/forms/components/select/components/select/directives/select-option/select-option.directive.mjs +3 -3
- package/esm2022/lib/components/forms/components/select/components/select/partials/select-body/select-body.component.mjs +3 -3
- package/esm2022/lib/components/forms/components/select/components/select/partials/select-option/select-option.component.mjs +3 -3
- package/esm2022/lib/components/forms/components/select/components/select-field/select-field.component.mjs +3 -3
- package/esm2022/lib/components/forms/components/select/directives/select-field/select-field.directive.mjs +3 -3
- package/esm2022/lib/components/forms/components/selection-list/components/selection-list-field/selection-list-field.component.mjs +3 -3
- package/esm2022/lib/components/forms/components/selection-list/components/selection-list-option/selection-list-option.component.mjs +3 -3
- package/esm2022/lib/components/forms/components/selection-list/directives/selection-list-field/selection-list-field.directive.mjs +3 -3
- package/esm2022/lib/components/forms/components/selection-list/directives/selection-list-option/selection-list-option.directive.mjs +3 -3
- package/esm2022/lib/components/forms/components/slide-toggle/components/slide-toggle/slide-toggle.component.mjs +3 -3
- package/esm2022/lib/components/forms/components/slide-toggle/components/slide-toggle-field/slide-toggle-field.component.mjs +3 -3
- package/esm2022/lib/components/forms/components/slide-toggle/directives/slide-toggle/slide-toggle.directive.mjs +3 -3
- package/esm2022/lib/components/forms/components/slider/components/slider/slider.component.mjs +3 -3
- package/esm2022/lib/components/forms/components/slider/components/slider-field/slider-field.component.mjs +3 -3
- package/esm2022/lib/components/forms/directives/dynamic-form-field/dynamic-form-field.directive.mjs +3 -3
- package/esm2022/lib/components/forms/directives/dynamic-form-group/dynamic-form-group.directive.mjs +3 -3
- package/esm2022/lib/components/forms/directives/expose-input-vars/expose-input-vars.directive.mjs +3 -3
- package/esm2022/lib/components/forms/directives/if-input-empty/if-input-empty.directive.mjs +3 -3
- package/esm2022/lib/components/forms/directives/if-input-filled/if-input-filled.directive.mjs +3 -3
- package/esm2022/lib/components/forms/directives/input/input.directive.mjs +3 -3
- package/esm2022/lib/components/forms/directives/input-prefix/input-prefix.directive.mjs +3 -3
- package/esm2022/lib/components/forms/directives/input-suffix/input-suffix.directive.mjs +3 -3
- package/esm2022/lib/components/forms/directives/native-input-ref/native-input-ref.directive.mjs +3 -3
- package/esm2022/lib/components/forms/directives/static-form-field/static-form-field.directive.mjs +3 -3
- package/esm2022/lib/components/forms/directives/static-form-group/static-form-group.directive.mjs +3 -3
- package/esm2022/lib/components/forms/directives/writeable-input/writeable-input.directive.mjs +3 -3
- package/esm2022/lib/components/forms/services/default-validator-errors.service.mjs +3 -3
- package/esm2022/lib/components/forms/services/form-field-state.service.mjs +3 -3
- package/esm2022/lib/components/forms/services/form-group-state.service.mjs +3 -3
- package/esm2022/lib/components/forms/services/input-state.service.mjs +3 -3
- package/esm2022/lib/components/forms/utils/decorated-form-field.base.mjs +3 -3
- package/esm2022/lib/components/forms/utils/decorated-input.base.mjs +3 -3
- package/esm2022/lib/components/forms/utils/input.base.mjs +3 -3
- package/esm2022/lib/components/icons/chevron-icon/chevron-icon.component.mjs +3 -3
- package/esm2022/lib/components/icons/times-icon/times-icon.component.mjs +3 -3
- package/esm2022/lib/components/masonry/components/masonry/masonry.component.mjs +3 -3
- package/esm2022/lib/components/masonry/partials/masonry-item/masonry-item.component.mjs +3 -3
- package/esm2022/lib/components/overlay/components/bottom-sheet/components/bottom-sheet-container/bottom-sheet-container.component.mjs +3 -3
- package/esm2022/lib/components/overlay/components/bottom-sheet/partials/bottom-sheet-container-base/bottom-sheet-container-base.component.mjs +3 -3
- package/esm2022/lib/components/overlay/components/bottom-sheet/partials/bottom-sheet-drag-handle/bottom-sheet-drag-handle.component.mjs +3 -3
- package/esm2022/lib/components/overlay/components/bottom-sheet/partials/bottom-sheet-title/bottom-sheet-title.directive.mjs +3 -3
- package/esm2022/lib/components/overlay/components/bottom-sheet/services/bottom-sheet-base.service.mjs +3 -3
- package/esm2022/lib/components/overlay/components/bottom-sheet/services/bottom-sheet-swipe-handler.service.mjs +3 -3
- package/esm2022/lib/components/overlay/components/bottom-sheet/services/bottom-sheet.service.mjs +3 -3
- package/esm2022/lib/components/overlay/components/dialog/components/dialog-container/dialog-container.component.mjs +3 -3
- package/esm2022/lib/components/overlay/components/dialog/partials/dialog-close/dialog-close.directive.mjs +3 -3
- package/esm2022/lib/components/overlay/components/dialog/partials/dialog-container-base/dialog-container-base.component.mjs +3 -3
- package/esm2022/lib/components/overlay/components/dialog/partials/dialog-title/dialog-title.directive.mjs +3 -3
- package/esm2022/lib/components/overlay/components/dialog/services/dialog-base.service.mjs +3 -3
- package/esm2022/lib/components/overlay/components/dialog/services/dialog.service.mjs +3 -3
- package/esm2022/lib/components/overlay/components/menu/components/menu/menu.component.mjs +3 -3
- package/esm2022/lib/components/overlay/components/menu/components/menu-checkbox-item/menu-checkbox-item.component.mjs +3 -3
- package/esm2022/lib/components/overlay/components/menu/components/menu-container/menu-container.component.mjs +3 -3
- package/esm2022/lib/components/overlay/components/menu/components/menu-radio-item/menu-radio-item.component.mjs +3 -3
- package/esm2022/lib/components/overlay/components/menu/directives/menu-checkbox-group/menu-checkbox-group.directive.mjs +3 -3
- package/esm2022/lib/components/overlay/components/menu/directives/menu-group/menu-group.directive.mjs +3 -3
- package/esm2022/lib/components/overlay/components/menu/directives/menu-group-title/menu-group-title.directive.mjs +3 -3
- package/esm2022/lib/components/overlay/components/menu/directives/menu-item/menu-item.directive.mjs +3 -3
- package/esm2022/lib/components/overlay/components/menu/directives/menu-radio-group/menu-radio-group.directive.mjs +3 -3
- package/esm2022/lib/components/overlay/components/menu/directives/menu-search-template/menu-search-template.directive.mjs +3 -3
- package/esm2022/lib/components/overlay/components/menu/directives/menu-trigger/menu-trigger.directive.mjs +3 -3
- package/esm2022/lib/components/overlay/components/menu-deprecated/context-menu-trigger.mjs +6 -6
- package/esm2022/lib/components/overlay/components/menu-deprecated/menu-aim.mjs +6 -6
- package/esm2022/lib/components/overlay/components/menu-deprecated/menu-bar.mjs +3 -3
- package/esm2022/lib/components/overlay/components/menu-deprecated/menu-base.mjs +3 -3
- package/esm2022/lib/components/overlay/components/menu-deprecated/menu-group.mjs +3 -3
- package/esm2022/lib/components/overlay/components/menu-deprecated/menu-item-checkbox.mjs +3 -3
- package/esm2022/lib/components/overlay/components/menu-deprecated/menu-item-radio.mjs +3 -3
- package/esm2022/lib/components/overlay/components/menu-deprecated/menu-item-selectable.mjs +3 -3
- package/esm2022/lib/components/overlay/components/menu-deprecated/menu-item.mjs +3 -3
- package/esm2022/lib/components/overlay/components/menu-deprecated/menu-module.mjs +4 -4
- package/esm2022/lib/components/overlay/components/menu-deprecated/menu-stack.mjs +3 -3
- package/esm2022/lib/components/overlay/components/menu-deprecated/menu-trigger-base.mjs +3 -3
- package/esm2022/lib/components/overlay/components/menu-deprecated/menu-trigger.mjs +3 -3
- package/esm2022/lib/components/overlay/components/menu-deprecated/menu.mjs +3 -3
- package/esm2022/lib/components/overlay/components/overlay/components/overlay-container/overlay-container.component.mjs +3 -3
- package/esm2022/lib/components/overlay/components/overlay/partials/overlay-back-or-close/overlay-back-or-close.directive.mjs +3 -3
- package/esm2022/lib/components/overlay/components/overlay/partials/overlay-body/overlay-body.component.mjs +3 -3
- package/esm2022/lib/components/overlay/components/overlay/partials/overlay-close/overlay-close.directive.mjs +3 -3
- package/esm2022/lib/components/overlay/components/overlay/partials/overlay-footer/overlay-footer.directive.mjs +3 -3
- package/esm2022/lib/components/overlay/components/overlay/partials/overlay-header/overlay-header.directive.mjs +3 -3
- package/esm2022/lib/components/overlay/components/overlay/partials/overlay-header-template/overlay-header-template.directive.mjs +3 -3
- package/esm2022/lib/components/overlay/components/overlay/partials/overlay-main/overlay-main.directive.mjs +3 -3
- package/esm2022/lib/components/overlay/components/overlay/partials/overlay-route-header-template-outlet/overlay-route-header-template-outlet.component.mjs +3 -3
- package/esm2022/lib/components/overlay/components/overlay/partials/overlay-router-link/overlay-router-link.directive.mjs +3 -3
- package/esm2022/lib/components/overlay/components/overlay/partials/overlay-router-outlet/overlay-router-outlet.component.mjs +3 -3
- package/esm2022/lib/components/overlay/components/overlay/partials/overlay-router-outlet-disabled-template/overlay-router-outlet-disabled-template.directive.mjs +3 -3
- package/esm2022/lib/components/overlay/components/overlay/partials/overlay-shared-route-template/overlay-shared-route-template.directive.mjs +3 -3
- package/esm2022/lib/components/overlay/components/overlay/partials/overlay-shared-route-template-outlet/overlay-shared-route-template-outlet.component.mjs +3 -3
- package/esm2022/lib/components/overlay/components/overlay/partials/overlay-sidebar/overlay-sidebar.component.mjs +3 -3
- package/esm2022/lib/components/overlay/components/overlay/partials/overlay-sidebar-page/overlay-sidebar-page.component.mjs +3 -3
- package/esm2022/lib/components/overlay/components/overlay/partials/overlay-title/overlay-title.directive.mjs +3 -3
- package/esm2022/lib/components/overlay/components/overlay/services/overlay.service.mjs +3 -3
- package/esm2022/lib/components/overlay/components/overlay/utils/filter-overlay.mjs +3 -3
- package/esm2022/lib/components/overlay/components/overlay/utils/overlay-handler-link.directive.mjs +3 -3
- package/esm2022/lib/components/overlay/components/toggletip/components/toggletip/toggletip.component.mjs +3 -3
- package/esm2022/lib/components/overlay/components/toggletip/directives/toggletip/toggletip.directive.mjs +3 -3
- package/esm2022/lib/components/overlay/components/toggletip/partials/toggletip-close/toggletip-close.directive.mjs +3 -3
- package/esm2022/lib/components/overlay/components/tooltip/components/tooltip/tooltip.component.mjs +3 -3
- package/esm2022/lib/components/overlay/components/tooltip/directives/tooltip/tooltip.directive.mjs +3 -3
- package/esm2022/lib/components/overlay/directives/dynamic-overlay-title/dynamic-overlay-title.directive.mjs +3 -3
- package/esm2022/lib/components/overlay/directives/overlay-close-auto-blocker/overlay-close-auto-blocker.directive.mjs +3 -3
- package/esm2022/lib/components/overlay/services/dynamic-overlay.service.mjs +3 -3
- package/esm2022/lib/components/pagination/components/pagination/pagination.component.mjs +3 -3
- package/esm2022/lib/components/pagination/partials/pagination-link/pagination-link.directive.mjs +3 -3
- package/esm2022/lib/components/pagination/services/pagination-head.service.mjs +3 -3
- package/esm2022/lib/components/picture/components/picture/picture.component.mjs +3 -3
- package/esm2022/lib/components/progress-spinner/progress-spinner.component.mjs +3 -3
- package/esm2022/lib/components/query-error/components/query-error/query-error.component.mjs +3 -3
- package/esm2022/lib/components/query-error/directives/query-error/query-error.directive.mjs +3 -3
- package/esm2022/lib/components/scrollable/components/scrollable/scrollable.component.mjs +3 -3
- package/esm2022/lib/components/scrollable/components/scrollable-placeholder/scrollable-placeholder.component.mjs +3 -3
- package/esm2022/lib/components/scrollable/directives/scrollable-ignore-child/scrollable-ignore-child.directive.mjs +3 -3
- package/esm2022/lib/components/scrollable/directives/scrollable-is-active-child/scrollable-is-active-child.directive.mjs +3 -3
- package/esm2022/lib/components/scrollable/directives/scrollable-loading-template/scrollable-loading-template.directive.mjs +3 -3
- package/esm2022/lib/components/scrollable/directives/scrollable-placeholder-item-template/scrollable-placeholder-item-template.directive.mjs +3 -3
- package/esm2022/lib/components/scrollable/directives/scrollable-placeholder-overlay-template/scrollable-placeholder-overlay-template.directive.mjs +3 -3
- package/esm2022/lib/components/skeleton/components/skeleton/skeleton.component.mjs +3 -3
- package/esm2022/lib/components/skeleton/partials/skeleton-item/skeleton-item.component.mjs +3 -3
- package/esm2022/lib/components/sort/components/sort-header/sort-header.component.mjs +3 -3
- package/esm2022/lib/components/sort/partials/sort/sort.directive.mjs +3 -3
- package/esm2022/lib/components/sort/services/sort-header-intl.mjs +3 -3
- package/esm2022/lib/components/table/components/table/table.component.mjs +3 -3
- package/esm2022/lib/components/table/partials/cells/cell/cell.directive.mjs +3 -3
- package/esm2022/lib/components/table/partials/cells/cell-def/cell-def.directive.mjs +3 -3
- package/esm2022/lib/components/table/partials/cells/column-def/column-def.directive.mjs +3 -3
- package/esm2022/lib/components/table/partials/cells/footer-cell/footer-cell.directive.mjs +3 -3
- package/esm2022/lib/components/table/partials/cells/footer-cell-def/footer-cell-def.directive.mjs +3 -3
- package/esm2022/lib/components/table/partials/cells/header-cell/header-cell.directive.mjs +3 -3
- package/esm2022/lib/components/table/partials/cells/header-cell-def/header-cell-def.directive.mjs +3 -3
- package/esm2022/lib/components/table/partials/cells/text-column/text-column.component.mjs +3 -3
- package/esm2022/lib/components/table/partials/rows/footer-row/footer-row.component.mjs +3 -3
- package/esm2022/lib/components/table/partials/rows/footer-row-def/footer-row-def.directive.mjs +3 -3
- package/esm2022/lib/components/table/partials/rows/header-row/header-row.component.mjs +3 -3
- package/esm2022/lib/components/table/partials/rows/header-row-def/header-row-def.directive.mjs +3 -3
- package/esm2022/lib/components/table/partials/rows/no-data-row/no-data-row.directive.mjs +3 -3
- package/esm2022/lib/components/table/partials/rows/recycle-rows/recycle-rows.directive.mjs +3 -3
- package/esm2022/lib/components/table/partials/rows/row/row.component.mjs +3 -3
- package/esm2022/lib/components/table/partials/rows/row-def/row-def.directive.mjs +3 -3
- package/esm2022/lib/components/table/partials/table-busy/table-busy.directive.mjs +3 -3
- package/esm2022/lib/components/table/partials/table-busy-outlet/table-busy-outlet.directive.mjs +3 -3
- package/esm2022/lib/components/tabs/components/inline-tabs/inline-tabs.component.mjs +3 -3
- package/esm2022/lib/components/tabs/components/nav-tabs/nav-tabs.component.mjs +3 -3
- package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab/inline-tab.component.mjs +3 -3
- package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab-body/inline-tab-body.component.mjs +3 -3
- package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab-body-host/inline-tab-body-host.directive.mjs +3 -3
- package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab-content/inline-tab-content.directive.mjs +3 -3
- package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab-header/inline-tab-header.component.mjs +3 -3
- package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab-label/inline-tab-label.directive.mjs +3 -3
- package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab-label-wrapper/inline-tab-label-wrapper.directive.mjs +3 -3
- package/esm2022/lib/components/tabs/partials/nav-tabs/nav-tab-link/nav-tab-link.directive.mjs +3 -3
- package/esm2022/lib/components/tabs/partials/nav-tabs/nav-tabs-outlet/nav-tabs-outlet.component.mjs +3 -3
- package/esm2022/lib/components/tabs/utils/active-tab-underline.util.mjs +3 -3
- package/esm2022/lib/components/tabs/utils/paginated-tab-header.directive.mjs +3 -3
- package/esm2022/lib/services/swipe-handler.service.mjs +3 -3
- package/fesm2022/ethlete-cdk.mjs +1314 -941
- package/fesm2022/ethlete-cdk.mjs.map +1 -1
- package/lib/components/bracket/components/new-bracket/bracket-new.d.ts +64 -4
- package/lib/components/bracket/components/new-bracket/draw-man.d.ts +16 -2
- package/lib/components/bracket/components/new-bracket/grid-placements.d.ts +7 -0
- package/lib/components/bracket/components/new-bracket/journey-highlight.d.ts +2 -0
- package/lib/components/bracket/components/new-bracket/new-bracket.component.d.ts +15 -3
- package/package.json +1 -1
|
@@ -1,66 +1,197 @@
|
|
|
1
|
-
|
|
2
|
-
const path = (d) => `<path d="${d}" stroke="
|
|
3
|
-
|
|
4
|
-
const
|
|
1
|
+
import { BRACKET_ROUND_MIRROR_TYPE, DOUBLE_ELIMINATION_BRACKET_ROUND_TYPE, FIRST_ROUNDS_TYPE, } from './bracket-new';
|
|
2
|
+
const path = (d, options) => `<path d="${d.replace(/\s+/g, ' ').trim()}" stroke="currentColor" fill="none" stroke-width="${options.width}" stroke-dasharray="${options.dashArray}" stroke-dashoffset="${options.dashOffset}" class="${options.className}" />`;
|
|
3
|
+
const curve = (from, to, direction, options) => {
|
|
4
|
+
const fromInline = from.inline.end;
|
|
5
|
+
const toInline = to.inline.start;
|
|
6
|
+
const toBlock = to.block.center;
|
|
7
|
+
const fromBlock = from.block.center;
|
|
8
|
+
const startingCurveAmount = options.lineStartingCurveAmount;
|
|
9
|
+
const endingCurveAmount = options.lineEndingCurveAmount;
|
|
10
|
+
const totalSpace = toInline - fromInline;
|
|
11
|
+
const totalSpaceMinusCurve = totalSpace - startingCurveAmount - endingCurveAmount;
|
|
12
|
+
const lineLength = totalSpaceMinusCurve / 2;
|
|
13
|
+
const straightLeftEnd = fromInline + lineLength;
|
|
14
|
+
const straightRightStart = toInline - lineLength;
|
|
15
|
+
// first 90 degree curve down
|
|
16
|
+
const firstCurveStartX = straightLeftEnd;
|
|
17
|
+
const firstCurveEndX = straightLeftEnd + startingCurveAmount;
|
|
18
|
+
const firstCurveEndY = direction === 'down' ? fromBlock + startingCurveAmount : fromBlock - startingCurveAmount;
|
|
19
|
+
const firstCurveBezierX = straightLeftEnd + startingCurveAmount;
|
|
20
|
+
const firstCurveBezierY = fromBlock;
|
|
21
|
+
// second 90 degree curve to the right
|
|
22
|
+
const secondCurveStartY = direction === 'down' ? toBlock - endingCurveAmount : toBlock + endingCurveAmount;
|
|
23
|
+
const secondCurveEndX = straightRightStart;
|
|
24
|
+
const secondCurveEndY = toBlock;
|
|
25
|
+
const secondCurveBezierX = straightRightStart - endingCurveAmount;
|
|
26
|
+
const secondCurveBezierY = toBlock;
|
|
27
|
+
const pathStr = `
|
|
28
|
+
M ${fromInline} ${fromBlock}
|
|
29
|
+
H ${firstCurveStartX}
|
|
30
|
+
Q ${firstCurveBezierX} ${firstCurveBezierY}, ${firstCurveEndX} ${firstCurveEndY}
|
|
31
|
+
V ${secondCurveStartY}
|
|
32
|
+
Q ${secondCurveBezierX} ${secondCurveBezierY}, ${secondCurveEndX} ${secondCurveEndY}
|
|
33
|
+
H ${toInline}
|
|
34
|
+
`;
|
|
35
|
+
return path(pathStr, options.path);
|
|
36
|
+
};
|
|
37
|
+
const curveInverted = (from, to, direction, options) => {
|
|
38
|
+
const fromInline = from.inline.start;
|
|
39
|
+
const fromBlock = from.block.center;
|
|
40
|
+
const toInline = to.inline.end;
|
|
41
|
+
const toBlock = to.block.center;
|
|
42
|
+
const startingCurveAmount = options.lineStartingCurveAmount;
|
|
43
|
+
const endingCurveAmount = options.lineEndingCurveAmount;
|
|
44
|
+
const totalSpace = fromInline - toInline;
|
|
45
|
+
const totalSpaceMinusCurve = totalSpace - startingCurveAmount - endingCurveAmount;
|
|
46
|
+
const lineLength = totalSpaceMinusCurve / 2;
|
|
47
|
+
const straightRightEnd = fromInline - lineLength;
|
|
48
|
+
const straightLeftStart = toInline + lineLength;
|
|
49
|
+
const firstCurveStartX = straightRightEnd;
|
|
50
|
+
const firstCurveEndX = straightRightEnd - startingCurveAmount;
|
|
51
|
+
const firstCurveEndY = direction === 'down' ? fromBlock + startingCurveAmount : fromBlock - startingCurveAmount;
|
|
52
|
+
const firstCurveBezierX = straightRightEnd - startingCurveAmount;
|
|
53
|
+
const firstCurveBezierY = fromBlock;
|
|
54
|
+
// second 90 degree curve to the right
|
|
55
|
+
const secondCurveStartY = direction === 'down' ? toBlock - endingCurveAmount : toBlock + endingCurveAmount;
|
|
56
|
+
const secondCurveEndX = straightLeftStart;
|
|
57
|
+
const secondCurveEndY = toBlock;
|
|
58
|
+
const secondCurveBezierX = straightLeftStart + endingCurveAmount;
|
|
59
|
+
const secondCurveBezierY = toBlock;
|
|
60
|
+
const pathStr = `
|
|
61
|
+
M ${fromInline} ${fromBlock}
|
|
62
|
+
H ${firstCurveStartX}
|
|
63
|
+
Q ${firstCurveBezierX} ${firstCurveBezierY}, ${firstCurveEndX} ${firstCurveEndY}
|
|
64
|
+
V ${secondCurveStartY}
|
|
65
|
+
Q ${secondCurveBezierX} ${secondCurveBezierY}, ${secondCurveEndX} ${secondCurveEndY}
|
|
66
|
+
H ${toInline}
|
|
67
|
+
`;
|
|
68
|
+
return path(pathStr, options.path);
|
|
69
|
+
};
|
|
70
|
+
const line = (from, to, options) => {
|
|
71
|
+
return path(`M ${from.inline.end} ${from.block.center} L ${to.inline.start} ${to.block.center}`, options.path);
|
|
72
|
+
};
|
|
73
|
+
const getMatchPosition = (roundItem, matchId, staticMeasurements) => {
|
|
74
|
+
if (!roundItem)
|
|
75
|
+
throw new Error('Item is missing');
|
|
76
|
+
if (!matchId)
|
|
77
|
+
throw new Error('Match is missing');
|
|
78
|
+
const match = roundItem.items.get(matchId);
|
|
79
|
+
if (!match || match.type !== 'match')
|
|
80
|
+
throw new Error('Match is missing');
|
|
81
|
+
const matchHalf = staticMeasurements.matchHeight / 2;
|
|
82
|
+
const roundFactor = staticMeasurements.baseRoundMatchCount / roundItem.roundRelation.currentRound.matchCount;
|
|
83
|
+
const remainingRowGapCount = roundItem.roundRelation.currentRound.matchCount - 1;
|
|
84
|
+
const matchIncludedRowGapTotal = staticMeasurements.baseRoundMatchCount - 1 - remainingRowGapCount;
|
|
85
|
+
const matchIncludedRowGapPerMatch = matchIncludedRowGapTotal / roundItem.roundRelation.currentRound.matchCount;
|
|
86
|
+
const matchRoundItemHeight = staticMeasurements.matchHeight * roundFactor + matchIncludedRowGapPerMatch * staticMeasurements.rowGap;
|
|
87
|
+
const matchesAbove = match.matchRelation.currentMatch.indexInRound;
|
|
88
|
+
const rowOffset = matchesAbove * staticMeasurements.rowGap + matchesAbove * matchRoundItemHeight;
|
|
89
|
+
const matchRowOffset = (matchRoundItemHeight - staticMeasurements.matchHeight) / 2;
|
|
90
|
+
const blockStart = rowOffset + matchRowOffset + staticMeasurements.baseOffsetY + staticMeasurements.doubleEliminationMergeOffset;
|
|
91
|
+
const block = {
|
|
92
|
+
start: blockStart,
|
|
93
|
+
end: blockStart + staticMeasurements.matchHeight,
|
|
94
|
+
center: blockStart + matchHalf,
|
|
95
|
+
};
|
|
96
|
+
const inlineStart = (roundItem.columnStart - 1) * staticMeasurements.columnWidth +
|
|
97
|
+
(roundItem.columnStart - 1) * staticMeasurements.columnGap;
|
|
98
|
+
const inline = {
|
|
99
|
+
start: inlineStart,
|
|
100
|
+
end: inlineStart + staticMeasurements.columnWidth,
|
|
101
|
+
center: inlineStart + staticMeasurements.columnWidth / 2,
|
|
102
|
+
};
|
|
103
|
+
return { inline, block };
|
|
104
|
+
};
|
|
105
|
+
export const drawMan = (items, firstRounds, dimensions) => {
|
|
106
|
+
const { columnWidth, matchHeight, rowGap, columnGap, roundHeaderHeight } = dimensions;
|
|
5
107
|
const roundHeaderRowGap = roundHeaderHeight ? rowGap : 0;
|
|
6
108
|
const baseOffsetY = roundHeaderHeight + roundHeaderRowGap;
|
|
7
|
-
const columnGapCenter = columnGap / 2;
|
|
8
|
-
const totalHeight = (gridDefinitions.rowCount - 1) * matchHeight + (gridDefinitions.rowCount - 1) * rowGap + roundHeaderHeight; // TODO: This is not correct in double elimination
|
|
9
109
|
const svgParts = [];
|
|
10
|
-
// a nothing to one draws nothing
|
|
11
|
-
// a one to nothing draws nothing
|
|
12
|
-
// a one to one draws a line
|
|
13
|
-
// a one to two draws a line that splits into in the middle
|
|
14
|
-
// a two to one draws two lines that merge into one in the middle
|
|
15
|
-
// WE ONLY EVER DRAW THE LEFT SIDE (on-to, nothing-to, two-to)
|
|
16
110
|
for (const round of items.values()) {
|
|
17
|
-
const rows = round.roundRelation.currentRound.matchCount;
|
|
18
|
-
const rowGaps = rows - 1;
|
|
19
|
-
const rowHeight = (totalHeight - baseOffsetY) / rows - rowGaps * rowGap;
|
|
20
|
-
const rowWhitespace = (rowHeight - matchHeight) / 2;
|
|
21
|
-
const matchHeightOffset = rowWhitespace + matchHeight / 2; // the vertical middle of a match in this row
|
|
22
111
|
for (const item of round.items.values()) {
|
|
23
112
|
if (item.type === 'round')
|
|
24
113
|
continue; // we don't draw lines for round headers
|
|
114
|
+
let baseRoundMatchCount = null;
|
|
115
|
+
let doubleEliminationMergeOffset = 0;
|
|
116
|
+
if (firstRounds.type === FIRST_ROUNDS_TYPE.SINGLE) {
|
|
117
|
+
baseRoundMatchCount = firstRounds.first.matchCount;
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
if (item.roundRelation.currentRound.type === DOUBLE_ELIMINATION_BRACKET_ROUND_TYPE.UPPER_BRACKET) {
|
|
121
|
+
baseRoundMatchCount = firstRounds.upper.matchCount;
|
|
122
|
+
}
|
|
123
|
+
else if (item.roundRelation.currentRound.type === DOUBLE_ELIMINATION_BRACKET_ROUND_TYPE.LOWER_BRACKET) {
|
|
124
|
+
baseRoundMatchCount = firstRounds.lower.matchCount;
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
baseRoundMatchCount = firstRounds.upper.matchCount + firstRounds.lower.matchCount;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
if (item.roundRelation.currentRound.type === DOUBLE_ELIMINATION_BRACKET_ROUND_TYPE.LOWER_BRACKET) {
|
|
131
|
+
doubleEliminationMergeOffset = roundHeaderHeight + roundHeaderRowGap;
|
|
132
|
+
// TODO:
|
|
133
|
+
// baseOffsetY = baseOffsetY * 2 (2 round headers and gaps) + (firstRounds.upper.matchCount * matchHeight) + (firstRounds.upper.matchCount - 1 * rowGap)
|
|
134
|
+
// baseOffsetY
|
|
135
|
+
}
|
|
136
|
+
const staticMeasurements = {
|
|
137
|
+
baseOffsetY,
|
|
138
|
+
baseRoundMatchCount,
|
|
139
|
+
columnGap,
|
|
140
|
+
columnWidth,
|
|
141
|
+
doubleEliminationMergeOffset,
|
|
142
|
+
matchHeight,
|
|
143
|
+
rowGap,
|
|
144
|
+
};
|
|
145
|
+
const currentMatchParticipantsShortIds = [
|
|
146
|
+
item.matchRelation.currentMatch.home?.shortId,
|
|
147
|
+
item.matchRelation.currentMatch.away?.shortId,
|
|
148
|
+
]
|
|
149
|
+
.filter((id) => !!id)
|
|
150
|
+
.join(' ');
|
|
151
|
+
const pathOptions = { ...dimensions.path, className: currentMatchParticipantsShortIds };
|
|
152
|
+
const currentMatchPosition = getMatchPosition(round, item.matchRelation.currentMatch.id, staticMeasurements);
|
|
153
|
+
// We only draw the left side of the match relation
|
|
25
154
|
switch (item.matchRelation.type) {
|
|
26
155
|
case 'nothing-to-one': {
|
|
27
156
|
continue;
|
|
28
157
|
}
|
|
29
158
|
case 'one-to-nothing':
|
|
30
159
|
case 'one-to-one': {
|
|
160
|
+
const previousMatchPosition = getMatchPosition(items.get(item.matchRelation.previousRound.id), item.matchRelation.previousMatch.id, staticMeasurements);
|
|
31
161
|
// draw a straight line
|
|
32
|
-
|
|
33
|
-
if (!previousRound)
|
|
34
|
-
throw new Error('Previous round or match is missing');
|
|
35
|
-
const previousMatch = previousRound.items.get(item.matchRelation.previousMatch.id);
|
|
36
|
-
if (!previousMatch || previousMatch.type !== 'match')
|
|
37
|
-
throw new Error('Previous round or match is missing');
|
|
38
|
-
const previousRoundRows = previousRound.roundRelation.currentRound.matchCount;
|
|
39
|
-
const previousRoundRowGaps = previousRoundRows - 1;
|
|
40
|
-
const previousRoundRowHeight = (totalHeight - baseOffsetY) / previousRoundRows - previousRoundRowGaps * rowGap;
|
|
41
|
-
const previousRoundRowWhitespace = (previousRoundRowHeight - matchHeight) / 2;
|
|
42
|
-
const previousRoundMatchHeightOffset = previousRoundRowWhitespace + matchHeight / 2;
|
|
43
|
-
const fromX = previousRound.columnStart * columnWidth + (round.columnStart - 2) * columnGap;
|
|
44
|
-
const toX = (round.columnStart - 1) * columnWidth + (round.columnStart - 1) * columnGap;
|
|
45
|
-
const fromY = previousMatch.matchRelation.currentMatch.indexInRound * previousRoundRowWhitespace +
|
|
46
|
-
previousMatch.matchRelation.currentMatch.indexInRound * rowGap +
|
|
47
|
-
baseOffsetY +
|
|
48
|
-
previousRoundMatchHeightOffset;
|
|
49
|
-
const toY = item.matchRelation.currentMatch.indexInRound * rowWhitespace +
|
|
50
|
-
item.matchRelation.currentMatch.indexInRound * rowGap +
|
|
51
|
-
baseOffsetY +
|
|
52
|
-
matchHeightOffset;
|
|
53
|
-
svgParts.push(path(`M ${fromX} ${fromY} L ${toX} ${toY}`));
|
|
162
|
+
svgParts.push(line(previousMatchPosition, currentMatchPosition, { path: pathOptions }));
|
|
54
163
|
break;
|
|
55
164
|
}
|
|
56
165
|
case 'two-to-nothing':
|
|
57
166
|
case 'two-to-one': {
|
|
167
|
+
const previousUpper = getMatchPosition(items.get(item.matchRelation.previousUpperRound.id), item.matchRelation.previousUpperMatch.id, staticMeasurements);
|
|
168
|
+
const previousLower = getMatchPosition(items.get(item.matchRelation.previousLowerRound.id), item.matchRelation.previousLowerMatch.id, staticMeasurements);
|
|
169
|
+
const curveOptions = {
|
|
170
|
+
...dimensions.curve,
|
|
171
|
+
path: { ...dimensions.path, className: '' },
|
|
172
|
+
};
|
|
173
|
+
const curveFn = item.roundRelation.currentRound.mirrorRoundType === BRACKET_ROUND_MIRROR_TYPE.RIGHT ? curveInverted : curve;
|
|
58
174
|
// draw two lines that merge into one in the middle
|
|
175
|
+
svgParts.push(curveFn(previousUpper, currentMatchPosition, 'down', {
|
|
176
|
+
...curveOptions,
|
|
177
|
+
path: { ...curveOptions.path, className: item.matchRelation.previousUpperMatch.winner?.shortId || '' },
|
|
178
|
+
}));
|
|
179
|
+
svgParts.push(curveFn(previousLower, currentMatchPosition, 'up', {
|
|
180
|
+
...curveOptions,
|
|
181
|
+
path: { ...curveOptions.path, className: item.matchRelation.previousLowerMatch.winner?.shortId || '' },
|
|
182
|
+
}));
|
|
183
|
+
if (item.matchRelation.currentRound.mirrorRoundType === BRACKET_ROUND_MIRROR_TYPE.RIGHT &&
|
|
184
|
+
item.matchRelation.type === 'two-to-one' &&
|
|
185
|
+
item.matchRelation.nextRound.mirrorRoundType === null) {
|
|
186
|
+
// draw a straight line for the special case of connecting the final match to the mirrored semi final match
|
|
187
|
+
const next = getMatchPosition(items.get(item.matchRelation.nextRound.id), item.matchRelation.nextMatch.id, staticMeasurements);
|
|
188
|
+
svgParts.push(line(next, currentMatchPosition, { path: pathOptions }));
|
|
189
|
+
}
|
|
59
190
|
break;
|
|
60
191
|
}
|
|
61
192
|
}
|
|
62
193
|
}
|
|
63
194
|
}
|
|
64
|
-
return svgParts.join('
|
|
195
|
+
return svgParts.join('');
|
|
65
196
|
};
|
|
66
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhdy1tYW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL2NvbXBvbmVudHMvYnJhY2tldC9jb21wb25lbnRzL25ldy1icmFja2V0L2RyYXctbWFuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWFBLE1BQU0sVUFBVSxHQUFHLENBQUMsQ0FBQztBQUVyQixNQUFNLElBQUksR0FBRyxDQUFDLENBQVMsRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLDRDQUE0QyxVQUFVLE1BQU0sQ0FBQztBQUV0RyxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsQ0FDckIsS0FBd0UsRUFDeEUsY0FBNkQsRUFDN0QsVUFBNkIsRUFDN0IsRUFBRTtJQUNGLE1BQU0sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLEdBQUcsVUFBVSxDQUFDO0lBQ3ZHLE1BQU0saUJBQWlCLEdBQUcsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pELE1BQU0sV0FBVyxHQUFHLGlCQUFpQixHQUFHLGlCQUFpQixDQUFDO0lBRTFELE1BQU0sZUFBZSxHQUFHLFNBQVMsR0FBRyxDQUFDLENBQUM7SUFDdEMsTUFBTSxXQUFXLEdBQ2YsQ0FBQyxlQUFlLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxHQUFHLFdBQVcsR0FBRyxDQUFDLGVBQWUsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLEdBQUcsTUFBTSxHQUFHLGlCQUFpQixDQUFDLENBQUMsa0RBQWtEO0lBQ2hLLE1BQU0sUUFBUSxHQUFhLEVBQUUsQ0FBQztJQUU5QixpQ0FBaUM7SUFDakMsaUNBQWlDO0lBQ2pDLDRCQUE0QjtJQUM1QiwyREFBMkQ7SUFDM0QsaUVBQWlFO0lBRWpFLDhEQUE4RDtJQUU5RCxLQUFLLE1BQU0sS0FBSyxJQUFJLEtBQUssQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO1FBQ25DLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQztRQUN6RCxNQUFNLE9BQU8sR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQ3pCLE1BQU0sU0FBUyxHQUFHLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQyxHQUFHLElBQUksR0FBRyxPQUFPLEdBQUcsTUFBTSxDQUFDO1FBQ3hFLE1BQU0sYUFBYSxHQUFHLENBQUMsU0FBUyxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNwRCxNQUFNLGlCQUFpQixHQUFHLGFBQWEsR0FBRyxXQUFXLEdBQUcsQ0FBQyxDQUFDLENBQUMsNkNBQTZDO1FBRXhHLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO1lBQ3hDLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxPQUFPO2dCQUFFLFNBQVMsQ0FBQyx3Q0FBd0M7WUFFN0UsUUFBUSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNoQyxLQUFLLGdCQUFnQixDQUFDLENBQUMsQ0FBQztvQkFDdEIsU0FBUztnQkFDWCxDQUFDO2dCQUNELEtBQUssZ0JBQWdCLENBQUM7Z0JBQ3RCLEtBQUssWUFBWSxDQUFDLENBQUMsQ0FBQztvQkFDbEIsdUJBQXVCO29CQUN2QixNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUNyRSxJQUFJLENBQUMsYUFBYTt3QkFBRSxNQUFNLElBQUksS0FBSyxDQUFDLG9DQUFvQyxDQUFDLENBQUM7b0JBQzFFLE1BQU0sYUFBYSxHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUNuRixJQUFJLENBQUMsYUFBYSxJQUFJLGFBQWEsQ0FBQyxJQUFJLEtBQUssT0FBTzt3QkFBRSxNQUFNLElBQUksS0FBSyxDQUFDLG9DQUFvQyxDQUFDLENBQUM7b0JBRTVHLE1BQU0saUJBQWlCLEdBQUcsYUFBYSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDO29CQUM5RSxNQUFNLG9CQUFvQixHQUFHLGlCQUFpQixHQUFHLENBQUMsQ0FBQztvQkFFbkQsTUFBTSxzQkFBc0IsR0FDMUIsQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDLEdBQUcsaUJBQWlCLEdBQUcsb0JBQW9CLEdBQUcsTUFBTSxDQUFDO29CQUVsRixNQUFNLDBCQUEwQixHQUFHLENBQUMsc0JBQXNCLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUM5RSxNQUFNLDhCQUE4QixHQUFHLDBCQUEwQixHQUFHLFdBQVcsR0FBRyxDQUFDLENBQUM7b0JBRXBGLE1BQU0sS0FBSyxHQUFHLGFBQWEsQ0FBQyxXQUFXLEdBQUcsV0FBVyxHQUFHLENBQUMsS0FBSyxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUM7b0JBQzVGLE1BQU0sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsR0FBRyxXQUFXLEdBQUcsQ0FBQyxLQUFLLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQztvQkFFeEYsTUFBTSxLQUFLLEdBQ1QsYUFBYSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsWUFBWSxHQUFHLDBCQUEwQjt3QkFDbEYsYUFBYSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsWUFBWSxHQUFHLE1BQU07d0JBQzlELFdBQVc7d0JBQ1gsOEJBQThCLENBQUM7b0JBQ2pDLE1BQU0sR0FBRyxHQUNQLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLFlBQVksR0FBRyxhQUFhO3dCQUM1RCxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxZQUFZLEdBQUcsTUFBTTt3QkFDckQsV0FBVzt3QkFDWCxpQkFBaUIsQ0FBQztvQkFFcEIsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxLQUFLLElBQUksS0FBSyxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBRTNELE1BQU07Z0JBQ1IsQ0FBQztnQkFDRCxLQUFLLGdCQUFnQixDQUFDO2dCQUN0QixLQUFLLFlBQVksQ0FBQyxDQUFDLENBQUM7b0JBQ2xCLG1EQUFtRDtvQkFFbkQsTUFBTTtnQkFDUixDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzlCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJyYWNrZXRSb3VuZElkLCBCcmFja2V0Um91bmRSZWxhdGlvbnMgfSBmcm9tICcuL2JyYWNrZXQtbmV3JztcbmltcG9ydCB7IEJyYWNrZXRHcmlkRGVmaW5pdGlvbnMgfSBmcm9tICcuL2dyaWQtZGVmaW5pdGlvbnMnO1xuaW1wb3J0IHsgQnJhY2tldEdyaWRSb3VuZEl0ZW0gfSBmcm9tICcuL2dyaWQtcGxhY2VtZW50cyc7XG5cbmV4cG9ydCB0eXBlIERyYXdNYW5EaW1lbnNpb25zID0ge1xuICBjb2x1bW5XaWR0aDogbnVtYmVyO1xuICBtYXRjaEhlaWdodDogbnVtYmVyO1xuICByb3VuZEhlYWRlckhlaWdodDogbnVtYmVyO1xuICBjb2x1bW5HYXA6IG51bWJlcjtcbiAgcm93R2FwOiBudW1iZXI7XG4gIGdyaWREZWZpbml0aW9uczogQnJhY2tldEdyaWREZWZpbml0aW9ucztcbn07XG5cbmNvbnN0IExJTkVfV0lEVEggPSAxO1xuXG5jb25zdCBwYXRoID0gKGQ6IHN0cmluZykgPT4gYDxwYXRoIGQ9XCIke2R9XCIgc3Ryb2tlPVwicmVkXCIgZmlsbD1cIm5vbmVcIiBzdHJva2Utd2lkdGg9XCIke0xJTkVfV0lEVEh9XCIgLz5gO1xuXG5leHBvcnQgY29uc3QgZHJhd01hbiA9IDxUUm91bmREYXRhLCBUTWF0Y2hEYXRhPihcbiAgaXRlbXM6IE1hcDxCcmFja2V0Um91bmRJZCwgQnJhY2tldEdyaWRSb3VuZEl0ZW08VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT4+LFxuICByb3VuZFJlbGF0aW9uczogQnJhY2tldFJvdW5kUmVsYXRpb25zPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+LFxuICBkaW1lbnNpb25zOiBEcmF3TWFuRGltZW5zaW9ucyxcbikgPT4ge1xuICBjb25zdCB7IGNvbHVtbldpZHRoLCBtYXRjaEhlaWdodCwgcm93R2FwLCBjb2x1bW5HYXAsIHJvdW5kSGVhZGVySGVpZ2h0LCBncmlkRGVmaW5pdGlvbnMgfSA9IGRpbWVuc2lvbnM7XG4gIGNvbnN0IHJvdW5kSGVhZGVyUm93R2FwID0gcm91bmRIZWFkZXJIZWlnaHQgPyByb3dHYXAgOiAwO1xuICBjb25zdCBiYXNlT2Zmc2V0WSA9IHJvdW5kSGVhZGVySGVpZ2h0ICsgcm91bmRIZWFkZXJSb3dHYXA7XG5cbiAgY29uc3QgY29sdW1uR2FwQ2VudGVyID0gY29sdW1uR2FwIC8gMjtcbiAgY29uc3QgdG90YWxIZWlnaHQgPVxuICAgIChncmlkRGVmaW5pdGlvbnMucm93Q291bnQgLSAxKSAqIG1hdGNoSGVpZ2h0ICsgKGdyaWREZWZpbml0aW9ucy5yb3dDb3VudCAtIDEpICogcm93R2FwICsgcm91bmRIZWFkZXJIZWlnaHQ7IC8vIFRPRE86IFRoaXMgaXMgbm90IGNvcnJlY3QgaW4gZG91YmxlIGVsaW1pbmF0aW9uXG4gIGNvbnN0IHN2Z1BhcnRzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIC8vIGEgbm90aGluZyB0byBvbmUgZHJhd3Mgbm90aGluZ1xuICAvLyBhIG9uZSB0byBub3RoaW5nIGRyYXdzIG5vdGhpbmdcbiAgLy8gYSBvbmUgdG8gb25lIGRyYXdzIGEgbGluZVxuICAvLyBhIG9uZSB0byB0d28gZHJhd3MgYSBsaW5lIHRoYXQgc3BsaXRzIGludG8gaW4gdGhlIG1pZGRsZVxuICAvLyBhIHR3byB0byBvbmUgZHJhd3MgdHdvIGxpbmVzIHRoYXQgbWVyZ2UgaW50byBvbmUgaW4gdGhlIG1pZGRsZVxuXG4gIC8vIFdFIE9OTFkgRVZFUiBEUkFXIFRIRSBMRUZUIFNJREUgKG9uLXRvLCBub3RoaW5nLXRvLCB0d28tdG8pXG5cbiAgZm9yIChjb25zdCByb3VuZCBvZiBpdGVtcy52YWx1ZXMoKSkge1xuICAgIGNvbnN0IHJvd3MgPSByb3VuZC5yb3VuZFJlbGF0aW9uLmN1cnJlbnRSb3VuZC5tYXRjaENvdW50O1xuICAgIGNvbnN0IHJvd0dhcHMgPSByb3dzIC0gMTtcbiAgICBjb25zdCByb3dIZWlnaHQgPSAodG90YWxIZWlnaHQgLSBiYXNlT2Zmc2V0WSkgLyByb3dzIC0gcm93R2FwcyAqIHJvd0dhcDtcbiAgICBjb25zdCByb3dXaGl0ZXNwYWNlID0gKHJvd0hlaWdodCAtIG1hdGNoSGVpZ2h0KSAvIDI7XG4gICAgY29uc3QgbWF0Y2hIZWlnaHRPZmZzZXQgPSByb3dXaGl0ZXNwYWNlICsgbWF0Y2hIZWlnaHQgLyAyOyAvLyB0aGUgdmVydGljYWwgbWlkZGxlIG9mIGEgbWF0Y2ggaW4gdGhpcyByb3dcblxuICAgIGZvciAoY29uc3QgaXRlbSBvZiByb3VuZC5pdGVtcy52YWx1ZXMoKSkge1xuICAgICAgaWYgKGl0ZW0udHlwZSA9PT0gJ3JvdW5kJykgY29udGludWU7IC8vIHdlIGRvbid0IGRyYXcgbGluZXMgZm9yIHJvdW5kIGhlYWRlcnNcblxuICAgICAgc3dpdGNoIChpdGVtLm1hdGNoUmVsYXRpb24udHlwZSkge1xuICAgICAgICBjYXNlICdub3RoaW5nLXRvLW9uZSc6IHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlICdvbmUtdG8tbm90aGluZyc6XG4gICAgICAgIGNhc2UgJ29uZS10by1vbmUnOiB7XG4gICAgICAgICAgLy8gZHJhdyBhIHN0cmFpZ2h0IGxpbmVcbiAgICAgICAgICBjb25zdCBwcmV2aW91c1JvdW5kID0gaXRlbXMuZ2V0KGl0ZW0ubWF0Y2hSZWxhdGlvbi5wcmV2aW91c1JvdW5kLmlkKTtcbiAgICAgICAgICBpZiAoIXByZXZpb3VzUm91bmQpIHRocm93IG5ldyBFcnJvcignUHJldmlvdXMgcm91bmQgb3IgbWF0Y2ggaXMgbWlzc2luZycpO1xuICAgICAgICAgIGNvbnN0IHByZXZpb3VzTWF0Y2ggPSBwcmV2aW91c1JvdW5kLml0ZW1zLmdldChpdGVtLm1hdGNoUmVsYXRpb24ucHJldmlvdXNNYXRjaC5pZCk7XG4gICAgICAgICAgaWYgKCFwcmV2aW91c01hdGNoIHx8IHByZXZpb3VzTWF0Y2gudHlwZSAhPT0gJ21hdGNoJykgdGhyb3cgbmV3IEVycm9yKCdQcmV2aW91cyByb3VuZCBvciBtYXRjaCBpcyBtaXNzaW5nJyk7XG5cbiAgICAgICAgICBjb25zdCBwcmV2aW91c1JvdW5kUm93cyA9IHByZXZpb3VzUm91bmQucm91bmRSZWxhdGlvbi5jdXJyZW50Um91bmQubWF0Y2hDb3VudDtcbiAgICAgICAgICBjb25zdCBwcmV2aW91c1JvdW5kUm93R2FwcyA9IHByZXZpb3VzUm91bmRSb3dzIC0gMTtcblxuICAgICAgICAgIGNvbnN0IHByZXZpb3VzUm91bmRSb3dIZWlnaHQgPVxuICAgICAgICAgICAgKHRvdGFsSGVpZ2h0IC0gYmFzZU9mZnNldFkpIC8gcHJldmlvdXNSb3VuZFJvd3MgLSBwcmV2aW91c1JvdW5kUm93R2FwcyAqIHJvd0dhcDtcblxuICAgICAgICAgIGNvbnN0IHByZXZpb3VzUm91bmRSb3dXaGl0ZXNwYWNlID0gKHByZXZpb3VzUm91bmRSb3dIZWlnaHQgLSBtYXRjaEhlaWdodCkgLyAyO1xuICAgICAgICAgIGNvbnN0IHByZXZpb3VzUm91bmRNYXRjaEhlaWdodE9mZnNldCA9IHByZXZpb3VzUm91bmRSb3dXaGl0ZXNwYWNlICsgbWF0Y2hIZWlnaHQgLyAyO1xuXG4gICAgICAgICAgY29uc3QgZnJvbVggPSBwcmV2aW91c1JvdW5kLmNvbHVtblN0YXJ0ICogY29sdW1uV2lkdGggKyAocm91bmQuY29sdW1uU3RhcnQgLSAyKSAqIGNvbHVtbkdhcDtcbiAgICAgICAgICBjb25zdCB0b1ggPSAocm91bmQuY29sdW1uU3RhcnQgLSAxKSAqIGNvbHVtbldpZHRoICsgKHJvdW5kLmNvbHVtblN0YXJ0IC0gMSkgKiBjb2x1bW5HYXA7XG5cbiAgICAgICAgICBjb25zdCBmcm9tWSA9XG4gICAgICAgICAgICBwcmV2aW91c01hdGNoLm1hdGNoUmVsYXRpb24uY3VycmVudE1hdGNoLmluZGV4SW5Sb3VuZCAqIHByZXZpb3VzUm91bmRSb3dXaGl0ZXNwYWNlICtcbiAgICAgICAgICAgIHByZXZpb3VzTWF0Y2gubWF0Y2hSZWxhdGlvbi5jdXJyZW50TWF0Y2guaW5kZXhJblJvdW5kICogcm93R2FwICtcbiAgICAgICAgICAgIGJhc2VPZmZzZXRZICtcbiAgICAgICAgICAgIHByZXZpb3VzUm91bmRNYXRjaEhlaWdodE9mZnNldDtcbiAgICAgICAgICBjb25zdCB0b1kgPVxuICAgICAgICAgICAgaXRlbS5tYXRjaFJlbGF0aW9uLmN1cnJlbnRNYXRjaC5pbmRleEluUm91bmQgKiByb3dXaGl0ZXNwYWNlICtcbiAgICAgICAgICAgIGl0ZW0ubWF0Y2hSZWxhdGlvbi5jdXJyZW50TWF0Y2guaW5kZXhJblJvdW5kICogcm93R2FwICtcbiAgICAgICAgICAgIGJhc2VPZmZzZXRZICtcbiAgICAgICAgICAgIG1hdGNoSGVpZ2h0T2Zmc2V0O1xuXG4gICAgICAgICAgc3ZnUGFydHMucHVzaChwYXRoKGBNICR7ZnJvbVh9ICR7ZnJvbVl9IEwgJHt0b1h9ICR7dG9ZfWApKTtcblxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJ3R3by10by1ub3RoaW5nJzpcbiAgICAgICAgY2FzZSAndHdvLXRvLW9uZSc6IHtcbiAgICAgICAgICAvLyBkcmF3IHR3byBsaW5lcyB0aGF0IG1lcmdlIGludG8gb25lIGluIHRoZSBtaWRkbGVcblxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN2Z1BhcnRzLmpvaW4oJyAvbicpO1xufTtcbiJdfQ==
|
|
197
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhdy1tYW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL2NvbXBvbmVudHMvYnJhY2tldC9jb21wb25lbnRzL25ldy1icmFja2V0L2RyYXctbWFuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx5QkFBeUIsRUFHekIscUNBQXFDLEVBQ3JDLGlCQUFpQixHQUVsQixNQUFNLGVBQWUsQ0FBQztBQXNCdkIsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFTLEVBQUUsT0FBb0IsRUFBRSxFQUFFLENBQy9DLFlBQVksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLHFEQUFxRCxPQUFPLENBQUMsS0FBSyx1QkFBdUIsT0FBTyxDQUFDLFNBQVMsd0JBQXdCLE9BQU8sQ0FBQyxVQUFVLFlBQVksT0FBTyxDQUFDLFNBQVMsTUFBTSxDQUFDO0FBUW5PLE1BQU0sS0FBSyxHQUFHLENBQUMsSUFBcUIsRUFBRSxFQUFtQixFQUFFLFNBQXdCLEVBQUUsT0FBcUIsRUFBRSxFQUFFO0lBQzVHLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO0lBQ25DLE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO0lBRWpDLE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO0lBQ2hDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO0lBRXBDLE1BQU0sbUJBQW1CLEdBQUcsT0FBTyxDQUFDLHVCQUF1QixDQUFDO0lBQzVELE1BQU0saUJBQWlCLEdBQUcsT0FBTyxDQUFDLHFCQUFxQixDQUFDO0lBRXhELE1BQU0sVUFBVSxHQUFHLFFBQVEsR0FBRyxVQUFVLENBQUM7SUFDekMsTUFBTSxvQkFBb0IsR0FBRyxVQUFVLEdBQUcsbUJBQW1CLEdBQUcsaUJBQWlCLENBQUM7SUFDbEYsTUFBTSxVQUFVLEdBQUcsb0JBQW9CLEdBQUcsQ0FBQyxDQUFDO0lBRTVDLE1BQU0sZUFBZSxHQUFHLFVBQVUsR0FBRyxVQUFVLENBQUM7SUFDaEQsTUFBTSxrQkFBa0IsR0FBRyxRQUFRLEdBQUcsVUFBVSxDQUFDO0lBQ2pELDZCQUE2QjtJQUM3QixNQUFNLGdCQUFnQixHQUFHLGVBQWUsQ0FBQztJQUN6QyxNQUFNLGNBQWMsR0FBRyxlQUFlLEdBQUcsbUJBQW1CLENBQUM7SUFDN0QsTUFBTSxjQUFjLEdBQUcsU0FBUyxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxHQUFHLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxTQUFTLEdBQUcsbUJBQW1CLENBQUM7SUFFaEgsTUFBTSxpQkFBaUIsR0FBRyxlQUFlLEdBQUcsbUJBQW1CLENBQUM7SUFDaEUsTUFBTSxpQkFBaUIsR0FBRyxTQUFTLENBQUM7SUFFcEMsc0NBQXNDO0lBQ3RDLE1BQU0saUJBQWlCLEdBQUcsU0FBUyxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxHQUFHLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxPQUFPLEdBQUcsaUJBQWlCLENBQUM7SUFDM0csTUFBTSxlQUFlLEdBQUcsa0JBQWtCLENBQUM7SUFDM0MsTUFBTSxlQUFlLEdBQUcsT0FBTyxDQUFDO0lBRWhDLE1BQU0sa0JBQWtCLEdBQUcsa0JBQWtCLEdBQUcsaUJBQWlCLENBQUM7SUFDbEUsTUFBTSxrQkFBa0IsR0FBRyxPQUFPLENBQUM7SUFFbkMsTUFBTSxPQUFPLEdBQUc7UUFDVixVQUFVLElBQUksU0FBUztRQUN2QixnQkFBZ0I7UUFDaEIsaUJBQWlCLElBQUksaUJBQWlCLEtBQUssY0FBYyxJQUFJLGNBQWM7UUFDM0UsaUJBQWlCO1FBQ2pCLGtCQUFrQixJQUFJLGtCQUFrQixLQUFLLGVBQWUsSUFBSSxlQUFlO1FBQy9FLFFBQVE7R0FDYixDQUFDO0lBRUYsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNyQyxDQUFDLENBQUM7QUFFRixNQUFNLGFBQWEsR0FBRyxDQUFDLElBQXFCLEVBQUUsRUFBbUIsRUFBRSxTQUF3QixFQUFFLE9BQXFCLEVBQUUsRUFBRTtJQUNwSCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztJQUNyQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztJQUVwQyxNQUFNLFFBQVEsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQztJQUMvQixNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztJQUVoQyxNQUFNLG1CQUFtQixHQUFHLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQztJQUM1RCxNQUFNLGlCQUFpQixHQUFHLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQztJQUV4RCxNQUFNLFVBQVUsR0FBRyxVQUFVLEdBQUcsUUFBUSxDQUFDO0lBQ3pDLE1BQU0sb0JBQW9CLEdBQUcsVUFBVSxHQUFHLG1CQUFtQixHQUFHLGlCQUFpQixDQUFDO0lBQ2xGLE1BQU0sVUFBVSxHQUFHLG9CQUFvQixHQUFHLENBQUMsQ0FBQztJQUU1QyxNQUFNLGdCQUFnQixHQUFHLFVBQVUsR0FBRyxVQUFVLENBQUM7SUFDakQsTUFBTSxpQkFBaUIsR0FBRyxRQUFRLEdBQUcsVUFBVSxDQUFDO0lBRWhELE1BQU0sZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUM7SUFDMUMsTUFBTSxjQUFjLEdBQUcsZ0JBQWdCLEdBQUcsbUJBQW1CLENBQUM7SUFDOUQsTUFBTSxjQUFjLEdBQUcsU0FBUyxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxHQUFHLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxTQUFTLEdBQUcsbUJBQW1CLENBQUM7SUFFaEgsTUFBTSxpQkFBaUIsR0FBRyxnQkFBZ0IsR0FBRyxtQkFBbUIsQ0FBQztJQUNqRSxNQUFNLGlCQUFpQixHQUFHLFNBQVMsQ0FBQztJQUVwQyxzQ0FBc0M7SUFDdEMsTUFBTSxpQkFBaUIsR0FBRyxTQUFTLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLEdBQUcsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLE9BQU8sR0FBRyxpQkFBaUIsQ0FBQztJQUMzRyxNQUFNLGVBQWUsR0FBRyxpQkFBaUIsQ0FBQztJQUMxQyxNQUFNLGVBQWUsR0FBRyxPQUFPLENBQUM7SUFFaEMsTUFBTSxrQkFBa0IsR0FBRyxpQkFBaUIsR0FBRyxpQkFBaUIsQ0FBQztJQUNqRSxNQUFNLGtCQUFrQixHQUFHLE9BQU8sQ0FBQztJQUVuQyxNQUFNLE9BQU8sR0FBRztRQUNWLFVBQVUsSUFBSSxTQUFTO1FBQ3ZCLGdCQUFnQjtRQUNoQixpQkFBaUIsSUFBSSxpQkFBaUIsS0FBSyxjQUFjLElBQUksY0FBYztRQUMzRSxpQkFBaUI7UUFDakIsa0JBQWtCLElBQUksa0JBQWtCLEtBQUssZUFBZSxJQUFJLGVBQWU7UUFDL0UsUUFBUTtHQUNiLENBQUM7SUFFRixPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3JDLENBQUMsQ0FBQztBQU1GLE1BQU0sSUFBSSxHQUFHLENBQUMsSUFBcUIsRUFBRSxFQUFtQixFQUFFLE9BQW9CLEVBQUUsRUFBRTtJQUNoRixPQUFPLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxNQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2pILENBQUMsQ0FBQztBQXlDRixNQUFNLGdCQUFnQixHQUFHLENBQ3ZCLFNBQW1FLEVBQ25FLE9BQW1DLEVBQ25DLGtCQUFzQyxFQUNyQixFQUFFO0lBQ25CLElBQUksQ0FBQyxTQUFTO1FBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ25ELElBQUksQ0FBQyxPQUFPO1FBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBRWxELE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRTNDLElBQUksQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxPQUFPO1FBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBRTFFLE1BQU0sU0FBUyxHQUFHLGtCQUFrQixDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7SUFFckQsTUFBTSxXQUFXLEdBQUcsa0JBQWtCLENBQUMsbUJBQW1CLEdBQUcsU0FBUyxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDO0lBQzdHLE1BQU0sb0JBQW9CLEdBQUcsU0FBUyxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQztJQUNqRixNQUFNLHdCQUF3QixHQUFHLGtCQUFrQixDQUFDLG1CQUFtQixHQUFHLENBQUMsR0FBRyxvQkFBb0IsQ0FBQztJQUNuRyxNQUFNLDJCQUEyQixHQUFHLHdCQUF3QixHQUFHLFNBQVMsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQztJQUMvRyxNQUFNLG9CQUFvQixHQUN4QixrQkFBa0IsQ0FBQyxXQUFXLEdBQUcsV0FBVyxHQUFHLDJCQUEyQixHQUFHLGtCQUFrQixDQUFDLE1BQU0sQ0FBQztJQUV6RyxNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUM7SUFDbkUsTUFBTSxTQUFTLEdBQUcsWUFBWSxHQUFHLGtCQUFrQixDQUFDLE1BQU0sR0FBRyxZQUFZLEdBQUcsb0JBQW9CLENBQUM7SUFFakcsTUFBTSxjQUFjLEdBQUcsQ0FBQyxvQkFBb0IsR0FBRyxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFbkYsTUFBTSxVQUFVLEdBQ2QsU0FBUyxHQUFHLGNBQWMsR0FBRyxrQkFBa0IsQ0FBQyxXQUFXLEdBQUcsa0JBQWtCLENBQUMsNEJBQTRCLENBQUM7SUFFaEgsTUFBTSxLQUFLLEdBQUc7UUFDWixLQUFLLEVBQUUsVUFBVTtRQUNqQixHQUFHLEVBQUUsVUFBVSxHQUFHLGtCQUFrQixDQUFDLFdBQVc7UUFDaEQsTUFBTSxFQUFFLFVBQVUsR0FBRyxTQUFTO0tBQy9CLENBQUM7SUFFRixNQUFNLFdBQVcsR0FDZixDQUFDLFNBQVMsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLEdBQUcsa0JBQWtCLENBQUMsV0FBVztRQUM1RCxDQUFDLFNBQVMsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLEdBQUcsa0JBQWtCLENBQUMsU0FBUyxDQUFDO0lBRTdELE1BQU0sTUFBTSxHQUFHO1FBQ2IsS0FBSyxFQUFFLFdBQVc7UUFDbEIsR0FBRyxFQUFFLFdBQVcsR0FBRyxrQkFBa0IsQ0FBQyxXQUFXO1FBQ2pELE1BQU0sRUFBRSxXQUFXLEdBQUcsa0JBQWtCLENBQUMsV0FBVyxHQUFHLENBQUM7S0FDekQsQ0FBQztJQUVGLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUM7QUFDM0IsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLENBQ3JCLEtBQXdFLEVBQ3hFLFdBQWdELEVBQ2hELFVBQTZCLEVBQzdCLEVBQUU7SUFDRixNQUFNLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLEdBQUcsVUFBVSxDQUFDO0lBQ3RGLE1BQU0saUJBQWlCLEdBQUcsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pELE1BQU0sV0FBVyxHQUFHLGlCQUFpQixHQUFHLGlCQUFpQixDQUFDO0lBRTFELE1BQU0sUUFBUSxHQUFhLEVBQUUsQ0FBQztJQUU5QixLQUFLLE1BQU0sS0FBSyxJQUFJLEtBQUssQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO1FBQ25DLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO1lBQ3hDLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxPQUFPO2dCQUFFLFNBQVMsQ0FBQyx3Q0FBd0M7WUFFN0UsSUFBSSxtQkFBbUIsR0FBa0IsSUFBSSxDQUFDO1lBQzlDLElBQUksNEJBQTRCLEdBQUcsQ0FBQyxDQUFDO1lBRXJDLElBQUksV0FBVyxDQUFDLElBQUksS0FBSyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDbEQsbUJBQW1CLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUM7WUFDckQsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsSUFBSSxLQUFLLHFDQUFxQyxDQUFDLGFBQWEsRUFBRSxDQUFDO29CQUNqRyxtQkFBbUIsR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQztnQkFDckQsQ0FBQztxQkFBTSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLElBQUksS0FBSyxxQ0FBcUMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztvQkFDeEcsbUJBQW1CLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUM7Z0JBQ3JELENBQUM7cUJBQU0sQ0FBQztvQkFDTixtQkFBbUIsR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQztnQkFDcEYsQ0FBQztZQUNILENBQUM7WUFFRCxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLElBQUksS0FBSyxxQ0FBcUMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDakcsNEJBQTRCLEdBQUcsaUJBQWlCLEdBQUcsaUJBQWlCLENBQUM7Z0JBQ3JFLFFBQVE7Z0JBQ1Isd0pBQXdKO2dCQUN4SixjQUFjO1lBQ2hCLENBQUM7WUFFRCxNQUFNLGtCQUFrQixHQUF1QjtnQkFDN0MsV0FBVztnQkFDWCxtQkFBbUI7Z0JBQ25CLFNBQVM7Z0JBQ1QsV0FBVztnQkFDWCw0QkFBNEI7Z0JBQzVCLFdBQVc7Z0JBQ1gsTUFBTTthQUNQLENBQUM7WUFFRixNQUFNLGdDQUFnQyxHQUFHO2dCQUN2QyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsT0FBTztnQkFDN0MsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLE9BQU87YUFDOUM7aUJBQ0UsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2lCQUNwQixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFFYixNQUFNLFdBQVcsR0FBZ0IsRUFBRSxHQUFHLFVBQVUsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLGdDQUFnQyxFQUFFLENBQUM7WUFFckcsTUFBTSxvQkFBb0IsR0FBRyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsRUFBRSxFQUFFLGtCQUFrQixDQUFDLENBQUM7WUFFN0csbURBQW1EO1lBQ25ELFFBQVEsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDaEMsS0FBSyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7b0JBQ3RCLFNBQVM7Z0JBQ1gsQ0FBQztnQkFDRCxLQUFLLGdCQUFnQixDQUFDO2dCQUN0QixLQUFLLFlBQVksQ0FBQyxDQUFDLENBQUM7b0JBQ2xCLE1BQU0scUJBQXFCLEdBQUcsZ0JBQWdCLENBQzVDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLEVBQzlDLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFDbkMsa0JBQWtCLENBQ25CLENBQUM7b0JBRUYsdUJBQXVCO29CQUN2QixRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxvQkFBb0IsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBRXhGLE1BQU07Z0JBQ1IsQ0FBQztnQkFFRCxLQUFLLGdCQUFnQixDQUFDO2dCQUN0QixLQUFLLFlBQVksQ0FBQyxDQUFDLENBQUM7b0JBQ2xCLE1BQU0sYUFBYSxHQUFHLGdCQUFnQixDQUNwQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDLEVBQ25ELElBQUksQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsRUFBRSxFQUN4QyxrQkFBa0IsQ0FDbkIsQ0FBQztvQkFFRixNQUFNLGFBQWEsR0FBRyxnQkFBZ0IsQ0FDcEMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQyxFQUNuRCxJQUFJLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsRUFDeEMsa0JBQWtCLENBQ25CLENBQUM7b0JBRUYsTUFBTSxZQUFZLEdBQWlCO3dCQUNqQyxHQUFHLFVBQVUsQ0FBQyxLQUFLO3dCQUNuQixJQUFJLEVBQUUsRUFBRSxHQUFHLFVBQVUsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRTtxQkFDNUMsQ0FBQztvQkFFRixNQUFNLE9BQU8sR0FDWCxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxlQUFlLEtBQUsseUJBQXlCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztvQkFFOUcsbURBQW1EO29CQUNuRCxRQUFRLENBQUMsSUFBSSxDQUNYLE9BQU8sQ0FBQyxhQUFhLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFO3dCQUNuRCxHQUFHLFlBQVk7d0JBQ2YsSUFBSSxFQUFFLEVBQUUsR0FBRyxZQUFZLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxPQUFPLElBQUksRUFBRSxFQUFFO3FCQUN2RyxDQUFDLENBQ0gsQ0FBQztvQkFDRixRQUFRLENBQUMsSUFBSSxDQUNYLE9BQU8sQ0FBQyxhQUFhLEVBQUUsb0JBQW9CLEVBQUUsSUFBSSxFQUFFO3dCQUNqRCxHQUFHLFlBQVk7d0JBQ2YsSUFBSSxFQUFFLEVBQUUsR0FBRyxZQUFZLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxPQUFPLElBQUksRUFBRSxFQUFFO3FCQUN2RyxDQUFDLENBQ0gsQ0FBQztvQkFFRixJQUNFLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLGVBQWUsS0FBSyx5QkFBeUIsQ0FBQyxLQUFLO3dCQUNuRixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksS0FBSyxZQUFZO3dCQUN4QyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxlQUFlLEtBQUssSUFBSSxFQUNyRCxDQUFDO3dCQUNELDJHQUEyRzt3QkFFM0csTUFBTSxJQUFJLEdBQUcsZ0JBQWdCLENBQzNCLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQzFDLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFDL0Isa0JBQWtCLENBQ25CLENBQUM7d0JBRUYsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLG9CQUFvQixFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFDekUsQ0FBQztvQkFFRCxNQUFNO2dCQUNSLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDM0IsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQlJBQ0tFVF9ST1VORF9NSVJST1JfVFlQRSxcbiAgQnJhY2tldE1hdGNoSWQsXG4gIEJyYWNrZXRSb3VuZElkLFxuICBET1VCTEVfRUxJTUlOQVRJT05fQlJBQ0tFVF9ST1VORF9UWVBFLFxuICBGSVJTVF9ST1VORFNfVFlQRSxcbiAgRmlyc3RSb3VuZHMsXG59IGZyb20gJy4vYnJhY2tldC1uZXcnO1xuaW1wb3J0IHsgQnJhY2tldEdyaWREZWZpbml0aW9ucyB9IGZyb20gJy4vZ3JpZC1kZWZpbml0aW9ucyc7XG5pbXBvcnQgeyBCcmFja2V0R3JpZFJvdW5kSXRlbSB9IGZyb20gJy4vZ3JpZC1wbGFjZW1lbnRzJztcblxuZXhwb3J0IHR5cGUgRHJhd01hbkRpbWVuc2lvbnMgPSB7XG4gIGNvbHVtbldpZHRoOiBudW1iZXI7XG4gIG1hdGNoSGVpZ2h0OiBudW1iZXI7XG4gIHJvdW5kSGVhZGVySGVpZ2h0OiBudW1iZXI7XG4gIGNvbHVtbkdhcDogbnVtYmVyO1xuICByb3dHYXA6IG51bWJlcjtcbiAgZ3JpZERlZmluaXRpb25zOiBCcmFja2V0R3JpZERlZmluaXRpb25zO1xuICBwYXRoOiBPbWl0PFBhdGhPcHRpb25zLCAnY2xhc3NOYW1lJz47XG4gIGN1cnZlOiBPbWl0PEN1cnZlT3B0aW9ucywgJ3BhdGgnIHwgJ2ludmVydGVkJz47XG59O1xuXG50eXBlIFBhdGhPcHRpb25zID0ge1xuICB3aWR0aDogbnVtYmVyO1xuICBkYXNoQXJyYXk6IG51bWJlcjtcbiAgZGFzaE9mZnNldDogbnVtYmVyO1xuICBjbGFzc05hbWU6IHN0cmluZztcbn07XG5cbmNvbnN0IHBhdGggPSAoZDogc3RyaW5nLCBvcHRpb25zOiBQYXRoT3B0aW9ucykgPT5cbiAgYDxwYXRoIGQ9XCIke2QucmVwbGFjZSgvXFxzKy9nLCAnICcpLnRyaW0oKX1cIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBmaWxsPVwibm9uZVwiIHN0cm9rZS13aWR0aD1cIiR7b3B0aW9ucy53aWR0aH1cIiBzdHJva2UtZGFzaGFycmF5PVwiJHtvcHRpb25zLmRhc2hBcnJheX1cIiBzdHJva2UtZGFzaG9mZnNldD1cIiR7b3B0aW9ucy5kYXNoT2Zmc2V0fVwiIGNsYXNzPVwiJHtvcHRpb25zLmNsYXNzTmFtZX1cIiAvPmA7XG5cbnR5cGUgQ3VydmVPcHRpb25zID0ge1xuICBsaW5lU3RhcnRpbmdDdXJ2ZUFtb3VudDogbnVtYmVyO1xuICBsaW5lRW5kaW5nQ3VydmVBbW91bnQ6IG51bWJlcjtcbiAgcGF0aDogUGF0aE9wdGlvbnM7XG59O1xuXG5jb25zdCBjdXJ2ZSA9IChmcm9tOiBCcmFja2V0UG9zaXRpb24sIHRvOiBCcmFja2V0UG9zaXRpb24sIGRpcmVjdGlvbjogJ3VwJyB8ICdkb3duJywgb3B0aW9uczogQ3VydmVPcHRpb25zKSA9PiB7XG4gIGNvbnN0IGZyb21JbmxpbmUgPSBmcm9tLmlubGluZS5lbmQ7XG4gIGNvbnN0IHRvSW5saW5lID0gdG8uaW5saW5lLnN0YXJ0O1xuXG4gIGNvbnN0IHRvQmxvY2sgPSB0by5ibG9jay5jZW50ZXI7XG4gIGNvbnN0IGZyb21CbG9jayA9IGZyb20uYmxvY2suY2VudGVyO1xuXG4gIGNvbnN0IHN0YXJ0aW5nQ3VydmVBbW91bnQgPSBvcHRpb25zLmxpbmVTdGFydGluZ0N1cnZlQW1vdW50O1xuICBjb25zdCBlbmRpbmdDdXJ2ZUFtb3VudCA9IG9wdGlvbnMubGluZUVuZGluZ0N1cnZlQW1vdW50O1xuXG4gIGNvbnN0IHRvdGFsU3BhY2UgPSB0b0lubGluZSAtIGZyb21JbmxpbmU7XG4gIGNvbnN0IHRvdGFsU3BhY2VNaW51c0N1cnZlID0gdG90YWxTcGFjZSAtIHN0YXJ0aW5nQ3VydmVBbW91bnQgLSBlbmRpbmdDdXJ2ZUFtb3VudDtcbiAgY29uc3QgbGluZUxlbmd0aCA9IHRvdGFsU3BhY2VNaW51c0N1cnZlIC8gMjtcblxuICBjb25zdCBzdHJhaWdodExlZnRFbmQgPSBmcm9tSW5saW5lICsgbGluZUxlbmd0aDtcbiAgY29uc3Qgc3RyYWlnaHRSaWdodFN0YXJ0ID0gdG9JbmxpbmUgLSBsaW5lTGVuZ3RoO1xuICAvLyBmaXJzdCA5MCBkZWdyZWUgY3VydmUgZG93blxuICBjb25zdCBmaXJzdEN1cnZlU3RhcnRYID0gc3RyYWlnaHRMZWZ0RW5kO1xuICBjb25zdCBmaXJzdEN1cnZlRW5kWCA9IHN0cmFpZ2h0TGVmdEVuZCArIHN0YXJ0aW5nQ3VydmVBbW91bnQ7XG4gIGNvbnN0IGZpcnN0Q3VydmVFbmRZID0gZGlyZWN0aW9uID09PSAnZG93bicgPyBmcm9tQmxvY2sgKyBzdGFydGluZ0N1cnZlQW1vdW50IDogZnJvbUJsb2NrIC0gc3RhcnRpbmdDdXJ2ZUFtb3VudDtcblxuICBjb25zdCBmaXJzdEN1cnZlQmV6aWVyWCA9IHN0cmFpZ2h0TGVmdEVuZCArIHN0YXJ0aW5nQ3VydmVBbW91bnQ7XG4gIGNvbnN0IGZpcnN0Q3VydmVCZXppZXJZID0gZnJvbUJsb2NrO1xuXG4gIC8vIHNlY29uZCA5MCBkZWdyZWUgY3VydmUgdG8gdGhlIHJpZ2h0XG4gIGNvbnN0IHNlY29uZEN1cnZlU3RhcnRZID0gZGlyZWN0aW9uID09PSAnZG93bicgPyB0b0Jsb2NrIC0gZW5kaW5nQ3VydmVBbW91bnQgOiB0b0Jsb2NrICsgZW5kaW5nQ3VydmVBbW91bnQ7XG4gIGNvbnN0IHNlY29uZEN1cnZlRW5kWCA9IHN0cmFpZ2h0UmlnaHRTdGFydDtcbiAgY29uc3Qgc2Vjb25kQ3VydmVFbmRZID0gdG9CbG9jaztcblxuICBjb25zdCBzZWNvbmRDdXJ2ZUJlemllclggPSBzdHJhaWdodFJpZ2h0U3RhcnQgLSBlbmRpbmdDdXJ2ZUFtb3VudDtcbiAgY29uc3Qgc2Vjb25kQ3VydmVCZXppZXJZID0gdG9CbG9jaztcblxuICBjb25zdCBwYXRoU3RyID0gYFxuICAgIE0gJHtmcm9tSW5saW5lfSAke2Zyb21CbG9ja30gXG4gICAgSCAke2ZpcnN0Q3VydmVTdGFydFh9IFxuICAgIFEgJHtmaXJzdEN1cnZlQmV6aWVyWH0gJHtmaXJzdEN1cnZlQmV6aWVyWX0sICR7Zmlyc3RDdXJ2ZUVuZFh9ICR7Zmlyc3RDdXJ2ZUVuZFl9IFxuICAgIFYgJHtzZWNvbmRDdXJ2ZVN0YXJ0WX0gXG4gICAgUSAke3NlY29uZEN1cnZlQmV6aWVyWH0gJHtzZWNvbmRDdXJ2ZUJlemllcll9LCAke3NlY29uZEN1cnZlRW5kWH0gJHtzZWNvbmRDdXJ2ZUVuZFl9IFxuICAgIEggJHt0b0lubGluZX1cbiAgYDtcblxuICByZXR1cm4gcGF0aChwYXRoU3RyLCBvcHRpb25zLnBhdGgpO1xufTtcblxuY29uc3QgY3VydmVJbnZlcnRlZCA9IChmcm9tOiBCcmFja2V0UG9zaXRpb24sIHRvOiBCcmFja2V0UG9zaXRpb24sIGRpcmVjdGlvbjogJ3VwJyB8ICdkb3duJywgb3B0aW9uczogQ3VydmVPcHRpb25zKSA9PiB7XG4gIGNvbnN0IGZyb21JbmxpbmUgPSBmcm9tLmlubGluZS5zdGFydDtcbiAgY29uc3QgZnJvbUJsb2NrID0gZnJvbS5ibG9jay5jZW50ZXI7XG5cbiAgY29uc3QgdG9JbmxpbmUgPSB0by5pbmxpbmUuZW5kO1xuICBjb25zdCB0b0Jsb2NrID0gdG8uYmxvY2suY2VudGVyO1xuXG4gIGNvbnN0IHN0YXJ0aW5nQ3VydmVBbW91bnQgPSBvcHRpb25zLmxpbmVTdGFydGluZ0N1cnZlQW1vdW50O1xuICBjb25zdCBlbmRpbmdDdXJ2ZUFtb3VudCA9IG9wdGlvbnMubGluZUVuZGluZ0N1cnZlQW1vdW50O1xuXG4gIGNvbnN0IHRvdGFsU3BhY2UgPSBmcm9tSW5saW5lIC0gdG9JbmxpbmU7XG4gIGNvbnN0IHRvdGFsU3BhY2VNaW51c0N1cnZlID0gdG90YWxTcGFjZSAtIHN0YXJ0aW5nQ3VydmVBbW91bnQgLSBlbmRpbmdDdXJ2ZUFtb3VudDtcbiAgY29uc3QgbGluZUxlbmd0aCA9IHRvdGFsU3BhY2VNaW51c0N1cnZlIC8gMjtcblxuICBjb25zdCBzdHJhaWdodFJpZ2h0RW5kID0gZnJvbUlubGluZSAtIGxpbmVMZW5ndGg7XG4gIGNvbnN0IHN0cmFpZ2h0TGVmdFN0YXJ0ID0gdG9JbmxpbmUgKyBsaW5lTGVuZ3RoO1xuXG4gIGNvbnN0IGZpcnN0Q3VydmVTdGFydFggPSBzdHJhaWdodFJpZ2h0RW5kO1xuICBjb25zdCBmaXJzdEN1cnZlRW5kWCA9IHN0cmFpZ2h0UmlnaHRFbmQgLSBzdGFydGluZ0N1cnZlQW1vdW50O1xuICBjb25zdCBmaXJzdEN1cnZlRW5kWSA9IGRpcmVjdGlvbiA9PT0gJ2Rvd24nID8gZnJvbUJsb2NrICsgc3RhcnRpbmdDdXJ2ZUFtb3VudCA6IGZyb21CbG9jayAtIHN0YXJ0aW5nQ3VydmVBbW91bnQ7XG5cbiAgY29uc3QgZmlyc3RDdXJ2ZUJlemllclggPSBzdHJhaWdodFJpZ2h0RW5kIC0gc3RhcnRpbmdDdXJ2ZUFtb3VudDtcbiAgY29uc3QgZmlyc3RDdXJ2ZUJlemllclkgPSBmcm9tQmxvY2s7XG5cbiAgLy8gc2Vjb25kIDkwIGRlZ3JlZSBjdXJ2ZSB0byB0aGUgcmlnaHRcbiAgY29uc3Qgc2Vjb25kQ3VydmVTdGFydFkgPSBkaXJlY3Rpb24gPT09ICdkb3duJyA/IHRvQmxvY2sgLSBlbmRpbmdDdXJ2ZUFtb3VudCA6IHRvQmxvY2sgKyBlbmRpbmdDdXJ2ZUFtb3VudDtcbiAgY29uc3Qgc2Vjb25kQ3VydmVFbmRYID0gc3RyYWlnaHRMZWZ0U3RhcnQ7XG4gIGNvbnN0IHNlY29uZEN1cnZlRW5kWSA9IHRvQmxvY2s7XG5cbiAgY29uc3Qgc2Vjb25kQ3VydmVCZXppZXJYID0gc3RyYWlnaHRMZWZ0U3RhcnQgKyBlbmRpbmdDdXJ2ZUFtb3VudDtcbiAgY29uc3Qgc2Vjb25kQ3VydmVCZXppZXJZID0gdG9CbG9jaztcblxuICBjb25zdCBwYXRoU3RyID0gYFxuICAgIE0gJHtmcm9tSW5saW5lfSAke2Zyb21CbG9ja30gXG4gICAgSCAke2ZpcnN0Q3VydmVTdGFydFh9IFxuICAgIFEgJHtmaXJzdEN1cnZlQmV6aWVyWH0gJHtmaXJzdEN1cnZlQmV6aWVyWX0sICR7Zmlyc3RDdXJ2ZUVuZFh9ICR7Zmlyc3RDdXJ2ZUVuZFl9IFxuICAgIFYgJHtzZWNvbmRDdXJ2ZVN0YXJ0WX1cbiAgICBRICR7c2Vjb25kQ3VydmVCZXppZXJYfSAke3NlY29uZEN1cnZlQmV6aWVyWX0sICR7c2Vjb25kQ3VydmVFbmRYfSAke3NlY29uZEN1cnZlRW5kWX0gXG4gICAgSCAke3RvSW5saW5lfVxuICBgO1xuXG4gIHJldHVybiBwYXRoKHBhdGhTdHIsIG9wdGlvbnMucGF0aCk7XG59O1xuXG50eXBlIExpbmVPcHRpb25zID0ge1xuICBwYXRoOiBQYXRoT3B0aW9ucztcbn07XG5cbmNvbnN0IGxpbmUgPSAoZnJvbTogQnJhY2tldFBvc2l0aW9uLCB0bzogQnJhY2tldFBvc2l0aW9uLCBvcHRpb25zOiBMaW5lT3B0aW9ucykgPT4ge1xuICByZXR1cm4gcGF0aChgTSAke2Zyb20uaW5saW5lLmVuZH0gJHtmcm9tLmJsb2NrLmNlbnRlcn0gTCAke3RvLmlubGluZS5zdGFydH0gJHt0by5ibG9jay5jZW50ZXJ9YCwgb3B0aW9ucy5wYXRoKTtcbn07XG5cbnR5cGUgU3RhdGljTWVhc3VyZW1lbnRzID0ge1xuICAvKiogV2lkdGggb2Ygb25lIGNvbHVtbiAqL1xuICBjb2x1bW5XaWR0aDogbnVtYmVyO1xuXG4gIC8qKiBIZWlnaHQgb2Ygb25lIG1hdGNoICovXG4gIG1hdGNoSGVpZ2h0OiBudW1iZXI7XG5cbiAgLyoqIEdhcCBiZXR3ZWVuIHJvd3MgKi9cbiAgcm93R2FwOiBudW1iZXI7XG5cbiAgLyoqIEdhcCBiZXR3ZWVuIGNvbHVtbnMgKi9cbiAgY29sdW1uR2FwOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIE9mZnNldCBmcm9tIHRoZSB0b3AuXG4gICAqIFdpbGwgYmUgMCBpZiBlLmcuIHRoZXJlIGlzIG5vIHJvdW5kIGhlYWRlciBhbmQgd2UgYXJlIGRpc3BsYXlpbmcgYSBzaW5nbGUgZWxpbWluYXRpb24gYnJhY2tldC5cbiAgICogV2lsbCBiZSBzb21lIHZhbHVlIGlmIHRoZXJlIGlzIGEgcm91bmQgaGVhZGVyIG9yIGlmIHdlIHdhbnQgdG8gZGlzcGxheSB0aGUgbG93ZXIgYnJhY2tldCBvZiBhIGRvdWJsZSBlbGltaW5hdGlvbiBicmFja2V0LlxuICAgKi9cbiAgYmFzZU9mZnNldFk6IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBtYXRjaGVzIGluIHRoZSBmaXJzdCByb3VuZC5cbiAgICogRm9yIGRvdWJsZSBlbGltaW5hdGlvbiBicmFja2V0cywgdGhpcyBpcyB0aGUgbnVtYmVyIG9mIG1hdGNoZXMgaW4gdGhlIHVwcGVyIGJyYWNrZXQgb3IgdGhlIGxvd2VyIGJyYWNrZXQuXG4gICAqIEZvciBkb3VibGUgZWxpbWluYXRpb24gbWF0Y2hlcyBhZnRlciB0aGUgdXBwZXIgYW5kIGxvd2VyIGJyYWNrZXQgaGF2ZSBiZWVuIG1lcmdlZCwgdGhpcyBpcyB0aGUgc3VtIG9mIG1hdGNoZXMgaW4gdGhlIGZpcnN0IHJvdW5kIG9mIHRoZSB1cHBlciBhbmQgbG93ZXIgYnJhY2tldC5cbiAgICovXG4gIGJhc2VSb3VuZE1hdGNoQ291bnQ6IG51bWJlcjtcblxuICAvKipcbiAgICogV2lsbCBiZSByb3VuZCBoZWFkZXIgaGVpZ2h0ICsgcm93IGdhcCBpZiB3ZSBhcmUgbWVyZ2luZyB0aGUgdXBwZXIgYW5kIGxvd2VyIGJyYWNrZXQgb2YgYSBkb3VibGUgZWxpbWluYXRpb24gYnJhY2tldCwgMCBvdGhlcndpc2UuXG4gICAqIFRoaXMgdmFsdWUgd2lsbCBiZSBhZGRlZCB0byB0aGUgYXZhaWxhYmxlIHdoaXRlc3BhY2UgZm9yIHRoZSBtYXRjaCB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIG1pZGRsZSBvZi5cbiAgICovXG4gIGRvdWJsZUVsaW1pbmF0aW9uTWVyZ2VPZmZzZXQ6IG51bWJlcjtcbn07XG5cbnR5cGUgQnJhY2tldFBvc2l0aW9uID0ge1xuICBpbmxpbmU6IHsgc3RhcnQ6IG51bWJlcjsgZW5kOiBudW1iZXI7IGNlbnRlcjogbnVtYmVyIH07IC8vIHRoZSBsZWZ0LCByaWdodCBhbmQgY2VudGVyIG9mIHRoZSBtYXRjaFxuICBibG9jazogeyBzdGFydDogbnVtYmVyOyBlbmQ6IG51bWJlcjsgY2VudGVyOiBudW1iZXIgfTsgLy8gdGhlIHRvcCwgYm90dG9tIGFuZCBjZW50ZXIgb2YgdGhlIG1hdGNoXG59O1xuXG5jb25zdCBnZXRNYXRjaFBvc2l0aW9uID0gPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+KFxuICByb3VuZEl0ZW06IEJyYWNrZXRHcmlkUm91bmRJdGVtPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+IHwgdW5kZWZpbmVkLFxuICBtYXRjaElkOiBCcmFja2V0TWF0Y2hJZCB8IHVuZGVmaW5lZCxcbiAgc3RhdGljTWVhc3VyZW1lbnRzOiBTdGF0aWNNZWFzdXJlbWVudHMsXG4pOiBCcmFja2V0UG9zaXRpb24gPT4ge1xuICBpZiAoIXJvdW5kSXRlbSkgdGhyb3cgbmV3IEVycm9yKCdJdGVtIGlzIG1pc3NpbmcnKTtcbiAgaWYgKCFtYXRjaElkKSB0aHJvdyBuZXcgRXJyb3IoJ01hdGNoIGlzIG1pc3NpbmcnKTtcblxuICBjb25zdCBtYXRjaCA9IHJvdW5kSXRlbS5pdGVtcy5nZXQobWF0Y2hJZCk7XG5cbiAgaWYgKCFtYXRjaCB8fCBtYXRjaC50eXBlICE9PSAnbWF0Y2gnKSB0aHJvdyBuZXcgRXJyb3IoJ01hdGNoIGlzIG1pc3NpbmcnKTtcblxuICBjb25zdCBtYXRjaEhhbGYgPSBzdGF0aWNNZWFzdXJlbWVudHMubWF0Y2hIZWlnaHQgLyAyO1xuXG4gIGNvbnN0IHJvdW5kRmFjdG9yID0gc3RhdGljTWVhc3VyZW1lbnRzLmJhc2VSb3VuZE1hdGNoQ291bnQgLyByb3VuZEl0ZW0ucm91bmRSZWxhdGlvbi5jdXJyZW50Um91bmQubWF0Y2hDb3VudDtcbiAgY29uc3QgcmVtYWluaW5nUm93R2FwQ291bnQgPSByb3VuZEl0ZW0ucm91bmRSZWxhdGlvbi5jdXJyZW50Um91bmQubWF0Y2hDb3VudCAtIDE7XG4gIGNvbnN0IG1hdGNoSW5jbHVkZWRSb3dHYXBUb3RhbCA9IHN0YXRpY01lYXN1cmVtZW50cy5iYXNlUm91bmRNYXRjaENvdW50IC0gMSAtIHJlbWFpbmluZ1Jvd0dhcENvdW50O1xuICBjb25zdCBtYXRjaEluY2x1ZGVkUm93R2FwUGVyTWF0Y2ggPSBtYXRjaEluY2x1ZGVkUm93R2FwVG90YWwgLyByb3VuZEl0ZW0ucm91bmRSZWxhdGlvbi5jdXJyZW50Um91bmQubWF0Y2hDb3VudDtcbiAgY29uc3QgbWF0Y2hSb3VuZEl0ZW1IZWlnaHQgPVxuICAgIHN0YXRpY01lYXN1cmVtZW50cy5tYXRjaEhlaWdodCAqIHJvdW5kRmFjdG9yICsgbWF0Y2hJbmNsdWRlZFJvd0dhcFBlck1hdGNoICogc3RhdGljTWVhc3VyZW1lbnRzLnJvd0dhcDtcblxuICBjb25zdCBtYXRjaGVzQWJvdmUgPSBtYXRjaC5tYXRjaFJlbGF0aW9uLmN1cnJlbnRNYXRjaC5pbmRleEluUm91bmQ7XG4gIGNvbnN0IHJvd09mZnNldCA9IG1hdGNoZXNBYm92ZSAqIHN0YXRpY01lYXN1cmVtZW50cy5yb3dHYXAgKyBtYXRjaGVzQWJvdmUgKiBtYXRjaFJvdW5kSXRlbUhlaWdodDtcblxuICBjb25zdCBtYXRjaFJvd09mZnNldCA9IChtYXRjaFJvdW5kSXRlbUhlaWdodCAtIHN0YXRpY01lYXN1cmVtZW50cy5tYXRjaEhlaWdodCkgLyAyO1xuXG4gIGNvbnN0IGJsb2NrU3RhcnQgPVxuICAgIHJvd09mZnNldCArIG1hdGNoUm93T2Zmc2V0ICsgc3RhdGljTWVhc3VyZW1lbnRzLmJhc2VPZmZzZXRZICsgc3RhdGljTWVhc3VyZW1lbnRzLmRvdWJsZUVsaW1pbmF0aW9uTWVyZ2VPZmZzZXQ7XG5cbiAgY29uc3QgYmxvY2sgPSB7XG4gICAgc3RhcnQ6IGJsb2NrU3RhcnQsXG4gICAgZW5kOiBibG9ja1N0YXJ0ICsgc3RhdGljTWVhc3VyZW1lbnRzLm1hdGNoSGVpZ2h0LFxuICAgIGNlbnRlcjogYmxvY2tTdGFydCArIG1hdGNoSGFsZixcbiAgfTtcblxuICBjb25zdCBpbmxpbmVTdGFydCA9XG4gICAgKHJvdW5kSXRlbS5jb2x1bW5TdGFydCAtIDEpICogc3RhdGljTWVhc3VyZW1lbnRzLmNvbHVtbldpZHRoICtcbiAgICAocm91bmRJdGVtLmNvbHVtblN0YXJ0IC0gMSkgKiBzdGF0aWNNZWFzdXJlbWVudHMuY29sdW1uR2FwO1xuXG4gIGNvbnN0IGlubGluZSA9IHtcbiAgICBzdGFydDogaW5saW5lU3RhcnQsXG4gICAgZW5kOiBpbmxpbmVTdGFydCArIHN0YXRpY01lYXN1cmVtZW50cy5jb2x1bW5XaWR0aCxcbiAgICBjZW50ZXI6IGlubGluZVN0YXJ0ICsgc3RhdGljTWVhc3VyZW1lbnRzLmNvbHVtbldpZHRoIC8gMixcbiAgfTtcblxuICByZXR1cm4geyBpbmxpbmUsIGJsb2NrIH07XG59O1xuXG5leHBvcnQgY29uc3QgZHJhd01hbiA9IDxUUm91bmREYXRhLCBUTWF0Y2hEYXRhPihcbiAgaXRlbXM6IE1hcDxCcmFja2V0Um91bmRJZCwgQnJhY2tldEdyaWRSb3VuZEl0ZW08VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT4+LFxuICBmaXJzdFJvdW5kczogRmlyc3RSb3VuZHM8VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT4sXG4gIGRpbWVuc2lvbnM6IERyYXdNYW5EaW1lbnNpb25zLFxuKSA9PiB7XG4gIGNvbnN0IHsgY29sdW1uV2lkdGgsIG1hdGNoSGVpZ2h0LCByb3dHYXAsIGNvbHVtbkdhcCwgcm91bmRIZWFkZXJIZWlnaHQgfSA9IGRpbWVuc2lvbnM7XG4gIGNvbnN0IHJvdW5kSGVhZGVyUm93R2FwID0gcm91bmRIZWFkZXJIZWlnaHQgPyByb3dHYXAgOiAwO1xuICBjb25zdCBiYXNlT2Zmc2V0WSA9IHJvdW5kSGVhZGVySGVpZ2h0ICsgcm91bmRIZWFkZXJSb3dHYXA7XG5cbiAgY29uc3Qgc3ZnUGFydHM6IHN0cmluZ1tdID0gW107XG5cbiAgZm9yIChjb25zdCByb3VuZCBvZiBpdGVtcy52YWx1ZXMoKSkge1xuICAgIGZvciAoY29uc3QgaXRlbSBvZiByb3VuZC5pdGVtcy52YWx1ZXMoKSkge1xuICAgICAgaWYgKGl0ZW0udHlwZSA9PT0gJ3JvdW5kJykgY29udGludWU7IC8vIHdlIGRvbid0IGRyYXcgbGluZXMgZm9yIHJvdW5kIGhlYWRlcnNcblxuICAgICAgbGV0IGJhc2VSb3VuZE1hdGNoQ291bnQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICAgICAgbGV0IGRvdWJsZUVsaW1pbmF0aW9uTWVyZ2VPZmZzZXQgPSAwO1xuXG4gICAgICBpZiAoZmlyc3RSb3VuZHMudHlwZSA9PT0gRklSU1RfUk9VTkRTX1RZUEUuU0lOR0xFKSB7XG4gICAgICAgIGJhc2VSb3VuZE1hdGNoQ291bnQgPSBmaXJzdFJvdW5kcy5maXJzdC5tYXRjaENvdW50O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGl0ZW0ucm91bmRSZWxhdGlvbi5jdXJyZW50Um91bmQudHlwZSA9PT0gRE9VQkxFX0VMSU1JTkFUSU9OX0JSQUNLRVRfUk9VTkRfVFlQRS5VUFBFUl9CUkFDS0VUKSB7XG4gICAgICAgICAgYmFzZVJvdW5kTWF0Y2hDb3VudCA9IGZpcnN0Um91bmRzLnVwcGVyLm1hdGNoQ291bnQ7XG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbS5yb3VuZFJlbGF0aW9uLmN1cnJlbnRSb3VuZC50eXBlID09PSBET1VCTEVfRUxJTUlOQVRJT05fQlJBQ0tFVF9ST1VORF9UWVBFLkxPV0VSX0JSQUNLRVQpIHtcbiAgICAgICAgICBiYXNlUm91bmRNYXRjaENvdW50ID0gZmlyc3RSb3VuZHMubG93ZXIubWF0Y2hDb3VudDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBiYXNlUm91bmRNYXRjaENvdW50ID0gZmlyc3RSb3VuZHMudXBwZXIubWF0Y2hDb3VudCArIGZpcnN0Um91bmRzLmxvd2VyLm1hdGNoQ291bnQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGl0ZW0ucm91bmRSZWxhdGlvbi5jdXJyZW50Um91bmQudHlwZSA9PT0gRE9VQkxFX0VMSU1JTkFUSU9OX0JSQUNLRVRfUk9VTkRfVFlQRS5MT1dFUl9CUkFDS0VUKSB7XG4gICAgICAgIGRvdWJsZUVsaW1pbmF0aW9uTWVyZ2VPZmZzZXQgPSByb3VuZEhlYWRlckhlaWdodCArIHJvdW5kSGVhZGVyUm93R2FwO1xuICAgICAgICAvLyBUT0RPOlxuICAgICAgICAvLyBiYXNlT2Zmc2V0WSA9IGJhc2VPZmZzZXRZICogMiAoMiByb3VuZCBoZWFkZXJzIGFuZCBnYXBzKSArIChmaXJzdFJvdW5kcy51cHBlci5tYXRjaENvdW50ICogbWF0Y2hIZWlnaHQpICsgKGZpcnN0Um91bmRzLnVwcGVyLm1hdGNoQ291bnQgLSAxICogcm93R2FwKVxuICAgICAgICAvLyBiYXNlT2Zmc2V0WVxuICAgICAgfVxuXG4gICAgICBjb25zdCBzdGF0aWNNZWFzdXJlbWVudHM6IFN0YXRpY01lYXN1cmVtZW50cyA9IHtcbiAgICAgICAgYmFzZU9mZnNldFksXG4gICAgICAgIGJhc2VSb3VuZE1hdGNoQ291bnQsXG4gICAgICAgIGNvbHVtbkdhcCxcbiAgICAgICAgY29sdW1uV2lkdGgsXG4gICAgICAgIGRvdWJsZUVsaW1pbmF0aW9uTWVyZ2VPZmZzZXQsXG4gICAgICAgIG1hdGNoSGVpZ2h0LFxuICAgICAgICByb3dHYXAsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBjdXJyZW50TWF0Y2hQYXJ0aWNpcGFudHNTaG9ydElkcyA9IFtcbiAgICAgICAgaXRlbS5tYXRjaFJlbGF0aW9uLmN1cnJlbnRNYXRjaC5ob21lPy5zaG9ydElkLFxuICAgICAgICBpdGVtLm1hdGNoUmVsYXRpb24uY3VycmVudE1hdGNoLmF3YXk/LnNob3J0SWQsXG4gICAgICBdXG4gICAgICAgIC5maWx0ZXIoKGlkKSA9PiAhIWlkKVxuICAgICAgICAuam9pbignICcpO1xuXG4gICAgICBjb25zdCBwYXRoT3B0aW9uczogUGF0aE9wdGlvbnMgPSB7IC4uLmRpbWVuc2lvbnMucGF0aCwgY2xhc3NOYW1lOiBjdXJyZW50TWF0Y2hQYXJ0aWNpcGFudHNTaG9ydElkcyB9O1xuXG4gICAgICBjb25zdCBjdXJyZW50TWF0Y2hQb3NpdGlvbiA9IGdldE1hdGNoUG9zaXRpb24ocm91bmQsIGl0ZW0ubWF0Y2hSZWxhdGlvbi5jdXJyZW50TWF0Y2guaWQsIHN0YXRpY01lYXN1cmVtZW50cyk7XG5cbiAgICAgIC8vIFdlIG9ubHkgZHJhdyB0aGUgbGVmdCBzaWRlIG9mIHRoZSBtYXRjaCByZWxhdGlvblxuICAgICAgc3dpdGNoIChpdGVtLm1hdGNoUmVsYXRpb24udHlwZSkge1xuICAgICAgICBjYXNlICdub3RoaW5nLXRvLW9uZSc6IHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlICdvbmUtdG8tbm90aGluZyc6XG4gICAgICAgIGNhc2UgJ29uZS10by1vbmUnOiB7XG4gICAgICAgICAgY29uc3QgcHJldmlvdXNNYXRjaFBvc2l0aW9uID0gZ2V0TWF0Y2hQb3NpdGlvbihcbiAgICAgICAgICAgIGl0ZW1zLmdldChpdGVtLm1hdGNoUmVsYXRpb24ucHJldmlvdXNSb3VuZC5pZCksXG4gICAgICAgICAgICBpdGVtLm1hdGNoUmVsYXRpb24ucHJldmlvdXNNYXRjaC5pZCxcbiAgICAgICAgICAgIHN0YXRpY01lYXN1cmVtZW50cyxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgLy8gZHJhdyBhIHN0cmFpZ2h0IGxpbmVcbiAgICAgICAgICBzdmdQYXJ0cy5wdXNoKGxpbmUocHJldmlvdXNNYXRjaFBvc2l0aW9uLCBjdXJyZW50TWF0Y2hQb3NpdGlvbiwgeyBwYXRoOiBwYXRoT3B0aW9ucyB9KSk7XG5cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGNhc2UgJ3R3by10by1ub3RoaW5nJzpcbiAgICAgICAgY2FzZSAndHdvLXRvLW9uZSc6IHtcbiAgICAgICAgICBjb25zdCBwcmV2aW91c1VwcGVyID0gZ2V0TWF0Y2hQb3NpdGlvbihcbiAgICAgICAgICAgIGl0ZW1zLmdldChpdGVtLm1hdGNoUmVsYXRpb24ucHJldmlvdXNVcHBlclJvdW5kLmlkKSxcbiAgICAgICAgICAgIGl0ZW0ubWF0Y2hSZWxhdGlvbi5wcmV2aW91c1VwcGVyTWF0Y2guaWQsXG4gICAgICAgICAgICBzdGF0aWNNZWFzdXJlbWVudHMsXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGNvbnN0IHByZXZpb3VzTG93ZXIgPSBnZXRNYXRjaFBvc2l0aW9uKFxuICAgICAgICAgICAgaXRlbXMuZ2V0KGl0ZW0ubWF0Y2hSZWxhdGlvbi5wcmV2aW91c0xvd2VyUm91bmQuaWQpLFxuICAgICAgICAgICAgaXRlbS5tYXRjaFJlbGF0aW9uLnByZXZpb3VzTG93ZXJNYXRjaC5pZCxcbiAgICAgICAgICAgIHN0YXRpY01lYXN1cmVtZW50cyxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgY29uc3QgY3VydmVPcHRpb25zOiBDdXJ2ZU9wdGlvbnMgPSB7XG4gICAgICAgICAgICAuLi5kaW1lbnNpb25zLmN1cnZlLFxuICAgICAgICAgICAgcGF0aDogeyAuLi5kaW1lbnNpb25zLnBhdGgsIGNsYXNzTmFtZTogJycgfSxcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgY29uc3QgY3VydmVGbiA9XG4gICAgICAgICAgICBpdGVtLnJvdW5kUmVsYXRpb24uY3VycmVudFJvdW5kLm1pcnJvclJvdW5kVHlwZSA9PT0gQlJBQ0tFVF9ST1VORF9NSVJST1JfVFlQRS5SSUdIVCA/IGN1cnZlSW52ZXJ0ZWQgOiBjdXJ2ZTtcblxuICAgICAgICAgIC8vIGRyYXcgdHdvIGxpbmVzIHRoYXQgbWVyZ2UgaW50byBvbmUgaW4gdGhlIG1pZGRsZVxuICAgICAgICAgIHN2Z1BhcnRzLnB1c2goXG4gICAgICAgICAgICBjdXJ2ZUZuKHByZXZpb3VzVXBwZXIsIGN1cnJlbnRNYXRjaFBvc2l0aW9uLCAnZG93bicsIHtcbiAgICAgICAgICAgICAgLi4uY3VydmVPcHRpb25zLFxuICAgICAgICAgICAgICBwYXRoOiB7IC4uLmN1cnZlT3B0aW9ucy5wYXRoLCBjbGFzc05hbWU6IGl0ZW0ubWF0Y2hSZWxhdGlvbi5wcmV2aW91c1VwcGVyTWF0Y2gud2lubmVyPy5zaG9ydElkIHx8ICcnIH0sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICApO1xuICAgICAgICAgIHN2Z1BhcnRzLnB1c2goXG4gICAgICAgICAgICBjdXJ2ZUZuKHByZXZpb3VzTG93ZXIsIGN1cnJlbnRNYXRjaFBvc2l0aW9uLCAndXAnLCB7XG4gICAgICAgICAgICAgIC4uLmN1cnZlT3B0aW9ucyxcbiAgICAgICAgICAgICAgcGF0aDogeyAuLi5jdXJ2ZU9wdGlvbnMucGF0aCwgY2xhc3NOYW1lOiBpdGVtLm1hdGNoUmVsYXRpb24ucHJldmlvdXNMb3dlck1hdGNoLndpbm5lcj8uc2hvcnRJZCB8fCAnJyB9LFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGl0ZW0ubWF0Y2hSZWxhdGlvbi5jdXJyZW50Um91bmQubWlycm9yUm91bmRUeXBlID09PSBCUkFDS0VUX1JPVU5EX01JUlJPUl9UWVBFLlJJR0hUICYmXG4gICAgICAgICAgICBpdGVtLm1hdGNoUmVsYXRpb24udHlwZSA9PT0gJ3R3by10by1vbmUnICYmXG4gICAgICAgICAgICBpdGVtLm1hdGNoUmVsYXRpb24ubmV4dFJvdW5kLm1pcnJvclJvdW5kVHlwZSA9PT0gbnVsbFxuICAgICAgICAgICkge1xuICAgICAgICAgICAgLy8gZHJhdyBhIHN0cmFpZ2h0IGxpbmUgZm9yIHRoZSBzcGVjaWFsIGNhc2Ugb2YgY29ubmVjdGluZyB0aGUgZmluYWwgbWF0Y2ggdG8gdGhlIG1pcnJvcmVkIHNlbWkgZmluYWwgbWF0Y2hcblxuICAgICAgICAgICAgY29uc3QgbmV4dCA9IGdldE1hdGNoUG9zaXRpb24oXG4gICAgICAgICAgICAgIGl0ZW1zLmdldChpdGVtLm1hdGNoUmVsYXRpb24ubmV4dFJvdW5kLmlkKSxcbiAgICAgICAgICAgICAgaXRlbS5tYXRjaFJlbGF0aW9uLm5leHRNYXRjaC5pZCxcbiAgICAgICAgICAgICAgc3RhdGljTWVhc3VyZW1lbnRzLFxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgc3ZnUGFydHMucHVzaChsaW5lKG5leHQsIGN1cnJlbnRNYXRjaFBvc2l0aW9uLCB7IHBhdGg6IHBhdGhPcHRpb25zIH0pKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzdmdQYXJ0cy5qb2luKCcnKTtcbn07XG4iXX0=
|
|
@@ -1,13 +1,15 @@
|
|
|
1
|
-
import { TOURNAMENT_MODE, } from './bracket-new';
|
|
1
|
+
import { COMMON_BRACKET_ROUND_TYPE, TOURNAMENT_MODE, } from './bracket-new';
|
|
2
2
|
import { NewBracketDefaultMatchComponent } from './new-bracket-default-match.component';
|
|
3
3
|
import { NewBracketDefaultRoundHeaderComponent } from './new-bracket-default-round-header.component';
|
|
4
4
|
export const generateBracketGridItems = (bracketData, roundTypeMap, swissGroups, roundRelations, matchRelations, options) => {
|
|
5
5
|
const roundHeaderComponent = options.headerComponent ?? NewBracketDefaultRoundHeaderComponent;
|
|
6
6
|
const matchComponent = options.matchComponent ?? NewBracketDefaultMatchComponent;
|
|
7
|
+
const finalMatchComponent = options.finalMatchComponent ?? matchComponent;
|
|
7
8
|
const optionsWithDefaults = {
|
|
8
9
|
...options,
|
|
9
10
|
headerComponent: roundHeaderComponent,
|
|
10
11
|
matchComponent: matchComponent,
|
|
12
|
+
finalMatchComponent: finalMatchComponent,
|
|
11
13
|
};
|
|
12
14
|
switch (bracketData.mode) {
|
|
13
15
|
case TOURNAMENT_MODE.DOUBLE_ELIMINATION:
|
|
@@ -40,6 +42,7 @@ const generateGenericGridPlacements = (bracketData, roundTypeMap, roundRelations
|
|
|
40
42
|
}
|
|
41
43
|
const roundItem = {
|
|
42
44
|
id: round.id,
|
|
45
|
+
layoutId: `${round.id}-layout`,
|
|
43
46
|
columnStart,
|
|
44
47
|
columnEnd,
|
|
45
48
|
roundRelation,
|
|
@@ -49,9 +52,11 @@ const generateGenericGridPlacements = (bracketData, roundTypeMap, roundRelations
|
|
|
49
52
|
const roundHeaderItem = {
|
|
50
53
|
type: 'round',
|
|
51
54
|
id: round.id,
|
|
55
|
+
layoutId: `${round.id}-layout`,
|
|
52
56
|
rowStart: currentMatchRow,
|
|
53
57
|
rowEnd: ++currentMatchRow,
|
|
54
58
|
component: options.headerComponent,
|
|
59
|
+
className: 'et-bracket-new-item et-bracket-round-header-container',
|
|
55
60
|
roundRelation,
|
|
56
61
|
data: {
|
|
57
62
|
bracketRound: round,
|
|
@@ -67,14 +72,17 @@ const generateGenericGridPlacements = (bracketData, roundTypeMap, roundRelations
|
|
|
67
72
|
throw new Error('Match relation is missing');
|
|
68
73
|
}
|
|
69
74
|
const baseRow = match.indexInRound * matchHeight;
|
|
75
|
+
const participantShortIds = [match.home?.shortId, match.away?.shortId].filter((id) => !!id).join(' ');
|
|
70
76
|
const matchItem = {
|
|
71
77
|
type: 'match',
|
|
72
78
|
id: match.id,
|
|
79
|
+
layoutId: `${match.id}-layout`,
|
|
73
80
|
rowStart: baseRow + currentMatchRow,
|
|
74
81
|
rowEnd: baseRow + currentMatchRow + matchHeight,
|
|
75
|
-
component: options.matchComponent,
|
|
82
|
+
component: round.type === COMMON_BRACKET_ROUND_TYPE.FINAL ? options.finalMatchComponent : options.matchComponent,
|
|
76
83
|
matchRelation,
|
|
77
84
|
roundRelation,
|
|
85
|
+
className: `et-bracket-new-item et-bracket-match-container ${participantShortIds}`,
|
|
78
86
|
data: {
|
|
79
87
|
bracketRound: round,
|
|
80
88
|
bracketMatch: match,
|
|
@@ -94,4 +102,4 @@ const generateSwissWithEliminationGridPlacements = (bracketData, roundTypeMap, s
|
|
|
94
102
|
const gridItems = new Map();
|
|
95
103
|
return gridItems;
|
|
96
104
|
};
|
|
97
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1wbGFjZW1lbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvc3JjL2xpYi9jb21wb25lbnRzL2JyYWNrZXQvY29tcG9uZW50cy9uZXctYnJhY2tldC9ncmlkLXBsYWNlbWVudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQVlMLGVBQWUsR0FDaEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDeEYsT0FBTyxFQUFFLHFDQUFxQyxFQUFFLE1BQU0sOENBQThDLENBQUM7QUFpRXJHLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLENBQ3RDLFdBQWdELEVBQ2hELFlBQXlELEVBQ3pELFdBQXdFLEVBQ3hFLGNBQTZELEVBQzdELGNBQWdFLEVBQ2hFLE9BQWdFLEVBQ2hFLEVBQUU7SUFDRixNQUFNLG9CQUFvQixHQUFHLE9BQU8sQ0FBQyxlQUFlLElBQUkscUNBQXFDLENBQUM7SUFDOUYsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLGNBQWMsSUFBSSwrQkFBK0IsQ0FBQztJQUVqRixNQUFNLG1CQUFtQixHQUF3RTtRQUMvRixHQUFHLE9BQU87UUFDVixlQUFlLEVBQUUsb0JBQW9CO1FBQ3JDLGNBQWMsRUFBRSxjQUFjO0tBQy9CLENBQUM7SUFFRixRQUFRLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN6QixLQUFLLGVBQWUsQ0FBQyxrQkFBa0I7WUFDckMsT0FBTyx1Q0FBdUMsQ0FDNUMsV0FBVyxFQUNYLFlBQVksRUFDWixjQUFjLEVBQ2QsY0FBYyxFQUNkLG1CQUFtQixDQUNwQixDQUFDO1FBQ0osS0FBSyxlQUFlLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDO1lBQzVDLElBQUksQ0FBQyxXQUFXO2dCQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsMkRBQTJELENBQUMsQ0FBQztZ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L0YsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50VHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgSW5wdXRTaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEJyYWNrZXREYXRhLFxuICBCcmFja2V0TWF0Y2gsXG4gIEJyYWNrZXRNYXRjaElkLFxuICBCcmFja2V0TWF0Y2hSZWxhdGlvbixcbiAgQnJhY2tldE1hdGNoUmVsYXRpb25zTWFwLFxuICBCcmFja2V0Um91bmQsXG4gIEJyYWNrZXRSb3VuZElkLFxuICBCcmFja2V0Um91bmRNYXBXaXRoU3dpc3NEYXRhLFxuICBCcmFja2V0Um91bmRSZWxhdGlvbixcbiAgQnJhY2tldFJvdW5kUmVsYXRpb25zLFxuICBCcmFja2V0Um91bmRUeXBlTWFwLFxuICBUT1VSTkFNRU5UX01PREUsXG59IGZyb20gJy4vYnJhY2tldC1uZXcnO1xuaW1wb3J0IHsgTmV3QnJhY2tldERlZmF1bHRNYXRjaENvbXBvbmVudCB9IGZyb20gJy4vbmV3LWJyYWNrZXQtZGVmYXVsdC1tYXRjaC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmV3QnJhY2tldERlZmF1bHRSb3VuZEhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4vbmV3LWJyYWNrZXQtZGVmYXVsdC1yb3VuZC1oZWFkZXIuY29tcG9uZW50JztcblxuZXhwb3J0IHR5cGUgQnJhY2tldFJvdW5kSGVhZGVyQ29tcG9uZW50PFRSb3VuZERhdGEsIFRNYXRjaERhdGE+ID0gQ29tcG9uZW50VHlwZTx7XG4gIGJyYWNrZXRSb3VuZDogSW5wdXRTaWduYWw8QnJhY2tldFJvdW5kPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+Pjtcbn0+O1xuXG5leHBvcnQgdHlwZSBDb21wb25lbnRJbnB1dFZhbHVlPFQ+ID0gKCkgPT4ge1xuICBbUCBpbiBrZXlvZiBUXTogVFtQXSBleHRlbmRzIElucHV0U2lnbmFsPGluZmVyIFU+ID8gVSA6IG5ldmVyO1xufTtcblxuZXhwb3J0IHR5cGUgQnJhY2tldE1hdGNoQ29tcG9uZW50PFRSb3VuZERhdGEsIFRNYXRjaERhdGE+ID0gQ29tcG9uZW50VHlwZTx7XG4gIGJyYWNrZXRSb3VuZDogSW5wdXRTaWduYWw8QnJhY2tldFJvdW5kPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+PjtcbiAgYnJhY2tldE1hdGNoOiBJbnB1dFNpZ25hbDxCcmFja2V0TWF0Y2g8VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT4+O1xufT47XG5cbmV4cG9ydCB0eXBlIEJyYWNrZXRHcmlkUm91bmRJdGVtPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+ID0ge1xuICBpZDogc3RyaW5nO1xuICBjb2x1bW5TdGFydDogbnVtYmVyO1xuICBjb2x1bW5FbmQ6IG51bWJlcjtcbiAgcm91bmRSZWxhdGlvbjogQnJhY2tldFJvdW5kUmVsYXRpb248VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT47XG4gIGl0ZW1zOiBNYXA8QnJhY2tldFJvdW5kSWQgfCBCcmFja2V0TWF0Y2hJZCwgQnJhY2tldEdyaWRJdGVtPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+Pjtcbn07XG5cbmV4cG9ydCB0eXBlIEJyYWNrZXRHcmlkUm91bmRIZWFkZXJJdGVtPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+ID0ge1xuICB0eXBlOiAncm91bmQnO1xuICBpZDogc3RyaW5nO1xuICByb3dTdGFydDogbnVtYmVyO1xuICByb3dFbmQ6IG51bWJlcjtcbiAgY29tcG9uZW50OiBCcmFja2V0Um91bmRIZWFkZXJDb21wb25lbnQ8VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT47XG4gIHJvdW5kUmVsYXRpb246IEJyYWNrZXRSb3VuZFJlbGF0aW9uPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+O1xuICBkYXRhOiB7XG4gICAgYnJhY2tldFJvdW5kOiBCcmFja2V0Um91bmQ8VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT47XG4gIH07XG59O1xuXG5leHBvcnQgdHlwZSBCcmFja2V0R3JpZE1hdGNoSXRlbTxUUm91bmREYXRhLCBUTWF0Y2hEYXRhPiA9IHtcbiAgdHlwZTogJ21hdGNoJztcbiAgaWQ6IHN0cmluZztcbiAgcm93U3RhcnQ6IG51bWJlcjtcbiAgcm93RW5kOiBudW1iZXI7XG4gIGNvbXBvbmVudDogQnJhY2tldE1hdGNoQ29tcG9uZW50PFRSb3VuZERhdGEsIFRNYXRjaERhdGE+O1xuICBtYXRjaFJlbGF0aW9uOiBCcmFja2V0TWF0Y2hSZWxhdGlvbjxUUm91bmREYXRhLCBUTWF0Y2hEYXRhPjtcbiAgcm91bmRSZWxhdGlvbjogQnJhY2tldFJvdW5kUmVsYXRpb248VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT47XG4gIGRhdGE6IHtcbiAgICBicmFja2V0Um91bmQ6IEJyYWNrZXRSb3VuZDxUUm91bmREYXRhLCBUTWF0Y2hEYXRhPjtcbiAgICBicmFja2V0TWF0Y2g6IEJyYWNrZXRNYXRjaDxUUm91bmREYXRhLCBUTWF0Y2hEYXRhPjtcbiAgfTtcbn07XG5cbmV4cG9ydCB0eXBlIEJyYWNrZXRHcmlkSXRlbTxUUm91bmREYXRhLCBUTWF0Y2hEYXRhPiA9XG4gIHwgQnJhY2tldEdyaWRSb3VuZEhlYWRlckl0ZW08VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT5cbiAgfCBCcmFja2V0R3JpZE1hdGNoSXRlbTxUUm91bmREYXRhLCBUTWF0Y2hEYXRhPjtcblxuZXhwb3J0IHR5cGUgR2VuZXJhdGVCcmFja2V0R3JpZEl0ZW1zT3B0aW9uczxUUm91bmREYXRhLCBUTWF0Y2hEYXRhPiA9IHtcbiAgaW5jbHVkZVJvdW5kSGVhZGVyczogYm9vbGVhbjtcbiAgaGVhZGVyQ29tcG9uZW50PzogQnJhY2tldFJvdW5kSGVhZGVyQ29tcG9uZW50PFRSb3VuZERhdGEsIFRNYXRjaERhdGE+O1xuICBtYXRjaENvbXBvbmVudD86IEJyYWNrZXRNYXRjaENvbXBvbmVudDxUUm91bmREYXRhLCBUTWF0Y2hEYXRhPjtcbn07XG5cbmV4cG9ydCB0eXBlIEdlbmVyYXRlQnJhY2tldEdyaWRJdGVtc09wdGlvbnNXaXRoRGVmYXVsdHM8VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT4gPSB7XG4gIGluY2x1ZGVSb3VuZEhlYWRlcnM6IGJvb2xlYW47XG4gIGhlYWRlckNvbXBvbmVudDogQnJhY2tldFJvdW5kSGVhZGVyQ29tcG9uZW50PFRSb3VuZERhdGEsIFRNYXRjaERhdGE+O1xuICBtYXRjaENvbXBvbmVudDogQnJhY2tldE1hdGNoQ29tcG9uZW50PFRSb3VuZERhdGEsIFRNYXRjaERhdGE+O1xufTtcblxuZXhwb3J0IGNvbnN0IGdlbmVyYXRlQnJhY2tldEdyaWRJdGVtcyA9IDxUUm91bmREYXRhLCBUTWF0Y2hEYXRhPihcbiAgYnJhY2tldERhdGE6IEJyYWNrZXREYXRhPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+LFxuICByb3VuZFR5cGVNYXA6IEJyYWNrZXRSb3VuZFR5cGVNYXA8VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT4sXG4gIHN3aXNzR3JvdXBzOiBCcmFja2V0Um91bmRNYXBXaXRoU3dpc3NEYXRhPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+IHwgbnVsbCxcbiAgcm91bmRSZWxhdGlvbnM6IEJyYWNrZXRSb3VuZFJlbGF0aW9uczxUUm91bmREYXRhLCBUTWF0Y2hEYXRhPixcbiAgbWF0Y2hSZWxhdGlvbnM6IEJyYWNrZXRNYXRjaFJlbGF0aW9uc01hcDxUUm91bmREYXRhLCBUTWF0Y2hEYXRhPixcbiAgb3B0aW9uczogR2VuZXJhdGVCcmFja2V0R3JpZEl0ZW1zT3B0aW9uczxUUm91bmREYXRhLCBUTWF0Y2hEYXRhPixcbikgPT4ge1xuICBjb25zdCByb3VuZEhlYWRlckNvbXBvbmVudCA9IG9wdGlvbnMuaGVhZGVyQ29tcG9uZW50ID8/IE5ld0JyYWNrZXREZWZhdWx0Um91bmRIZWFkZXJDb21wb25lbnQ7XG4gIGNvbnN0IG1hdGNoQ29tcG9uZW50ID0gb3B0aW9ucy5tYXRjaENvbXBvbmVudCA/PyBOZXdCcmFja2V0RGVmYXVsdE1hdGNoQ29tcG9uZW50O1xuXG4gIGNvbnN0IG9wdGlvbnNXaXRoRGVmYXVsdHM6IEdlbmVyYXRlQnJhY2tldEdyaWRJdGVtc09wdGlvbnNXaXRoRGVmYXVsdHM8VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT4gPSB7XG4gICAgLi4ub3B0aW9ucyxcbiAgICBoZWFkZXJDb21wb25lbnQ6IHJvdW5kSGVhZGVyQ29tcG9uZW50LFxuICAgIG1hdGNoQ29tcG9uZW50OiBtYXRjaENvbXBvbmVudCxcbiAgfTtcblxuICBzd2l0Y2ggKGJyYWNrZXREYXRhLm1vZGUpIHtcbiAgICBjYXNlIFRPVVJOQU1FTlRfTU9ERS5ET1VCTEVfRUxJTUlOQVRJT046XG4gICAgICByZXR1cm4gZ2VuZXJhdGVEb3VibGVFbGltaW5hdGlvbkdyaWRQbGFjZW1lbnRzKFxuICAgICAgICBicmFja2V0RGF0YSxcbiAgICAgICAgcm91bmRUeXBlTWFwLFxuICAgICAgICByb3VuZFJlbGF0aW9ucyxcbiAgICAgICAgbWF0Y2hSZWxhdGlvbnMsXG4gICAgICAgIG9wdGlvbnNXaXRoRGVmYXVsdHMsXG4gICAgICApO1xuICAgIGNhc2UgVE9VUk5BTUVOVF9NT0RFLlNXSVNTX1dJVEhfRUxJTUlOQVRJT046IHtcbiAgICAgIGlmICghc3dpc3NHcm91cHMpIHRocm93IG5ldyBFcnJvcignU3dpc3MgZ3JvdXBzIGFyZSByZXF1aXJlZCBmb3Igc3dpc3Mgd2l0aCBlbGltaW5hdGlvbiBtb2RlJyk7XG5cbiAgICAgIHJldHVybiBnZW5lcmF0ZVN3aXNzV2l0aEVsaW1pbmF0aW9uR3JpZFBsYWNlbWVudHMoXG4gICAgICAgIGJyYWNrZXREYXRhLFxuICAgICAgICByb3VuZFR5cGVNYXAsXG4gICAgICAgIHN3aXNzR3JvdXBzLFxuICAgICAgICByb3VuZFJlbGF0aW9ucyxcbiAgICAgICAgbWF0Y2hSZWxhdGlvbnMsXG4gICAgICAgIG9wdGlvbnNXaXRoRGVmYXVsdHMsXG4gICAgICApO1xuICAgIH1cblxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gZ2VuZXJhdGVHZW5lcmljR3JpZFBsYWNlbWVudHMoXG4gICAgICAgIGJyYWNrZXREYXRhLFxuICAgICAgICByb3VuZFR5cGVNYXAsXG4gICAgICAgIHJvdW5kUmVsYXRpb25zLFxuICAgICAgICBtYXRjaFJlbGF0aW9ucyxcbiAgICAgICAgb3B0aW9uc1dpdGhEZWZhdWx0cyxcbiAgICAgICk7XG4gIH1cbn07XG5cbmNvbnN0IGdlbmVyYXRlR2VuZXJpY0dyaWRQbGFjZW1lbnRzID0gPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+KFxuICBicmFja2V0RGF0YTogQnJhY2tldERhdGE8VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT4sXG4gIHJvdW5kVHlwZU1hcDogQnJhY2tldFJvdW5kVHlwZU1hcDxUUm91bmREYXRhLCBUTWF0Y2hEYXRhPixcbiAgcm91bmRSZWxhdGlvbnM6IEJyYWNrZXRSb3VuZFJlbGF0aW9uczxUUm91bmREYXRhLCBUTWF0Y2hEYXRhPixcbiAgbWF0Y2hSZWxhdGlvbnM6IEJyYWNrZXRNYXRjaFJlbGF0aW9uc01hcDxUUm91bmREYXRhLCBUTWF0Y2hEYXRhPixcbiAgb3B0aW9uczogR2VuZXJhdGVCcmFja2V0R3JpZEl0ZW1zT3B0aW9uc1dpdGhEZWZhdWx0czxUUm91bmREYXRhLCBUTWF0Y2hEYXRhPixcbikgPT4ge1xuICBjb25zdCBncmlkSXRlbXM6IE1hcDxCcmFja2V0Um91bmRJZCwgQnJhY2tldEdyaWRSb3VuZEl0ZW08VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT4+ID0gbmV3IE1hcCgpO1xuICBjb25zdCBmaXJzdFJvdW5kID0gYnJhY2tldERhdGEucm91bmRzLnZhbHVlcygpLm5leHQoKS52YWx1ZTtcblxuICBpZiAoIWZpcnN0Um91bmQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZpcnN0IHJvdW5kIGlzIG1pc3NpbmcnKTtcbiAgfVxuXG4gIGZvciAoY29uc3Qgcm91bmQgb2YgYnJhY2tldERhdGEucm91bmRzLnZhbHVlcygpKSB7XG4gICAgY29uc3Qgcm91bmRSZWxhdGlvbiA9IHJvdW5kUmVsYXRpb25zLmdldChyb3VuZC5pZCk7XG5cbiAgICBsZXQgY3VycmVudE1hdGNoUm93ID0gMTtcblxuICAgIGNvbnN0IGNvbHVtblN0YXJ0ID0gcm91bmQuaW5kZXggKyAxO1xuICAgIGNvbnN0IGNvbHVtbkVuZCA9IGNvbHVtblN0YXJ0ICsgMTtcblxuICAgIGlmICghcm91bmRSZWxhdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdSb3VuZCByZWxhdGlvbiBpcyBtaXNzaW5nJyk7XG4gICAgfVxuXG4gICAgaWYgKHJvdW5kUmVsYXRpb24udHlwZSA9PT0gJ3R3by10by1ub3RoaW5nJyB8fCByb3VuZFJlbGF0aW9uLnR5cGUgPT09ICd0d28tdG8tb25lJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHJlbGF0aW9uIHR5cGUgJHtyb3VuZFJlbGF0aW9uLnR5cGV9YCk7XG4gICAgfVxuXG4gICAgY29uc3Qgcm91bmRJdGVtOiBCcmFja2V0R3JpZFJvdW5kSXRlbTxUUm91bmREYXRhLCBUTWF0Y2hEYXRhPiA9IHtcbiAgICAgIGlkOiByb3VuZC5pZCxcbiAgICAgIGNvbHVtblN0YXJ0LFxuICAgICAgY29sdW1uRW5kLFxuICAgICAgcm91bmRSZWxhdGlvbixcbiAgICAgIGl0ZW1zOiBuZXcgTWFwKCksXG4gICAgfTtcblxuICAgIGlmIChvcHRpb25zLmluY2x1ZGVSb3VuZEhlYWRlcnMpIHtcbiAgICAgIGNvbnN0IHJvdW5kSGVhZGVySXRlbTogQnJhY2tldEdyaWRSb3VuZEhlYWRlckl0ZW08VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT4gPSB7XG4gICAgICAgIHR5cGU6ICdyb3VuZCcsXG4gICAgICAgIGlkOiByb3VuZC5pZCxcbiAgICAgICAgcm93U3RhcnQ6IGN1cnJlbnRNYXRjaFJvdyxcbiAgICAgICAgcm93RW5kOiArK2N1cnJlbnRNYXRjaFJvdyxcbiAgICAgICAgY29tcG9uZW50OiBvcHRpb25zLmhlYWRlckNvbXBvbmVudCxcbiAgICAgICAgcm91bmRSZWxhdGlvbixcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIGJyYWNrZXRSb3VuZDogcm91bmQsXG4gICAgICAgIH0sXG4gICAgICB9O1xuXG4gICAgICByb3VuZEl0ZW0uaXRlbXMuc2V0KHJvdW5kLmlkLCByb3VuZEhlYWRlckl0ZW0pO1xuICAgIH1cblxuICAgIGNvbnN0IHJvb3RSb3VuZE1hdGNoRmFjdG9yID0gcm91bmRSZWxhdGlvbi50eXBlICE9PSAnbm90aGluZy10by1vbmUnID8gcm91bmRSZWxhdGlvbi5yb290Um91bmRNYXRjaEZhY3RvciA6IG51bGw7XG4gICAgY29uc3QgbWF0Y2hIZWlnaHQgPSByb290Um91bmRNYXRjaEZhY3RvciA/IHJvb3RSb3VuZE1hdGNoRmFjdG9yIDogMTtcblxuICAgIGZvciAoY29uc3QgbWF0Y2ggb2Ygcm91bmQubWF0Y2hlcy52YWx1ZXMoKSkge1xuICAgICAgY29uc3QgbWF0Y2hSZWxhdGlvbiA9IG1hdGNoUmVsYXRpb25zLmdldChtYXRjaC5pZCk7XG5cbiAgICAgIGlmICghbWF0Y2hSZWxhdGlvbikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ01hdGNoIHJlbGF0aW9uIGlzIG1pc3NpbmcnKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgYmFzZVJvdyA9IG1hdGNoLmluZGV4SW5Sb3VuZCAqIG1hdGNoSGVpZ2h0O1xuXG4gICAgICBjb25zdCBtYXRjaEl0ZW06IEJyYWNrZXRHcmlkTWF0Y2hJdGVtPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+ID0ge1xuICAgICAgICB0eXBlOiAnbWF0Y2gnLFxuICAgICAgICBpZDogbWF0Y2guaWQsXG4gICAgICAgIHJvd1N0YXJ0OiBiYXNlUm93ICsgY3VycmVudE1hdGNoUm93LFxuICAgICAgICByb3dFbmQ6IGJhc2VSb3cgKyBjdXJyZW50TWF0Y2hSb3cgKyBtYXRjaEhlaWdodCxcbiAgICAgICAgY29tcG9uZW50OiBvcHRpb25zLm1hdGNoQ29tcG9uZW50LFxuICAgICAgICBtYXRjaFJlbGF0aW9uLFxuICAgICAgICByb3VuZFJlbGF0aW9uLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgYnJhY2tldFJvdW5kOiByb3VuZCxcbiAgICAgICAgICBicmFja2V0TWF0Y2g6IG1hdGNoLFxuICAgICAgICB9LFxuICAgICAgfTtcblxuICAgICAgcm91bmRJdGVtLml0ZW1zLnNldChtYXRjaC5pZCwgbWF0Y2hJdGVtKTtcbiAgICB9XG5cbiAgICBncmlkSXRlbXMuc2V0KHJvdW5kLmlkLCByb3VuZEl0ZW0pO1xuICB9XG5cbiAgcmV0dXJuIGdyaWRJdGVtcztcbn07XG5cbmNvbnN0IGdlbmVyYXRlRG91YmxlRWxpbWluYXRpb25HcmlkUGxhY2VtZW50cyA9IDxUUm91bmREYXRhLCBUTWF0Y2hEYXRhPihcbiAgYnJhY2tldERhdGE6IEJyYWNrZXREYXRhPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+LFxuICByb3VuZFR5cGVNYXA6IEJyYWNrZXRSb3VuZFR5cGVNYXA8VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT4sXG4gIHJvdW5kUmVsYXRpb25zOiBCcmFja2V0Um91bmRSZWxhdGlvbnM8VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT4sXG4gIG1hdGNoUmVsYXRpb25zOiBCcmFja2V0TWF0Y2hSZWxhdGlvbnNNYXA8VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT4sXG4gIG9wdGlvbnM6IEdlbmVyYXRlQnJhY2tldEdyaWRJdGVtc09wdGlvbnNXaXRoRGVmYXVsdHM8VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT4sXG4pID0+IHtcbiAgY29uc3QgZ3JpZEl0ZW1zOiBNYXA8QnJhY2tldFJvdW5kSWQsIEJyYWNrZXRHcmlkUm91bmRJdGVtPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+PiA9IG5ldyBNYXAoKTtcblxuICByZXR1cm4gZ3JpZEl0ZW1zO1xufTtcblxuY29uc3QgZ2VuZXJhdGVTd2lzc1dpdGhFbGltaW5hdGlvbkdyaWRQbGFjZW1lbnRzID0gPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+KFxuICBicmFja2V0RGF0YTogQnJhY2tldERhdGE8VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT4sXG4gIHJvdW5kVHlwZU1hcDogQnJhY2tldFJvdW5kVHlwZU1hcDxUUm91bmREYXRhLCBUTWF0Y2hEYXRhPixcbiAgc3dpc3NHcm91cHM6IEJyYWNrZXRSb3VuZE1hcFdpdGhTd2lzc0RhdGE8VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT4sXG4gIHJvdW5kUmVsYXRpb25zOiBCcmFja2V0Um91bmRSZWxhdGlvbnM8VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT4sXG4gIG1hdGNoUmVsYXRpb25zOiBCcmFja2V0TWF0Y2hSZWxhdGlvbnNNYXA8VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT4sXG4gIG9wdGlvbnM6IEdlbmVyYXRlQnJhY2tldEdyaWRJdGVtc09wdGlvbnNXaXRoRGVmYXVsdHM8VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT4sXG4pID0+IHtcbiAgY29uc3QgZ3JpZEl0ZW1zOiBNYXA8QnJhY2tldFJvdW5kSWQsIEJyYWNrZXRHcmlkUm91bmRJdGVtPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+PiA9IG5ldyBNYXAoKTtcblxuICByZXR1cm4gZ3JpZEl0ZW1zO1xufTtcbiJdfQ==
|
|
105
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1wbGFjZW1lbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvc3JjL2xpYi9jb21wb25lbnRzL2JyYWNrZXQvY29tcG9uZW50cy9uZXctYnJhY2tldC9ncmlkLXBsYWNlbWVudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQVlMLHlCQUF5QixFQUN6QixlQUFlLEdBQ2hCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxxQ0FBcUMsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBd0VyRyxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxDQUN0QyxXQUFnRCxFQUNoRCxZQUF5RCxFQUN6RCxXQUF3RSxFQUN4RSxjQUE2RCxFQUM3RCxjQUFnRSxFQUNoRSxPQUFnRSxFQUNoRSxFQUFFO0lBQ0YsTUFBTSxvQkFBb0IsR0FBRyxPQUFPLENBQUMsZUFBZSxJQUFJLHFDQUFxQyxDQUFDO0lBQzlGLE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQyxjQUFjLElBQUksK0JBQStCLENBQUM7SUFDakYsTUFBTSxtQkFBbUIsR0FBRyxPQUFPLENBQUMsbUJBQW1CLElBQUksY0FBYyxDQUFDO0lBRTFFLE1BQU0sbUJBQW1CLEdBQXdFO1FBQy9GLEdBQUcsT0FBTztRQUNWLGVBQWUsRUFBRSxvQkFBb0I7UUFDckMsY0FBYyxFQUFFLGNBQWM7UUFDOUIsbUJBQW1CLEVBQUUsbUJBQW1CO0tBQ3pDLENBQUM7SUFFRixRQUFRLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN6QixLQUFLLGVBQWUsQ0FBQyxrQkFBa0I7WUFDckMsT0FBTyx1Q0FBdUMsQ0FDNUMsV0FBVyxFQUNYLFlBQVksRUFDWixjQUFjLEVBQ2QsY0FBYyxFQUNkLG1CQUFtQixDQUNwQixDQUFDO1FBQ0osS0FBSyxlQUFl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WUFBWSxFQUFFLEtBQUs7aUJBQ3BCO2FBQ0YsQ0FBQztZQUVGLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDM0MsQ0FBQztRQUVELFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQyxDQUFDO0FBRUYsTUFBTSx1Q0FBdUMsR0FBRyxDQUM5QyxXQUFnRCxFQUNoRCxZQUF5RCxFQUN6RCxjQUE2RCxFQUM3RCxjQUFnRSxFQUNoRSxPQUE0RSxFQUM1RSxFQUFFO0lBQ0YsTUFBTSxTQUFTLEdBQXNFLElBQUksR0FBRyxFQUFFLENBQUM7SUFFL0YsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQyxDQUFDO0FBRUYsTUFBTSwwQ0FBMEMsR0FBRyxDQUNqRCxXQUFnRCxFQUNoRCxZQUF5RCxFQUN6RCxXQUFpRSxFQUNqRSxjQUE2RCxFQUM3RCxjQUFnRSxFQUNoRSxPQUE0RSxFQUM1RSxFQUFFO0lBQ0YsTUFBTSxTQUFTLEdBQXNFLElBQUksR0FBRyxFQUFFLENBQUM7SUFFL0YsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50VHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgSW5wdXRTaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEJyYWNrZXREYXRhLFxuICBCcmFja2V0TWF0Y2gsXG4gIEJyYWNrZXRNYXRjaElkLFxuICBCcmFja2V0TWF0Y2hSZWxhdGlvbixcbiAgQnJhY2tldE1hdGNoUmVsYXRpb25zTWFwLFxuICBCcmFja2V0Um91bmQsXG4gIEJyYWNrZXRSb3VuZElkLFxuICBCcmFja2V0Um91bmRNYXBXaXRoU3dpc3NEYXRhLFxuICBCcmFja2V0Um91bmRSZWxhdGlvbixcbiAgQnJhY2tldFJvdW5kUmVsYXRpb25zLFxuICBCcmFja2V0Um91bmRUeXBlTWFwLFxuICBDT01NT05fQlJBQ0tFVF9ST1VORF9UWVBFLFxuICBUT1VSTkFNRU5UX01PREUsXG59IGZyb20gJy4vYnJhY2tldC1uZXcnO1xuaW1wb3J0IHsgTmV3QnJhY2tldERlZmF1bHRNYXRjaENvbXBvbmVudCB9IGZyb20gJy4vbmV3LWJyYWNrZXQtZGVmYXVsdC1tYXRjaC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmV3QnJhY2tldERlZmF1bHRSb3VuZEhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4vbmV3LWJyYWNrZXQtZGVmYXVsdC1yb3VuZC1oZWFkZXIuY29tcG9uZW50JztcblxuZXhwb3J0IHR5cGUgQnJhY2tldFJvdW5kSGVhZGVyQ29tcG9uZW50PFRSb3VuZERhdGEsIFRNYXRjaERhdGE+ID0gQ29tcG9uZW50VHlwZTx7XG4gIGJyYWNrZXRSb3VuZDogSW5wdXRTaWduYWw8QnJhY2tldFJvdW5kPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+Pjtcbn0+O1xuXG5leHBvcnQgdHlwZSBDb21wb25lbnRJbnB1dFZhbHVlPFQ+ID0gKCkgPT4ge1xuICBbUCBpbiBrZXlvZiBUXTogVFtQXSBleHRlbmRzIElucHV0U2lnbmFsPGluZmVyIFU+ID8gVSA6IG5ldmVyO1xufTtcblxuZXhwb3J0IHR5cGUgQnJhY2tldE1hdGNoQ29tcG9uZW50PFRSb3VuZERhdGEsIFRNYXRjaERhdGE+ID0gQ29tcG9uZW50VHlwZTx7XG4gIGJyYWNrZXRSb3VuZDogSW5wdXRTaWduYWw8QnJhY2tldFJvdW5kPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+PjtcbiAgYnJhY2tldE1hdGNoOiBJbnB1dFNpZ25hbDxCcmFja2V0TWF0Y2g8VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT4+O1xufT47XG5cbmV4cG9ydCB0eXBlIEJyYWNrZXRHcmlkUm91bmRJdGVtPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+ID0ge1xuICBpZDogc3RyaW5nO1xuICBsYXlvdXRJZDogc3RyaW5nO1xuICBjb2x1bW5TdGFydDogbnVtYmVyO1xuICBjb2x1bW5FbmQ6IG51bWJlcjtcbiAgcm91bmRSZWxhdGlvbjogQnJhY2tldFJvdW5kUmVsYXRpb248VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT47XG4gIGl0ZW1zOiBNYXA8QnJhY2tldFJvdW5kSWQgfCBCcmFja2V0TWF0Y2hJZCwgQnJhY2tldEdyaWRJdGVtPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+Pjtcbn07XG5cbmV4cG9ydCB0eXBlIEJyYWNrZXRHcmlkUm91bmRIZWFkZXJJdGVtPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+ID0ge1xuICB0eXBlOiAncm91bmQnO1xuICBpZDogc3RyaW5nO1xuICBsYXlvdXRJZDogc3RyaW5nO1xuICByb3dTdGFydDogbnVtYmVyO1xuICByb3dFbmQ6IG51bWJlcjtcbiAgY2xhc3NOYW1lOiBzdHJpbmc7XG4gIGNvbXBvbmVudDogQnJhY2tldFJvdW5kSGVhZGVyQ29tcG9uZW50PFRSb3VuZERhdGEsIFRNYXRjaERhdGE+O1xuICByb3VuZFJlbGF0aW9uOiBCcmFja2V0Um91bmRSZWxhdGlvbjxUUm91bmREYXRhLCBUTWF0Y2hEYXRhPjtcbiAgZGF0YToge1xuICAgIGJyYWNrZXRSb3VuZDogQnJhY2tldFJvdW5kPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+O1xuICB9O1xufTtcblxuZXhwb3J0IHR5cGUgQnJhY2tldEdyaWRNYXRjaEl0ZW08VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT4gPSB7XG4gIHR5cGU6ICdtYXRjaCc7XG4gIGlkOiBzdHJpbmc7XG4gIGxheW91dElkOiBzdHJpbmc7XG4gIHJvd1N0YXJ0OiBudW1iZXI7XG4gIHJvd0VuZDogbnVtYmVyO1xuICBjbGFzc05hbWU6IHN0cmluZztcbiAgY29tcG9uZW50OiBCcmFja2V0TWF0Y2hDb21wb25lbnQ8VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT47XG4gIG1hdGNoUmVsYXRpb246IEJyYWNrZXRNYXRjaFJlbGF0aW9uPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+O1xuICByb3VuZFJlbGF0aW9uOiBCcmFja2V0Um91bmRSZWxhdGlvbjxUUm91bmREYXRhLCBUTWF0Y2hEYXRhPjtcbiAgZGF0YToge1xuICAgIGJyYWNrZXRSb3VuZDogQnJhY2tldFJvdW5kPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+O1xuICAgIGJyYWNrZXRNYXRjaDogQnJhY2tldE1hdGNoPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+O1xuICB9O1xufTtcblxuZXhwb3J0IHR5cGUgQnJhY2tldEdyaWRJdGVtPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+ID1cbiAgfCBCcmFja2V0R3JpZFJvdW5kSGVhZGVySXRlbTxUUm91bmREYXRhLCBUTWF0Y2hEYXRhPlxuICB8IEJyYWNrZXRHcmlkTWF0Y2hJdGVtPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+O1xuXG5leHBvcnQgdHlwZSBHZW5lcmF0ZUJyYWNrZXRHcmlkSXRlbXNPcHRpb25zPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+ID0ge1xuICBpbmNsdWRlUm91bmRIZWFkZXJzOiBib29sZWFuO1xuICBoZWFkZXJDb21wb25lbnQ/OiBCcmFja2V0Um91bmRIZWFkZXJDb21wb25lbnQ8VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT47XG4gIG1hdGNoQ29tcG9uZW50PzogQnJhY2tldE1hdGNoQ29tcG9uZW50PFRSb3VuZERhdGEsIFRNYXRjaERhdGE+O1xuICBmaW5hbE1hdGNoQ29tcG9uZW50PzogQnJhY2tldE1hdGNoQ29tcG9uZW50PFRSb3VuZERhdGEsIFRNYXRjaERhdGE+O1xufTtcblxuZXhwb3J0IHR5cGUgR2VuZXJhdGVCcmFja2V0R3JpZEl0ZW1zT3B0aW9uc1dpdGhEZWZhdWx0czxUUm91bmREYXRhLCBUTWF0Y2hEYXRhPiA9IHtcbiAgaW5jbHVkZVJvdW5kSGVhZGVyczogYm9vbGVhbjtcbiAgaGVhZGVyQ29tcG9uZW50OiBCcmFja2V0Um91bmRIZWFkZXJDb21wb25lbnQ8VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT47XG4gIG1hdGNoQ29tcG9uZW50OiBCcmFja2V0TWF0Y2hDb21wb25lbnQ8VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT47XG4gIGZpbmFsTWF0Y2hDb21wb25lbnQ6IEJyYWNrZXRNYXRjaENvbXBvbmVudDxUUm91bmREYXRhLCBUTWF0Y2hEYXRhPjtcbn07XG5cbmV4cG9ydCBjb25zdCBnZW5lcmF0ZUJyYWNrZXRHcmlkSXRlbXMgPSA8VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT4oXG4gIGJyYWNrZXREYXRhOiBCcmFja2V0RGF0YTxUUm91bmREYXRhLCBUTWF0Y2hEYXRhPixcbiAgcm91bmRUeXBlTWFwOiBCcmFja2V0Um91bmRUeXBlTWFwPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+LFxuICBzd2lzc0dyb3VwczogQnJhY2tldFJvdW5kTWFwV2l0aFN3aXNzRGF0YTxUUm91bmREYXRhLCBUTWF0Y2hEYXRhPiB8IG51bGwsXG4gIHJvdW5kUmVsYXRpb25zOiBCcmFja2V0Um91bmRSZWxhdGlvbnM8VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT4sXG4gIG1hdGNoUmVsYXRpb25zOiBCcmFja2V0TWF0Y2hSZWxhdGlvbnNNYXA8VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT4sXG4gIG9wdGlvbnM6IEdlbmVyYXRlQnJhY2tldEdyaWRJdGVtc09wdGlvbnM8VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT4sXG4pID0+IHtcbiAgY29uc3Qgcm91bmRIZWFkZXJDb21wb25lbnQgPSBvcHRpb25zLmhlYWRlckNvbXBvbmVudCA/PyBOZXdCcmFja2V0RGVmYXVsdFJvdW5kSGVhZGVyQ29tcG9uZW50O1xuICBjb25zdCBtYXRjaENvbXBvbmVudCA9IG9wdGlvbnMubWF0Y2hDb21wb25lbnQgPz8gTmV3QnJhY2tldERlZmF1bHRNYXRjaENvbXBvbmVudDtcbiAgY29uc3QgZmluYWxNYXRjaENvbXBvbmVudCA9IG9wdGlvbnMuZmluYWxNYXRjaENvbXBvbmVudCA/PyBtYXRjaENvbXBvbmVudDtcblxuICBjb25zdCBvcHRpb25zV2l0aERlZmF1bHRzOiBHZW5lcmF0ZUJyYWNrZXRHcmlkSXRlbXNPcHRpb25zV2l0aERlZmF1bHRzPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+ID0ge1xuICAgIC4uLm9wdGlvbnMsXG4gICAgaGVhZGVyQ29tcG9uZW50OiByb3VuZEhlYWRlckNvbXBvbmVudCxcbiAgICBtYXRjaENvbXBvbmVudDogbWF0Y2hDb21wb25lbnQsXG4gICAgZmluYWxNYXRjaENvbXBvbmVudDogZmluYWxNYXRjaENvbXBvbmVudCxcbiAgfTtcblxuICBzd2l0Y2ggKGJyYWNrZXREYXRhLm1vZGUpIHtcbiAgICBjYXNlIFRPVVJOQU1FTlRfTU9ERS5ET1VCTEVfRUxJTUlOQVRJT046XG4gICAgICByZXR1cm4gZ2VuZXJhdGVEb3VibGVFbGltaW5hdGlvbkdyaWRQbGFjZW1lbnRzKFxuICAgICAgICBicmFja2V0RGF0YSxcbiAgICAgICAgcm91bmRUeXBlTWFwLFxuICAgICAgICByb3VuZFJlbGF0aW9ucyxcbiAgICAgICAgbWF0Y2hSZWxhdGlvbnMsXG4gICAgICAgIG9wdGlvbnNXaXRoRGVmYXVsdHMsXG4gICAgICApO1xuICAgIGNhc2UgVE9VUk5BTUVOVF9NT0RFLlNXSVNTX1dJVEhfRUxJTUlOQVRJT046IHtcbiAgICAgIGlmICghc3dpc3NHcm91cHMpIHRocm93IG5ldyBFcnJvcignU3dpc3MgZ3JvdXBzIGFyZSByZXF1aXJlZCBmb3Igc3dpc3Mgd2l0aCBlbGltaW5hdGlvbiBtb2RlJyk7XG5cbiAgICAgIHJldHVybiBnZW5lcmF0ZVN3aXNzV2l0aEVsaW1pbmF0aW9uR3JpZFBsYWNlbWVudHMoXG4gICAgICAgIGJyYWNrZXREYXRhLFxuICAgICAgICByb3VuZFR5cGVNYXAsXG4gICAgICAgIHN3aXNzR3JvdXBzLFxuICAgICAgICByb3VuZFJlbGF0aW9ucyxcbiAgICAgICAgbWF0Y2hSZWxhdGlvbnMsXG4gICAgICAgIG9wdGlvbnNXaXRoRGVmYXVsdHMsXG4gICAgICApO1xuICAgIH1cblxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gZ2VuZXJhdGVHZW5lcmljR3JpZFBsYWNlbWVudHMoXG4gICAgICAgIGJyYWNrZXREYXRhLFxuICAgICAgICByb3VuZFR5cGVNYXAsXG4gICAgICAgIHJvdW5kUmVsYXRpb25zLFxuICAgICAgICBtYXRjaFJlbGF0aW9ucyxcbiAgICAgICAgb3B0aW9uc1dpdGhEZWZhdWx0cyxcbiAgICAgICk7XG4gIH1cbn07XG5cbmNvbnN0IGdlbmVyYXRlR2VuZXJpY0dyaWRQbGFjZW1lbnRzID0gPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+KFxuICBicmFja2V0RGF0YTogQnJhY2tldERhdGE8VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT4sXG4gIHJvdW5kVHlwZU1hcDogQnJhY2tldFJvdW5kVHlwZU1hcDxUUm91bmREYXRhLCBUTWF0Y2hEYXRhPixcbiAgcm91bmRSZWxhdGlvbnM6IEJyYWNrZXRSb3VuZFJlbGF0aW9uczxUUm91bmREYXRhLCBUTWF0Y2hEYXRhPixcbiAgbWF0Y2hSZWxhdGlvbnM6IEJyYWNrZXRNYXRjaFJlbGF0aW9uc01hcDxUUm91bmREYXRhLCBUTWF0Y2hEYXRhPixcbiAgb3B0aW9uczogR2VuZXJhdGVCcmFja2V0R3JpZEl0ZW1zT3B0aW9uc1dpdGhEZWZhdWx0czxUUm91bmREYXRhLCBUTWF0Y2hEYXRhPixcbikgPT4ge1xuICBjb25zdCBncmlkSXRlbXM6IE1hcDxCcmFja2V0Um91bmRJZCwgQnJhY2tldEdyaWRSb3VuZEl0ZW08VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT4+ID0gbmV3IE1hcCgpO1xuICBjb25zdCBmaXJzdFJvdW5kID0gYnJhY2tldERhdGEucm91bmRzLnZhbHVlcygpLm5leHQoKS52YWx1ZTtcblxuICBpZiAoIWZpcnN0Um91bmQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZpcnN0IHJvdW5kIGlzIG1pc3NpbmcnKTtcbiAgfVxuXG4gIGZvciAoY29uc3Qgcm91bmQgb2YgYnJhY2tldERhdGEucm91bmRzLnZhbHVlcygpKSB7XG4gICAgY29uc3Qgcm91bmRSZWxhdGlvbiA9IHJvdW5kUmVsYXRpb25zLmdldChyb3VuZC5pZCk7XG5cbiAgICBsZXQgY3VycmVudE1hdGNoUm93ID0gMTtcblxuICAgIGNvbnN0IGNvbHVtblN0YXJ0ID0gcm91bmQuaW5kZXggKyAxO1xuICAgIGNvbnN0IGNvbHVtbkVuZCA9IGNvbHVtblN0YXJ0ICsgMTtcblxuICAgIGlmICghcm91bmRSZWxhdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdSb3VuZCByZWxhdGlvbiBpcyBtaXNzaW5nJyk7XG4gICAgfVxuXG4gICAgaWYgKHJvdW5kUmVsYXRpb24udHlwZSA9PT0gJ3R3by10by1ub3RoaW5nJyB8fCByb3VuZFJlbGF0aW9uLnR5cGUgPT09ICd0d28tdG8tb25lJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHJlbGF0aW9uIHR5cGUgJHtyb3VuZFJlbGF0aW9uLnR5cGV9YCk7XG4gICAgfVxuXG4gICAgY29uc3Qgcm91bmRJdGVtOiBCcmFja2V0R3JpZFJvdW5kSXRlbTxUUm91bmREYXRhLCBUTWF0Y2hEYXRhPiA9IHtcbiAgICAgIGlkOiByb3VuZC5pZCxcbiAgICAgIGxheW91dElkOiBgJHtyb3VuZC5pZH0tbGF5b3V0YCxcbiAgICAgIGNvbHVtblN0YXJ0LFxuICAgICAgY29sdW1uRW5kLFxuICAgICAgcm91bmRSZWxhdGlvbixcbiAgICAgIGl0ZW1zOiBuZXcgTWFwKCksXG4gICAgfTtcblxuICAgIGlmIChvcHRpb25zLmluY2x1ZGVSb3VuZEhlYWRlcnMpIHtcbiAgICAgIGNvbnN0IHJvdW5kSGVhZGVySXRlbTogQnJhY2tldEdyaWRSb3VuZEhlYWRlckl0ZW08VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT4gPSB7XG4gICAgICAgIHR5cGU6ICdyb3VuZCcsXG4gICAgICAgIGlkOiByb3VuZC5pZCxcbiAgICAgICAgbGF5b3V0SWQ6IGAke3JvdW5kLmlkfS1sYXlvdXRgLFxuICAgICAgICByb3dTdGFydDogY3VycmVudE1hdGNoUm93LFxuICAgICAgICByb3dFbmQ6ICsrY3VycmVudE1hdGNoUm93LFxuICAgICAgICBjb21wb25lbnQ6IG9wdGlvbnMuaGVhZGVyQ29tcG9uZW50LFxuICAgICAgICBjbGFzc05hbWU6ICdldC1icmFja2V0LW5ldy1pdGVtIGV0LWJyYWNrZXQtcm91bmQtaGVhZGVyLWNvbnRhaW5lcicsXG4gICAgICAgIHJvdW5kUmVsYXRpb24sXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBicmFja2V0Um91bmQ6IHJvdW5kLFxuICAgICAgICB9LFxuICAgICAgfTtcblxuICAgICAgcm91bmRJdGVtLml0ZW1zLnNldChyb3VuZC5pZCwgcm91bmRIZWFkZXJJdGVtKTtcbiAgICB9XG5cbiAgICBjb25zdCByb290Um91bmRNYXRjaEZhY3RvciA9IHJvdW5kUmVsYXRpb24udHlwZSAhPT0gJ25vdGhpbmctdG8tb25lJyA/IHJvdW5kUmVsYXRpb24ucm9vdFJvdW5kTWF0Y2hGYWN0b3IgOiBudWxsO1xuICAgIGNvbnN0IG1hdGNoSGVpZ2h0ID0gcm9vdFJvdW5kTWF0Y2hGYWN0b3IgPyByb290Um91bmRNYXRjaEZhY3RvciA6IDE7XG5cbiAgICBmb3IgKGNvbnN0IG1hdGNoIG9mIHJvdW5kLm1hdGNoZXMudmFsdWVzKCkpIHtcbiAgICAgIGNvbnN0IG1hdGNoUmVsYXRpb24gPSBtYXRjaFJlbGF0aW9ucy5nZXQobWF0Y2guaWQpO1xuXG4gICAgICBpZiAoIW1hdGNoUmVsYXRpb24pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdNYXRjaCByZWxhdGlvbiBpcyBtaXNzaW5nJyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGJhc2VSb3cgPSBtYXRjaC5pbmRleEluUm91bmQgKiBtYXRjaEhlaWdodDtcblxuICAgICAgY29uc3QgcGFydGljaXBhbnRTaG9ydElkcyA9IFttYXRjaC5ob21lPy5zaG9ydElkLCBtYXRjaC5hd2F5Py5zaG9ydElkXS5maWx0ZXIoKGlkKSA9PiAhIWlkKS5qb2luKCcgJyk7XG5cbiAgICAgIGNvbnN0IG1hdGNoSXRlbTogQnJhY2tldEdyaWRNYXRjaEl0ZW08VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT4gPSB7XG4gICAgICAgIHR5cGU6ICdtYXRjaCcsXG4gICAgICAgIGlkOiBtYXRjaC5pZCxcbiAgICAgICAgbGF5b3V0SWQ6IGAke21hdGNoLmlkfS1sYXlvdXRgLFxuICAgICAgICByb3dTdGFydDogYmFzZVJvdyArIGN1cnJlbnRNYXRjaFJvdyxcbiAgICAgICAgcm93RW5kOiBiYXNlUm93ICsgY3VycmVudE1hdGNoUm93ICsgbWF0Y2hIZWlnaHQsXG4gICAgICAgIGNvbXBvbmVudDpcbiAgICAgICAgICByb3VuZC50eXBlID09PSBDT01NT05fQlJBQ0tFVF9ST1VORF9UWVBFLkZJTkFMID8gb3B0aW9ucy5maW5hbE1hdGNoQ29tcG9uZW50IDogb3B0aW9ucy5tYXRjaENvbXBvbmVudCxcbiAgICAgICAgbWF0Y2hSZWxhdGlvbixcbiAgICAgICAgcm91bmRSZWxhdGlvbixcbiAgICAgICAgY2xhc3NOYW1lOiBgZXQtYnJhY2tldC1uZXctaXRlbSBldC1icmFja2V0LW1hdGNoLWNvbnRhaW5lciAke3BhcnRpY2lwYW50U2hvcnRJZHN9YCxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIGJyYWNrZXRSb3VuZDogcm91bmQsXG4gICAgICAgICAgYnJhY2tldE1hdGNoOiBtYXRjaCxcbiAgICAgICAgfSxcbiAgICAgIH07XG5cbiAgICAgIHJvdW5kSXRlbS5pdGVtcy5zZXQobWF0Y2guaWQsIG1hdGNoSXRlbSk7XG4gICAgfVxuXG4gICAgZ3JpZEl0ZW1zLnNldChyb3VuZC5pZCwgcm91bmRJdGVtKTtcbiAgfVxuXG4gIHJldHVybiBncmlkSXRlbXM7XG59O1xuXG5jb25zdCBnZW5lcmF0ZURvdWJsZUVsaW1pbmF0aW9uR3JpZFBsYWNlbWVudHMgPSA8VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT4oXG4gIGJyYWNrZXREYXRhOiBCcmFja2V0RGF0YTxUUm91bmREYXRhLCBUTWF0Y2hEYXRhPixcbiAgcm91bmRUeXBlTWFwOiBCcmFja2V0Um91bmRUeXBlTWFwPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+LFxuICByb3VuZFJlbGF0aW9uczogQnJhY2tldFJvdW5kUmVsYXRpb25zPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+LFxuICBtYXRjaFJlbGF0aW9uczogQnJhY2tldE1hdGNoUmVsYXRpb25zTWFwPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+LFxuICBvcHRpb25zOiBHZW5lcmF0ZUJyYWNrZXRHcmlkSXRlbXNPcHRpb25zV2l0aERlZmF1bHRzPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+LFxuKSA9PiB7XG4gIGNvbnN0IGdyaWRJdGVtczogTWFwPEJyYWNrZXRSb3VuZElkLCBCcmFja2V0R3JpZFJvdW5kSXRlbTxUUm91bmREYXRhLCBUTWF0Y2hEYXRhPj4gPSBuZXcgTWFwKCk7XG5cbiAgcmV0dXJuIGdyaWRJdGVtcztcbn07XG5cbmNvbnN0IGdlbmVyYXRlU3dpc3NXaXRoRWxpbWluYXRpb25HcmlkUGxhY2VtZW50cyA9IDxUUm91bmREYXRhLCBUTWF0Y2hEYXRhPihcbiAgYnJhY2tldERhdGE6IEJyYWNrZXREYXRhPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+LFxuICByb3VuZFR5cGVNYXA6IEJyYWNrZXRSb3VuZFR5cGVNYXA8VFJvdW5kRGF0YSwgVE1hdGNoRGF0YT4sXG4gIHN3aXNzR3JvdXBzOiBCcmFja2V0Um91bmRNYXBXaXRoU3dpc3NEYXRhPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+LFxuICByb3VuZFJlbGF0aW9uczogQnJhY2tldFJvdW5kUmVsYXRpb25zPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+LFxuICBtYXRjaFJlbGF0aW9uczogQnJhY2tldE1hdGNoUmVsYXRpb25zTWFwPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+LFxuICBvcHRpb25zOiBHZW5lcmF0ZUJyYWNrZXRHcmlkSXRlbXNPcHRpb25zV2l0aERlZmF1bHRzPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+LFxuKSA9PiB7XG4gIGNvbnN0IGdyaWRJdGVtczogTWFwPEJyYWNrZXRSb3VuZElkLCBCcmFja2V0R3JpZFJvdW5kSXRlbTxUUm91bmREYXRhLCBUTWF0Y2hEYXRhPj4gPSBuZXcgTWFwKCk7XG5cbiAgcmV0dXJuIGdyaWRJdGVtcztcbn07XG4iXX0=
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export const createJourneyHighlight = (bracketData) => {
|
|
2
|
+
let styles = '';
|
|
3
|
+
for (const participant of bracketData.participants.values()) {
|
|
4
|
+
styles += `
|
|
5
|
+
.et-new-bracket-host:has(.${participant.shortId}:hover) {
|
|
6
|
+
path, .et-bracket-match-container {
|
|
7
|
+
opacity: 0.5;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.${participant.shortId} {
|
|
11
|
+
opacity: 1 !important;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
`;
|
|
15
|
+
}
|
|
16
|
+
return styles.replace(/\s+/g, ' ').trim();
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiam91cm5leS1oaWdobGlnaHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL2NvbXBvbmVudHMvYnJhY2tldC9jb21wb25lbnRzL25ldy1icmFja2V0L2pvdXJuZXktaGlnaGxpZ2h0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLENBQXlCLFdBQWdELEVBQUUsRUFBRTtJQUNqSCxJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7SUFFaEIsS0FBSyxNQUFNLFdBQVcsSUFBSSxXQUFXLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7UUFDNUQsTUFBTSxJQUFJO3NDQUN3QixXQUFXLENBQUMsT0FBTzs7Ozs7ZUFLMUMsV0FBVyxDQUFDLE9BQU87Ozs7U0FJekIsQ0FBQztJQUNSLENBQUM7SUFFRCxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQzVDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJyYWNrZXREYXRhIH0gZnJvbSAnLi9icmFja2V0LW5ldyc7XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVKb3VybmV5SGlnaGxpZ2h0ID0gPFRSb3VuZERhdGEsIFRNYXRjaERhdGE+KGJyYWNrZXREYXRhOiBCcmFja2V0RGF0YTxUUm91bmREYXRhLCBUTWF0Y2hEYXRhPikgPT4ge1xuICBsZXQgc3R5bGVzID0gJyc7XG5cbiAgZm9yIChjb25zdCBwYXJ0aWNpcGFudCBvZiBicmFja2V0RGF0YS5wYXJ0aWNpcGFudHMudmFsdWVzKCkpIHtcbiAgICBzdHlsZXMgKz0gYFxuICAgICAgICAgIC5ldC1uZXctYnJhY2tldC1ob3N0OmhhcyguJHtwYXJ0aWNpcGFudC5zaG9ydElkfTpob3Zlcikge1xuICAgICAgICAgICAgcGF0aCwgLmV0LWJyYWNrZXQtbWF0Y2gtY29udGFpbmVyIHtcbiAgICAgICAgICAgICAgICBvcGFjaXR5OiAwLjU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC4ke3BhcnRpY2lwYW50LnNob3J0SWR9IHtcbiAgICAgICAgICAgICAgICBvcGFjaXR5OiAxICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICBgO1xuICB9XG5cbiAgcmV0dXJuIHN0eWxlcy5yZXBsYWNlKC9cXHMrL2csICcgJykudHJpbSgpO1xufTtcbiJdfQ==
|
|
@@ -5,10 +5,10 @@ export class NewBracketDefaultMatchComponent {
|
|
|
5
5
|
this.bracketRound = input.required();
|
|
6
6
|
this.bracketMatch = input.required();
|
|
7
7
|
}
|
|
8
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
9
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.
|
|
8
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: NewBracketDefaultMatchComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
9
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.12", type: NewBracketDefaultMatchComponent, isStandalone: true, selector: "et-new-bracket-default-match", inputs: { bracketRound: { classPropertyName: "bracketRound", publicName: "bracketRound", isSignal: true, isRequired: true, transformFunction: null }, bracketMatch: { classPropertyName: "bracketMatch", publicName: "bracketMatch", isSignal: true, isRequired: true, transformFunction: null } }, host: { classAttribute: "et-new-bracket-default-match-host" }, ngImport: i0, template: ` {{ bracketMatch().id }} `, isInline: true, styles: [".et-new-bracket-default-match-host{display:block;padding:8px;border:1px solid yellow;inline-size:250px;block-size:75px;display:flex;justify-content:center;align-items:center;box-sizing:border-box;font-size:12px}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
10
10
|
}
|
|
11
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
11
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: NewBracketDefaultMatchComponent, decorators: [{
|
|
12
12
|
type: Component,
|
|
13
13
|
args: [{ selector: 'et-new-bracket-default-match', template: ` {{ bracketMatch().id }} `, standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
|
|
14
14
|
class: 'et-new-bracket-default-match-host',
|
|
@@ -4,10 +4,10 @@ export class NewBracketDefaultRoundHeaderComponent {
|
|
|
4
4
|
constructor() {
|
|
5
5
|
this.bracketRound = input.required();
|
|
6
6
|
}
|
|
7
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
8
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.
|
|
7
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: NewBracketDefaultRoundHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
8
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.12", type: NewBracketDefaultRoundHeaderComponent, isStandalone: true, selector: "et-new-bracket-default-round-header", inputs: { bracketRound: { classPropertyName: "bracketRound", publicName: "bracketRound", isSignal: true, isRequired: true, transformFunction: null } }, host: { classAttribute: "et-new-bracket-default-round-header-host" }, ngImport: i0, template: ` {{ bracketRound().name }} `, isInline: true, styles: [".et-new-bracket-default-round-header-host{display:block;padding:8px;border:1px solid green;inline-size:250px;block-size:50px;display:flex;justify-content:center;align-items:center;box-sizing:border-box}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
9
9
|
}
|
|
10
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
10
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: NewBracketDefaultRoundHeaderComponent, decorators: [{
|
|
11
11
|
type: Component,
|
|
12
12
|
args: [{ selector: 'et-new-bracket-default-round-header', template: ` {{ bracketRound().name }} `, standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
|
|
13
13
|
class: 'et-new-bracket-default-round-header-host',
|